Guest User

Untitled

a guest
Jul 6th, 2018
255
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.53 MB | None | 0 0
  1. /* This file has been generated by the Hex-Rays decompiler.
  2. Copyright (c) 2007-2017 Hex-Rays <info@hex-rays.com>
  3.  
  4. Detected compiler: GNU C++
  5. */
  6.  
  7. #include <math.h>
  8. #include <defs.h>
  9.  
  10. #include <stdarg.h>
  11.  
  12.  
  13. //-------------------------------------------------------------------------
  14. // Function declarations
  15.  
  16. int __fastcall init_proc(int a1, int a2);
  17. int sub_8049AF8();
  18. // int __cdecl __cxa_guard_acquire(_DWORD); weak
  19. // int __stdcall __cxa_end_catch(_DWORD); weak
  20. // int usleep(__useconds_t useconds);
  21. // double cos(double x);
  22. // double __strtod_internal(const char *nptr, char **endptr, int group);
  23. // _DWORD std::ios_base::Init::Init(std::ios_base::Init *this); idb
  24. // char *strncat(char *dest, const char *src, size_t n);
  25. // _DWORD __cdecl std::string::find_first_of(std::string *this, const char *, unsigned int, unsigned int); idb
  26. // int __cdecl SQLExecDirect(_DWORD, _DWORD, _DWORD); weak
  27. // ssize_t write(int fd, const void *buf, size_t n);
  28. // struct tm *localtime(const time_t *timer);
  29. // ssize_t recvfrom(int fd, void *buf, size_t n, int flags, struct sockaddr *addr, socklen_t *addr_len);
  30. // int strcmp(const char *s1, const char *s2);
  31. // int close(int fd);
  32. // double asin(double x);
  33. // __sighandler_t signal(int sig, __sighandler_t handler);
  34. // int pthread_create(pthread_t *newthread, const pthread_attr_t *attr, void *(*start_routine)(void *), void *arg);
  35. // int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout);
  36. // void __assert_fail(const char *assertion, const char *file, unsigned int line, const char *function);
  37. // int vsnprintf(char *s, size_t maxlen, const char *format, __gnuc_va_list arg);
  38. // _DWORD __cdecl std::string::compare(std::string *this, const char *); idb
  39. // int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD); weak
  40. // int *__errno_location(void);
  41. // int ftell(FILE *stream);
  42. // int accept(int fd, struct sockaddr *addr, socklen_t *addr_len);
  43. // char *inet_ntoa(struct in_addr in);
  44. // int shutdown(int fd, int how);
  45. // int puts(const char *s);
  46. // int listen(int fd, int n);
  47. // double difftime(time_t time1, time_t time0);
  48. // _DWORD __cdecl std::string::find(std::string *this, const char *, unsigned int, unsigned int); idb
  49. // int __cdecl SQLFreeHandle(_DWORD, _DWORD); weak
  50. // int pthread_mutex_init(pthread_mutex_t *mutex, const pthread_mutexattr_t *mutexattr);
  51. // int pthread_mutex_destroy(pthread_mutex_t *mutex);
  52. // _DWORD __cdecl std::string::string(std::string *this, const std::string *, unsigned int, unsigned int); idb
  53. // size_t fread(void *ptr, size_t size, size_t n, FILE *stream);
  54. // void *memmove(void *dest, const void *src, size_t n);
  55. // ssize_t sendto(int fd, const void *buf, size_t n, int flags, const struct sockaddr *addr, socklen_t addr_len);
  56. // int __cdecl SQLGetDiagRec(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD); weak
  57. // int getsockopt(int fd, int level, int optname, void *optval, socklen_t *optlen);
  58. // _DWORD __cdecl std::string::~string(std::string *this); idb
  59. // int __cdecl __cxa_allocate_exception(_DWORD); weak
  60. // int setsockopt(int fd, int level, int optname, const void *optval, socklen_t optlen);
  61. // int fseek(FILE *stream, int off, int whence);
  62. // time_t time(time_t *timer);
  63. // int __cdecl __cxa_guard_release(_DWORD); weak
  64. // time_t mktime(struct tm *tp);
  65. // int pthread_mutex_lock(pthread_mutex_t *mutex);
  66. // int __cdecl std::string::_Rep::_M_destroy(_DWORD, _DWORD); weak
  67. // int __cdecl SQLSetEnvAttr(_DWORD, _DWORD, _DWORD); weak
  68. // int __cdecl SQLNumResultCols(_DWORD, _DWORD); weak
  69. // int __strtol_internal(const char *nptr, char **endptr, int base, int group);
  70. // void qsort(void *base, size_t nmemb, size_t size, __compar_fn_t compar);
  71. // _DWORD __cdecl std::string::string(std::string *this, const std::string *); idb
  72. // int __cdecl __cxa_begin_catch();
  73. // int strncmp(const char *s1, const char *s2, size_t n);
  74. // _DWORD __cdecl operator new[](unsigned int); idb
  75. // in_addr_t inet_addr(const char *cp);
  76. // _DWORD __cdecl std::_Rb_tree_decrement(std::_Rb_tree_node_base *); idb
  77. // int __cdecl std::string::string(_DWORD, _DWORD, _DWORD); weak
  78. // pthread_t pthread_self(void);
  79. // int __cdecl SQLRowCount(_DWORD, _DWORD); weak
  80. // int backtrace(void **array, int size);
  81. // _DWORD __cdecl operator new(unsigned int); idb
  82. // int __cdecl SQLError(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD); weak
  83. // _DWORD __cdecl std::_Rb_tree_insert_and_rebalance(bool, std::_Rb_tree_node_base *, std::_Rb_tree_node_base *, std::_Rb_tree_node_base *); idb
  84. // int printf(const char *format, ...);
  85. // int bind(int fd, const struct sockaddr *addr, socklen_t len);
  86. // __off_t lseek(int fd, __off_t offset, int whence);
  87. // int fcntl(int fd, int cmd, ...);
  88. // void *memcpy(void *dest, const void *src, size_t n);
  89. // int fclose(FILE *stream);
  90. // int __cdecl SQLFreeStmt(_DWORD); weak
  91. // int gettimeofday(struct timeval *tv, __timezone_ptr_t tz);
  92. // void srand(unsigned int seed);
  93. // int snprintf(char *s, size_t maxlen, const char *format, ...);
  94. // int open(const char *file, int oflag, ...);
  95. // void __cdecl __noreturn std::__throw_length_error(const char *); idb
  96. // void __cdecl operator delete[](void *); idb
  97. // void pthread_exit(void *retval);
  98. // void exit(int status);
  99. // int __cdecl SQLCloseCursor(_DWORD); weak
  100. // int __cdecl SQLFetch(_DWORD); weak
  101. // _DWORD __cdecl std::string::assign(std::string *this, const std::string *); idb
  102. // int __cdecl SQLGetData(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD); weak
  103. // int __cdecl SQLConnect(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD); weak
  104. // int sscanf(const char *s, const char *format, ...);
  105. // void free(void *ptr);
  106. // ssize_t send(int fd, const void *buf, size_t n, int flags);
  107. // int ioctl(int fd, unsigned int request, ...);
  108. // double acos(double x);
  109. // void *memset(void *s, int c, size_t n);
  110. // void __cdecl __noreturn std::__throw_out_of_range(const char *); idb
  111. // int connect(int fd, const struct sockaddr *addr, socklen_t len);
  112. // int __cdecl SQLAllocHandle(_DWORD, _DWORD, _DWORD); weak
  113. // char *strncpy(char *dest, const char *src, size_t n);
  114. // _DWORD __cdecl __gnu_cxx::__exchange_and_add(volatile int *, int); idb
  115. // char **backtrace_symbols(void *const *array, int size);
  116. // FILE *fopen(const char *filename, const char *modes);
  117. // int dup(int fd);
  118. // int __cdecl _Unwind_Resume();
  119. // int __stdcall SQLDisconnect(_DWORD, _DWORD); weak
  120. // int pthread_mutex_unlock(pthread_mutex_t *mutex);
  121. // char *strtok(char *s, const char *delim);
  122. // ssize_t recv(int fd, void *buf, size_t n, int flags);
  123. // int __stdcall __cxa_throw(_DWORD, _DWORD, _DWORD, _DWORD); weak
  124. // int sprintf(char *s, const char *format, ...);
  125. // size_t fwrite(const void *ptr, size_t size, size_t n, FILE *s);
  126. // double sin(double x);
  127. // int socket(int domain, int type, int protocol);
  128. // int rand(void);
  129. // ssize_t read(int fd, void *buf, size_t nbytes);
  130. // void __cdecl operator delete(IPRegionTable *const this);
  131. // void __cdecl std::ios_base::Init::~Init(void *arg0);
  132. // char *strcpy(char *dest, const char *src);
  133. int __fastcall call_gmon_start(int a1, int a2);
  134. void _do_global_dtors_aux();
  135. int frame_dummy();
  136. void __cdecl ConnectManager::ConnectManager(ConnectManager *const this);
  137. void __noreturn sub_804A46C();
  138. void __cdecl ConnectManager::ConnectManager(ConnectManager *const this);
  139. void __noreturn sub_804A5F8();
  140. void __cdecl ConnectManager::~ConnectManager(ConnectManager *const this);
  141. void __cdecl ConnectManager::~ConnectManager(ConnectManager *const this);
  142. void __cdecl ConnectManager::~ConnectManager(ConnectManager *const this);
  143. // BOOL __usercall ConnectManager::Init@<eax>(ConnectManager *const this@<eax>); idb
  144. void __cdecl ConnectManager::Quit(ConnectManager *const this);
  145. void __cdecl ConnectManager::run(ConnectManager *const this);
  146. void __cdecl _tcf_0(void *);
  147. void `global constructor keyed to'g_pConnectManager(); // idb
  148. void __cdecl ReLoginManager::~ReLoginManager(int a2);
  149. void __cdecl ReLoginManager::~ReLoginManager(int a2);
  150. void __cdecl ConnectManager::stop(int a2);
  151. void __cdecl tag_IPRegion::CleanUp(_DWORD *a2);
  152. void __cdecl tag_IPRegion::tag_IPRegion(tag_IPRegion *const this);
  153. void __cdecl tag_IPRegion::tag_IPRegion(tag_IPRegion *const this);
  154. void __cdecl IPRegionTable::IPRegionTable(_DWORD *a2);
  155. void __cdecl IPRegionTable::IPRegionTable(_DWORD *a2);
  156. void __cdecl IPRegionTable::~IPRegionTable(IPRegionTable *const this);
  157. void __cdecl IPRegionTable::~IPRegionTable(IPRegionTable *const this);
  158. void __cdecl IPRegionTable::~IPRegionTable(IPRegionTable *const this);
  159. void __cdecl IPRegionTable::Init(IPRegionTable *const this);
  160. INT __cdecl IPRegionTable::FindIPRegion(IPRegionTable *const this, UINT uIP);
  161. INT __cdecl IPRegionTable::FindIPRegion(IPRegionTable *const this, CHAR *cIP);
  162. void __cdecl _tcf_0_0(void *);
  163. void `global constructor keyed to'g_pIPRegionTable(); // idb
  164. void __cdecl Login::Login(_DWORD *a2);
  165. void __cdecl Login::Login(_DWORD *a2);
  166. void __cdecl Login::~Login(Login *const this);
  167. void __cdecl Login::~Login(Login *const this);
  168. BOOL __cdecl Login::Loop(Login *const this);
  169. BOOL __cdecl Login::Exit(_DWORD *a2);
  170. BOOL __cdecl Login::NewLogin(Login *const this);
  171. BOOL __cdecl Login::InitLogin(Login *const this);
  172. BOOL __cdecl Login::Init(Login *const this);
  173. void __cdecl Login::Stop(Login *const this);
  174. void __cdecl LoginExceptionHandler::LoginExceptionHandler(LoginExceptionHandler *const this);
  175. void __cdecl LoginExceptionHandler::LoginExceptionHandler(LoginExceptionHandler *const this);
  176. void __cdecl LoginExceptionHandler::INTHandler(INT);
  177. void __cdecl LoginExceptionHandler::TERMHandler(INT);
  178. void __cdecl LoginExceptionHandler::ABORTHandler(INT);
  179. void __cdecl LoginExceptionHandler::ILLHandler(INT);
  180. void __cdecl LoginExceptionHandler::FPEHandler(INT);
  181. void __cdecl LoginExceptionHandler::SEGHandler(INT);
  182. void __cdecl LoginExceptionHandler::XFSZHandler(INT);
  183. void __cdecl _tcf_0_1(void *);
  184. void __cdecl _tcf_1(void *);
  185. void `global constructor keyed to'g_Login(); // idb
  186. int __cdecl main(int argc, const char **argv, const char **envp);
  187. void __cdecl _tcf_0_2(void *);
  188. void `global constructor keyed to'g_IgnoreWorldIDZoneIDCheck(); // idb
  189. BOOL __cdecl MIBAO::InitMiBaoGroupKey(MiBaoGroup *const gp);
  190. BOOL __cdecl MIBAO::InitMiBaoGroupKey1(MiBaoGroup *const gp);
  191. void __cdecl _tcf_0_3(void *);
  192. void `global constructor keyed to'g_MiBaoKeyTable(); // idb
  193. void __cdecl tag_ReLoginUnit::CleanUp(_DWORD *a2);
  194. void __cdecl tag_ReLoginUnit::tag_ReLoginUnit(tag_ReLoginUnit *const this);
  195. void __cdecl tag_ReLoginUnit::tag_ReLoginUnit(tag_ReLoginUnit *const this);
  196. void __cdecl tag_ReLoginUnit::SetIPAddr(tag_ReLoginUnit *const this, const CHAR *pIP);
  197. BOOL __cdecl tag_ReLoginUnit::IsSameIPReLogin(tag_ReLoginUnit *const this, const CHAR *pIP);
  198. BOOL __cdecl ReLoginManager::Init(ReLoginManager *const this);
  199. ReLoginUnit *__cdecl ReLoginManager::FindAccReLoginUnit(ReLoginManager *const this, const CHAR *szAccName);
  200. BOOL __cdecl ReLoginManager::IsAccCanReLogin(ReLoginManager *const this, const CHAR *szAccName, const CHAR *pIP, INT *const nResult);
  201. BOOL __cdecl ReLoginManager::SetPwdCheck(ReLoginManager *const this, const CHAR *szAccName, const CHAR *pIP, INT nCheck);
  202. BOOL __cdecl ReLoginManager::StopAccReLogin(ReLoginManager *const this, const CHAR *szAccName, const CHAR *pIP);
  203. BOOL __cdecl ReLoginManager::ResetAccReLogin(ReLoginManager *const this, const CHAR *szAccName);
  204. BOOL __cdecl ReLoginManager::HeartBeat(ReLoginManager *const this);
  205. void __cdecl _tcf_0_4(void *);
  206. void `global constructor keyed to'g_pReLoginManager(); // idb
  207. void __cdecl ServerManager::CleanUp(int a2);
  208. void __cdecl ServerManager::ServerManager(ServerManager *const this);
  209. // void __usercall sub_804D310(int a1@<ebp>);
  210. void __cdecl ServerManager::ServerManager(ServerManager *const this);
  211. // void __usercall sub_804D460(int a1@<ebp>);
  212. void __cdecl ServerManager::~ServerManager(ServerManager *const this);
  213. // void __usercall sub_804D572(int a1@<esi>);
  214. // void __usercall sub_804D588(int a1@<esi>);
  215. void __cdecl ServerManager::~ServerManager(ServerManager *const this);
  216. // void __usercall sub_804D69E(int a1@<esi>);
  217. // void __usercall sub_804D6B4(int a1@<esi>);
  218. ID_t __cdecl ServerManager::GetLoginID(ServerManager *const this);
  219. _SERVER_DATA *__cdecl ServerManager::FindServerInfo(ServerManager *const this, ID_t ServerID);
  220. _SERVER_DATA *__cdecl ServerManager::GetCurrentServerInfo(ServerManager *const this);
  221. BOOL __cdecl ServerManager::Init(int a2);
  222. BOOL __cdecl ServerManager::Select(ServerManager *const this);
  223. BOOL __cdecl ServerManager::DelServer(ServerManager *const this, SOCKET fd);
  224. BOOL __cdecl ServerManager::RemoveServer(ServerManager *const this, PlayerID_t id);
  225. Player *__cdecl ServerManager::GetServerPlayer(ServerManager *const this, PlayerID_t id);
  226. BOOL __cdecl ServerManager::ProcessExceptions(ServerManager *const this);
  227. BOOL __cdecl ServerManager::ProcessCommands(ServerManager *const this);
  228. BOOL __cdecl ServerManager::ProcessOutputs(ServerManager *const this);
  229. BOOL __cdecl ServerManager::ProcessInputs(ServerManager *const this);
  230. BOOL __cdecl ServerManager::AddServer(ServerManager *const this, SOCKET fd);
  231. BOOL __cdecl ServerManager::IsWorldServerActive(ServerManager *const this);
  232. BOOL __cdecl ServerManager::IsBillingServerActive(ServerManager *const this);
  233. BOOL __cdecl ServerManager::ConnectWorldServer(ServerManager *const this);
  234. BOOL __cdecl ServerManager::ConnectBillingServer(ServerManager *const this);
  235. BOOL __cdecl ServerManager::HeartBeat(ServerManager *const this);
  236. INT __cdecl ServerManager::GetServerPlayerPoolSize(int ServerID, unsigned __int16 ServerIDa);
  237. BOOL __cdecl ServerManager::ResetQueuePos(ServerManager *const this);
  238. BOOL __cdecl ServerManager::ResizeCache(ServerManager *const this);
  239. BOOL __cdecl ServerManager::SendPacket(ServerManager *const this, Packet *pPacket, ID_t ServerID, UINT Flag);
  240. BOOL __cdecl ServerManager::RecvPacket(ServerManager *const this, Packet **const pPacket, PlayerID_t *const PlayerID, UINT *const Flag);
  241. BOOL __cdecl ServerManager::ProcessCacheCommands(ServerManager *const this);
  242. void __cdecl ServerManager::SetServerPlayerPoolSize(int ServerID, unsigned __int16 ServerIDa, int a5);
  243. BOOL __cdecl ServerManager::SendQueuePlayerToWorld(ServerManager *const this);
  244. BOOL __cdecl ServerManager::Tick(ServerManager *const this);
  245. void __cdecl _tcf_0_5(void *);
  246. void `global constructor keyed to'g_pServerManager(); // idb
  247. void __cdecl Packets::LWAskCharLogin::LWAskCharLogin(Packets::LWAskCharLogin *const this);
  248. // void __usercall __noreturn sub_805071B(int a1@<ebp>);
  249. void __cdecl ServerThread::ServerThread(_DWORD *a2);
  250. void __cdecl ServerThread::ServerThread(_DWORD *a2);
  251. void __cdecl ServerThread::~ServerThread(Thread *a2);
  252. void __cdecl ServerThread::~ServerThread(Thread *a2);
  253. void __cdecl ServerThread::~ServerThread(IPRegionTable *a2);
  254. void __cdecl ServerThread::run(ServerThread *const this);
  255. void __cdecl _tcf_0_6(void *);
  256. void `global constructor keyed to'ServerThread::ServerThread(); // idb
  257. void __cdecl ServerThread::stop(int a2);
  258. void __cdecl ThreadManager::ThreadManager(ThreadManager *const this);
  259. void __cdecl ThreadManager::ThreadManager(ThreadManager *const this);
  260. void __cdecl ThreadManager::~ThreadManager(ThreadManager *const this);
  261. void __cdecl ThreadManager::~ThreadManager(ThreadManager *const this);
  262. BOOL __cdecl ThreadManager::Init(ThreadManager *const this);
  263. BOOL __cdecl ThreadManager::Start(ThreadManager *const this);
  264. BOOL __cdecl ThreadManager::Stop(ThreadManager *const this);
  265. void __cdecl _tcf_0_7(void *);
  266. void `global constructor keyed to'g_pThreadManager(); // idb
  267. void __cdecl Config::Config(Config *const this);
  268. void __cdecl Config::Config(Config *const this);
  269. void __cdecl Config::~Config(Config *const this);
  270. // void __usercall sub_80524C2(void *a1@<eax>, int a2@<edi>);
  271. void __cdecl Config::~Config(Config *const this);
  272. // void __usercall sub_8052752(void *a1@<eax>, int a2@<edi>);
  273. void __cdecl Config::LoadShareMemInfo_ReLoad(Config *const this);
  274. void __cdecl Config::LoadSceneInfo_ReLoad(Config *const this);
  275. void __cdecl Config::LoadServerInfo_ReLoad(Config *const this);
  276. void __cdecl Config::LoadMachineInfo_ReLoad(Config *const this);
  277. void __cdecl Config::LoadBillingInfo_ReLoad(Config *const this);
  278. void __cdecl Config::LoadWorldInfo_ReLoad(Config *const this);
  279. void __cdecl Config::LoadLoginInfo_Reload(Config *const this);
  280. void __cdecl Config::LoadConfigInfo_Only(Config *const this);
  281. void __cdecl Config::LoadConfigInfo_ReLoad(Config *const this);
  282. void __cdecl Config::LoadConfigInfo(Config *const this);
  283. void __cdecl Config::ReLoad(Config *a2);
  284. void __cdecl Config::LoadLoginInfo_Only(Config *const this);
  285. void __cdecl Config::LoadLoginInfo(Config *const this);
  286. void __cdecl Config::LoadWorldInfo_Only(Config *const this);
  287. void __cdecl Config::LoadWorldInfo(Config *const this);
  288. void __cdecl Config::LoadBillingInfo_Only(Config *const this);
  289. void __cdecl Config::LoadBillingInfo(Config *const this);
  290. void __cdecl Config::LoadShareMemInfo_Only(Config *const this);
  291. void __cdecl Config::LoadShareMemInfo(Config *const this);
  292. void __cdecl Config::LoadMachineInfo_Only(Config *const this);
  293. void __cdecl Config::LoadMachineInfo(Config *const this);
  294. void __cdecl Config::LoadServerInfo_Only(Config *const this);
  295. void __cdecl Config::LoadServerInfo(Config *const this);
  296. void __cdecl Config::LoadSceneInfo_Only(Config *const this);
  297. void __cdecl Config::LoadSceneInfo(Config *const this);
  298. BOOL __cdecl Config::Init(Config *const this);
  299. ID_t __cdecl Config::SceneID2ServerID(const Config *const this, SceneID_t sID);
  300. ID_t __cdecl Config::Key2ServerID(const Config *const this, SM_KEY key);
  301. int __cdecl Config::WorldID(int a2);
  302. void __cdecl _tcf_0_8(void *);
  303. void __cdecl _tcf_1_0(void *);
  304. void `global constructor keyed to'g_Config(); // idb
  305. void __cdecl _BILLING_DATA::~_BILLING_DATA(_DWORD *a2);
  306. void __cdecl _BILLING_DATA::~_BILLING_DATA(IPRegionTable *const a2);
  307. void __cdecl _BILLING_INFO::~_BILLING_INFO(_BILLING_INFO *const this);
  308. void __cdecl _BILLING_INFO::~_BILLING_INFO(_BILLING_INFO *const this);
  309. void __cdecl Log::Log(Log *const this);
  310. void __cdecl Log::Log(Log *const this);
  311. void __cdecl Log::~Log(Log *const this);
  312. void __cdecl Log::~Log(Log *const this);
  313. BOOL __cdecl Log::Init(Log *const this, INT cachesize);
  314. void __cdecl Log::DisplayLog(Log *const this, const CHAR *szMsg);
  315. void __cdecl Log::CacheLog(Log *const this, INT logid, const CHAR *szMsg);
  316. void __cdecl Log::GetLogName(Log *const this, INT logid, CHAR *szName);
  317. void __cdecl Log::FlushLog(Log *const this, INT logid);
  318. void __cdecl Log::FlushLog_All(Log *const this);
  319. BOOL __cdecl Log::CheckDebugLogSize(Log *const this, CHAR *strMessage, INT nSize);
  320. BOOL LogSystem_Init(); // idb
  321. void LogSystem_Flush(); // idb
  322. BOOL __cdecl LogSystem_CheckDebugLogSize(CHAR *strMessage, INT nSize);
  323. void CacheLog(INT logid, const CHAR *msg, ...);
  324. void CacheLog_MIPFormat(INT logid, const CHAR *msg, ...);
  325. void DiskLog(CHAR *filename, const CHAR *msg, ...);
  326. void __cdecl GetSerialKey(CHAR *pSerial, INT nZoneId, INT nWorldId, INT nServerId);
  327. void __cdecl _tcf_0_9(void *);
  328. void __cdecl _tcf_1_1(void *);
  329. void `global constructor keyed to'g_log_lock(); // idb
  330. void __cdecl SaveItemLog(ITEM_LOG_PARAM *pLogParam);
  331. void __cdecl SaveMoneyLog(MONEY_LOG_PARAM *pLogParam);
  332. void __cdecl SavePetLog(PET_LOG_PARAM *pLogParam);
  333. void __cdecl SaveSkillLog(SKILL_LOG_PARAM *pLogParam);
  334. void __cdecl SaveXinFaLog(XINFA_LOG_PARAM *pLogParam);
  335. void __cdecl SaveAbilityLog(ABILITY_LOG_PARAM *pLogParam);
  336. void __cdecl SaveMissionLog(MISSION_LOG_PARAM *pLogParam);
  337. void __cdecl SaveExpLog(EXP_LOG_PARAM *pLogParam);
  338. void __cdecl Save_EfficiencyStatistic(EFFICIENCY_LOG_PARAM *pLogParam);
  339. void __cdecl AuditSwitch(BOOL a2);
  340. void __cdecl LogForAudit(AuditType_T::TypeEnum_T nType, GUID_t guidUser, const CHAR *szData);
  341. void __cdecl Audit_BravertChallenge(GUID_t guidSelf, INT iSort);
  342. void __cdecl Audit_GuildLeague(GUID_t guidUser, INT numOfLeague, INT numOfGuildInLeague);
  343. void __cdecl Audit_Stall(GUID_t guidUser, INT CoinType, BOOL bOpen);
  344. void __cdecl Audit_ItemSoldInStall(GUID_t guidUser, INT nItemDataID, const CHAR *szItemName);
  345. void __cdecl Audit_PetSoldInStall(GUID_t guidUser, INT nPetDataID, const CHAR *szPetName, INT nPetLevel);
  346. void __cdecl Audit_GemCompound(GUID_t guidUser, BOOL bSuccess, INT nStuffID0, INT nStuffID1, INT nStuffID2, INT nStuffID3, INT nStuffID4, INT nProductID);
  347. void __cdecl Audit_CaoYun(GUID_t guidUser, INT nRound, BOOL bStartOrEnd, INT nMoney);
  348. void __cdecl Audit_ShuiLao(GUID_t guidUser);
  349. void __cdecl Audit_SafeBox(GUID_t guidUser);
  350. void __cdecl Audit_DaTu(GUID_t guidUser);
  351. void __cdecl Audit_WaBao(GUID_t guidUser);
  352. void __cdecl Audit_MonsterKilled(GUID_t guidUser, INT nMonsterDataID, const CHAR *szMonsterName);
  353. void __cdecl Audit_MenpaiMember(GUID_t guidUser, INT nMenpaiId);
  354. void __cdecl Audit_PetKilled(GUID_t guidUser, INT nPetDataID, const CHAR *szPetName);
  355. void __cdecl Audit_GPS(GUID_t guidUser, BOOL bCreate);
  356. void __cdecl Audit_Team(GUID_t guidUser);
  357. void __cdecl Audit_Challenge(GUID_t guidSelf, GUID_t guidTarget);
  358. void __cdecl Audit_PetHuanTong(GUID_t guidUser, INT nPetDataID, const CHAR *szPetName);
  359. void __cdecl Audit_PetProCreate(GUID_t guidUser, INT nPetDataID, const CHAR *szPetName, BOOL bRegister);
  360. void __cdecl Audit_PetCreate(GUID_t guidUser, INT nPetDataID, const CHAR *szType);
  361. void __cdecl Audit_PetCatched(GUID_t guidUser, INT nPetDataID, const CHAR *szPetName);
  362. void __cdecl Audit_MissionChain(GUID_t guidUser, INT nRound);
  363. void __cdecl Audit_PlayerShopBuy(GUID_t guidUser);
  364. void __cdecl Audit_PlayerShopSold(GUID_t guidUser);
  365. void __cdecl Audit_ItemSoldInPlayerShop(GUID_t guidUser, INT nItemDataID, const CHAR *szItemName);
  366. void __cdecl Audit_PetSoldInPlayerShop(GUID_t guidUser, INT nPetDataID, const CHAR *szPetName, INT nPetLevel);
  367. void __cdecl Audit_PlayerShopRemoved(GUID_t guidUser);
  368. void __cdecl Audit_PlayerMarriage(GUID_t guidUserA, GUID_t guidUserB, INT nWeddingType);
  369. void __cdecl Audit_PlayerDivorce(GUID_t guidUserA, GUID_t guidUserB);
  370. void __cdecl Audit_ItemCreate(GUID_t guidHuman, INT nNum, INT nItemDataID, const CHAR *szItemName, const CHAR *szCreateBy);
  371. void __cdecl Audit_PK(GUID_t guidDead, GUID_t guidKiller, INT nSceneID, const CHAR *szSceneName, BOOL bCaoYun, BOOL bPaoShang, const CHAR *szDesc);
  372. void __cdecl Audit_ShiMenRenWu(GUID_t guidSelf, INT nRound, INT nPlayerLevel);
  373. void __cdecl Audit_ShiMenRenWu_Day(GUID_t guidSelf, INT nRound, INT nPlayerLevel);
  374. void __cdecl Audit_HuashanThreeWinners(GUID_t guidSelf, INT nMenpai);
  375. void __cdecl Audit_Candidate(GUID_t guidSelf, const char *lpPlayerName);
  376. void __cdecl Audit_RelationPoint(GUID_t guidSelf, const CHAR *szRelationNPC, INT nPoint);
  377. void __cdecl Audit_Quest(GUID_t guidSelf, const char *szQuestName, INT nMenPai, INT nLevel);
  378. void __cdecl Audit_PaoShang(GUID_t guidUser, INT nMoney);
  379. void __cdecl Audit_PetImproveWuxing(GUID_t guidUser, INT nPetDataID, BOOL bSuccess, INT newValue);
  380. void __cdecl Audit_PetImproveSkillBook(GUID_t guidUser, INT nPetDataID, INT nSkillID);
  381. void __cdecl Audit_PlayerCountOfScene(INT nSceneID, INT nServerID, const CHAR *szSceneName, INT nPlayerCount);
  382. void __cdecl Audit_GemEmbed(GUID_t guidUser, INT nItemDataID, INT nItemLevel, INT nItemDataID_Equip);
  383. void __cdecl Audit_PlayerMaster(GUID_t guidMaster, GUID_t guidAprentice);
  384. void __cdecl Audit_PlayerMasterExp(GUID_t guidUser, INT nGBValue, INT nExp, SHORT sOpType);
  385. void __cdecl Audit_ItemUseMenPaiZhaoJiLing(GUID_t guidUser, INT nMenPaiID);
  386. void __cdecl Audit_PlayerLevelup(GUID_t guidUser, INT nCurrentLevel, INT nUpLevel);
  387. void __cdecl Audit_HDXianCaoZhengDuo(GUID_t guidSelf, const CHAR *szStep);
  388. void __cdecl Audit_PlayerGetGuildWage(GUID_t guidSelf, GUID_t guidGuild, INT nWage);
  389. void __cdecl Audit_MiYinKuangShiUsed(GUID_t guidUser);
  390. void __cdecl Audit_DarkKeyUsed(GUID_t guidSelf, INT nType, INT nRemain);
  391. void __cdecl Audit_JuBaoContainerUsed(GUID_t guidSelf, INT nType, INT nRemain);
  392. void __cdecl Audit_LuckyTurnTable(GUID_t guidSelf, INT nPrizeType_1, INT nPrizeType_2, INT nPrizeType_3);
  393. void __cdecl Audit_LuckyTurnTable_Dragon(GUID_t guidSelf, INT nPrizeType, INT nRemain);
  394. void __cdecl Audit_ChangeGem(GUID_t guidUser, const CHAR *strLog);
  395. void __cdecl Audit_ChangeNianShouDriver(GUID_t guidSelf, INT nLevel);
  396. void __cdecl Audit_CompoisteFigure(GUID_t guidSelf);
  397. void __cdecl Audit_ZhuanDanUsed(GUID_t guidSelf, INT nType, INT nRemain);
  398. void __cdecl Audit_ItemIdentified(GUID_t guidSelf, INT nItemIndex, INT nWorld, INT nServer, INT nItemSN, INT nItemLevel);
  399. void __cdecl Audit_CommisionSale(GUID_t guidSelf, INT nSN, INT nOptType, INT nValue, INT nPrice, BOOL bDeal, INT nPlayerLevel);
  400. void __cdecl Audit_GuildDeclareWar(GUID_t guidSelf, GUID_t guidSelfGuild, GUID_t guidTargetGuild, INT nOptType);
  401. void __cdecl Audit_MinorPassword(GUID_t guidSelf, const CHAR *szOpt);
  402. void __cdecl Audit_YanXuanYuExchange(GUID_t guidSelf, INT nItemIndexOfYanXuanYu, INT nCountOfYanXuanYu, INT nItemIndexOfTrophy);
  403. void __cdecl Audit_YunBiao(GUID_t guidSelf, GUID_t guidGuild, INT nInvest, const CHAR *szOpt);
  404. void __cdecl Audit_EquipQianghua(GUID_t guidSelf, INT nEquipItemIndex, INT nEnhanceLevel);
  405. void __cdecl Audit_GoodbadDecPKValue(GUID_t guidSelf, INT nDec);
  406. void __cdecl Audit_Skill_Monster(GUID_t guidSelf, const CHAR *nPlayerName, INT nMonsterNum);
  407. void __cdecl Audit_JiaoFei(GUID_t guidSelf);
  408. void __cdecl Audit_PlayerEnterScene(GUID_t guidSelf, INT nSceneID, const CHAR *szMapName);
  409. void __cdecl Audit_GemCarve(GUID_t guidSelf, INT GemItemID);
  410. void __cdecl Audit_PlayerShopSaleShopAddItem(GUID_t guidSelf, INT nItemIndex, INT iPos, INT iNeedNum, INT iPrice);
  411. void __cdecl Audit_PlayerShopSaleShopSellItem(GUID_t guidSelf, INT nItemIndex, INT itemWorld, INT itemServer, INT itemSerial, INT itemPrice, INT itemNum);
  412. void __cdecl Audit_LearnLifeAbility(GUID_t guidSelf, AbilityID_t nAid);
  413. void __cdecl Audit_LevelUpLifeAbility(GUID_t guidSelf, AbilityID_t nAid, INT iToLevel);
  414. void __cdecl Audit_ShengShou_Open_BigBox(GUID_t guidSelf);
  415. void __cdecl Audit_ShengShou_Open_SmallBox(GUID_t guidSelf);
  416. void __cdecl Audit_ShenQi(GUID_t guidSelf, INT nItemIndex);
  417. void __cdecl Audit_PlayerBehavior(GUID_t guidSelf, INT nSceneID, const CHAR *szSceneName, const CHAR *szDescription, INT nMenPai, INT nLevel);
  418. void __cdecl Audit_ShenCai(GUID_t guidSelf, INT nItemIndex);
  419. void __cdecl Audit_CaoyunSale(GUID_t guidUser);
  420. void __cdecl AuditUseSChoolBags(GUID_t guidUser, INT nLevel, INT nSex);
  421. void __cdecl Audit_GetSChoolUniform(GUID_t guidUser, INT nLevel, INT nSex);
  422. void __cdecl Audit_ChangeHead(GUID_t guidSelf, INT nHeadIndex);
  423. void __cdecl Audit_Equip_Stiletto(GUID_t guidUser, INT nItemDataID_Equip, INT nSlots);
  424. void __cdecl Audit_EquipPickOffGem(GUID_t guidUser, INT nItemDataID_Gem, INT nItemLevel_Gem, INT nItemDataID_Equip);
  425. void __cdecl Audit_ShuangXiangPao(GUID_t guidUser, INT nEventID);
  426. void __cdecl Audit_YuRenJie(GUID_t guidUser, const char *lpPlayerName);
  427. void __cdecl Audit_YuRenJie_Exp(GUID_t guidUser, const char *lpPlayerName, const int playerLevel, const int expNum);
  428. void __cdecl Audit_PetCagePresent(GUID_t guidUser, const char *lpPlayerName);
  429. void __cdecl Audit_GeiZhaoPai(GUID_t guidUser, const char *lpPlayerName, const char *lpZhaoPaiName);
  430. void __cdecl Audit_GodFire(SceneID_t sceneId, GUID_t guidUser, INT nItemIndex, MissionID_t nMissionId, ID_t nWorldID, ID_t nZoneID, const CHAR *nName, const CHAR *nAccName, UINT nLevel);
  431. void __cdecl Audit_DrawGuildWelfare(GUID_t guidUser, INT nMoney, INT nExp);
  432. void __cdecl Audit_SwitchToLeaguePK(INT sceneId, GUID_t guidUser);
  433. void __cdecl Audit_LeaguePkDie(INT sceneId, GUID_t guidUser, GUID_t guidKiller);
  434. void __cdecl Audit_ShiTuZongDongYuan(GUID_t guidUser, const CHAR *strLog);
  435. void __cdecl Audit_SlotFour(GUID_t guidUser, const CHAR *strLog);
  436. void __cdecl Audit_EnchaseFour(GUID_t guidUser, const CHAR *strLog);
  437. void __cdecl Audit_JipinZhuangbei(GUID_t guidUser, INT nItemIndex);
  438. void __cdecl Audit_PetSkillStudy_Manual(GUID_t guidUser, INT nPetDataID, INT nSkillID);
  439. void __cdecl Audit_PetSkillStudy_Auto(GUID_t guidUser, INT nPetDataID, INT nSkillID);
  440. void __cdecl Audit_PetSkillStudy_GetManual2(GUID_t guidUser, INT nPetDataID, INT nSkillID);
  441. void __cdecl Audit_PetSkillStudy_GetAuto5(GUID_t guidUser, INT nPetDataID, INT nSkillID);
  442. void __cdecl Audit_PMF_CreateFuben(GUID_t guidUser);
  443. void __cdecl Audit_PMF_CreateBoss(GUID_t guidUser, INT nBossDataID);
  444. void __cdecl Audit_PWLock(GUID_t OwnerGUID, SceneID_t sceneId, BYTE objType, BYTE optType, const _ITEM_GUID *itemGUID, const PET_GUID_t *petGUID);
  445. void __cdecl Audit_JoinJiaoShiJie(GUID_t guidUser);
  446. void __cdecl Audit_JoinCollectSignature(INT sceneId, GUID_t guidUser);
  447. void __cdecl Audit_ExchangeMenpaiSuit(INT sceneId, GUID_t guidUser, INT menpai, INT suitId);
  448. void __cdecl Audit_ExchangeFriendGift(INT sceneId, GUID_t guidUser, UINT itemId);
  449. void __cdecl Audit_CitySpy(INT sceneId, GUID_t guidUser, UINT level, UINT type);
  450. void __cdecl Audit_XQJ_CreateFuBen(GUID_t guidUser);
  451. void __cdecl Audit_ReexperienceWedding(GUID_t guidUser1, GUID_t guidUser2, INT level1, INT level2);
  452. void __cdecl Audit_UseTeacherGift(GUID_t guidUser, INT itemIndex);
  453. void __cdecl Audit_RunHunDanUsed(GUID_t guidSelf, INT ItemIndex);
  454. void __cdecl Audit_DianHuaMiBaoZengPing(GUID_t guidSelf, const CHAR *AccName, INT ItemIndex);
  455. void __cdecl Audit_AnBaoJinPaiZengPing(GUID_t guidSelf, INT ItemIndex);
  456. void __cdecl Audit_GiveExpAfterUnline(GUID_t guidSelf, INT nDone, INT nExpNum, INT nLevel, INT nMenPai);
  457. void __cdecl Audit_GiveItemAfterUnline(GUID_t guidSelf, INT nItemID, INT nItemNum, INT nLevel, INT nMenPai);
  458. void __cdecl Audit_GivePoolExpAfterUnline(GUID_t guidSelf, INT nExpNum, INT nDay, INT nLevel, INT nMenPai);
  459. void __cdecl Audit_NetPet_CreateCopy(GUID_t createrGuid, INT nMemberNum);
  460. void __cdecl Audit_CreateXSZhuangNum(GUID_t guidUser, INT num);
  461. void __cdecl Audit_ShiMen_CaiJiPet(GUID_t guidUser, INT Level);
  462. void __cdecl Audit_QingRenJie_ShiZhuang(GUID_t guidUser);
  463. void __cdecl Audit_ShiMen_CaiJi(GUID_t guidUser, INT type);
  464. void __cdecl Audit_XinSanHuan_CreateFuben(GUID_t guidUser, INT type);
  465. void __cdecl Audit_XuanHaoYu(GUID_t guidSelf, INT level, INT ItemID);
  466. void __cdecl Audit_GemMelting(GUID_t guidSelf, INT GemItemID1, INT GemItemID2, INT GemItemID3, INT NeedItemID, INT ProductItemID);
  467. void __cdecl Audit_UpgradeRing(GUID_t guidSelf, INT level, UINT itemID, INT type);
  468. void __cdecl Audit_GuildCollect(GUID_t guidSelf, const CHAR *guildName, const CHAR *cityName, INT level, UINT num, INT type);
  469. void __cdecl Audit_YuanBaoStall_Item(GUID_t guidSelf, GUID_t guidBuyer, INT number, INT ItemIndex, INT ItemPrice);
  470. void __cdecl Audit_YuanBaoStall_Pet(GUID_t guidSelf, GUID_t guidBuyer, INT number, INT PetIndex, INT PetPrice);
  471. void __cdecl Audit_Segment(GUID_t guidSelf, INT type);
  472. void __cdecl Audit_ResetPMFCountSmall(GUID_t guidSelf, INT nDayCount);
  473. void __cdecl Audit_ChangeFatigueState(GUID_t guidSelf, INT oldState, INT newState);
  474. void __cdecl Oops_Log(INT type, INT from, INT srvID, const CHAR *szMsg);
  475. void General_Oops_Log(INT type, const CHAR *msg, ...);
  476. void __cdecl OopsLogBase::WriteLog(OopsLogBase *const this, INT type, const CHAR *szMsg);
  477. void __cdecl Audit_QianDao_Award(GUID_t guidPlayer, const CHAR *strPlayerName, INT nLevel, INT nAwardCount);
  478. void __cdecl Audit_QianDao_Join(GUID_t guidPlayer, const CHAR *strPlayerName, INT nLevel);
  479. void __cdecl Audit_FindFriendAD_DelInfo(GUID_t guidSelf, INT nADType);
  480. void __cdecl Audit_FindFriendAD_NewInfo(GUID_t guidSelf, INT nADType);
  481. void __cdecl Audit_FindFriendad_ClickZheng(GUID_t guidSelf);
  482. void __cdecl Audit_PetSkillLevelUpAndCompound(GUID_t guidUser, INT type, INT ItemID);
  483. void __cdecl _tcf_0_10(void *);
  484. void __cdecl _tcf_1_2(void *);
  485. void `global constructor keyed to'SaveItemLog(); // idb
  486. void __cdecl OopsLogBase::~OopsLogBase(_DWORD *a2);
  487. void __cdecl OopsLogBase::~OopsLogBase(IPRegionTable *const a2);
  488. void __cdecl OopsLogBase::Flush(OopsLogBase *const this);
  489. void __cdecl StrTable::StrTable(_DWORD *a2);
  490. void __cdecl StrTable::StrTable(_DWORD *a2);
  491. void __cdecl StrTable::~StrTable(StrTable *const this);
  492. void __cdecl StrTable::~StrTable(StrTable *const this);
  493. void __cdecl StrTable::InitTable(StrTable *const this, UINT uMaxItem, UINT uSize);
  494. // BOOL __usercall StrTable::Add@<eax>(StrTable *const this, const CHAR *szString, void *pPtr@<eax>); idb
  495. void *__cdecl StrTable::Get(StrTable *const this, const CHAR *szString);
  496. void *__cdecl StrTable::GetByPos(StrTable *const this, UINT pos);
  497. void __cdecl StrTable::Remove(StrTable *const this, const CHAR *szString);
  498. void __cdecl StrTable::RemoveByPos(StrTable *const this, UINT pos);
  499. void __cdecl StrTable::CleanUp(StrTable *const this);
  500. void __cdecl _tcf_0_11(void *);
  501. void `global constructor keyed to'StrTable::StrTable(); // idb
  502. void __cdecl _HUMAN_DB_LOAD::CleanUp(_HUMAN_DB_LOAD *const this);
  503. void __cdecl _BANK_DB_LOAD::CleanUp(char *s);
  504. void __cdecl _BAG_DB_LOAD::CleanUp(_DWORD *s);
  505. void __cdecl _EQUIP_DB_LOAD::CleanUp(_WORD *s);
  506. void __cdecl _ABILITY_DB_LOAD::CleanUp(char *s);
  507. void __cdecl _SKILL_DB_LOAD::CleanUp(_SKILL_DB_LOAD *const this);
  508. void __cdecl _XINFA_DB_LOAD::CleanUp(_XINFA_DB_LOAD *const this);
  509. void __cdecl _IMPACT_DB_LOAD::CleanUp(_BYTE *a2);
  510. void __cdecl _MISSION_DB_LOAD::CleanUp(_MISSION_DB_LOAD *const this);
  511. void __cdecl _RELATION_DB_LOAD::CleanUp(_RELATION_DB_LOAD *const this);
  512. void __cdecl _PET_SKILL::CleanUp(int a2);
  513. void __cdecl _PET_DB_LOAD::CleanUp(_PET_DB_LOAD *const this);
  514. void __cdecl _PET_DB_LIST_LOAD::CleanUp(_PET_DB_LIST_LOAD *const this);
  515. void __cdecl _tcf_0_12(void *);
  516. void `global constructor keyed to'_HUMAN_DB_LOAD::CleanUp(); // idb
  517. void __cdecl BATCH_MAIL::CleanUp(int a2);
  518. BYTE __cdecl GetSerialClass(UINT Serial);
  519. unsigned int __cdecl GetSerialType(unsigned int a2);
  520. unsigned int __cdecl GetSerialQual(unsigned int a2);
  521. UINT __cdecl GetSerialIndex(unsigned int a2);
  522. void __cdecl SwapItem(_ITEM *pItemA, _ITEM *pItemB);
  523. void __cdecl _ITEM::SetItemBind(_ITEM *const this, BOOL bBind);
  524. void __cdecl _ITEM::SetItemLock(_ITEM *const this, BOOL bBind);
  525. void __cdecl FindFriendAD_DetailInfo::CleanUp(int a2);
  526. // _ITEM_TYPE *__userpurge ConvertSerial2ItemType@<eax>(_ITEM_TYPE *retstr, UINT Serial);
  527. BOOL __cdecl _ITEM::GetCreatorVar(int a2);
  528. UINT __cdecl GetItemRealSize(const _ITEM *const it);
  529. void __cdecl OverWriteItem(_ITEM *pItemA, _ITEM *pItemB);
  530. void __cdecl _ITEM::Read(_ITEM *const this, SocketInputStream *const iStream);
  531. void __cdecl _ITEM::Write(const _ITEM *const this, SocketOutputStream *const oStream);
  532. BOOL __cdecl _ITEM::IsFixAttr(_ITEM *const this, BYTE attrType);
  533. BYTE __cdecl _ITEM::GetFixAttrCount(_ITEM *const this);
  534. BOOL __cdecl _ITEM::GetItemBind(int a2);
  535. BOOL __cdecl _ITEM::GetItemLock(int a2);
  536. BOOL __cdecl _ITEM::GetItemIdent(int a2);
  537. void __cdecl _ITEM::SetItemIdent(_ITEM *const this, BOOL bIdent);
  538. void __cdecl _ITEM::SetCreatorVar(_ITEM *const this, BOOL bCreator);
  539. const CHAR *__cdecl _ITEM::GetCreator(const _ITEM *const this);
  540. BOOL __cdecl _ITEM::GetItemPLock(int a2);
  541. void __cdecl _ITEM::SetItemPLock(_ITEM *const this, BOOL bLock);
  542. BOOL __cdecl _ITEM::GetItemAptitude(int a2);
  543. void __cdecl _ITEM::SetItemAptitude(_ITEM *const this, BOOL bLock);
  544. INT __cdecl _ITEM::GetItemFailTimes(int a2);
  545. void __cdecl _ITEM::SetItemFailTimes(int a3, char a4);
  546. int __cdecl _ITEM::GetItemVisual(int a2);
  547. void __cdecl _ITEM::SetItemVisual(int nVisual, __int16 nVisuala);
  548. INT __cdecl _ITEM::GetItemParamValue(_ITEM *const this, UINT Start, const ItemParamValue *const ipv);
  549. void __cdecl _ITEM::SetItemParam(_ITEM *const this, UINT start, const ItemParamValue *const ipv, INT value);
  550. UINT __cdecl _ITEM::GetEquipmentMaxLevelGemID(_ITEM *const this);
  551. INT __cdecl _ITEM::WriteFixAttr(_ITEM *const this, CHAR *pIn, INT BuffLength);
  552. INT __cdecl _ITEM::Write_35_FixAttr(_ITEM *const this, CHAR *pIn, INT BuffLength);
  553. BOOL __cdecl _ITEM::ReadFixAttr(_ITEM *const this, CHAR *pOut, INT *const OutLength, INT BuffLength);
  554. BOOL __cdecl _ITEM::Read_35_FixAttr(_ITEM *const this, CHAR *pOut, INT *const OutLength, INT BuffLength);
  555. INT __cdecl _ITEM::WriteVarAttr(_ITEM *const this, CHAR *pIn, INT BuffLength);
  556. BOOL __cdecl _ITEM::ClientWriteVarAttr(_ITEM *const this, CHAR *pIn, INT *const OutLength, INT BuffLength);
  557. BOOL __cdecl _ITEM::ReadVarAttr(_ITEM *const this, CHAR *pOut, INT *const OutLength, INT BuffLength);
  558. BOOL __cdecl _ITEM::DBReadAttr(_ITEM *const this, CHAR *pOut, INT *const OutLength, INT BuffLength);
  559. BOOL __cdecl _ITEM::DBWriteAttr(_ITEM *const this, CHAR *pIn, INT BuffLength);
  560. BOOL __cdecl _ITEM::ClientReadVarAttr(_ITEM *const this, CHAR *pOut, INT *const OutLength, INT BuffLength);
  561. BYTE __cdecl _ITEM::GetItemCount(const _ITEM *const this);
  562. BOOL __cdecl _ITEM::DecCount(_ITEM *const this, char a3);
  563. void __cdecl _ITEM::SetItemCount(_ITEM *const this, INT nCount);
  564. BYTE __cdecl _ITEM::GetItemTileMax(const _ITEM *const this);
  565. BOOL __cdecl _ITEM::isFullTile(_ITEM *a2);
  566. BOOL __cdecl _ITEM::IncCount(_ITEM *const this, char a3);
  567. BOOL __cdecl _ITEM::GetEncodeDarkData(const _ITEM *const this, CHAR *pOut, INT nBufLen);
  568. void __cdecl _ITEM::DecodeDarkData(_ITEM *const this);
  569. BOOL __cdecl Item2String(_ITEM *pItem, CHAR *pOut, INT *const OutLength, INT BuffLength);
  570. BOOL __cdecl String2Item(const CHAR *pIn, INT BuffLength, _ITEM *pItem);
  571. void __cdecl GUILD_CGW_ASKLIST::Read(int a3, SocketInputStream *a4);
  572. void __cdecl GUILD_CGW_ASKLIST::Write(int a3, SocketOutputStream *a4);
  573. void __cdecl GUILD_CGW_ASKNAMELIST::Read(GUILD_CGW_ASKNAMELIST *const this, SocketInputStream *const iStream);
  574. void __cdecl GUILD_CGW_ASKNAMELIST::Write(const GUILD_CGW_ASKNAMELIST *const this, SocketOutputStream *const oStream);
  575. void __cdecl GUILD_CGW_CREATE::Read(GUILD_CGW_CREATE *const this, SocketInputStream *const iStream);
  576. void __cdecl GUILD_CGW_CREATE::Write(const GUILD_CGW_CREATE *const this, SocketOutputStream *const oStream);
  577. void __cdecl GUILD_CGW_JOIN::Read(GUILD_CGW_JOIN *const this, SocketInputStream *const iStream);
  578. void __cdecl GUILD_CGW_JOIN::Write(const GUILD_CGW_JOIN *const this, SocketOutputStream *const oStream);
  579. void __cdecl GUILD_CGW_ASKINFO::Read(int a3, SocketInputStream *a4);
  580. void __cdecl GUILD_CGW_ASKINFO::Write(int a3, SocketOutputStream *a4);
  581. void __cdecl GUILD_CGW_APPOINT::Read(CHAR *a3, SocketInputStream *a4);
  582. void __cdecl GUILD_CGW_APPOINT::Write(const CHAR *a3, SocketOutputStream *a4);
  583. void __cdecl GUILD_CGW_ADJUSTAUTH::Read(CHAR *a3, SocketInputStream *a4);
  584. void __cdecl GUILD_CGW_ADJUSTAUTH::Write(const CHAR *a3, SocketOutputStream *a4);
  585. void __cdecl GUILD_CGW_RECRUIT::Read(GUILD_CGW_RECRUIT *const this, SocketInputStream *const iStream);
  586. void __cdecl GUILD_CGW_RECRUIT::Write(const GUILD_CGW_RECRUIT *const this, SocketOutputStream *const oStream);
  587. void __cdecl GUILD_CGW_EXPEL::Read(GUILD_CGW_EXPEL *const this, SocketInputStream *const iStream);
  588. void __cdecl GUILD_CGW_EXPEL::Write(const GUILD_CGW_EXPEL *const this, SocketOutputStream *const oStream);
  589. void __cdecl GUILD_CGW_WITHDRAW::Read(GUILD_CGW_WITHDRAW *const this, SocketInputStream *const iStream);
  590. void __cdecl GUILD_CGW_WITHDRAW::Write(const GUILD_CGW_WITHDRAW *const this, SocketOutputStream *const oStream);
  591. void __cdecl GUILD_CGW_DEPOSIT::Read(GUILD_CGW_DEPOSIT *const this, SocketInputStream *const iStream);
  592. void __cdecl GUILD_CGW_DEPOSIT::Write(const GUILD_CGW_DEPOSIT *const this, SocketOutputStream *const oStream);
  593. void __cdecl GUILD_POSITION_NAME_LIST::Read(int a3, SocketInputStream *a4);
  594. void __cdecl GUILD_POSITION_NAME_LIST::Write(int a3, SocketOutputStream *a4);
  595. void __cdecl GUILD_CGW_CHANG_DESC::Read(GUILD_CGW_CHANG_DESC *const this, SocketInputStream *const iStream);
  596. void __cdecl GUILD_CGW_CHANG_DESC::Write(const GUILD_CGW_CHANG_DESC *const this, SocketOutputStream *const oStream);
  597. void __cdecl GUILD_CGW_MODIFY_LEAVE_WORD::Read(GUILD_CGW_MODIFY_LEAVE_WORD *const this, SocketInputStream *const iStream);
  598. void __cdecl GUILD_CGW_MODIFY_LEAVE_WORD::Write(const GUILD_CGW_MODIFY_LEAVE_WORD *const this, SocketOutputStream *const oStream);
  599. void __cdecl GUILD_WGC_APPOINT_INFO::Read(CHAR *a3, SocketInputStream *a4);
  600. void __cdecl GUILD_WGC_APPOINT_INFO::Write(const CHAR *a3, SocketOutputStream *a4);
  601. void __cdecl GUILD_WGC_GUILD_INFO::Read(CHAR *a3, SocketInputStream *a4);
  602. void __cdecl GUILD_WGC_GUILD_INFO::Write(const CHAR *a3, SocketOutputStream *a4);
  603. void __cdecl GUILD_WGC_MEMBER_LIST::Read(GUILD_WGC_MEMBER_LIST *const this, SocketInputStream *const iStream);
  604. void __cdecl GUILD_WGC_MEMBER_LIST::Write(const GUILD_WGC_MEMBER_LIST *const this, SocketOutputStream *const oStream);
  605. void __cdecl GUILD_WGC_LIST::Read(GUILD_WGC_LIST *const this, SocketInputStream *const iStream);
  606. void __cdecl GUILD_WGC_LIST::Write(const GUILD_WGC_LIST *const this, SocketOutputStream *const oStream);
  607. void __cdecl GUILD_WGC_NAMELIST::Read(GUILD_WGC_NAMELIST *const this, SocketInputStream *const iStream);
  608. void __cdecl GUILD_WGC_NAMELIST::Write(const GUILD_WGC_NAMELIST *const this, SocketOutputStream *const oStream);
  609. void __cdecl GUILD_WGC_SELF_GUILD_INFO::Read(GUILD_WGC_SELF_GUILD_INFO *const this, SocketInputStream *const iStream);
  610. void __cdecl GUILD_WGC_SELF_GUILD_INFO::Write(const GUILD_WGC_SELF_GUILD_INFO *const this, SocketOutputStream *const oStream);
  611. void __cdecl _GUILD_PACKET::Read(_GUILD_PACKET *const this, SocketInputStream *const iStream);
  612. void __cdecl _GUILD_PACKET::Write(const _GUILD_PACKET *const this, SocketOutputStream *const oStream);
  613. void __cdecl _GUILD_RETURN::Read(_GUILD_RETURN *const this, SocketInputStream *const iStream);
  614. void __cdecl _GUILD_RETURN::Write(const _GUILD_RETURN *const this, SocketOutputStream *const oStream);
  615. void __cdecl MAIL::Read(MAIL *const this, SocketInputStream *const iStream);
  616. void __cdecl MAIL::Write(const MAIL *const this, SocketOutputStream *const oStream);
  617. void __cdecl MAIL_LIST::Read(MAIL_LIST *const this, SocketInputStream *const iStream);
  618. void __cdecl MAIL_LIST::Write(const MAIL_LIST *const this, SocketOutputStream *const oStream);
  619. UINT __cdecl BATCH_MAIL::GetSize(const BATCH_MAIL *const this);
  620. void __cdecl BATCH_MAIL::Read(BATCH_MAIL *const this, SocketInputStream *const iStream);
  621. void __cdecl BATCH_MAIL::Write(const BATCH_MAIL *const this, SocketOutputStream *const oStream);
  622. void DB_QUERY::Parse(DB_QUERY *const this, const CHAR *pTemplate, ...);
  623. void LONG_DB_QUERY::Parse(LONG_DB_QUERY *const this, const CHAR *pTemplate, ...);
  624. int __cdecl TEAM_LIST_ENTRY::GetSize(int a2);
  625. void __cdecl TEAM_LIST_ENTRY::Read(TEAM_LIST_ENTRY *const this, SocketInputStream *const iStream);
  626. void __cdecl TEAM_LIST_ENTRY::Write(const TEAM_LIST_ENTRY *const this, SocketOutputStream *const oStream);
  627. void __cdecl _BUY_DATA::GetSubString(_BUY_DATA *const this, INT nIdx, CHAR *pBuf, INT nBufLength);
  628. BYTE __cdecl _BUY_DATA::GetPrizeType(_BUY_DATA *const this);
  629. int __cdecl _BUY_DATA::GetGoodsType(int a2);
  630. UINT __cdecl _BUY_DATA::GetPrizeSerial(_BUY_DATA *const this);
  631. int __cdecl _BUY_DATA::GetPrizeNum(int a2);
  632. int __cdecl _BUY_DATA::GetGoodsNum(int a2);
  633. UINT __cdecl _BUY_DATA::GetCostPoint(int a2);
  634. void __cdecl DisclosureMsg::DisclosureInfo::Read(DisclosureMsg::DisclosureInfo *const this, SocketInputStream *const iStream);
  635. void __cdecl DisclosureMsg::Read(DisclosureMsg *const this, SocketInputStream *const iStream);
  636. void __cdecl DisclosureMsg::DisclosureInfo::Write(const DisclosureMsg::DisclosureInfo *const this, SocketOutputStream *const oStream);
  637. void __cdecl DisclosureMsg::Write(const DisclosureMsg *const this, SocketOutputStream *const oStream);
  638. int __cdecl DisclosureMsg::DisclosureInfo::GetSize(unsigned __int8 *a2);
  639. int __cdecl DisclosureMsg::GetSize(int a2);
  640. void __cdecl FindFriendAD_VoteInfo_Packets::Read(FindFriendAD_VoteInfo_Packets *const this, SocketInputStream *const iStream);
  641. void __cdecl FindFriendAD_VoteInfo_Packets::Write(const FindFriendAD_VoteInfo_Packets *const this, SocketOutputStream *const oStream);
  642. void __cdecl FindFriendAD_SimpleInfo::Read(FindFriendAD_SimpleInfo *const this, SocketInputStream *const iStream);
  643. void __cdecl FindFriendAD_SimpleInfo::Write(const FindFriendAD_SimpleInfo *const this, SocketOutputStream *const oStream);
  644. int __cdecl FindFriendAD_DetailInfo::GetPacketSize(int a2);
  645. void __cdecl FindFriendAD_DetailInfo::Read(FindFriendAD_DetailInfo *const this, SocketInputStream *const iStream);
  646. void __cdecl FindFriendAD_DetailInfo::Write(const FindFriendAD_DetailInfo *const this, SocketOutputStream *const oStream);
  647. void __cdecl _tcf_0_13(void *);
  648. void `global constructor keyed to'GetSerialType(); // idb
  649. UINT __cdecl GUILD_CGW_ASKLIST::GetPacketSize(const GUILD_CGW_ASKLIST *const this);
  650. UINT __cdecl GUILD_CGW_ASKNAMELIST::GetPacketSize(const GUILD_CGW_ASKNAMELIST *const this);
  651. int __cdecl GUILD_CGW_CREATE::GetPacketSize(int a2);
  652. UINT __cdecl GUILD_CGW_JOIN::GetPacketSize(const GUILD_CGW_JOIN *const this);
  653. UINT __cdecl GUILD_CGW_ASKINFO::GetPacketSize(const GUILD_CGW_ASKINFO *const this);
  654. UINT __cdecl GUILD_CGW_APPOINT::GetPacketSize(const GUILD_CGW_APPOINT *const this);
  655. UINT __cdecl GUILD_CGW_ADJUSTAUTH::GetPacketSize(const GUILD_CGW_ADJUSTAUTH *const this);
  656. UINT __cdecl GUILD_CGW_RECRUIT::GetPacketSize(const GUILD_CGW_RECRUIT *const this);
  657. UINT __cdecl GUILD_CGW_EXPEL::GetPacketSize(const GUILD_CGW_EXPEL *const this);
  658. UINT __cdecl GUILD_CGW_WITHDRAW::GetPacketSize(const GUILD_CGW_WITHDRAW *const this);
  659. UINT __cdecl GUILD_CGW_DEPOSIT::GetPacketSize(const GUILD_CGW_DEPOSIT *const this);
  660. int __cdecl GUILD_POSITION_NAME_LIST::GetPacketSize(int a2);
  661. int __cdecl GUILD_CGW_CHANG_DESC::GetPacketSize(int a2);
  662. int __cdecl GUILD_CGW_MODIFY_LEAVE_WORD::GetPacketSize(int a2);
  663. int __cdecl GUILD_WGC_APPOINT_INFO::GetPacketSize(int a2);
  664. UINT __cdecl GUILD_WGC_GUILD_INFO::GetPacketSize(const GUILD_WGC_GUILD_INFO *const this);
  665. int __cdecl GUILD_WGC_MEMBER_LIST::GetPacketSize(int a2);
  666. int __cdecl GUILD_WGC_LIST::GetPacketSize(int a2);
  667. UINT __cdecl GUILD_WGC_NAMELIST::GetPacketSize(const GUILD_WGC_NAMELIST *const this);
  668. UINT __fastcall GUILD_WGC_SELF_GUILD_INFO::GetPacketSize(const GUILD_WGC_SELF_GUILD_INFO *const this);
  669. int __cdecl FindFriendAD_VoteInfo_Packets::GetPacketSize(int a2);
  670. int __cdecl FindFriendAD_SimpleInfo::GetPacketSize(int a2);
  671. void __cdecl MySleep(int a2);
  672. BOOL __cdecl sm_trylock(CHAR *const flag, CHAR type);
  673. void __cdecl sm_unlock(CHAR *const flag, CHAR type);
  674. void __cdecl sm_lock(CHAR *const flag, CHAR type);
  675. FLOAT __cdecl MySqrt(const WORLD_POS *pCur, const WORLD_POS *pTar);
  676. long double __cdecl MyLengthSq(float *a3, float *a4);
  677. FLOAT __cdecl MyAngle(const WORLD_POS *pCur, const WORLD_POS *pTar);
  678. BOOL __cdecl MyPosEqual(const WORLD_POS *pA, const WORLD_POS *pB);
  679. void __cdecl MyRandPos(WORLD_POS *pPos, const WORLD_POS *pDir, FLOAT fRadioMax, FLOAT fRadioMin);
  680. CHAR *MySocketError(); // idb
  681. UINT __cdecl MyCRC(const CHAR *szString);
  682. UINT __cdecl BinCRC(const CHAR *pBinary, INT InSize);
  683. BOOL __cdecl Bin2StrEx(const CHAR *pIn, UINT InLength, CHAR *pOut, UINT InMaxSize);
  684. BOOL __cdecl Str2BinEx(const CHAR *pIn, UINT InLength, CHAR *pOut, UINT *const MaxLengthOrOutLength);
  685. BOOL __cdecl Bin2Str(const CHAR *pIn, UINT InLength, CHAR *pOut);
  686. CHAR __cdecl Value2Ascii(CHAR in);
  687. CHAR __cdecl Ascii2Value(CHAR in);
  688. BOOL __cdecl Binary2String(const CHAR *pIn, UINT InLength, CHAR *pOut);
  689. BOOL __cdecl DBStr2Binary(const CHAR *pIn, UINT InLength, CHAR *pOut, UINT OutLimit, UINT *a6);
  690. BOOL __cdecl Str2Bin(const CHAR *pIn, UINT InLength, CHAR *pOut, UINT OutLimit, UINT *a6);
  691. BOOL __cdecl StrSafeCheck(const CHAR *pIn, UINT InLength);
  692. BOOL __cdecl AccNameCheck(const CHAR *pIn, UINT InLength, INT nLanguage);
  693. UINT __cdecl GetMailSize(const MAIL *const mail);
  694. UINT __cdecl GetMailListSize(const MAIL_LIST *const maillist);
  695. void __cdecl DumpStack(const CHAR *type);
  696. UINT __cdecl FullDataCrc(FULLUSERDATA *pData, BOOL bLog);
  697. bool __cdecl SafeMemCopy(void *pDest, const void *pSrc, const size_t DestSize, const size_t SrcSize);
  698. bool __cdecl SafeStrCopy(char *pDest, const size_t DestSize, const char *pSrc, const size_t SrcSize);
  699. void __cdecl _tcf_0_14(void *);
  700. void `global constructor keyed to'g_CmdArgv(); // idb
  701. void __cdecl PacketFactoryManagerInstance::PacketFactoryManagerInstance(PacketFactoryManager *a2);
  702. void __cdecl PacketFactoryManagerInstance::PacketFactoryManagerInstance(PacketFactoryManager *a2);
  703. void __cdecl PacketFactoryManagerInstance::~PacketFactoryManagerInstance(PacketFactoryManager *a2);
  704. void __cdecl PacketFactoryManagerInstance::~PacketFactoryManagerInstance(PacketFactoryManager *a2);
  705. void __cdecl PacketFactoryManagerInstance::~PacketFactoryManagerInstance(PacketFactoryManager *a2);
  706. BOOL __cdecl PacketFactoryManagerInstance::Init(PacketFactoryManagerInstance *const this);
  707. void __noreturn sub_806AD8D();
  708. // void __usercall __noreturn sub_806ADC8(pthread_mutex_t *a1@<eax>, int a2@<ebp>);
  709. void __cdecl BillPacketFactoryManagerInstance::BillPacketFactoryManagerInstance(BillPacketFactoryManager *a2);
  710. void __cdecl BillPacketFactoryManagerInstance::BillPacketFactoryManagerInstance(BillPacketFactoryManager *a2);
  711. void __cdecl BillPacketFactoryManagerInstance::~BillPacketFactoryManagerInstance(BillPacketFactoryManager *a2);
  712. void __cdecl BillPacketFactoryManagerInstance::~BillPacketFactoryManagerInstance(BillPacketFactoryManager *a2);
  713. void __cdecl BillPacketFactoryManagerInstance::~BillPacketFactoryManagerInstance(BillPacketFactoryManager *a2);
  714. BOOL __cdecl BillPacketFactoryManagerInstance::Init(BillPacketFactoryManagerInstance *const this);
  715. void __cdecl _tcf_0_15(void *);
  716. void `global constructor keyed to'g_pPacketFactoryManager(); // idb
  717. void __cdecl PacketFactory::~PacketFactory(_DWORD *a2);
  718. void __cdecl PacketFactory::~PacketFactory(IPRegionTable *const a2);
  719. Packet *__cdecl Packets::CLAskLoginFactory::CreatePacket(Packets::CLAskLoginFactory *const this);
  720. PacketID_t __cdecl Packets::CLAskLoginFactory::GetPacketID(const Packets::CLAskLoginFactory *const this);
  721. UINT __cdecl Packets::CLAskLoginFactory::GetPacketMaxSize(const Packets::CLAskLoginFactory *const this);
  722. Packet *__cdecl Packets::CLAskCharListFactory::CreatePacket(Packets::CLAskCharListFactory *const this);
  723. PacketID_t __cdecl Packets::CLAskCharListFactory::GetPacketID(const Packets::CLAskCharListFactory *const this);
  724. UINT __cdecl Packets::CLAskCharListFactory::GetPacketMaxSize(const Packets::CLAskCharListFactory *const this);
  725. Packet *__cdecl Packets::CLAskCharLoginFactory::CreatePacket(Packets::CLAskCharLoginFactory *const this);
  726. PacketID_t __cdecl Packets::CLAskCharLoginFactory::GetPacketID(const Packets::CLAskCharLoginFactory *const this);
  727. UINT __cdecl Packets::CLAskCharLoginFactory::GetPacketMaxSize(const Packets::CLAskCharLoginFactory *const this);
  728. Packet *__cdecl Packets::CLConnectFactory::CreatePacket(Packets::CLConnectFactory *const this);
  729. PacketID_t __cdecl Packets::CLConnectFactory::GetPacketID(const Packets::CLConnectFactory *const this);
  730. UINT __cdecl Packets::CLConnectFactory::GetPacketMaxSize(const Packets::CLConnectFactory *const this);
  731. Packet *__cdecl Packets::CLAskCreateCharFactory::CreatePacket(Packets::CLAskCreateCharFactory *const this);
  732. PacketID_t __cdecl Packets::CLAskCreateCharFactory::GetPacketID(const Packets::CLAskCreateCharFactory *const this);
  733. UINT __cdecl Packets::CLAskCreateCharFactory::GetPacketMaxSize(const Packets::CLAskCreateCharFactory *const this);
  734. Packet *__cdecl Packets::CLAskDeleteCharFactory::CreatePacket(Packets::CLAskDeleteCharFactory *const this);
  735. PacketID_t __cdecl Packets::CLAskDeleteCharFactory::GetPacketID(const Packets::CLAskDeleteCharFactory *const this);
  736. UINT __cdecl Packets::CLAskDeleteCharFactory::GetPacketMaxSize(const Packets::CLAskDeleteCharFactory *const this);
  737. Packet *__cdecl Packets::CLAskRegPassPortFactory::CreatePacket(Packets::CLAskRegPassPortFactory *const this);
  738. PacketID_t __cdecl Packets::CLAskRegPassPortFactory::GetPacketID(const Packets::CLAskRegPassPortFactory *const this);
  739. UINT __cdecl Packets::CLAskRegPassPortFactory::GetPacketMaxSize(const Packets::CLAskRegPassPortFactory *const this);
  740. Packet *__cdecl Packets::CLAskCreateCodeFactory::CreatePacket(Packets::CLAskCreateCodeFactory *const this);
  741. PacketID_t __cdecl Packets::CLAskCreateCodeFactory::GetPacketID(const Packets::CLAskCreateCodeFactory *const this);
  742. UINT __cdecl Packets::CLAskCreateCodeFactory::GetPacketMaxSize(const Packets::CLAskCreateCodeFactory *const this);
  743. Packet *__cdecl Packets::CLRegNewLicenseFactory::CreatePacket(Packets::CLRegNewLicenseFactory *const this);
  744. PacketID_t __cdecl Packets::CLRegNewLicenseFactory::GetPacketID(const Packets::CLRegNewLicenseFactory *const this);
  745. UINT __cdecl Packets::CLRegNewLicenseFactory::GetPacketMaxSize(const Packets::CLRegNewLicenseFactory *const this);
  746. Packet *__cdecl Packets::CLAskLoginCodeFactory::CreatePacket(Packets::CLAskLoginCodeFactory *const this);
  747. PacketID_t __cdecl Packets::CLAskLoginCodeFactory::GetPacketID(const Packets::CLAskLoginCodeFactory *const this);
  748. UINT __cdecl Packets::CLAskLoginCodeFactory::GetPacketMaxSize(const Packets::CLAskLoginCodeFactory *const this);
  749. Packet *__cdecl Packets::CLRegSafeSignFactory::CreatePacket(Packets::CLRegSafeSignFactory *const this);
  750. PacketID_t __cdecl Packets::CLRegSafeSignFactory::GetPacketID(const Packets::CLRegSafeSignFactory *const this);
  751. UINT __cdecl Packets::CLRegSafeSignFactory::GetPacketMaxSize(const Packets::CLRegSafeSignFactory *const this);
  752. Packet *__cdecl Packets::LCRetLoginFactory::CreatePacket(Packets::LCRetLoginFactory *const this);
  753. PacketID_t __cdecl Packets::LCRetLoginFactory::GetPacketID(const Packets::LCRetLoginFactory *const this);
  754. UINT __cdecl Packets::LCRetLoginFactory::GetPacketMaxSize(const Packets::LCRetLoginFactory *const this);
  755. Packet *__cdecl Packets::LCRetCharListFactory::CreatePacket(Packets::LCRetCharListFactory *const this);
  756. PacketID_t __cdecl Packets::LCRetCharListFactory::GetPacketID(const Packets::LCRetCharListFactory *const this);
  757. UINT __cdecl Packets::LCRetCharListFactory::GetPacketMaxSize(const Packets::LCRetCharListFactory *const this);
  758. Packet *__cdecl Packets::LCStatusFactory::CreatePacket(Packets::LCStatusFactory *const this);
  759. PacketID_t __cdecl Packets::LCStatusFactory::GetPacketID(const Packets::LCStatusFactory *const this);
  760. UINT __cdecl Packets::LCStatusFactory::GetPacketMaxSize(const Packets::LCStatusFactory *const this);
  761. Packet *__cdecl Packets::LCRetCharLoginFactory::CreatePacket(Packets::LCRetCharLoginFactory *const this);
  762. PacketID_t __cdecl Packets::LCRetCharLoginFactory::GetPacketID(const Packets::LCRetCharLoginFactory *const this);
  763. UINT __cdecl Packets::LCRetCharLoginFactory::GetPacketMaxSize(const Packets::LCRetCharLoginFactory *const this);
  764. Packet *__cdecl Packets::LCRetConnectFactory::CreatePacket(Packets::LCRetConnectFactory *const this);
  765. PacketID_t __cdecl Packets::LCRetConnectFactory::GetPacketID(const Packets::LCRetConnectFactory *const this);
  766. UINT __cdecl Packets::LCRetConnectFactory::GetPacketMaxSize(const Packets::LCRetConnectFactory *const this);
  767. Packet *__cdecl Packets::LCRetCreateCharFactory::CreatePacket(Packets::LCRetCreateCharFactory *const this);
  768. PacketID_t __cdecl Packets::LCRetCreateCharFactory::GetPacketID(const Packets::LCRetCreateCharFactory *const this);
  769. UINT __cdecl Packets::LCRetCreateCharFactory::GetPacketMaxSize(const Packets::LCRetCreateCharFactory *const this);
  770. Packet *__cdecl Packets::LCRetDeleteCharFactory::CreatePacket(Packets::LCRetDeleteCharFactory *const this);
  771. PacketID_t __cdecl Packets::LCRetDeleteCharFactory::GetPacketID(const Packets::LCRetDeleteCharFactory *const this);
  772. UINT __cdecl Packets::LCRetDeleteCharFactory::GetPacketMaxSize(const Packets::LCRetDeleteCharFactory *const this);
  773. Packet *__cdecl Packets::LCRetCreateCodeFactory::CreatePacket(Packets::LCRetCreateCodeFactory *const this);
  774. PacketID_t __cdecl Packets::LCRetCreateCodeFactory::GetPacketID(const Packets::LCRetCreateCodeFactory *const this);
  775. UINT __cdecl Packets::LCRetCreateCodeFactory::GetPacketMaxSize(const Packets::LCRetCreateCodeFactory *const this);
  776. Packet *__cdecl Packets::LCRetLoginCodeFactory::CreatePacket(Packets::LCRetLoginCodeFactory *const this);
  777. PacketID_t __cdecl Packets::LCRetLoginCodeFactory::GetPacketID(const Packets::LCRetLoginCodeFactory *const this);
  778. UINT __cdecl Packets::LCRetLoginCodeFactory::GetPacketMaxSize(const Packets::LCRetLoginCodeFactory *const this);
  779. Packet *__cdecl Packets::KeyExchangeFactory::CreatePacket(Packets::KeyExchangeFactory *const this);
  780. PacketID_t __cdecl Packets::KeyExchangeFactory::GetPacketID(const Packets::KeyExchangeFactory *const this);
  781. UINT __cdecl Packets::KeyExchangeFactory::GetPacketMaxSize(const Packets::KeyExchangeFactory *const this);
  782. Packet *__cdecl Packets::SSConnectFactory::CreatePacket(Packets::SSConnectFactory *const this);
  783. PacketID_t __cdecl Packets::SSConnectFactory::GetPacketID(const Packets::SSConnectFactory *const this);
  784. UINT __cdecl Packets::SSConnectFactory::GetPacketMaxSize(const Packets::SSConnectFactory *const this);
  785. Packet *__cdecl Packets::SSScenePlayerCountFactory::CreatePacket(Packets::SSScenePlayerCountFactory *const this);
  786. PacketID_t __cdecl Packets::SSScenePlayerCountFactory::GetPacketID(const Packets::SSScenePlayerCountFactory *const this);
  787. UINT __cdecl Packets::SSScenePlayerCountFactory::GetPacketMaxSize(const Packets::SSScenePlayerCountFactory *const this);
  788. Packet *__cdecl Packets::GWLWGCostLogFactory::CreatePacket(Packets::GWLWGCostLogFactory *const this);
  789. PacketID_t __cdecl Packets::GWLWGCostLogFactory::GetPacketID(const Packets::GWLWGCostLogFactory *const this);
  790. UINT __cdecl Packets::GWLWGCostLogFactory::GetPacketMaxSize(const Packets::GWLWGCostLogFactory *const this);
  791. PacketID_t __cdecl Packets::LWAskCharLoginFactory::GetPacketID(const Packets::LWAskCharLoginFactory *const this);
  792. UINT __cdecl Packets::LWAskCharLoginFactory::GetPacketMaxSize(const Packets::LWAskCharLoginFactory *const this);
  793. Packet *__cdecl Packets::LWRetBillingStartFactory::CreatePacket(Packets::LWRetBillingStartFactory *const this);
  794. PacketID_t __cdecl Packets::LWRetBillingStartFactory::GetPacketID(const Packets::LWRetBillingStartFactory *const this);
  795. UINT __cdecl Packets::LWRetBillingStartFactory::GetPacketMaxSize(const Packets::LWRetBillingStartFactory *const this);
  796. Packet *__cdecl Packets::LWRetBillingEndFactory::CreatePacket(Packets::LWRetBillingEndFactory *const this);
  797. PacketID_t __cdecl Packets::LWRetBillingEndFactory::GetPacketID(const Packets::LWRetBillingEndFactory *const this);
  798. UINT __cdecl Packets::LWRetBillingEndFactory::GetPacketMaxSize(const Packets::LWRetBillingEndFactory *const this);
  799. Packet *__cdecl Packets::LWRetBillingKeepFactory::CreatePacket(Packets::LWRetBillingKeepFactory *const this);
  800. PacketID_t __cdecl Packets::LWRetBillingKeepFactory::GetPacketID(const Packets::LWRetBillingKeepFactory *const this);
  801. UINT __cdecl Packets::LWRetBillingKeepFactory::GetPacketMaxSize(const Packets::LWRetBillingKeepFactory *const this);
  802. Packet *__cdecl Packets::LWRetPrizeFactory::CreatePacket(Packets::LWRetPrizeFactory *const this);
  803. PacketID_t __cdecl Packets::LWRetPrizeFactory::GetPacketID(const Packets::LWRetPrizeFactory *const this);
  804. UINT __cdecl Packets::LWRetPrizeFactory::GetPacketMaxSize(const Packets::LWRetPrizeFactory *const this);
  805. Packet *__cdecl Packets::LWNotifyUserFactory::CreatePacket(Packets::LWNotifyUserFactory *const this);
  806. PacketID_t __cdecl Packets::LWNotifyUserFactory::GetPacketID(const Packets::LWNotifyUserFactory *const this);
  807. UINT __cdecl Packets::LWNotifyUserFactory::GetPacketMaxSize(const Packets::LWNotifyUserFactory *const this);
  808. Packet *__cdecl Packets::LWChangeNameFactory::CreatePacket(Packets::LWChangeNameFactory *const this);
  809. PacketID_t __cdecl Packets::LWChangeNameFactory::GetPacketID(const Packets::LWChangeNameFactory *const this);
  810. UINT __cdecl Packets::LWChangeNameFactory::GetPacketMaxSize(const Packets::LWChangeNameFactory *const this);
  811. Packet *__cdecl Packets::LWOperateAccResultFactory::CreatePacket(Packets::LWOperateAccResultFactory *const this);
  812. PacketID_t __cdecl Packets::LWOperateAccResultFactory::GetPacketID(const Packets::LWOperateAccResultFactory *const this);
  813. UINT __cdecl Packets::LWOperateAccResultFactory::GetPacketMaxSize(const Packets::LWOperateAccResultFactory *const this);
  814. Packet *__cdecl Packets::WLRetCharLoginFactory::CreatePacket(Packets::WLRetCharLoginFactory *const this);
  815. PacketID_t __cdecl Packets::WLRetCharLoginFactory::GetPacketID(const Packets::WLRetCharLoginFactory *const this);
  816. UINT __cdecl Packets::WLRetCharLoginFactory::GetPacketMaxSize(const Packets::WLRetCharLoginFactory *const this);
  817. Packet *__cdecl Packets::WLBillingStartFactory::CreatePacket(Packets::WLBillingStartFactory *const this);
  818. PacketID_t __cdecl Packets::WLBillingStartFactory::GetPacketID(const Packets::WLBillingStartFactory *const this);
  819. UINT __cdecl Packets::WLBillingStartFactory::GetPacketMaxSize(const Packets::WLBillingStartFactory *const this);
  820. Packet *__cdecl Packets::WLBillingEndFactory::CreatePacket(Packets::WLBillingEndFactory *const this);
  821. PacketID_t __cdecl Packets::WLBillingEndFactory::GetPacketID(const Packets::WLBillingEndFactory *const this);
  822. UINT __cdecl Packets::WLBillingEndFactory::GetPacketMaxSize(const Packets::WLBillingEndFactory *const this);
  823. Packet *__cdecl Packets::WLBillingKeepFactory::CreatePacket(Packets::WLBillingKeepFactory *const this);
  824. PacketID_t __cdecl Packets::WLBillingKeepFactory::GetPacketID(const Packets::WLBillingKeepFactory *const this);
  825. UINT __cdecl Packets::WLBillingKeepFactory::GetPacketMaxSize(const Packets::WLBillingKeepFactory *const this);
  826. Packet *__cdecl Packets::WLBillingKickFactory::CreatePacket(Packets::WLBillingKickFactory *const this);
  827. PacketID_t __cdecl Packets::WLBillingKickFactory::GetPacketID(const Packets::WLBillingKickFactory *const this);
  828. UINT __cdecl Packets::WLBillingKickFactory::GetPacketMaxSize(const Packets::WLBillingKickFactory *const this);
  829. Packet *__cdecl Packets::WLAskPrizeFactory::CreatePacket(Packets::WLAskPrizeFactory *const this);
  830. PacketID_t __cdecl Packets::WLAskPrizeFactory::GetPacketID(const Packets::WLAskPrizeFactory *const this);
  831. UINT __cdecl Packets::WLAskPrizeFactory::GetPacketMaxSize(const Packets::WLAskPrizeFactory *const this);
  832. Packet *__cdecl Packets::WLNotifyUserFactory::CreatePacket(Packets::WLNotifyUserFactory *const this);
  833. PacketID_t __cdecl Packets::WLNotifyUserFactory::GetPacketID(const Packets::WLNotifyUserFactory *const this);
  834. UINT __cdecl Packets::WLNotifyUserFactory::GetPacketMaxSize(const Packets::WLNotifyUserFactory *const this);
  835. Packet *__cdecl Packets::WLChangeNameFactory::CreatePacket(Packets::WLChangeNameFactory *const this);
  836. PacketID_t __cdecl Packets::WLChangeNameFactory::GetPacketID(const Packets::WLChangeNameFactory *const this);
  837. UINT __cdecl Packets::WLChangeNameFactory::GetPacketMaxSize(const Packets::WLChangeNameFactory *const this);
  838. Packet *__cdecl Packets::WLOperateAccFactory::CreatePacket(Packets::WLOperateAccFactory *const this);
  839. PacketID_t __cdecl Packets::WLOperateAccFactory::GetPacketID(const Packets::WLOperateAccFactory *const this);
  840. UINT __cdecl Packets::WLOperateAccFactory::GetPacketMaxSize(const Packets::WLOperateAccFactory *const this);
  841. Packet *__cdecl Packets::LBAskAuthFactory::CreatePacket(Packets::LBAskAuthFactory *const this);
  842. PacketID_t __cdecl Packets::LBAskAuthFactory::GetPacketID(const Packets::LBAskAuthFactory *const this);
  843. UINT __cdecl Packets::LBAskAuthFactory::GetPacketMaxSize(const Packets::LBAskAuthFactory *const this);
  844. Packet *__cdecl Packets::LBAskRegAuthFactory::CreatePacket(Packets::LBAskRegAuthFactory *const this);
  845. PacketID_t __cdecl Packets::LBAskRegAuthFactory::GetPacketID(const Packets::LBAskRegAuthFactory *const this);
  846. UINT __cdecl Packets::LBAskRegAuthFactory::GetPacketMaxSize(const Packets::LBAskRegAuthFactory *const this);
  847. Packet *__cdecl Packets::LBAskRegLicenseFactory::CreatePacket(Packets::LBAskRegLicenseFactory *const this);
  848. PacketID_t __cdecl Packets::LBAskRegLicenseFactory::GetPacketID(const Packets::LBAskRegLicenseFactory *const this);
  849. UINT __cdecl Packets::LBAskRegLicenseFactory::GetPacketMaxSize(const Packets::LBAskRegLicenseFactory *const this);
  850. Packet *__cdecl Packets::BLRetAuthFactory::CreatePacket(Packets::BLRetAuthFactory *const this);
  851. PacketID_t __cdecl Packets::BLRetAuthFactory::GetPacketID(const Packets::BLRetAuthFactory *const this);
  852. UINT __cdecl Packets::BLRetAuthFactory::GetPacketMaxSize(const Packets::BLRetAuthFactory *const this);
  853. void __cdecl BillPacketFactory::~BillPacketFactory(_DWORD *a2);
  854. void __cdecl BillPacketFactory::~BillPacketFactory(IPRegionTable *const a2);
  855. BillPacket *__cdecl Packets::BLRetConnectFactory::CreatePacket(Packets::BLRetConnectFactory *const this);
  856. BPacketID_t __cdecl Packets::BLRetConnectFactory::GetPacketID(const Packets::BLRetConnectFactory *const this);
  857. UINT __cdecl Packets::BLRetConnectFactory::GetPacketMaxSize(const Packets::BLRetConnectFactory *const this);
  858. BillPacket *__cdecl Packets::BLRetKeepLiveFactory::CreatePacket(Packets::BLRetKeepLiveFactory *const this);
  859. BPacketID_t __cdecl Packets::BLRetKeepLiveFactory::GetPacketID(const Packets::BLRetKeepLiveFactory *const this);
  860. UINT __cdecl Packets::BLRetKeepLiveFactory::GetPacketMaxSize(const Packets::BLRetKeepLiveFactory *const this);
  861. BillPacket *__cdecl Packets::BLRetAccCheckFactory::CreatePacket(Packets::BLRetAccCheckFactory *const this);
  862. BPacketID_t __cdecl Packets::BLRetAccCheckFactory::GetPacketID(const Packets::BLRetAccCheckFactory *const this);
  863. UINT __cdecl Packets::BLRetAccCheckFactory::GetPacketMaxSize(const Packets::BLRetAccCheckFactory *const this);
  864. BillPacket *__cdecl Packets::BLRetBillingStartFactory::CreatePacket(Packets::BLRetBillingStartFactory *const this);
  865. BPacketID_t __cdecl Packets::BLRetBillingStartFactory::GetPacketID(const Packets::BLRetBillingStartFactory *const this);
  866. UINT __cdecl Packets::BLRetBillingStartFactory::GetPacketMaxSize(const Packets::BLRetBillingStartFactory *const this);
  867. BillPacket *__cdecl Packets::BLRetBillingEndFactory::CreatePacket(Packets::BLRetBillingEndFactory *const this);
  868. BPacketID_t __cdecl Packets::BLRetBillingEndFactory::GetPacketID(const Packets::BLRetBillingEndFactory *const this);
  869. UINT __cdecl Packets::BLRetBillingEndFactory::GetPacketMaxSize(const Packets::BLRetBillingEndFactory *const this);
  870. BillPacket *__cdecl Packets::BLRetBillingKeepFactory::CreatePacket(Packets::BLRetBillingKeepFactory *const this);
  871. BPacketID_t __cdecl Packets::BLRetBillingKeepFactory::GetPacketID(const Packets::BLRetBillingKeepFactory *const this);
  872. UINT __cdecl Packets::BLRetBillingKeepFactory::GetPacketMaxSize(const Packets::BLRetBillingKeepFactory *const this);
  873. BillPacket *__cdecl Packets::BLRetKickALLFactory::CreatePacket(Packets::BLRetKickALLFactory *const this);
  874. BPacketID_t __cdecl Packets::BLRetKickALLFactory::GetPacketID(const Packets::BLRetKickALLFactory *const this);
  875. UINT __cdecl Packets::BLRetKickALLFactory::GetPacketMaxSize(const Packets::BLRetKickALLFactory *const this);
  876. BillPacket *__cdecl Packets::BLRetRegPassPortFactory::CreatePacket(Packets::BLRetRegPassPortFactory *const this);
  877. BPacketID_t __cdecl Packets::BLRetRegPassPortFactory::GetPacketID(const Packets::BLRetRegPassPortFactory *const this);
  878. UINT __cdecl Packets::BLRetRegPassPortFactory::GetPacketMaxSize(const Packets::BLRetRegPassPortFactory *const this);
  879. BillPacket *__cdecl Packets::BLRetPrizeFactory::CreatePacket(Packets::BLRetPrizeFactory *const this);
  880. BPacketID_t __cdecl Packets::BLRetPrizeFactory::GetPacketID(const Packets::BLRetPrizeFactory *const this);
  881. UINT __cdecl Packets::BLRetPrizeFactory::GetPacketMaxSize(const Packets::BLRetPrizeFactory *const this);
  882. BillPacket *__cdecl Packets::BLRetAskPointFactory::CreatePacket(Packets::BLRetAskPointFactory *const this);
  883. BPacketID_t __cdecl Packets::BLRetAskPointFactory::GetPacketID(const Packets::BLRetAskPointFactory *const this);
  884. UINT __cdecl Packets::BLRetAskPointFactory::GetPacketMaxSize(const Packets::BLRetAskPointFactory *const this);
  885. BillPacket *__cdecl Packets::BLRetAskBuyFactory::CreatePacket(Packets::BLRetAskBuyFactory *const this);
  886. BPacketID_t __cdecl Packets::BLRetAskBuyFactory::GetPacketID(const Packets::BLRetAskBuyFactory *const this);
  887. UINT __cdecl Packets::BLRetAskBuyFactory::GetPacketMaxSize(const Packets::BLRetAskBuyFactory *const this);
  888. BillPacket *__cdecl Packets::LBLCostLogFactory::CreatePacket(Packets::LBLCostLogFactory *const this);
  889. BPacketID_t __cdecl Packets::LBLCostLogFactory::GetPacketID(const Packets::LBLCostLogFactory *const this);
  890. UINT __cdecl Packets::LBLCostLogFactory::GetPacketMaxSize(const Packets::LBLCostLogFactory *const this);
  891. BillPacket *__cdecl Packets::LBLAskNewUserCardFactory::CreatePacket(Packets::LBLAskNewUserCardFactory *const this);
  892. BPacketID_t __cdecl Packets::LBLAskNewUserCardFactory::GetPacketID(const Packets::LBLAskNewUserCardFactory *const this);
  893. UINT __cdecl Packets::LBLAskNewUserCardFactory::GetPacketMaxSize(const Packets::LBLAskNewUserCardFactory *const this);
  894. BillPacket *__cdecl Packets::LBLNewPrizeFactory::CreatePacket(Packets::LBLNewPrizeFactory *const this);
  895. BPacketID_t __cdecl Packets::LBLNewPrizeFactory::GetPacketID(const Packets::LBLNewPrizeFactory *const this);
  896. UINT __cdecl Packets::LBLNewPrizeFactory::GetPacketMaxSize(const Packets::LBLNewPrizeFactory *const this);
  897. BillPacket *__cdecl Packets::LBLNewCheckPrizeFactory::CreatePacket(Packets::LBLNewCheckPrizeFactory *const this);
  898. BPacketID_t __cdecl Packets::LBLNewCheckPrizeFactory::GetPacketID(const Packets::LBLNewCheckPrizeFactory *const this);
  899. UINT __cdecl Packets::LBLNewCheckPrizeFactory::GetPacketMaxSize(const Packets::LBLNewCheckPrizeFactory *const this);
  900. BillPacket *__cdecl Packets::LBLAskMigFactory::CreatePacket(Packets::LBLAskMigFactory *const this);
  901. BPacketID_t __cdecl Packets::LBLAskMigFactory::GetPacketID(const Packets::LBLAskMigFactory *const this);
  902. UINT __cdecl Packets::LBLAskMigFactory::GetPacketMaxSize(const Packets::LBLAskMigFactory *const this);
  903. BillPacket *__cdecl Packets::LBLRegNewLicenseFactory::CreatePacket(Packets::LBLRegNewLicenseFactory *const this);
  904. BPacketID_t __cdecl Packets::LBLRegNewLicenseFactory::GetPacketID(const Packets::LBLRegNewLicenseFactory *const this);
  905. UINT __cdecl Packets::LBLRegNewLicenseFactory::GetPacketMaxSize(const Packets::LBLRegNewLicenseFactory *const this);
  906. BillPacket *__cdecl Packets::LBLCardCheckPrizeFactory::CreatePacket(Packets::LBLCardCheckPrizeFactory *const this);
  907. BPacketID_t __cdecl Packets::LBLCardCheckPrizeFactory::GetPacketID(const Packets::LBLCardCheckPrizeFactory *const this);
  908. UINT __cdecl Packets::LBLCardCheckPrizeFactory::GetPacketMaxSize(const Packets::LBLCardCheckPrizeFactory *const this);
  909. BillPacket *__cdecl Packets::LBLOperateAccFactory::CreatePacket(Packets::LBLOperateAccFactory *const this);
  910. BPacketID_t __cdecl Packets::LBLOperateAccFactory::GetPacketID(const Packets::LBLOperateAccFactory *const this);
  911. UINT __cdecl Packets::LBLOperateAccFactory::GetPacketMaxSize(const Packets::LBLOperateAccFactory *const this);
  912. Packet *__cdecl Packets::LWAskCharLoginFactory::CreatePacket(Packets::LWAskCharLoginFactory *const this);
  913. void __cdecl Packets::CLAskLoginFactory::~CLAskLoginFactory(_DWORD *a2);
  914. void __cdecl Packets::CLAskLoginFactory::~CLAskLoginFactory(IPRegionTable *const a2);
  915. void __cdecl Packets::CLAskCharListFactory::~CLAskCharListFactory(_DWORD *a2);
  916. void __cdecl Packets::CLAskCharListFactory::~CLAskCharListFactory(IPRegionTable *const a2);
  917. void __cdecl Packets::CLAskCharLoginFactory::~CLAskCharLoginFactory(_DWORD *a2);
  918. void __cdecl Packets::CLAskCharLoginFactory::~CLAskCharLoginFactory(IPRegionTable *const a2);
  919. void __cdecl Packets::CLConnectFactory::~CLConnectFactory(_DWORD *a2);
  920. void __cdecl Packets::CLConnectFactory::~CLConnectFactory(IPRegionTable *const a2);
  921. void __cdecl Packets::CLAskCreateCharFactory::~CLAskCreateCharFactory(_DWORD *a2);
  922. void __cdecl Packets::CLAskCreateCharFactory::~CLAskCreateCharFactory(IPRegionTable *const a2);
  923. void __cdecl Packets::CLAskDeleteCharFactory::~CLAskDeleteCharFactory(_DWORD *a2);
  924. void __cdecl Packets::CLAskDeleteCharFactory::~CLAskDeleteCharFactory(IPRegionTable *const a2);
  925. void __cdecl Packets::CLAskRegPassPortFactory::~CLAskRegPassPortFactory(_DWORD *a2);
  926. void __cdecl Packets::CLAskRegPassPortFactory::~CLAskRegPassPortFactory(IPRegionTable *const a2);
  927. void __cdecl Packets::CLAskCreateCodeFactory::~CLAskCreateCodeFactory(_DWORD *a2);
  928. void __cdecl Packets::CLAskCreateCodeFactory::~CLAskCreateCodeFactory(IPRegionTable *const a2);
  929. void __cdecl Packets::CLRegNewLicenseFactory::~CLRegNewLicenseFactory(_DWORD *a2);
  930. void __cdecl Packets::CLRegNewLicenseFactory::~CLRegNewLicenseFactory(IPRegionTable *const a2);
  931. void __cdecl Packets::CLAskLoginCodeFactory::~CLAskLoginCodeFactory(_DWORD *a2);
  932. void __cdecl Packets::CLAskLoginCodeFactory::~CLAskLoginCodeFactory(IPRegionTable *const a2);
  933. void __cdecl Packets::CLRegSafeSignFactory::~CLRegSafeSignFactory(_DWORD *a2);
  934. void __cdecl Packets::CLRegSafeSignFactory::~CLRegSafeSignFactory(IPRegionTable *const a2);
  935. void __cdecl Packets::LCRetLoginFactory::~LCRetLoginFactory(_DWORD *a2);
  936. void __cdecl Packets::LCRetLoginFactory::~LCRetLoginFactory(IPRegionTable *const a2);
  937. void __cdecl Packets::LCRetCharListFactory::~LCRetCharListFactory(_DWORD *a2);
  938. void __cdecl Packets::LCRetCharListFactory::~LCRetCharListFactory(IPRegionTable *const a2);
  939. void __cdecl Packets::LCStatusFactory::~LCStatusFactory(_DWORD *a2);
  940. void __cdecl Packets::LCStatusFactory::~LCStatusFactory(IPRegionTable *const a2);
  941. void __cdecl Packets::LCRetCharLoginFactory::~LCRetCharLoginFactory(_DWORD *a2);
  942. void __cdecl Packets::LCRetCharLoginFactory::~LCRetCharLoginFactory(IPRegionTable *const a2);
  943. void __cdecl Packets::LCRetConnectFactory::~LCRetConnectFactory(_DWORD *a2);
  944. void __cdecl Packets::LCRetConnectFactory::~LCRetConnectFactory(IPRegionTable *const a2);
  945. void __cdecl Packets::LCRetCreateCharFactory::~LCRetCreateCharFactory(_DWORD *a2);
  946. void __cdecl Packets::LCRetCreateCharFactory::~LCRetCreateCharFactory(IPRegionTable *const a2);
  947. void __cdecl Packets::LCRetDeleteCharFactory::~LCRetDeleteCharFactory(_DWORD *a2);
  948. void __cdecl Packets::LCRetDeleteCharFactory::~LCRetDeleteCharFactory(IPRegionTable *const a2);
  949. void __cdecl Packets::LCRetCreateCodeFactory::~LCRetCreateCodeFactory(_DWORD *a2);
  950. void __cdecl Packets::LCRetCreateCodeFactory::~LCRetCreateCodeFactory(IPRegionTable *const a2);
  951. void __cdecl Packets::LCRetLoginCodeFactory::~LCRetLoginCodeFactory(_DWORD *a2);
  952. void __cdecl Packets::LCRetLoginCodeFactory::~LCRetLoginCodeFactory(IPRegionTable *const a2);
  953. void __cdecl Packets::KeyExchangeFactory::~KeyExchangeFactory(_DWORD *a2);
  954. void __cdecl Packets::KeyExchangeFactory::~KeyExchangeFactory(IPRegionTable *const a2);
  955. void __cdecl Packets::SSConnectFactory::~SSConnectFactory(_DWORD *a2);
  956. void __cdecl Packets::SSConnectFactory::~SSConnectFactory(IPRegionTable *const a2);
  957. void __cdecl Packets::SSScenePlayerCountFactory::~SSScenePlayerCountFactory(_DWORD *a2);
  958. void __cdecl Packets::SSScenePlayerCountFactory::~SSScenePlayerCountFactory(IPRegionTable *const a2);
  959. void __cdecl Packets::GWLWGCostLogFactory::~GWLWGCostLogFactory(_DWORD *a2);
  960. void __cdecl Packets::GWLWGCostLogFactory::~GWLWGCostLogFactory(IPRegionTable *const a2);
  961. void __cdecl Packets::LWAskCharLoginFactory::~LWAskCharLoginFactory(_DWORD *a2);
  962. void __cdecl Packets::LWAskCharLoginFactory::~LWAskCharLoginFactory(IPRegionTable *const a2);
  963. void __cdecl Packets::LWRetBillingStartFactory::~LWRetBillingStartFactory(_DWORD *a2);
  964. void __cdecl Packets::LWRetBillingStartFactory::~LWRetBillingStartFactory(IPRegionTable *const a2);
  965. void __cdecl Packets::LWRetBillingEndFactory::~LWRetBillingEndFactory(_DWORD *a2);
  966. void __cdecl Packets::LWRetBillingEndFactory::~LWRetBillingEndFactory(IPRegionTable *const a2);
  967. void __cdecl Packets::LWRetBillingKeepFactory::~LWRetBillingKeepFactory(_DWORD *a2);
  968. void __cdecl Packets::LWRetBillingKeepFactory::~LWRetBillingKeepFactory(IPRegionTable *const a2);
  969. void __cdecl Packets::LWRetPrizeFactory::~LWRetPrizeFactory(_DWORD *a2);
  970. void __cdecl Packets::LWRetPrizeFactory::~LWRetPrizeFactory(IPRegionTable *const a2);
  971. void __cdecl Packets::LWNotifyUserFactory::~LWNotifyUserFactory(_DWORD *a2);
  972. void __cdecl Packets::LWNotifyUserFactory::~LWNotifyUserFactory(IPRegionTable *const a2);
  973. void __cdecl Packets::LWChangeNameFactory::~LWChangeNameFactory(_DWORD *a2);
  974. void __cdecl Packets::LWChangeNameFactory::~LWChangeNameFactory(IPRegionTable *const a2);
  975. void __cdecl Packets::LWOperateAccResultFactory::~LWOperateAccResultFactory(_DWORD *a2);
  976. void __cdecl Packets::LWOperateAccResultFactory::~LWOperateAccResultFactory(IPRegionTable *const a2);
  977. void __cdecl Packets::WLRetCharLoginFactory::~WLRetCharLoginFactory(_DWORD *a2);
  978. void __cdecl Packets::WLRetCharLoginFactory::~WLRetCharLoginFactory(IPRegionTable *const a2);
  979. void __cdecl Packets::WLBillingStartFactory::~WLBillingStartFactory(_DWORD *a2);
  980. void __cdecl Packets::WLBillingStartFactory::~WLBillingStartFactory(IPRegionTable *const a2);
  981. void __cdecl Packets::WLBillingEndFactory::~WLBillingEndFactory(_DWORD *a2);
  982. void __cdecl Packets::WLBillingEndFactory::~WLBillingEndFactory(IPRegionTable *const a2);
  983. void __cdecl Packets::WLBillingKeepFactory::~WLBillingKeepFactory(_DWORD *a2);
  984. void __cdecl Packets::WLBillingKeepFactory::~WLBillingKeepFactory(IPRegionTable *const a2);
  985. void __cdecl Packets::WLBillingKickFactory::~WLBillingKickFactory(_DWORD *a2);
  986. void __cdecl Packets::WLBillingKickFactory::~WLBillingKickFactory(IPRegionTable *const a2);
  987. void __cdecl Packets::WLAskPrizeFactory::~WLAskPrizeFactory(_DWORD *a2);
  988. void __cdecl Packets::WLAskPrizeFactory::~WLAskPrizeFactory(IPRegionTable *const a2);
  989. void __cdecl Packets::WLNotifyUserFactory::~WLNotifyUserFactory(_DWORD *a2);
  990. void __cdecl Packets::WLNotifyUserFactory::~WLNotifyUserFactory(IPRegionTable *const a2);
  991. void __cdecl Packets::WLChangeNameFactory::~WLChangeNameFactory(_DWORD *a2);
  992. void __cdecl Packets::WLChangeNameFactory::~WLChangeNameFactory(IPRegionTable *const a2);
  993. void __cdecl Packets::WLOperateAccFactory::~WLOperateAccFactory(_DWORD *a2);
  994. void __cdecl Packets::WLOperateAccFactory::~WLOperateAccFactory(IPRegionTable *const a2);
  995. void __cdecl Packets::LBAskAuthFactory::~LBAskAuthFactory(_DWORD *a2);
  996. void __cdecl Packets::LBAskAuthFactory::~LBAskAuthFactory(IPRegionTable *const a2);
  997. void __cdecl Packets::LBAskRegAuthFactory::~LBAskRegAuthFactory(_DWORD *a2);
  998. void __cdecl Packets::LBAskRegAuthFactory::~LBAskRegAuthFactory(IPRegionTable *const a2);
  999. void __cdecl Packets::LBAskRegLicenseFactory::~LBAskRegLicenseFactory(_DWORD *a2);
  1000. void __cdecl Packets::LBAskRegLicenseFactory::~LBAskRegLicenseFactory(IPRegionTable *const a2);
  1001. void __cdecl Packets::BLRetAuthFactory::~BLRetAuthFactory(_DWORD *a2);
  1002. void __cdecl Packets::BLRetAuthFactory::~BLRetAuthFactory(IPRegionTable *const a2);
  1003. void __cdecl Packets::BLRetConnectFactory::~BLRetConnectFactory(_DWORD *a2);
  1004. void __cdecl Packets::BLRetConnectFactory::~BLRetConnectFactory(IPRegionTable *const a2);
  1005. void __cdecl Packets::BLRetKeepLiveFactory::~BLRetKeepLiveFactory(_DWORD *a2);
  1006. void __cdecl Packets::BLRetKeepLiveFactory::~BLRetKeepLiveFactory(IPRegionTable *const a2);
  1007. void __cdecl Packets::BLRetAccCheckFactory::~BLRetAccCheckFactory(_DWORD *a2);
  1008. void __cdecl Packets::BLRetAccCheckFactory::~BLRetAccCheckFactory(IPRegionTable *const a2);
  1009. void __cdecl Packets::BLRetBillingStartFactory::~BLRetBillingStartFactory(_DWORD *a2);
  1010. void __cdecl Packets::BLRetBillingStartFactory::~BLRetBillingStartFactory(IPRegionTable *const a2);
  1011. void __cdecl Packets::BLRetBillingEndFactory::~BLRetBillingEndFactory(_DWORD *a2);
  1012. void __cdecl Packets::BLRetBillingEndFactory::~BLRetBillingEndFactory(IPRegionTable *const a2);
  1013. void __cdecl Packets::BLRetBillingKeepFactory::~BLRetBillingKeepFactory(_DWORD *a2);
  1014. void __cdecl Packets::BLRetBillingKeepFactory::~BLRetBillingKeepFactory(IPRegionTable *const a2);
  1015. void __cdecl Packets::BLRetKickALLFactory::~BLRetKickALLFactory(_DWORD *a2);
  1016. void __cdecl Packets::BLRetKickALLFactory::~BLRetKickALLFactory(IPRegionTable *const a2);
  1017. void __cdecl Packets::BLRetRegPassPortFactory::~BLRetRegPassPortFactory(_DWORD *a2);
  1018. void __cdecl Packets::BLRetRegPassPortFactory::~BLRetRegPassPortFactory(IPRegionTable *const a2);
  1019. void __cdecl Packets::BLRetPrizeFactory::~BLRetPrizeFactory(_DWORD *a2);
  1020. void __cdecl Packets::BLRetPrizeFactory::~BLRetPrizeFactory(IPRegionTable *const a2);
  1021. void __cdecl Packets::BLRetAskPointFactory::~BLRetAskPointFactory(_DWORD *a2);
  1022. void __cdecl Packets::BLRetAskPointFactory::~BLRetAskPointFactory(IPRegionTable *const a2);
  1023. void __cdecl Packets::BLRetAskBuyFactory::~BLRetAskBuyFactory(_DWORD *a2);
  1024. void __cdecl Packets::BLRetAskBuyFactory::~BLRetAskBuyFactory(IPRegionTable *const a2);
  1025. void __cdecl Packets::LBLCostLogFactory::~LBLCostLogFactory(_DWORD *a2);
  1026. void __cdecl Packets::LBLCostLogFactory::~LBLCostLogFactory(IPRegionTable *const a2);
  1027. void __cdecl Packets::LBLAskNewUserCardFactory::~LBLAskNewUserCardFactory(_DWORD *a2);
  1028. void __cdecl Packets::LBLAskNewUserCardFactory::~LBLAskNewUserCardFactory(IPRegionTable *const a2);
  1029. void __cdecl Packets::LBLNewPrizeFactory::~LBLNewPrizeFactory(_DWORD *a2);
  1030. void __cdecl Packets::LBLNewPrizeFactory::~LBLNewPrizeFactory(IPRegionTable *const a2);
  1031. void __cdecl Packets::LBLNewCheckPrizeFactory::~LBLNewCheckPrizeFactory(_DWORD *a2);
  1032. void __cdecl Packets::LBLNewCheckPrizeFactory::~LBLNewCheckPrizeFactory(IPRegionTable *const a2);
  1033. void __cdecl Packets::LBLAskMigFactory::~LBLAskMigFactory(_DWORD *a2);
  1034. void __cdecl Packets::LBLAskMigFactory::~LBLAskMigFactory(IPRegionTable *const a2);
  1035. void __cdecl Packets::LBLRegNewLicenseFactory::~LBLRegNewLicenseFactory(_DWORD *a2);
  1036. void __cdecl Packets::LBLRegNewLicenseFactory::~LBLRegNewLicenseFactory(IPRegionTable *const a2);
  1037. void __cdecl Packets::LBLCardCheckPrizeFactory::~LBLCardCheckPrizeFactory(_DWORD *a2);
  1038. void __cdecl Packets::LBLCardCheckPrizeFactory::~LBLCardCheckPrizeFactory(IPRegionTable *const a2);
  1039. void __cdecl Packets::LBLOperateAccFactory::~LBLOperateAccFactory(_DWORD *a2);
  1040. void __cdecl Packets::LBLOperateAccFactory::~LBLOperateAccFactory(IPRegionTable *const a2);
  1041. void __cdecl Packets::SChgNamePacketUnit::SChgNamePacketUnit(_DWORD *a2);
  1042. void __cdecl Packets::SChgNamePacketUnit::SChgNamePacketUnit(_DWORD *a2);
  1043. void __cdecl Packets::SChgNamePacketUnit::SetUserNewName(Packets::SChgNamePacketUnit *const this, INT OpType, const CHAR *pName);
  1044. void __cdecl Packets::SChgNamePacketUnit::SetUserOldName(Packets::SChgNamePacketUnit *const this, INT OpType, const CHAR *pName);
  1045. UINT __cdecl Packets::SChgNamePacketUnit::GetPacketSize();
  1046. BOOL __cdecl Packets::SChgNamePacketUnit::ReadStream(Packets::SChgNamePacketUnit *const this, SocketInputStream *const iStream);
  1047. BOOL __cdecl Packets::SChgNamePacketUnit::WriteStream(const Packets::SChgNamePacketUnit *const this, SocketOutputStream *const oStream);
  1048. void __cdecl _tcf_0_16(void *);
  1049. void `global constructor keyed to'Packets::SChgNamePacketUnit::SChgNamePacketUnit(); // idb
  1050. BOOL __cdecl RangeCheckForIndex_Assert(INT nIndex, INT nFrom, INT nTo, const CHAR *szCodeLocation);
  1051. void __cdecl _tcf_0_17(void *);
  1052. void `global constructor keyed to'RangeCheckForIndex_Assert(); // idb
  1053. BOOL __cdecl Packets::BLRetAccCheck::Read(Packets::BLRetAccCheck *const this, SocketBillingInputStream *const iStream);
  1054. BOOL __cdecl Packets::BLRetAccCheck::Write(const Packets::BLRetAccCheck *const this, SocketBillingOutputStream *const oStream);
  1055. UINT __cdecl Packets::BLRetAccCheck::Execute(Packets::BLRetAccCheck *const this, Player *pPlayer);
  1056. void __cdecl _tcf_0_18(void *);
  1057. void `global constructor keyed to'Packets::BLRetAccCheck::Read(); // idb
  1058. BOOL __cdecl BillPacket::CheckPacket(BillPacket *const this);
  1059. void __cdecl Packets::BLRetAccCheck::~BLRetAccCheck(BillPacket *a2);
  1060. void __cdecl Packets::BLRetAccCheck::~BLRetAccCheck(IPRegionTable *a2);
  1061. BPacketID_t __cdecl Packets::BLRetAccCheck::GetPacketID(const Packets::BLRetAccCheck *const this);
  1062. int __cdecl Packets::BLRetAccCheck::GetPacketSize(int a2);
  1063. BOOL __cdecl Packets::BLRetAuth::Read(Packets::BLRetAuth *const this, SocketInputStream *const iStream);
  1064. BOOL __cdecl Packets::BLRetAuth::Write(const Packets::BLRetAuth *const this, SocketOutputStream *const oStream);
  1065. UINT __cdecl Packets::BLRetAuth::Execute(Packets::BLRetAuth *const this, Player *pPlayer);
  1066. const CHAR *__cdecl Packets::BLRetAuth::GetAccount(const Packets::BLRetAuth *const this);
  1067. void __cdecl Packets::BLRetAuth::SetAccount(Packets::BLRetAuth *const this, const CHAR *pAccount);
  1068. LOGIN_RESULT __cdecl Packets::BLRetAuth::GetResult(int a2);
  1069. void __cdecl Packets::BLRetAuth::SetResult(int a3, int a4);
  1070. int __cdecl Packets::BLRetAuth::GetPlayerID(int a2);
  1071. void __cdecl Packets::BLRetAuth::SetPlayerID(int pID, __int16 pIDa);
  1072. GUID_t __cdecl Packets::BLRetAuth::GetPlayerGUID(int a2);
  1073. void __cdecl Packets::BLRetAuth::SetPlayerGUID(int a3, int a4);
  1074. void __cdecl _tcf_0_19(void *);
  1075. void `global constructor keyed to'Packets::BLRetAuth::Read(); // idb
  1076. BOOL __cdecl Packet::CheckPacket(Packet *const this);
  1077. BOOL __cdecl Packet::IsStreamPacket(const Packet *const this);
  1078. void __cdecl Packets::BLRetAuth::~BLRetAuth(Packet *a2);
  1079. void __cdecl Packets::BLRetAuth::~BLRetAuth(IPRegionTable *a2);
  1080. PacketID_t __cdecl Packets::BLRetAuth::GetPacketID(const Packets::BLRetAuth *const this);
  1081. UINT __cdecl Packets::BLRetAuth::GetPacketSize(const Packets::BLRetAuth *const this);
  1082. BOOL __cdecl Packets::BLRetBillingEnd::Read(Packets::BLRetBillingEnd *const this, SocketBillingInputStream *const iStream);
  1083. BOOL __cdecl Packets::BLRetBillingEnd::Write(const Packets::BLRetBillingEnd *const this, SocketBillingOutputStream *const oStream);
  1084. UINT __cdecl Packets::BLRetBillingEnd::Execute(Packets::BLRetBillingEnd *const this, Player *pPlayer);
  1085. void __cdecl _tcf_0_20(void *);
  1086. void `global constructor keyed to'Packets::BLRetBillingEnd::Read(); // idb
  1087. void __cdecl Packets::BLRetBillingEnd::~BLRetBillingEnd(BillPacket *a2);
  1088. void __cdecl Packets::BLRetBillingEnd::~BLRetBillingEnd(IPRegionTable *a2);
  1089. BPacketID_t __cdecl Packets::BLRetBillingEnd::GetPacketID(const Packets::BLRetBillingEnd *const this);
  1090. int __cdecl Packets::BLRetBillingEnd::GetPacketSize(int a2);
  1091. BOOL __cdecl Packets::BLRetBillingKeep::Read(Packets::BLRetBillingKeep *const this, SocketBillingInputStream *const iStream);
  1092. BOOL __cdecl Packets::BLRetBillingKeep::Write(const Packets::BLRetBillingKeep *const this, SocketBillingOutputStream *const oStream);
  1093. UINT __cdecl Packets::BLRetBillingKeep::Execute(Packets::BLRetBillingKeep *const this, Player *pPlayer);
  1094. void __cdecl _tcf_0_21(void *);
  1095. void `global constructor keyed to'Packets::BLRetBillingKeep::Read(); // idb
  1096. void __cdecl Packets::BLRetBillingKeep::~BLRetBillingKeep(BillPacket *a2);
  1097. void __cdecl Packets::BLRetBillingKeep::~BLRetBillingKeep(IPRegionTable *a2);
  1098. BPacketID_t __cdecl Packets::BLRetBillingKeep::GetPacketID(const Packets::BLRetBillingKeep *const this);
  1099. int __cdecl Packets::BLRetBillingKeep::GetPacketSize(int a2);
  1100. BOOL __cdecl Packets::BLRetBillingStart::Read(Packets::BLRetBillingStart *const this, SocketBillingInputStream *const iStream);
  1101. BOOL __cdecl Packets::BLRetBillingStart::Write(const Packets::BLRetBillingStart *const this, SocketBillingOutputStream *const oStream);
  1102. UINT __cdecl Packets::BLRetBillingStart::Execute(Packets::BLRetBillingStart *const this, Player *pPlayer);
  1103. void __cdecl _tcf_0_22(void *);
  1104. void `global constructor keyed to'Packets::BLRetBillingStart::Read(); // idb
  1105. void __cdecl Packets::BLRetBillingStart::~BLRetBillingStart(BillPacket *a2);
  1106. void __cdecl Packets::BLRetBillingStart::~BLRetBillingStart(IPRegionTable *a2);
  1107. BPacketID_t __cdecl Packets::BLRetBillingStart::GetPacketID(const Packets::BLRetBillingStart *const this);
  1108. UINT __cdecl Packets::BLRetBillingStart::GetPacketSize(const Packets::BLRetBillingStart *const this);
  1109. BOOL __cdecl Packets::BLRetConnect::Read(Packets::BLRetConnect *const this, SocketBillingInputStream *const iStream);
  1110. BOOL __cdecl Packets::BLRetConnect::Write(const Packets::BLRetConnect *const this, SocketBillingOutputStream *const oStream);
  1111. UINT __cdecl Packets::BLRetConnect::Execute(Packets::BLRetConnect *const this, Player *pPlayer);
  1112. void __cdecl _tcf_0_23(void *);
  1113. void `global constructor keyed to'Packets::BLRetConnect::Read(); // idb
  1114. void __cdecl Packets::BLRetConnect::~BLRetConnect(BillPacket *a2);
  1115. void __cdecl Packets::BLRetConnect::~BLRetConnect(IPRegionTable *a2);
  1116. BPacketID_t __cdecl Packets::BLRetConnect::GetPacketID(const Packets::BLRetConnect *const this);
  1117. UINT __cdecl Packets::BLRetConnect::GetPacketSize(const Packets::BLRetConnect *const this);
  1118. BOOL __cdecl Packets::BLRetKeepLive::Read(Packets::BLRetKeepLive *const this, SocketBillingInputStream *const iStream);
  1119. BOOL __cdecl Packets::BLRetKeepLive::Write(const Packets::BLRetKeepLive *const this, SocketBillingOutputStream *const oStream);
  1120. UINT __cdecl Packets::BLRetKeepLive::Execute(Packets::BLRetKeepLive *const this, Player *pPlayer);
  1121. void __cdecl _tcf_0_24(void *);
  1122. void `global constructor keyed to'Packets::BLRetKeepLive::Read(); // idb
  1123. void __cdecl Packets::BLRetKeepLive::~BLRetKeepLive(BillPacket *a2);
  1124. void __cdecl Packets::BLRetKeepLive::~BLRetKeepLive(IPRegionTable *a2);
  1125. BPacketID_t __cdecl Packets::BLRetKeepLive::GetPacketID(const Packets::BLRetKeepLive *const this);
  1126. UINT __cdecl Packets::BLRetKeepLive::GetPacketSize(const Packets::BLRetKeepLive *const this);
  1127. BOOL __cdecl Packets::BLRetKickALL::Read(Packets::BLRetKickALL *const this, SocketBillingInputStream *const iStream);
  1128. BOOL __cdecl Packets::BLRetKickALL::Write(const Packets::BLRetKickALL *const this, SocketBillingOutputStream *const oStream);
  1129. UINT __cdecl Packets::BLRetKickALL::Execute(Packets::BLRetKickALL *const this, Player *pPlayer);
  1130. void __cdecl _tcf_0_25(void *);
  1131. void `global constructor keyed to'Packets::BLRetKickALL::Read(); // idb
  1132. void __cdecl Packets::BLRetKickALL::~BLRetKickALL(BillPacket *a2);
  1133. void __cdecl Packets::BLRetKickALL::~BLRetKickALL(IPRegionTable *a2);
  1134. BPacketID_t __cdecl Packets::BLRetKickALL::GetPacketID(const Packets::BLRetKickALL *const this);
  1135. UINT __cdecl Packets::BLRetKickALL::GetPacketSize(const Packets::BLRetKickALL *const this);
  1136. BOOL __cdecl Packets::BLRetRegPassPort::Read(Packets::BLRetRegPassPort *const this, SocketBillingInputStream *const iStream);
  1137. BOOL __cdecl Packets::BLRetRegPassPort::Write(const Packets::BLRetRegPassPort *const this, SocketBillingOutputStream *const oStream);
  1138. UINT __cdecl Packets::BLRetRegPassPort::Execute(Packets::BLRetRegPassPort *const this, Player *pPlayer);
  1139. void __cdecl _tcf_0_26(void *);
  1140. void `global constructor keyed to'Packets::BLRetRegPassPort::Read(); // idb
  1141. void __cdecl Packets::BLRetRegPassPort::~BLRetRegPassPort(BillPacket *a2);
  1142. void __cdecl Packets::BLRetRegPassPort::~BLRetRegPassPort(IPRegionTable *a2);
  1143. BPacketID_t __cdecl Packets::BLRetRegPassPort::GetPacketID(const Packets::BLRetRegPassPort *const this);
  1144. int __cdecl Packets::BLRetRegPassPort::GetPacketSize(int a2);
  1145. BOOL __cdecl Packets::CLAskCharList::Read(Packets::CLAskCharList *const this, SocketInputStream *const iStream);
  1146. BOOL __cdecl Packets::CLAskCharList::Write(const Packets::CLAskCharList *const this, SocketOutputStream *const oStream);
  1147. UINT __cdecl Packets::CLAskCharList::Execute(Packets::CLAskCharList *const this, Player *pPlayer);
  1148. const CHAR *__cdecl Packets::CLAskCharList::GetAccount(const Packets::CLAskCharList *const this);
  1149. void __cdecl Packets::CLAskCharList::SetAccount(Packets::CLAskCharList *const this, const CHAR *pAccount);
  1150. void __cdecl _tcf_0_27(void *);
  1151. void `global constructor keyed to'Packets::CLAskCharList::Read(); // idb
  1152. void __cdecl Packets::CLAskCharList::~CLAskCharList(Packet *a2);
  1153. void __cdecl Packets::CLAskCharList::~CLAskCharList(IPRegionTable *a2);
  1154. PacketID_t __cdecl Packets::CLAskCharList::GetPacketID(const Packets::CLAskCharList *const this);
  1155. UINT __cdecl Packets::CLAskCharList::GetPacketSize(const Packets::CLAskCharList *const this);
  1156. BOOL __cdecl Packets::CLAskCharLogin::Read(Packets::CLAskCharLogin *const this, SocketInputStream *const iStream);
  1157. BOOL __cdecl Packets::CLAskCharLogin::Write(const Packets::CLAskCharLogin *const this, SocketOutputStream *const oStream);
  1158. UINT __cdecl Packets::CLAskCharLogin::Execute(Packets::CLAskCharLogin *const this, Player *pPlayer);
  1159. GUID_t __cdecl Packets::CLAskCharLogin::GetCharGuid(int a2);
  1160. void __cdecl Packets::CLAskCharLogin::SetCharGuid(int a3, int a4);
  1161. void __cdecl _tcf_0_28(void *);
  1162. void `global constructor keyed to'Packets::CLAskCharLogin::Read(); // idb
  1163. void __cdecl Packets::CLAskCharLogin::~CLAskCharLogin(Packet *a2);
  1164. void __cdecl Packets::CLAskCharLogin::~CLAskCharLogin(IPRegionTable *a2);
  1165. PacketID_t __cdecl Packets::CLAskCharLogin::GetPacketID(const Packets::CLAskCharLogin *const this);
  1166. UINT __cdecl Packets::CLAskCharLogin::GetPacketSize(const Packets::CLAskCharLogin *const this);
  1167. BOOL __cdecl Packets::CLAskCreateChar::Read(Packets::CLAskCreateChar *const this, SocketInputStream *const iStream);
  1168. BOOL __cdecl Packets::CLAskCreateChar::Write(const Packets::CLAskCreateChar *const this, SocketOutputStream *const oStream);
  1169. UINT __cdecl Packets::CLAskCreateChar::Execute(Packets::CLAskCreateChar *const this, Player *pPlayer);
  1170. const CHAR *__cdecl Packets::CLAskCreateChar::GetAccount(const Packets::CLAskCreateChar *const this);
  1171. void __cdecl Packets::CLAskCreateChar::SetAccount(Packets::CLAskCreateChar *const this, const CHAR *pAccount);
  1172. void __cdecl _tcf_0_29(void *);
  1173. void `global constructor keyed to'Packets::CLAskCreateChar::Read(); // idb
  1174. void __cdecl Packets::CLAskCreateChar::~CLAskCreateChar(Packet *a2);
  1175. void __cdecl Packets::CLAskCreateChar::~CLAskCreateChar(IPRegionTable *a2);
  1176. PacketID_t __cdecl Packets::CLAskCreateChar::GetPacketID(const Packets::CLAskCreateChar *const this);
  1177. UINT __cdecl Packets::CLAskCreateChar::GetPacketSize(const Packets::CLAskCreateChar *const this);
  1178. BOOL __cdecl Packets::CLAskDeleteChar::Read(Packets::CLAskDeleteChar *const this, SocketInputStream *const iStream);
  1179. BOOL __cdecl Packets::CLAskDeleteChar::Write(const Packets::CLAskDeleteChar *const this, SocketOutputStream *const oStream);
  1180. UINT __cdecl Packets::CLAskDeleteChar::Execute(Packets::CLAskDeleteChar *const this, Player *pPlayer);
  1181. const CHAR *__cdecl Packets::CLAskDeleteChar::GetAccount(const Packets::CLAskDeleteChar *const this);
  1182. void __cdecl Packets::CLAskDeleteChar::SetAccount(Packets::CLAskDeleteChar *const this, const CHAR *pAccount);
  1183. void __cdecl _tcf_0_30(void *);
  1184. void `global constructor keyed to'Packets::CLAskDeleteChar::Read(); // idb
  1185. void __cdecl Packets::CLAskDeleteChar::~CLAskDeleteChar(Packet *a2);
  1186. void __cdecl Packets::CLAskDeleteChar::~CLAskDeleteChar(IPRegionTable *a2);
  1187. PacketID_t __cdecl Packets::CLAskDeleteChar::GetPacketID(const Packets::CLAskDeleteChar *const this);
  1188. UINT __cdecl Packets::CLAskDeleteChar::GetPacketSize(const Packets::CLAskDeleteChar *const this);
  1189. BOOL __cdecl Packets::CLAskLogin::Read(Packets::CLAskLogin *const this, SocketInputStream *const iStream);
  1190. BOOL __cdecl Packets::CLAskLogin::Write(const Packets::CLAskLogin *const this, SocketOutputStream *const oStream);
  1191. UINT __cdecl Packets::CLAskLogin::Execute(Packets::CLAskLogin *const this, Player *pPlayer);
  1192. const CHAR *__cdecl Packets::CLAskLogin::GetAccount(const Packets::CLAskLogin *const this);
  1193. void __cdecl Packets::CLAskLogin::SetAccount(Packets::CLAskLogin *const this, CHAR *pAccount);
  1194. const CHAR *__cdecl Packets::CLAskLogin::GetPassWord(const Packets::CLAskLogin *const this);
  1195. void __cdecl Packets::CLAskLogin::SetPassWord(Packets::CLAskLogin *const this, CHAR *pPassWord);
  1196. UINT __cdecl Packets::CLAskLogin::GetVersion(int a2);
  1197. void __cdecl Packets::CLAskLogin::SetVersion(int a3, int a4);
  1198. INT __cdecl Packets::CLAskLogin::GetPassWordLength(Packets::CLAskLogin *const this);
  1199. CHAR *__cdecl Packets::CLAskLogin::GetMacAddr(Packets::CLAskLogin *const this);
  1200. void __cdecl Packets::CLAskLogin::SetMacAddr(Packets::CLAskLogin *const this, CHAR *pMacMD5);
  1201. void __fastcall Packets::CLAskLogin::SetHWID(Packets::CLAskLogin *const this, const GL_HWIDSTRUCT *const hwid);
  1202. // GL_HWIDSTRUCT *__userpurge Packets::CLAskLogin::GetHWID@<eax>(GL_HWIDSTRUCT *retstr, const Packets::CLAskLogin *const this);
  1203. void __cdecl Packets::CLAskLogin::SetCPUInformation(Packets::CLAskLogin *const this, CHAR *CPUInformation);
  1204. CHAR *__cdecl Packets::CLAskLogin::GetCPUInformation(Packets::CLAskLogin *const this);
  1205. void __cdecl Packets::CLAskLogin::SetVideoInformation(Packets::CLAskLogin *const this, CHAR *VideoInformation);
  1206. CHAR *__cdecl Packets::CLAskLogin::GetVideoInformation(Packets::CLAskLogin *const this);
  1207. void __cdecl _tcf_0_31(void *);
  1208. void `global constructor keyed to'Packets::CLAskLogin::Read(); // idb
  1209. void __cdecl Packets::CLAskLogin::~CLAskLogin(Packet *a2);
  1210. void __cdecl Packets::CLAskLogin::~CLAskLogin(IPRegionTable *a2);
  1211. PacketID_t __cdecl Packets::CLAskLogin::GetPacketID(const Packets::CLAskLogin *const this);
  1212. UINT __cdecl Packets::CLAskLogin::GetPacketSize(const Packets::CLAskLogin *const this);
  1213. BOOL __cdecl Packets::CLAskLoginCode::Read(Packets::CLAskLoginCode *const this, SocketInputStream *const iStream);
  1214. BOOL __cdecl Packets::CLAskLoginCode::Write(const Packets::CLAskLoginCode *const this, SocketOutputStream *const oStream);
  1215. UINT __cdecl Packets::CLAskLoginCode::Execute(Packets::CLAskLoginCode *const this, Player *pPlayer);
  1216. void __cdecl _tcf_0_32(void *);
  1217. void `global constructor keyed to'Packets::CLAskLoginCode::Read(); // idb
  1218. void __cdecl Packets::CLAskLoginCode::~CLAskLoginCode(Packet *a2);
  1219. void __cdecl Packets::CLAskLoginCode::~CLAskLoginCode(IPRegionTable *a2);
  1220. PacketID_t __cdecl Packets::CLAskLoginCode::GetPacketID(const Packets::CLAskLoginCode *const this);
  1221. int __cdecl Packets::CLAskLoginCode::GetPacketSize(int a2);
  1222. BOOL __cdecl Packets::CLAskRegPassPort::Read(Packets::CLAskRegPassPort *const this, SocketInputStream *const iStream);
  1223. BOOL __cdecl Packets::CLAskRegPassPort::Write(const Packets::CLAskRegPassPort *const this, SocketOutputStream *const oStream);
  1224. UINT __cdecl Packets::CLAskRegPassPort::Execute(Packets::CLAskRegPassPort *const this, Player *pPlayer);
  1225. const CHAR *__cdecl Packets::CLAskRegPassPort::GetAccount(const Packets::CLAskRegPassPort *const this);
  1226. void __cdecl Packets::CLAskRegPassPort::SetAccount(Packets::CLAskRegPassPort *const this, CHAR *pAccount);
  1227. const CHAR *__cdecl Packets::CLAskRegPassPort::GetSuperPw(const Packets::CLAskRegPassPort *const this);
  1228. void __cdecl Packets::CLAskRegPassPort::SetSuperPw(Packets::CLAskRegPassPort *const this, CHAR *pSuperPw);
  1229. const CHAR *__cdecl Packets::CLAskRegPassPort::GetConfirmSuperPw(const Packets::CLAskRegPassPort *const this);
  1230. void __cdecl Packets::CLAskRegPassPort::SetConfirmSuperPw(Packets::CLAskRegPassPort *const this, CHAR *pConfirmSuperPw);
  1231. const CHAR *__cdecl Packets::CLAskRegPassPort::GetPwMd5(const Packets::CLAskRegPassPort *const this);
  1232. void __cdecl Packets::CLAskRegPassPort::SetPwMd5(Packets::CLAskRegPassPort *const this, CHAR *pPwMd5);
  1233. const CHAR *__cdecl Packets::CLAskRegPassPort::GetConfirmPwMd5(const Packets::CLAskRegPassPort *const this);
  1234. void __cdecl Packets::CLAskRegPassPort::SetConfirmPwMd5(Packets::CLAskRegPassPort *const this, CHAR *pConfirmPwMd5);
  1235. const CHAR *__cdecl Packets::CLAskRegPassPort::GetEmail(const Packets::CLAskRegPassPort *const this);
  1236. void __cdecl Packets::CLAskRegPassPort::SetEmail(Packets::CLAskRegPassPort *const this, CHAR *pEmail);
  1237. void __cdecl _tcf_0_33(void *);
  1238. void `global constructor keyed to'Packets::CLAskRegPassPort::Read(); // idb
  1239. void __cdecl Packets::CLAskRegPassPort::~CLAskRegPassPort(Packet *a2);
  1240. void __cdecl Packets::CLAskRegPassPort::~CLAskRegPassPort(IPRegionTable *a2);
  1241. PacketID_t __cdecl Packets::CLAskRegPassPort::GetPacketID(const Packets::CLAskRegPassPort *const this);
  1242. UINT __cdecl Packets::CLAskRegPassPort::GetPacketSize(const Packets::CLAskRegPassPort *const this);
  1243. BOOL __cdecl Packets::CLConnect::Read(Packets::CLConnect *const this, SocketInputStream *const iStream);
  1244. BOOL __cdecl Packets::CLConnect::Write(const Packets::CLConnect *const this, SocketOutputStream *const oStream);
  1245. UINT __cdecl Packets::CLConnect::Execute(Packets::CLConnect *const this, Player *pPlayer);
  1246. void __cdecl _tcf_0_34(void *);
  1247. void `global constructor keyed to'Packets::CLConnect::Read(); // idb
  1248. void __cdecl Packets::CLConnect::~CLConnect(Packet *a2);
  1249. void __cdecl Packets::CLConnect::~CLConnect(IPRegionTable *a2);
  1250. PacketID_t __cdecl Packets::CLConnect::GetPacketID(const Packets::CLConnect *const this);
  1251. UINT __cdecl Packets::CLConnect::GetPacketSize(const Packets::CLConnect *const this);
  1252. BOOL __cdecl Packets::KeyExchange::Read(Packets::KeyExchange *const this, SocketInputStream *const iStream);
  1253. BOOL __cdecl Packets::KeyExchange::Write(const Packets::KeyExchange *const this, SocketOutputStream *const oStream);
  1254. UINT __cdecl Packets::KeyExchange::Execute(Packets::KeyExchange *const this, Player *pPlayer);
  1255. void __cdecl Packets::KeyExchange::SetKey(Packets::KeyExchange *const this, const UCHAR *szKey, INT nKeySize);
  1256. void __cdecl _tcf_0_35(void *);
  1257. void `global constructor keyed to'Packets::KeyExchange::Read(); // idb
  1258. void __cdecl Packets::KeyExchange::~KeyExchange(Packet *a2);
  1259. void __cdecl Packets::KeyExchange::~KeyExchange(IPRegionTable *a2);
  1260. PacketID_t __cdecl Packets::KeyExchange::GetPacketID(const Packets::KeyExchange *const this);
  1261. int __cdecl Packets::KeyExchange::GetPacketSize(int a2);
  1262. BOOL __cdecl Packets::LBAccCheck::Read(Packets::LBAccCheck *const this, SocketBillingInputStream *const iStream);
  1263. BOOL __cdecl Packets::LBAccCheck::Write(const Packets::LBAccCheck *const this, SocketBillingOutputStream *const oStream);
  1264. UINT __cdecl Packets::LBAccCheck::Execute(Packets::LBAccCheck *const this, Player *pPlayer);
  1265. void __cdecl _tcf_0_36(void *);
  1266. void `global constructor keyed to'Packets::LBAccCheck::Read(); // idb
  1267. void __cdecl Packets::LBAccCheck::~LBAccCheck(BillPacket *a2);
  1268. void __cdecl Packets::LBAccCheck::~LBAccCheck(IPRegionTable *a2);
  1269. BPacketID_t __cdecl Packets::LBAccCheck::GetPacketID(const Packets::LBAccCheck *const this);
  1270. UINT __fastcall Packets::LBAccCheck::GetPacketSize(const Packets::LBAccCheck *const this);
  1271. BOOL __cdecl Packets::LBAskAuth::Read(Packets::LBAskAuth *const this, SocketInputStream *const iStream);
  1272. BOOL __cdecl Packets::LBAskAuth::Write(const Packets::LBAskAuth *const this, SocketOutputStream *const oStream);
  1273. UINT __cdecl Packets::LBAskAuth::Execute(Packets::LBAskAuth *const this, Player *pPlayer);
  1274. const CHAR *__cdecl Packets::LBAskAuth::GetAccount(const Packets::LBAskAuth *const this);
  1275. void __cdecl Packets::LBAskAuth::SetAccount(Packets::LBAskAuth *const this, const CHAR *pAccount);
  1276. const CHAR *__cdecl Packets::LBAskAuth::GetPassWord(const Packets::LBAskAuth *const this);
  1277. void __cdecl Packets::LBAskAuth::SetPassWord(Packets::LBAskAuth *const this, const CHAR *pPassWord);
  1278. int __cdecl Packets::LBAskAuth::GetPlayerID(int a2);
  1279. void __cdecl Packets::LBAskAuth::SetPlayerID(int pID, __int16 pIDa);
  1280. void __cdecl Packets::LBAskAuth::SetIPAddr(Packets::LBAskAuth *const this, const CHAR *pIP);
  1281. const CHAR *__cdecl Packets::LBAskAuth::GetIPAddr(const Packets::LBAskAuth *const this);
  1282. const CHAR *__cdecl Packets::LBAskAuth::GetMacAddr(const Packets::LBAskAuth *const this);
  1283. void __cdecl Packets::LBAskAuth::SetMacAddr(Packets::LBAskAuth *const this, CHAR *pMacMD5);
  1284. const CHAR *__cdecl Packets::LBAskAuth::GetHWIDInfo(const Packets::LBAskAuth *const this);
  1285. void __cdecl Packets::LBAskAuth::SetHWIDInfo(Packets::LBAskAuth *const this, CHAR *pHWIDInfo);
  1286. void __cdecl _tcf_0_37(void *);
  1287. void `global constructor keyed to'Packets::LBAskAuth::Read(); // idb
  1288. void __cdecl Packets::LBAskAuth::~LBAskAuth(Packet *a2);
  1289. void __cdecl Packets::LBAskAuth::~LBAskAuth(IPRegionTable *a2);
  1290. PacketID_t __cdecl Packets::LBAskAuth::GetPacketID(const Packets::LBAskAuth *const this);
  1291. UINT __cdecl Packets::LBAskAuth::GetPacketSize(const Packets::LBAskAuth *const this);
  1292. BOOL __cdecl Packets::LBAskRegAuth::Read(Packets::LBAskRegAuth *const this, SocketInputStream *const iStream);
  1293. BOOL __cdecl Packets::LBAskRegAuth::Write(const Packets::LBAskRegAuth *const this, SocketOutputStream *const oStream);
  1294. UINT __cdecl Packets::LBAskRegAuth::Execute(Packets::LBAskRegAuth *const this, Player *pPlayer);
  1295. const CHAR *__cdecl Packets::LBAskRegAuth::GetAccount(const Packets::LBAskRegAuth *const this);
  1296. void __cdecl Packets::LBAskRegAuth::SetAccount(Packets::LBAskRegAuth *const this, const CHAR *pAccount);
  1297. const CHAR *__cdecl Packets::LBAskRegAuth::GetPassWord(const Packets::LBAskRegAuth *const this);
  1298. void __cdecl Packets::LBAskRegAuth::SetPassWord(Packets::LBAskRegAuth *const this, const CHAR *pPassWord);
  1299. int __cdecl Packets::LBAskRegAuth::GetPlayerID(int a2);
  1300. void __cdecl Packets::LBAskRegAuth::SetPlayerID(int pID, __int16 pIDa);
  1301. const CHAR *__cdecl Packets::LBAskRegAuth::GetSuperPassWord(const Packets::LBAskRegAuth *const this);
  1302. void __cdecl Packets::LBAskRegAuth::SetSuperPassWord(Packets::LBAskRegAuth *const this, const CHAR *pSuperPassWord);
  1303. const CHAR *__cdecl Packets::LBAskRegAuth::GetIP(const Packets::LBAskRegAuth *const this);
  1304. void __cdecl Packets::LBAskRegAuth::SetIP(Packets::LBAskRegAuth *const this, const CHAR *pIP);
  1305. const CHAR *__cdecl Packets::LBAskRegAuth::GetEmail(const Packets::LBAskRegAuth *const this);
  1306. void __cdecl Packets::LBAskRegAuth::SetEmail(Packets::LBAskRegAuth *const this, const CHAR *pEmail);
  1307. void __cdecl _tcf_0_38(void *);
  1308. void `global constructor keyed to'Packets::LBAskRegAuth::Read(); // idb
  1309. void __cdecl Packets::LBAskRegAuth::~LBAskRegAuth(Packet *a2);
  1310. void __cdecl Packets::LBAskRegAuth::~LBAskRegAuth(IPRegionTable *a2);
  1311. PacketID_t __cdecl Packets::LBAskRegAuth::GetPacketID(const Packets::LBAskRegAuth *const this);
  1312. UINT __cdecl Packets::LBAskRegAuth::GetPacketSize(const Packets::LBAskRegAuth *const this);
  1313. BOOL __cdecl Packets::LBBillingEnd::Read(Packets::LBBillingEnd *const this, SocketBillingInputStream *const iStream);
  1314. BOOL __cdecl Packets::LBBillingEnd::Write(const Packets::LBBillingEnd *const this, SocketBillingOutputStream *const oStream);
  1315. UINT __cdecl Packets::LBBillingEnd::Execute(Packets::LBBillingEnd *const this, Player *pPlayer);
  1316. void __cdecl _tcf_0_39(void *);
  1317. void `global constructor keyed to'Packets::LBBillingEnd::Read(); // idb
  1318. void __cdecl Packets::LBBillingEnd::~LBBillingEnd(BillPacket *a2);
  1319. void __cdecl Packets::LBBillingEnd::~LBBillingEnd(IPRegionTable *a2);
  1320. BPacketID_t __cdecl Packets::LBBillingEnd::GetPacketID(const Packets::LBBillingEnd *const this);
  1321. int __cdecl Packets::LBBillingEnd::GetPacketSize(int a2);
  1322. BOOL __cdecl Packets::LBBillingKeep::Read(Packets::LBBillingKeep *const this, SocketBillingInputStream *const iStream);
  1323. BOOL __cdecl Packets::LBBillingKeep::Write(const Packets::LBBillingKeep *const this, SocketBillingOutputStream *const oStream);
  1324. UINT __cdecl Packets::LBBillingKeep::Execute(Packets::LBBillingKeep *const this, Player *pPlayer);
  1325. void __cdecl _tcf_0_40(void *);
  1326. void `global constructor keyed to'Packets::LBBillingKeep::Read(); // idb
  1327. void __cdecl Packets::LBBillingKeep::~LBBillingKeep(BillPacket *a2);
  1328. void __cdecl Packets::LBBillingKeep::~LBBillingKeep(IPRegionTable *a2);
  1329. BPacketID_t __cdecl Packets::LBBillingKeep::GetPacketID(const Packets::LBBillingKeep *const this);
  1330. int __cdecl Packets::LBBillingKeep::GetPacketSize(int a2);
  1331. BOOL __cdecl Packets::LBBillingStart::Read(Packets::LBBillingStart *const this, SocketBillingInputStream *const iStream);
  1332. BOOL __cdecl Packets::LBBillingStart::Write(const Packets::LBBillingStart *const this, SocketBillingOutputStream *const oStream);
  1333. UINT __cdecl Packets::LBBillingStart::Execute(Packets::LBBillingStart *const this, Player *pPlayer);
  1334. void __cdecl _tcf_0_41(void *);
  1335. void `global constructor keyed to'Packets::LBBillingStart::Read(); // idb
  1336. void __cdecl Packets::LBBillingStart::~LBBillingStart(BillPacket *a2);
  1337. void __cdecl Packets::LBBillingStart::~LBBillingStart(IPRegionTable *a2);
  1338. BPacketID_t __cdecl Packets::LBBillingStart::GetPacketID(const Packets::LBBillingStart *const this);
  1339. int __cdecl Packets::LBBillingStart::GetPacketSize(int a2);
  1340. BOOL __cdecl Packets::LBConnect::Read(Packets::LBConnect *const this, SocketBillingInputStream *const iStream);
  1341. BOOL __cdecl Packets::LBConnect::Write(const Packets::LBConnect *const this, SocketBillingOutputStream *const oStream);
  1342. UINT __cdecl Packets::LBConnect::Execute(Packets::LBConnect *const this, Player *pPlayer);
  1343. void __cdecl _tcf_0_42(void *);
  1344. void `global constructor keyed to'Packets::LBConnect::Read(); // idb
  1345. void __cdecl Packets::LBConnect::~LBConnect(BillPacket *a2);
  1346. void __cdecl Packets::LBConnect::~LBConnect(IPRegionTable *a2);
  1347. BPacketID_t __cdecl Packets::LBConnect::GetPacketID(const Packets::LBConnect *const this);
  1348. int __cdecl Packets::LBConnect::GetPacketSize(int a2);
  1349. BOOL __cdecl Packets::LBKeepLive::Read(Packets::LBKeepLive *const this, SocketBillingInputStream *const iStream);
  1350. BOOL __cdecl Packets::LBKeepLive::Write(const Packets::LBKeepLive *const this, SocketBillingOutputStream *const oStream);
  1351. UINT __cdecl Packets::LBKeepLive::Execute(Packets::LBKeepLive *const this, Player *pPlayer);
  1352. void __cdecl _tcf_0_43(void *);
  1353. void `global constructor keyed to'Packets::LBKeepLive::Read(); // idb
  1354. void __cdecl Packets::LBKeepLive::~LBKeepLive(BillPacket *a2);
  1355. void __cdecl Packets::LBKeepLive::~LBKeepLive(IPRegionTable *a2);
  1356. BPacketID_t __cdecl Packets::LBKeepLive::GetPacketID(const Packets::LBKeepLive *const this);
  1357. UINT __cdecl Packets::LBKeepLive::GetPacketSize(const Packets::LBKeepLive *const this);
  1358. BOOL __cdecl Packets::LBKickAll::Read(Packets::LBKickAll *const this, SocketBillingInputStream *const iStream);
  1359. BOOL __cdecl Packets::LBKickAll::Write(const Packets::LBKickAll *const this, SocketBillingOutputStream *const oStream);
  1360. UINT __cdecl Packets::LBKickAll::Execute(Packets::LBKickAll *const this, Player *pPlayer);
  1361. void __cdecl _tcf_0_44(void *);
  1362. void `global constructor keyed to'Packets::LBKickAll::Read(); // idb
  1363. void __cdecl Packets::LBKickAll::~LBKickAll(BillPacket *a2);
  1364. void __cdecl Packets::LBKickAll::~LBKickAll(IPRegionTable *a2);
  1365. BPacketID_t __cdecl Packets::LBKickAll::GetPacketID(const Packets::LBKickAll *const this);
  1366. UINT __fastcall Packets::LBKickAll::GetPacketSize(const Packets::LBKickAll *const this);
  1367. BOOL __cdecl Packets::LBRegPassPort::Read(Packets::LBRegPassPort *const this, SocketBillingInputStream *const iStream);
  1368. BOOL __cdecl Packets::LBRegPassPort::Write(const Packets::LBRegPassPort *const this, SocketBillingOutputStream *const oStream);
  1369. UINT __cdecl Packets::LBRegPassPort::Execute(Packets::LBRegPassPort *const this, Player *pPlayer);
  1370. void __cdecl _tcf_0_45(void *);
  1371. void `global constructor keyed to'Packets::LBRegPassPort::Read(); // idb
  1372. void __cdecl Packets::LBRegPassPort::~LBRegPassPort(BillPacket *a2);
  1373. void __cdecl Packets::LBRegPassPort::~LBRegPassPort(IPRegionTable *a2);
  1374. BPacketID_t __cdecl Packets::LBRegPassPort::GetPacketID(const Packets::LBRegPassPort *const this);
  1375. UINT __fastcall Packets::LBRegPassPort::GetPacketSize(const Packets::LBRegPassPort *const this);
  1376. BOOL __cdecl Packets::LCRetCharList::Read(Packets::LCRetCharList *const this, SocketInputStream *const iStream);
  1377. BOOL __cdecl Packets::LCRetCharList::Write(const Packets::LCRetCharList *const this, SocketOutputStream *const oStream);
  1378. UINT __cdecl Packets::LCRetCharList::Execute(Packets::LCRetCharList *const this, Player *pPlayer);
  1379. ASKCHARLIST_RESULT __cdecl Packets::LCRetCharList::GetResult(int a2);
  1380. const CHAR *__cdecl Packets::LCRetCharList::GetAccount(const Packets::LCRetCharList *const this);
  1381. void __cdecl Packets::LCRetCharList::SetAccount(Packets::LCRetCharList *const this, const CHAR *pAccount);
  1382. void __cdecl Packets::LCRetCharList::SetResult(int a3, int a4);
  1383. void __cdecl _tcf_0_46(void *);
  1384. void `global constructor keyed to'Packets::LCRetCharList::Read(); // idb
  1385. void __cdecl Packets::LCRetCharList::~LCRetCharList(Packet *a2);
  1386. void __cdecl Packets::LCRetCharList::~LCRetCharList(IPRegionTable *a2);
  1387. PacketID_t __cdecl Packets::LCRetCharList::GetPacketID(const Packets::LCRetCharList *const this);
  1388. UINT __cdecl Packets::LCRetCharList::GetPacketSize(const Packets::LCRetCharList *const this);
  1389. BOOL __cdecl Packets::LCRetCharLogin::Read(Packets::LCRetCharLogin *const this, SocketInputStream *const iStream);
  1390. BOOL __cdecl Packets::LCRetCharLogin::Write(const Packets::LCRetCharLogin *const this, SocketOutputStream *const oStream);
  1391. UINT __cdecl Packets::LCRetCharLogin::Execute(Packets::LCRetCharLogin *const this, Player *pPlayer);
  1392. void __cdecl _tcf_0_47(void *);
  1393. void `global constructor keyed to'Packets::LCRetCharLogin::Read(); // idb
  1394. void __cdecl Packets::LCRetCharLogin::~LCRetCharLogin(Packet *a2);
  1395. void __cdecl Packets::LCRetCharLogin::~LCRetCharLogin(IPRegionTable *a2);
  1396. PacketID_t __cdecl Packets::LCRetCharLogin::GetPacketID(const Packets::LCRetCharLogin *const this);
  1397. UINT __cdecl Packets::LCRetCharLogin::GetPacketSize(const Packets::LCRetCharLogin *const this);
  1398. BOOL __cdecl Packets::LCRetConnect::Read(Packets::LCRetConnect *const this, SocketInputStream *const iStream);
  1399. BOOL __cdecl Packets::LCRetConnect::Write(const Packets::LCRetConnect *const this, SocketOutputStream *const oStream);
  1400. UINT __cdecl Packets::LCRetConnect::Execute(Packets::LCRetConnect *const this, Player *pPlayer);
  1401. void __cdecl _tcf_0_48(void *);
  1402. void `global constructor keyed to'Packets::LCRetConnect::Read(); // idb
  1403. void __cdecl Packets::LCRetConnect::~LCRetConnect(Packet *a2);
  1404. void __cdecl Packets::LCRetConnect::~LCRetConnect(IPRegionTable *a2);
  1405. PacketID_t __cdecl Packets::LCRetConnect::GetPacketID(const Packets::LCRetConnect *const this);
  1406. UINT __cdecl Packets::LCRetConnect::GetPacketSize(const Packets::LCRetConnect *const this);
  1407. BOOL __cdecl Packets::LCRetCreateChar::Read(Packets::LCRetCreateChar *const this, SocketInputStream *const iStream);
  1408. BOOL __cdecl Packets::LCRetCreateChar::Write(const Packets::LCRetCreateChar *const this, SocketOutputStream *const oStream);
  1409. UINT __cdecl Packets::LCRetCreateChar::Execute(Packets::LCRetCreateChar *const this, Player *pPlayer);
  1410. ASKCREATECHAR_RESULT __cdecl Packets::LCRetCreateChar::GetResult(int a2);
  1411. void __cdecl Packets::LCRetCreateChar::SetResult(int a3, int a4);
  1412. const CHAR *__cdecl Packets::LCRetCreateChar::GetAccount(const Packets::LCRetCreateChar *const this);
  1413. void __cdecl Packets::LCRetCreateChar::SetAccount(Packets::LCRetCreateChar *const this, const CHAR *pAccount);
  1414. void __cdecl _tcf_0_49(void *);
  1415. void `global constructor keyed to'Packets::LCRetCreateChar::Read(); // idb
  1416. void __cdecl Packets::LCRetCreateChar::~LCRetCreateChar(Packet *a2);
  1417. void __cdecl Packets::LCRetCreateChar::~LCRetCreateChar(IPRegionTable *a2);
  1418. PacketID_t __cdecl Packets::LCRetCreateChar::GetPacketID(const Packets::LCRetCreateChar *const this);
  1419. UINT __cdecl Packets::LCRetCreateChar::GetPacketSize(const Packets::LCRetCreateChar *const this);
  1420. BOOL __cdecl Packets::LCRetDeleteChar::Read(Packets::LCRetDeleteChar *const this, SocketInputStream *const iStream);
  1421. BOOL __cdecl Packets::LCRetDeleteChar::Write(const Packets::LCRetDeleteChar *const this, SocketOutputStream *const oStream);
  1422. UINT __cdecl Packets::LCRetDeleteChar::Execute(Packets::LCRetDeleteChar *const this, Player *pPlayer);
  1423. const CHAR *__cdecl Packets::LCRetDeleteChar::GetAccount(const Packets::LCRetDeleteChar *const this);
  1424. void __cdecl Packets::LCRetDeleteChar::SetAccount(Packets::LCRetDeleteChar *const this, const CHAR *pAccount);
  1425. ASKDELETECHAR_RESULT __cdecl Packets::LCRetDeleteChar::GetResult(int a2);
  1426. void __cdecl Packets::LCRetDeleteChar::SetResult(int a3, int a4);
  1427. void __cdecl _tcf_0_50(void *);
  1428. void `global constructor keyed to'Packets::LCRetDeleteChar::Read(); // idb
  1429. void __cdecl Packets::LCRetDeleteChar::~LCRetDeleteChar(Packet *a2);
  1430. void __cdecl Packets::LCRetDeleteChar::~LCRetDeleteChar(IPRegionTable *a2);
  1431. PacketID_t __cdecl Packets::LCRetDeleteChar::GetPacketID(const Packets::LCRetDeleteChar *const this);
  1432. UINT __cdecl Packets::LCRetDeleteChar::GetPacketSize(const Packets::LCRetDeleteChar *const this);
  1433. BOOL __cdecl Packets::LCRetLogin::Read(Packets::LCRetLogin *const this, SocketInputStream *const iStream);
  1434. BOOL __cdecl Packets::LCRetLogin::Write(const Packets::LCRetLogin *const this, SocketOutputStream *const oStream);
  1435. UINT __cdecl Packets::LCRetLogin::Execute(Packets::LCRetLogin *const this, Player *pPlayer);
  1436. const CHAR *__cdecl Packets::LCRetLogin::GetAccount(const Packets::LCRetLogin *const this);
  1437. void __cdecl Packets::LCRetLogin::SetAccount(Packets::LCRetLogin *const this, const CHAR *pAccount);
  1438. LOGIN_RESULT __cdecl Packets::LCRetLogin::GetResult(int a2);
  1439. void __cdecl Packets::LCRetLogin::SetResult(int a3, int a4);
  1440. void __cdecl _tcf_0_51(void *);
  1441. void `global constructor keyed to'Packets::LCRetLogin::Read(); // idb
  1442. void __cdecl Packets::LCRetLogin::~LCRetLogin(Packet *a2);
  1443. void __cdecl Packets::LCRetLogin::~LCRetLogin(IPRegionTable *a2);
  1444. PacketID_t __cdecl Packets::LCRetLogin::GetPacketID(const Packets::LCRetLogin *const this);
  1445. UINT __cdecl Packets::LCRetLogin::GetPacketSize(const Packets::LCRetLogin *const this);
  1446. BOOL __cdecl Packets::LCRetLoginCode::Read(Packets::LCRetLoginCode *const this, SocketInputStream *const iStream);
  1447. BOOL __cdecl Packets::LCRetLoginCode::Write(const Packets::LCRetLoginCode *const this, SocketOutputStream *const oStream);
  1448. UINT __cdecl Packets::LCRetLoginCode::Execute(Packets::LCRetLoginCode *const this, Player *pPlayer);
  1449. void __cdecl _tcf_0_52(void *);
  1450. void `global constructor keyed to'Packets::LCRetLoginCode::Read(); // idb
  1451. void __cdecl Packets::LCRetLoginCode::~LCRetLoginCode(Packet *a2);
  1452. void __cdecl Packets::LCRetLoginCode::~LCRetLoginCode(IPRegionTable *a2);
  1453. PacketID_t __cdecl Packets::LCRetLoginCode::GetPacketID(const Packets::LCRetLoginCode *const this);
  1454. UINT __cdecl Packets::LCRetLoginCode::GetPacketSize(const Packets::LCRetLoginCode *const this);
  1455. BOOL __cdecl Packets::LCStatus::Read(Packets::LCStatus *const this, SocketInputStream *const iStream);
  1456. BOOL __cdecl Packets::LCStatus::Write(const Packets::LCStatus *const this, SocketOutputStream *const oStream);
  1457. UINT __cdecl Packets::LCStatus::Execute(Packets::LCStatus *const this, Player *pPlayer);
  1458. void __cdecl _tcf_0_53(void *);
  1459. void `global constructor keyed to'Packets::LCStatus::Read(); // idb
  1460. void __cdecl Packets::LCStatus::~LCStatus(Packet *a2);
  1461. void __cdecl Packets::LCStatus::~LCStatus(IPRegionTable *a2);
  1462. PacketID_t __cdecl Packets::LCStatus::GetPacketID(const Packets::LCStatus *const this);
  1463. UINT __cdecl Packets::LCStatus::GetPacketSize(const Packets::LCStatus *const this);
  1464. BOOL __cdecl Packets::LWAskCharLogin::Read(Packets::LWAskCharLogin *const this, SocketInputStream *const iStream);
  1465. BOOL __cdecl Packets::LWAskCharLogin::Write(const Packets::LWAskCharLogin *const this, SocketOutputStream *const oStream);
  1466. UINT __cdecl Packets::LWAskCharLogin::Execute(Packets::LWAskCharLogin *const this, Player *pPlayer);
  1467. const CHAR *__cdecl Packets::LWAskCharLogin::GetAccount(const Packets::LWAskCharLogin *const this);
  1468. void __cdecl Packets::LWAskCharLogin::SetAccount(Packets::LWAskCharLogin *const this, const CHAR *pAccount);
  1469. const CHAR *__cdecl Packets::LWAskCharLogin::GetHost(const Packets::LWAskCharLogin *const this);
  1470. void __cdecl Packets::LWAskCharLogin::SetHost(Packets::LWAskCharLogin *const this, const CHAR *pHost);
  1471. void __cdecl _tcf_0_54(void *);
  1472. void `global constructor keyed to'Packets::LWAskCharLogin::Read(); // idb
  1473. void __cdecl Packets::LWAskCharLogin::~LWAskCharLogin(Packets::LWAskCharLogin *const this);
  1474. void __cdecl Packets::LWAskCharLogin::~LWAskCharLogin(Packets::LWAskCharLogin *const this);
  1475. PacketID_t __cdecl Packets::LWAskCharLogin::GetPacketID(const Packets::LWAskCharLogin *const this);
  1476. UINT __cdecl Packets::LWAskCharLogin::GetPacketSize(const Packets::LWAskCharLogin *const this);
  1477. BOOL __cdecl Packets::LWRetBillingEnd::Read(Packets::LWRetBillingEnd *const this, SocketInputStream *const iStream);
  1478. BOOL __cdecl Packets::LWRetBillingEnd::Write(const Packets::LWRetBillingEnd *const this, SocketOutputStream *const oStream);
  1479. UINT __cdecl Packets::LWRetBillingEnd::Execute(Packets::LWRetBillingEnd *const this, Player *pPlayer);
  1480. void __cdecl _tcf_0_55(void *);
  1481. void `global constructor keyed to'Packets::LWRetBillingEnd::Read(); // idb
  1482. void __cdecl Packets::LWRetBillingEnd::~LWRetBillingEnd(Packet *a2);
  1483. void __cdecl Packets::LWRetBillingEnd::~LWRetBillingEnd(IPRegionTable *a2);
  1484. PacketID_t __cdecl Packets::LWRetBillingEnd::GetPacketID(const Packets::LWRetBillingEnd *const this);
  1485. UINT __cdecl Packets::LWRetBillingEnd::GetPacketSize(const Packets::LWRetBillingEnd *const this);
  1486. BOOL __cdecl Packets::LWRetBillingKeep::Read(Packets::LWRetBillingKeep *const this, SocketInputStream *const iStream);
  1487. BOOL __cdecl Packets::LWRetBillingKeep::Write(const Packets::LWRetBillingKeep *const this, SocketOutputStream *const oStream);
  1488. UINT __cdecl Packets::LWRetBillingKeep::Execute(Packets::LWRetBillingKeep *const this, Player *pPlayer);
  1489. void __cdecl _tcf_0_56(void *);
  1490. void `global constructor keyed to'Packets::LWRetBillingKeep::Read(); // idb
  1491. void __cdecl Packets::LWRetBillingKeep::~LWRetBillingKeep(Packet *a2);
  1492. void __cdecl Packets::LWRetBillingKeep::~LWRetBillingKeep(IPRegionTable *a2);
  1493. PacketID_t __cdecl Packets::LWRetBillingKeep::GetPacketID(const Packets::LWRetBillingKeep *const this);
  1494. UINT __cdecl Packets::LWRetBillingKeep::GetPacketSize(const Packets::LWRetBillingKeep *const this);
  1495. BOOL __cdecl Packets::LWRetBillingStart::Read(Packets::LWRetBillingStart *const this, SocketInputStream *const iStream);
  1496. BOOL __cdecl Packets::LWRetBillingStart::Write(const Packets::LWRetBillingStart *const this, SocketOutputStream *const oStream);
  1497. UINT __cdecl Packets::LWRetBillingStart::Execute(Packets::LWRetBillingStart *const this, Player *pPlayer);
  1498. void __cdecl _tcf_0_57(void *);
  1499. void `global constructor keyed to'Packets::LWRetBillingStart::Read(); // idb
  1500. void __cdecl Packets::LWRetBillingStart::~LWRetBillingStart(Packet *a2);
  1501. void __cdecl Packets::LWRetBillingStart::~LWRetBillingStart(IPRegionTable *a2);
  1502. PacketID_t __cdecl Packets::LWRetBillingStart::GetPacketID(const Packets::LWRetBillingStart *const this);
  1503. UINT __cdecl Packets::LWRetBillingStart::GetPacketSize(const Packets::LWRetBillingStart *const this);
  1504. BOOL __cdecl Packets::SSConnect::Read(Packets::SSConnect *const this, SocketInputStream *const iStream);
  1505. BOOL __cdecl Packets::SSConnect::Write(const Packets::SSConnect *const this, SocketOutputStream *const oStream);
  1506. UINT __cdecl Packets::SSConnect::Execute(Packets::SSConnect *const this, Player *pPlayer);
  1507. void __cdecl _tcf_0_58(void *);
  1508. void `global constructor keyed to'Packets::SSConnect::Read(); // idb
  1509. void __cdecl Packets::SSConnect::~SSConnect(Packet *a2);
  1510. void __cdecl Packets::SSConnect::~SSConnect(IPRegionTable *a2);
  1511. PacketID_t __cdecl Packets::SSConnect::GetPacketID(const Packets::SSConnect *const this);
  1512. UINT __cdecl Packets::SSConnect::GetPacketSize(const Packets::SSConnect *const this);
  1513. BOOL __cdecl Packets::SSScenePlayerCount::Read(Packets::SSScenePlayerCount *const this, SocketInputStream *const iStream);
  1514. BOOL __cdecl Packets::SSScenePlayerCount::Write(const Packets::SSScenePlayerCount *const this, SocketOutputStream *const oStream);
  1515. UINT __cdecl Packets::SSScenePlayerCount::Execute(Packets::SSScenePlayerCount *const this, Player *pPlayer);
  1516. void __cdecl _tcf_0_59(void *);
  1517. void `global constructor keyed to'Packets::SSScenePlayerCount::Read(); // idb
  1518. void __cdecl Packets::SSScenePlayerCount::~SSScenePlayerCount(Packet *a2);
  1519. void __cdecl Packets::SSScenePlayerCount::~SSScenePlayerCount(IPRegionTable *a2);
  1520. PacketID_t __cdecl Packets::SSScenePlayerCount::GetPacketID(const Packets::SSScenePlayerCount *const this);
  1521. UINT __cdecl Packets::SSScenePlayerCount::GetPacketSize(const Packets::SSScenePlayerCount *const this);
  1522. BOOL __cdecl Packets::WLBillingEnd::Read(Packets::WLBillingEnd *const this, SocketInputStream *const iStream);
  1523. BOOL __cdecl Packets::WLBillingEnd::Write(const Packets::WLBillingEnd *const this, SocketOutputStream *const oStream);
  1524. UINT __cdecl Packets::WLBillingEnd::Execute(Packets::WLBillingEnd *const this, Player *pPlayer);
  1525. void __cdecl _tcf_0_60(void *);
  1526. void `global constructor keyed to'Packets::WLBillingEnd::Read(); // idb
  1527. void __cdecl Packets::WLBillingEnd::~WLBillingEnd(Packet *a2);
  1528. void __cdecl Packets::WLBillingEnd::~WLBillingEnd(IPRegionTable *a2);
  1529. PacketID_t __cdecl Packets::WLBillingEnd::GetPacketID(const Packets::WLBillingEnd *const this);
  1530. UINT __cdecl Packets::WLBillingEnd::GetPacketSize(const Packets::WLBillingEnd *const this);
  1531. BOOL __cdecl Packets::WLBillingKeep::Read(Packets::WLBillingKeep *const this, SocketInputStream *const iStream);
  1532. BOOL __cdecl Packets::WLBillingKeep::Write(const Packets::WLBillingKeep *const this, SocketOutputStream *const oStream);
  1533. UINT __cdecl Packets::WLBillingKeep::Execute(Packets::WLBillingKeep *const this, Player *pPlayer);
  1534. void __cdecl _tcf_0_61(void *);
  1535. void `global constructor keyed to'Packets::WLBillingKeep::Read(); // idb
  1536. void __cdecl Packets::WLBillingKeep::~WLBillingKeep(Packet *a2);
  1537. void __cdecl Packets::WLBillingKeep::~WLBillingKeep(IPRegionTable *a2);
  1538. PacketID_t __cdecl Packets::WLBillingKeep::GetPacketID(const Packets::WLBillingKeep *const this);
  1539. UINT __cdecl Packets::WLBillingKeep::GetPacketSize(const Packets::WLBillingKeep *const this);
  1540. BOOL __cdecl Packets::WLBillingKick::Read(Packets::WLBillingKick *const this, SocketInputStream *const iStream);
  1541. BOOL __cdecl Packets::WLBillingKick::Write(const Packets::WLBillingKick *const this, SocketOutputStream *const oStream);
  1542. UINT __cdecl Packets::WLBillingKick::Execute(Packets::WLBillingKick *const this, Player *pPlayer);
  1543. void __cdecl _tcf_0_62(void *);
  1544. void `global constructor keyed to'Packets::WLBillingKick::Read(); // idb
  1545. void __cdecl Packets::WLBillingKick::~WLBillingKick(Packet *a2);
  1546. void __cdecl Packets::WLBillingKick::~WLBillingKick(IPRegionTable *a2);
  1547. PacketID_t __cdecl Packets::WLBillingKick::GetPacketID(const Packets::WLBillingKick *const this);
  1548. UINT __cdecl Packets::WLBillingKick::GetPacketSize(const Packets::WLBillingKick *const this);
  1549. BOOL __cdecl Packets::WLBillingStart::Read(Packets::WLBillingStart *const this, SocketInputStream *const iStream);
  1550. BOOL __cdecl Packets::WLBillingStart::Write(const Packets::WLBillingStart *const this, SocketOutputStream *const oStream);
  1551. UINT __cdecl Packets::WLBillingStart::Execute(Packets::WLBillingStart *const this, Player *pPlayer);
  1552. void __cdecl _tcf_0_63(void *);
  1553. void `global constructor keyed to'Packets::WLBillingStart::Read(); // idb
  1554. void __cdecl Packets::WLBillingStart::~WLBillingStart(Packet *a2);
  1555. void __cdecl Packets::WLBillingStart::~WLBillingStart(IPRegionTable *a2);
  1556. PacketID_t __cdecl Packets::WLBillingStart::GetPacketID(const Packets::WLBillingStart *const this);
  1557. UINT __cdecl Packets::WLBillingStart::GetPacketSize(const Packets::WLBillingStart *const this);
  1558. BOOL __cdecl Packets::WLRetCharLogin::Read(Packets::WLRetCharLogin *const this, SocketInputStream *const iStream);
  1559. BOOL __cdecl Packets::WLRetCharLogin::Write(const Packets::WLRetCharLogin *const this, SocketOutputStream *const oStream);
  1560. UINT __cdecl Packets::WLRetCharLogin::Execute(Packets::WLRetCharLogin *const this, Player *pPlayer);
  1561. const CHAR *__cdecl Packets::WLRetCharLogin::GetAccount(const Packets::WLRetCharLogin *const this);
  1562. void __cdecl Packets::WLRetCharLogin::SetAccount(Packets::WLRetCharLogin *const this, const CHAR *pAccount);
  1563. void __cdecl _tcf_0_64(void *);
  1564. void `global constructor keyed to'Packets::WLRetCharLogin::Read(); // idb
  1565. void __cdecl Packets::WLRetCharLogin::~WLRetCharLogin(Packet *a2);
  1566. void __cdecl Packets::WLRetCharLogin::~WLRetCharLogin(IPRegionTable *a2);
  1567. PacketID_t __cdecl Packets::WLRetCharLogin::GetPacketID(const Packets::WLRetCharLogin *const this);
  1568. UINT __cdecl Packets::WLRetCharLogin::GetPacketSize(const Packets::WLRetCharLogin *const this);
  1569. BOOL __cdecl Packets::BLRetAskBuy::Read(Packets::BLRetAskBuy *const this, SocketBillingInputStream *const iStream);
  1570. BOOL __cdecl Packets::BLRetAskBuy::Write(const Packets::BLRetAskBuy *const this, SocketBillingOutputStream *const oStream);
  1571. UINT __cdecl Packets::BLRetAskBuy::Execute(Packets::BLRetAskBuy *const this, Player *pPlayer);
  1572. void __cdecl _tcf_0_65(void *);
  1573. void `global constructor keyed to'Packets::BLRetAskBuy::Read(); // idb
  1574. void __cdecl Packets::BLRetAskBuy::~BLRetAskBuy(BillPacket *a2);
  1575. void __cdecl Packets::BLRetAskBuy::~BLRetAskBuy(IPRegionTable *a2);
  1576. BPacketID_t __cdecl Packets::BLRetAskBuy::GetPacketID(const Packets::BLRetAskBuy *const this);
  1577. UINT __cdecl Packets::BLRetAskBuy::GetPacketSize(const Packets::BLRetAskBuy *const this);
  1578. BOOL __cdecl Packets::BLRetAskPoint::Read(Packets::BLRetAskPoint *const this, SocketBillingInputStream *const iStream);
  1579. BOOL __cdecl Packets::BLRetAskPoint::Write(const Packets::BLRetAskPoint *const this, SocketBillingOutputStream *const oStream);
  1580. UINT __cdecl Packets::BLRetAskPoint::Execute(Packets::BLRetAskPoint *const this, Player *pPlayer);
  1581. void __cdecl _tcf_0_66(void *);
  1582. void `global constructor keyed to'Packets::BLRetAskPoint::Read(); // idb
  1583. void __cdecl Packets::BLRetAskPoint::~BLRetAskPoint(BillPacket *a2);
  1584. void __cdecl Packets::BLRetAskPoint::~BLRetAskPoint(IPRegionTable *a2);
  1585. BPacketID_t __cdecl Packets::BLRetAskPoint::GetPacketID(const Packets::BLRetAskPoint *const this);
  1586. int __cdecl Packets::BLRetAskPoint::GetPacketSize(int a2);
  1587. BOOL __cdecl Packets::BLRetPrize::Read(Packets::BLRetPrize *const this, SocketBillingInputStream *const iStream);
  1588. BOOL __cdecl Packets::BLRetPrize::Write(const Packets::BLRetPrize *const this, SocketBillingOutputStream *const oStream);
  1589. UINT __cdecl Packets::BLRetPrize::Execute(Packets::BLRetPrize *const this, Player *pPlayer);
  1590. void __cdecl _tcf_0_67(void *);
  1591. void `global constructor keyed to'Packets::BLRetPrize::Read(); // idb
  1592. void __cdecl Packets::BLRetPrize::~BLRetPrize(BillPacket *a2);
  1593. void __cdecl Packets::BLRetPrize::~BLRetPrize(IPRegionTable *a2);
  1594. BPacketID_t __cdecl Packets::BLRetPrize::GetPacketID(const Packets::BLRetPrize *const this);
  1595. UINT __cdecl Packets::BLRetPrize::GetPacketSize(const Packets::BLRetPrize *const this);
  1596. BOOL __cdecl Packets::LBAskBuy::Read(Packets::LBAskBuy *const this, SocketBillingInputStream *const iStream);
  1597. BOOL __cdecl Packets::LBAskBuy::Write(const Packets::LBAskBuy *const this, SocketBillingOutputStream *const oStream);
  1598. UINT __cdecl Packets::LBAskBuy::Execute(Packets::LBAskBuy *const this, Player *pPlayer);
  1599. void __cdecl _tcf_0_68(void *);
  1600. void `global constructor keyed to'Packets::LBAskBuy::Read(); // idb
  1601. void __cdecl Packets::LBAskBuy::~LBAskBuy(BillPacket *a2);
  1602. void __cdecl Packets::LBAskBuy::~LBAskBuy(IPRegionTable *a2);
  1603. BPacketID_t __cdecl Packets::LBAskBuy::GetPacketID(const Packets::LBAskBuy *const this);
  1604. int __cdecl Packets::LBAskBuy::GetPacketSize(unsigned __int8 *a2);
  1605. BOOL __cdecl Packets::LBAskPoint::Read(Packets::LBAskPoint *const this, SocketBillingInputStream *const iStream);
  1606. BOOL __cdecl Packets::LBAskPoint::Write(const Packets::LBAskPoint *const this, SocketBillingOutputStream *const oStream);
  1607. UINT __cdecl Packets::LBAskPoint::Execute(Packets::LBAskPoint *const this, Player *pPlayer);
  1608. void __cdecl _tcf_0_69(void *);
  1609. void `global constructor keyed to'Packets::LBAskPoint::Read(); // idb
  1610. void __cdecl Packets::LBAskPoint::~LBAskPoint(BillPacket *a2);
  1611. void __cdecl Packets::LBAskPoint::~LBAskPoint(IPRegionTable *a2);
  1612. BPacketID_t __cdecl Packets::LBAskPoint::GetPacketID(const Packets::LBAskPoint *const this);
  1613. int __cdecl Packets::LBAskPoint::GetPacketSize(unsigned __int8 *a2);
  1614. BOOL __cdecl Packets::LBLAskNewUserCard::Read(Packets::LBLAskNewUserCard *const this, SocketBillingInputStream *const iStream);
  1615. BOOL __cdecl Packets::LBLAskNewUserCard::Write(const Packets::LBLAskNewUserCard *const this, SocketBillingOutputStream *const oStream);
  1616. UINT __cdecl Packets::LBLAskNewUserCard::Execute(Packets::LBLAskNewUserCard *const this, Player *pPlayer);
  1617. void __cdecl _tcf_0_70(void *);
  1618. void `global constructor keyed to'Packets::LBLAskNewUserCard::Read(); // idb
  1619. void __cdecl Packets::LBLAskNewUserCard::~LBLAskNewUserCard(BillPacket *a2);
  1620. void __cdecl Packets::LBLAskNewUserCard::~LBLAskNewUserCard(IPRegionTable *a2);
  1621. BPacketID_t __cdecl Packets::LBLAskNewUserCard::GetPacketID(const Packets::LBLAskNewUserCard *const this);
  1622. UINT __cdecl Packets::LBLAskNewUserCard::GetPacketSize(const Packets::LBLAskNewUserCard *const this);
  1623. BOOL __cdecl Packets::LBLCardCheckPrize::Read(Packets::LBLCardCheckPrize *const this, SocketBillingInputStream *const iStream);
  1624. BOOL __cdecl Packets::LBLCardCheckPrize::Write(const Packets::LBLCardCheckPrize *const this, SocketBillingOutputStream *const oStream);
  1625. UINT __cdecl Packets::LBLCardCheckPrize::Execute(Packets::LBLCardCheckPrize *const this, Player *pPlayer);
  1626. void __cdecl _tcf_0_71(void *);
  1627. void `global constructor keyed to'Packets::LBLCardCheckPrize::Read(); // idb
  1628. void __cdecl Packets::LBLCardCheckPrize::~LBLCardCheckPrize(BillPacket *a2);
  1629. void __cdecl Packets::LBLCardCheckPrize::~LBLCardCheckPrize(IPRegionTable *a2);
  1630. BPacketID_t __cdecl Packets::LBLCardCheckPrize::GetPacketID(const Packets::LBLCardCheckPrize *const this);
  1631. UINT __cdecl Packets::LBLCardCheckPrize::GetPacketSize(const Packets::LBLCardCheckPrize *const this);
  1632. BOOL __cdecl Packets::LBLNewCheckPrize::Read(Packets::LBLNewCheckPrize *const this, SocketBillingInputStream *const iStream);
  1633. BOOL __cdecl Packets::LBLNewCheckPrize::Write(const Packets::LBLNewCheckPrize *const this, SocketBillingOutputStream *const oStream);
  1634. UINT __cdecl Packets::LBLNewCheckPrize::Execute(Packets::LBLNewCheckPrize *const this, Player *pPlayer);
  1635. void __cdecl _tcf_0_72(void *);
  1636. void `global constructor keyed to'Packets::LBLNewCheckPrize::Read(); // idb
  1637. void __cdecl Packets::LBLNewCheckPrize::~LBLNewCheckPrize(BillPacket *a2);
  1638. void __cdecl Packets::LBLNewCheckPrize::~LBLNewCheckPrize(IPRegionTable *a2);
  1639. BPacketID_t __cdecl Packets::LBLNewCheckPrize::GetPacketID(const Packets::LBLNewCheckPrize *const this);
  1640. UINT __cdecl Packets::LBLNewCheckPrize::GetPacketSize(const Packets::LBLNewCheckPrize *const this);
  1641. BOOL __cdecl Packets::LBLNewPrize::Read(Packets::LBLNewPrize *const this, SocketBillingInputStream *const iStream);
  1642. BOOL __cdecl Packets::LBLNewPrize::Write(const Packets::LBLNewPrize *const this, SocketBillingOutputStream *const oStream);
  1643. UINT __cdecl Packets::LBLNewPrize::Execute(Packets::LBLNewPrize *const this, Player *pPlayer);
  1644. void __cdecl _tcf_0_73(void *);
  1645. void `global constructor keyed to'Packets::LBLNewPrize::Read(); // idb
  1646. void __cdecl Packets::LBLNewPrize::~LBLNewPrize(BillPacket *a2);
  1647. void __cdecl Packets::LBLNewPrize::~LBLNewPrize(IPRegionTable *a2);
  1648. BPacketID_t __cdecl Packets::LBLNewPrize::GetPacketID(const Packets::LBLNewPrize *const this);
  1649. UINT __cdecl Packets::LBLNewPrize::GetPacketSize(const Packets::LBLNewPrize *const this);
  1650. BOOL __cdecl Packets::LBPrize::Read(Packets::LBPrize *const this, SocketBillingInputStream *const iStream);
  1651. BOOL __cdecl Packets::LBPrize::Write(const Packets::LBPrize *const this, SocketBillingOutputStream *const oStream);
  1652. UINT __cdecl Packets::LBPrize::Execute(Packets::LBPrize *const this, Player *pPlayer);
  1653. void __cdecl _tcf_0_74(void *);
  1654. void `global constructor keyed to'Packets::LBPrize::Read(); // idb
  1655. void __cdecl Packets::LBPrize::~LBPrize(BillPacket *a2);
  1656. void __cdecl Packets::LBPrize::~LBPrize(IPRegionTable *a2);
  1657. BPacketID_t __cdecl Packets::LBPrize::GetPacketID(const Packets::LBPrize *const this);
  1658. int __cdecl Packets::LBPrize::GetPacketSize(unsigned __int8 *a2);
  1659. BOOL __cdecl Packets::LWRetPrize::Read(Packets::LWRetPrize *const this, SocketInputStream *const iStream);
  1660. BOOL __cdecl Packets::LWRetPrize::Write(const Packets::LWRetPrize *const this, SocketOutputStream *const oStream);
  1661. UINT __cdecl Packets::LWRetPrize::Execute(Packets::LWRetPrize *const this, Player *pPlayer);
  1662. void __cdecl _tcf_0_75(void *);
  1663. void `global constructor keyed to'Packets::LWRetPrize::Read(); // idb
  1664. void __cdecl Packets::LWRetPrize::~LWRetPrize(Packet *a2);
  1665. void __cdecl Packets::LWRetPrize::~LWRetPrize(IPRegionTable *a2);
  1666. PacketID_t __cdecl Packets::LWRetPrize::GetPacketID(const Packets::LWRetPrize *const this);
  1667. UINT __cdecl Packets::LWRetPrize::GetPacketSize(const Packets::LWRetPrize *const this);
  1668. BOOL __cdecl Packets::WLAskPrize::Read(Packets::WLAskPrize *const this, SocketInputStream *const iStream);
  1669. BOOL __cdecl Packets::WLAskPrize::Write(const Packets::WLAskPrize *const this, SocketOutputStream *const oStream);
  1670. UINT __cdecl Packets::WLAskPrize::Execute(Packets::WLAskPrize *const this, Player *pPlayer);
  1671. void __cdecl _tcf_0_76(void *);
  1672. void `global constructor keyed to'Packets::WLAskPrize::Read(); // idb
  1673. void __cdecl Packets::WLAskPrize::~WLAskPrize(Packet *a2);
  1674. void __cdecl Packets::WLAskPrize::~WLAskPrize(IPRegionTable *a2);
  1675. PacketID_t __cdecl Packets::WLAskPrize::GetPacketID(const Packets::WLAskPrize *const this);
  1676. UINT __cdecl Packets::WLAskPrize::GetPacketSize(const Packets::WLAskPrize *const this);
  1677. BOOL __cdecl Packets::LWNotifyUser::Read(Packets::LWNotifyUser *const this, SocketInputStream *const iStream);
  1678. BOOL __cdecl Packets::LWNotifyUser::Write(const Packets::LWNotifyUser *const this, SocketOutputStream *const oStream);
  1679. UINT __cdecl Packets::LWNotifyUser::Execute(Packets::LWNotifyUser *const this, Player *pPlayer);
  1680. const CHAR *__cdecl Packets::LWNotifyUser::GetAccount(const Packets::LWNotifyUser *const this);
  1681. void __cdecl Packets::LWNotifyUser::SetAccount(Packets::LWNotifyUser *const this, const CHAR *pAccount);
  1682. void __cdecl _tcf_0_77(void *);
  1683. void `global constructor keyed to'Packets::LWNotifyUser::Read(); // idb
  1684. void __cdecl Packets::LWNotifyUser::~LWNotifyUser(Packet *a2);
  1685. void __cdecl Packets::LWNotifyUser::~LWNotifyUser(IPRegionTable *a2);
  1686. PacketID_t __cdecl Packets::LWNotifyUser::GetPacketID(const Packets::LWNotifyUser *const this);
  1687. UINT __cdecl Packets::LWNotifyUser::GetPacketSize(const Packets::LWNotifyUser *const this);
  1688. BOOL __cdecl Packets::WLNotifyUser::Read(Packets::WLNotifyUser *const this, SocketInputStream *const iStream);
  1689. BOOL __cdecl Packets::WLNotifyUser::Write(const Packets::WLNotifyUser *const this, SocketOutputStream *const oStream);
  1690. UINT __cdecl Packets::WLNotifyUser::Execute(Packets::WLNotifyUser *const this, Player *pPlayer);
  1691. const CHAR *__cdecl Packets::WLNotifyUser::GetHost(const Packets::WLNotifyUser *const this);
  1692. void __cdecl Packets::WLNotifyUser::SetHost(Packets::WLNotifyUser *const this, const CHAR *pHost);
  1693. void __cdecl _tcf_0_78(void *);
  1694. void `global constructor keyed to'Packets::WLNotifyUser::Read(); // idb
  1695. void __cdecl Packets::WLNotifyUser::~WLNotifyUser(Packet *a2);
  1696. void __cdecl Packets::WLNotifyUser::~WLNotifyUser(IPRegionTable *a2);
  1697. PacketID_t __cdecl Packets::WLNotifyUser::GetPacketID(const Packets::WLNotifyUser *const this);
  1698. UINT __cdecl Packets::WLNotifyUser::GetPacketSize(const Packets::WLNotifyUser *const this);
  1699. BOOL __cdecl Packets::GWLWGCostLog::Read(Packets::GWLWGCostLog *const this, SocketInputStream *const iStream);
  1700. BOOL __cdecl Packets::GWLWGCostLog::Write(const Packets::GWLWGCostLog *const this, SocketOutputStream *const oStream);
  1701. UINT __cdecl Packets::GWLWGCostLog::Execute(Packets::GWLWGCostLog *const this, Player *pPlayer);
  1702. void __cdecl _tcf_0_79(void *);
  1703. void `global constructor keyed to'Packets::GWLWGCostLog::Read(); // idb
  1704. void __cdecl Packets::GWLWGCostLog::~GWLWGCostLog(Packet *a2);
  1705. void __cdecl Packets::GWLWGCostLog::~GWLWGCostLog(IPRegionTable *a2);
  1706. PacketID_t __cdecl Packets::GWLWGCostLog::GetPacketID(const Packets::GWLWGCostLog *const this);
  1707. UINT __cdecl Packets::GWLWGCostLog::GetPacketSize(const Packets::GWLWGCostLog *const this);
  1708. BOOL __cdecl Packets::LBLCostLog::Read(Packets::LBLCostLog *const this, SocketBillingInputStream *const iStream);
  1709. BOOL __cdecl Packets::LBLCostLog::Write(const Packets::LBLCostLog *const this, SocketBillingOutputStream *const oStream);
  1710. UINT __cdecl Packets::LBLCostLog::Execute(Packets::LBLCostLog *const this, Player *pPlayer);
  1711. void __cdecl Packets::LBLCostLog::SetCostInfo(Packets::LBLCostLog *const this, _COST_LOG *pLog);
  1712. void __cdecl _tcf_0_80(void *);
  1713. void `global constructor keyed to'Packets::LBLCostLog::Read(); // idb
  1714. void __cdecl Packets::LBLCostLog::~LBLCostLog(BillPacket *a2);
  1715. void __cdecl Packets::LBLCostLog::~LBLCostLog(IPRegionTable *a2);
  1716. BPacketID_t __cdecl Packets::LBLCostLog::GetPacketID(const Packets::LBLCostLog *const this);
  1717. UINT __cdecl Packets::LBLCostLog::GetPacketSize(const Packets::LBLCostLog *const this);
  1718. BOOL __cdecl Packets::LBLAskMig::Read(Packets::LBLAskMig *const this, SocketBillingInputStream *const iStream);
  1719. BOOL __cdecl Packets::LBLAskMig::Write(const Packets::LBLAskMig *const this, SocketBillingOutputStream *const oStream);
  1720. UINT __cdecl Packets::LBLAskMig::Execute(Packets::LBLAskMig *const this, Player *pPlayer);
  1721. void __cdecl _tcf_0_81(void *);
  1722. void `global constructor keyed to'Packets::LBLAskMig::Read(); // idb
  1723. void __cdecl Packets::LBLAskMig::~LBLAskMig(BillPacket *a2);
  1724. void __cdecl Packets::LBLAskMig::~LBLAskMig(IPRegionTable *a2);
  1725. BPacketID_t __cdecl Packets::LBLAskMig::GetPacketID(const Packets::LBLAskMig *const this);
  1726. UINT __cdecl Packets::LBLAskMig::GetPacketSize(const Packets::LBLAskMig *const this);
  1727. BOOL __cdecl Packets::LWChangeName::Read(Packets::LWChangeName *const this, SocketInputStream *const iStream);
  1728. BOOL __cdecl Packets::LWChangeName::Write(const Packets::LWChangeName *const this, SocketOutputStream *const oStream);
  1729. UINT __cdecl Packets::LWChangeName::Execute(Packets::LWChangeName *const this, Player *pPlayer);
  1730. void __cdecl _tcf_0_82(void *);
  1731. void `global constructor keyed to'Packets::LWChangeName::Read(); // idb
  1732. void __cdecl Packets::LWChangeName::~LWChangeName(Packet *a2);
  1733. void __cdecl Packets::LWChangeName::~LWChangeName(IPRegionTable *a2);
  1734. PacketID_t __cdecl Packets::LWChangeName::GetPacketID(const Packets::LWChangeName *const this);
  1735. UINT __cdecl Packets::LWChangeName::GetPacketSize(const Packets::LWChangeName *const this);
  1736. BOOL __cdecl Packets::WLChangeName::Read(Packets::WLChangeName *const this, SocketInputStream *const iStream);
  1737. BOOL __cdecl Packets::WLChangeName::Write(const Packets::WLChangeName *const this, SocketOutputStream *const oStream);
  1738. UINT __cdecl Packets::WLChangeName::Execute(Packets::WLChangeName *const this, Player *pPlayer);
  1739. void __cdecl _tcf_0_83(void *);
  1740. void `global constructor keyed to'Packets::WLChangeName::Read(); // idb
  1741. void __cdecl Packets::WLChangeName::~WLChangeName(Packet *a2);
  1742. void __cdecl Packets::WLChangeName::~WLChangeName(IPRegionTable *a2);
  1743. PacketID_t __cdecl Packets::WLChangeName::GetPacketID(const Packets::WLChangeName *const this);
  1744. UINT __cdecl Packets::WLChangeName::GetPacketSize(const Packets::WLChangeName *const this);
  1745. BOOL __cdecl Packets::CLAskCreateCode::Read(Packets::CLAskCreateCode *const this, SocketInputStream *const iStream);
  1746. BOOL __cdecl Packets::CLAskCreateCode::Write(const Packets::CLAskCreateCode *const this, SocketOutputStream *const oStream);
  1747. UINT __cdecl Packets::CLAskCreateCode::Execute(Packets::CLAskCreateCode *const this, Player *pPlayer);
  1748. void __cdecl _tcf_0_84(void *);
  1749. void `global constructor keyed to'Packets::CLAskCreateCode::Read(); // idb
  1750. void __cdecl Packets::CLAskCreateCode::~CLAskCreateCode(Packet *a2);
  1751. void __cdecl Packets::CLAskCreateCode::~CLAskCreateCode(IPRegionTable *a2);
  1752. PacketID_t __cdecl Packets::CLAskCreateCode::GetPacketID(const Packets::CLAskCreateCode *const this);
  1753. int __cdecl Packets::CLAskCreateCode::GetPacketSize(int a2);
  1754. BOOL __cdecl Packets::LCRetCreateCode::Read(Packets::LCRetCreateCode *const this, SocketInputStream *const iStream);
  1755. BOOL __cdecl Packets::LCRetCreateCode::Write(const Packets::LCRetCreateCode *const this, SocketOutputStream *const oStream);
  1756. UINT __cdecl Packets::LCRetCreateCode::Execute(Packets::LCRetCreateCode *const this, Player *pPlayer);
  1757. void __cdecl _tcf_0_85(void *);
  1758. void `global constructor keyed to'Packets::LCRetCreateCode::Read(); // idb
  1759. void __cdecl Packets::LCRetCreateCode::~LCRetCreateCode(Packet *a2);
  1760. void __cdecl Packets::LCRetCreateCode::~LCRetCreateCode(IPRegionTable *a2);
  1761. PacketID_t __cdecl Packets::LCRetCreateCode::GetPacketID(const Packets::LCRetCreateCode *const this);
  1762. UINT __cdecl Packets::LCRetCreateCode::GetPacketSize(const Packets::LCRetCreateCode *const this);
  1763. BOOL __cdecl Packets::CLRegNewLicense::Read(Packets::CLRegNewLicense *const this, SocketInputStream *const iStream);
  1764. BOOL __cdecl Packets::CLRegNewLicense::Write(const Packets::CLRegNewLicense *const this, SocketOutputStream *const oStream);
  1765. UINT __cdecl Packets::CLRegNewLicense::Execute(Packets::CLRegNewLicense *const this, Player *pPlayer);
  1766. void __cdecl _tcf_0_86(void *);
  1767. void `global constructor keyed to'Packets::CLRegNewLicense::Read(); // idb
  1768. void __cdecl Packets::CLRegNewLicense::~CLRegNewLicense(Packet *a2);
  1769. void __cdecl Packets::CLRegNewLicense::~CLRegNewLicense(IPRegionTable *a2);
  1770. PacketID_t __cdecl Packets::CLRegNewLicense::GetPacketID(const Packets::CLRegNewLicense *const this);
  1771. UINT __cdecl Packets::CLRegNewLicense::GetPacketSize(const Packets::CLRegNewLicense *const this);
  1772. BOOL __cdecl Packets::LBAskRegLicense::Read(Packets::LBAskRegLicense *const this, SocketInputStream *const iStream);
  1773. BOOL __cdecl Packets::LBAskRegLicense::Write(const Packets::LBAskRegLicense *const this, SocketOutputStream *const oStream);
  1774. UINT __cdecl Packets::LBAskRegLicense::Execute(Packets::LBAskRegLicense *const this, Player *pPlayer);
  1775. const CHAR *__cdecl Packets::LBAskRegLicense::GetAccount(const Packets::LBAskRegLicense *const this);
  1776. void __cdecl Packets::LBAskRegLicense::SetAccount(Packets::LBAskRegLicense *const this, const CHAR *pAccount);
  1777. int __cdecl Packets::LBAskRegLicense::GetPlayerID(int a2);
  1778. void __cdecl Packets::LBAskRegLicense::SetPlayerID(int pID, __int16 pIDa);
  1779. int __cdecl Packets::LBAskRegLicense::GetUserAnswer(int a2);
  1780. void __cdecl Packets::LBAskRegLicense::SetUserAnswer(int rt, char rta);
  1781. void __cdecl Packets::LBAskRegLicense::SetIPAddr(Packets::LBAskRegLicense *const this, const CHAR *pIP);
  1782. const CHAR *__cdecl Packets::LBAskRegLicense::GetIPAddr(const Packets::LBAskRegLicense *const this);
  1783. void __cdecl _tcf_0_87(void *);
  1784. void `global constructor keyed to'Packets::LBAskRegLicense::Read(); // idb
  1785. void __cdecl Packets::LBAskRegLicense::~LBAskRegLicense(Packet *a2);
  1786. void __cdecl Packets::LBAskRegLicense::~LBAskRegLicense(IPRegionTable *a2);
  1787. PacketID_t __cdecl Packets::LBAskRegLicense::GetPacketID(const Packets::LBAskRegLicense *const this);
  1788. UINT __cdecl Packets::LBAskRegLicense::GetPacketSize(const Packets::LBAskRegLicense *const this);
  1789. BOOL __cdecl Packets::LBLRegNewLicense::Read(Packets::LBLRegNewLicense *const this, SocketBillingInputStream *const iStream);
  1790. BOOL __cdecl Packets::LBLRegNewLicense::Write(const Packets::LBLRegNewLicense *const this, SocketBillingOutputStream *const oStream);
  1791. UINT __cdecl Packets::LBLRegNewLicense::Execute(Packets::LBLRegNewLicense *const this, Player *pPlayer);
  1792. void __cdecl _tcf_0_88(void *);
  1793. void `global constructor keyed to'Packets::LBLRegNewLicense::Read(); // idb
  1794. void __cdecl Packets::LBLRegNewLicense::~LBLRegNewLicense(BillPacket *a2);
  1795. void __cdecl Packets::LBLRegNewLicense::~LBLRegNewLicense(IPRegionTable *a2);
  1796. BPacketID_t __cdecl Packets::LBLRegNewLicense::GetPacketID(const Packets::LBLRegNewLicense *const this);
  1797. UINT __cdecl Packets::LBLRegNewLicense::GetPacketSize(const Packets::LBLRegNewLicense *const this);
  1798. BOOL __cdecl Packets::CLRegSafeSign::Read(Packets::CLRegSafeSign *const this, SocketInputStream *const iStream);
  1799. BOOL __cdecl Packets::CLRegSafeSign::Write(const Packets::CLRegSafeSign *const this, SocketOutputStream *const oStream);
  1800. UINT __cdecl Packets::CLRegSafeSign::Execute(Packets::CLRegSafeSign *const this, Player *pPlayer);
  1801. void __cdecl _tcf_0_89(void *);
  1802. void `global constructor keyed to'Packets::CLRegSafeSign::Read(); // idb
  1803. void __cdecl Packets::CLRegSafeSign::~CLRegSafeSign(Packet *a2);
  1804. void __cdecl Packets::CLRegSafeSign::~CLRegSafeSign(IPRegionTable *a2);
  1805. PacketID_t __cdecl Packets::CLRegSafeSign::GetPacketID(const Packets::CLRegSafeSign *const this);
  1806. UINT __cdecl Packets::CLRegSafeSign::GetPacketSize(const Packets::CLRegSafeSign *const this);
  1807. BOOL __cdecl Packets::LBLOperateAcc::Read(Packets::LBLOperateAcc *const this, SocketBillingInputStream *const iStream);
  1808. BOOL __cdecl Packets::LBLOperateAcc::Write(const Packets::LBLOperateAcc *const this, SocketBillingOutputStream *const oStream);
  1809. UINT __cdecl Packets::LBLOperateAcc::Execute(Packets::LBLOperateAcc *const this, Player *pPlayer);
  1810. void __cdecl _tcf_0_90(void *);
  1811. void `global constructor keyed to'Packets::LBLOperateAcc::Read(); // idb
  1812. void __cdecl Packets::LBLOperateAcc::~LBLOperateAcc(BillPacket *a2);
  1813. void __cdecl Packets::LBLOperateAcc::~LBLOperateAcc(IPRegionTable *a2);
  1814. BPacketID_t __cdecl Packets::LBLOperateAcc::GetPacketID(const Packets::LBLOperateAcc *const this);
  1815. UINT __cdecl Packets::LBLOperateAcc::GetPacketSize(const Packets::LBLOperateAcc *const this);
  1816. BOOL __cdecl Packets::LWOperateAccResult::Read(Packets::LWOperateAccResult *const this, SocketInputStream *const iStream);
  1817. BOOL __cdecl Packets::LWOperateAccResult::Write(const Packets::LWOperateAccResult *const this, SocketOutputStream *const oStream);
  1818. UINT __cdecl Packets::LWOperateAccResult::Execute(Packets::LWOperateAccResult *const this, Player *pPlayer);
  1819. void __cdecl _tcf_0_91(void *);
  1820. void `global constructor keyed to'Packets::LWOperateAccResult::Read(); // idb
  1821. void __cdecl Packets::LWOperateAccResult::~LWOperateAccResult(Packet *a2);
  1822. void __cdecl Packets::LWOperateAccResult::~LWOperateAccResult(IPRegionTable *a2);
  1823. PacketID_t __cdecl Packets::LWOperateAccResult::GetPacketID(const Packets::LWOperateAccResult *const this);
  1824. UINT __cdecl Packets::LWOperateAccResult::GetPacketSize(const Packets::LWOperateAccResult *const this);
  1825. BOOL __cdecl Packets::WLOperateAcc::Read(Packets::WLOperateAcc *const this, SocketInputStream *const iStream);
  1826. BOOL __cdecl Packets::WLOperateAcc::Write(const Packets::WLOperateAcc *const this, SocketOutputStream *const oStream);
  1827. UINT __cdecl Packets::WLOperateAcc::Execute(Packets::WLOperateAcc *const this, Player *pPlayer);
  1828. void __cdecl _tcf_0_92(void *);
  1829. void `global constructor keyed to'Packets::WLOperateAcc::Read(); // idb
  1830. void __cdecl Packets::WLOperateAcc::~WLOperateAcc(Packet *a2);
  1831. void __cdecl Packets::WLOperateAcc::~WLOperateAcc(IPRegionTable *a2);
  1832. PacketID_t __cdecl Packets::WLOperateAcc::GetPacketID(const Packets::WLOperateAcc *const this);
  1833. UINT __cdecl Packets::WLOperateAcc::GetPacketSize(const Packets::WLOperateAcc *const this);
  1834. void __cdecl DBAbilityList::DBAbilityList(DBAbilityList *const this, ODBCInterface *pInterface);
  1835. void __cdecl DBAbilityList::DBAbilityList(DBAbilityList *const this, ODBCInterface *pInterface);
  1836. int __cdecl DBAbilityList::Load(DBAbilityList *const this);
  1837. int __cdecl DBAbilityList::Save(DBAbilityList *const this, void *pSource);
  1838. int __cdecl DBAbilityList::Delete(DBAbilityList *const this);
  1839. int __cdecl DBAbilityList::ParseResult(DBAbilityList *const this, void *pResult);
  1840. GUID_t __cdecl DBAbilityList::GetCharGuid(int a2);
  1841. void __cdecl DBAbilityList::SetCharGuid(int a3, int a4);
  1842. UINT __cdecl DBAbilityList::GetDBVersion(int a2);
  1843. void __cdecl DBAbilityList::SetDBVersion(int a3, int a4);
  1844. void __cdecl _tcf_0_93(void *);
  1845. void `global constructor keyed to'DBAbilityList::DBAbilityList(); // idb
  1846. void __cdecl DBCharCreate::DBCharCreate(DBCharCreate *const this, ODBCInterface *pInterface);
  1847. void __cdecl DBCharCreate::DBCharCreate(DBCharCreate *const this, ODBCInterface *pInterface);
  1848. int __cdecl DBCharCreate::Load(DBCharCreate *const this);
  1849. int __cdecl DBCharCreate::AddNew(DBCharCreate *const this);
  1850. int __cdecl DBCharCreate::ParseResult(DBCharCreate *const this, void *pResult);
  1851. const CHAR *__cdecl DBCharCreate::GetAccount(const DBCharCreate *const this);
  1852. void __cdecl DBCharCreate::SetAccount(DBCharCreate *const this, const CHAR *pAccount);
  1853. void __cdecl DBCharCreate::SetCharName(const CHAR *pName, const char *pNamea);
  1854. const CHAR *__cdecl DBCharCreate::GetCharName(DBCharCreate *const this);
  1855. void __cdecl DBCharCreate::SetSex(int a3, int a4);
  1856. int __cdecl DBCharCreate::GetSex(int a2);
  1857. void __cdecl DBCharCreate::SetHairColor(int Color, char Colora);
  1858. int __cdecl DBCharCreate::GetHairColor(int a2);
  1859. void __cdecl DBCharCreate::SetFaceColor(int Color, char Colora);
  1860. int __cdecl DBCharCreate::GetFaceColor(int a2);
  1861. void __cdecl DBCharCreate::SetHairModel(int Model, char Modela);
  1862. int __cdecl DBCharCreate::GetHairModel(int a2);
  1863. void __cdecl DBCharCreate::SetFaceModel(int Model, char Modela);
  1864. int __cdecl DBCharCreate::GetFaceModel(int a2);
  1865. void __cdecl DBCharCreate::SetHeadID(int Head, char Heada);
  1866. int __cdecl DBCharCreate::GetHeadID(int a2);
  1867. void __cdecl DBCharCreate::SetDefEquip(int a3, int a4);
  1868. INT __cdecl DBCharCreate::GetDefEquip(int a2);
  1869. GUID_t __cdecl DBCharCreate::GetCharGuid(int a2);
  1870. void __cdecl _tcf_0_94(void *);
  1871. void `global constructor keyed to'DBCharCreate::DBCharCreate(); // idb
  1872. void __cdecl DBChardbVersion::DBChardbVersion(DBChardbVersion *const this, ODBCInterface *pInterface);
  1873. void __cdecl DBChardbVersion::DBChardbVersion(DBChardbVersion *const this, ODBCInterface *pInterface);
  1874. int __cdecl DBChardbVersion::Load(DBChardbVersion *const this);
  1875. int __cdecl DBChardbVersion::ParseResult(DBChardbVersion *const this, void *pResult);
  1876. void __cdecl DBChardbVersion::SetCharGuid(int a3, int a4);
  1877. GUID_t __cdecl DBChardbVersion::GetCharGuid(int a2);
  1878. INT __cdecl DBChardbVersion::GetdbVersion(int a2);
  1879. BOOL __cdecl DBChardbVersion::IsValid(int a2);
  1880. void __cdecl DBChardbVersion::ForceCheckConnect(DBChardbVersion *const this);
  1881. void __cdecl _tcf_0_95(void *);
  1882. void `global constructor keyed to'DBChardbVersion::DBChardbVersion(); // idb
  1883. void __cdecl DBCharExtradbVersion::DBCharExtradbVersion(DBCharExtradbVersion *const this, ODBCInterface *pInterface);
  1884. void __cdecl DBCharExtradbVersion::DBCharExtradbVersion(DBCharExtradbVersion *const this, ODBCInterface *pInterface);
  1885. int __cdecl DBCharExtradbVersion::Load(DBCharExtradbVersion *const this);
  1886. int __cdecl DBCharExtradbVersion::ParseResult(DBCharExtradbVersion *const this, void *pResult);
  1887. void __cdecl DBCharExtradbVersion::SetCharGuid(int a3, int a4);
  1888. GUID_t __cdecl DBCharExtradbVersion::GetCharGuid(int a2);
  1889. INT __cdecl DBCharExtradbVersion::GetdbVersion(int a2);
  1890. void __cdecl DBCharExtradbVersion::ForceCheckConnect(DBCharExtradbVersion *const this);
  1891. void __cdecl _tcf_0_96(void *);
  1892. void `global constructor keyed to'DBCharExtradbVersion::DBCharExtradbVersion(); // idb
  1893. void __cdecl DBCharExtraInfo::DBCharExtraInfo(DBCharExtraInfo *const this, ODBCInterface *pInterface);
  1894. void __cdecl DBCharExtraInfo::DBCharExtraInfo(DBCharExtraInfo *const this, ODBCInterface *pInterface);
  1895. int __cdecl DBCharExtraInfo::Load(DBCharExtraInfo *const this);
  1896. int __cdecl DBCharExtraInfo::Save(DBCharExtraInfo *const this, void *pSource);
  1897. int __cdecl DBCharExtraInfo::Delete(DBCharExtraInfo *const this);
  1898. int __cdecl DBCharExtraInfo::ParseResult(DBCharExtraInfo *const this, void *pResult);
  1899. GUID_t __cdecl DBCharExtraInfo::GetCharGuid(int a2);
  1900. void __cdecl DBCharExtraInfo::SetCharGuid(int a3, int a4);
  1901. UINT __cdecl DBCharExtraInfo::GetDBVersion(int a2);
  1902. void __cdecl DBCharExtraInfo::SetDBVersion(int a3, int a4);
  1903. void __cdecl _tcf_0_97(void *);
  1904. void `global constructor keyed to'DBCharExtraInfo::DBCharExtraInfo(); // idb
  1905. void __cdecl DBCharFullData::DBCharFullData(DBCharFullData *const this, ODBCInterface *pInterface);
  1906. void __cdecl DBCharFullData::DBCharFullData(DBCharFullData *const this, ODBCInterface *pInterface);
  1907. int __cdecl DBCharFullData::Load(DBCharFullData *const this);
  1908. GUID_t __cdecl DBCharFullData::GetCharGuid(int a2);
  1909. void __cdecl DBCharFullData::SetCharGuid(int a3, int a4);
  1910. void __cdecl DBCharFullData::SetCRC(int a3, int a4);
  1911. UINT __cdecl DBCharFullData::GetCRC(int a2);
  1912. INT __cdecl FullDataMagicInt2(FULLUSERDATA_0 *pData);
  1913. int __cdecl DBCharFullData::Save(DBCharFullData *const this, void *pSource);
  1914. INT __cdecl FullDataMagicInt1(FULLUSERDATA_0 *pData);
  1915. int __cdecl DBCharFullData::ParseResult(DBCharFullData *const this, void *pResult);
  1916. void __cdecl _tcf_0_98(void *);
  1917. void `global constructor keyed to'DBCharFullData::DBCharFullData(); // idb
  1918. INT __cdecl Float2Int<float>(float TValue);
  1919. void __cdecl DBCharList::CleanUp(_DWORD *a2);
  1920. void __cdecl DBCharList::DBCharList(DBCharList *const this, ODBCInterface *pInterface);
  1921. void __cdecl DBCharList::DBCharList(DBCharList *const this, ODBCInterface *pInterface);
  1922. int __cdecl DBCharList::Load(DBCharList *const this);
  1923. int __cdecl DBCharList::Save(DBCharList *const this);
  1924. int __cdecl DBCharList::ParseResult(DBCharList *const this, void *pResult);
  1925. const CHAR *__cdecl DBCharList::GetAccount(const DBCharList *const this);
  1926. void __cdecl DBCharList::SetAccount(DBCharList *const this, const CHAR *pAccount);
  1927. UINT __cdecl DBCharList::GetCharNumber(int a2);
  1928. GUID_t __cdecl DBCharList::GetGuid(DBCharList *const this, UINT Index);
  1929. void __cdecl _tcf_0_99(void *);
  1930. void `global constructor keyed to'DBCharList::DBCharList(); // idb
  1931. void __cdecl DBCharVisualGem::DBCharVisualGem(DBCharVisualGem *const this, ODBCInterface *pInterface);
  1932. void __cdecl DBCharVisualGem::DBCharVisualGem(DBCharVisualGem *const this, ODBCInterface *pInterface);
  1933. int __cdecl DBCharVisualGem::Load(DBCharVisualGem *const this);
  1934. int __cdecl DBCharVisualGem::Save(DBCharVisualGem *const this, void *pSource);
  1935. int __cdecl DBCharVisualGem::Delete(DBCharVisualGem *const this);
  1936. int __cdecl DBCharVisualGem::ParseResult(DBCharVisualGem *const this, void *pResult);
  1937. GUID_t __cdecl DBCharVisualGem::GetCharGuid(int a2);
  1938. void __cdecl DBCharVisualGem::SetCharGuid(int a3, int a4);
  1939. UINT __cdecl DBCharVisualGem::GetDBVersion(int a2);
  1940. void __cdecl DBCharVisualGem::SetDBVersion(int a3, int a4);
  1941. void __cdecl _tcf_0_100(void *);
  1942. void `global constructor keyed to'DBCharVisualGem::DBCharVisualGem(); // idb
  1943. void __cdecl DBCheckCharName::DBCheckCharName(DBCheckCharName *const this, ODBCInterface *pInterface);
  1944. void __cdecl DBCheckCharName::DBCheckCharName(DBCheckCharName *const this, ODBCInterface *pInterface);
  1945. int __cdecl DBCheckCharName::Load(DBCheckCharName *const this);
  1946. int __cdecl DBCheckCharName::ParseResult(DBCheckCharName *const this, void *pResult);
  1947. void __cdecl DBCheckCharName::SetCharName(const CHAR *pName, const char *pNamea);
  1948. const CHAR *__cdecl DBCheckCharName::GetCharName(DBCheckCharName *const this);
  1949. INT __cdecl DBCheckCharName::GetCheckResult(int a2);
  1950. void __cdecl _tcf_0_101(void *);
  1951. void `global constructor keyed to'DBCheckCharName::DBCheckCharName(); // idb
  1952. void __cdecl DBClearDupItemList::DBClearDupItemList(DBClearDupItemList *const this, ODBCInterface *pInterface);
  1953. void __cdecl DBClearDupItemList::DBClearDupItemList(DBClearDupItemList *const this, ODBCInterface *pInterface);
  1954. int __cdecl DBClearDupItemList::Save(DBClearDupItemList *const this, void *pSource);
  1955. int __cdecl DBClearDupItemList::ParseResult(DBClearDupItemList *const this, void *pResult);
  1956. GUID_t __cdecl DBClearDupItemList::GetCharGuid(int a2);
  1957. void __cdecl DBClearDupItemList::SetCharGuid(int a3, int a4);
  1958. UINT __cdecl DBClearDupItemList::GetDBVersion(int a2);
  1959. void __cdecl DBClearDupItemList::SetDBVersion(int a3, int a4);
  1960. void __cdecl _tcf_0_102(void *);
  1961. void `global constructor keyed to'DBClearDupItemList::DBClearDupItemList(); // idb
  1962. void __cdecl DBCoolDownInfo::DBCoolDownInfo(DBCoolDownInfo *const this, ODBCInterface *pInterface);
  1963. void __cdecl DBCoolDownInfo::DBCoolDownInfo(DBCoolDownInfo *const this, ODBCInterface *pInterface);
  1964. int __cdecl DBCoolDownInfo::Load(DBCoolDownInfo *const this);
  1965. int __cdecl DBCoolDownInfo::Save(DBCoolDownInfo *const this, void *pSource);
  1966. int __cdecl DBCoolDownInfo::Delete(DBCoolDownInfo *const this);
  1967. int __cdecl DBCoolDownInfo::ParseResult(DBCoolDownInfo *const this, void *pResult);
  1968. GUID_t __cdecl DBCoolDownInfo::GetCharGuid(int a2);
  1969. void __cdecl DBCoolDownInfo::SetCharGuid(int a3, int a4);
  1970. UINT __cdecl DBCoolDownInfo::GetDBVersion(int a2);
  1971. void __cdecl DBCoolDownInfo::SetDBVersion(int a3, int a4);
  1972. void __cdecl _tcf_0_103(void *);
  1973. void `global constructor keyed to'DBCoolDownInfo::DBCoolDownInfo(); // idb
  1974. void __cdecl DBCrcInfo::DBCrcInfo(DBCrcInfo *const this, ODBCInterface *pInterface);
  1975. void __cdecl DBCrcInfo::DBCrcInfo(DBCrcInfo *const this, ODBCInterface *pInterface);
  1976. int __cdecl DBCrcInfo::Load(DBCrcInfo *const this);
  1977. int __cdecl DBCrcInfo::Save(DBCrcInfo *const this, void *pSource);
  1978. int __cdecl DBCrcInfo::Delete(DBCrcInfo *const this);
  1979. int __cdecl DBCrcInfo::ParseResult(DBCrcInfo *const this, void *pResult);
  1980. UINT __cdecl DBCrcInfo::GetAid(int a2);
  1981. void __cdecl DBCrcInfo::SetAid(int a3, int a4);
  1982. GUID_t __cdecl DBCrcInfo::GetCharGuid(int a2);
  1983. void __cdecl DBCrcInfo::SetCharGuid(int a3, int a4);
  1984. UINT __cdecl DBCrcInfo::GetCrc32(int a2);
  1985. void __cdecl DBCrcInfo::SetCrc32(int a3, int a4);
  1986. INT __cdecl DBCrcInfo::GetServerId(int a2);
  1987. void __cdecl DBCrcInfo::SetServerId(int a3, int a4);
  1988. void __cdecl DBCrcInfo::SetChange(int a3, int a4);
  1989. void __cdecl _tcf_0_104(void *);
  1990. void `global constructor keyed to'DBCrcInfo::DBCrcInfo(); // idb
  1991. void __cdecl DBCreateCharOp::DBCreateCharOp(DBCreateCharOp *const this, ODBCInterface *pInterface);
  1992. void __cdecl DBCreateCharOp::DBCreateCharOp(DBCreateCharOp *const this, ODBCInterface *pInterface);
  1993. int __cdecl DBCreateCharOp::Load(DBCreateCharOp *const this);
  1994. int __cdecl DBCreateCharOp::AddNew(DBCreateCharOp *const this);
  1995. int __cdecl DBCreateCharOp::ParseResult(DBCreateCharOp *const this, void *pResult);
  1996. const CHAR *__cdecl DBCreateCharOp::GetAccount(const DBCreateCharOp *const this);
  1997. void __cdecl DBCreateCharOp::SetAccount(DBCreateCharOp *const this, const CHAR *pAccount);
  1998. GUID_t __cdecl DBCreateCharOp::GetCharGuid(int a2);
  1999. void __cdecl DBCreateCharOp::SetCharGuid(int a3, int a4);
  2000. void __cdecl DBCreateCharOp::SetCharName(const CHAR *pName, const char *pNamea);
  2001. const CHAR *__cdecl DBCreateCharOp::GetCharName(DBCreateCharOp *const this);
  2002. void __cdecl DBCreateCharOp::SetSex(int a3, int a4);
  2003. int __cdecl DBCreateCharOp::GetSex(int a2);
  2004. void __cdecl DBCreateCharOp::SetHairColor(int Color, char Colora);
  2005. int __cdecl DBCreateCharOp::GetHairColor(int a2);
  2006. void __cdecl DBCreateCharOp::SetFaceColor(int Color, char Colora);
  2007. int __cdecl DBCreateCharOp::GetFaceColor(int a2);
  2008. void __cdecl DBCreateCharOp::SetHairModel(int Model, char Modela);
  2009. int __cdecl DBCreateCharOp::GetHairModel(int a2);
  2010. void __cdecl DBCreateCharOp::SetFaceModel(int Model, char Modela);
  2011. int __cdecl DBCreateCharOp::GetFaceModel(int a2);
  2012. void __cdecl DBCreateCharOp::SetHeadID(int Head, char Heada);
  2013. int __cdecl DBCreateCharOp::GetHeadID(int a2);
  2014. void __cdecl DBCreateCharOp::SetDefEquip(int a3, int a4);
  2015. INT __cdecl DBCreateCharOp::GetDefEquip(int a2);
  2016. void __cdecl _tcf_0_105(void *);
  2017. void `global constructor keyed to'DBCreateCharOp::DBCreateCharOp(); // idb
  2018. void __cdecl DBDeleteCharOp::DBDeleteCharOp(DBDeleteCharOp *const this, ODBCInterface *pInterface);
  2019. void __cdecl DBDeleteCharOp::DBDeleteCharOp(DBDeleteCharOp *const this, ODBCInterface *pInterface);
  2020. int __cdecl DBDeleteCharOp::Load(DBDeleteCharOp *const this);
  2021. int __cdecl DBDeleteCharOp::AddNew(DBDeleteCharOp *const this);
  2022. int __cdecl DBDeleteCharOp::Delete(DBDeleteCharOp *const this);
  2023. int __cdecl DBDeleteCharOp::ParseResult(DBDeleteCharOp *const this, void *pResult);
  2024. const CHAR *__cdecl DBDeleteCharOp::GetAccount(const DBDeleteCharOp *const this);
  2025. void __cdecl DBDeleteCharOp::SetAccount(DBDeleteCharOp *const this, const CHAR *pAccount);
  2026. GUID_t __cdecl DBDeleteCharOp::GetCharGuid(int a2);
  2027. void __cdecl DBDeleteCharOp::SetCharGuid(int a3, int a4);
  2028. void __cdecl DBDeleteCharOp::SetNeedTime(int a3, int a4);
  2029. void __cdecl _tcf_0_106(void *);
  2030. void `global constructor keyed to'DBDeleteCharOp::DBDeleteCharOp(); // idb
  2031. void __cdecl DBEquipBaseList::DBEquipBaseList(DBEquipBaseList *const this, ODBCInterface *pInterface);
  2032. void __cdecl DBEquipBaseList::DBEquipBaseList(DBEquipBaseList *const this, ODBCInterface *pInterface);
  2033. int __cdecl DBEquipBaseList::Load(DBEquipBaseList *const this);
  2034. int __cdecl DBEquipBaseList::Save(DBEquipBaseList *const this);
  2035. int __cdecl DBEquipBaseList::ParseResult(DBEquipBaseList *const this, void *pResult);
  2036. GUID_t __cdecl DBEquipBaseList::GetCharGuid(int a2);
  2037. void __cdecl DBEquipBaseList::SetCharGuid(int a3, int a4);
  2038. void __cdecl _tcf_0_107(void *);
  2039. void `global constructor keyed to'DBEquipBaseList::DBEquipBaseList(); // idb
  2040. void __cdecl DBFatigueInfo::DBFatigueInfo(DBFatigueInfo *const this, ODBCInterface *pInterface);
  2041. void __cdecl DBFatigueInfo::DBFatigueInfo(DBFatigueInfo *const this, ODBCInterface *pInterface);
  2042. int __cdecl DBFatigueInfo::Load(DBFatigueInfo *const this);
  2043. int __cdecl DBFatigueInfo::Save(DBFatigueInfo *const this, void *pSource);
  2044. int __cdecl DBFatigueInfo::Delete(DBFatigueInfo *const this);
  2045. int __cdecl DBFatigueInfo::ParseResult(DBFatigueInfo *const this, void *pResult);
  2046. GUID_t __cdecl DBFatigueInfo::GetCharGuid(int a2);
  2047. void __cdecl DBFatigueInfo::SetCharGuid(int a3, int a4);
  2048. UINT __cdecl DBFatigueInfo::GetDBVersion(int a2);
  2049. void __cdecl DBFatigueInfo::SetDBVersion(int a3, int a4);
  2050. void __cdecl _tcf_0_108(void *);
  2051. void `global constructor keyed to'DBFatigueInfo::DBFatigueInfo(); // idb
  2052. void __cdecl DBGeneralSet::DBGeneralSet(DBGeneralSet *const this, ODBCInterface *pInterface);
  2053. void __cdecl DBGeneralSet::DBGeneralSet(DBGeneralSet *const this, ODBCInterface *pInterface);
  2054. int __cdecl DBGeneralSet::MySave(DBGeneralSet *const this, DBGeneralSet::GSET_TYPE tKey, INT nVal);
  2055. int __cdecl DBGeneralSet::MyLoad(DBGeneralSet *const this, DBGeneralSet::GSET_TYPE tKey, INT *const pVal);
  2056. int __cdecl DBGeneralSet::SetValue(DBGeneralSet *const this, DBGeneralSet::GSET_TYPE tKey, INT nVal);
  2057. int __cdecl DBGeneralSet::GetValue(DBGeneralSet *const this, DBGeneralSet::GSET_TYPE tKey, INT *const pVal);
  2058. int __cdecl DBGeneralSet::ParseResult(DBGeneralSet *const this, void *pResult);
  2059. void __cdecl _tcf_0_109(void *);
  2060. void `global constructor keyed to'DBGeneralSet::DBGeneralSet(); // idb
  2061. void __cdecl DBImmigration::DBImmigration(DBImmigration *const this, ODBCInterface *pInterface);
  2062. void __cdecl DBImmigration::DBImmigration(DBImmigration *const this, ODBCInterface *pInterface);
  2063. int __cdecl DBImmigration::Load(DBImmigration *const this);
  2064. int __cdecl DBImmigration::IsCharNameOK(DBImmigration *const this);
  2065. int __cdecl DBImmigration::UpdateNewCharName(DBImmigration *const this);
  2066. int __cdecl DBImmigration::AddNew(DBImmigration *const this);
  2067. int __cdecl DBImmigration::Save(DBImmigration *const this, void *pResult);
  2068. int __cdecl DBImmigration::ParseResult(DBImmigration *const this, void *pResult);
  2069. const CHAR *__cdecl DBImmigration::GetAccount(const DBImmigration *const this);
  2070. void __cdecl DBImmigration::SetAccount(DBImmigration *const this, const CHAR *pAccount);
  2071. const CHAR *__cdecl DBImmigration::GetCharName(const DBImmigration *const this);
  2072. void __cdecl DBImmigration::SetCharName(DBImmigration *const this, const CHAR *pName);
  2073. GUID_t __cdecl DBImmigration::GetCharGuid(int a2);
  2074. void __cdecl DBImmigration::SetCharGuid(int a3, int a4);
  2075. void __cdecl DBImmigration::SetCharCreateTime(int a3, int a4);
  2076. UINT __cdecl DBImmigration::GetCharCreateTime(int a2);
  2077. void __cdecl _tcf_0_110(void *);
  2078. void `global constructor keyed to'DBImmigration::DBImmigration(); // idb
  2079. void __cdecl DBImpactList::DBImpactList(DBImpactList *const this, ODBCInterface *pInterface);
  2080. void __cdecl DBImpactList::DBImpactList(DBImpactList *const this, ODBCInterface *pInterface);
  2081. int __cdecl DBImpactList::Load(DBImpactList *const this);
  2082. int __cdecl DBImpactList::Save(DBImpactList *const this, void *pSource);
  2083. int __cdecl DBImpactList::Delete(DBImpactList *const this);
  2084. int __cdecl DBImpactList::ParseResult(DBImpactList *const this, void *pResult);
  2085. GUID_t __cdecl DBImpactList::GetCharGuid(int a2);
  2086. void __cdecl DBImpactList::SetCharGuid(int a3, int a4);
  2087. UINT __cdecl DBImpactList::GetDBVersion(int a2);
  2088. void __cdecl DBImpactList::SetDBVersion(int a3, int a4);
  2089. void __cdecl _tcf_0_111(void *);
  2090. void `global constructor keyed to'DBImpactList::DBImpactList(); // idb
  2091. void __cdecl DBItemList::DBItemList(DBItemList *const this, ODBCInterface *pInterface);
  2092. void __cdecl DBItemList::DBItemList(DBItemList *const this, ODBCInterface *pInterface);
  2093. int __cdecl DBItemList::Load(DBItemList *const this);
  2094. int __cdecl DBItemList::Save(DBItemList *const this, void *pSource);
  2095. int __cdecl DBItemList::Delete(DBItemList *const this);
  2096. int __cdecl DBItemList::GetIsOld(int a2);
  2097. int __cdecl DBItemList::ParseResult(DBItemList *const this, void *pResult);
  2098. GUID_t __cdecl DBItemList::GetCharGuid(int a2);
  2099. void __cdecl DBItemList::SetCharGuid(int a3, int a4);
  2100. UINT __cdecl DBItemList::GetDBVersion(int a2);
  2101. void __cdecl DBItemList::SetDBVersion(int a3, int a4);
  2102. void __cdecl DBItemList::SetIsOld(int a3, int a4);
  2103. void __cdecl _tcf_0_112(void *);
  2104. void `global constructor keyed to'DBItemList::DBItemList(); // idb
  2105. void __cdecl DBManager::DBManager(DBManager *const this);
  2106. void __cdecl DBManager::DBManager(DBManager *const this);
  2107. void __cdecl DBManager::~DBManager(DBManager *const this);
  2108. void __cdecl DBManager::~DBManager(DBManager *const this);
  2109. void __cdecl DBManager::~DBManager(DBManager *const this);
  2110. int __cdecl DBManager::Init(DBManager *const this);
  2111. void __cdecl DBManager::run(DBManager *const this);
  2112. ODBCInterface *__cdecl DBManager::GetInterface(DB_NAMES name, DB_NAMES namea);
  2113. void __cdecl DBManager::Quit(DBManager *const this);
  2114. void __cdecl _tcf_0_113(void *);
  2115. void `global constructor keyed to'DBManager::DBManager(); // idb
  2116. void __cdecl DBManager::stop(int a2);
  2117. BOOL __cdecl DBManager::CheckWorldIDZoneID(DBManager *const this);
  2118. void __cdecl DBPetList::DBPetList(DBPetList *const this, ODBCInterface *pInterface);
  2119. void __cdecl DBPetList::DBPetList(DBPetList *const this, ODBCInterface *pInterface);
  2120. int __cdecl DBPetList::Load(DBPetList *const this);
  2121. int __cdecl DBPetList::Save(DBPetList *const this, void *pSource);
  2122. int __cdecl DBPetList::Delete(DBPetList *const this);
  2123. void __cdecl DBPetList::LoadPetSkillFrom_V0(_PET_SKILL *PetSkill, UINT PetSkillNum, _PET_SKILL *PetSkill_V0, UINT PetSkillNum_V0);
  2124. int __cdecl DBPetList::ParseResult(DBPetList *const this, void *pResult);
  2125. GUID_t __cdecl DBPetList::GetCharGuid(int a2);
  2126. void __cdecl DBPetList::SetCharGuid(int a3, int a4);
  2127. UINT __cdecl DBPetList::GetDBVersion(int a2);
  2128. void __cdecl DBPetList::SetDBVersion(int a3, int a4);
  2129. void __cdecl _tcf_0_114(void *);
  2130. void `global constructor keyed to'DBPetList::DBPetList(); // idb
  2131. void __cdecl DBPrivateInfo::DBPrivateInfo(DBPrivateInfo *const this, ODBCInterface *pInterface);
  2132. void __cdecl DBPrivateInfo::DBPrivateInfo(DBPrivateInfo *const this, ODBCInterface *pInterface);
  2133. int __cdecl DBPrivateInfo::Load(DBPrivateInfo *const this);
  2134. int __cdecl DBPrivateInfo::Save(DBPrivateInfo *const this, void *pSource);
  2135. int __cdecl DBPrivateInfo::Delete(DBPrivateInfo *const this);
  2136. int __cdecl DBPrivateInfo::ParseResult(DBPrivateInfo *const this, void *pResult);
  2137. GUID_t __cdecl DBPrivateInfo::GetCharGuid(int a2);
  2138. void __cdecl DBPrivateInfo::SetCharGuid(int a3, int a4);
  2139. UINT __cdecl DBPrivateInfo::GetDBVersion(int a2);
  2140. void __cdecl DBPrivateInfo::SetDBVersion(int a3, int a4);
  2141. void __cdecl _tcf_0_115(void *);
  2142. void `global constructor keyed to'DBPrivateInfo::DBPrivateInfo(); // idb
  2143. void __cdecl DBPvPInfo::DBPvPInfo(DBPvPInfo *const this, ODBCInterface *pInterface);
  2144. void __cdecl DBPvPInfo::DBPvPInfo(DBPvPInfo *const this, ODBCInterface *pInterface);
  2145. int __cdecl DBPvPInfo::Load(DBPvPInfo *const this);
  2146. int __cdecl DBPvPInfo::Save(DBPvPInfo *const this, void *pSource);
  2147. int __cdecl DBPvPInfo::Delete(DBPvPInfo *const this);
  2148. int __cdecl DBPvPInfo::ParseResult(DBPvPInfo *const this, void *pResult);
  2149. GUID_t __cdecl DBPvPInfo::GetCharGuid(int a2);
  2150. void __cdecl DBPvPInfo::SetCharGuid(int a3, int a4);
  2151. UINT __cdecl DBPvPInfo::GetDBVersion(int a2);
  2152. void __cdecl DBPvPInfo::SetDBVersion(int a3, int a4);
  2153. void __cdecl _tcf_0_116(void *);
  2154. void `global constructor keyed to'DBPvPInfo::DBPvPInfo(); // idb
  2155. void __cdecl DBRelationList::DBRelationList(DBRelationList *const this, ODBCInterface *pInterface);
  2156. void __cdecl DBRelationList::DBRelationList(DBRelationList *const this, ODBCInterface *pInterface);
  2157. int __cdecl DBRelationList::Load(DBRelationList *const this);
  2158. int __cdecl DBRelationList::Save(DBRelationList *const this, void *pSource);
  2159. int __cdecl DBRelationList::Delete(DBRelationList *const this);
  2160. int __cdecl DBRelationList::ParseResult(DBRelationList *const this, void *pResult);
  2161. GUID_t __cdecl DBRelationList::GetCharGuid(int a2);
  2162. void __cdecl DBRelationList::SetCharGuid(int a3, int a4);
  2163. void __cdecl DBRelationList::SetDBVersion(int a3, int a4);
  2164. UINT __cdecl DBRelationList::GetDBVersion(int a2);
  2165. void __cdecl _tcf_0_117(void *);
  2166. void `global constructor keyed to'DBRelationList::DBRelationList(); // idb
  2167. int __cdecl SkillCompare(const void *pVoid1, const void *pVoid2);
  2168. void __cdecl DBSkillList::DBSkillList(DBSkillList *const this, ODBCInterface *pInterface);
  2169. void __cdecl DBSkillList::DBSkillList(DBSkillList *const this, ODBCInterface *pInterface);
  2170. int __cdecl DBSkillList::Load(DBSkillList *const this);
  2171. int __cdecl DBSkillList::Save(DBSkillList *const this, void *pSource);
  2172. int __cdecl DBSkillList::Delete(DBSkillList *const this);
  2173. int __cdecl DBSkillList::ParseResult(DBSkillList *const this, void *pResult);
  2174. GUID_t __cdecl DBSkillList::GetCharGuid(int a2);
  2175. void __cdecl DBSkillList::SetCharGuid(int a3, int a4);
  2176. UINT __cdecl DBSkillList::GetDBVersion(int a2);
  2177. void __cdecl DBSkillList::SetDBVersion(int a3, int a4);
  2178. void __cdecl _tcf_0_118(void *);
  2179. void `global constructor keyed to'DBSkillList::DBSkillList(); // idb
  2180. void __cdecl DBTaskList::DBTaskList(DBTaskList *const this, ODBCInterface *pInterface);
  2181. void __cdecl DBTaskList::DBTaskList(DBTaskList *const this, ODBCInterface *pInterface);
  2182. int __cdecl DBTaskList::Load(DBTaskList *const this);
  2183. int __cdecl DBTaskList::Save(DBTaskList *const this, void *pSource);
  2184. int __cdecl DBTaskList::Delete(DBTaskList *const this);
  2185. int __cdecl DBTaskList::ParseResult(DBTaskList *const this, void *pResult);
  2186. GUID_t __cdecl DBTaskList::GetCharGuid(int a2);
  2187. void __cdecl DBTaskList::SetCharGuid(int a3, int a4);
  2188. UINT __cdecl DBTaskList::GetDBVersion(int a2);
  2189. void __cdecl DBTaskList::SetDBVersion(int a3, int a4);
  2190. void __cdecl _tcf_0_119(void *);
  2191. void `global constructor keyed to'DBTaskList::DBTaskList(); // idb
  2192. void __cdecl DBTitleInfo::DBTitleInfo(DBTitleInfo *const this, ODBCInterface *pInterface);
  2193. void __cdecl DBTitleInfo::DBTitleInfo(DBTitleInfo *const this, ODBCInterface *pInterface);
  2194. int __cdecl DBTitleInfo::Load(DBTitleInfo *const this);
  2195. int __cdecl DBTitleInfo::Save(DBTitleInfo *const this, void *pSource);
  2196. int __cdecl DBTitleInfo::Delete(DBTitleInfo *const this);
  2197. int __cdecl DBTitleInfo::ParseResult(DBTitleInfo *const this, void *pResult);
  2198. GUID_t __cdecl DBTitleInfo::GetCharGuid(int a2);
  2199. void __cdecl DBTitleInfo::SetCharGuid(int a3, int a4);
  2200. UINT __cdecl DBTitleInfo::GetDBVersion(int a2);
  2201. void __cdecl DBTitleInfo::SetDBVersion(int a3, int a4);
  2202. void __cdecl _tcf_0_120(void *);
  2203. void `global constructor keyed to'DBTitleInfo::DBTitleInfo(); // idb
  2204. int __cdecl XinFaCompare(const void *pVoid1, const void *pVoid2);
  2205. void __cdecl DBXinFaList::DBXinFaList(DBXinFaList *const this, ODBCInterface *pInterface);
  2206. void __cdecl DBXinFaList::DBXinFaList(DBXinFaList *const this, ODBCInterface *pInterface);
  2207. int __cdecl DBXinFaList::Load(DBXinFaList *const this);
  2208. int __cdecl DBXinFaList::Save(DBXinFaList *const this, void *pSource);
  2209. int __cdecl DBXinFaList::Delete(DBXinFaList *const this);
  2210. int __cdecl DBXinFaList::ParseResult(DBXinFaList *const this, void *pResult);
  2211. GUID_t __cdecl DBXinFaList::GetCharGuid(int a2);
  2212. void __cdecl DBXinFaList::SetCharGuid(int a3, int a4);
  2213. UINT __cdecl DBXinFaList::GetDBVersion(int a2);
  2214. void __cdecl DBXinFaList::SetDBVersion(int a3, int a4);
  2215. void __cdecl _tcf_0_121(void *);
  2216. void `global constructor keyed to'DBXinFaList::DBXinFaList(); // idb
  2217. void __cdecl ODBCBase::ODBCBase(_DWORD *a2);
  2218. void __cdecl ODBCBase::ODBCBase(_DWORD *a2);
  2219. UINT __cdecl ODBCBase::GetResultCount(int a2);
  2220. DB_QUERY *__cdecl ODBCBase::GetInternalQuery(int a2);
  2221. LONG_DB_QUERY *__cdecl ODBCBase::GetLongInterQuery(int a2);
  2222. INT __cdecl ODBCBase::GetInternalAffectCount(int a2);
  2223. int __cdecl ODBCBase::IsPrepare(int a2);
  2224. int __cdecl ODBCBase::Load(ODBCBase *const this);
  2225. int __cdecl ODBCBase::LongLoad(ODBCBase *const this);
  2226. int __cdecl ODBCBase::AddNew(ODBCBase *const this);
  2227. int __cdecl ODBCBase::Delete(ODBCBase *const this);
  2228. int __cdecl ODBCBase::LongDelete(ODBCBase *const this);
  2229. int __cdecl ODBCBase::Save(ODBCBase *const this, void *pSource);
  2230. int __cdecl ODBCBase::LongSave(ODBCBase *const this, void *pSource);
  2231. void __cdecl ODBCBase::SetDBName(int a3, int a4);
  2232. INT __cdecl ODBCBase::GetErrorCode(int a2);
  2233. CHAR *__cdecl ODBCBase::GetErrorMessage(int a2);
  2234. int __cdecl ODBCBase::CheckDBConnect(ODBCBase *const this, const CHAR *pInfo);
  2235. void __cdecl _tcf_0_122(void *);
  2236. void `global constructor keyed to'ODBCBase::ODBCBase(); // idb
  2237. INT __cdecl ODBCInterface::GetInt(ODBCInterface *const this, INT ColIndex, INT *const ErrorCode);
  2238. void __cdecl ODBCInterface::ODBCInterface(int a2);
  2239. void __cdecl ODBCInterface::ODBCInterface(int a2);
  2240. void __cdecl ODBCInterface::~ODBCInterface(ODBCInterface *const this);
  2241. void __cdecl ODBCInterface::~ODBCInterface(ODBCInterface *const this);
  2242. int __cdecl ODBCInterface::Close(ODBCInterface *const this);
  2243. void __cdecl ODBCInterface::Clear(ODBCInterface *const this);
  2244. void __cdecl ODBCInterface::Clear_NoCommit(ODBCInterface *const this);
  2245. UINT __cdecl ODBCInterface::GetUInt(ODBCInterface *const this, INT ColIndex, INT *const ErrorCode);
  2246. FLOAT __cdecl ODBCInterface::GetFloat(ODBCInterface *const this, INT ColIndex, INT *const ErrorCode);
  2247. void __cdecl ODBCInterface::GetString(ODBCInterface *const this, INT ColIndex, CHAR *buf, INT BufLen, INT *const ErrorCode);
  2248. void __cdecl ODBCInterface::GetField(ODBCInterface *const this, INT ColIndex, CHAR *buf, INT BufLen, INT *const ErrorCode);
  2249. void __cdecl ODBCInterface::GetLongField(ODBCInterface *const this, INT ColIndex, CHAR *buf, INT BufLen, INT *const ErrorCode);
  2250. void __cdecl ODBCInterface::SaveErrorLog(ODBCInterface *const this, const CHAR *pLog);
  2251. void __cdecl ODBCInterface::DiagStateEx(ODBCInterface *const this);
  2252. void __cdecl ODBCInterface::DiagState(ODBCInterface *const this);
  2253. int __cdecl ODBCInterface::LongFetch(ODBCInterface *const this);
  2254. int __cdecl ODBCInterface::Fetch(ODBCInterface *const this);
  2255. int __cdecl ODBCInterface::Connect(ODBCInterface *const this);
  2256. int __cdecl ODBCInterface::Connect(ODBCInterface *const this, const CHAR *ConnectStr, const CHAR *UserName, const CHAR *Password);
  2257. int __cdecl ODBCInterface::LongExecute(ODBCInterface *const this);
  2258. int __cdecl ODBCInterface::Execute(ODBCInterface *const this);
  2259. void __cdecl ODBCInterface::SaveWarrning(ODBCInterface *const this, const CHAR *pLog);
  2260. void __cdecl ODBCInterface::CleanEnv(ODBCInterface *const this);
  2261. void __cdecl ODBCInterface::Dump(ODBCInterface *const this, INT col);
  2262. void __cdecl _tcf_0_123(void *);
  2263. void `global constructor keyed to'ODBCInterface::ODBCInterface(); // idb
  2264. void __cdecl _tcf_0_124(void *);
  2265. void `global constructor keyed to'LoadCharList(); // idb
  2266. void __cdecl BillingPlayer::BillingPlayer(BillingPlayer *const this, BOOL bIsServer);
  2267. void __cdecl BillingPlayer::BillingPlayer(BillingPlayer *const this, BOOL bIsServer);
  2268. void __cdecl BillingPlayer::~BillingPlayer(Player_AtLogin *a2);
  2269. void __cdecl BillingPlayer::~BillingPlayer(Player_AtLogin *a2);
  2270. void __cdecl BillingPlayer::~BillingPlayer(Player *a2);
  2271. BOOL __cdecl BillingPlayer::ProcessCommand(BillingPlayer *const this, BOOL Option);
  2272. BOOL __cdecl BillingPlayer::ProcessInput(BillingPlayer *const this);
  2273. BOOL __cdecl BillingPlayer::ProcessOutput(BillingPlayer *const this);
  2274. BOOL __cdecl BillingPlayer::SendPacket(BillingPlayer *const this, BillPacket *pPacket);
  2275. BOOL __cdecl BillingPlayer::IsValid(BillingPlayer *const this);
  2276. void __cdecl BillingPlayer::CleanUp(BillingPlayer *const this);
  2277. BOOL __cdecl BillingPlayer::HeartBeat(BillingPlayer *const this, UINT uTime);
  2278. void __cdecl _tcf_0_125(void *);
  2279. void `global constructor keyed to'BillingPlayer::BillingPlayer(); // idb
  2280. void __cdecl Player_AtLogin::onPacketExecuteError(Player_AtLogin *const this, PacketID_t id, const CHAR *debugBuffer, UINT debugBufferLength);
  2281. void __cdecl Player_AtLogin::onPacketExecuteBreak(Player_AtLogin *const this, PacketID_t id, const CHAR *debugBuffer, UINT debugBufferLength);
  2282. void __cdecl Player_AtLogin::onPacketExecuteContinue(Player_AtLogin *const this, PacketID_t id, const CHAR *debugBuffer, UINT debugBufferLength);
  2283. void __cdecl Player_AtLogin::onPacketExecuteNotRemove(Player_AtLogin *const this, PacketID_t id, const CHAR *debugBuffer, UINT debugBufferLength);
  2284. void __cdecl Player_AtLogin::onPacketExecuteNotRemoveError(Player_AtLogin *const this, PacketID_t id, const CHAR *debugBuffer, UINT debugBufferLength);
  2285. BOOL __cdecl BillingPlayer::IsServerPlayer(BillingPlayer *const this);
  2286. BOOL __cdecl BillingPlayer::IsBillingPlayer(BillingPlayer *const this);
  2287. BOOL __cdecl BillingPlayer::IsLoginPlayer(BillingPlayer *const this);
  2288. void __cdecl LoginPlayer::ResetDisconnectCountDown(int a2);
  2289. void __cdecl LoginPlayer::LoginPlayer(LoginPlayer *const this);
  2290. void __cdecl LoginPlayer::LoginPlayer(LoginPlayer *const this);
  2291. void __cdecl LoginPlayer::~LoginPlayer(Player_AtLogin *a2);
  2292. void __cdecl LoginPlayer::~LoginPlayer(Player_AtLogin *a2);
  2293. void __cdecl LoginPlayer::~LoginPlayer(Player *a2);
  2294. void __cdecl LoginPlayer::CleanUp(LoginPlayer *const this);
  2295. BOOL __cdecl LoginPlayer::ProcessCommand(LoginPlayer *const this, BOOL Option);
  2296. BOOL __cdecl LoginPlayer::ProcessInput(LoginPlayer *const this);
  2297. BOOL __cdecl LoginPlayer::ProcessOutput(LoginPlayer *const this);
  2298. BOOL __cdecl LoginPlayer::SendPacket(LoginPlayer *const this, Packet *pPacket);
  2299. BOOL __cdecl LoginPlayer::IsDisconnectCountDown(const LoginPlayer *const this);
  2300. void __cdecl LoginPlayer::TrigerDisconnectCountDown(LoginPlayer *const this, UINT a3);
  2301. BOOL __cdecl LoginPlayer::DisconnectCountDown(LoginPlayer *const this, UINT now);
  2302. BOOL __cdecl LoginPlayer::HeartBeat(LoginPlayer *const this, UINT uTime);
  2303. void __cdecl LoginPlayer::SetCPUInformation(LoginPlayer *const this, CHAR *CPUInformation);
  2304. CHAR *__cdecl LoginPlayer::GetCPUInformation(LoginPlayer *const this);
  2305. void __cdecl LoginPlayer::SetVideoInformation(LoginPlayer *const this, CHAR *VideoInformation);
  2306. CHAR *__cdecl LoginPlayer::GetVideoInformation(LoginPlayer *const this);
  2307. BOOL __cdecl LoginPlayer::FreeOwn(LoginPlayer *const this);
  2308. void __cdecl LoginPlayer::Init(LoginPlayer *const this);
  2309. void __cdecl LoginPlayer::Disconnect(LoginPlayer *const this);
  2310. void __cdecl LoginPlayer::ResetKick(LoginPlayer *const this);
  2311. const CHAR *__cdecl LoginPlayer::GetAccount(LoginPlayer *const this);
  2312. void __cdecl LoginPlayer::SetAccount(const CHAR *pAccount, const char *pAccounta);
  2313. UINT __cdecl LoginPlayer::GetVersion(int a2);
  2314. void __cdecl LoginPlayer::SetVersion(int a3, int a4);
  2315. UINT __cdecl LoginPlayer::GetQueuePos(int a2);
  2316. void __cdecl LoginPlayer::SetQueuePos(int a3, int a4);
  2317. void __cdecl LoginPlayer::SetCharNumber(int a3, int a4);
  2318. INT __cdecl LoginPlayer::GetCharNumber(int a2);
  2319. void __cdecl LoginPlayer::SetCharGUID(UINT uIndex, int a4, UINT uIndexa);
  2320. BOOL __cdecl LoginPlayer::IsGUIDOwner(LoginPlayer *const this, GUID_t guid);
  2321. void __cdecl LoginPlayer::SetUserKey(int a3, int a4);
  2322. UINT __cdecl LoginPlayer::GetUserKey(int a2);
  2323. void __cdecl LoginPlayer::SetDBOperating(int a3, int a4);
  2324. BOOL __cdecl LoginPlayer::GetDBOperating(int a2);
  2325. void __cdecl LoginPlayer::SetReadyKickCount(int a3, int a4);
  2326. INT __cdecl LoginPlayer::GetReadyKickCount(int a2);
  2327. UINT __cdecl LoginPlayer::GetLastSendTurnTime(int a2);
  2328. void __cdecl LoginPlayer::SetLastSendTurnTime(int a3, int a4);
  2329. void __cdecl LoginPlayer::SetWrongPWCount(int a3, int a4);
  2330. INT __cdecl LoginPlayer::GetWrongPWCount(int a2);
  2331. int __cdecl LoginPlayer::GetChooseSceneID(int a2);
  2332. void __cdecl LoginPlayer::SetChooseSceneID(int sid, __int16 sida);
  2333. // WORLD_POS *__userpurge LoginPlayer::GetWorldPos@<eax>(WORLD_POS *retstr, const LoginPlayer *const this);
  2334. void __fastcall LoginPlayer::SetWorldPos(LoginPlayer *const this, WORLD_POS *const pos);
  2335. void __cdecl LoginPlayer::SetAccFatigueSign(int cSign, CHAR cSigna);
  2336. void __cdecl LoginPlayer::SetAccOnlineTime(int a3, int a4);
  2337. BOOL __cdecl LoginPlayer::GetPhoneBind(int a2);
  2338. BOOL __cdecl LoginPlayer::GetIPBind(int a2);
  2339. BOOL __cdecl LoginPlayer::GetMiBaoBind(int a2);
  2340. BOOL __cdecl LoginPlayer::GetMacBind(int a2);
  2341. BOOL __cdecl LoginPlayer::GetRealNameBind(int a2);
  2342. BOOL __cdecl LoginPlayer::GetInputNameBind(int a2);
  2343. BOOL __cdecl LoginPlayer::GetPhoneMiBaoBind(int a2);
  2344. void __cdecl LoginPlayer::SetPhoneBind(LoginPlayer *const this, CHAR cSign);
  2345. void __cdecl LoginPlayer::SetIPBind(LoginPlayer *const this, CHAR cSign);
  2346. void __cdecl LoginPlayer::SetMiBaoBind(LoginPlayer *const this, CHAR cSign);
  2347. void __cdecl LoginPlayer::SetMacBind(LoginPlayer *const this, CHAR cSign);
  2348. void __cdecl LoginPlayer::SetRealNameBind(LoginPlayer *const this, CHAR cSign);
  2349. void __cdecl LoginPlayer::SetInputNameBind(LoginPlayer *const this, CHAR cSign);
  2350. void __cdecl LoginPlayer::SetPhoneMiBaoBind(LoginPlayer *const this, CHAR cSign);
  2351. CHAR *__cdecl ProxyTool_GetIPByNetProvider(const LoginPlayer *pPlayer, ID_t ServerID);
  2352. UINT __cdecl ProxyTool_GetPortByNetProvider(const LoginPlayer *pPlayer, ID_t ServerID);
  2353. void __cdecl LoginPlayer::SendCreateCode(LoginPlayer *const this);
  2354. void __cdecl LoginPlayer::SendLoginCode(LoginPlayer *const this);
  2355. int __cdecl LoginPlayer::GetIsPilferedAccount(int a2);
  2356. void __cdecl LoginPlayer::SetIsPilferedAccount(int isPilfered, USHORT isPilfereda);
  2357. void __cdecl _tcf_0_126(void *);
  2358. void `global constructor keyed to'LoginPlayer::LoginPlayer(); // idb
  2359. BOOL __cdecl LoginPlayer::IsBillingPlayer(LoginPlayer *const this);
  2360. BOOL __cdecl LoginPlayer::IsLoginPlayer(LoginPlayer *const this);
  2361. BOOL __cdecl LoginPlayer::IsServerPlayer(LoginPlayer *const this);
  2362. void __cdecl LoginPlayerManager::LoginPlayerManager(LoginPlayerManager *const this);
  2363. void __cdecl LoginPlayerManager::LoginPlayerManager(LoginPlayerManager *const this);
  2364. void __cdecl LoginPlayerManager::~LoginPlayerManager(LoginPlayerManager *const this);
  2365. // void __usercall __noreturn sub_808C33D(int a1@<esi>);
  2366. void __cdecl LoginPlayerManager::~LoginPlayerManager(LoginPlayerManager *const this);
  2367. // void __usercall __noreturn sub_808C485(int a1@<esi>);
  2368. BOOL __cdecl LoginPlayerManager::Init(LoginPlayerManager *const this);
  2369. BOOL __cdecl LoginPlayerManager::Select(LoginPlayerManager *const this);
  2370. BOOL __cdecl LoginPlayerManager::AddPlayer(LoginPlayerManager *const this, Player *pPlayer);
  2371. BOOL __cdecl LoginPlayerManager::AcceptNewConnection(LoginPlayerManager *const this);
  2372. BOOL __cdecl LoginPlayerManager::DelPlayer(LoginPlayerManager *const this, PlayerID_t pid);
  2373. BOOL __cdecl LoginPlayerManager::RemovePlayer(LoginPlayerManager *const this, Player *pPlayer);
  2374. BOOL __cdecl LoginPlayerManager::ProcessCommands(LoginPlayerManager *const this);
  2375. BOOL __cdecl LoginPlayerManager::ProcessExceptions(LoginPlayerManager *const this);
  2376. BOOL __cdecl LoginPlayerManager::ProcessOutputs(LoginPlayerManager *const this);
  2377. BOOL __cdecl LoginPlayerManager::ProcessInputs(LoginPlayerManager *const this);
  2378. BOOL __cdecl LoginPlayerManager::HeartBeat(LoginPlayerManager *const this);
  2379. void __cdecl LoginPlayerManager::RemoveAllPlayer(LoginPlayerManager *const this);
  2380. BOOL __cdecl LoginPlayerManager::RecvPacket(LoginPlayerManager *const this, Packet **const pPacket, PlayerID_t *const PlayerID, UINT *const Flag);
  2381. BOOL __cdecl LoginPlayerManager::MovePacket(LoginPlayerManager *const this, PlayerID_t PlayerID);
  2382. BOOL __cdecl LoginPlayerManager::ProcessCacheCommands(LoginPlayerManager *const this);
  2383. BOOL __cdecl LoginPlayerManager::ResizeCache(LoginPlayerManager *const this);
  2384. BOOL __cdecl LoginPlayerManager::SendPacket(LoginPlayerManager *const this, Packet *pPacket, PlayerID_t PlayerID, UINT Flag);
  2385. void __cdecl _tcf_0_127(void *);
  2386. void `global constructor keyed to'g_pLoginPlayerManager(); // idb
  2387. void __cdecl Player_AtLogin::Player_AtLogin(Player *a3, unsigned int a4);
  2388. void __cdecl Player_AtLogin::Player_AtLogin(Player *a3, unsigned int a4);
  2389. void __cdecl Player_AtLogin::~Player_AtLogin(Player *a2);
  2390. void __cdecl Player_AtLogin::~Player_AtLogin(Player *a2);
  2391. void __cdecl Player_AtLogin::~Player_AtLogin(Player *a2);
  2392. void __cdecl Player_AtLogin::CleanUp(Player_AtLogin *const this);
  2393. BOOL __cdecl Player_AtLogin::ProcessInput(Player_AtLogin *const this);
  2394. BOOL __cdecl Player_AtLogin::ProcessOutput(Player_AtLogin *const this);
  2395. void __cdecl Player_AtLogin::onPacketIDInvalid(Player_AtLogin *const this, PacketID_t packetID);
  2396. void __cdecl Player_AtLogin::onPacketSizeInvalid(Player_AtLogin *const this, PacketID_t packetID, UINT packetSize, UINT packetMaxSize);
  2397. void __cdecl Player_AtLogin::onPacketCreateError(Player_AtLogin *const this, PacketID_t packetID, UINT packetSize, UINT packetMaxSize);
  2398. void __cdecl Player_AtLogin::onPacketReadError(Player_AtLogin *const this, PacketID_t id, UINT packetSize, UINT packetMaxSize, const CHAR *debugBuffer, UINT debugBufferLength);
  2399. BOOL __cdecl Player_AtLogin::beforeExecutePacket(UINT packetIndex);
  2400. void __cdecl Player_AtLogin::onPacketExecuteUNKNOWN(Player_AtLogin *const this, PacketID_t id, const CHAR *debugBuffer, UINT debugBufferLength);
  2401. void __cdecl Player_AtLogin::onExecutePacketException(Player_AtLogin *const this, INT ring, const CHAR *debugBuffer, UINT debugBufferLength);
  2402. BOOL __cdecl Player_AtLogin::ProcessCommand(Player_AtLogin *const this, BOOL);
  2403. BOOL __cdecl Player_AtLogin::SendPacket(Player_AtLogin *const this, Packet *pPacket);
  2404. BOOL __cdecl Player_AtLogin::HeartBeat(Player_AtLogin *const this, UINT uTime);
  2405. void __cdecl Player_AtLogin::ResetKick(Player_AtLogin *const this);
  2406. INT __cdecl Player_AtLogin::WhereThisPlayerFrom(const Player_AtLogin *const this);
  2407. CHAR *__cdecl ProxyTool_GetCorrespondingIP(const Player *pPlayer, ID_t ServerID);
  2408. UINT __cdecl ProxyTool_GetCorrespondingPort(const Player *pPlayer, ID_t ServerID);
  2409. void __cdecl _tcf_0_128(void *);
  2410. void `global constructor keyed to'Player_AtLogin::Player_AtLogin(); // idb
  2411. void __cdecl PlayerManager::PlayerManager(PlayerManager *const this);
  2412. void __cdecl PlayerManager::PlayerManager(PlayerManager *const this);
  2413. void __cdecl PlayerManager::CleanUp(PlayerManager *const this);
  2414. void __cdecl PlayerManager::~PlayerManager(PlayerManager *const a2);
  2415. void __cdecl PlayerManager::~PlayerManager(PlayerManager *const a2);
  2416. BOOL __cdecl PlayerManager::AddPlayer(PlayerManager *const this, Player_AtLogin *pPlayer);
  2417. BOOL __cdecl PlayerManager::AddPlayer(PlayerManager *const this, Player_AtLogin *pPlayer, UINT MaxPlayer);
  2418. BOOL __cdecl PlayerManager::AddPlayer(PlayerManager *const this, PlayerID_t pid);
  2419. void __cdecl PlayerManager::RemovePlayer(PlayerManager *const this, PlayerID_t pid);
  2420. BOOL __cdecl PlayerManager::HeartBeat(PlayerManager *const this, UINT uTime);
  2421. void __cdecl _tcf_0_129(void *);
  2422. void `global constructor keyed to'PlayerManager::PlayerManager(); // idb
  2423. void __cdecl PlayerPool::PlayerPool(int a2);
  2424. void __cdecl PlayerPool::PlayerPool(int a2);
  2425. void __cdecl PlayerPool::~PlayerPool(PlayerPool *const this);
  2426. // void __usercall __noreturn sub_808EF08(int a1@<ebx>, int a2@<esi>);
  2427. void __cdecl PlayerPool::~PlayerPool(PlayerPool *const this);
  2428. // void __usercall __noreturn sub_808EFD8(int a1@<ebx>, int a2@<esi>);
  2429. BOOL __cdecl PlayerPool::Init(PlayerPool *const this);
  2430. LoginPlayer *__cdecl PlayerPool::NewPlayer(PlayerPool *const this);
  2431. LoginPlayer *__cdecl PlayerPool::NewPlayer(PlayerPool *const this, PlayerID_t PlayerID);
  2432. void __cdecl PlayerPool::DelPlayer(PlayerPool *const this, PlayerID_t PlayerID);
  2433. void __cdecl _tcf_0_130(void *);
  2434. void `global constructor keyed to'g_pPlayerPool(); // idb
  2435. void __cdecl ServerPlayer::ServerPlayer(BOOL bIsServer, unsigned int bIsServera);
  2436. void __cdecl ServerPlayer::ServerPlayer(BOOL bIsServer, unsigned int bIsServera);
  2437. void __cdecl ServerPlayer::~ServerPlayer(Player_AtLogin *a2);
  2438. void __cdecl ServerPlayer::~ServerPlayer(Player_AtLogin *a2);
  2439. void __cdecl ServerPlayer::~ServerPlayer(Player *a2);
  2440. BOOL __cdecl ServerPlayer::ProcessCommand(ServerPlayer *const this, BOOL Option);
  2441. BOOL __cdecl ServerPlayer::ProcessInput(ServerPlayer *const this);
  2442. BOOL __cdecl ServerPlayer::ProcessOutput(ServerPlayer *const this);
  2443. BOOL __cdecl ServerPlayer::SendPacket(ServerPlayer *const this, Packet *pPacket);
  2444. BOOL __cdecl ServerPlayer::IsValid(ServerPlayer *const this);
  2445. void __cdecl ServerPlayer::CleanUp(ServerPlayer *const this);
  2446. BOOL __cdecl ServerPlayer::HeartBeat(ServerPlayer *const this, UINT uTime);
  2447. void __cdecl _tcf_0_131(void *);
  2448. void `global constructor keyed to'ServerPlayer::ServerPlayer(); // idb
  2449. BOOL __cdecl ServerPlayer::IsLoginPlayer(ServerPlayer *const this);
  2450. BOOL __cdecl ServerPlayer::IsServerPlayer(ServerPlayer *const this);
  2451. BOOL __cdecl ServerPlayer::IsBillingPlayer(ServerPlayer *const this);
  2452. void __cdecl TurnPlayerQueue::TurnPlayerQueue(TurnPlayerQueue *const this);
  2453. void __noreturn sub_808F840();
  2454. void __cdecl TurnPlayerQueue::TurnPlayerQueue(TurnPlayerQueue *const this);
  2455. void __noreturn sub_808F91C();
  2456. void __cdecl TurnPlayerQueue::~TurnPlayerQueue(TurnPlayerQueue *const this);
  2457. void __cdecl TurnPlayerQueue::~TurnPlayerQueue(TurnPlayerQueue *const this);
  2458. BOOL __cdecl TurnPlayerQueue::Init(TurnPlayerQueue *const this);
  2459. BOOL __cdecl TurnPlayerQueue::AddInPlayer(TurnPlayerQueue *const this, PlayerID_t pID, const CHAR *Name, UINT *const QueuePos);
  2460. BOOL __cdecl TurnPlayerQueue::GetOutPlayer(TurnPlayerQueue *const this, PlayerID_t *const pID, CHAR *NameBuff);
  2461. void __cdecl TurnPlayerQueue::RePosQueue(TurnPlayerQueue *const this);
  2462. void __cdecl TurnPlayerQueue::SortQueuePos(TurnPlayerQueue *const this);
  2463. void __cdecl WorldPlayerQueue::WorldPlayerQueue(WorldPlayerQueue *const this);
  2464. void __noreturn sub_8090237();
  2465. void __cdecl WorldPlayerQueue::WorldPlayerQueue(WorldPlayerQueue *const this);
  2466. void __noreturn sub_809032B();
  2467. void __cdecl WorldPlayerQueue::~WorldPlayerQueue(WorldPlayerQueue *const this);
  2468. void __cdecl WorldPlayerQueue::~WorldPlayerQueue(WorldPlayerQueue *const this);
  2469. BOOL __cdecl WorldPlayerQueue::Init(WorldPlayerQueue *const this);
  2470. BOOL __cdecl WorldPlayerQueue::AddInPlayer(WorldPlayerQueue *const this, PlayerID_t pID, const CHAR *Name, GUID_t guid, UINT *const QueuePos);
  2471. BOOL __cdecl WorldPlayerQueue::GetOutPlayer(WorldPlayerQueue *const this, UINT QueuePos);
  2472. BOOL __cdecl WorldPlayerQueue::FindHeadPlayer(WorldPlayerQueue *const this, UINT *const QueuePos);
  2473. WORLD_PLAYER_INFO *__cdecl WorldPlayerQueue::GetPlayer(_DWORD *a3, int a4);
  2474. void __cdecl WorldPlayerQueue::RePosQueue(WorldPlayerQueue *const this);
  2475. void __cdecl WorldPlayerQueue::SortQueuePos(WorldPlayerQueue *const this);
  2476. void __cdecl _tcf_0_132(void *);
  2477. void __cdecl _tcf_1_3(void *);
  2478. void __cdecl _tcf_2(void *);
  2479. void `global constructor keyed to'g_WorldPlayerCounter1(); // idb
  2480. UINT __cdecl Packets::BLRetAccCheckHandler::Execute(Packets::BLRetAccCheck *pPacket, Player *pPlayer);
  2481. void __cdecl _tcf_0_133(void *);
  2482. void `global constructor keyed to'Packets::BLRetAccCheckHandler::Execute(); // idb
  2483. UINT __cdecl Packets::BLRetAuthHandler::Execute(Packets::BLRetAuth *pPacket, Player *pPlayer);
  2484. void __cdecl _tcf_0_134(void *);
  2485. void `global constructor keyed to'Packets::BLRetAuthHandler::Execute(); // idb
  2486. UINT __cdecl Packets::BLRetBillingEndHandler::Execute(Packets::BLRetBillingEnd *pPacket, Player *pPlayer);
  2487. void __cdecl _tcf_0_135(void *);
  2488. void `global constructor keyed to'Packets::BLRetBillingEndHandler::Execute(); // idb
  2489. UINT __cdecl Packets::BLRetBillingKeepHandler::Execute(Packets::BLRetBillingKeep *pPacket, Player *pPlayer);
  2490. void __cdecl _tcf_0_136(void *);
  2491. void `global constructor keyed to'Packets::BLRetBillingKeepHandler::Execute(); // idb
  2492. UINT __cdecl Packets::BLRetBillingStartHandler::Execute(Packets::BLRetBillingStart *pPacket, Player *pPlayer);
  2493. void __cdecl _tcf_0_137(void *);
  2494. void `global constructor keyed to'Packets::BLRetBillingStartHandler::Execute(); // idb
  2495. UINT __cdecl Packets::BLRetConnectHandler::Execute(Packets::BLRetConnect *pPacket, Player *pPlayer);
  2496. void __cdecl _tcf_0_138(void *);
  2497. void `global constructor keyed to'Packets::BLRetConnectHandler::Execute(); // idb
  2498. UINT __cdecl Packets::BLRetKeepLiveHandler::Execute(Packets::BLRetKeepLive *pPacket, Player *pPlayer);
  2499. void __cdecl _tcf_0_139(void *);
  2500. void `global constructor keyed to'Packets::BLRetKeepLiveHandler::Execute(); // idb
  2501. UINT __cdecl Packets::BLRetKickALLHandler::Execute(Packets::BLRetKickALL *pPacket, Player *pPlayer);
  2502. void __cdecl _tcf_0_140(void *);
  2503. void `global constructor keyed to'Packets::BLRetKickALLHandler::Execute(); // idb
  2504. UINT __cdecl Packets::BLRetRegPassPortHandler::Execute(Packets::BLRetRegPassPort *pPacket, Player *pPlayer);
  2505. void __cdecl _tcf_0_141(void *);
  2506. void `global constructor keyed to'Packets::BLRetRegPassPortHandler::Execute(); // idb
  2507. UINT __cdecl Packets::CLAskCharListHandler::Execute(Packets::CLAskCharList *pPacket, Player *pPlayer);
  2508. void __cdecl _tcf_0_142(void *);
  2509. void `global constructor keyed to'Packets::CLAskCharListHandler::Execute(); // idb
  2510. UINT __cdecl Packets::CLAskCharLoginHandler::Execute(Packets::CLAskCharLogin *pPacket, Player *pPlayer);
  2511. void __cdecl _tcf_0_143(void *);
  2512. void `global constructor keyed to'Packets::CLAskCharLoginHandler::Execute(); // idb
  2513. UINT __cdecl Packets::CLAskCreateCharHandler::Execute(Packets::CLAskCreateChar *pPacket, Player *pPlayer);
  2514. void __cdecl _tcf_0_144(void *);
  2515. void `global constructor keyed to'Packets::CLAskCreateCharHandler::Execute(); // idb
  2516. void __cdecl FULLUSERDATA::FULLUSERDATA(FULLUSERDATA_0 *const this);
  2517. void __noreturn sub_80955B9();
  2518. UINT __cdecl Packets::CLAskCreateCodeHandler::Execute(Packets::CLAskCreateCode *pPacket, Player *pPlayer);
  2519. void __cdecl _tcf_0_145(void *);
  2520. void `global constructor keyed to'Packets::CLAskCreateCodeHandler::Execute(); // idb
  2521. UINT __cdecl Packets::CLAskDeleteCharHandler::Execute(Packets::CLAskDeleteChar *pPacket, Player *pPlayer);
  2522. void __cdecl _tcf_0_146(void *);
  2523. void `global constructor keyed to'Packets::CLAskDeleteCharHandler::Execute(); // idb
  2524. UINT __cdecl Packets::CLAskLoginCodeHandler::Execute(Packets::CLAskLoginCode *pPacket, Player *pPlayer);
  2525. void __cdecl _tcf_0_147(void *);
  2526. void `global constructor keyed to'Packets::CLAskLoginCodeHandler::Execute(); // idb
  2527. UINT __cdecl Packets::CLAskLoginHandler::Execute(Packets::CLAskLogin *pPacket, Player *pPlayer);
  2528. void __cdecl _tcf_0_148(void *);
  2529. void `global constructor keyed to'Packets::CLAskLoginHandler::Execute(); // idb
  2530. UINT __cdecl Packets::CLAskRegPassPortHandler::Execute(Packets::CLAskRegPassPort *pPacket, Player *pPlayer);
  2531. void __cdecl _tcf_0_149(void *);
  2532. void `global constructor keyed to'Packets::CLAskRegPassPortHandler::Execute(); // idb
  2533. UINT __cdecl Packets::CLConnectHandler::Execute(Packets::CLConnect *pPacket, Player *pPlayer);
  2534. void __cdecl _tcf_0_150(void *);
  2535. void `global constructor keyed to'Packets::CLConnectHandler::Execute(); // idb
  2536. UINT __cdecl Packets::KeyExchangeHandler::Execute(Packets::KeyExchange *pPacket, Player *pPlayer);
  2537. void __cdecl _tcf_0_151(void *);
  2538. void `global constructor keyed to'Packets::KeyExchangeHandler::Execute(); // idb
  2539. UINT __cdecl Packets::LBAccCheckHandler::Execute(Packets::LBAccCheck *pPacket, Player *pPlayer);
  2540. void __cdecl _tcf_0_152(void *);
  2541. void `global constructor keyed to'Packets::LBAccCheckHandler::Execute(); // idb
  2542. UINT __cdecl Packets::LBAskAuthHandler::Execute(Packets::LBAskAuth *pPacket, Player *pPlayer);
  2543. void __cdecl _tcf_0_153(void *);
  2544. void `global constructor keyed to'Packets::LBAskAuthHandler::Execute(); // idb
  2545. UINT __cdecl Packets::LBAskRegAuthHandler::Execute(Packets::LBAskRegAuth *pPacket, Player *pPlayer);
  2546. void __cdecl _tcf_0_154(void *);
  2547. void `global constructor keyed to'Packets::LBAskRegAuthHandler::Execute(); // idb
  2548. UINT __cdecl Packets::LBBillingEndHandler::Execute(Packets::LBBillingEnd *pPacket, Player *pPlayer);
  2549. void __cdecl _tcf_0_155(void *);
  2550. void `global constructor keyed to'Packets::LBBillingEndHandler::Execute(); // idb
  2551. UINT __cdecl Packets::LBBillingKeepHandler::Execute(Packets::LBBillingKeep *pPacket, Player *pPlayer);
  2552. void __cdecl _tcf_0_156(void *);
  2553. void `global constructor keyed to'Packets::LBBillingKeepHandler::Execute(); // idb
  2554. UINT __cdecl Packets::LBBillingStartHandler::Execute(Packets::LBBillingStart *pPacket, Player *pPlayer);
  2555. void __cdecl _tcf_0_157(void *);
  2556. void `global constructor keyed to'Packets::LBBillingStartHandler::Execute(); // idb
  2557. UINT __cdecl Packets::LBConnectHandler::Execute(Packets::LBConnect *pPacket, Player *pPlayer);
  2558. void __cdecl _tcf_0_158(void *);
  2559. void `global constructor keyed to'Packets::LBConnectHandler::Execute(); // idb
  2560. UINT __cdecl Packets::LBKeepLiveHandler::Execute(Packets::LBKeepLive *pPacket, Player *pPlayer);
  2561. void __cdecl _tcf_0_159(void *);
  2562. void `global constructor keyed to'Packets::LBKeepLiveHandler::Execute(); // idb
  2563. UINT __cdecl Packets::LBKickAllHandler::Execute(Packets::LBKickAll *pPacket, Player *pPlayer);
  2564. void __cdecl _tcf_0_160(void *);
  2565. void `global constructor keyed to'Packets::LBKickAllHandler::Execute(); // idb
  2566. UINT __cdecl Packets::LBRegPassPortHandler::Execute(Packets::LBRegPassPort *pPacket, Player *pPlayer);
  2567. void __cdecl _tcf_0_161(void *);
  2568. void `global constructor keyed to'Packets::LBRegPassPortHandler::Execute(); // idb
  2569. UINT __cdecl Packets::LCRetCharListHandler::Execute(Packets::LCRetCharList *pPacket, Player *pPlayer);
  2570. void __cdecl _tcf_0_162(void *);
  2571. void `global constructor keyed to'Packets::LCRetCharListHandler::Execute(); // idb
  2572. UINT __cdecl Packets::LCRetCharLoginHandler::Execute(Packets::LCRetCharLogin *pPacket, Player *pPlayer);
  2573. void __cdecl _tcf_0_163(void *);
  2574. void `global constructor keyed to'Packets::LCRetCharLoginHandler::Execute(); // idb
  2575. UINT __cdecl Packets::LCRetConnectHandler::Execute(Packets::LCRetConnect *pPacket, Player *pPlayer);
  2576. void __cdecl _tcf_0_164(void *);
  2577. void `global constructor keyed to'Packets::LCRetConnectHandler::Execute(); // idb
  2578. UINT __cdecl Packets::LCRetCreateCharHandler::Execute(Packets::LCRetCreateChar *pPacket, Player *pPlayer);
  2579. void __cdecl _tcf_0_165(void *);
  2580. void `global constructor keyed to'Packets::LCRetCreateCharHandler::Execute(); // idb
  2581. UINT __cdecl Packets::LCRetCreateCodeHandler::Execute(Packets::LCRetCreateCode *pPacket, Player *pPlayer);
  2582. void __cdecl _tcf_0_166(void *);
  2583. void `global constructor keyed to'Packets::LCRetCreateCodeHandler::Execute(); // idb
  2584. UINT __cdecl Packets::LCRetDeleteCharHandler::Execute(Packets::LCRetDeleteChar *pPacket, Player *pPlayer);
  2585. void __cdecl _tcf_0_167(void *);
  2586. void `global constructor keyed to'Packets::LCRetDeleteCharHandler::Execute(); // idb
  2587. UINT __cdecl Packets::LCRetLoginCodeHandler::Execute(Packets::LCRetLoginCode *pPacket, Player *pPlayer);
  2588. void __cdecl _tcf_0_168(void *);
  2589. void `global constructor keyed to'Packets::LCRetLoginCodeHandler::Execute(); // idb
  2590. UINT __cdecl Packets::LCRetLoginHandler::Execute(Packets::LCRetLogin *pPacket, Player *pPlayer);
  2591. void __cdecl _tcf_0_169(void *);
  2592. void `global constructor keyed to'Packets::LCRetLoginHandler::Execute(); // idb
  2593. UINT __cdecl Packets::LCStatusHandler::Execute(Packets::LCStatus *pPacket, Player *pPlayer);
  2594. void __cdecl _tcf_0_170(void *);
  2595. void `global constructor keyed to'Packets::LCStatusHandler::Execute(); // idb
  2596. UINT __cdecl Packets::LWAskCharLoginHandler::Execute(Packets::LWAskCharLogin *pPacket, Player *pPlayer);
  2597. void __cdecl _tcf_0_171(void *);
  2598. void `global constructor keyed to'Packets::LWAskCharLoginHandler::Execute(); // idb
  2599. UINT __cdecl Packets::LWNotifyUserHandler::Execute(Packets::LWNotifyUser *pPacket, Player *pPlayer);
  2600. void __cdecl _tcf_0_172(void *);
  2601. void `global constructor keyed to'Packets::LWNotifyUserHandler::Execute(); // idb
  2602. UINT __cdecl Packets::LWRetBillingEndHandler::Execute(Packets::LWRetBillingEnd *pPacket, Player *pPlayer);
  2603. void __cdecl _tcf_0_173(void *);
  2604. void `global constructor keyed to'Packets::LWRetBillingEndHandler::Execute(); // idb
  2605. UINT __cdecl Packets::LWRetBillingKeepHandler::Execute(Packets::LWRetBillingKeep *pPacket, Player *pPlayer);
  2606. void __cdecl _tcf_0_174(void *);
  2607. void `global constructor keyed to'Packets::LWRetBillingKeepHandler::Execute(); // idb
  2608. UINT __cdecl Packets::LWRetBillingStartHandler::Execute(Packets::LWRetBillingStart *pPacket, Player *pPlayer);
  2609. void __cdecl _tcf_0_175(void *);
  2610. void `global constructor keyed to'Packets::LWRetBillingStartHandler::Execute(); // idb
  2611. UINT __cdecl Packets::SSConnectHandler::Execute(Packets::SSConnect *pPacket, Player *pPlayer);
  2612. void __cdecl _tcf_0_176(void *);
  2613. void `global constructor keyed to'Packets::SSConnectHandler::Execute(); // idb
  2614. UINT __cdecl Packets::SSScenePlayerCountHandler::Execute(Packets::SSScenePlayerCount *pPacket, Player *pPlayer);
  2615. void __cdecl _tcf_0_177(void *);
  2616. void `global constructor keyed to'Packets::SSScenePlayerCountHandler::Execute(); // idb
  2617. UINT __cdecl Packets::WLBillingEndHandler::Execute(Packets::WLBillingEnd *pPacket, Player *pPlayer);
  2618. void __cdecl _tcf_0_178(void *);
  2619. void `global constructor keyed to'Packets::WLBillingEndHandler::Execute(); // idb
  2620. UINT __cdecl Packets::WLBillingKeepHandler::Execute(Packets::WLBillingKeep *pPacket, Player *pPlayer);
  2621. void __cdecl _tcf_0_179(void *);
  2622. void `global constructor keyed to'Packets::WLBillingKeepHandler::Execute(); // idb
  2623. UINT __cdecl Packets::WLBillingKickHandler::Execute(Packets::WLBillingKick *pPacket, Player *pPlayer);
  2624. void __cdecl _tcf_0_180(void *);
  2625. void `global constructor keyed to'Packets::WLBillingKickHandler::Execute(); // idb
  2626. UINT __cdecl Packets::WLBillingStartHandler::Execute(Packets::WLBillingStart *pPacket, Player *pPlayer);
  2627. void __cdecl _tcf_0_181(void *);
  2628. void `global constructor keyed to'Packets::WLBillingStartHandler::Execute(); // idb
  2629. UINT __cdecl Packets::WLNotifyUserHandler::Execute(Packets::WLNotifyUser *pPacket, Player *pPlayer);
  2630. void __cdecl _tcf_0_182(void *);
  2631. void `global constructor keyed to'Packets::WLNotifyUserHandler::Execute(); // idb
  2632. UINT __cdecl Packets::WLRetCharLoginHandler::Execute(Packets::WLRetCharLogin *pPacket, Player *pPlayer);
  2633. void __cdecl _tcf_0_183(void *);
  2634. void `global constructor keyed to'Packets::WLRetCharLoginHandler::Execute(); // idb
  2635. UINT __cdecl Packets::BLRetAskBuyHandler::Execute(Packets::BLRetAskBuy *pPacket, Player *pPlayer);
  2636. void __cdecl _tcf_0_184(void *);
  2637. void `global constructor keyed to'Packets::BLRetAskBuyHandler::Execute(); // idb
  2638. UINT __cdecl Packets::BLRetAskPointHandler::Execute(Packets::BLRetAskPoint *pPacket, Player *pPlayer);
  2639. void __cdecl _tcf_0_185(void *);
  2640. void `global constructor keyed to'Packets::BLRetAskPointHandler::Execute(); // idb
  2641. UINT __cdecl Packets::BLRetPrizeHandler::Execute(Packets::BLRetPrize *pPacket, Player *pPlayer);
  2642. void __cdecl _tcf_0_186(void *);
  2643. void `global constructor keyed to'Packets::BLRetPrizeHandler::Execute(); // idb
  2644. UINT __cdecl Packets::LBAskBuyHandler::Execute(Packets::LBAskBuy *pPacket, Player *pPlayer);
  2645. void __cdecl _tcf_0_187(void *);
  2646. void `global constructor keyed to'Packets::LBAskBuyHandler::Execute(); // idb
  2647. UINT __cdecl Packets::LBAskPointHandler::Execute(Packets::LBAskPoint *pPacket, Player *pPlayer);
  2648. void __cdecl _tcf_0_188(void *);
  2649. void `global constructor keyed to'Packets::LBAskPointHandler::Execute(); // idb
  2650. UINT __cdecl Packets::LBLAskNewUserCardHandler::Execute(Packets::LBLAskNewUserCard *pPacket, Player *pPlayer);
  2651. void __cdecl _tcf_0_189(void *);
  2652. void `global constructor keyed to'Packets::LBLAskNewUserCardHandler::Execute(); // idb
  2653. UINT __cdecl Packets::LBLCardCheckPrizeHandler::Execute(Packets::LBLCardCheckPrize *pPacket, Player *pPlayer);
  2654. void __cdecl _tcf_0_190(void *);
  2655. void `global constructor keyed to'Packets::LBLCardCheckPrizeHandler::Execute(); // idb
  2656. UINT __cdecl Packets::LBLNewCheckPrizeHandler::Execute(Packets::LBLNewCheckPrize *pPacket, Player *pPlayer);
  2657. void __cdecl _tcf_0_191(void *);
  2658. void `global constructor keyed to'Packets::LBLNewCheckPrizeHandler::Execute(); // idb
  2659. UINT __cdecl Packets::LBLNewPrizeHandler::Execute(Packets::LBLNewPrize *pPacket, Player *pPlayer);
  2660. void __cdecl _tcf_0_192(void *);
  2661. void `global constructor keyed to'Packets::LBLNewPrizeHandler::Execute(); // idb
  2662. UINT __cdecl Packets::LBPrizeHandler::Execute(Packets::LBPrize *pPacket, Player *pPlayer);
  2663. void __cdecl _tcf_0_193(void *);
  2664. void `global constructor keyed to'Packets::LBPrizeHandler::Execute(); // idb
  2665. UINT __cdecl Packets::LWRetPrizeHandler::Execute(Packets::LWRetPrize *pPacket, Player *pPlayer);
  2666. void __cdecl _tcf_0_194(void *);
  2667. void `global constructor keyed to'Packets::LWRetPrizeHandler::Execute(); // idb
  2668. UINT __cdecl Packets::WLAskPrizeHandler::Execute(Packets::WLAskPrize *pPacket, Player *pPlayer);
  2669. void __cdecl _tcf_0_195(void *);
  2670. void `global constructor keyed to'Packets::WLAskPrizeHandler::Execute(); // idb
  2671. UINT __cdecl Packets::GWLWGCostLogHandler::Execute(Packets::GWLWGCostLog *pPacket, Player *pPlayer);
  2672. void __cdecl _tcf_0_196(void *);
  2673. void `global constructor keyed to'Packets::GWLWGCostLogHandler::Execute(); // idb
  2674. UINT __cdecl Packets::LBLCostLogHandler::Execute(Packets::LBLCostLog *pPacket, Player *pPlayer);
  2675. void __cdecl _tcf_0_197(void *);
  2676. void `global constructor keyed to'Packets::LBLCostLogHandler::Execute(); // idb
  2677. UINT __cdecl Packets::LBLAskMigHandler::Execute(Packets::LBLAskMig *pPacket, Player *pPlayer);
  2678. void __cdecl _tcf_0_198(void *);
  2679. void `global constructor keyed to'Packets::LBLAskMigHandler::Execute(); // idb
  2680. UINT __cdecl Packets::LWChangeNameHandler::Execute(Packets::LWChangeName *pPacket, Player *pPlayer);
  2681. void __cdecl _tcf_0_199(void *);
  2682. void `global constructor keyed to'Packets::LWChangeNameHandler::Execute(); // idb
  2683. UINT __cdecl Packets::WLChangeNameHandler::Execute(Packets::WLChangeName *pPacket, Player *pPlayer);
  2684. void __cdecl _tcf_0_200(void *);
  2685. void `global constructor keyed to'Packets::WLChangeNameHandler::Execute(); // idb
  2686. UINT __cdecl Packets::CLRegNewLicenseHandler::Execute(Packets::CLRegNewLicense *pPacket, Player *pPlayer);
  2687. void __cdecl _tcf_0_201(void *);
  2688. void `global constructor keyed to'Packets::CLRegNewLicenseHandler::Execute(); // idb
  2689. UINT __cdecl Packets::LBAskRegLicenseHandler::Execute(Packets::LBAskRegLicense *pPacket, Player *pPlayer);
  2690. void __cdecl _tcf_0_202(void *);
  2691. void `global constructor keyed to'Packets::LBAskRegLicenseHandler::Execute(); // idb
  2692. UINT __cdecl Packets::LBLRegNewLicenseHandler::Execute(Packets::LBLRegNewLicense *pPacket, Player *pPlayer);
  2693. void __cdecl _tcf_0_203(void *);
  2694. void `global constructor keyed to'Packets::LBLRegNewLicenseHandler::Execute(); // idb
  2695. UINT __cdecl Packets::CLRegSafeSignHandler::Execute(Packets::CLRegSafeSign *pPacket, Player *pPlayer);
  2696. void __cdecl _tcf_0_204(void *);
  2697. void `global constructor keyed to'Packets::CLRegSafeSignHandler::Execute(); // idb
  2698. UINT __cdecl Packets::LBLOperateAccHandler::Execute(Packets::LBLOperateAcc *pPacket, Player *pPlayer);
  2699. void __cdecl _tcf_0_205(void *);
  2700. void `global constructor keyed to'Packets::LBLOperateAccHandler::Execute(); // idb
  2701. UINT __cdecl Packets::LWOperateAccResultHandler::Execute(Packets::LWOperateAccResult *pPacket, Player *pPlayer);
  2702. void __cdecl _tcf_0_206(void *);
  2703. void `global constructor keyed to'Packets::LWOperateAccResultHandler::Execute(); // idb
  2704. UINT __cdecl Packets::WLOperateAccHandler::Execute(Packets::WLOperateAcc *pPacket, Player *pPlayer);
  2705. void __cdecl _tcf_0_207(void *);
  2706. void `global constructor keyed to'Packets::WLOperateAccHandler::Execute(); // idb
  2707. void __cdecl CharConfig::~CharConfig(CharConfig *const this);
  2708. void __cdecl CharConfig::~CharConfig(CharConfig *const this);
  2709. CFG_CHOOSE_SCENE *__cdecl DBChooseSceneTable::GetSceneInfo(CHAR_TYPE ctype, CHAR_TYPE ctypea);
  2710. BOOL __cdecl CharConfig::GetCharChooseScene(DB_CHOOSE_SCENE *pInfo, CHAR_TYPE ctype);
  2711. void __cdecl DBChooseSceneTable::DBChooseSceneTable(DBChooseSceneTable *const this);
  2712. void __cdecl DBChooseSceneTable::DBChooseSceneTable(DBChooseSceneTable *const this);
  2713. BOOL __cdecl DBChooseSceneTable::GetPosBySceneID(DBChooseSceneTable *const this, SceneID_t sid, CHAR_TYPE ctype, WORLD_POS *const pos);
  2714. BOOL __cdecl DBChooseSceneTable::isValidSceneID(DBChooseSceneTable *const this, SceneID_t sid, CHAR_TYPE ctype);
  2715. BOOL __cdecl CharConfig::InitCharAttr(FULLUSERDATA *pData);
  2716. void __cdecl CharConfig::CharConfig(CharConfig *const this);
  2717. void __cdecl CharConfig::CharConfig(CharConfig *const this);
  2718. void __cdecl _tcf_0_208(void *);
  2719. void __cdecl _tcf_1_4(void *);
  2720. void `global constructor keyed to'CharConfig::pUserData(); // idb
  2721. void __cdecl DBLogicManager::DBLogicManager(DBLogicManager *const this);
  2722. void __cdecl DBLogicManager::DBLogicManager(DBLogicManager *const this);
  2723. void __cdecl DBLogicManager::~DBLogicManager(DBLogicManager *const this);
  2724. void __noreturn sub_80A4CC1();
  2725. // void __usercall __noreturn sub_80A4CF1(pthread_mutex_t *a1@<eax>, int a2@<ebp>);
  2726. void __noreturn sub_80A4D08();
  2727. void __cdecl DBLogicManager::~DBLogicManager(DBLogicManager *const this);
  2728. void __noreturn sub_80A4DE9();
  2729. // void __usercall __noreturn sub_80A4E19(pthread_mutex_t *a1@<eax>, int a2@<ebp>);
  2730. void __noreturn sub_80A4E30();
  2731. BOOL __cdecl DBLogicManager::RecvPacket(DBLogicManager *const this, Packet **const pPacket, PlayerID_t *const PlayerID, UINT *const Flag);
  2732. BOOL __cdecl DBLogicManager::MovePacket(DBLogicManager *const this, PlayerID_t PlayerID);
  2733. BOOL __cdecl DBLogicManager::ProcessCacheCommands(DBLogicManager *const this);
  2734. BOOL __cdecl DBLogicManager::HeartBeat(DBLogicManager *const this, UINT uTime);
  2735. BOOL __cdecl DBLogicManager::SendPacket(DBLogicManager *const this, Packet *pPacket, PlayerID_t PlayerID, UINT Flag);
  2736. void __cdecl _tcf_0_209(void *);
  2737. void __cdecl _tcf_1_5(void *);
  2738. void `global constructor keyed to'g_DBLogicManager(); // idb
  2739. int __cdecl DBThread::IsConnected(int a2);
  2740. void __cdecl DBThread::DBThread(DBThread *const this);
  2741. void __cdecl DBThread::DBThread(DBThread *const this);
  2742. void __cdecl DBThread::~DBThread(DBThread *const this);
  2743. void __cdecl DBThread::~DBThread(DBThread *const this);
  2744. void __cdecl DBThread::~DBThread(DBThread *const this);
  2745. int __cdecl DBThread::Init(DBThread *const this);
  2746. ODBCInterface *__cdecl DBThread::GetInterface(int a2);
  2747. int __cdecl DBThread::RecvPacket(DBThread *const this, Packet **const pPacket, PlayerID_t *const PlayerID);
  2748. int __cdecl DBThread::ProcessCacheCommand(DBThread *const this);
  2749. void __cdecl DBThread::run(DBThread *const this);
  2750. int __cdecl DBThread::SendPacket(DBThread *const this, Packet *pPacket, PlayerID_t pID);
  2751. void __cdecl _tcf_0_210(void *);
  2752. void `global constructor keyed to'DBThread::DBThread(); // idb
  2753. void __cdecl DBThread::stop(int a2);
  2754. void __cdecl DBThreadManager::DBThreadManager(DBThreadManager *const this);
  2755. void __cdecl DBThreadManager::DBThreadManager(DBThreadManager *const this);
  2756. void __cdecl DBThreadManager::~DBThreadManager(DBThreadManager *const this);
  2757. void __cdecl DBThreadManager::~DBThreadManager(DBThreadManager *const this);
  2758. BOOL __cdecl DBThreadManager::Init(DBThreadManager *const this);
  2759. BOOL __cdecl DBThreadManager::Start(DBThreadManager *const this);
  2760. BOOL __cdecl DBThreadManager::Stop(DBThreadManager *const this);
  2761. BOOL __cdecl DBThreadManager::IsPoolTID(DBThreadManager *const this, TID tid);
  2762. BOOL __cdecl DBThreadManager::SendPacket(DBThreadManager *const this, Packet *pPacket, PlayerID_t pID);
  2763. ODBCInterface *__cdecl DBThreadManager::GetInterface(DBThreadManager *const this, TID tid);
  2764. BOOL __cdecl DBThreadManager::CheckWorldIDZoneID(DBThreadManager *const this, ID_t nConfigWorldID, ID_t nConfigZoneID);
  2765. void __cdecl _tcf_0_211(void *);
  2766. void `global constructor keyed to'g_pDBThreadManager(); // idb
  2767. int __cdecl LoginDBManager::Init(LoginDBManager *const this);
  2768. void __cdecl LoginDBManager::run(LoginDBManager *const this);
  2769. void __cdecl _tcf_0_212(void *);
  2770. void `global constructor keyed to'g_pDBManager(); // idb
  2771. void __cdecl LoginDBManager::~LoginDBManager(DBManager *a2);
  2772. void __cdecl LoginDBManager::~LoginDBManager(DBManager *a2);
  2773. void __cdecl ProcessManager::ProcessManager(ProcessManager *const this);
  2774. void __cdecl ProcessManager::ProcessManager(ProcessManager *const this);
  2775. void __cdecl ProcessManager::~ProcessManager(ProcessManager *const this);
  2776. // void __usercall __noreturn sub_80A6B72(int a1@<esi>);
  2777. void __cdecl ProcessManager::~ProcessManager(ProcessManager *const this);
  2778. // void __usercall __noreturn sub_80A6CA2(int a1@<esi>);
  2779. void __cdecl ProcessManager::~ProcessManager(ProcessManager *const this);
  2780. // void __usercall __noreturn sub_80A6DE5(int a1@<esi>);
  2781. BOOL __cdecl ProcessManager::Init(int a2);
  2782. void __cdecl ProcessManager::Quit(ProcessManager *const this);
  2783. BOOL __cdecl ProcessManager::RecvPacket(ProcessManager *const this, Packet **const pPacket, PlayerID_t *const PlayerID, UINT *const Flag);
  2784. BOOL __cdecl ProcessManager::MovePacket(ProcessManager *const this, PlayerID_t PlayerID);
  2785. BOOL __cdecl ProcessManager::ProcessCacheCommands(ProcessManager *const this);
  2786. BOOL __cdecl ProcessManager::ResizeCache(ProcessManager *const this);
  2787. BOOL __cdecl ProcessManager::SendPacket(ProcessManager *const this, Packet *pPacket, PlayerID_t PlayerID, UINT Flag);
  2788. BOOL __cdecl ProcessManager::MoveQueuePlayer(ProcessManager *const this);
  2789. BOOL __cdecl ProcessManager::ResetQueuePos(ProcessManager *const this);
  2790. BOOL __cdecl ProcessManager::DoTick(ProcessManager *const this, UINT uTime);
  2791. void __cdecl ProcessManager::run(ProcessManager *const this);
  2792. void __cdecl _tcf_0_213(void *);
  2793. void `global constructor keyed to'g_pProcessManager(); // idb
  2794. void __cdecl ProcessManager::stop(int a2);
  2795. void __cdecl ProcessPlayerManager::ProcessPlayerManager(ProcessPlayerManager *const this);
  2796. void __cdecl ProcessPlayerManager::ProcessPlayerManager(ProcessPlayerManager *const this);
  2797. void __cdecl ProcessPlayerManager::~ProcessPlayerManager(ProcessPlayerManager *const this);
  2798. void __cdecl ProcessPlayerManager::~ProcessPlayerManager(ProcessPlayerManager *const this);
  2799. BOOL __cdecl ProcessPlayerManager::Select(ProcessPlayerManager *const this);
  2800. BOOL __cdecl ProcessPlayerManager::DelPlayerSocket(ProcessPlayerManager *const this, SOCKET fd);
  2801. BOOL __cdecl ProcessPlayerManager::AddPlayerSocket(ProcessPlayerManager *const this, SOCKET fd);
  2802. Player *__cdecl ProcessPlayerManager::FindAccName(ProcessPlayerManager *const this, const CHAR *szAccount);
  2803. BOOL __cdecl ProcessPlayerManager::AddPlayer(ProcessPlayerManager *const this, Player *pPlayer);
  2804. BOOL __cdecl ProcessPlayerManager::DelPlayer(ProcessPlayerManager *const this, PlayerID_t pid);
  2805. BOOL __cdecl ProcessPlayerManager::RemovePlayer(ProcessPlayerManager *const this, Player *pPlayer);
  2806. BOOL __cdecl ProcessPlayerManager::ProcessCommands(ProcessPlayerManager *const this);
  2807. BOOL __cdecl ProcessPlayerManager::ProcessExceptions(ProcessPlayerManager *const this);
  2808. BOOL __cdecl ProcessPlayerManager::ProcessOutputs(ProcessPlayerManager *const this);
  2809. BOOL __cdecl ProcessPlayerManager::ProcessInputs(ProcessPlayerManager *const this);
  2810. BOOL __cdecl ProcessPlayerManager::HeartBeat(ProcessPlayerManager *const this, UINT uTime);
  2811. void __cdecl ProcessPlayerManager::RemoveAllPlayer(ProcessPlayerManager *const this);
  2812. void __cdecl _tcf_0_214(void *);
  2813. void `global constructor keyed to'g_pProcessPlayerManager(); // idb
  2814. const char *__cdecl DBC::DBCFile::_GetLineFromMemory(char *pStringBuf, int nBufSize, const char *pMemory, const char *pDeadEnd);
  2815. const DBC::DBCFile::FIELD *__cdecl DBC::DBCFile::Search_First_Column_Equ(const DBC::DBCFile *const this, int nColumnNum, const DBC::DBCFile::FIELD *const value);
  2816. const DBC::DBCFile::FIELD *__cdecl DBC::DBCFile::Search_Posistion(const DBC::DBCFile *const this, int nRecordLine, int nColumNum);
  2817. const DBC::DBCFile::FIELD *__cdecl DBC::DBCFile::Search_Index_EQU(const DBC::DBCFile *const this, int iIndex);
  2818. void __cdecl DBC::DBCFile::~DBCFile(DBC::DBCFile *const this);
  2819. void __cdecl DBC::DBCFile::~DBCFile(DBC::DBCFile *const this);
  2820. void __cdecl DBC::DBCFile::~DBCFile(DBC::DBCFile *const this);
  2821. void __cdecl DBC::DBCFile::CreateIndex(DBC::DBCFile *const this, int nColum, const char *szFileName);
  2822. int __cdecl DBC::DBCFile::_ConvertStringToVector(const char *strStringSource, std::vector<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > > *const vRet, const char *szKey, bool bOneOfKey, bool bIgnoreEmpty);
  2823. bool __cdecl DBC::DBCFile::OpenFromMemoryImpl_Text(DBC::DBCFile *const this, const char *pMemory, const char *pDeadEnd, const char *szFileName, int nColumToRead);
  2824. // void __usercall sub_80AA8F4(int a1@<eax>, int a2@<ebx>, int a3@<ebp>);
  2825. bool __cdecl DBC::DBCFile::OpenFromMemoryImpl_Binary(DBC::DBCFile *const this, const char *pMemory, const char *pDeadEnd, const char *szFileName, int nColumToRead);
  2826. bool __cdecl DBC::DBCFile::OpenFromMemory(DBC::DBCFile *const this, const char *pMemory, const char *pDeadEnd, const char *szFileName, int nColumToRead);
  2827. bool __cdecl DBC::DBCFile::OpenFromTXT(DBC::DBCFile *const this, const char *szFileName, int nColumToRead);
  2828. void __cdecl DBC::DBCFile::DBCFile(DBC::DBCFile *const this, unsigned int id, bool needDecrypt, const char *encryptKey);
  2829. void __cdecl DBC::DBCFile::DBCFile(DBC::DBCFile *const this, unsigned int id, bool needDecrypt, const char *encryptKey);
  2830. void __cdecl _tcf_0_215(void *);
  2831. void `global constructor keyed to'DBC::DBCFile::s_funcIsEncryptMemory(); // idb
  2832. BOOL __cdecl DBC::DBCFile::_FieldEqu<(DBC::DBCFile::FIELD_TYPE)0>(const DBC::DBCFile::FIELD *const a, const DBC::DBCFile::FIELD *const b);
  2833. BOOL __cdecl DBC::DBCFile::_FieldEqu<(DBC::DBCFile::FIELD_TYPE)1>(const DBC::DBCFile::FIELD *const a, const DBC::DBCFile::FIELD *const b);
  2834. BOOL __cdecl DBC::DBCFile::_FieldEqu<(DBC::DBCFile::FIELD_TYPE)2>(const DBC::DBCFile::FIELD *const a, const DBC::DBCFile::FIELD *const b);
  2835. const unsigned int *__cdecl std::lower_bound<unsigned long const*,unsigned long>(const unsigned int *__first, const unsigned int *__last, const unsigned int *const __val);
  2836. void __cdecl __gnu_cxx::hashtable<std::pair<int const,DBC::DBCFile::FIELD *>,int,__gnu_cxx::hash<int>,std::_Select1st<std::pair<int const,DBC::DBCFile::FIELD *>>,std::equal_to<int>,std::allocator<DBC::DBCFile::FIELD *>>::clear(__gnu_cxx::hashtable<std::pair<const int,DBC::DBCFile::FIELD*>,int,__gnu_cxx::hash<int>,std::_Select1st<std::pair<const int,DBC::DBCFile::FIELD*> >,std::equal_to<int>,std::allocator<DBC::DBCFile::FIELD*> > *const this);
  2837. void __cdecl std::fill<__gnu_cxx::__normal_iterator<DBC::DBCFile::FIELD_TYPE *,std::vector<DBC::DBCFile::FIELD_TYPE,std::allocator<DBC::DBCFile::FIELD_TYPE>>>,DBC::DBCFile::FIELD_TYPE>(__gnu_cxx::__normal_iterator<DBC::DBCFile::FIELD_TYPE*,std::vector<DBC::DBCFile::FIELD_TYPE,std::allocator<DBC::DBCFile::FIELD_TYPE> > > __first, __gnu_cxx::__normal_iterator<DBC::DBCFile::FIELD_TYPE*,std::vector<DBC::DBCFile::FIELD_TYPE,std::allocator<DBC::DBCFile::FIELD_TYPE> > > __last, const DBC::DBCFile::FIELD_TYPE *const __value);
  2838. void __cdecl std::fill<__gnu_cxx::__normal_iterator<char *,std::vector<char,std::allocator<char>>>,char>(__gnu_cxx::__normal_iterator<char*,std::vector<char,std::allocator<char> > > __first, __gnu_cxx::__normal_iterator<char*,std::vector<char,std::allocator<char> > > __last, const char *const __value);
  2839. void __cdecl std::_Rb_tree<std::string,std::pair<std::string const,int>,std::_Select1st<std::pair<std::string const,int>>,std::less<std::string>,std::allocator<std::pair<std::string const,int>>>::_M_erase(std::_Rb_tree<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::pair<const std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int>,std::_Select1st<std::pair<const std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int> >,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::allocator<std::pair<const std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int> > > *const this, std::_Rb_tree_node<std::pair<const std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int> > *__x);
  2840. void __cdecl std::fill<__gnu_cxx::__normal_iterator<DBC::DBCFile::FIELD *,std::vector<DBC::DBCFile::FIELD,std::allocator<DBC::DBCFile::FIELD>>>,DBC::DBCFile::FIELD>(__gnu_cxx::__normal_iterator<DBC::DBCFile::FIELD*,std::vector<DBC::DBCFile::FIELD,std::allocator<DBC::DBCFile::FIELD> > > __first, __gnu_cxx::__normal_iterator<DBC::DBCFile::FIELD*,std::vector<DBC::DBCFile::FIELD,std::allocator<DBC::DBCFile::FIELD> > > __last, const DBC::DBCFile::FIELD *const __value);
  2841. void __cdecl std::fill<__gnu_cxx::__normal_iterator<unsigned int *,std::vector<unsigned int,std::allocator<unsigned int>>>,unsigned int>(__gnu_cxx::__normal_iterator<unsigned int*,std::vector<unsigned int,std::allocator<unsigned int> > > __first, __gnu_cxx::__normal_iterator<unsigned int*,std::vector<unsigned int,std::allocator<unsigned int> > > __last, const unsigned int *const __value);
  2842. DBC::DBCFile::FIELD_TYPE *__cdecl std::__uninitialized_fill_n_aux<DBC::DBCFile::FIELD_TYPE *,unsigned int,DBC::DBCFile::FIELD_TYPE>(DBC::DBCFile::FIELD_TYPE *__first, unsigned int __n, const DBC::DBCFile::FIELD_TYPE *const __x, __false_type);
  2843. // __gnu_cxx::__normal_iterator<DBC::DBCFile::FIELD_TYPE*,std::vector<DBC::DBCFile::FIELD_TYPE,std::allocator<DBC::DBCFile::FIELD_TYPE> > > *__userpurge std::__uninitialized_fill_n_aux<__gnu_cxx::__normal_iterator<DBC::DBCFile::FIELD_TYPE *,std::vector<DBC::DBCFile::FIELD_TYPE,std::allocator<DBC::DBCFile::FIELD_TYPE>>>,unsigned int,DBC::DBCFile::FIELD_TYPE>@<eax>(__gnu_cxx::__normal_iterator<DBC::DBCFile::FIELD_TYPE*,std::vector<DBC::DBCFile::FIELD_TYPE,std::allocator<DBC::DBCFile::FIELD_TYPE> > > *retstr, __gnu_cxx::__normal_iterator<DBC::DBCFile::FIELD_TYPE*,std::vector<DBC::DBCFile::FIELD_TYPE,std::allocator<DBC::DBCFile::FIELD_TYPE> > > __first, unsigned int __n, const DBC::DBCFile::FIELD_TYPE *const __x, __false_type a5);
  2844. DBC::DBCFile::FIELD *__cdecl std::__uninitialized_fill_n_aux<DBC::DBCFile::FIELD *,unsigned int,DBC::DBCFile::FIELD>(DBC::DBCFile::FIELD *__first, unsigned int __n, const DBC::DBCFile::FIELD *const __x, __false_type);
  2845. // __gnu_cxx::__normal_iterator<DBC::DBCFile::FIELD*,std::vector<DBC::DBCFile::FIELD,std::allocator<DBC::DBCFile::FIELD> > > *__userpurge std::__uninitialized_fill_n_aux<__gnu_cxx::__normal_iterator<DBC::DBCFile::FIELD *,std::vector<DBC::DBCFile::FIELD,std::allocator<DBC::DBCFile::FIELD>>>,unsigned int,DBC::DBCFile::FIELD>@<eax>(__gnu_cxx::__normal_iterator<DBC::DBCFile::FIELD*,std::vector<DBC::DBCFile::FIELD,std::allocator<DBC::DBCFile::FIELD> > > *retstr, __gnu_cxx::__normal_iterator<DBC::DBCFile::FIELD*,std::vector<DBC::DBCFile::FIELD,std::allocator<DBC::DBCFile::FIELD> > > __first, unsigned int __n, const DBC::DBCFile::FIELD *const __x, __false_type a5);
  2846. // __gnu_cxx::__normal_iterator<char*,std::vector<char,std::allocator<char> > > *__userpurge std::fill_n<__gnu_cxx::__normal_iterator<char *,std::vector<char,std::allocator<char>>>,unsigned int,char>@<eax>(__gnu_cxx::__normal_iterator<char*,std::vector<char,std::allocator<char> > > *retstr, __gnu_cxx::__normal_iterator<char*,std::vector<char,std::allocator<char> > > __first, unsigned int __n, const char *const __value);
  2847. // std::_Rb_tree_iterator<std::pair<const std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int> > *__userpurge std::_Rb_tree<std::string,std::pair<std::string const,int>,std::_Select1st<std::pair<std::string const,int>>,std::less<std::string>,std::allocator<std::pair<std::string const,int>>>::find@<eax>(std::_Rb_tree_iterator<std::pair<const std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int> > *retstr, std::_Rb_tree<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::pair<const std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int>,std::_Select1st<std::pair<const std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int> >,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::allocator<std::pair<const std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int> > > *const this, const string *const __k);
  2848. // std::_Rb_tree_iterator<std::pair<const std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int> > *__userpurge std::_Rb_tree<std::string,std::pair<std::string const,int>,std::_Select1st<std::pair<std::string const,int>>,std::less<std::string>,std::allocator<std::pair<std::string const,int>>>::_M_insert@<eax>(std::_Rb_tree_iterator<std::pair<const std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int> > *retstr, std::_Rb_tree<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::pair<const std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int>,std::_Select1st<std::pair<const std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int> >,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::allocator<std::pair<const std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int> > > *const this, std::_Rb_tree_node_base *__x, std::_Rb_tree_node_base *__p, const std::pair<const std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int> *const __v);
  2849. // std::pair<std::_Rb_tree_iterator<std::pair<const std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int> >,bool> *__userpurge std::_Rb_tree<std::string,std::pair<std::string const,int>,std::_Select1st<std::pair<std::string const,int>>,std::less<std::string>,std::allocator<std::pair<std::string const,int>>>::insert_unique@<eax>(std::pair<std::_Rb_tree_iterator<std::pair<const std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int> >,bool> *retstr, std::_Rb_tree<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::pair<const std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int>,std::_Select1st<std::pair<const std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int> >,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::allocator<std::pair<const std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int> > > *const this, const std::pair<const std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int> *const __v);
  2850. std::vector<DBC::DBCFile::FIELD_TYPE,std::allocator<DBC::DBCFile::FIELD_TYPE> > *__cdecl std::vector<DBC::DBCFile::FIELD_TYPE,std::allocator<DBC::DBCFile::FIELD_TYPE>>::operator=(std::vector<DBC::DBCFile::FIELD_TYPE,std::allocator<DBC::DBCFile::FIELD_TYPE> > *const this, const std::vector<DBC::DBCFile::FIELD_TYPE,std::allocator<DBC::DBCFile::FIELD_TYPE> > *const __x);
  2851. // std::pair<__gnu_cxx::_Hashtable_iterator<std::pair<const int,DBC::DBCFile::FIELD*>,int,__gnu_cxx::hash<int>,std::_Select1st<std::pair<const int,DBC::DBCFile::FIELD*> >,std::equal_to<int>,std::allocator<DBC::DBCFile::FIELD*> >,bool> *__userpurge __gnu_cxx::hashtable<std::pair<int const,DBC::DBCFile::FIELD *>,int,__gnu_cxx::hash<int>,std::_Select1st<std::pair<int const,DBC::DBCFile::FIELD *>>,std::equal_to<int>,std::allocator<DBC::DBCFile::FIELD *>>::insert_unique_noresize@<eax>(std::pair<__gnu_cxx::_Hashtable_iterator<std::pair<const int,DBC::DBCFile::FIELD*>,int,__gnu_cxx::hash<int>,std::_Select1st<std::pair<const int,DBC::DBCFile::FIELD*> >,std::equal_to<int>,std::allocator<DBC::DBCFile::FIELD*> >,bool> *retstr, __gnu_cxx::hashtable<std::pair<const int,DBC::DBCFile::FIELD*>,int,__gnu_cxx::hash<int>,std::_Select1st<std::pair<const int,DBC::DBCFile::FIELD*> >,std::equal_to<int>,std::allocator<DBC::DBCFile::FIELD*> > *const this, const std::pair<const int,DBC::DBCFile::FIELD*> *const __obj);
  2852. // __gnu_cxx::__normal_iterator<std::basic_string<char,std::char_traits<char>,std::allocator<char> >*,std::vector<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > > > *__userpurge std::vector<std::string,std::allocator<std::string>>::erase@<eax>(__gnu_cxx::__normal_iterator<std::basic_string<char,std::char_traits<char>,std::allocator<char> >*,std::vector<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > > > *retstr, std::vector<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > > *const this, __gnu_cxx::__normal_iterator<std::basic_string<char,std::char_traits<char>,std::allocator<char> >*,std::vector<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > > > __first, __gnu_cxx::__normal_iterator<std::basic_string<char,std::char_traits<char>,std::allocator<char> >*,std::vector<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > > > __last);
  2853. void __cdecl std::fill<__gnu_cxx::__normal_iterator<__gnu_cxx::_Hashtable_node<std::pair<int const,DBC::DBCFile::FIELD *>> **,std::vector<__gnu_cxx::_Hashtable_node<std::pair<int const,DBC::DBCFile::FIELD *>> *,std::allocator<__gnu_cxx::_Hashtable_node<std::pair<int const,DBC::DBCFile::FIELD *>> *>>>,__gnu_cxx::_Hashtable_node<std::pair<int const,DBC::DBCFile::FIELD *>> *>(__gnu_cxx::__normal_iterator<__gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> >**,std::vector<__gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> >*,std::allocator<__gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> >*> > > __first, __gnu_cxx::__normal_iterator<__gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> >**,std::vector<__gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> >*,std::allocator<__gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> >*> > > __last, __gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> > *const *const __value);
  2854. unsigned int *__cdecl std::fill_n<unsigned int *,unsigned int,unsigned int>(unsigned int *__first, unsigned int __n, const unsigned int *const __value);
  2855. // __gnu_cxx::__normal_iterator<unsigned int*,std::vector<unsigned int,std::allocator<unsigned int> > > *__userpurge std::fill_n<__gnu_cxx::__normal_iterator<unsigned int *,std::vector<unsigned int,std::allocator<unsigned int>>>,unsigned int,unsigned int>@<eax>(__gnu_cxx::__normal_iterator<unsigned int*,std::vector<unsigned int,std::allocator<unsigned int> > > *retstr, __gnu_cxx::__normal_iterator<unsigned int*,std::vector<unsigned int,std::allocator<unsigned int> > > __first, unsigned int __n, const unsigned int *const __value);
  2856. // __gnu_cxx::__normal_iterator<char*,std::vector<char,std::allocator<char> > > *__userpurge std::vector<char,std::allocator<char>>::erase@<eax>(__gnu_cxx::__normal_iterator<char*,std::vector<char,std::allocator<char> > > *retstr, std::vector<char,std::allocator<char> > *const this, __gnu_cxx::__normal_iterator<char*,std::vector<char,std::allocator<char> > > __first, __gnu_cxx::__normal_iterator<char*,std::vector<char,std::allocator<char> > > __last);
  2857. __gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> > **__cdecl std::fill_n<__gnu_cxx::_Hashtable_node<std::pair<int const,DBC::DBCFile::FIELD *>> **,unsigned int,__gnu_cxx::_Hashtable_node<std::pair<int const,DBC::DBCFile::FIELD *>> *>(__gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> > **__first, unsigned int __n, __gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> > *const *const __value);
  2858. void __cdecl __gnu_cxx::hashtable<std::pair<int const,DBC::DBCFile::FIELD *>,int,__gnu_cxx::hash<int>,std::_Select1st<std::pair<int const,DBC::DBCFile::FIELD *>>,std::equal_to<int>,std::allocator<DBC::DBCFile::FIELD *>>::resize(__gnu_cxx::hashtable<std::pair<const int,DBC::DBCFile::FIELD*>,int,__gnu_cxx::hash<int>,std::_Select1st<std::pair<const int,DBC::DBCFile::FIELD*> >,std::equal_to<int>,std::allocator<DBC::DBCFile::FIELD*> > *const this, size_t __num_elements_hint);
  2859. void __cdecl std::vector<std::string,std::allocator<std::string>>::_M_insert_aux(std::vector<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > > *const this, __gnu_cxx::__normal_iterator<std::basic_string<char,std::char_traits<char>,std::allocator<char> >*,std::vector<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > > > __position, const string *const __x);
  2860. // __gnu_cxx::__normal_iterator<__gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> >**,std::vector<__gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> >*,std::allocator<__gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> >*> > > *__userpurge std::fill_n<__gnu_cxx::__normal_iterator<__gnu_cxx::_Hashtable_node<std::pair<int const,DBC::DBCFile::FIELD *>> **,std::vector<__gnu_cxx::_Hashtable_node<std::pair<int const,DBC::DBCFile::FIELD *>> *,std::allocator<__gnu_cxx::_Hashtable_node<std::pair<int const,DBC::DBCFile::FIELD *>> *>>>,unsigned int,__gnu_cxx::_Hashtable_node<std::pair<int const,DBC::DBCFile::FIELD *>> *>@<eax>(__gnu_cxx::__normal_iterator<__gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> >**,std::vector<__gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> >*,std::allocator<__gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> >*> > > *retstr, __gnu_cxx::__normal_iterator<__gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> >**,std::vector<__gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> >*,std::allocator<__gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> >*> > > __first, unsigned int __n, __gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> > *const *const __value);
  2861. // __gnu_cxx::__normal_iterator<unsigned int*,std::vector<unsigned int,std::allocator<unsigned int> > > *__userpurge std::vector<unsigned int,std::allocator<unsigned int>>::erase@<eax>(__gnu_cxx::__normal_iterator<unsigned int*,std::vector<unsigned int,std::allocator<unsigned int> > > *retstr, std::vector<unsigned int,std::allocator<unsigned int> > *const this, __gnu_cxx::__normal_iterator<unsigned int*,std::vector<unsigned int,std::allocator<unsigned int> > > __first, __gnu_cxx::__normal_iterator<unsigned int*,std::vector<unsigned int,std::allocator<unsigned int> > > __last);
  2862. // __gnu_cxx::__normal_iterator<DBC::DBCFile::FIELD_TYPE*,std::vector<DBC::DBCFile::FIELD_TYPE,std::allocator<DBC::DBCFile::FIELD_TYPE> > > *__userpurge std::vector<DBC::DBCFile::FIELD_TYPE,std::allocator<DBC::DBCFile::FIELD_TYPE>>::erase@<eax>(__gnu_cxx::__normal_iterator<DBC::DBCFile::FIELD_TYPE*,std::vector<DBC::DBCFile::FIELD_TYPE,std::allocator<DBC::DBCFile::FIELD_TYPE> > > *retstr, std::vector<DBC::DBCFile::FIELD_TYPE,std::allocator<DBC::DBCFile::FIELD_TYPE> > *const this, __gnu_cxx::__normal_iterator<DBC::DBCFile::FIELD_TYPE*,std::vector<DBC::DBCFile::FIELD_TYPE,std::allocator<DBC::DBCFile::FIELD_TYPE> > > __first, __gnu_cxx::__normal_iterator<DBC::DBCFile::FIELD_TYPE*,std::vector<DBC::DBCFile::FIELD_TYPE,std::allocator<DBC::DBCFile::FIELD_TYPE> > > __last);
  2863. // __gnu_cxx::__normal_iterator<DBC::DBCFile::FIELD*,std::vector<DBC::DBCFile::FIELD,std::allocator<DBC::DBCFile::FIELD> > > *__userpurge std::vector<DBC::DBCFile::FIELD,std::allocator<DBC::DBCFile::FIELD>>::erase@<eax>(__gnu_cxx::__normal_iterator<DBC::DBCFile::FIELD*,std::vector<DBC::DBCFile::FIELD,std::allocator<DBC::DBCFile::FIELD> > > *retstr, std::vector<DBC::DBCFile::FIELD,std::allocator<DBC::DBCFile::FIELD> > *const this, __gnu_cxx::__normal_iterator<DBC::DBCFile::FIELD*,std::vector<DBC::DBCFile::FIELD,std::allocator<DBC::DBCFile::FIELD> > > __first, __gnu_cxx::__normal_iterator<DBC::DBCFile::FIELD*,std::vector<DBC::DBCFile::FIELD,std::allocator<DBC::DBCFile::FIELD> > > __last);
  2864. void __cdecl std::vector<char,std::allocator<char>>::_M_fill_insert(std::vector<char,std::allocator<char> > *const this, __gnu_cxx::__normal_iterator<char*,std::vector<char,std::allocator<char> > > __position, size_t __n, const char *const __x);
  2865. void __cdecl std::vector<DBC::DBCFile::FIELD,std::allocator<DBC::DBCFile::FIELD>>::_M_insert_aux(std::vector<DBC::DBCFile::FIELD,std::allocator<DBC::DBCFile::FIELD> > *const this, __gnu_cxx::__normal_iterator<DBC::DBCFile::FIELD*,std::vector<DBC::DBCFile::FIELD,std::allocator<DBC::DBCFile::FIELD> > > __position, const DBC::DBCFile::FIELD *const __x);
  2866. void __cdecl std::vector<DBC::DBCFile::FIELD,std::allocator<DBC::DBCFile::FIELD>>::_M_fill_insert(std::vector<DBC::DBCFile::FIELD,std::allocator<DBC::DBCFile::FIELD> > *const this, __gnu_cxx::__normal_iterator<DBC::DBCFile::FIELD*,std::vector<DBC::DBCFile::FIELD,std::allocator<DBC::DBCFile::FIELD> > > __position, size_t __n, const DBC::DBCFile::FIELD *const __x);
  2867. void __cdecl std::vector<std::pair<std::string,int>,std::allocator<std::pair<std::string,int>>>::_M_insert_aux(std::vector<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int>,std::allocator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int> > > *const this, __gnu_cxx::__normal_iterator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int>*,std::vector<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int>,std::allocator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int> > > > __position, const std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int> *const __x);
  2868. void __cdecl std::vector<unsigned int,std::allocator<unsigned int>>::_M_fill_insert(std::vector<unsigned int,std::allocator<unsigned int> > *const this, __gnu_cxx::__normal_iterator<unsigned int*,std::vector<unsigned int,std::allocator<unsigned int> > > __position, size_t __n, const unsigned int *const __x);
  2869. void __cdecl std::vector<DBC::DBCFile::FIELD_TYPE,std::allocator<DBC::DBCFile::FIELD_TYPE>>::_M_fill_insert(std::vector<DBC::DBCFile::FIELD_TYPE,std::allocator<DBC::DBCFile::FIELD_TYPE> > *const this, __gnu_cxx::__normal_iterator<DBC::DBCFile::FIELD_TYPE*,std::vector<DBC::DBCFile::FIELD_TYPE,std::allocator<DBC::DBCFile::FIELD_TYPE> > > __position, size_t __n, const DBC::DBCFile::FIELD_TYPE *const __x);
  2870. void __cdecl std::vector<__gnu_cxx::_Hashtable_node<std::pair<int const,DBC::DBCFile::FIELD *>> *,std::allocator<__gnu_cxx::_Hashtable_node<std::pair<int const,DBC::DBCFile::FIELD *>> *>>::reserve(std::vector<__gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> >*,std::allocator<__gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> >*> > *const this, size_t __n);
  2871. void __cdecl std::vector<__gnu_cxx::_Hashtable_node<std::pair<int const,DBC::DBCFile::FIELD *>> *,std::allocator<__gnu_cxx::_Hashtable_node<std::pair<int const,DBC::DBCFile::FIELD *>> *>>::_M_fill_insert(std::vector<__gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> >*,std::allocator<__gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> >*> > *const this, __gnu_cxx::__normal_iterator<__gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> >**,std::vector<__gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> >*,std::allocator<__gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> >*> > > __position, size_t __n, __gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> > *const *const __x);
  2872. void __cdecl BillPacket::BillPacket(_DWORD *a2);
  2873. void __cdecl BillPacket::BillPacket(_DWORD *a2);
  2874. void __cdecl BillPacket::~BillPacket(_DWORD *a2);
  2875. void __cdecl BillPacket::~BillPacket(_DWORD *a2);
  2876. void __cdecl BillPacket::~BillPacket(IPRegionTable *const a2);
  2877. void __cdecl _tcf_0_216(void *);
  2878. void `global constructor keyed to'BillPacket::BillPacket(); // idb
  2879. void __cdecl BillPacketFactoryManager::BillPacketFactoryManager(BillPacketFactoryManager *const this, USHORT nPacketCounts);
  2880. void __cdecl BillPacketFactoryManager::BillPacketFactoryManager(BillPacketFactoryManager *const this, USHORT nPacketCounts);
  2881. void __cdecl BillPacketFactoryManager::~BillPacketFactoryManager(BillPacketFactoryManager *const this);
  2882. void __cdecl BillPacketFactoryManager::~BillPacketFactoryManager(BillPacketFactoryManager *const this);
  2883. void __cdecl BillPacketFactoryManager::~BillPacketFactoryManager(BillPacketFactoryManager *const this);
  2884. void __cdecl BillPacketFactoryManager::AddFactory(BillPacketFactoryManager *const this, BillPacketFactory *pFactory);
  2885. BillPacket *__cdecl BillPacketFactoryManager::CreatePacket(BillPacketFactoryManager *const this, BPacketID_t packetID);
  2886. UINT __cdecl BillPacketFactoryManager::GetPacketMaxSize(BillPacketFactoryManager *const this, BPacketID_t packetID);
  2887. void __cdecl BillPacketFactoryManager::RemovePacket(BillPacketFactoryManager *const this, BillPacket *pPacket);
  2888. void __cdecl _tcf_0_217(void *);
  2889. void `global constructor keyed to'BillPacketFactoryManager::BillPacketFactoryManager(); // idb
  2890. void __cdecl SocketBillingInputStream::SocketBillingInputStream(Socket *sock, UINT BufferLen, UINT MaxBufferLen, UINT MaxBufferLena);
  2891. void __cdecl SocketBillingInputStream::SocketBillingInputStream(Socket *sock, UINT BufferLen, UINT MaxBufferLen, UINT MaxBufferLena);
  2892. BOOL __cdecl SocketBillingInputStream::ReadPacket(SocketBillingInputStream *const this, BillPacket *pPacket);
  2893. void __cdecl _tcf_0_218(void *);
  2894. void `global constructor keyed to'SocketBillingInputStream::SocketBillingInputStream(); // idb
  2895. void __cdecl SocketBillingInputStream::~SocketBillingInputStream(SocketInputStream *a2);
  2896. void __cdecl SocketBillingInputStream::~SocketBillingInputStream(SocketInputStream *a2);
  2897. void __cdecl SocketBillingOutputStream::SocketBillingOutputStream(Socket *sock, UINT BufferSize, UINT MaxBufferSize, UINT MaxBufferSizea);
  2898. void __cdecl SocketBillingOutputStream::SocketBillingOutputStream(Socket *sock, UINT BufferSize, UINT MaxBufferSize, UINT MaxBufferSizea);
  2899. BOOL __cdecl SocketBillingOutputStream::WritePacket(SocketOutputStream *a3, int a4);
  2900. void __cdecl _tcf_0_219(void *);
  2901. void `global constructor keyed to'SocketBillingOutputStream::SocketBillingOutputStream(); // idb
  2902. void __cdecl SocketBillingOutputStream::~SocketBillingOutputStream(SocketOutputStream *a2);
  2903. void __cdecl SocketBillingOutputStream::~SocketBillingOutputStream(SocketOutputStream *a2);
  2904. void __cdecl Packet::Packet(int a2);
  2905. void __cdecl Packet::Packet(int a2);
  2906. void __cdecl Packet::~Packet(_DWORD *a2);
  2907. void __cdecl Packet::~Packet(_DWORD *a2);
  2908. void __cdecl Packet::~Packet(IPRegionTable *const a2);
  2909. void __cdecl _tcf_0_220(void *);
  2910. void `global constructor keyed to'Packet::Packet(); // idb
  2911. void __cdecl PacketFactoryManager::PacketFactoryManager(PacketFactoryManager *const this, USHORT nPacketCounts, BOOL bAutoLock);
  2912. void __cdecl PacketFactoryManager::PacketFactoryManager(PacketFactoryManager *const this, USHORT nPacketCounts, BOOL bAutoLock);
  2913. void __cdecl PacketFactoryManager::~PacketFactoryManager(PacketFactoryManager *const this);
  2914. // void __usercall sub_80ADEDF(pthread_mutex_t *a1@<eax>, int a2@<ebp>);
  2915. void __cdecl PacketFactoryManager::~PacketFactoryManager(PacketFactoryManager *const this);
  2916. // void __usercall sub_80ADFDF(pthread_mutex_t *a1@<eax>, int a2@<ebp>);
  2917. void __cdecl PacketFactoryManager::~PacketFactoryManager(PacketFactoryManager *const this);
  2918. // void __usercall sub_80AE0FF(pthread_mutex_t *a1@<eax>, int a2@<ebp>);
  2919. void __cdecl PacketFactoryManager::AddFactory(PacketFactoryManager *const this, PacketFactory *pFactory);
  2920. Packet *__cdecl PacketFactoryManager::CreatePacket(PacketFactoryManager *const this, PacketID_t packetID);
  2921. // void __usercall sub_80AE274(pthread_mutex_t *a1@<eax>, int a2@<ebp>);
  2922. UINT __cdecl PacketFactoryManager::GetPacketMaxSize(PacketFactoryManager *const this, PacketID_t packetID);
  2923. void __cdecl PacketFactoryManager::RemovePacket(PacketFactoryManager *const this, Packet *pPacket);
  2924. // void __usercall sub_80AE3F7(pthread_mutex_t *a1@<eax>, int a2@<ebp>);
  2925. UINT __cdecl PacketFactoryManager::GetPacketAllocCount(const PacketFactoryManager *const this, PacketID_t packetID);
  2926. void __cdecl _tcf_0_221(void *);
  2927. void `global constructor keyed to'PacketFactoryManager::PacketFactoryManager(); // idb
  2928. void __cdecl Player::Player(Player *const this, UINT inputBufSize, UINT inputBufMaxSize, UINT outBufSize, UINT outBufMaxSize);
  2929. void __cdecl Player::Player(Player *const this, UINT inputBufSize, UINT inputBufMaxSize, UINT outBufSize, UINT outBufMaxSize);
  2930. void __cdecl Player::~Player(Player *const this);
  2931. void __cdecl Player::~Player(Player *const this);
  2932. void __cdecl Player::~Player(Player *const this);
  2933. BOOL __cdecl Player::ProcessInput(Player *const this, UINT *const socketRet);
  2934. BOOL __cdecl Player::ProcessOutput(Player *const this, UINT *const socketRet);
  2935. BOOL __cdecl Player::IsValid(const Player *const this);
  2936. void __cdecl Player::Disconnect(Player *const this);
  2937. BOOL __cdecl Player::ProcessCommand(Player *const this, PacketID_t nMaxPacketID, PacketFactoryManager *pPacketFactoryManager, INT maxPacketsCountsPertick, PACKET_FROM_WHERE fromWhere);
  2938. void __cdecl _tcf_0_222(void *);
  2939. void `global constructor keyed to'Player::Player(); // idb
  2940. void __cdecl ServerSocket::ServerSocket(ServerSocket *const this, UINT port, UINT backlog);
  2941. void __cdecl ServerSocket::ServerSocket(ServerSocket *const this, UINT port, UINT backlog);
  2942. void __cdecl ServerSocket::~ServerSocket(ServerSocket *const this);
  2943. void __cdecl ServerSocket::~ServerSocket(ServerSocket *const this);
  2944. void __cdecl ServerSocket::close(ServerSocket *const this);
  2945. BOOL __cdecl ServerSocket::accept(ServerSocket *const this, Socket *socket);
  2946. void __cdecl _tcf_0_223(void *);
  2947. void `global constructor keyed to'ServerSocket::ServerSocket(); // idb
  2948. void __cdecl Socket::Socket(_DWORD *a2);
  2949. void __cdecl Socket::Socket(_DWORD *a2);
  2950. BOOL __cdecl Socket::isValid(int a2);
  2951. BOOL __cdecl Socket::create(int a2);
  2952. void __cdecl Socket::Socket(const CHAR *host, const char *hosta, int a5);
  2953. void __cdecl Socket::Socket(const CHAR *host, const char *hosta, int a5);
  2954. BOOL __cdecl Socket::connect(int a2);
  2955. BOOL __cdecl Socket::connect(const CHAR *host, const char *hosta, int a5);
  2956. UINT Socket::send(Socket *const this, const void *buf, UINT len, UINT flags); // idb
  2957. UINT Socket::receive(Socket *const this, void *buf, UINT len, UINT flags); // idb
  2958. UINT __cdecl Socket::available(int a2);
  2959. int __cdecl Socket::getLinger(int a2);
  2960. SOCKET Socket::accept(Socket *const this, sockaddr *addr, UINT *addrlen); // idb
  2961. BOOL __cdecl Socket::setLinger(int a3, int a4);
  2962. BOOL __cdecl Socket::isNonBlocking(int a2);
  2963. BOOL __cdecl Socket::setNonBlocking(BOOL on, BOOL ona);
  2964. UINT __cdecl Socket::getReceiveBufferSize(int a2);
  2965. BOOL __cdecl Socket::setReceiveBufferSize(UINT size);
  2966. UINT __cdecl Socket::getSendBufferSize(int a2);
  2967. BOOL __cdecl Socket::setSendBufferSize(UINT size);
  2968. UINT __cdecl Socket::getPort(int a2);
  2969. UINT __cdecl Socket::getHostIP(int a2);
  2970. SOCKET __cdecl Socket::getSOCKET(int a2);
  2971. BOOL __cdecl Socket::isSockError(int a2);
  2972. UINT __cdecl Socket::getSockError(const Socket *const this);
  2973. void __cdecl Socket::close(Socket *const this);
  2974. BOOL __cdecl Socket::reconnect(Socket *a4, char *src, UINT a6);
  2975. void __cdecl Socket::~Socket(Socket *a2);
  2976. void __cdecl Socket::~Socket(Socket *a2);
  2977. void __cdecl Socket::~Socket(Socket *a2);
  2978. BOOL __cdecl Socket::bind(int a2);
  2979. BOOL __cdecl Socket::bind(int a3, int a4);
  2980. BOOL __cdecl Socket::listen(INT backlog, UINT backloga);
  2981. BOOL __cdecl Socket::isReuseAddr(int a2);
  2982. BOOL __cdecl Socket::setReuseAddr(BOOL on, BOOL ona);
  2983. void __cdecl _tcf_0_224(void *);
  2984. void `global constructor keyed to'Socket::Socket(); // idb
  2985. SOCKET __cdecl SocketAPI::socket_ex(INT domain, INT type, INT protocol);
  2986. BOOL __cdecl SocketAPI::bind_ex(SOCKET s, const sockaddr *addr, UINT addrlen);
  2987. BOOL __cdecl SocketAPI::connect_ex(SOCKET s, const sockaddr *addr, UINT addrlen);
  2988. BOOL __cdecl SocketAPI::listen_ex(SOCKET s, UINT backlog);
  2989. SOCKET __cdecl SocketAPI::accept_ex(SOCKET s, sockaddr *addr, UINT *addrlen);
  2990. BOOL __cdecl SocketAPI::getsockopt_ex(SOCKET s, INT level, INT optname, void *optval, UINT *optlen);
  2991. UINT __cdecl SocketAPI::getsockopt_ex2(SOCKET s, INT level, INT optname, void *optval, UINT *optlen);
  2992. BOOL __cdecl SocketAPI::setsockopt_ex(SOCKET s, INT level, INT optname, const void *optval, UINT optlen);
  2993. UINT __cdecl SocketAPI::send_ex(SOCKET s, const void *buf, UINT len, UINT flags);
  2994. UINT __cdecl SocketAPI::sendto_ex(SOCKET s, const void *buf, INT len, UINT flags, const sockaddr *to, INT tolen);
  2995. UINT __cdecl SocketAPI::recv_ex(SOCKET s, void *buf, UINT len, UINT flags);
  2996. UINT __cdecl SocketAPI::recvfrom_ex(SOCKET s, void *buf, INT len, UINT flags, sockaddr *from, UINT *fromlen);
  2997. BOOL __cdecl SocketAPI::closesocket_ex(SOCKET s);
  2998. BOOL __cdecl SocketAPI::ioctlsocket_ex(SOCKET s, LONG cmd, ULONG *argp);
  2999. BOOL __cdecl SocketAPI::getsocketnonblocking_ex(SOCKET s);
  3000. BOOL __cdecl SocketAPI::setsocketnonblocking_ex(SOCKET s, BOOL on);
  3001. UINT __cdecl SocketAPI::availablesocket_ex(SOCKET s);
  3002. BOOL __cdecl SocketAPI::shutdown_ex(SOCKET s, UINT how);
  3003. INT __cdecl SocketAPI::select_ex(INT maxfdp1, fd_set *readset, fd_set *writeset, fd_set *exceptset, timeval *timeout);
  3004. void __cdecl _tcf_0_225(void *);
  3005. void `global constructor keyed to'gSocketError(); // idb
  3006. UINT __cdecl SocketInputStream::Length(const SocketInputStream *const this);
  3007. void SocketInputStream::SocketInputStream(SocketInputStream *const this, Socket *sock, UINT BufferLen, UINT MaxBufferLen); // idb
  3008. void SocketInputStream::SocketInputStream(SocketInputStream *const this, Socket *sock, UINT BufferLen, UINT MaxBufferLen); // idb
  3009. void __cdecl SocketInputStream::~SocketInputStream(SocketInputStream *const this);
  3010. void __cdecl SocketInputStream::~SocketInputStream(SocketInputStream *const this);
  3011. void __cdecl SocketInputStream::~SocketInputStream(SocketInputStream *const this);
  3012. UINT __cdecl SocketInputStream::Read(SocketInputStream *const this, CHAR *buf, UINT len);
  3013. BOOL __cdecl SocketInputStream::Peek(SocketInputStream *const this, CHAR *buf, UINT len);
  3014. BOOL __cdecl SocketInputStream::Skip(SocketInputStream *const this, UINT len);
  3015. BOOL __cdecl SocketInputStream::ReadPacket(SocketInputStream *const this, Packet *pPacket);
  3016. void __cdecl SocketInputStream::Initsize(SocketInputStream *const this, UINT BufferSize);
  3017. BOOL __cdecl SocketInputStream::Resize(SocketInputStream *const this, INT size);
  3018. UINT __cdecl SocketInputStream::Fill(SocketInputStream *const this);
  3019. void __cdecl SocketInputStream::CleanUp(int a2);
  3020. UINT __cdecl SocketInputStream::Write(SocketInputStream *const this, const CHAR *buf, UINT len);
  3021. void __cdecl _tcf_0_226(void *);
  3022. void `global constructor keyed to'SocketInputStream::SocketInputStream(); // idb
  3023. UINT __cdecl SocketOutputStream::Length(const SocketOutputStream *const this);
  3024. void SocketOutputStream::SocketOutputStream(SocketOutputStream *const this, Socket *sock, UINT BufferLen, UINT MaxBufferLen); // idb
  3025. void SocketOutputStream::SocketOutputStream(SocketOutputStream *const this, Socket *sock, UINT BufferLen, UINT MaxBufferLen); // idb
  3026. void __cdecl SocketOutputStream::~SocketOutputStream(SocketOutputStream *const this);
  3027. void __cdecl SocketOutputStream::~SocketOutputStream(SocketOutputStream *const this);
  3028. void __cdecl SocketOutputStream::~SocketOutputStream(SocketOutputStream *const this);
  3029. BOOL __cdecl SocketOutputStream::Resize(SocketOutputStream *const this, INT size);
  3030. UINT __cdecl SocketOutputStream::Write(SocketOutputStream *const this, const CHAR *buf, UINT len);
  3031. BOOL __cdecl SocketOutputStream::WritePacket(SocketOutputStream *a3, unsigned __int8 *a4);
  3032. void __cdecl SocketOutputStream::Initsize(SocketOutputStream *const this, UINT BufferLen);
  3033. UINT __cdecl SocketOutputStream::Flush(SocketOutputStream *const this);
  3034. void __cdecl SocketOutputStream::CleanUp(int a2);
  3035. void __cdecl _tcf_0_227(void *);
  3036. void `global constructor keyed to'SocketOutputStream::SocketOutputStream(); // idb
  3037. void __cdecl _tcf_0_228(void *);
  3038. void __cdecl __show__(const CHAR *szTemp);
  3039. void __cdecl __messagebox__(const CHAR *msg);
  3040. void __cdecl __assert__(const CHAR *file, UINT line, const CHAR *func, const CHAR *expr);
  3041. void __cdecl __assertex__(const CHAR *file, UINT line, const CHAR *func, const CHAR *expr, const CHAR *msg);
  3042. void __cdecl __assertspecial__(const CHAR *file, UINT line, const CHAR *func, const CHAR *expr, const CHAR *msg);
  3043. void __cdecl _tcf_1_6(void *);
  3044. void `global constructor keyed to'g_Command_Assert(); // idb
  3045. INT __cdecl FileAPI::open_ex(const CHAR *filename, INT flags);
  3046. INT __cdecl FileAPI::open_ex(const CHAR *filename, INT flags, INT mode);
  3047. UINT __cdecl FileAPI::read_ex(INT fd, void *buf, UINT len);
  3048. UINT __cdecl FileAPI::write_ex(INT fd, const void *buf, UINT len);
  3049. void __cdecl FileAPI::close_ex(INT fd);
  3050. INT __cdecl FileAPI::fcntl_ex(INT fd, INT cmd);
  3051. INT __cdecl FileAPI::fcntl_ex(INT fd, INT cmd, LONG arg);
  3052. BOOL __cdecl FileAPI::getfilenonblocking_ex(INT fd);
  3053. void __cdecl FileAPI::setfilenonblocking_ex(INT fd, BOOL on);
  3054. void __cdecl FileAPI::ioctl_ex(INT fd, INT request, void *argp);
  3055. void __cdecl FileAPI::setfilenonblocking_ex2(INT fd, BOOL on);
  3056. UINT __cdecl FileAPI::availablefile_ex(INT fd);
  3057. INT __cdecl FileAPI::dup_ex(INT fd);
  3058. LONG __cdecl FileAPI::lseek_ex(INT fd, LONG offset, INT whence);
  3059. LONG __cdecl FileAPI::tell_ex(INT fd);
  3060. void __cdecl _tcf_0_229(void *);
  3061. void `global constructor keyed to'FileAPI::open_ex(); // idb
  3062. void __cdecl IniFile::IniFile(_DWORD *a2);
  3063. void __cdecl IniFile::IniFile(_DWORD *a2);
  3064. void __cdecl IniFile::~IniFile(IniFile *const this);
  3065. void __cdecl IniFile::~IniFile(IniFile *const this);
  3066. void __cdecl IniFile::~IniFile(IniFile *const this);
  3067. void __cdecl IniFile::InitIndex(IniFile *const this);
  3068. BOOL __cdecl IniFile::Open(IniFile *const this, const CHAR *filename, const CHAR *encryptKey);
  3069. void __cdecl IniFile::IniFile(const CHAR *filename, const CHAR *filenamea);
  3070. void __cdecl IniFile::IniFile(const CHAR *filename, const CHAR *filenamea);
  3071. void __cdecl IniFile::Close(IniFile *const this);
  3072. BOOL __cdecl IniFile::Save(IniFile *const this, CHAR *filename);
  3073. CHAR *__cdecl IniFile::GetData(int a2);
  3074. INT __cdecl IniFile::GetLines(IniFile *const this, INT cur);
  3075. INT __cdecl IniFile::GetLines(IniFile *const this);
  3076. INT __cdecl IniFile::GotoNextLine(IniFile *const this, INT p);
  3077. BOOL __cdecl IniFile::ReadText(IniFile *const this, INT p, CHAR *pBuffer, INT nBufferSize);
  3078. INT __cdecl IniFile::FindIndex(IniFile *const this, CHAR *string);
  3079. BOOL __cdecl IniFile::ReadDataName(IniFile *const this, INT *const p, CHAR *szBuffer, INT nBufferSize);
  3080. INT __cdecl IniFile::FindData(IniFile *const this, INT index, CHAR *string);
  3081. BOOL __cdecl IniFile::AddIndex(IniFile *const this, CHAR *index);
  3082. BOOL __cdecl IniFile::AddData(IniFile *const this, INT p, CHAR *name, CHAR *string);
  3083. BOOL __cdecl IniFile::ModityData(IniFile *const this, INT p, CHAR *name, CHAR *string);
  3084. INT __cdecl IniFile::GotoLastLine(IniFile *const this, CHAR *index);
  3085. BOOL __cdecl IniFile::ReadText(IniFile *const this, CHAR *index, CHAR *name, CHAR *str, INT size);
  3086. BOOL __cdecl IniFile::ReadText(IniFile *const this, CHAR *index, INT lines, CHAR *str, INT size);
  3087. BOOL __cdecl IniFile::ReadInt(IniFile *const this, CHAR *index, CHAR *name, int *a5);
  3088. BOOL __cdecl IniFile::ReadInt(IniFile *const this, CHAR *index, INT lines, int *a5);
  3089. BOOL __cdecl IniFile::ReadFloat(IniFile *const this, CHAR *index, CHAR *name, float *a5);
  3090. BOOL __cdecl IniFile::ReadFloat(IniFile *const this, CHAR *index, INT lines, float *a5);
  3091. BOOL __cdecl IniFile::ReadCaption(IniFile *const this, CHAR *index, INT lines, CHAR *str, INT size);
  3092. BOOL __cdecl IniFile::Write(IniFile *const this, CHAR *index, CHAR *name, CHAR *string);
  3093. BOOL __cdecl IniFile::Write(IniFile *const this, CHAR *index, CHAR *name, INT num);
  3094. INT __cdecl IniFile::GetContinueDataNum(IniFile *const this, CHAR *index);
  3095. INT __cdecl IniFile::FindOneLine(IniFile *const this, INT p);
  3096. BOOL __cdecl IniFile::ReadOneLine(IniFile *const this, INT p, CHAR *szBuffer, INT nBufferSize);
  3097. INT __cdecl IniFile::ReturnLineNum(IniFile *const this, CHAR *string);
  3098. void __cdecl _tcf_0_230(void *);
  3099. void `global constructor keyed to'IniFile::IniFile(); // idb
  3100. void __cdecl Thread::Thread(_DWORD *a2);
  3101. void __cdecl Thread::Thread(_DWORD *a2);
  3102. void __cdecl Thread::~Thread(_DWORD *a2);
  3103. void __cdecl Thread::~Thread(_DWORD *a2);
  3104. void __cdecl Thread::~Thread(IPRegionTable *const a2);
  3105. void __cdecl Thread::start(Thread *const this);
  3106. void __cdecl Thread::stop(Thread *const this);
  3107. void __cdecl Thread::exit(Thread *const this, void *retval);
  3108. void __cdecl _tcf_0_231(void *);
  3109. void *__cdecl Thread::MyThreadProcess(void *derivedThread);
  3110. void __cdecl Thread::run(Thread *const this);
  3111. void __cdecl _tcf_1_7(void *);
  3112. void `global constructor keyed to'Thread::s_CreateThreadCount(); // idb
  3113. void __cdecl ThreadValueManager::ThreadValueManager(ThreadValueManager *const this);
  3114. void __cdecl ThreadValueManager::ThreadValueManager(ThreadValueManager *const this);
  3115. void __cdecl ThreadValueManager::~ThreadValueManager(ThreadValueManager *const this);
  3116. void __cdecl ThreadValueManager::~ThreadValueManager(ThreadValueManager *const this);
  3117. void __cdecl ThreadValueManager::AddThread(ThreadValueManager *const this, TID tid);
  3118. void __cdecl ThreadValueManager::SetThreadValue(ThreadValueManager *const this, TID tid, INT nValue);
  3119. INT __cdecl ThreadValueManager::GetThreadValue(ThreadValueManager *const this, TID tid);
  3120. TID ThreadValueManager::GetCurrentTrueThreadID(); // idb
  3121. void __cdecl _tcf_0_232(void *);
  3122. ThreadValueManager *ThreadValueManager::getSingleton(); // idb
  3123. int ThreadValueManager::GetCurrentThreadID();
  3124. void __cdecl _tcf_1_8(void *);
  3125. void `global constructor keyed to'ThreadValueManager::ThreadValueManager(); // idb
  3126. void __cdecl TimeManager::TimeManager(int a2);
  3127. void __cdecl TimeManager::TimeManager(int a2);
  3128. void __cdecl TimeManager::~TimeManager(TimeManager *const this);
  3129. void __cdecl TimeManager::~TimeManager(TimeManager *const this);
  3130. UINT __cdecl TimeManager::CurrentTime(int a2);
  3131. UINT __fastcall TimeManager::Time2Day(TimeManager *const this);
  3132. void __cdecl TimeManager::SetTime(int a2);
  3133. time_t __cdecl TimeManager::GetANSITime(int a2);
  3134. int __cdecl TimeManager::Time2DWORD(_DWORD *a2);
  3135. void __cdecl TimeManager::ConvertTU(TimeManager *const this, tm *TM, UINT *const Date);
  3136. UINT __cdecl TimeManager::CurrentDate(TimeManager *a2);
  3137. BOOL __cdecl TimeManager::Init(TimeManager *a2);
  3138. void __cdecl TimeManager::DWORD2Time(TimeManager *const this, UINT Date, tm *TM);
  3139. UINT __cdecl TimeManager::DiffDWORDTime(TimeManager *const this, UINT Date1, UINT Date2);
  3140. INT __cdecl TimeManager::IsDiffDay(TimeManager *const this, time_t uPrevANSITime, time_t uNextANSITime);
  3141. INT __cdecl TimeManager::DiffDayCount(TimeManager *const this, time_t uPrevANSITime, time_t uNextANSITime);
  3142. void __cdecl TimeManager::ConvertUT(TimeManager *const this, UINT Date, tm *TM);
  3143. UINT __cdecl TimeManager::DiffTime(TimeManager *const this, UINT Date1, UINT Date2);
  3144. UINT __cdecl TimeManager::GetDayTime(TimeManager *const this);
  3145. int __cdecl TimeManager::GetHourTime(int a2);
  3146. UINT __cdecl TimeManager::GetQuarterTime(TimeManager *const this);
  3147. UINT __cdecl TimeManager::GetWeekTime(TimeManager *const this);
  3148. void __cdecl _tcf_0_233(void *);
  3149. void `global constructor keyed to'g_pTimeManager(); // idb
  3150. int __cdecl Cyclone::FileHead2CRC(const unsigned __int8 *szData, int nDataLen);
  3151. encrypt_fret __cdecl Cyclone::IsEncrptMemory(const char *pIn, int nDataSize);
  3152. bool __cdecl Cyclone::DecryptData(char *chMask, E_Encrypt_Type eType, const char *pInBuf, int nInSize, char *pOutBuf, int *const nOutSize);
  3153. encrypt_fret __cdecl Cyclone::PlatformDecrypMemory(const char *szKey, const char *pIn, int nInSize, char *pOut, int *const nOutSize);
  3154. encrypt_fret __cdecl Cyclone::PlatformDecryptFile(const char *szKey, const char *szSourceFileName, const char *szObjectFileName);
  3155. bool __cdecl Cyclone::EncryptData(char *chMask, E_Encrypt_Type eType, const char *pInBuf, int nInSize, char *pOutBuf, int *const nOutSize);
  3156. encrypt_fret __cdecl Cyclone::PlatformEncrptMemory(const char *szKey, const char *pIn, int nInSize, char *pOut, int *const nOutSize);
  3157. encrypt_fret __cdecl Cyclone::PlatformEncrptFile(const char *szKey, const char *szSourceFileName, const char *szObjectFileName);
  3158. aes_fret __cdecl aes_enc_blk(const unsigned __int8 *in_blk, unsigned __int8 *out_blk, const aes_ctx *cx_0);
  3159. aes_fret __cdecl aes_dec_blk(const unsigned __int8 *in_blk, unsigned __int8 *out_blk, const aes_ctx *cx_0);
  3160. aes_fret __cdecl aes_enc_key(const unsigned __int8 *in_key, unsigned int klen, aes_ctx *cx_0);
  3161. aes_fret __cdecl aes_dec_key(const unsigned __int8 *in_key, unsigned int klen, aes_ctx *cx_0);
  3162. void __cdecl CAPTCHA::FontFile::FontFile(CAPTCHA::FontFile *const this);
  3163. void __cdecl CAPTCHA::FontFile::FontFile(CAPTCHA::FontFile *const this);
  3164. void __cdecl CAPTCHA::FontFile::release(CAPTCHA::FontFile *const this);
  3165. void __cdecl CAPTCHA::FontFile::~FontFile(CAPTCHA::FontFile *const this);
  3166. void __cdecl CAPTCHA::FontFile::~FontFile(CAPTCHA::FontFile *const this);
  3167. void __cdecl CAPTCHA::FontFile::createEmptyFile(CAPTCHA::FontFile *const this);
  3168. unsigned __int16 __cdecl CAPTCHA::FontFile::getCodeFromIndex(const CAPTCHA::FontFile *const this, int index);
  3169. void __cdecl CAPTCHA::FontFile::_increseGlyphBuf(CAPTCHA::FontFile *const this);
  3170. void __cdecl CAPTCHA::FontFile::insertGlyph_rgb(CAPTCHA::FontFile *const this, unsigned __int16 code, const unsigned __int8 *pBitbuf, unsigned int lPitch);
  3171. bool __cdecl CAPTCHA::FontFile::saveToFile(CAPTCHA::FontFile *const this, const char *szFileName);
  3172. bool __cdecl CAPTCHA::FontFile::openFromFile(CAPTCHA::FontFile *const this, const char *szFileName);
  3173. unsigned __int8 *__cdecl CAPTCHA::FontFile::getCodeGlyph(const CAPTCHA::FontFile *const this, unsigned __int16 code);
  3174. void __cdecl CAPTCHA::Generator::Generator(_DWORD *a2);
  3175. void __cdecl CAPTCHA::Generator::Generator(_DWORD *a2);
  3176. void __cdecl CAPTCHA::Generator::~Generator(CAPTCHA::Generator *const this);
  3177. void __cdecl CAPTCHA::Generator::~Generator(CAPTCHA::Generator *const this);
  3178. signed int __cdecl CAPTCHA::Generator::setFontFile(const CAPTCHA::FontFile *pFontFile, const CAPTCHA::FontFile *pFontFilea);
  3179. void __cdecl CAPTCHA::Generator::_adjustBlankInAnswer(CAPTCHA::Generator *const this, unsigned __int16 *answer);
  3180. void __cdecl CAPTCHA::Generator::_setPixel(CAPTCHA::Generator *const this, int x, int y, bool is_dot, CAPTCHA::CAPTCHA_DATA *const captchaData);
  3181. void __cdecl CAPTCHA::Generator::_generatorAnswer(CAPTCHA::Generator *const this, CAPTCHA::CAPTCHA_DATA *const captchaData, bool withBlank);
  3182. bool __cdecl CAPTCHA::Generator::generatorImage(CAPTCHA::Generator *const this, CAPTCHA::CAPTCHA_DATA *const captchaData, bool addMask, bool addNoise, bool withBlank);
  3183. void __cdecl CAPTCHA::Mask::generateRandomMask(unsigned __int8 *pBitBuf);
  3184. void __cdecl Seraph::Encrypt_1_S(char *memory, int len);
  3185. void __cdecl Seraph::Encrypt_2_S(char *memory, int len);
  3186. void __cdecl Seraph::StringEncrypt::StringEncrypt(int a2);
  3187. void __cdecl Seraph::StringEncrypt::StringEncrypt(int a2);
  3188. void __cdecl Seraph::StringEncrypt::~StringEncrypt(_DWORD *a2);
  3189. void __cdecl Seraph::StringEncrypt::~StringEncrypt(_DWORD *a2);
  3190. void __cdecl Seraph::StringEncrypt::~StringEncrypt(IPRegionTable *const a2);
  3191. void __cdecl Seraph::StringEncrypt::MakeKey(Seraph::StringEncrypt *const this, const char *key, const char *chain, int keylength, int blockSize);
  3192. void __cdecl Seraph::StringEncrypt::DefDecryptBlock(Seraph::StringEncrypt *const this, const char *in, char *result);
  3193. void __cdecl Seraph::StringEncrypt::DecryptBlock(Seraph::StringEncrypt *const this, const char *in, char *result);
  3194. void __cdecl Seraph::Hex2Char(const char *szHex, unsigned __int8 *const rch);
  3195. void __cdecl Seraph::HexStr2CharStr(const char *pszHexStr, unsigned __int8 *pucCharStr, int iSize);
  3196. void __cdecl Seraph::string2pwd(const char *pIn, char *pOut);
  3197. unsigned int __cdecl Seraph::CRC_Get(unsigned int nc, unsigned int ne, unsigned int nca, int a7, unsigned int nea);
  3198. void __cdecl Seraph::doMotherCheck(unsigned int uRunTime, char *szCheckValue);
  3199. void __fastcall _libc_csu_init(int a1, int a2);
  3200. void _libc_csu_fini(void); // idb
  3201. int __fastcall _do_global_ctors_aux(int a1, int a2);
  3202. void term_proc();
  3203.  
  3204. //-------------------------------------------------------------------------
  3205. // Data declarations
  3206.  
  3207. _UNKNOWN loc_804D2BD; // weak
  3208. _UNKNOWN loc_804D40D; // weak
  3209. _UNKNOWN loc_804D528; // weak
  3210. _UNKNOWN loc_804D654; // weak
  3211. _UNKNOWN loc_805246C; // weak
  3212. _UNKNOWN loc_80526FC; // weak
  3213. _UNKNOWN loc_80AA87B; // weak
  3214. _UNKNOWN loc_80ADE81; // weak
  3215. _UNKNOWN loc_80ADF81; // weak
  3216. _UNKNOWN loc_80AE091; // weak
  3217. _UNKNOWN loc_80AE251; // weak
  3218. _UNKNOWN loc_80AE3BD; // weak
  3219. _DWORD (__cdecl *off_80BAF90)(ConnectManager *this) = &ConnectManager::~ConnectManager; // weak
  3220. _DWORD (__cdecl *off_80BAFC8[2])(ReLoginManager *this) = { &ReLoginManager::~ReLoginManager, &ReLoginManager::~ReLoginManager }; // weak
  3221. _DWORD (__cdecl *off_80BB128[2])(IPRegionTable *this) = { &IPRegionTable::~IPRegionTable, &IPRegionTable::~IPRegionTable }; // weak
  3222. TimeManager stru_80BBB20 =
  3223. {
  3224. 1952805421u,
  3225. 1935767922u,
  3226. 1953654131,
  3227. {
  3228. 671747328,
  3229. 690168611,
  3230. 1767992608,
  3231. 774778478,
  3232. 1735347200,
  3233. 1394634345,
  3234. 1953653108,
  3235. 778530409,
  3236. 673197614,
  3237. 808529445,
  3238. (const char *)0x25282964
  3239. },
  3240. 771762532,
  3241. { 1767984431, 1867263854 },
  3242. { 1299081575, 778987873 },
  3243. { 7368803, 838873393 }
  3244. }; // idb
  3245. _DWORD (__cdecl *off_80BC420)(ServerManager *this) = &ServerManager::HeartBeat; // weak
  3246. _DWORD (__cdecl *off_80BCFC0)(ServerThread *this) = &ServerThread::~ServerThread; // weak
  3247. _DWORD (__cdecl *off_80BD1A8[2])(_BILLING_DATA *this) = { &_BILLING_DATA::~_BILLING_DATA, &_BILLING_DATA::~_BILLING_DATA }; // weak
  3248. _DWORD (__cdecl *off_80BD1D0[2])(_BILLING_INFO *this) = { &_BILLING_INFO::~_BILLING_INFO, &_BILLING_INFO::~_BILLING_INFO }; // weak
  3249. CHAR aSmu[3] = "SMU"; // idb
  3250. CHAR aMachine[7] = "Machine"; // idb
  3251. CHAR asc_80C3048[1] = "_"; // idb
  3252. _DWORD (__cdecl *off_80C3600[2])(OopsLogBase *this) = { &OopsLogBase::~OopsLogBase, &OopsLogBase::~OopsLogBase }; // weak
  3253. _UNKNOWN unk_80C4365; // weak
  3254. char aD[3] = "%d,"; // idb
  3255. char a0x08x_0[7] = "0X%08X,"; // idb
  3256. char aDS_0[6] = "%d,%s,"; // idb
  3257. char byte_80C4FBC = '\xB4'; // idb
  3258. char aGetRunhundanCh[47] = "Get Runhundan,CharaterId:%d,ItemId:%d,AccountNo"; // idb
  3259. _DWORD (__cdecl *off_80C9930)(PacketFactoryManagerInstance *this) = &PacketFactoryManagerInstance::Init; // weak
  3260. _DWORD (__cdecl *off_80C9970)(BillPacketFactoryManagerInstance *this) = &BillPacketFactoryManagerInstance::Init; // weak
  3261. _DWORD (__cdecl *off_80C99D0)(Packets::BLRetConnectFactory *this) = &Packets::BLRetConnectFactory::~BLRetConnectFactory; // weak
  3262. _DWORD (__cdecl *off_80C9A48[2])(BillPacketFactory *this) =
  3263. {
  3264. &BillPacketFactory::~BillPacketFactory,
  3265. &BillPacketFactory::~BillPacketFactory
  3266. }; // weak
  3267. _DWORD (__cdecl *off_80C9A68)(Packets::BLRetKeepLiveFactory *this) = &Packets::BLRetKeepLiveFactory::~BLRetKeepLiveFactory; // weak
  3268. _DWORD (__cdecl *off_80C9AD0)(Packets::BLRetAccCheckFactory *this) = &Packets::BLRetAccCheckFactory::~BLRetAccCheckFactory; // weak
  3269. _DWORD (__cdecl *off_80C9B30)(Packets::BLRetBillingStartFactory *this) = &Packets::BLRetBillingStartFactory::~BLRetBillingStartFactory; // weak
  3270. _DWORD (__cdecl *off_80C9B90)(Packets::BLRetBillingEndFactory *this) = &Packets::BLRetBillingEndFactory::~BLRetBillingEndFactory; // weak
  3271. _DWORD (__cdecl *off_80C9BF0)(Packets::BLRetBillingKeepFactory *this) = &Packets::BLRetBillingKeepFactory::~BLRetBillingKeepFactory; // weak
  3272. _DWORD (__cdecl *off_80C9C50)(Packets::BLRetKickALLFactory *this) = &Packets::BLRetKickALLFactory::~BLRetKickALLFactory; // weak
  3273. _DWORD (__cdecl *off_80C9CA8)(Packets::BLRetRegPassPortFactory *this) = &Packets::BLRetRegPassPortFactory::~BLRetRegPassPortFactory; // weak
  3274. _DWORD (__cdecl *off_80C9D10)(Packets::BLRetPrizeFactory *this) = &Packets::BLRetPrizeFactory::~BLRetPrizeFactory; // weak
  3275. _DWORD (__cdecl *off_80C9D58)(Packets::BLRetAskPointFactory *this) = &Packets::BLRetAskPointFactory::~BLRetAskPointFactory; // weak
  3276. _DWORD (__cdecl *off_80C9DB0)(Packets::BLRetAskBuyFactory *this) = &Packets::BLRetAskBuyFactory::~BLRetAskBuyFactory; // weak
  3277. _DWORD (__cdecl *off_80C9DF8)(Packets::LBLCostLogFactory *this) = &Packets::LBLCostLogFactory::~LBLCostLogFactory; // weak
  3278. _DWORD (__cdecl *off_80C9E40)(Packets::LBLAskNewUserCardFactory *this) = &Packets::LBLAskNewUserCardFactory::~LBLAskNewUserCardFactory; // weak
  3279. _DWORD (__cdecl *off_80C9E90)(Packets::LBLNewPrizeFactory *this) = &Packets::LBLNewPrizeFactory::~LBLNewPrizeFactory; // weak
  3280. _DWORD (__cdecl *off_80C9ED8)(Packets::LBLNewCheckPrizeFactory *this) = &Packets::LBLNewCheckPrizeFactory::~LBLNewCheckPrizeFactory; // weak
  3281. _DWORD (__cdecl *off_80C9F30)(Packets::LBLAskMigFactory *this) = &Packets::LBLAskMigFactory::~LBLAskMigFactory; // weak
  3282. _DWORD (__cdecl *off_80C9F78)(Packets::LBLRegNewLicenseFactory *this) = &Packets::LBLRegNewLicenseFactory::~LBLRegNewLicenseFactory; // weak
  3283. _DWORD (__cdecl *off_80C9FD0)(Packets::LBLCardCheckPrizeFactory *this) = &Packets::LBLCardCheckPrizeFactory::~LBLCardCheckPrizeFactory; // weak
  3284. _DWORD (__cdecl *off_80CA030)(Packets::LBLOperateAccFactory *this) = &Packets::LBLOperateAccFactory::~LBLOperateAccFactory; // weak
  3285. _DWORD (__cdecl *off_80CA090)(Packets::CLAskLoginFactory *this) = &Packets::CLAskLoginFactory::~CLAskLoginFactory; // weak
  3286. _DWORD (__cdecl *off_80CA0F0[2])(PacketFactory *this) = { &PacketFactory::~PacketFactory, &PacketFactory::~PacketFactory }; // weak
  3287. _DWORD (__cdecl *off_80CA110)(Packets::CLAskCharListFactory *this) = &Packets::CLAskCharListFactory::~CLAskCharListFactory; // weak
  3288. _DWORD (__cdecl *off_80CA170)(Packets::CLAskCharLoginFactory *this) = &Packets::CLAskCharLoginFactory::~CLAskCharLoginFactory; // weak
  3289. _DWORD (__cdecl *off_80CA1D0)(Packets::CLConnectFactory *this) = &Packets::CLConnectFactory::~CLConnectFactory; // weak
  3290. _DWORD (__cdecl *off_80CA218)(Packets::CLAskCreateCharFactory *this) = &Packets::CLAskCreateCharFactory::~CLAskCreateCharFactory; // weak
  3291. _DWORD (__cdecl *off_80CA270)(Packets::CLAskDeleteCharFactory *this) = &Packets::CLAskDeleteCharFactory::~CLAskDeleteCharFactory; // weak
  3292. _DWORD (__cdecl *off_80CA2D0)(Packets::CLAskRegPassPortFactory *this) = &Packets::CLAskRegPassPortFactory::~CLAskRegPassPortFactory; // weak
  3293. _DWORD (__cdecl *off_80CA330)(Packets::CLAskCreateCodeFactory *this) = &Packets::CLAskCreateCodeFactory::~CLAskCreateCodeFactory; // weak
  3294. _DWORD (__cdecl *off_80CA390)(Packets::CLRegNewLicenseFactory *this) = &Packets::CLRegNewLicenseFactory::~CLRegNewLicenseFactory; // weak
  3295. _DWORD (__cdecl *off_80CA3F0)(Packets::CLAskLoginCodeFactory *this) = &Packets::CLAskLoginCodeFactory::~CLAskLoginCodeFactory; // weak
  3296. _DWORD (__cdecl *off_80CA450)(Packets::CLRegSafeSignFactory *this) = &Packets::CLRegSafeSignFactory::~CLRegSafeSignFactory; // weak
  3297. _DWORD (__cdecl *off_80CA4B0)(Packets::LCRetLoginFactory *this) = &Packets::LCRetLoginFactory::~LCRetLoginFactory; // weak
  3298. _DWORD (__cdecl *off_80CA4F8)(Packets::LCRetCharListFactory *this) = &Packets::LCRetCharListFactory::~LCRetCharListFactory; // weak
  3299. _DWORD (__cdecl *off_80CA550)(Packets::LCStatusFactory *this) = &Packets::LCStatusFactory::~LCStatusFactory; // weak
  3300. _DWORD (__cdecl *off_80CA598)(Packets::LCRetCharLoginFactory *this) = &Packets::LCRetCharLoginFactory::~LCRetCharLoginFactory; // weak
  3301. _DWORD (__cdecl *off_80CA5F0)(Packets::LCRetConnectFactory *this) = &Packets::LCRetConnectFactory::~LCRetConnectFactory; // weak
  3302. _DWORD (__cdecl *off_80CA648)(Packets::LCRetCreateCharFactory *this) = &Packets::LCRetCreateCharFactory::~LCRetCreateCharFactory; // weak
  3303. _DWORD (__cdecl *off_80CA6B0)(Packets::LCRetDeleteCharFactory *this) = &Packets::LCRetDeleteCharFactory::~LCRetDeleteCharFactory; // weak
  3304. _DWORD (__cdecl *off_80CA710)(Packets::LCRetCreateCodeFactory *this) = &Packets::LCRetCreateCodeFactory::~LCRetCreateCodeFactory; // weak
  3305. _DWORD (__cdecl *off_80CA770)(Packets::LCRetLoginCodeFactory *this) = &Packets::LCRetLoginCodeFactory::~LCRetLoginCodeFactory; // weak
  3306. _DWORD (__cdecl *off_80CA7D0)(Packets::KeyExchangeFactory *this) = &Packets::KeyExchangeFactory::~KeyExchangeFactory; // weak
  3307. _DWORD (__cdecl *off_80CA818)(Packets::SSConnectFactory *this) = &Packets::SSConnectFactory::~SSConnectFactory; // weak
  3308. _DWORD (__cdecl *off_80CA860)(Packets::SSScenePlayerCountFactory *this) = &Packets::SSScenePlayerCountFactory::~SSScenePlayerCountFactory; // weak
  3309. _DWORD (__cdecl *off_80CA8B0)(Packets::GWLWGCostLogFactory *this) = &Packets::GWLWGCostLogFactory::~GWLWGCostLogFactory; // weak
  3310. _DWORD (__cdecl *off_80CA908)(Packets::LWAskCharLoginFactory *this) = &Packets::LWAskCharLoginFactory::~LWAskCharLoginFactory; // weak
  3311. _DWORD (__cdecl *off_80CA970)(Packets::LWRetBillingStartFactory *this) = &Packets::LWRetBillingStartFactory::~LWRetBillingStartFactory; // weak
  3312. _DWORD (__cdecl *off_80CA9D0)(Packets::LWRetBillingEndFactory *this) = &Packets::LWRetBillingEndFactory::~LWRetBillingEndFactory; // weak
  3313. _DWORD (__cdecl *off_80CAA30)(Packets::LWRetBillingKeepFactory *this) = &Packets::LWRetBillingKeepFactory::~LWRetBillingKeepFactory; // weak
  3314. _DWORD (__cdecl *off_80CAA90)(Packets::LWRetPrizeFactory *this) = &Packets::LWRetPrizeFactory::~LWRetPrizeFactory; // weak
  3315. _DWORD (__cdecl *off_80CAAD8)(Packets::LWNotifyUserFactory *this) = &Packets::LWNotifyUserFactory::~LWNotifyUserFactory; // weak
  3316. _DWORD (__cdecl *off_80CAB28)(Packets::LWChangeNameFactory *this) = &Packets::LWChangeNameFactory::~LWChangeNameFactory; // weak
  3317. _DWORD (__cdecl *off_80CAB88)(Packets::LWOperateAccResultFactory *this) = &Packets::LWOperateAccResultFactory::~LWOperateAccResultFactory; // weak
  3318. _DWORD (__cdecl *off_80CABF0)(Packets::WLRetCharLoginFactory *this) = &Packets::WLRetCharLoginFactory::~WLRetCharLoginFactory; // weak
  3319. _DWORD (__cdecl *off_80CAC50)(Packets::WLBillingStartFactory *this) = &Packets::WLBillingStartFactory::~WLBillingStartFactory; // weak
  3320. _DWORD (__cdecl *off_80CACB0)(Packets::WLBillingEndFactory *this) = &Packets::WLBillingEndFactory::~WLBillingEndFactory; // weak
  3321. _DWORD (__cdecl *off_80CAD08)(Packets::WLBillingKeepFactory *this) = &Packets::WLBillingKeepFactory::~WLBillingKeepFactory; // weak
  3322. _DWORD (__cdecl *off_80CAD70)(Packets::WLBillingKickFactory *this) = &Packets::WLBillingKickFactory::~WLBillingKickFactory; // weak
  3323. _DWORD (__cdecl *off_80CADD0)(Packets::WLAskPrizeFactory *this) = &Packets::WLAskPrizeFactory::~WLAskPrizeFactory; // weak
  3324. _DWORD (__cdecl *off_80CAE18)(Packets::WLNotifyUserFactory *this) = &Packets::WLNotifyUserFactory::~WLNotifyUserFactory; // weak
  3325. _DWORD (__cdecl *off_80CAE68)(Packets::WLChangeNameFactory *this) = &Packets::WLChangeNameFactory::~WLChangeNameFactory; // weak
  3326. _DWORD (__cdecl *off_80CAEC8)(Packets::WLOperateAccFactory *this) = &Packets::WLOperateAccFactory::~WLOperateAccFactory; // weak
  3327. _DWORD (__cdecl *off_80CAF28)(Packets::LBAskAuthFactory *this) = &Packets::LBAskAuthFactory::~LBAskAuthFactory; // weak
  3328. _DWORD (__cdecl *off_80CAF70)(Packets::LBAskRegAuthFactory *this) = &Packets::LBAskRegAuthFactory::~LBAskRegAuthFactory; // weak
  3329. _DWORD (__cdecl *off_80CAFC8)(Packets::LBAskRegLicenseFactory *this) = &Packets::LBAskRegLicenseFactory::~LBAskRegLicenseFactory; // weak
  3330. _DWORD (__cdecl *off_80CB030)(Packets::BLRetAuthFactory *this) = &Packets::BLRetAuthFactory::~BLRetAuthFactory; // weak
  3331. _DWORD (__cdecl *off_80CB468[2])(Packets::BLRetAccCheck *this) =
  3332. {
  3333. &Packets::BLRetAccCheck::~BLRetAccCheck,
  3334. &Packets::BLRetAccCheck::~BLRetAccCheck
  3335. }; // weak
  3336. _DWORD (__cdecl *off_80CB5E8[2])(Packets::BLRetAuth *this) = { &Packets::BLRetAuth::~BLRetAuth, &Packets::BLRetAuth::~BLRetAuth }; // weak
  3337. _DWORD (__cdecl *off_80CB788[2])(Packets::BLRetBillingEnd *this) =
  3338. {
  3339. &Packets::BLRetBillingEnd::~BLRetBillingEnd,
  3340. &Packets::BLRetBillingEnd::~BLRetBillingEnd
  3341. }; // weak
  3342. _DWORD (__cdecl *off_80CB928[2])(Packets::BLRetBillingKeep *this) =
  3343. {
  3344. &Packets::BLRetBillingKeep::~BLRetBillingKeep,
  3345. &Packets::BLRetBillingKeep::~BLRetBillingKeep
  3346. }; // weak
  3347. _DWORD (__cdecl *off_80CBAC8[2])(Packets::BLRetBillingStart *this) =
  3348. {
  3349. &Packets::BLRetBillingStart::~BLRetBillingStart,
  3350. &Packets::BLRetBillingStart::~BLRetBillingStart
  3351. }; // weak
  3352. _DWORD (__cdecl *off_80CBC68[2])(Packets::BLRetConnect *this) = { &Packets::BLRetConnect::~BLRetConnect, &Packets::BLRetConnect::~BLRetConnect }; // weak
  3353. _DWORD (__cdecl *off_80CBDE8[2])(Packets::BLRetKeepLive *this) =
  3354. {
  3355. &Packets::BLRetKeepLive::~BLRetKeepLive,
  3356. &Packets::BLRetKeepLive::~BLRetKeepLive
  3357. }; // weak
  3358. _DWORD (__cdecl *off_80CBF68[2])(Packets::BLRetKickALL *this) = { &Packets::BLRetKickALL::~BLRetKickALL, &Packets::BLRetKickALL::~BLRetKickALL }; // weak
  3359. _DWORD (__cdecl *off_80CC0E8[2])(Packets::BLRetRegPassPort *this) =
  3360. {
  3361. &Packets::BLRetRegPassPort::~BLRetRegPassPort,
  3362. &Packets::BLRetRegPassPort::~BLRetRegPassPort
  3363. }; // weak
  3364. _DWORD (__cdecl *off_80CC288[2])(Packets::CLAskCharList *this) =
  3365. {
  3366. &Packets::CLAskCharList::~CLAskCharList,
  3367. &Packets::CLAskCharList::~CLAskCharList
  3368. }; // weak
  3369. _DWORD (__cdecl *off_80CC428[2])(Packets::CLAskCharLogin *this) =
  3370. {
  3371. &Packets::CLAskCharLogin::~CLAskCharLogin,
  3372. &Packets::CLAskCharLogin::~CLAskCharLogin
  3373. }; // weak
  3374. _DWORD (__cdecl *off_80CC588[2])(Packets::CLAskCreateChar *this) =
  3375. {
  3376. &Packets::CLAskCreateChar::~CLAskCreateChar,
  3377. &Packets::CLAskCreateChar::~CLAskCreateChar
  3378. }; // weak
  3379. _DWORD (__cdecl *off_80CC748[2])(Packets::CLAskDeleteChar *this) =
  3380. {
  3381. &Packets::CLAskDeleteChar::~CLAskDeleteChar,
  3382. &Packets::CLAskDeleteChar::~CLAskDeleteChar
  3383. }; // weak
  3384. _DWORD (__cdecl *off_80CC908[2])(Packets::CLAskLogin *this) = { &Packets::CLAskLogin::~CLAskLogin, &Packets::CLAskLogin::~CLAskLogin }; // weak
  3385. _DWORD (__cdecl *off_80CCBE8[2])(Packets::CLAskLoginCode *this) =
  3386. {
  3387. &Packets::CLAskLoginCode::~CLAskLoginCode,
  3388. &Packets::CLAskLoginCode::~CLAskLoginCode
  3389. }; // weak
  3390. _DWORD (__cdecl *off_80CCD48[2])(Packets::CLAskRegPassPort *this) =
  3391. {
  3392. &Packets::CLAskRegPassPort::~CLAskRegPassPort,
  3393. &Packets::CLAskRegPassPort::~CLAskRegPassPort
  3394. }; // weak
  3395. _DWORD (__cdecl *off_80CD088[2])(Packets::CLConnect *this) = { &Packets::CLConnect::~CLConnect, &Packets::CLConnect::~CLConnect }; // weak
  3396. _DWORD (__cdecl *off_80CD1E8[2])(Packets::KeyExchange *this) = { &Packets::KeyExchange::~KeyExchange, &Packets::KeyExchange::~KeyExchange }; // weak
  3397. _DWORD (__cdecl *off_80CD408[2])(Packets::LBAccCheck *this) = { &Packets::LBAccCheck::~LBAccCheck, &Packets::LBAccCheck::~LBAccCheck }; // weak
  3398. _DWORD (__cdecl *off_80CD588[2])(Packets::LBAskAuth *this) = { &Packets::LBAskAuth::~LBAskAuth, &Packets::LBAskAuth::~LBAskAuth }; // weak
  3399. _DWORD (__cdecl *off_80CD828[2])(Packets::LBAskRegAuth *this) = { &Packets::LBAskRegAuth::~LBAskRegAuth, &Packets::LBAskRegAuth::~LBAskRegAuth }; // weak
  3400. _DWORD (__cdecl *off_80CDAE8[2])(Packets::LBBillingEnd *this) = { &Packets::LBBillingEnd::~LBBillingEnd, &Packets::LBBillingEnd::~LBBillingEnd }; // weak
  3401. _DWORD (__cdecl *off_80CDC68[2])(Packets::LBBillingKeep *this) =
  3402. {
  3403. &Packets::LBBillingKeep::~LBBillingKeep,
  3404. &Packets::LBBillingKeep::~LBBillingKeep
  3405. }; // weak
  3406. _DWORD (__cdecl *off_80CDDE8[2])(Packets::LBBillingStart *this) =
  3407. {
  3408. &Packets::LBBillingStart::~LBBillingStart,
  3409. &Packets::LBBillingStart::~LBBillingStart
  3410. }; // weak
  3411. _DWORD (__cdecl *off_80CDF68[2])(Packets::LBConnect *this) = { &Packets::LBConnect::~LBConnect, &Packets::LBConnect::~LBConnect }; // weak
  3412. _DWORD (__cdecl *off_80CE0E8[2])(Packets::LBKeepLive *this) = { &Packets::LBKeepLive::~LBKeepLive, &Packets::LBKeepLive::~LBKeepLive }; // weak
  3413. _DWORD (__cdecl *off_80CE268[2])(Packets::LBKickAll *this) = { &Packets::LBKickAll::~LBKickAll, &Packets::LBKickAll::~LBKickAll }; // weak
  3414. _DWORD (__cdecl *off_80CE3E8[2])(Packets::LBRegPassPort *this) =
  3415. {
  3416. &Packets::LBRegPassPort::~LBRegPassPort,
  3417. &Packets::LBRegPassPort::~LBRegPassPort
  3418. }; // weak
  3419. _DWORD (__cdecl *off_80CE568[2])(Packets::LCRetCharList *this) =
  3420. {
  3421. &Packets::LCRetCharList::~LCRetCharList,
  3422. &Packets::LCRetCharList::~LCRetCharList
  3423. }; // weak
  3424. _DWORD (__cdecl *off_80CE708[2])(Packets::LCRetCharLogin *this) =
  3425. {
  3426. &Packets::LCRetCharLogin::~LCRetCharLogin,
  3427. &Packets::LCRetCharLogin::~LCRetCharLogin
  3428. }; // weak
  3429. _DWORD (__cdecl *off_80CE868[2])(Packets::LCRetConnect *this) = { &Packets::LCRetConnect::~LCRetConnect, &Packets::LCRetConnect::~LCRetConnect }; // weak
  3430. _DWORD (__cdecl *off_80CE9C8[2])(Packets::LCRetCreateChar *this) =
  3431. {
  3432. &Packets::LCRetCreateChar::~LCRetCreateChar,
  3433. &Packets::LCRetCreateChar::~LCRetCreateChar
  3434. }; // weak
  3435. _DWORD (__cdecl *off_80CEB88[2])(Packets::LCRetDeleteChar *this) =
  3436. {
  3437. &Packets::LCRetDeleteChar::~LCRetDeleteChar,
  3438. &Packets::LCRetDeleteChar::~LCRetDeleteChar
  3439. }; // weak
  3440. _DWORD (__cdecl *off_80CED48[2])(Packets::LCRetLogin *this) = { &Packets::LCRetLogin::~LCRetLogin, &Packets::LCRetLogin::~LCRetLogin }; // weak
  3441. _DWORD (__cdecl *off_80CEEE8[2])(Packets::LCRetLoginCode *this) =
  3442. {
  3443. &Packets::LCRetLoginCode::~LCRetLoginCode,
  3444. &Packets::LCRetLoginCode::~LCRetLoginCode
  3445. }; // weak
  3446. _DWORD (__cdecl *off_80CF048[2])(Packets::LCStatus *this) = { &Packets::LCStatus::~LCStatus, &Packets::LCStatus::~LCStatus }; // weak
  3447. _DWORD (__cdecl *off_80CF1A8[2])(Packets::LWAskCharLogin *this) =
  3448. {
  3449. &Packets::LWAskCharLogin::~LWAskCharLogin,
  3450. &Packets::LWAskCharLogin::~LWAskCharLogin
  3451. }; // weak
  3452. _DWORD (__cdecl *off_80CF3A8[2])(Packets::LWRetBillingEnd *this) =
  3453. {
  3454. &Packets::LWRetBillingEnd::~LWRetBillingEnd,
  3455. &Packets::LWRetBillingEnd::~LWRetBillingEnd
  3456. }; // weak
  3457. _DWORD (__cdecl *off_80CF528[2])(Packets::LWRetBillingKeep *this) =
  3458. {
  3459. &Packets::LWRetBillingKeep::~LWRetBillingKeep,
  3460. &Packets::LWRetBillingKeep::~LWRetBillingKeep
  3461. }; // weak
  3462. _DWORD (__cdecl *off_80CF6C8[2])(Packets::LWRetBillingStart *this) =
  3463. {
  3464. &Packets::LWRetBillingStart::~LWRetBillingStart,
  3465. &Packets::LWRetBillingStart::~LWRetBillingStart
  3466. }; // weak
  3467. _DWORD (__cdecl *off_80CF868[2])(Packets::SSConnect *this) = { &Packets::SSConnect::~SSConnect, &Packets::SSConnect::~SSConnect }; // weak
  3468. _DWORD (__cdecl *off_80CF9C8[2])(Packets::SSScenePlayerCount *this) =
  3469. {
  3470. &Packets::SSScenePlayerCount::~SSScenePlayerCount,
  3471. &Packets::SSScenePlayerCount::~SSScenePlayerCount
  3472. }; // weak
  3473. _DWORD (__cdecl *off_80CFB68[2])(Packets::WLBillingEnd *this) = { &Packets::WLBillingEnd::~WLBillingEnd, &Packets::WLBillingEnd::~WLBillingEnd }; // weak
  3474. _DWORD (__cdecl *off_80CFCC8[2])(Packets::WLBillingKeep *this) =
  3475. {
  3476. &Packets::WLBillingKeep::~WLBillingKeep,
  3477. &Packets::WLBillingKeep::~WLBillingKeep
  3478. }; // weak
  3479. _DWORD (__cdecl *off_80CFE28[2])(Packets::WLBillingKick *this) =
  3480. {
  3481. &Packets::WLBillingKick::~WLBillingKick,
  3482. &Packets::WLBillingKick::~WLBillingKick
  3483. }; // weak
  3484. _DWORD (__cdecl *off_80CFF88[2])(Packets::WLBillingStart *this) =
  3485. {
  3486. &Packets::WLBillingStart::~WLBillingStart,
  3487. &Packets::WLBillingStart::~WLBillingStart
  3488. }; // weak
  3489. _DWORD (__cdecl *off_80D00E8[2])(Packets::WLRetCharLogin *this) =
  3490. {
  3491. &Packets::WLRetCharLogin::~WLRetCharLogin,
  3492. &Packets::WLRetCharLogin::~WLRetCharLogin
  3493. }; // weak
  3494. _DWORD (__cdecl *off_80D0288[2])(Packets::BLRetAskBuy *this) = { &Packets::BLRetAskBuy::~BLRetAskBuy, &Packets::BLRetAskBuy::~BLRetAskBuy }; // weak
  3495. _DWORD (__cdecl *off_80D0408[2])(Packets::BLRetAskPoint *this) =
  3496. {
  3497. &Packets::BLRetAskPoint::~BLRetAskPoint,
  3498. &Packets::BLRetAskPoint::~BLRetAskPoint
  3499. }; // weak
  3500. _DWORD (__cdecl *off_80D0588[2])(Packets::BLRetPrize *this) = { &Packets::BLRetPrize::~BLRetPrize, &Packets::BLRetPrize::~BLRetPrize }; // weak
  3501. _DWORD (__cdecl *off_80D0708[2])(Packets::LBAskBuy *this) = { &Packets::LBAskBuy::~LBAskBuy, &Packets::LBAskBuy::~LBAskBuy }; // weak
  3502. _DWORD (__cdecl *off_80D0868[2])(Packets::LBAskPoint *this) = { &Packets::LBAskPoint::~LBAskPoint, &Packets::LBAskPoint::~LBAskPoint }; // weak
  3503. _DWORD (__cdecl *off_80D09E8[2])(Packets::LBLAskNewUserCard *this) =
  3504. {
  3505. &Packets::LBLAskNewUserCard::~LBLAskNewUserCard,
  3506. &Packets::LBLAskNewUserCard::~LBLAskNewUserCard
  3507. }; // weak
  3508. _DWORD (__cdecl *off_80D0B88[2])(Packets::LBLCardCheckPrize *this) =
  3509. {
  3510. &Packets::LBLCardCheckPrize::~LBLCardCheckPrize,
  3511. &Packets::LBLCardCheckPrize::~LBLCardCheckPrize
  3512. }; // weak
  3513. _DWORD (__cdecl *off_80D0D28[2])(Packets::LBLNewCheckPrize *this) =
  3514. {
  3515. &Packets::LBLNewCheckPrize::~LBLNewCheckPrize,
  3516. &Packets::LBLNewCheckPrize::~LBLNewCheckPrize
  3517. }; // weak
  3518. _DWORD (__cdecl *off_80D0EC8[2])(Packets::LBLNewPrize *this) = { &Packets::LBLNewPrize::~LBLNewPrize, &Packets::LBLNewPrize::~LBLNewPrize }; // weak
  3519. _DWORD (__cdecl *off_80D1048[2])(Packets::LBPrize *this) = { &Packets::LBPrize::~LBPrize, &Packets::LBPrize::~LBPrize }; // weak
  3520. _DWORD (__cdecl *off_80D11A8[2])(Packets::LWRetPrize *this) = { &Packets::LWRetPrize::~LWRetPrize, &Packets::LWRetPrize::~LWRetPrize }; // weak
  3521. _DWORD (__cdecl *off_80D1348[2])(Packets::WLAskPrize *this) = { &Packets::WLAskPrize::~WLAskPrize, &Packets::WLAskPrize::~WLAskPrize }; // weak
  3522. _DWORD (__cdecl *off_80D14A8[2])(Packets::LWNotifyUser *this) = { &Packets::LWNotifyUser::~LWNotifyUser, &Packets::LWNotifyUser::~LWNotifyUser }; // weak
  3523. _DWORD (__cdecl *off_80D1648[2])(Packets::WLNotifyUser *this) = { &Packets::WLNotifyUser::~WLNotifyUser, &Packets::WLNotifyUser::~WLNotifyUser }; // weak
  3524. _DWORD (__cdecl *off_80D17E8[2])(Packets::GWLWGCostLog *this) = { &Packets::GWLWGCostLog::~GWLWGCostLog, &Packets::GWLWGCostLog::~GWLWGCostLog }; // weak
  3525. _DWORD (__cdecl *off_80D1948[2])(Packets::LBLCostLog *this) = { &Packets::LBLCostLog::~LBLCostLog, &Packets::LBLCostLog::~LBLCostLog }; // weak
  3526. _DWORD (__cdecl *off_80D1B68[2])(Packets::LBLAskMig *this) = { &Packets::LBLAskMig::~LBLAskMig, &Packets::LBLAskMig::~LBLAskMig }; // weak
  3527. _DWORD (__cdecl *off_80D1CE8[2])(Packets::LWChangeName *this) = { &Packets::LWChangeName::~LWChangeName, &Packets::LWChangeName::~LWChangeName }; // weak
  3528. _DWORD (__cdecl *off_80D1E48[2])(Packets::WLChangeName *this) = { &Packets::WLChangeName::~WLChangeName, &Packets::WLChangeName::~WLChangeName }; // weak
  3529. _DWORD (__cdecl *off_80D1FA8[2])(Packets::CLAskCreateCode *this) =
  3530. {
  3531. &Packets::CLAskCreateCode::~CLAskCreateCode,
  3532. &Packets::CLAskCreateCode::~CLAskCreateCode
  3533. }; // weak
  3534. _DWORD (__cdecl *off_80D2128[2])(Packets::LCRetCreateCode *this) =
  3535. {
  3536. &Packets::LCRetCreateCode::~LCRetCreateCode,
  3537. &Packets::LCRetCreateCode::~LCRetCreateCode
  3538. }; // weak
  3539. _DWORD (__cdecl *off_80D22A8[2])(Packets::CLRegNewLicense *this) =
  3540. {
  3541. &Packets::CLRegNewLicense::~CLRegNewLicense,
  3542. &Packets::CLRegNewLicense::~CLRegNewLicense
  3543. }; // weak
  3544. _DWORD (__cdecl *off_80D2428[2])(Packets::LBAskRegLicense *this) =
  3545. {
  3546. &Packets::LBAskRegLicense::~LBAskRegLicense,
  3547. &Packets::LBAskRegLicense::~LBAskRegLicense
  3548. }; // weak
  3549. _DWORD (__cdecl *off_80D2628[2])(Packets::LBLRegNewLicense *this) =
  3550. {
  3551. &Packets::LBLRegNewLicense::~LBLRegNewLicense,
  3552. &Packets::LBLRegNewLicense::~LBLRegNewLicense
  3553. }; // weak
  3554. _DWORD (__cdecl *off_80D27C8[2])(Packets::CLRegSafeSign *this) =
  3555. {
  3556. &Packets::CLRegSafeSign::~CLRegSafeSign,
  3557. &Packets::CLRegSafeSign::~CLRegSafeSign
  3558. }; // weak
  3559. _DWORD (__cdecl *off_80D2928[2])(Packets::LBLOperateAcc *this) =
  3560. {
  3561. &Packets::LBLOperateAcc::~LBLOperateAcc,
  3562. &Packets::LBLOperateAcc::~LBLOperateAcc
  3563. }; // weak
  3564. _DWORD (__cdecl *off_80D2AA8[2])(Packets::LWOperateAccResult *this) =
  3565. {
  3566. &Packets::LWOperateAccResult::~LWOperateAccResult,
  3567. &Packets::LWOperateAccResult::~LWOperateAccResult
  3568. }; // weak
  3569. _DWORD (__cdecl *off_80D2C48[2])(Packets::WLOperateAcc *this) = { &Packets::WLOperateAcc::~WLOperateAcc, &Packets::WLOperateAcc::~WLOperateAcc }; // weak
  3570. _DWORD (__cdecl *off_80D2DA8)(DBAbilityList *this) = &DBAbilityList::Load; // weak
  3571. _DWORD (__cdecl *off_80D2FB8[2])(DBCharCreate *this) = { &DBCharCreate::Load, &DBCharCreate::AddNew }; // weak
  3572. _DWORD (__cdecl *off_80D3130)(DBChardbVersion *this) = &DBChardbVersion::Load; // weak
  3573. _DWORD (__cdecl *off_80D3280)(DBCharExtradbVersion *this) = &DBCharExtradbVersion::Load; // weak
  3574. _DWORD (__cdecl *off_80D33D8)(DBCharExtraInfo *this) = &DBCharExtraInfo::Load; // weak
  3575. _DWORD (__cdecl *off_80D3590)(DBCharFullData *this) = &DBCharFullData::Load; // weak
  3576. _DWORD (__cdecl *off_80D37A8)(DBCharList *this) = &DBCharList::Load; // weak
  3577. _DWORD (__cdecl *off_80D3958)(DBCharVisualGem *this) = &DBCharVisualGem::Load; // weak
  3578. _DWORD (__cdecl *off_80D3B78)(DBCheckCharName *this) = &DBCheckCharName::Load; // weak
  3579. _DWORD (__cdecl *off_80D3CB0[3])(ODBCBase *this) = { &ODBCBase::Load, &ODBCBase::AddNew, &ODBCBase::Delete }; // weak
  3580. _DWORD (__cdecl *off_80D3E40)(DBCoolDownInfo *this) = &DBCoolDownInfo::Load; // weak
  3581. _DWORD (__cdecl *off_80D3FF0)(DBCrcInfo *this) = &DBCrcInfo::Load; // weak
  3582. _DWORD (__cdecl *off_80D4150[2])(DBCreateCharOp *this) = { &DBCreateCharOp::Load, &DBCreateCharOp::AddNew }; // weak
  3583. _DWORD (__cdecl *off_80D42D0[3])(DBDeleteCharOp *this) = { &DBDeleteCharOp::Load, &DBDeleteCharOp::AddNew, &DBDeleteCharOp::Delete }; // weak
  3584. _DWORD (__cdecl *off_80D44A8)(DBEquipBaseList *this) = &DBEquipBaseList::Load; // weak
  3585. _DWORD (__cdecl *off_80D4618)(DBFatigueInfo *this) = &DBFatigueInfo::Load; // weak
  3586. _DWORD (__cdecl *off_80D47D0[3])(ODBCBase *this) = { &ODBCBase::Load, &ODBCBase::AddNew, &ODBCBase::Delete }; // weak
  3587. _DWORD (__cdecl *off_80D4A90[2])(DBImmigration *this) = { &DBImmigration::Load, &DBImmigration::AddNew }; // weak
  3588. _DWORD (__cdecl *off_80D4D30)(DBImpactList *this) = &DBImpactList::Load; // weak
  3589. _DWORD (__cdecl *off_80D4F08)(DBItemList *this) = &DBItemList::Load; // weak
  3590. _DWORD (__cdecl *off_80D5108)(DBManager *this) = &DBManager::~DBManager; // weak
  3591. _DWORD (__cdecl *off_80D5248)(DBPetList *this) = &DBPetList::Load; // weak
  3592. _DWORD (__cdecl *off_80D5430)(DBPrivateInfo *this) = &DBPrivateInfo::Load; // weak
  3593. _DWORD (__cdecl *off_80D55F0)(DBPvPInfo *this) = &DBPvPInfo::Load; // weak
  3594. _DWORD (__cdecl *off_80D5748)(DBRelationList *this) = &DBRelationList::Load; // weak
  3595. _DWORD (__cdecl *off_80D5918)(DBSkillList *this) = &DBSkillList::Load; // weak
  3596. _DWORD (__cdecl *off_80D5AD0)(DBTaskList *this) = &DBTaskList::Load; // weak
  3597. _DWORD (__cdecl *off_80D5C50)(DBTitleInfo *this) = &DBTitleInfo::Load; // weak
  3598. _DWORD (__cdecl *off_80D5DC8)(DBXinFaList *this) = &DBXinFaList::Load; // weak
  3599. _DWORD (__cdecl *off_80D5F70[3])(ODBCBase *this) = { &ODBCBase::Load, &ODBCBase::AddNew, &ODBCBase::Delete }; // weak
  3600. _DWORD (__cdecl *off_80DA2C8[2])(Player *this, UINT *const socketRet) = { &Player::ProcessInput, &Player::ProcessOutput }; // weak
  3601. _DWORD (__cdecl *off_80DA848[2])(Player *this, UINT *const socketRet) = { &Player::ProcessInput, &Player::ProcessOutput }; // weak
  3602. _DWORD (__cdecl *off_80DB268)(PlayerManager *this, UINT uTime) = &PlayerManager::HeartBeat; // weak
  3603. _DWORD (__cdecl *off_80DB9A8[2])(Player *this, UINT *const socketRet) = { &Player::ProcessInput, &Player::ProcessOutput }; // weak
  3604. _DWORD (__cdecl *off_80DC0C8)(PlayerManager *this, UINT uTime) = &PlayerManager::HeartBeat; // weak
  3605. _DWORD (__cdecl *off_80DC408[2])(Player *this, UINT *const socketRet) = { &Player::ProcessInput, &Player::ProcessOutput }; // weak
  3606. CHAR aClaskcharlisth_1[35] = "CLAskCharListHandler::Execute()...."; // idb
  3607. CHAR byte_80DDF85 = '\xB4'; // idb
  3608. CHAR aClaskcreatecha_6[37] = "CLAskCreateCharHandler::Execute()...."; // idb
  3609. CHAR byte_80DE6FA = '\xB4'; // idb
  3610. CHAR aClaskdeletecha_3[37] = "CLAskDeleteCharHandler::Execute()...."; // idb
  3611. CHAR byte_80DEB58 = '\xB4'; // idb
  3612. CHAR byte_80DEF48 = '\xB4'; // idb
  3613. CHAR byte_80DF289 = '\xB4'; // idb
  3614. CHAR aLbaskauthhandl_0[17] = "LBAskAuthHandler "; // idb
  3615. CHAR aLbaskregauthha_0[20] = "LBAskRegAuthHandler "; // idb
  3616. CHAR aLcretcharlisth_1[21] = "LCRetCharListHandler "; // idb
  3617. CHAR aLcretcharlogin_0[22] = "LCRetCharLoginHandler "; // idb
  3618. CHAR aLcretcreatecha_7[23] = "LCRetCreateCharHandler "; // idb
  3619. CHAR aLcretdeletecha_1[23] = "LCRetDeleteCharHandler "; // idb
  3620. CHAR aLwaskcharlogin_0[22] = "LWAskCharLoginHandler "; // idb
  3621. CHAR aSssceneplayerc_2[26] = "SSScenePlayerCountHandler "; // idb
  3622. CHAR aNull[8] = "NULL == "; // idb
  3623. CHAR aWlretcharlogin_14[36] = "WLRetCharLoginHandler::Execute()...."; // idb
  3624. CHAR aWlretcharlogin_15[22] = "WLRetCharLoginHandler "; // idb
  3625. CHAR byte_80E15CD = '\xB4'; // idb
  3626. CHAR byte_80E160D = '\xB4'; // idb
  3627. CHAR aLwchangenameha_0[20] = "LWChangeNameHandler "; // idb
  3628. CHAR byte_80E3180 = '\xB4'; // idb
  3629. CHAR aLbaskreglicens_0[23] = "LBAskRegLicenseHandler "; // idb
  3630. CHAR aMax[4] = "max_"; // idb
  3631. CHAR aMax_0[4] = "max_"; // idb
  3632. char byte_80E3B2E = ''; // idb
  3633. char byte_80E3B91 = ''; // idb
  3634. _DWORD (__cdecl *off_80E3E58)(DBThread *this) = &DBThread::~DBThread; // weak
  3635. _DWORD (__cdecl *off_80E4268[2])(LoginDBManager *this) = { &LoginDBManager::~LoginDBManager, &LoginDBManager::~LoginDBManager }; // weak
  3636. _DWORD (__cdecl *off_80E43B8)(ProcessManager *this) = &ProcessManager::~ProcessManager; // weak
  3637. _DWORD (__cdecl *off_80E4780)(ProcessPlayerManager *this, UINT uTime) = &ProcessPlayerManager::HeartBeat; // weak
  3638. _DWORD (__cdecl *off_80E4DB0)(DBC::DBCFile *this, int iIndex) = &DBC::DBCFile::Search_Index_EQU; // weak
  3639. const unsigned int __gnu_cxx::__stl_prime_list[28] =
  3640. {
  3641. 53u,
  3642. 97u,
  3643. 193u,
  3644. 389u,
  3645. 769u,
  3646. 1543u,
  3647. 3079u,
  3648. 6151u,
  3649. 12289u,
  3650. 24593u,
  3651. 49157u,
  3652. 98317u,
  3653. 196613u,
  3654. 393241u,
  3655. 786433u,
  3656. 1572869u,
  3657. 3145739u,
  3658. 6291469u,
  3659. 12582917u,
  3660. 25165843u,
  3661. 50331653u,
  3662. 100663319u,
  3663. 201326611u,
  3664. 402653189u,
  3665. 805306457u,
  3666. 1610612741u,
  3667. 3221225473u,
  3668. 4294967291u
  3669. }; // idb
  3670. unsigned int _last = 0u; // idb
  3671. _DWORD (__cdecl *off_80E5068[2])(BillPacket *this) = { &BillPacket::~BillPacket, &BillPacket::~BillPacket }; // weak
  3672. void *off_80E50A8 = &__cxa_pure_virtual; // weak
  3673. _DWORD (__cdecl *off_80E5320)(SocketBillingInputStream *this) = &SocketBillingInputStream::~SocketBillingInputStream; // weak
  3674. _DWORD (__cdecl *off_80E5358)(SocketBillingOutputStream *this) = &SocketBillingOutputStream::~SocketBillingOutputStream; // weak
  3675. _DWORD (__cdecl *off_80E53A8[2])(Packet *this) = { &Packet::~Packet, &Packet::~Packet }; // weak
  3676. void *off_80E53E8 = &__cxa_pure_virtual; // weak
  3677. _DWORD (__cdecl *off_80E54C8[2])(Player *this, UINT *const socketRet) = { &Player::ProcessInput, &Player::ProcessOutput }; // weak
  3678. _DWORD (__cdecl *off_80E5590[2])(Socket *this) = { &Socket::~Socket, &Socket::~Socket }; // weak
  3679. _DWORD (__cdecl *off_80E5618[2])(SocketInputStream *this) =
  3680. {
  3681. &SocketInputStream::~SocketInputStream,
  3682. &SocketInputStream::~SocketInputStream
  3683. }; // weak
  3684. _DWORD (__cdecl *off_80E5648[2])(SocketOutputStream *this) =
  3685. {
  3686. &SocketOutputStream::~SocketOutputStream,
  3687. &SocketOutputStream::~SocketOutputStream
  3688. }; // weak
  3689. _DWORD (__cdecl *off_80E56F8[2])(IniFile *this) = { &IniFile::~IniFile, &IniFile::~IniFile }; // weak
  3690. _DWORD (__cdecl *off_80E5948[4])(Thread *this) = { &Thread::~Thread, &Thread::~Thread, &Thread::stop, &Thread::run }; // weak
  3691. const uint32_t im_tab[4][256] =
  3692. {
  3693. {
  3694. 0u,
  3695. 185403662u,
  3696. 370807324u,
  3697. 488053522u,
  3698. 741614648u,
  3699. 658058550u,
  3700. 976107044u,
  3701. 824393514u,
  3702. 1483229296u,
  3703. 1399144830u,
  3704. 1316117100u,
  3705. 1165972322u,
  3706. 1952214088u,
  3707. 2136040774u,
  3708. 1648787028u,
  3709. 1766553434u,
  3710. 2966458592u,
  3711. 3151862254u,
  3712. 2798289660u,
  3713. 2915535858u,
  3714. 2632234200u,
  3715. 2548678102u,
  3716. 2331944644u,
  3717. 2180231114u,
  3718. 3904428176u,
  3719. 3820343710u,
  3720. 4272081548u,
  3721. 4121936770u,
  3722. 3297574056u,
  3723. 3481400742u,
  3724. 3533106868u,
  3725. 3650873274u,
  3726. 2075868123u,
  3727. 1890988757u,
  3728. 1839278535u,
  3729. 1722556617u,
  3730. 1468997603u,
  3731. 1552029421u,
  3732. 1100287487u,
  3733. 1251476721u,
  3734. 601060267u,
  3735. 685669029u,
  3736. 902390199u,
  3737. 1053059257u,
  3738. 266819475u,
  3739. 82468509u,
  3740. 436028815u,
  3741. 317738113u,
  3742. 3412831035u,
  3743. 3227951669u,
  3744. 3715217703u,
  3745. 3598495785u,
  3746. 3881799427u,
  3747. 3964831245u,
  3748. 4047871263u,
  3749. 4199060497u,
  3750. 2466505547u,
  3751. 2551114309u,
  3752. 2233069911u,
  3753. 2383738969u,
  3754. 3208103795u,
  3755. 3023752829u,
  3756. 2838353263u,
  3757. 2720062561u,
  3758. 4134368941u,
  3759. 4250959779u,
  3760. 3765920945u,
  3761. 3950669247u,
  3762. 3663286933u,
  3763. 3511966619u,
  3764. 3426959497u,
  3765. 3343796615u,
  3766. 2919579357u,
  3767. 2768779219u,
  3768. 3089050817u,
  3769. 3004310991u,
  3770. 2184256229u,
  3771. 2302415851u,
  3772. 2485848313u,
  3773. 2670068215u,
  3774. 1186850381u,
  3775. 1303441219u,
  3776. 1353184337u,
  3777. 1537932639u,
  3778. 1787413109u,
  3779. 1636092795u,
  3780. 2090061929u,
  3781. 2006899047u,
  3782. 517320253u,
  3783. 366520115u,
  3784. 147831841u,
  3785. 63092015u,
  3786. 853641733u,
  3787. 971801355u,
  3788. 620468249u,
  3789. 804688151u,
  3790. 2379631990u,
  3791. 2262516856u,
  3792. 2613862250u,
  3793. 2428589668u,
  3794. 2715969870u,
  3795. 2867814464u,
  3796. 3086515026u,
  3797. 3170202204u,
  3798. 3586000134u,
  3799. 3736275976u,
  3800. 3282310938u,
  3801. 3366526484u,
  3802. 4186579262u,
  3803. 4068943920u,
  3804. 4019204898u,
  3805. 3835509292u,
  3806. 1023860118u,
  3807. 906744984u,
  3808. 723308426u,
  3809. 538035844u,
  3810. 288553390u,
  3811. 440397984u,
  3812. 120122290u,
  3813. 203809468u,
  3814. 1701746150u,
  3815. 1852021992u,
  3816. 1937016826u,
  3817. 2021232372u,
  3818. 1230680542u,
  3819. 1113045200u,
  3820. 1598071746u,
  3821. 1414376140u,
  3822. 4158319681u,
  3823. 4242007375u,
  3824. 3787521629u,
  3825. 3939366739u,
  3826. 3689859193u,
  3827. 3504587127u,
  3828. 3455375973u,
  3829. 3338261355u,
  3830. 2947720241u,
  3831. 2764025151u,
  3832. 3114841645u,
  3833. 2997206819u,
  3834. 2206629897u,
  3835. 2290845959u,
  3836. 2510066197u,
  3837. 2660342555u,
  3838. 1191869601u,
  3839. 1275557295u,
  3840. 1360031421u,
  3841. 1511876531u,
  3842. 1799248025u,
  3843. 1613975959u,
  3844. 2099530373u,
  3845. 1982415755u,
  3846. 526529745u,
  3847. 342834655u,
  3848. 158869197u,
  3849. 41234371u,
  3850. 861278441u,
  3851. 945494503u,
  3852. 625738485u,
  3853. 776014843u,
  3854. 2355222426u,
  3855. 2272059028u,
  3856. 2591802758u,
  3857. 2440481928u,
  3858. 2689987490u,
  3859. 2874735276u,
  3860. 3058688446u,
  3861. 3175278768u,
  3862. 3557400554u,
  3863. 3741619940u,
  3864. 3256061430u,
  3865. 3374220536u,
  3866. 4164795346u,
  3867. 4080055004u,
  3868. 3995576782u,
  3869. 3844776128u,
  3870. 1018251130u,
  3871. 935087732u,
  3872. 715871590u,
  3873. 564550760u,
  3874. 277177154u,
  3875. 461924940u,
  3876. 111112542u,
  3877. 227702864u,
  3878. 1691946762u,
  3879. 1876166148u,
  3880. 1925389590u,
  3881. 2043548696u,
  3882. 1223502642u,
  3883. 1138762300u,
  3884. 1593260334u,
  3885. 1442459680u,
  3886. 28809964u,
  3887. 179999714u,
  3888. 397248752u,
  3889. 480281086u,
  3890. 763608788u,
  3891. 646887386u,
  3892. 999926984u,
  3893. 815048134u,
  3894. 1507840668u,
  3895. 1389550482u,
  3896. 1338359936u,
  3897. 1154009486u,
  3898. 1978398372u,
  3899. 2129067946u,
  3900. 1676797112u,
  3901. 1761406390u,
  3902. 2976320012u,
  3903. 3127509762u,
  3904. 2809993232u,
  3905. 2893025566u,
  3906. 2639474228u,
  3907. 2522752826u,
  3908. 2336832552u,
  3909. 2151953702u,
  3910. 3910091388u,
  3911. 3791801202u,
  3912. 4279586912u,
  3913. 4095236462u,
  3914. 3309004356u,
  3915. 3459673930u,
  3916. 3542185048u,
  3917. 3626794326u,
  3918. 2047648055u,
  3919. 1895934009u,
  3920. 1813426987u,
  3921. 1729870373u,
  3922. 1446544655u,
  3923. 1563790337u,
  3924. 1076008723u,
  3925. 1261411869u,
  3926. 577038663u,
  3927. 694804553u,
  3928. 880737115u,
  3929. 1064563285u,
  3930. 240176511u,
  3931. 90031217u,
  3932. 407560035u,
  3933. 323475053u,
  3934. 3403428311u,
  3935. 3251714265u,
  3936. 3703972811u,
  3937. 3620416197u,
  3938. 3873969647u,
  3939. 3991215329u,
  3940. 4042393587u,
  3941. 4227796733u,
  3942. 2461301159u,
  3943. 2579067049u,
  3944. 2226023355u,
  3945. 2409849525u,
  3946. 3196083615u,
  3947. 3045938321u,
  3948. 2828685187u,
  3949. 2744600205u
  3950. },
  3951. {
  3952. 0u,
  3953. 218697227u,
  3954. 437394454u,
  3955. 387650077u,
  3956. 874788908u,
  3957. 959264295u,
  3958. 775300154u,
  3959. 591342129u,
  3960. 1749577816u,
  3961. 1698790995u,
  3962. 1918528590u,
  3963. 2136171077u,
  3964. 1550600308u,
  3965. 1365591679u,
  3966. 1182684258u,
  3967. 1266113129u,
  3968. 3499155632u,
  3969. 3717852859u,
  3970. 3397581990u,
  3971. 3347837613u,
  3972. 3837057180u,
  3973. 3921532567u,
  3974. 4272342154u,
  3975. 4088384129u,
  3976. 3101200616u,
  3977. 3050413795u,
  3978. 2731183358u,
  3979. 2948825845u,
  3980. 2365368516u,
  3981. 2180359887u,
  3982. 2532226258u,
  3983. 2615655129u,
  3984. 3141262203u,
  3985. 3056784752u,
  3986. 2703869805u,
  3987. 2887829862u,
  3988. 2401231703u,
  3989. 2182540636u,
  3990. 2500722497u,
  3991. 2550460746u,
  3992. 3547573027u,
  3993. 3732579624u,
  3994. 3378624309u,
  3995. 3295197502u,
  3996. 3881276175u,
  3997. 3932069124u,
  3998. 4249194265u,
  3999. 4031545618u,
  4000. 1806384075u,
  4001. 1721906624u,
  4002. 1907959773u,
  4003. 2091919830u,
  4004. 1603208167u,
  4005. 1384517100u,
  4006. 1167925233u,
  4007. 1217663482u,
  4008. 65227667u,
  4009. 250234264u,
  4010. 435246981u,
  4011. 351820174u,
  4012. 935818175u,
  4013. 986611124u,
  4014. 768962473u,
  4015. 551313826u,
  4016. 1836494326u,
  4017. 1618977789u,
  4018. 2003087840u,
  4019. 2054012907u,
  4020. 1498584538u,
  4021. 1415289809u,
  4022. 1128303052u,
  4023. 1313441735u,
  4024. 88006062u,
  4025. 137876389u,
  4026. 523026872u,
  4027. 304467891u,
  4028. 823846274u,
  4029. 1007938441u,
  4030. 722008468u,
  4031. 637663135u,
  4032. 3185986886u,
  4033. 2968470349u,
  4034. 2817806672u,
  4035. 2868731739u,
  4036. 2311222634u,
  4037. 2227927905u,
  4038. 2479909244u,
  4039. 2665047927u,
  4040. 3584965918u,
  4041. 3634836245u,
  4042. 3485212936u,
  4043. 3266653955u,
  4044. 3783918898u,
  4045. 3968011065u,
  4046. 4221049124u,
  4047. 4136703791u,
  4048. 3595400845u,
  4049. 3678697606u,
  4050. 3428805275u,
  4051. 3243664528u,
  4052. 3798552225u,
  4053. 4016062634u,
  4054. 4168831671u,
  4055. 4117912764u,
  4056. 3188000469u,
  4057. 3003910366u,
  4058. 2752977603u,
  4059. 2837320904u,
  4060. 2317434617u,
  4061. 2267558130u,
  4062. 2419270383u,
  4063. 2637835492u,
  4064. 115185213u,
  4065. 198481974u,
  4066. 483363371u,
  4067. 298222624u,
  4068. 855223825u,
  4069. 1072734234u,
  4070. 686535175u,
  4071. 635616268u,
  4072. 1855317605u,
  4073. 1671227502u,
  4074. 1955068531u,
  4075. 2039411832u,
  4076. 1521606217u,
  4077. 1471729730u,
  4078. 1084473951u,
  4079. 1303039060u,
  4080. 3672916471u,
  4081. 3622129660u,
  4082. 3237895649u,
  4083. 3455538154u,
  4084. 4006115803u,
  4085. 3821107152u,
  4086. 4107953613u,
  4087. 4191382470u,
  4088. 2997105071u,
  4089. 3215802276u,
  4090. 2830511545u,
  4091. 2780767154u,
  4092. 2256537987u,
  4093. 2341013384u,
  4094. 2626819477u,
  4095. 2442861470u,
  4096. 175939911u,
  4097. 125153100u,
  4098. 275692881u,
  4099. 493335386u,
  4100. 1045993835u,
  4101. 860985184u,
  4102. 608863613u,
  4103. 692292470u,
  4104. 1647628575u,
  4105. 1866325780u,
  4106. 2015808777u,
  4107. 1966064386u,
  4108. 1443948851u,
  4109. 1528424248u,
  4110. 1275262245u,
  4111. 1091304238u,
  4112. 1641519756u,
  4113. 1826526343u,
  4114. 2076542618u,
  4115. 1993115793u,
  4116. 1442030240u,
  4117. 1492823211u,
  4118. 1340194486u,
  4119. 1122545853u,
  4120. 161475284u,
  4121. 76997855u,
  4122. 328070850u,
  4123. 512030921u,
  4124. 1035719416u,
  4125. 817028339u,
  4126. 665439982u,
  4127. 715178213u,
  4128. 2974251580u,
  4129. 3159258167u,
  4130. 2874500650u,
  4131. 2791073825u,
  4132. 2237874704u,
  4133. 2288667675u,
  4134. 2675006982u,
  4135. 2457358349u,
  4136. 3641641572u,
  4137. 3557164143u,
  4138. 3273463410u,
  4139. 3457423481u,
  4140. 3979031112u,
  4141. 3760340035u,
  4142. 4147719774u,
  4143. 4197458005u,
  4144. 3080383489u,
  4145. 3130253834u,
  4146. 2911432727u,
  4147. 2692873756u,
  4148. 2210321453u,
  4149. 2394413606u,
  4150. 2578237499u,
  4151. 2493892144u,
  4152. 3755121753u,
  4153. 3537605202u,
  4154. 3317727311u,
  4155. 3368652356u,
  4156. 3958809717u,
  4157. 3875515006u,
  4158. 4058298467u,
  4159. 4243437160u,
  4160. 1728711857u,
  4161. 1778582202u,
  4162. 2098729127u,
  4163. 1880170156u,
  4164. 1395537053u,
  4165. 1579629206u,
  4166. 1228679307u,
  4167. 1144333952u,
  4168. 256015593u,
  4169. 38499042u,
  4170. 357589247u,
  4171. 408514292u,
  4172. 996558021u,
  4173. 913263310u,
  4174. 561273043u,
  4175. 746411736u,
  4176. 211892090u,
  4177. 27801969u,
  4178. 380840812u,
  4179. 465184103u,
  4180. 948244310u,
  4181. 898367837u,
  4182. 580326208u,
  4183. 798891339u,
  4184. 1693009698u,
  4185. 1776306473u,
  4186. 2130402100u,
  4187. 1945261375u,
  4188. 1355644686u,
  4189. 1573155077u,
  4190. 1256153880u,
  4191. 1205234963u,
  4192. 3694254026u,
  4193. 3510163905u,
  4194. 3324234716u,
  4195. 3408578007u,
  4196. 3893751782u,
  4197. 3843875309u,
  4198. 4060607472u,
  4199. 4279172603u,
  4200. 3027871634u,
  4201. 3111168409u,
  4202. 2926295940u,
  4203. 2741155215u,
  4204. 2153619390u,
  4205. 2371129781u,
  4206. 2588902312u,
  4207. 2537983395u
  4208. },
  4209. {
  4210. 0u,
  4211. 151915277u,
  4212. 303830554u,
  4213. 454171927u,
  4214. 607661108u,
  4215. 758523705u,
  4216. 908343854u,
  4217. 1059729699u,
  4218. 1215322216u,
  4219. 1098797925u,
  4220. 1517047410u,
  4221. 1398949247u,
  4222. 1816687708u,
  4223. 1699118929u,
  4224. 2119459398u,
  4225. 2002413899u,
  4226. 2430644432u,
  4227. 2582559709u,
  4228. 2197595850u,
  4229. 2347937223u,
  4230. 3034094820u,
  4231. 3184957417u,
  4232. 2797898494u,
  4233. 2949284339u,
  4234. 3633375416u,
  4235. 3516851125u,
  4236. 3398237858u,
  4237. 3280139695u,
  4238. 4238918796u,
  4239. 4121350017u,
  4240. 4004827798u,
  4241. 3887782299u,
  4242. 1004239803u,
  4243. 852848822u,
  4244. 700935585u,
  4245. 550069932u,
  4246. 534992783u,
  4247. 384654466u,
  4248. 234832277u,
  4249. 82922136u,
  4250. 1940595667u,
  4251. 2057644254u,
  4252. 1639396809u,
  4253. 1756970692u,
  4254. 1469255655u,
  4255. 1587348714u,
  4256. 1167006205u,
  4257. 1283527408u,
  4258. 2872822635u,
  4259. 2721431654u,
  4260. 3106397553u,
  4261. 2955531900u,
  4262. 2399397727u,
  4263. 2249059410u,
  4264. 2636116293u,
  4265. 2484206152u,
  4266. 3813380867u,
  4267. 3930429454u,
  4268. 4049044761u,
  4269. 4166618644u,
  4270. 3346251575u,
  4271. 3464344634u,
  4272. 3580864813u,
  4273. 3697386016u,
  4274. 1991112301u,
  4275. 2141453664u,
  4276. 1689378935u,
  4277. 1841294202u,
  4278. 1385552473u,
  4279. 1536938324u,
  4280. 1082772547u,
  4281. 1233635150u,
  4282. 1054715397u,
  4283. 936617224u,
  4284. 750893087u,
  4285. 634368786u,
  4286. 451248689u,
  4287. 334203196u,
  4288. 150574123u,
  4289. 33005350u,
  4290. 3863824061u,
  4291. 4014165424u,
  4292. 4098969767u,
  4293. 4250885034u,
  4294. 3262474889u,
  4295. 3413860740u,
  4296. 3496574099u,
  4297. 3647436702u,
  4298. 2923241173u,
  4299. 2805143000u,
  4300. 3156281551u,
  4301. 3039757250u,
  4302. 2315596513u,
  4303. 2198551020u,
  4304. 2551784699u,
  4305. 2434215926u,
  4306. 1299615190u,
  4307. 1148749531u,
  4308. 1600822220u,
  4309. 1449431233u,
  4310. 1766760930u,
  4311. 1614850799u,
  4312. 2069018616u,
  4313. 1918680309u,
  4314. 84334014u,
  4315. 201907891u,
  4316. 387629988u,
  4317. 504678569u,
  4318. 557775242u,
  4319. 674296455u,
  4320. 857927568u,
  4321. 976020637u,
  4322. 3717610758u,
  4323. 3566745099u,
  4324. 3481938716u,
  4325. 3330547729u,
  4326. 4188934450u,
  4327. 4037024319u,
  4328. 3954313000u,
  4329. 3803974693u,
  4330. 2514904430u,
  4331. 2632478307u,
  4332. 2281337716u,
  4333. 2398386297u,
  4334. 2984135002u,
  4335. 3100656215u,
  4336. 2747424576u,
  4337. 2865517645u,
  4338. 3963746266u,
  4339. 3847224535u,
  4340. 4267565504u,
  4341. 4149471949u,
  4342. 3363429358u,
  4343. 3245854947u,
  4344. 3664104948u,
  4345. 3547055865u,
  4346. 2754719666u,
  4347. 2906629311u,
  4348. 3056449960u,
  4349. 3206787749u,
  4350. 2148107142u,
  4351. 2298972299u,
  4352. 2450888092u,
  4353. 2602278545u,
  4354. 2090944266u,
  4355. 1974422535u,
  4356. 1857900816u,
  4357. 1739807261u,
  4358. 1486449470u,
  4359. 1368875059u,
  4360. 1250262308u,
  4361. 1133213225u,
  4362. 886120290u,
  4363. 1038029935u,
  4364. 650971512u,
  4365. 801309301u,
  4366. 283718486u,
  4367. 434583643u,
  4368. 49620300u,
  4369. 201010753u,
  4370. 3617229921u,
  4371. 3734275948u,
  4372. 3313932923u,
  4373. 3431502198u,
  4374. 4087521365u,
  4375. 4205620056u,
  4376. 3787372111u,
  4377. 3903896898u,
  4378. 2682967049u,
  4379. 2531581700u,
  4380. 2381758995u,
  4381. 2230896926u,
  4382. 3151165501u,
  4383. 3000824624u,
  4384. 2848910887u,
  4385. 2696996138u,
  4386. 1199193265u,
  4387. 1316239292u,
  4388. 1432758955u,
  4389. 1550328230u,
  4390. 1665273989u,
  4391. 1783372680u,
  4392. 1901987487u,
  4393. 2018512274u,
  4394. 252339417u,
  4395. 100954068u,
  4396. 488010435u,
  4397. 337148366u,
  4398. 724715757u,
  4399. 574374880u,
  4400. 959340279u,
  4401. 807425530u,
  4402. 2599158199u,
  4403. 2481064634u,
  4404. 2297436077u,
  4405. 2180914336u,
  4406. 3201576323u,
  4407. 3084527246u,
  4408. 2898803609u,
  4409. 2781229204u,
  4410. 3533461983u,
  4411. 3683799762u,
  4412. 3229634501u,
  4413. 3381544136u,
  4414. 4137973227u,
  4415. 4289363686u,
  4416. 3837289457u,
  4417. 3988154620u,
  4418. 168604007u,
  4419. 50510442u,
  4420. 403744637u,
  4421. 287222896u,
  4422. 775200083u,
  4423. 658151006u,
  4424. 1009290057u,
  4425. 891715652u,
  4426. 1115482383u,
  4427. 1265820162u,
  4428. 1348534037u,
  4429. 1500443672u,
  4430. 1715782971u,
  4431. 1867173430u,
  4432. 1951978273u,
  4433. 2102843436u,
  4434. 2704767500u,
  4435. 2822336769u,
  4436. 3005967382u,
  4437. 3123013403u,
  4438. 2232374840u,
  4439. 2348899637u,
  4440. 2534621218u,
  4441. 2652719919u,
  4442. 3913753188u,
  4443. 3762891113u,
  4444. 4217058430u,
  4445. 4065673075u,
  4446. 3447656016u,
  4447. 3295741277u,
  4448. 3747813450u,
  4449. 3597472583u,
  4450. 836225756u,
  4451. 953795025u,
  4452. 600562886u,
  4453. 717608907u,
  4454. 368043752u,
  4455. 484568549u,
  4456. 133427442u,
  4457. 251526143u,
  4458. 2041025204u,
  4459. 1890163129u,
  4460. 1807451310u,
  4461. 1656065955u,
  4462. 1570750080u,
  4463. 1418835341u,
  4464. 1334028442u,
  4465. 1183687575u
  4466. },
  4467. {
  4468. 0u,
  4469. 235605257u,
  4470. 471210514u,
  4471. 303896347u,
  4472. 942421028u,
  4473. 908540205u,
  4474. 607792694u,
  4475. 707863359u,
  4476. 1884842056u,
  4477. 2119394625u,
  4478. 1817080410u,
  4479. 1648721747u,
  4480. 1215585388u,
  4481. 1182749029u,
  4482. 1415726718u,
  4483. 1516850039u,
  4484. 3769684112u,
  4485. 4005289369u,
  4486. 4238789250u,
  4487. 4071475083u,
  4488. 3634160820u,
  4489. 3600279997u,
  4490. 3297443494u,
  4491. 3397514159u,
  4492. 2431170776u,
  4493. 2665723345u,
  4494. 2365498058u,
  4495. 2197139395u,
  4496. 2831453436u,
  4497. 2798617077u,
  4498. 3033700078u,
  4499. 3134823399u,
  4500. 3682319163u,
  4501. 3580933682u,
  4502. 3345850665u,
  4503. 3378949152u,
  4504. 3814166303u,
  4505. 3982262806u,
  4506. 4282488077u,
  4507. 4048197636u,
  4508. 2871251827u,
  4509. 2770919034u,
  4510. 3073755489u,
  4511. 3107898472u,
  4512. 2467293015u,
  4513. 2634345054u,
  4514. 2400845125u,
  4515. 2165502028u,
  4516. 1003187115u,
  4517. 901801634u,
  4518. 668823993u,
  4519. 701922480u,
  4520. 65494927u,
  4521. 233591430u,
  4522. 535905693u,
  4523. 301615252u,
  4524. 1267925987u,
  4525. 1167593194u,
  4526. 1468340721u,
  4527. 1502483704u,
  4528. 1941911495u,
  4529. 2108963534u,
  4530. 1873358293u,
  4531. 1638015196u,
  4532. 2918608246u,
  4533. 2751291519u,
  4534. 2984277860u,
  4535. 3219880557u,
  4536. 2514114898u,
  4537. 2614187099u,
  4538. 2311865152u,
  4539. 2277985865u,
  4540. 3719169342u,
  4541. 3550808119u,
  4542. 3250069292u,
  4543. 3484619301u,
  4544. 3850514714u,
  4545. 3951639571u,
  4546. 4187237128u,
  4547. 4154402305u,
  4548. 1296481766u,
  4549. 1129165039u,
  4550. 1364240372u,
  4551. 1599843069u,
  4552. 1969916354u,
  4553. 2069988555u,
  4554. 1769771984u,
  4555. 1735892697u,
  4556. 1025430958u,
  4557. 857069735u,
  4558. 554225596u,
  4559. 788775605u,
  4560. 87220618u,
  4561. 188345475u,
  4562. 421854104u,
  4563. 389019281u,
  4564. 1989006925u,
  4565. 2022103876u,
  4566. 1788595295u,
  4567. 1687208278u,
  4568. 1319232105u,
  4569. 1084944224u,
  4570. 1387788411u,
  4571. 1555887474u,
  4572. 114671109u,
  4573. 148812556u,
  4574. 449029143u,
  4575. 348694814u,
  4576. 1056541217u,
  4577. 821200680u,
  4578. 586125363u,
  4579. 753179962u,
  4580. 2520581853u,
  4581. 2553678804u,
  4582. 2318081231u,
  4583. 2216694214u,
  4584. 2920362745u,
  4585. 2686074864u,
  4586. 2986813675u,
  4587. 3154912738u,
  4588. 3865407125u,
  4589. 3899548572u,
  4590. 4201870471u,
  4591. 4101536142u,
  4592. 3729349297u,
  4593. 3494008760u,
  4594. 3261022371u,
  4595. 3428076970u,
  4596. 1106762476u,
  4597. 1341970405u,
  4598. 1575076094u,
  4599. 1407897079u,
  4600. 2044456648u,
  4601. 2010178497u,
  4602. 1707996378u,
  4603. 1808202195u,
  4604. 833598116u,
  4605. 1067761581u,
  4606. 767142070u,
  4607. 598910399u,
  4608. 159614592u,
  4609. 126389129u,
  4610. 362126482u,
  4611. 463376795u,
  4612. 2705787516u,
  4613. 2940995445u,
  4614. 3176206446u,
  4615. 3009027431u,
  4616. 2573942360u,
  4617. 2539664209u,
  4618. 2239571018u,
  4619. 2339776835u,
  4620. 3508494900u,
  4621. 3742658365u,
  4622. 3439949862u,
  4623. 3271718191u,
  4624. 3912455696u,
  4625. 3879230233u,
  4626. 4112862210u,
  4627. 4214112523u,
  4628. 2592891351u,
  4629. 2491903198u,
  4630. 2258271173u,
  4631. 2291234508u,
  4632. 2728416755u,
  4633. 2896910586u,
  4634. 3199619041u,
  4635. 2965193448u,
  4636. 3939764639u,
  4637. 3839820950u,
  4638. 4139914125u,
  4639. 4173930116u,
  4640. 3539484091u,
  4641. 3706925234u,
  4642. 3471714217u,
  4643. 3236244128u,
  4644. 2050797895u,
  4645. 1949809742u,
  4646. 1714072405u,
  4647. 1747035740u,
  4648. 1108378979u,
  4649. 1276872810u,
  4650. 1577492337u,
  4651. 1343066744u,
  4652. 174381327u,
  4653. 74437638u,
  4654. 376619805u,
  4655. 410635796u,
  4656. 843640107u,
  4657. 1011081250u,
  4658. 777975609u,
  4659. 542505520u,
  4660. 3959535514u,
  4661. 3792353939u,
  4662. 4028083592u,
  4663. 4263288961u,
  4664. 3559752638u,
  4665. 3659959991u,
  4666. 3359349164u,
  4667. 3325072549u,
  4668. 2623135698u,
  4669. 2454901467u,
  4670. 2152711616u,
  4671. 2386872521u,
  4672. 2759191542u,
  4673. 2860443391u,
  4674. 3093557732u,
  4675. 3060333805u,
  4676. 212952842u,
  4677. 45771267u,
  4678. 279411992u,
  4679. 514617361u,
  4680. 882725678u,
  4681. 982933031u,
  4682. 680216892u,
  4683. 645940277u,
  4684. 2095648578u,
  4685. 1927414347u,
  4686. 1627329872u,
  4687. 1861490777u,
  4688. 1153776486u,
  4689. 1255028335u,
  4690. 1490231668u,
  4691. 1457007741u,
  4692. 930745505u,
  4693. 963707304u,
  4694. 728503987u,
  4695. 627514298u,
  4696. 257308805u,
  4697. 22885772u,
  4698. 322970263u,
  4699. 491466654u,
  4700. 1193436393u,
  4701. 1227450848u,
  4702. 1530167035u,
  4703. 1430221810u,
  4704. 2131644621u,
  4705. 1896177092u,
  4706. 1662536415u,
  4707. 1829980118u,
  4708. 3620396081u,
  4709. 3653357880u,
  4710. 3420243491u,
  4711. 3319253802u,
  4712. 4024887317u,
  4713. 3790464284u,
  4714. 4092654087u,
  4715. 4261150478u,
  4716. 2811409529u,
  4717. 2845423984u,
  4718. 3146034795u,
  4719. 3046089570u,
  4720. 2680062045u,
  4721. 2444594516u,
  4722. 2208864847u,
  4723. 2376308550u
  4724. }
  4725. }; // idb
  4726. const uint32_t il_tab[4][256] =
  4727. {
  4728. {
  4729. 82u,
  4730. 9u,
  4731. 106u,
  4732. 213u,
  4733. 48u,
  4734. 54u,
  4735. 165u,
  4736. 56u,
  4737. 191u,
  4738. 64u,
  4739. 163u,
  4740. 158u,
  4741. 129u,
  4742. 243u,
  4743. 215u,
  4744. 251u,
  4745. 124u,
  4746. 227u,
  4747. 57u,
  4748. 130u,
  4749. 155u,
  4750. 47u,
  4751. 255u,
  4752. 135u,
  4753. 52u,
  4754. 142u,
  4755. 67u,
  4756. 68u,
  4757. 196u,
  4758. 222u,
  4759. 233u,
  4760. 203u,
  4761. 84u,
  4762. 123u,
  4763. 148u,
  4764. 50u,
  4765. 166u,
  4766. 194u,
  4767. 35u,
  4768. 61u,
  4769. 238u,
  4770. 76u,
  4771. 149u,
  4772. 11u,
  4773. 66u,
  4774. 250u,
  4775. 195u,
  4776. 78u,
  4777. 8u,
  4778. 46u,
  4779. 161u,
  4780. 102u,
  4781. 40u,
  4782. 217u,
  4783. 36u,
  4784. 178u,
  4785. 118u,
  4786. 91u,
  4787. 162u,
  4788. 73u,
  4789. 109u,
  4790. 139u,
  4791. 209u,
  4792. 37u,
  4793. 114u,
  4794. 248u,
  4795. 246u,
  4796. 100u,
  4797. 134u,
  4798. 104u,
  4799. 152u,
  4800. 22u,
  4801. 212u,
  4802. 164u,
  4803. 92u,
  4804. 204u,
  4805. 93u,
  4806. 101u,
  4807. 182u,
  4808. 146u,
  4809. 108u,
  4810. 112u,
  4811. 72u,
  4812. 80u,
  4813. 253u,
  4814. 237u,
  4815. 185u,
  4816. 218u,
  4817. 94u,
  4818. 21u,
  4819. 70u,
  4820. 87u,
  4821. 167u,
  4822. 141u,
  4823. 157u,
  4824. 132u,
  4825. 144u,
  4826. 216u,
  4827. 171u,
  4828. 0u,
  4829. 140u,
  4830. 188u,
  4831. 211u,
  4832. 10u,
  4833. 247u,
  4834. 228u,
  4835. 88u,
  4836. 5u,
  4837. 184u,
  4838. 179u,
  4839. 69u,
  4840. 6u,
  4841. 208u,
  4842. 44u,
  4843. 30u,
  4844. 143u,
  4845. 202u,
  4846. 63u,
  4847. 15u,
  4848. 2u,
  4849. 193u,
  4850. 175u,
  4851. 189u,
  4852. 3u,
  4853. 1u,
  4854. 19u,
  4855. 138u,
  4856. 107u,
  4857. 58u,
  4858. 145u,
  4859. 17u,
  4860. 65u,
  4861. 79u,
  4862. 103u,
  4863. 220u,
  4864. 234u,
  4865. 151u,
  4866. 242u,
  4867. 207u,
  4868. 206u,
  4869. 240u,
  4870. 180u,
  4871. 230u,
  4872. 115u,
  4873. 150u,
  4874. 172u,
  4875. 116u,
  4876. 34u,
  4877. 231u,
  4878. 173u,
  4879. 53u,
  4880. 133u,
  4881. 226u,
  4882. 249u,
  4883. 55u,
  4884. 232u,
  4885. 28u,
  4886. 117u,
  4887. 223u,
  4888. 110u,
  4889. 71u,
  4890. 241u,
  4891. 26u,
  4892. 113u,
  4893. 29u,
  4894. 41u,
  4895. 197u,
  4896. 137u,
  4897. 111u,
  4898. 183u,
  4899. 98u,
  4900. 14u,
  4901. 170u,
  4902. 24u,
  4903. 190u,
  4904. 27u,
  4905. 252u,
  4906. 86u,
  4907. 62u,
  4908. 75u,
  4909. 198u,
  4910. 210u,
  4911. 121u,
  4912. 32u,
  4913. 154u,
  4914. 219u,
  4915. 192u,
  4916. 254u,
  4917. 120u,
  4918. 205u,
  4919. 90u,
  4920. 244u,
  4921. 31u,
  4922. 221u,
  4923. 168u,
  4924. 51u,
  4925. 136u,
  4926. 7u,
  4927. 199u,
  4928. 49u,
  4929. 177u,
  4930. 18u,
  4931. 16u,
  4932. 89u,
  4933. 39u,
  4934. 128u,
  4935. 236u,
  4936. 95u,
  4937. 96u,
  4938. 81u,
  4939. 127u,
  4940. 169u,
  4941. 25u,
  4942. 181u,
  4943. 74u,
  4944. 13u,
  4945. 45u,
  4946. 229u,
  4947. 122u,
  4948. 159u,
  4949. 147u,
  4950. 201u,
  4951. 156u,
  4952. 239u,
  4953. 160u,
  4954. 224u,
  4955. 59u,
  4956. 77u,
  4957. 174u,
  4958. 42u,
  4959. 245u,
  4960. 176u,
  4961. 200u,
  4962. 235u,
  4963. 187u,
  4964. 60u,
  4965. 131u,
  4966. 83u,
  4967. 153u,
  4968. 97u,
  4969. 23u,
  4970. 43u,
  4971. 4u,
  4972. 126u,
  4973. 186u,
  4974. 119u,
  4975. 214u,
  4976. 38u,
  4977. 225u,
  4978. 105u,
  4979. 20u,
  4980. 99u,
  4981. 85u,
  4982. 33u,
  4983. 12u,
  4984. 125u
  4985. },
  4986. {
  4987. 20992u,
  4988. 2304u,
  4989. 27136u,
  4990. 54528u,
  4991. 12288u,
  4992. 13824u,
  4993. 42240u,
  4994. 14336u,
  4995. 48896u,
  4996. 16384u,
  4997. 41728u,
  4998. 40448u,
  4999. 33024u,
  5000. 62208u,
  5001. 55040u,
  5002. 64256u,
  5003. 31744u,
  5004. 58112u,
  5005. 14592u,
  5006. 33280u,
  5007. 39680u,
  5008. 12032u,
  5009. 65280u,
  5010. 34560u,
  5011. 13312u,
  5012. 36352u,
  5013. 17152u,
  5014. 17408u,
  5015. 50176u,
  5016. 56832u,
  5017. 59648u,
  5018. 51968u,
  5019. 21504u,
  5020. 31488u,
  5021. 37888u,
  5022. 12800u,
  5023. 42496u,
  5024. 49664u,
  5025. 8960u,
  5026. 15616u,
  5027. 60928u,
  5028. 19456u,
  5029. 38144u,
  5030. 2816u,
  5031. 16896u,
  5032. 64000u,
  5033. 49920u,
  5034. 19968u,
  5035. 2048u,
  5036. 11776u,
  5037. 41216u,
  5038. 26112u,
  5039. 10240u,
  5040. 55552u,
  5041. 9216u,
  5042. 45568u,
  5043. 30208u,
  5044. 23296u,
  5045. 41472u,
  5046. 18688u,
  5047. 27904u,
  5048. 35584u,
  5049. 53504u,
  5050. 9472u,
  5051. 29184u,
  5052. 63488u,
  5053. 62976u,
  5054. 25600u,
  5055. 34304u,
  5056. 26624u,
  5057. 38912u,
  5058. 5632u,
  5059. 54272u,
  5060. 41984u,
  5061. 23552u,
  5062. 52224u,
  5063. 23808u,
  5064. 25856u,
  5065. 46592u,
  5066. 37376u,
  5067. 27648u,
  5068. 28672u,
  5069. 18432u,
  5070. 20480u,
  5071. 64768u,
  5072. 60672u,
  5073. 47360u,
  5074. 55808u,
  5075. 24064u,
  5076. 5376u,
  5077. 17920u,
  5078. 22272u,
  5079. 42752u,
  5080. 36096u,
  5081. 40192u,
  5082. 33792u,
  5083. 36864u,
  5084. 55296u,
  5085. 43776u,
  5086. 0u,
  5087. 35840u,
  5088. 48128u,
  5089. 54016u,
  5090. 2560u,
  5091. 63232u,
  5092. 58368u,
  5093. 22528u,
  5094. 1280u,
  5095. 47104u,
  5096. 45824u,
  5097. 17664u,
  5098. 1536u,
  5099. 53248u,
  5100. 11264u,
  5101. 7680u,
  5102. 36608u,
  5103. 51712u,
  5104. 16128u,
  5105. 3840u,
  5106. 512u,
  5107. 49408u,
  5108. 44800u,
  5109. 48384u,
  5110. 768u,
  5111. 256u,
  5112. 4864u,
  5113. 35328u,
  5114. 27392u,
  5115. 14848u,
  5116. 37120u,
  5117. 4352u,
  5118. 16640u,
  5119. 20224u,
  5120. 26368u,
  5121. 56320u,
  5122. 59904u,
  5123. 38656u,
  5124. 61952u,
  5125. 52992u,
  5126. 52736u,
  5127. 61440u,
  5128. 46080u,
  5129. 58880u,
  5130. 29440u,
  5131. 38400u,
  5132. 44032u,
  5133. 29696u,
  5134. 8704u,
  5135. 59136u,
  5136. 44288u,
  5137. 13568u,
  5138. 34048u,
  5139. 57856u,
  5140. 63744u,
  5141. 14080u,
  5142. 59392u,
  5143. 7168u,
  5144. 29952u,
  5145. 57088u,
  5146. 28160u,
  5147. 18176u,
  5148. 61696u,
  5149. 6656u,
  5150. 28928u,
  5151. 7424u,
  5152. 10496u,
  5153. 50432u,
  5154. 35072u,
  5155. 28416u,
  5156. 46848u,
  5157. 25088u,
  5158. 3584u,
  5159. 43520u,
  5160. 6144u,
  5161. 48640u,
  5162. 6912u,
  5163. 64512u,
  5164. 22016u,
  5165. 15872u,
  5166. 19200u,
  5167. 50688u,
  5168. 53760u,
  5169. 30976u,
  5170. 8192u,
  5171. 39424u,
  5172. 56064u,
  5173. 49152u,
  5174. 65024u,
  5175. 30720u,
  5176. 52480u,
  5177. 23040u,
  5178. 62464u,
  5179. 7936u,
  5180. 56576u,
  5181. 43008u,
  5182. 13056u,
  5183. 34816u,
  5184. 1792u,
  5185. 50944u,
  5186. 12544u,
  5187. 45312u,
  5188. 4608u,
  5189. 4096u,
  5190. 22784u,
  5191. 9984u,
  5192. 32768u,
  5193. 60416u,
  5194. 24320u,
  5195. 24576u,
  5196. 20736u,
  5197. 32512u,
  5198. 43264u,
  5199. 6400u,
  5200. 46336u,
  5201. 18944u,
  5202. 3328u,
  5203. 11520u,
  5204. 58624u,
  5205. 31232u,
  5206. 40704u,
  5207. 37632u,
  5208. 51456u,
  5209. 39936u,
  5210. 61184u,
  5211. 40960u,
  5212. 57344u,
  5213. 15104u,
  5214. 19712u,
  5215. 44544u,
  5216. 10752u,
  5217. 62720u,
  5218. 45056u,
  5219. 51200u,
  5220. 60160u,
  5221. 47872u,
  5222. 15360u,
  5223. 33536u,
  5224. 21248u,
  5225. 39168u,
  5226. 24832u,
  5227. 5888u,
  5228. 11008u,
  5229. 1024u,
  5230. 32256u,
  5231. 47616u,
  5232. 30464u,
  5233. 54784u,
  5234. 9728u,
  5235. 57600u,
  5236. 26880u,
  5237. 5120u,
  5238. 25344u,
  5239. 21760u,
  5240. 8448u,
  5241. 3072u,
  5242. 32000u
  5243. },
  5244. {
  5245. 5373952u,
  5246. 589824u,
  5247. 6946816u,
  5248. 13959168u,
  5249. 3145728u,
  5250. 3538944u,
  5251. 10813440u,
  5252. 3670016u,
  5253. 12517376u,
  5254. 4194304u,
  5255. 10682368u,
  5256. 10354688u,
  5257. 8454144u,
  5258. 15925248u,
  5259. 14090240u,
  5260. 16449536u,
  5261. 8126464u,
  5262. 14876672u,
  5263. 3735552u,
  5264. 8519680u,
  5265. 10158080u,
  5266. 3080192u,
  5267. 16711680u,
  5268. 8847360u,
  5269. 3407872u,
  5270. 9306112u,
  5271. 4390912u,
  5272. 4456448u,
  5273. 12845056u,
  5274. 14548992u,
  5275. 15269888u,
  5276. 13303808u,
  5277. 5505024u,
  5278. 8060928u,
  5279. 9699328u,
  5280. 3276800u,
  5281. 10878976u,
  5282. 12713984u,
  5283. 2293760u,
  5284. 3997696u,
  5285. 15597568u,
  5286. 4980736u,
  5287. 9764864u,
  5288. 720896u,
  5289. 4325376u,
  5290. 16384000u,
  5291. 12779520u,
  5292. 5111808u,
  5293. 524288u,
  5294. 3014656u,
  5295. 10551296u,
  5296. 6684672u,
  5297. 2621440u,
  5298. 14221312u,
  5299. 2359296u,
  5300. 11665408u,
  5301. 7733248u,
  5302. 5963776u,
  5303. 10616832u,
  5304. 4784128u,
  5305. 7143424u,
  5306. 9109504u,
  5307. 13697024u,
  5308. 2424832u,
  5309. 7471104u,
  5310. 16252928u,
  5311. 16121856u,
  5312. 6553600u,
  5313. 8781824u,
  5314. 6815744u,
  5315. 9961472u,
  5316. 1441792u,
  5317. 13893632u,
  5318. 10747904u,
  5319. 6029312u,
  5320. 13369344u,
  5321. 6094848u,
  5322. 6619136u,
  5323. 11927552u,
  5324. 9568256u,
  5325. 7077888u,
  5326. 7340032u,
  5327. 4718592u,
  5328. 5242880u,
  5329. 16580608u,
  5330. 15532032u,
  5331. 12124160u,
  5332. 14286848u,
  5333. 6160384u,
  5334. 1376256u,
  5335. 4587520u,
  5336. 5701632u,
  5337. 10944512u,
  5338. 9240576u,
  5339. 10289152u,
  5340. 8650752u,
  5341. 9437184u,
  5342. 14155776u,
  5343. 11206656u,
  5344. 0u,
  5345. 9175040u,
  5346. 12320768u,
  5347. 13828096u,
  5348. 655360u,
  5349. 16187392u,
  5350. 14942208u,
  5351. 5767168u,
  5352. 327680u,
  5353. 12058624u,
  5354. 11730944u,
  5355. 4521984u,
  5356. 393216u,
  5357. 13631488u,
  5358. 2883584u,
  5359. 1966080u,
  5360. 9371648u,
  5361. 13238272u,
  5362. 4128768u,
  5363. 983040u,
  5364. 131072u,
  5365. 12648448u,
  5366. 11468800u,
  5367. 12386304u,
  5368. 196608u,
  5369. 65536u,
  5370. 1245184u,
  5371. 9043968u,
  5372. 7012352u,
  5373. 3801088u,
  5374. 9502720u,
  5375. 1114112u,
  5376. 4259840u,
  5377. 5177344u,
  5378. 6750208u,
  5379. 14417920u,
  5380. 15335424u,
  5381. 9895936u,
  5382. 15859712u,
  5383. 13565952u,
  5384. 13500416u,
  5385. 15728640u,
  5386. 11796480u,
  5387. 15073280u,
  5388. 7536640u,
  5389. 9830400u,
  5390. 11272192u,
  5391. 7602176u,
  5392. 2228224u,
  5393. 15138816u,
  5394. 11337728u,
  5395. 3473408u,
  5396. 8716288u,
  5397. 14811136u,
  5398. 16318464u,
  5399. 3604480u,
  5400. 15204352u,
  5401. 1835008u,
  5402. 7667712u,
  5403. 14614528u,
  5404. 7208960u,
  5405. 4653056u,
  5406. 15794176u,
  5407. 1703936u,
  5408. 7405568u,
  5409. 1900544u,
  5410. 2686976u,
  5411. 12910592u,
  5412. 8978432u,
  5413. 7274496u,
  5414. 11993088u,
  5415. 6422528u,
  5416. 917504u,
  5417. 11141120u,
  5418. 1572864u,
  5419. 12451840u,
  5420. 1769472u,
  5421. 16515072u,
  5422. 5636096u,
  5423. 4063232u,
  5424. 4915200u,
  5425. 12976128u,
  5426. 13762560u,
  5427. 7929856u,
  5428. 2097152u,
  5429. 10092544u,
  5430. 14352384u,
  5431. 12582912u,
  5432. 16646144u,
  5433. 7864320u,
  5434. 13434880u,
  5435. 5898240u,
  5436. 15990784u,
  5437. 2031616u,
  5438. 14483456u,
  5439. 11010048u,
  5440. 3342336u,
  5441. 8912896u,
  5442. 458752u,
  5443. 13041664u,
  5444. 3211264u,
  5445. 11599872u,
  5446. 1179648u,
  5447. 1048576u,
  5448. 5832704u,
  5449. 2555904u,
  5450. 8388608u,
  5451. 15466496u,
  5452. 6225920u,
  5453. 6291456u,
  5454. 5308416u,
  5455. 8323072u,
  5456. 11075584u,
  5457. 1638400u,
  5458. 11862016u,
  5459. 4849664u,
  5460. 851968u,
  5461. 2949120u,
  5462. 15007744u,
  5463. 7995392u,
  5464. 10420224u,
  5465. 9633792u,
  5466. 13172736u,
  5467. 10223616u,
  5468. 15663104u,
  5469. 10485760u,
  5470. 14680064u,
  5471. 3866624u,
  5472. 5046272u,
  5473. 11403264u,
  5474. 2752512u,
  5475. 16056320u,
  5476. 11534336u,
  5477. 13107200u,
  5478. 15400960u,
  5479. 12255232u,
  5480. 3932160u,
  5481. 8585216u,
  5482. 5439488u,
  5483. 10027008u,
  5484. 6356992u,
  5485. 1507328u,
  5486. 2818048u,
  5487. 262144u,
  5488. 8257536u,
  5489. 12189696u,
  5490. 7798784u,
  5491. 14024704u,
  5492. 2490368u,
  5493. 14745600u,
  5494. 6881280u,
  5495. 1310720u,
  5496. 6488064u,
  5497. 5570560u,
  5498. 2162688u,
  5499. 786432u,
  5500. 8192000u
  5501. },
  5502. {
  5503. 1375731712u,
  5504. 150994944u,
  5505. 1778384896u,
  5506. 3573547008u,
  5507. 805306368u,
  5508. 905969664u,
  5509. 2768240640u,
  5510. 939524096u,
  5511. 3204448256u,
  5512. 1073741824u,
  5513. 2734686208u,
  5514. 2650800128u,
  5515. 2164260864u,
  5516. 4076863488u,
  5517. 3607101440u,
  5518. 4211081216u,
  5519. 2080374784u,
  5520. 3808428032u,
  5521. 956301312u,
  5522. 2181038080u,
  5523. 2600468480u,
  5524. 788529152u,
  5525. 4278190080u,
  5526. 2264924160u,
  5527. 872415232u,
  5528. 2382364672u,
  5529. 1124073472u,
  5530. 1140850688u,
  5531. 3288334336u,
  5532. 3724541952u,
  5533. 3909091328u,
  5534. 3405774848u,
  5535. 1409286144u,
  5536. 2063597568u,
  5537. 2483027968u,
  5538. 838860800u,
  5539. 2785017856u,
  5540. 3254779904u,
  5541. 587202560u,
  5542. 1023410176u,
  5543. 3992977408u,
  5544. 1275068416u,
  5545. 2499805184u,
  5546. 184549376u,
  5547. 1107296256u,
  5548. 4194304000u,
  5549. 3271557120u,
  5550. 1308622848u,
  5551. 134217728u,
  5552. 771751936u,
  5553. 2701131776u,
  5554. 1711276032u,
  5555. 671088640u,
  5556. 3640655872u,
  5557. 603979776u,
  5558. 2986344448u,
  5559. 1979711488u,
  5560. 1526726656u,
  5561. 2717908992u,
  5562. 1224736768u,
  5563. 1828716544u,
  5564. 2332033024u,
  5565. 3506438144u,
  5566. 620756992u,
  5567. 1912602624u,
  5568. 4160749568u,
  5569. 4127195136u,
  5570. 1677721600u,
  5571. 2248146944u,
  5572. 1744830464u,
  5573. 2550136832u,
  5574. 369098752u,
  5575. 3556769792u,
  5576. 2751463424u,
  5577. 1543503872u,
  5578. 3422552064u,
  5579. 1560281088u,
  5580. 1694498816u,
  5581. 3053453312u,
  5582. 2449473536u,
  5583. 1811939328u,
  5584. 1879048192u,
  5585. 1207959552u,
  5586. 1342177280u,
  5587. 4244635648u,
  5588. 3976200192u,
  5589. 3103784960u,
  5590. 3657433088u,
  5591. 1577058304u,
  5592. 352321536u,
  5593. 1174405120u,
  5594. 1459617792u,
  5595. 2801795072u,
  5596. 2365587456u,
  5597. 2634022912u,
  5598. 2214592512u,
  5599. 2415919104u,
  5600. 3623878656u,
  5601. 2868903936u,
  5602. 0u,
  5603. 2348810240u,
  5604. 3154116608u,
  5605. 3539992576u,
  5606. 167772160u,
  5607. 4143972352u,
  5608. 3825205248u,
  5609. 1476395008u,
  5610. 83886080u,
  5611. 3087007744u,
  5612. 3003121664u,
  5613. 1157627904u,
  5614. 100663296u,
  5615. 3489660928u,
  5616. 738197504u,
  5617. 503316480u,
  5618. 2399141888u,
  5619. 3388997632u,
  5620. 1056964608u,
  5621. 251658240u,
  5622. 33554432u,
  5623. 3238002688u,
  5624. 2936012800u,
  5625. 3170893824u,
  5626. 50331648u,
  5627. 16777216u,
  5628. 318767104u,
  5629. 2315255808u,
  5630. 1795162112u,
  5631. 973078528u,
  5632. 2432696320u,
  5633. 285212672u,
  5634. 1090519040u,
  5635. 1325400064u,
  5636. 1728053248u,
  5637. 3690987520u,
  5638. 3925868544u,
  5639. 2533359616u,
  5640. 4060086272u,
  5641. 3472883712u,
  5642. 3456106496u,
  5643. 4026531840u,
  5644. 3019898880u,
  5645. 3858759680u,
  5646. 1929379840u,
  5647. 2516582400u,
  5648. 2885681152u,
  5649. 1946157056u,
  5650. 570425344u,
  5651. 3875536896u,
  5652. 2902458368u,
  5653. 889192448u,
  5654. 2231369728u,
  5655. 3791650816u,
  5656. 4177526784u,
  5657. 922746880u,
  5658. 3892314112u,
  5659. 469762048u,
  5660. 1962934272u,
  5661. 3741319168u,
  5662. 1845493760u,
  5663. 1191182336u,
  5664. 4043309056u,
  5665. 436207616u,
  5666. 1895825408u,
  5667. 486539264u,
  5668. 687865856u,
  5669. 3305111552u,
  5670. 2298478592u,
  5671. 1862270976u,
  5672. 3070230528u,
  5673. 1644167168u,
  5674. 234881024u,
  5675. 2852126720u,
  5676. 402653184u,
  5677. 3187671040u,
  5678. 452984832u,
  5679. 4227858432u,
  5680. 1442840576u,
  5681. 1040187392u,
  5682. 1258291200u,
  5683. 3321888768u,
  5684. 3523215360u,
  5685. 2030043136u,
  5686. 536870912u,
  5687. 2583691264u,
  5688. 3674210304u,
  5689. 3221225472u,
  5690. 4261412864u,
  5691. 2013265920u,
  5692. 3439329280u,
  5693. 1509949440u,
  5694. 4093640704u,
  5695. 520093696u,
  5696. 3707764736u,
  5697. 2818572288u,
  5698. 855638016u,
  5699. 2281701376u,
  5700. 117440512u,
  5701. 3338665984u,
  5702. 822083584u,
  5703. 2969567232u,
  5704. 301989888u,
  5705. 268435456u,
  5706. 1493172224u,
  5707. 654311424u,
  5708. 2147483648u,
  5709. 3959422976u,
  5710. 1593835520u,
  5711. 1610612736u,
  5712. 1358954496u,
  5713. 2130706432u,
  5714. 2835349504u,
  5715. 419430400u,
  5716. 3036676096u,
  5717. 1241513984u,
  5718. 218103808u,
  5719. 754974720u,
  5720. 3841982464u,
  5721. 2046820352u,
  5722. 2667577344u,
  5723. 2466250752u,
  5724. 3372220416u,
  5725. 2617245696u,
  5726. 4009754624u,
  5727. 2684354560u,
  5728. 3758096384u,
  5729. 989855744u,
  5730. 1291845632u,
  5731. 2919235584u,
  5732. 704643072u,
  5733. 4110417920u,
  5734. 2952790016u,
  5735. 3355443200u,
  5736. 3942645760u,
  5737. 3137339392u,
  5738. 1006632960u,
  5739. 2197815296u,
  5740. 1392508928u,
  5741. 2566914048u,
  5742. 1627389952u,
  5743. 385875968u,
  5744. 721420288u,
  5745. 67108864u,
  5746. 2113929216u,
  5747. 3120562176u,
  5748. 1996488704u,
  5749. 3590324224u,
  5750. 637534208u,
  5751. 3774873600u,
  5752. 1761607680u,
  5753. 335544320u,
  5754. 1660944384u,
  5755. 1426063360u,
  5756. 553648128u,
  5757. 201326592u,
  5758. 2097152000u
  5759. }
  5760. }; // idb
  5761. const uint32_t it_tab[4][256] =
  5762. {
  5763. {
  5764. 1353184337u,
  5765. 1399144830u,
  5766. 3282310938u,
  5767. 2522752826u,
  5768. 3412831035u,
  5769. 4047871263u,
  5770. 2874735276u,
  5771. 2466505547u,
  5772. 1442459680u,
  5773. 4134368941u,
  5774. 2440481928u,
  5775. 625738485u,
  5776. 4242007375u,
  5777. 3620416197u,
  5778. 2151953702u,
  5779. 2409849525u,
  5780. 1230680542u,
  5781. 1729870373u,
  5782. 2551114309u,
  5783. 3787521629u,
  5784. 41234371u,
  5785. 317738113u,
  5786. 2744600205u,
  5787. 3338261355u,
  5788. 3881799427u,
  5789. 2510066197u,
  5790. 3950669247u,
  5791. 3663286933u,
  5792. 763608788u,
  5793. 3542185048u,
  5794. 694804553u,
  5795. 1154009486u,
  5796. 1787413109u,
  5797. 2021232372u,
  5798. 1799248025u,
  5799. 3715217703u,
  5800. 3058688446u,
  5801. 397248752u,
  5802. 1722556617u,
  5803. 3023752829u,
  5804. 407560035u,
  5805. 2184256229u,
  5806. 1613975959u,
  5807. 1165972322u,
  5808. 3765920945u,
  5809. 2226023355u,
  5810. 480281086u,
  5811. 2485848313u,
  5812. 1483229296u,
  5813. 436028815u,
  5814. 2272059028u,
  5815. 3086515026u,
  5816. 601060267u,
  5817. 3791801202u,
  5818. 1468997603u,
  5819. 715871590u,
  5820. 120122290u,
  5821. 63092015u,
  5822. 2591802758u,
  5823. 2768779219u,
  5824. 4068943920u,
  5825. 2997206819u,
  5826. 3127509762u,
  5827. 1552029421u,
  5828. 723308426u,
  5829. 2461301159u,
  5830. 4042393587u,
  5831. 2715969870u,
  5832. 3455375973u,
  5833. 3586000134u,
  5834. 526529745u,
  5835. 2331944644u,
  5836. 2639474228u,
  5837. 2689987490u,
  5838. 853641733u,
  5839. 1978398372u,
  5840. 971801355u,
  5841. 2867814464u,
  5842. 111112542u,
  5843. 1360031421u,
  5844. 4186579262u,
  5845. 1023860118u,
  5846. 2919579357u,
  5847. 1186850381u,
  5848. 3045938321u,
  5849. 90031217u,
  5850. 1876166148u,
  5851. 4279586912u,
  5852. 620468249u,
  5853. 2548678102u,
  5854. 3426959497u,
  5855. 2006899047u,
  5856. 3175278768u,
  5857. 2290845959u,
  5858. 945494503u,
  5859. 3689859193u,
  5860. 1191869601u,
  5861. 3910091388u,
  5862. 3374220536u,
  5863. 0u,
  5864. 2206629897u,
  5865. 1223502642u,
  5866. 2893025566u,
  5867. 1316117100u,
  5868. 4227796733u,
  5869. 1446544655u,
  5870. 517320253u,
  5871. 658058550u,
  5872. 1691946762u,
  5873. 564550760u,
  5874. 3511966619u,
  5875. 976107044u,
  5876. 2976320012u,
  5877. 266819475u,
  5878. 3533106868u,
  5879. 2660342555u,
  5880. 1338359936u,
  5881. 2720062561u,
  5882. 1766553434u,
  5883. 370807324u,
  5884. 179999714u,
  5885. 3844776128u,
  5886. 1138762300u,
  5887. 488053522u,
  5888. 185403662u,
  5889. 2915535858u,
  5890. 3114841645u,
  5891. 3366526484u,
  5892. 2233069911u,
  5893. 1275557295u,
  5894. 3151862254u,
  5895. 4250959779u,
  5896. 2670068215u,
  5897. 3170202204u,
  5898. 3309004356u,
  5899. 880737115u,
  5900. 1982415755u,
  5901. 3703972811u,
  5902. 1761406390u,
  5903. 1676797112u,
  5904. 3403428311u,
  5905. 277177154u,
  5906. 1076008723u,
  5907. 538035844u,
  5908. 2099530373u,
  5909. 4164795346u,
  5910. 288553390u,
  5911. 1839278535u,
  5912. 1261411869u,
  5913. 4080055004u,
  5914. 3964831245u,
  5915. 3504587127u,
  5916. 1813426987u,
  5917. 2579067049u,
  5918. 4199060497u,
  5919. 577038663u,
  5920. 3297574056u,
  5921. 440397984u,
  5922. 3626794326u,
  5923. 4019204898u,
  5924. 3343796615u,
  5925. 3251714265u,
  5926. 4272081548u,
  5927. 906744984u,
  5928. 3481400742u,
  5929. 685669029u,
  5930. 646887386u,
  5931. 2764025151u,
  5932. 3835509292u,
  5933. 227702864u,
  5934. 2613862250u,
  5935. 1648787028u,
  5936. 3256061430u,
  5937. 3904428176u,
  5938. 1593260334u,
  5939. 4121936770u,
  5940. 3196083615u,
  5941. 2090061929u,
  5942. 2838353263u,
  5943. 3004310991u,
  5944. 999926984u,
  5945. 2809993232u,
  5946. 1852021992u,
  5947. 2075868123u,
  5948. 158869197u,
  5949. 4095236462u,
  5950. 28809964u,
  5951. 2828685187u,
  5952. 1701746150u,
  5953. 2129067946u,
  5954. 147831841u,
  5955. 3873969647u,
  5956. 3650873274u,
  5957. 3459673930u,
  5958. 3557400554u,
  5959. 3598495785u,
  5960. 2947720241u,
  5961. 824393514u,
  5962. 815048134u,
  5963. 3227951669u,
  5964. 935087732u,
  5965. 2798289660u,
  5966. 2966458592u,
  5967. 366520115u,
  5968. 1251476721u,
  5969. 4158319681u,
  5970. 240176511u,
  5971. 804688151u,
  5972. 2379631990u,
  5973. 1303441219u,
  5974. 1414376140u,
  5975. 3741619940u,
  5976. 3820343710u,
  5977. 461924940u,
  5978. 3089050817u,
  5979. 2136040774u,
  5980. 82468509u,
  5981. 1563790337u,
  5982. 1937016826u,
  5983. 776014843u,
  5984. 1511876531u,
  5985. 1389550482u,
  5986. 861278441u,
  5987. 323475053u,
  5988. 2355222426u,
  5989. 2047648055u,
  5990. 2383738969u,
  5991. 2302415851u,
  5992. 3995576782u,
  5993. 902390199u,
  5994. 3991215329u,
  5995. 1018251130u,
  5996. 1507840668u,
  5997. 1064563285u,
  5998. 2043548696u,
  5999. 3208103795u,
  6000. 3939366739u,
  6001. 1537932639u,
  6002. 342834655u,
  6003. 2262516856u,
  6004. 2180231114u,
  6005. 1053059257u,
  6006. 741614648u,
  6007. 1598071746u,
  6008. 1925389590u,
  6009. 203809468u,
  6010. 2336832552u,
  6011. 1100287487u,
  6012. 1895934009u,
  6013. 3736275976u,
  6014. 2632234200u,
  6015. 2428589668u,
  6016. 1636092795u,
  6017. 1890988757u,
  6018. 1952214088u,
  6019. 1113045200u
  6020. },
  6021. {
  6022. 2817806672u,
  6023. 1698790995u,
  6024. 2752977603u,
  6025. 1579629206u,
  6026. 1806384075u,
  6027. 1167925233u,
  6028. 1492823211u,
  6029. 65227667u,
  6030. 4197458005u,
  6031. 1836494326u,
  6032. 1993115793u,
  6033. 1275262245u,
  6034. 3622129660u,
  6035. 3408578007u,
  6036. 1144333952u,
  6037. 2741155215u,
  6038. 1521606217u,
  6039. 465184103u,
  6040. 250234264u,
  6041. 3237895649u,
  6042. 1966064386u,
  6043. 4031545618u,
  6044. 2537983395u,
  6045. 4191382470u,
  6046. 1603208167u,
  6047. 2626819477u,
  6048. 2054012907u,
  6049. 1498584538u,
  6050. 2210321453u,
  6051. 561273043u,
  6052. 1776306473u,
  6053. 3368652356u,
  6054. 2311222634u,
  6055. 2039411832u,
  6056. 1045993835u,
  6057. 1907959773u,
  6058. 1340194486u,
  6059. 2911432727u,
  6060. 2887829862u,
  6061. 986611124u,
  6062. 1256153880u,
  6063. 823846274u,
  6064. 860985184u,
  6065. 2136171077u,
  6066. 2003087840u,
  6067. 2926295940u,
  6068. 2692873756u,
  6069. 722008468u,
  6070. 1749577816u,
  6071. 4249194265u,
  6072. 1826526343u,
  6073. 4168831671u,
  6074. 3547573027u,
  6075. 38499042u,
  6076. 2401231703u,
  6077. 2874500650u,
  6078. 686535175u,
  6079. 3266653955u,
  6080. 2076542618u,
  6081. 137876389u,
  6082. 2267558130u,
  6083. 2780767154u,
  6084. 1778582202u,
  6085. 2182540636u,
  6086. 483363371u,
  6087. 3027871634u,
  6088. 4060607472u,
  6089. 3798552225u,
  6090. 4107953613u,
  6091. 3188000469u,
  6092. 1647628575u,
  6093. 4272342154u,
  6094. 1395537053u,
  6095. 1442030240u,
  6096. 3783918898u,
  6097. 3958809717u,
  6098. 3968011065u,
  6099. 4016062634u,
  6100. 2675006982u,
  6101. 275692881u,
  6102. 2317434617u,
  6103. 115185213u,
  6104. 88006062u,
  6105. 3185986886u,
  6106. 2371129781u,
  6107. 1573155077u,
  6108. 3557164143u,
  6109. 357589247u,
  6110. 4221049124u,
  6111. 3921532567u,
  6112. 1128303052u,
  6113. 2665047927u,
  6114. 1122545853u,
  6115. 2341013384u,
  6116. 1528424248u,
  6117. 4006115803u,
  6118. 175939911u,
  6119. 256015593u,
  6120. 512030921u,
  6121. 0u,
  6122. 2256537987u,
  6123. 3979031112u,
  6124. 1880170156u,
  6125. 1918528590u,
  6126. 4279172603u,
  6127. 948244310u,
  6128. 3584965918u,
  6129. 959264295u,
  6130. 3641641572u,
  6131. 2791073825u,
  6132. 1415289809u,
  6133. 775300154u,
  6134. 1728711857u,
  6135. 3881276175u,
  6136. 2532226258u,
  6137. 2442861470u,
  6138. 3317727311u,
  6139. 551313826u,
  6140. 1266113129u,
  6141. 437394454u,
  6142. 3130253834u,
  6143. 715178213u,
  6144. 3760340035u,
  6145. 387650077u,
  6146. 218697227u,
  6147. 3347837613u,
  6148. 2830511545u,
  6149. 2837320904u,
  6150. 435246981u,
  6151. 125153100u,
  6152. 3717852859u,
  6153. 1618977789u,
  6154. 637663135u,
  6155. 4117912764u,
  6156. 996558021u,
  6157. 2130402100u,
  6158. 692292470u,
  6159. 3324234716u,
  6160. 4243437160u,
  6161. 4058298467u,
  6162. 3694254026u,
  6163. 2237874704u,
  6164. 580326208u,
  6165. 298222624u,
  6166. 608863613u,
  6167. 1035719416u,
  6168. 855223825u,
  6169. 2703869805u,
  6170. 798891339u,
  6171. 817028339u,
  6172. 1384517100u,
  6173. 3821107152u,
  6174. 380840812u,
  6175. 3111168409u,
  6176. 1217663482u,
  6177. 1693009698u,
  6178. 2365368516u,
  6179. 1072734234u,
  6180. 746411736u,
  6181. 2419270383u,
  6182. 1313441735u,
  6183. 3510163905u,
  6184. 2731183358u,
  6185. 198481974u,
  6186. 2180359887u,
  6187. 3732579624u,
  6188. 2394413606u,
  6189. 3215802276u,
  6190. 2637835492u,
  6191. 2457358349u,
  6192. 3428805275u,
  6193. 1182684258u,
  6194. 328070850u,
  6195. 3101200616u,
  6196. 4147719774u,
  6197. 2948825845u,
  6198. 2153619390u,
  6199. 2479909244u,
  6200. 768962473u,
  6201. 304467891u,
  6202. 2578237499u,
  6203. 2098729127u,
  6204. 1671227502u,
  6205. 3141262203u,
  6206. 2015808777u,
  6207. 408514292u,
  6208. 3080383489u,
  6209. 2588902312u,
  6210. 1855317605u,
  6211. 3875515006u,
  6212. 3485212936u,
  6213. 3893751782u,
  6214. 2615655129u,
  6215. 913263310u,
  6216. 161475284u,
  6217. 2091919830u,
  6218. 2997105071u,
  6219. 591342129u,
  6220. 2493892144u,
  6221. 1721906624u,
  6222. 3159258167u,
  6223. 3397581990u,
  6224. 3499155632u,
  6225. 3634836245u,
  6226. 2550460746u,
  6227. 3672916471u,
  6228. 1355644686u,
  6229. 4136703791u,
  6230. 3595400845u,
  6231. 2968470349u,
  6232. 1303039060u,
  6233. 76997855u,
  6234. 3050413795u,
  6235. 2288667675u,
  6236. 523026872u,
  6237. 1365591679u,
  6238. 3932069124u,
  6239. 898367837u,
  6240. 1955068531u,
  6241. 1091304238u,
  6242. 493335386u,
  6243. 3537605202u,
  6244. 1443948851u,
  6245. 1205234963u,
  6246. 1641519756u,
  6247. 211892090u,
  6248. 351820174u,
  6249. 1007938441u,
  6250. 665439982u,
  6251. 3378624309u,
  6252. 3843875309u,
  6253. 2974251580u,
  6254. 3755121753u,
  6255. 1945261375u,
  6256. 3457423481u,
  6257. 935818175u,
  6258. 3455538154u,
  6259. 2868731739u,
  6260. 1866325780u,
  6261. 3678697606u,
  6262. 4088384129u,
  6263. 3295197502u,
  6264. 874788908u,
  6265. 1084473951u,
  6266. 3273463410u,
  6267. 635616268u,
  6268. 1228679307u,
  6269. 2500722497u,
  6270. 27801969u,
  6271. 3003910366u,
  6272. 3837057180u,
  6273. 3243664528u,
  6274. 2227927905u,
  6275. 3056784752u,
  6276. 1550600308u,
  6277. 1471729730u
  6278. },
  6279. {
  6280. 4098969767u,
  6281. 1098797925u,
  6282. 387629988u,
  6283. 658151006u,
  6284. 2872822635u,
  6285. 2636116293u,
  6286. 4205620056u,
  6287. 3813380867u,
  6288. 807425530u,
  6289. 1991112301u,
  6290. 3431502198u,
  6291. 49620300u,
  6292. 3847224535u,
  6293. 717608907u,
  6294. 891715652u,
  6295. 1656065955u,
  6296. 2984135002u,
  6297. 3123013403u,
  6298. 3930429454u,
  6299. 4267565504u,
  6300. 801309301u,
  6301. 1283527408u,
  6302. 1183687575u,
  6303. 3547055865u,
  6304. 2399397727u,
  6305. 2450888092u,
  6306. 1841294202u,
  6307. 1385552473u,
  6308. 3201576323u,
  6309. 1951978273u,
  6310. 3762891113u,
  6311. 3381544136u,
  6312. 3262474889u,
  6313. 2398386297u,
  6314. 1486449470u,
  6315. 3106397553u,
  6316. 3787372111u,
  6317. 2297436077u,
  6318. 550069932u,
  6319. 3464344634u,
  6320. 3747813450u,
  6321. 451248689u,
  6322. 1368875059u,
  6323. 1398949247u,
  6324. 1689378935u,
  6325. 1807451310u,
  6326. 2180914336u,
  6327. 150574123u,
  6328. 1215322216u,
  6329. 1167006205u,
  6330. 3734275948u,
  6331. 2069018616u,
  6332. 1940595667u,
  6333. 1265820162u,
  6334. 534992783u,
  6335. 1432758955u,
  6336. 3954313000u,
  6337. 3039757250u,
  6338. 3313932923u,
  6339. 936617224u,
  6340. 674296455u,
  6341. 3206787749u,
  6342. 50510442u,
  6343. 384654466u,
  6344. 3481938716u,
  6345. 2041025204u,
  6346. 133427442u,
  6347. 1766760930u,
  6348. 3664104948u,
  6349. 84334014u,
  6350. 886120290u,
  6351. 2797898494u,
  6352. 775200083u,
  6353. 4087521365u,
  6354. 2315596513u,
  6355. 4137973227u,
  6356. 2198551020u,
  6357. 1614850799u,
  6358. 1901987487u,
  6359. 1857900816u,
  6360. 557775242u,
  6361. 3717610758u,
  6362. 1054715397u,
  6363. 3863824061u,
  6364. 1418835341u,
  6365. 3295741277u,
  6366. 100954068u,
  6367. 1348534037u,
  6368. 2551784699u,
  6369. 3184957417u,
  6370. 1082772547u,
  6371. 3647436702u,
  6372. 3903896898u,
  6373. 2298972299u,
  6374. 434583643u,
  6375. 3363429358u,
  6376. 2090944266u,
  6377. 1115482383u,
  6378. 2230896926u,
  6379. 0u,
  6380. 2148107142u,
  6381. 724715757u,
  6382. 287222896u,
  6383. 1517047410u,
  6384. 251526143u,
  6385. 2232374840u,
  6386. 2923241173u,
  6387. 758523705u,
  6388. 252339417u,
  6389. 1550328230u,
  6390. 1536938324u,
  6391. 908343854u,
  6392. 168604007u,
  6393. 1469255655u,
  6394. 4004827798u,
  6395. 2602278545u,
  6396. 3229634501u,
  6397. 3697386016u,
  6398. 2002413899u,
  6399. 303830554u,
  6400. 2481064634u,
  6401. 2696996138u,
  6402. 574374880u,
  6403. 454171927u,
  6404. 151915277u,
  6405. 2347937223u,
  6406. 3056449960u,
  6407. 504678569u,
  6408. 4049044761u,
  6409. 1974422535u,
  6410. 2582559709u,
  6411. 2141453664u,
  6412. 33005350u,
  6413. 1918680309u,
  6414. 1715782971u,
  6415. 4217058430u,
  6416. 1133213225u,
  6417. 600562886u,
  6418. 3988154620u,
  6419. 3837289457u,
  6420. 836225756u,
  6421. 1665273989u,
  6422. 2534621218u,
  6423. 3330547729u,
  6424. 1250262308u,
  6425. 3151165501u,
  6426. 4188934450u,
  6427. 700935585u,
  6428. 2652719919u,
  6429. 3000824624u,
  6430. 2249059410u,
  6431. 3245854947u,
  6432. 3005967382u,
  6433. 1890163129u,
  6434. 2484206152u,
  6435. 3913753188u,
  6436. 4238918796u,
  6437. 4037024319u,
  6438. 2102843436u,
  6439. 857927568u,
  6440. 1233635150u,
  6441. 953795025u,
  6442. 3398237858u,
  6443. 3566745099u,
  6444. 4121350017u,
  6445. 2057644254u,
  6446. 3084527246u,
  6447. 2906629311u,
  6448. 976020637u,
  6449. 2018512274u,
  6450. 1600822220u,
  6451. 2119459398u,
  6452. 2381758995u,
  6453. 3633375416u,
  6454. 959340279u,
  6455. 3280139695u,
  6456. 1570750080u,
  6457. 3496574099u,
  6458. 3580864813u,
  6459. 634368786u,
  6460. 2898803609u,
  6461. 403744637u,
  6462. 2632478307u,
  6463. 1004239803u,
  6464. 650971512u,
  6465. 1500443672u,
  6466. 2599158199u,
  6467. 1334028442u,
  6468. 2514904430u,
  6469. 4289363686u,
  6470. 3156281551u,
  6471. 368043752u,
  6472. 3887782299u,
  6473. 1867173430u,
  6474. 2682967049u,
  6475. 2955531900u,
  6476. 2754719666u,
  6477. 1059729699u,
  6478. 2781229204u,
  6479. 2721431654u,
  6480. 1316239292u,
  6481. 2197595850u,
  6482. 2430644432u,
  6483. 2805143000u,
  6484. 82922136u,
  6485. 3963746266u,
  6486. 3447656016u,
  6487. 2434215926u,
  6488. 1299615190u,
  6489. 4014165424u,
  6490. 2865517645u,
  6491. 2531581700u,
  6492. 3516851125u,
  6493. 1783372680u,
  6494. 750893087u,
  6495. 1699118929u,
  6496. 1587348714u,
  6497. 2348899637u,
  6498. 2281337716u,
  6499. 201010753u,
  6500. 1739807261u,
  6501. 3683799762u,
  6502. 283718486u,
  6503. 3597472583u,
  6504. 3617229921u,
  6505. 2704767500u,
  6506. 4166618644u,
  6507. 334203196u,
  6508. 2848910887u,
  6509. 1639396809u,
  6510. 484568549u,
  6511. 1199193265u,
  6512. 3533461983u,
  6513. 4065673075u,
  6514. 337148366u,
  6515. 3346251575u,
  6516. 4149471949u,
  6517. 4250885034u,
  6518. 1038029935u,
  6519. 1148749531u,
  6520. 2949284339u,
  6521. 1756970692u,
  6522. 607661108u,
  6523. 2747424576u,
  6524. 488010435u,
  6525. 3803974693u,
  6526. 1009290057u,
  6527. 234832277u,
  6528. 2822336769u,
  6529. 201907891u,
  6530. 3034094820u,
  6531. 1449431233u,
  6532. 3413860740u,
  6533. 852848822u,
  6534. 1816687708u,
  6535. 3100656215u
  6536. },
  6537. {
  6538. 1364240372u,
  6539. 2119394625u,
  6540. 449029143u,
  6541. 982933031u,
  6542. 1003187115u,
  6543. 535905693u,
  6544. 2896910586u,
  6545. 1267925987u,
  6546. 542505520u,
  6547. 2918608246u,
  6548. 2291234508u,
  6549. 4112862210u,
  6550. 1341970405u,
  6551. 3319253802u,
  6552. 645940277u,
  6553. 3046089570u,
  6554. 3729349297u,
  6555. 627514298u,
  6556. 1167593194u,
  6557. 1575076094u,
  6558. 3271718191u,
  6559. 2165502028u,
  6560. 2376308550u,
  6561. 1808202195u,
  6562. 65494927u,
  6563. 362126482u,
  6564. 3219880557u,
  6565. 2514114898u,
  6566. 3559752638u,
  6567. 1490231668u,
  6568. 1227450848u,
  6569. 2386872521u,
  6570. 1969916354u,
  6571. 4101536142u,
  6572. 2573942360u,
  6573. 668823993u,
  6574. 3199619041u,
  6575. 4028083592u,
  6576. 3378949152u,
  6577. 2108963534u,
  6578. 1662536415u,
  6579. 3850514714u,
  6580. 2539664209u,
  6581. 1648721747u,
  6582. 2984277860u,
  6583. 3146034795u,
  6584. 4263288961u,
  6585. 4187237128u,
  6586. 1884842056u,
  6587. 2400845125u,
  6588. 2491903198u,
  6589. 1387788411u,
  6590. 2871251827u,
  6591. 1927414347u,
  6592. 3814166303u,
  6593. 1714072405u,
  6594. 2986813675u,
  6595. 788775605u,
  6596. 2258271173u,
  6597. 3550808119u,
  6598. 821200680u,
  6599. 598910399u,
  6600. 45771267u,
  6601. 3982262806u,
  6602. 2318081231u,
  6603. 2811409529u,
  6604. 4092654087u,
  6605. 1319232105u,
  6606. 1707996378u,
  6607. 114671109u,
  6608. 3508494900u,
  6609. 3297443494u,
  6610. 882725678u,
  6611. 2728416755u,
  6612. 87220618u,
  6613. 2759191542u,
  6614. 188345475u,
  6615. 1084944224u,
  6616. 1577492337u,
  6617. 3176206446u,
  6618. 1056541217u,
  6619. 2520581853u,
  6620. 3719169342u,
  6621. 1296481766u,
  6622. 2444594516u,
  6623. 1896177092u,
  6624. 74437638u,
  6625. 1627329872u,
  6626. 421854104u,
  6627. 3600279997u,
  6628. 2311865152u,
  6629. 1735892697u,
  6630. 2965193448u,
  6631. 126389129u,
  6632. 3879230233u,
  6633. 2044456648u,
  6634. 2705787516u,
  6635. 2095648578u,
  6636. 4173930116u,
  6637. 0u,
  6638. 159614592u,
  6639. 843640107u,
  6640. 514617361u,
  6641. 1817080410u,
  6642. 4261150478u,
  6643. 257308805u,
  6644. 1025430958u,
  6645. 908540205u,
  6646. 174381327u,
  6647. 1747035740u,
  6648. 2614187099u,
  6649. 607792694u,
  6650. 212952842u,
  6651. 2467293015u,
  6652. 3033700078u,
  6653. 463376795u,
  6654. 2152711616u,
  6655. 1638015196u,
  6656. 1516850039u,
  6657. 471210514u,
  6658. 3792353939u,
  6659. 3236244128u,
  6660. 1011081250u,
  6661. 303896347u,
  6662. 235605257u,
  6663. 4071475083u,
  6664. 767142070u,
  6665. 348694814u,
  6666. 1468340721u,
  6667. 2940995445u,
  6668. 4005289369u,
  6669. 2751291519u,
  6670. 4154402305u,
  6671. 1555887474u,
  6672. 1153776486u,
  6673. 1530167035u,
  6674. 2339776835u,
  6675. 3420243491u,
  6676. 3060333805u,
  6677. 3093557732u,
  6678. 3620396081u,
  6679. 1108378979u,
  6680. 322970263u,
  6681. 2216694214u,
  6682. 2239571018u,
  6683. 3539484091u,
  6684. 2920362745u,
  6685. 3345850665u,
  6686. 491466654u,
  6687. 3706925234u,
  6688. 233591430u,
  6689. 2010178497u,
  6690. 728503987u,
  6691. 2845423984u,
  6692. 301615252u,
  6693. 1193436393u,
  6694. 2831453436u,
  6695. 2686074864u,
  6696. 1457007741u,
  6697. 586125363u,
  6698. 2277985865u,
  6699. 3653357880u,
  6700. 2365498058u,
  6701. 2553678804u,
  6702. 2798617077u,
  6703. 2770919034u,
  6704. 3659959991u,
  6705. 1067761581u,
  6706. 753179962u,
  6707. 1343066744u,
  6708. 1788595295u,
  6709. 1415726718u,
  6710. 4139914125u,
  6711. 2431170776u,
  6712. 777975609u,
  6713. 2197139395u,
  6714. 2680062045u,
  6715. 1769771984u,
  6716. 1873358293u,
  6717. 3484619301u,
  6718. 3359349164u,
  6719. 279411992u,
  6720. 3899548572u,
  6721. 3682319163u,
  6722. 3439949862u,
  6723. 1861490777u,
  6724. 3959535514u,
  6725. 2208864847u,
  6726. 3865407125u,
  6727. 2860443391u,
  6728. 554225596u,
  6729. 4024887317u,
  6730. 3134823399u,
  6731. 1255028335u,
  6732. 3939764639u,
  6733. 701922480u,
  6734. 833598116u,
  6735. 707863359u,
  6736. 3325072549u,
  6737. 901801634u,
  6738. 1949809742u,
  6739. 4238789250u,
  6740. 3769684112u,
  6741. 857069735u,
  6742. 4048197636u,
  6743. 1106762476u,
  6744. 2131644621u,
  6745. 389019281u,
  6746. 1989006925u,
  6747. 1129165039u,
  6748. 3428076970u,
  6749. 3839820950u,
  6750. 2665723345u,
  6751. 1276872810u,
  6752. 3250069292u,
  6753. 1182749029u,
  6754. 2634345054u,
  6755. 22885772u,
  6756. 4201870471u,
  6757. 4214112523u,
  6758. 3009027431u,
  6759. 2454901467u,
  6760. 3912455696u,
  6761. 1829980118u,
  6762. 2592891351u,
  6763. 930745505u,
  6764. 1502483704u,
  6765. 3951639571u,
  6766. 3471714217u,
  6767. 3073755489u,
  6768. 3790464284u,
  6769. 2050797895u,
  6770. 2623135698u,
  6771. 1430221810u,
  6772. 410635796u,
  6773. 1941911495u,
  6774. 1407897079u,
  6775. 1599843069u,
  6776. 3742658365u,
  6777. 2022103876u,
  6778. 3397514159u,
  6779. 3107898472u,
  6780. 942421028u,
  6781. 3261022371u,
  6782. 376619805u,
  6783. 3154912738u,
  6784. 680216892u,
  6785. 4282488077u,
  6786. 963707304u,
  6787. 148812556u,
  6788. 3634160820u,
  6789. 1687208278u,
  6790. 2069988555u,
  6791. 3580933682u,
  6792. 1215585388u,
  6793. 3494008760u
  6794. }
  6795. }; // idb
  6796. const uint32_t fl_tab[4][256] =
  6797. {
  6798. {
  6799. 99u,
  6800. 124u,
  6801. 119u,
  6802. 123u,
  6803. 242u,
  6804. 107u,
  6805. 111u,
  6806. 197u,
  6807. 48u,
  6808. 1u,
  6809. 103u,
  6810. 43u,
  6811. 254u,
  6812. 215u,
  6813. 171u,
  6814. 118u,
  6815. 202u,
  6816. 130u,
  6817. 201u,
  6818. 125u,
  6819. 250u,
  6820. 89u,
  6821. 71u,
  6822. 240u,
  6823. 173u,
  6824. 212u,
  6825. 162u,
  6826. 175u,
  6827. 156u,
  6828. 164u,
  6829. 114u,
  6830. 192u,
  6831. 183u,
  6832. 253u,
  6833. 147u,
  6834. 38u,
  6835. 54u,
  6836. 63u,
  6837. 247u,
  6838. 204u,
  6839. 52u,
  6840. 165u,
  6841. 229u,
  6842. 241u,
  6843. 113u,
  6844. 216u,
  6845. 49u,
  6846. 21u,
  6847. 4u,
  6848. 199u,
  6849. 35u,
  6850. 195u,
  6851. 24u,
  6852. 150u,
  6853. 5u,
  6854. 154u,
  6855. 7u,
  6856. 18u,
  6857. 128u,
  6858. 226u,
  6859. 235u,
  6860. 39u,
  6861. 178u,
  6862. 117u,
  6863. 9u,
  6864. 131u,
  6865. 44u,
  6866. 26u,
  6867. 27u,
  6868. 110u,
  6869. 90u,
  6870. 160u,
  6871. 82u,
  6872. 59u,
  6873. 214u,
  6874. 179u,
  6875. 41u,
  6876. 227u,
  6877. 47u,
  6878. 132u,
  6879. 83u,
  6880. 209u,
  6881. 0u,
  6882. 237u,
  6883. 32u,
  6884. 252u,
  6885. 177u,
  6886. 91u,
  6887. 106u,
  6888. 203u,
  6889. 190u,
  6890. 57u,
  6891. 74u,
  6892. 76u,
  6893. 88u,
  6894. 207u,
  6895. 208u,
  6896. 239u,
  6897. 170u,
  6898. 251u,
  6899. 67u,
  6900. 77u,
  6901. 51u,
  6902. 133u,
  6903. 69u,
  6904. 249u,
  6905. 2u,
  6906. 127u,
  6907. 80u,
  6908. 60u,
  6909. 159u,
  6910. 168u,
  6911. 81u,
  6912. 163u,
  6913. 64u,
  6914. 143u,
  6915. 146u,
  6916. 157u,
  6917. 56u,
  6918. 245u,
  6919. 188u,
  6920. 182u,
  6921. 218u,
  6922. 33u,
  6923. 16u,
  6924. 255u,
  6925. 243u,
  6926. 210u,
  6927. 205u,
  6928. 12u,
  6929. 19u,
  6930. 236u,
  6931. 95u,
  6932. 151u,
  6933. 68u,
  6934. 23u,
  6935. 196u,
  6936. 167u,
  6937. 126u,
  6938. 61u,
  6939. 100u,
  6940. 93u,
  6941. 25u,
  6942. 115u,
  6943. 96u,
  6944. 129u,
  6945. 79u,
  6946. 220u,
  6947. 34u,
  6948. 42u,
  6949. 144u,
  6950. 136u,
  6951. 70u,
  6952. 238u,
  6953. 184u,
  6954. 20u,
  6955. 222u,
  6956. 94u,
  6957. 11u,
  6958. 219u,
  6959. 224u,
  6960. 50u,
  6961. 58u,
  6962. 10u,
  6963. 73u,
  6964. 6u,
  6965. 36u,
  6966. 92u,
  6967. 194u,
  6968. 211u,
  6969. 172u,
  6970. 98u,
  6971. 145u,
  6972. 149u,
  6973. 228u,
  6974. 121u,
  6975. 231u,
  6976. 200u,
  6977. 55u,
  6978. 109u,
  6979. 141u,
  6980. 213u,
  6981. 78u,
  6982. 169u,
  6983. 108u,
  6984. 86u,
  6985. 244u,
  6986. 234u,
  6987. 101u,
  6988. 122u,
  6989. 174u,
  6990. 8u,
  6991. 186u,
  6992. 120u,
  6993. 37u,
  6994. 46u,
  6995. 28u,
  6996. 166u,
  6997. 180u,
  6998. 198u,
  6999. 232u,
  7000. 221u,
  7001. 116u,
  7002. 31u,
  7003. 75u,
  7004. 189u,
  7005. 139u,
  7006. 138u,
  7007. 112u,
  7008. 62u,
  7009. 181u,
  7010. 102u,
  7011. 72u,
  7012. 3u,
  7013. 246u,
  7014. 14u,
  7015. 97u,
  7016. 53u,
  7017. 87u,
  7018. 185u,
  7019. 134u,
  7020. 193u,
  7021. 29u,
  7022. 158u,
  7023. 225u,
  7024. 248u,
  7025. 152u,
  7026. 17u,
  7027. 105u,
  7028. 217u,
  7029. 142u,
  7030. 148u,
  7031. 155u,
  7032. 30u,
  7033. 135u,
  7034. 233u,
  7035. 206u,
  7036. 85u,
  7037. 40u,
  7038. 223u,
  7039. 140u,
  7040. 161u,
  7041. 137u,
  7042. 13u,
  7043. 191u,
  7044. 230u,
  7045. 66u,
  7046. 104u,
  7047. 65u,
  7048. 153u,
  7049. 45u,
  7050. 15u,
  7051. 176u,
  7052. 84u,
  7053. 187u,
  7054. 22u
  7055. },
  7056. {
  7057. 25344u,
  7058. 31744u,
  7059. 30464u,
  7060. 31488u,
  7061. 61952u,
  7062. 27392u,
  7063. 28416u,
  7064. 50432u,
  7065. 12288u,
  7066. 256u,
  7067. 26368u,
  7068. 11008u,
  7069. 65024u,
  7070. 55040u,
  7071. 43776u,
  7072. 30208u,
  7073. 51712u,
  7074. 33280u,
  7075. 51456u,
  7076. 32000u,
  7077. 64000u,
  7078. 22784u,
  7079. 18176u,
  7080. 61440u,
  7081. 44288u,
  7082. 54272u,
  7083. 41472u,
  7084. 44800u,
  7085. 39936u,
  7086. 41984u,
  7087. 29184u,
  7088. 49152u,
  7089. 46848u,
  7090. 64768u,
  7091. 37632u,
  7092. 9728u,
  7093. 13824u,
  7094. 16128u,
  7095. 63232u,
  7096. 52224u,
  7097. 13312u,
  7098. 42240u,
  7099. 58624u,
  7100. 61696u,
  7101. 28928u,
  7102. 55296u,
  7103. 12544u,
  7104. 5376u,
  7105. 1024u,
  7106. 50944u,
  7107. 8960u,
  7108. 49920u,
  7109. 6144u,
  7110. 38400u,
  7111. 1280u,
  7112. 39424u,
  7113. 1792u,
  7114. 4608u,
  7115. 32768u,
  7116. 57856u,
  7117. 60160u,
  7118. 9984u,
  7119. 45568u,
  7120. 29952u,
  7121. 2304u,
  7122. 33536u,
  7123. 11264u,
  7124. 6656u,
  7125. 6912u,
  7126. 28160u,
  7127. 23040u,
  7128. 40960u,
  7129. 20992u,
  7130. 15104u,
  7131. 54784u,
  7132. 45824u,
  7133. 10496u,
  7134. 58112u,
  7135. 12032u,
  7136. 33792u,
  7137. 21248u,
  7138. 53504u,
  7139. 0u,
  7140. 60672u,
  7141. 8192u,
  7142. 64512u,
  7143. 45312u,
  7144. 23296u,
  7145. 27136u,
  7146. 51968u,
  7147. 48640u,
  7148. 14592u,
  7149. 18944u,
  7150. 19456u,
  7151. 22528u,
  7152. 52992u,
  7153. 53248u,
  7154. 61184u,
  7155. 43520u,
  7156. 64256u,
  7157. 17152u,
  7158. 19712u,
  7159. 13056u,
  7160. 34048u,
  7161. 17664u,
  7162. 63744u,
  7163. 512u,
  7164. 32512u,
  7165. 20480u,
  7166. 15360u,
  7167. 40704u,
  7168. 43008u,
  7169. 20736u,
  7170. 41728u,
  7171. 16384u,
  7172. 36608u,
  7173. 37376u,
  7174. 40192u,
  7175. 14336u,
  7176. 62720u,
  7177. 48128u,
  7178. 46592u,
  7179. 55808u,
  7180. 8448u,
  7181. 4096u,
  7182. 65280u,
  7183. 62208u,
  7184. 53760u,
  7185. 52480u,
  7186. 3072u,
  7187. 4864u,
  7188. 60416u,
  7189. 24320u,
  7190. 38656u,
  7191. 17408u,
  7192. 5888u,
  7193. 50176u,
  7194. 42752u,
  7195. 32256u,
  7196. 15616u,
  7197. 25600u,
  7198. 23808u,
  7199. 6400u,
  7200. 29440u,
  7201. 24576u,
  7202. 33024u,
  7203. 20224u,
  7204. 56320u,
  7205. 8704u,
  7206. 10752u,
  7207. 36864u,
  7208. 34816u,
  7209. 17920u,
  7210. 60928u,
  7211. 47104u,
  7212. 5120u,
  7213. 56832u,
  7214. 24064u,
  7215. 2816u,
  7216. 56064u,
  7217. 57344u,
  7218. 12800u,
  7219. 14848u,
  7220. 2560u,
  7221. 18688u,
  7222. 1536u,
  7223. 9216u,
  7224. 23552u,
  7225. 49664u,
  7226. 54016u,
  7227. 44032u,
  7228. 25088u,
  7229. 37120u,
  7230. 38144u,
  7231. 58368u,
  7232. 30976u,
  7233. 59136u,
  7234. 51200u,
  7235. 14080u,
  7236. 27904u,
  7237. 36096u,
  7238. 54528u,
  7239. 19968u,
  7240. 43264u,
  7241. 27648u,
  7242. 22016u,
  7243. 62464u,
  7244. 59904u,
  7245. 25856u,
  7246. 31232u,
  7247. 44544u,
  7248. 2048u,
  7249. 47616u,
  7250. 30720u,
  7251. 9472u,
  7252. 11776u,
  7253. 7168u,
  7254. 42496u,
  7255. 46080u,
  7256. 50688u,
  7257. 59392u,
  7258. 56576u,
  7259. 29696u,
  7260. 7936u,
  7261. 19200u,
  7262. 48384u,
  7263. 35584u,
  7264. 35328u,
  7265. 28672u,
  7266. 15872u,
  7267. 46336u,
  7268. 26112u,
  7269. 18432u,
  7270. 768u,
  7271. 62976u,
  7272. 3584u,
  7273. 24832u,
  7274. 13568u,
  7275. 22272u,
  7276. 47360u,
  7277. 34304u,
  7278. 49408u,
  7279. 7424u,
  7280. 40448u,
  7281. 57600u,
  7282. 63488u,
  7283. 38912u,
  7284. 4352u,
  7285. 26880u,
  7286. 55552u,
  7287. 36352u,
  7288. 37888u,
  7289. 39680u,
  7290. 7680u,
  7291. 34560u,
  7292. 59648u,
  7293. 52736u,
  7294. 21760u,
  7295. 10240u,
  7296. 57088u,
  7297. 35840u,
  7298. 41216u,
  7299. 35072u,
  7300. 3328u,
  7301. 48896u,
  7302. 58880u,
  7303. 16896u,
  7304. 26624u,
  7305. 16640u,
  7306. 39168u,
  7307. 11520u,
  7308. 3840u,
  7309. 45056u,
  7310. 21504u,
  7311. 47872u,
  7312. 5632u
  7313. },
  7314. {
  7315. 6488064u,
  7316. 8126464u,
  7317. 7798784u,
  7318. 8060928u,
  7319. 15859712u,
  7320. 7012352u,
  7321. 7274496u,
  7322. 12910592u,
  7323. 3145728u,
  7324. 65536u,
  7325. 6750208u,
  7326. 2818048u,
  7327. 16646144u,
  7328. 14090240u,
  7329. 11206656u,
  7330. 7733248u,
  7331. 13238272u,
  7332. 8519680u,
  7333. 13172736u,
  7334. 8192000u,
  7335. 16384000u,
  7336. 5832704u,
  7337. 4653056u,
  7338. 15728640u,
  7339. 11337728u,
  7340. 13893632u,
  7341. 10616832u,
  7342. 11468800u,
  7343. 10223616u,
  7344. 10747904u,
  7345. 7471104u,
  7346. 12582912u,
  7347. 11993088u,
  7348. 16580608u,
  7349. 9633792u,
  7350. 2490368u,
  7351. 3538944u,
  7352. 4128768u,
  7353. 16187392u,
  7354. 13369344u,
  7355. 3407872u,
  7356. 10813440u,
  7357. 15007744u,
  7358. 15794176u,
  7359. 7405568u,
  7360. 14155776u,
  7361. 3211264u,
  7362. 1376256u,
  7363. 262144u,
  7364. 13041664u,
  7365. 2293760u,
  7366. 12779520u,
  7367. 1572864u,
  7368. 9830400u,
  7369. 327680u,
  7370. 10092544u,
  7371. 458752u,
  7372. 1179648u,
  7373. 8388608u,
  7374. 14811136u,
  7375. 15400960u,
  7376. 2555904u,
  7377. 11665408u,
  7378. 7667712u,
  7379. 589824u,
  7380. 8585216u,
  7381. 2883584u,
  7382. 1703936u,
  7383. 1769472u,
  7384. 7208960u,
  7385. 5898240u,
  7386. 10485760u,
  7387. 5373952u,
  7388. 3866624u,
  7389. 14024704u,
  7390. 11730944u,
  7391. 2686976u,
  7392. 14876672u,
  7393. 3080192u,
  7394. 8650752u,
  7395. 5439488u,
  7396. 13697024u,
  7397. 0u,
  7398. 15532032u,
  7399. 2097152u,
  7400. 16515072u,
  7401. 11599872u,
  7402. 5963776u,
  7403. 6946816u,
  7404. 13303808u,
  7405. 12451840u,
  7406. 3735552u,
  7407. 4849664u,
  7408. 4980736u,
  7409. 5767168u,
  7410. 13565952u,
  7411. 13631488u,
  7412. 15663104u,
  7413. 11141120u,
  7414. 16449536u,
  7415. 4390912u,
  7416. 5046272u,
  7417. 3342336u,
  7418. 8716288u,
  7419. 4521984u,
  7420. 16318464u,
  7421. 131072u,
  7422. 8323072u,
  7423. 5242880u,
  7424. 3932160u,
  7425. 10420224u,
  7426. 11010048u,
  7427. 5308416u,
  7428. 10682368u,
  7429. 4194304u,
  7430. 9371648u,
  7431. 9568256u,
  7432. 10289152u,
  7433. 3670016u,
  7434. 16056320u,
  7435. 12320768u,
  7436. 11927552u,
  7437. 14286848u,
  7438. 2162688u,
  7439. 1048576u,
  7440. 16711680u,
  7441. 15925248u,
  7442. 13762560u,
  7443. 13434880u,
  7444. 786432u,
  7445. 1245184u,
  7446. 15466496u,
  7447. 6225920u,
  7448. 9895936u,
  7449. 4456448u,
  7450. 1507328u,
  7451. 12845056u,
  7452. 10944512u,
  7453. 8257536u,
  7454. 3997696u,
  7455. 6553600u,
  7456. 6094848u,
  7457. 1638400u,
  7458. 7536640u,
  7459. 6291456u,
  7460. 8454144u,
  7461. 5177344u,
  7462. 14417920u,
  7463. 2228224u,
  7464. 2752512u,
  7465. 9437184u,
  7466. 8912896u,
  7467. 4587520u,
  7468. 15597568u,
  7469. 12058624u,
  7470. 1310720u,
  7471. 14548992u,
  7472. 6160384u,
  7473. 720896u,
  7474. 14352384u,
  7475. 14680064u,
  7476. 3276800u,
  7477. 3801088u,
  7478. 655360u,
  7479. 4784128u,
  7480. 393216u,
  7481. 2359296u,
  7482. 6029312u,
  7483. 12713984u,
  7484. 13828096u,
  7485. 11272192u,
  7486. 6422528u,
  7487. 9502720u,
  7488. 9764864u,
  7489. 14942208u,
  7490. 7929856u,
  7491. 15138816u,
  7492. 13107200u,
  7493. 3604480u,
  7494. 7143424u,
  7495. 9240576u,
  7496. 13959168u,
  7497. 5111808u,
  7498. 11075584u,
  7499. 7077888u,
  7500. 5636096u,
  7501. 15990784u,
  7502. 15335424u,
  7503. 6619136u,
  7504. 7995392u,
  7505. 11403264u,
  7506. 524288u,
  7507. 12189696u,
  7508. 7864320u,
  7509. 2424832u,
  7510. 3014656u,
  7511. 1835008u,
  7512. 10878976u,
  7513. 11796480u,
  7514. 12976128u,
  7515. 15204352u,
  7516. 14483456u,
  7517. 7602176u,
  7518. 2031616u,
  7519. 4915200u,
  7520. 12386304u,
  7521. 9109504u,
  7522. 9043968u,
  7523. 7340032u,
  7524. 4063232u,
  7525. 11862016u,
  7526. 6684672u,
  7527. 4718592u,
  7528. 196608u,
  7529. 16121856u,
  7530. 917504u,
  7531. 6356992u,
  7532. 3473408u,
  7533. 5701632u,
  7534. 12124160u,
  7535. 8781824u,
  7536. 12648448u,
  7537. 1900544u,
  7538. 10354688u,
  7539. 14745600u,
  7540. 16252928u,
  7541. 9961472u,
  7542. 1114112u,
  7543. 6881280u,
  7544. 14221312u,
  7545. 9306112u,
  7546. 9699328u,
  7547. 10158080u,
  7548. 1966080u,
  7549. 8847360u,
  7550. 15269888u,
  7551. 13500416u,
  7552. 5570560u,
  7553. 2621440u,
  7554. 14614528u,
  7555. 9175040u,
  7556. 10551296u,
  7557. 8978432u,
  7558. 851968u,
  7559. 12517376u,
  7560. 15073280u,
  7561. 4325376u,
  7562. 6815744u,
  7563. 4259840u,
  7564. 10027008u,
  7565. 2949120u,
  7566. 983040u,
  7567. 11534336u,
  7568. 5505024u,
  7569. 12255232u,
  7570. 1441792u
  7571. },
  7572. {
  7573. 1660944384u,
  7574. 2080374784u,
  7575. 1996488704u,
  7576. 2063597568u,
  7577. 4060086272u,
  7578. 1795162112u,
  7579. 1862270976u,
  7580. 3305111552u,
  7581. 805306368u,
  7582. 16777216u,
  7583. 1728053248u,
  7584. 721420288u,
  7585. 4261412864u,
  7586. 3607101440u,
  7587. 2868903936u,
  7588. 1979711488u,
  7589. 3388997632u,
  7590. 2181038080u,
  7591. 3372220416u,
  7592. 2097152000u,
  7593. 4194304000u,
  7594. 1493172224u,
  7595. 1191182336u,
  7596. 4026531840u,
  7597. 2902458368u,
  7598. 3556769792u,
  7599. 2717908992u,
  7600. 2936012800u,
  7601. 2617245696u,
  7602. 2751463424u,
  7603. 1912602624u,
  7604. 3221225472u,
  7605. 3070230528u,
  7606. 4244635648u,
  7607. 2466250752u,
  7608. 637534208u,
  7609. 905969664u,
  7610. 1056964608u,
  7611. 4143972352u,
  7612. 3422552064u,
  7613. 872415232u,
  7614. 2768240640u,
  7615. 3841982464u,
  7616. 4043309056u,
  7617. 1895825408u,
  7618. 3623878656u,
  7619. 822083584u,
  7620. 352321536u,
  7621. 67108864u,
  7622. 3338665984u,
  7623. 587202560u,
  7624. 3271557120u,
  7625. 402653184u,
  7626. 2516582400u,
  7627. 83886080u,
  7628. 2583691264u,
  7629. 117440512u,
  7630. 301989888u,
  7631. 2147483648u,
  7632. 3791650816u,
  7633. 3942645760u,
  7634. 654311424u,
  7635. 2986344448u,
  7636. 1962934272u,
  7637. 150994944u,
  7638. 2197815296u,
  7639. 738197504u,
  7640. 436207616u,
  7641. 452984832u,
  7642. 1845493760u,
  7643. 1509949440u,
  7644. 2684354560u,
  7645. 1375731712u,
  7646. 989855744u,
  7647. 3590324224u,
  7648. 3003121664u,
  7649. 687865856u,
  7650. 3808428032u,
  7651. 788529152u,
  7652. 2214592512u,
  7653. 1392508928u,
  7654. 3506438144u,
  7655. 0u,
  7656. 3976200192u,
  7657. 536870912u,
  7658. 4227858432u,
  7659. 2969567232u,
  7660. 1526726656u,
  7661. 1778384896u,
  7662. 3405774848u,
  7663. 3187671040u,
  7664. 956301312u,
  7665. 1241513984u,
  7666. 1275068416u,
  7667. 1476395008u,
  7668. 3472883712u,
  7669. 3489660928u,
  7670. 4009754624u,
  7671. 2852126720u,
  7672. 4211081216u,
  7673. 1124073472u,
  7674. 1291845632u,
  7675. 855638016u,
  7676. 2231369728u,
  7677. 1157627904u,
  7678. 4177526784u,
  7679. 33554432u,
  7680. 2130706432u,
  7681. 1342177280u,
  7682. 1006632960u,
  7683. 2667577344u,
  7684. 2818572288u,
  7685. 1358954496u,
  7686. 2734686208u,
  7687. 1073741824u,
  7688. 2399141888u,
  7689. 2449473536u,
  7690. 2634022912u,
  7691. 939524096u,
  7692. 4110417920u,
  7693. 3154116608u,
  7694. 3053453312u,
  7695. 3657433088u,
  7696. 553648128u,
  7697. 268435456u,
  7698. 4278190080u,
  7699. 4076863488u,
  7700. 3523215360u,
  7701. 3439329280u,
  7702. 201326592u,
  7703. 318767104u,
  7704. 3959422976u,
  7705. 1593835520u,
  7706. 2533359616u,
  7707. 1140850688u,
  7708. 385875968u,
  7709. 3288334336u,
  7710. 2801795072u,
  7711. 2113929216u,
  7712. 1023410176u,
  7713. 1677721600u,
  7714. 1560281088u,
  7715. 419430400u,
  7716. 1929379840u,
  7717. 1610612736u,
  7718. 2164260864u,
  7719. 1325400064u,
  7720. 3690987520u,
  7721. 570425344u,
  7722. 704643072u,
  7723. 2415919104u,
  7724. 2281701376u,
  7725. 1174405120u,
  7726. 3992977408u,
  7727. 3087007744u,
  7728. 335544320u,
  7729. 3724541952u,
  7730. 1577058304u,
  7731. 184549376u,
  7732. 3674210304u,
  7733. 3758096384u,
  7734. 838860800u,
  7735. 973078528u,
  7736. 167772160u,
  7737. 1224736768u,
  7738. 100663296u,
  7739. 603979776u,
  7740. 1543503872u,
  7741. 3254779904u,
  7742. 3539992576u,
  7743. 2885681152u,
  7744. 1644167168u,
  7745. 2432696320u,
  7746. 2499805184u,
  7747. 3825205248u,
  7748. 2030043136u,
  7749. 3875536896u,
  7750. 3355443200u,
  7751. 922746880u,
  7752. 1828716544u,
  7753. 2365587456u,
  7754. 3573547008u,
  7755. 1308622848u,
  7756. 2835349504u,
  7757. 1811939328u,
  7758. 1442840576u,
  7759. 4093640704u,
  7760. 3925868544u,
  7761. 1694498816u,
  7762. 2046820352u,
  7763. 2919235584u,
  7764. 134217728u,
  7765. 3120562176u,
  7766. 2013265920u,
  7767. 620756992u,
  7768. 771751936u,
  7769. 469762048u,
  7770. 2785017856u,
  7771. 3019898880u,
  7772. 3321888768u,
  7773. 3892314112u,
  7774. 3707764736u,
  7775. 1946157056u,
  7776. 520093696u,
  7777. 1258291200u,
  7778. 3170893824u,
  7779. 2332033024u,
  7780. 2315255808u,
  7781. 1879048192u,
  7782. 1040187392u,
  7783. 3036676096u,
  7784. 1711276032u,
  7785. 1207959552u,
  7786. 50331648u,
  7787. 4127195136u,
  7788. 234881024u,
  7789. 1627389952u,
  7790. 889192448u,
  7791. 1459617792u,
  7792. 3103784960u,
  7793. 2248146944u,
  7794. 3238002688u,
  7795. 486539264u,
  7796. 2650800128u,
  7797. 3774873600u,
  7798. 4160749568u,
  7799. 2550136832u,
  7800. 285212672u,
  7801. 1761607680u,
  7802. 3640655872u,
  7803. 2382364672u,
  7804. 2483027968u,
  7805. 2600468480u,
  7806. 503316480u,
  7807. 2264924160u,
  7808. 3909091328u,
  7809. 3456106496u,
  7810. 1426063360u,
  7811. 671088640u,
  7812. 3741319168u,
  7813. 2348810240u,
  7814. 2701131776u,
  7815. 2298478592u,
  7816. 218103808u,
  7817. 3204448256u,
  7818. 3858759680u,
  7819. 1107296256u,
  7820. 1744830464u,
  7821. 1090519040u,
  7822. 2566914048u,
  7823. 754974720u,
  7824. 251658240u,
  7825. 2952790016u,
  7826. 1409286144u,
  7827. 3137339392u,
  7828. 369098752u
  7829. }
  7830. }; // idb
  7831. const uint32_t ft_tab[4][256] =
  7832. {
  7833. {
  7834. 2774754246u,
  7835. 2222750968u,
  7836. 2574743534u,
  7837. 2373680118u,
  7838. 234025727u,
  7839. 3177933782u,
  7840. 2976870366u,
  7841. 1422247313u,
  7842. 1345335392u,
  7843. 50397442u,
  7844. 2842126286u,
  7845. 2099981142u,
  7846. 436141799u,
  7847. 1658312629u,
  7848. 3870010189u,
  7849. 2591454956u,
  7850. 1170918031u,
  7851. 2642575903u,
  7852. 1086966153u,
  7853. 2273148410u,
  7854. 368769775u,
  7855. 3948501426u,
  7856. 3376891790u,
  7857. 200339707u,
  7858. 3970805057u,
  7859. 1742001331u,
  7860. 4255294047u,
  7861. 3937382213u,
  7862. 3214711843u,
  7863. 4154762323u,
  7864. 2524082916u,
  7865. 1539358875u,
  7866. 3266819957u,
  7867. 486407649u,
  7868. 2928907069u,
  7869. 1780885068u,
  7870. 1513502316u,
  7871. 1094664062u,
  7872. 49805301u,
  7873. 1338821763u,
  7874. 1546925160u,
  7875. 4104496465u,
  7876. 887481809u,
  7877. 150073849u,
  7878. 2473685474u,
  7879. 1943591083u,
  7880. 1395732834u,
  7881. 1058346282u,
  7882. 201589768u,
  7883. 1388824469u,
  7884. 1696801606u,
  7885. 1589887901u,
  7886. 672667696u,
  7887. 2711000631u,
  7888. 251987210u,
  7889. 3046808111u,
  7890. 151455502u,
  7891. 907153956u,
  7892. 2608889883u,
  7893. 1038279391u,
  7894. 652995533u,
  7895. 1764173646u,
  7896. 3451040383u,
  7897. 2675275242u,
  7898. 453576978u,
  7899. 2659418909u,
  7900. 1949051992u,
  7901. 773462580u,
  7902. 756751158u,
  7903. 2993581788u,
  7904. 3998898868u,
  7905. 4221608027u,
  7906. 4132590244u,
  7907. 1295727478u,
  7908. 1641469623u,
  7909. 3467883389u,
  7910. 2066295122u,
  7911. 1055122397u,
  7912. 1898917726u,
  7913. 2542044179u,
  7914. 4115878822u,
  7915. 1758581177u,
  7916. 0u,
  7917. 753790401u,
  7918. 1612718144u,
  7919. 536673507u,
  7920. 3367088505u,
  7921. 3982187446u,
  7922. 3194645204u,
  7923. 1187761037u,
  7924. 3653156455u,
  7925. 1262041458u,
  7926. 3729410708u,
  7927. 3561770136u,
  7928. 3898103984u,
  7929. 1255133061u,
  7930. 1808847035u,
  7931. 720367557u,
  7932. 3853167183u,
  7933. 385612781u,
  7934. 3309519750u,
  7935. 3612167578u,
  7936. 1429418854u,
  7937. 2491778321u,
  7938. 3477423498u,
  7939. 284817897u,
  7940. 100794884u,
  7941. 2172616702u,
  7942. 4031795360u,
  7943. 1144798328u,
  7944. 3131023141u,
  7945. 3819481163u,
  7946. 4082192802u,
  7947. 4272137053u,
  7948. 3225436288u,
  7949. 2324664069u,
  7950. 2912064063u,
  7951. 3164445985u,
  7952. 1211644016u,
  7953. 83228145u,
  7954. 3753688163u,
  7955. 3249976951u,
  7956. 1977277103u,
  7957. 1663115586u,
  7958. 806359072u,
  7959. 452984805u,
  7960. 250868733u,
  7961. 1842533055u,
  7962. 1288555905u,
  7963. 336333848u,
  7964. 890442534u,
  7965. 804056259u,
  7966. 3781124030u,
  7967. 2727843637u,
  7968. 3427026056u,
  7969. 957814574u,
  7970. 1472513171u,
  7971. 4071073621u,
  7972. 2189328124u,
  7973. 1195195770u,
  7974. 2892260552u,
  7975. 3881655738u,
  7976. 723065138u,
  7977. 2507371494u,
  7978. 2690670784u,
  7979. 2558624025u,
  7980. 3511635870u,
  7981. 2145180835u,
  7982. 1713513028u,
  7983. 2116692564u,
  7984. 2878378043u,
  7985. 2206763019u,
  7986. 3393603212u,
  7987. 703524551u,
  7988. 3552098411u,
  7989. 1007948840u,
  7990. 2044649127u,
  7991. 3797835452u,
  7992. 487262998u,
  7993. 1994120109u,
  7994. 1004593371u,
  7995. 1446130276u,
  7996. 1312438900u,
  7997. 503974420u,
  7998. 3679013266u,
  7999. 168166924u,
  8000. 1814307912u,
  8001. 3831258296u,
  8002. 1573044895u,
  8003. 1859376061u,
  8004. 4021070915u,
  8005. 2791465668u,
  8006. 2828112185u,
  8007. 2761266481u,
  8008. 937747667u,
  8009. 2339994098u,
  8010. 854058965u,
  8011. 1137232011u,
  8012. 1496790894u,
  8013. 3077402074u,
  8014. 2358086913u,
  8015. 1691735473u,
  8016. 3528347292u,
  8017. 3769215305u,
  8018. 3027004632u,
  8019. 4199962284u,
  8020. 133494003u,
  8021. 636152527u,
  8022. 2942657994u,
  8023. 2390391540u,
  8024. 3920539207u,
  8025. 403179536u,
  8026. 3585784431u,
  8027. 2289596656u,
  8028. 1864705354u,
  8029. 1915629148u,
  8030. 605822008u,
  8031. 4054230615u,
  8032. 3350508659u,
  8033. 1371981463u,
  8034. 602466507u,
  8035. 2094914977u,
  8036. 2624877800u,
  8037. 555687742u,
  8038. 3712699286u,
  8039. 3703422305u,
  8040. 2257292045u,
  8041. 2240449039u,
  8042. 2423288032u,
  8043. 1111375484u,
  8044. 3300242801u,
  8045. 2858837708u,
  8046. 3628615824u,
  8047. 84083462u,
  8048. 32962295u,
  8049. 302911004u,
  8050. 2741068226u,
  8051. 1597322602u,
  8052. 4183250862u,
  8053. 3501832553u,
  8054. 2441512471u,
  8055. 1489093017u,
  8056. 656219450u,
  8057. 3114180135u,
  8058. 954327513u,
  8059. 335083755u,
  8060. 3013122091u,
  8061. 856756514u,
  8062. 3144247762u,
  8063. 1893325225u,
  8064. 2307821063u,
  8065. 2811532339u,
  8066. 3063651117u,
  8067. 572399164u,
  8068. 2458355477u,
  8069. 552200649u,
  8070. 1238290055u,
  8071. 4283782570u,
  8072. 2015897680u,
  8073. 2061492133u,
  8074. 2408352771u,
  8075. 4171342169u,
  8076. 2156497161u,
  8077. 386731290u,
  8078. 3669999461u,
  8079. 837215959u,
  8080. 3326231172u,
  8081. 3093850320u,
  8082. 3275833730u,
  8083. 2962856233u,
  8084. 1999449434u,
  8085. 286199582u,
  8086. 3417354363u,
  8087. 4233385128u,
  8088. 3602627437u,
  8089. 974525996u
  8090. },
  8091. {
  8092. 1667483301u,
  8093. 2088564868u,
  8094. 2004348569u,
  8095. 2071721613u,
  8096. 4076011277u,
  8097. 1802229437u,
  8098. 1869602481u,
  8099. 3318059348u,
  8100. 808476752u,
  8101. 16843267u,
  8102. 1734856361u,
  8103. 724260477u,
  8104. 4278118169u,
  8105. 3621238114u,
  8106. 2880130534u,
  8107. 1987505306u,
  8108. 3402272581u,
  8109. 2189565853u,
  8110. 3385428288u,
  8111. 2105408135u,
  8112. 4210749205u,
  8113. 1499050731u,
  8114. 1195871945u,
  8115. 4042324747u,
  8116. 2913812972u,
  8117. 3570709351u,
  8118. 2728550397u,
  8119. 2947499498u,
  8120. 2627478463u,
  8121. 2762232823u,
  8122. 1920132246u,
  8123. 3233848155u,
  8124. 3082253762u,
  8125. 4261273884u,
  8126. 2475900334u,
  8127. 640044138u,
  8128. 909536346u,
  8129. 1061125697u,
  8130. 4160222466u,
  8131. 3435955023u,
  8132. 875849820u,
  8133. 2779075060u,
  8134. 3857043764u,
  8135. 4059166984u,
  8136. 1903288979u,
  8137. 3638078323u,
  8138. 825320019u,
  8139. 353708607u,
  8140. 67373068u,
  8141. 3351745874u,
  8142. 589514341u,
  8143. 3284376926u,
  8144. 404238376u,
  8145. 2526427041u,
  8146. 84216335u,
  8147. 2593796021u,
  8148. 117902857u,
  8149. 303178806u,
  8150. 2155879323u,
  8151. 3806519101u,
  8152. 3958099238u,
  8153. 656887401u,
  8154. 2998042573u,
  8155. 1970662047u,
  8156. 151589403u,
  8157. 2206408094u,
  8158. 741103732u,
  8159. 437924910u,
  8160. 454768173u,
  8161. 1852759218u,
  8162. 1515893998u,
  8163. 2694863867u,
  8164. 1381147894u,
  8165. 993752653u,
  8166. 3604395873u,
  8167. 3014884814u,
  8168. 690573947u,
  8169. 3823361342u,
  8170. 791633521u,
  8171. 2223248279u,
  8172. 1397991157u,
  8173. 3520182632u,
  8174. 0u,
  8175. 3991781676u,
  8176. 538984544u,
  8177. 4244431647u,
  8178. 2981198280u,
  8179. 1532737261u,
  8180. 1785386174u,
  8181. 3419114822u,
  8182. 3200149465u,
  8183. 960066123u,
  8184. 1246401758u,
  8185. 1280088276u,
  8186. 1482207464u,
  8187. 3486483786u,
  8188. 3503340395u,
  8189. 4025468202u,
  8190. 2863288293u,
  8191. 4227591446u,
  8192. 1128498885u,
  8193. 1296931543u,
  8194. 859006549u,
  8195. 2240090516u,
  8196. 1162185423u,
  8197. 4193904912u,
  8198. 33686534u,
  8199. 2139094657u,
  8200. 1347461360u,
  8201. 1010595908u,
  8202. 2678007226u,
  8203. 2829601763u,
  8204. 1364304627u,
  8205. 2745392638u,
  8206. 1077969088u,
  8207. 2408514954u,
  8208. 2459058093u,
  8209. 2644320700u,
  8210. 943222856u,
  8211. 4126535940u,
  8212. 3166462943u,
  8213. 3065411521u,
  8214. 3671764853u,
  8215. 555827811u,
  8216. 269492272u,
  8217. 4294960410u,
  8218. 4092853518u,
  8219. 3537026925u,
  8220. 3452797260u,
  8221. 202119188u,
  8222. 320022069u,
  8223. 3974939439u,
  8224. 1600110305u,
  8225. 2543269282u,
  8226. 1145342156u,
  8227. 387395129u,
  8228. 3301217111u,
  8229. 2812761586u,
  8230. 2122251394u,
  8231. 1027439175u,
  8232. 1684326572u,
  8233. 1566423783u,
  8234. 421081643u,
  8235. 1936975509u,
  8236. 1616953504u,
  8237. 2172721560u,
  8238. 1330618065u,
  8239. 3705447295u,
  8240. 572671078u,
  8241. 707417214u,
  8242. 2425371563u,
  8243. 2290617219u,
  8244. 1179028682u,
  8245. 4008625961u,
  8246. 3099093971u,
  8247. 336865340u,
  8248. 3739133817u,
  8249. 1583267042u,
  8250. 185275933u,
  8251. 3688607094u,
  8252. 3772832571u,
  8253. 842163286u,
  8254. 976909390u,
  8255. 168432670u,
  8256. 1229558491u,
  8257. 101059594u,
  8258. 606357612u,
  8259. 1549580516u,
  8260. 3267534685u,
  8261. 3553869166u,
  8262. 2896970735u,
  8263. 1650640038u,
  8264. 2442213800u,
  8265. 2509582756u,
  8266. 3840201527u,
  8267. 2038035083u,
  8268. 3890730290u,
  8269. 3368586051u,
  8270. 926379609u,
  8271. 1835915959u,
  8272. 2374828428u,
  8273. 3587551588u,
  8274. 1313774802u,
  8275. 2846444000u,
  8276. 1819072692u,
  8277. 1448520954u,
  8278. 4109693703u,
  8279. 3941256997u,
  8280. 1701169839u,
  8281. 2054878350u,
  8282. 2930657257u,
  8283. 134746136u,
  8284. 3132780501u,
  8285. 2021191816u,
  8286. 623200879u,
  8287. 774790258u,
  8288. 471611428u,
  8289. 2795919345u,
  8290. 3031724999u,
  8291. 3334903633u,
  8292. 3907570467u,
  8293. 3722289532u,
  8294. 1953818780u,
  8295. 522141217u,
  8296. 1263245021u,
  8297. 3183305180u,
  8298. 2341145990u,
  8299. 2324303749u,
  8300. 1886445712u,
  8301. 1044282434u,
  8302. 3048567236u,
  8303. 1718013098u,
  8304. 1212715224u,
  8305. 50529797u,
  8306. 4143380225u,
  8307. 235805714u,
  8308. 1633796771u,
  8309. 892693087u,
  8310. 1465364217u,
  8311. 3115936208u,
  8312. 2256934801u,
  8313. 3250690392u,
  8314. 488454695u,
  8315. 2661164985u,
  8316. 3789674808u,
  8317. 4177062675u,
  8318. 2560109491u,
  8319. 286335539u,
  8320. 1768542907u,
  8321. 3654920560u,
  8322. 2391672713u,
  8323. 2492740519u,
  8324. 2610638262u,
  8325. 505297954u,
  8326. 2273777042u,
  8327. 3924412704u,
  8328. 3469641545u,
  8329. 1431677695u,
  8330. 673730680u,
  8331. 3755976058u,
  8332. 2357986191u,
  8333. 2711706104u,
  8334. 2307459456u,
  8335. 218962455u,
  8336. 3216991706u,
  8337. 3873888049u,
  8338. 1111655622u,
  8339. 1751699640u,
  8340. 1094812355u,
  8341. 2576951728u,
  8342. 757946999u,
  8343. 252648977u,
  8344. 2964356043u,
  8345. 1414834428u,
  8346. 3149622742u,
  8347. 370551866u
  8348. },
  8349. {
  8350. 1673962851u,
  8351. 2096661628u,
  8352. 2012125559u,
  8353. 2079755643u,
  8354. 4076801522u,
  8355. 1809235307u,
  8356. 1876865391u,
  8357. 3314635973u,
  8358. 811618352u,
  8359. 16909057u,
  8360. 1741597031u,
  8361. 727088427u,
  8362. 4276558334u,
  8363. 3618988759u,
  8364. 2874009259u,
  8365. 1995217526u,
  8366. 3398387146u,
  8367. 2183110018u,
  8368. 3381215433u,
  8369. 2113570685u,
  8370. 4209972730u,
  8371. 1504897881u,
  8372. 1200539975u,
  8373. 4042984432u,
  8374. 2906778797u,
  8375. 3568527316u,
  8376. 2724199842u,
  8377. 2940594863u,
  8378. 2619588508u,
  8379. 2756966308u,
  8380. 1927583346u,
  8381. 3231407040u,
  8382. 3077948087u,
  8383. 4259388669u,
  8384. 2470293139u,
  8385. 642542118u,
  8386. 913070646u,
  8387. 1065238847u,
  8388. 4160029431u,
  8389. 3431157708u,
  8390. 879254580u,
  8391. 2773611685u,
  8392. 3855693029u,
  8393. 4059629809u,
  8394. 1910674289u,
  8395. 3635114968u,
  8396. 828527409u,
  8397. 355090197u,
  8398. 67636228u,
  8399. 3348452039u,
  8400. 591815971u,
  8401. 3281870531u,
  8402. 405809176u,
  8403. 2520228246u,
  8404. 84545285u,
  8405. 2586817946u,
  8406. 118360327u,
  8407. 304363026u,
  8408. 2149292928u,
  8409. 3806281186u,
  8410. 3956090603u,
  8411. 659450151u,
  8412. 2994720178u,
  8413. 1978310517u,
  8414. 152181513u,
  8415. 2199756419u,
  8416. 743994412u,
  8417. 439627290u,
  8418. 456535323u,
  8419. 1859957358u,
  8420. 1521806938u,
  8421. 2690382752u,
  8422. 1386542674u,
  8423. 997608763u,
  8424. 3602342358u,
  8425. 3011366579u,
  8426. 693271337u,
  8427. 3822927587u,
  8428. 794718511u,
  8429. 2215876484u,
  8430. 1403450707u,
  8431. 3518589137u,
  8432. 0u,
  8433. 3988860141u,
  8434. 541089824u,
  8435. 4242743292u,
  8436. 2977548465u,
  8437. 1538714971u,
  8438. 1792327274u,
  8439. 3415033547u,
  8440. 3194476990u,
  8441. 963791673u,
  8442. 1251270218u,
  8443. 1285084236u,
  8444. 1487988824u,
  8445. 3481619151u,
  8446. 3501943760u,
  8447. 4022676207u,
  8448. 2857362858u,
  8449. 4226619131u,
  8450. 1132905795u,
  8451. 1301993293u,
  8452. 862344499u,
  8453. 2232521861u,
  8454. 1166724933u,
  8455. 4192801017u,
  8456. 33818114u,
  8457. 2147385727u,
  8458. 1352724560u,
  8459. 1014514748u,
  8460. 2670049951u,
  8461. 2823545768u,
  8462. 1369633617u,
  8463. 2740846243u,
  8464. 1082179648u,
  8465. 2399505039u,
  8466. 2453646738u,
  8467. 2636233885u,
  8468. 946882616u,
  8469. 4126213365u,
  8470. 3160661948u,
  8471. 3061301686u,
  8472. 3668932058u,
  8473. 557998881u,
  8474. 270544912u,
  8475. 4293204735u,
  8476. 4093447923u,
  8477. 3535760850u,
  8478. 3447803085u,
  8479. 202904588u,
  8480. 321271059u,
  8481. 3972214764u,
  8482. 1606345055u,
  8483. 2536874647u,
  8484. 1149815876u,
  8485. 388905239u,
  8486. 3297990596u,
  8487. 2807427751u,
  8488. 2130477694u,
  8489. 1031423805u,
  8490. 1690872932u,
  8491. 1572530013u,
  8492. 422718233u,
  8493. 1944491379u,
  8494. 1623236704u,
  8495. 2165938305u,
  8496. 1335808335u,
  8497. 3701702620u,
  8498. 574907938u,
  8499. 710180394u,
  8500. 2419829648u,
  8501. 2282455944u,
  8502. 1183631942u,
  8503. 4006029806u,
  8504. 3094074296u,
  8505. 338181140u,
  8506. 3735517662u,
  8507. 1589437022u,
  8508. 185998603u,
  8509. 3685578459u,
  8510. 3772464096u,
  8511. 845436466u,
  8512. 980700730u,
  8513. 169090570u,
  8514. 1234361161u,
  8515. 101452294u,
  8516. 608726052u,
  8517. 1555620956u,
  8518. 3265224130u,
  8519. 3552407251u,
  8520. 2890133420u,
  8521. 1657054818u,
  8522. 2436475025u,
  8523. 2503058581u,
  8524. 3839047652u,
  8525. 2045938553u,
  8526. 3889509095u,
  8527. 3364570056u,
  8528. 929978679u,
  8529. 1843050349u,
  8530. 2365688973u,
  8531. 3585172693u,
  8532. 1318900302u,
  8533. 2840191145u,
  8534. 1826141292u,
  8535. 1454176854u,
  8536. 4109567988u,
  8537. 3939444202u,
  8538. 1707781989u,
  8539. 2062847610u,
  8540. 2923948462u,
  8541. 135272456u,
  8542. 3127891386u,
  8543. 2029029496u,
  8544. 625635109u,
  8545. 777810478u,
  8546. 473441308u,
  8547. 2790781350u,
  8548. 3027486644u,
  8549. 3331805638u,
  8550. 3905627112u,
  8551. 3718347997u,
  8552. 1961401460u,
  8553. 524165407u,
  8554. 1268178251u,
  8555. 3177307325u,
  8556. 2332919435u,
  8557. 2316273034u,
  8558. 1893765232u,
  8559. 1048330814u,
  8560. 3044132021u,
  8561. 1724688998u,
  8562. 1217452104u,
  8563. 50726147u,
  8564. 4143383030u,
  8565. 236720654u,
  8566. 1640145761u,
  8567. 896163637u,
  8568. 1471084887u,
  8569. 3110719673u,
  8570. 2249691526u,
  8571. 3248052417u,
  8572. 490350365u,
  8573. 2653403550u,
  8574. 3789109473u,
  8575. 4176155640u,
  8576. 2553000856u,
  8577. 287453969u,
  8578. 1775418217u,
  8579. 3651760345u,
  8580. 2382858638u,
  8581. 2486413204u,
  8582. 2603464347u,
  8583. 507257374u,
  8584. 2266337927u,
  8585. 3922272489u,
  8586. 3464972750u,
  8587. 1437269845u,
  8588. 676362280u,
  8589. 3752164063u,
  8590. 2349043596u,
  8591. 2707028129u,
  8592. 2299101321u,
  8593. 219813645u,
  8594. 3211123391u,
  8595. 3872862694u,
  8596. 1115997762u,
  8597. 1758509160u,
  8598. 1099088705u,
  8599. 2569646233u,
  8600. 760903469u,
  8601. 253628687u,
  8602. 2960903088u,
  8603. 1420360788u,
  8604. 3144537787u,
  8605. 371997206u
  8606. },
  8607. {
  8608. 3332727651u,
  8609. 4169432188u,
  8610. 4003034999u,
  8611. 4136467323u,
  8612. 4279104242u,
  8613. 3602738027u,
  8614. 3736170351u,
  8615. 2438251973u,
  8616. 1615867952u,
  8617. 33751297u,
  8618. 3467208551u,
  8619. 1451043627u,
  8620. 3877240574u,
  8621. 3043153879u,
  8622. 1306962859u,
  8623. 3969545846u,
  8624. 2403715786u,
  8625. 530416258u,
  8626. 2302724553u,
  8627. 4203183485u,
  8628. 4011195130u,
  8629. 3001768281u,
  8630. 2395555655u,
  8631. 4211863792u,
  8632. 1106029997u,
  8633. 3009926356u,
  8634. 1610457762u,
  8635. 1173008303u,
  8636. 599760028u,
  8637. 1408738468u,
  8638. 3835064946u,
  8639. 2606481600u,
  8640. 1975695287u,
  8641. 3776773629u,
  8642. 1034851219u,
  8643. 1282024998u,
  8644. 1817851446u,
  8645. 2118205247u,
  8646. 4110612471u,
  8647. 2203045068u,
  8648. 1750873140u,
  8649. 1374987685u,
  8650. 3509904869u,
  8651. 4178113009u,
  8652. 3801313649u,
  8653. 2876496088u,
  8654. 1649619249u,
  8655. 708777237u,
  8656. 135005188u,
  8657. 2505230279u,
  8658. 1181033251u,
  8659. 2640233411u,
  8660. 807933976u,
  8661. 933336726u,
  8662. 168756485u,
  8663. 800430746u,
  8664. 235472647u,
  8665. 607523346u,
  8666. 463175808u,
  8667. 3745374946u,
  8668. 3441880043u,
  8669. 1315514151u,
  8670. 2144187058u,
  8671. 3936318837u,
  8672. 303761673u,
  8673. 496927619u,
  8674. 1484008492u,
  8675. 875436570u,
  8676. 908925723u,
  8677. 3702681198u,
  8678. 3035519578u,
  8679. 1543217312u,
  8680. 2767606354u,
  8681. 1984772923u,
  8682. 3076642518u,
  8683. 2110698419u,
  8684. 1383803177u,
  8685. 3711886307u,
  8686. 1584475951u,
  8687. 328696964u,
  8688. 2801095507u,
  8689. 3110654417u,
  8690. 0u,
  8691. 3240947181u,
  8692. 1080041504u,
  8693. 3810524412u,
  8694. 2043195825u,
  8695. 3069008731u,
  8696. 3569248874u,
  8697. 2370227147u,
  8698. 1742323390u,
  8699. 1917532473u,
  8700. 2497595978u,
  8701. 2564049996u,
  8702. 2968016984u,
  8703. 2236272591u,
  8704. 3144405200u,
  8705. 3307925487u,
  8706. 1340451498u,
  8707. 3977706491u,
  8708. 2261074755u,
  8709. 2597801293u,
  8710. 1716859699u,
  8711. 294946181u,
  8712. 2328839493u,
  8713. 3910203897u,
  8714. 67502594u,
  8715. 4269899647u,
  8716. 2700103760u,
  8717. 2017737788u,
  8718. 632987551u,
  8719. 1273211048u,
  8720. 2733855057u,
  8721. 1576969123u,
  8722. 2160083008u,
  8723. 92966799u,
  8724. 1068339858u,
  8725. 566009245u,
  8726. 1883781176u,
  8727. 4043634165u,
  8728. 1675607228u,
  8729. 2009183926u,
  8730. 2943736538u,
  8731. 1113792801u,
  8732. 540020752u,
  8733. 3843751935u,
  8734. 4245615603u,
  8735. 3211645650u,
  8736. 2169294285u,
  8737. 403966988u,
  8738. 641012499u,
  8739. 3274697964u,
  8740. 3202441055u,
  8741. 899848087u,
  8742. 2295088196u,
  8743. 775493399u,
  8744. 2472002756u,
  8745. 1441965991u,
  8746. 4236410494u,
  8747. 2051489085u,
  8748. 3366741092u,
  8749. 3135724893u,
  8750. 841685273u,
  8751. 3868554099u,
  8752. 3231735904u,
  8753. 429425025u,
  8754. 2664517455u,
  8755. 2743065820u,
  8756. 1147544098u,
  8757. 1417554474u,
  8758. 1001099408u,
  8759. 193169544u,
  8760. 2362066502u,
  8761. 3341414126u,
  8762. 1809037496u,
  8763. 675025940u,
  8764. 2809781982u,
  8765. 3168951902u,
  8766. 371002123u,
  8767. 2910247899u,
  8768. 3678134496u,
  8769. 1683370546u,
  8770. 1951283770u,
  8771. 337512970u,
  8772. 2463844681u,
  8773. 201983494u,
  8774. 1215046692u,
  8775. 3101973596u,
  8776. 2673722050u,
  8777. 3178157011u,
  8778. 1139780780u,
  8779. 3299238498u,
  8780. 967348625u,
  8781. 832869781u,
  8782. 3543655652u,
  8783. 4069226873u,
  8784. 3576883175u,
  8785. 2336475336u,
  8786. 1851340599u,
  8787. 3669454189u,
  8788. 25988493u,
  8789. 2976175573u,
  8790. 2631028302u,
  8791. 1239460265u,
  8792. 3635702892u,
  8793. 2902087254u,
  8794. 4077384948u,
  8795. 3475368682u,
  8796. 3400492389u,
  8797. 4102978170u,
  8798. 1206496942u,
  8799. 270010376u,
  8800. 1876277946u,
  8801. 4035475576u,
  8802. 1248797989u,
  8803. 1550986798u,
  8804. 941890588u,
  8805. 1475454630u,
  8806. 1942467764u,
  8807. 2538718918u,
  8808. 3408128232u,
  8809. 2709315037u,
  8810. 3902567540u,
  8811. 1042358047u,
  8812. 2531085131u,
  8813. 1641856445u,
  8814. 226921355u,
  8815. 260409994u,
  8816. 3767562352u,
  8817. 2084716094u,
  8818. 1908716981u,
  8819. 3433719398u,
  8820. 2430093384u,
  8821. 100991747u,
  8822. 4144101110u,
  8823. 470945294u,
  8824. 3265487201u,
  8825. 1784624437u,
  8826. 2935576407u,
  8827. 1775286713u,
  8828. 395413126u,
  8829. 2572730817u,
  8830. 975641885u,
  8831. 666476190u,
  8832. 3644383713u,
  8833. 3943954680u,
  8834. 733190296u,
  8835. 573772049u,
  8836. 3535497577u,
  8837. 2842745305u,
  8838. 126455438u,
  8839. 866620564u,
  8840. 766942107u,
  8841. 1008868894u,
  8842. 361924487u,
  8843. 3374377449u,
  8844. 2269761230u,
  8845. 2868860245u,
  8846. 1350051880u,
  8847. 2776293343u,
  8848. 59739276u,
  8849. 1509466529u,
  8850. 159418761u,
  8851. 437718285u,
  8852. 1708834751u,
  8853. 3610371814u,
  8854. 2227585602u,
  8855. 3501746280u,
  8856. 2193834305u,
  8857. 699439513u,
  8858. 1517759789u,
  8859. 504434447u,
  8860. 2076946608u,
  8861. 2835108948u,
  8862. 1842789307u,
  8863. 742004246u
  8864. }
  8865. }; // idb
  8866. const uint32_t rcon_tab[29] =
  8867. {
  8868. 1u,
  8869. 2u,
  8870. 4u,
  8871. 8u,
  8872. 16u,
  8873. 32u,
  8874. 64u,
  8875. 128u,
  8876. 27u,
  8877. 54u,
  8878. 108u,
  8879. 216u,
  8880. 171u,
  8881. 77u,
  8882. 154u,
  8883. 47u,
  8884. 94u,
  8885. 188u,
  8886. 99u,
  8887. 198u,
  8888. 151u,
  8889. 53u,
  8890. 106u,
  8891. 212u,
  8892. 179u,
  8893. 125u,
  8894. 250u,
  8895. 239u,
  8896. 197u
  8897. }; // idb
  8898. _DWORD (__cdecl *off_80EAE60[2])(Seraph::StringEncrypt *this) =
  8899. {
  8900. &Seraph::StringEncrypt::~StringEncrypt,
  8901. &Seraph::StringEncrypt::~StringEncrypt
  8902. }; // weak
  8903. char Seraph::StringEncrypt::sm_rcon[30] =
  8904. {
  8905. '\x01',
  8906. '\x02',
  8907. '\x04',
  8908. '\b',
  8909. '\x10',
  8910. ' ',
  8911. '@',
  8912. '\x80',
  8913. '\x1B',
  8914. '6',
  8915. 'l',
  8916. '',
  8917. '\xAB',
  8918. 'M',
  8919. '\x9A',
  8920. '/',
  8921. '^',
  8922. '\xBC',
  8923. 'c',
  8924. '',
  8925. '\x97',
  8926. '5',
  8927. 'j',
  8928. '',
  8929. '\xB3',
  8930. '}',
  8931. '\xFA',
  8932. '',
  8933. '',
  8934. '\x91'
  8935. }; // idb
  8936. const int Seraph::StringEncrypt::sm_U4[256] =
  8937. {
  8938. 0,
  8939. 151849742,
  8940. 303699484,
  8941. 454499602,
  8942. 607398968,
  8943. 758720310,
  8944. 908999204,
  8945. 1059270954,
  8946. 1214797936,
  8947. 1097159550,
  8948. 1517440620,
  8949. 1400849762,
  8950. 1817998408,
  8951. 1699839814,
  8952. 2118541908,
  8953. 2001430874,
  8954. 2429595872,
  8955. 2581445614,
  8956. 2194319100,
  8957. 2345119218,
  8958. 3034881240,
  8959. 3186202582,
  8960. 2801699524,
  8961. 2951971274,
  8962. 3635996816,
  8963. 3518358430,
  8964. 3399679628,
  8965. 3283088770,
  8966. 4237083816,
  8967. 4118925222,
  8968. 4002861748,
  8969. 3885750714,
  8970. 1002142683,
  8971. 850817237,
  8972. 698445255,
  8973. 548169417,
  8974. 529487843,
  8975. 377642221,
  8976. 227885567,
  8977. 77089521,
  8978. 1943217067,
  8979. 2061379749,
  8980. 1640576439,
  8981. 1757691577,
  8982. 1474760595,
  8983. 1592394909,
  8984. 1174215055,
  8985. 1290801793,
  8986. 2875968315,
  8987. 2724642869,
  8988. 3111247143,
  8989. 2960971305,
  8990. 2405426947,
  8991. 2253581325,
  8992. 2638606623,
  8993. 2487810577,
  8994. 3808662347,
  8995. 3926825029,
  8996. 4044981591,
  8997. 4162096729,
  8998. 3342319475,
  8999. 3459953789,
  9000. 3576539503,
  9001. 3693126241,
  9002. 1986918061,
  9003. 2137062819,
  9004. 1685577905,
  9005. 1836772287,
  9006. 1381620373,
  9007. 1532285339,
  9008. 1078185097,
  9009. 1229899655,
  9010. 1040559837,
  9011. 923313619,
  9012. 740276417,
  9013. 621982671,
  9014. 439452389,
  9015. 322734571,
  9016. 137073913,
  9017. 19308535,
  9018. 3871163981,
  9019. 4021308739,
  9020. 4104605777,
  9021. 4255800159,
  9022. 3263785589,
  9023. 3414450555,
  9024. 3499326569,
  9025. 3651041127,
  9026. 2933202493,
  9027. 2815956275,
  9028. 3167684641,
  9029. 3049390895,
  9030. 2330014213,
  9031. 2213296395,
  9032. 2566595609,
  9033. 2448830231,
  9034. 1305906550,
  9035. 1155237496,
  9036. 1607244650,
  9037. 1455525988,
  9038. 1776460110,
  9039. 1626319424,
  9040. 2079897426,
  9041. 1928707164,
  9042. 96392454,
  9043. 213114376,
  9044. 396673818,
  9045. 514443284,
  9046. 562755902,
  9047. 679998000,
  9048. 865136418,
  9049. 983426092,
  9050. 3708173718,
  9051. 3557504664,
  9052. 3474729866,
  9053. 3323011204,
  9054. 4180808110,
  9055. 4030667424,
  9056. 3945269170,
  9057. 3794078908,
  9058. 2507040230,
  9059. 2623762152,
  9060. 2272556026,
  9061. 2390325492,
  9062. 2975484382,
  9063. 3092726480,
  9064. 2738905026,
  9065. 2857194700,
  9066. 3973773121,
  9067. 3856137295,
  9068. 4274053469,
  9069. 4157467219,
  9070. 3371096953,
  9071. 3252932727,
  9072. 3673476453,
  9073. 3556361835,
  9074. 2763173681,
  9075. 2915017791,
  9076. 3064510765,
  9077. 3215307299,
  9078. 2156299017,
  9079. 2307622919,
  9080. 2459735317,
  9081. 2610011675,
  9082. 2081048481,
  9083. 1963412655,
  9084. 1846563261,
  9085. 1729977011,
  9086. 1480485785,
  9087. 1362321559,
  9088. 1243905413,
  9089. 1126790795,
  9090. 878845905,
  9091. 1030690015,
  9092. 645401037,
  9093. 796197571,
  9094. 274084841,
  9095. 425408743,
  9096. 38544885,
  9097. 188821243,
  9098. 3613494426,
  9099. 3731654548,
  9100. 3313212038,
  9101. 3430322568,
  9102. 4082475170,
  9103. 4200115116,
  9104. 3780097726,
  9105. 3896688048,
  9106. 2668221674,
  9107. 2516901860,
  9108. 2366882550,
  9109. 2216610296,
  9110. 3141400786,
  9111. 2989552604,
  9112. 2837966542,
  9113. 2687165888,
  9114. 1202797690,
  9115. 1320957812,
  9116. 1437280870,
  9117. 1554391400,
  9118. 1669664834,
  9119. 1787304780,
  9120. 1906247262,
  9121. 2022837584,
  9122. 265905162,
  9123. 114585348,
  9124. 499347990,
  9125. 349075736,
  9126. 736970802,
  9127. 585122620,
  9128. 972512814,
  9129. 821712160,
  9130. 2595684844,
  9131. 2478443234,
  9132. 2293045232,
  9133. 2174754046,
  9134. 3196267988,
  9135. 3079546586,
  9136. 2895723464,
  9137. 2777952454,
  9138. 3537852828,
  9139. 3687994002,
  9140. 3234156416,
  9141. 3385345166,
  9142. 4142626212,
  9143. 4293295786,
  9144. 3841024952,
  9145. 3992742070,
  9146. 174567692,
  9147. 57326082,
  9148. 410887952,
  9149. 292596766,
  9150. 777231668,
  9151. 660510266,
  9152. 1011452712,
  9153. 893681702,
  9154. 1108339068,
  9155. 1258480242,
  9156. 1343618912,
  9157. 1494807662,
  9158. 1715193156,
  9159. 1865862730,
  9160. 1948373848,
  9161. 2100090966,
  9162. 2701949495,
  9163. 2818666809,
  9164. 3004591147,
  9165. 3122358053,
  9166. 2235061775,
  9167. 2352307457,
  9168. 2535604243,
  9169. 2653899549,
  9170. 3915653703,
  9171. 3764988233,
  9172. 4219352155,
  9173. 4067639125,
  9174. 3444575871,
  9175. 3294430577,
  9176. 3746175075,
  9177. 3594982253,
  9178. 836553431,
  9179. 953270745,
  9180. 600235211,
  9181. 718002117,
  9182. 367585007,
  9183. 484830689,
  9184. 133361907,
  9185. 251657213,
  9186. 2041877159,
  9187. 1891211689,
  9188. 1806599355,
  9189. 1654886325,
  9190. 1568718495,
  9191. 1418573201,
  9192. 1335535747,
  9193. 1184342925
  9194. }; // idb
  9195. const int Seraph::StringEncrypt::sm_U3[256] =
  9196. {
  9197. 0,
  9198. 218828297,
  9199. 437656594,
  9200. 387781147,
  9201. 875313188,
  9202. 958871085,
  9203. 775562294,
  9204. 590424639,
  9205. 1750626376,
  9206. 1699970625,
  9207. 1917742170,
  9208. 2135253587,
  9209. 1551124588,
  9210. 1367295589,
  9211. 1180849278,
  9212. 1265195639,
  9213. 3501252752,
  9214. 3720081049,
  9215. 3399941250,
  9216. 3350065803,
  9217. 3835484340,
  9218. 3919042237,
  9219. 4270507174,
  9220. 4085369519,
  9221. 3102249176,
  9222. 3051593425,
  9223. 2734591178,
  9224. 2952102595,
  9225. 2361698556,
  9226. 2177869557,
  9227. 2530391278,
  9228. 2614737639,
  9229. 3145456443,
  9230. 3060847922,
  9231. 2708326185,
  9232. 2892417312,
  9233. 2404901663,
  9234. 2187128086,
  9235. 2504130317,
  9236. 2555048196,
  9237. 3542330227,
  9238. 3727205754,
  9239. 3375740769,
  9240. 3292445032,
  9241. 3876557655,
  9242. 3926170974,
  9243. 4246310725,
  9244. 4027744588,
  9245. 1808481195,
  9246. 1723872674,
  9247. 1910319033,
  9248. 2094410160,
  9249. 1608975247,
  9250. 1391201670,
  9251. 1173430173,
  9252. 1224348052,
  9253. 59984867,
  9254. 244860394,
  9255. 428169201,
  9256. 344873464,
  9257. 935293895,
  9258. 984907214,
  9259. 766078933,
  9260. 547512796,
  9261. 1844882806,
  9262. 1627235199,
  9263. 2011214180,
  9264. 2062270317,
  9265. 1507497298,
  9266. 1423022939,
  9267. 1137477952,
  9268. 1321699145,
  9269. 95345982,
  9270. 145085239,
  9271. 532201772,
  9272. 313773861,
  9273. 830661914,
  9274. 1015671571,
  9275. 731183368,
  9276. 648017665,
  9277. 3175501286,
  9278. 2957853679,
  9279. 2807058932,
  9280. 2858115069,
  9281. 2305455554,
  9282. 2220981195,
  9283. 2474404304,
  9284. 2658625497,
  9285. 3575528878,
  9286. 3625268135,
  9287. 3473416636,
  9288. 3254988725,
  9289. 3778151818,
  9290. 3963161475,
  9291. 4213447064,
  9292. 4130281361,
  9293. 3599595085,
  9294. 3683022916,
  9295. 3432737375,
  9296. 3247465558,
  9297. 3802222185,
  9298. 4020912224,
  9299. 4172763771,
  9300. 4122762354,
  9301. 3201631749,
  9302. 3017672716,
  9303. 2764249623,
  9304. 2848461854,
  9305. 2331590177,
  9306. 2280796200,
  9307. 2431590963,
  9308. 2648976442,
  9309. 104699613,
  9310. 188127444,
  9311. 472615631,
  9312. 287343814,
  9313. 840019705,
  9314. 1058709744,
  9315. 671593195,
  9316. 621591778,
  9317. 1852171925,
  9318. 1668212892,
  9319. 1953757831,
  9320. 2037970062,
  9321. 1514790577,
  9322. 1463996600,
  9323. 1080017571,
  9324. 1297403050,
  9325. 3673637356,
  9326. 3623636965,
  9327. 3235995134,
  9328. 3454686199,
  9329. 4007360968,
  9330. 3822090177,
  9331. 4107101658,
  9332. 4190530515,
  9333. 2997825956,
  9334. 3215212461,
  9335. 2830708150,
  9336. 2779915199,
  9337. 2256734592,
  9338. 2340947849,
  9339. 2627016082,
  9340. 2443058075,
  9341. 172466556,
  9342. 122466165,
  9343. 273792366,
  9344. 492483431,
  9345. 1047239000,
  9346. 861968209,
  9347. 612205898,
  9348. 695634755,
  9349. 1646252340,
  9350. 1863638845,
  9351. 2013908262,
  9352. 1963115311,
  9353. 1446242576,
  9354. 1530455833,
  9355. 1277555970,
  9356. 1093597963,
  9357. 1636604631,
  9358. 1820824798,
  9359. 2073724613,
  9360. 1989249228,
  9361. 1436590835,
  9362. 1487645946,
  9363. 1337376481,
  9364. 1119727848,
  9365. 164948639,
  9366. 81781910,
  9367. 331544205,
  9368. 516552836,
  9369. 1039717051,
  9370. 821288114,
  9371. 669961897,
  9372. 719700128,
  9373. 2973530695,
  9374. 3157750862,
  9375. 2871682645,
  9376. 2787207260,
  9377. 2232435299,
  9378. 2283490410,
  9379. 2667994737,
  9380. 2450346104,
  9381. 3647212047,
  9382. 3564045318,
  9383. 3279033885,
  9384. 3464042516,
  9385. 3980931627,
  9386. 3762502690,
  9387. 4150144569,
  9388. 4199882800,
  9389. 3070356634,
  9390. 3121275539,
  9391. 2904027272,
  9392. 2686254721,
  9393. 2200818878,
  9394. 2384911031,
  9395. 2570832044,
  9396. 2486224549,
  9397. 3747192018,
  9398. 3528626907,
  9399. 3310321856,
  9400. 3359936201,
  9401. 3950355702,
  9402. 3867060991,
  9403. 4049844452,
  9404. 4234721005,
  9405. 1739656202,
  9406. 1790575107,
  9407. 2108100632,
  9408. 1890328081,
  9409. 1402811438,
  9410. 1586903591,
  9411. 1233856572,
  9412. 1149249077,
  9413. 266959938,
  9414. 48394827,
  9415. 369057872,
  9416. 418672217,
  9417. 1002783846,
  9418. 919489135,
  9419. 567498868,
  9420. 752375421,
  9421. 209336225,
  9422. 24197544,
  9423. 376187827,
  9424. 459744698,
  9425. 945164165,
  9426. 895287692,
  9427. 574624663,
  9428. 793451934,
  9429. 1679968233,
  9430. 1764313568,
  9431. 2117360635,
  9432. 1933530610,
  9433. 1343127501,
  9434. 1560637892,
  9435. 1243112415,
  9436. 1192455638,
  9437. 3704280881,
  9438. 3519142200,
  9439. 3336358691,
  9440. 3419915562,
  9441. 3907448597,
  9442. 3857572124,
  9443. 4075877127,
  9444. 4294704398,
  9445. 3029510009,
  9446. 3113855344,
  9447. 2927934315,
  9448. 2744104290,
  9449. 2159976285,
  9450. 2377486676,
  9451. 2594734927,
  9452. 2544078150
  9453. }; // idb
  9454. const int Seraph::StringEncrypt::sm_U2[256] =
  9455. {
  9456. 0,
  9457. 185469197,
  9458. 370938394,
  9459. 487725847,
  9460. 741876788,
  9461. 657861945,
  9462. 975451694,
  9463. 824852259,
  9464. 1483753576,
  9465. 1400783205,
  9466. 1315723890,
  9467. 1164071807,
  9468. 1950903388,
  9469. 2135319889,
  9470. 1649704518,
  9471. 1767536459,
  9472. 2967507152,
  9473. 3152976349,
  9474. 2801566410,
  9475. 2918353863,
  9476. 2631447780,
  9477. 2547432937,
  9478. 2328143614,
  9479. 2177544179,
  9480. 3901806776,
  9481. 3818836405,
  9482. 4270639778,
  9483. 4118987695,
  9484. 3299409036,
  9485. 3483825537,
  9486. 3535072918,
  9487. 3652904859,
  9488. 2077965243,
  9489. 1893020342,
  9490. 1841768865,
  9491. 1724457132,
  9492. 1474502543,
  9493. 1559041666,
  9494. 1107234197,
  9495. 1257309336,
  9496. 598438867,
  9497. 681933534,
  9498. 901210569,
  9499. 1052338372,
  9500. 261314535,
  9501. 77422314,
  9502. 428819965,
  9503. 310463728,
  9504. 3409685355,
  9505. 3224740454,
  9506. 3710368113,
  9507. 3593056380,
  9508. 3875770207,
  9509. 3960309330,
  9510. 4045380933,
  9511. 4195456072,
  9512. 2471224067,
  9513. 2554718734,
  9514. 2237133081,
  9515. 2388260884,
  9516. 3212035895,
  9517. 3028143674,
  9518. 2842678573,
  9519. 2724322336,
  9520. 4138563181,
  9521. 4255350624,
  9522. 3769721975,
  9523. 3955191162,
  9524. 3667219033,
  9525. 3516619604,
  9526. 3431546947,
  9527. 3347532110,
  9528. 2933734917,
  9529. 2782082824,
  9530. 3099667487,
  9531. 3016697106,
  9532. 2196052529,
  9533. 2313884476,
  9534. 2499348523,
  9535. 2683765030,
  9536. 1179510461,
  9537. 1296297904,
  9538. 1347548327,
  9539. 1533017514,
  9540. 1786102409,
  9541. 1635502980,
  9542. 2087309459,
  9543. 2003294622,
  9544. 507358933,
  9545. 355706840,
  9546. 136428751,
  9547. 53458370,
  9548. 839224033,
  9549. 957055980,
  9550. 605657339,
  9551. 790073846,
  9552. 2373340630,
  9553. 2256028891,
  9554. 2607439820,
  9555. 2422494913,
  9556. 2706270690,
  9557. 2856345839,
  9558. 3075636216,
  9559. 3160175349,
  9560. 3573941694,
  9561. 3725069491,
  9562. 3273267108,
  9563. 3356761769,
  9564. 4181598602,
  9565. 4063242375,
  9566. 4011996048,
  9567. 3828103837,
  9568. 1033297158,
  9569. 915985419,
  9570. 730517276,
  9571. 545572369,
  9572. 296679730,
  9573. 446754879,
  9574. 129166120,
  9575. 213705253,
  9576. 1709610350,
  9577. 1860738147,
  9578. 1945798516,
  9579. 2029293177,
  9580. 1239331162,
  9581. 1120974935,
  9582. 1606591296,
  9583. 1422699085,
  9584. 4148292826,
  9585. 4233094615,
  9586. 3781033664,
  9587. 3931371469,
  9588. 3682191598,
  9589. 3497509347,
  9590. 3446004468,
  9591. 3328955385,
  9592. 2939266226,
  9593. 2755636671,
  9594. 3106780840,
  9595. 2988687269,
  9596. 2198438022,
  9597. 2282195339,
  9598. 2501218972,
  9599. 2652609425,
  9600. 1201765386,
  9601. 1286567175,
  9602. 1371368976,
  9603. 1521706781,
  9604. 1805211710,
  9605. 1620529459,
  9606. 2105887268,
  9607. 1988838185,
  9608. 533804130,
  9609. 350174575,
  9610. 164439672,
  9611. 46346101,
  9612. 870912086,
  9613. 954669403,
  9614. 636813900,
  9615. 788204353,
  9616. 2358957921,
  9617. 2274680428,
  9618. 2592523643,
  9619. 2441661558,
  9620. 2695033685,
  9621. 2880240216,
  9622. 3065962831,
  9623. 3182487618,
  9624. 3572145929,
  9625. 3756299780,
  9626. 3270937875,
  9627. 3388507166,
  9628. 4174560061,
  9629. 4091327024,
  9630. 4006521127,
  9631. 3854606378,
  9632. 1014646705,
  9633. 930369212,
  9634. 711349675,
  9635. 560487590,
  9636. 272786309,
  9637. 457992840,
  9638. 106852767,
  9639. 223377554,
  9640. 1678381017,
  9641. 1862534868,
  9642. 1914052035,
  9643. 2031621326,
  9644. 1211247597,
  9645. 1128014560,
  9646. 1580087799,
  9647. 1428173050,
  9648. 32283319,
  9649. 182621114,
  9650. 401639597,
  9651. 486441376,
  9652. 768917123,
  9653. 651868046,
  9654. 1003007129,
  9655. 818324884,
  9656. 1503449823,
  9657. 1385356242,
  9658. 1333838021,
  9659. 1150208456,
  9660. 1973745387,
  9661. 2125135846,
  9662. 1673061617,
  9663. 1756818940,
  9664. 2970356327,
  9665. 3120694122,
  9666. 2802849917,
  9667. 2887651696,
  9668. 2637442643,
  9669. 2520393566,
  9670. 2334669897,
  9671. 2149987652,
  9672. 3917234703,
  9673. 3799141122,
  9674. 4284502037,
  9675. 4100872472,
  9676. 3309594171,
  9677. 3460984630,
  9678. 3545789473,
  9679. 3629546796,
  9680. 2050466060,
  9681. 1899603969,
  9682. 1814803222,
  9683. 1730525723,
  9684. 1443857720,
  9685. 1560382517,
  9686. 1075025698,
  9687. 1260232239,
  9688. 575138148,
  9689. 692707433,
  9690. 878443390,
  9691. 1062597235,
  9692. 243256656,
  9693. 91341917,
  9694. 409198410,
  9695. 325965383,
  9696. 3403100636,
  9697. 3252238545,
  9698. 3704300486,
  9699. 3620022987,
  9700. 3874428392,
  9701. 3990953189,
  9702. 4042459122,
  9703. 4227665663,
  9704. 2460449204,
  9705. 2578018489,
  9706. 2226875310,
  9707. 2411029155,
  9708. 3198115200,
  9709. 3046200461,
  9710. 2827177882,
  9711. 2743944855
  9712. }; // idb
  9713. const int Seraph::StringEncrypt::sm_U1[256] =
  9714. {
  9715. 0,
  9716. 235474187,
  9717. 470948374,
  9718. 303765277,
  9719. 941896748,
  9720. 908933415,
  9721. 607530554,
  9722. 708780849,
  9723. 1883793496,
  9724. 2118214995,
  9725. 1817866830,
  9726. 1649639237,
  9727. 1215061108,
  9728. 1181045119,
  9729. 1417561698,
  9730. 1517767529,
  9731. 3767586992,
  9732. 4003061179,
  9733. 4236429990,
  9734. 4069246893,
  9735. 3635733660,
  9736. 3602770327,
  9737. 3299278474,
  9738. 3400528769,
  9739. 2430122216,
  9740. 2664543715,
  9741. 2362090238,
  9742. 2193862645,
  9743. 2835123396,
  9744. 2801107407,
  9745. 3035535058,
  9746. 3135740889,
  9747. 3678124923,
  9748. 3576870512,
  9749. 3341394285,
  9750. 3374361702,
  9751. 3810496343,
  9752. 3977675356,
  9753. 4279080257,
  9754. 4043610186,
  9755. 2876494627,
  9756. 2776292904,
  9757. 3076639029,
  9758. 3110650942,
  9759. 2472011535,
  9760. 2640243204,
  9761. 2403728665,
  9762. 2169303058,
  9763. 1001089995,
  9764. 899835584,
  9765. 666464733,
  9766. 699432150,
  9767. 59727847,
  9768. 226906860,
  9769. 530400753,
  9770. 294930682,
  9771. 1273168787,
  9772. 1172967064,
  9773. 1475418501,
  9774. 1509430414,
  9775. 1942435775,
  9776. 2110667444,
  9777. 1876241833,
  9778. 1641816226,
  9779. 2910219766,
  9780. 2743034109,
  9781. 2976151520,
  9782. 3211623147,
  9783. 2505202138,
  9784. 2606453969,
  9785. 2302690252,
  9786. 2269728455,
  9787. 3711829422,
  9788. 3543599269,
  9789. 3240894392,
  9790. 3475313331,
  9791. 3843699074,
  9792. 3943906441,
  9793. 4178062228,
  9794. 4144047775,
  9795. 1306967366,
  9796. 1139781709,
  9797. 1374988112,
  9798. 1610459739,
  9799. 1975683434,
  9800. 2076935265,
  9801. 1775276924,
  9802. 1742315127,
  9803. 1034867998,
  9804. 866637845,
  9805. 566021896,
  9806. 800440835,
  9807. 92987698,
  9808. 193195065,
  9809. 429456164,
  9810. 395441711,
  9811. 1984812685,
  9812. 2017778566,
  9813. 1784663195,
  9814. 1683407248,
  9815. 1315562145,
  9816. 1080094634,
  9817. 1383856311,
  9818. 1551037884,
  9819. 101039829,
  9820. 135050206,
  9821. 437757123,
  9822. 337553864,
  9823. 1042385657,
  9824. 807962610,
  9825. 573804783,
  9826. 742039012,
  9827. 2531067453,
  9828. 2564033334,
  9829. 2328828971,
  9830. 2227573024,
  9831. 2935566865,
  9832. 2700099354,
  9833. 3001755655,
  9834. 3168937228,
  9835. 3868552805,
  9836. 3902563182,
  9837. 4203181171,
  9838. 4102977912,
  9839. 3736164937,
  9840. 3501741890,
  9841. 3265478751,
  9842. 3433712980,
  9843. 1106041591,
  9844. 1340463100,
  9845. 1576976609,
  9846. 1408749034,
  9847. 2043211483,
  9848. 2009195472,
  9849. 1708848333,
  9850. 1809054150,
  9851. 832877231,
  9852. 1068351396,
  9853. 766945465,
  9854. 599762354,
  9855. 159417987,
  9856. 126454664,
  9857. 361929877,
  9858. 463180190,
  9859. 2709260871,
  9860. 2943682380,
  9861. 3178106961,
  9862. 3009879386,
  9863. 2572697195,
  9864. 2538681184,
  9865. 2236228733,
  9866. 2336434550,
  9867. 3509871135,
  9868. 3745345300,
  9869. 3441850377,
  9870. 3274667266,
  9871. 3910161971,
  9872. 3877198648,
  9873. 4110568485,
  9874. 4211818798,
  9875. 2597806476,
  9876. 2497604743,
  9877. 2261089178,
  9878. 2295101073,
  9879. 2733856160,
  9880. 2902087851,
  9881. 3202437046,
  9882. 2968011453,
  9883. 3936291284,
  9884. 3835036895,
  9885. 4136440770,
  9886. 4169408201,
  9887. 3535486456,
  9888. 3702665459,
  9889. 3467192302,
  9890. 3231722213,
  9891. 2051518780,
  9892. 1951317047,
  9893. 1716890410,
  9894. 1750902305,
  9895. 1113818384,
  9896. 1282050075,
  9897. 1584504582,
  9898. 1350078989,
  9899. 168810852,
  9900. 67556463,
  9901. 371049330,
  9902. 404016761,
  9903. 841739592,
  9904. 1008918595,
  9905. 775550814,
  9906. 540080725,
  9907. 3969562369,
  9908. 3801332234,
  9909. 4035489047,
  9910. 4269907996,
  9911. 3569255213,
  9912. 3669462566,
  9913. 3366754619,
  9914. 3332740144,
  9915. 2631065433,
  9916. 2463879762,
  9917. 2160117071,
  9918. 2395588676,
  9919. 2767645557,
  9920. 2868897406,
  9921. 3102011747,
  9922. 3069049960,
  9923. 202008497,
  9924. 33778362,
  9925. 270040487,
  9926. 504459436,
  9927. 875451293,
  9928. 975658646,
  9929. 675039627,
  9930. 641025152,
  9931. 2084704233,
  9932. 1917518562,
  9933. 1615861247,
  9934. 1851332852,
  9935. 1147550661,
  9936. 1248802510,
  9937. 1484005843,
  9938. 1451044056,
  9939. 933301370,
  9940. 967311729,
  9941. 733156972,
  9942. 632953703,
  9943. 260388950,
  9944. 25965917,
  9945. 328671808,
  9946. 496906059,
  9947. 1206477858,
  9948. 1239443753,
  9949. 1543208500,
  9950. 1441952575,
  9951. 2144161806,
  9952. 1908694277,
  9953. 1675577880,
  9954. 1842759443,
  9955. 3610369226,
  9956. 3644379585,
  9957. 3408119516,
  9958. 3307916247,
  9959. 4011190502,
  9960. 3776767469,
  9961. 4077384432,
  9962. 4245618683,
  9963. 2809771154,
  9964. 2842737049,
  9965. 3144396420,
  9966. 3043140495,
  9967. 2673705150,
  9968. 2438237621,
  9969. 2203032232,
  9970. 2370213795
  9971. }; // idb
  9972. const int Seraph::StringEncrypt::sm_T8[256] =
  9973. {
  9974. 4104605777,
  9975. 1097159550,
  9976. 396673818,
  9977. 660510266,
  9978. 2875968315,
  9979. 2638606623,
  9980. 4200115116,
  9981. 3808662347,
  9982. 821712160,
  9983. 1986918061,
  9984. 3430322568,
  9985. 38544885,
  9986. 3856137295,
  9987. 718002117,
  9988. 893681702,
  9989. 1654886325,
  9990. 2975484382,
  9991. 3122358053,
  9992. 3926825029,
  9993. 4274053469,
  9994. 796197571,
  9995. 1290801793,
  9996. 1184342925,
  9997. 3556361835,
  9998. 2405426947,
  9999. 2459735317,
  10000. 1836772287,
  10001. 1381620373,
  10002. 3196267988,
  10003. 1948373848,
  10004. 3764988233,
  10005. 3385345166,
  10006. 3263785589,
  10007. 2390325492,
  10008. 1480485785,
  10009. 3111247143,
  10010. 3780097726,
  10011. 2293045232,
  10012. 548169417,
  10013. 3459953789,
  10014. 3746175075,
  10015. 439452389,
  10016. 1362321559,
  10017. 1400849762,
  10018. 1685577905,
  10019. 1806599355,
  10020. 2174754046,
  10021. 137073913,
  10022. 1214797936,
  10023. 1174215055,
  10024. 3731654548,
  10025. 2079897426,
  10026. 1943217067,
  10027. 1258480242,
  10028. 529487843,
  10029. 1437280870,
  10030. 3945269170,
  10031. 3049390895,
  10032. 3313212038,
  10033. 923313619,
  10034. 679998000,
  10035. 3215307299,
  10036. 57326082,
  10037. 377642221,
  10038. 3474729866,
  10039. 2041877159,
  10040. 133361907,
  10041. 1776460110,
  10042. 3673476453,
  10043. 96392454,
  10044. 878845905,
  10045. 2801699524,
  10046. 777231668,
  10047. 4082475170,
  10048. 2330014213,
  10049. 4142626212,
  10050. 2213296395,
  10051. 1626319424,
  10052. 1906247262,
  10053. 1846563261,
  10054. 562755902,
  10055. 3708173718,
  10056. 1040559837,
  10057. 3871163981,
  10058. 1418573201,
  10059. 3294430577,
  10060. 114585348,
  10061. 1343618912,
  10062. 2566595609,
  10063. 3186202582,
  10064. 1078185097,
  10065. 3651041127,
  10066. 3896688048,
  10067. 2307622919,
  10068. 425408743,
  10069. 3371096953,
  10070. 2081048481,
  10071. 1108339068,
  10072. 2216610296,
  10073. 0,
  10074. 2156299017,
  10075. 736970802,
  10076. 292596766,
  10077. 1517440620,
  10078. 251657213,
  10079. 2235061775,
  10080. 2933202493,
  10081. 758720310,
  10082. 265905162,
  10083. 1554391400,
  10084. 1532285339,
  10085. 908999204,
  10086. 174567692,
  10087. 1474760595,
  10088. 4002861748,
  10089. 2610011675,
  10090. 3234156416,
  10091. 3693126241,
  10092. 2001430874,
  10093. 303699484,
  10094. 2478443234,
  10095. 2687165888,
  10096. 585122620,
  10097. 454499602,
  10098. 151849742,
  10099. 2345119218,
  10100. 3064510765,
  10101. 514443284,
  10102. 4044981591,
  10103. 1963412655,
  10104. 2581445614,
  10105. 2137062819,
  10106. 19308535,
  10107. 1928707164,
  10108. 1715193156,
  10109. 4219352155,
  10110. 1126790795,
  10111. 600235211,
  10112. 3992742070,
  10113. 3841024952,
  10114. 836553431,
  10115. 1669664834,
  10116. 2535604243,
  10117. 3323011204,
  10118. 1243905413,
  10119. 3141400786,
  10120. 4180808110,
  10121. 698445255,
  10122. 2653899549,
  10123. 2989552604,
  10124. 2253581325,
  10125. 3252932727,
  10126. 3004591147,
  10127. 1891211689,
  10128. 2487810577,
  10129. 3915653703,
  10130. 4237083816,
  10131. 4030667424,
  10132. 2100090966,
  10133. 865136418,
  10134. 1229899655,
  10135. 953270745,
  10136. 3399679628,
  10137. 3557504664,
  10138. 4118925222,
  10139. 2061379749,
  10140. 3079546586,
  10141. 2915017791,
  10142. 983426092,
  10143. 2022837584,
  10144. 1607244650,
  10145. 2118541908,
  10146. 2366882550,
  10147. 3635996816,
  10148. 972512814,
  10149. 3283088770,
  10150. 1568718495,
  10151. 3499326569,
  10152. 3576539503,
  10153. 621982671,
  10154. 2895723464,
  10155. 410887952,
  10156. 2623762152,
  10157. 1002142683,
  10158. 645401037,
  10159. 1494807662,
  10160. 2595684844,
  10161. 1335535747,
  10162. 2507040230,
  10163. 4293295786,
  10164. 3167684641,
  10165. 367585007,
  10166. 3885750714,
  10167. 1865862730,
  10168. 2668221674,
  10169. 2960971305,
  10170. 2763173681,
  10171. 1059270954,
  10172. 2777952454,
  10173. 2724642869,
  10174. 1320957812,
  10175. 2194319100,
  10176. 2429595872,
  10177. 2815956275,
  10178. 77089521,
  10179. 3973773121,
  10180. 3444575871,
  10181. 2448830231,
  10182. 1305906550,
  10183. 4021308739,
  10184. 2857194700,
  10185. 2516901860,
  10186. 3518358430,
  10187. 1787304780,
  10188. 740276417,
  10189. 1699839814,
  10190. 1592394909,
  10191. 2352307457,
  10192. 2272556026,
  10193. 188821243,
  10194. 1729977011,
  10195. 3687994002,
  10196. 274084841,
  10197. 3594982253,
  10198. 3613494426,
  10199. 2701949495,
  10200. 4162096729,
  10201. 322734571,
  10202. 2837966542,
  10203. 1640576439,
  10204. 484830689,
  10205. 1202797690,
  10206. 3537852828,
  10207. 4067639125,
  10208. 349075736,
  10209. 3342319475,
  10210. 4157467219,
  10211. 4255800159,
  10212. 1030690015,
  10213. 1155237496,
  10214. 2951971274,
  10215. 1757691577,
  10216. 607398968,
  10217. 2738905026,
  10218. 499347990,
  10219. 3794078908,
  10220. 1011452712,
  10221. 227885567,
  10222. 2818666809,
  10223. 213114376,
  10224. 3034881240,
  10225. 1455525988,
  10226. 3414450555,
  10227. 850817237,
  10228. 1817998408,
  10229. 3092726480
  10230. }; // idb
  10231. const int Seraph::StringEncrypt::sm_T7[256] =
  10232. {
  10233. 2807058932,
  10234. 1699970625,
  10235. 2764249623,
  10236. 1586903591,
  10237. 1808481195,
  10238. 1173430173,
  10239. 1487645946,
  10240. 59984867,
  10241. 4199882800,
  10242. 1844882806,
  10243. 1989249228,
  10244. 1277555970,
  10245. 3623636965,
  10246. 3419915562,
  10247. 1149249077,
  10248. 2744104290,
  10249. 1514790577,
  10250. 459744698,
  10251. 244860394,
  10252. 3235995134,
  10253. 1963115311,
  10254. 4027744588,
  10255. 2544078150,
  10256. 4190530515,
  10257. 1608975247,
  10258. 2627016082,
  10259. 2062270317,
  10260. 1507497298,
  10261. 2200818878,
  10262. 567498868,
  10263. 1764313568,
  10264. 3359936201,
  10265. 2305455554,
  10266. 2037970062,
  10267. 1047239000,
  10268. 1910319033,
  10269. 1337376481,
  10270. 2904027272,
  10271. 2892417312,
  10272. 984907214,
  10273. 1243112415,
  10274. 830661914,
  10275. 861968209,
  10276. 2135253587,
  10277. 2011214180,
  10278. 2927934315,
  10279. 2686254721,
  10280. 731183368,
  10281. 1750626376,
  10282. 4246310725,
  10283. 1820824798,
  10284. 4172763771,
  10285. 3542330227,
  10286. 48394827,
  10287. 2404901663,
  10288. 2871682645,
  10289. 671593195,
  10290. 3254988725,
  10291. 2073724613,
  10292. 145085239,
  10293. 2280796200,
  10294. 2779915199,
  10295. 1790575107,
  10296. 2187128086,
  10297. 472615631,
  10298. 3029510009,
  10299. 4075877127,
  10300. 3802222185,
  10301. 4107101658,
  10302. 3201631749,
  10303. 1646252340,
  10304. 4270507174,
  10305. 1402811438,
  10306. 1436590835,
  10307. 3778151818,
  10308. 3950355702,
  10309. 3963161475,
  10310. 4020912224,
  10311. 2667994737,
  10312. 273792366,
  10313. 2331590177,
  10314. 104699613,
  10315. 95345982,
  10316. 3175501286,
  10317. 2377486676,
  10318. 1560637892,
  10319. 3564045318,
  10320. 369057872,
  10321. 4213447064,
  10322. 3919042237,
  10323. 1137477952,
  10324. 2658625497,
  10325. 1119727848,
  10326. 2340947849,
  10327. 1530455833,
  10328. 4007360968,
  10329. 172466556,
  10330. 266959938,
  10331. 516552836,
  10332. 0,
  10333. 2256734592,
  10334. 3980931627,
  10335. 1890328081,
  10336. 1917742170,
  10337. 4294704398,
  10338. 945164165,
  10339. 3575528878,
  10340. 958871085,
  10341. 3647212047,
  10342. 2787207260,
  10343. 1423022939,
  10344. 775562294,
  10345. 1739656202,
  10346. 3876557655,
  10347. 2530391278,
  10348. 2443058075,
  10349. 3310321856,
  10350. 547512796,
  10351. 1265195639,
  10352. 437656594,
  10353. 3121275539,
  10354. 719700128,
  10355. 3762502690,
  10356. 387781147,
  10357. 218828297,
  10358. 3350065803,
  10359. 2830708150,
  10360. 2848461854,
  10361. 428169201,
  10362. 122466165,
  10363. 3720081049,
  10364. 1627235199,
  10365. 648017665,
  10366. 4122762354,
  10367. 1002783846,
  10368. 2117360635,
  10369. 695634755,
  10370. 3336358691,
  10371. 4234721005,
  10372. 4049844452,
  10373. 3704280881,
  10374. 2232435299,
  10375. 574624663,
  10376. 287343814,
  10377. 612205898,
  10378. 1039717051,
  10379. 840019705,
  10380. 2708326185,
  10381. 793451934,
  10382. 821288114,
  10383. 1391201670,
  10384. 3822090177,
  10385. 376187827,
  10386. 3113855344,
  10387. 1224348052,
  10388. 1679968233,
  10389. 2361698556,
  10390. 1058709744,
  10391. 752375421,
  10392. 2431590963,
  10393. 1321699145,
  10394. 3519142200,
  10395. 2734591178,
  10396. 188127444,
  10397. 2177869557,
  10398. 3727205754,
  10399. 2384911031,
  10400. 3215212461,
  10401. 2648976442,
  10402. 2450346104,
  10403. 3432737375,
  10404. 1180849278,
  10405. 331544205,
  10406. 3102249176,
  10407. 4150144569,
  10408. 2952102595,
  10409. 2159976285,
  10410. 2474404304,
  10411. 766078933,
  10412. 313773861,
  10413. 2570832044,
  10414. 2108100632,
  10415. 1668212892,
  10416. 3145456443,
  10417. 2013908262,
  10418. 418672217,
  10419. 3070356634,
  10420. 2594734927,
  10421. 1852171925,
  10422. 3867060991,
  10423. 3473416636,
  10424. 3907448597,
  10425. 2614737639,
  10426. 919489135,
  10427. 164948639,
  10428. 2094410160,
  10429. 2997825956,
  10430. 590424639,
  10431. 2486224549,
  10432. 1723872674,
  10433. 3157750862,
  10434. 3399941250,
  10435. 3501252752,
  10436. 3625268135,
  10437. 2555048196,
  10438. 3673637356,
  10439. 1343127501,
  10440. 4130281361,
  10441. 3599595085,
  10442. 2957853679,
  10443. 1297403050,
  10444. 81781910,
  10445. 3051593425,
  10446. 2283490410,
  10447. 532201772,
  10448. 1367295589,
  10449. 3926170974,
  10450. 895287692,
  10451. 1953757831,
  10452. 1093597963,
  10453. 492483431,
  10454. 3528626907,
  10455. 1446242576,
  10456. 1192455638,
  10457. 1636604631,
  10458. 209336225,
  10459. 344873464,
  10460. 1015671571,
  10461. 669961897,
  10462. 3375740769,
  10463. 3857572124,
  10464. 2973530695,
  10465. 3747192018,
  10466. 1933530610,
  10467. 3464042516,
  10468. 935293895,
  10469. 3454686199,
  10470. 2858115069,
  10471. 1863638845,
  10472. 3683022916,
  10473. 4085369519,
  10474. 3292445032,
  10475. 875313188,
  10476. 1080017571,
  10477. 3279033885,
  10478. 621591778,
  10479. 1233856572,
  10480. 2504130317,
  10481. 24197544,
  10482. 3017672716,
  10483. 3835484340,
  10484. 3247465558,
  10485. 2220981195,
  10486. 3060847922,
  10487. 1551124588,
  10488. 1463996600
  10489. }; // idb
  10490. const int Seraph::StringEncrypt::sm_T6[256] =
  10491. {
  10492. 1347548327,
  10493. 1400783205,
  10494. 3273267108,
  10495. 2520393566,
  10496. 3409685355,
  10497. 4045380933,
  10498. 2880240216,
  10499. 2471224067,
  10500. 1428173050,
  10501. 4138563181,
  10502. 2441661558,
  10503. 636813900,
  10504. 4233094615,
  10505. 3620022987,
  10506. 2149987652,
  10507. 2411029155,
  10508. 1239331162,
  10509. 1730525723,
  10510. 2554718734,
  10511. 3781033664,
  10512. 46346101,
  10513. 310463728,
  10514. 2743944855,
  10515. 3328955385,
  10516. 3875770207,
  10517. 2501218972,
  10518. 3955191162,
  10519. 3667219033,
  10520. 768917123,
  10521. 3545789473,
  10522. 692707433,
  10523. 1150208456,
  10524. 1786102409,
  10525. 2029293177,
  10526. 1805211710,
  10527. 3710368113,
  10528. 3065962831,
  10529. 401639597,
  10530. 1724457132,
  10531. 3028143674,
  10532. 409198410,
  10533. 2196052529,
  10534. 1620529459,
  10535. 1164071807,
  10536. 3769721975,
  10537. 2226875310,
  10538. 486441376,
  10539. 2499348523,
  10540. 1483753576,
  10541. 428819965,
  10542. 2274680428,
  10543. 3075636216,
  10544. 598438867,
  10545. 3799141122,
  10546. 1474502543,
  10547. 711349675,
  10548. 129166120,
  10549. 53458370,
  10550. 2592523643,
  10551. 2782082824,
  10552. 4063242375,
  10553. 2988687269,
  10554. 3120694122,
  10555. 1559041666,
  10556. 730517276,
  10557. 2460449204,
  10558. 4042459122,
  10559. 2706270690,
  10560. 3446004468,
  10561. 3573941694,
  10562. 533804130,
  10563. 2328143614,
  10564. 2637442643,
  10565. 2695033685,
  10566. 839224033,
  10567. 1973745387,
  10568. 957055980,
  10569. 2856345839,
  10570. 106852767,
  10571. 1371368976,
  10572. 4181598602,
  10573. 1033297158,
  10574. 2933734917,
  10575. 1179510461,
  10576. 3046200461,
  10577. 91341917,
  10578. 1862534868,
  10579. 4284502037,
  10580. 605657339,
  10581. 2547432937,
  10582. 3431546947,
  10583. 2003294622,
  10584. 3182487618,
  10585. 2282195339,
  10586. 954669403,
  10587. 3682191598,
  10588. 1201765386,
  10589. 3917234703,
  10590. 3388507166,
  10591. 0,
  10592. 2198438022,
  10593. 1211247597,
  10594. 2887651696,
  10595. 1315723890,
  10596. 4227665663,
  10597. 1443857720,
  10598. 507358933,
  10599. 657861945,
  10600. 1678381017,
  10601. 560487590,
  10602. 3516619604,
  10603. 975451694,
  10604. 2970356327,
  10605. 261314535,
  10606. 3535072918,
  10607. 2652609425,
  10608. 1333838021,
  10609. 2724322336,
  10610. 1767536459,
  10611. 370938394,
  10612. 182621114,
  10613. 3854606378,
  10614. 1128014560,
  10615. 487725847,
  10616. 185469197,
  10617. 2918353863,
  10618. 3106780840,
  10619. 3356761769,
  10620. 2237133081,
  10621. 1286567175,
  10622. 3152976349,
  10623. 4255350624,
  10624. 2683765030,
  10625. 3160175349,
  10626. 3309594171,
  10627. 878443390,
  10628. 1988838185,
  10629. 3704300486,
  10630. 1756818940,
  10631. 1673061617,
  10632. 3403100636,
  10633. 272786309,
  10634. 1075025698,
  10635. 545572369,
  10636. 2105887268,
  10637. 4174560061,
  10638. 296679730,
  10639. 1841768865,
  10640. 1260232239,
  10641. 4091327024,
  10642. 3960309330,
  10643. 3497509347,
  10644. 1814803222,
  10645. 2578018489,
  10646. 4195456072,
  10647. 575138148,
  10648. 3299409036,
  10649. 446754879,
  10650. 3629546796,
  10651. 4011996048,
  10652. 3347532110,
  10653. 3252238545,
  10654. 4270639778,
  10655. 915985419,
  10656. 3483825537,
  10657. 681933534,
  10658. 651868046,
  10659. 2755636671,
  10660. 3828103837,
  10661. 223377554,
  10662. 2607439820,
  10663. 1649704518,
  10664. 3270937875,
  10665. 3901806776,
  10666. 1580087799,
  10667. 4118987695,
  10668. 3198115200,
  10669. 2087309459,
  10670. 2842678573,
  10671. 3016697106,
  10672. 1003007129,
  10673. 2802849917,
  10674. 1860738147,
  10675. 2077965243,
  10676. 164439672,
  10677. 4100872472,
  10678. 32283319,
  10679. 2827177882,
  10680. 1709610350,
  10681. 2125135846,
  10682. 136428751,
  10683. 3874428392,
  10684. 3652904859,
  10685. 3460984630,
  10686. 3572145929,
  10687. 3593056380,
  10688. 2939266226,
  10689. 824852259,
  10690. 818324884,
  10691. 3224740454,
  10692. 930369212,
  10693. 2801566410,
  10694. 2967507152,
  10695. 355706840,
  10696. 1257309336,
  10697. 4148292826,
  10698. 243256656,
  10699. 790073846,
  10700. 2373340630,
  10701. 1296297904,
  10702. 1422699085,
  10703. 3756299780,
  10704. 3818836405,
  10705. 457992840,
  10706. 3099667487,
  10707. 2135319889,
  10708. 77422314,
  10709. 1560382517,
  10710. 1945798516,
  10711. 788204353,
  10712. 1521706781,
  10713. 1385356242,
  10714. 870912086,
  10715. 325965383,
  10716. 2358957921,
  10717. 2050466060,
  10718. 2388260884,
  10719. 2313884476,
  10720. 4006521127,
  10721. 901210569,
  10722. 3990953189,
  10723. 1014646705,
  10724. 1503449823,
  10725. 1062597235,
  10726. 2031621326,
  10727. 3212035895,
  10728. 3931371469,
  10729. 1533017514,
  10730. 350174575,
  10731. 2256028891,
  10732. 2177544179,
  10733. 1052338372,
  10734. 741876788,
  10735. 1606591296,
  10736. 1914052035,
  10737. 213705253,
  10738. 2334669897,
  10739. 1107234197,
  10740. 1899603969,
  10741. 3725069491,
  10742. 2631447780,
  10743. 2422494913,
  10744. 1635502980,
  10745. 1893020342,
  10746. 1950903388,
  10747. 1120974935
  10748. }; // idb
  10749. const int Seraph::StringEncrypt::sm_T5[256] =
  10750. {
  10751. 1374988112,
  10752. 2118214995,
  10753. 437757123,
  10754. 975658646,
  10755. 1001089995,
  10756. 530400753,
  10757. 2902087851,
  10758. 1273168787,
  10759. 540080725,
  10760. 2910219766,
  10761. 2295101073,
  10762. 4110568485,
  10763. 1340463100,
  10764. 3307916247,
  10765. 641025152,
  10766. 3043140495,
  10767. 3736164937,
  10768. 632953703,
  10769. 1172967064,
  10770. 1576976609,
  10771. 3274667266,
  10772. 2169303058,
  10773. 2370213795,
  10774. 1809054150,
  10775. 59727847,
  10776. 361929877,
  10777. 3211623147,
  10778. 2505202138,
  10779. 3569255213,
  10780. 1484005843,
  10781. 1239443753,
  10782. 2395588676,
  10783. 1975683434,
  10784. 4102977912,
  10785. 2572697195,
  10786. 666464733,
  10787. 3202437046,
  10788. 4035489047,
  10789. 3374361702,
  10790. 2110667444,
  10791. 1675577880,
  10792. 3843699074,
  10793. 2538681184,
  10794. 1649639237,
  10795. 2976151520,
  10796. 3144396420,
  10797. 4269907996,
  10798. 4178062228,
  10799. 1883793496,
  10800. 2403728665,
  10801. 2497604743,
  10802. 1383856311,
  10803. 2876494627,
  10804. 1917518562,
  10805. 3810496343,
  10806. 1716890410,
  10807. 3001755655,
  10808. 800440835,
  10809. 2261089178,
  10810. 3543599269,
  10811. 807962610,
  10812. 599762354,
  10813. 33778362,
  10814. 3977675356,
  10815. 2328828971,
  10816. 2809771154,
  10817. 4077384432,
  10818. 1315562145,
  10819. 1708848333,
  10820. 101039829,
  10821. 3509871135,
  10822. 3299278474,
  10823. 875451293,
  10824. 2733856160,
  10825. 92987698,
  10826. 2767645557,
  10827. 193195065,
  10828. 1080094634,
  10829. 1584504582,
  10830. 3178106961,
  10831. 1042385657,
  10832. 2531067453,
  10833. 3711829422,
  10834. 1306967366,
  10835. 2438237621,
  10836. 1908694277,
  10837. 67556463,
  10838. 1615861247,
  10839. 429456164,
  10840. 3602770327,
  10841. 2302690252,
  10842. 1742315127,
  10843. 2968011453,
  10844. 126454664,
  10845. 3877198648,
  10846. 2043211483,
  10847. 2709260871,
  10848. 2084704233,
  10849. 4169408201,
  10850. 0,
  10851. 159417987,
  10852. 841739592,
  10853. 504459436,
  10854. 1817866830,
  10855. 4245618683,
  10856. 260388950,
  10857. 1034867998,
  10858. 908933415,
  10859. 168810852,
  10860. 1750902305,
  10861. 2606453969,
  10862. 607530554,
  10863. 202008497,
  10864. 2472011535,
  10865. 3035535058,
  10866. 463180190,
  10867. 2160117071,
  10868. 1641816226,
  10869. 1517767529,
  10870. 470948374,
  10871. 3801332234,
  10872. 3231722213,
  10873. 1008918595,
  10874. 303765277,
  10875. 235474187,
  10876. 4069246893,
  10877. 766945465,
  10878. 337553864,
  10879. 1475418501,
  10880. 2943682380,
  10881. 4003061179,
  10882. 2743034109,
  10883. 4144047775,
  10884. 1551037884,
  10885. 1147550661,
  10886. 1543208500,
  10887. 2336434550,
  10888. 3408119516,
  10889. 3069049960,
  10890. 3102011747,
  10891. 3610369226,
  10892. 1113818384,
  10893. 328671808,
  10894. 2227573024,
  10895. 2236228733,
  10896. 3535486456,
  10897. 2935566865,
  10898. 3341394285,
  10899. 496906059,
  10900. 3702665459,
  10901. 226906860,
  10902. 2009195472,
  10903. 733156972,
  10904. 2842737049,
  10905. 294930682,
  10906. 1206477858,
  10907. 2835123396,
  10908. 2700099354,
  10909. 1451044056,
  10910. 573804783,
  10911. 2269728455,
  10912. 3644379585,
  10913. 2362090238,
  10914. 2564033334,
  10915. 2801107407,
  10916. 2776292904,
  10917. 3669462566,
  10918. 1068351396,
  10919. 742039012,
  10920. 1350078989,
  10921. 1784663195,
  10922. 1417561698,
  10923. 4136440770,
  10924. 2430122216,
  10925. 775550814,
  10926. 2193862645,
  10927. 2673705150,
  10928. 1775276924,
  10929. 1876241833,
  10930. 3475313331,
  10931. 3366754619,
  10932. 270040487,
  10933. 3902563182,
  10934. 3678124923,
  10935. 3441850377,
  10936. 1851332852,
  10937. 3969562369,
  10938. 2203032232,
  10939. 3868552805,
  10940. 2868897406,
  10941. 566021896,
  10942. 4011190502,
  10943. 3135740889,
  10944. 1248802510,
  10945. 3936291284,
  10946. 699432150,
  10947. 832877231,
  10948. 708780849,
  10949. 3332740144,
  10950. 899835584,
  10951. 1951317047,
  10952. 4236429990,
  10953. 3767586992,
  10954. 866637845,
  10955. 4043610186,
  10956. 1106041591,
  10957. 2144161806,
  10958. 395441711,
  10959. 1984812685,
  10960. 1139781709,
  10961. 3433712980,
  10962. 3835036895,
  10963. 2664543715,
  10964. 1282050075,
  10965. 3240894392,
  10966. 1181045119,
  10967. 2640243204,
  10968. 25965917,
  10969. 4203181171,
  10970. 4211818798,
  10971. 3009879386,
  10972. 2463879762,
  10973. 3910161971,
  10974. 1842759443,
  10975. 2597806476,
  10976. 933301370,
  10977. 1509430414,
  10978. 3943906441,
  10979. 3467192302,
  10980. 3076639029,
  10981. 3776767469,
  10982. 2051518780,
  10983. 2631065433,
  10984. 1441952575,
  10985. 404016761,
  10986. 1942435775,
  10987. 1408749034,
  10988. 1610459739,
  10989. 3745345300,
  10990. 2017778566,
  10991. 3400528769,
  10992. 3110650942,
  10993. 941896748,
  10994. 3265478751,
  10995. 371049330,
  10996. 3168937228,
  10997. 675039627,
  10998. 4279080257,
  10999. 967311729,
  11000. 135050206,
  11001. 3635733660,
  11002. 1683407248,
  11003. 2076935265,
  11004. 3576870512,
  11005. 1215061108,
  11006. 3501741890
  11007. }; // idb
  11008. char Seraph::StringEncrypt::sm_Si[256] =
  11009. {
  11010. 'R',
  11011. '\t',
  11012. 'j',
  11013. '',
  11014. '0',
  11015. '6',
  11016. '\xA5',
  11017. '8',
  11018. '\xBF',
  11019. '@',
  11020. '\xA3',
  11021. '\x9E',
  11022. '\x81',
  11023. '',
  11024. '',
  11025. '\xFB',
  11026. '|',
  11027. '',
  11028. '9',
  11029. '\x82',
  11030. '\x9B',
  11031. '/',
  11032. '\xFF',
  11033. '\x87',
  11034. '4',
  11035. '\x8E',
  11036. 'C',
  11037. 'D',
  11038. '',
  11039. '',
  11040. '',
  11041. '',
  11042. 'T',
  11043. '{',
  11044. '\x94',
  11045. '2',
  11046. '\xA6',
  11047. '',
  11048. '#',
  11049. '=',
  11050. '',
  11051. 'L',
  11052. '\x95',
  11053. '\v',
  11054. 'B',
  11055. '\xFA',
  11056. '',
  11057. 'N',
  11058. '\b',
  11059. '.',
  11060. '\xA1',
  11061. 'f',
  11062. '(',
  11063. '',
  11064. '$',
  11065. '\xB2',
  11066. 'v',
  11067. '[',
  11068. '\xA2',
  11069. 'I',
  11070. 'm',
  11071. '\x8B',
  11072. '',
  11073. '%',
  11074. 'r',
  11075. '\xF8',
  11076. '',
  11077. 'd',
  11078. '\x86',
  11079. 'h',
  11080. '\x98',
  11081. '\x16',
  11082. '',
  11083. '\xA4',
  11084. '\\',
  11085. '',
  11086. ']',
  11087. 'e',
  11088. '\xB6',
  11089. '\x92',
  11090. 'l',
  11091. 'p',
  11092. 'H',
  11093. 'P',
  11094. '\xFD',
  11095. '',
  11096. '\xB9',
  11097. '',
  11098. '^',
  11099. '\x15',
  11100. 'F',
  11101. 'W',
  11102. '\xA7',
  11103. '\x8D',
  11104. '\x9D',
  11105. '\x84',
  11106. '\x90',
  11107. '',
  11108. '\xAB',
  11109. '\0',
  11110. '\x8C',
  11111. '\xBC',
  11112. '',
  11113. '\n',
  11114. '',
  11115. '',
  11116. 'X',
  11117. '\x05',
  11118. '\xB8',
  11119. '\xB3',
  11120. 'E',
  11121. '\x06',
  11122. '',
  11123. ',',
  11124. '\x1E',
  11125. '\x8F',
  11126. '',
  11127. '?',
  11128. '\x0F',
  11129. '\x02',
  11130. '',
  11131. '\xAF',
  11132. '\xBD',
  11133. '\x03',
  11134. '\x01',
  11135. '\x13',
  11136. '\x8A',
  11137. 'k',
  11138. ':',
  11139. '\x91',
  11140. '\x11',
  11141. 'A',
  11142. 'O',
  11143. 'g',
  11144. '',
  11145. '',
  11146. '\x97',
  11147. '',
  11148. '',
  11149. '',
  11150. '',
  11151. '\xB4',
  11152. '',
  11153. 's',
  11154. '\x96',
  11155. '\xAC',
  11156. 't',
  11157. '\"',
  11158. '',
  11159. '\xAD',
  11160. '5',
  11161. '\x85',
  11162. '',
  11163. '\xF9',
  11164. '7',
  11165. '',
  11166. '\x1C',
  11167. 'u',
  11168. '',
  11169. 'n',
  11170. 'G',
  11171. '',
  11172. '\x1A',
  11173. 'q',
  11174. '\x1D',
  11175. ')',
  11176. '',
  11177. '\x89',
  11178. 'o',
  11179. '\xB7',
  11180. 'b',
  11181. '\x0E',
  11182. '\xAA',
  11183. '\x18',
  11184. '\xBE',
  11185. '\x1B',
  11186. '\xFC',
  11187. 'V',
  11188. '>',
  11189. 'K',
  11190. '',
  11191. '',
  11192. 'y',
  11193. ' ',
  11194. '\x9A',
  11195. '',
  11196. '',
  11197. '\xFE',
  11198. 'x',
  11199. '',
  11200. 'Z',
  11201. '',
  11202. '\x1F',
  11203. '',
  11204. '\xA8',
  11205. '3',
  11206. '\x88',
  11207. '\a',
  11208. '',
  11209. '1',
  11210. '\xB1',
  11211. '\x12',
  11212. '\x10',
  11213. 'Y',
  11214. '\'',
  11215. '\x80',
  11216. '',
  11217. '_',
  11218. '`',
  11219. 'Q',
  11220. '\x7F',
  11221. '\xA9',
  11222. '\x19',
  11223. '\xB5',
  11224. 'J',
  11225. '\r',
  11226. '-',
  11227. '',
  11228. 'z',
  11229. '\x9F',
  11230. '\x93',
  11231. '',
  11232. '\x9C',
  11233. '',
  11234. '\xA0',
  11235. '',
  11236. ';',
  11237. 'M',
  11238. '\xAE',
  11239. '*',
  11240. '',
  11241. '\xB0',
  11242. '',
  11243. '',
  11244. '\xBB',
  11245. '<',
  11246. '\x83',
  11247. 'S',
  11248. '\x99',
  11249. 'a',
  11250. '\x17',
  11251. '+',
  11252. '\x04',
  11253. '~',
  11254. '\xBA',
  11255. 'w',
  11256. '',
  11257. '&',
  11258. '',
  11259. 'i',
  11260. '\x14',
  11261. 'c',
  11262. 'U',
  11263. '!',
  11264. '\f',
  11265. '}'
  11266. }; // idb
  11267. char Seraph::StringEncrypt::sm_S[256] =
  11268. {
  11269. 'c',
  11270. '|',
  11271. 'w',
  11272. '{',
  11273. '',
  11274. 'k',
  11275. 'o',
  11276. '',
  11277. '0',
  11278. '\x01',
  11279. 'g',
  11280. '+',
  11281. '\xFE',
  11282. '',
  11283. '\xAB',
  11284. 'v',
  11285. '',
  11286. '\x82',
  11287. '',
  11288. '}',
  11289. '\xFA',
  11290. 'Y',
  11291. 'G',
  11292. '',
  11293. '\xAD',
  11294. '',
  11295. '\xA2',
  11296. '\xAF',
  11297. '\x9C',
  11298. '\xA4',
  11299. 'r',
  11300. '',
  11301. '\xB7',
  11302. '\xFD',
  11303. '\x93',
  11304. '&',
  11305. '6',
  11306. '?',
  11307. '',
  11308. '',
  11309. '4',
  11310. '\xA5',
  11311. '',
  11312. '',
  11313. 'q',
  11314. '',
  11315. '1',
  11316. '\x15',
  11317. '\x04',
  11318. '',
  11319. '#',
  11320. '',
  11321. '\x18',
  11322. '\x96',
  11323. '\x05',
  11324. '\x9A',
  11325. '\a',
  11326. '\x12',
  11327. '\x80',
  11328. '',
  11329. '',
  11330. '\'',
  11331. '\xB2',
  11332. 'u',
  11333. '\t',
  11334. '\x83',
  11335. ',',
  11336. '\x1A',
  11337. '\x1B',
  11338. 'n',
  11339. 'Z',
  11340. '\xA0',
  11341. 'R',
  11342. ';',
  11343. '',
  11344. '\xB3',
  11345. ')',
  11346. '',
  11347. '/',
  11348. '\x84',
  11349. 'S',
  11350. '',
  11351. '\0',
  11352. '',
  11353. ' ',
  11354. '\xFC',
  11355. '\xB1',
  11356. '[',
  11357. 'j',
  11358. '',
  11359. '\xBE',
  11360. '9',
  11361. 'J',
  11362. 'L',
  11363. 'X',
  11364. '',
  11365. '',
  11366. '',
  11367. '\xAA',
  11368. '\xFB',
  11369. 'C',
  11370. 'M',
  11371. '3',
  11372. '\x85',
  11373. 'E',
  11374. '\xF9',
  11375. '\x02',
  11376. '\x7F',
  11377. 'P',
  11378. '<',
  11379. '\x9F',
  11380. '\xA8',
  11381. 'Q',
  11382. '\xA3',
  11383. '@',
  11384. '\x8F',
  11385. '\x92',
  11386. '\x9D',
  11387. '8',
  11388. '',
  11389. '\xBC',
  11390. '\xB6',
  11391. '',
  11392. '!',
  11393. '\x10',
  11394. '\xFF',
  11395. '',
  11396. '',
  11397. '',
  11398. '\f',
  11399. '\x13',
  11400. '',
  11401. '_',
  11402. '\x97',
  11403. 'D',
  11404. '\x17',
  11405. '',
  11406. '\xA7',
  11407. '~',
  11408. '=',
  11409. 'd',
  11410. ']',
  11411. '\x19',
  11412. 's',
  11413. '`',
  11414. '\x81',
  11415. 'O',
  11416. '',
  11417. '\"',
  11418. '*',
  11419. '\x90',
  11420. '\x88',
  11421. 'F',
  11422. '',
  11423. '\xB8',
  11424. '\x14',
  11425. '',
  11426. '^',
  11427. '\v',
  11428. '',
  11429. '',
  11430. '2',
  11431. ':',
  11432. '\n',
  11433. 'I',
  11434. '\x06',
  11435. '$',
  11436. '\\',
  11437. '',
  11438. '',
  11439. '\xAC',
  11440. 'b',
  11441. '\x91',
  11442. '\x95',
  11443. '',
  11444. 'y',
  11445. '',
  11446. '',
  11447. '7',
  11448. 'm',
  11449. '\x8D',
  11450. '',
  11451. 'N',
  11452. '\xA9',
  11453. 'l',
  11454. 'V',
  11455. '',
  11456. '',
  11457. 'e',
  11458. 'z',
  11459. '\xAE',
  11460. '\b',
  11461. '\xBA',
  11462. 'x',
  11463. '%',
  11464. '.',
  11465. '\x1C',
  11466. '\xA6',
  11467. '\xB4',
  11468. '',
  11469. '',
  11470. '',
  11471. 't',
  11472. '\x1F',
  11473. 'K',
  11474. '\xBD',
  11475. '\x8B',
  11476. '\x8A',
  11477. 'p',
  11478. '>',
  11479. '\xB5',
  11480. 'f',
  11481. 'H',
  11482. '\x03',
  11483. '',
  11484. '\x0E',
  11485. 'a',
  11486. '5',
  11487. 'W',
  11488. '\xB9',
  11489. '\x86',
  11490. '',
  11491. '\x1D',
  11492. '\x9E',
  11493. '',
  11494. '\xF8',
  11495. '\x98',
  11496. '\x11',
  11497. 'i',
  11498. '',
  11499. '\x8E',
  11500. '\x94',
  11501. '\x9B',
  11502. '\x1E',
  11503. '\x87',
  11504. '',
  11505. '',
  11506. 'U',
  11507. '(',
  11508. '',
  11509. '\x8C',
  11510. '\xA1',
  11511. '\x89',
  11512. '\r',
  11513. '\xBF',
  11514. '',
  11515. 'B',
  11516. 'h',
  11517. 'A',
  11518. '\x99',
  11519. '-',
  11520. '\x0F',
  11521. '\xB0',
  11522. 'T',
  11523. '\xBB',
  11524. '\x16'
  11525. }; // idb
  11526. int _CTOR_LIST__[] = { 4294967295 }; // weak
  11527. int (*off_810D3AC)() = &`global constructor keyed to'g_pTimeManager; // weak
  11528. int _JCR_LIST__ = 0; // weak
  11529. int (*dword_810D4BC)(void) = NULL; // weak
  11530. _UNKNOWN _dso_handle; // weak
  11531. int *p_0 = &_DTOR_END__; // weak
  11532. CHAR *g_MiBaoKeyTable1[49] =
  11533. {
  11534. (CHAR *)0x80BBB70,
  11535. (CHAR *)0x80BBB73,
  11536. "31",
  11537. "41",
  11538. "51",
  11539. "61",
  11540. "71",
  11541. "12",
  11542. "22",
  11543. (CHAR *)0x80E15F3,
  11544. "42",
  11545. "52",
  11546. "62",
  11547. "72",
  11548. "13",
  11549. "23",
  11550. "33",
  11551. "43",
  11552. "53",
  11553. "63",
  11554. "73",
  11555. "14",
  11556. "24",
  11557. "34",
  11558. "44",
  11559. "54",
  11560. "64",
  11561. "74",
  11562. "15",
  11563. "25",
  11564. "35",
  11565. "45",
  11566. "55",
  11567. "65",
  11568. "75",
  11569. "16",
  11570. "26",
  11571. "36",
  11572. "46",
  11573. "56",
  11574. (CHAR *)0x80C2035,
  11575. "76",
  11576. "17",
  11577. "27",
  11578. "37",
  11579. "47",
  11580. "57",
  11581. "67",
  11582. "77"
  11583. }; // idb
  11584. CHAR *g_MiBaoKeyTable[49] =
  11585. {
  11586. "a1",
  11587. "b1",
  11588. "c1",
  11589. "d1",
  11590. (CHAR *)0x80C2298,
  11591. "f1",
  11592. "g1",
  11593. "a2",
  11594. "b2",
  11595. "c2",
  11596. "d2",
  11597. (CHAR *)0x80C22A8,
  11598. "f2",
  11599. "g2",
  11600. "a3",
  11601. "b3",
  11602. "c3",
  11603. "d3",
  11604. "e3",
  11605. "f3",
  11606. "g3",
  11607. "a4",
  11608. "b4",
  11609. "c4",
  11610. "d4",
  11611. "e4",
  11612. "f4",
  11613. "g4",
  11614. "a5",
  11615. "b5",
  11616. "c5",
  11617. (CHAR *)0x80CD03B,
  11618. "e5",
  11619. "f5",
  11620. "g5",
  11621. "a6",
  11622. "b6",
  11623. "c6",
  11624. "d6",
  11625. "e6",
  11626. "f6",
  11627. "g6",
  11628. "a7",
  11629. "b7",
  11630. "c7",
  11631. "d7",
  11632. "e7",
  11633. "f7",
  11634. "g7"
  11635. }; // idb
  11636. CHAR g_szIspID[48] =
  11637. {
  11638. 'C',
  11639. 'N',
  11640. 'C',
  11641. '\0',
  11642. '\0',
  11643. '\0',
  11644. '\0',
  11645. '\0',
  11646. '\0',
  11647. '\0',
  11648. '\0',
  11649. '\0',
  11650. '\0',
  11651. '\0',
  11652. '\0',
  11653. '\0',
  11654. 'C',
  11655. 'T',
  11656. 'C',
  11657. '\0',
  11658. '\0',
  11659. '\0',
  11660. '\0',
  11661. '\0',
  11662. '\0',
  11663. '\0',
  11664. '\0',
  11665. '\0',
  11666. '\0',
  11667. '\0',
  11668. '\0',
  11669. '\0',
  11670. 'E',
  11671. 'D',
  11672. 'U',
  11673. '\0',
  11674. '\0',
  11675. '\0',
  11676. '\0',
  11677. '\0',
  11678. '\0',
  11679. '\0',
  11680. '\0',
  11681. '\0',
  11682. '\0',
  11683. '\0',
  11684. '\0',
  11685. '\0'
  11686. }; // idb
  11687. CHAR *g_pLogFileName[30] =
  11688. {
  11689. "./Log/login",
  11690. "./Log/debug",
  11691. "./Log/error",
  11692. "./Log/functions",
  11693. "./Log/world",
  11694. &unk_80C30B0,
  11695. "./Log/send",
  11696. &unk_80C30C6,
  11697. "./Log/pet",
  11698. &unk_80C30DC,
  11699. &unk_80C30E8,
  11700. &unk_80C30F4,
  11701. "./Log/chat",
  11702. "./Log/mission",
  11703. "./Log/exchange",
  11704. "./Log/guild",
  11705. "./Log/Audit",
  11706. "./Log/PetProcreate",
  11707. "./Log/Exp",
  11708. "./Log/MIP",
  11709. &unk_80C3169,
  11710. "./Log/LoginCacheLog",
  11711. "./Log/CoupleAudit",
  11712. "./Log/Prize",
  11713. "./Log/check",
  11714. "./Log/yuanbao",
  11715. "./Log/HardWare",
  11716. "./Log/Oops",
  11717. "./Log/Efficiency",
  11718. NULL
  11719. }; // idb
  11720. INT g_Command_LogActive = 1; // idb
  11721. INT g_Command_LogPrint = 1; // idb
  11722. INT GetSerialKey(char *,int,int,int)::s_Step = 100; // idb
  11723. OOPSTYPE_DEFINE g_OopsLogDefine[4] =
  11724. {
  11725. { EOT_NOTERROR, "NotError" },
  11726. { EOT_NOTYPE, "NOTYPE" },
  11727. { EOT_ITEMREPEAT, "ITEMREPEAT" },
  11728. { EOT_DEBUGLOGSIZE, "DEBUGLOGSIZE" }
  11729. }; // idb
  11730. const CHAR *g_szAuditType[200] =
  11731. {
  11732. "ABILITY_COOKING",
  11733. "ABILITY_PHARMACY",
  11734. "ABILITY_INLAY",
  11735. "ABILITY_FOUNDRY",
  11736. "ABILITY_TAILOR",
  11737. "ABILITY_ARTWORK",
  11738. "ABILITY_FOUNDRY_SP",
  11739. "ABILITY_TAILOR_SP",
  11740. "ABILITY_ARTWORK_SP",
  11741. "ABILITY_GATHERMINE",
  11742. "ABILITY_GATHERMEDIC",
  11743. "ABILITY_FISH",
  11744. "ABILITY_PLANT",
  11745. "ABILITY_SHAOLINDRUG",
  11746. "ABILITY_HOLYFIRE",
  11747. "ABILITY_BREWING",
  11748. "ABILITY_THICKICE",
  11749. "ABILITY_INSECTCULTURING",
  11750. "ABILITY_POISON",
  11751. "ABILITY_INCANTATION",
  11752. "ABILITY_ALCHEMY",
  11753. "ABILITY_THAUMATURGY",
  11754. "ABILITY_ENGINEERING",
  11755. "ABILITY_FIGHTGHOST",
  11756. "ABILITY_SEARCHTSTORE",
  11757. "ABILITY_TRADE",
  11758. "ABILITY_HAGGLE",
  11759. "ABILITY_EXCESSPROFIT",
  11760. "ABILITY_PROCESSING",
  11761. "ABILITY_PHARMACOLOGY",
  11762. "ABILITY_REGIMEN",
  11763. "ABILITY_BUDDHOLOGY",
  11764. "ABILITY_FIREMAKING",
  11765. "ABILITY_BEGSKILL",
  11766. "ABILITY_ICEMAKING",
  11767. "ABILITY_VENATIONFORMULA",
  11768. "ABILITY_INSECTENTICING",
  11769. "ABILITY_MENTALTELEPATHY",
  11770. "ABILITY_TAOISM",
  11771. "ABILITY_BODYBUILDING",
  11772. "ABILITY_QUITATION",
  11773. "ABILITY_GPS",
  11774. "ABILITY_HUOXUE",
  11775. "ABILITY_YANGQI",
  11776. "ABILITY_QIANGSHEN",
  11777. "ABILITY_JIANTI",
  11778. "ABILITY_XUESHEN",
  11779. "ABILITY_SUTI",
  11780. "ABILITY_MATERIALPROCESSING",
  11781. "GEMCOMPOUND",
  11782. "STALL",
  11783. &unk_80C39C6,
  11784. "PET_SOLD_IN_STALL",
  11785. "CAO_YUN",
  11786. "JOIN_MENPAI",
  11787. "SHUI_LAO",
  11788. "DA_TU",
  11789. "WA_BAO",
  11790. "MONSTER_KILLED",
  11791. "PET_KILLED",
  11792. (const CHAR *)0x80C393F,
  11793. "TEAM",
  11794. "CHALLENGE",
  11795. "PET_HUAN_TONG",
  11796. "PET_PROCREATE",
  11797. "PET_CREATE",
  11798. "PET_CATCHED",
  11799. "MISSION_CIRCLE",
  11800. "PLAYER_SHOP_BUY",
  11801. "PLAYER_SHOP_SOLD",
  11802. "ITEM_SOLD_IN_PLAYER_SHOP",
  11803. "PET_SOLD_IN_PLAYER_SHOP",
  11804. "PLAYER_SHOP_REMOVED",
  11805. "PLAYER_MARRIAGE",
  11806. "PLAYER_DIVORCE",
  11807. "ITEM_CREATED",
  11808. "PLAYER_PK",
  11809. "SHI_MEN_REN_WU",
  11810. "SHI_MEN_REN_WU_DAY",
  11811. "HUA_SHAN_THREE_WINNERS",
  11812. "EXAMINATION_CANDIDATE",
  11813. "QUEST",
  11814. "PAO_SHANG",
  11815. "PET_IMPROVE_WU_XING",
  11816. "PET_IMPROVE_SKILL_BOOK",
  11817. "SCENE_PLAYER_COUNT",
  11818. "GEM_EMBED",
  11819. "PLAYER_MASTER",
  11820. "PLAYER_MASTER_EXP",
  11821. "PET_ZHENGYOU",
  11822. "ITEM_USE_MENPAIZHAOJILING",
  11823. "PLAYER_LEVEL_UP",
  11824. "HUODONG_XIANCAOZHENGDUO",
  11825. "GUILD_WAGE",
  11826. "DARK_KEY_USED",
  11827. "ITEM_IDENTIFIED",
  11828. "COMMISION_SALE",
  11829. "GUILD_DECLARE_WAR",
  11830. "MINOR_PASSWORD_OPT",
  11831. "YAN_XUAN_YU_EXCHANGE",
  11832. "YUN_BIAO",
  11833. "EQUIP_QIANGHUA",
  11834. "GOODBAD_DEC_PKVALUE",
  11835. "PLAYER_SKILL_MONSTER",
  11836. "GUILD_JIAO_FEI",
  11837. "PLAYER_ENTER_SCENE",
  11838. "GEM_CARVE",
  11839. "PLAYER_SHOP_SALE_SHOP_ADD_ITEM",
  11840. "PLAYER_SHOP_SALE_SHOP_SELL_ITEM",
  11841. "LEARN_LIFE_ABILITY",
  11842. "LEVEL_UP_LIFE_ABILITY",
  11843. "SHENGSHOU_OPEN_BIGBOX",
  11844. "SHENGSHOU_OPEN_SMALLBOX",
  11845. "SHENQI_ITEM",
  11846. "PLAYER_BEHAVIOR",
  11847. "SHENCAI_ITEM",
  11848. "CAOYUN_SALE",
  11849. "JUBAOCONTAINER_USED",
  11850. "SAFEBOX_OPEN",
  11851. "CHANGEHEAD_SUCCEED",
  11852. "EQUIP_STILETTO",
  11853. "EQUIP_PICKOFF_GEM",
  11854. "50W_JOIN",
  11855. "LUCKY_TURN_TABLE",
  11856. "LUCKY_TURN_TABLE_DRAGON",
  11857. "GUILD_LEAGUE",
  11858. "SHUANG_XIANG_PAO",
  11859. "YURENJIE",
  11860. "PetCagePresent",
  11861. "GEIZHAOPAI",
  11862. "GODFIRE_SUCCEED",
  11863. "DRAW_GUILDWELFARE",
  11864. "SWITCH_TO_LEAGUE_PK",
  11865. "LEAGUE_PK_DIE",
  11866. "SHITUZONGDONGYUAN",
  11867. "FOUR_SLOT",
  11868. "FOUR_ENCHASE",
  11869. "JIPIN_ZHUANGBEI",
  11870. "PETSKILLSTUDY_MANUAL",
  11871. "PETSKILLSTUDY_AUTO",
  11872. "PETSKILLSTUDY_GETMANUAL2",
  11873. "PETSKILLSTUDY_GETAUTO5",
  11874. "PMF_CREATE_FUBEN",
  11875. "PMF_CREATE_BOSS",
  11876. "PWLOCK_ITEM_PET",
  11877. "JOIN_JIAOSHIJIE",
  11878. "USE_TEACHER_GIFT",
  11879. "RUNHUNDAN_USED",
  11880. "DIANHUAMIBAO_ZENGPING_LINGQU",
  11881. "ANBAODALIBAO_LINGQU",
  11882. "ZHUAN_DAN_USED",
  11883. "UNLINE_GIVEGIFT_EXP",
  11884. "UNLINE_GIVEGIFT_ITEM",
  11885. "COLLECT_SIGNATURE",
  11886. "EXCHANGE_FRIEND_GIFT",
  11887. "SPY_CITY_INFO",
  11888. "XQJ_FUBEN_CREATE",
  11889. "EXCHANGE_MENPAI_SUIT",
  11890. "NEWPET_CREATECOPY",
  11891. "CREATE_NEW_XSZHUANG",
  11892. "XINSANHUAN_CREATE_HUANGJIN",
  11893. "XINSANHUAN_CREATE_XUANFOUZHU",
  11894. "XINSANHUAN_CREATE_RONGYAN",
  11895. "XUANHAOYU_EXCHANGE",
  11896. "REEXPERIENCE_WEDDING",
  11897. "MIYINKUANGSHI_USED",
  11898. "GEM_MELTING",
  11899. "UPGRADE_RING_GET",
  11900. "UPGRADE_RING_UP",
  11901. "UPGRADE_RING_BLESS",
  11902. "YUANBAO_STALL_APPLY",
  11903. "YUANBAO_STALL_ITEM",
  11904. "CHANGE_GEM",
  11905. "SHIMEN_CAIJI_JOINTPLAYER",
  11906. "SHIMEN_CAIJI_FINISHTHREEPLAYER",
  11907. "SHIMEN_CAIJI_PETLEVELPLAYER",
  11908. "GUILD_COLLECT_JOIN",
  11909. "GUILD_COLLECT_SUBMIT",
  11910. "GUILD_COLLECT_PRIZE",
  11911. "FRACTION_SEGMENT",
  11912. "COMPOSE_SEGMENT",
  11913. "RESET_PMFCOUNT_SMALL",
  11914. "RELATION_POINT_NPC",
  11915. "ADD_FINDFRIENDAD_INFO",
  11916. "DEL_FINDFRIENDAD_INFO",
  11917. "PETSKILLLEVELUP",
  11918. "PETMEDICINEHCCOMPOUND",
  11919. "COMPOSE_FIGURE",
  11920. "CHANGENIANSHOUDRIVER",
  11921. "QINRENJIE_SHIZHUANG",
  11922. "FINDFRIENDAD_CLICK_ZHENG",
  11923. "CHANGE_FATIGUE_STATE",
  11924. "YUANBAO_STALL_PET",
  11925. "REEXPERIENCE_WEDDING",
  11926. "YURENJIE_EXP",
  11927. "QIANDAO",
  11928. "GETSCHOOLUNIFORM",
  11929. "USESCHOOLBAGS",
  11930. "TYPE_UNLINE_POOLEXP",
  11931. &unk_80C4346
  11932. }; // idb
  11933. CHAR *g_EfficiencyLogFormat = "EFL:%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d"; // idb
  11934. CHAR *g_ExpLogFormat = "EOL:%X,%d,%d,%d,%d,%.2f,%.2f,%s"; // idb
  11935. CHAR *g_MissionLogFormat = "MIL:%X,%d,%d,%.2f,%.2f,%d,%d,%d,%u,%u,%u,%u,%u,%u,%u,%u,%d,%d,%d,%d"; // idb
  11936. CHAR *g_AbilityLogFormat = "AOL:%X,%d,%d,%.2f,%.2f,%u,%d,%d"; // idb
  11937. CHAR *g_XinFaLogFormat = "XOL:%X,%d,%d,%.2f,%.2f,%u,%d,%d"; // idb
  11938. CHAR *g_SkillLogFormat = "SOL:%X,%d,%d,%.2f,%.2f,%u,%d,%d"; // idb
  11939. CHAR *g_PetLogFormat_MIP = "POL,%X,%X,%d,%d,%.2f,%.2f,%u,%u,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%f,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d"; // idb
  11940. CHAR *g_PetLogFormat = "POL:CharGUID:%X, TargetGUID:%X, OPType:%d, SceneID:%d, XPos:%.2f, ZPos:%.2f, HighSection:%u, LowSection:%u, DataID:%d, Str:%d, Con:%d, Dex:%d, Spr:%d, Int:%d, StrPer:%d, ConPer:%d, DexPer:%d, SprPer:%d, IntPer:%d, RemainPoint:%d, GrowRate:%f, Gengu:%d, Skill0~Skill12:%d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, Savvy:%d, Level:%d"; // idb
  11941. CHAR GSET_KEY[192] =
  11942. {
  11943. 'U',
  11944. 'N',
  11945. 'U',
  11946. 'S',
  11947. 'E',
  11948. '_',
  11949. 'S',
  11950. 'P',
  11951. 'L',
  11952. 'I',
  11953. 'T',
  11954. '\0',
  11955. '\0',
  11956. '\0',
  11957. '\0',
  11958. '\0',
  11959. '\0',
  11960. '\0',
  11961. '\0',
  11962. '\0',
  11963. '\0',
  11964. '\0',
  11965. '\0',
  11966. '\0',
  11967. '\0',
  11968. '\0',
  11969. '\0',
  11970. '\0',
  11971. '\0',
  11972. '\0',
  11973. '\0',
  11974. '\0',
  11975. 'P',
  11976. 'S',
  11977. 'H',
  11978. 'O',
  11979. 'P',
  11980. '_',
  11981. 'N',
  11982. 'E',
  11983. 'W',
  11984. '\0',
  11985. '\0',
  11986. '\0',
  11987. '\0',
  11988. '\0',
  11989. '\0',
  11990. '\0',
  11991. '\0',
  11992. '\0',
  11993. '\0',
  11994. '\0',
  11995. '\0',
  11996. '\0',
  11997. '\0',
  11998. '\0',
  11999. '\0',
  12000. '\0',
  12001. '\0',
  12002. '\0',
  12003. '\0',
  12004. '\0',
  12005. '\0',
  12006. '\0',
  12007. 'G',
  12008. 'U',
  12009. 'I',
  12010. 'L',
  12011. 'D',
  12012. '_',
  12013. 'N',
  12014. 'E',
  12015. 'W',
  12016. '\0',
  12017. '\0',
  12018. '\0',
  12019. '\0',
  12020. '\0',
  12021. '\0',
  12022. '\0',
  12023. '\0',
  12024. '\0',
  12025. '\0',
  12026. '\0',
  12027. '\0',
  12028. '\0',
  12029. '\0',
  12030. '\0',
  12031. '\0',
  12032. '\0',
  12033. '\0',
  12034. '\0',
  12035. '\0',
  12036. '\0',
  12037. '\0',
  12038. '\0',
  12039. 'C',
  12040. 'I',
  12041. 'T',
  12042. 'Y',
  12043. '_',
  12044. 'N',
  12045. 'E',
  12046. 'W',
  12047. '\0',
  12048. '\0',
  12049. '\0',
  12050. '\0',
  12051. '\0',
  12052. '\0',
  12053. '\0',
  12054. '\0',
  12055. '\0',
  12056. '\0',
  12057. '\0',
  12058. '\0',
  12059. '\0',
  12060. '\0',
  12061. '\0',
  12062. '\0',
  12063. '\0',
  12064. '\0',
  12065. '\0',
  12066. '\0',
  12067. '\0',
  12068. '\0',
  12069. '\0',
  12070. '\0',
  12071. 'W',
  12072. 'O',
  12073. 'R',
  12074. 'L',
  12075. 'D',
  12076. '_',
  12077. 'I',
  12078. 'D',
  12079. '\0',
  12080. '\0',
  12081. '\0',
  12082. '\0',
  12083. '\0',
  12084. '\0',
  12085. '\0',
  12086. '\0',
  12087. '\0',
  12088. '\0',
  12089. '\0',
  12090. '\0',
  12091. '\0',
  12092. '\0',
  12093. '\0',
  12094. '\0',
  12095. '\0',
  12096. '\0',
  12097. '\0',
  12098. '\0',
  12099. '\0',
  12100. '\0',
  12101. '\0',
  12102. '\0',
  12103. 'Z',
  12104. 'O',
  12105. 'N',
  12106. 'E',
  12107. '_',
  12108. 'I',
  12109. 'D',
  12110. '\0',
  12111. '\0',
  12112. '\0',
  12113. '\0',
  12114. '\0',
  12115. '\0',
  12116. '\0',
  12117. '\0',
  12118. '\0',
  12119. '\0',
  12120. '\0',
  12121. '\0',
  12122. '\0',
  12123. '\0',
  12124. '\0',
  12125. '\0',
  12126. '\0',
  12127. '\0',
  12128. '\0',
  12129. '\0',
  12130. '\0',
  12131. '\0',
  12132. '\0',
  12133. '\0',
  12134. '\0'
  12135. }; // idb
  12136. CHAR *SaveCharExtra = "call save_charextra(%d,%d,%d,%d,%d,%u,%u,%d,%d,%d,%d,%d)"; // idb
  12137. CHAR *SaveCrcInfo = "insert into %s (charguid,logouttime,crc32,fulldata,isdelete,server) values(%d,%u,%d,'%s',%d,%d)"; // idb
  12138. CHAR *SaveTGeneralSet = "call save_general_set('%s',%d)"; // idb
  12139. CHAR *LoadTGeneralSet = "select nVal from %s where sKey='%s'"; // idb
  12140. CHAR *NewCharPet = "insert into %s(charguid ,hpetguid,lpetguid,dataxid,petname,petnick,level,needlevel,atttype,aitype,camp,hp,mp,life,pettype,genera,enjoy,strper,conper,dexper,sprper,iprper,gengu,growrate,repoint,exp,str,con,dex,spr,ipr,skill,pwflag,pclvl,dbversion,hspetguid,lspetguid,savvy,title,curtitle,us_unlock_time,us_reserve,dataversion) values(%d,%d,%d,%d,'%s','%s',%d,%d,%d,%d,'%s',%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,'%s',%d,%d,%d,%d,%d,%d,'%s',%d,%d,%d,%d)"; // idb
  12141. CHAR *NewCharImpact = "insert into %s(charguid,imdata,dbversion) values(%d,'%s',%d)"; // idb
  12142. CHAR *NewCharRelation = "insert into %s(charguid,fguid,fname,fpoint,reflag,groupid,extdata,dbversion) values(%d,%d,'%s',%d,%d,%d,'%s',%d)"; // idb
  12143. CHAR *UpdateCharVisualGem = "update %s set visualgem='%s'where charguid=%d and isvalid>0 and dbversion=%d"; // idb
  12144. CHAR *UpdateCharFatigueInfo = "update %s set fatigue='%s'where charguid=%d and isvalid>0 and dbversion=%d"; // idb
  12145. CHAR *UpdateCharPvPInfo = "update %s set pvpinfo='%s'where charguid=%d and isvalid>0 and dbversion=%d"; // idb
  12146. CHAR *UpdateCharCoolDownInfo = "update %s set cooldown='%s'where charguid=%d and isvalid>0 and dbversion=%d"; // idb
  12147. CHAR *UpdateCharTitleInfo = "update %s set titleinfo='%s'where charguid=%d and isvalid>0 and dbversion=%d"; // idb
  12148. CHAR *UpdateCharPrivateInfo = "update %s set pinfo='%s' where charguid=%d and isvalid>0 and dbversion=%d"; // idb
  12149. CHAR *UpdateCharTaskFlag = "update %s set mflag='%s' where charguid = %d and isvalid>0 and dbversion=%d"; // idb
  12150. CHAR *UpdateCharTaskData = "update %s set mdata='%s' where charguid = %d and isvalid>0 and dbversion=%d"; // idb
  12151. CHAR *NewCharTask = "insert into %s(charguid,missionid,scriptid,flag,p1,p2,p3,p4,p5,p6,p7,p8,dbversion) values(%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d)"; // idb
  12152. CHAR *NewCharAbility = "insert into %s(charguid,abid,ablvl,abexp,dbversion) values(%d,%d,%d,%u,%d)"; // idb
  12153. CHAR *NewCharXinFa = "insert into %s(charguid,xinfaid,xinfalvl,dbversion) values(%d,%d,%d,%d)"; // idb
  12154. CHAR *NewCharSkill = "insert into %s(charguid,skid,dbversion) \tvalues(%d,%d,%d) \n"; // idb
  12155. CHAR *NewCharItem = "call save_iteminfo(%d,%d,%d,%d,%u,%d,%u,%d,'%s',%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,'%s','%s')"; // idb
  12156. CHAR *DeleteBaseChar = "call delete_char_new('%s','%s',%d,%d,%u)"; // idb
  12157. CHAR *FetchNewGuid = "call fetch_guid()"; // idb
  12158. CHAR *CheckCharName = "call is_charname_ok('%s')"; // idb
  12159. CHAR *CreateChar = "call create_newchar('%s','%s',%d,%d,%d,%d,%d,%d,%d,%d)"; // idb
  12160. CHAR *CreateNewChar = "insert into %s(accname,charguid,charname,title,pw,sex,level,enegry,outlook,scene,xpos,zpos,menpai,hp,mp,strikepoint,str,con,dex,spr,ipr,points,logouttime,logintime,createtime,dbversion,haircolor,hairmodel,facecolor,facemodel,vmoney,settings,isvalid,exp,pres,shopinfo,carrypet,guldid,teamid,headid,erecover,vigor,maxvigor,vrecover,energymax,pwdeltime,pinfo,bkscene,bkxpos,bkzpos,titleinfo,dietime,bankmoney,bankend,cooldown,defeq) values('%s',%d,'%s','%s','%s',%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,'%s',%d,%d,'%s','%s','%s',%d,%d,%d,%d,%d,%d,%d,%d,%d,'%s',%d,%d,%d,'%s',%d,%d,%d,'%s',%d)"; // idb
  12161. CHAR *UpdateCharName = "update %s set charname='%s' where charguid=%d"; // idb
  12162. CHAR *MigCheckCharName = "select charguid from %s where charname='%s' limit 1"; // idb
  12163. CHAR *MigNewChar = "insert into %s(accname,charguid,charname,title,pw,sex,level,enegry,outlook,scene,xpos,zpos,menpai,hp,mp,strikepoint,str,con,dex,spr,ipr,points,logouttime,logintime,createtime,dbversion,haircolor,hairmodel,facecolor,facemodel,vmoney,settings,isvalid,exp,pres,shopinfo,carrypet,guldid,teamid,headid,erecover,vigor,maxvigor,vrecover,energymax,pwdeltime,pinfo,bkscene,bkxpos,bkzpos,titleinfo,dietime,bankmoney,bankend,cooldown,defeq) values('%s',%d,'%s','%s','%s',%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,'%s',%d,%d,'%s','%s','%s',%d,%d,%d,%d,%d,%d,%d,%d,%d,'%s',%d,%d,%d,'%s',%d,%d,%d,'%s',%d)"; // idb
  12164. CHAR *UpdateCharPresList = "update %s set pres = '%s' where charguid = %d and isvalid>0 and dbversion = %d"; // idb
  12165. CHAR *UpdateCharRelationData = "update %s set relflag = '%s' where charguid = %d and isvalid>0 and dbversion=%d"; // idb
  12166. CHAR *LoadCharRelationData = "select charguid,relflag from %s where charguid = %d and isvalid =1 and dbversion=%d"; // idb
  12167. CHAR *LoadCharTaskDataAndFlag = "select charguid,mflag,mdata from %s where charguid = %d and dbversion=%d"; // idb
  12168. CHAR *LoadCharPresList = "select charguid,pres from %s where charguid = %d and dbversion=%d"; // idb
  12169. CHAR *DeleteCharItemSingle = "update %s set isvalid=0,guid=0,world=0,server=0,dbversion=%d where charguid=%d and pos=%d and dbversion<=%d"; // idb
  12170. CHAR *LoadDupItemList = "select charguid,pos,itemtype,dbversion from %s where guid=%d and world=%d and server=%d and isvalid>0"; // idb
  12171. CHAR *DeleteCharRequest = "update %s set isvalid = 0,deltime=0,charname = CONCAT(charname,'@DELETE_',%d) where charguid = %d"; // idb
  12172. CHAR *UpdateCharFullData = "update %s set title='%s',sex=%d,level=%d,enegry=%d,exp=%d,vmoney=%d,pw='%s',haircolor=%d,facecolor=%d,hairmodel=%d,facemodel=%d,scene=%d,xpos=%d,zpos=%d,logintime=%d,logouttime=%d,dbversion=%d,menpai=%d,hp=%d,mp=%d,strikepoint=%d,str=%d,spr=%d,con=%d,ipr=%d,dex=%d,points=%d,settings='%s', shopinfo = '%s',carrypet = '%s' ,guldid= %d,teamid =%d,headid=%d,erecover=%d,vigor=%d,maxvigor=%d,vrecover=%d,energymax=%d, pwdeltime=%d,dietime=%d,bankmoney=%d,bankend=%d,bkscene=%d,bkxpos=%d,bkzpos=%d,rage=%d,defeq=%d,guildpoint=%d,menpaipoint =%d,gevil=%d,pkvalue=%d,otime=%d,deltime=%d,expinfo='%s',crc32=%d,loginip=%d,pkvaluetime=%d,yuanbao=%u,isolditem=0, uipoint=%d,zengdian=%d where charguid = %d and isvalid >0 and dbversion<=%d"; // idb
  12173. CHAR *LoadCharExtradbVersion = "select dbversion from %s where charguid = %d"; // idb
  12174. CHAR *LoadChardbVersion = "select dbversion,isvalid from %s where charguid = %d"; // idb
  12175. CHAR *LoadCharList = "select charguid,sex,charname,level,haircolor,facecolor,hairmodel,facemodel,scene,menpai, headid,logintime,defeq,deltime,dbversion,isolditem from %s where accname ='%s' and isvalid =1"; // idb
  12176. char Cyclone::g_szRanKey[62] = "QWASDRTFYUIOGHJKLmncXz23456789zcbnmasdfjMNBC0qwzfgbhuifdfgJKL"; // idb
  12177. int Cyclone::g_encryptCrc32Table[256] =
  12178. {
  12179. 0,
  12180. 1996959894,
  12181. 3993919788,
  12182. 2567524794,
  12183. 124634137,
  12184. 1886057615,
  12185. 3915621685,
  12186. 2657392035,
  12187. 249268274,
  12188. 2044508324,
  12189. 3772115230,
  12190. 2547177864,
  12191. 162941995,
  12192. 2125561021,
  12193. 3887607047,
  12194. 2428444049,
  12195. 498536548,
  12196. 1789927666,
  12197. 4089016648,
  12198. 2227061214,
  12199. 450548861,
  12200. 1843258603,
  12201. 4107580753,
  12202. 2211677639,
  12203. 325883990,
  12204. 1684777152,
  12205. 4251122042,
  12206. 2321926636,
  12207. 335633487,
  12208. 1661365465,
  12209. 4195302755,
  12210. 2366115317,
  12211. 997073096,
  12212. 1281953886,
  12213. 3579855332,
  12214. 2724688242,
  12215. 1006888145,
  12216. 1258607687,
  12217. 3524101629,
  12218. 2768942443,
  12219. 901097722,
  12220. 1119000684,
  12221. 3686517206,
  12222. 2898065728,
  12223. 853044451,
  12224. 1172266101,
  12225. 3705015759,
  12226. 2882616665,
  12227. 651767980,
  12228. 1373503546,
  12229. 3369554304,
  12230. 3218104598,
  12231. 565507253,
  12232. 1454621731,
  12233. 3485111705,
  12234. 3099436303,
  12235. 671266974,
  12236. 1594198024,
  12237. 3322730930,
  12238. 2970347812,
  12239. 795835527,
  12240. 1483230225,
  12241. 3244367275,
  12242. 3060149565,
  12243. 1994146192,
  12244. 31158534,
  12245. 2563907772,
  12246. 4023717930,
  12247. 1907459465,
  12248. 112637215,
  12249. 2680153253,
  12250. 3904427059,
  12251. 2013776290,
  12252. 251722036,
  12253. 2517215374,
  12254. 3775830040,
  12255. 2137656763,
  12256. 141376813,
  12257. 2439277719,
  12258. 3865271297,
  12259. 1802195444,
  12260. 476864866,
  12261. 2238001368,
  12262. 4066508878,
  12263. 1812370925,
  12264. 453092731,
  12265. 2181625025,
  12266. 4111451223,
  12267. 1706088902,
  12268. 314042704,
  12269. 2344532202,
  12270. 4240017532,
  12271. 1658658271,
  12272. 366619977,
  12273. 2362670323,
  12274. 4224994405,
  12275. 1303535960,
  12276. 984961486,
  12277. 2747007092,
  12278. 3569037538,
  12279. 1256170817,
  12280. 1037604311,
  12281. 2765210733,
  12282. 3554079995,
  12283. 1131014506,
  12284. 879679996,
  12285. 2909243462,
  12286. 3663771856,
  12287. 1141124467,
  12288. 855842277,
  12289. 2852801631,
  12290. 3708648649,
  12291. 1342533948,
  12292. 654459306,
  12293. 3188396048,
  12294. 3373015174,
  12295. 1466479909,
  12296. 544179635,
  12297. 3110523913,
  12298. 3462522015,
  12299. 1591671054,
  12300. 702138776,
  12301. 2966460450,
  12302. 3352799412,
  12303. 1504918807,
  12304. 783551873,
  12305. 3082640443,
  12306. 3233442989,
  12307. 3988292384,
  12308. 2596254646,
  12309. 62317068,
  12310. 1957810842,
  12311. 3939845945,
  12312. 2647816111,
  12313. 81470997,
  12314. 1943803523,
  12315. 3814918930,
  12316. 2489596804,
  12317. 225274430,
  12318. 2053790376,
  12319. 3826175755,
  12320. 2466906013,
  12321. 167816743,
  12322. 2097651377,
  12323. 4027552580,
  12324. 2265490386,
  12325. 503444072,
  12326. 1762050814,
  12327. 4150417245,
  12328. 2154129355,
  12329. 426522225,
  12330. 1852507879,
  12331. 4275313526,
  12332. 2312317920,
  12333. 282753626,
  12334. 1742555852,
  12335. 4189708143,
  12336. 2394877945,
  12337. 397917763,
  12338. 1622183637,
  12339. 3604390888,
  12340. 2714866558,
  12341. 953729732,
  12342. 1340076626,
  12343. 3518719985,
  12344. 2797360999,
  12345. 1068828381,
  12346. 1219638859,
  12347. 3624741850,
  12348. 2936675148,
  12349. 906185462,
  12350. 1090812512,
  12351. 3747672003,
  12352. 2825379669,
  12353. 829329135,
  12354. 1181335161,
  12355. 3412177804,
  12356. 3160834842,
  12357. 628085408,
  12358. 1382605366,
  12359. 3423369109,
  12360. 3138078467,
  12361. 570562233,
  12362. 1426400815,
  12363. 3317316542,
  12364. 2998733608,
  12365. 733239954,
  12366. 1555261956,
  12367. 3268935591,
  12368. 3050360625,
  12369. 752459403,
  12370. 1541320221,
  12371. 2607071920,
  12372. 3965973030,
  12373. 1969922972,
  12374. 40735498,
  12375. 2617837225,
  12376. 3943577151,
  12377. 1913087877,
  12378. 83908371,
  12379. 2512341634,
  12380. 3803740692,
  12381. 2075208622,
  12382. 213261112,
  12383. 2463272603,
  12384. 3855990285,
  12385. 2094854071,
  12386. 198958881,
  12387. 2262029012,
  12388. 4057260610,
  12389. 1759359992,
  12390. 534414190,
  12391. 2176718541,
  12392. 4139329115,
  12393. 1873836001,
  12394. 414664567,
  12395. 2282248934,
  12396. 4279200368,
  12397. 1711684554,
  12398. 285281116,
  12399. 2405801727,
  12400. 4167216745,
  12401. 1634467795,
  12402. 376229701,
  12403. 2685067896,
  12404. 3608007406,
  12405. 1308918612,
  12406. 956543938,
  12407. 2808555105,
  12408. 3495958263,
  12409. 1231636301,
  12410. 1047427035,
  12411. 2932959818,
  12412. 3654703836,
  12413. 1088359270,
  12414. 936918000,
  12415. 2847714899,
  12416. 3736837829,
  12417. 1202900863,
  12418. 817233897,
  12419. 3183342108,
  12420. 3401237130,
  12421. 1404277552,
  12422. 615818150,
  12423. 3134207493,
  12424. 3453421203,
  12425. 1423857449,
  12426. 601450431,
  12427. 3009837614,
  12428. 3294710456,
  12429. 1567103746,
  12430. 711928724,
  12431. 3020668471,
  12432. 3272380065,
  12433. 1510334235,
  12434. 755167117
  12435. }; // idb
  12436. char CAPTCHA::g_staticMask[4640] =
  12437. {
  12438. '\xFF',
  12439. '\xFF',
  12440. '\xFF',
  12441. '\xFF',
  12442. '\xFF',
  12443. '\xFF',
  12444. '\xFF',
  12445. '\xFF',
  12446. '\xFF',
  12447. '\xFF',
  12448. '\xFF',
  12449. '\xFF',
  12450. '\xFF',
  12451. '\xFF',
  12452. '\xFF',
  12453. '\xFF',
  12454. '\xFF',
  12455. '\xFF',
  12456. '\xFF',
  12457. '\xFF',
  12458. '\xFF',
  12459. '\xFF',
  12460. '\xFF',
  12461. '\xFF',
  12462. '\xFF',
  12463. '\xFF',
  12464. '\xFF',
  12465. '\xFF',
  12466. '\xFF',
  12467. '\xFF',
  12468. '\xFF',
  12469. '\xFF',
  12470. '\xFF',
  12471. '\xFF',
  12472. '\xFF',
  12473. '\xFF',
  12474. '\xFF',
  12475. '\xFF',
  12476. '\xFF',
  12477. '\xFF',
  12478. '\xFF',
  12479. '\xFF',
  12480. '\xFF',
  12481. '\xFF',
  12482. '\xFF',
  12483. '\xFF',
  12484. '\xFF',
  12485. '\xFF',
  12486. '\xFF',
  12487. '\xFF',
  12488. '\xFF',
  12489. '\xFF',
  12490. '\xFF',
  12491. '\xFF',
  12492. '\xFF',
  12493. '\xFF',
  12494. '\xFF',
  12495. '\xFF',
  12496. '\xFF',
  12497. '\xFF',
  12498. '\xFF',
  12499. '\xFF',
  12500. '\xFF',
  12501. '\xFF',
  12502. '\xFF',
  12503. '\xFF',
  12504. '\xFF',
  12505. '\xFF',
  12506. '\xFF',
  12507. '\xFF',
  12508. '\xFF',
  12509. '\xFF',
  12510. '\xFF',
  12511. '\xFF',
  12512. '\xFF',
  12513. '\xFF',
  12514. '\xFF',
  12515. '\xFF',
  12516. '\xFF',
  12517. '\xFF',
  12518. '\xFF',
  12519. '\xFF',
  12520. '\xFF',
  12521. '\xFF',
  12522. '\xFF',
  12523. '\xFF',
  12524. '\xFF',
  12525. '\xFF',
  12526. '\xFF',
  12527. '\xFF',
  12528. '\xFF',
  12529. '\xFF',
  12530. '\xFF',
  12531. '\xFF',
  12532. '\xFF',
  12533. '\xFF',
  12534. '\xFF',
  12535. '\xFF',
  12536. '\xFF',
  12537. '\xFF',
  12538. '\xFF',
  12539. '\xFF',
  12540. '\xFF',
  12541. '\xFF',
  12542. '\xFF',
  12543. '\xFF',
  12544. '\xFF',
  12545. '\xFE',
  12546. '\a',
  12547. '\xFF',
  12548. '\xFF',
  12549. '\xFF',
  12550. '\xFF',
  12551. '\xFF',
  12552. '\xFF',
  12553. '\xFF',
  12554. '\xFF',
  12555. '\xFF',
  12556. '\xFF',
  12557. '\xFF',
  12558. '\xFF',
  12559. '\xFF',
  12560. '\xFF',
  12561. '\xF8',
  12562. '\x01',
  12563. '\xFF',
  12564. '\xFF',
  12565. '\xFF',
  12566. '\xFF',
  12567. '\xFF',
  12568. '\xFF',
  12569. '\xFF',
  12570. '\xFF',
  12571. '\xFF',
  12572. '\xFF',
  12573. '\xFF',
  12574. '\xFF',
  12575. '\xFF',
  12576. '\xFF',
  12577. '',
  12578. '\0',
  12579. '\xFF',
  12580. '\xFF',
  12581. '\xFF',
  12582. '\xFF',
  12583. '\xFF',
  12584. '\xFF',
  12585. '\xFF',
  12586. '',
  12587. '\x7F',
  12588. '\xFF',
  12589. '\xFF',
  12590. '\xFF',
  12591. '\xFF',
  12592. '\xFF',
  12593. '',
  12594. '\0',
  12595. '\x7F',
  12596. '\xFF',
  12597. '\xFF',
  12598. '\xFF',
  12599. '\xFF',
  12600. '\xFF',
  12601. '\xFF',
  12602. '\x80',
  12603. '\x1F',
  12604. '\xFF',
  12605. '\xFF',
  12606. '\xFF',
  12607. '\xFF',
  12608. '\xFF',
  12609. '',
  12610. '\0',
  12611. '?',
  12612. '\xFF',
  12613. '\xFF',
  12614. '\xFF',
  12615. '\xFF',
  12616. '\xFF',
  12617. '\xFF',
  12618. '\0',
  12619. '\x0F',
  12620. '\xFF',
  12621. '\xFF',
  12622. '\xFF',
  12623. '\xFF',
  12624. '\xFF',
  12625. '',
  12626. '\0',
  12627. '?',
  12628. '\xFF',
  12629. '\xFF',
  12630. '\xFF',
  12631. '\xFF',
  12632. '\xFF',
  12633. '\xFE',
  12634. '\0',
  12635. '\a',
  12636. '\xFF',
  12637. '\xFF',
  12638. '\xFF',
  12639. '\xFF',
  12640. '\xFF',
  12641. '\x80',
  12642. '\0',
  12643. '\x1F',
  12644. '\xFF',
  12645. '\xFF',
  12646. '\xFF',
  12647. '\xFF',
  12648. '\xFF',
  12649. '\xFC',
  12650. '\0',
  12651. '\x03',
  12652. '\xFF',
  12653. '\xFF',
  12654. '\xFF',
  12655. '\xFF',
  12656. '\xFF',
  12657. '\x80',
  12658. '\0',
  12659. '\x1F',
  12660. '\xFF',
  12661. '\xFF',
  12662. '\xFF',
  12663. '\xFF',
  12664. '\xFF',
  12665. '\xFC',
  12666. '\0',
  12667. '\x03',
  12668. '\xFF',
  12669. '\xFF',
  12670. '\xFF',
  12671. '\xFF',
  12672. '\xFF',
  12673. '\x80',
  12674. '\0',
  12675. '\x1F',
  12676. '\xFF',
  12677. '\xFF',
  12678. '\xFF',
  12679. '\xFF',
  12680. '\xFF',
  12681. '\xF8',
  12682. '\0',
  12683. '\x01',
  12684. '\xFF',
  12685. '\xFF',
  12686. '\xFF',
  12687. '\xFF',
  12688. '\xFF',
  12689. '\x80',
  12690. '\0',
  12691. '\x1F',
  12692. '\xFF',
  12693. '\xFF',
  12694. '\xFF',
  12695. '\xFF',
  12696. '\xFF',
  12697. '\xF8',
  12698. '\0',
  12699. '\x01',
  12700. '\xFF',
  12701. '\xFF',
  12702. '\xFF',
  12703. '\xFF',
  12704. '\xFF',
  12705. '\x80',
  12706. '\0',
  12707. '\x1F',
  12708. '\xFF',
  12709. '\xFF',
  12710. '\xFF',
  12711. '\xFF',
  12712. '\xFF',
  12713. '\xF8',
  12714. '\0',
  12715. '\x01',
  12716. '\xFF',
  12717. '\xFF',
  12718. '\xFF',
  12719. '\xFF',
  12720. '\xFF',
  12721. '\x80',
  12722. '\0',
  12723. '\x1F',
  12724. '\xFF',
  12725. '\xFF',
  12726. '\xFF',
  12727. '\xFF',
  12728. '\xFF',
  12729. '\xF8',
  12730. '\0',
  12731. '\x01',
  12732. '\xFF',
  12733. '\xFF',
  12734. '\xFF',
  12735. '\xFF',
  12736. '\xFF',
  12737. '',
  12738. '\0',
  12739. '?',
  12740. '\xFF',
  12741. '\xFF',
  12742. '\xFF',
  12743. '\xFF',
  12744. '\xFF',
  12745. '\xF8',
  12746. '\0',
  12747. '\x01',
  12748. '\xFF',
  12749. '\xFF',
  12750. '\xFF',
  12751. '\xFF',
  12752. '\xFF',
  12753. '',
  12754. '\0',
  12755. '?',
  12756. '\xFF',
  12757. '\xFF',
  12758. '\xFF',
  12759. '\xFF',
  12760. '\xFF',
  12761. '\xF8',
  12762. '\0',
  12763. '\x01',
  12764. '\xFF',
  12765. '\xFF',
  12766. '\xFF',
  12767. '\xFF',
  12768. '\xFF',
  12769. '',
  12770. '\0',
  12771. '\x7F',
  12772. '\xFF',
  12773. '\xFF',
  12774. '\xFF',
  12775. '\xFF',
  12776. '\xFF',
  12777. '\xFC',
  12778. '\0',
  12779. '\x03',
  12780. '\xFF',
  12781. '\xFF',
  12782. '\xFF',
  12783. '\xFF',
  12784. '\xFF',
  12785. '',
  12786. '\0',
  12787. '\xFF',
  12788. '\xFF',
  12789. '\xFF',
  12790. '\xFF',
  12791. '\xFF',
  12792. '\xFF',
  12793. '\xFC',
  12794. '\0',
  12795. '\x03',
  12796. '\xFF',
  12797. '\xFF',
  12798. '\xFF',
  12799. '\xFF',
  12800. '\xFF',
  12801. '\xF8',
  12802. '\x01',
  12803. '\xFF',
  12804. '\xFF',
  12805. '\xFF',
  12806. '\xFF',
  12807. '\xFF',
  12808. '\xFF',
  12809. '\xFE',
  12810. '\0',
  12811. '\a',
  12812. '\xFF',
  12813. '\xFF',
  12814. '\xFF',
  12815. '\xFF',
  12816. '\xFF',
  12817. '\xFE',
  12818. '\a',
  12819. '\xFF',
  12820. '\xFF',
  12821. '\xFF',
  12822. '\xFF',
  12823. '\xFF',
  12824. '\xFF',
  12825. '\xFF',
  12826. '\0',
  12827. '\x0F',
  12828. '\xFF',
  12829. '\xFF',
  12830. '\xFF',
  12831. '\xFF',
  12832. '\xFF',
  12833. '\xFF',
  12834. '\xFF',
  12835. '\xFF',
  12836. '\xFF',
  12837. '\xFF',
  12838. '\xFF',
  12839. '\xFF',
  12840. '\xFF',
  12841. '\xFF',
  12842. '\x80',
  12843. '\x1F',
  12844. '\xFF',
  12845. '\xFF',
  12846. '\xFF',
  12847. '\xFF',
  12848. '\xFF',
  12849. '\xFF',
  12850. '\xFF',
  12851. '\xFF',
  12852. '\xFF',
  12853. '\xFF',
  12854. '\xFF',
  12855. '\xFF',
  12856. '\xFF',
  12857. '\xFF',
  12858. '',
  12859. '\x7F',
  12860. '\xFF',
  12861. '\xFF',
  12862. '\xFF',
  12863. '\xFF',
  12864. '\xFF',
  12865. '\xFF',
  12866. '\xFF',
  12867. '\xFF',
  12868. '\xFF',
  12869. '\xFF',
  12870. '\xFF',
  12871. '\xFF',
  12872. '\xFF',
  12873. '\xFF',
  12874. '\xFF',
  12875. '\xFF',
  12876. '\xFF',
  12877. '\xFF',
  12878. '\xFF',
  12879. '\xFF',
  12880. '\xFF',
  12881. '\xFF',
  12882. '\xFF',
  12883. '\xFF',
  12884. '\xFF',
  12885. '\xFF',
  12886. '\xFF',
  12887. '\xFF',
  12888. '\xFF',
  12889. '\xFF',
  12890. '\xFF',
  12891. '\xFF',
  12892. '\xFF',
  12893. '\xFF',
  12894. '\xFF',
  12895. '\xFF',
  12896. '\xFF',
  12897. '\xFF',
  12898. '\xFF',
  12899. '\xFF',
  12900. '\xFF',
  12901. '\xFF',
  12902. '\xFF',
  12903. '\xFF',
  12904. '\xFF',
  12905. '\xFF',
  12906. '\xFF',
  12907. '\xFF',
  12908. '\xFF',
  12909. '\xFF',
  12910. '\xFF',
  12911. '\xFF',
  12912. '\xFF',
  12913. '\xFF',
  12914. '\xFF',
  12915. '\xFF',
  12916. '\xFF',
  12917. '\xFF',
  12918. '\xFF',
  12919. '\xFF',
  12920. '\xFF',
  12921. '\xFF',
  12922. '\xFF',
  12923. '\xFF',
  12924. '\xFF',
  12925. '\xFF',
  12926. '\xFF',
  12927. '\xFF',
  12928. '\xFF',
  12929. '\xFF',
  12930. '\xFF',
  12931. '\xFF',
  12932. '\xFF',
  12933. '\xFF',
  12934. '\xFF',
  12935. '\xFF',
  12936. '\xFF',
  12937. '\xFF',
  12938. '\xFF',
  12939. '\xFF',
  12940. '\xFF',
  12941. '\xFF',
  12942. '\xFF',
  12943. '\xFF',
  12944. '\xFF',
  12945. '\xFF',
  12946. '\xFF',
  12947. '\xFF',
  12948. '\xFF',
  12949. '\xFF',
  12950. '\xFF',
  12951. '\xFF',
  12952. '\xFF',
  12953. '\xFF',
  12954. '\xFF',
  12955. '\xFF',
  12956. '\xFF',
  12957. '\xFF',
  12958. '\xFF',
  12959. '\xFF',
  12960. '\xFF',
  12961. '\xFF',
  12962. '\xFF',
  12963. '\xFF',
  12964. '\xFF',
  12965. '\xFF',
  12966. '\xFF',
  12967. '\xFF',
  12968. '\xFF',
  12969. '\xFF',
  12970. '\xFF',
  12971. '\xFF',
  12972. '\xFF',
  12973. '\xFF',
  12974. '\xFF',
  12975. '\xFF',
  12976. '\xFF',
  12977. '\xFF',
  12978. '\xFF',
  12979. '\xFF',
  12980. '\xFF',
  12981. '\xFF',
  12982. '\xFF',
  12983. '\xFF',
  12984. '\xFF',
  12985. '\xFF',
  12986. '\xFF',
  12987. '\xFF',
  12988. '\xFF',
  12989. '\xFF',
  12990. '\xFF',
  12991. '\xFF',
  12992. '\xFF',
  12993. '\xFF',
  12994. '\xFF',
  12995. '\xFF',
  12996. '\xFF',
  12997. '\xFF',
  12998. '\xFF',
  12999. '\xFF',
  13000. '\xFF',
  13001. '\xFF',
  13002. '\xFF',
  13003. '\xFF',
  13004. '\xFF',
  13005. '\xFF',
  13006. '\xFF',
  13007. '\xFF',
  13008. '\xFF',
  13009. '\xFF',
  13010. '\xFF',
  13011. '\xFF',
  13012. '\xFF',
  13013. '\xFF',
  13014. '\0',
  13015. '\0',
  13016. '\0',
  13017. '\0',
  13018. '\xFF',
  13019. '\xFF',
  13020. '\xFF',
  13021. '\xFF',
  13022. '\xFF',
  13023. '\xFF',
  13024. '\xFF',
  13025. '\xFF',
  13026. '\xFF',
  13027. '\xFF',
  13028. '\xFF',
  13029. '\xFF',
  13030. '\xFF',
  13031. '\xFF',
  13032. '\xFF',
  13033. '\xFF',
  13034. '\xFF',
  13035. '\xFF',
  13036. '\xFF',
  13037. '\xFF',
  13038. '\xFF',
  13039. '\xFF',
  13040. '\xFF',
  13041. '\xFF',
  13042. '\xFF',
  13043. '\xFF',
  13044. '\xFF',
  13045. '\xFF',
  13046. '\xFF',
  13047. '\xFF',
  13048. '\xFF',
  13049. '\xFF',
  13050. '\xFF',
  13051. '\xFF',
  13052. '\xFF',
  13053. '\xFF',
  13054. '\xFF',
  13055. '\xFF',
  13056. '\xFF',
  13057. '\xFF',
  13058. '\xFF',
  13059. '\xFE',
  13060. '\x7F',
  13061. '\xFF',
  13062. '\xFF',
  13063. '\xFF',
  13064. '\xFF',
  13065. '\xFF',
  13066. '\xFF',
  13067. '\xFF',
  13068. '\xFF',
  13069. '\xFF',
  13070. '\xFF',
  13071. '\xFF',
  13072. '\xFF',
  13073. '\xFF',
  13074. '\xFF',
  13075. '',
  13076. '\x7F',
  13077. '\xFF',
  13078. '\xFF',
  13079. '\xFF',
  13080. '\xFF',
  13081. '\xFF',
  13082. '\xFF',
  13083. '\xFF',
  13084. '\xFF',
  13085. '\xFF',
  13086. '\xFF',
  13087. '\xFF',
  13088. '\xFF',
  13089. '\xFF',
  13090. '\xFF',
  13091. '\x80',
  13092. '?',
  13093. '\xFF',
  13094. '\xFF',
  13095. '\xFF',
  13096. '\xFF',
  13097. '\xFF',
  13098. '\xFF',
  13099. '\xFF',
  13100. '\xFF',
  13101. '\xFF',
  13102. '\xFF',
  13103. '\xFF',
  13104. '\xFF',
  13105. '\xFF',
  13106. '\xFC',
  13107. '\0',
  13108. '\x1F',
  13109. '\xFF',
  13110. '\xFF',
  13111. '\xFF',
  13112. '\xFF',
  13113. '\xFF',
  13114. '\xFF',
  13115. '\xFF',
  13116. '\xFF',
  13117. '\xFF',
  13118. '\xFF',
  13119. '\xFF',
  13120. '\xFF',
  13121. '\xFF',
  13122. '',
  13123. '\0',
  13124. '\x0F',
  13125. '\xFF',
  13126. '\xFF',
  13127. '\xFF',
  13128. '\xFF',
  13129. '\xFF',
  13130. '\xFF',
  13131. '\xFF',
  13132. '\xFF',
  13133. '\xFF',
  13134. '\xFF',
  13135. '\xFF',
  13136. '\xFF',
  13137. '\xFF',
  13138. '\0',
  13139. '\0',
  13140. '\a',
  13141. '\xFF',
  13142. '\xFF',
  13143. '\xFF',
  13144. '\xFF',
  13145. '\xFF',
  13146. '\xFF',
  13147. '\xFF',
  13148. '\xFF',
  13149. '\xFF',
  13150. '\xFF',
  13151. '\xFF',
  13152. '\xFF',
  13153. '\xF8',
  13154. '\0',
  13155. '\0',
  13156. '\a',
  13157. '\xFF',
  13158. '\xFF',
  13159. '\xFF',
  13160. '\xFF',
  13161. '\xFF',
  13162. '\xFF',
  13163. '\xFF',
  13164. '\xFF',
  13165. '\xFF',
  13166. '\xFF',
  13167. '\xFF',
  13168. '\xFF',
  13169. '',
  13170. '\0',
  13171. '\0',
  13172. '\x03',
  13173. '\xFF',
  13174. '\xFF',
  13175. '\xFF',
  13176. '\xFF',
  13177. '\xFF',
  13178. '\xFF',
  13179. '\xFF',
  13180. '\xFF',
  13181. '\xFF',
  13182. '\xFF',
  13183. '\xFF',
  13184. '\xFF',
  13185. '\0',
  13186. '\0',
  13187. '\0',
  13188. '\x01',
  13189. '\xFF',
  13190. '\xFF',
  13191. '\xFF',
  13192. '\xFF',
  13193. '\xFF',
  13194. '\xFF',
  13195. '\xFF',
  13196. '\xFF',
  13197. '\xFF',
  13198. '\xFF',
  13199. '\xFF',
  13200. '\xF8',
  13201. '\0',
  13202. '\0',
  13203. '\0',
  13204. '\0',
  13205. '\xFF',
  13206. '\xFF',
  13207. '\xFF',
  13208. '\xFF',
  13209. '\xFF',
  13210. '\xFF',
  13211. '\xFF',
  13212. '\xFF',
  13213. '\xFF',
  13214. '\xFF',
  13215. '\xFF',
  13216. '',
  13217. '\0',
  13218. '\0',
  13219. '\0',
  13220. '\0',
  13221. '\xFF',
  13222. '\xFF',
  13223. '\xFF',
  13224. '\xFF',
  13225. '\xFF',
  13226. '\xFF',
  13227. '\xFF',
  13228. '\xFF',
  13229. '\xFF',
  13230. '\xFF',
  13231. '\xFE',
  13232. '\0',
  13233. '\0',
  13234. '\0',
  13235. '\0',
  13236. '\0',
  13237. '\x7F',
  13238. '\xFF',
  13239. '\xFF',
  13240. '\xFF',
  13241. '\xFF',
  13242. '\xFF',
  13243. '\xFF',
  13244. '\xFF',
  13245. '\xFF',
  13246. '\xFF',
  13247. '',
  13248. '\0',
  13249. '\0',
  13250. '\0',
  13251. '\0',
  13252. '\0',
  13253. '?',
  13254. '\xFF',
  13255. '\xFF',
  13256. '\xFF',
  13257. '\xFF',
  13258. '\xFF',
  13259. '\xFF',
  13260. '\xFF',
  13261. '\xFF',
  13262. '\xFF',
  13263. '\x80',
  13264. '\0',
  13265. '\0',
  13266. '\0',
  13267. '\0',
  13268. '\0',
  13269. '\x1F',
  13270. '\xFF',
  13271. '\xFF',
  13272. '\xFF',
  13273. '\xFF',
  13274. '\xFF',
  13275. '\xFF',
  13276. '\xFF',
  13277. '\xFF',
  13278. '\xFC',
  13279. '\0',
  13280. '\0',
  13281. '\0',
  13282. '\0',
  13283. '\0',
  13284. '\0',
  13285. '\x0F',
  13286. '\xFF',
  13287. '\xFF',
  13288. '\xFF',
  13289. '\xFF',
  13290. '\xFF',
  13291. '\xFF',
  13292. '\xFF',
  13293. '\xFF',
  13294. '',
  13295. '\0',
  13296. '\0',
  13297. '\0',
  13298. '\0',
  13299. '\0',
  13300. '\0',
  13301. '\x0F',
  13302. '\xFF',
  13303. '\xFF',
  13304. '\xFF',
  13305. '\xFF',
  13306. '\xFF',
  13307. '\xFF',
  13308. '\xFF',
  13309. '\xFF',
  13310. '',
  13311. '\0',
  13312. '\0',
  13313. '\0',
  13314. '\0',
  13315. '\0',
  13316. '\0',
  13317. '\a',
  13318. '\xFF',
  13319. '\xFF',
  13320. '\xFF',
  13321. '\xFF',
  13322. '\xFF',
  13323. '\xFF',
  13324. '\xFF',
  13325. '\xFF',
  13326. '',
  13327. '\0',
  13328. '\0',
  13329. '\0',
  13330. '\0',
  13331. '\0',
  13332. '\0',
  13333. '\x03',
  13334. '\xFF',
  13335. '\xFF',
  13336. '\xFF',
  13337. '\xFF',
  13338. '\xFF',
  13339. '\xFF',
  13340. '\xFF',
  13341. '\xFF',
  13342. '\xF8',
  13343. '\0',
  13344. '\0',
  13345. '\0',
  13346. '\0',
  13347. '\0',
  13348. '\0',
  13349. '\x01',
  13350. '\xFF',
  13351. '\xFF',
  13352. '\xFF',
  13353. '\xFF',
  13354. '\xFF',
  13355. '\xFF',
  13356. '\xFF',
  13357. '\xFF',
  13358. '\xFC',
  13359. '\0',
  13360. '\0',
  13361. '\0',
  13362. '\0',
  13363. '\0',
  13364. '\0',
  13365. '\x01',
  13366. '\xFF',
  13367. '\xFF',
  13368. '\xFF',
  13369. '\xFF',
  13370. '\xFF',
  13371. '\xFF',
  13372. '\xFF',
  13373. '\xFF',
  13374. '\xFF',
  13375. '\0',
  13376. '\0',
  13377. '\0',
  13378. '\0',
  13379. '\0',
  13380. '\0',
  13381. '\0',
  13382. '\xFF',
  13383. '\xFF',
  13384. '\xFF',
  13385. '\xFF',
  13386. '\xFF',
  13387. '\xFF',
  13388. '\xFF',
  13389. '\xFF',
  13390. '\xFF',
  13391. '',
  13392. '\0',
  13393. '\0',
  13394. '\0',
  13395. '\0',
  13396. '\0',
  13397. '\0',
  13398. '\x7F',
  13399. '\xFF',
  13400. '\xFF',
  13401. '\xFF',
  13402. '\xFF',
  13403. '\xFF',
  13404. '\xFF',
  13405. '\xFF',
  13406. '\xFF',
  13407. '',
  13408. '\0',
  13409. '\0',
  13410. '\0',
  13411. '\0',
  13412. '\0',
  13413. '\0',
  13414. '?',
  13415. '\xFF',
  13416. '\xFF',
  13417. '\xFF',
  13418. '\xFF',
  13419. '\xFF',
  13420. '\xFF',
  13421. '\xFF',
  13422. '\xFF',
  13423. '\xF8',
  13424. '\0',
  13425. '\0',
  13426. '\0',
  13427. '\0',
  13428. '\0',
  13429. '\0',
  13430. '\x1F',
  13431. '\xFF',
  13432. '\xFF',
  13433. '\xFF',
  13434. '\xFF',
  13435. '\xFF',
  13436. '\xFF',
  13437. '\xFF',
  13438. '\xFF',
  13439. '\xFC',
  13440. '\0',
  13441. '\0',
  13442. '\0',
  13443. '\0',
  13444. '\0',
  13445. '\0',
  13446. '\x1F',
  13447. '\xFF',
  13448. '\xFF',
  13449. '\xFF',
  13450. '\xFF',
  13451. '\xFF',
  13452. '\xFF',
  13453. '\xFF',
  13454. '\xFF',
  13455. '\xFF',
  13456. '\0',
  13457. '\0',
  13458. '\0',
  13459. '\0',
  13460. '\0',
  13461. '\x03',
  13462. '\xFF',
  13463. '\xFF',
  13464. '\xFF',
  13465. '\xFF',
  13466. '\xFF',
  13467. '\xFF',
  13468. '\xFF',
  13469. '\xFF',
  13470. '\xFF',
  13471. '\xFF',
  13472. '',
  13473. '\0',
  13474. '\0',
  13475. '\0',
  13476. '\x01',
  13477. '\xFF',
  13478. '\xFF',
  13479. '\xFF',
  13480. '\xFF',
  13481. '\xFF',
  13482. '\xFF',
  13483. '\xFF',
  13484. '\xFF',
  13485. '\xFF',
  13486. '\xFF',
  13487. '\xFF',
  13488. '',
  13489. '\0',
  13490. '\0',
  13491. '\0',
  13492. '\x7F',
  13493. '\xFF',
  13494. '\xFF',
  13495. '\xFF',
  13496. '\xFF',
  13497. '\xFF',
  13498. '\xFF',
  13499. '\xFF',
  13500. '\xFF',
  13501. '\xFF',
  13502. '\xFF',
  13503. '\xFF',
  13504. '\xF8',
  13505. '\0',
  13506. '\0',
  13507. '?',
  13508. '\xFF',
  13509. '\xFF',
  13510. '\xFF',
  13511. '\xFF',
  13512. '\xFF',
  13513. '\xFF',
  13514. '\xFF',
  13515. '\xFF',
  13516. '\xFF',
  13517. '\xFF',
  13518. '\xFF',
  13519. '\xFF',
  13520. '\xFC',
  13521. '\0',
  13522. '\x1F',
  13523. '\xFF',
  13524. '\xFF',
  13525. '\xFF',
  13526. '\xFF',
  13527. '\xFF',
  13528. '\xFF',
  13529. '\xFF',
  13530. '\xFF',
  13531. '\xFF',
  13532. '\xFF',
  13533. '\xFF',
  13534. '\xFF',
  13535. '\xFF',
  13536. '\xFF',
  13537. '\x0F',
  13538. '\xFF',
  13539. '\xFF',
  13540. '\xFF',
  13541. '\xFF',
  13542. '\xFF',
  13543. '\xFF',
  13544. '\xFF',
  13545. '\xFF',
  13546. '\xFF',
  13547. '\xFF',
  13548. '\xFF',
  13549. '\xFF',
  13550. '\xFF',
  13551. '\xFF',
  13552. '\xFF',
  13553. '\xFF',
  13554. '\xFF',
  13555. '\xFF',
  13556. '\xFF',
  13557. '\xFF',
  13558. '\xFF',
  13559. '\xFF',
  13560. '\xFF',
  13561. '\xFF',
  13562. '\xFF',
  13563. '\xFF',
  13564. '\xFF',
  13565. '\xFF',
  13566. '\xFF',
  13567. '\xFF',
  13568. '\xFF',
  13569. '\xFF',
  13570. '\xFF',
  13571. '\xFF',
  13572. '\xFF',
  13573. '\xFF',
  13574. '\xFF',
  13575. '\xFF',
  13576. '\xFF',
  13577. '\xFF',
  13578. '\xFF',
  13579. '\xFF',
  13580. '\xFF',
  13581. '\xFF',
  13582. '\xFF',
  13583. '\xFF',
  13584. '\xFF',
  13585. '\xFF',
  13586. '\xFF',
  13587. '\xFF',
  13588. '\xFF',
  13589. '\xFF',
  13590. '\xFF',
  13591. '\xFF',
  13592. '\xFF',
  13593. '\xFF',
  13594. '\0',
  13595. '\0',
  13596. '\0',
  13597. '\0',
  13598. '\xFF',
  13599. '\xFF',
  13600. '\xFF',
  13601. '\xFF',
  13602. '\xFF',
  13603. '\xFF',
  13604. '\xFF',
  13605. '\xFF',
  13606. '\xFF',
  13607. '\xFF',
  13608. '\xFF',
  13609. '\xFF',
  13610. '\xFF',
  13611. '\xFF',
  13612. '\xFF',
  13613. '\xFF',
  13614. '\xFF',
  13615. '\xFF',
  13616. '\xFF',
  13617. '\xFF',
  13618. '\xFF',
  13619. '\xFF',
  13620. '\xFF',
  13621. '\xFF',
  13622. '\xFF',
  13623. '\xFF',
  13624. '\xFF',
  13625. '\xFF',
  13626. '\xFF',
  13627. '\xFF',
  13628. '\xFF',
  13629. '\xFF',
  13630. '\xFF',
  13631. '\xFF',
  13632. '\xFF',
  13633. '\xFF',
  13634. '\xFF',
  13635. '\xFF',
  13636. '\xFF',
  13637. '\xFF',
  13638. '\xFF',
  13639. '\xFF',
  13640. '\xFF',
  13641. '\xFF',
  13642. '\xFF',
  13643. '\xFF',
  13644. '\xFF',
  13645. '\xFF',
  13646. '\xFF',
  13647. '\xFF',
  13648. '\xFF',
  13649. '\xFF',
  13650. '\xFF',
  13651. '\xFF',
  13652. '\xFF',
  13653. '\xFF',
  13654. '\xFF',
  13655. '\xFF',
  13656. '\xFF',
  13657. '\xFF',
  13658. '\xFF',
  13659. '\xFF',
  13660. '\xFF',
  13661. '\xFF',
  13662. '\xFF',
  13663. '\xFF',
  13664. '\xFF',
  13665. '\xFF',
  13666. '\xFF',
  13667. '\xFF',
  13668. '\xFF',
  13669. '\xFF',
  13670. '\xFF',
  13671. '\xFF',
  13672. '\xFF',
  13673. '\xFF',
  13674. '\xFF',
  13675. '\xFF',
  13676. '\xFF',
  13677. '\xFF',
  13678. '\xFF',
  13679. '\xFF',
  13680. '\xFF',
  13681. '\xFF',
  13682. '\xFF',
  13683. '\xFF',
  13684. '\xFF',
  13685. '\xFF',
  13686. '\xFF',
  13687. '\xFF',
  13688. '\xFF',
  13689. '\xFF',
  13690. '\xFF',
  13691. '\xFF',
  13692. '\xFF',
  13693. '\xFF',
  13694. '\xFF',
  13695. '\xFF',
  13696. '\xFE',
  13697. '\0',
  13698. '\0',
  13699. '\0',
  13700. '\0',
  13701. '\0',
  13702. '\0',
  13703. '\0',
  13704. '\0',
  13705. '\0',
  13706. '\0',
  13707. '\a',
  13708. '\xFF',
  13709. '\xFF',
  13710. '\xFF',
  13711. '\xFF',
  13712. '\xFE',
  13713. '\0',
  13714. '\0',
  13715. '\0',
  13716. '\0',
  13717. '\0',
  13718. '\0',
  13719. '\0',
  13720. '\0',
  13721. '\0',
  13722. '\0',
  13723. '\a',
  13724. '\xFF',
  13725. '\xFF',
  13726. '\xFF',
  13727. '\xFF',
  13728. '\xFE',
  13729. '\0',
  13730. '\0',
  13731. '\0',
  13732. '\0',
  13733. '\0',
  13734. '\0',
  13735. '\0',
  13736. '\0',
  13737. '\0',
  13738. '\0',
  13739. '\a',
  13740. '\xFF',
  13741. '\xFF',
  13742. '\xFF',
  13743. '\xFF',
  13744. '\xFE',
  13745. '\0',
  13746. '\0',
  13747. '\0',
  13748. '\0',
  13749. '\0',
  13750. '\0',
  13751. '\0',
  13752. '\0',
  13753. '\0',
  13754. '\0',
  13755. '\a',
  13756. '\xFF',
  13757. '\xFF',
  13758. '\xFF',
  13759. '\xFF',
  13760. '\xFE',
  13761. '\0',
  13762. '\0',
  13763. '\0',
  13764. '\0',
  13765. '\0',
  13766. '\0',
  13767. '\0',
  13768. '\0',
  13769. '\0',
  13770. '\0',
  13771. '\a',
  13772. '\xFF',
  13773. '\xFF',
  13774. '\xFF',
  13775. '\xFF',
  13776. '\xFE',
  13777. '\0',
  13778. '\0',
  13779. '\0',
  13780. '\0',
  13781. '\0',
  13782. '\0',
  13783. '\0',
  13784. '\0',
  13785. '\0',
  13786. '\0',
  13787. '\a',
  13788. '\xFF',
  13789. '\xFF',
  13790. '\xFF',
  13791. '\xFF',
  13792. '\xFE',
  13793. '\0',
  13794. '\0',
  13795. '\0',
  13796. '\0',
  13797. '\0',
  13798. '\0',
  13799. '\0',
  13800. '\0',
  13801. '\0',
  13802. '\0',
  13803. '\a',
  13804. '\xFF',
  13805. '\xFF',
  13806. '\xFF',
  13807. '\xFF',
  13808. '\xFE',
  13809. '\0',
  13810. '\0',
  13811. '\0',
  13812. '\0',
  13813. '\0',
  13814. '\0',
  13815. '\0',
  13816. '\0',
  13817. '\0',
  13818. '\0',
  13819. '\a',
  13820. '\xFF',
  13821. '\xFF',
  13822. '\xFF',
  13823. '\xFF',
  13824. '\xFE',
  13825. '\0',
  13826. '\0',
  13827. '\0',
  13828. '\0',
  13829. '\0',
  13830. '\0',
  13831. '\0',
  13832. '\0',
  13833. '\0',
  13834. '\0',
  13835. '\a',
  13836. '\xFF',
  13837. '\xFF',
  13838. '\xFF',
  13839. '\xFF',
  13840. '\xFE',
  13841. '\0',
  13842. '\0',
  13843. '\0',
  13844. '\0',
  13845. '\0',
  13846. '\0',
  13847. '\0',
  13848. '\0',
  13849. '\0',
  13850. '\0',
  13851. '\a',
  13852. '\xFF',
  13853. '\xFF',
  13854. '\xFF',
  13855. '\xFF',
  13856. '\xFE',
  13857. '\0',
  13858. '\0',
  13859. '\0',
  13860. '\0',
  13861. '\0',
  13862. '\0',
  13863. '\0',
  13864. '\0',
  13865. '\0',
  13866. '\0',
  13867. '\a',
  13868. '\xFF',
  13869. '\xFF',
  13870. '\xFF',
  13871. '\xFF',
  13872. '\xFE',
  13873. '\0',
  13874. '\0',
  13875. '\0',
  13876. '\0',
  13877. '\0',
  13878. '\0',
  13879. '\0',
  13880. '\0',
  13881. '\0',
  13882. '\0',
  13883. '\a',
  13884. '\xFF',
  13885. '\xFF',
  13886. '\xFF',
  13887. '\xFF',
  13888. '\xFE',
  13889. '\0',
  13890. '\0',
  13891. '\0',
  13892. '\0',
  13893. '\0',
  13894. '\0',
  13895. '\0',
  13896. '\0',
  13897. '\0',
  13898. '\0',
  13899. '\a',
  13900. '\xFF',
  13901. '\xFF',
  13902. '\xFF',
  13903. '\xFF',
  13904. '\xFE',
  13905. '\0',
  13906. '\0',
  13907. '\0',
  13908. '\0',
  13909. '\0',
  13910. '\0',
  13911. '\0',
  13912. '\0',
  13913. '\0',
  13914. '\0',
  13915. '\a',
  13916. '\xFF',
  13917. '\xFF',
  13918. '\xFF',
  13919. '\xFF',
  13920. '\xFE',
  13921. '\0',
  13922. '\0',
  13923. '\0',
  13924. '\0',
  13925. '\0',
  13926. '\0',
  13927. '\0',
  13928. '\0',
  13929. '\0',
  13930. '\0',
  13931. '\a',
  13932. '\xFF',
  13933. '\xFF',
  13934. '\xFF',
  13935. '\xFF',
  13936. '\xFE',
  13937. '\0',
  13938. '\0',
  13939. '\0',
  13940. '\0',
  13941. '\0',
  13942. '\0',
  13943. '\0',
  13944. '\0',
  13945. '\0',
  13946. '\0',
  13947. '\a',
  13948. '\xFF',
  13949. '\xFF',
  13950. '\xFF',
  13951. '\xFF',
  13952. '\xFE',
  13953. '\0',
  13954. '\0',
  13955. '\0',
  13956. '\0',
  13957. '\0',
  13958. '\0',
  13959. '\0',
  13960. '\0',
  13961. '\0',
  13962. '\0',
  13963. '\a',
  13964. '\xFF',
  13965. '\xFF',
  13966. '\xFF',
  13967. '\xFF',
  13968. '\xFE',
  13969. '\0',
  13970. '\0',
  13971. '\0',
  13972. '\0',
  13973. '\0',
  13974. '\0',
  13975. '\0',
  13976. '\0',
  13977. '\0',
  13978. '\0',
  13979. '\a',
  13980. '\xFF',
  13981. '\xFF',
  13982. '\xFF',
  13983. '\xFF',
  13984. '\xFE',
  13985. '\0',
  13986. '\0',
  13987. '\0',
  13988. '\0',
  13989. '\0',
  13990. '\0',
  13991. '\0',
  13992. '\0',
  13993. '\0',
  13994. '\0',
  13995. '\a',
  13996. '\xFF',
  13997. '\xFF',
  13998. '\xFF',
  13999. '\xFF',
  14000. '\xFE',
  14001. '\0',
  14002. '\0',
  14003. '\0',
  14004. '\0',
  14005. '\0',
  14006. '\0',
  14007. '\0',
  14008. '\0',
  14009. '\0',
  14010. '\0',
  14011. '\a',
  14012. '\xFF',
  14013. '\xFF',
  14014. '\xFF',
  14015. '\xFF',
  14016. '\xFE',
  14017. '\0',
  14018. '\0',
  14019. '\0',
  14020. '\0',
  14021. '\0',
  14022. '\0',
  14023. '\0',
  14024. '\0',
  14025. '\0',
  14026. '\0',
  14027. '\a',
  14028. '\xFF',
  14029. '\xFF',
  14030. '\xFF',
  14031. '\xFF',
  14032. '\xFE',
  14033. '\0',
  14034. '\0',
  14035. '\0',
  14036. '\0',
  14037. '\0',
  14038. '\0',
  14039. '\0',
  14040. '\0',
  14041. '\0',
  14042. '\0',
  14043. '\a',
  14044. '\xFF',
  14045. '\xFF',
  14046. '\xFF',
  14047. '\xFF',
  14048. '\xFE',
  14049. '\0',
  14050. '\0',
  14051. '\0',
  14052. '\0',
  14053. '\0',
  14054. '\0',
  14055. '\0',
  14056. '\0',
  14057. '\0',
  14058. '\0',
  14059. '\a',
  14060. '\xFF',
  14061. '\xFF',
  14062. '\xFF',
  14063. '\xFF',
  14064. '\xFF',
  14065. '\xFF',
  14066. '\xFF',
  14067. '\xFF',
  14068. '\xFF',
  14069. '\xFF',
  14070. '\xFF',
  14071. '\xFF',
  14072. '\xFF',
  14073. '\xFF',
  14074. '\xFF',
  14075. '\xFF',
  14076. '\xFF',
  14077. '\xFF',
  14078. '\xFF',
  14079. '\xFF',
  14080. '\xFF',
  14081. '\xFF',
  14082. '\xFF',
  14083. '\xFF',
  14084. '\xFF',
  14085. '\xFF',
  14086. '\xFF',
  14087. '\xFF',
  14088. '\xFF',
  14089. '\xFF',
  14090. '\xFF',
  14091. '\xFF',
  14092. '\xFF',
  14093. '\xFF',
  14094. '\xFF',
  14095. '\xFF',
  14096. '\xFF',
  14097. '\xFF',
  14098. '\xFF',
  14099. '\xFF',
  14100. '\xFF',
  14101. '\xFF',
  14102. '\xFF',
  14103. '\xFF',
  14104. '\xFF',
  14105. '\xFF',
  14106. '\xFF',
  14107. '\xFF',
  14108. '\xFF',
  14109. '\xFF',
  14110. '\xFF',
  14111. '\xFF',
  14112. '\xFF',
  14113. '\xFF',
  14114. '\xFF',
  14115. '\xFF',
  14116. '\xFF',
  14117. '\xFF',
  14118. '\xFF',
  14119. '\xFF',
  14120. '\xFF',
  14121. '\xFF',
  14122. '\xFF',
  14123. '\xFF',
  14124. '\xFF',
  14125. '\xFF',
  14126. '\xFF',
  14127. '\xFF',
  14128. '\xFF',
  14129. '\xFF',
  14130. '\xFF',
  14131. '\xFF',
  14132. '\xFF',
  14133. '\xFF',
  14134. '\xFF',
  14135. '\xFF',
  14136. '\xFF',
  14137. '\xFF',
  14138. '\xFF',
  14139. '\xFF',
  14140. '\xFF',
  14141. '\xFF',
  14142. '\xFF',
  14143. '\xFF',
  14144. '\xFF',
  14145. '\xFF',
  14146. '\xFF',
  14147. '\xFF',
  14148. '\xFF',
  14149. '\xFF',
  14150. '\xFF',
  14151. '\xFF',
  14152. '\xFF',
  14153. '\xFF',
  14154. '\xFF',
  14155. '\xFF',
  14156. '\xFF',
  14157. '\xFF',
  14158. '\xFF',
  14159. '\xFF',
  14160. '\xFF',
  14161. '\xFF',
  14162. '\xFF',
  14163. '\xFF',
  14164. '\xFF',
  14165. '\xFF',
  14166. '\xFF',
  14167. '\xFF',
  14168. '\xFF',
  14169. '\xFF',
  14170. '\xFF',
  14171. '\xFF',
  14172. '\xFF',
  14173. '\xFF',
  14174. '\0',
  14175. '\0',
  14176. '\0',
  14177. '\0',
  14178. '\xFF',
  14179. '\xFF',
  14180. '\xFF',
  14181. '\xFF',
  14182. '\xFF',
  14183. '\xFF',
  14184. '\xFF',
  14185. '\xFF',
  14186. '\xFF',
  14187. '\xFF',
  14188. '\xFF',
  14189. '\xFF',
  14190. '\xFF',
  14191. '\xFF',
  14192. '\xFF',
  14193. '\xFF',
  14194. '\xFF',
  14195. '\xFF',
  14196. '\xFF',
  14197. '\xFF',
  14198. '\xFF',
  14199. '\xFF',
  14200. '\xFF',
  14201. '\xFF',
  14202. '\xFF',
  14203. '\xFF',
  14204. '\xFF',
  14205. '\xFF',
  14206. '\xFF',
  14207. '\xFF',
  14208. '\xFF',
  14209. '\xFF',
  14210. '\xFF',
  14211. '\xFF',
  14212. '\xFF',
  14213. '\xFF',
  14214. '\xFF',
  14215. '\xFF',
  14216. '\xFF',
  14217. '\xFF',
  14218. '\xFF',
  14219. '\xFF',
  14220. '\xFF',
  14221. '\xFF',
  14222. '\xFF',
  14223. '\xFF',
  14224. '\xFF',
  14225. '\xFF',
  14226. '\xFF',
  14227. '\xFF',
  14228. '\xFF',
  14229. '\xFF',
  14230. '\xFF',
  14231. '\xFF',
  14232. '\xFF',
  14233. '\xFF',
  14234. '\xFF',
  14235. '\xFF',
  14236. '\xFF',
  14237. '\xFF',
  14238. '\xFF',
  14239. '\xFF',
  14240. '\xFF',
  14241. '\xFF',
  14242. '\xFF',
  14243. '\xFF',
  14244. '\xFF',
  14245. '\xFF',
  14246. '\x80',
  14247. '\0',
  14248. '\0',
  14249. '\0',
  14250. '\0',
  14251. '\0',
  14252. '\0',
  14253. '\x1F',
  14254. '\xFF',
  14255. '\xFF',
  14256. '\xFF',
  14257. '\xFF',
  14258. '\xFF',
  14259. '\xFF',
  14260. '\xFF',
  14261. '\xFC',
  14262. '\0',
  14263. '\0',
  14264. '\0',
  14265. '\0',
  14266. '\0',
  14267. '\0',
  14268. '\0',
  14269. '\0',
  14270. '\xFF',
  14271. '\xFF',
  14272. '\xFF',
  14273. '\xFF',
  14274. '\xFF',
  14275. '\xFF',
  14276. '',
  14277. '\0',
  14278. '\0',
  14279. '\0',
  14280. '\0',
  14281. '\0',
  14282. '\0',
  14283. '\0',
  14284. '\0',
  14285. '\0',
  14286. '\x1F',
  14287. '\xFF',
  14288. '\xFF',
  14289. '\xFF',
  14290. '\xFF',
  14291. '\xFE',
  14292. '\0',
  14293. '\0',
  14294. '\0',
  14295. '\0',
  14296. '\0',
  14297. '\0',
  14298. '\0',
  14299. '\0',
  14300. '\0',
  14301. '\0',
  14302. '\0',
  14303. '\xFF',
  14304. '\xFF',
  14305. '\xFF',
  14306. '\xFF',
  14307. '',
  14308. '\0',
  14309. '\0',
  14310. '\0',
  14311. '\0',
  14312. '\0',
  14313. '\0',
  14314. '\0',
  14315. '\0',
  14316. '\0',
  14317. '\0',
  14318. '\0',
  14319. '\x7F',
  14320. '\xFF',
  14321. '\xFF',
  14322. '\xFF',
  14323. '',
  14324. '\0',
  14325. '\0',
  14326. '\0',
  14327. '\0',
  14328. '\0',
  14329. '\0',
  14330. '\0',
  14331. '\0',
  14332. '\0',
  14333. '\0',
  14334. '\0',
  14335. '?',
  14336. '\xFF',
  14337. '\xFF',
  14338. '\xFF',
  14339. '\x80',
  14340. '\0',
  14341. '\0',
  14342. '\0',
  14343. '\0',
  14344. '\0',
  14345. '\0',
  14346. '\0',
  14347. '\0',
  14348. '\0',
  14349. '\0',
  14350. '\0',
  14351. '\x1F',
  14352. '\xFF',
  14353. '\xFF',
  14354. '\xFF',
  14355. '\0',
  14356. '\0',
  14357. '\0',
  14358. '\0',
  14359. '\0',
  14360. '\0',
  14361. '\0',
  14362. '\0',
  14363. '\0',
  14364. '\0',
  14365. '\0',
  14366. '\0',
  14367. '\x0F',
  14368. '\xFF',
  14369. '\xFF',
  14370. '\xFF',
  14371. '\x80',
  14372. '\0',
  14373. '\0',
  14374. '\0',
  14375. '\0',
  14376. '\0',
  14377. '\0',
  14378. '\0',
  14379. '\0',
  14380. '\0',
  14381. '\0',
  14382. '\0',
  14383. '\x0F',
  14384. '\xFF',
  14385. '\xFF',
  14386. '\xFF',
  14387. '',
  14388. '\0',
  14389. '\0',
  14390. '\0',
  14391. '\0',
  14392. '\0',
  14393. '\0',
  14394. '\0',
  14395. '\0',
  14396. '\0',
  14397. '\0',
  14398. '\0',
  14399. '\x0F',
  14400. '\xFF',
  14401. '\xFF',
  14402. '\xFF',
  14403. '\xFE',
  14404. '\0',
  14405. '\0',
  14406. '\0',
  14407. '\0',
  14408. '\0',
  14409. '\0',
  14410. '\0',
  14411. '\0',
  14412. '\0',
  14413. '\0',
  14414. '\0',
  14415. '\x0F',
  14416. '\xFF',
  14417. '\xFF',
  14418. '\xFF',
  14419. '\xFF',
  14420. '\x80',
  14421. '\0',
  14422. '\0',
  14423. '\0',
  14424. '\0',
  14425. '\0',
  14426. '\0',
  14427. '\0',
  14428. '\0',
  14429. '\0',
  14430. '\0',
  14431. '\x0F',
  14432. '\xFF',
  14433. '\xFF',
  14434. '\xFF',
  14435. '\xFF',
  14436. '',
  14437. '\0',
  14438. '\0',
  14439. '\0',
  14440. '\0',
  14441. '\0',
  14442. '\0',
  14443. '\0',
  14444. '\0',
  14445. '\0',
  14446. '\0',
  14447. '\x0F',
  14448. '\xFF',
  14449. '\xFF',
  14450. '\xFF',
  14451. '\xFF',
  14452. '\xF8',
  14453. '\0',
  14454. '\0',
  14455. '\0',
  14456. '\0',
  14457. '?',
  14458. '',
  14459. '\0',
  14460. '\0',
  14461. '\0',
  14462. '\0',
  14463. '\x1F',
  14464. '\xFF',
  14465. '\xFF',
  14466. '\xFF',
  14467. '\xFF',
  14468. '\xFC',
  14469. '\0',
  14470. '\0',
  14471. '\0',
  14472. '\x7F',
  14473. '\xFF',
  14474. '\xF8',
  14475. '\0',
  14476. '\0',
  14477. '\0',
  14478. '\0',
  14479. '\x1F',
  14480. '\xFF',
  14481. '\xFF',
  14482. '\xFF',
  14483. '\xFF',
  14484. '\xFF',
  14485. '\0',
  14486. '\0',
  14487. '\x01',
  14488. '\xFF',
  14489. '\xFF',
  14490. '\xFF',
  14491. '\0',
  14492. '\0',
  14493. '\0',
  14494. '\0',
  14495. '?',
  14496. '\xFF',
  14497. '\xFF',
  14498. '\xFF',
  14499. '\xFF',
  14500. '\xFF',
  14501. '',
  14502. '\0',
  14503. '\a',
  14504. '\xFF',
  14505. '\xFF',
  14506. '\xFF',
  14507. '',
  14508. '\0',
  14509. '\0',
  14510. '\0',
  14511. '?',
  14512. '\xFF',
  14513. '\xFF',
  14514. '\xFF',
  14515. '\xFF',
  14516. '\xFF',
  14517. '\xFC',
  14518. '\0',
  14519. '?',
  14520. '\xFF',
  14521. '\xFF',
  14522. '\xFF',
  14523. '',
  14524. '\0',
  14525. '\0',
  14526. '\0',
  14527. '?',
  14528. '\xFF',
  14529. '\xFF',
  14530. '\xFF',
  14531. '\xFF',
  14532. '\xFF',
  14533. '\xFF',
  14534. '\xFF',
  14535. '\xFF',
  14536. '\xFF',
  14537. '\xFF',
  14538. '\xFF',
  14539. '\xFE',
  14540. '\0',
  14541. '\0',
  14542. '\0',
  14543. '\x7F',
  14544. '\xFF',
  14545. '\xFF',
  14546. '\xFF',
  14547. '\xFF',
  14548. '\xFF',
  14549. '\xFF',
  14550. '\xFF',
  14551. '\xFF',
  14552. '\xFF',
  14553. '\xFF',
  14554. '\xFF',
  14555. '\xFF',
  14556. '\0',
  14557. '\0',
  14558. '\0',
  14559. '\x7F',
  14560. '\xFF',
  14561. '\xFF',
  14562. '\xFF',
  14563. '\xFF',
  14564. '\xFF',
  14565. '\xFF',
  14566. '\xFF',
  14567. '\xFF',
  14568. '\xFF',
  14569. '\xFF',
  14570. '\xFF',
  14571. '\xFF',
  14572. '\x80',
  14573. '\0',
  14574. '\0',
  14575. '\xFF',
  14576. '\xFF',
  14577. '\xFF',
  14578. '\xFF',
  14579. '\xFF',
  14580. '\xFF',
  14581. '\xFF',
  14582. '\xFF',
  14583. '\xFF',
  14584. '\xFF',
  14585. '\xFF',
  14586. '\xFF',
  14587. '\xFF',
  14588. '',
  14589. '\0',
  14590. '\x01',
  14591. '\xFF',
  14592. '\xFF',
  14593. '\xFF',
  14594. '\xFF',
  14595. '\xFF',
  14596. '\xFF',
  14597. '\xFF',
  14598. '\xFF',
  14599. '\xFF',
  14600. '\xFF',
  14601. '\xFF',
  14602. '\xFF',
  14603. '\xFF',
  14604. '',
  14605. '\0',
  14606. '\x01',
  14607. '\xFF',
  14608. '\xFF',
  14609. '\xFF',
  14610. '\xFF',
  14611. '\xFF',
  14612. '\xFF',
  14613. '\xFF',
  14614. '\xFF',
  14615. '\xFF',
  14616. '\xFF',
  14617. '\xFF',
  14618. '\xFF',
  14619. '\xFF',
  14620. '\xF8',
  14621. '\0',
  14622. '\a',
  14623. '\xFF',
  14624. '\xFF',
  14625. '\xFF',
  14626. '\xFF',
  14627. '\xFF',
  14628. '\xFF',
  14629. '\xFF',
  14630. '\xFF',
  14631. '\xFF',
  14632. '\xFF',
  14633. '\xFF',
  14634. '\xFF',
  14635. '\xFF',
  14636. '\xFC',
  14637. '\0',
  14638. '\x0F',
  14639. '\xFF',
  14640. '\xFF',
  14641. '\xFF',
  14642. '\xFF',
  14643. '\xFF',
  14644. '\xFF',
  14645. '\xFF',
  14646. '\xFF',
  14647. '\xFF',
  14648. '\xFF',
  14649. '\xFF',
  14650. '\xFF',
  14651. '\xFF',
  14652. '\xFF',
  14653. '\0',
  14654. '\x1F',
  14655. '\xFF',
  14656. '\xFF',
  14657. '\xFF',
  14658. '\xFF',
  14659. '\xFF',
  14660. '\xFF',
  14661. '\xFF',
  14662. '\xFF',
  14663. '\xFF',
  14664. '\xFF',
  14665. '\xFF',
  14666. '\xFF',
  14667. '\xFF',
  14668. '\xFF',
  14669. '',
  14670. '?',
  14671. '\xFF',
  14672. '\xFF',
  14673. '\xFF',
  14674. '\xFF',
  14675. '\xFF',
  14676. '\xFF',
  14677. '\xFF',
  14678. '\xFF',
  14679. '\xFF',
  14680. '\xFF',
  14681. '\xFF',
  14682. '\xFF',
  14683. '\xFF',
  14684. '\xFF',
  14685. '\xFF',
  14686. '\xFF',
  14687. '\xFF',
  14688. '\xFF',
  14689. '\xFF',
  14690. '\xFF',
  14691. '\xFF',
  14692. '\xFF',
  14693. '\xFF',
  14694. '\xFF',
  14695. '\xFF',
  14696. '\xFF',
  14697. '\xFF',
  14698. '\xFF',
  14699. '\xFF',
  14700. '\xFF',
  14701. '\xFF',
  14702. '\xFF',
  14703. '\xFF',
  14704. '\xFF',
  14705. '\xFF',
  14706. '\xFF',
  14707. '\xFF',
  14708. '\xFF',
  14709. '\xFF',
  14710. '\xFF',
  14711. '\xFF',
  14712. '\xFF',
  14713. '\xFF',
  14714. '\xFF',
  14715. '\xFF',
  14716. '\xFF',
  14717. '\xFF',
  14718. '\xFF',
  14719. '\xFF',
  14720. '\xFF',
  14721. '\xFF',
  14722. '\xFF',
  14723. '\xFF',
  14724. '\xFF',
  14725. '\xFF',
  14726. '\xFF',
  14727. '\xFF',
  14728. '\xFF',
  14729. '\xFF',
  14730. '\xFF',
  14731. '\xFF',
  14732. '\xFF',
  14733. '\xFF',
  14734. '\xFF',
  14735. '\xFF',
  14736. '\xFF',
  14737. '\xFF',
  14738. '\xFF',
  14739. '\xFF',
  14740. '\xFF',
  14741. '\xFF',
  14742. '\xFF',
  14743. '\xFF',
  14744. '\xFF',
  14745. '\xFF',
  14746. '\xFF',
  14747. '\xFF',
  14748. '\xFF',
  14749. '\xFF',
  14750. '\xFF',
  14751. '\xFF',
  14752. '\xFF',
  14753. '\xFF',
  14754. '\0',
  14755. '\0',
  14756. '\0',
  14757. '\0',
  14758. '\xFF',
  14759. '\xFF',
  14760. '\xFF',
  14761. '\xFF',
  14762. '\xFF',
  14763. '\xFF',
  14764. '\xFF',
  14765. '\xFF',
  14766. '\xFF',
  14767. '\xFF',
  14768. '\xFF',
  14769. '\xFF',
  14770. '\xFF',
  14771. '\xFF',
  14772. '\xFF',
  14773. '\xFF',
  14774. '\xFF',
  14775. '\xFF',
  14776. '\xFF',
  14777. '\xFF',
  14778. '\xFF',
  14779. '\xFF',
  14780. '\xFF',
  14781. '\xFF',
  14782. '\xFF',
  14783. '\xFF',
  14784. '\xFF',
  14785. '\xFF',
  14786. '\xFF',
  14787. '\xFF',
  14788. '\xFF',
  14789. '\xFF',
  14790. '\xFF',
  14791. '\xFF',
  14792. '\xFF',
  14793. '\xFF',
  14794. '\xFF',
  14795. '\xFF',
  14796. '\xFF',
  14797. '\xFF',
  14798. '\xFF',
  14799. '\xFF',
  14800. '\xFF',
  14801. '\xFF',
  14802. '\xFF',
  14803. '\xFF',
  14804. '\xFF',
  14805. '\xFF',
  14806. '\xFF',
  14807. '\xFF',
  14808. '\xFF',
  14809. '\xFF',
  14810. '\xFF',
  14811. '\xFF',
  14812. '\xFF',
  14813. '\xFF',
  14814. '\xFF',
  14815. '\xFF',
  14816. '\xFF',
  14817. '\xFF',
  14818. '\xFF',
  14819. '\xFF',
  14820. '\xFF',
  14821. '\xFF',
  14822. '\xFF',
  14823. '\xFF',
  14824. '\xFF',
  14825. '\xFF',
  14826. '\xFF',
  14827. '\xFE',
  14828. '\0',
  14829. '?',
  14830. '\xFF',
  14831. '\xFF',
  14832. '\xFF',
  14833. '\xFF',
  14834. '\xFF',
  14835. '\xFF',
  14836. '\xFF',
  14837. '\xFF',
  14838. '\xFF',
  14839. '\xFF',
  14840. '\xFF',
  14841. '\xFF',
  14842. '\xFE',
  14843. '\0',
  14844. '\0',
  14845. '\x01',
  14846. '\xFF',
  14847. '\xFF',
  14848. '\xFF',
  14849. '\xFF',
  14850. '\xFF',
  14851. '\xFF',
  14852. '\xFF',
  14853. '\xFF',
  14854. '\xFF',
  14855. '\xFF',
  14856. '\xFF',
  14857. '\xFE',
  14858. '\0',
  14859. '\0',
  14860. '\0',
  14861. '\0',
  14862. '\a',
  14863. '\xFF',
  14864. '\xFF',
  14865. '\xFF',
  14866. '\xFF',
  14867. '\xFF',
  14868. '\xFF',
  14869. '\xFF',
  14870. '\xFF',
  14871. '\xFF',
  14872. '\xFF',
  14873. '\0',
  14874. '\0',
  14875. '\0',
  14876. '\0',
  14877. '\0',
  14878. '\0',
  14879. '\x1F',
  14880. '\xFF',
  14881. '\xFF',
  14882. '\xFF',
  14883. '\xFF',
  14884. '\xFF',
  14885. '\xFF',
  14886. '\xFF',
  14887. '\xFF',
  14888. '',
  14889. '\0',
  14890. '\0',
  14891. '\0',
  14892. '\0',
  14893. '\0',
  14894. '\0',
  14895. '\0',
  14896. '\xFF',
  14897. '\xFF',
  14898. '\xFF',
  14899. '\xFF',
  14900. '\xFF',
  14901. '\xFF',
  14902. '\xFF',
  14903. '\xFF',
  14904. '\x80',
  14905. '\0',
  14906. '\0',
  14907. '\0',
  14908. '\0',
  14909. '\0',
  14910. '\0',
  14911. '\0',
  14912. '\x03',
  14913. '\xFF',
  14914. '\xFF',
  14915. '\xFF',
  14916. '\xFF',
  14917. '\xFF',
  14918. '\xFF',
  14919. '\xFF',
  14920. '',
  14921. '\0',
  14922. '\0',
  14923. '\0',
  14924. '\0',
  14925. '\0',
  14926. '\0',
  14927. '\0',
  14928. '\0',
  14929. '\x0F',
  14930. '\xFF',
  14931. '\xFF',
  14932. '\xFF',
  14933. '\xFF',
  14934. '\xFF',
  14935. '\xFF',
  14936. '',
  14937. '\0',
  14938. '\0',
  14939. '\0',
  14940. '\0',
  14941. '\0',
  14942. '\0',
  14943. '\0',
  14944. '\0',
  14945. '\0',
  14946. '?',
  14947. '\xFF',
  14948. '\xFF',
  14949. '\xFF',
  14950. '\xFF',
  14951. '\xFF',
  14952. '',
  14953. '\0',
  14954. '\0',
  14955. '\0',
  14956. '\0',
  14957. '\0',
  14958. '\0',
  14959. '\0',
  14960. '\0',
  14961. '\0',
  14962. '\x01',
  14963. '\xFF',
  14964. '\xFF',
  14965. '\xFF',
  14966. '\xFF',
  14967. '\xFF',
  14968. '',
  14969. '\0',
  14970. '\0',
  14971. '\0',
  14972. '\0',
  14973. '\0',
  14974. '\0',
  14975. '\0',
  14976. '\0',
  14977. '\0',
  14978. '\0',
  14979. '\x7F',
  14980. '\xFF',
  14981. '\xFF',
  14982. '\xFF',
  14983. '\xFF',
  14984. '',
  14985. '\0',
  14986. '\0',
  14987. '\0',
  14988. '\0',
  14989. '\0',
  14990. '\0',
  14991. '\0',
  14992. '\0',
  14993. '\0',
  14994. '\x01',
  14995. '\xFF',
  14996. '\xFF',
  14997. '\xFF',
  14998. '\xFF',
  14999. '\xFF',
  15000. '',
  15001. '\0',
  15002. '\0',
  15003. '\0',
  15004. '\0',
  15005. '\0',
  15006. '\0',
  15007. '\0',
  15008. '\0',
  15009. '\0',
  15010. '\x03',
  15011. '\xFF',
  15012. '\xFF',
  15013. '\xFF',
  15014. '\xFF',
  15015. '\xFF',
  15016. '',
  15017. '\0',
  15018. '\0',
  15019. '\0',
  15020. '\0',
  15021. '\0',
  15022. '\0',
  15023. '\0',
  15024. '\0',
  15025. '\0',
  15026. '\x0F',
  15027. '\xFF',
  15028. '\xFF',
  15029. '\xFF',
  15030. '\xFF',
  15031. '\xFF',
  15032. '',
  15033. '\0',
  15034. '\0',
  15035. '\0',
  15036. '\0',
  15037. '\0',
  15038. '\0',
  15039. '\0',
  15040. '\0',
  15041. '\0',
  15042. '?',
  15043. '\xFF',
  15044. '\xFF',
  15045. '\xFF',
  15046. '\xFF',
  15047. '\xFF',
  15048. '',
  15049. '\0',
  15050. '\0',
  15051. '\0',
  15052. '\0',
  15053. '\0',
  15054. '\0',
  15055. '\0',
  15056. '\0',
  15057. '\0',
  15058. '\xFF',
  15059. '\xFF',
  15060. '\xFF',
  15061. '\xFF',
  15062. '\xFF',
  15063. '\xFF',
  15064. '',
  15065. '\0',
  15066. '\0',
  15067. '\0',
  15068. '\x04',
  15069. '\0',
  15070. '\0',
  15071. '\0',
  15072. '\0',
  15073. '\x01',
  15074. '\xFF',
  15075. '\xFF',
  15076. '\xFF',
  15077. '\xFF',
  15078. '\xFF',
  15079. '\xFF',
  15080. '',
  15081. '\0',
  15082. '\0',
  15083. '\0',
  15084. '?',
  15085. '\0',
  15086. '\0',
  15087. '\0',
  15088. '\0',
  15089. '\a',
  15090. '\xFF',
  15091. '\xFF',
  15092. '\xFF',
  15093. '\xFF',
  15094. '\xFF',
  15095. '\xFF',
  15096. '',
  15097. '\0',
  15098. '\0',
  15099. '\x03',
  15100. '\xFF',
  15101. '\x80',
  15102. '\0',
  15103. '\0',
  15104. '\0',
  15105. '\x1F',
  15106. '\xFF',
  15107. '\xFF',
  15108. '\xFF',
  15109. '\xFF',
  15110. '\xFF',
  15111. '\xFF',
  15112. '',
  15113. '\0',
  15114. '\0',
  15115. '\x1F',
  15116. '\xFF',
  15117. '',
  15118. '\0',
  15119. '\0',
  15120. '\0',
  15121. '\x7F',
  15122. '\xFF',
  15123. '\xFF',
  15124. '\xFF',
  15125. '\xFF',
  15126. '\xFF',
  15127. '\xFF',
  15128. '',
  15129. '\0',
  15130. '\0',
  15131. '\xFF',
  15132. '\xFF',
  15133. '\xF8',
  15134. '\0',
  15135. '\0',
  15136. '\0',
  15137. '\xFF',
  15138. '\xFF',
  15139. '\xFF',
  15140. '\xFF',
  15141. '\xFF',
  15142. '\xFF',
  15143. '\xFF',
  15144. '',
  15145. '\0',
  15146. '\x0F',
  15147. '\xFF',
  15148. '\xFF',
  15149. '\xFE',
  15150. '\0',
  15151. '\0',
  15152. '\x03',
  15153. '\xFF',
  15154. '\xFF',
  15155. '\xFF',
  15156. '\xFF',
  15157. '\xFF',
  15158. '\xFF',
  15159. '\xFF',
  15160. '',
  15161. '\0',
  15162. '\x7F',
  15163. '\xFF',
  15164. '\xFF',
  15165. '\xFF',
  15166. '\x80',
  15167. '\0',
  15168. '\x0F',
  15169. '\xFF',
  15170. '\xFF',
  15171. '\xFF',
  15172. '\xFF',
  15173. '\xFF',
  15174. '\xFF',
  15175. '\xFF',
  15176. '',
  15177. '\x03',
  15178. '\xFF',
  15179. '\xFF',
  15180. '\xFF',
  15181. '\xFF',
  15182. '',
  15183. '\0',
  15184. '?',
  15185. '\xFF',
  15186. '\xFF',
  15187. '\xFF',
  15188. '\xFF',
  15189. '\xFF',
  15190. '\xFF',
  15191. '\xFF',
  15192. '',
  15193. '\x1F',
  15194. '\xFF',
  15195. '\xFF',
  15196. '\xFF',
  15197. '\xFF',
  15198. '\xF8',
  15199. '\0',
  15200. '\x7F',
  15201. '\xFF',
  15202. '\xFF',
  15203. '\xFF',
  15204. '\xFF',
  15205. '\xFF',
  15206. '\xFF',
  15207. '\xFF',
  15208. '',
  15209. '\xFF',
  15210. '\xFF',
  15211. '\xFF',
  15212. '\xFF',
  15213. '\xFF',
  15214. '\xFE',
  15215. '\x01',
  15216. '\xFF',
  15217. '\xFF',
  15218. '\xFF',
  15219. '\xFF',
  15220. '\xFF',
  15221. '\xFF',
  15222. '\xFF',
  15223. '\xFF',
  15224. '\xFF',
  15225. '\xFF',
  15226. '\xFF',
  15227. '\xFF',
  15228. '\xFF',
  15229. '\xFF',
  15230. '\xFF',
  15231. '\x87',
  15232. '\xFF',
  15233. '\xFF',
  15234. '\xFF',
  15235. '\xFF',
  15236. '\xFF',
  15237. '\xFF',
  15238. '\xFF',
  15239. '\xFF',
  15240. '\xFF',
  15241. '\xFF',
  15242. '\xFF',
  15243. '\xFF',
  15244. '\xFF',
  15245. '\xFF',
  15246. '\xFF',
  15247. '\xFF',
  15248. '\xFF',
  15249. '\xFF',
  15250. '\xFF',
  15251. '\xFF',
  15252. '\xFF',
  15253. '\xFF',
  15254. '\xFF',
  15255. '\xFF',
  15256. '\xFF',
  15257. '\xFF',
  15258. '\xFF',
  15259. '\xFF',
  15260. '\xFF',
  15261. '\xFF',
  15262. '\xFF',
  15263. '\xFF',
  15264. '\xFF',
  15265. '\xFF',
  15266. '\xFF',
  15267. '\xFF',
  15268. '\xFF',
  15269. '\xFF',
  15270. '\xFF',
  15271. '\xFF',
  15272. '\xFF',
  15273. '\xFF',
  15274. '\xFF',
  15275. '\xFF',
  15276. '\xFF',
  15277. '\xFF',
  15278. '\xFF',
  15279. '\xFF',
  15280. '\xFF',
  15281. '\xFF',
  15282. '\xFF',
  15283. '\xFF',
  15284. '\xFF',
  15285. '\xFF',
  15286. '\xFF',
  15287. '\xFF',
  15288. '\xFF',
  15289. '\xFF',
  15290. '\xFF',
  15291. '\xFF',
  15292. '\xFF',
  15293. '\xFF',
  15294. '\xFF',
  15295. '\xFF',
  15296. '\xFF',
  15297. '\xFF',
  15298. '\xFF',
  15299. '\xFF',
  15300. '\xFF',
  15301. '\xFF',
  15302. '\xFF',
  15303. '\xFF',
  15304. '\xFF',
  15305. '\xFF',
  15306. '\xFF',
  15307. '\xFF',
  15308. '\xFF',
  15309. '\xFF',
  15310. '\xFF',
  15311. '\xFF',
  15312. '\xFF',
  15313. '\xFF',
  15314. '\xFF',
  15315. '\xFF',
  15316. '\xFF',
  15317. '\xFF',
  15318. '\xFF',
  15319. '\xFF',
  15320. '\xFF',
  15321. '\xFF',
  15322. '\xFF',
  15323. '\xFF',
  15324. '\xFF',
  15325. '\xFF',
  15326. '\xFF',
  15327. '\xFF',
  15328. '\xFF',
  15329. '\xFF',
  15330. '\xFF',
  15331. '\xFF',
  15332. '\xFF',
  15333. '\xFF',
  15334. '\0',
  15335. '\0',
  15336. '\0',
  15337. '\0',
  15338. '\xFF',
  15339. '\xFF',
  15340. '\xFF',
  15341. '\xFF',
  15342. '\xFF',
  15343. '\xFF',
  15344. '\xFF',
  15345. '\xFF',
  15346. '\xFF',
  15347. '\xFF',
  15348. '\xFF',
  15349. '\xFF',
  15350. '\xFF',
  15351. '\xFF',
  15352. '\xFF',
  15353. '\xFF',
  15354. '\xFF',
  15355. '\xFF',
  15356. '\xFF',
  15357. '\xFF',
  15358. '\xFF',
  15359. '\xFF',
  15360. '\xFF',
  15361. '\xFF',
  15362. '\xFF',
  15363. '\xFF',
  15364. '\xFF',
  15365. '\xFF',
  15366. '\xFF',
  15367. '\xFF',
  15368. '\xFF',
  15369. '\xFF',
  15370. '\xFF',
  15371. '\xFF',
  15372. '\xFF',
  15373. '\xFF',
  15374. '\xFF',
  15375. '\xFF',
  15376. '\xFF',
  15377. '\xFF',
  15378. '\xFF',
  15379. '\xFF',
  15380. '\xFF',
  15381. '\xFF',
  15382. '\xFF',
  15383. '\xFF',
  15384. '\xFF',
  15385. '\xFF',
  15386. '\xFF',
  15387. '\xFF',
  15388. '\xFF',
  15389. '\xFF',
  15390. '\xFF',
  15391. '\xFF',
  15392. '\xFF',
  15393. '\xFF',
  15394. '\xFF',
  15395. '\xFF',
  15396. '\xFF',
  15397. '\xFF',
  15398. '\xFF',
  15399. '\xFF',
  15400. '\xFF',
  15401. '\xFF',
  15402. '\xFF',
  15403. '\xFF',
  15404. '\xFF',
  15405. '\xFF',
  15406. '\xFF',
  15407. '\xFF',
  15408. '\xFF',
  15409. '\xFF',
  15410. '\xFF',
  15411. '\xFF',
  15412. '\xFF',
  15413. '\xFF',
  15414. '\xFF',
  15415. '\xFF',
  15416. '\xFF',
  15417. '\xFF',
  15418. '\xFF',
  15419. '\xFF',
  15420. '\xFF',
  15421. '\xFF',
  15422. '\xFF',
  15423. '\xFF',
  15424. '\x80',
  15425. '\x1F',
  15426. '\xFF',
  15427. '\xFF',
  15428. '\xFF',
  15429. '\xFF',
  15430. '\xFF',
  15431. '\xFF',
  15432. '\xFF',
  15433. '\xFF',
  15434. '\xFF',
  15435. '\xFF',
  15436. '\xFF',
  15437. '\xFC',
  15438. '\0',
  15439. '\0',
  15440. '\0',
  15441. '\x1F',
  15442. '\xFF',
  15443. '\xFF',
  15444. '\xFF',
  15445. '\xFF',
  15446. '\xFF',
  15447. '\xFF',
  15448. '\xFF',
  15449. '\xFF',
  15450. '\xFF',
  15451. '\xFE',
  15452. '\0',
  15453. '\0',
  15454. '\0',
  15455. '\0',
  15456. '\0',
  15457. '?',
  15458. '\xFF',
  15459. '\xFF',
  15460. '\xFF',
  15461. '\xFF',
  15462. '\xFF',
  15463. '\xFF',
  15464. '\xFF',
  15465. '\xFF',
  15466. '\xFF',
  15467. '\xFE',
  15468. '\0',
  15469. '\0',
  15470. '\0',
  15471. '\0',
  15472. '\0',
  15473. '?',
  15474. '\xFF',
  15475. '',
  15476. '\xFF',
  15477. '\xFF',
  15478. '\xFF',
  15479. '\xFF',
  15480. '\xFF',
  15481. '\xFF',
  15482. '\xFF',
  15483. '\xFF',
  15484. '\0',
  15485. '\0',
  15486. '\0',
  15487. '\0',
  15488. '\0',
  15489. '?',
  15490. '\xFF',
  15491. '',
  15492. '\xFF',
  15493. '\xFF',
  15494. '\xFF',
  15495. '\xFF',
  15496. '\xFF',
  15497. '\xFF',
  15498. '\xFF',
  15499. '\xFF',
  15500. '\0',
  15501. '\0',
  15502. '\0',
  15503. '\0',
  15504. '\0',
  15505. '?',
  15506. '\xFF',
  15507. '',
  15508. '\xFF',
  15509. '\xFF',
  15510. '\xFF',
  15511. '\xFF',
  15512. '\xFF',
  15513. '\xFF',
  15514. '\xFF',
  15515. '\xFF',
  15516. '\x80',
  15517. '\0',
  15518. '\0',
  15519. '\0',
  15520. '\0',
  15521. '?',
  15522. '\xFF',
  15523. '',
  15524. '\x1F',
  15525. '\xFF',
  15526. '\xFF',
  15527. '\xFF',
  15528. '\xFF',
  15529. '\xFF',
  15530. '\xFF',
  15531. '\xFF',
  15532. '',
  15533. '\0',
  15534. '\0',
  15535. '\0',
  15536. '\0',
  15537. '\x7F',
  15538. '\xFF',
  15539. '',
  15540. '\x03',
  15541. '\xFF',
  15542. '\xFF',
  15543. '\xFF',
  15544. '\xFF',
  15545. '\xFF',
  15546. '\xFF',
  15547. '\xFF',
  15548. '',
  15549. '\0',
  15550. '\0',
  15551. '\0',
  15552. '\0',
  15553. '\x7F',
  15554. '\xFF',
  15555. '',
  15556. '\0',
  15557. '\x7F',
  15558. '\xFF',
  15559. '\xFF',
  15560. '\xFF',
  15561. '\xFF',
  15562. '\xFF',
  15563. '\xFF',
  15564. '',
  15565. '\0',
  15566. '\0',
  15567. '\0',
  15568. '\0',
  15569. '\x7F',
  15570. '\xFF',
  15571. '\xF8',
  15572. '\0',
  15573. '\x0F',
  15574. '\xFF',
  15575. '\xFF',
  15576. '\xFF',
  15577. '\xFF',
  15578. '\xFF',
  15579. '\xFF',
  15580. '',
  15581. '\0',
  15582. '\0',
  15583. '\0',
  15584. '\0',
  15585. '\x7F',
  15586. '\xFF',
  15587. '\xF8',
  15588. '\0',
  15589. '\x01',
  15590. '\xFF',
  15591. '\xFF',
  15592. '\xFF',
  15593. '\xFF',
  15594. '\xFF',
  15595. '\xFF',
  15596. '\xF8',
  15597. '\0',
  15598. '\0',
  15599. '\0',
  15600. '\0',
  15601. '\x7F',
  15602. '\xFF',
  15603. '\xFC',
  15604. '\0',
  15605. '\0',
  15606. '?',
  15607. '\xFF',
  15608. '\xFF',
  15609. '\xFF',
  15610. '\xFF',
  15611. '\xFF',
  15612. '\xFC',
  15613. '\0',
  15614. '\0',
  15615. '\0',
  15616. '\0',
  15617. '\xFF',
  15618. '\xFF',
  15619. '\xFE',
  15620. '\0',
  15621. '\0',
  15622. '\x0F',
  15623. '\xFF',
  15624. '\xFF',
  15625. '\xFF',
  15626. '\xFF',
  15627. '\xFF',
  15628. '\xFC',
  15629. '\0',
  15630. '\0',
  15631. '\0',
  15632. '\0',
  15633. '\xFF',
  15634. '\xFF',
  15635. '\xFE',
  15636. '\0',
  15637. '\0',
  15638. '\x01',
  15639. '\xFF',
  15640. '\xFF',
  15641. '\xFF',
  15642. '\xFF',
  15643. '\xFF',
  15644. '\xFE',
  15645. '\0',
  15646. '\0',
  15647. '\0',
  15648. '\0',
  15649. '\xFF',
  15650. '\xFF',
  15651. '\xFF',
  15652. '\0',
  15653. '\0',
  15654. '\0',
  15655. '?',
  15656. '\xFF',
  15657. '\xFF',
  15658. '\xFF',
  15659. '\xFF',
  15660. '\xFF',
  15661. '\0',
  15662. '\0',
  15663. '\0',
  15664. '\0',
  15665. '\xFF',
  15666. '\xFF',
  15667. '\xFF',
  15668. '\0',
  15669. '\0',
  15670. '\0',
  15671. '\a',
  15672. '\xFF',
  15673. '\xFF',
  15674. '\xFF',
  15675. '\xFF',
  15676. '\xFF',
  15677. '\x80',
  15678. '\0',
  15679. '\0',
  15680. '\0',
  15681. '\xFF',
  15682. '\xFF',
  15683. '\xFF',
  15684. '\x80',
  15685. '\0',
  15686. '\0',
  15687. '\0',
  15688. '\xFF',
  15689. '\xFF',
  15690. '\xFF',
  15691. '\xFF',
  15692. '\xFF',
  15693. '\x80',
  15694. '\0',
  15695. '\0',
  15696. '\x01',
  15697. '\xFF',
  15698. '\xFF',
  15699. '\xFF',
  15700. '\x80',
  15701. '\0',
  15702. '\0',
  15703. '\0',
  15704. '\x1F',
  15705. '\xFF',
  15706. '\xFF',
  15707. '\xFF',
  15708. '\xFF',
  15709. '',
  15710. '\0',
  15711. '\0',
  15712. '\x01',
  15713. '\xFF',
  15714. '\xFF',
  15715. '\xFF',
  15716. '',
  15717. '\0',
  15718. '\0',
  15719. '\0',
  15720. '\x0F',
  15721. '\xFF',
  15722. '\xFF',
  15723. '\xFF',
  15724. '\xFF',
  15725. '',
  15726. '\0',
  15727. '\0',
  15728. '\x01',
  15729. '\xFF',
  15730. '\xFF',
  15731. '\xFF',
  15732. '',
  15733. '\0',
  15734. '\0',
  15735. '\a',
  15736. '\xFF',
  15737. '\xFF',
  15738. '\xFF',
  15739. '\xFF',
  15740. '\xFF',
  15741. '',
  15742. '\0',
  15743. '\0',
  15744. '\x01',
  15745. '\xFF',
  15746. '\xFF',
  15747. '\xFF',
  15748. '',
  15749. '\0',
  15750. '\x01',
  15751. '\xFF',
  15752. '\xFF',
  15753. '\xFF',
  15754. '\xFF',
  15755. '\xFF',
  15756. '\xFF',
  15757. '\xFE',
  15758. '\0',
  15759. '\0',
  15760. '\x01',
  15761. '\xFF',
  15762. '\xFF',
  15763. '\xFF',
  15764. '',
  15765. '\0',
  15766. '\xFF',
  15767. '\xFF',
  15768. '\xFF',
  15769. '\xFF',
  15770. '\xFF',
  15771. '\xFF',
  15772. '\xFF',
  15773. '\xFF',
  15774. '',
  15775. '\0',
  15776. '\x03',
  15777. '\xFF',
  15778. '\xFF',
  15779. '\xFF',
  15780. '',
  15781. '?',
  15782. '\xFF',
  15783. '\xFF',
  15784. '\xFF',
  15785. '\xFF',
  15786. '\xFF',
  15787. '\xFF',
  15788. '\xFF',
  15789. '\xFF',
  15790. '\xFF',
  15791. '\x80',
  15792. '\x03',
  15793. '\xFF',
  15794. '\xFF',
  15795. '\xFF',
  15796. '\xFF',
  15797. '\xFF',
  15798. '\xFF',
  15799. '\xFF',
  15800. '\xFF',
  15801. '\xFF',
  15802. '\xFF',
  15803. '\xFF',
  15804. '\xFF',
  15805. '\xFF',
  15806. '\xFF',
  15807. '\xFC',
  15808. '\x03',
  15809. '\xFF',
  15810. '\xFF',
  15811. '\xFF',
  15812. '\xFF',
  15813. '\xFF',
  15814. '\xFF',
  15815. '\xFF',
  15816. '\xFF',
  15817. '\xFF',
  15818. '\xFF',
  15819. '\xFF',
  15820. '\xFF',
  15821. '\xFF',
  15822. '\xFF',
  15823. '\xFF',
  15824. '',
  15825. '\xFF',
  15826. '\xFF',
  15827. '\xFF',
  15828. '\xFF',
  15829. '\xFF',
  15830. '\xFF',
  15831. '\xFF',
  15832. '\xFF',
  15833. '\xFF',
  15834. '\xFF',
  15835. '\xFF',
  15836. '\xFF',
  15837. '\xFF',
  15838. '\xFF',
  15839. '\xFF',
  15840. '\xFF',
  15841. '\xFF',
  15842. '\xFF',
  15843. '\xFF',
  15844. '\xFF',
  15845. '\xFF',
  15846. '\xFF',
  15847. '\xFF',
  15848. '\xFF',
  15849. '\xFF',
  15850. '\xFF',
  15851. '\xFF',
  15852. '\xFF',
  15853. '\xFF',
  15854. '\xFF',
  15855. '\xFF',
  15856. '\xFF',
  15857. '\xFF',
  15858. '\xFF',
  15859. '\xFF',
  15860. '\xFF',
  15861. '\xFF',
  15862. '\xFF',
  15863. '\xFF',
  15864. '\xFF',
  15865. '\xFF',
  15866. '\xFF',
  15867. '\xFF',
  15868. '\xFF',
  15869. '\xFF',
  15870. '\xFF',
  15871. '\xFF',
  15872. '\xFF',
  15873. '\xFF',
  15874. '\xFF',
  15875. '\xFF',
  15876. '\xFF',
  15877. '\xFF',
  15878. '\xFF',
  15879. '\xFF',
  15880. '\xFF',
  15881. '\xFF',
  15882. '\xFF',
  15883. '\xFF',
  15884. '\xFF',
  15885. '\xFF',
  15886. '\xFF',
  15887. '\xFF',
  15888. '\xFF',
  15889. '\xFF',
  15890. '\xFF',
  15891. '\xFF',
  15892. '\xFF',
  15893. '\xFF',
  15894. '\xFF',
  15895. '\xFF',
  15896. '\xFF',
  15897. '\xFF',
  15898. '\xFF',
  15899. '\xFF',
  15900. '\xFF',
  15901. '\xFF',
  15902. '\xFF',
  15903. '\xFF',
  15904. '\xFF',
  15905. '\xFF',
  15906. '\xFF',
  15907. '\xFF',
  15908. '\xFF',
  15909. '\xFF',
  15910. '\xFF',
  15911. '\xFF',
  15912. '\xFF',
  15913. '\xFF',
  15914. '\0',
  15915. '\0',
  15916. '\0',
  15917. '\0',
  15918. '\xFF',
  15919. '\xFF',
  15920. '\xFF',
  15921. '\xFF',
  15922. '\xFF',
  15923. '\xFF',
  15924. '\xFF',
  15925. '\xFF',
  15926. '\xFF',
  15927. '\xFF',
  15928. '\xFF',
  15929. '\xFF',
  15930. '\xFF',
  15931. '\xFF',
  15932. '\xFF',
  15933. '\xFF',
  15934. '\xFF',
  15935. '\xFF',
  15936. '\xFF',
  15937. '\xFF',
  15938. '\xFF',
  15939. '\xFF',
  15940. '\xFF',
  15941. '\xFF',
  15942. '\xFF',
  15943. '\xFF',
  15944. '\xFF',
  15945. '\xFF',
  15946. '\xFF',
  15947. '\xFF',
  15948. '\xFF',
  15949. '\xFF',
  15950. '\xFF',
  15951. '',
  15952. '\x0F',
  15953. '\xFF',
  15954. '\xFF',
  15955. '\xFF',
  15956. '\xFF',
  15957. '\xFF',
  15958. '\xFF',
  15959. '\xFF',
  15960. '\xFF',
  15961. '\xFF',
  15962. '\xFF',
  15963. '\xFF',
  15964. '\xFF',
  15965. '\xFF',
  15966. '\xFF',
  15967. '',
  15968. '\0',
  15969. '\x03',
  15970. '\xFF',
  15971. '\xFF',
  15972. '\xFF',
  15973. '\xFF',
  15974. '\xFF',
  15975. '\xFF',
  15976. '\xFF',
  15977. '\xFF',
  15978. '\xFF',
  15979. '\xFF',
  15980. '\xFF',
  15981. '\xFF',
  15982. '\xFF',
  15983. '',
  15984. '\0',
  15985. '\0',
  15986. '\x1F',
  15987. '\xFF',
  15988. '\xFF',
  15989. '\xFF',
  15990. '\xFF',
  15991. '\xFF',
  15992. '\xFF',
  15993. '\xF8',
  15994. '\xFF',
  15995. '\xFF',
  15996. '\xFF',
  15997. '\xFF',
  15998. '\xFF',
  15999. '',
  16000. '\0',
  16001. '\0',
  16002. '\x0F',
  16003. '\xFF',
  16004. '\xFF',
  16005. '\xFF',
  16006. '\xFF',
  16007. '\xFF',
  16008. '\xFF',
  16009. '',
  16010. '\x7F',
  16011. '\xFF',
  16012. '\xFF',
  16013. '\xFF',
  16014. '\xFF',
  16015. '',
  16016. '\0',
  16017. '\0',
  16018. '\a',
  16019. '\xFF',
  16020. '\xFF',
  16021. '\xFF',
  16022. '\xFF',
  16023. '\xFF',
  16024. '\xFF',
  16025. '',
  16026. '\x1F',
  16027. '\xFF',
  16028. '\xFF',
  16029. '\xFF',
  16030. '\xFF',
  16031. '',
  16032. '\0',
  16033. '\0',
  16034. '\x03',
  16035. '\xFF',
  16036. '\xFF',
  16037. '\xFF',
  16038. '\xFF',
  16039. '\xFF',
  16040. '\xFF',
  16041. '',
  16042. '\x0F',
  16043. '\xFF',
  16044. '\xFF',
  16045. '\xFF',
  16046. '\xFF',
  16047. '',
  16048. '\0',
  16049. '\0',
  16050. '\x01',
  16051. '\xFF',
  16052. '\xFF',
  16053. '\xFF',
  16054. '\xFF',
  16055. '\xFF',
  16056. '\xFF',
  16057. '\x80',
  16058. '\x03',
  16059. '\xFF',
  16060. '\xFF',
  16061. '\xFF',
  16062. '\xFF',
  16063. '',
  16064. '\0',
  16065. '\0',
  16066. '\0',
  16067. '\x7F',
  16068. '\xFF',
  16069. '\xFF',
  16070. '\xFF',
  16071. '\xFF',
  16072. '\xFF',
  16073. '\0',
  16074. '\x01',
  16075. '\xFF',
  16076. '\xFF',
  16077. '\xFF',
  16078. '\xFF',
  16079. '',
  16080. '\0',
  16081. '\0',
  16082. '\0',
  16083. '?',
  16084. '\xFF',
  16085. '\xFF',
  16086. '\xFF',
  16087. '\xFF',
  16088. '\xFE',
  16089. '\0',
  16090. '\0',
  16091. '\x7F',
  16092. '\xFF',
  16093. '\xFF',
  16094. '\xFF',
  16095. '',
  16096. '\0',
  16097. '\0',
  16098. '\0',
  16099. '\x1F',
  16100. '\xFF',
  16101. '\xFF',
  16102. '\xFF',
  16103. '\xFF',
  16104. '\xFC',
  16105. '\0',
  16106. '\0',
  16107. '\x1F',
  16108. '\xFF',
  16109. '\xFF',
  16110. '\xFF',
  16111. '',
  16112. '\0',
  16113. '\0',
  16114. '\0',
  16115. '\x0F',
  16116. '\xFF',
  16117. '\xFF',
  16118. '\xFF',
  16119. '\xFF',
  16120. '\xF8',
  16121. '\0',
  16122. '\0',
  16123. '\x0F',
  16124. '\xFF',
  16125. '\xFF',
  16126. '\xFF',
  16127. '',
  16128. '\0',
  16129. '\0',
  16130. '\0',
  16131. '\0',
  16132. '\0',
  16133. '\0',
  16134. '\0',
  16135. '\0',
  16136. '\0',
  16137. '\0',
  16138. '\0',
  16139. '\x03',
  16140. '\xFF',
  16141. '\xFF',
  16142. '\xFF',
  16143. '',
  16144. '\0',
  16145. '\0',
  16146. '\0',
  16147. '\0',
  16148. '\0',
  16149. '\0',
  16150. '\0',
  16151. '\0',
  16152. '\0',
  16153. '\0',
  16154. '\0',
  16155. '\x01',
  16156. '\xFF',
  16157. '\xFF',
  16158. '\xFF',
  16159. '\xF8',
  16160. '\0',
  16161. '\0',
  16162. '\0',
  16163. '\0',
  16164. '\0',
  16165. '\0',
  16166. '\0',
  16167. '\0',
  16168. '\0',
  16169. '\0',
  16170. '\0',
  16171. '\0',
  16172. '\x7F',
  16173. '\xFF',
  16174. '\xFF',
  16175. '\xFC',
  16176. '\0',
  16177. '\0',
  16178. '\0',
  16179. '\0',
  16180. '\0',
  16181. '\0',
  16182. '\0',
  16183. '\0',
  16184. '\0',
  16185. '\0',
  16186. '\0',
  16187. '\0',
  16188. '\x7F',
  16189. '\xFF',
  16190. '\xFF',
  16191. '\xFE',
  16192. '\0',
  16193. '\0',
  16194. '\0',
  16195. '\0',
  16196. '\0',
  16197. '\0',
  16198. '\0',
  16199. '\0',
  16200. '\0',
  16201. '\0',
  16202. '\0',
  16203. '\0',
  16204. '\xFF',
  16205. '\xFF',
  16206. '\xFF',
  16207. '\xFF',
  16208. '\0',
  16209. '\0',
  16210. '\0',
  16211. '\0',
  16212. '\0',
  16213. '\0',
  16214. '\0',
  16215. '\0',
  16216. '\0',
  16217. '\0',
  16218. '\0',
  16219. '\a',
  16220. '\xFF',
  16221. '\xFF',
  16222. '\xFF',
  16223. '\xFF',
  16224. '\0',
  16225. '\0',
  16226. '\0',
  16227. '\0',
  16228. '\0',
  16229. '\0',
  16230. '\0',
  16231. '\0',
  16232. '\0',
  16233. '\0',
  16234. '\0',
  16235. '\x1F',
  16236. '\xFF',
  16237. '\xFF',
  16238. '\xFF',
  16239. '\xFF',
  16240. '\0',
  16241. '\0',
  16242. '\0',
  16243. '\0',
  16244. '\0',
  16245. '\0',
  16246. '\0',
  16247. '\0',
  16248. '\0',
  16249. '\0',
  16250. '\0',
  16251. '\x7F',
  16252. '\xFF',
  16253. '\xFF',
  16254. '\xFF',
  16255. '\xFF',
  16256. '\x01',
  16257. '\x80',
  16258. '\0',
  16259. '\0',
  16260. '\0',
  16261. '\0',
  16262. '\0',
  16263. '\0',
  16264. '\0',
  16265. '\0',
  16266. '\x01',
  16267. '\xFF',
  16268. '\xFF',
  16269. '\xFF',
  16270. '\xFF',
  16271. '\xFF',
  16272. '\x8F',
  16273. '\x80',
  16274. '\0',
  16275. '\0',
  16276. '\0',
  16277. '\0',
  16278. '\0',
  16279. '\0',
  16280. '\0',
  16281. '\0',
  16282. '\a',
  16283. '\xFF',
  16284. '\xFF',
  16285. '\xFF',
  16286. '\xFF',
  16287. '\xFF',
  16288. '\xBF',
  16289. '\x80',
  16290. '\0',
  16291. '\0',
  16292. '\0',
  16293. '\0',
  16294. '\0',
  16295. '\0',
  16296. '\0',
  16297. '\0',
  16298. '\x1F',
  16299. '\xFF',
  16300. '\xFF',
  16301. '\xFF',
  16302. '\xFF',
  16303. '\xFF',
  16304. '\xFF',
  16305. '\x80',
  16306. '\0',
  16307. '\0',
  16308. '\0',
  16309. '\0',
  16310. '\0',
  16311. '\0',
  16312. '\0',
  16313. '\0',
  16314. '?',
  16315. '\xFF',
  16316. '\xFF',
  16317. '\xFF',
  16318. '\xFF',
  16319. '\xFF',
  16320. '\xFF',
  16321. '\x80',
  16322. '\0',
  16323. '\0',
  16324. '\0',
  16325. '\0',
  16326. '\0',
  16327. '\0',
  16328. '\0',
  16329. '\0',
  16330. '?',
  16331. '\xFF',
  16332. '\xFF',
  16333. '\xFF',
  16334. '\xFF',
  16335. '\xFF',
  16336. '\xFF',
  16337. '\x80',
  16338. '\0',
  16339. '\0',
  16340. '\0',
  16341. '\0',
  16342. '\0',
  16343. '\0',
  16344. '\0',
  16345. '\0',
  16346. '?',
  16347. '\xFF',
  16348. '\xFF',
  16349. '\xFF',
  16350. '\xFF',
  16351. '\xFF',
  16352. '\xFF',
  16353. '\x80',
  16354. '\0',
  16355. '\0',
  16356. '\0',
  16357. '\0',
  16358. '\0',
  16359. '\0',
  16360. '\0',
  16361. '\0',
  16362. '?',
  16363. '\xFF',
  16364. '\xFF',
  16365. '\xFF',
  16366. '\xFF',
  16367. '\xFF',
  16368. '\xFF',
  16369. '\x80',
  16370. '\0',
  16371. '\0',
  16372. '\0',
  16373. '\0',
  16374. '\0',
  16375. '\0',
  16376. '\0',
  16377. '\0',
  16378. '?',
  16379. '\xFF',
  16380. '\xFF',
  16381. '\xFF',
  16382. '\xFF',
  16383. '\xFF',
  16384. '\xFF',
  16385. '\x80',
  16386. '\0',
  16387. '\0',
  16388. '\0',
  16389. '\0',
  16390. '\0',
  16391. '\0',
  16392. '\0',
  16393. '\0',
  16394. '?',
  16395. '\xFF',
  16396. '\xFF',
  16397. '\xFF',
  16398. '\xFF',
  16399. '\xFF',
  16400. '\xFF',
  16401. '\xFF',
  16402. '\xFF',
  16403. '\xFF',
  16404. '\xFF',
  16405. '\xFF',
  16406. '\xFF',
  16407. '\xFF',
  16408. '\xFF',
  16409. '\xFF',
  16410. '\xFF',
  16411. '\xFF',
  16412. '\xFF',
  16413. '\xFF',
  16414. '\xFF',
  16415. '\xFF',
  16416. '\xFF',
  16417. '\xFF',
  16418. '\xFF',
  16419. '\xFF',
  16420. '\xFF',
  16421. '\xFF',
  16422. '\xFF',
  16423. '\xFF',
  16424. '\xFF',
  16425. '\xFF',
  16426. '\xFF',
  16427. '\xFF',
  16428. '\xFF',
  16429. '\xFF',
  16430. '\xFF',
  16431. '\xFF',
  16432. '\xFF',
  16433. '\xFF',
  16434. '\xFF',
  16435. '\xFF',
  16436. '\xFF',
  16437. '\xFF',
  16438. '\xFF',
  16439. '\xFF',
  16440. '\xFF',
  16441. '\xFF',
  16442. '\xFF',
  16443. '\xFF',
  16444. '\xFF',
  16445. '\xFF',
  16446. '\xFF',
  16447. '\xFF',
  16448. '\xFF',
  16449. '\xFF',
  16450. '\xFF',
  16451. '\xFF',
  16452. '\xFF',
  16453. '\xFF',
  16454. '\xFF',
  16455. '\xFF',
  16456. '\xFF',
  16457. '\xFF',
  16458. '\xFF',
  16459. '\xFF',
  16460. '\xFF',
  16461. '\xFF',
  16462. '\xFF',
  16463. '\xFF',
  16464. '\xFF',
  16465. '\xFF',
  16466. '\xFF',
  16467. '\xFF',
  16468. '\xFF',
  16469. '\xFF',
  16470. '\xFF',
  16471. '\xFF',
  16472. '\xFF',
  16473. '\xFF',
  16474. '\xFF',
  16475. '\xFF',
  16476. '\xFF',
  16477. '\xFF',
  16478. '\xFF',
  16479. '\xFF',
  16480. '\xFF',
  16481. '\xFF',
  16482. '\xFF',
  16483. '\xFF',
  16484. '\xFF',
  16485. '\xFF',
  16486. '\xFF',
  16487. '\xFF',
  16488. '\xFF',
  16489. '\xFF',
  16490. '\xFF',
  16491. '\xFF',
  16492. '\xFF',
  16493. '\xFF',
  16494. '\0',
  16495. '\0',
  16496. '\0',
  16497. '\0',
  16498. '\xFF',
  16499. '\xFF',
  16500. '\xFF',
  16501. '\xFF',
  16502. '\xFF',
  16503. '\xFF',
  16504. '\xFF',
  16505. '\xFF',
  16506. '\xFF',
  16507. '\xFF',
  16508. '\xFF',
  16509. '\xFF',
  16510. '\xFF',
  16511. '\xFF',
  16512. '\xFF',
  16513. '\xFF',
  16514. '\xFF',
  16515. '\xFF',
  16516. '\xFF',
  16517. '\xFF',
  16518. '\xFF',
  16519. '\xFF',
  16520. '\xFF',
  16521. '\xFF',
  16522. '\xFF',
  16523. '\xFF',
  16524. '\xFF',
  16525. '\xFF',
  16526. '\xFF',
  16527. '\xFF',
  16528. '\xFF',
  16529. '\xFF',
  16530. '\xFF',
  16531. '\xFF',
  16532. '\xFF',
  16533. '\xFF',
  16534. '\xFF',
  16535. '\xFF',
  16536. '\xFF',
  16537. '\xFF',
  16538. '\xFF',
  16539. '\xFF',
  16540. '\xFF',
  16541. '\xFF',
  16542. '\xFF',
  16543. '\xFF',
  16544. '\xFF',
  16545. '\xFF',
  16546. '\xFF',
  16547. '\xFF',
  16548. '\xFF',
  16549. '\xFF',
  16550. '\xFF',
  16551. '\xFF',
  16552. '\xFF',
  16553. '\xFF',
  16554. '\xFF',
  16555. '\xFF',
  16556. '\xFF',
  16557. '\xFF',
  16558. '\xFF',
  16559. '\xFF',
  16560. '\xFF',
  16561. '\xFF',
  16562. '\xFF',
  16563. '\xFF',
  16564. '\xFF',
  16565. '\xFF',
  16566. '\xFF',
  16567. '\xFF',
  16568. '\xFF',
  16569. '\xFF',
  16570. '\xFF',
  16571. '\xFF',
  16572. '\xFF',
  16573. '\xFF',
  16574. '\xFF',
  16575. '\xFF',
  16576. '\xFF',
  16577. '\xFF',
  16578. '\xFF',
  16579. '\xFF',
  16580. '\xFF',
  16581. '\xFF',
  16582. '\xFF',
  16583. '\xFF',
  16584. '\xFF',
  16585. '\xFF',
  16586. '\xFF',
  16587. '\xFF',
  16588. '\xFF',
  16589. '\xFF',
  16590. '\xFF',
  16591. '\xFF',
  16592. '\xFF',
  16593. '\xFF',
  16594. '\xFF',
  16595. '\xFF',
  16596. '\xFF',
  16597. '\xFF',
  16598. '\xFF',
  16599. '\xFF',
  16600. '\xFF',
  16601. '\xFF',
  16602. '\xFF',
  16603. '\xFF',
  16604. '\xFF',
  16605. '\xFF',
  16606. '\xFF',
  16607. '\xFF',
  16608. '\xFF',
  16609. '\xFF',
  16610. '\xFF',
  16611. '\xFF',
  16612. '\xFF',
  16613. '\xFF',
  16614. '\xFF',
  16615. '\xFF',
  16616. '\xFF',
  16617. '\xFF',
  16618. '\xFF',
  16619. '\xFF',
  16620. '\xFF',
  16621. '\xFF',
  16622. '\xFF',
  16623. '\xFF',
  16624. '\xFF',
  16625. '\xFF',
  16626. '\xFF',
  16627. '\xFF',
  16628. '\xFF',
  16629. '\xFF',
  16630. '\xFF',
  16631. '\xFF',
  16632. '\xFF',
  16633. '\xFF',
  16634. '\xFF',
  16635. '\xFF',
  16636. '\xFF',
  16637. '\xFF',
  16638. '\xFF',
  16639. '\xFF',
  16640. '\xFF',
  16641. '\xFF',
  16642. '\xFF',
  16643. '\xFF',
  16644. '\xFF',
  16645. '\xFF',
  16646. '\xFF',
  16647. '\xFF',
  16648. '\xFF',
  16649. '\xFF',
  16650. '\xFF',
  16651. '\xFF',
  16652. '\xFF',
  16653. '\xFF',
  16654. '\xFF',
  16655. '\xFF',
  16656. '\xFF',
  16657. '\xFF',
  16658. '\xFF',
  16659. '\xFF',
  16660. '\xFF',
  16661. '\xFF',
  16662. '\xFF',
  16663. '\xFF',
  16664. '\xFF',
  16665. '\xFF',
  16666. '\xFF',
  16667. '\xFF',
  16668. '\xFF',
  16669. '\xFF',
  16670. '\xFF',
  16671. '\xFF',
  16672. '\xFF',
  16673. '\xFF',
  16674. '\xFF',
  16675. '\xFF',
  16676. '\xFF',
  16677. '\xFF',
  16678. '\xFF',
  16679. '\xFF',
  16680. '\xFF',
  16681. '\xFF',
  16682. '\xFF',
  16683. '\xFF',
  16684. '\xFF',
  16685. '\xFF',
  16686. '\xFF',
  16687. '\xFF',
  16688. '\xFF',
  16689. '\xFF',
  16690. '\xFF',
  16691. '\xFF',
  16692. '\xFF',
  16693. '\xFF',
  16694. '\xFF',
  16695. '\xFF',
  16696. '\xFF',
  16697. '\xFF',
  16698. '\xFF',
  16699. '\xFF',
  16700. '\xFF',
  16701. '\xFF',
  16702. '\xFF',
  16703. '\xFF',
  16704. '\xFF',
  16705. '\xFF',
  16706. '\xFF',
  16707. '\xFF',
  16708. '\xFF',
  16709. '\xFF',
  16710. '\xFF',
  16711. '\xFF',
  16712. '\xFF',
  16713. '\xFF',
  16714. '\xFF',
  16715. '\xFF',
  16716. '\xFF',
  16717. '\xFF',
  16718. '\xFF',
  16719. '\xFF',
  16720. '\xFF',
  16721. '\xFF',
  16722. '\x80',
  16723. '\x0F',
  16724. '\xFF',
  16725. '\xFF',
  16726. '\xFF',
  16727. '\xFF',
  16728. '\xFF',
  16729. '\xFF',
  16730. '\xFF',
  16731. '\xFF',
  16732. '\xFF',
  16733. '\xFF',
  16734. '\xFF',
  16735. '\xFF',
  16736. '\xFF',
  16737. '\xFF',
  16738. '\0',
  16739. '\0',
  16740. '\0',
  16741. '?',
  16742. '\xFF',
  16743. '\xFF',
  16744. '\xFF',
  16745. '\xFF',
  16746. '\xFF',
  16747. '\xFF',
  16748. '\xFF',
  16749. '\xFF',
  16750. '\xFF',
  16751. '\xFF',
  16752. '\xFF',
  16753. '\xFF',
  16754. '\0',
  16755. '\0',
  16756. '\0',
  16757. '\0',
  16758. '\0',
  16759. '\x7F',
  16760. '\xFF',
  16761. '\xFF',
  16762. '\xFF',
  16763. '\xFF',
  16764. '\xFF',
  16765. '\xFF',
  16766. '\xFF',
  16767. '\xFF',
  16768. '\xFF',
  16769. '\xFF',
  16770. '\0',
  16771. '\0',
  16772. '\0',
  16773. '\0',
  16774. '\0',
  16775. '\0',
  16776. '\x01',
  16777. '\xFF',
  16778. '\xFF',
  16779. '\xFF',
  16780. '\xFF',
  16781. '\xFF',
  16782. '\xFF',
  16783. '\xFF',
  16784. '\xFF',
  16785. '\xFF',
  16786. '\0',
  16787. '\0',
  16788. '\0',
  16789. '\0',
  16790. '\0',
  16791. '\0',
  16792. '\0',
  16793. '\0',
  16794. '\a',
  16795. '\xFF',
  16796. '\xFF',
  16797. '\xFF',
  16798. '\xFF',
  16799. '\xFF',
  16800. '\xFF',
  16801. '\xFF',
  16802. '\0',
  16803. '\0',
  16804. '\0',
  16805. '\0',
  16806. '\0',
  16807. '\0',
  16808. '\0',
  16809. '\0',
  16810. '\0',
  16811. '\0',
  16812. '\x1F',
  16813. '\xFF',
  16814. '\xFF',
  16815. '\xFF',
  16816. '\xFF',
  16817. '\xFF',
  16818. '\0',
  16819. '\0',
  16820. '\0',
  16821. '\0',
  16822. '\0',
  16823. '\0',
  16824. '\0',
  16825. '\0',
  16826. '\0',
  16827. '\0',
  16828. '\0',
  16829. '\0',
  16830. '\x7F',
  16831. '\xFF',
  16832. '\xFF',
  16833. '\xFF',
  16834. '\0',
  16835. '\0',
  16836. '\0',
  16837. '\0',
  16838. '\0',
  16839. '\0',
  16840. '\0',
  16841. '\0',
  16842. '\0',
  16843. '\0',
  16844. '\0',
  16845. '\0',
  16846. '\0',
  16847. '\x01',
  16848. '\xFF',
  16849. '\xFF',
  16850. '\0',
  16851. '\0',
  16852. '\0',
  16853. '\0',
  16854. '\0',
  16855. '\0',
  16856. '\0',
  16857. '\0',
  16858. '\0',
  16859. '\0',
  16860. '\0',
  16861. '\0',
  16862. '\0',
  16863. '\0',
  16864. '\0',
  16865. '\a',
  16866. '\0',
  16867. '\0',
  16868. '\0',
  16869. '\0',
  16870. '\0',
  16871. '\0',
  16872. '\0',
  16873. '\0',
  16874. '\0',
  16875. '\0',
  16876. '\0',
  16877. '\0',
  16878. '\0',
  16879. '\0',
  16880. '\0',
  16881. '\0',
  16882. '\0',
  16883. '\0',
  16884. '\0',
  16885. '\0',
  16886. '\0',
  16887. '\0',
  16888. '\0',
  16889. '\0',
  16890. '\0',
  16891. '\0',
  16892. '\0',
  16893. '\0',
  16894. '\0',
  16895. '\0',
  16896. '\0',
  16897. '\0',
  16898. '\0',
  16899. '\0',
  16900. '\0',
  16901. '\0',
  16902. '\0',
  16903. '\0',
  16904. '\0',
  16905. '\0',
  16906. '\0',
  16907. '\0',
  16908. '\0',
  16909. '\0',
  16910. '\0',
  16911. '\0',
  16912. '\0',
  16913. '\0',
  16914. '\0',
  16915. '\0',
  16916. '\0',
  16917. '\0',
  16918. '\0',
  16919. '\0',
  16920. '\0',
  16921. '\0',
  16922. '\0',
  16923. '\0',
  16924. '\0',
  16925. '\0',
  16926. '\0',
  16927. '\0',
  16928. '\0',
  16929. '\0',
  16930. '\0',
  16931. '\0',
  16932. '\0',
  16933. '\0',
  16934. '\0',
  16935. '\0',
  16936. '\0',
  16937. '\0',
  16938. '\0',
  16939. '\0',
  16940. '\0',
  16941. '\0',
  16942. '\0',
  16943. '\0',
  16944. '\0',
  16945. '\0',
  16946. '\0',
  16947. '\0',
  16948. '\0',
  16949. '\0',
  16950. '\0',
  16951. '\0',
  16952. '\0',
  16953. '\0',
  16954. '\0',
  16955. '\0',
  16956. '\0',
  16957. '\0',
  16958. '\0',
  16959. '\0',
  16960. '\0',
  16961. '\0',
  16962. '\0',
  16963. '\0',
  16964. '\0',
  16965. '\0',
  16966. '\0',
  16967. '\0',
  16968. '\0',
  16969. '\0',
  16970. '\0',
  16971. '\0',
  16972. '\0',
  16973. '\0',
  16974. '\0',
  16975. '\0',
  16976. '\0',
  16977. '\0',
  16978. '\0',
  16979. '\0',
  16980. '\0',
  16981. '\0',
  16982. '\0',
  16983. '\0',
  16984. '\0',
  16985. '\0',
  16986. '\0',
  16987. '\0',
  16988. '\0',
  16989. '\0',
  16990. '\0',
  16991. '\0',
  16992. '\0',
  16993. '\0',
  16994. '\0',
  16995. '\0',
  16996. '\0',
  16997. '\0',
  16998. '\0',
  16999. '\0',
  17000. '\0',
  17001. '\0',
  17002. '\0',
  17003. '\0',
  17004. '\0',
  17005. '\0',
  17006. '\0',
  17007. '\0',
  17008. '\0',
  17009. '\0',
  17010. '\0',
  17011. '\0',
  17012. '\0',
  17013. '\0',
  17014. '\0',
  17015. '\0',
  17016. '\0',
  17017. '\0',
  17018. '\0',
  17019. '\0',
  17020. '\0',
  17021. '\0',
  17022. '\0',
  17023. '\0',
  17024. '\0',
  17025. '\0',
  17026. '\0',
  17027. '\0',
  17028. '\0',
  17029. '\0',
  17030. '\0',
  17031. '\0',
  17032. '\0',
  17033. '\0',
  17034. '\0',
  17035. '\0',
  17036. '\0',
  17037. '\0',
  17038. '\0',
  17039. '\0',
  17040. '\0',
  17041. '\0',
  17042. '\0',
  17043. '\0',
  17044. '\0',
  17045. '\0',
  17046. '\0',
  17047. '\0',
  17048. '\0',
  17049. '\0',
  17050. '\0',
  17051. '\0',
  17052. '\0',
  17053. '\0',
  17054. '\0',
  17055. '\x0F',
  17056. '\xFF',
  17057. '\xFF',
  17058. '\xFF',
  17059. '\xFF',
  17060. '\xFF',
  17061. '\xFF',
  17062. '\xFF',
  17063. '\xFF',
  17064. '\xFF',
  17065. '\xFF',
  17066. '\xFF',
  17067. '\xFF',
  17068. '\xFF',
  17069. '\xFF',
  17070. '\xFF',
  17071. '\xFF',
  17072. '\xFF',
  17073. '\xFF',
  17074. '\0',
  17075. '\0',
  17076. '\0',
  17077. '\0'
  17078. }; // idb
  17079. const char *Seraph::StringEncrypt::sm_chain0 = &unk_80EAEA0; // idb
  17080. _UNKNOWN std::string::_Rep::_S_empty_rep_storage; // weak
  17081. _UNKNOWN unk_810FC6C; // weak
  17082. _UNKNOWN `typeinfo for'int; // weak
  17083. _UNKNOWN `typeinfo for'char *; // weak
  17084. char completed_1; // weak
  17085. ConnectManager *g_pConnectManager; // idb
  17086. std::ios_base::Init std::__ioinit; // idb
  17087. IPRegionTable *g_pIPRegionTable; // idb
  17088. std::ios_base::Init std::__ioinit; // idb
  17089. LoginExceptionHandler g_LoginExceptionHandler; // idb
  17090. CAPTCHA::FontFile *g_pGlobalCaptchaFontFile; // idb
  17091. CAPTCHA::Generator *g_pGenerator; // idb
  17092. Login g_Login; // idb
  17093. std::ios_base::Init std::__ioinit; // idb
  17094. int g_SingleDBConnection; // idb
  17095. int g_IgnoreWorldIDZoneIDCheck; // idb
  17096. std::ios_base::Init std::__ioinit; // idb
  17097. std::ios_base::Init std::__ioinit; // idb
  17098. ReLoginManager *g_pReLoginManager; // idb
  17099. std::ios_base::Init std::__ioinit; // idb
  17100. ID_t g_pServerManager; // idb
  17101. std::ios_base::Init std::__ioinit; // idb
  17102. std::ios_base::Init std::__ioinit; // idb
  17103. ThreadManager *g_pThreadManager; // idb
  17104. std::ios_base::Init std::__ioinit; // idb
  17105. Config g_Config; // idb
  17106. std::ios_base::Init std::__ioinit; // idb
  17107. Log *g_pLog; // idb
  17108. MyLock g_log_lock; // idb
  17109. std::ios_base::Init std::__ioinit; // idb
  17110. OopsLogBase theOopsLog; // idb
  17111. std::ios_base::Init std::__ioinit; // idb
  17112. BOOL g_bAuditFlag; // idb
  17113. std::ios_base::Init std::__ioinit; // idb
  17114. std::ios_base::Init std::__ioinit; // idb
  17115. WORLD_GLOBAL_DATA g_WorldGlobalData; // idb
  17116. std::ios_base::Init std::__ioinit; // idb
  17117. UINT g_CurWorld; // idb
  17118. INT g_DBConnectThread; // idb
  17119. std::ios_base::Init std::__ioinit; // idb
  17120. BillPacketFactoryManager *g_pBPacketFactoryManager; // idb
  17121. PacketFactoryManager *g_pPacketFactoryManager; // idb
  17122. std::ios_base::Init std::__ioinit; // idb
  17123. std::ios_base::Init std::__ioinit; // idb
  17124. std::ios_base::Init std::__ioinit; // idb
  17125. std::ios_base::Init std::__ioinit; // idb
  17126. std::ios_base::Init std::__ioinit; // idb
  17127. std::ios_base::Init std::__ioinit; // idb
  17128. std::ios_base::Init std::__ioinit; // idb
  17129. std::ios_base::Init std::__ioinit; // idb
  17130. std::ios_base::Init std::__ioinit; // idb
  17131. std::ios_base::Init std::__ioinit; // idb
  17132. std::ios_base::Init std::__ioinit; // idb
  17133. std::ios_base::Init std::__ioinit; // idb
  17134. std::ios_base::Init std::__ioinit; // idb
  17135. std::ios_base::Init std::__ioinit; // idb
  17136. std::ios_base::Init std::__ioinit; // idb
  17137. std::ios_base::Init std::__ioinit; // idb
  17138. std::ios_base::Init std::__ioinit; // idb
  17139. std::ios_base::Init std::__ioinit; // idb
  17140. std::ios_base::Init std::__ioinit; // idb
  17141. std::ios_base::Init std::__ioinit; // idb
  17142. std::ios_base::Init std::__ioinit; // idb
  17143. std::ios_base::Init std::__ioinit; // idb
  17144. std::ios_base::Init std::__ioinit; // idb
  17145. std::ios_base::Init std::__ioinit; // idb
  17146. std::ios_base::Init std::__ioinit; // idb
  17147. std::ios_base::Init std::__ioinit; // idb
  17148. std::ios_base::Init std::__ioinit; // idb
  17149. std::ios_base::Init std::__ioinit; // idb
  17150. std::ios_base::Init std::__ioinit; // idb
  17151. std::ios_base::Init std::__ioinit; // idb
  17152. std::ios_base::Init std::__ioinit; // idb
  17153. std::ios_base::Init std::__ioinit; // idb
  17154. std::ios_base::Init std::__ioinit; // idb
  17155. std::ios_base::Init std::__ioinit; // idb
  17156. std::ios_base::Init std::__ioinit; // idb
  17157. std::ios_base::Init std::__ioinit; // idb
  17158. std::ios_base::Init std::__ioinit; // idb
  17159. std::ios_base::Init std::__ioinit; // idb
  17160. std::ios_base::Init std::__ioinit; // idb
  17161. std::ios_base::Init std::__ioinit; // idb
  17162. std::ios_base::Init std::__ioinit; // idb
  17163. std::ios_base::Init std::__ioinit; // idb
  17164. std::ios_base::Init std::__ioinit; // idb
  17165. std::ios_base::Init std::__ioinit; // idb
  17166. std::ios_base::Init std::__ioinit; // idb
  17167. std::ios_base::Init std::__ioinit; // idb
  17168. std::ios_base::Init std::__ioinit; // idb
  17169. std::ios_base::Init std::__ioinit; // idb
  17170. std::ios_base::Init std::__ioinit; // idb
  17171. std::ios_base::Init std::__ioinit; // idb
  17172. std::ios_base::Init std::__ioinit; // idb
  17173. std::ios_base::Init std::__ioinit; // idb
  17174. std::ios_base::Init std::__ioinit; // idb
  17175. std::ios_base::Init std::__ioinit; // idb
  17176. std::ios_base::Init std::__ioinit; // idb
  17177. std::ios_base::Init std::__ioinit; // idb
  17178. std::ios_base::Init std::__ioinit; // idb
  17179. std::ios_base::Init std::__ioinit; // idb
  17180. std::ios_base::Init std::__ioinit; // idb
  17181. std::ios_base::Init std::__ioinit; // idb
  17182. std::ios_base::Init std::__ioinit; // idb
  17183. std::ios_base::Init std::__ioinit; // idb
  17184. std::ios_base::Init std::__ioinit; // idb
  17185. std::ios_base::Init std::__ioinit; // idb
  17186. std::ios_base::Init std::__ioinit; // idb
  17187. std::ios_base::Init std::__ioinit; // idb
  17188. std::ios_base::Init std::__ioinit; // idb
  17189. std::ios_base::Init std::__ioinit; // idb
  17190. std::ios_base::Init std::__ioinit; // idb
  17191. std::ios_base::Init std::__ioinit; // idb
  17192. std::ios_base::Init std::__ioinit; // idb
  17193. std::ios_base::Init std::__ioinit; // idb
  17194. std::ios_base::Init std::__ioinit; // idb
  17195. std::ios_base::Init std::__ioinit; // idb
  17196. std::ios_base::Init std::__ioinit; // idb
  17197. std::ios_base::Init std::__ioinit; // idb
  17198. std::ios_base::Init std::__ioinit; // idb
  17199. std::ios_base::Init std::__ioinit; // idb
  17200. std::ios_base::Init std::__ioinit; // idb
  17201. std::ios_base::Init std::__ioinit; // idb
  17202. std::ios_base::Init std::__ioinit; // idb
  17203. std::ios_base::Init std::__ioinit; // idb
  17204. std::ios_base::Init std::__ioinit; // idb
  17205. std::ios_base::Init std::__ioinit; // idb
  17206. std::ios_base::Init std::__ioinit; // idb
  17207. std::ios_base::Init std::__ioinit; // idb
  17208. std::ios_base::Init std::__ioinit; // idb
  17209. std::ios_base::Init std::__ioinit; // idb
  17210. std::ios_base::Init std::__ioinit; // idb
  17211. std::ios_base::Init std::__ioinit; // idb
  17212. std::ios_base::Init std::__ioinit; // idb
  17213. std::ios_base::Init std::__ioinit; // idb
  17214. std::ios_base::Init std::__ioinit; // idb
  17215. std::ios_base::Init std::__ioinit; // idb
  17216. std::ios_base::Init std::__ioinit; // idb
  17217. std::ios_base::Init std::__ioinit; // idb
  17218. std::ios_base::Init std::__ioinit; // idb
  17219. std::ios_base::Init std::__ioinit; // idb
  17220. std::ios_base::Init std::__ioinit; // idb
  17221. std::ios_base::Init std::__ioinit; // idb
  17222. std::ios_base::Init std::__ioinit; // idb
  17223. std::ios_base::Init std::__ioinit; // idb
  17224. std::ios_base::Init std::__ioinit; // idb
  17225. std::ios_base::Init std::__ioinit; // idb
  17226. std::ios_base::Init std::__ioinit; // idb
  17227. std::ios_base::Init std::__ioinit; // idb
  17228. std::ios_base::Init std::__ioinit; // idb
  17229. std::ios_base::Init std::__ioinit; // idb
  17230. std::ios_base::Init std::__ioinit; // idb
  17231. std::ios_base::Init std::__ioinit; // idb
  17232. std::ios_base::Init std::__ioinit; // idb
  17233. std::ios_base::Init std::__ioinit; // idb
  17234. LoginPlayerManager *g_pLoginPlayerManager; // idb
  17235. std::ios_base::Init std::__ioinit; // idb
  17236. std::ios_base::Init std::__ioinit; // idb
  17237. std::ios_base::Init std::__ioinit; // idb
  17238. PlayerPool *g_pPlayerPool; // idb
  17239. std::ios_base::Init std::__ioinit; // idb
  17240. std::ios_base::Init std::__ioinit; // idb
  17241. WorldPlayerQueue *g_pWorldPlayerQueue; // idb
  17242. TurnPlayerQueue *g_pProcessPlayerQueue; // idb
  17243. WorldPlayerCounter g_WorldPlayerCounter; // idb
  17244. WorldPlayerCounter g_WorldPlayerCounter1; // idb
  17245. std::ios_base::Init std::__ioinit; // idb
  17246. std::ios_base::Init std::__ioinit; // idb
  17247. std::ios_base::Init std::__ioinit; // idb
  17248. std::ios_base::Init std::__ioinit; // idb
  17249. std::ios_base::Init std::__ioinit; // idb
  17250. std::ios_base::Init std::__ioinit; // idb
  17251. std::ios_base::Init std::__ioinit; // idb
  17252. std::ios_base::Init std::__ioinit; // idb
  17253. std::ios_base::Init std::__ioinit; // idb
  17254. std::ios_base::Init std::__ioinit; // idb
  17255. std::ios_base::Init std::__ioinit; // idb
  17256. std::ios_base::Init std::__ioinit; // idb
  17257. std::ios_base::Init std::__ioinit; // idb
  17258. std::ios_base::Init std::__ioinit; // idb
  17259. std::ios_base::Init std::__ioinit; // idb
  17260. std::ios_base::Init std::__ioinit; // idb
  17261. std::ios_base::Init std::__ioinit; // idb
  17262. std::ios_base::Init std::__ioinit; // idb
  17263. std::ios_base::Init std::__ioinit; // idb
  17264. std::ios_base::Init std::__ioinit; // idb
  17265. std::ios_base::Init std::__ioinit; // idb
  17266. std::ios_base::Init std::__ioinit; // idb
  17267. std::ios_base::Init std::__ioinit; // idb
  17268. std::ios_base::Init std::__ioinit; // idb
  17269. std::ios_base::Init std::__ioinit; // idb
  17270. std::ios_base::Init std::__ioinit; // idb
  17271. std::ios_base::Init std::__ioinit; // idb
  17272. std::ios_base::Init std::__ioinit; // idb
  17273. std::ios_base::Init std::__ioinit; // idb
  17274. std::ios_base::Init std::__ioinit; // idb
  17275. std::ios_base::Init std::__ioinit; // idb
  17276. std::ios_base::Init std::__ioinit; // idb
  17277. std::ios_base::Init std::__ioinit; // idb
  17278. std::ios_base::Init std::__ioinit; // idb
  17279. std::ios_base::Init std::__ioinit; // idb
  17280. std::ios_base::Init std::__ioinit; // idb
  17281. std::ios_base::Init std::__ioinit; // idb
  17282. std::ios_base::Init std::__ioinit; // idb
  17283. std::ios_base::Init std::__ioinit; // idb
  17284. std::ios_base::Init std::__ioinit; // idb
  17285. std::ios_base::Init std::__ioinit; // idb
  17286. std::ios_base::Init std::__ioinit; // idb
  17287. std::ios_base::Init std::__ioinit; // idb
  17288. std::ios_base::Init std::__ioinit; // idb
  17289. std::ios_base::Init std::__ioinit; // idb
  17290. std::ios_base::Init std::__ioinit; // idb
  17291. std::ios_base::Init std::__ioinit; // idb
  17292. std::ios_base::Init std::__ioinit; // idb
  17293. std::ios_base::Init std::__ioinit; // idb
  17294. std::ios_base::Init std::__ioinit; // idb
  17295. std::ios_base::Init std::__ioinit; // idb
  17296. std::ios_base::Init std::__ioinit; // idb
  17297. std::ios_base::Init std::__ioinit; // idb
  17298. std::ios_base::Init std::__ioinit; // idb
  17299. std::ios_base::Init std::__ioinit; // idb
  17300. std::ios_base::Init std::__ioinit; // idb
  17301. std::ios_base::Init std::__ioinit; // idb
  17302. std::ios_base::Init std::__ioinit; // idb
  17303. std::ios_base::Init std::__ioinit; // idb
  17304. std::ios_base::Init std::__ioinit; // idb
  17305. std::ios_base::Init std::__ioinit; // idb
  17306. std::ios_base::Init std::__ioinit; // idb
  17307. std::ios_base::Init std::__ioinit; // idb
  17308. std::ios_base::Init std::__ioinit; // idb
  17309. std::ios_base::Init std::__ioinit; // idb
  17310. std::ios_base::Init std::__ioinit; // idb
  17311. std::ios_base::Init std::__ioinit; // idb
  17312. std::ios_base::Init std::__ioinit; // idb
  17313. std::ios_base::Init std::__ioinit; // idb
  17314. std::ios_base::Init std::__ioinit; // idb
  17315. std::ios_base::Init std::__ioinit; // idb
  17316. std::ios_base::Init std::__ioinit; // idb
  17317. std::ios_base::Init std::__ioinit; // idb
  17318. std::ios_base::Init std::__ioinit; // idb
  17319. std::ios_base::Init std::__ioinit; // idb
  17320. std::ios_base::Init std::__ioinit; // idb
  17321. DBChooseSceneTable g_DBSceneTable; // idb
  17322. CharConfig g_CharConfig; // idb
  17323. FULLUSERDATA *CharConfig::pUserData; // idb
  17324. std::ios_base::Init std::__ioinit; // idb
  17325. DBLogicManager g_DBLogicManager; // idb
  17326. std::ios_base::Init std::__ioinit; // idb
  17327. std::ios_base::Init std::__ioinit; // idb
  17328. DBThreadManager *g_pDBThreadManager; // idb
  17329. std::ios_base::Init std::__ioinit; // idb
  17330. std::ios_base::Init std::__ioinit; // idb
  17331. ProcessManager *g_pProcessManager; // idb
  17332. std::ios_base::Init std::__ioinit; // idb
  17333. ProcessPlayerManager *g_pProcessPlayerManager; // idb
  17334. std::ios_base::Init std::__ioinit; // idb
  17335. int (*DBC::DBCFile::s_funcPlatformDecrypMemoryFunc)(const char *, const char *, int, char *, int *); // idb
  17336. int (*DBC::DBCFile::s_funcIsEncryptMemory)(const char *, int); // idb
  17337. std::ios_base::Init std::__ioinit; // idb
  17338. std::ios_base::Init std::__ioinit; // idb
  17339. std::ios_base::Init std::__ioinit; // idb
  17340. std::ios_base::Init std::__ioinit; // idb
  17341. std::ios_base::Init std::__ioinit; // idb
  17342. std::ios_base::Init std::__ioinit; // idb
  17343. std::ios_base::Init std::__ioinit; // idb
  17344. std::ios_base::Init std::__ioinit; // idb
  17345. std::ios_base::Init std::__ioinit; // idb
  17346. std::ios_base::Init std::__ioinit; // idb
  17347. CHAR gSocketError[260]; // idb
  17348. std::ios_base::Init std::__ioinit; // idb
  17349. std::ios_base::Init std::__ioinit; // idb
  17350. std::ios_base::Init std::__ioinit; // idb
  17351. INT g_Command_IgnoreMessageBox; // idb
  17352. INT g_Command_Assert; // idb
  17353. std::ios_base::Init std::__ioinit; // idb
  17354. __int64 `guard variable for'__show__(char const*)::llock; // idb
  17355. MyLock __show__(char const*)::llock; // idb
  17356. std::ios_base::Init std::__ioinit; // idb
  17357. std::ios_base::Init std::__ioinit; // idb
  17358. UINT Thread::s_QuitThreadCount; // idb
  17359. UINT Thread::s_CreateThreadCount; // idb
  17360. std::ios_base::Init std::__ioinit; // idb
  17361. __int64 `guard variable for'Thread::MyThreadProcess(void *)::s_thread_lock; // idb
  17362. MyLock Thread::MyThreadProcess(void *)::s_thread_lock; // idb
  17363. std::ios_base::Init std::__ioinit; // idb
  17364. __int64 `guard variable for'ThreadValueManager::getSingleton(void)::sThreadValue; // idb
  17365. ThreadValueManager ThreadValueManager::getSingleton(void)::sThreadValue; // idb
  17366. UINT g_LogFileNameFix_Last; // idb
  17367. UINT g_LogFileNameFix; // idb
  17368. TimeManager *g_pTimeManager; // idb
  17369. std::ios_base::Init std::__ioinit; // idb
  17370. unsigned int CAPTCHA::Generator::generatorImage(CAPTCHA::CAPTCHA_DATA &,bool,bool,bool)::s_totalCounts; // idb
  17371. int Seraph::doMotherCheck(unsigned int,char *)::nStatus; // idb
  17372. // extern _UNKNOWN _gmon_start__; weak
  17373.  
  17374.  
  17375. //----- (08049AE0) --------------------------------------------------------
  17376. int __fastcall init_proc(int a1, int a2)
  17377. {
  17378. int v2; // edx
  17379. int v3; // ecx
  17380.  
  17381. call_gmon_start(a1, a2);
  17382. frame_dummy();
  17383. return _do_global_ctors_aux(v3, v2);
  17384. }
  17385.  
  17386. //----- (08049AF8) --------------------------------------------------------
  17387. int sub_8049AF8()
  17388. {
  17389. return dword_810D4BC();
  17390. }
  17391. // 810D4BC: using guessed type int (*dword_810D4BC)(void);
  17392.  
  17393. //----- (0804A278) --------------------------------------------------------
  17394. #error "804A27B: positive sp value has been found (funcsize=2)"
  17395.  
  17396. //----- (0804A29C) --------------------------------------------------------
  17397. int __fastcall call_gmon_start(int a1, int a2)
  17398. {
  17399. int v3; // [esp-4h] [ebp-8h]
  17400.  
  17401. v3 = a2;
  17402. if ( &_gmon_start__ )
  17403. ((void (__cdecl *)(int))_gmon_start__)(a2);
  17404. return v3;
  17405. }
  17406.  
  17407. //----- (0804A2C0) --------------------------------------------------------
  17408. void _do_global_dtors_aux()
  17409. {
  17410. void (*v0)(void); // edx
  17411.  
  17412. if ( !completed_1 )
  17413. {
  17414. while ( 1 )
  17415. {
  17416. v0 = (void (*)(void))*p_0;
  17417. if ( !*p_0 )
  17418. break;
  17419. ++p_0;
  17420. v0();
  17421. }
  17422. completed_1 = 1;
  17423. }
  17424. }
  17425. // 810D6A8: using guessed type int *p_0;
  17426. // 810FCE4: using guessed type char completed_1;
  17427.  
  17428. //----- (0804A2F4) --------------------------------------------------------
  17429. int frame_dummy()
  17430. {
  17431. int result; // eax
  17432.  
  17433. result = _JCR_LIST__;
  17434. if ( _JCR_LIST__ )
  17435. result = 0;
  17436. return result;
  17437. }
  17438. // 810D3BC: using guessed type int _JCR_LIST__;
  17439.  
  17440. //----- (0804A320) --------------------------------------------------------
  17441. void __cdecl ConnectManager::ConnectManager(ConnectManager *const this)
  17442. {
  17443. bool v1; // zf
  17444. LoginPlayerManager *v2; // esi
  17445. ReLoginManager *v3; // eax
  17446. ReLoginManager *v4; // esi
  17447. tag_ReLoginUnit *v5; // ebx
  17448. int v6; // eax
  17449. int v7; // eax
  17450. signed int v8; // [esp+14h] [ebp-10h]
  17451.  
  17452. Thread::Thread(this);
  17453. v1 = g_pLoginPlayerManager == 0;
  17454. this->_vptr_Thread = (int (**)(...))&off_80BAF90;
  17455. if ( v1 )
  17456. {
  17457. v2 = (LoginPlayerManager *)operator new(0x17B8u);
  17458. LoginPlayerManager::LoginPlayerManager(v2);
  17459. g_pLoginPlayerManager = v2;
  17460. if ( !v2 )
  17461. __assert__("./Main/ConnectManager.cpp", 0xFu, "ConnectManager::ConnectManager()", "g_pLoginPlayerManager");
  17462. }
  17463. if ( !g_pReLoginManager )
  17464. {
  17465. v3 = (ReLoginManager *)operator new(0x19002Cu);
  17466. v3->_vptr_ReLoginManager = (int (**)(...))off_80BAFC8;
  17467. v4 = v3;
  17468. StrTable::StrTable(&v3->m_LoginAccTable.m_pTable);
  17469. v5 = v4->m_LoginUnit;
  17470. v8 = 51199;
  17471. do
  17472. {
  17473. tag_ReLoginUnit::tag_ReLoginUnit(v5);
  17474. --v8;
  17475. ++v5;
  17476. }
  17477. while ( v8 != -1 );
  17478. v6 = (int)&v4->m_CheckOldTimer;
  17479. *(_DWORD *)(v6 + 8) = 0;
  17480. *(_DWORD *)(v6 + 4) = 0;
  17481. v7 = (int)&v4->m_RestCountTimer;
  17482. v4->m_CheckOldTimer.m_uTickTerm = 0;
  17483. v4->m_RestCountTimer.m_uTickTerm = 0;
  17484. *(_DWORD *)(v7 + 8) = 0;
  17485. *(_DWORD *)(v7 + 4) = 0;
  17486. g_pReLoginManager = v4;
  17487. }
  17488. this->m_Active = 0;
  17489. }
  17490. // 80BAF90: using guessed type _DWORD (__cdecl *off_80BAF90)(ConnectManager *this);
  17491. // 80BAFC8: using guessed type _DWORD (__cdecl *off_80BAFC8[2])(ReLoginManager *this);
  17492.  
  17493. //----- (0804A46C) --------------------------------------------------------
  17494. void __noreturn sub_804A46C()
  17495. {
  17496. _DWORD *v0; // [esp+0h] [ebp-10h]
  17497.  
  17498. Thread::~Thread(v0);
  17499. _Unwind_Resume();
  17500. }
  17501.  
  17502. //----- (0804A4AC) --------------------------------------------------------
  17503. void __cdecl ConnectManager::ConnectManager(ConnectManager *const this)
  17504. {
  17505. bool v1; // zf
  17506. LoginPlayerManager *v2; // esi
  17507. ReLoginManager *v3; // eax
  17508. ReLoginManager *v4; // esi
  17509. tag_ReLoginUnit *v5; // ebx
  17510. int v6; // eax
  17511. int v7; // eax
  17512. signed int v8; // [esp+14h] [ebp-10h]
  17513.  
  17514. Thread::Thread(this);
  17515. v1 = g_pLoginPlayerManager == 0;
  17516. this->_vptr_Thread = (int (**)(...))&off_80BAF90;
  17517. if ( v1 )
  17518. {
  17519. v2 = (LoginPlayerManager *)operator new(0x17B8u);
  17520. LoginPlayerManager::LoginPlayerManager(v2);
  17521. g_pLoginPlayerManager = v2;
  17522. if ( !v2 )
  17523. __assert__("./Main/ConnectManager.cpp", 0xFu, "ConnectManager::ConnectManager()", "g_pLoginPlayerManager");
  17524. }
  17525. if ( !g_pReLoginManager )
  17526. {
  17527. v3 = (ReLoginManager *)operator new(0x19002Cu);
  17528. v3->_vptr_ReLoginManager = (int (**)(...))off_80BAFC8;
  17529. v4 = v3;
  17530. StrTable::StrTable(&v3->m_LoginAccTable.m_pTable);
  17531. v5 = v4->m_LoginUnit;
  17532. v8 = 51199;
  17533. do
  17534. {
  17535. tag_ReLoginUnit::tag_ReLoginUnit(v5);
  17536. --v8;
  17537. ++v5;
  17538. }
  17539. while ( v8 != -1 );
  17540. v6 = (int)&v4->m_CheckOldTimer;
  17541. *(_DWORD *)(v6 + 8) = 0;
  17542. *(_DWORD *)(v6 + 4) = 0;
  17543. v7 = (int)&v4->m_RestCountTimer;
  17544. v4->m_CheckOldTimer.m_uTickTerm = 0;
  17545. v4->m_RestCountTimer.m_uTickTerm = 0;
  17546. *(_DWORD *)(v7 + 8) = 0;
  17547. *(_DWORD *)(v7 + 4) = 0;
  17548. g_pReLoginManager = v4;
  17549. }
  17550. this->m_Active = 0;
  17551. }
  17552. // 80BAF90: using guessed type _DWORD (__cdecl *off_80BAF90)(ConnectManager *this);
  17553. // 80BAFC8: using guessed type _DWORD (__cdecl *off_80BAFC8[2])(ReLoginManager *this);
  17554.  
  17555. //----- (0804A5F8) --------------------------------------------------------
  17556. void __noreturn sub_804A5F8()
  17557. {
  17558. _DWORD *v0; // [esp+0h] [ebp-10h]
  17559.  
  17560. Thread::~Thread(v0);
  17561. _Unwind_Resume();
  17562. }
  17563.  
  17564. //----- (0804A638) --------------------------------------------------------
  17565. void __cdecl ConnectManager::~ConnectManager(ConnectManager *const this)
  17566. {
  17567. LoginPlayerManager *v1; // ebx
  17568. bool v2; // zf
  17569.  
  17570. v1 = g_pLoginPlayerManager;
  17571. v2 = g_pLoginPlayerManager == 0;
  17572. this->_vptr_Thread = (int (**)(...))&off_80BAF90;
  17573. if ( !v2 )
  17574. {
  17575. LoginPlayerManager::~LoginPlayerManager(v1);
  17576. operator delete((IPRegionTable *const )v1);
  17577. g_pLoginPlayerManager = 0;
  17578. }
  17579. Thread::~Thread(this);
  17580. }
  17581. // 80BAF90: using guessed type _DWORD (__cdecl *off_80BAF90)(ConnectManager *this);
  17582.  
  17583. //----- (0804A6D0) --------------------------------------------------------
  17584. void __cdecl ConnectManager::~ConnectManager(ConnectManager *const this)
  17585. {
  17586. LoginPlayerManager *v1; // ebx
  17587. bool v2; // zf
  17588.  
  17589. v1 = g_pLoginPlayerManager;
  17590. v2 = g_pLoginPlayerManager == 0;
  17591. this->_vptr_Thread = (int (**)(...))&off_80BAF90;
  17592. if ( !v2 )
  17593. {
  17594. LoginPlayerManager::~LoginPlayerManager(v1);
  17595. operator delete((IPRegionTable *const )v1);
  17596. g_pLoginPlayerManager = 0;
  17597. }
  17598. Thread::~Thread(this);
  17599. }
  17600. // 80BAF90: using guessed type _DWORD (__cdecl *off_80BAF90)(ConnectManager *this);
  17601.  
  17602. //----- (0804A768) --------------------------------------------------------
  17603. void __cdecl ConnectManager::~ConnectManager(ConnectManager *const this)
  17604. {
  17605. LoginPlayerManager *v1; // ebx
  17606. bool v2; // zf
  17607.  
  17608. v1 = g_pLoginPlayerManager;
  17609. v2 = g_pLoginPlayerManager == 0;
  17610. this->_vptr_Thread = (int (**)(...))&off_80BAF90;
  17611. if ( !v2 )
  17612. {
  17613. LoginPlayerManager::~LoginPlayerManager(v1);
  17614. operator delete((IPRegionTable *const )v1);
  17615. g_pLoginPlayerManager = 0;
  17616. }
  17617. Thread::~Thread(this);
  17618. operator delete((IPRegionTable *const )this);
  17619. }
  17620. // 80BAF90: using guessed type _DWORD (__cdecl *off_80BAF90)(ConnectManager *this);
  17621.  
  17622. //----- (0804A808) --------------------------------------------------------
  17623. #error "804A862: positive sp value has been found (funcsize=25)"
  17624.  
  17625. //----- (0804A8C8) --------------------------------------------------------
  17626. void __cdecl ConnectManager::Quit(ConnectManager *const this)
  17627. {
  17628. LoginPlayerManager::RemoveAllPlayer(g_pLoginPlayerManager);
  17629. }
  17630.  
  17631. //----- (0804A92C) --------------------------------------------------------
  17632. #error "804AAB4: positive sp value has been found (funcsize=95)"
  17633.  
  17634. //----- (0804ABE0) --------------------------------------------------------
  17635. void __cdecl _tcf_0(void *a1)
  17636. {
  17637. std::ios_base::Init::~Init(&std::__ioinit);
  17638. }
  17639.  
  17640. //----- (0804ABF0) --------------------------------------------------------
  17641. void `global constructor keyed to'g_pConnectManager()
  17642. {
  17643. std::ios_base::Init::Init(&std::__ioinit);
  17644. __cxa_atexit(_tcf_0, 0, &_dso_handle);
  17645. }
  17646. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  17647.  
  17648. //----- (0804AC1C) --------------------------------------------------------
  17649. void __cdecl ReLoginManager::~ReLoginManager(int a2)
  17650. {
  17651. *(_DWORD *)a2 = off_80BAFC8;
  17652. StrTable::~StrTable((StrTable *const )(a2 + 4));
  17653. }
  17654. // 80BAFC8: using guessed type _DWORD (__cdecl *off_80BAFC8[2])(ReLoginManager *this);
  17655.  
  17656. //----- (0804AC3C) --------------------------------------------------------
  17657. void __cdecl ReLoginManager::~ReLoginManager(int a2)
  17658. {
  17659. *(_DWORD *)a2 = off_80BAFC8;
  17660. StrTable::~StrTable((StrTable *const )(a2 + 4));
  17661. operator delete((IPRegionTable *const )a2);
  17662. }
  17663. // 80BAFC8: using guessed type _DWORD (__cdecl *off_80BAFC8[2])(ReLoginManager *this);
  17664.  
  17665. //----- (0804AC64) --------------------------------------------------------
  17666. void __cdecl ConnectManager::stop(int a2)
  17667. {
  17668. *(_DWORD *)(a2 + 12) = 0;
  17669. }
  17670.  
  17671. //----- (0804AC74) --------------------------------------------------------
  17672. void __cdecl tag_IPRegion::CleanUp(_DWORD *a2)
  17673. {
  17674. *a2 = -1;
  17675. a2[2] = 0;
  17676. a2[1] = 0;
  17677. }
  17678.  
  17679. //----- (0804AC90) --------------------------------------------------------
  17680. void __cdecl tag_IPRegion::tag_IPRegion(tag_IPRegion *const this)
  17681. {
  17682. tag_IPRegion::CleanUp(this);
  17683. }
  17684.  
  17685. //----- (0804AC9C) --------------------------------------------------------
  17686. void __cdecl tag_IPRegion::tag_IPRegion(tag_IPRegion *const this)
  17687. {
  17688. tag_IPRegion::CleanUp(this);
  17689. }
  17690.  
  17691. //----- (0804ACA8) --------------------------------------------------------
  17692. void __cdecl IPRegionTable::IPRegionTable(_DWORD *a2)
  17693. {
  17694. *a2 = off_80BB128;
  17695. a2[1] = 0;
  17696. a2[2] = 0;
  17697. }
  17698. // 80BB128: using guessed type _DWORD (__cdecl *off_80BB128[2])(IPRegionTable *this);
  17699.  
  17700. //----- (0804ACC4) --------------------------------------------------------
  17701. void __cdecl IPRegionTable::IPRegionTable(_DWORD *a2)
  17702. {
  17703. *a2 = off_80BB128;
  17704. a2[1] = 0;
  17705. a2[2] = 0;
  17706. }
  17707. // 80BB128: using guessed type _DWORD (__cdecl *off_80BB128[2])(IPRegionTable *this);
  17708.  
  17709. //----- (0804ACE0) --------------------------------------------------------
  17710. void __cdecl IPRegionTable::~IPRegionTable(IPRegionTable *const this)
  17711. {
  17712. IPRegion *v1; // eax
  17713.  
  17714. v1 = this->m_RegionData;
  17715. this->_vptr_IPRegionTable = (int (**)(...))off_80BB128;
  17716. this->m_MaxRegionCount = 0;
  17717. if ( v1 )
  17718. {
  17719. operator delete[](v1);
  17720. this->m_RegionData = 0;
  17721. }
  17722. }
  17723. // 80BB128: using guessed type _DWORD (__cdecl *off_80BB128[2])(IPRegionTable *this);
  17724.  
  17725. //----- (0804AD1C) --------------------------------------------------------
  17726. void __cdecl IPRegionTable::~IPRegionTable(IPRegionTable *const this)
  17727. {
  17728. IPRegion *v1; // eax
  17729.  
  17730. v1 = this->m_RegionData;
  17731. this->_vptr_IPRegionTable = (int (**)(...))off_80BB128;
  17732. this->m_MaxRegionCount = 0;
  17733. if ( v1 )
  17734. {
  17735. operator delete[](v1);
  17736. this->m_RegionData = 0;
  17737. }
  17738. }
  17739. // 80BB128: using guessed type _DWORD (__cdecl *off_80BB128[2])(IPRegionTable *this);
  17740.  
  17741. //----- (0804AD58) --------------------------------------------------------
  17742. void __cdecl IPRegionTable::~IPRegionTable(IPRegionTable *const this)
  17743. {
  17744. IPRegion *v1; // eax
  17745.  
  17746. v1 = this->m_RegionData;
  17747. this->_vptr_IPRegionTable = (int (**)(...))off_80BB128;
  17748. this->m_MaxRegionCount = 0;
  17749. if ( v1 )
  17750. {
  17751. operator delete[](v1);
  17752. this->m_RegionData = 0;
  17753. }
  17754. operator delete(this);
  17755. }
  17756. // 80BB128: using guessed type _DWORD (__cdecl *off_80BB128[2])(IPRegionTable *this);
  17757.  
  17758. //----- (0804ADA0) --------------------------------------------------------
  17759. void __cdecl IPRegionTable::Init(IPRegionTable *const this)
  17760. {
  17761. int v1; // ebx
  17762. IPRegion *v2; // edi
  17763. tag_IPRegion *i; // esi
  17764. int v4; // esi
  17765. int v5; // edi
  17766. IPRegion *v6; // ebx
  17767. IPRegion *v7; // ebx
  17768. const DBC::DBCFile::FIELD *v8; // eax
  17769. in_addr_t v9; // eax
  17770. IPRegion *v10; // ebx
  17771. const DBC::DBCFile::FIELD *v11; // eax
  17772. in_addr_t v12; // eax
  17773. DBC::DBCFile ThirdFile; // [esp+10h] [ebp-88h]
  17774.  
  17775. DBC::DBCFile::DBCFile(&ThirdFile, 0, 1, "<EMPTY>");
  17776. if ( !DBC::DBCFile::OpenFromTXT(&ThirdFile, "./Config/IPRegionTable.txt", 0) )
  17777. __assert__("./Main/IpTable.cpp", 0x36u, "void IPRegionTable::Init()", "ret");
  17778. v1 = ThirdFile.m_nRecordsNum;
  17779. this->m_MaxRegionCount = ThirdFile.m_nRecordsNum;
  17780. v2 = (IPRegion *)operator new[](12 * v1);
  17781. for ( i = v2; --v1 != -1; ++i )
  17782. tag_IPRegion::tag_IPRegion(i);
  17783. this->m_RegionData = v2;
  17784. if ( !v2 )
  17785. __assert__("./Main/IpTable.cpp", 0x3Du, "void IPRegionTable::Init()", "m_RegionData");
  17786. v4 = 0;
  17787. if ( this->m_MaxRegionCount > 0 )
  17788. {
  17789. v5 = 0;
  17790. do
  17791. {
  17792. v6 = this->m_RegionData;
  17793. v6[v5].m_CountyID = DBC::DBCFile::Search_Posistion(&ThirdFile, v4, 1)->iValue;
  17794. v7 = this->m_RegionData;
  17795. v8 = DBC::DBCFile::Search_Posistion(&ThirdFile, v4, 2);
  17796. v9 = inet_addr((const char *)v8->iValue);
  17797. LOWORD(v9) = __ROR2__(v9, 8);
  17798. v9 = __ROR4__(v9, 16);
  17799. LOWORD(v9) = __ROR2__(v9, 8);
  17800. v7[v5].m_IPBegin = v9;
  17801. v10 = this->m_RegionData;
  17802. v11 = DBC::DBCFile::Search_Posistion(&ThirdFile, v4, 3);
  17803. v12 = inet_addr((const char *)v11->iValue);
  17804. ++v4;
  17805. LOWORD(v12) = __ROR2__(v12, 8);
  17806. v12 = __ROR4__(v12, 16);
  17807. LOWORD(v12) = __ROR2__(v12, 8);
  17808. v10[v5].m_IPEnd = v12;
  17809. ++v5;
  17810. }
  17811. while ( this->m_MaxRegionCount > v4 );
  17812. }
  17813. DBC::DBCFile::~DBCFile(&ThirdFile);
  17814. }
  17815.  
  17816. //----- (0804AF98) --------------------------------------------------------
  17817. INT __cdecl IPRegionTable::FindIPRegion(IPRegionTable *const this, UINT uIP)
  17818. {
  17819. IPRegion *v2; // eax
  17820. INT v3; // edx
  17821. INT v4; // ebx
  17822. INT v5; // ecx
  17823. signed int v6; // edi
  17824. int v7; // edx
  17825.  
  17826. v2 = this->m_RegionData;
  17827. v3 = -1;
  17828. if ( v2 )
  17829. {
  17830. v4 = this->m_MaxRegionCount;
  17831. v5 = 0;
  17832. v6 = -1;
  17833. if ( v4 > 0 )
  17834. {
  17835. v7 = 0;
  17836. while ( v2[v7].m_IPBegin > uIP || v2[v7].m_IPEnd < uIP )
  17837. {
  17838. ++v5;
  17839. ++v7;
  17840. if ( v4 <= v5 )
  17841. goto LABEL_7;
  17842. }
  17843. v6 = v2[v7].m_CountyID;
  17844. }
  17845. LABEL_7:
  17846. v3 = v6;
  17847. }
  17848. return v3;
  17849. }
  17850.  
  17851. //----- (0804AFE8) --------------------------------------------------------
  17852. INT __cdecl IPRegionTable::FindIPRegion(IPRegionTable *const this, CHAR *cIP)
  17853. {
  17854. UINT v2; // eax
  17855.  
  17856. if ( !cIP )
  17857. return -1;
  17858. v2 = inet_addr(cIP);
  17859. LOWORD(v2) = __ROR2__(v2, 8);
  17860. v2 = __ROR4__(v2, 16);
  17861. LOWORD(v2) = __ROR2__(v2, 8);
  17862. return IPRegionTable::FindIPRegion(this, v2);
  17863. }
  17864.  
  17865. //----- (0804B028) --------------------------------------------------------
  17866. void __cdecl _tcf_0_0(void *a1)
  17867. {
  17868. std::ios_base::Init::~Init(&std::__ioinit);
  17869. }
  17870.  
  17871. //----- (0804B038) --------------------------------------------------------
  17872. void `global constructor keyed to'g_pIPRegionTable()
  17873. {
  17874. std::ios_base::Init::Init(&std::__ioinit);
  17875. __cxa_atexit(_tcf_0_0, 0, &_dso_handle);
  17876. }
  17877. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  17878.  
  17879. //----- (0804B064) --------------------------------------------------------
  17880. void __cdecl Login::Login(_DWORD *a2)
  17881. {
  17882. int v2; // edx
  17883. int v3; // edx
  17884.  
  17885. v2 = (int)(a2 + 1);
  17886. *a2 = 0;
  17887. *(_DWORD *)(v2 + 8) = 0;
  17888. *(_DWORD *)(v2 + 4) = 0;
  17889. v3 = (int)(a2 + 4);
  17890. a2[1] = 0;
  17891. a2[4] = 0;
  17892. *(_DWORD *)(v3 + 8) = 0;
  17893. *(_DWORD *)(v3 + 4) = 0;
  17894. }
  17895.  
  17896. //----- (0804B0A4) --------------------------------------------------------
  17897. void __cdecl Login::Login(_DWORD *a2)
  17898. {
  17899. int v2; // edx
  17900. int v3; // edx
  17901.  
  17902. v2 = (int)(a2 + 1);
  17903. *a2 = 0;
  17904. *(_DWORD *)(v2 + 8) = 0;
  17905. *(_DWORD *)(v2 + 4) = 0;
  17906. v3 = (int)(a2 + 4);
  17907. a2[1] = 0;
  17908. a2[4] = 0;
  17909. *(_DWORD *)(v3 + 8) = 0;
  17910. *(_DWORD *)(v3 + 4) = 0;
  17911. }
  17912.  
  17913. //----- (0804B0E4) --------------------------------------------------------
  17914. void __cdecl Login::~Login(Login *const this)
  17915. {
  17916. ;
  17917. }
  17918.  
  17919. //----- (0804B0EC) --------------------------------------------------------
  17920. void __cdecl Login::~Login(Login *const this)
  17921. {
  17922. ;
  17923. }
  17924.  
  17925. //----- (0804B0F4) --------------------------------------------------------
  17926. BOOL __cdecl __noreturn Login::Loop(Login *const this)
  17927. {
  17928. TimeManager *v1; // ecx
  17929. UINT v2; // ebx
  17930. UINT v3; // edi
  17931.  
  17932. DiskLog("./Log/Login", "\r\nLoop...");
  17933. DiskLog("./Log/Login", "g_pConnectManager->start( )...");
  17934. Thread::start(&g_pConnectManager->0);
  17935. DiskLog("./Log/Login", "g_pThreadManager->Start( )...");
  17936. if ( !ThreadManager::Start(g_pThreadManager) )
  17937. __assert__("./Main/Login.cpp", 0x63u, "BOOL Login::Loop()", "bRet");
  17938. DiskLog("./Log/Login", "g_pDBThreadManager->Start() ...");
  17939. DBThreadManager::Start(g_pDBThreadManager);
  17940. DiskLog("./Log/Login", "g_pProcessManager->Loop( )...");
  17941. Thread::start(&g_pProcessManager->0);
  17942. while ( 1 )
  17943. {
  17944. v2 = TimeManager::Time2Day(v1);
  17945. v3 = TimeManager::CurrentTime((int)g_pTimeManager);
  17946. if ( !this->m_FlushLogTimer.m_bOper )
  17947. {
  17948. this->m_FlushLogTimer.m_bOper = 1;
  17949. this->m_FlushLogTimer.m_uTickTerm = 2000;
  17950. this->m_FlushLogTimer.m_uTickOld = v3;
  17951. }
  17952. g_LogFileNameFix = v2;
  17953. if ( this->m_FlushLogTimer.m_bOper && this->m_FlushLogTimer.m_uTickOld + this->m_FlushLogTimer.m_uTickTerm <= v3 )
  17954. {
  17955. this->m_FlushLogTimer.m_uTickOld = v3;
  17956. LogSystem_Flush();
  17957. }
  17958. if ( g_DBConnectThread )
  17959. {
  17960. if ( !this->m_ClearConnectThreadTimer.m_bOper )
  17961. {
  17962. this->m_ClearConnectThreadTimer.m_bOper = 1;
  17963. this->m_ClearConnectThreadTimer.m_uTickTerm = 120000;
  17964. this->m_ClearConnectThreadTimer.m_uTickOld = v3;
  17965. }
  17966. if ( this->m_ClearConnectThreadTimer.m_uTickOld + this->m_ClearConnectThreadTimer.m_uTickTerm <= v3 )
  17967. {
  17968. this->m_ClearConnectThreadTimer.m_uTickOld = v3;
  17969. g_DBConnectThread = 0;
  17970. }
  17971. }
  17972. else if ( this->m_ClearConnectThreadTimer.m_bOper )
  17973. {
  17974. this->m_ClearConnectThreadTimer.m_uTickTerm = 0;
  17975. this->m_ClearConnectThreadTimer.m_bOper = 0;
  17976. this->m_ClearConnectThreadTimer.m_uTickOld = 0;
  17977. }
  17978. MySleep(100);
  17979. }
  17980. }
  17981. // 8049B18: using guessed type int __stdcall __cxa_end_catch(_DWORD);
  17982.  
  17983. //----- (0804B314) --------------------------------------------------------
  17984. BOOL __cdecl Login::Exit(_DWORD *a2)
  17985. {
  17986. IPRegionTable *v1; // ebx
  17987. IPRegionTable *v2; // ebx
  17988. IPRegionTable *v3; // ebx
  17989. IPRegionTable *v4; // ebx
  17990. IPRegionTable *v5; // ebx
  17991. IPRegionTable *v6; // ebx
  17992. IPRegionTable *v7; // ebx
  17993. IPRegionTable *v8; // ebx
  17994.  
  17995. DiskLog("./Log/Login", "Begin delete...");
  17996. if ( g_pProcessManager )
  17997. {
  17998. (*((void (__cdecl **)(ProcessManager *))g_pProcessManager->_vptr_Thread + 1))(g_pProcessManager);
  17999. g_pProcessManager = 0;
  18000. }
  18001. DiskLog("./Log/Login", "g_pProcessManager delete...OK");
  18002. v1 = (IPRegionTable *)g_pPlayerPool;
  18003. if ( g_pPlayerPool )
  18004. {
  18005. PlayerPool::~PlayerPool(g_pPlayerPool);
  18006. operator delete(v1);
  18007. g_pPlayerPool = 0;
  18008. }
  18009. DiskLog("./Log/Login", "g_pPlayerPool delete...OK");
  18010. if ( g_pPacketFactoryManager )
  18011. {
  18012. (*((void (__cdecl **)(PacketFactoryManager *))g_pPacketFactoryManager->_vptr_PacketFactoryManager + 2))(g_pPacketFactoryManager);
  18013. g_pPacketFactoryManager = 0;
  18014. }
  18015. DiskLog("./Log/Login", "g_pPacketFactoryManager delete...OK");
  18016. v2 = (IPRegionTable *)g_pProcessPlayerQueue;
  18017. if ( g_pProcessPlayerQueue )
  18018. {
  18019. TurnPlayerQueue::~TurnPlayerQueue(g_pProcessPlayerQueue);
  18020. operator delete(v2);
  18021. g_pProcessPlayerQueue = 0;
  18022. }
  18023. DiskLog("./Log/Login", "g_pProcessPlayerQueue delete...OK");
  18024. v3 = (IPRegionTable *)g_pWorldPlayerQueue;
  18025. if ( g_pWorldPlayerQueue )
  18026. {
  18027. WorldPlayerQueue::~WorldPlayerQueue(g_pWorldPlayerQueue);
  18028. operator delete(v3);
  18029. g_pWorldPlayerQueue = 0;
  18030. }
  18031. DiskLog("./Log/Login", "g_pWorldPlayerQueue delete...OK");
  18032. v4 = (IPRegionTable *)g_pThreadManager;
  18033. if ( g_pThreadManager )
  18034. {
  18035. ThreadManager::~ThreadManager(g_pThreadManager);
  18036. operator delete(v4);
  18037. g_pThreadManager = 0;
  18038. }
  18039. DiskLog("./Log/Login", "g_pThreadManager delete...OK");
  18040. v5 = *(IPRegionTable **)&g_pServerManager;
  18041. if ( *(_DWORD *)&g_pServerManager )
  18042. {
  18043. ServerManager::~ServerManager(*(ServerManager *const *)&g_pServerManager);
  18044. operator delete(v5);
  18045. *(_DWORD *)&g_pServerManager = 0;
  18046. }
  18047. DiskLog("./Log/Login", "g_pServerManager delete...OK");
  18048. if ( g_pConnectManager )
  18049. {
  18050. (*((void (__cdecl **)(ConnectManager *))g_pConnectManager->_vptr_Thread + 1))(g_pConnectManager);
  18051. g_pConnectManager = 0;
  18052. }
  18053. DiskLog("./Log/Login", "g_pConnectManager delete...OK");
  18054. v6 = (IPRegionTable *)g_pDBThreadManager;
  18055. if ( g_pDBThreadManager )
  18056. {
  18057. DBThreadManager::~DBThreadManager(g_pDBThreadManager);
  18058. operator delete(v6);
  18059. g_pDBThreadManager = 0;
  18060. }
  18061. DiskLog("./Log/Login", "g_pDBThreadManager delete ... OK");
  18062. v7 = (IPRegionTable *)g_pGlobalCaptchaFontFile;
  18063. if ( g_pGlobalCaptchaFontFile )
  18064. {
  18065. CAPTCHA::FontFile::~FontFile(g_pGlobalCaptchaFontFile);
  18066. operator delete(v7);
  18067. g_pGlobalCaptchaFontFile = 0;
  18068. }
  18069. DiskLog("./Log/Login", "g_pGlobalCaptchaFontFile delete ... OK");
  18070. if ( g_pIPRegionTable )
  18071. {
  18072. (*((void (__cdecl **)(IPRegionTable *))g_pIPRegionTable->_vptr_IPRegionTable + 1))(g_pIPRegionTable);
  18073. g_pIPRegionTable = 0;
  18074. }
  18075. DiskLog("./Log/Login", "g_pIPRegionTable delete ... OK");
  18076. v8 = (IPRegionTable *)g_pGenerator;
  18077. if ( g_pGenerator )
  18078. {
  18079. CAPTCHA::Generator::~Generator(g_pGenerator);
  18080. operator delete(v8);
  18081. g_pGenerator = 0;
  18082. }
  18083. DiskLog("./Log/Login", "g_pGenerator delete ... OK");
  18084. DiskLog("./Log/Login", "End delete...");
  18085. *a2 = 1;
  18086. return 1;
  18087. }
  18088.  
  18089. //----- (0804B65C) --------------------------------------------------------
  18090. #error "804BB23: positive sp value has been found (funcsize=274)"
  18091.  
  18092. //----- (0804BB58) --------------------------------------------------------
  18093. BOOL __cdecl Login::InitLogin(Login *const this)
  18094. {
  18095. ConnectManager *const v1; // ST08_4
  18096.  
  18097. if ( !PlayerPool::Init(g_pPlayerPool) )
  18098. __assert__("./Main/Login.cpp", 0x148u, "BOOL Login::InitLogin()", "bRet");
  18099. DiskLog("./Log/Login", "g_pPlayerPool->Init()...OK");
  18100. if ( !((int (__cdecl *)(PacketFactoryManager *))*g_pPacketFactoryManager->_vptr_PacketFactoryManager)(g_pPacketFactoryManager) )
  18101. __assert__("./Main/Login.cpp", 0x14Du, "BOOL Login::InitLogin()", "bRet");
  18102. DiskLog("./Log/Login", "g_pPacketFactoryManager->Init()...OK");
  18103. if ( !((int (__cdecl *)(BillPacketFactoryManager *))*g_pBPacketFactoryManager->_vptr_BillPacketFactoryManager)(g_pBPacketFactoryManager) )
  18104. __assert__("./Main/Login.cpp", 0x151u, "BOOL Login::InitLogin()", "bRet");
  18105. DiskLog("./Log/Login", "g_pBPacketFactoryManager->Init()...OK");
  18106. if ( !TurnPlayerQueue::Init(g_pProcessPlayerQueue) )
  18107. __assert__("./Main/Login.cpp", 0x154u, "BOOL Login::InitLogin()", "bRet");
  18108. DiskLog("./Log/Login", "g_pTurnPlayerQueue->Init() ... OK");
  18109. if ( !WorldPlayerQueue::Init(g_pWorldPlayerQueue) )
  18110. __assert__("./Main/Login.cpp", 0x158u, "BOOL Login::InitLogin()", "bRet");
  18111. DiskLog("./Log/Login", "g_pWorldPlayerQueue->Init() ... OK");
  18112. if ( !DBThreadManager::Init(g_pDBThreadManager) )
  18113. __assert__("./Main/Login.cpp", 0x15Cu, "BOOL Login::InitLogin()", "bRet");
  18114. DiskLog("./Log/Login", "g_pDBThreadManager->Init()...OK");
  18115. if ( !DBThreadManager::CheckWorldIDZoneID(
  18116. g_pDBThreadManager,
  18117. g_Config.m_WorldInfo.m_WorldID,
  18118. g_Config.m_WorldInfo.m_ZoneID) )
  18119. __assert__("./Main/Login.cpp", 0x160u, "BOOL Login::InitLogin()", "bRet");
  18120. DiskLog(
  18121. "./Log/Login",
  18122. "g_pDBThreadManager->CheckWorldIDZoneID(%d,%d)...OK",
  18123. g_Config.m_WorldInfo.m_WorldID,
  18124. g_Config.m_WorldInfo.m_ZoneID);
  18125. if ( !ConnectManager::Init(v1) )
  18126. __assert__("./Main/Login.cpp", 0x166u, "BOOL Login::InitLogin()", "bRet");
  18127. DiskLog("./Log/Login", "g_pConnectManager->Init()...OK");
  18128. if ( !ProcessManager::Init((int)g_pProcessManager) )
  18129. __assert__("./Main/Login.cpp", 0x16Bu, "BOOL Login::InitLogin()", "bRet");
  18130. DiskLog("./Log/Login", "g_pProcessManager->Init()...OK");
  18131. if ( !ThreadManager::Init(g_pThreadManager) )
  18132. __assert__("./Main/Login.cpp", 0x170u, "BOOL Login::InitLogin()", "bRet");
  18133. DiskLog("./Log/Login", "g_pThreadManager->Init()...OK");
  18134. CAPTCHA::FontFile::openFromFile(g_pGlobalCaptchaFontFile, "./Config/ascii.cpf");
  18135. CAPTCHA::Generator::setFontFile((const CAPTCHA::FontFile *)g_pGenerator, g_pGlobalCaptchaFontFile);
  18136. DiskLog("./Log/Login", "g_pGenerator->setFontFile()...OK");
  18137. return 1;
  18138. }
  18139.  
  18140. //----- (0804BE9C) --------------------------------------------------------
  18141. #error "804BF5F: positive sp value has been found (funcsize=44)"
  18142.  
  18143. //----- (0804BF74) --------------------------------------------------------
  18144. void __cdecl Login::Stop(Login *const this)
  18145. {
  18146. if ( g_pConnectManager )
  18147. (*((void (__cdecl **)(ConnectManager *))g_pConnectManager->_vptr_Thread + 2))(g_pConnectManager);
  18148. }
  18149.  
  18150. //----- (0804BFE4) --------------------------------------------------------
  18151. void __cdecl LoginExceptionHandler::LoginExceptionHandler(LoginExceptionHandler *const this)
  18152. {
  18153. signal(13, (__sighandler_t)1);
  18154. signal(11, LoginExceptionHandler::SEGHandler);
  18155. signal(8, LoginExceptionHandler::FPEHandler);
  18156. signal(4, LoginExceptionHandler::ILLHandler);
  18157. signal(2, LoginExceptionHandler::INTHandler);
  18158. signal(15, LoginExceptionHandler::TERMHandler);
  18159. signal(6, LoginExceptionHandler::ABORTHandler);
  18160. signal(25, LoginExceptionHandler::XFSZHandler);
  18161. }
  18162.  
  18163. //----- (0804C058) --------------------------------------------------------
  18164. void __cdecl LoginExceptionHandler::LoginExceptionHandler(LoginExceptionHandler *const this)
  18165. {
  18166. signal(13, (__sighandler_t)1);
  18167. signal(11, LoginExceptionHandler::SEGHandler);
  18168. signal(8, LoginExceptionHandler::FPEHandler);
  18169. signal(4, LoginExceptionHandler::ILLHandler);
  18170. signal(2, LoginExceptionHandler::INTHandler);
  18171. signal(15, LoginExceptionHandler::TERMHandler);
  18172. signal(6, LoginExceptionHandler::ABORTHandler);
  18173. signal(25, LoginExceptionHandler::XFSZHandler);
  18174. }
  18175.  
  18176. //----- (0804C0CC) --------------------------------------------------------
  18177. void __cdecl __noreturn LoginExceptionHandler::INTHandler(INT a1)
  18178. {
  18179. DumpStack("INT exception:\r\n");
  18180. exit(0);
  18181. }
  18182.  
  18183. //----- (0804C0E8) --------------------------------------------------------
  18184. void __cdecl __noreturn LoginExceptionHandler::TERMHandler(INT a1)
  18185. {
  18186. DumpStack("TERM exception:\r\n");
  18187. exit(0);
  18188. }
  18189.  
  18190. //----- (0804C104) --------------------------------------------------------
  18191. void __cdecl __noreturn LoginExceptionHandler::ABORTHandler(INT a1)
  18192. {
  18193. DumpStack("ABORT exception:\r\n");
  18194. exit(0);
  18195. }
  18196.  
  18197. //----- (0804C120) --------------------------------------------------------
  18198. void __cdecl __noreturn LoginExceptionHandler::ILLHandler(INT a1)
  18199. {
  18200. DumpStack("ILL exception:\r\n");
  18201. exit(0);
  18202. }
  18203.  
  18204. //----- (0804C13C) --------------------------------------------------------
  18205. void __cdecl __noreturn LoginExceptionHandler::FPEHandler(INT a1)
  18206. {
  18207. DumpStack("FPE exception:\r\n");
  18208. exit(0);
  18209. }
  18210.  
  18211. //----- (0804C158) --------------------------------------------------------
  18212. void __cdecl __noreturn LoginExceptionHandler::SEGHandler(INT a1)
  18213. {
  18214. DumpStack("SEG exception:\r\n");
  18215. exit(0);
  18216. }
  18217.  
  18218. //----- (0804C174) --------------------------------------------------------
  18219. void __cdecl __noreturn LoginExceptionHandler::XFSZHandler(INT a1)
  18220. {
  18221. DumpStack("XFSZ exception:\r\n");
  18222. exit(0);
  18223. }
  18224.  
  18225. //----- (0804C190) --------------------------------------------------------
  18226. void __cdecl _tcf_0_1(void *a1)
  18227. {
  18228. std::ios_base::Init::~Init(&std::__ioinit);
  18229. }
  18230.  
  18231. //----- (0804C1A0) --------------------------------------------------------
  18232. void __cdecl _tcf_1(void *a1)
  18233. {
  18234. ;
  18235. }
  18236.  
  18237. //----- (0804C1A8) --------------------------------------------------------
  18238. void `global constructor keyed to'g_Login()
  18239. {
  18240. std::ios_base::Init::Init(&std::__ioinit);
  18241. __cxa_atexit(_tcf_0_1, 0, &_dso_handle);
  18242. Login::Login(&g_Login);
  18243. __cxa_atexit(_tcf_1, 0, &_dso_handle);
  18244. LoginExceptionHandler::LoginExceptionHandler(&g_LoginExceptionHandler);
  18245. }
  18246. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  18247.  
  18248. //----- (0804C1FC) --------------------------------------------------------
  18249. int __cdecl __noreturn main(int argc, const char **argv, const char **envp)
  18250. {
  18251. bool v3; // zf
  18252. bool j; // sf
  18253. unsigned __int8 v5; // of
  18254. signed int v6; // ecx
  18255. const char *v7; // esi
  18256. const char *v8; // edi
  18257. signed int v9; // ecx
  18258. const char *v10; // esi
  18259. const char *v11; // edi
  18260. signed int v12; // ecx
  18261. const char *v13; // esi
  18262. const char *v14; // edi
  18263. const char *v15; // ebx
  18264. signed int v16; // ecx
  18265. const char *v17; // esi
  18266. const char *v18; // edi
  18267. TimeManager *v19; // edi
  18268. signed int v20; // ecx
  18269. const char *v21; // esi
  18270. TimeManager *v22; // esi
  18271. UINT v23; // ST3C_4
  18272. int v24; // eax
  18273. unsigned int v25; // eax
  18274. int i; // [esp+8h] [ebp-10h]
  18275.  
  18276. if ( argc > 1 )
  18277. {
  18278. i = 1;
  18279. v5 = __OFSUB__(1, argc);
  18280. v3 = argc == 1;
  18281. for ( j = 1 - argc < 0; j ^ v5; j = i - argc < 0 )
  18282. {
  18283. v15 = argv[i];
  18284. v16 = 14;
  18285. v17 = argv[i];
  18286. v18 = "-ignoreassert";
  18287. do
  18288. {
  18289. if ( !v16 )
  18290. break;
  18291. v3 = *v17++ == *v18++;
  18292. --v16;
  18293. }
  18294. while ( v3 );
  18295. if ( v3 )
  18296. {
  18297. g_Command_Assert = 1;
  18298. }
  18299. else
  18300. {
  18301. v19 = &stru_80BBB20;
  18302. v20 = 13;
  18303. v21 = argv[i];
  18304. do
  18305. {
  18306. if ( !v20 )
  18307. break;
  18308. v3 = *v21++ == LOBYTE(v19->m_StartTime);
  18309. v19 = (TimeManager *)((char *)v19 + 1);
  18310. --v20;
  18311. }
  18312. while ( v3 );
  18313. if ( v3 )
  18314. g_Command_Assert = 2;
  18315. }
  18316. v6 = 18;
  18317. v7 = v15;
  18318. v8 = "-ignoremessagebox";
  18319. do
  18320. {
  18321. if ( !v6 )
  18322. break;
  18323. v3 = *v7++ == *v8++;
  18324. --v6;
  18325. }
  18326. while ( v3 );
  18327. if ( v3 )
  18328. g_Command_IgnoreMessageBox = 1;
  18329. v9 = 10;
  18330. v10 = v15;
  18331. v11 = "-singledb";
  18332. do
  18333. {
  18334. if ( !v9 )
  18335. break;
  18336. v3 = *v10++ == *v11++;
  18337. --v9;
  18338. }
  18339. while ( v3 );
  18340. if ( v3 )
  18341. g_SingleDBConnection = 1;
  18342. v12 = 15;
  18343. v13 = v15;
  18344. v14 = "-ignoreidcheck";
  18345. do
  18346. {
  18347. if ( !v12 )
  18348. break;
  18349. v3 = *v13++ == *v14++;
  18350. --v12;
  18351. }
  18352. while ( v3 );
  18353. if ( v3 )
  18354. g_IgnoreWorldIDZoneIDCheck = 1;
  18355. v5 = __OFSUB__(++i, argc);
  18356. v3 = i == argc;
  18357. }
  18358. }
  18359. DBC::DBCFile::s_funcIsEncryptMemory = Cyclone::IsEncrptMemory;
  18360. DBC::DBCFile::s_funcPlatformDecrypMemoryFunc = (int (*)(const char *, const char *, int, char *, int *))Cyclone::PlatformDecrypMemory;
  18361. v22 = (TimeManager *)operator new(0x54u);
  18362. TimeManager::TimeManager((int)v22);
  18363. g_pTimeManager = v22;
  18364. TimeManager::Init(v22);
  18365. LogSystem_Init();
  18366. DiskLog("./Log/Login", (const CHAR *)&stru_80BBB20.m_TM.tm_sec + 1);
  18367. TimeManager::SetTime((int)g_pTimeManager);
  18368. v23 = g_pTimeManager->m_StartTime;
  18369. v24 = TimeManager::Time2DWORD(g_pTimeManager);
  18370. DiskLog("./Log/Login", (const CHAR *)&stru_80BBB20.m_TM.tm_mon + 1, v24, v23);
  18371. v25 = TimeManager::CurrentTime((int)g_pTimeManager);
  18372. srand(v25);
  18373. if ( !Login::Init(&g_Login) )
  18374. __assert__((const CHAR *)&stru_80BBB20.m_GameTime + 3, 0x41u, "INT main(INT, CHAR**)", "bRet");
  18375. Login::Loop(&g_Login);
  18376. }
  18377.  
  18378. //----- (0804C44C) --------------------------------------------------------
  18379. void __cdecl _tcf_0_2(void *a1)
  18380. {
  18381. std::ios_base::Init::~Init(&std::__ioinit);
  18382. }
  18383.  
  18384. //----- (0804C45C) --------------------------------------------------------
  18385. void `global constructor keyed to'g_IgnoreWorldIDZoneIDCheck()
  18386. {
  18387. std::ios_base::Init::Init(&std::__ioinit);
  18388. __cxa_atexit(_tcf_0_2, 0, &_dso_handle);
  18389. }
  18390. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  18391.  
  18392. //----- (0804C488) --------------------------------------------------------
  18393. BOOL __cdecl MIBAO::InitMiBaoGroupKey(MiBaoGroup *const gp)
  18394. {
  18395. MiBaoGroup *v1; // ebx
  18396. signed int v2; // ecx
  18397. CHAR *v3; // edi
  18398. signed int v4; // ebx
  18399. int v5; // esi
  18400. int v6; // edx
  18401. MiBaoGroup *v7; // ecx
  18402. BYTE v8; // dl
  18403. MiBaoUint *v9; // ebx
  18404. unsigned int v10; // esi
  18405. BYTE rColumn; // [esp+13h] [ebp-35h]
  18406. BYTE nNum; // [esp+1Bh] [ebp-2Dh]
  18407.  
  18408. v1 = gp;
  18409. v2 = 2;
  18410. do
  18411. {
  18412. v1->unit[0].column = -1;
  18413. v1->unit[0].row = -1;
  18414. *(_WORD *)v1->unit[0].key = 0;
  18415. v1->unit[0].key[2] = 0;
  18416. *(_WORD *)v1->unit[0].value = 0;
  18417. v3 = &v1->unit[0].value[2];
  18418. v1 = (MiBaoGroup *)((char *)v1 + 8);
  18419. --v2;
  18420. *v3 = 0;
  18421. }
  18422. while ( v2 >= 0 );
  18423. nNum = 0;
  18424. do
  18425. {
  18426. v4 = 7;
  18427. v5 = rand() % 7;
  18428. v6 = rand() % 7;
  18429. rColumn = v6;
  18430. if ( (unsigned __int8)v5 <= 6u && (unsigned __int8)v6 <= 6u )
  18431. {
  18432. LOBYTE(v4) = 0;
  18433. v7 = gp;
  18434. while ( 1 )
  18435. {
  18436. if ( v7->unit[0].row <= 6u )
  18437. {
  18438. v8 = v7->unit[0].column;
  18439. if ( v8 <= 6u && v7->unit[0].row == (unsigned __int8)v5 && v8 == rColumn )
  18440. break;
  18441. }
  18442. ++v4;
  18443. v7 = (MiBaoGroup *)((char *)v7 + 8);
  18444. if ( v4 > 2 )
  18445. {
  18446. v9 = &gp->unit[nNum];
  18447. v9->row = v5;
  18448. v9->column = rColumn;
  18449. v10 = (unsigned __int8)v5 + 7 * rColumn;
  18450. if ( v10 > 0x30 )
  18451. __assert__(
  18452. "./Main/MiBao.cpp",
  18453. 0x30u,
  18454. "static BOOL MIBAO::InitMiBaoGroupKey(MiBaoGroup&)",
  18455. "kIndex >= 0 && kIndex < MIBAO_TABLE_ROW_MAX*MIBAO_TABLE_COLUMN_MAX");
  18456. strncpy(v9->key, g_MiBaoKeyTable[v10], 2u);
  18457. ++nNum;
  18458. break;
  18459. }
  18460. }
  18461. }
  18462. }
  18463. while ( nNum <= 2u );
  18464. return 1;
  18465. }
  18466.  
  18467. //----- (0804C618) --------------------------------------------------------
  18468. BOOL __cdecl MIBAO::InitMiBaoGroupKey1(MiBaoGroup *const gp)
  18469. {
  18470. MiBaoGroup *v1; // ebx
  18471. signed int v2; // ecx
  18472. CHAR *v3; // edi
  18473. signed int v4; // ebx
  18474. int v5; // esi
  18475. int v6; // edx
  18476. MiBaoGroup *v7; // ecx
  18477. BYTE v8; // dl
  18478. MiBaoUint *v9; // ebx
  18479. unsigned int v10; // esi
  18480. BYTE rColumn; // [esp+13h] [ebp-35h]
  18481. BYTE nNum; // [esp+1Bh] [ebp-2Dh]
  18482.  
  18483. v1 = gp;
  18484. v2 = 2;
  18485. do
  18486. {
  18487. v1->unit[0].column = -1;
  18488. v1->unit[0].row = -1;
  18489. *(_WORD *)v1->unit[0].key = 0;
  18490. v1->unit[0].key[2] = 0;
  18491. *(_WORD *)v1->unit[0].value = 0;
  18492. v3 = &v1->unit[0].value[2];
  18493. v1 = (MiBaoGroup *)((char *)v1 + 8);
  18494. --v2;
  18495. *v3 = 0;
  18496. }
  18497. while ( v2 >= 0 );
  18498. nNum = 0;
  18499. do
  18500. {
  18501. v4 = 7;
  18502. v5 = rand() % 7;
  18503. v6 = rand() % 7;
  18504. rColumn = v6;
  18505. if ( (unsigned __int8)v5 <= 6u && (unsigned __int8)v6 <= 6u )
  18506. {
  18507. LOBYTE(v4) = 0;
  18508. v7 = gp;
  18509. while ( 1 )
  18510. {
  18511. if ( v7->unit[0].row <= 6u )
  18512. {
  18513. v8 = v7->unit[0].column;
  18514. if ( v8 <= 6u && v7->unit[0].row == (unsigned __int8)v5 && v8 == rColumn )
  18515. break;
  18516. }
  18517. ++v4;
  18518. v7 = (MiBaoGroup *)((char *)v7 + 8);
  18519. if ( v4 > 2 )
  18520. {
  18521. v9 = &gp->unit[nNum];
  18522. v9->row = v5;
  18523. v9->column = rColumn;
  18524. v10 = (unsigned __int8)v5 + 7 * rColumn;
  18525. if ( v10 > 0x30 )
  18526. __assert__(
  18527. "./Main/MiBao.cpp",
  18528. 0x50u,
  18529. "static BOOL MIBAO::InitMiBaoGroupKey1(MiBaoGroup&)",
  18530. "kIndex >= 0 && kIndex < MIBAO_TABLE_ROW_MAX*MIBAO_TABLE_COLUMN_MAX");
  18531. strncpy(v9->key, g_MiBaoKeyTable1[v10], 2u);
  18532. ++nNum;
  18533. break;
  18534. }
  18535. }
  18536. }
  18537. }
  18538. while ( nNum <= 2u );
  18539. return 1;
  18540. }
  18541.  
  18542. //----- (0804C7A8) --------------------------------------------------------
  18543. void __cdecl _tcf_0_3(void *a1)
  18544. {
  18545. std::ios_base::Init::~Init(&std::__ioinit);
  18546. }
  18547.  
  18548. //----- (0804C7B8) --------------------------------------------------------
  18549. void `global constructor keyed to'g_MiBaoKeyTable()
  18550. {
  18551. std::ios_base::Init::Init(&std::__ioinit);
  18552. __cxa_atexit(_tcf_0_3, 0, &_dso_handle);
  18553. }
  18554. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  18555.  
  18556. //----- (0804C7E4) --------------------------------------------------------
  18557. void __cdecl tag_ReLoginUnit::CleanUp(_DWORD *a2)
  18558. {
  18559. *a2 = 0;
  18560. a2[1] = 0;
  18561. a2[2] = 30;
  18562. memset(a2 + 3, 0, 0x10u);
  18563. a2[7] = 1;
  18564. }
  18565.  
  18566. //----- (0804C818) --------------------------------------------------------
  18567. void __cdecl tag_ReLoginUnit::tag_ReLoginUnit(tag_ReLoginUnit *const this)
  18568. {
  18569. tag_ReLoginUnit::CleanUp(this);
  18570. }
  18571.  
  18572. //----- (0804C824) --------------------------------------------------------
  18573. void __cdecl tag_ReLoginUnit::tag_ReLoginUnit(tag_ReLoginUnit *const this)
  18574. {
  18575. tag_ReLoginUnit::CleanUp(this);
  18576. }
  18577.  
  18578. //----- (0804C830) --------------------------------------------------------
  18579. void __cdecl tag_ReLoginUnit::SetIPAddr(tag_ReLoginUnit *const this, const CHAR *pIP)
  18580. {
  18581. if ( !pIP )
  18582. __assert__("./Main/ReLogin.cpp", 0x18u, "void tag_ReLoginUnit::SetIPAddr(const CHAR*)", "pIP");
  18583. strncpy(this->m_szIP, pIP, 0xFu);
  18584. this->m_szIP[15] = 0;
  18585. }
  18586.  
  18587. //----- (0804C874) --------------------------------------------------------
  18588. BOOL __cdecl tag_ReLoginUnit::IsSameIPReLogin(tag_ReLoginUnit *const this, const CHAR *pIP)
  18589. {
  18590. int v2; // edx
  18591.  
  18592. if ( !pIP )
  18593. __assert__("./Main/ReLogin.cpp", 0x1Fu, "BOOL tag_ReLoginUnit::IsSameIPReLogin(const CHAR*)", "pIP");
  18594. v2 = 0;
  18595. while ( pIP[v2] == this->m_szIP[v2] )
  18596. {
  18597. if ( ++v2 > 14 )
  18598. return 1;
  18599. }
  18600. return 0;
  18601. }
  18602.  
  18603. //----- (0804C8C8) --------------------------------------------------------
  18604. BOOL __cdecl ReLoginManager::Init(ReLoginManager *const this)
  18605. {
  18606. StrTable::InitTable(&this->m_LoginAccTable, 0xC800u, 0x32u);
  18607. this->m_CurPos = 0;
  18608. return 1;
  18609. }
  18610.  
  18611. //----- (0804C944) --------------------------------------------------------
  18612. ReLoginUnit *__cdecl ReLoginManager::FindAccReLoginUnit(ReLoginManager *const this, const CHAR *szAccName)
  18613. {
  18614. ReLoginUnit *result; // eax
  18615.  
  18616. if ( szAccName && *szAccName )
  18617. result = (ReLoginUnit *)StrTable::Get(&this->m_LoginAccTable, szAccName);
  18618. else
  18619. result = 0;
  18620. return result;
  18621. }
  18622.  
  18623. //----- (0804C9BC) --------------------------------------------------------
  18624. BOOL __cdecl ReLoginManager::IsAccCanReLogin(ReLoginManager *const this, const CHAR *szAccName, const CHAR *pIP, INT *const nResult)
  18625. {
  18626. BOOL result; // eax
  18627. UINT v5; // edi
  18628. INT v6; // eax
  18629. INT v7; // edx
  18630. char *v8; // ST30_4
  18631. INT v9; // edx
  18632. ReLoginUnit *pUnit; // [esp+14h] [ebp-14h]
  18633.  
  18634. if ( g_Config.m_LoginInfo.ReLoginLimit <= 0 )
  18635. {
  18636. result = 1;
  18637. if ( g_Config.m_LoginInfo.ReLoginStop <= 0 )
  18638. return result;
  18639. }
  18640. if ( !szAccName || !*szAccName || !pIP || !*pIP )
  18641. return 0;
  18642. *nResult = 23;
  18643. pUnit = ReLoginManager::FindAccReLoginUnit(this, szAccName);
  18644. if ( pUnit )
  18645. {
  18646. v5 = TimeManager::CurrentTime((int)g_pTimeManager);
  18647. if ( pUnit->m_StopLoginTime )
  18648. {
  18649. *nResult = 28;
  18650. CacheLog(
  18651. 0,
  18652. "STOPTIME:ReLoginManager::IsAccCanReLogin...acc=%s must wait %dms!!!",
  18653. szAccName,
  18654. g_Config.m_LoginInfo.ReLoginStopTime - (v5 - pUnit->m_StopLoginTime));
  18655. }
  18656. else
  18657. {
  18658. if ( tag_ReLoginUnit::IsSameIPReLogin(pUnit, pIP) != 1 )
  18659. {
  18660. CacheLog(
  18661. 0,
  18662. "WARNING:ReLoginManager::IsAccCanReLogin...acc=%s oldip=%s newip=%s different IP!!!",
  18663. szAccName,
  18664. pUnit->m_szIP,
  18665. pIP);
  18666. tag_ReLoginUnit::CleanUp(pUnit);
  18667. pUnit->m_LoginTime = TimeManager::CurrentTime((int)g_pTimeManager);
  18668. --pUnit->m_LoginCount;
  18669. tag_ReLoginUnit::SetIPAddr(pUnit, pIP);
  18670. return 1;
  18671. }
  18672. v9 = pUnit->m_LoginCount;
  18673. if ( pUnit->m_LoginTime + 20000 > v5 )
  18674. {
  18675. CacheLog(0, "ERROR:ReLoginManager::IsAccCanReLogin...acc=%s must wait %dms!!!", szAccName, 20000);
  18676. }
  18677. else
  18678. {
  18679. pUnit->m_LoginTime = v5;
  18680. if ( v9 > 0 )
  18681. {
  18682. result = 1;
  18683. pUnit->m_LoginCount = v9 - 1;
  18684. pUnit->m_PwdCheck = 1;
  18685. return result;
  18686. }
  18687. CacheLog(0, "ERROR:ReLoginManager::IsAccCanReLogin...acc=%s nPreLoginCount is Empty!!!", szAccName, pIP);
  18688. }
  18689. }
  18690. return 0;
  18691. }
  18692. v6 = this->m_CurPos;
  18693. v7 = 0;
  18694. if ( v6 != 51199 )
  18695. v7 = v6 + 1;
  18696. v8 = (char *)this + 32 * v6;
  18697. this->m_CurPos = v7;
  18698. tag_ReLoginUnit::CleanUp((_DWORD *)v8 + 4);
  18699. *((_DWORD *)v8 + 4) = TimeManager::CurrentTime((int)g_pTimeManager);
  18700. --*((_DWORD *)v8 + 6);
  18701. tag_ReLoginUnit::SetIPAddr((tag_ReLoginUnit *const )(v8 + 16), pIP);
  18702. return StrTable::Add(&this->m_LoginAccTable, szAccName, &this->m_LoginAccTable);
  18703. }
  18704.  
  18705. //----- (0804CBD4) --------------------------------------------------------
  18706. BOOL __cdecl ReLoginManager::SetPwdCheck(ReLoginManager *const this, const CHAR *szAccName, const CHAR *pIP, INT nCheck)
  18707. {
  18708. BOOL result; // eax
  18709. ReLoginUnit *pUnit; // [esp+8h] [ebp-10h]
  18710.  
  18711. result = 0;
  18712. if ( g_Config.m_LoginInfo.ReLoginStop > 0 )
  18713. {
  18714. if ( !szAccName || !*szAccName || !pIP || !*pIP )
  18715. return 0;
  18716. TimeManager::CurrentTime((int)g_pTimeManager);
  18717. pUnit = ReLoginManager::FindAccReLoginUnit(this, szAccName);
  18718. if ( !pUnit )
  18719. {
  18720. CacheLog(0, "IGNORE:ReLoginManager::SetPwdCheck...acc=%s ip=%s not find!!!", szAccName, pIP);
  18721. return 0;
  18722. }
  18723. if ( tag_ReLoginUnit::IsSameIPReLogin(pUnit, pIP) != 1 )
  18724. {
  18725. CacheLog(0, "IGNORE:ReLoginManager::SetPwdCheck...acc=%s ip=%s nCheck=%d!!!", szAccName, pIP, nCheck);
  18726. return 0;
  18727. }
  18728. pUnit->m_PwdCheck = nCheck;
  18729. CacheLog(0, "PWDCHECK:ReLoginManager::SetPwdCheck...acc=%s ip=%s nCheck=%d!!!", szAccName, pIP, nCheck);
  18730. result = 1;
  18731. }
  18732. return result;
  18733. }
  18734.  
  18735. //----- (0804CCD8) --------------------------------------------------------
  18736. BOOL __cdecl ReLoginManager::StopAccReLogin(ReLoginManager *const this, const CHAR *szAccName, const CHAR *pIP)
  18737. {
  18738. BOOL result; // eax
  18739. tag_ReLoginUnit *v4; // eax
  18740. tag_ReLoginUnit *v5; // edi
  18741. UINT v6; // eax
  18742. const CHAR *v7; // [esp-Ch] [ebp-24h]
  18743. int v8; // [esp-8h] [ebp-20h]
  18744. const CHAR *v9; // [esp-8h] [ebp-20h]
  18745. int v10; // [esp-4h] [ebp-1Ch]
  18746. const CHAR *v11; // [esp-4h] [ebp-1Ch]
  18747. UINT uTime; // [esp+8h] [ebp-10h]
  18748.  
  18749. result = 0;
  18750. if ( g_Config.m_LoginInfo.ReLoginStop <= 0 )
  18751. return result;
  18752. if ( !szAccName || !*szAccName || !pIP || !*pIP )
  18753. return 0;
  18754. uTime = TimeManager::CurrentTime((int)g_pTimeManager);
  18755. v4 = ReLoginManager::FindAccReLoginUnit(this, szAccName);
  18756. v5 = v4;
  18757. if ( !v4 )
  18758. {
  18759. v11 = pIP;
  18760. v9 = szAccName;
  18761. v7 = "IGNORE:ReLoginManager::StopAccReLogin...acc=%s ip=%s not find!!!";
  18762. LABEL_16:
  18763. CacheLog(0, v7, v9, v11);
  18764. return 0;
  18765. }
  18766. if ( tag_ReLoginUnit::IsSameIPReLogin(v4, pIP) == 1 )
  18767. {
  18768. v11 = pIP;
  18769. v9 = szAccName;
  18770. v7 = "IGNORE:ReLoginManager::StopAccReLogin...acc=%s ip=%s same ipaddress!!!";
  18771. goto LABEL_16;
  18772. }
  18773. v6 = v5->m_StopLoginTime;
  18774. if ( v6 || (v6 = v5->m_PwdCheck) != 0 && v6 != 8 )
  18775. {
  18776. CacheLog(
  18777. 0,
  18778. "IGNORE:ReLoginManager::StopAccReLogin...acc=%s lip=%s wip=%s ut=%d,upwd=%d!!!",
  18779. szAccName,
  18780. v5->m_szIP,
  18781. pIP,
  18782. v5->m_StopLoginTime,
  18783. v5->m_PwdCheck,
  18784. v6);
  18785. }
  18786. else
  18787. {
  18788. v5->m_StopLoginTime = uTime;
  18789. CacheLog(
  18790. 0,
  18791. "STOPTIME:ReLoginManager::StopAccReLogin...acc=%s lip=%s wip=%s Must Wait %dms!!!",
  18792. szAccName,
  18793. v5->m_szIP,
  18794. pIP,
  18795. uTime,
  18796. v8,
  18797. v10);
  18798. }
  18799. return 1;
  18800. }
  18801.  
  18802. //----- (0804CE08) --------------------------------------------------------
  18803. #error "804CE71: positive sp value has been found (funcsize=30)"
  18804.  
  18805. //----- (0804CE88) --------------------------------------------------------
  18806. #error "804D005: positive sp value has been found (funcsize=104)"
  18807.  
  18808. //----- (0804D088) --------------------------------------------------------
  18809. void __cdecl _tcf_0_4(void *a1)
  18810. {
  18811. std::ios_base::Init::~Init(&std::__ioinit);
  18812. }
  18813.  
  18814. //----- (0804D098) --------------------------------------------------------
  18815. void `global constructor keyed to'g_pReLoginManager()
  18816. {
  18817. std::ios_base::Init::Init(&std::__ioinit);
  18818. __cxa_atexit(_tcf_0_4, 0, &_dso_handle);
  18819. }
  18820. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  18821.  
  18822. //----- (0804D0C4) --------------------------------------------------------
  18823. void __cdecl ServerManager::CleanUp(int a2)
  18824. {
  18825. memset((void *)(a2 + 516), 0, 0x200u);
  18826. memset((void *)(a2 + 1540), 0, 0x200u);
  18827. memset((void *)(a2 + 2564), 0, 0x200u);
  18828. memset((void *)(a2 + 4), 0, 0x200u);
  18829. memset((void *)(a2 + 1028), 0, 0x200u);
  18830. memset((void *)(a2 + 2052), 0, 0x200u);
  18831. *(_DWORD *)(a2 + 3084) = 0;
  18832. *(_DWORD *)(a2 + 3088) = 100;
  18833. *(_DWORD *)(a2 + 3076) = 0;
  18834. *(_DWORD *)(a2 + 3080) = 100;
  18835. *(_DWORD *)(a2 + 3096) = -1;
  18836. *(_DWORD *)(a2 + 3092) = -1;
  18837. *(_DWORD *)(a2 + 3100) = 0;
  18838. *(_DWORD *)(a2 + 7460) = 0;
  18839. *(_DWORD *)(a2 + 7464) = 0;
  18840. *(_WORD *)(a2 + 3156) = 0;
  18841. *(_WORD *)(a2 + 3192) = 1;
  18842. *(_DWORD *)(a2 + 3128) = 0;
  18843. memset((void *)(a2 + 3260), 0, 0x1000u);
  18844. memset((void *)(a2 + 7356), 0, 0x60u);
  18845. *(_DWORD *)(a2 + 7472) = 0;
  18846. *(_DWORD *)(a2 + 7476) = 0;
  18847. }
  18848.  
  18849. //----- (0804D1DC) --------------------------------------------------------
  18850. void __cdecl ServerManager::ServerManager(ServerManager *const this)
  18851. {
  18852. ASYNC_PACKET *v1; // eax
  18853. ASYNC_PACKET *v2; // edx
  18854. signed int v3; // ecx
  18855.  
  18856. this->_vptr_ServerManager = (int (**)(...))&off_80BC420;
  18857. pthread_mutex_init(&this->m_Lock.m_Mutex, 0);
  18858. ServerPlayer::ServerPlayer((BOOL)&this->m_WorldPlayer, 1u);
  18859. BillingPlayer::BillingPlayer(&this->m_BillingPlayer, 1);
  18860. v1 = (ASYNC_PACKET *)(operator new[](0x3004u) + 4);
  18861. v1[-1].m_Flag = 1024;
  18862. v2 = v1;
  18863. v3 = 1023;
  18864. do
  18865. {
  18866. --v3;
  18867. v2->m_pPacket = 0;
  18868. v2->m_PlayerID = -1;
  18869. v2->m_Flag = 0;
  18870. ++v2;
  18871. }
  18872. while ( v3 != -1 );
  18873. this->m_PacketQue = v1;
  18874. if ( !v1 )
  18875. __assert__("./Main/ServerManager.cpp", 0x17u, "ServerManager::ServerManager()", "m_PacketQue");
  18876. this->m_QueSize = 1024;
  18877. this->m_Head = 0;
  18878. this->m_Tail = 0;
  18879. this->m_KickALL = 0;
  18880. ServerManager::CleanUp((int)this);
  18881. }
  18882. // 80BC420: using guessed type _DWORD (__cdecl *off_80BC420)(ServerManager *this);
  18883.  
  18884. //----- (0804D310) --------------------------------------------------------
  18885. void __usercall sub_804D310(int a1@<ebp>)
  18886. {
  18887. BillingPlayer::~BillingPlayer(*(Player_AtLogin **)(a1 - 16));
  18888. JUMPOUT(&loc_804D2BD);
  18889. }
  18890.  
  18891. //----- (0804D32C) --------------------------------------------------------
  18892. void __cdecl ServerManager::ServerManager(ServerManager *const this)
  18893. {
  18894. ASYNC_PACKET *v1; // eax
  18895. ASYNC_PACKET *v2; // edx
  18896. signed int v3; // ecx
  18897.  
  18898. this->_vptr_ServerManager = (int (**)(...))&off_80BC420;
  18899. pthread_mutex_init(&this->m_Lock.m_Mutex, 0);
  18900. ServerPlayer::ServerPlayer((BOOL)&this->m_WorldPlayer, 1u);
  18901. BillingPlayer::BillingPlayer(&this->m_BillingPlayer, 1);
  18902. v1 = (ASYNC_PACKET *)(operator new[](0x3004u) + 4);
  18903. v1[-1].m_Flag = 1024;
  18904. v2 = v1;
  18905. v3 = 1023;
  18906. do
  18907. {
  18908. --v3;
  18909. v2->m_pPacket = 0;
  18910. v2->m_PlayerID = -1;
  18911. v2->m_Flag = 0;
  18912. ++v2;
  18913. }
  18914. while ( v3 != -1 );
  18915. this->m_PacketQue = v1;
  18916. if ( !v1 )
  18917. __assert__("./Main/ServerManager.cpp", 0x17u, "ServerManager::ServerManager()", "m_PacketQue");
  18918. this->m_QueSize = 1024;
  18919. this->m_Head = 0;
  18920. this->m_Tail = 0;
  18921. this->m_KickALL = 0;
  18922. ServerManager::CleanUp((int)this);
  18923. }
  18924. // 80BC420: using guessed type _DWORD (__cdecl *off_80BC420)(ServerManager *this);
  18925.  
  18926. //----- (0804D460) --------------------------------------------------------
  18927. void __usercall sub_804D460(int a1@<ebp>)
  18928. {
  18929. BillingPlayer::~BillingPlayer(*(Player_AtLogin **)(a1 - 16));
  18930. JUMPOUT(&loc_804D40D);
  18931. }
  18932.  
  18933. //----- (0804D47C) --------------------------------------------------------
  18934. void __cdecl ServerManager::~ServerManager(ServerManager *const this)
  18935. {
  18936. ASYNC_PACKET *v1; // ecx
  18937. ASYNC_PACKET *i; // ebx
  18938.  
  18939. v1 = this->m_PacketQue;
  18940. this->_vptr_ServerManager = (int (**)(...))&off_80BC420;
  18941. if ( v1 )
  18942. {
  18943. for ( i = &v1[v1[-1].m_Flag]; v1 != i; i->m_Flag = 0 )
  18944. {
  18945. --i;
  18946. if ( i->m_pPacket )
  18947. {
  18948. (*((void (__cdecl **)(Packet *))i->m_pPacket->_vptr_Packet + 1))(i->m_pPacket);
  18949. v1 = this->m_PacketQue;
  18950. i->m_pPacket = 0;
  18951. }
  18952. i->m_PlayerID = -1;
  18953. }
  18954. operator delete[](&v1[-1].m_Flag);
  18955. this->m_PacketQue = 0;
  18956. }
  18957. BillingPlayer::~BillingPlayer(&this->m_BillingPlayer.0);
  18958. ServerPlayer::~ServerPlayer(&this->m_WorldPlayer.0);
  18959. pthread_mutex_destroy(&this->m_Lock.m_Mutex);
  18960. }
  18961. // 80BC420: using guessed type _DWORD (__cdecl *off_80BC420)(ServerManager *this);
  18962.  
  18963. //----- (0804D572) --------------------------------------------------------
  18964. void __usercall sub_804D572(int a1@<esi>)
  18965. {
  18966. ServerPlayer::~ServerPlayer((Player_AtLogin *)(a1 + 3132));
  18967. JUMPOUT(&loc_804D528);
  18968. }
  18969.  
  18970. //----- (0804D588) --------------------------------------------------------
  18971. void __usercall sub_804D588(int a1@<esi>)
  18972. {
  18973. BillingPlayer::~BillingPlayer((Player_AtLogin *)(a1 + 3168));
  18974. sub_804D572(a1);
  18975. }
  18976.  
  18977. //----- (0804D5A8) --------------------------------------------------------
  18978. void __cdecl ServerManager::~ServerManager(ServerManager *const this)
  18979. {
  18980. ASYNC_PACKET *v1; // ecx
  18981. ASYNC_PACKET *i; // ebx
  18982.  
  18983. v1 = this->m_PacketQue;
  18984. this->_vptr_ServerManager = (int (**)(...))&off_80BC420;
  18985. if ( v1 )
  18986. {
  18987. for ( i = &v1[v1[-1].m_Flag]; v1 != i; i->m_Flag = 0 )
  18988. {
  18989. --i;
  18990. if ( i->m_pPacket )
  18991. {
  18992. (*((void (__cdecl **)(Packet *))i->m_pPacket->_vptr_Packet + 1))(i->m_pPacket);
  18993. v1 = this->m_PacketQue;
  18994. i->m_pPacket = 0;
  18995. }
  18996. i->m_PlayerID = -1;
  18997. }
  18998. operator delete[](&v1[-1].m_Flag);
  18999. this->m_PacketQue = 0;
  19000. }
  19001. BillingPlayer::~BillingPlayer(&this->m_BillingPlayer.0);
  19002. ServerPlayer::~ServerPlayer(&this->m_WorldPlayer.0);
  19003. pthread_mutex_destroy(&this->m_Lock.m_Mutex);
  19004. }
  19005. // 80BC420: using guessed type _DWORD (__cdecl *off_80BC420)(ServerManager *this);
  19006.  
  19007. //----- (0804D69E) --------------------------------------------------------
  19008. void __usercall sub_804D69E(int a1@<esi>)
  19009. {
  19010. ServerPlayer::~ServerPlayer((Player_AtLogin *)(a1 + 3132));
  19011. JUMPOUT(&loc_804D654);
  19012. }
  19013.  
  19014. //----- (0804D6B4) --------------------------------------------------------
  19015. void __usercall sub_804D6B4(int a1@<esi>)
  19016. {
  19017. BillingPlayer::~BillingPlayer((Player_AtLogin *)(a1 + 3168));
  19018. sub_804D69E(a1);
  19019. }
  19020.  
  19021. //----- (0804D6D4) --------------------------------------------------------
  19022. ID_t __cdecl ServerManager::GetLoginID(ServerManager *const this)
  19023. {
  19024. return g_Config.m_LoginInfo.m_LoginID;
  19025. }
  19026.  
  19027. //----- (0804D6E0) --------------------------------------------------------
  19028. _SERVER_DATA *__cdecl ServerManager::FindServerInfo(ServerManager *const this, ID_t ServerID)
  19029. {
  19030. unsigned int v2; // ebx
  19031.  
  19032. if ( (unsigned __int16)ServerID > 0xFFu )
  19033. __assert__(
  19034. "./Main/ServerManager.cpp",
  19035. 0x5Eu,
  19036. "_SERVER_DATA* ServerManager::FindServerInfo(ID_t)",
  19037. "ServerID<OVER_MAX_SERVER && ServerID>=0");
  19038. v2 = g_Config.m_ServerInfo.m_HashServer[ServerID];
  19039. if ( v2 > 0x17 )
  19040. __assert__(
  19041. "./Main/ServerManager.cpp",
  19042. 0x61u,
  19043. "_SERVER_DATA* ServerManager::FindServerInfo(ID_t)",
  19044. "iIndex>=0 && iIndex<MAX_SERVER");
  19045. return &g_Config.m_ServerInfo.m_pServer[v2];
  19046. }
  19047.  
  19048. //----- (0804D79C) --------------------------------------------------------
  19049. _SERVER_DATA *__cdecl ServerManager::GetCurrentServerInfo(ServerManager *const this)
  19050. {
  19051. _SERVER_DATA *result; // eax
  19052. unsigned int v2; // ebx
  19053.  
  19054. result = this->m_pCurServerInfo;
  19055. if ( !result )
  19056. {
  19057. v2 = g_Config.m_ServerInfo.m_HashServer[g_Config.m_LoginInfo.m_LoginID];
  19058. if ( v2 > 0x17 )
  19059. __assert__(
  19060. "./Main/ServerManager.cpp",
  19061. 0x72u,
  19062. "_SERVER_DATA* ServerManager::GetCurrentServerInfo()",
  19063. "iIndex>=0 && iIndex<MAX_SERVER");
  19064. result = &g_Config.m_ServerInfo.m_pServer[v2];
  19065. this->m_pCurServerInfo = result;
  19066. if ( !result )
  19067. __assert__(
  19068. "./Main/ServerManager.cpp",
  19069. 0x76u,
  19070. "_SERVER_DATA* ServerManager::GetCurrentServerInfo()",
  19071. "m_pCurServerInfo");
  19072. }
  19073. return result;
  19074. }
  19075.  
  19076. //----- (0804D864) --------------------------------------------------------
  19077. BOOL __cdecl ServerManager::Init(int a2)
  19078. {
  19079. *(_DWORD *)(a2 + 7476) = g_Config.m_ConfigInfo.m_DisconnectTime;
  19080. return 1;
  19081. }
  19082.  
  19083. //----- (0804D880) --------------------------------------------------------
  19084. #error "804D989: positive sp value has been found (funcsize=71)"
  19085.  
  19086. //----- (0804DA0C) --------------------------------------------------------
  19087. BOOL __cdecl ServerManager::DelServer(ServerManager *const this, SOCKET fd)
  19088. {
  19089. int v2; // edx
  19090. unsigned int v3; // ecx
  19091. INT v4; // eax
  19092. SOCKET v6; // eax
  19093.  
  19094. if ( this->m_MinFD == -1 )
  19095. __assert__("./Main/ServerManager.cpp", 0x230u, "BOOL ServerManager::DelServer(SOCKET)", "m_MinFD!=INVALID_SOCKET");
  19096. if ( this->m_MaxFD == -1 )
  19097. __assert__("./Main/ServerManager.cpp", 0x231u, "BOOL ServerManager::DelServer(SOCKET)", "m_MaxFD!=INVALID_SOCKET");
  19098. if ( fd == -1 )
  19099. __assert__("./Main/ServerManager.cpp", 0x232u, "BOOL ServerManager::DelServer(SOCKET)", "fd!=INVALID_SOCKET");
  19100. if ( Socket::getSOCKET((int)this->m_WorldPlayer.m_pSocket) == fd )
  19101. {
  19102. v6 = Socket::getSOCKET((int)this->m_BillingPlayer.m_pSocket);
  19103. }
  19104. else
  19105. {
  19106. if ( Socket::getSOCKET((int)this->m_BillingPlayer.m_pSocket) != fd )
  19107. goto LABEL_6;
  19108. v6 = Socket::getSOCKET((int)this->m_WorldPlayer.m_pSocket);
  19109. }
  19110. this->m_MaxFD = v6;
  19111. this->m_MinFD = v6;
  19112. LABEL_6:
  19113. v2 = fd & 0x1F;
  19114. v3 = (unsigned int)fd >> 5;
  19115. if ( _bittest((const signed __int32 *)this->m_ReadFDs + ((unsigned int)fd >> 5), v2) )
  19116. _bittestandreset((signed __int32 *)this->m_ReadFDs + v3, v2);
  19117. if ( _bittest(&this->m_ReadFDs[1].fds_bits[v3], v2) )
  19118. _bittestandreset(&this->m_ReadFDs[1].fds_bits[v3], v2);
  19119. if ( _bittest((const signed __int32 *)this->m_WriteFDs + v3, v2) )
  19120. _bittestandreset((signed __int32 *)this->m_WriteFDs + v3, v2);
  19121. if ( _bittest(&this->m_WriteFDs[1].fds_bits[v3], v2) )
  19122. _bittestandreset(&this->m_WriteFDs[1].fds_bits[v3], v2);
  19123. if ( _bittest((const signed __int32 *)this->m_ExceptFDs + v3, v2) )
  19124. _bittestandreset((signed __int32 *)this->m_ExceptFDs + v3, v2);
  19125. if ( _bittest(&this->m_ExceptFDs[1].fds_bits[v3], v2) )
  19126. _bittestandreset(&this->m_ExceptFDs[1].fds_bits[v3], v2);
  19127. v4 = this->m_nFDSize - 1;
  19128. this->m_nFDSize = v4;
  19129. if ( v4 < 0 )
  19130. __assert__("./Main/ServerManager.cpp", 0x245u, "BOOL ServerManager::DelServer(SOCKET)", "m_nFDSize>=0");
  19131. return 1;
  19132. }
  19133.  
  19134. //----- (0804DC2C) --------------------------------------------------------
  19135. BOOL __cdecl ServerManager::RemoveServer(ServerManager *const this, PlayerID_t id)
  19136. {
  19137. SOCKET v3; // eax
  19138. BOOL v4; // ebx
  19139. SOCKET v5; // eax
  19140.  
  19141. if ( id )
  19142. {
  19143. if ( id != 1 )
  19144. return 0;
  19145. v5 = Socket::getSOCKET((int)this->m_BillingPlayer.m_pSocket);
  19146. if ( v5 == -1 )
  19147. __assert__(
  19148. "./Main/ServerManager.cpp",
  19149. 0x113u,
  19150. "BOOL ServerManager::RemoveServer(PlayerID_t)",
  19151. "s!=INVALID_SOCKET");
  19152. v4 = ServerManager::DelServer(this, v5);
  19153. if ( !v4 )
  19154. __assert__("./Main/ServerManager.cpp", 0x115u, "BOOL ServerManager::RemoveServer(PlayerID_t)", "bRet");
  19155. BillingPlayer::CleanUp(&this->m_BillingPlayer);
  19156. CacheLog(0, "ERROR: RemoveServer( )...Billing");
  19157. }
  19158. else
  19159. {
  19160. v3 = Socket::getSOCKET((int)this->m_WorldPlayer.m_pSocket);
  19161. if ( v3 == -1 )
  19162. __assert__(
  19163. "./Main/ServerManager.cpp",
  19164. 0x106u,
  19165. "BOOL ServerManager::RemoveServer(PlayerID_t)",
  19166. "s!=INVALID_SOCKET");
  19167. v4 = ServerManager::DelServer(this, v3);
  19168. if ( !v4 )
  19169. __assert__("./Main/ServerManager.cpp", 0x109u, "BOOL ServerManager::RemoveServer(PlayerID_t)", "bRet");
  19170. ServerPlayer::CleanUp(&this->m_WorldPlayer);
  19171. CacheLog(0, "ERROR: RemoveServer( )...World");
  19172. }
  19173. return v4;
  19174. }
  19175.  
  19176. //----- (0804DDB0) --------------------------------------------------------
  19177. Player *__cdecl ServerManager::GetServerPlayer(ServerManager *const this, PlayerID_t id)
  19178. {
  19179. if ( !id )
  19180. return &this->m_WorldPlayer.0;
  19181. if ( id == 1 )
  19182. return &this->m_BillingPlayer.0;
  19183. return 0;
  19184. }
  19185.  
  19186. //----- (0804DDD8) --------------------------------------------------------
  19187. BOOL __cdecl ServerManager::ProcessExceptions(ServerManager *const this)
  19188. {
  19189. signed int v1; // esi
  19190. Player *v2; // eax
  19191. Player *v3; // ebx
  19192. BOOL result; // eax
  19193. unsigned int v5; // eax
  19194.  
  19195. if ( this->m_MinFD != -1 || (result = 1, this->m_MaxFD != -1) )
  19196. {
  19197. v1 = 0;
  19198. do
  19199. {
  19200. v2 = ServerManager::GetServerPlayer(this, v1);
  19201. v3 = v2;
  19202. if ( !v2 )
  19203. __assert__("./Main/ServerManager.cpp", 0x1C4u, "BOOL ServerManager::ProcessExceptions()", "pPlayer");
  19204. if ( Player::IsValid(v2) )
  19205. {
  19206. v5 = Socket::getSOCKET((int)v3->m_pSocket);
  19207. if ( _bittest(&this->m_ExceptFDs[1].fds_bits[v5 >> 5], v5 & 0x1F) )
  19208. {
  19209. CacheLog(0, "ProcessExceptions( ) ...");
  19210. ServerManager::RemoveServer(this, v1);
  19211. }
  19212. }
  19213. ++v1;
  19214. }
  19215. while ( v1 <= 1 );
  19216. result = 1;
  19217. }
  19218. return result;
  19219. }
  19220.  
  19221. //----- (0804DEFC) --------------------------------------------------------
  19222. BOOL __cdecl ServerManager::ProcessCommands(ServerManager *const this)
  19223. {
  19224. Player *v1; // eax
  19225. int *v2; // ebx
  19226. BOOL result; // eax
  19227. int i; // [esp+8h] [ebp-10h]
  19228.  
  19229. if ( this->m_MinFD != -1 || (result = 1, this->m_MaxFD != -1) )
  19230. {
  19231. i = 0;
  19232. do
  19233. {
  19234. v1 = ServerManager::GetServerPlayer(this, i);
  19235. v2 = (int *)v1;
  19236. if ( !v1 )
  19237. __assert__("./Main/ServerManager.cpp", 0x1EBu, "BOOL ServerManager::ProcessCommands()", "pPlayer");
  19238. if ( Player::IsValid(v1) )
  19239. {
  19240. if ( Socket::isSockError(v2[1]) )
  19241. {
  19242. ServerManager::RemoveServer(this, i);
  19243. }
  19244. else if ( !(*(int (__cdecl **)(int *, _DWORD))(*v2 + 84))(v2, 0) )
  19245. {
  19246. ServerManager::RemoveServer(this, i);
  19247. }
  19248. }
  19249. ++i;
  19250. }
  19251. while ( i <= 1 );
  19252. result = 1;
  19253. }
  19254. return result;
  19255. }
  19256. // 8049B18: using guessed type int __stdcall __cxa_end_catch(_DWORD);
  19257.  
  19258. //----- (0804E068) --------------------------------------------------------
  19259. BOOL __cdecl ServerManager::ProcessOutputs(ServerManager *const this)
  19260. {
  19261. Player *v1; // eax
  19262. int *v2; // ebx
  19263. BOOL result; // eax
  19264. unsigned int s; // [esp+4h] [ebp-14h]
  19265. int i; // [esp+8h] [ebp-10h]
  19266.  
  19267. if ( this->m_MinFD != -1 || (result = 1, this->m_MaxFD != -1) )
  19268. {
  19269. i = 0;
  19270. do
  19271. {
  19272. v1 = ServerManager::GetServerPlayer(this, i);
  19273. v2 = (int *)v1;
  19274. if ( !v1 )
  19275. __assert__("./Main/ServerManager.cpp", 0x18Fu, "BOOL ServerManager::ProcessOutputs()", "pPlayer");
  19276. if ( Player::IsValid(v1) )
  19277. {
  19278. s = Socket::getSOCKET(v2[1]);
  19279. if ( Socket::isSockError(v2[1]) )
  19280. {
  19281. ServerManager::RemoveServer(this, i);
  19282. }
  19283. else if ( _bittest(&this->m_WriteFDs[1].fds_bits[s >> 5], s & 0x1F) )
  19284. {
  19285. if ( !(*(int (__cdecl **)(int *))(*v2 + 80))(v2) )
  19286. ServerManager::RemoveServer(this, i);
  19287. }
  19288. }
  19289. ++i;
  19290. }
  19291. while ( i <= 1 );
  19292. result = 1;
  19293. }
  19294. return result;
  19295. }
  19296. // 8049B18: using guessed type int __stdcall __cxa_end_catch(_DWORD);
  19297.  
  19298. //----- (0804E1FC) --------------------------------------------------------
  19299. BOOL __cdecl ServerManager::ProcessInputs(ServerManager *const this)
  19300. {
  19301. Player *v1; // eax
  19302. int *v2; // ebx
  19303. BOOL result; // eax
  19304. unsigned int s; // [esp+4h] [ebp-14h]
  19305. int i; // [esp+8h] [ebp-10h]
  19306.  
  19307. if ( this->m_MinFD != -1 || (result = 1, this->m_MaxFD != -1) )
  19308. {
  19309. i = 0;
  19310. do
  19311. {
  19312. v1 = ServerManager::GetServerPlayer(this, i);
  19313. v2 = (int *)v1;
  19314. if ( !v1 )
  19315. __assert__("./Main/ServerManager.cpp", 0x155u, "BOOL ServerManager::ProcessInputs()", "pPlayer");
  19316. if ( Player::IsValid(v1) )
  19317. {
  19318. s = Socket::getSOCKET(v2[1]);
  19319. if ( Socket::isSockError(v2[1]) )
  19320. {
  19321. ServerManager::RemoveServer(this, i);
  19322. }
  19323. else if ( _bittest(&this->m_ReadFDs[1].fds_bits[s >> 5], s & 0x1F) )
  19324. {
  19325. if ( !(*(int (__cdecl **)(int *))(*v2 + 76))(v2) )
  19326. ServerManager::RemoveServer(this, i);
  19327. }
  19328. }
  19329. ++i;
  19330. }
  19331. while ( i <= 1 );
  19332. result = 1;
  19333. }
  19334. return result;
  19335. }
  19336. // 8049B18: using guessed type int __stdcall __cxa_end_catch(_DWORD);
  19337.  
  19338. //----- (0804E390) --------------------------------------------------------
  19339. BOOL __cdecl ServerManager::AddServer(ServerManager *const this, SOCKET fd)
  19340. {
  19341. SOCKET v2; // edx
  19342. SOCKET v3; // eax
  19343. SOCKET v4; // edx
  19344. SOCKET v5; // eax
  19345. int v6; // eax
  19346.  
  19347. if ( fd == -1 )
  19348. __assert__("./Main/ServerManager.cpp", 0x214u, "BOOL ServerManager::AddServer(SOCKET)", "fd!=INVALID_SOCKET");
  19349. if ( this->m_nFDSize > 1455 )
  19350. __assert__("./Main/ServerManager.cpp", 0x218u, "BOOL ServerManager::AddServer(SOCKET)", "FALSE");
  19351. v2 = this->m_MinFD;
  19352. v3 = fd;
  19353. if ( v2 != -1 )
  19354. {
  19355. v3 = this->m_MinFD;
  19356. if ( v2 > fd )
  19357. v3 = fd;
  19358. }
  19359. v4 = this->m_MaxFD;
  19360. this->m_MinFD = v3;
  19361. v5 = fd;
  19362. if ( v4 != -1 )
  19363. {
  19364. v5 = v4;
  19365. if ( v4 < fd )
  19366. v5 = fd;
  19367. }
  19368. this->m_MaxFD = v5;
  19369. v6 = fd & 0x1F;
  19370. _bittestandset((signed __int32 *)this->m_ReadFDs + ((unsigned int)fd >> 5), v6);
  19371. _bittestandset((signed __int32 *)this->m_WriteFDs + ((unsigned int)fd >> 5), v6);
  19372. _bittestandset((signed __int32 *)this->m_ExceptFDs + ((unsigned int)fd >> 5), v6);
  19373. ++this->m_nFDSize;
  19374. return 1;
  19375. }
  19376.  
  19377. //----- (0804E4AC) --------------------------------------------------------
  19378. BOOL __cdecl ServerManager::IsWorldServerActive(ServerManager *const this)
  19379. {
  19380. return ServerPlayer::IsValid(&this->m_WorldPlayer) != 0;
  19381. }
  19382.  
  19383. //----- (0804E51C) --------------------------------------------------------
  19384. BOOL __cdecl ServerManager::IsBillingServerActive(ServerManager *const this)
  19385. {
  19386. return BillingPlayer::IsValid(&this->m_BillingPlayer);
  19387. }
  19388.  
  19389. //----- (0804E580) --------------------------------------------------------
  19390. #error "804E763: positive sp value has been found (funcsize=122)"
  19391.  
  19392. //----- (0804E890) --------------------------------------------------------
  19393. BOOL __cdecl ServerManager::ConnectBillingServer(ServerManager *const this)
  19394. {
  19395. Socket *v1; // ebx
  19396. _BILLING_DATA *v2; // esi
  19397. INT v3; // edx
  19398. SOCKET v5; // eax
  19399. int v6; // ebx
  19400. const char *v7; // esi
  19401. signed int v8; // eax
  19402. BOOL v9; // edi
  19403. BillingPlayer *v10; // [esp+10h] [ebp-18h]
  19404. int v11; // [esp+14h] [ebp-14h]
  19405.  
  19406. v10 = &this->m_BillingPlayer;
  19407. v1 = this->m_BillingPlayer.m_pSocket;
  19408. if ( !g_Config.m_BillingInfo.m_bUse )
  19409. {
  19410. CacheLog(0, "ERROR: ConnectBillingServer( ) Current BillingInfo is not READY!! ");
  19411. return 0;
  19412. }
  19413. v2 = g_Config.m_BillingInfo.m_pInfo[g_Config.m_BillingInfo.m_nCur];
  19414. v3 = g_Config.m_BillingInfo.m_nCur + 1;
  19415. if ( g_Config.m_BillingInfo.m_nCur + 1 >= g_Config.m_BillingInfo.m_nNumber )
  19416. v3 = 0;
  19417. g_Config.m_BillingInfo.m_nCur = v3;
  19418. if ( !Socket::create((int)v1) )
  19419. __assert__("./Main/ServerManager.cpp", 0x323u, "BOOL ServerManager::ConnectBillingServer()", "FALSE");
  19420. v11 = (int)v2->m_IP;
  19421. if ( !Socket::connect((const CHAR *)v1, v2->m_IP, v2->m_Port) )
  19422. {
  19423. CacheLog(
  19424. 0,
  19425. "ERROR: ConnectBillingServer( ) Pos:%d IP:%s Port:%d ServerID:%d ...Faile ",
  19426. v2->m_ContainerPos,
  19427. v11,
  19428. v2->m_Port);
  19429. BillingPlayer::CleanUp(v10);
  19430. return 0;
  19431. }
  19432. if ( !Socket::setNonBlocking((BOOL)v1, 1) )
  19433. __assert__("./Main/ServerManager.cpp", 0x32Fu, "BOOL ServerManager::ConnectBillingServer()", "FALSE");
  19434. if ( !Socket::setLinger((int)v1, 0) )
  19435. __assert__("./Main/ServerManager.cpp", 0x336u, "BOOL ServerManager::ConnectBillingServer()", "FALSE");
  19436. CacheLog(0, "ConnectServer( ) Pos:%d IP:%s Port:%d ...OK ", v2->m_ContainerPos, v11, v2->m_Port);
  19437. v5 = Socket::getSOCKET((int)v1);
  19438. if ( !ServerManager::AddServer(this, v5) )
  19439. __assert__("./Main/ServerManager.cpp", 0x346u, "BOOL ServerManager::ConnectBillingServer()", "FALSE");
  19440. v6 = operator new(0x28u);
  19441. BillPacket::BillPacket((_DWORD *)v6);
  19442. *(_BYTE *)(v6 + 12) = 0;
  19443. *(_DWORD *)v6 = off_80CDF68;
  19444. memset((void *)(v6 + 13), 0, 0x18u);
  19445. *(_WORD *)(v6 + 8) = g_Config.m_WorldInfo.m_ZoneID;
  19446. *(_WORD *)(v6 + 10) = g_Config.m_WorldInfo.m_WorldID;
  19447. v7 = ServerManager::GetCurrentServerInfo(*(ServerManager *const *)&g_pServerManager)->m_IP1;
  19448. strncpy((char *)(v6 + 13), v7, 0xFu);
  19449. *(_BYTE *)(v6 + 12) = 0;
  19450. v8 = 0;
  19451. do
  19452. {
  19453. if ( v7[v8] )
  19454. ++*(_BYTE *)(v6 + 12);
  19455. ++v8;
  19456. }
  19457. while ( v8 <= 14 );
  19458. v9 = BillingPlayer::SendPacket(v10, (BillPacket *)v6);
  19459. if ( v6 )
  19460. (*(void (__cdecl **)(int))(*(_DWORD *)v6 + 4))(v6);
  19461. if ( !v9 )
  19462. __assert__("./Main/ServerManager.cpp", 0x352u, "BOOL ServerManager::ConnectBillingServer()", "FALSE");
  19463. this->m_BillingPlayer.m_Status = 400;
  19464. CacheLog(0, "ConnectBillingServer( ) Current ServerID:%d ...OK ", g_Config.m_LoginInfo.m_LoginID, v10);
  19465. return 1;
  19466. }
  19467. // 80CDF68: using guessed type _DWORD (__cdecl *off_80CDF68[2])(Packets::LBConnect *this);
  19468.  
  19469. //----- (0804EBBC) --------------------------------------------------------
  19470. #error "804ECC1: positive sp value has been found (funcsize=71)"
  19471.  
  19472. //----- (0804ED80) --------------------------------------------------------
  19473. INT __cdecl ServerManager::GetServerPlayerPoolSize(int ServerID, unsigned __int16 ServerIDa)
  19474. {
  19475. if ( ServerIDa > 0x17u )
  19476. __assert__(
  19477. "./Main/ServerManager.cpp",
  19478. 0x47Au,
  19479. "INT ServerManager::GetServerPlayerPoolSize(ID_t)",
  19480. "ServerID>=0 && ServerID<MAX_SERVER");
  19481. return *(_DWORD *)(ServerID + 4 * (signed __int16)ServerIDa + 7356);
  19482. }
  19483.  
  19484. //----- (0804EE08) --------------------------------------------------------
  19485. BOOL __cdecl ServerManager::ResetQueuePos(ServerManager *const this)
  19486. {
  19487. WorldPlayerQueue::SortQueuePos(g_pWorldPlayerQueue);
  19488. return 1;
  19489. }
  19490.  
  19491. //----- (0804EE6C) --------------------------------------------------------
  19492. #error "804EFB3: positive sp value has been found (funcsize=89)"
  19493.  
  19494. //----- (0804F038) --------------------------------------------------------
  19495. BOOL __cdecl ServerManager::SendPacket(ServerManager *const this, Packet *pPacket, ID_t ServerID, UINT Flag)
  19496. {
  19497. UINT v4; // edx
  19498. ASYNC_PACKET *v5; // ecx
  19499. int v6; // eax
  19500. UINT v7; // eax
  19501. pthread_mutex_t *v8; // eax
  19502.  
  19503. pthread_mutex_lock(&this->m_Lock.m_Mutex);
  19504. v4 = this->m_Tail;
  19505. v5 = this->m_PacketQue;
  19506. if ( v5[v4].m_pPacket )
  19507. {
  19508. if ( !ServerManager::ResizeCache(this) )
  19509. __assert__("./Main/ServerManager.cpp", 0x3D8u, "BOOL ServerManager::SendPacket(Packet*, ID_t, UINT)", "ret");
  19510. v4 = this->m_Tail;
  19511. v5 = this->m_PacketQue;
  19512. }
  19513. v6 = v4;
  19514. v5[v6].m_pPacket = pPacket;
  19515. v5[v6].m_Flag = Flag;
  19516. v5[v6].m_PlayerID = ServerID;
  19517. v7 = this->m_Tail + 1;
  19518. if ( v7 >= this->m_QueSize )
  19519. {
  19520. v8 = &this->m_Lock.m_Mutex;
  19521. this->m_Tail = 0;
  19522. if ( this == (ServerManager *const )-3104 )
  19523. return 1;
  19524. LABEL_6:
  19525. pthread_mutex_unlock(v8);
  19526. return 1;
  19527. }
  19528. this->m_Tail = v7;
  19529. v8 = &this->m_Lock.m_Mutex;
  19530. if ( this != (ServerManager *const )-3104 )
  19531. goto LABEL_6;
  19532. return 1;
  19533. }
  19534.  
  19535. //----- (0804F184) --------------------------------------------------------
  19536. BOOL __cdecl ServerManager::RecvPacket(ServerManager *const this, Packet **const pPacket, PlayerID_t *const PlayerID, UINT *const Flag)
  19537. {
  19538. ASYNC_PACKET *v4; // ebx
  19539. UINT v5; // ecx
  19540. Packet *v6; // edx
  19541. UINT v8; // eax
  19542. UINT v9; // eax
  19543. pthread_mutex_t *v10; // eax
  19544.  
  19545. pthread_mutex_lock(&this->m_Lock.m_Mutex);
  19546. v4 = this->m_PacketQue;
  19547. v5 = this->m_Head;
  19548. v6 = v4[v5].m_pPacket;
  19549. if ( v6 )
  19550. {
  19551. *pPacket = v6;
  19552. *PlayerID = v4[v5].m_PlayerID;
  19553. *Flag = v4[v5].m_Flag;
  19554. v8 = this->m_Head;
  19555. v4[v8].m_Flag = 0;
  19556. v4[v8].m_pPacket = 0;
  19557. v4[v8].m_PlayerID = -1;
  19558. v9 = this->m_Head + 1;
  19559. if ( v9 >= this->m_QueSize )
  19560. {
  19561. v10 = &this->m_Lock.m_Mutex;
  19562. this->m_Head = 0;
  19563. if ( this == (ServerManager *const )-3104 )
  19564. return 1;
  19565. }
  19566. else
  19567. {
  19568. this->m_Head = v9;
  19569. v10 = &this->m_Lock.m_Mutex;
  19570. if ( this == (ServerManager *const )-3104 )
  19571. return 1;
  19572. }
  19573. pthread_mutex_unlock(v10);
  19574. return 1;
  19575. }
  19576. if ( this != (ServerManager *const )-3104 )
  19577. pthread_mutex_unlock(&this->m_Lock.m_Mutex);
  19578. return 0;
  19579. }
  19580.  
  19581. //----- (0804F27C) --------------------------------------------------------
  19582. #error "804F37F: positive sp value has been found (funcsize=76)"
  19583.  
  19584. //----- (0804F3E8) --------------------------------------------------------
  19585. void __cdecl ServerManager::SetServerPlayerPoolSize(int ServerID, unsigned __int16 ServerIDa, int a5)
  19586. {
  19587. if ( ServerIDa > 0x17u )
  19588. __assert__(
  19589. "./Main/ServerManager.cpp",
  19590. 0x485u,
  19591. "void ServerManager::SetServerPlayerPoolSize(ID_t, INT)",
  19592. "ServerID>=0 && ServerID<MAX_SERVER");
  19593. *(_DWORD *)(ServerID + 4 * (signed __int16)ServerIDa + 7356) = a5;
  19594. }
  19595.  
  19596. //----- (0804F474) --------------------------------------------------------
  19597. BOOL __cdecl ServerManager::SendQueuePlayerToWorld(ServerManager *const this)
  19598. {
  19599. int v1; // edx
  19600. int v2; // ebx
  19601. UINT v3; // eax
  19602. UINT v4; // edx
  19603. UINT v5; // edx
  19604. UINT v6; // eax
  19605. int v7; // esi
  19606. WORLD_PLAYER_INFO *v9; // eax
  19607. WORLD_PLAYER_INFO *v10; // edi
  19608. PlayerID_t v11; // ax
  19609. SceneID_t v12; // ax
  19610. int v13; // ecx
  19611. INT v14; // eax
  19612. INT v15; // eax
  19613. Packets::LWAskCharLogin *v16; // ecx
  19614. int i; // eax
  19615. Packets::LWAskCharLogin *j; // eax
  19616. Packets::LWAskCharLogin *k; // eax
  19617. Packets::LWAskCharLogin *l; // eax
  19618. Packets::LWAskCharLogin *m; // eax
  19619. Packets::LWAskCharLogin *n; // eax
  19620. INT nServerCount; // [esp+4h] [ebp-C714h]
  19621. INT nSceneCount; // [esp+8h] [ebp-C710h]
  19622. unsigned __int16 TarServerID; // [esp+Ch] [ebp-C70Ch]
  19623. SceneID_t TarSceneID; // [esp+Eh] [ebp-C70Ah]
  19624. LoginPlayer *v27; // [esp+10h] [ebp-C708h]
  19625. UINT QPos; // [esp+18h] [ebp-C700h]
  19626. UINT QueuePos; // [esp+1Ch] [ebp-C6FCh]
  19627. Packets::LWAskCharLogin Msg; // [esp+20h] [ebp-C6F8h]
  19628. WORLD_PLAYER_INFO pi; // [esp+C6B0h] [ebp-68h]
  19629.  
  19630. v1 = g_WorldPlayerCounter.m_MaxWorldUserCount - g_WorldPlayerCounter.m_WorldPlayerCount;
  19631. if ( g_WorldPlayerCounter.m_MaxWorldUserCount - g_WorldPlayerCounter.m_WorldPlayerCount <= 0 )
  19632. v1 = 0;
  19633. if ( (signed int)(g_pWorldPlayerQueue->m_SendCount + 100) < v1 )
  19634. {
  19635. v2 = v1 - 100;
  19636. v3 = g_pWorldPlayerQueue->m_Tail;
  19637. v4 = g_pWorldPlayerQueue->m_Head;
  19638. if ( v4 > v3 )
  19639. {
  19640. v4 -= v3;
  19641. v3 = g_pWorldPlayerQueue->m_Size;
  19642. }
  19643. if ( (signed int)(v3 - v4) < v2 )
  19644. {
  19645. v5 = g_pWorldPlayerQueue->m_Head;
  19646. v6 = g_pWorldPlayerQueue->m_Tail;
  19647. if ( v5 > v6 )
  19648. {
  19649. v5 -= v6;
  19650. v6 = g_pWorldPlayerQueue->m_Size;
  19651. }
  19652. v2 = v6 - v5;
  19653. }
  19654. v7 = 0;
  19655. while ( v7 < v2 )
  19656. {
  19657. if ( WorldPlayerQueue::FindHeadPlayer(g_pWorldPlayerQueue, &QueuePos) )
  19658. {
  19659. v9 = WorldPlayerQueue::GetPlayer(g_pWorldPlayerQueue, QueuePos);
  19660. v10 = v9;
  19661. v11 = v9->PlayerID;
  19662. if ( v11 == -1 || v11 > 3071 || v11 < 0 || (v27 = &g_pPlayerPool->m_pPlayer[v11]) == 0 )
  19663. __assert__("./Main/ServerManager.cpp", 0x37Du, "BOOL ServerManager::SendQueuePlayerToWorld()", "pLoginPlayer");
  19664. if ( LoginPlayer::IsGUIDOwner(v27, v10->Guid) && v27->m_Status == 312 )
  19665. {
  19666. v12 = LoginPlayer::GetChooseSceneID((int)v27);
  19667. TarSceneID = v12;
  19668. if ( v12 >= 0 )
  19669. {
  19670. v13 = v12;
  19671. if ( v12 < (signed int)g_Config.m_SceneInfo.m_SceneCount )
  19672. {
  19673. TarServerID = g_Config.m_SceneInfo.m_pScene[v12].m_ServerID;
  19674. v14 = 0;
  19675. if ( (unsigned __int16)TarSceneID <= 0x3FFu )
  19676. v14 = *(_DWORD *)(*(_DWORD *)&g_pServerManager + 4 * v13 + 3260);
  19677. nSceneCount = v14;
  19678. v15 = ServerManager::GetServerPlayerPoolSize(*(int *)&g_pServerManager, TarServerID);
  19679. nServerCount = v15;
  19680. if ( nSceneCount > 1327 || v15 > 2371 )
  19681. {
  19682. memcpy(&pi, v10, 0x48u);
  19683. if ( !WorldPlayerQueue::GetOutPlayer(g_pWorldPlayerQueue, QueuePos) )
  19684. __assert__(
  19685. "./Main/ServerManager.cpp",
  19686. 0x394u,
  19687. "BOOL ServerManager::SendQueuePlayerToWorld()",
  19688. "FALSE");
  19689. WorldPlayerQueue::AddInPlayer(g_pWorldPlayerQueue, pi.PlayerID, pi.PlayerName, pi.Guid, &QPos);
  19690. CacheLog(
  19691. 0,
  19692. "SendQueuePlayerToWorld...Server Full Or Scene Full..GUID=%d Scene=%d nSceneCount=%d nServerCount=%d",
  19693. pi.Guid,
  19694. TarSceneID,
  19695. nSceneCount,
  19696. nServerCount);
  19697. ++v7;
  19698. continue;
  19699. }
  19700. }
  19701. }
  19702. Packets::LWAskCharLogin::LWAskCharLogin(&Msg);
  19703. Packets::LWAskCharLogin::SetAccount(&Msg, v10->PlayerName);
  19704. Msg.PlayerID = v10->PlayerID;
  19705. Msg.PlayerGUID = v10->Guid;
  19706. Msg.AskStatus = 0;
  19707. Msg.uKey = LoginPlayer::GetUserKey((int)v27);
  19708. ServerPlayer::SendPacket(&this->m_WorldPlayer, &Msg.0);
  19709. v27->m_Status = 308;
  19710. (*((void (__cdecl **)(LoginPlayer *))v27->_vptr_Player + 27))(v27);
  19711. LoginPlayer::SetQueuePos((int)v27, 0);
  19712. ++g_pWorldPlayerQueue->m_SendCount;
  19713. CacheLog(0, "SendQueuePlayerToWorld...Send Success..GUID=%d Scene=%d", v10->Guid, TarSceneID);
  19714. Msg._vptr_Packet = (int (**)(...))off_80CF1A8;
  19715. v16 = (Packets::LWAskCharLogin *)((char *)&Msg + 44362);
  19716. while ( &Msg.UserData.m_PetList != (_PET_DB_LIST_LOAD *)v16 )
  19717. {
  19718. v16 = (Packets::LWAskCharLogin *)((char *)v16 - 399);
  19719. if ( v16 != (Packets::LWAskCharLogin *)-211 )
  19720. {
  19721. for ( i = (int)&v16->UserData.m_Human.m_Titles.m_szBangPai[33];
  19722. &v16->UserData.m_Human.m_Titles.m_szNick[5] != (CHAR *)i;
  19723. i -= 12 )
  19724. {
  19725. ;
  19726. }
  19727. }
  19728. }
  19729. if ( &Msg.UserData != (FULLUSERDATA *)-33963 )
  19730. {
  19731. for ( j = (Packets::LWAskCharLogin *)((char *)&Msg + 35583);
  19732. Msg.UserData.m_Impact.m_aImpacts != (_OWN_IMPACT *)j;
  19733. j = (Packets::LWAskCharLogin *)((char *)j - 76) )
  19734. {
  19735. ;
  19736. }
  19737. }
  19738. if ( &Msg.UserData != (FULLUSERDATA *)-33513 )
  19739. {
  19740. for ( k = (Packets::LWAskCharLogin *)((char *)&Msg + 33997);
  19741. &Msg.UserData.m_Cooldown != (_COOLDOWN_DB_LOAD_FOR_HUMAN *)k;
  19742. k = (Packets::LWAskCharLogin *)((char *)k - 12) )
  19743. {
  19744. ;
  19745. }
  19746. }
  19747. if ( &Msg.UserData != (FULLUSERDATA *)-1409 )
  19748. {
  19749. for ( l = (Packets::LWAskCharLogin *)((char *)&Msg + 1557);
  19750. &Msg.UserData.m_Human.m_PvpInfo.m_oPersonalEnemyList != (PersonalEnemyList_T *)l;
  19751. l = (Packets::LWAskCharLogin *)((char *)l - 8) )
  19752. {
  19753. ;
  19754. }
  19755. }
  19756. if ( &Msg.UserData.m_Human.m_PvpInfo != (_PVPInfo *)-347 )
  19757. {
  19758. for ( m = (Packets::LWAskCharLogin *)((char *)&Msg + 1509);
  19759. &Msg.UserData.m_Human.m_PvpInfo.m_oPersonalDuelList != (PersonalDuelList_T *)m;
  19760. m = (Packets::LWAskCharLogin *)((char *)m - 8) )
  19761. {
  19762. ;
  19763. }
  19764. }
  19765. if ( &Msg.UserData != (FULLUSERDATA *)-1289 )
  19766. {
  19767. for ( n = (Packets::LWAskCharLogin *)((char *)&Msg + 1469);
  19768. &Msg.UserData.m_Human.m_PvpInfo.m_oFightBackList != (FightBackList_T *)n;
  19769. n = (Packets::LWAskCharLogin *)((char *)n - 8) )
  19770. {
  19771. ;
  19772. }
  19773. }
  19774. Packet::~Packet(&Msg);
  19775. }
  19776. if ( !WorldPlayerQueue::GetOutPlayer(g_pWorldPlayerQueue, QueuePos) )
  19777. __assert__("./Main/ServerManager.cpp", 0x3B9u, "BOOL ServerManager::SendQueuePlayerToWorld()", "FALSE");
  19778. }
  19779. ++v7;
  19780. }
  19781. }
  19782. return 1;
  19783. }
  19784. // 80CF1A8: using guessed type _DWORD (__cdecl *off_80CF1A8[2])(Packets::LWAskCharLogin *this);
  19785.  
  19786. //----- (0804F9FC) --------------------------------------------------------
  19787. #error "804FBE3: positive sp value has been found (funcsize=123)"
  19788.  
  19789. //----- (0804FCA0) --------------------------------------------------------
  19790. void __cdecl _tcf_0_5(void *a1)
  19791. {
  19792. std::ios_base::Init::~Init(&std::__ioinit);
  19793. }
  19794.  
  19795. //----- (0804FCB0) --------------------------------------------------------
  19796. void `global constructor keyed to'g_pServerManager()
  19797. {
  19798. std::ios_base::Init::Init(&std::__ioinit);
  19799. __cxa_atexit(_tcf_0_5, 0, &_dso_handle);
  19800. }
  19801. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  19802.  
  19803. //----- (0804FCDC) --------------------------------------------------------
  19804. void __cdecl Packets::LWAskCharLogin::LWAskCharLogin(Packets::LWAskCharLogin *const this)
  19805. {
  19806. signed int v1; // edx
  19807. _HUMAN_DB_LOAD *v2; // esi
  19808. FightBackList_T *v3; // eax
  19809. PersonalDuelList_T *v4; // eax
  19810. signed int v5; // edx
  19811. PersonalEnemyList_T *v6; // eax
  19812. signed int v7; // edx
  19813. signed int v8; // eax
  19814. FightBackList_T *v9; // eax
  19815. signed int v10; // edx
  19816. PersonalDuelList_T *v11; // eax
  19817. signed int v12; // edx
  19818. PersonalEnemyList_T *v13; // eax
  19819. signed int v14; // edx
  19820. signed int v15; // edx
  19821. _PLAYERSHOP_GUID *v16; // ebx
  19822. _DuelInfo *v17; // eax
  19823. _FATIGUE_INFO *v18; // eax
  19824. _DOUBLE_EXP *v19; // eax
  19825. _BANK_DB_LOAD *v20; // ebx
  19826. signed int v21; // edi
  19827. _BAG_DB_LOAD *v22; // ebx
  19828. signed int v23; // edi
  19829. _EQUIP_DB_LOAD *v24; // ebx
  19830. signed int v25; // edi
  19831. _COOLDOWN_DB_LOAD_FOR_HUMAN *v26; // eax
  19832. signed int v27; // edx
  19833. _OWN_IMPACT *v28; // edx
  19834. signed int v29; // ebx
  19835. INT *v30; // edi
  19836. _SETTING_DB_LOAD *v31; // eax
  19837. signed int v32; // edx
  19838. _SETTING_DB_LOAD *v33; // eax
  19839. signed int v34; // edx
  19840. _PET_DB_LOAD *v35; // ebx
  19841. signed int v36; // edx
  19842. int v37; // eax
  19843. int v38; // eax
  19844. signed int v39; // edx
  19845. _PET_TITLE *v40; // eax
  19846. signed int v41; // edx
  19847. _RELATION_DB_LOAD *v42; // edx
  19848. PrenticeInfo *v43; // eax
  19849. PrenticeInfo1 *v44; // eax
  19850. _COOLDOWN_DB_LOAD_FOR_HUMAN *v45; // eax
  19851. signed int v46; // edx
  19852. _SETTING_DB_LOAD *v47; // eax
  19853. signed int v48; // edx
  19854. _COOLDOWN_DB_LOAD_FOR_HUMAN *v49; // eax
  19855. signed int v50; // edx
  19856. _SETTING_DB_LOAD *v51; // eax
  19857. signed int v52; // edx
  19858. _PLAYERSHOP_GUID *v53; // [esp+18h] [ebp-ACh]
  19859. signed int v54; // [esp+18h] [ebp-ACh]
  19860. _IMPACT_DB_LOAD *v55; // [esp+24h] [ebp-A0h]
  19861. _BAG_DB_LOAD *v56; // [esp+4Ch] [ebp-78h]
  19862. _EQUIP_DB_LOAD *v57; // [esp+50h] [ebp-74h]
  19863. char *v58; // [esp+54h] [ebp-70h]
  19864. signed int v59; // [esp+70h] [ebp-54h]
  19865. signed int v60; // [esp+80h] [ebp-44h]
  19866.  
  19867. Packet::Packet((int)this);
  19868. this->UserData.m_Human.m_Position.m_fX = 0.0;
  19869. this->UserData.m_Human.m_Position.m_fZ = 0.0;
  19870. this->UserData.m_Human.m_BakPosition.m_fX = 0.0;
  19871. this->UserData.m_Human.m_BakPosition.m_fZ = 0.0;
  19872. this->_vptr_Packet = (int (**)(...))off_80CF1A8;
  19873. this->UserData.m_Human.m_guidCurrentPet.m_uHighSection = 0;
  19874. this->UserData.m_Human.m_guidCurrentPet.m_uLowSection = 0;
  19875. v1 = 9;
  19876. memset(&this->UserData.m_Human.m_BaseAttrLevel1, 0, sizeof(this->UserData.m_Human.m_BaseAttrLevel1));
  19877. v2 = &this->UserData.m_Human;
  19878. v3 = &this->UserData.m_Human.m_PvpInfo.m_oFightBackList;
  19879. do
  19880. {
  19881. --v1;
  19882. v3->m_aList[0].m_nUniqueID = -1;
  19883. v3->m_aList[0].m_nTime = 0;
  19884. v3 = (FightBackList_T *)((char *)v3 + 8);
  19885. }
  19886. while ( v1 != -1 );
  19887. v4 = &this->UserData.m_Human.m_PvpInfo.m_oPersonalDuelList;
  19888. v5 = 4;
  19889. do
  19890. {
  19891. --v5;
  19892. v4->m_aList[0].m_nUniqueID = -1;
  19893. v4->m_aList[0].m_nTime = 0;
  19894. v4 = (PersonalDuelList_T *)((char *)v4 + 8);
  19895. }
  19896. while ( v5 != -1 );
  19897. v6 = &this->UserData.m_Human.m_PvpInfo.m_oPersonalEnemyList;
  19898. v7 = 5;
  19899. do
  19900. {
  19901. --v7;
  19902. v6->m_aList[0].m_nUniqueID = -1;
  19903. v6->m_aList[0].m_nTime = 0;
  19904. v6 = (PersonalEnemyList_T *)((char *)v6 + 8);
  19905. }
  19906. while ( v7 != -1 );
  19907. this->UserData.m_Human.m_PvpInfo.m_nCampID = -1;
  19908. this->UserData.m_Human.m_PvpInfo.m_nReputationID = -1;
  19909. this->UserData.m_Human.m_PvpInfo.m_nPvpMode = 0;
  19910. this->UserData.m_Human.m_PvpInfo.m_nPvpModeSwitchDelayTime = 0;
  19911. v8 = 0;
  19912. do
  19913. this->UserData.m_Human.m_PvpInfo.m_oReputationList.m_aList[v8++] = 0;
  19914. while ( v8 <= 63 );
  19915. v9 = &this->UserData.m_Human.m_PvpInfo.m_oFightBackList;
  19916. v10 = 9;
  19917. do
  19918. {
  19919. v9->m_aList[0].m_nUniqueID = -1;
  19920. v9->m_aList[0].m_nTime = 0;
  19921. v9 = (FightBackList_T *)((char *)v9 + 8);
  19922. --v10;
  19923. }
  19924. while ( v10 >= 0 );
  19925. v11 = &this->UserData.m_Human.m_PvpInfo.m_oPersonalDuelList;
  19926. v12 = 4;
  19927. do
  19928. {
  19929. v11->m_aList[0].m_nUniqueID = -1;
  19930. v11->m_aList[0].m_nTime = 0;
  19931. v11 = (PersonalDuelList_T *)((char *)v11 + 8);
  19932. --v12;
  19933. }
  19934. while ( v12 >= 0 );
  19935. v13 = &this->UserData.m_Human.m_PvpInfo.m_oPersonalEnemyList;
  19936. v14 = 5;
  19937. do
  19938. {
  19939. v13->m_aList[0].m_nUniqueID = -1;
  19940. v13->m_aList[0].m_nTime = 0;
  19941. v13 = (PersonalEnemyList_T *)((char *)v13 + 8);
  19942. --v14;
  19943. }
  19944. while ( v14 >= 0 );
  19945. v53 = this->UserData.m_Human.m_ShopGuid;
  19946. v15 = 1;
  19947. do
  19948. {
  19949. memset(v53, 0, sizeof(_PLAYERSHOP_GUID));
  19950. --v15;
  19951. v53->m_PoolPos = -1;
  19952. v53->m_Server = -1;
  19953. v53->m_World = -1;
  19954. v53->m_Scene = -1;
  19955. ++v53;
  19956. }
  19957. while ( v15 != -1 );
  19958. v16 = this->UserData.m_Human.m_FavoriteList;
  19959. v54 = 9;
  19960. do
  19961. {
  19962. memset(v16, 0, sizeof(_PLAYERSHOP_GUID));
  19963. --v54;
  19964. v16->m_PoolPos = -1;
  19965. v16->m_Server = -1;
  19966. v16->m_World = -1;
  19967. v16->m_Scene = -1;
  19968. ++v16;
  19969. }
  19970. while ( v54 != -1 );
  19971. v17 = &this->UserData.m_Human.m_oDuelInfo;
  19972. v17->m_nMaxReqTime = 0;
  19973. v17->m_nProcessStatus = 0;
  19974. v18 = &this->UserData.m_Human.m_FatigueInfo;
  19975. this->UserData.m_Human.m_oDuelInfo.m_guidDueler = -1;
  19976. v18->m_uTotalOfflineTime = 0;
  19977. v18->m_uCurrentEnterServerTime = 0;
  19978. v18->m_uLastLeaveServerTime = 0;
  19979. v19 = &this->UserData.m_Human.m_DoubleExp;
  19980. this->UserData.m_Human.m_FatigueInfo.m_uTotalOnlineTime = 0;
  19981. this->UserData.m_Human.m_DoubleExp.m_nCount = 0;
  19982. v19->m_bLock = 0;
  19983. v19->m_unMoneyDETime = 0;
  19984. v19->m_unFreeDETime = 0;
  19985. v19->m_nPreFlashTime = 0;
  19986. _HUMAN_DB_LOAD::CleanUp(v2);
  19987. v20 = &this->UserData.m_Bank;
  19988. v21 = 59;
  19989. v58 = (char *)&this->UserData.m_Bank;
  19990. while ( v21 != -1 )
  19991. {
  19992. v20->m_pItem[0].m_ItemGUID.m_Serial = 0;
  19993. v20->m_pItem[0].m_ItemGUID.m_Server = 0;
  19994. v20->m_pItem[0].m_ItemGUID.m_World = 0;
  19995. memset(v20, 0, 0xB0u);
  19996. v20 = (_BANK_DB_LOAD *)((char *)v20 + 176);
  19997. --v21;
  19998. }
  19999. _BANK_DB_LOAD::CleanUp(v58);
  20000. v56 = &this->UserData.m_Bag;
  20001. v22 = &this->UserData.m_Bag;
  20002. v23 = 99;
  20003. do
  20004. {
  20005. v22->m_pItem[0].m_ItemGUID.m_Serial = 0;
  20006. v22->m_pItem[0].m_ItemGUID.m_Server = 0;
  20007. v22->m_pItem[0].m_ItemGUID.m_World = 0;
  20008. --v23;
  20009. memset(v22, 0, 0xB0u);
  20010. v22 = (_BAG_DB_LOAD *)((char *)v22 + 176);
  20011. }
  20012. while ( v23 != -1 );
  20013. _BAG_DB_LOAD::CleanUp(v56);
  20014. v57 = &this->UserData.m_Equip;
  20015. v24 = &this->UserData.m_Equip;
  20016. v25 = 18;
  20017. do
  20018. {
  20019. v24->m_pItem[0].m_ItemGUID.m_Serial = 0;
  20020. v24->m_pItem[0].m_ItemGUID.m_Server = 0;
  20021. v24->m_pItem[0].m_ItemGUID.m_World = 0;
  20022. --v25;
  20023. memset(v24, 0, 0xB0u);
  20024. v24 = (_EQUIP_DB_LOAD *)((char *)v24 + 176);
  20025. }
  20026. while ( v25 != -1 );
  20027. _EQUIP_DB_LOAD::CleanUp(v57);
  20028. _SKILL_DB_LOAD::CleanUp(&this->UserData.m_Skill);
  20029. v26 = &this->UserData.m_Cooldown;
  20030. v27 = 31;
  20031. do
  20032. {
  20033. --v27;
  20034. v26->m_aCooldown[0].m_nID = -1;
  20035. v26->m_aCooldown[0].m_nCooldown = 0;
  20036. v26->m_aCooldown[0].m_nCooldownElapsed = 0;
  20037. v26 = (_COOLDOWN_DB_LOAD_FOR_HUMAN *)((char *)v26 + 12);
  20038. }
  20039. while ( v27 != -1 );
  20040. _XINFA_DB_LOAD::CleanUp(&this->UserData.m_XinFa);
  20041. v55 = &this->UserData.m_Impact;
  20042. v28 = this->UserData.m_Impact.m_aImpacts;
  20043. v29 = 19;
  20044. do
  20045. {
  20046. --v29;
  20047. v28->m_Flags.m_aBitFlags[0] = 0;
  20048. v30 = v28->m_aParams;
  20049. v28->m_nSN = -1;
  20050. v28->m_nDataIndex = -1;
  20051. v28->m_nImpactID = -1;
  20052. v28->m_nSkillID = -1;
  20053. v28->m_nCasterObjID = -1;
  20054. v28->m_nCasterUniqueID = -1;
  20055. v28->m_nCasterLogicCount = 0;
  20056. v28->m_nContinuance = 0;
  20057. v28->m_nContinuanceElapsed = 0;
  20058. v28->m_nIntervalElapsed = 0;
  20059. v28->m_nSubLevel = 0;
  20060. ++v28;
  20061. memset(v30, 0, 0x20u);
  20062. }
  20063. while ( v29 != -1 );
  20064. _IMPACT_DB_LOAD::CleanUp(v55);
  20065. _ABILITY_DB_LOAD::CleanUp(this->UserData.m_Ability.m_aPrescr);
  20066. _MISSION_DB_LOAD::CleanUp(&this->UserData.m_Mission);
  20067. v31 = &this->UserData.m_Setting;
  20068. v32 = 127;
  20069. do
  20070. {
  20071. --v32;
  20072. v31->m_aSetting[0].m_SettingType = 0;
  20073. v31->m_aSetting[0].m_SettingData = 0;
  20074. v31 = (_SETTING_DB_LOAD *)((char *)v31 + 5);
  20075. }
  20076. while ( v32 != -1 );
  20077. v33 = &this->UserData.m_Setting;
  20078. v34 = 127;
  20079. do
  20080. {
  20081. v33->m_aSetting[0].m_SettingType = 0;
  20082. v33->m_aSetting[0].m_SettingData = 0;
  20083. v33 = (_SETTING_DB_LOAD *)((char *)v33 + 5);
  20084. --v34;
  20085. }
  20086. while ( v34 >= 0 );
  20087. v35 = this->UserData.m_PetList.m_aPetDB;
  20088. v60 = 9;
  20089. do
  20090. {
  20091. v36 = 12;
  20092. v35->m_GUID.m_uHighSection = 0;
  20093. v35->m_GUID.m_uLowSection = 0;
  20094. v35->m_SpouseGUID.m_uHighSection = 0;
  20095. v35->m_SpouseGUID.m_uLowSection = 0;
  20096. memset(&v35->m_BaseAttrLevel1, 0, sizeof(v35->m_BaseAttrLevel1));
  20097. v37 = (int)v35->m_SkillList;
  20098. do
  20099. {
  20100. --v36;
  20101. *(_BYTE *)v37 = 0;
  20102. *(_WORD *)(v37 + 1) = -1;
  20103. v37 += 3;
  20104. }
  20105. while ( v36 != -1 );
  20106. v38 = (int)&v35->m_CooldownList;
  20107. v39 = 7;
  20108. do
  20109. {
  20110. --v39;
  20111. *(_WORD *)v38 = -1;
  20112. *(_DWORD *)(v38 + 4) = 0;
  20113. *(_DWORD *)(v38 + 8) = 0;
  20114. v38 += 12;
  20115. }
  20116. while ( v39 != -1 );
  20117. v40 = v35->m_PetTitle;
  20118. v41 = 9;
  20119. do
  20120. {
  20121. --v41;
  20122. v40->m_tTitleID = -1;
  20123. v40->m_uCreateTime = 0;
  20124. ++v40;
  20125. }
  20126. while ( v41 != -1 );
  20127. _PET_DB_LOAD::CleanUp(v35);
  20128. --v60;
  20129. ++v35;
  20130. }
  20131. while ( v60 != -1 );
  20132. v42 = &this->UserData.m_Relation;
  20133. v59 = 99;
  20134. do
  20135. {
  20136. memset(v42->m_aRelation[0].m_Member.m_szMemberName, 0, 0x1Cu);
  20137. *(_WORD *)&v42->m_aRelation[0].m_Member.m_szMemberName[28] = 0;
  20138. v42->m_aRelation[0].m_Member.m_MemberGUID = -1;
  20139. memset(v42->m_aRelation[0].m_Member.m_szMemberName, 0, 0x1Cu);
  20140. *(_WORD *)&v42->m_aRelation[0].m_Member.m_szMemberName[28] = 0;
  20141. v42->m_aRelation[0].m_Type = 0;
  20142. v42->m_aRelation[0].m_Group = 0;
  20143. --v59;
  20144. v42->m_aRelation[0].m_Member.m_nLevel = 0;
  20145. v42->m_aRelation[0].m_Member.m_nMenPai = 9;
  20146. v42->m_aRelation[0].m_Member.m_nPortrait = -1;
  20147. v42->m_aRelation[0].m_Member.m_GuildID = -1;
  20148. v42->m_aRelation[0].m_FriendPoint = 0;
  20149. v42 = (_RELATION_DB_LOAD *)((char *)v42 + 58);
  20150. }
  20151. while ( v59 != -1 );
  20152. v43 = &this->UserData.m_Relation.m_PrenticeInfo;
  20153. this->UserData.m_Relation.m_MarriageInfo.m_SpouseGUID = -1;
  20154. v43->m_uPrenticeCount = 0;
  20155. v43->m_uMoralPoint = 0;
  20156. v44 = &this->UserData.m_Relation.m_PrenticeInfo1;
  20157. this->UserData.m_Relation.m_PrenticeInfo.m_PrenticeGUID[0] = -1;
  20158. this->UserData.m_Relation.m_PrenticeInfo.m_PrenticeGUID[1] = -1;
  20159. this->UserData.m_Relation.m_MasterInfo.m_MasterGUID = -1;
  20160. this->UserData.m_Relation.m_PrenticeInfo.m_BetrayingTime = 0;
  20161. this->UserData.m_Relation.m_PrenticeInfo1.m_BetrayingTime = 0;
  20162. v44->m_uMoralPoint = 0;
  20163. v44->m_uPrenticeCount = 0;
  20164. v44->m_uPrenticeExp = 0;
  20165. v44->m_uMasterExp = 0;
  20166. v44->m_uMasterLevel = 0;
  20167. this->UserData.m_Relation.m_PrenticeInfo1.m_PrenticeGUID[0] = -1;
  20168. this->UserData.m_Relation.m_PrenticeInfo1.m_PrenticeGUID[1] = -1;
  20169. _RELATION_DB_LOAD::CleanUp(&this->UserData.m_Relation);
  20170. memset(&this->UserData.m_PrivateInfo, 0, 0x1B0u);
  20171. this->UserData.m_PrivateInfo.m_CharGUID = -1;
  20172. this->UserData.m_DRideData.m_uDRideTargetGUID = -1;
  20173. this->UserData.m_DRideData.m_bDRideMountOwner = 0;
  20174. this->UserData.m_macValue.m_uHigh = 0;
  20175. this->UserData.m_macValue.m_uLow = 0;
  20176. this->UserData.m_AccountSafeSign.m_Sign = 0;
  20177. _HUMAN_DB_LOAD::CleanUp(v2);
  20178. _EQUIP_DB_LOAD::CleanUp(v57);
  20179. _BAG_DB_LOAD::CleanUp(v56);
  20180. _BANK_DB_LOAD::CleanUp(v58);
  20181. _SKILL_DB_LOAD::CleanUp(&this->UserData.m_Skill);
  20182. v45 = &this->UserData.m_Cooldown;
  20183. v46 = 31;
  20184. do
  20185. {
  20186. v45->m_aCooldown[0].m_nID = -1;
  20187. v45->m_aCooldown[0].m_nCooldown = 0;
  20188. v45->m_aCooldown[0].m_nCooldownElapsed = 0;
  20189. v45 = (_COOLDOWN_DB_LOAD_FOR_HUMAN *)((char *)v45 + 12);
  20190. --v46;
  20191. }
  20192. while ( v46 >= 0 );
  20193. _XINFA_DB_LOAD::CleanUp(&this->UserData.m_XinFa);
  20194. _IMPACT_DB_LOAD::CleanUp(v55);
  20195. _ABILITY_DB_LOAD::CleanUp(this->UserData.m_Ability.m_aPrescr);
  20196. _MISSION_DB_LOAD::CleanUp(&this->UserData.m_Mission);
  20197. v47 = &this->UserData.m_Setting;
  20198. v48 = 127;
  20199. do
  20200. {
  20201. v47->m_aSetting[0].m_SettingType = 0;
  20202. v47->m_aSetting[0].m_SettingData = 0;
  20203. v47 = (_SETTING_DB_LOAD *)((char *)v47 + 5);
  20204. --v48;
  20205. }
  20206. while ( v48 >= 0 );
  20207. _PET_DB_LIST_LOAD::CleanUp(&this->UserData.m_PetList);
  20208. _RELATION_DB_LOAD::CleanUp(&this->UserData.m_Relation);
  20209. memset(&this->UserData.m_PrivateInfo, 0, 0x1B0u);
  20210. this->UserData.m_PrivateInfo.m_CharGUID = -1;
  20211. this->UserData.m_bIsPasswdUnlock = 0;
  20212. this->UserData.m_DRideData.m_uDRideTargetGUID = -1;
  20213. this->UserData.m_DRideData.m_bDRideMountOwner = 0;
  20214. memset(this->UserData.m_AccName, 0, 0x30u);
  20215. *(_WORD *)&this->UserData.m_AccName[48] = 0;
  20216. this->UserData.m_AccName[50] = 0;
  20217. this->UserData.m_macValue.m_uLow = 0;
  20218. this->UserData.m_macValue.m_uHigh = 0;
  20219. this->UserData.m_uVERecoverTime = 0;
  20220. this->UserData.m_nLeftPilferLockTime = 0;
  20221. this->UserData.m_bPilferLockTimeStart = 0;
  20222. this->UserData.m_uPrevHeartBeatANSITime = 0;
  20223. memset(this->UserData.m_LoginHost, 0, 0x18u);
  20224. this->UserData.m_LoginHost[24] = 0;
  20225. this->UserData.m_AccountSafeSign.m_Sign = 0;
  20226. this->UserData.m_IsPilfered = 0;
  20227. _HUMAN_DB_LOAD::CleanUp(v2);
  20228. _EQUIP_DB_LOAD::CleanUp(&this->UserData.m_Equip);
  20229. _BAG_DB_LOAD::CleanUp(&this->UserData.m_Bag);
  20230. _BANK_DB_LOAD::CleanUp((char *)&this->UserData.m_Bank);
  20231. _SKILL_DB_LOAD::CleanUp(&this->UserData.m_Skill);
  20232. v49 = &this->UserData.m_Cooldown;
  20233. v50 = 31;
  20234. do
  20235. {
  20236. v49->m_aCooldown[0].m_nID = -1;
  20237. v49->m_aCooldown[0].m_nCooldown = 0;
  20238. v49->m_aCooldown[0].m_nCooldownElapsed = 0;
  20239. v49 = (_COOLDOWN_DB_LOAD_FOR_HUMAN *)((char *)v49 + 12);
  20240. --v50;
  20241. }
  20242. while ( v50 >= 0 );
  20243. _XINFA_DB_LOAD::CleanUp(&this->UserData.m_XinFa);
  20244. _IMPACT_DB_LOAD::CleanUp(&this->UserData.m_Impact.m_Count);
  20245. _ABILITY_DB_LOAD::CleanUp(this->UserData.m_Ability.m_aPrescr);
  20246. _MISSION_DB_LOAD::CleanUp(&this->UserData.m_Mission);
  20247. v51 = &this->UserData.m_Setting;
  20248. v52 = 127;
  20249. do
  20250. {
  20251. v51->m_aSetting[0].m_SettingType = 0;
  20252. v51->m_aSetting[0].m_SettingData = 0;
  20253. v51 = (_SETTING_DB_LOAD *)((char *)v51 + 5);
  20254. --v52;
  20255. }
  20256. while ( v52 >= 0 );
  20257. _PET_DB_LIST_LOAD::CleanUp(&this->UserData.m_PetList);
  20258. _RELATION_DB_LOAD::CleanUp(&this->UserData.m_Relation);
  20259. memset(&this->UserData.m_PrivateInfo, 0, 0x1B0u);
  20260. this->UserData.m_PrivateInfo.m_CharGUID = -1;
  20261. this->UserData.m_bIsPasswdUnlock = 0;
  20262. this->UserData.m_DRideData.m_bDRideMountOwner = 0;
  20263. this->UserData.m_DRideData.m_uDRideTargetGUID = -1;
  20264. memset(this->UserData.m_AccName, 0, 0x30u);
  20265. *(_WORD *)&this->UserData.m_AccName[48] = 0;
  20266. this->UserData.m_AccName[50] = 0;
  20267. this->UserData.m_macValue.m_uHigh = 0;
  20268. this->UserData.m_macValue.m_uLow = 0;
  20269. this->UserData.m_uVERecoverTime = 0;
  20270. this->UserData.m_nLeftPilferLockTime = 0;
  20271. this->UserData.m_bPilferLockTimeStart = 0;
  20272. this->UserData.m_uPrevHeartBeatANSITime = 0;
  20273. memset(this->UserData.m_LoginHost, 0, 0x18u);
  20274. this->UserData.m_LoginHost[24] = 0;
  20275. this->UserData.m_AccountSafeSign.m_Sign = 0;
  20276. this->UserData.m_IsPilfered = 0;
  20277. }
  20278. // 80CF1A8: using guessed type _DWORD (__cdecl *off_80CF1A8[2])(Packets::LWAskCharLogin *this);
  20279.  
  20280. //----- (0805071B) --------------------------------------------------------
  20281. void __usercall __noreturn sub_805071B(int a1@<ebp>)
  20282. {
  20283. Packet::~Packet(*(_DWORD **)(a1 - 36));
  20284. _Unwind_Resume();
  20285. }
  20286.  
  20287. //----- (0805095C) --------------------------------------------------------
  20288. void __cdecl ServerThread::ServerThread(_DWORD *a2)
  20289. {
  20290. Thread::Thread(a2);
  20291. *a2 = &off_80BCFC0;
  20292. a2[3] = 1;
  20293. }
  20294. // 80BCFC0: using guessed type _DWORD (__cdecl *off_80BCFC0)(ServerThread *this);
  20295.  
  20296. //----- (08050984) --------------------------------------------------------
  20297. void __cdecl ServerThread::ServerThread(_DWORD *a2)
  20298. {
  20299. Thread::Thread(a2);
  20300. *a2 = &off_80BCFC0;
  20301. a2[3] = 1;
  20302. }
  20303. // 80BCFC0: using guessed type _DWORD (__cdecl *off_80BCFC0)(ServerThread *this);
  20304.  
  20305. //----- (080509AC) --------------------------------------------------------
  20306. void __cdecl ServerThread::~ServerThread(Thread *a2)
  20307. {
  20308. a2->_vptr_Thread = (int (**)(...))&off_80BCFC0;
  20309. Thread::~Thread(a2);
  20310. }
  20311. // 80BCFC0: using guessed type _DWORD (__cdecl *off_80BCFC0)(ServerThread *this);
  20312.  
  20313. //----- (080509C8) --------------------------------------------------------
  20314. void __cdecl ServerThread::~ServerThread(Thread *a2)
  20315. {
  20316. a2->_vptr_Thread = (int (**)(...))&off_80BCFC0;
  20317. Thread::~Thread(a2);
  20318. }
  20319. // 80BCFC0: using guessed type _DWORD (__cdecl *off_80BCFC0)(ServerThread *this);
  20320.  
  20321. //----- (080509E4) --------------------------------------------------------
  20322. void __cdecl ServerThread::~ServerThread(IPRegionTable *a2)
  20323. {
  20324. a2->_vptr_IPRegionTable = (int (**)(...))&off_80BCFC0;
  20325. Thread::~Thread(a2);
  20326. operator delete(a2);
  20327. }
  20328. // 80BCFC0: using guessed type _DWORD (__cdecl *off_80BCFC0)(ServerThread *this);
  20329.  
  20330. //----- (08050A0C) --------------------------------------------------------
  20331. void __cdecl ServerThread::run(ServerThread *const this)
  20332. {
  20333. TID v1; // ebx
  20334. ID_t v2; // ax
  20335. unsigned int v3; // eax
  20336. int v4; // edx
  20337. BOOL v5; // eax
  20338.  
  20339. v1 = this->m_TID;
  20340. v2 = ServerManager::GetLoginID(*(ServerManager *const *)&g_pServerManager);
  20341. CacheLog(0, "ServerThread::run() Thread ID:%d LoginID:%d...", v1, v2);
  20342. v3 = TimeManager::CurrentTime((int)g_pTimeManager);
  20343. srand(v3);
  20344. v4 = *(_DWORD *)&g_pServerManager;
  20345. *(_DWORD *)(*(_DWORD *)&g_pServerManager + 7480) = this->m_TID;
  20346. v5 = this->m_Active;
  20347. if ( v5 )
  20348. {
  20349. if ( v4 )
  20350. goto LABEL_5;
  20351. while ( v5 )
  20352. {
  20353. if ( *(_DWORD *)&g_pServerManager )
  20354. {
  20355. LABEL_5:
  20356. MySleep(100);
  20357. if ( !ServerManager::Tick(*(ServerManager *const *)&g_pServerManager) )
  20358. __assert__("./Main/ServerThread.cpp", 0x2Eu, "virtual void ServerThread::run()", "ret");
  20359. v5 = this->m_Active;
  20360. }
  20361. }
  20362. }
  20363. }
  20364. // 8049B18: using guessed type int __stdcall __cxa_end_catch(_DWORD);
  20365.  
  20366. //----- (08050B18) --------------------------------------------------------
  20367. void __cdecl _tcf_0_6(void *a1)
  20368. {
  20369. std::ios_base::Init::~Init(&std::__ioinit);
  20370. }
  20371.  
  20372. //----- (08050B28) --------------------------------------------------------
  20373. void `global constructor keyed to'ServerThread::ServerThread()
  20374. {
  20375. std::ios_base::Init::Init(&std::__ioinit);
  20376. __cxa_atexit(_tcf_0_6, 0, &_dso_handle);
  20377. }
  20378. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  20379.  
  20380. //----- (08050B54) --------------------------------------------------------
  20381. void __cdecl ServerThread::stop(int a2)
  20382. {
  20383. *(_DWORD *)(a2 + 12) = 0;
  20384. }
  20385.  
  20386. //----- (08050B64) --------------------------------------------------------
  20387. #error "8050BE0: positive sp value has been found (funcsize=30)"
  20388.  
  20389. //----- (08050C10) --------------------------------------------------------
  20390. #error "8050C8C: positive sp value has been found (funcsize=30)"
  20391.  
  20392. //----- (08050CBC) --------------------------------------------------------
  20393. void __cdecl ThreadManager::~ThreadManager(ThreadManager *const this)
  20394. {
  20395. if ( this->m_pServerThread )
  20396. {
  20397. (*((void (__cdecl **)(ServerThread *))this->m_pServerThread->_vptr_Thread + 1))(this->m_pServerThread);
  20398. this->m_pServerThread = 0;
  20399. }
  20400. }
  20401.  
  20402. //----- (08050D2C) --------------------------------------------------------
  20403. void __cdecl ThreadManager::~ThreadManager(ThreadManager *const this)
  20404. {
  20405. if ( this->m_pServerThread )
  20406. {
  20407. (*((void (__cdecl **)(ServerThread *))this->m_pServerThread->_vptr_Thread + 1))(this->m_pServerThread);
  20408. this->m_pServerThread = 0;
  20409. }
  20410. }
  20411.  
  20412. //----- (08050D9C) --------------------------------------------------------
  20413. BOOL __cdecl ThreadManager::Init(ThreadManager *const this)
  20414. {
  20415. if ( this->m_pServerThread->m_Active )
  20416. ++this->m_nThreads;
  20417. return 1;
  20418. }
  20419.  
  20420. //----- (08050DB8) --------------------------------------------------------
  20421. BOOL __cdecl ThreadManager::Start(ThreadManager *const this)
  20422. {
  20423. Thread::start(&this->m_pServerThread->0);
  20424. return 1;
  20425. }
  20426.  
  20427. //----- (08050E1C) --------------------------------------------------------
  20428. BOOL __cdecl ThreadManager::Stop(ThreadManager *const this)
  20429. {
  20430. if ( this->m_pServerThread )
  20431. (*((void (__cdecl **)(ServerThread *))this->m_pServerThread->_vptr_Thread + 2))(this->m_pServerThread);
  20432. return 1;
  20433. }
  20434.  
  20435. //----- (08050E90) --------------------------------------------------------
  20436. void __cdecl _tcf_0_7(void *a1)
  20437. {
  20438. std::ios_base::Init::~Init(&std::__ioinit);
  20439. }
  20440.  
  20441. //----- (08050EA0) --------------------------------------------------------
  20442. void `global constructor keyed to'g_pThreadManager()
  20443. {
  20444. std::ios_base::Init::Init(&std::__ioinit);
  20445. __cxa_atexit(_tcf_0_7, 0, &_dso_handle);
  20446. }
  20447. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  20448.  
  20449. //----- (08050ECC) --------------------------------------------------------
  20450. void __cdecl Config::Config(Config *const this)
  20451. {
  20452. signed int v1; // eax
  20453. _LOGIN_INFO *v2; // eax
  20454. _WORLD_INFO *v3; // eax
  20455. signed int v4; // eax
  20456. _SERVER_INFO *v5; // edx
  20457. _BILLING_INFO *v6; // eax
  20458.  
  20459. this->m_ConfigInfo.m_GodReliveTopLevel = 30;
  20460. this->m_ConfigInfo.m_ZoneSize = 10;
  20461. this->m_ConfigInfo.m_EquipmentDamagePoint = 1000;
  20462. this->m_ConfigInfo.m_RecoverTime = 1000;
  20463. this->m_ConfigInfo.m_MaxMonster = 1000;
  20464. this->m_ConfigInfo.m_MaxPet = 1000;
  20465. this->m_ConfigInfo.m_PetBodyTime = 2000;
  20466. this->m_ConfigInfo.m_PetHappinessInterval = 600000;
  20467. this->m_ConfigInfo.m_PetLifeInterval = 1800000;
  20468. this->m_ConfigInfo.m_PetDecLifeStep = 8;
  20469. this->m_ConfigInfo.m_PetCallUpHappiness = 60;
  20470. this->m_ConfigInfo.m_PetPlacardTime = 1800000;
  20471. this->m_ConfigInfo.m_DefaultRespawnTime = 300000;
  20472. this->m_ConfigInfo.m_DropBoxRecycleTime = 300000;
  20473. this->m_ConfigInfo.m_TimeChangeInterval = 300000;
  20474. this->m_ConfigInfo.m_PacketAuditTime = 0;
  20475. this->m_ConfigInfo.m_PositionRange = 10;
  20476. this->m_ConfigInfo.m_AIType = 1;
  20477. this->m_ConfigInfo.m_DisconnectTime = 0;
  20478. this->m_ConfigInfo.m_DisconnectTime2 = 0;
  20479. memset(this->m_ConfigInfo.m_UserPath, 0, 0x104u);
  20480. this->m_ConfigInfo.m_CanGetExpRange = 30.0;
  20481. this->m_ConfigInfo.m_MaxPortal = 0;
  20482. this->m_ConfigInfo.m_MaxPlatform = 0;
  20483. this->m_ConfigInfo.m_MaxSpecial = 1024;
  20484. this->m_ConfigInfo.m_MaxBus = 1024;
  20485. this->m_ConfigInfo.m_MaxPlayerShopNum = 512;
  20486. this->m_ConfigInfo.m_PaymentPerHour = 0;
  20487. this->m_ConfigInfo.m_MaxSkillObj = 1024;
  20488. this->m_ConfigInfo.m_DefaultBodyTime = 0;
  20489. this->m_ConfigInfo.m_DefaultBossBodyTime = 0;
  20490. this->m_ConfigInfo.m_OutGhostTime = 0;
  20491. this->m_ConfigInfo.m_DefaultMoveSpeed = 2800;
  20492. this->m_ConfigInfo.m_DefaultAttackSpeed = 2000;
  20493. this->m_ConfigInfo.m_HumanVERecoverInterval = 300000;
  20494. this->m_ConfigInfo.m_HumanMaxDefualtLevel = 150;
  20495. this->m_ConfigInfo.m_PetMaxDefaultLevel = 155;
  20496. this->m_ConfigInfo.m_MonsterMaxDefaultLevel = 200;
  20497. this->m_ConfigInfo.m_MaxLevelGAP = 200;
  20498. this->m_ConfigInfo.m_ExpTblItemCount = 401;
  20499. this->m_ConfigInfo.m_XinfaMaxDefaultLevel = 170;
  20500. this->m_ConfigInfo.m_fPetDieReduceLift = 0.2;
  20501. this->m_ConfigInfo.m_PKValueRefreshRate = 3600;
  20502. this->m_ConfigInfo.m_nHumanDefPilferLockTime = 180000;
  20503. this->m_ConfigInfo.m_DefaultRefreshRate = 60000;
  20504. this->m_ConfigInfo.m_DefaultCheckZoneRate = 1000;
  20505. this->m_ConfigInfo.m_OddsOfChangeTarget = 20;
  20506. this->m_ConfigInfo.m_OddsOfAttackAssistant = 20;
  20507. this->m_ConfigInfo.m_ChangeTargetCooldown = 5000;
  20508. this->m_ConfigInfo.m_nAvailableFollowDist = 15;
  20509. this->m_ConfigInfo.m_nTimeForLoseFollow = 30;
  20510. this->m_ConfigInfo.m_nFoundDurationHour = 24;
  20511. this->m_ConfigInfo.m_nDefaultMaxMemberCount = 160;
  20512. this->m_ConfigInfo.m_nResponseUserCount = 10;
  20513. this->m_ConfigInfo.m_nPasswdPoint = 0;
  20514. this->m_ConfigInfo.m_fGoodBadRadius = 15.0;
  20515. this->m_ConfigInfo.m_fRateA = 0.0;
  20516. this->m_ConfigInfo.m_fRateB = 0.0;
  20517. this->m_ConfigInfo.m_nPromptPoint = 0;
  20518. this->m_ConfigInfo.m_nDeleteDelayTime = 0;
  20519. this->m_ConfigInfo.m_nEnergySetCost = 0;
  20520. this->m_ConfigInfo.m_nEnergyModifyCost = 0;
  20521. this->m_ConfigInfo.m_nEnergyDelCost = 0;
  20522. this->m_ConfigInfo.m_nMaxInputErrTimesPerDay = 5;
  20523. this->m_ConfigInfo.m_nPWUnlockTime = 0;
  20524. this->m_ConfigInfo.m_nExpPoint = 0;
  20525. this->m_ConfigInfo.m_nHashOnlineUserCount = 1000;
  20526. this->m_ConfigInfo.m_nHashMailUserCount = 1000;
  20527. this->m_ConfigInfo.m_nMaxOfflineUserCount = 0;
  20528. this->m_ConfigInfo.m_nSpeakerPoolMax = 0;
  20529. this->m_ConfigInfo.m_fRespawnParam = 1.0;
  20530. this->m_ConfigInfo.m_KickUserTime = 300000;
  20531. this->m_ConfigInfo.m_nLanguage = -1;
  20532. this->m_ConfigInfo.m_SMU_KickUserTime = 300000;
  20533. this->m_ConfigInfo.m_nDefaultDamageFluctuation = 10;
  20534. this->m_ConfigInfo.m_nMinGoodBadValue = 0;
  20535. this->m_ConfigInfo.m_nMaxGoodBadValue = 1000000;
  20536. this->m_ConfigInfo.m_nLevelNeeded = 30;
  20537. this->m_ConfigInfo.m_nMemberLevel = 10;
  20538. this->m_ConfigInfo.m_nMemberLevelLimit = 40;
  20539. this->m_ConfigInfo.m_nMemverLevelDis = 8;
  20540. this->m_ConfigInfo.m_nBonusPerMember = 5;
  20541. this->m_ConfigInfo.m_nBonusPerPrentice = 1;
  20542. this->m_ConfigInfo.m_nMaxBonus = 10;
  20543. this->m_ConfigInfo.m_nPenaltyWhenMemberDie = 10;
  20544. this->m_ConfigInfo.m_nDuelEnergyRequire = 100;
  20545. this->m_ConfigInfo.m_nDuelTime = 600;
  20546. this->m_ConfigInfo.m_nDuelLevelRequire = 10;
  20547. this->m_ConfigInfo.m_fNewServerSaleRate = 1.0;
  20548. this->m_ConfigInfo.m_ExpSpouseAddRate = 0.039999999;
  20549. this->m_ConfigInfo.m_ExpBrotherAddRate = 0.02;
  20550. this->m_ConfigInfo.m_ExpMasterNotInTeamAddRate = 0.1;
  20551. this->m_ConfigInfo.m_ExpPrenticeAddRate = 0.050000001;
  20552. this->m_ConfigInfo.m_ExpDarkAbsorbRate = 0.0099999998;
  20553. this->m_ConfigInfo.m_AssistantDemandFormulaParam0 = 1.5140001;
  20554. this->m_ConfigInfo.m_AssistantDemandFormulaParam1 = 19.0;
  20555. this->m_ConfigInfo.m_AssistantDemandFormulaParam3 = 37.099998;
  20556. this->m_ConfigInfo.m_YuanBaoSceneID = -1;
  20557. this->m_ConfigInfo.m_YuanBaoTicketMax = 1000;
  20558. this->m_ConfigInfo.m_nPersonalWarfareTime = 600;
  20559. this->m_ConfigInfo.m_nPKFlagSwitchDelay = 600;
  20560. this->m_ConfigInfo.m_nPkRefixOfDamage = 100;
  20561. this->m_ConfigInfo.m_nHostilePlayerWarning = 600;
  20562. this->m_ConfigInfo.m_nLegalFightBackTime = 600;
  20563. this->m_ConfigInfo.m_ExpParam = 1.0;
  20564. this->m_ConfigInfo.m_ExpMasterInTeamAddRate = 0.2;
  20565. this->m_ConfigInfo.m_AssistantDemandFormulaParam2 = 0.2;
  20566. this->m_ConfigInfo.m_EnableFatigueState = 0;
  20567. this->m_ConfigInfo.m_LittleFatigueTime = 10800;
  20568. this->m_ConfigInfo.m_ExceedingFatigueTime = 18000;
  20569. this->m_ConfigInfo.m_ResetFatigueStateOfflineTime = 18000;
  20570. this->m_ConfigInfo.m_XianYaMaxUser[0] = 40;
  20571. this->m_ConfigInfo.m_XianYaMaxUser[1] = 50;
  20572. this->m_ConfigInfo.m_XianYaMaxUser[2] = 60;
  20573. this->m_ConfigInfo.m_XianYaMaxUser[3] = 70;
  20574. this->m_ConfigInfo.m_XianYaMaxUser[4] = 80;
  20575. this->m_ConfigInfo.m_XianYaStdMoney[0] = 1000000;
  20576. this->m_ConfigInfo.m_XianYaStdMoney[1] = 2000000;
  20577. this->m_ConfigInfo.m_XianYaStdMoney[2] = 4000000;
  20578. this->m_ConfigInfo.m_XianYaStdMoney[3] = 8000000;
  20579. this->m_ConfigInfo.m_XianYaStdMoney[4] = 16000000;
  20580. this->m_ConfigInfo.m_XianYaMaxMoney[0] = 10000000;
  20581. this->m_ConfigInfo.m_XianYaMaxMoney[1] = 20000000;
  20582. v1 = 0;
  20583. this->m_ConfigInfo.m_XianYaMaxMoney[2] = 40000000;
  20584. this->m_ConfigInfo.m_XianYaMaxMoney[3] = 60000000;
  20585. this->m_ConfigInfo.m_XianYaMaxMoney[4] = 80000000;
  20586. this->m_ConfigInfo.m_QianZhuangDeltaMoney[0] = 500000;
  20587. this->m_ConfigInfo.m_QianZhuangDeltaMoney[1] = 1000000;
  20588. this->m_ConfigInfo.m_QianZhuangDeltaMoney[2] = 2000000;
  20589. this->m_ConfigInfo.m_QianZhuangDeltaMoney[3] = 4000000;
  20590. this->m_ConfigInfo.m_QianZhuangDeltaMoney[4] = 8000000;
  20591. this->m_ConfigInfo.m_XianYaMaxTrader[0] = 4;
  20592. this->m_ConfigInfo.m_XianYaMaxTrader[1] = 5;
  20593. this->m_ConfigInfo.m_XianYaMaxTrader[2] = 6;
  20594. this->m_ConfigInfo.m_XianYaMaxTrader[3] = 7;
  20595. this->m_ConfigInfo.m_XianYaMaxTrader[4] = 8;
  20596. this->m_ConfigInfo.m_XiangFangMaxUser[0] = 30;
  20597. this->m_ConfigInfo.m_XiangFangMaxUser[1] = 50;
  20598. this->m_ConfigInfo.m_XiangFangMaxUser[2] = 80;
  20599. this->m_ConfigInfo.m_XiangFangMaxUser[3] = 120;
  20600. this->m_ConfigInfo.m_XiangFangMaxUser[4] = 180;
  20601. this->m_ConfigInfo.m_CreateCityMoney = 10000000;
  20602. this->m_ConfigInfo.m_uBattleTime = 120;
  20603. this->m_ConfigInfo.m_bLeftGuildBuffEnable = 1;
  20604. this->m_ConfigInfo.m_uLeaveWordCost = 1000;
  20605. this->m_ConfigInfo.m_uMaxDayCostYuanBao = 0xFFFFFF;
  20606. this->m_ConfigInfo.m_uSendBackTime = 21600;
  20607. this->m_ConfigInfo.m_nYuanbaoFee = 2;
  20608. this->m_ConfigInfo.m_nGoldCoinFee = 2;
  20609. this->m_ConfigInfo.m_IsCloseYuanBaoSell = 0;
  20610. this->m_ConfigInfo.m_IsCloseGoldCoinSell = 0;
  20611. this->m_ConfigInfo.m_uMinExchangeCodeLevel = 1;
  20612. this->m_ConfigInfo.m_uMaxExchangeCodeLevel = 10;
  20613. this->m_ConfigInfo.m_MaxGuildLeagueNum = 255;
  20614. this->m_ConfigInfo.m_TimeAfterQuitLeague = 72;
  20615. this->m_ConfigInfo.m_CreateLeagueMoney = 100;
  20616. do
  20617. this->m_ConfigInfo.m_anCSIValue[v1++] = 10000000;
  20618. while ( v1 <= 5 );
  20619. this->m_ConfigInfo.m_fBoomScaleAll = 0.86510003;
  20620. this->m_ConfigInfo.m_fBoomScaleAttrInc = 0.035;
  20621. this->m_ConfigInfo.m_fBoomScaleAvgBoom = 0.045000002;
  20622. this->m_ConfigInfo.m_fBoomScaleAmb = 0.40000001;
  20623. this->m_ConfigInfo.m_fLittleIncomePercent = 0.5;
  20624. this->m_ConfigInfo.m_fBoomScaleOnLineCount = 0.5;
  20625. this->m_ConfigInfo.m_fBoomScaleArg = 1.6;
  20626. this->m_ConfigInfo.m_fBoomScaleCom = 1.6;
  20627. this->m_ConfigInfo.m_fBoomScaleInd = 1.6;
  20628. v2 = &this->m_LoginInfo;
  20629. this->m_ConfigInfo.m_fBoomScaleDef = 0.80000001;
  20630. this->m_ConfigInfo.m_fBoomScaleTec = 0.80000001;
  20631. this->m_ConfigInfo.m_uLittleIncomeMonsterCount = 800;
  20632. this->m_ConfigInfo.m_uNilIncomeMonsterCount = 1200;
  20633. this->m_ConfigInfo.m_LogInCacheTime = 1;
  20634. this->m_ConfigInfo.m_WarnningPer10M = 60;
  20635. this->m_ConfigInfo.m_WarnningPerHour = 240;
  20636. this->m_ConfigInfo.m_FreezePer10M = 200;
  20637. this->m_ConfigInfo.m_FreezePerHour = 720;
  20638. this->m_ConfigInfo.m_HourPoint01 = 0;
  20639. this->m_ConfigInfo.m_HourPoint02 = 0;
  20640. this->m_ConfigInfo.m_HourPoint03 = 0;
  20641. this->m_ConfigInfo.m_IsActiveCard = 0;
  20642. this->m_ConfigInfo.m_IsActiveCard666 = 0;
  20643. this->m_ConfigInfo.m_IsJoinBangPaiNotice = 0;
  20644. this->m_ConfigInfo.m_LevelUpValidateMinLv = 14;
  20645. this->m_ConfigInfo.m_LevelUpValidateMaxLv = 25;
  20646. this->m_ConfigInfo.m_PetFriendsItem = 1024;
  20647. this->m_ConfigInfo.m_nBoomMaxValue = 999;
  20648. this->m_ConfigInfo.m_fBoomScaleComMisson = 1.0;
  20649. this->m_ConfigInfo.m_uTicketDecValue = 136;
  20650. this->m_ConfigInfo.m_IsEnableYuanBaoPiao = 0;
  20651. this->m_ConfigInfo.m_LevelMinGetPiao = 1;
  20652. this->m_ConfigInfo.m_GuildComMissonWaiGua = 1;
  20653. this->m_ConfigInfo.m_ValidateXianYaLevel = 0;
  20654. this->m_ConfigInfo.m_bAutoRemoveBadPet = 0;
  20655. v2->CryptPwd = 0;
  20656. v2->ProxyConnect = 0;
  20657. v2->EnableLicense = 0;
  20658. v2->ReLoginLimit = 1;
  20659. v2->ReLoginStop = 1;
  20660. v2->NotifySafeSign = 1;
  20661. v3 = &this->m_WorldInfo;
  20662. v3->m_EnableShareMem = 0;
  20663. this->m_LoginInfo.m_LoginID = -1;
  20664. v3->m_GuildKey = 0;
  20665. v3->m_WorldID = -1;
  20666. v3->m_MailKey = 0;
  20667. v3->m_PetCreateKey = 0;
  20668. v3->m_CityKey = 0;
  20669. v3->m_GlobalDataKey = 0;
  20670. v3->m_LeagueKey = 0;
  20671. v3->m_FindFriendADKey = 0;
  20672. v4 = 0;
  20673. this->m_MachineInfo.m_MachineCount = 0;
  20674. this->m_WorldInfo.m_ZoneID = 0;
  20675. this->m_MachineInfo.m_pMachine = 0;
  20676. memset(&this->m_ServerInfo.m_World, 0, 0x18u);
  20677. this->m_ServerInfo.m_World.m_Port = 0;
  20678. memset(&this->m_ServerInfo.m_Mother, 0, 0x18u);
  20679. v5 = &this->m_ServerInfo;
  20680. this->m_ServerInfo.m_Mother.m_Port = 0;
  20681. this->m_ServerInfo.m_ServerID = -1;
  20682. v5->m_pServer = 0;
  20683. v5->m_ServerCount = 0;
  20684. do
  20685. v5->m_HashServer[v4++] = -1;
  20686. while ( v4 <= 255 );
  20687. this->m_ServerInfo.m_bEnableEffAudit = 0;
  20688. this->m_ServerInfo.m_uiSaveResultInterval = 0;
  20689. this->m_ServerInfo.m_uiReportInterval = 0;
  20690. this->m_ServerInfo.m_idEnableEffSceneID_1ST = -1;
  20691. this->m_ServerInfo.m_idEnableEffSceneID_2ND = -1;
  20692. this->m_ServerInfo.m_idEnableEffSceneID_3RD = -1;
  20693. this->m_SceneInfo.m_SceneCount = 0;
  20694. this->m_SceneInfo.m_pScene = 0;
  20695. this->m_ShareMemInfo.m_pShareData = 0;
  20696. this->m_ShareMemInfo.m_SMUObjCount = 0;
  20697. memset(this->m_ShareMemInfo.m_DBIP, 0, sizeof(this->m_ShareMemInfo.m_DBIP));
  20698. this->m_ShareMemInfo.m_DBPort = -1;
  20699. memset(this->m_ShareMemInfo.m_DBName, 0, 0x80u);
  20700. memset(this->m_ShareMemInfo.m_DBUser, 0, sizeof(this->m_ShareMemInfo.m_DBUser));
  20701. memset(this->m_ShareMemInfo.m_DBPassword, 0, 0x100u);
  20702. v6 = &this->m_BillingInfo;
  20703. this->m_ShareMemInfo.SMUInterval = 60;
  20704. this->m_ShareMemInfo.DATAInterval = 300000;
  20705. this->m_ShareMemInfo.CryptPwd = 0;
  20706. v6->m_pInfo = 0;
  20707. v6->m_nNumber = 0;
  20708. v6->m_nCur = 0;
  20709. v6->m_bUse = 0;
  20710. this->m_BillingInfo._vptr__BILLING_INFO = (int (**)(...))off_80BD1D0;
  20711. memset(&this->m_InternalIpofProxy, 0, 0x30u);
  20712. memset(this->m_InternalIpofProxy.m_szProxyForCtcUser, 0, sizeof(this->m_InternalIpofProxy.m_szProxyForCtcUser));
  20713. memset(this->m_InternalIpofProxy.m_szProxyForEduUser, 0, sizeof(this->m_InternalIpofProxy.m_szProxyForEduUser));
  20714. }
  20715. // 80BD1D0: using guessed type _DWORD (__cdecl *off_80BD1D0[2])(_BILLING_INFO *this);
  20716.  
  20717. //----- (0805188C) --------------------------------------------------------
  20718. void __cdecl Config::Config(Config *const this)
  20719. {
  20720. signed int v1; // eax
  20721. _LOGIN_INFO *v2; // eax
  20722. _WORLD_INFO *v3; // eax
  20723. signed int v4; // eax
  20724. _SERVER_INFO *v5; // edx
  20725. _BILLING_INFO *v6; // eax
  20726.  
  20727. this->m_ConfigInfo.m_GodReliveTopLevel = 30;
  20728. this->m_ConfigInfo.m_ZoneSize = 10;
  20729. this->m_ConfigInfo.m_EquipmentDamagePoint = 1000;
  20730. this->m_ConfigInfo.m_RecoverTime = 1000;
  20731. this->m_ConfigInfo.m_MaxMonster = 1000;
  20732. this->m_ConfigInfo.m_MaxPet = 1000;
  20733. this->m_ConfigInfo.m_PetBodyTime = 2000;
  20734. this->m_ConfigInfo.m_PetHappinessInterval = 600000;
  20735. this->m_ConfigInfo.m_PetLifeInterval = 1800000;
  20736. this->m_ConfigInfo.m_PetDecLifeStep = 8;
  20737. this->m_ConfigInfo.m_PetCallUpHappiness = 60;
  20738. this->m_ConfigInfo.m_PetPlacardTime = 1800000;
  20739. this->m_ConfigInfo.m_DefaultRespawnTime = 300000;
  20740. this->m_ConfigInfo.m_DropBoxRecycleTime = 300000;
  20741. this->m_ConfigInfo.m_TimeChangeInterval = 300000;
  20742. this->m_ConfigInfo.m_PacketAuditTime = 0;
  20743. this->m_ConfigInfo.m_PositionRange = 10;
  20744. this->m_ConfigInfo.m_AIType = 1;
  20745. this->m_ConfigInfo.m_DisconnectTime = 0;
  20746. this->m_ConfigInfo.m_DisconnectTime2 = 0;
  20747. memset(this->m_ConfigInfo.m_UserPath, 0, 0x104u);
  20748. this->m_ConfigInfo.m_CanGetExpRange = 30.0;
  20749. this->m_ConfigInfo.m_MaxPortal = 0;
  20750. this->m_ConfigInfo.m_MaxPlatform = 0;
  20751. this->m_ConfigInfo.m_MaxSpecial = 1024;
  20752. this->m_ConfigInfo.m_MaxBus = 1024;
  20753. this->m_ConfigInfo.m_MaxPlayerShopNum = 512;
  20754. this->m_ConfigInfo.m_PaymentPerHour = 0;
  20755. this->m_ConfigInfo.m_MaxSkillObj = 1024;
  20756. this->m_ConfigInfo.m_DefaultBodyTime = 0;
  20757. this->m_ConfigInfo.m_DefaultBossBodyTime = 0;
  20758. this->m_ConfigInfo.m_OutGhostTime = 0;
  20759. this->m_ConfigInfo.m_DefaultMoveSpeed = 2800;
  20760. this->m_ConfigInfo.m_DefaultAttackSpeed = 2000;
  20761. this->m_ConfigInfo.m_HumanVERecoverInterval = 300000;
  20762. this->m_ConfigInfo.m_HumanMaxDefualtLevel = 150;
  20763. this->m_ConfigInfo.m_PetMaxDefaultLevel = 155;
  20764. this->m_ConfigInfo.m_MonsterMaxDefaultLevel = 200;
  20765. this->m_ConfigInfo.m_MaxLevelGAP = 200;
  20766. this->m_ConfigInfo.m_ExpTblItemCount = 401;
  20767. this->m_ConfigInfo.m_XinfaMaxDefaultLevel = 170;
  20768. this->m_ConfigInfo.m_fPetDieReduceLift = 0.2;
  20769. this->m_ConfigInfo.m_PKValueRefreshRate = 3600;
  20770. this->m_ConfigInfo.m_nHumanDefPilferLockTime = 180000;
  20771. this->m_ConfigInfo.m_DefaultRefreshRate = 60000;
  20772. this->m_ConfigInfo.m_DefaultCheckZoneRate = 1000;
  20773. this->m_ConfigInfo.m_OddsOfChangeTarget = 20;
  20774. this->m_ConfigInfo.m_OddsOfAttackAssistant = 20;
  20775. this->m_ConfigInfo.m_ChangeTargetCooldown = 5000;
  20776. this->m_ConfigInfo.m_nAvailableFollowDist = 15;
  20777. this->m_ConfigInfo.m_nTimeForLoseFollow = 30;
  20778. this->m_ConfigInfo.m_nFoundDurationHour = 24;
  20779. this->m_ConfigInfo.m_nDefaultMaxMemberCount = 160;
  20780. this->m_ConfigInfo.m_nResponseUserCount = 10;
  20781. this->m_ConfigInfo.m_nPasswdPoint = 0;
  20782. this->m_ConfigInfo.m_fGoodBadRadius = 15.0;
  20783. this->m_ConfigInfo.m_fRateA = 0.0;
  20784. this->m_ConfigInfo.m_fRateB = 0.0;
  20785. this->m_ConfigInfo.m_nPromptPoint = 0;
  20786. this->m_ConfigInfo.m_nDeleteDelayTime = 0;
  20787. this->m_ConfigInfo.m_nEnergySetCost = 0;
  20788. this->m_ConfigInfo.m_nEnergyModifyCost = 0;
  20789. this->m_ConfigInfo.m_nEnergyDelCost = 0;
  20790. this->m_ConfigInfo.m_nMaxInputErrTimesPerDay = 5;
  20791. this->m_ConfigInfo.m_nPWUnlockTime = 0;
  20792. this->m_ConfigInfo.m_nExpPoint = 0;
  20793. this->m_ConfigInfo.m_nHashOnlineUserCount = 1000;
  20794. this->m_ConfigInfo.m_nHashMailUserCount = 1000;
  20795. this->m_ConfigInfo.m_nMaxOfflineUserCount = 0;
  20796. this->m_ConfigInfo.m_nSpeakerPoolMax = 0;
  20797. this->m_ConfigInfo.m_fRespawnParam = 1.0;
  20798. this->m_ConfigInfo.m_KickUserTime = 300000;
  20799. this->m_ConfigInfo.m_nLanguage = -1;
  20800. this->m_ConfigInfo.m_SMU_KickUserTime = 300000;
  20801. this->m_ConfigInfo.m_nDefaultDamageFluctuation = 10;
  20802. this->m_ConfigInfo.m_nMinGoodBadValue = 0;
  20803. this->m_ConfigInfo.m_nMaxGoodBadValue = 1000000;
  20804. this->m_ConfigInfo.m_nLevelNeeded = 30;
  20805. this->m_ConfigInfo.m_nMemberLevel = 10;
  20806. this->m_ConfigInfo.m_nMemberLevelLimit = 40;
  20807. this->m_ConfigInfo.m_nMemverLevelDis = 8;
  20808. this->m_ConfigInfo.m_nBonusPerMember = 5;
  20809. this->m_ConfigInfo.m_nBonusPerPrentice = 1;
  20810. this->m_ConfigInfo.m_nMaxBonus = 10;
  20811. this->m_ConfigInfo.m_nPenaltyWhenMemberDie = 10;
  20812. this->m_ConfigInfo.m_nDuelEnergyRequire = 100;
  20813. this->m_ConfigInfo.m_nDuelTime = 600;
  20814. this->m_ConfigInfo.m_nDuelLevelRequire = 10;
  20815. this->m_ConfigInfo.m_fNewServerSaleRate = 1.0;
  20816. this->m_ConfigInfo.m_ExpSpouseAddRate = 0.039999999;
  20817. this->m_ConfigInfo.m_ExpBrotherAddRate = 0.02;
  20818. this->m_ConfigInfo.m_ExpMasterNotInTeamAddRate = 0.1;
  20819. this->m_ConfigInfo.m_ExpPrenticeAddRate = 0.050000001;
  20820. this->m_ConfigInfo.m_ExpDarkAbsorbRate = 0.0099999998;
  20821. this->m_ConfigInfo.m_AssistantDemandFormulaParam0 = 1.5140001;
  20822. this->m_ConfigInfo.m_AssistantDemandFormulaParam1 = 19.0;
  20823. this->m_ConfigInfo.m_AssistantDemandFormulaParam3 = 37.099998;
  20824. this->m_ConfigInfo.m_YuanBaoSceneID = -1;
  20825. this->m_ConfigInfo.m_YuanBaoTicketMax = 1000;
  20826. this->m_ConfigInfo.m_nPersonalWarfareTime = 600;
  20827. this->m_ConfigInfo.m_nPKFlagSwitchDelay = 600;
  20828. this->m_ConfigInfo.m_nPkRefixOfDamage = 100;
  20829. this->m_ConfigInfo.m_nHostilePlayerWarning = 600;
  20830. this->m_ConfigInfo.m_nLegalFightBackTime = 600;
  20831. this->m_ConfigInfo.m_ExpParam = 1.0;
  20832. this->m_ConfigInfo.m_ExpMasterInTeamAddRate = 0.2;
  20833. this->m_ConfigInfo.m_AssistantDemandFormulaParam2 = 0.2;
  20834. this->m_ConfigInfo.m_EnableFatigueState = 0;
  20835. this->m_ConfigInfo.m_LittleFatigueTime = 10800;
  20836. this->m_ConfigInfo.m_ExceedingFatigueTime = 18000;
  20837. this->m_ConfigInfo.m_ResetFatigueStateOfflineTime = 18000;
  20838. this->m_ConfigInfo.m_XianYaMaxUser[0] = 40;
  20839. this->m_ConfigInfo.m_XianYaMaxUser[1] = 50;
  20840. this->m_ConfigInfo.m_XianYaMaxUser[2] = 60;
  20841. this->m_ConfigInfo.m_XianYaMaxUser[3] = 70;
  20842. this->m_ConfigInfo.m_XianYaMaxUser[4] = 80;
  20843. this->m_ConfigInfo.m_XianYaStdMoney[0] = 1000000;
  20844. this->m_ConfigInfo.m_XianYaStdMoney[1] = 2000000;
  20845. this->m_ConfigInfo.m_XianYaStdMoney[2] = 4000000;
  20846. this->m_ConfigInfo.m_XianYaStdMoney[3] = 8000000;
  20847. this->m_ConfigInfo.m_XianYaStdMoney[4] = 16000000;
  20848. this->m_ConfigInfo.m_XianYaMaxMoney[0] = 10000000;
  20849. this->m_ConfigInfo.m_XianYaMaxMoney[1] = 20000000;
  20850. v1 = 0;
  20851. this->m_ConfigInfo.m_XianYaMaxMoney[2] = 40000000;
  20852. this->m_ConfigInfo.m_XianYaMaxMoney[3] = 60000000;
  20853. this->m_ConfigInfo.m_XianYaMaxMoney[4] = 80000000;
  20854. this->m_ConfigInfo.m_QianZhuangDeltaMoney[0] = 500000;
  20855. this->m_ConfigInfo.m_QianZhuangDeltaMoney[1] = 1000000;
  20856. this->m_ConfigInfo.m_QianZhuangDeltaMoney[2] = 2000000;
  20857. this->m_ConfigInfo.m_QianZhuangDeltaMoney[3] = 4000000;
  20858. this->m_ConfigInfo.m_QianZhuangDeltaMoney[4] = 8000000;
  20859. this->m_ConfigInfo.m_XianYaMaxTrader[0] = 4;
  20860. this->m_ConfigInfo.m_XianYaMaxTrader[1] = 5;
  20861. this->m_ConfigInfo.m_XianYaMaxTrader[2] = 6;
  20862. this->m_ConfigInfo.m_XianYaMaxTrader[3] = 7;
  20863. this->m_ConfigInfo.m_XianYaMaxTrader[4] = 8;
  20864. this->m_ConfigInfo.m_XiangFangMaxUser[0] = 30;
  20865. this->m_ConfigInfo.m_XiangFangMaxUser[1] = 50;
  20866. this->m_ConfigInfo.m_XiangFangMaxUser[2] = 80;
  20867. this->m_ConfigInfo.m_XiangFangMaxUser[3] = 120;
  20868. this->m_ConfigInfo.m_XiangFangMaxUser[4] = 180;
  20869. this->m_ConfigInfo.m_CreateCityMoney = 10000000;
  20870. this->m_ConfigInfo.m_uBattleTime = 120;
  20871. this->m_ConfigInfo.m_bLeftGuildBuffEnable = 1;
  20872. this->m_ConfigInfo.m_uLeaveWordCost = 1000;
  20873. this->m_ConfigInfo.m_uMaxDayCostYuanBao = 0xFFFFFF;
  20874. this->m_ConfigInfo.m_uSendBackTime = 21600;
  20875. this->m_ConfigInfo.m_nYuanbaoFee = 2;
  20876. this->m_ConfigInfo.m_nGoldCoinFee = 2;
  20877. this->m_ConfigInfo.m_IsCloseYuanBaoSell = 0;
  20878. this->m_ConfigInfo.m_IsCloseGoldCoinSell = 0;
  20879. this->m_ConfigInfo.m_uMinExchangeCodeLevel = 1;
  20880. this->m_ConfigInfo.m_uMaxExchangeCodeLevel = 10;
  20881. this->m_ConfigInfo.m_MaxGuildLeagueNum = 255;
  20882. this->m_ConfigInfo.m_TimeAfterQuitLeague = 72;
  20883. this->m_ConfigInfo.m_CreateLeagueMoney = 100;
  20884. do
  20885. this->m_ConfigInfo.m_anCSIValue[v1++] = 10000000;
  20886. while ( v1 <= 5 );
  20887. this->m_ConfigInfo.m_fBoomScaleAll = 0.86510003;
  20888. this->m_ConfigInfo.m_fBoomScaleAttrInc = 0.035;
  20889. this->m_ConfigInfo.m_fBoomScaleAvgBoom = 0.045000002;
  20890. this->m_ConfigInfo.m_fBoomScaleAmb = 0.40000001;
  20891. this->m_ConfigInfo.m_fLittleIncomePercent = 0.5;
  20892. this->m_ConfigInfo.m_fBoomScaleOnLineCount = 0.5;
  20893. this->m_ConfigInfo.m_fBoomScaleArg = 1.6;
  20894. this->m_ConfigInfo.m_fBoomScaleCom = 1.6;
  20895. this->m_ConfigInfo.m_fBoomScaleInd = 1.6;
  20896. v2 = &this->m_LoginInfo;
  20897. this->m_ConfigInfo.m_fBoomScaleDef = 0.80000001;
  20898. this->m_ConfigInfo.m_fBoomScaleTec = 0.80000001;
  20899. this->m_ConfigInfo.m_uLittleIncomeMonsterCount = 800;
  20900. this->m_ConfigInfo.m_uNilIncomeMonsterCount = 1200;
  20901. this->m_ConfigInfo.m_LogInCacheTime = 1;
  20902. this->m_ConfigInfo.m_WarnningPer10M = 60;
  20903. this->m_ConfigInfo.m_WarnningPerHour = 240;
  20904. this->m_ConfigInfo.m_FreezePer10M = 200;
  20905. this->m_ConfigInfo.m_FreezePerHour = 720;
  20906. this->m_ConfigInfo.m_HourPoint01 = 0;
  20907. this->m_ConfigInfo.m_HourPoint02 = 0;
  20908. this->m_ConfigInfo.m_HourPoint03 = 0;
  20909. this->m_ConfigInfo.m_IsActiveCard = 0;
  20910. this->m_ConfigInfo.m_IsActiveCard666 = 0;
  20911. this->m_ConfigInfo.m_IsJoinBangPaiNotice = 0;
  20912. this->m_ConfigInfo.m_LevelUpValidateMinLv = 14;
  20913. this->m_ConfigInfo.m_LevelUpValidateMaxLv = 25;
  20914. this->m_ConfigInfo.m_PetFriendsItem = 1024;
  20915. this->m_ConfigInfo.m_nBoomMaxValue = 999;
  20916. this->m_ConfigInfo.m_fBoomScaleComMisson = 1.0;
  20917. this->m_ConfigInfo.m_uTicketDecValue = 136;
  20918. this->m_ConfigInfo.m_IsEnableYuanBaoPiao = 0;
  20919. this->m_ConfigInfo.m_LevelMinGetPiao = 1;
  20920. this->m_ConfigInfo.m_GuildComMissonWaiGua = 1;
  20921. this->m_ConfigInfo.m_ValidateXianYaLevel = 0;
  20922. this->m_ConfigInfo.m_bAutoRemoveBadPet = 0;
  20923. v2->CryptPwd = 0;
  20924. v2->ProxyConnect = 0;
  20925. v2->EnableLicense = 0;
  20926. v2->ReLoginLimit = 1;
  20927. v2->ReLoginStop = 1;
  20928. v2->NotifySafeSign = 1;
  20929. v3 = &this->m_WorldInfo;
  20930. v3->m_EnableShareMem = 0;
  20931. this->m_LoginInfo.m_LoginID = -1;
  20932. v3->m_GuildKey = 0;
  20933. v3->m_WorldID = -1;
  20934. v3->m_MailKey = 0;
  20935. v3->m_PetCreateKey = 0;
  20936. v3->m_CityKey = 0;
  20937. v3->m_GlobalDataKey = 0;
  20938. v3->m_LeagueKey = 0;
  20939. v3->m_FindFriendADKey = 0;
  20940. v4 = 0;
  20941. this->m_MachineInfo.m_MachineCount = 0;
  20942. this->m_WorldInfo.m_ZoneID = 0;
  20943. this->m_MachineInfo.m_pMachine = 0;
  20944. memset(&this->m_ServerInfo.m_World, 0, 0x18u);
  20945. this->m_ServerInfo.m_World.m_Port = 0;
  20946. memset(&this->m_ServerInfo.m_Mother, 0, 0x18u);
  20947. v5 = &this->m_ServerInfo;
  20948. this->m_ServerInfo.m_Mother.m_Port = 0;
  20949. this->m_ServerInfo.m_ServerID = -1;
  20950. v5->m_pServer = 0;
  20951. v5->m_ServerCount = 0;
  20952. do
  20953. v5->m_HashServer[v4++] = -1;
  20954. while ( v4 <= 255 );
  20955. this->m_ServerInfo.m_bEnableEffAudit = 0;
  20956. this->m_ServerInfo.m_uiSaveResultInterval = 0;
  20957. this->m_ServerInfo.m_uiReportInterval = 0;
  20958. this->m_ServerInfo.m_idEnableEffSceneID_1ST = -1;
  20959. this->m_SceneInfo.m_SceneCount = 0;
  20960. this->m_ServerInfo.m_idEnableEffSceneID_2ND = -1;
  20961. this->m_ServerInfo.m_idEnableEffSceneID_3RD = -1;
  20962. this->m_SceneInfo.m_pScene = 0;
  20963. this->m_ShareMemInfo.m_pShareData = 0;
  20964. this->m_ShareMemInfo.m_SMUObjCount = 0;
  20965. memset(this->m_ShareMemInfo.m_DBIP, 0, sizeof(this->m_ShareMemInfo.m_DBIP));
  20966. this->m_ShareMemInfo.m_DBPort = -1;
  20967. memset(this->m_ShareMemInfo.m_DBName, 0, 0x80u);
  20968. memset(this->m_ShareMemInfo.m_DBUser, 0, sizeof(this->m_ShareMemInfo.m_DBUser));
  20969. memset(this->m_ShareMemInfo.m_DBPassword, 0, 0x100u);
  20970. v6 = &this->m_BillingInfo;
  20971. this->m_ShareMemInfo.SMUInterval = 60;
  20972. this->m_ShareMemInfo.DATAInterval = 300000;
  20973. this->m_ShareMemInfo.CryptPwd = 0;
  20974. v6->m_pInfo = 0;
  20975. v6->m_nNumber = 0;
  20976. v6->m_nCur = 0;
  20977. v6->m_bUse = 0;
  20978. this->m_BillingInfo._vptr__BILLING_INFO = (int (**)(...))off_80BD1D0;
  20979. memset(&this->m_InternalIpofProxy, 0, 0x30u);
  20980. memset(this->m_InternalIpofProxy.m_szProxyForCtcUser, 0, sizeof(this->m_InternalIpofProxy.m_szProxyForCtcUser));
  20981. memset(this->m_InternalIpofProxy.m_szProxyForEduUser, 0, sizeof(this->m_InternalIpofProxy.m_szProxyForEduUser));
  20982. }
  20983. // 80BD1D0: using guessed type _DWORD (__cdecl *off_80BD1D0[2])(_BILLING_INFO *this);
  20984.  
  20985. //----- (0805224C) --------------------------------------------------------
  20986. void __cdecl Config::~Config(Config *const this)
  20987. {
  20988. _BILLING_DATA **v1; // ecx
  20989. INT v2; // eax
  20990. INT v3; // esi
  20991. _BILLING_DATA *v4; // edx
  20992. _SERVER_DATA *v5; // ebx
  20993. int v6; // ecx
  20994. int v7; // eax
  20995. _MACHINE_DATA *v8; // eax
  20996.  
  20997. v1 = this->m_BillingInfo.m_pInfo;
  20998. this->m_BillingInfo._vptr__BILLING_INFO = (int (**)(...))off_80BD1D0;
  20999. if ( v1 )
  21000. {
  21001. v2 = this->m_BillingInfo.m_nNumber;
  21002. if ( v2 > 0 )
  21003. {
  21004. v3 = 0;
  21005. do
  21006. {
  21007. v4 = v1[v3];
  21008. if ( v4 )
  21009. {
  21010. (*((void (__cdecl **)(_BILLING_DATA *))v4->_vptr__BILLING_DATA + 1))(v1[v3]);
  21011. v1 = this->m_BillingInfo.m_pInfo;
  21012. v2 = this->m_BillingInfo.m_nNumber;
  21013. v1[v3] = 0;
  21014. }
  21015. ++v3;
  21016. }
  21017. while ( v2 > v3 );
  21018. if ( v1 )
  21019. operator delete[](v1);
  21020. this->m_BillingInfo.m_pInfo = 0;
  21021. }
  21022. }
  21023. this->m_BillingInfo.m_nNumber = 0;
  21024. this->m_BillingInfo.m_nCur = 0;
  21025. this->m_BillingInfo.m_bUse = 0;
  21026. if ( this->m_ShareMemInfo.m_pShareData )
  21027. {
  21028. operator delete[](this->m_ShareMemInfo.m_pShareData);
  21029. this->m_ShareMemInfo.m_pShareData = 0;
  21030. }
  21031. if ( this->m_SceneInfo.m_pScene )
  21032. {
  21033. operator delete[](this->m_SceneInfo.m_pScene);
  21034. this->m_SceneInfo.m_pScene = 0;
  21035. }
  21036. this->m_SceneInfo.m_SceneCount = 0;
  21037. v5 = this->m_ServerInfo.m_pServer;
  21038. if ( v5 )
  21039. {
  21040. v6 = (int)&v5[v5[-1].m_EnableShareMem];
  21041. while ( v5 != (_SERVER_DATA *)v6 )
  21042. {
  21043. while ( 1 )
  21044. {
  21045. v6 -= 192;
  21046. if ( v6 == -64 )
  21047. break;
  21048. v7 = v6 + 172;
  21049. if ( v6 + 64 == v6 + 172 )
  21050. break;
  21051. do
  21052. v7 -= 36;
  21053. while ( v6 + 64 != v7 );
  21054. if ( v5 == (_SERVER_DATA *)v6 )
  21055. goto LABEL_21;
  21056. }
  21057. }
  21058. LABEL_21:
  21059. operator delete[](&v5[-1].m_EnableShareMem);
  21060. this->m_ServerInfo.m_pServer = 0;
  21061. }
  21062. v8 = this->m_MachineInfo.m_pMachine;
  21063. this->m_ServerInfo.m_ServerCount = 0;
  21064. if ( v8 )
  21065. {
  21066. operator delete[](v8);
  21067. this->m_MachineInfo.m_pMachine = 0;
  21068. }
  21069. this->m_MachineInfo.m_MachineCount = 0;
  21070. }
  21071. // 80BD1D0: using guessed type _DWORD (__cdecl *off_80BD1D0[2])(_BILLING_INFO *this);
  21072.  
  21073. //----- (080524C2) --------------------------------------------------------
  21074. void __usercall sub_80524C2(void *a1@<eax>, int a2@<edi>)
  21075. {
  21076. operator delete[](a1);
  21077. *(_DWORD *)(a2 + 1652) = 0;
  21078. JUMPOUT(&loc_805246C);
  21079. }
  21080.  
  21081. //----- (080524DC) --------------------------------------------------------
  21082. void __cdecl Config::~Config(Config *const this)
  21083. {
  21084. _BILLING_DATA **v1; // ecx
  21085. INT v2; // eax
  21086. INT v3; // esi
  21087. _BILLING_DATA *v4; // edx
  21088. _SERVER_DATA *v5; // ebx
  21089. int v6; // ecx
  21090. int v7; // eax
  21091. _MACHINE_DATA *v8; // eax
  21092.  
  21093. v1 = this->m_BillingInfo.m_pInfo;
  21094. this->m_BillingInfo._vptr__BILLING_INFO = (int (**)(...))off_80BD1D0;
  21095. if ( v1 )
  21096. {
  21097. v2 = this->m_BillingInfo.m_nNumber;
  21098. if ( v2 > 0 )
  21099. {
  21100. v3 = 0;
  21101. do
  21102. {
  21103. v4 = v1[v3];
  21104. if ( v4 )
  21105. {
  21106. (*((void (__cdecl **)(_BILLING_DATA *))v4->_vptr__BILLING_DATA + 1))(v1[v3]);
  21107. v1 = this->m_BillingInfo.m_pInfo;
  21108. v2 = this->m_BillingInfo.m_nNumber;
  21109. v1[v3] = 0;
  21110. }
  21111. ++v3;
  21112. }
  21113. while ( v2 > v3 );
  21114. if ( v1 )
  21115. operator delete[](v1);
  21116. this->m_BillingInfo.m_pInfo = 0;
  21117. }
  21118. }
  21119. this->m_BillingInfo.m_nNumber = 0;
  21120. this->m_BillingInfo.m_nCur = 0;
  21121. this->m_BillingInfo.m_bUse = 0;
  21122. if ( this->m_ShareMemInfo.m_pShareData )
  21123. {
  21124. operator delete[](this->m_ShareMemInfo.m_pShareData);
  21125. this->m_ShareMemInfo.m_pShareData = 0;
  21126. }
  21127. if ( this->m_SceneInfo.m_pScene )
  21128. {
  21129. operator delete[](this->m_SceneInfo.m_pScene);
  21130. this->m_SceneInfo.m_pScene = 0;
  21131. }
  21132. this->m_SceneInfo.m_SceneCount = 0;
  21133. v5 = this->m_ServerInfo.m_pServer;
  21134. if ( v5 )
  21135. {
  21136. v6 = (int)&v5[v5[-1].m_EnableShareMem];
  21137. while ( v5 != (_SERVER_DATA *)v6 )
  21138. {
  21139. while ( 1 )
  21140. {
  21141. v6 -= 192;
  21142. if ( v6 == -64 )
  21143. break;
  21144. v7 = v6 + 172;
  21145. if ( v6 + 64 == v6 + 172 )
  21146. break;
  21147. do
  21148. v7 -= 36;
  21149. while ( v6 + 64 != v7 );
  21150. if ( v5 == (_SERVER_DATA *)v6 )
  21151. goto LABEL_21;
  21152. }
  21153. }
  21154. LABEL_21:
  21155. operator delete[](&v5[-1].m_EnableShareMem);
  21156. this->m_ServerInfo.m_pServer = 0;
  21157. }
  21158. v8 = this->m_MachineInfo.m_pMachine;
  21159. this->m_ServerInfo.m_ServerCount = 0;
  21160. if ( v8 )
  21161. {
  21162. operator delete[](v8);
  21163. this->m_MachineInfo.m_pMachine = 0;
  21164. }
  21165. this->m_MachineInfo.m_MachineCount = 0;
  21166. }
  21167. // 80BD1D0: using guessed type _DWORD (__cdecl *off_80BD1D0[2])(_BILLING_INFO *this);
  21168.  
  21169. //----- (08052752) --------------------------------------------------------
  21170. void __usercall sub_8052752(void *a1@<eax>, int a2@<edi>)
  21171. {
  21172. operator delete[](a1);
  21173. *(_DWORD *)(a2 + 1652) = 0;
  21174. JUMPOUT(&loc_80526FC);
  21175. }
  21176.  
  21177. //----- (0805276C) --------------------------------------------------------
  21178. void __cdecl Config::LoadShareMemInfo_ReLoad(Config *const this)
  21179. {
  21180. ;
  21181. }
  21182.  
  21183. //----- (08052774) --------------------------------------------------------
  21184. void __cdecl Config::LoadSceneInfo_ReLoad(Config *const this)
  21185. {
  21186. DiskLog("./Log/Config", "Load SceneInfo.ini ...ReLoad OK! ");
  21187. }
  21188.  
  21189. //----- (080527DC) --------------------------------------------------------
  21190. void __cdecl Config::LoadServerInfo_ReLoad(Config *const this)
  21191. {
  21192. DiskLog("./Log/Config", "Load ServerInfo.ini ...ReLoad OK! ");
  21193. }
  21194.  
  21195. //----- (08052844) --------------------------------------------------------
  21196. void __cdecl Config::LoadMachineInfo_ReLoad(Config *const this)
  21197. {
  21198. DiskLog("./Log/Config", "Load MachineInfo.ini ...ReLoad OK! ");
  21199. }
  21200.  
  21201. //----- (080528AC) --------------------------------------------------------
  21202. void __cdecl Config::LoadBillingInfo_ReLoad(Config *const this)
  21203. {
  21204. DiskLog("./Log/Config", "Load BillingInfo.ini ...ReLoad OK! ");
  21205. }
  21206.  
  21207. //----- (08052914) --------------------------------------------------------
  21208. void __cdecl Config::LoadWorldInfo_ReLoad(Config *const this)
  21209. {
  21210. DiskLog("./Log/Config", "Load WorldInfo.ini ...ReLoad OK! ");
  21211. }
  21212.  
  21213. //----- (0805297C) --------------------------------------------------------
  21214. void __cdecl Config::LoadLoginInfo_Reload(Config *const this)
  21215. {
  21216. DiskLog("./Log/Config", "Load LoginInfo.ini ...ReLoad OK! ");
  21217. }
  21218.  
  21219. //----- (080529E4) --------------------------------------------------------
  21220. void __cdecl Config::LoadConfigInfo_Only(Config *const this)
  21221. {
  21222. INT nValue; // [esp+14h] [ebp-94Ch]
  21223. IniFile ini; // [esp+18h] [ebp-948h]
  21224.  
  21225. IniFile::IniFile((const CHAR *)&ini, "./Config/ConfigInfo.ini");
  21226. nValue = 0;
  21227. if ( IniFile::ReadInt(&ini, "Zone", "ZoneSize", &nValue) != 1 )
  21228. __assertex__(
  21229. "../../Server/Server/Base/Config.cpp",
  21230. 0x5Au,
  21231. "void Config::LoadConfigInfo_Only()",
  21232. "FALSE",
  21233. "[Config::LoadConfigInfo_Only]: INI: read Zone::ZoneSize failed!!");
  21234. this->m_ConfigInfo.m_ZoneSize = nValue;
  21235. if ( IniFile::ReadInt(&ini, "Portal", "MaxCount", &nValue) != 1 )
  21236. __assertex__(
  21237. "../../Server/Server/Base/Config.cpp",
  21238. 0x63u,
  21239. "void Config::LoadConfigInfo_Only()",
  21240. "FALSE",
  21241. "[Config::LoadConfigInfo_Only]: INI: read Portal::MaxCount failed!!");
  21242. this->m_ConfigInfo.m_MaxPortal = nValue;
  21243. if ( IniFile::ReadInt(&ini, "SkillObj", "MaxCount", &nValue) != 1 )
  21244. __assertex__(
  21245. "../../Server/Server/Base/Config.cpp",
  21246. 0x6Bu,
  21247. "void Config::LoadConfigInfo_Only()",
  21248. "FALSE",
  21249. "[Config::LoadConfigInfo_Only]: INI: read SkillObj::MaxCount failed!!");
  21250. this->m_ConfigInfo.m_MaxSkillObj = nValue;
  21251. if ( IniFile::ReadInt(&ini, "Platform", "MaxCount", &nValue) != 1 )
  21252. __assertex__(
  21253. "../../Server/Server/Base/Config.cpp",
  21254. 0x73u,
  21255. "void Config::LoadConfigInfo_Only()",
  21256. "FALSE",
  21257. "[Config::LoadConfigInfo_Only]: INI: read Platform::MaxCount failed!!");
  21258. this->m_ConfigInfo.m_MaxPlatform = nValue;
  21259. if ( IniFile::ReadInt(&ini, "SpecialObj", "MaxCount", &nValue) != 1 )
  21260. __assertex__(
  21261. "../../Server/Server/Base/Config.cpp",
  21262. 0x7Bu,
  21263. "void Config::LoadConfigInfo_Only()",
  21264. "FALSE",
  21265. "[Config::LoadConfigInfo_Only]: INI: read SpecialObj::MaxCount failed!!");
  21266. this->m_ConfigInfo.m_MaxSpecial = nValue;
  21267. if ( IniFile::ReadInt(&ini, "BusObj", "MaxCount", &nValue) != 1 )
  21268. __assertex__(
  21269. "../../Server/Server/Base/Config.cpp",
  21270. 0x83u,
  21271. "void Config::LoadConfigInfo_Only()",
  21272. "FALSE",
  21273. "[Config::LoadConfigInfo_Only]: INI: read BusObj::MaxCount failed!!");
  21274. this->m_ConfigInfo.m_MaxBus = nValue;
  21275. if ( IniFile::ReadInt(&ini, "PlayerShop", "MaxCount", &nValue) != 1 )
  21276. __assertex__(
  21277. "../../Server/Server/Base/Config.cpp",
  21278. 0x8Bu,
  21279. "void Config::LoadConfigInfo_Only()",
  21280. "FALSE",
  21281. "[Config::LoadConfigInfo_Only]: INI: read PlayerShop::MaxCount failed!!");
  21282. this->m_ConfigInfo.m_MaxPlayerShopNum = nValue;
  21283. if ( IniFile::ReadInt(&ini, "PlayerShop", "PaymentPerHour", &nValue) != 1 )
  21284. __assertex__(
  21285. "../../Server/Server/Base/Config.cpp",
  21286. 0x94u,
  21287. "void Config::LoadConfigInfo_Only()",
  21288. "FALSE",
  21289. "[Config::LoadConfigInfo_Only]: INI: read PlayerShop::PaymentPerHour failed!!");
  21290. this->m_ConfigInfo.m_PaymentPerHour = nValue;
  21291. if ( IniFile::ReadInt(&ini, "SceneTimer", "MaxCount", &nValue) != 1 )
  21292. __assertex__(
  21293. "../../Server/Server/Base/Config.cpp",
  21294. 0x9Du,
  21295. "void Config::LoadConfigInfo_Only()",
  21296. "FALSE",
  21297. "[Config::LoadConfigInfo_Only]: INI: read SceneTimer::MaxCount failed!!");
  21298. this->m_ConfigInfo.m_MaxTimerCount = nValue;
  21299. if ( IniFile::ReadInt(&ini, "HumanTimer", "MaxCount", &nValue) != 1 )
  21300. __assertex__(
  21301. "../../Server/Server/Base/Config.cpp",
  21302. 0xA5u,
  21303. "void Config::LoadConfigInfo_Only()",
  21304. "FALSE",
  21305. "[Config::LoadConfigInfo_Only]: INI: read HumanTimer::MaxCount failed!!");
  21306. this->m_ConfigInfo.m_nMaxHumanUseTimer = nValue;
  21307. if ( IniFile::ReadInt(&ini, "Localization", "Language", &nValue) != 1 )
  21308. __assertex__(
  21309. "../../Server/Server/Base/Config.cpp",
  21310. 0xAEu,
  21311. "void Config::LoadConfigInfo_Only()",
  21312. "FALSE",
  21313. "[Config::LoadConfigInfo_Only]: INI: read Localization::Language failed!!");
  21314. if ( (unsigned int)nValue > 8 )
  21315. __assertex__(
  21316. "../../Server/Server/Base/Config.cpp",
  21317. 0xA9u,
  21318. "void Config::LoadConfigInfo_Only()",
  21319. "(nValue>LANGUAGE_INVALID && nValue<LANGUAGE_MAX)",
  21320. "[Config::LoadConfigInfo_Only]: INI: read Localization::Language failed!!");
  21321. this->m_ConfigInfo.m_nLanguage = nValue;
  21322. if ( IniFile::ReadInt(&ini, "CacheLogTime", "LogInCacheTime", &nValue) != 1 )
  21323. __assertex__(
  21324. "../../Server/Server/Base/Config.cpp",
  21325. 0xB7u,
  21326. "void Config::LoadConfigInfo_Only()",
  21327. "FALSE",
  21328. "[Config::LoadConfigInfo_Only]: INI: read CacheLogTime::Language failed!!");
  21329. this->m_ConfigInfo.m_LogInCacheTime = nValue;
  21330. if ( IniFile::ReadInt(&ini, "PlayerCountOfScene", "HourPoint01", &nValue) != 1 )
  21331. __assertex__(
  21332. "../../Server/Server/Base/Config.cpp",
  21333. 0xC0u,
  21334. "void Config::LoadConfigInfo_Only()",
  21335. "FALSE",
  21336. "[Config::LoadConfigInfo_Only]: INI: read PlayerCountOfScene_HourPoint01::Language failed!!");
  21337. this->m_ConfigInfo.m_HourPoint01 = nValue;
  21338. if ( IniFile::ReadInt(&ini, "PlayerCountOfScene", "HourPoint02", &nValue) != 1 )
  21339. __assertex__(
  21340. "../../Server/Server/Base/Config.cpp",
  21341. 0xC9u,
  21342. "void Config::LoadConfigInfo_Only()",
  21343. "FALSE",
  21344. "[Config::LoadConfigInfo_Only]: INI: read PlayerCountOfScene_HourPoint02::Language failed!!");
  21345. this->m_ConfigInfo.m_HourPoint02 = nValue;
  21346. if ( IniFile::ReadInt(&ini, "PlayerCountOfScene", "HourPoint03", &nValue) != 1 )
  21347. __assertex__(
  21348. "../../Server/Server/Base/Config.cpp",
  21349. 0xD2u,
  21350. "void Config::LoadConfigInfo_Only()",
  21351. "FALSE",
  21352. "[Config::LoadConfigInfo_Only]: INI: read PlayerCountOfScene_HourPoint03::Language failed!!");
  21353. this->m_ConfigInfo.m_HourPoint03 = nValue;
  21354. if ( IniFile::ReadInt(&ini, "ActiveRichesCard", "IsActiveCard", &nValue) != 1 )
  21355. __assertex__(
  21356. "../../Server/Server/Base/Config.cpp",
  21357. 0xDCu,
  21358. "void Config::LoadConfigInfo_Only()",
  21359. "FALSE",
  21360. "[Config::LoadConfigInfo_Only]: INI: read ActiveRichesCard_IsActiveCard::Language failed!!");
  21361. this->m_ConfigInfo.m_IsActiveCard = nValue;
  21362. if ( IniFile::ReadInt(&ini, "ActiveRichesCard", "IsActiveCard666", &nValue) != 1 )
  21363. __assertex__(
  21364. "../../Server/Server/Base/Config.cpp",
  21365. 0xE5u,
  21366. "void Config::LoadConfigInfo_Only()",
  21367. "FALSE",
  21368. "[Config::LoadConfigInfo_Only]: INI: read ActiveRichesCard_IsActiveCard::Language failed!!");
  21369. this->m_ConfigInfo.m_IsActiveCard666 = nValue;
  21370. DiskLog("./Log/Config", "Load ConfigInfo.ini ...Only OK! ");
  21371. IniFile::~IniFile(&ini);
  21372. }
  21373.  
  21374. //----- (0805300C) --------------------------------------------------------
  21375. void __cdecl Config::LoadConfigInfo_ReLoad(Config *const this)
  21376. {
  21377. unsigned int v1; // eax
  21378. int v2; // ecx
  21379. int v3; // eax
  21380. INT v4; // edx
  21381. unsigned int v5; // eax
  21382. bool v6; // zf
  21383. bool v7; // sf
  21384. unsigned __int8 v8; // of
  21385. unsigned int v9; // eax
  21386. INT i_5; // [esp+14h] [ebp-B1Ch]
  21387. INT i_4; // [esp+18h] [ebp-B18h]
  21388. INT i_3; // [esp+1Ch] [ebp-B14h]
  21389. INT i_2; // [esp+20h] [ebp-B10h]
  21390. INT i_1; // [esp+24h] [ebp-B0Ch]
  21391. INT i_0; // [esp+28h] [ebp-B08h]
  21392. INT i; // [esp+2Ch] [ebp-B04h]
  21393. FLOAT fValue; // [esp+40h] [ebp-AF0h]
  21394. INT nValue; // [esp+44h] [ebp-AECh]
  21395. CHAR szValueText[260]; // [esp+48h] [ebp-AE8h]
  21396. CHAR buf_0[64]; // [esp+158h] [ebp-9D8h]
  21397. CHAR buf[32]; // [esp+198h] [ebp-998h]
  21398. CHAR szText[32]; // [esp+1C8h] [ebp-968h]
  21399. IniFile ini; // [esp+1E8h] [ebp-948h]
  21400.  
  21401. IniFile::IniFile((const CHAR *)&ini, "./Config/ConfigInfo.ini");
  21402. nValue = 0;
  21403. fValue = 0.0;
  21404. if ( IniFile::ReadInt(&ini, "World", "PetFriendsArraySize", &nValue) == 1 )
  21405. {
  21406. this->m_ConfigInfo.m_PetFriendsItem = nValue;
  21407. }
  21408. else
  21409. {
  21410. this->m_ConfigInfo.m_PetFriendsItem = 1024;
  21411. DiskLog("./Log/Config", "Load PetFriendsArraySize Failed Use Default Value 1024 ! ");
  21412. }
  21413. if ( IniFile::ReadText(&ini, "Global", "DropParam", szText, 32) != 1 )
  21414. __assertex__(
  21415. "../../Server/Server/Base/Config.cpp",
  21416. 0x113u,
  21417. "void Config::LoadConfigInfo_ReLoad()",
  21418. "FALSE",
  21419. "[Config::LoadConfigInfo_ReLoad]: INI: read Global::DropParam failed!!");
  21420. this->m_ConfigInfo.m_DropParam = __strtod_internal(szText, 0, 0);
  21421. if ( IniFile::ReadInt(&ini, "Global", "EquipmentDamagePoint", &nValue) != 1 )
  21422. __assertex__(
  21423. "../../Server/Server/Base/Config.cpp",
  21424. 0x11Du,
  21425. "void Config::LoadConfigInfo_ReLoad()",
  21426. "FALSE",
  21427. "[Config::LoadConfigInfo_ReLoad]: INI: read Global::EquipmentDamagePoint failed!!");
  21428. this->m_ConfigInfo.m_EquipmentDamagePoint = nValue;
  21429. if ( IniFile::ReadInt(&ini, "Global", "PkRefixOfDamage", &nValue) != 1 )
  21430. __assertex__(
  21431. "../../Server/Server/Base/Config.cpp",
  21432. 0x126u,
  21433. "void Config::LoadConfigInfo_ReLoad()",
  21434. "FALSE",
  21435. "[Config::LoadConfigInfo_Only]: INI: read Global::PkRefixOfDamage failed!!");
  21436. this->m_ConfigInfo.m_nPkRefixOfDamage = nValue;
  21437. if ( IniFile::ReadInt(&ini, "Global", "AuditSwitch", &nValue) == 1 )
  21438. AuditSwitch(nValue > 0);
  21439. else
  21440. AuditSwitch(0);
  21441. if ( IniFile::ReadInt(&ini, "Global", "AutoRemoveBadPet", &nValue) != 1 )
  21442. __assertex__(
  21443. "../../Server/Server/Base/Config.cpp",
  21444. 0x137u,
  21445. "void Config::LoadConfigInfo_ReLoad()",
  21446. "FALSE",
  21447. "[Config::LoadConfigInfo_ReLoad]: INI: read Global::AutoRemoveBadPet failed!!");
  21448. this->m_ConfigInfo.m_bAutoRemoveBadPet = nValue;
  21449. if ( IniFile::ReadText(&ini, "Global", "GodReliveTopLevel", szText, 32) != 1 )
  21450. __assertex__(
  21451. "../../Server/Server/Base/Config.cpp",
  21452. 0x140u,
  21453. "void Config::LoadConfigInfo_ReLoad()",
  21454. "FALSE",
  21455. "[Config::LoadConfigInfo_ReLoad]: INI: read Global::GodReliveTopLevel failed!!");
  21456. this->m_ConfigInfo.m_GodReliveTopLevel = __strtol_internal(szText, 0, 10, 0);
  21457. if ( IniFile::ReadInt(&ini, "TimeSetting", "RecoverTime", &nValue) != 1 )
  21458. __assertex__(
  21459. "../../Server/Server/Base/Config.cpp",
  21460. 0x14Au,
  21461. "void Config::LoadConfigInfo_ReLoad()",
  21462. "FALSE",
  21463. "[Config::LoadConfigInfo_ReLoad]: INI: read TimeSetting::RecoverTime failed!!");
  21464. this->m_ConfigInfo.m_RecoverTime = nValue;
  21465. if ( IniFile::ReadInt(&ini, "Monster", "MaxCount", &nValue) != 1 )
  21466. __assertex__(
  21467. "../../Server/Server/Base/Config.cpp",
  21468. 0x154u,
  21469. "void Config::LoadConfigInfo_ReLoad()",
  21470. "FALSE",
  21471. "[Config::LoadConfigInfo_ReLoad]: INI: read Monster::MaxCount failed!!");
  21472. this->m_ConfigInfo.m_MaxMonster = nValue;
  21473. if ( IniFile::ReadInt(&ini, "Pet", "MaxCount", &nValue) != 1 )
  21474. __assertex__(
  21475. "../../Server/Server/Base/Config.cpp",
  21476. 0x15Du,
  21477. "void Config::LoadConfigInfo_ReLoad()",
  21478. "FALSE",
  21479. "[Config::LoadConfigInfo_ReLoad]: INI: read Pet::MaxCount failed!!");
  21480. this->m_ConfigInfo.m_MaxPet = nValue;
  21481. if ( IniFile::ReadInt(&ini, "Pet", "PetBodyTime", &nValue) != 1 )
  21482. __assertex__(
  21483. "../../Server/Server/Base/Config.cpp",
  21484. 0x166u,
  21485. "void Config::LoadConfigInfo_ReLoad()",
  21486. "FALSE",
  21487. "[Config::LoadConfigInfo_ReLoad]: INI: read Pet::PetBodyTime failed!!");
  21488. this->m_ConfigInfo.m_PetBodyTime = nValue;
  21489. if ( IniFile::ReadInt(&ini, "Pet", "PetHappinessInterval", &nValue) != 1 )
  21490. __assertex__(
  21491. "../../Server/Server/Base/Config.cpp",
  21492. 0x16Fu,
  21493. "void Config::LoadConfigInfo_ReLoad()",
  21494. "FALSE",
  21495. "[Config::LoadConfigInfo_ReLoad]: INI: read Pet::PetHappinessInterval failed!!");
  21496. this->m_ConfigInfo.m_PetHappinessInterval = nValue;
  21497. if ( IniFile::ReadInt(&ini, "Pet", "PetLifeInterval", &nValue) != 1 )
  21498. __assertex__(
  21499. "../../Server/Server/Base/Config.cpp",
  21500. 0x178u,
  21501. "void Config::LoadConfigInfo_ReLoad()",
  21502. "FALSE",
  21503. "[Config::LoadConfigInfo_ReLoad]: INI: read Pet::PetLifeInterval failed!!");
  21504. this->m_ConfigInfo.m_PetLifeInterval = nValue;
  21505. if ( IniFile::ReadInt(&ini, "Pet", "PetDecLifeStep", &nValue) != 1 )
  21506. __assertex__(
  21507. "../../Server/Server/Base/Config.cpp",
  21508. 0x180u,
  21509. "void Config::LoadConfigInfo_ReLoad()",
  21510. "FALSE",
  21511. "[Config::LoadConfigInfo_ReLoad]: INI: read Pet::PetDecLifeStep failed!!");
  21512. this->m_ConfigInfo.m_PetDecLifeStep = nValue;
  21513. if ( IniFile::ReadInt(&ini, "Pet", "PetCallUpHappiness", &nValue) != 1 )
  21514. __assertex__(
  21515. "../../Server/Server/Base/Config.cpp",
  21516. 0x189u,
  21517. "void Config::LoadConfigInfo_ReLoad()",
  21518. "FALSE",
  21519. "[Config::LoadConfigInfo_ReLoad]: INI: read Pet::PetCallUpHappiness failed!!");
  21520. this->m_ConfigInfo.m_PetCallUpHappiness = nValue;
  21521. if ( IniFile::ReadInt(&ini, "Pet", "PetPlacardTime", &nValue) != 1 )
  21522. __assertex__(
  21523. "../../Server/Server/Base/Config.cpp",
  21524. 0x192u,
  21525. "void Config::LoadConfigInfo_ReLoad()",
  21526. "FALSE",
  21527. "[Config::LoadConfigInfo_ReLoad]: INI: read Pet::PetPlacardTime failed!!");
  21528. this->m_ConfigInfo.m_PetPlacardTime = nValue;
  21529. if ( IniFile::ReadInt(&ini, "Pet", "PetPlacardNeedLevel", &nValue) != 1 )
  21530. __assertex__(
  21531. "../../Server/Server/Base/Config.cpp",
  21532. 0x19Bu,
  21533. "void Config::LoadConfigInfo_ReLoad()",
  21534. "FALSE",
  21535. "[Config::LoadConfigInfo_ReLoad]: INI: read Pet::PetPlacardNeedLevel failed!!");
  21536. this->m_ConfigInfo.m_PetPlacardNeedLevel = nValue;
  21537. if ( IniFile::ReadInt(&ini, "Pet", "PetPlacardNeedHappiness", &nValue) != 1 )
  21538. __assertex__(
  21539. "../../Server/Server/Base/Config.cpp",
  21540. 0x1A4u,
  21541. "void Config::LoadConfigInfo_ReLoad()",
  21542. "FALSE",
  21543. "[Config::LoadConfigInfo_ReLoad]: INI: read Pet::PetPlacardNeedHappiness failed!!");
  21544. this->m_ConfigInfo.m_PetPlacardNeedHappiness = nValue;
  21545. if ( IniFile::ReadInt(&ini, "Pet", "PetPlacardNeedLife", &nValue) != 1 )
  21546. __assertex__(
  21547. "../../Server/Server/Base/Config.cpp",
  21548. 0x1ADu,
  21549. "void Config::LoadConfigInfo_ReLoad()",
  21550. "FALSE",
  21551. "[Config::LoadConfigInfo_ReLoad]: INI: read Pet::PetPlacardNeedLife failed!!");
  21552. this->m_ConfigInfo.m_PetPlacardNeedLife = nValue;
  21553. if ( IniFile::ReadInt(&ini, "Pet", "PetCompoundGenGuFloat", &nValue) != 1 )
  21554. __assertex__(
  21555. "../../Server/Server/Base/Config.cpp",
  21556. 0x1B5u,
  21557. "void Config::LoadConfigInfo_ReLoad()",
  21558. "FALSE",
  21559. "[Config::LoadConfigInfo_ReLoad]: INI: read Pet::PetCompoundGenGuFloat failed!!");
  21560. this->m_ConfigInfo.m_PetCompoundGenGuFloat = nValue;
  21561. if ( IniFile::ReadInt(&ini, "Pet", "PetCompoundGrowFloat", &nValue) != 1 )
  21562. __assertex__(
  21563. "../../Server/Server/Base/Config.cpp",
  21564. 0x1BDu,
  21565. "void Config::LoadConfigInfo_ReLoad()",
  21566. "FALSE",
  21567. "[Config::LoadConfigInfo_ReLoad]: INI: read Pet::PetCompoundGrowFloat failed!!");
  21568. this->m_ConfigInfo.m_PetCompoundGrowFloat = nValue;
  21569. if ( IniFile::ReadInt(&ini, "Pet", "PetCompoundBabyPer_VV", &nValue) != 1 )
  21570. __assertex__(
  21571. "../../Server/Server/Base/Config.cpp",
  21572. 0x1C5u,
  21573. "void Config::LoadConfigInfo_ReLoad()",
  21574. "FALSE",
  21575. "[Config::LoadConfigInfo_ReLoad]: INI: read Pet::PetCompoundBabyPer_VV failed!!");
  21576. this->m_ConfigInfo.m_PetCompoundBabyPer_VV = nValue;
  21577. if ( IniFile::ReadInt(&ini, "Pet", "PetCompoundBabyPer_BB", &nValue) != 1 )
  21578. __assertex__(
  21579. "../../Server/Server/Base/Config.cpp",
  21580. 0x1CDu,
  21581. "void Config::LoadConfigInfo_ReLoad()",
  21582. "FALSE",
  21583. "[Config::LoadConfigInfo_ReLoad]: INI: read Pet::PetCompoundBabyPer_BB failed!!");
  21584. this->m_ConfigInfo.m_PetCompoundBabyPer_BB = nValue;
  21585. if ( IniFile::ReadInt(&ini, "Pet", "PetCompoundBabyPer_VB", &nValue) != 1 )
  21586. __assertex__(
  21587. "../../Server/Server/Base/Config.cpp",
  21588. 0x1D5u,
  21589. "void Config::LoadConfigInfo_ReLoad()",
  21590. "FALSE",
  21591. "[Config::LoadConfigInfo_ReLoad]: INI: read Pet::PetCompoundBabyPer_VB failed!!");
  21592. this->m_ConfigInfo.m_PetCompoundBabyPer_VB = nValue;
  21593. if ( IniFile::ReadInt(&ini, "Pet", "PetCompoundPerceptionPer", &nValue) != 1 )
  21594. __assertex__(
  21595. "../../Server/Server/Base/Config.cpp",
  21596. 0x1DDu,
  21597. "void Config::LoadConfigInfo_ReLoad()",
  21598. "FALSE",
  21599. "[Config::LoadConfigInfo_ReLoad]: INI: read Pet::PetCompoundPerceptionPer failed!!");
  21600. this->m_ConfigInfo.m_PetCompoundPerceptionPer = nValue;
  21601. if ( IniFile::ReadInt(&ini, "Pet", "PetMaxDefaultLevel", &nValue) != 1 )
  21602. __assertex__(
  21603. "../../Server/Server/Base/Config.cpp",
  21604. 0x1E8u,
  21605. "void Config::LoadConfigInfo_ReLoad()",
  21606. "FALSE",
  21607. "[Config::LoadConfigInfo_ReLoad]: INI: read Pet::m_PetMaxDefaultLevel failed!!");
  21608. this->m_ConfigInfo.m_PetMaxDefaultLevel = nValue - 1;
  21609. if ( IniFile::ReadText(&ini, "Pet", "PetDieLReduceLife", szText, 32) != 1 )
  21610. __assertex__(
  21611. "../../Server/Server/Base/Config.cpp",
  21612. 0x1F2u,
  21613. "void Config::LoadConfigInfo_ReLoad()",
  21614. "FALSE",
  21615. "[Config::LoadConfigInfo_ReLoad]: INI: read Pet::PetDieLReduceife failed!!");
  21616. this->m_ConfigInfo.m_fPetDieReduceLift = __strtod_internal(szText, 0, 0);
  21617. if ( IniFile::ReadInt(&ini, "Monster", "DefaultRespawnTime", &nValue) != 1 )
  21618. __assertex__(
  21619. "../../Server/Server/Base/Config.cpp",
  21620. 0x1FDu,
  21621. "void Config::LoadConfigInfo_ReLoad()",
  21622. "FALSE",
  21623. "[Config::LoadConfigInfo_ReLoad]: INI: read Monster::DefaultRespawnTime failed!!");
  21624. this->m_ConfigInfo.m_DefaultRespawnTime = nValue;
  21625. if ( IniFile::ReadInt(&ini, "TimeSetting", "DropBoxRecycle", &nValue) != 1 )
  21626. __assertex__(
  21627. "../../Server/Server/Base/Config.cpp",
  21628. 0x206u,
  21629. "void Config::LoadConfigInfo_ReLoad()",
  21630. "FALSE",
  21631. "[Config::LoadConfigInfo_ReLoad]: INI: read TimeSetting::DropBoxRecycle failed!!");
  21632. this->m_ConfigInfo.m_DropBoxRecycleTime = nValue;
  21633. if ( IniFile::ReadInt(&ini, "TimeSetting", "TimeChangeInterval", &nValue) != 1 )
  21634. __assertex__(
  21635. "../../Server/Server/Base/Config.cpp",
  21636. 0x20Fu,
  21637. "void Config::LoadConfigInfo_ReLoad()",
  21638. "FALSE",
  21639. "[Config::LoadConfigInfo_ReLoad]: INI: read TimeSetting::TimeChangeInterval failed!!");
  21640. this->m_ConfigInfo.m_TimeChangeInterval = nValue;
  21641. if ( IniFile::ReadInt(&ini, "TimeSetting", "PacketAuditTime", &nValue) == 1 )
  21642. this->m_ConfigInfo.m_PacketAuditTime = nValue;
  21643. else
  21644. this->m_ConfigInfo.m_PacketAuditTime = 0;
  21645. if ( IniFile::ReadInt(&ini, "Monster", "DefaultPositionRange", &nValue) != 1 )
  21646. __assertex__(
  21647. "../../Server/Server/Base/Config.cpp",
  21648. 0x220u,
  21649. "void Config::LoadConfigInfo_ReLoad()",
  21650. "FALSE",
  21651. "[Config::LoadConfigInfo_ReLoad]: INI: read Monster::DefaultPositionRange failed!!");
  21652. this->m_ConfigInfo.m_PositionRange = nValue;
  21653. if ( IniFile::ReadInt(&ini, "Monster", "DefaultAIType", &nValue) != 1 )
  21654. __assertex__(
  21655. "../../Server/Server/Base/Config.cpp",
  21656. 0x229u,
  21657. "void Config::LoadConfigInfo_ReLoad()",
  21658. "FALSE",
  21659. "[Config::LoadConfigInfo_ReLoad]: INI: read Monster::DefaultAIType failed!!");
  21660. this->m_ConfigInfo.m_AIType = nValue;
  21661. if ( IniFile::ReadInt(&ini, "TimeSetting", "DisconnectTime1", &nValue) != 1 )
  21662. __assertex__(
  21663. "../../Server/Server/Base/Config.cpp",
  21664. 0x232u,
  21665. "void Config::LoadConfigInfo_ReLoad()",
  21666. "FALSE",
  21667. "[Config::LoadConfigInfo_ReLoad]: INI: read TimeSetting::DisconnectTime failed!!");
  21668. this->m_ConfigInfo.m_DisconnectTime = nValue;
  21669. if ( IniFile::ReadInt(&ini, "TimeSetting", "DisconnectTime2", &nValue) != 1 )
  21670. __assertex__(
  21671. "../../Server/Server/Base/Config.cpp",
  21672. 0x23Au,
  21673. "void Config::LoadConfigInfo_ReLoad()",
  21674. "FALSE",
  21675. "[Config::LoadConfigInfo_ReLoad]: INI: read TimeSetting::DisconnectTime failed!!");
  21676. this->m_ConfigInfo.m_DisconnectTime2 = nValue;
  21677. if ( !IniFile::ReadText(&ini, "Temp", "UserPath", this->m_ConfigInfo.m_UserPath, 260) )
  21678. __assertex__(
  21679. "../../Server/Server/Base/Config.cpp",
  21680. 0x23Fu,
  21681. "void Config::LoadConfigInfo_ReLoad()",
  21682. "FALSE",
  21683. "[Config::LoadConfigInfo_ReLoad]: INI: read Temp::UserPath failed!!");
  21684. if ( IniFile::ReadInt(&ini, "Monster", "DefaultBodyTime", &nValue) != 1 )
  21685. __assertex__(
  21686. "../../Server/Server/Base/Config.cpp",
  21687. 0x248u,
  21688. "void Config::LoadConfigInfo_ReLoad()",
  21689. "FALSE",
  21690. "[Config::LoadConfigInfo_ReLoad]: INI: read Monster::DefaultBodyTime failed!!");
  21691. this->m_ConfigInfo.m_DefaultBodyTime = nValue;
  21692. if ( IniFile::ReadInt(&ini, "Monster", "DefaultBossBodyTime", &nValue) != 1 )
  21693. __assertex__(
  21694. "../../Server/Server/Base/Config.cpp",
  21695. 0x251u,
  21696. "void Config::LoadConfigInfo_ReLoad()",
  21697. "FALSE",
  21698. "[Config::LoadConfigInfo_ReLoad]: INI: read Monster::DefaultBossBodyTime failed!!");
  21699. this->m_ConfigInfo.m_DefaultBossBodyTime = nValue;
  21700. if ( IniFile::ReadInt(&ini, "Monster", "DefaultRefuseScanTime", &nValue) != 1 )
  21701. __assertex__(
  21702. "../../Server/Server/Base/Config.cpp",
  21703. 0x25Au,
  21704. "void Config::LoadConfigInfo_ReLoad()",
  21705. "FALSE",
  21706. "[Config::LoadConfigInfo_ReLoad]: INI: read Monster::DefaultRefuseScanTime failed!!");
  21707. this->m_ConfigInfo.m_DefaultRefuseScanTime = nValue;
  21708. if ( IniFile::ReadInt(&ini, "Monster", "OddsOfChangeTarget", &nValue) == 1 )
  21709. this->m_ConfigInfo.m_OddsOfChangeTarget = nValue;
  21710. else
  21711. this->m_ConfigInfo.m_OddsOfChangeTarget = 20;
  21712. if ( IniFile::ReadInt(&ini, "Monster", "OddsOfAttackAssistant", &nValue) == 1 )
  21713. this->m_ConfigInfo.m_OddsOfAttackAssistant = nValue;
  21714. else
  21715. this->m_ConfigInfo.m_OddsOfAttackAssistant = 20;
  21716. if ( IniFile::ReadInt(&ini, "Monster", "ChangeTargetCooldown", &nValue) == 1 )
  21717. this->m_ConfigInfo.m_ChangeTargetCooldown = 1000 * nValue;
  21718. else
  21719. this->m_ConfigInfo.m_ChangeTargetCooldown = 5000;
  21720. if ( IniFile::ReadInt(&ini, "Monster", "MonsterMaxDefaultLevel", &nValue) != 1 )
  21721. {
  21722. this->m_ConfigInfo.m_MonsterMaxDefaultLevel = 200;
  21723. __assertex__(
  21724. "../../Server/Server/Base/Config.cpp",
  21725. 0x27Fu,
  21726. "void Config::LoadConfigInfo_ReLoad()",
  21727. "FALSE",
  21728. "[Config::LoadConfigInfo_ReLoad]: INI: read Human::m_MonsterMaxDefaultLevel failed!!");
  21729. }
  21730. this->m_ConfigInfo.m_MonsterMaxDefaultLevel = nValue;
  21731. if ( IniFile::ReadInt(&ini, "Human", "OutGhostTime", &nValue) != 1 )
  21732. __assertex__(
  21733. "../../Server/Server/Base/Config.cpp",
  21734. 0x28Du,
  21735. "void Config::LoadConfigInfo_ReLoad()",
  21736. "FALSE",
  21737. "[Config::LoadConfigInfo_ReLoad]: INI: read Human::OutGhostTime failed!!");
  21738. this->m_ConfigInfo.m_OutGhostTime = nValue;
  21739. if ( IniFile::ReadInt(&ini, "Human", "CanGetExpRange", &nValue) != 1 )
  21740. __assertex__(
  21741. "../../Server/Server/Base/Config.cpp",
  21742. 0x296u,
  21743. "void Config::LoadConfigInfo_ReLoad()",
  21744. "FALSE",
  21745. "[Config::LoadConfigInfo_ReLoad]: INI: read Human::CanGetExpRange failed!!");
  21746. this->m_ConfigInfo.m_CanGetExpRange = (long double)nValue;
  21747. if ( IniFile::ReadInt(&ini, "Human", "DefaultMoveSpeed", &nValue) != 1 )
  21748. __assertex__(
  21749. "../../Server/Server/Base/Config.cpp",
  21750. 0x29Fu,
  21751. "void Config::LoadConfigInfo_ReLoad()",
  21752. "FALSE",
  21753. "[Config::LoadConfigInfo_ReLoad]: INI: read Human::DefaultMoveSpeed failed!!");
  21754. this->m_ConfigInfo.m_DefaultMoveSpeed = nValue;
  21755. if ( IniFile::ReadInt(&ini, "Human", "DefaultAttackSpeed", &nValue) != 1 )
  21756. __assertex__(
  21757. "../../Server/Server/Base/Config.cpp",
  21758. 0x2A8u,
  21759. "void Config::LoadConfigInfo_ReLoad()",
  21760. "FALSE",
  21761. "[Config::LoadConfigInfo_ReLoad]: INI: read Human::DefaultAttackSpeed failed!!");
  21762. this->m_ConfigInfo.m_DefaultAttackSpeed = nValue;
  21763. if ( IniFile::ReadInt(&ini, "Human", "HumanVERecoverInterval", &nValue) != 1 )
  21764. __assertex__(
  21765. "../../Server/Server/Base/Config.cpp",
  21766. 0x2B1u,
  21767. "void Config::LoadConfigInfo_ReLoad()",
  21768. "FALSE",
  21769. "[Config::LoadConfigInfo_ReLoad]: INI: read Human::HumanVERecoverInterval failed!!");
  21770. this->m_ConfigInfo.m_HumanVERecoverInterval = nValue;
  21771. if ( IniFile::ReadInt(&ini, "Human", "HumanMaxDefaultLevel", &nValue) != 1 )
  21772. __assertex__(
  21773. "../../Server/Server/Base/Config.cpp",
  21774. 0x2BCu,
  21775. "void Config::LoadConfigInfo_ReLoad()",
  21776. "FALSE",
  21777. "[Config::LoadConfigInfo_ReLoad]: INI: read Human::m_HumanMaxDefualtLevel failed!!");
  21778. this->m_ConfigInfo.m_HumanMaxDefualtLevel = nValue - 1;
  21779. if ( IniFile::ReadInt(&ini, "Human", "XinfaMaxDefaultLevel", &nValue) != 1 )
  21780. __assertex__(
  21781. "../../Server/Server/Base/Config.cpp",
  21782. 0x2C5u,
  21783. "void Config::LoadConfigInfo_ReLoad()",
  21784. "FALSE",
  21785. "[Config::LoadConfigInfo_ReLoad]: INI: read Human::m_XinfaMaxDefaultLevel failed!!");
  21786. this->m_ConfigInfo.m_XinfaMaxDefaultLevel = nValue;
  21787. if ( IniFile::ReadInt(&ini, "Human", "PKValueRefreshRate", &nValue) != 1 )
  21788. __assertex__(
  21789. "../../Server/Server/Base/Config.cpp",
  21790. 0x2CFu,
  21791. "void Config::LoadConfigInfo_ReLoad()",
  21792. "FALSE",
  21793. "[Config::LoadConfigInfo_ReLoad]: INI: read Human::PKValueRefreshRate failed!!");
  21794. this->m_ConfigInfo.m_PKValueRefreshRate = nValue;
  21795. if ( IniFile::ReadInt(&ini, "Human", "HumanDefPilferLockTime", &nValue) != 1 )
  21796. __assertex__(
  21797. "../../Server/Server/Base/Config.cpp",
  21798. 0x2D7u,
  21799. "void Config::LoadConfigInfo_ReLoad()",
  21800. "FALSE",
  21801. "[Config::LoadConfigInfo_ReLoad]: INI: read Human::HumanDefPilferLockTime failed!!");
  21802. this->m_ConfigInfo.m_nHumanDefPilferLockTime = nValue;
  21803. if ( IniFile::ReadInt(&ini, "SystemNotice", "IsJoinBangPaiNotice", &nValue) == 1 )
  21804. this->m_ConfigInfo.m_IsJoinBangPaiNotice = nValue;
  21805. else
  21806. this->m_ConfigInfo.m_IsJoinBangPaiNotice = 0;
  21807. if ( IniFile::ReadInt(&ini, "Team", "AvailableFollowDist", &nValue) != 1 )
  21808. __assertex__(
  21809. "../../Server/Server/Base/Config.cpp",
  21810. 0x2EBu,
  21811. "void Config::LoadConfigInfo_ReLoad()",
  21812. "FALSE",
  21813. "[Config::LoadConfigInfo_ReLoad]: INI: read Team::AvailableFollowDist failed!!");
  21814. this->m_ConfigInfo.m_nAvailableFollowDist = nValue;
  21815. if ( IniFile::ReadInt(&ini, "Team", "TimeForLoseFollow", &nValue) != 1 )
  21816. __assertex__(
  21817. "../../Server/Server/Base/Config.cpp",
  21818. 0x2F4u,
  21819. "void Config::LoadConfigInfo_ReLoad()",
  21820. "FALSE",
  21821. "[Config::LoadConfigInfo_ReLoad]: INI: read Team::TimeForLoseFollow failed!!");
  21822. this->m_ConfigInfo.m_nTimeForLoseFollow = nValue;
  21823. if ( IniFile::ReadInt(&ini, "Team", "TimeForLoseFollow", &nValue) != 1 )
  21824. __assertex__(
  21825. "../../Server/Server/Base/Config.cpp",
  21826. 0x2FDu,
  21827. "void Config::LoadConfigInfo_ReLoad()",
  21828. "FALSE",
  21829. "[Config::LoadConfigInfo_ReLoad]: INI: read Team::TimeForLoseFollow failed!!");
  21830. this->m_ConfigInfo.m_nTimeForLoseFollow = nValue;
  21831. if ( IniFile::ReadInt(&ini, "Guild", "DefaultMaxMemberCount", &nValue) != 1 )
  21832. __assertex__(
  21833. "../../Server/Server/Base/Config.cpp",
  21834. 0x306u,
  21835. "void Config::LoadConfigInfo_ReLoad()",
  21836. "FALSE",
  21837. "[Config::LoadConfigInfo_ReLoad]: INI: read Guild::DefaultMaxMemberCount failed!!");
  21838. this->m_ConfigInfo.m_nDefaultMaxMemberCount = nValue;
  21839. if ( IniFile::ReadInt(&ini, "Guild", "ResponseUserCount", &nValue) != 1 )
  21840. __assertex__(
  21841. "../../Server/Server/Base/Config.cpp",
  21842. 0x30Fu,
  21843. "void Config::LoadConfigInfo_ReLoad()",
  21844. "FALSE",
  21845. "[Config::LoadConfigInfo_ReLoad]: INI: read Guild::ResponseUserCount failed!!");
  21846. this->m_ConfigInfo.m_nResponseUserCount = nValue;
  21847. if ( IniFile::ReadInt(&ini, "Relation", "PasswdPoint", &nValue) != 1 )
  21848. __assertex__(
  21849. "../../Server/Server/Base/Config.cpp",
  21850. 0x318u,
  21851. "void Config::LoadConfigInfo_ReLoad()",
  21852. "FALSE",
  21853. "[Config::LoadConfigInfo_ReLoad]: INI: read Relation::PasswdPoint failed!!");
  21854. this->m_ConfigInfo.m_nPasswdPoint = nValue;
  21855. if ( IniFile::ReadInt(&ini, "Relation", "PromptPoint", &nValue) != 1 )
  21856. __assertex__(
  21857. "../../Server/Server/Base/Config.cpp",
  21858. 0x321u,
  21859. "void Config::LoadConfigInfo_ReLoad()",
  21860. "FALSE",
  21861. "[Config::LoadConfigInfo_ReLoad]: INI: read Relation::PromptPoint failed!!");
  21862. this->m_ConfigInfo.m_nPromptPoint = nValue;
  21863. if ( IniFile::ReadInt(&ini, "MinorPassword", "DeleteDelayTime", &nValue) != 1 )
  21864. __assertex__(
  21865. "../../Server/Server/Base/Config.cpp",
  21866. 0x32Bu,
  21867. "void Config::LoadConfigInfo_ReLoad()",
  21868. "FALSE",
  21869. "[Config::LoadConfigInfo_ReLoad]: INI: read Relation::DeleteDelayTime failed!!");
  21870. this->m_ConfigInfo.m_nDeleteDelayTime = 3600 * nValue;
  21871. if ( IniFile::ReadInt(&ini, "MinorPassword", "EnergySetCost", &nValue) != 1 )
  21872. __assertex__(
  21873. "../../Server/Server/Base/Config.cpp",
  21874. 0x334u,
  21875. "void Config::LoadConfigInfo_ReLoad()",
  21876. "FALSE",
  21877. "[Config::LoadConfigInfo_ReLoad]: INI: read MinorPassword::EnergySetCost failed!!");
  21878. this->m_ConfigInfo.m_nEnergySetCost = nValue;
  21879. if ( IniFile::ReadInt(&ini, "MinorPassword", "EnergyModifyCost", &nValue) != 1 )
  21880. __assertex__(
  21881. "../../Server/Server/Base/Config.cpp",
  21882. 0x33Du,
  21883. "void Config::LoadConfigInfo_ReLoad()",
  21884. "FALSE",
  21885. "[Config::LoadConfigInfo_ReLoad]: INI: read MinorPassword::EnergyModifyCost failed!!");
  21886. this->m_ConfigInfo.m_nEnergyModifyCost = nValue;
  21887. if ( IniFile::ReadInt(&ini, "MinorPassword", "EnergyDelCost", &nValue) != 1 )
  21888. __assertex__(
  21889. "../../Server/Server/Base/Config.cpp",
  21890. 0x346u,
  21891. "void Config::LoadConfigInfo_ReLoad()",
  21892. "FALSE",
  21893. "[Config::LoadConfigInfo_ReLoad]: INI: read MinorPassword::EnergyDelCost failed!!");
  21894. this->m_ConfigInfo.m_nEnergyDelCost = nValue;
  21895. if ( IniFile::ReadInt(&ini, "MinorPassword", "MaxInputErrTimesPerDay", &nValue) != 1 )
  21896. __assertex__(
  21897. "../../Server/Server/Base/Config.cpp",
  21898. 0x34Fu,
  21899. "void Config::LoadConfigInfo_ReLoad()",
  21900. "FALSE",
  21901. "[Config::LoadConfigInfo_ReLoad]: INI: read MinorPassword::MaxInputErrTimesPerDay failed!!");
  21902. this->m_ConfigInfo.m_nMaxInputErrTimesPerDay = nValue;
  21903. if ( IniFile::ReadInt(&ini, "MinorPassword", "PWUnlockTime", &nValue) != 1 )
  21904. __assertex__(
  21905. "../../Server/Server/Base/Config.cpp",
  21906. 0x357u,
  21907. "void Config::LoadConfigInfo_ReLoad()",
  21908. "FALSE",
  21909. "[Config::LoadConfigInfo_ReLoad]: INI: read MinorPassword::PWUnlockTime failed!!");
  21910. this->m_ConfigInfo.m_nPWUnlockTime = nValue;
  21911. if ( IniFile::ReadInt(&ini, "Relation", "ExpPoint", &nValue) != 1 )
  21912. __assertex__(
  21913. "../../Server/Server/Base/Config.cpp",
  21914. 0x360u,
  21915. "void Config::LoadConfigInfo_ReLoad()",
  21916. "FALSE",
  21917. "[Config::LoadConfigInfo_ReLoad]: INI: read Relation::ExpPoint failed!!");
  21918. this->m_ConfigInfo.m_nExpPoint = nValue;
  21919. if ( IniFile::ReadInt(&ini, "World", "HashOnlineUserCount", &nValue) != 1 )
  21920. __assertex__(
  21921. "../../Server/Server/Base/Config.cpp",
  21922. 0x374u,
  21923. "void Config::LoadConfigInfo_ReLoad()",
  21924. "FALSE",
  21925. "[Config::LoadConfigInfo_ReLoad]: INI: read World::HashOnlineUserCount failed!!");
  21926. this->m_ConfigInfo.m_nHashOnlineUserCount = nValue;
  21927. if ( IniFile::ReadInt(&ini, "World", "HashMailUserCount", &nValue) != 1 )
  21928. __assertex__(
  21929. "../../Server/Server/Base/Config.cpp",
  21930. 0x37Du,
  21931. "void Config::LoadConfigInfo_ReLoad()",
  21932. "FALSE",
  21933. "[Config::LoadConfigInfo_ReLoad]: INI: read World::HashMailUserCount failed!!");
  21934. this->m_ConfigInfo.m_nHashMailUserCount = nValue;
  21935. if ( IniFile::ReadInt(&ini, "World", "MaxOfflineUserCount", &nValue) != 1 )
  21936. __assertex__(
  21937. "../../Server/Server/Base/Config.cpp",
  21938. 0x386u,
  21939. "void Config::LoadConfigInfo_ReLoad()",
  21940. "FALSE",
  21941. "[Config::LoadConfigInfo_ReLoad]: INI: read World::MaxOfflineUserCount failed!!");
  21942. this->m_ConfigInfo.m_nMaxOfflineUserCount = nValue;
  21943. if ( IniFile::ReadInt(&ini, "World", "SpeakerPoolMax", &nValue) != 1 )
  21944. __assertex__(
  21945. "../../Server/Server/Base/Config.cpp",
  21946. 0x38Fu,
  21947. "void Config::LoadConfigInfo_ReLoad()",
  21948. "FALSE",
  21949. "[Config::LoadConfigInfo_ReLoad]: INI: read World::SpeakerPoolMax failed!!");
  21950. this->m_ConfigInfo.m_nSpeakerPoolMax = nValue;
  21951. if ( IniFile::ReadText(&ini, "Global", "RespawnParam", szText, 32) != 1 )
  21952. __assertex__(
  21953. "../../Server/Server/Base/Config.cpp",
  21954. 0x399u,
  21955. "void Config::LoadConfigInfo_ReLoad()",
  21956. "FALSE",
  21957. "[Config::LoadConfigInfo_ReLoad]: INI: read Global::RespawnParam failed!!");
  21958. this->m_ConfigInfo.m_fRespawnParam = __strtod_internal(szText, 0, 0);
  21959. if ( IniFile::ReadInt(&ini, "TimeSetting", "KickUserTime", &nValue) != 1 )
  21960. __assertex__(
  21961. "../../Server/Server/Base/Config.cpp",
  21962. 0x3A2u,
  21963. "void Config::LoadConfigInfo_ReLoad()",
  21964. "FALSE",
  21965. "[Config::LoadConfigInfo_ReLoad]: INI: read TimeSetting::KickUserTime failed!!");
  21966. this->m_ConfigInfo.m_KickUserTime = nValue;
  21967. if ( IniFile::ReadInt(&ini, "TimeSetting", aSmu, &nValue) != 1 )
  21968. __assertex__(
  21969. "../../Server/Server/Base/Config.cpp",
  21970. 0x3AAu,
  21971. "void Config::LoadConfigInfo_ReLoad()",
  21972. "FALSE",
  21973. "[Config::LoadConfigInfo_ReLoad]: INI: read TimeSetting::KickUserTime failed!!");
  21974. this->m_ConfigInfo.m_SMU_KickUserTime = nValue;
  21975. if ( IniFile::ReadInt(&ini, "Combat", "DefaultDamageFluctuation", &nValue) != 1 )
  21976. __assertex__(
  21977. "../../Server/Server/Base/Config.cpp",
  21978. 0x3B4u,
  21979. "void Config::LoadConfigInfo_ReLoad()",
  21980. "FALSE",
  21981. "[Config::LoadConfigInfo_ReLoad]: INI: read Combat::DefaultDamageFluctuation failed!!");
  21982. this->m_ConfigInfo.m_nDefaultDamageFluctuation = nValue;
  21983. if ( IniFile::ReadInt(&ini, "Combat", "H0ofHitCalculation", &nValue) != 1 )
  21984. __assertex__(
  21985. "../../Server/Server/Base/Config.cpp",
  21986. 0x3BCu,
  21987. "void Config::LoadConfigInfo_ReLoad()",
  21988. "FALSE",
  21989. "[Config::LoadConfigInfo_ReLoad]: INI: read Combat::H0ofHitCalculation failed!!");
  21990. this->m_ConfigInfo.m_nH0ofHitCalculation = nValue;
  21991. if ( IniFile::ReadInt(&ini, "Combat", "C0ofCriticalCalculation", &nValue) != 1 )
  21992. __assertex__(
  21993. "../../Server/Server/Base/Config.cpp",
  21994. 0x3C4u,
  21995. "void Config::LoadConfigInfo_ReLoad()",
  21996. "FALSE",
  21997. "[Config::LoadConfigInfo_ReLoad]: INI: read Combat::C0ofCriticalCalculation failed!!");
  21998. this->m_ConfigInfo.m_nC0ofCriticalCalculation = nValue;
  21999. if ( IniFile::ReadInt(&ini, "Combat", "C1ofCriticalCalculation", &nValue) != 1 )
  22000. __assertex__(
  22001. "../../Server/Server/Base/Config.cpp",
  22002. 0x3CCu,
  22003. "void Config::LoadConfigInfo_ReLoad()",
  22004. "FALSE",
  22005. "[Config::LoadConfigInfo_ReLoad]: INI: read Combat::C1ofCriticalCalculation failed!!");
  22006. this->m_ConfigInfo.m_nC1ofCriticalCalculation = nValue;
  22007. if ( IniFile::ReadInt(&ini, "Combat", "C2ofCriticalCalculation", &nValue) != 1 )
  22008. __assertex__(
  22009. "../../Server/Server/Base/Config.cpp",
  22010. 0x3D4u,
  22011. "void Config::LoadConfigInfo_ReLoad()",
  22012. "FALSE",
  22013. "[Config::LoadConfigInfo_ReLoad]: INI: read Combat::C2ofCriticalCalculation failed!!");
  22014. this->m_ConfigInfo.m_nC2ofCriticalCalculation = nValue;
  22015. if ( IniFile::ReadInt(&ini, "GoodBad", "MinGoodBadValue", &nValue) != 1 )
  22016. __assertex__(
  22017. "../../Server/Server/Base/Config.cpp",
  22018. 0x3DEu,
  22019. "void Config::LoadConfigInfo_ReLoad()",
  22020. "FALSE",
  22021. "[Config::LoadConfigInfo_ReLoad]: INI: read GoodBad::MinGoodBadValue failed!!");
  22022. this->m_ConfigInfo.m_nMinGoodBadValue = nValue;
  22023. if ( IniFile::ReadInt(&ini, "GoodBad", "MaxGoodBadValue", &nValue) != 1 )
  22024. __assertex__(
  22025. "../../Server/Server/Base/Config.cpp",
  22026. 0x3E7u,
  22027. "void Config::LoadConfigInfo_ReLoad()",
  22028. "FALSE",
  22029. "[Config::LoadConfigInfo_ReLoad]: INI: read GoodBad::MaxGoodBadValue failed!!");
  22030. this->m_ConfigInfo.m_nMaxGoodBadValue = nValue;
  22031. if ( IniFile::ReadInt(&ini, "JuqingPoint", "MinJuqingPoint", &nValue) != 1 )
  22032. __assertex__(
  22033. "../../Server/Server/Base/Config.cpp",
  22034. 0x3F0u,
  22035. "void Config::LoadConfigInfo_ReLoad()",
  22036. "FALSE",
  22037. "[Config::LoadConfigInfo_ReLoad]: INI: read Juqing::MinJuqingPoint failed!!");
  22038. this->m_ConfigInfo.m_nMinJuqingPoint = nValue;
  22039. if ( IniFile::ReadInt(&ini, "JuqingPoint", "MaxJuqingPoint", &nValue) != 1 )
  22040. __assertex__(
  22041. "../../Server/Server/Base/Config.cpp",
  22042. 0x3F9u,
  22043. "void Config::LoadConfigInfo_ReLoad()",
  22044. "FALSE",
  22045. "[Config::LoadConfigInfo_ReLoad]: INI: read Juqing::MaxJuqingPoint failed!!");
  22046. this->m_ConfigInfo.m_nMaxJuqingPoint = nValue;
  22047. if ( IniFile::ReadInt(&ini, "GoodBad", "LevelNeeded", &nValue) != 1 )
  22048. __assertex__(
  22049. "../../Server/Server/Base/Config.cpp",
  22050. 0x404u,
  22051. "void Config::LoadConfigInfo_ReLoad()",
  22052. "FALSE",
  22053. "[Config::LoadConfigInfo_ReLoad]: INI: read GoodBad::LevelNeeded failed!!");
  22054. this->m_ConfigInfo.m_nLevelNeeded = nValue;
  22055. if ( IniFile::ReadInt(&ini, "GoodBad", "MemberLevel", &nValue) != 1 )
  22056. __assertex__(
  22057. "../../Server/Server/Base/Config.cpp",
  22058. 0x40Du,
  22059. "void Config::LoadConfigInfo_ReLoad()",
  22060. "FALSE",
  22061. "[Config::LoadConfigInfo_ReLoad]: INI: read GoodBad::MemberLevel failed!!");
  22062. this->m_ConfigInfo.m_nMemberLevel = nValue;
  22063. if ( IniFile::ReadInt(&ini, "GoodBad", "MemberLevelLimit", &nValue) != 1 )
  22064. __assertex__(
  22065. "../../Server/Server/Base/Config.cpp",
  22066. 0x415u,
  22067. "void Config::LoadConfigInfo_ReLoad()",
  22068. "FALSE",
  22069. "[Config::LoadConfigInfo_ReLoad]: INI: read GoodBad::MemberLevelLimit failed!!");
  22070. this->m_ConfigInfo.m_nMemberLevelLimit = nValue;
  22071. if ( IniFile::ReadInt(&ini, "GoodBad", "LevelDis", &nValue) != 1 )
  22072. __assertex__(
  22073. "../../Server/Server/Base/Config.cpp",
  22074. 0x41Du,
  22075. "void Config::LoadConfigInfo_ReLoad()",
  22076. "FALSE",
  22077. "[Config::LoadConfigInfo_ReLoad]: INI: read GoodBad::LevelDis failed!!");
  22078. this->m_ConfigInfo.m_nMemverLevelDis = nValue;
  22079. if ( IniFile::ReadInt(&ini, "GoodBad", "GoodBadRadius", &nValue) != 1 )
  22080. __assertex__(
  22081. "../../Server/Server/Base/Config.cpp",
  22082. 0x426u,
  22083. "void Config::LoadConfigInfo_ReLoad()",
  22084. "FALSE",
  22085. "[Config::LoadConfigInfo_ReLoad]: INI: read GoodBad::GoodBadRadius failed!!");
  22086. this->m_ConfigInfo.m_fGoodBadRadius = (long double)nValue;
  22087. if ( IniFile::ReadInt(&ini, "GoodBad", "BonusPerMember", &nValue) != 1 )
  22088. __assertex__(
  22089. "../../Server/Server/Base/Config.cpp",
  22090. 0x42Fu,
  22091. "void Config::LoadConfigInfo_ReLoad()",
  22092. "FALSE",
  22093. "[Config::LoadConfigInfo_ReLoad]: INI: read GoodBad::BonusPerMember failed!!");
  22094. this->m_ConfigInfo.m_nBonusPerMember = nValue;
  22095. if ( IniFile::ReadInt(&ini, "GoodBad", "BonusPerPrentice", &nValue) != 1 )
  22096. __assertex__(
  22097. "../../Server/Server/Base/Config.cpp",
  22098. 0x437u,
  22099. "void Config::LoadConfigInfo_ReLoad()",
  22100. "FALSE",
  22101. "[Config::LoadConfigInfo_ReLoad]: INI: read GoodBad::BonusPerPrentice failed!!");
  22102. this->m_ConfigInfo.m_nBonusPerPrentice = nValue;
  22103. if ( IniFile::ReadInt(&ini, "GoodBad", "MaxBonus", &nValue) != 1 )
  22104. __assertex__(
  22105. "../../Server/Server/Base/Config.cpp",
  22106. 0x440u,
  22107. "void Config::LoadConfigInfo_ReLoad()",
  22108. "FALSE",
  22109. "[Config::LoadConfigInfo_ReLoad]: INI: read GoodBad::MaxBonus failed!!");
  22110. this->m_ConfigInfo.m_nMaxBonus = nValue;
  22111. if ( IniFile::ReadInt(&ini, "GoodBad", "PenaltyWhenMemberDie", &nValue) != 1 )
  22112. __assertex__(
  22113. "../../Server/Server/Base/Config.cpp",
  22114. 0x44Au,
  22115. "void Config::LoadConfigInfo_ReLoad()",
  22116. "FALSE",
  22117. "[Config::LoadConfigInfo_ReLoad]: INI: read GoodBad::PenaltyWhenMemberDie failed!!");
  22118. this->m_ConfigInfo.m_nPenaltyWhenMemberDie = nValue;
  22119. if ( !IniFile::ReadInt(&ini, "Duel", "DuelTime", &nValue) )
  22120. __assertex__(
  22121. "../../Server/Server/Base/Config.cpp",
  22122. 0x45Cu,
  22123. "void Config::LoadConfigInfo_ReLoad()",
  22124. "FALSE",
  22125. "[Config::LoadConfigInfo_ReLoad]: INI: read Duel::DuelTime failed!!");
  22126. this->m_ConfigInfo.m_nDuelTime = 1000 * nValue;
  22127. if ( !IniFile::ReadInt(&ini, "Duel", "DuelEnergyRequire", &nValue) )
  22128. __assertex__(
  22129. "../../Server/Server/Base/Config.cpp",
  22130. 0x465u,
  22131. "void Config::LoadConfigInfo_ReLoad()",
  22132. "FALSE",
  22133. "[Config::LoadConfigInfo_ReLoad]: INI: read Duel::DuelEnergyRequire failed!!");
  22134. this->m_ConfigInfo.m_nDuelEnergyRequire = nValue;
  22135. if ( !IniFile::ReadInt(&ini, "Duel", "DuelLevelRequire", &nValue) )
  22136. __assertex__(
  22137. "../../Server/Server/Base/Config.cpp",
  22138. 0x46Eu,
  22139. "void Config::LoadConfigInfo_ReLoad()",
  22140. "FALSE",
  22141. "[Config::LoadConfigInfo_ReLoad]: INI: read Duel::DuelLevelRequire failed!!");
  22142. this->m_ConfigInfo.m_nDuelLevelRequire = nValue;
  22143. if ( !IniFile::ReadInt(&ini, "Warfare", "PersonalWarfareTime", &nValue) )
  22144. __assertex__(
  22145. "../../Server/Server/Base/Config.cpp",
  22146. 0x477u,
  22147. "void Config::LoadConfigInfo_ReLoad()",
  22148. "FALSE",
  22149. "[Config::LoadConfigInfo_ReLoad]: INI: read Warfare::PersonalWarfareTime failed!!");
  22150. this->m_ConfigInfo.m_nPersonalWarfareTime = 1000 * nValue;
  22151. if ( !IniFile::ReadInt(&ini, "PK", "PKFlagSwitchDelay", &nValue) )
  22152. __assertex__(
  22153. "../../Server/Server/Base/Config.cpp",
  22154. 0x480u,
  22155. "void Config::LoadConfigInfo_ReLoad()",
  22156. "FALSE",
  22157. "[Config::LoadConfigInfo_ReLoad]: INI: read PK::PKFlagSwtichDelayTime failed!!");
  22158. this->m_ConfigInfo.m_nPKFlagSwitchDelay = 1000 * nValue;
  22159. if ( IniFile::ReadInt(&ini, "PK", "HostilePlayerWarning", &nValue) )
  22160. {
  22161. if ( nValue > 0 )
  22162. {
  22163. this->m_ConfigInfo.m_nHostilePlayerWarning = 1000 * nValue;
  22164. goto LABEL_113;
  22165. }
  22166. CacheLog(1, "%s", "[Config::LoadConfigInfo_ReLoad]: INI: PK::HostilePlayerWarning Overflow!!", nValue);
  22167. }
  22168. else
  22169. {
  22170. CacheLog(1, "%s", "[Config::LoadConfigInfo_ReLoad]: INI: read PK::HostilePlayerWarning failed!!", 0);
  22171. }
  22172. this->m_ConfigInfo.m_nHostilePlayerWarning = 600000;
  22173. LABEL_113:
  22174. if ( !IniFile::ReadInt(&ini, "FightBack", "LegalFightBackTime", &nValue) )
  22175. __assertex__(
  22176. "../../Server/Server/Base/Config.cpp",
  22177. 0x49Bu,
  22178. "void Config::LoadConfigInfo_ReLoad()",
  22179. "FALSE",
  22180. "[Config::LoadConfigInfo_ReLoad]: INI: read FightBack::LegalFightBackTime failed!!");
  22181. this->m_ConfigInfo.m_nLegalFightBackTime = 1000 * nValue;
  22182. if ( IniFile::ReadText(&ini, "Economic", "RateA", szText, 32) != 1 )
  22183. __assertex__(
  22184. "../../Server/Server/Base/Config.cpp",
  22185. 0x4A4u,
  22186. "void Config::LoadConfigInfo_ReLoad()",
  22187. "FALSE",
  22188. "[Config::LoadConfigInfo_ReLoad]: INI: read Economic::RateA failed!!");
  22189. this->m_ConfigInfo.m_fRateA = __strtod_internal(szText, 0, 0);
  22190. if ( IniFile::ReadInt(&ini, "Economic", "MinExchangeCodeLevel", &nValue) != 1 )
  22191. __assertex__(
  22192. "../../Server/Server/Base/Config.cpp",
  22193. 0x4ADu,
  22194. "void Config::LoadConfigInfo_ReLoad()",
  22195. "FALSE",
  22196. "[Config::MinExchangeCodeLevel]: INI: read Economic::MinExchangeCodeLevel failed!!");
  22197. this->m_ConfigInfo.m_uMinExchangeCodeLevel = nValue;
  22198. if ( IniFile::ReadInt(&ini, "Economic", "MaxExchangeCodeLevel", &nValue) != 1 )
  22199. __assertex__(
  22200. "../../Server/Server/Base/Config.cpp",
  22201. 0x4B6u,
  22202. "void Config::LoadConfigInfo_ReLoad()",
  22203. "FALSE",
  22204. "[Config::MaxExchangeCodeLevel]: INI: read Economic::MaxExchangeCodeLevel failed!!");
  22205. this->m_ConfigInfo.m_uMaxExchangeCodeLevel = nValue;
  22206. if ( IniFile::ReadText(&ini, "Economic", "RateB", szText, 32) != 1 )
  22207. __assertex__(
  22208. "../../Server/Server/Base/Config.cpp",
  22209. 0x4C0u,
  22210. "void Config::LoadConfigInfo_ReLoad()",
  22211. "FALSE",
  22212. "[Config::LoadConfigInfo_ReLoad]: INI: read Economic::RateB failed!!");
  22213. this->m_ConfigInfo.m_fRateB = __strtod_internal(szText, 0, 0);
  22214. if ( IniFile::ReadText(&ini, "Economic", "NewServerSaleRate", szText, 32) != 1 )
  22215. __assertex__(
  22216. "../../Server/Server/Base/Config.cpp",
  22217. 0x4C9u,
  22218. "void Config::LoadConfigInfo_ReLoad()",
  22219. "FALSE",
  22220. "[Config::LoadConfigInfo_ReLoad]: INI: read Economic::NewServerSaleRate failed!!");
  22221. this->m_ConfigInfo.m_fNewServerSaleRate = __strtod_internal(szText, 0, 0);
  22222. if ( IniFile::ReadInt(&ini, "Economic", "YuanBaoSceneID", &nValue) != 1 )
  22223. __assertex__(
  22224. "../../Server/Server/Base/Config.cpp",
  22225. 0x4D2u,
  22226. "void Config::LoadConfigInfo_ReLoad()",
  22227. "FALSE",
  22228. "[Config::LoadConfigInfo_ReLoad]: INI: read Economic::YuanBaoSceneID failed!!");
  22229. this->m_ConfigInfo.m_YuanBaoSceneID = nValue;
  22230. if ( IniFile::ReadInt(&ini, "Economic", "YuanBaoTicketMax", &nValue) != 1 )
  22231. __assertex__(
  22232. "../../Server/Server/Base/Config.cpp",
  22233. 0x4DBu,
  22234. "void Config::LoadConfigInfo_ReLoad()",
  22235. "FALSE",
  22236. "[Config::LoadConfigInfo_ReLoad]: INI: read Economic::YuanBaoTicketMax failed!!");
  22237. this->m_ConfigInfo.m_YuanBaoTicketMax = nValue;
  22238. if ( IniFile::ReadInt(&ini, "Global", "PrenticeProfferExp", &nValue) != 1 )
  22239. __assertex__(
  22240. "../../Server/Server/Base/Config.cpp",
  22241. 0x4E4u,
  22242. "void Config::LoadConfigInfo_ReLoad()",
  22243. "FALSE",
  22244. "[Config::LoadConfigInfo_ReLoad]: INI: read Global::Global failed!!");
  22245. this->m_ConfigInfo.m_nPrenticeProfferExp = nValue;
  22246. if ( IniFile::ReadText(&ini, "Exp", "ExpParam", szText, 32) != 1 )
  22247. __assertex__(
  22248. "../../Server/Server/Base/Config.cpp",
  22249. 0x4EDu,
  22250. "void Config::LoadConfigInfo_ReLoad()",
  22251. "FALSE",
  22252. "[Config::LoadConfigInfo_ReLoad]: INI: read Exp::ExpParam failed!!");
  22253. this->m_ConfigInfo.m_ExpParam = __strtod_internal(szText, 0, 0);
  22254. if ( IniFile::ReadText(&ini, "Exp", "ExpSpouseAddRate", szText, 32) != 1 )
  22255. __assertex__(
  22256. "../../Server/Server/Base/Config.cpp",
  22257. 0x4F6u,
  22258. "void Config::LoadConfigInfo_ReLoad()",
  22259. "FALSE",
  22260. "[Config::LoadConfigInfo_ReLoad]: INI: read Exp::ExpSpouseAddRate failed!!");
  22261. this->m_ConfigInfo.m_ExpSpouseAddRate = __strtod_internal(szText, 0, 0);
  22262. if ( IniFile::ReadText(&ini, "Exp", "ExpBrotherAddRate", szText, 32) != 1 )
  22263. __assertex__(
  22264. "../../Server/Server/Base/Config.cpp",
  22265. 0x4FFu,
  22266. "void Config::LoadConfigInfo_ReLoad()",
  22267. "FALSE",
  22268. "[Config::LoadConfigInfo_ReLoad]: INI: read Exp::ExpBrotherAddRate failed!!");
  22269. this->m_ConfigInfo.m_ExpBrotherAddRate = __strtod_internal(szText, 0, 0);
  22270. if ( IniFile::ReadText(&ini, "Exp", "ExpMasterInTeamAddRate", szText, 32) != 1 )
  22271. __assertex__(
  22272. "../../Server/Server/Base/Config.cpp",
  22273. 0x508u,
  22274. "void Config::LoadConfigInfo_ReLoad()",
  22275. "FALSE",
  22276. "[Config::LoadConfigInfo_ReLoad]: INI: read Exp::ExpMasterInTeamAddRate failed!!");
  22277. this->m_ConfigInfo.m_ExpMasterInTeamAddRate = __strtod_internal(szText, 0, 0);
  22278. if ( IniFile::ReadText(&ini, "Exp", "ExpMasterNotInTeamAddRate", szText, 32) != 1 )
  22279. __assertex__(
  22280. "../../Server/Server/Base/Config.cpp",
  22281. 0x511u,
  22282. "void Config::LoadConfigInfo_ReLoad()",
  22283. "FALSE",
  22284. "[Config::LoadConfigInfo_ReLoad]: INI: read Exp::ExpMasterNotInTeamAddRate failed!!");
  22285. this->m_ConfigInfo.m_ExpMasterNotInTeamAddRate = __strtod_internal(szText, 0, 0);
  22286. if ( IniFile::ReadText(&ini, "Exp", "ExpPrenticeAddRate", szText, 32) != 1 )
  22287. __assertex__(
  22288. "../../Server/Server/Base/Config.cpp",
  22289. 0x51Au,
  22290. "void Config::LoadConfigInfo_ReLoad()",
  22291. "FALSE",
  22292. "[Config::LoadConfigInfo_ReLoad]: INI: read Exp::ExpPrenticeAddRate failed!!");
  22293. this->m_ConfigInfo.m_ExpPrenticeAddRate = __strtod_internal(szText, 0, 0);
  22294. if ( IniFile::ReadText(&ini, "Exp", "ExpDarkAbsorbRate", szText, 32) == 1 )
  22295. {
  22296. if ( __strtod_internal(szText, 0, 0) > 0.5 || __strtod_internal(szText, 0, 0) < 0.000001 )
  22297. __assertex__(
  22298. "../../Server/Server/Base/Config.cpp",
  22299. 0x521u,
  22300. "void Config::LoadConfigInfo_ReLoad()",
  22301. "FALSE",
  22302. "[Config::LoadConfigInfo_ReLoad]: INI: read Exp::ExpDarkAbsorbRate failed!!");
  22303. this->m_ConfigInfo.m_ExpDarkAbsorbRate = __strtod_internal(szText, 0, 0);
  22304. }
  22305. if ( IniFile::ReadText(&ini, "Ability", "AssistantDemandFormulaParam0", szText, 32) != 1 )
  22306. __assertex__(
  22307. "../../Server/Server/Base/Config.cpp",
  22308. 0x52Fu,
  22309. "void Config::LoadConfigInfo_ReLoad()",
  22310. "FALSE",
  22311. "[Config::LoadConfigInfo_ReLoad]: INI: read Ability::AssistantDemandFormulaParam0 failed!!");
  22312. this->m_ConfigInfo.m_AssistantDemandFormulaParam0 = __strtod_internal(szText, 0, 0);
  22313. if ( IniFile::ReadText(&ini, "Ability", "AssistantDemandFormulaParam1", szText, 32) != 1 )
  22314. __assertex__(
  22315. "../../Server/Server/Base/Config.cpp",
  22316. 0x538u,
  22317. "void Config::LoadConfigInfo_ReLoad()",
  22318. "FALSE",
  22319. "[Config::LoadConfigInfo_ReLoad]: INI: read Ability::AssistantDemandFormulaParam1 failed!!");
  22320. this->m_ConfigInfo.m_AssistantDemandFormulaParam1 = __strtod_internal(szText, 0, 0);
  22321. if ( IniFile::ReadText(&ini, "Ability", "AssistantDemandFormulaParam2", szText, 32) != 1 )
  22322. __assertex__(
  22323. "../../Server/Server/Base/Config.cpp",
  22324. 0x541u,
  22325. "void Config::LoadConfigInfo_ReLoad()",
  22326. "FALSE",
  22327. "[Config::LoadConfigInfo_ReLoad]: INI: read Ability::AssistantDemandFormulaParam2 failed!!");
  22328. this->m_ConfigInfo.m_AssistantDemandFormulaParam2 = __strtod_internal(szText, 0, 0);
  22329. if ( IniFile::ReadText(&ini, "Ability", "AssistantDemandFormulaParam3", szText, 32) != 1 )
  22330. __assertex__(
  22331. "../../Server/Server/Base/Config.cpp",
  22332. 0x54Au,
  22333. "void Config::LoadConfigInfo_ReLoad()",
  22334. "FALSE",
  22335. "[Config::LoadConfigInfo_ReLoad]: INI: read Ability::AssistantDemandFormulaParam3 failed!!");
  22336. this->m_ConfigInfo.m_AssistantDemandFormulaParam3 = __strtod_internal(szText, 0, 0);
  22337. if ( !IniFile::ReadText(&ini, "Fatigue", "EnableFatigueState", szText, 32) )
  22338. __assertex__(
  22339. "../../Server/Server/Base/Config.cpp",
  22340. 0x554u,
  22341. "void Config::LoadConfigInfo_ReLoad()",
  22342. "FALSE",
  22343. "[Config::LoadConfigInfo_ReLoad]: INI: read Fatigue::EnableFatigueState failed!!");
  22344. this->m_ConfigInfo.m_EnableFatigueState = __strtol_internal(szText, 0, 10, 0);
  22345. if ( !IniFile::ReadText(&ini, "Fatigue", "LittleFatigueTime", szText, 32) )
  22346. __assertex__(
  22347. "../../Server/Server/Base/Config.cpp",
  22348. 0x55Du,
  22349. "void Config::LoadConfigInfo_ReLoad()",
  22350. "FALSE",
  22351. "[Config::LoadConfigInfo_ReLoad]: INI: read Fatigue::LittleFatigueTime failed!!");
  22352. this->m_ConfigInfo.m_LittleFatigueTime = __strtol_internal(szText, 0, 10, 0);
  22353. if ( !IniFile::ReadText(&ini, "Fatigue", "ExceedingFatigueTime", szText, 32) )
  22354. __assertex__(
  22355. "../../Server/Server/Base/Config.cpp",
  22356. 0x566u,
  22357. "void Config::LoadConfigInfo_ReLoad()",
  22358. "FALSE",
  22359. "[Config::LoadConfigInfo_ReLoad]: INI: read Fatigue::ExceedingFatigueTime failed!!");
  22360. this->m_ConfigInfo.m_ExceedingFatigueTime = __strtol_internal(szText, 0, 10, 0);
  22361. if ( !IniFile::ReadText(&ini, "Fatigue", "ResetFatigueStateOfflineTime", szText, 32) )
  22362. __assertex__(
  22363. "../../Server/Server/Base/Config.cpp",
  22364. 0x56Fu,
  22365. "void Config::LoadConfigInfo_ReLoad()",
  22366. "FALSE",
  22367. "[Config::LoadConfigInfo_ReLoad]: INI: read Fatigue::ResetFatigueStateOfflineTime failed!!");
  22368. v1 = __strtol_internal(szText, 0, 10, 0);
  22369. this->m_ConfigInfo.m_ResetFatigueStateOfflineTime = v1;
  22370. i = 0;
  22371. do
  22372. {
  22373. sprintf(buf, "XianYaMaxUser_%d", i, v1);
  22374. if ( !IniFile::ReadText(&ini, "Guild", buf, szText, 32) )
  22375. __assertex__(
  22376. "../../Server/Server/Base/Config.cpp",
  22377. 0x580u,
  22378. "void Config::LoadConfigInfo_ReLoad()",
  22379. "FALSE",
  22380. "[Config::LoadConfigInfo_ReLoad]: INI: read Guild::XianYaMaxUser failed!!");
  22381. v1 = __strtol_internal(szText, 0, 10, 0);
  22382. this->m_ConfigInfo.m_XianYaMaxUser[i] = v1;
  22383. if ( v1 > 0x6E )
  22384. __assertex__(
  22385. "../../Server/Server/Base/Config.cpp",
  22386. 0x57Cu,
  22387. "void Config::LoadConfigInfo_ReLoad()",
  22388. "FALSE",
  22389. "[Config::LoadConfigInfo_ReLoad]: INI: read Guild::XianYaMaxUser overflow!!");
  22390. ++i;
  22391. }
  22392. while ( i <= 4 );
  22393. i_0 = 0;
  22394. do
  22395. {
  22396. sprintf(buf, "XianYaMaxMoney_%d", i_0, v1);
  22397. if ( !IniFile::ReadText(&ini, "Guild", buf, szText, 32) )
  22398. __assertex__(
  22399. "../../Server/Server/Base/Config.cpp",
  22400. 0x58Fu,
  22401. "void Config::LoadConfigInfo_ReLoad()",
  22402. "FALSE",
  22403. "[Config::LoadConfigInfo_ReLoad]: INI: read Guild::XianYaMaxMoney failed!!");
  22404. v1 = __strtol_internal(szText, 0, 10, 0);
  22405. this->m_ConfigInfo.m_XianYaMaxMoney[i_0++] = v1;
  22406. }
  22407. while ( i_0 <= 4 );
  22408. i_1 = 0;
  22409. do
  22410. {
  22411. sprintf(buf, "XianYaStdMoney_%d", i_1, v1);
  22412. if ( !IniFile::ReadText(&ini, "Guild", buf, szText, 32) )
  22413. __assertex__(
  22414. "../../Server/Server/Base/Config.cpp",
  22415. 0x59Eu,
  22416. "void Config::LoadConfigInfo_ReLoad()",
  22417. "FALSE",
  22418. "[Config::LoadConfigInfo_ReLoad]: INI: read Guild::XianYaStdMoney failed!!");
  22419. v1 = __strtol_internal(szText, 0, 10, 0);
  22420. this->m_ConfigInfo.m_XianYaStdMoney[i_1++] = v1;
  22421. }
  22422. while ( i_1 <= 4 );
  22423. i_2 = 0;
  22424. do
  22425. {
  22426. sprintf(buf_0, "QianZhuangDeltaMoney_%d", i_2, v2);
  22427. if ( !IniFile::ReadText(&ini, "Guild", buf_0, szText, 32) )
  22428. __assertex__(
  22429. "../../Server/Server/Base/Config.cpp",
  22430. 0x5ADu,
  22431. "void Config::LoadConfigInfo_ReLoad()",
  22432. "FALSE",
  22433. "[Config::LoadConfigInfo_ReLoad]: INI: read Guild::QianZhuangDeltaMoney failed!!");
  22434. v3 = __strtol_internal(szText, 0, 10, 0);
  22435. v4 = i_2;
  22436. this->m_ConfigInfo.m_QianZhuangDeltaMoney[i_2++] = v3;
  22437. }
  22438. while ( i_2 <= 4 );
  22439. i_3 = 0;
  22440. do
  22441. {
  22442. sprintf(buf, "XianYaMaxTrader_%d", i_3, v4);
  22443. if ( !IniFile::ReadText(&ini, "Guild", buf, szText, 32) )
  22444. __assertex__(
  22445. "../../Server/Server/Base/Config.cpp",
  22446. 0x5BCu,
  22447. "void Config::LoadConfigInfo_ReLoad()",
  22448. "FALSE",
  22449. "[Config::LoadConfigInfo_ReLoad]: INI: read Guild::XianYaMaxTrader failed!!");
  22450. v5 = __strtol_internal(szText, 0, 10, 0);
  22451. v4 = i_3;
  22452. this->m_ConfigInfo.m_XianYaMaxTrader[i_3++] = v5;
  22453. }
  22454. while ( i_3 <= 4 );
  22455. i_4 = 0;
  22456. do
  22457. {
  22458. sprintf(buf, "XiangFangMaxUser_%d", i_4, v5);
  22459. if ( !IniFile::ReadText(&ini, "Guild", buf, szText, 32) )
  22460. __assertex__(
  22461. "../../Server/Server/Base/Config.cpp",
  22462. 0x5CEu,
  22463. "void Config::LoadConfigInfo_ReLoad()",
  22464. "FALSE",
  22465. "[Config::LoadConfigInfo_ReLoad]: INI: read Guild::XiangFangMaxUser failed!!");
  22466. v5 = __strtol_internal(szText, 0, 10, 0);
  22467. this->m_ConfigInfo.m_XiangFangMaxUser[i_4] = v5;
  22468. if ( v5 > 0x96 )
  22469. __assertex__(
  22470. "../../Server/Server/Base/Config.cpp",
  22471. 0x5CAu,
  22472. "void Config::LoadConfigInfo_ReLoad()",
  22473. "FALSE",
  22474. "[Config::LoadConfigInfo_ReLoad]: INI: read Guild::XianYaMaxUser overflow!!");
  22475. ++i_4;
  22476. }
  22477. while ( i_4 <= 4 );
  22478. if ( !IniFile::ReadText(&ini, "Guild", "CreateCityMoney", szText, 32) )
  22479. __assertex__(
  22480. "../../Server/Server/Base/Config.cpp",
  22481. 0x5D9u,
  22482. "void Config::LoadConfigInfo_ReLoad()",
  22483. "FALSE",
  22484. "[Config::LoadConfigInfo_ReLoad]: INI: read Guild::CreateCityMoney failed!!");
  22485. this->m_ConfigInfo.m_CreateCityMoney = __strtol_internal(szText, 0, 10, 0);
  22486. if ( !IniFile::ReadText(&ini, "Guild", "BattleTime", szText, 32) )
  22487. __assertex__(
  22488. "../../Server/Server/Base/Config.cpp",
  22489. 0x5E3u,
  22490. "void Config::LoadConfigInfo_ReLoad()",
  22491. "FALSE",
  22492. "[Config::LoadConfigInfo_ReLoad]: INI: read Guild::BattleTime failed!!");
  22493. this->m_ConfigInfo.m_uBattleTime = __strtol_internal(szText, 0, 10, 0);
  22494. if ( !IniFile::ReadText(&ini, "Guild", "LeftGuildBuffEnable", szText, 32) )
  22495. __assertex__(
  22496. "../../Server/Server/Base/Config.cpp",
  22497. 0x5EDu,
  22498. "void Config::LoadConfigInfo_ReLoad()",
  22499. "FALSE",
  22500. "[Config::LoadConfigInfo_ReLoad]: INI: read Guild::LeftGuildBuffEnable failed!!");
  22501. this->m_ConfigInfo.m_bLeftGuildBuffEnable = __strtol_internal(szText, 0, 10, 0);
  22502. if ( !IniFile::ReadText(&ini, "GuildLeague", "MaxGuildLeagueNum", szText, 32) )
  22503. __assertex__(
  22504. "../../Server/Server/Base/Config.cpp",
  22505. 0x5F7u,
  22506. "void Config::LoadConfigInfo_ReLoad()",
  22507. "FALSE",
  22508. "[Config::LoadConfigInfo_ReLoad]: INI: read GuildLeague::MaxGuildLeagueNum failed!!");
  22509. this->m_ConfigInfo.m_MaxGuildLeagueNum = __strtol_internal(szText, 0, 10, 0);
  22510. if ( !IniFile::ReadText(&ini, "GuildLeague", "TimeAfterQuitLeague", szText, 32) )
  22511. __assertex__(
  22512. "../../Server/Server/Base/Config.cpp",
  22513. 0x601u,
  22514. "void Config::LoadConfigInfo_ReLoad()",
  22515. "FALSE",
  22516. "[Config::LoadConfigInfo_ReLoad]: INI: read GuildLeague::TimeAfterQuitLeague failed!!");
  22517. this->m_ConfigInfo.m_TimeAfterQuitLeague = __strtol_internal(szText, 0, 10, 0);
  22518. if ( !IniFile::ReadText(&ini, "GuildLeague", "CreateLeagueMoney", szText, 32) )
  22519. __assertex__(
  22520. "../../Server/Server/Base/Config.cpp",
  22521. 0x60Bu,
  22522. "void Config::LoadConfigInfo_ReLoad()",
  22523. "FALSE",
  22524. "[Config::LoadConfigInfo_ReLoad]: INI: read GuildLeague::CreateLeagueMoney failed!!");
  22525. this->m_ConfigInfo.m_CreateLeagueMoney = __strtol_internal(szText, 0, 10, 0);
  22526. if ( IniFile::ReadText(&ini, "Guild", "LeaveWordCost", szText, 32) )
  22527. this->m_ConfigInfo.m_uLeaveWordCost = __strtol_internal(szText, 0, 10, 0);
  22528. if ( IniFile::ReadText(&ini, "Guild", "BoomMaxValue", szText, 32) )
  22529. this->m_ConfigInfo.m_nBoomMaxValue = __strtol_internal(szText, 0, 10, 0);
  22530. if ( IniFile::ReadText(&ini, "Guild", "BoomScaleAll", szText, 32) )
  22531. this->m_ConfigInfo.m_fBoomScaleAll = __strtod_internal(szText, 0, 0);
  22532. if ( IniFile::ReadText(&ini, "Guild", "BoomScaleOnLineCount", szText, 32) )
  22533. this->m_ConfigInfo.m_fBoomScaleOnLineCount = __strtod_internal(szText, 0, 0);
  22534. if ( IniFile::ReadText(&ini, "Guild", "BoomScaleAttrInc", szText, 32) )
  22535. this->m_ConfigInfo.m_fBoomScaleAttrInc = __strtod_internal(szText, 0, 0);
  22536. if ( IniFile::ReadText(&ini, "Guild", "BoomScaleComMisson", szText, 32) )
  22537. this->m_ConfigInfo.m_fBoomScaleComMisson = __strtod_internal(szText, 0, 0);
  22538. if ( IniFile::ReadText(&ini, "Guild", "BoomScaleAvgBoom", szText, 32) )
  22539. this->m_ConfigInfo.m_fBoomScaleAvgBoom = __strtod_internal(szText, 0, 0);
  22540. if ( IniFile::ReadText(&ini, "Guild", "BoomScaleAmb", szText, 32) )
  22541. this->m_ConfigInfo.m_fBoomScaleAmb = __strtod_internal(szText, 0, 0);
  22542. if ( IniFile::ReadText(&ini, "Guild", "BoomScaleArg", szText, 32) )
  22543. this->m_ConfigInfo.m_fBoomScaleArg = __strtod_internal(szText, 0, 0);
  22544. if ( IniFile::ReadText(&ini, "Guild", "BoomScaleCom", szText, 32) )
  22545. this->m_ConfigInfo.m_fBoomScaleCom = __strtod_internal(szText, 0, 0);
  22546. if ( IniFile::ReadText(&ini, "Guild", "BoomScaleDef", szText, 32) )
  22547. this->m_ConfigInfo.m_fBoomScaleDef = __strtod_internal(szText, 0, 0);
  22548. if ( IniFile::ReadText(&ini, "Guild", "BoomScaleInd", szText, 32) )
  22549. this->m_ConfigInfo.m_fBoomScaleInd = __strtod_internal(szText, 0, 0);
  22550. if ( IniFile::ReadText(&ini, "Guild", "BoomScaleTec", szText, 32) )
  22551. this->m_ConfigInfo.m_fBoomScaleTec = __strtod_internal(szText, 0, 0);
  22552. if ( IniFile::ReadText(&ini, "Guild", "TicketDecValue", szText, 32) )
  22553. this->m_ConfigInfo.m_uTicketDecValue = (signed __int64)__strtod_internal(szText, 0, 0);
  22554. if ( IniFile::ReadText(&ini, "Guild", "GuildComMissonWaiGua", szText, 32) )
  22555. this->m_ConfigInfo.m_GuildComMissonWaiGua = __strtol_internal(szText, 0, 10, 0);
  22556. if ( IniFile::ReadText(&ini, "Guild", "ValidateXianYaLevel", szText, 32) )
  22557. this->m_ConfigInfo.m_ValidateXianYaLevel = __strtol_internal(szText, 0, 10, 0);
  22558. if ( IniFile::ReadText(&ini, "YuanBao", "MaxDayCostYuanBao", szText, 32) )
  22559. {
  22560. v9 = __strtol_internal(szText, 0, 10, 0);
  22561. if ( v9 <= 0xFFFFFF )
  22562. this->m_ConfigInfo.m_uMaxDayCostYuanBao = v9;
  22563. else
  22564. this->m_ConfigInfo.m_uMaxDayCostYuanBao = 0xFFFFFF;
  22565. }
  22566. if ( IniFile::ReadText(&ini, "EnableYuanBaoPiao", "IsEnableYuanBaoPiao", szText, 32) )
  22567. this->m_ConfigInfo.m_IsEnableYuanBaoPiao = __strtol_internal(szText, 0, 10, 0);
  22568. if ( !IniFile::ReadInt(&ini, "MonsterIncome", "LittleIncomeMonsterCount", &nValue) )
  22569. __assertex__(
  22570. "../../Server/Server/Base/Config.cpp",
  22571. 0x678u,
  22572. "void Config::LoadConfigInfo_ReLoad()",
  22573. "FALSE",
  22574. "[Config::LoadConfigInfo_ReLoad]: INI: read MonsterIncome::LittleIncomeMonsterCount failed!!");
  22575. this->m_ConfigInfo.m_uLittleIncomeMonsterCount = nValue;
  22576. if ( !IniFile::ReadInt(&ini, "MonsterIncome", "NilIncomeMonsterCount", &nValue) )
  22577. __assertex__(
  22578. "../../Server/Server/Base/Config.cpp",
  22579. 0x681u,
  22580. "void Config::LoadConfigInfo_ReLoad()",
  22581. "FALSE",
  22582. "[Config::LoadConfigInfo_ReLoad]: INI: read MonsterIncome::NilIncomeMonsterCount failed!!");
  22583. this->m_ConfigInfo.m_uNilIncomeMonsterCount = nValue;
  22584. if ( !IniFile::ReadFloat(&ini, "MonsterIncome", "LittleIncomePercent", &fValue) )
  22585. __assertex__(
  22586. "../../Server/Server/Base/Config.cpp",
  22587. 0x68Au,
  22588. "void Config::LoadConfigInfo_ReLoad()",
  22589. "FALSE",
  22590. "[Config::LoadConfigInfo_ReLoad]: INI: read MonsterIncome::LittleIncomePercent failed!!");
  22591. this->m_ConfigInfo.m_fLittleIncomePercent = fValue;
  22592. if ( IniFile::ReadText(&ini, "CommisionShop", "SendBackTime", szText, 32) )
  22593. this->m_ConfigInfo.m_uSendBackTime = 60 * __strtol_internal(szText, 0, 10, 0);
  22594. if ( IniFile::ReadText(&ini, "CommisionShop", "YuanbaoFee", szText, 32) )
  22595. this->m_ConfigInfo.m_nYuanbaoFee = __strtol_internal(szText, 0, 10, 0);
  22596. if ( IniFile::ReadText(&ini, "CommisionShop", "GoldCoinFee", szText, 32) )
  22597. this->m_ConfigInfo.m_nGoldCoinFee = __strtol_internal(szText, 0, 10, 0);
  22598. this->m_ConfigInfo.m_IsCloseYuanBaoSell = IniFile::ReadText(&ini, "CommisionShop", "IsCloseYuanBaoSell", szText, 32)
  22599. && __strtol_internal(szText, 0, 10, 0);
  22600. this->m_ConfigInfo.m_IsCloseGoldCoinSell = IniFile::ReadText(&ini, "CommisionShop", "IsCloseGoldCoinSell", szText, 32)
  22601. && __strtol_internal(szText, 0, 10, 0);
  22602. i_5 = 0;
  22603. do
  22604. {
  22605. memset(szValueText, 0, 0x104u);
  22606. snprintf(szValueText, 0x104u, "Value%d", i_5);
  22607. if ( !IniFile::ReadText(&ini, "CommisionShop", szValueText, szText, 32) )
  22608. __assertex__(
  22609. "../../Server/Server/Base/Config.cpp",
  22610. 0x6B9u,
  22611. "void Config::LoadConfigInfo_ReLoad()",
  22612. "FALSE",
  22613. "[Config::LoadConfigInfo_ReLoad]: INI: read CommisionShop::Value failed!!");
  22614. this->m_ConfigInfo.m_anCSIValue[i_5++] = __strtol_internal(szText, 0, 10, 0);
  22615. }
  22616. while ( i_5 <= 5 );
  22617. if ( IniFile::ReadInt(&ini, "Human", "WarnningPer10M", &nValue) )
  22618. this->m_ConfigInfo.m_WarnningPer10M = nValue;
  22619. if ( IniFile::ReadInt(&ini, "Human", "WarnningPerHour", &nValue) )
  22620. this->m_ConfigInfo.m_WarnningPerHour = nValue;
  22621. if ( IniFile::ReadInt(&ini, "Human", "FreezePer10M", &nValue) )
  22622. this->m_ConfigInfo.m_FreezePer10M = nValue;
  22623. if ( IniFile::ReadInt(&ini, "Human", "FreezePerHour", &nValue) )
  22624. this->m_ConfigInfo.m_FreezePerHour = nValue;
  22625. if ( IniFile::ReadInt(&ini, "Human", "LevelUpValidateMinLv", &nValue) )
  22626. this->m_ConfigInfo.m_LevelUpValidateMinLv = nValue;
  22627. if ( IniFile::ReadInt(&ini, "Human", "LevelUpValidateMaxLv", &nValue) )
  22628. this->m_ConfigInfo.m_LevelUpValidateMaxLv = nValue;
  22629. if ( IniFile::ReadInt(&ini, "Human", "LevelMinGetPiao", &nValue) )
  22630. this->m_ConfigInfo.m_LevelMinGetPiao = nValue;
  22631. DiskLog("./Log/Config", "Load ConfigInfo.ini ...ReLoad OK! ");
  22632. v8 = __OFSUB__(this->m_ConfigInfo.m_PetMaxDefaultLevel, 255);
  22633. v6 = this->m_ConfigInfo.m_PetMaxDefaultLevel == 255;
  22634. v7 = this->m_ConfigInfo.m_PetMaxDefaultLevel - 255 < 0;
  22635. this->m_ConfigInfo.m_PetTableMaxDefaultLevel = 255;
  22636. this->m_ConfigInfo.m_XinfaTableMaxDefaultLevel = 255;
  22637. this->m_ConfigInfo.m_HumanTableMaxDefualtLevel = 255;
  22638. this->m_ConfigInfo.m_MonsterTableMaxDefaultLevel = 200;
  22639. this->m_ConfigInfo.m_MaxLevelGAP = 200;
  22640. if ( !((unsigned __int8)(v7 ^ v8) | v6) )
  22641. __assertex__(
  22642. "../../Server/Server/Base/Config.cpp",
  22643. 0x6FFu,
  22644. "void Config::LoadConfigInfo_ReLoad()",
  22645. "m_ConfigInfo.m_PetMaxDefaultLevel <= m_ConfigInfo.m_PetTableMaxDefaultLevel",
  22646. "m_ConfigInfo.m_PetMaxDefaultLevel <= m_ConfigInfo.m_PetTableMaxDefaultLevel");
  22647. if ( this->m_ConfigInfo.m_HumanMaxDefualtLevel > 255 )
  22648. __assertex__(
  22649. "../../Server/Server/Base/Config.cpp",
  22650. 0x700u,
  22651. "void Config::LoadConfigInfo_ReLoad()",
  22652. "m_ConfigInfo.m_HumanMaxDefualtLevel <= m_ConfigInfo.m_HumanTableMaxDefualtLevel",
  22653. "m_ConfigInfo.m_HumanMaxDefualtLevel <= m_ConfigInfo.m_HumanTableMaxDefualtLevel");
  22654. if ( this->m_ConfigInfo.m_MonsterMaxDefaultLevel > this->m_ConfigInfo.m_MonsterTableMaxDefaultLevel )
  22655. __assertex__(
  22656. "../../Server/Server/Base/Config.cpp",
  22657. 0x701u,
  22658. "void Config::LoadConfigInfo_ReLoad()",
  22659. "m_ConfigInfo.m_MonsterMaxDefaultLevel <= m_ConfigInfo.m_MonsterTableMaxDefaultLevel",
  22660. "m_ConfigInfo.m_MonsterMaxDefaultLevel <= m_ConfigInfo.m_MonsterTableMaxDefaultLevel");
  22661. if ( this->m_ConfigInfo.m_XinfaMaxDefaultLevel > this->m_ConfigInfo.m_XinfaTableMaxDefaultLevel )
  22662. __assertex__(
  22663. "../../Server/Server/Base/Config.cpp",
  22664. 0x702u,
  22665. "void Config::LoadConfigInfo_ReLoad()",
  22666. "m_ConfigInfo.m_XinfaMaxDefaultLevel <= m_ConfigInfo.m_XinfaTableMaxDefaultLevel",
  22667. "m_ConfigInfo.m_XinfaMaxDefaultLevel <= m_ConfigInfo.m_XinfaTableMaxDefaultLevel");
  22668. this->m_ConfigInfo.m_ExpTblItemCount = 2 * this->m_ConfigInfo.m_MonsterTableMaxDefaultLevel + 1;
  22669. IniFile::~IniFile(&ini);
  22670. }
  22671.  
  22672. //----- (08056998) --------------------------------------------------------
  22673. void __cdecl Config::LoadConfigInfo(Config *const this)
  22674. {
  22675. Config::LoadConfigInfo_Only(this);
  22676. Config::LoadConfigInfo_ReLoad(this);
  22677. }
  22678.  
  22679. //----- (080569FC) --------------------------------------------------------
  22680. void __cdecl Config::ReLoad(Config *a2)
  22681. {
  22682. Config::LoadConfigInfo_ReLoad(a2);
  22683. Config::LoadLoginInfo_Reload(a2);
  22684. Config::LoadWorldInfo_ReLoad(a2);
  22685. Config::LoadBillingInfo_ReLoad(a2);
  22686. Config::LoadMachineInfo_ReLoad(a2);
  22687. Config::LoadServerInfo_ReLoad(a2);
  22688. Config::LoadSceneInfo_ReLoad(a2);
  22689. }
  22690.  
  22691. //----- (08056A44) --------------------------------------------------------
  22692. void __cdecl Config::LoadLoginInfo_Only(Config *const this)
  22693. {
  22694. INT nValue; // [esp+14h] [ebp-94Ch]
  22695. IniFile ini; // [esp+18h] [ebp-948h]
  22696.  
  22697. IniFile::IniFile((const CHAR *)&ini, "./Config/LoginInfo.ini");
  22698. nValue = 0;
  22699. if ( IniFile::ReadInt(&ini, "System", "LoginID", &nValue) != 1 )
  22700. __assertex__(
  22701. "../../Server/Server/Base/Config.cpp",
  22702. 0x71Fu,
  22703. "void Config::LoadLoginInfo_Only()",
  22704. "FALSE",
  22705. "[Config::LoadLoginInfo_Only]: INI: read System::LoginID failed!!");
  22706. this->m_LoginInfo.m_LoginID = nValue;
  22707. if ( !IniFile::ReadText(&ini, "System", "DBIP", this->m_LoginInfo.m_DBIP, 24) )
  22708. __assertex__(
  22709. "../../Server/Server/Base/Config.cpp",
  22710. 0x724u,
  22711. "void Config::LoadLoginInfo_Only()",
  22712. "FALSE",
  22713. "[Config::LoadLoginInfo_Only]: INI: read System::DBIP failed!!");
  22714. if ( IniFile::ReadInt(&ini, "System", "DBPort", &nValue) != 1 )
  22715. __assertex__(
  22716. "../../Server/Server/Base/Config.cpp",
  22717. 0x72Cu,
  22718. "void Config::LoadLoginInfo_Only()",
  22719. "FALSE",
  22720. "[Config::LoadLoginInfo_Only]: INI: read System::DBPort failed!!");
  22721. this->m_LoginInfo.m_DBPort = nValue;
  22722. if ( !IniFile::ReadText(&ini, "System", "DBName", this->m_LoginInfo.m_DBName, 128) )
  22723. __assertex__(
  22724. "../../Server/Server/Base/Config.cpp",
  22725. 0x730u,
  22726. "void Config::LoadLoginInfo_Only()",
  22727. "FALSE",
  22728. "[Config::LoadLoginInfo_Only]: INI: read System::DBName failed!!");
  22729. if ( !IniFile::ReadText(&ini, "System", "DBUser", this->m_LoginInfo.m_DBUser, 32) )
  22730. __assertex__(
  22731. "../../Server/Server/Base/Config.cpp",
  22732. 0x734u,
  22733. "void Config::LoadLoginInfo_Only()",
  22734. "FALSE",
  22735. "[Config::LoadLoginInfo_Only]: INI: read System::DBUser failed!!");
  22736. if ( !IniFile::ReadText(&ini, "System", "DBPassword", this->m_LoginInfo.m_DBPassword, 256) )
  22737. __assertex__(
  22738. "../../Server/Server/Base/Config.cpp",
  22739. 0x738u,
  22740. "void Config::LoadLoginInfo_Only()",
  22741. "FALSE",
  22742. "[Config::LoadLoginInfo_Only]: INI: read System::DBPassword failed!!");
  22743. if ( IniFile::ReadInt(&ini, "System", "CryptPwd", &nValue) != 1 )
  22744. __assertex__(
  22745. "../../Server/Server/Base/Config.cpp",
  22746. 0x740u,
  22747. "void Config::LoadLoginInfo_Only()",
  22748. "FALSE",
  22749. "[Config::LoadLoginInfo_Only]: INI: read System::CryptPwd failed!!");
  22750. this->m_LoginInfo.CryptPwd = nValue;
  22751. if ( IniFile::ReadInt(&ini, "System", "ProxyConnect", &nValue) != 1 )
  22752. __assertex__(
  22753. "../../Server/Server/Base/Config.cpp",
  22754. 0x748u,
  22755. "void Config::LoadLoginInfo_Only()",
  22756. "FALSE",
  22757. "[Config::LoadLoginInfo_Only]: INI: read System::ProxyConnect failed!!");
  22758. this->m_LoginInfo.ProxyConnect = nValue;
  22759. if ( IniFile::ReadInt(&ini, "System", "EnableLicense", &nValue) == 1 )
  22760. this->m_LoginInfo.EnableLicense = nValue;
  22761. else
  22762. this->m_LoginInfo.EnableLicense = 0;
  22763. if ( IniFile::ReadInt(&ini, "System", "ReLoginLimit", &nValue) == 1 )
  22764. this->m_LoginInfo.ReLoginLimit = nValue;
  22765. else
  22766. this->m_LoginInfo.ReLoginLimit = 1;
  22767. if ( IniFile::ReadInt(&ini, "System", "ReLoginStop", &nValue) == 1 )
  22768. this->m_LoginInfo.ReLoginStop = nValue;
  22769. else
  22770. this->m_LoginInfo.ReLoginStop = 1;
  22771. if ( IniFile::ReadInt(&ini, "System", "ReLoginStopTime", &nValue) == 1 )
  22772. this->m_LoginInfo.ReLoginStopTime = nValue;
  22773. else
  22774. this->m_LoginInfo.ReLoginStopTime = 600000;
  22775. if ( IniFile::ReadInt(&ini, "System", "NotifySafeSign", &nValue) == 1 )
  22776. this->m_LoginInfo.NotifySafeSign = nValue;
  22777. else
  22778. this->m_LoginInfo.NotifySafeSign = 1;
  22779. DiskLog("./Log/Config", "Load LoginInfo.ini ...Only OK! ");
  22780. IniFile::~IniFile(&ini);
  22781. }
  22782.  
  22783. //----- (08056E74) --------------------------------------------------------
  22784. void __cdecl Config::LoadLoginInfo(Config *const this)
  22785. {
  22786. Config::LoadLoginInfo_Only(this);
  22787. Config::LoadLoginInfo_Reload(this);
  22788. }
  22789.  
  22790. //----- (08056EDC) --------------------------------------------------------
  22791. void __cdecl Config::LoadWorldInfo_Only(Config *const this)
  22792. {
  22793. INT nValue; // [esp+14h] [ebp-94Ch]
  22794. IniFile ini; // [esp+18h] [ebp-948h]
  22795.  
  22796. IniFile::IniFile((const CHAR *)&ini, "./Config/WorldInfo.ini");
  22797. nValue = 0;
  22798. if ( IniFile::ReadInt(&ini, "System", "ZoneID", &nValue) == 1 )
  22799. this->m_WorldInfo.m_ZoneID = nValue;
  22800. else
  22801. this->m_WorldInfo.m_ZoneID = 0;
  22802. if ( IniFile::ReadInt(&ini, "System", "WorldID", &nValue) != 1 )
  22803. __assertex__(
  22804. "../../Server/Server/Base/Config.cpp",
  22805. 0x7ABu,
  22806. "void Config::LoadWorldInfo_Only()",
  22807. "FALSE",
  22808. "[Config::LoadWorldInfo_Only]: INI: read System::WorldID failed!!");
  22809. this->m_WorldInfo.m_WorldID = nValue;
  22810. if ( IniFile::ReadInt(&ini, "System", "GuildSMKey", &nValue) != 1 )
  22811. __assertex__(
  22812. "../../Server/Server/Base/Config.cpp",
  22813. 0x7B3u,
  22814. "void Config::LoadWorldInfo_Only()",
  22815. "FALSE",
  22816. "[Config::LoadWorldInfo_Only]: INI: read System::GuildSMKey failed!!");
  22817. this->m_WorldInfo.m_GuildKey = nValue;
  22818. if ( IniFile::ReadInt(&ini, "System", "MailSMKey", &nValue) != 1 )
  22819. __assertex__(
  22820. "../../Server/Server/Base/Config.cpp",
  22821. 0x7BBu,
  22822. "void Config::LoadWorldInfo_Only()",
  22823. "FALSE",
  22824. "[Config::LoadWorldInfo_Only]: INI: read System::MailSMKey failed!!");
  22825. this->m_WorldInfo.m_MailKey = nValue;
  22826. if ( IniFile::ReadInt(&ini, "System", "PetSMKey", &nValue) != 1 )
  22827. __assertex__(
  22828. "../../Server/Server/Base/Config.cpp",
  22829. 0x7C3u,
  22830. "void Config::LoadWorldInfo_Only()",
  22831. "FALSE",
  22832. "[Config::LoadWorldInfo_Only]: INI: read System::PetSMKey failed!!");
  22833. this->m_WorldInfo.m_PetCreateKey = nValue;
  22834. if ( IniFile::ReadInt(&ini, "System", "CitySMKey", &nValue) != 1 )
  22835. __assertex__(
  22836. "../../Server/Server/Base/Config.cpp",
  22837. 0x7CCu,
  22838. "void Config::LoadWorldInfo_Only()",
  22839. "FALSE",
  22840. "[Config::LoadWorldInfo_Only]: INI: read System::CitySMKey failed!!");
  22841. this->m_WorldInfo.m_CityKey = nValue;
  22842. if ( IniFile::ReadInt(&ini, "System", "GlobalDataSMKey", &nValue) != 1 )
  22843. __assertex__(
  22844. "../../Server/Server/Base/Config.cpp",
  22845. 0x7D5u,
  22846. "void Config::LoadWorldInfo_Only()",
  22847. "FALSE",
  22848. "[Config::LoadWorldInfo_Only]: INI: read System::GlobalDataSMKey failed!!");
  22849. this->m_WorldInfo.m_GlobalDataKey = nValue;
  22850. if ( IniFile::ReadInt(&ini, "System", "LeagueSMKey", &nValue) != 1 )
  22851. __assertex__(
  22852. "../../Server/Server/Base/Config.cpp",
  22853. 0x7DEu,
  22854. "void Config::LoadWorldInfo_Only()",
  22855. "FALSE",
  22856. "[Config::LoadWorldInfo_Only]: INI: read System::LeagueSMKey failed!!");
  22857. this->m_WorldInfo.m_LeagueKey = nValue;
  22858. if ( IniFile::ReadInt(&ini, "System", "FindFriendADKey", &nValue) != 1 )
  22859. __assertex__(
  22860. "../../Server/Server/Base/Config.cpp",
  22861. 0x7E7u,
  22862. "void Config::LoadWorldInfo_Only()",
  22863. "FALSE",
  22864. "[Config::LoadWorldInfo_Only]: INI: read System::FindFriendADKey failed!!");
  22865. this->m_WorldInfo.m_FindFriendADKey = nValue;
  22866. if ( IniFile::ReadInt(&ini, "System", "EnableShareMem", &nValue) != 1 )
  22867. __assertex__(
  22868. "../../Server/Server/Base/Config.cpp",
  22869. 0x7F0u,
  22870. "void Config::LoadWorldInfo_Only()",
  22871. "FALSE",
  22872. "[Config::LoadWorldInfo_Only]: INI: read System::EnableShareMem failed!!");
  22873. this->m_WorldInfo.m_EnableShareMem = nValue;
  22874. g_CurWorld = this->m_WorldInfo.m_WorldID;
  22875. DiskLog("./Log/Config", "Load WorldInfo.ini ...Only OK! ");
  22876. IniFile::~IniFile(&ini);
  22877. }
  22878.  
  22879. //----- (080572A4) --------------------------------------------------------
  22880. void __cdecl Config::LoadWorldInfo(Config *const this)
  22881. {
  22882. Config::LoadWorldInfo_Only(this);
  22883. Config::LoadWorldInfo_ReLoad(this);
  22884. }
  22885.  
  22886. //----- (0805730C) --------------------------------------------------------
  22887. void __cdecl Config::LoadBillingInfo_Only(Config *const this)
  22888. {
  22889. _BILLING_DATA **v1; // ecx
  22890. INT v2; // eax
  22891. INT v3; // edi
  22892. _BILLING_DATA *v4; // edx
  22893. INT v5; // edi
  22894. bool v6; // zf
  22895. bool v7; // sf
  22896. _BILLING_DATA **v8; // eax
  22897. _BILLING_DATA **v9; // ebx
  22898. _BILLING_DATA *v10; // edx
  22899. _BILLING_DATA *v11; // eax
  22900. unsigned __int8 v12; // of
  22901. INT v13; // eax
  22902. _BILLING_DATA *v14; // edi
  22903. int v15; // eax
  22904. INT i_0; // [esp+Ch] [ebp-A94h]
  22905. INT i; // [esp+10h] [ebp-A90h]
  22906. INT nValue; // [esp+14h] [ebp-A8Ch]
  22907. CHAR msg[256]; // [esp+18h] [ebp-A88h]
  22908. CHAR szKey[64]; // [esp+118h] [ebp-988h]
  22909. IniFile ini; // [esp+158h] [ebp-948h]
  22910.  
  22911. IniFile::IniFile((const CHAR *)&ini, "./Config/ServerInfo.ini");
  22912. nValue = 0;
  22913. if ( !IniFile::ReadInt(&ini, "Billing", "Number", &nValue) )
  22914. __assertex__(
  22915. "../../Server/Server/Base/Config.cpp",
  22916. 0x81Au,
  22917. "void Config::LoadBillingInfo_Only()",
  22918. "FALSE",
  22919. "[Config::LoadBillingInfo_Only]: INI: read Billing::Number failed!!");
  22920. v1 = this->m_BillingInfo.m_pInfo;
  22921. if ( v1 )
  22922. {
  22923. v2 = this->m_BillingInfo.m_nNumber;
  22924. if ( v2 > 0 )
  22925. {
  22926. v3 = 0;
  22927. do
  22928. {
  22929. v4 = v1[v3];
  22930. if ( v4 )
  22931. {
  22932. (*((void (__cdecl **)(_BILLING_DATA *))v4->_vptr__BILLING_DATA + 1))(v1[v3]);
  22933. v1 = this->m_BillingInfo.m_pInfo;
  22934. v2 = this->m_BillingInfo.m_nNumber;
  22935. v1[v3] = 0;
  22936. }
  22937. ++v3;
  22938. }
  22939. while ( v2 > v3 );
  22940. if ( v1 )
  22941. operator delete[](v1);
  22942. this->m_BillingInfo.m_pInfo = 0;
  22943. }
  22944. }
  22945. v5 = nValue;
  22946. v6 = nValue == 0;
  22947. v7 = nValue < 0;
  22948. this->m_BillingInfo.m_nNumber = 0;
  22949. this->m_BillingInfo.m_nCur = 0;
  22950. this->m_BillingInfo.m_bUse = 0;
  22951. if ( v7 || v6 )
  22952. __assert__("../../Server/Server/Base/Config.h", 0x248u, "BOOL _BILLING_INFO::Init(INT)", "nNumber > 0");
  22953. this->m_BillingInfo.m_nNumber = v5;
  22954. v8 = (_BILLING_DATA **)operator new[](4 * v5);
  22955. this->m_BillingInfo.m_pInfo = v8;
  22956. if ( !v8 )
  22957. __assert__("../../Server/Server/Base/Config.h", 0x24Cu, "BOOL _BILLING_INFO::Init(INT)", "m_pInfo");
  22958. i = 0;
  22959. if ( this->m_BillingInfo.m_nNumber > 0 )
  22960. {
  22961. v9 = this->m_BillingInfo.m_pInfo;
  22962. do
  22963. {
  22964. v10 = (_BILLING_DATA *)operator new(0x24u);
  22965. v10->_vptr__BILLING_DATA = (int (**)(...))off_80BD1A8;
  22966. memset(v10->m_IP, 0, sizeof(v10->m_IP));
  22967. v9[i] = v10;
  22968. v9 = this->m_BillingInfo.m_pInfo;
  22969. v11 = v9[i];
  22970. v10->m_Port = 0;
  22971. v10->m_ContainerPos = -1;
  22972. if ( !v11 )
  22973. __assert__("../../Server/Server/Base/Config.h", 0x251u, "BOOL _BILLING_INFO::Init(INT)", "m_pInfo[i]");
  22974. v9[i]->m_ContainerPos = i;
  22975. v12 = __OFSUB__(this->m_BillingInfo.m_nNumber, i + 1);
  22976. v6 = this->m_BillingInfo.m_nNumber == i + 1;
  22977. v7 = this->m_BillingInfo.m_nNumber - (i++ + 1) < 0;
  22978. }
  22979. while ( !((unsigned __int8)(v7 ^ v12) | v6) );
  22980. }
  22981. for ( i_0 = 0; this->m_BillingInfo.m_nNumber > i_0; ++i_0 )
  22982. {
  22983. memset(szKey, 0, sizeof(szKey));
  22984. memset(msg, 0, 0x100u);
  22985. v13 = this->m_BillingInfo.m_nCur;
  22986. v14 = this->m_BillingInfo.m_pInfo[v13];
  22987. v15 = v13 + 1;
  22988. if ( v15 >= this->m_BillingInfo.m_nNumber )
  22989. v15 = 0;
  22990. this->m_BillingInfo.m_nCur = v15;
  22991. snprintf(szKey, 0x40u, "IP%d", i_0);
  22992. if ( !IniFile::ReadText(&ini, "Billing", szKey, v14->m_IP, 24) )
  22993. {
  22994. snprintf(msg, 0x100u, "[Config::LoadBillingInfo_Only]: INI: read Billing::%s failed!!", szKey);
  22995. __assertex__("../../Server/Server/Base/Config.cpp", 0x82Bu, "void Config::LoadBillingInfo_Only()", "FALSE", msg);
  22996. }
  22997. snprintf(szKey, 0x40u, "Port%d", i_0);
  22998. if ( IniFile::ReadInt(&ini, "Billing", szKey, &nValue) != 1 )
  22999. {
  23000. snprintf(msg, 0x100u, "[Config::LoadBillingInfo_Only]: INI: read Billing::%s failed!!", szKey);
  23001. __assertex__("../../Server/Server/Base/Config.cpp", 0x835u, "void Config::LoadBillingInfo_Only()", "FALSE", msg);
  23002. }
  23003. v14->m_Port = nValue;
  23004. }
  23005. this->m_BillingInfo.m_nCur = 0;
  23006. this->m_BillingInfo.m_bUse = 1;
  23007. DiskLog("./Log/Config", "Load BillingInfo.ini ...Only OK! ");
  23008. IniFile::~IniFile(&ini);
  23009. }
  23010. // 80BD1A8: using guessed type _DWORD (__cdecl *off_80BD1A8[2])(_BILLING_DATA *this);
  23011.  
  23012. //----- (08057708) --------------------------------------------------------
  23013. void __cdecl Config::LoadBillingInfo(Config *const this)
  23014. {
  23015. Config::LoadBillingInfo_Only(this);
  23016. Config::LoadBillingInfo_ReLoad(this);
  23017. }
  23018.  
  23019. //----- (08057770) --------------------------------------------------------
  23020. void __cdecl Config::LoadShareMemInfo_Only(Config *const this)
  23021. {
  23022. UINT v1; // ebx
  23023. _SHAREMEM_DATA *v2; // eax
  23024. _SHAREMEM_DATA *v3; // ecx
  23025. _SHAREMEM_DATA *v4; // edx
  23026. int v5; // eax
  23027. bool v6; // cf
  23028. bool v7; // zf
  23029. UINT v8; // eax
  23030. UINT v9; // ebx
  23031. INT nValue; // [esp+14h] [ebp-F4Ch]
  23032. CHAR szTypeID[256]; // [esp+18h] [ebp-F48h]
  23033. CHAR szKeyID[256]; // [esp+118h] [ebp-E48h]
  23034. CHAR szLog[1024]; // [esp+218h] [ebp-D48h]
  23035. IniFile ini; // [esp+618h] [ebp-948h]
  23036.  
  23037. IniFile::IniFile((const CHAR *)&ini, "./Config/ShareMemInfo.ini");
  23038. nValue = 0;
  23039. if ( IniFile::ReadInt(&ini, "ShareMem", "KeyCount", &nValue) != 1 )
  23040. __assertex__(
  23041. "../../Server/Server/Base/Config.cpp",
  23042. 0x865u,
  23043. "void Config::LoadShareMemInfo_Only()",
  23044. "FALSE",
  23045. "[Config::LoadShareMemInfo_Only]: INI: read ShareMem::KeyCount failed!!");
  23046. v6 = (unsigned int)nValue < 0xB;
  23047. v7 = nValue == 11;
  23048. this->m_ShareMemInfo.m_SMUObjCount = nValue;
  23049. if ( !v6 && !v7 )
  23050. __assert__(
  23051. "../../Server/Server/Base/Config.cpp",
  23052. 0x861u,
  23053. "void Config::LoadShareMemInfo_Only()",
  23054. "m_ShareMemInfo.m_SMUObjCount<=MAX_SM_OBJ_NUM");
  23055. v1 = this->m_ShareMemInfo.m_SMUObjCount;
  23056. if ( !v1 )
  23057. __assertex__(
  23058. "../../Server/Server/Base/Config.cpp",
  23059. 0x86Eu,
  23060. "void Config::LoadShareMemInfo_Only()",
  23061. "FALSE",
  23062. "[Config::LoadShareMemInfo_Only]: 0 >= m_ShareMemInfo.m_SMUObjCount..");
  23063. v2 = (_SHAREMEM_DATA *)operator new[](8 * v1);
  23064. v3 = v2;
  23065. v4 = v2;
  23066. v5 = v1 - 1;
  23067. while ( v5 != -1 )
  23068. {
  23069. v4->m_Key = 0;
  23070. v4->m_Type = -1;
  23071. --v5;
  23072. ++v4;
  23073. }
  23074. this->m_ShareMemInfo.m_pShareData = v3;
  23075. if ( !v3 )
  23076. {
  23077. *(_DWORD *)&szTypeID[12] = this->m_ShareMemInfo.m_SMUObjCount;
  23078. snprintf(
  23079. szLog,
  23080. 0x400u,
  23081. "[Config::LoadShareMemInfo_Only]: alloc memory for _SHAREMEM_DATA[%d] failed!!",
  23082. *(_DWORD *)&szTypeID[12]);
  23083. __assertex__("../../Server/Server/Base/Config.cpp", 0x874u, "void Config::LoadShareMemInfo_Only()", "FALSE", szLog);
  23084. }
  23085. v8 = this->m_ShareMemInfo.m_SMUObjCount;
  23086. v9 = 0;
  23087. if ( v8 )
  23088. {
  23089. do
  23090. {
  23091. *(_DWORD *)&szTypeID[12] = v8;
  23092. memset(szKeyID, 0, 0x100u);
  23093. memset(szTypeID, 0, 0x100u);
  23094. *(_DWORD *)&szTypeID[8] = v9;
  23095. sprintf(szKeyID, "Key%d", v9);
  23096. *(_DWORD *)&szTypeID[8] = v9;
  23097. sprintf(szTypeID, "Type%d", v9);
  23098. if ( IniFile::ReadInt(&ini, "ShareMem", szKeyID, &nValue) != 1 )
  23099. {
  23100. *(_DWORD *)&szTypeID[12] = v9;
  23101. snprintf(szLog, 0x400u, "[Config::LoadShareMemInfo_Only]: INI: read ShareMem::Key[%d] failed!!", v9);
  23102. __assertex__(
  23103. "../../Server/Server/Base/Config.cpp",
  23104. 0x888u,
  23105. "void Config::LoadShareMemInfo_Only()",
  23106. "FALSE",
  23107. szLog);
  23108. }
  23109. this->m_ShareMemInfo.m_pShareData[v9].m_Key = nValue;
  23110. if ( IniFile::ReadInt(&ini, "ShareMem", szTypeID, &nValue) != 1 )
  23111. {
  23112. *(_DWORD *)&szTypeID[12] = v9;
  23113. snprintf(szLog, 0x400u, "[Config::LoadShareMemInfo_Only]: INI: read ShareMem::TYPE[%d] failed!!", v9);
  23114. __assertex__(
  23115. "../../Server/Server/Base/Config.cpp",
  23116. 0x891u,
  23117. "void Config::LoadShareMemInfo_Only()",
  23118. "FALSE",
  23119. szLog);
  23120. }
  23121. v8 = nValue;
  23122. this->m_ShareMemInfo.m_pShareData[v9++].m_Type = nValue;
  23123. }
  23124. while ( this->m_ShareMemInfo.m_SMUObjCount > v9 );
  23125. }
  23126. if ( !IniFile::ReadText(&ini, "System", "DBIP", this->m_ShareMemInfo.m_DBIP, 24) )
  23127. __assertex__(
  23128. "../../Server/Server/Base/Config.cpp",
  23129. 0x898u,
  23130. "void Config::LoadShareMemInfo_Only()",
  23131. "FALSE",
  23132. "[Config::LoadShareMemInfo_Only]: INI: read System::DBIP failed!!");
  23133. if ( IniFile::ReadInt(&ini, "System", "DBPort", &nValue) != 1 )
  23134. __assertex__(
  23135. "../../Server/Server/Base/Config.cpp",
  23136. 0x8A0u,
  23137. "void Config::LoadShareMemInfo_Only()",
  23138. "FALSE",
  23139. "[Config::LoadShareMemInfo_Only]: INI: read System::Port failed!!");
  23140. this->m_ShareMemInfo.m_DBPort = nValue;
  23141. if ( !IniFile::ReadText(&ini, "System", "DBName", this->m_ShareMemInfo.m_DBName, 128) )
  23142. __assertex__(
  23143. "../../Server/Server/Base/Config.cpp",
  23144. 0x8A4u,
  23145. "void Config::LoadShareMemInfo_Only()",
  23146. "FALSE",
  23147. "[Config::LoadShareMemInfo_Only]: INI: read System::DBName failed!!");
  23148. if ( !IniFile::ReadText(&ini, "System", "DBUser", this->m_ShareMemInfo.m_DBUser, 32) )
  23149. __assertex__(
  23150. "../../Server/Server/Base/Config.cpp",
  23151. 0x8A8u,
  23152. "void Config::LoadShareMemInfo_Only()",
  23153. "FALSE",
  23154. "[Config::LoadShareMemInfo_Only]: INI: read System::DBUser failed!!");
  23155. if ( !IniFile::ReadText(&ini, "System", "DBPassword", this->m_ShareMemInfo.m_DBPassword, 256) )
  23156. __assertex__(
  23157. "../../Server/Server/Base/Config.cpp",
  23158. 0x8ACu,
  23159. "void Config::LoadShareMemInfo_Only()",
  23160. "FALSE",
  23161. "[Config::LoadShareMemInfo_Only]: INI: read System::DBPassword failed!!");
  23162. if ( IniFile::ReadInt(&ini, "System", "SMUInterval", &nValue) != 1 )
  23163. __assertex__(
  23164. "../../Server/Server/Base/Config.cpp",
  23165. 0x8B4u,
  23166. "void Config::LoadShareMemInfo_Only()",
  23167. "FALSE",
  23168. "[Config::LoadShareMemInfo_Only]: INI: read System::SMUInterval failed!!");
  23169. this->m_ShareMemInfo.SMUInterval = nValue;
  23170. if ( IniFile::ReadInt(&ini, "System", "DATAInterval", &nValue) != 1 )
  23171. __assertex__(
  23172. "../../Server/Server/Base/Config.cpp",
  23173. 0x8BCu,
  23174. "void Config::LoadShareMemInfo_Only()",
  23175. "FALSE",
  23176. "[Config::LoadShareMemInfo_Only]: INI: read System::DATAInterval failed!!");
  23177. this->m_ShareMemInfo.DATAInterval = nValue;
  23178. if ( IniFile::ReadInt(&ini, "System", "CryptPwd", &nValue) != 1 )
  23179. __assertex__(
  23180. "../../Server/Server/Base/Config.cpp",
  23181. 0x8C4u,
  23182. "void Config::LoadShareMemInfo_Only()",
  23183. "FALSE",
  23184. "[Config::LoadShareMemInfo_Only]: INI: read System::CryptPwd failed!!");
  23185. this->m_ShareMemInfo.CryptPwd = nValue;
  23186. DiskLog("./Log/Config", "Load ShareMemInfo.ini ...Only OK! ");
  23187. IniFile::~IniFile(&ini);
  23188. }
  23189.  
  23190. //----- (08057D30) --------------------------------------------------------
  23191. void __cdecl Config::LoadShareMemInfo(Config *const this)
  23192. {
  23193. Config::LoadShareMemInfo_Only(this);
  23194. }
  23195.  
  23196. //----- (08057D90) --------------------------------------------------------
  23197. void __cdecl Config::LoadMachineInfo_Only(Config *const this)
  23198. {
  23199. UINT v1; // ebx
  23200. _MACHINE_DATA *v2; // eax
  23201. _MACHINE_DATA *v3; // ecx
  23202. _MACHINE_DATA *v4; // edx
  23203. int v5; // eax
  23204. size_t v6; // eax
  23205. void *v7; // eax
  23206. UINT v8; // ebx
  23207. INT nValue; // [esp+14h] [ebp-E4Ch]
  23208. CHAR szSection[256]; // [esp+18h] [ebp-E48h]
  23209. CHAR szLog[1024]; // [esp+118h] [ebp-D48h]
  23210. IniFile ini; // [esp+518h] [ebp-948h]
  23211.  
  23212. IniFile::IniFile((const CHAR *)&ini, "./Config/MachineInfo.ini");
  23213. nValue = 0;
  23214. if ( IniFile::ReadInt(&ini, "System", aMachine, &nValue) != 1 )
  23215. __assertex__(
  23216. "../../Server/Server/Base/Config.cpp",
  23217. 0x8F6u,
  23218. "void Config::LoadMachineInfo_Only()",
  23219. "FALSE",
  23220. "[Config::LoadMachineInfo_Only]: INI: read System::MachineNumber failed!!");
  23221. this->m_MachineInfo.m_MachineCount = nValue;
  23222. v1 = this->m_MachineInfo.m_MachineCount;
  23223. if ( !v1 )
  23224. __assertex__(
  23225. "../../Server/Server/Base/Config.cpp",
  23226. 0x900u,
  23227. "void Config::LoadMachineInfo_Only()",
  23228. "FALSE",
  23229. "[Config::LoadMachineInfo_Only]: 0 >= m_MachineInfo.m_MachineCount");
  23230. v2 = (_MACHINE_DATA *)operator new[](2 * v1);
  23231. v3 = v2;
  23232. v4 = v2;
  23233. v5 = v1 - 1;
  23234. while ( v5 != -1 )
  23235. {
  23236. v4->m_MachineID = -1;
  23237. --v5;
  23238. ++v4;
  23239. }
  23240. this->m_MachineInfo.m_pMachine = v3;
  23241. if ( !v3 )
  23242. {
  23243. *(_DWORD *)&szSection[12] = this->m_MachineInfo.m_MachineCount;
  23244. snprintf(
  23245. szLog,
  23246. 0x400u,
  23247. "[Config::LoadMachineInfo_Only]: alloc memory for _MACHINE_DATA[%d] failed!!",
  23248. *(_DWORD *)&szSection[12]);
  23249. __assertex__("../../Server/Server/Base/Config.cpp", 0x906u, "void Config::LoadMachineInfo_Only()", "FALSE", szLog);
  23250. }
  23251. v6 = 2 * this->m_MachineInfo.m_MachineCount;
  23252. *(_DWORD *)&szSection[44] = v3;
  23253. v7 = memset(v3, 0, v6);
  23254. v8 = 0;
  23255. if ( this->m_MachineInfo.m_MachineCount )
  23256. {
  23257. do
  23258. {
  23259. *(_DWORD *)&szSection[44] = v7;
  23260. memset(szSection, 0, 0x100u);
  23261. this->m_MachineInfo.m_pMachine[v8].m_MachineID = -1;
  23262. *(_DWORD *)&szSection[40] = v8;
  23263. sprintf(szSection, "Machine%d", v8);
  23264. if ( IniFile::ReadInt(&ini, szSection, "MachineID", &nValue) != 1 )
  23265. {
  23266. *(_DWORD *)&szSection[44] = v8;
  23267. snprintf(szLog, 0x400u, "[Config::LoadMachineInfo_Only]: INI: read System::MachineID[%d] failed!!", v8);
  23268. __assertex__(
  23269. "../../Server/Server/Base/Config.cpp",
  23270. 0x91Cu,
  23271. "void Config::LoadMachineInfo_Only()",
  23272. "FALSE",
  23273. szLog);
  23274. }
  23275. v7 = (void *)nValue;
  23276. this->m_MachineInfo.m_pMachine[v8++].m_MachineID = nValue;
  23277. }
  23278. while ( this->m_MachineInfo.m_MachineCount > v8 );
  23279. }
  23280. DiskLog("./Log/Config", "Load MachineInfo.ini ...Only OK! ");
  23281. IniFile::~IniFile(&ini);
  23282. }
  23283.  
  23284. //----- (08058014) --------------------------------------------------------
  23285. void __cdecl Config::LoadMachineInfo(Config *const this)
  23286. {
  23287. Config::LoadMachineInfo_Only(this);
  23288. Config::LoadMachineInfo_ReLoad(this);
  23289. }
  23290.  
  23291. //----- (0805807C) --------------------------------------------------------
  23292. void __cdecl Config::LoadServerInfo_Only(Config *const this)
  23293. {
  23294. CHAR *v1; // ebx
  23295. int v2; // edi
  23296. int v3; // ST10_4
  23297. int v4; // ecx
  23298. int v5; // ST10_4
  23299. int v6; // ecx
  23300. int v7; // ST10_4
  23301. int v8; // ecx
  23302. int v9; // eax
  23303. int v10; // eax
  23304. int v11; // eax
  23305. int v12; // eax
  23306. int v13; // ecx
  23307. int v14; // edx
  23308. UINT v15; // ebx
  23309. UINT *v16; // eax
  23310. int j; // edx
  23311. int v18; // eax
  23312. signed int v19; // ecx
  23313. signed int v20; // ecx
  23314. int v21; // eax
  23315. UINT v22; // ecx
  23316. int v23; // edi
  23317. _SERVER_DATA *v24; // edx
  23318. _SERVER_DATA *v25; // eax
  23319. signed int v26; // ecx
  23320. _SERVER_DATA *v27; // edx
  23321. _SERVER_DATA *v28; // edx
  23322. _SERVER_DATA *v29; // edx
  23323. int v30; // ebx
  23324. int v31; // eax
  23325. UINT v32; // edi
  23326. int v33; // ebx
  23327. int v34; // [esp+8h] [ebp-F68h]
  23328. CHAR *v35; // [esp+Ch] [ebp-F64h]
  23329. int v36; // [esp+10h] [ebp-F60h]
  23330. UINT i; // [esp+18h] [ebp-F58h]
  23331. _SERVER_DATA *v38; // [esp+1Ch] [ebp-F54h]
  23332. INT nValue; // [esp+24h] [ebp-F4Ch]
  23333. CHAR szTerm[256]; // [esp+28h] [ebp-F48h]
  23334. CHAR szSection[256]; // [esp+128h] [ebp-E48h]
  23335. CHAR szLog[1024]; // [esp+228h] [ebp-D48h]
  23336. IniFile ini; // [esp+628h] [ebp-948h]
  23337.  
  23338. IniFile::IniFile((const CHAR *)&ini, "./Config/ServerInfo.ini");
  23339. nValue = 0;
  23340. if ( !IniFile::ReadText(&ini, "Proxy", "Proxy0ForCncUser", (CHAR *)&this->m_InternalIpofProxy, 24) )
  23341. {
  23342. v1 = szLog;
  23343. snprintf(szLog, 0x400u, "[Config::LoadServerInfo_Only]: Warning: read Proxy::Proxy0ForCncUser failed!!", 0);
  23344. v2 = v3;
  23345. DiskLog("./Log/Config", szLog);
  23346. }
  23347. if ( !IniFile::ReadText(&ini, "Proxy", "Proxy1ForCncUser", this->m_InternalIpofProxy.m_szProxyForCncUser[1], 24) )
  23348. {
  23349. v1 = szLog;
  23350. snprintf(szLog, 0x400u, "[Config::LoadServerInfo_Only]: Warning: read Proxy::Proxy1ForCncUser failed!!", v4);
  23351. DiskLog("./Log/Config", szLog);
  23352. }
  23353. if ( !IniFile::ReadText(&ini, "Proxy", "Proxy0ForCtcUser", (CHAR *)this->m_InternalIpofProxy.m_szProxyForCtcUser, 24) )
  23354. {
  23355. v1 = szLog;
  23356. snprintf(szLog, 0x400u, "[Config::LoadServerInfo_Only]: Warning: read Proxy::Proxy0ForCtcUser failed!!", 0);
  23357. v2 = v5;
  23358. DiskLog("./Log/Config", szLog);
  23359. }
  23360. if ( !IniFile::ReadText(&ini, "Proxy", "Proxy1ForCtcUser", this->m_InternalIpofProxy.m_szProxyForCtcUser[1], 24) )
  23361. {
  23362. v1 = szLog;
  23363. snprintf(szLog, 0x400u, "[Config::LoadServerInfo_Only]: Warning: read Proxy::Proxy1ForCtcUser failed!!", v6);
  23364. DiskLog("./Log/Config", szLog);
  23365. }
  23366. if ( !IniFile::ReadText(&ini, "Proxy", "Proxy0ForEduUser", (CHAR *)this->m_InternalIpofProxy.m_szProxyForEduUser, 24) )
  23367. {
  23368. v1 = szLog;
  23369. snprintf(szLog, 0x400u, "[Config::LoadServerInfo_Only]: Warning: read Proxy::Proxy0ForEduUser failed!!", 0);
  23370. v2 = v7;
  23371. DiskLog("./Log/Config", szLog);
  23372. }
  23373. if ( !IniFile::ReadText(&ini, "Proxy", "Proxy1ForEduUser", this->m_InternalIpofProxy.m_szProxyForEduUser[1], 24) )
  23374. {
  23375. v1 = szLog;
  23376. snprintf(szLog, 0x400u, "[Config::LoadServerInfo_Only]: Warning: read Proxy::Proxy1ForEduUser failed!!", v8);
  23377. DiskLog("./Log/Config", szLog);
  23378. }
  23379. v9 = IniFile::ReadInt(&ini, "System", "EnableEffAudit", &nValue) - 1;
  23380. if ( v9 )
  23381. {
  23382. snprintf(szLog, 0x400u, "[Config::LoadServerInfo_Only]: INI: read System::EnableEffAudit failed!!", v9);
  23383. __assertex__("../../Server/Server/Base/Config.cpp", 0x985u, "void Config::LoadServerInfo_Only()", "FALSE", szLog);
  23384. }
  23385. if ( nValue )
  23386. this->m_ServerInfo.m_bEnableEffAudit = 1;
  23387. v10 = IniFile::ReadInt(&ini, "System", "EffAuditSaveResultInterval", &nValue) - 1;
  23388. if ( v10 )
  23389. {
  23390. snprintf(szLog, 0x400u, "[Config::LoadServerInfo_Only]: INI: read System::EffAuditSaveResultInterval failed!!", v10);
  23391. __assertex__("../../Server/Server/Base/Config.cpp", 0x993u, "void Config::LoadServerInfo_Only()", "FALSE", szLog);
  23392. }
  23393. if ( nValue > 0 )
  23394. this->m_ServerInfo.m_uiSaveResultInterval = nValue;
  23395. v11 = IniFile::ReadInt(&ini, "System", "EffAuditReportInterval", &nValue) - 1;
  23396. if ( v11 )
  23397. {
  23398. snprintf(szLog, 0x400u, "[Config::LoadServerInfo_Only]: INI: read System::EffAuditReportInterval failed!!", v11);
  23399. __assertex__("../../Server/Server/Base/Config.cpp", 0x9A1u, "void Config::LoadServerInfo_Only()", "FALSE", szLog);
  23400. }
  23401. if ( nValue > 0 )
  23402. this->m_ServerInfo.m_uiReportInterval = nValue;
  23403. v12 = IniFile::ReadInt(&ini, "System", "EnableEffAuditSceneID_1ST", &nValue) - 1;
  23404. if ( v12 )
  23405. {
  23406. snprintf(szLog, 0x400u, "[Config::LoadServerInfo_Only]: INI: read System::EnableEffAuditSceneID_1ST failed!!", v12);
  23407. __assertex__("../../Server/Server/Base/Config.cpp", 0x9AFu, "void Config::LoadServerInfo_Only()", "FALSE", szLog);
  23408. }
  23409. if ( nValue >= 0 )
  23410. this->m_ServerInfo.m_idEnableEffSceneID_1ST = nValue;
  23411. if ( IniFile::ReadInt(&ini, "System", "EnableEffAuditSceneID_2ND", &nValue) != 1 )
  23412. {
  23413. snprintf(szLog, 0x400u, "[Config::LoadServerInfo_Only]: INI: read System::EnableEffAuditSceneID_2ND failed!!", v2);
  23414. __assertex__("../../Server/Server/Base/Config.cpp", 0x9BDu, "void Config::LoadServerInfo_Only()", "FALSE", szLog);
  23415. }
  23416. if ( nValue >= 0 )
  23417. this->m_ServerInfo.m_idEnableEffSceneID_2ND = nValue;
  23418. if ( IniFile::ReadInt(&ini, "System", "EnableEffAuditSceneID_3RD", &nValue) != 1 )
  23419. {
  23420. snprintf(szLog, 0x400u, "[Config::LoadServerInfo_Only]: INI: read System::EnableEffAuditSceneID_3RD failed!!", v1);
  23421. __assertex__("../../Server/Server/Base/Config.cpp", 0x9CBu, "void Config::LoadServerInfo_Only()", "FALSE", szLog);
  23422. }
  23423. if ( nValue >= 0 )
  23424. this->m_ServerInfo.m_idEnableEffSceneID_3RD = nValue;
  23425. if ( IniFile::ReadInt(&ini, "System", "CurrentServerID", &nValue) != 1 )
  23426. {
  23427. snprintf(szLog, 0x400u, "[Config::LoadServerInfo_Only]: INI: read System::CurrentServerID failed!!", v13);
  23428. __assertex__("../../Server/Server/Base/Config.cpp", 0x9D6u, "void Config::LoadServerInfo_Only()", "FALSE", szLog);
  23429. }
  23430. this->m_ServerInfo.m_ServerID = nValue;
  23431. if ( IniFile::ReadInt(&ini, "System", "ServerNumber", &nValue) != 1 )
  23432. {
  23433. snprintf(szLog, 0x400u, "[Config::LoadServerInfo_Only]: INI: read System::ServerNumber failed!!", v14);
  23434. __assertex__("../../Server/Server/Base/Config.cpp", 0x9E1u, "void Config::LoadServerInfo_Only()", "FALSE", szLog);
  23435. }
  23436. this->m_ServerInfo.m_ServerCount = nValue;
  23437. v15 = this->m_ServerInfo.m_ServerCount;
  23438. if ( !v15 )
  23439. __assertex__(
  23440. "../../Server/Server/Base/Config.cpp",
  23441. 0x9EBu,
  23442. "void Config::LoadServerInfo_Only()",
  23443. "FALSE",
  23444. "[Config::LoadServerInfo_Only]: 0 >= m_ServerInfo.m_ServerCount");
  23445. v16 = (UINT *)operator new[](192 * v15 + 4);
  23446. v38 = (_SERVER_DATA *)(v16 + 1);
  23447. *v16 = v15;
  23448. for ( j = (int)(v16 + 1); --v15 != -1; j += 192 )
  23449. {
  23450. v18 = j + 64;
  23451. v19 = 2;
  23452. do
  23453. {
  23454. --v19;
  23455. *(_WORD *)v18 = -1;
  23456. *(_DWORD *)(v18 + 28) = -1;
  23457. *(_DWORD *)(v18 + 32) = 0;
  23458. *(_BYTE *)(v18 + 2) = 0;
  23459. v18 += 36;
  23460. }
  23461. while ( v19 != -1 );
  23462. *(_WORD *)j = -1;
  23463. *(_WORD *)(j + 2) = -1;
  23464. memset((void *)(j + 4), 0, 0x18u);
  23465. *(_DWORD *)(j + 28) = 0;
  23466. memset((void *)(j + 32), 0, 0x18u);
  23467. v20 = 2;
  23468. *(_DWORD *)(j + 56) = 0;
  23469. *(_DWORD *)(j + 60) = -1;
  23470. v21 = j;
  23471. do
  23472. {
  23473. *(_WORD *)(v21 + 64) = -1;
  23474. *(_BYTE *)(v21 + 66) = 0;
  23475. *(_DWORD *)(v21 + 92) = -1;
  23476. *(_DWORD *)(v21 + 96) = 0;
  23477. v21 += 36;
  23478. --v20;
  23479. }
  23480. while ( v20 >= 0 );
  23481. *(_DWORD *)(j + 188) = 0;
  23482. }
  23483. this->m_ServerInfo.m_pServer = v38;
  23484. if ( !v38 )
  23485. {
  23486. snprintf(
  23487. szLog,
  23488. 0x400u,
  23489. "[Config::LoadServerInfo_Only]: alloc memory for _SERVER_DATA[%d] failed!!",
  23490. this->m_ServerInfo.m_ServerCount);
  23491. __assertex__("../../Server/Server/Base/Config.cpp", 0x9F1u, "void Config::LoadServerInfo_Only()", "FALSE", szLog);
  23492. }
  23493. v22 = 192 * this->m_ServerInfo.m_ServerCount >> 2;
  23494. memset(v38, 0, 4 * v22);
  23495. v23 = (int)v38 + 4 * v22;
  23496. i = 0;
  23497. if ( this->m_ServerInfo.m_ServerCount )
  23498. {
  23499. v34 = 0;
  23500. do
  23501. {
  23502. memset(szSection, 0, 0x100u);
  23503. v24 = &this->m_ServerInfo.m_pServer[v34];
  23504. v24->m_ServerID = -1;
  23505. v24->m_MachineID = -1;
  23506. memset(v24->m_IP0, 0, sizeof(v24->m_IP0));
  23507. v24->m_Port0 = 0;
  23508. memset(v24->m_IP1, 0, sizeof(v24->m_IP1));
  23509. v24->m_Port1 = 0;
  23510. v24->m_Type = -1;
  23511. v25 = v24;
  23512. v26 = 2;
  23513. do
  23514. {
  23515. v25->m_aProxy[0].m_nIsp = -1;
  23516. v25->m_aProxy[0].m_szIP[0] = 0;
  23517. v25->m_aProxy[0].m_nPort = -1;
  23518. v25->m_aProxy[0].m_bEnabled = 0;
  23519. v25 = (_SERVER_DATA *)((char *)v25 + 36);
  23520. --v26;
  23521. }
  23522. while ( v26 >= 0 );
  23523. v24->m_EnableShareMem = 0;
  23524. sprintf(szSection, "Server%d", i, v25);
  23525. if ( IniFile::ReadInt(&ini, szSection, "ServerID", &nValue) != 1 )
  23526. {
  23527. snprintf(szLog, 0x400u, "[Config::LoadServerInfo_Only]: INI: read %s::ServerID failed!!", szSection);
  23528. __assertex__(
  23529. "../../Server/Server/Base/Config.cpp",
  23530. 0xA07u,
  23531. "void Config::LoadServerInfo_Only()",
  23532. "FALSE",
  23533. szLog);
  23534. }
  23535. this->m_ServerInfo.m_pServer[v34].m_ServerID = nValue;
  23536. if ( IniFile::ReadInt(&ini, szSection, "MachineID", &nValue) != 1 )
  23537. {
  23538. snprintf(szLog, 0x400u, "[Config::LoadServerInfo_Only]: INI: read %s::MachineID failed!!", szSection);
  23539. __assertex__(
  23540. "../../Server/Server/Base/Config.cpp",
  23541. 0xA11u,
  23542. "void Config::LoadServerInfo_Only()",
  23543. "FALSE",
  23544. szLog);
  23545. }
  23546. v27 = this->m_ServerInfo.m_pServer;
  23547. v27[v34].m_MachineID = nValue;
  23548. if ( !IniFile::ReadText(&ini, szSection, "IP0", v27[v34].m_IP0, 24) )
  23549. {
  23550. snprintf(szLog, 0x400u, "[Config::LoadServerInfo_Only]: INI: read %s::IP0 failed!!", szSection);
  23551. __assertex__(
  23552. "../../Server/Server/Base/Config.cpp",
  23553. 0xA17u,
  23554. "void Config::LoadServerInfo_Only()",
  23555. "FALSE",
  23556. szLog);
  23557. }
  23558. if ( IniFile::ReadInt(&ini, szSection, "Port0", &nValue) != 1 )
  23559. {
  23560. snprintf(szLog, 0x400u, "[Config::LoadServerInfo_Only]: INI: read %s::Port0 failed!!", szSection);
  23561. __assertex__(
  23562. "../../Server/Server/Base/Config.cpp",
  23563. 0xA21u,
  23564. "void Config::LoadServerInfo_Only()",
  23565. "FALSE",
  23566. szLog);
  23567. }
  23568. v28 = this->m_ServerInfo.m_pServer;
  23569. v28[v34].m_Port0 = nValue;
  23570. if ( !IniFile::ReadText(&ini, szSection, "IP1", v28[v34].m_IP1, 24) )
  23571. {
  23572. snprintf(szLog, 0x400u, "[Config::LoadServerInfo_Only]: INI: read %s::IP1 failed!!", szSection);
  23573. __assertex__(
  23574. "../../Server/Server/Base/Config.cpp",
  23575. 0xA27u,
  23576. "void Config::LoadServerInfo_Only()",
  23577. "FALSE",
  23578. szLog);
  23579. }
  23580. if ( IniFile::ReadInt(&ini, szSection, "Port1", &nValue) != 1 )
  23581. {
  23582. snprintf(szLog, 0x400u, "[Config::LoadServerInfo_Only]: INI: read %s::Port1 failed!!", szSection);
  23583. __assertex__(
  23584. "../../Server/Server/Base/Config.cpp",
  23585. 0xA31u,
  23586. "void Config::LoadServerInfo_Only()",
  23587. "FALSE",
  23588. szLog);
  23589. }
  23590. v29 = this->m_ServerInfo.m_pServer;
  23591. v29[v34].m_Port1 = nValue;
  23592. v23 = 0;
  23593. v35 = g_szIspID;
  23594. v30 = (int)&v29[v34];
  23595. do
  23596. {
  23597. *(_WORD *)(v30 + 64) = v23;
  23598. snprintf(szTerm, 0x100u, "%s(%s)", 135015528, v35);
  23599. szTerm[255] = 0;
  23600. if ( !IniFile::ReadText(&ini, szSection, szTerm, (CHAR *)(v30 + 66), 24) )
  23601. {
  23602. snprintf(szLog, 0x400u, "[Config::LoadServerInfo_Only]: INI: read %s::%s failed!!", szSection, szTerm);
  23603. szLog[1023] = 0;
  23604. DiskLog("./Log/Config", szLog);
  23605. LABEL_71:
  23606. *(_DWORD *)(v30 + 96) = 0;
  23607. goto LABEL_72;
  23608. }
  23609. snprintf(szTerm, 0x100u, "%s(%s)", 135015533, v35);
  23610. szTerm[255] = 0;
  23611. if ( IniFile::ReadInt(&ini, szSection, szTerm, &nValue) != 1 )
  23612. {
  23613. snprintf(szLog, 0x400u, "[Config::LoadServerInfo_Only]: INI: read %s::%s failed!!", szSection, szTerm);
  23614. szLog[1023] = 0;
  23615. DiskLog("./Log/Config", szLog);
  23616. goto LABEL_71;
  23617. }
  23618. *(_DWORD *)(v30 + 92) = nValue;
  23619. *(_DWORD *)(v30 + 96) = 1;
  23620. LABEL_72:
  23621. ++v23;
  23622. v30 += 36;
  23623. v35 += 16;
  23624. }
  23625. while ( v23 <= 2 );
  23626. if ( IniFile::ReadInt(&ini, szSection, "Type", &nValue) != 1 )
  23627. {
  23628. snprintf(szLog, 0x400u, "[Config::LoadServerInfo_Only]: INI: read %s::Type failed!!", szSection);
  23629. __assertex__(
  23630. "../../Server/Server/Base/Config.cpp",
  23631. 0xA65u,
  23632. "void Config::LoadServerInfo_Only()",
  23633. "FALSE",
  23634. szLog);
  23635. }
  23636. this->m_ServerInfo.m_pServer[v34].m_Type = nValue;
  23637. if ( IniFile::ReadInt(&ini, szSection, "HumanSMKey", &nValue) != 1 )
  23638. {
  23639. snprintf(szLog, 0x400u, "[Config::LoadServerInfo_Only]: INI: read %s::HumanSMKey failed!!", szSection);
  23640. __assertex__(
  23641. "../../Server/Server/Base/Config.cpp",
  23642. 0xA6Fu,
  23643. "void Config::LoadServerInfo_Only()",
  23644. "FALSE",
  23645. szLog);
  23646. }
  23647. this->m_ServerInfo.m_pServer[v34].m_HumanSMKey = nValue;
  23648. if ( IniFile::ReadInt(&ini, szSection, "PlayShopSMKey", &nValue) != 1 )
  23649. {
  23650. snprintf(szLog, 0x400u, "[Config::LoadServerInfo_Only]: INI: read %s::PlayShopSMKey failed!!", szSection);
  23651. __assertex__(
  23652. "../../Server/Server/Base/Config.cpp",
  23653. 0xA79u,
  23654. "void Config::LoadServerInfo_Only()",
  23655. "FALSE",
  23656. szLog);
  23657. }
  23658. this->m_ServerInfo.m_pServer[v34].m_PlayShopSMKey = nValue;
  23659. if ( IniFile::ReadInt(&ini, szSection, "ItemSerialKey", &nValue) != 1 )
  23660. {
  23661. snprintf(szLog, 0x400u, "[Config::LoadServerInfo_Only]: INI: read %s::ItemSerialKey failed!!", szSection);
  23662. __assertex__(
  23663. "../../Server/Server/Base/Config.cpp",
  23664. 0xA83u,
  23665. "void Config::LoadServerInfo_Only()",
  23666. "FALSE",
  23667. szLog);
  23668. }
  23669. this->m_ServerInfo.m_pServer[v34].m_ItemSerialKey = nValue;
  23670. if ( IniFile::ReadInt(&ini, szSection, "CommisionShopKey", &nValue) != 1 )
  23671. {
  23672. snprintf(szLog, 0x400u, "[Config::LoadServerInfo_Only]: INI: read %s::CommisionShopKey failed!!", szSection);
  23673. __assertex__(
  23674. "../../Server/Server/Base/Config.cpp",
  23675. 0xA8Du,
  23676. "void Config::LoadServerInfo_Only()",
  23677. "FALSE",
  23678. szLog);
  23679. }
  23680. this->m_ServerInfo.m_pServer[v34].m_CommionShopSMKey = nValue;
  23681. if ( IniFile::ReadInt(&ini, szSection, "EnableShareMem", &nValue) != 1 )
  23682. {
  23683. snprintf(szLog, 0x400u, "[Config::LoadServerInfo_Only]: INI: read %s::EnableShareMem failed!!", szSection);
  23684. __assertex__(
  23685. "../../Server/Server/Base/Config.cpp",
  23686. 0xA97u,
  23687. "void Config::LoadServerInfo_Only()",
  23688. "FALSE",
  23689. szLog);
  23690. }
  23691. this->m_ServerInfo.m_pServer[v34].m_EnableShareMem = nValue;
  23692. ++i;
  23693. ++v34;
  23694. }
  23695. while ( this->m_ServerInfo.m_ServerCount > i );
  23696. }
  23697. if ( !IniFile::ReadText(&ini, "World", "IP", this->m_ServerInfo.m_World.m_IP, 24) )
  23698. {
  23699. snprintf(szLog, 0x400u, "[Config::LoadServerInfo_Only]: INI: read World::IP failed!!", 0);
  23700. __assertex__("../../Server/Server/Base/Config.cpp", 0xAAEu, "void Config::LoadServerInfo_Only()", "FALSE", szLog);
  23701. }
  23702. v31 = IniFile::ReadInt(&ini, "World", "Port", &nValue) - 1;
  23703. if ( v31 )
  23704. {
  23705. snprintf(szLog, 0x400u, "[Config::LoadServerInfo_Only]: INI: read World::Port failed!!", v31);
  23706. __assertex__("../../Server/Server/Base/Config.cpp", 0xAB8u, "void Config::LoadServerInfo_Only()", "FALSE", szLog);
  23707. }
  23708. this->m_ServerInfo.m_World.m_Port = nValue;
  23709. if ( !IniFile::ReadText(&ini, "Mother", "IP", this->m_ServerInfo.m_Mother.m_IP, 24) )
  23710. {
  23711. snprintf(szLog, 0x400u, "[Config::LoadServerInfo_Only]: INI: read Mother::IP failed!!", 0);
  23712. __assertex__("../../Server/Server/Base/Config.cpp", 0xABFu, "void Config::LoadServerInfo_Only()", "FALSE", szLog);
  23713. }
  23714. if ( IniFile::ReadInt(&ini, "Mother", "Port", &nValue) != 1 )
  23715. {
  23716. snprintf(szLog, 0x400u, "[Config::LoadServerInfo_Only]: INI: read Mother::Port failed!!", v23);
  23717. __assertex__("../../Server/Server/Base/Config.cpp", 0xAC9u, "void Config::LoadServerInfo_Only()", "FALSE", szLog);
  23718. }
  23719. this->m_ServerInfo.m_Mother.m_Port = nValue;
  23720. v32 = 0;
  23721. if ( this->m_ServerInfo.m_ServerCount )
  23722. {
  23723. v36 = 0;
  23724. do
  23725. {
  23726. LOWORD(v33) = this->m_ServerInfo.m_pServer[v36].m_ServerID;
  23727. if ( (_WORD)v33 == -1 || (signed __int16)v33 > 255 )
  23728. __assert__(
  23729. "../../Server/Server/Base/Config.cpp",
  23730. 0xAD3u,
  23731. "void Config::LoadServerInfo_Only()",
  23732. "ServerID != INVALID_ID && ServerID < OVER_MAX_SERVER");
  23733. v33 = (signed __int16)v33;
  23734. if ( this->m_ServerInfo.m_HashServer[(signed __int16)v33] != -1 )
  23735. __assert__(
  23736. "../../Server/Server/Base/Config.cpp",
  23737. 0xAD5u,
  23738. "void Config::LoadServerInfo_Only()",
  23739. "m_ServerInfo.m_HashServer[ServerID] == -1");
  23740. this->m_ServerInfo.m_HashServer[v33] = v32++;
  23741. ++v36;
  23742. }
  23743. while ( this->m_ServerInfo.m_ServerCount > v32 );
  23744. }
  23745. DiskLog("./Log/Config", "Load ServerInfo.ini ...Only OK! ");
  23746. IniFile::~IniFile(&ini);
  23747. }
  23748.  
  23749. //----- (0805932C) --------------------------------------------------------
  23750. void __cdecl Config::LoadServerInfo(Config *const this)
  23751. {
  23752. Config::LoadServerInfo_Only(this);
  23753. Config::LoadServerInfo_ReLoad(this);
  23754. }
  23755.  
  23756. //----- (08059394) --------------------------------------------------------
  23757. void __cdecl Config::LoadSceneInfo_Only(Config *const this)
  23758. {
  23759. int v1; // ecx
  23760. UINT v2; // edi
  23761. _SCENE_DATA *v3; // ebx
  23762. UINT v4; // eax
  23763. int v5; // edi
  23764. Config *v6; // ST30_4
  23765. _SCENE_DATA *v7; // edx
  23766. Config *v8; // ST30_4
  23767. int v9; // eax
  23768. UINT i; // [esp+10h] [ebp-E60h]
  23769. UINT ia; // [esp+10h] [ebp-E60h]
  23770. _SCENE_DATA *v12; // [esp+14h] [ebp-E5Ch]
  23771. Config *this_0; // [esp+18h] [ebp-E58h]
  23772. Config *this_0a; // [esp+18h] [ebp-E58h]
  23773. Config *this_0b; // [esp+18h] [ebp-E58h]
  23774. Config *this_0c; // [esp+18h] [ebp-E58h]
  23775. Config *this_0d; // [esp+18h] [ebp-E58h]
  23776. Config *this_0e; // [esp+18h] [ebp-E58h]
  23777. Config *this_0f; // [esp+18h] [ebp-E58h]
  23778. Config *this_0g; // [esp+18h] [ebp-E58h]
  23779. Config *this_0h; // [esp+18h] [ebp-E58h]
  23780. Config *this_0i; // [esp+18h] [ebp-E58h]
  23781. INT nEndPlus; // [esp+1Ch] [ebp-E54h]
  23782. INT nBeginPlus; // [esp+20h] [ebp-E50h]
  23783. INT nValue; // [esp+24h] [ebp-E4Ch]
  23784. CHAR szSection[256]; // [esp+28h] [ebp-E48h]
  23785. CHAR szLog[1024]; // [esp+128h] [ebp-D48h]
  23786. IniFile ini; // [esp+528h] [ebp-948h]
  23787.  
  23788. IniFile::IniFile((const CHAR *)&ini, "./Config/SceneInfo.ini");
  23789. if ( IniFile::ReadInt(&ini, "system", "scenenumber", &nValue) != 1 )
  23790. {
  23791. snprintf(szLog, 0x400u, "[Config::LoadSceneInfo_Only]: INI: read system::scenenumber failed!!", v1);
  23792. __assertex__("../../Server/Server/Base/Config.cpp", 0xB03u, "void Config::LoadSceneInfo_Only()", "FALSE", szLog);
  23793. }
  23794. this->m_SceneInfo.m_SceneCount = nValue;
  23795. v2 = this->m_SceneInfo.m_SceneCount;
  23796. if ( !v2 )
  23797. __assertex__(
  23798. "../../Server/Server/Base/Config.cpp",
  23799. 0xB0Du,
  23800. "void Config::LoadSceneInfo_Only()",
  23801. "FALSE",
  23802. "[Config::LoadSceneInfo_Only]: 0 >= m_SceneInfo.m_SceneCount");
  23803. v3 = (_SCENE_DATA *)operator new[](568 * v2);
  23804. v12 = v3;
  23805. while ( --v2 != -1 )
  23806. {
  23807. v3->m_SceneID = -1;
  23808. v3->m_IsActive = 1;
  23809. memset(v3->m_szName, 0, 0x104u);
  23810. memset(v3->m_szFileName, 0, 0x104u);
  23811. v3->m_ServerID = -1;
  23812. v3->m_Type = -1;
  23813. v3->m_ThreadIndex = -1;
  23814. v3->m_ClientRes = -1;
  23815. v3->m_Commerce = -1;
  23816. v3->m_nPvpRuler = -1;
  23817. v3->m_bNoPkPenalty = 0;
  23818. v3->m_nIsReLive = 0;
  23819. v3->m_BeginPlus = 0;
  23820. v3->m_ClientResEx = -1;
  23821. v3->m_EndPlus = 0;
  23822. ++v3;
  23823. }
  23824. this->m_SceneInfo.m_pScene = v12;
  23825. if ( !v12 )
  23826. {
  23827. nValue = this->m_SceneInfo.m_SceneCount;
  23828. snprintf(szLog, 0x400u, "[Config::LoadSceneInfo_Only]: alloc memory for _SCENE_DATA[%d] failed!!", nValue);
  23829. __assertex__("../../Server/Server/Base/Config.cpp", 0xB13u, "void Config::LoadSceneInfo_Only()", "FALSE", szLog);
  23830. }
  23831. memset(v12, 0, 4 * (568 * this->m_SceneInfo.m_SceneCount >> 2));
  23832. v4 = this->m_SceneInfo.m_SceneCount;
  23833. i = 0;
  23834. if ( v4 )
  23835. {
  23836. v5 = 0;
  23837. do
  23838. {
  23839. nValue = v4;
  23840. memset(szSection, 0, 0x100u);
  23841. nBeginPlus = i;
  23842. sprintf(szSection, "scene%d", i);
  23843. v6->m_SceneInfo.m_pScene[v5].m_SceneID = i;
  23844. if ( IniFile::ReadInt(&ini, szSection, "active", &nValue) != 1 )
  23845. {
  23846. nValue = (INT)szSection;
  23847. snprintf(szLog, 0x400u, "[Config::LoadSceneInfo_Only]: INI: read %s::active failed!!", szSection);
  23848. __assertex__("../../Server/Server/Base/Config.cpp", 0xB29u, "void Config::LoadSceneInfo_Only()", "FALSE", szLog);
  23849. }
  23850. v7 = this_0->m_SceneInfo.m_pScene;
  23851. v7[v5].m_IsActive = nValue;
  23852. if ( !IniFile::ReadText(&ini, szSection, "name", v7[v5].m_szName, 260) )
  23853. {
  23854. nValue = (INT)szSection;
  23855. snprintf(szLog, 0x400u, "[Config::LoadSceneInfo_Only]: INI: read %s::name failed!!", szSection);
  23856. __assertex__("../../Server/Server/Base/Config.cpp", 0xB30u, "void Config::LoadSceneInfo_Only()", "FALSE", szLog);
  23857. }
  23858. if ( !IniFile::ReadText(&ini, szSection, "file", (CHAR *)(v5 * 568 + MEMORY[0xBD8] + 268), 260) )
  23859. {
  23860. nValue = (INT)szSection;
  23861. snprintf(szLog, 0x400u, "[Config::LoadSceneInfo_Only]: INI: read %s::file failed!!", szSection);
  23862. __assertex__("../../Server/Server/Base/Config.cpp", 0xB37u, "void Config::LoadSceneInfo_Only()", "FALSE", szLog);
  23863. }
  23864. if ( IniFile::ReadInt(&ini, szSection, "serverid", &nValue) != 1 )
  23865. {
  23866. nValue = (INT)szSection;
  23867. snprintf(szLog, 0x400u, "[Config::LoadSceneInfo_Only]: INI: read %s::serverid failed!!", szSection);
  23868. __assertex__("../../Server/Server/Base/Config.cpp", 0xB42u, "void Config::LoadSceneInfo_Only()", "FALSE", szLog);
  23869. }
  23870. this_0a->m_SceneInfo.m_pScene[v5].m_ServerID = nValue;
  23871. if ( IniFile::ReadInt(&ini, szSection, "type", &nValue) != 1 )
  23872. {
  23873. nValue = (INT)szSection;
  23874. snprintf(szLog, 0x400u, "[Config::LoadSceneInfo_Only]: INI: read %s::type failed!!", szSection);
  23875. __assertex__("../../Server/Server/Base/Config.cpp", 0xB4Du, "void Config::LoadSceneInfo_Only()", "FALSE", szLog);
  23876. }
  23877. this_0b->m_SceneInfo.m_pScene[v5].m_Type = nValue;
  23878. if ( IniFile::ReadInt(&ini, szSection, "threadindex", &nValue) != 1 )
  23879. {
  23880. nValue = (INT)szSection;
  23881. snprintf(szLog, 0x400u, "[Config::LoadSceneInfo_Only]: INI: read %s::threadindex failed!!", szSection);
  23882. __assertex__("../../Server/Server/Base/Config.cpp", 0xB58u, "void Config::LoadSceneInfo_Only()", "FALSE", szLog);
  23883. }
  23884. this_0c->m_SceneInfo.m_pScene[v5].m_ThreadIndex = nValue;
  23885. if ( IniFile::ReadInt(&ini, szSection, "clientres", &nValue) != 1 )
  23886. {
  23887. nValue = (INT)szSection;
  23888. snprintf(szLog, 0x400u, "[Config::LoadSceneInfo_Only]: INI: read %s::clientres failed!!", szSection);
  23889. __assertex__("../../Server/Server/Base/Config.cpp", 0xB63u, "void Config::LoadSceneInfo_Only()", "FALSE", szLog);
  23890. }
  23891. this_0d->m_SceneInfo.m_pScene[v5].m_ClientRes = nValue;
  23892. if ( IniFile::ReadInt(&ini, szSection, "commerce", &nValue) == 1 )
  23893. this_0e->m_SceneInfo.m_pScene[v5].m_Commerce = nValue;
  23894. if ( IniFile::ReadInt(&ini, szSection, "PvpRuler", &nValue) == 1 )
  23895. this_0f->m_SceneInfo.m_pScene[v5].m_nPvpRuler = nValue;
  23896. else
  23897. this_0f->m_SceneInfo.m_pScene[v5].m_nPvpRuler = 0;
  23898. if ( IniFile::ReadInt(&ini, szSection, "NoPkPenalty", &nValue) == 1 )
  23899. this_0g->m_SceneInfo.m_pScene[v5].m_bNoPkPenalty = nValue == 1;
  23900. else
  23901. this_0g->m_SceneInfo.m_pScene[v5].m_bNoPkPenalty = 0;
  23902. if ( IniFile::ReadInt(&ini, szSection, "IsReLive", &nValue) == 1 )
  23903. this_0h->m_SceneInfo.m_pScene[v5].m_nIsReLive = nValue;
  23904. else
  23905. this_0h->m_SceneInfo.m_pScene[v5].m_nIsReLive = 0;
  23906. IniFile::ReadInt(&ini, 0, 0, &nBeginPlus);
  23907. if ( IniFile::ReadInt(&ini, szSection, asc_80C3048, &nValue) == 1 )
  23908. this_0i->m_SceneInfo.m_pScene[v5].m_ClientResEx = nValue;
  23909. IniFile::ReadInt(&ini, szSection, "EndPlus", &nEndPlus);
  23910. v9 = (int)&v8->m_SceneInfo.m_pScene[v5];
  23911. *(_DWORD *)(v9 + 556) = nBeginPlus;
  23912. i = ia + 1;
  23913. *(_DWORD *)(v9 + 564) = nEndPlus;
  23914. v4 = i;
  23915. ++v5;
  23916. }
  23917. while ( v8->m_SceneInfo.m_SceneCount > i );
  23918. }
  23919. DiskLog("./Log/Config", "Load SceneInfo.ini ...Only OK! ");
  23920. IniFile::~IniFile(&ini);
  23921. }
  23922.  
  23923. //----- (08059BCC) --------------------------------------------------------
  23924. void __cdecl Config::LoadSceneInfo(Config *const this)
  23925. {
  23926. Config::LoadSceneInfo_Only(this);
  23927. Config::LoadSceneInfo_ReLoad(this);
  23928. }
  23929.  
  23930. //----- (08059C34) --------------------------------------------------------
  23931. BOOL __cdecl Config::Init(Config *const this)
  23932. {
  23933. Config::LoadConfigInfo(this);
  23934. Config::LoadLoginInfo(this);
  23935. Config::LoadWorldInfo(this);
  23936. Config::LoadShareMemInfo(this);
  23937. Config::LoadBillingInfo(this);
  23938. Config::LoadMachineInfo(this);
  23939. Config::LoadServerInfo(this);
  23940. Config::LoadSceneInfo(this);
  23941. return 1;
  23942. }
  23943.  
  23944. //----- (08059CD0) --------------------------------------------------------
  23945. ID_t __cdecl Config::SceneID2ServerID(const Config *const this, SceneID_t sID)
  23946. {
  23947. if ( sID < 0 )
  23948. __assert__(
  23949. "../../Server/Server/Base/Config.cpp",
  23950. 0xBB5u,
  23951. "ID_t Config::SceneID2ServerID(SceneID_t) const",
  23952. "sID>=0");
  23953. if ( sID >= (signed int)this->m_SceneInfo.m_SceneCount )
  23954. __assert__(
  23955. "../../Server/Server/Base/Config.cpp",
  23956. 0xBB6u,
  23957. "ID_t Config::SceneID2ServerID(SceneID_t) const",
  23958. "sID<(INT)m_SceneInfo.m_SceneCount");
  23959. return this->m_SceneInfo.m_pScene[sID].m_ServerID;
  23960. }
  23961.  
  23962. //----- (08059D98) --------------------------------------------------------
  23963. ID_t __cdecl Config::Key2ServerID(const Config *const this, SM_KEY key)
  23964. {
  23965. UINT v2; // ecx
  23966. UINT v3; // edx
  23967. _SERVER_DATA *v4; // eax
  23968.  
  23969. if ( !key )
  23970. __assert__("../../Server/Server/Base/Config.cpp", 0xBC3u, "ID_t Config::Key2ServerID(SM_KEY) const", "key>0");
  23971. v2 = this->m_ServerInfo.m_ServerCount;
  23972. v3 = 0;
  23973. if ( !v2 )
  23974. return -1;
  23975. v4 = this->m_ServerInfo.m_pServer;
  23976. while ( !v4->m_EnableShareMem
  23977. || v4->m_ItemSerialKey != key && v4->m_PlayShopSMKey != key && v4->m_CommionShopSMKey != key )
  23978. {
  23979. ++v3;
  23980. ++v4;
  23981. if ( v2 <= v3 )
  23982. return -1;
  23983. }
  23984. return v4->m_ServerID;
  23985. }
  23986.  
  23987. //----- (08059E60) --------------------------------------------------------
  23988. int __cdecl Config::WorldID(int a2)
  23989. {
  23990. return *(signed __int16 *)(a2 + 1618);
  23991. }
  23992.  
  23993. //----- (08059E70) --------------------------------------------------------
  23994. void __cdecl _tcf_0_8(void *a1)
  23995. {
  23996. std::ios_base::Init::~Init(&std::__ioinit);
  23997. }
  23998.  
  23999. //----- (08059E80) --------------------------------------------------------
  24000. void __cdecl _tcf_1_0(void *a1)
  24001. {
  24002. Config::~Config(&g_Config);
  24003. }
  24004.  
  24005. //----- (08059E90) --------------------------------------------------------
  24006. void `global constructor keyed to'g_Config()
  24007. {
  24008. std::ios_base::Init::Init(&std::__ioinit);
  24009. __cxa_atexit(_tcf_0_8, 0, &_dso_handle);
  24010. Config::Config(&g_Config);
  24011. __cxa_atexit(_tcf_1_0, 0, &_dso_handle);
  24012. }
  24013. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  24014.  
  24015. //----- (08059EDC) --------------------------------------------------------
  24016. void __cdecl _BILLING_DATA::~_BILLING_DATA(_DWORD *a2)
  24017. {
  24018. *a2 = off_80BD1A8;
  24019. }
  24020. // 80BD1A8: using guessed type _DWORD (__cdecl *off_80BD1A8[2])(_BILLING_DATA *this);
  24021.  
  24022. //----- (08059EEC) --------------------------------------------------------
  24023. void __cdecl _BILLING_DATA::~_BILLING_DATA(IPRegionTable *const a2)
  24024. {
  24025. a2->_vptr_IPRegionTable = (int (**)(...))off_80BD1A8;
  24026. operator delete(a2);
  24027. }
  24028. // 80BD1A8: using guessed type _DWORD (__cdecl *off_80BD1A8[2])(_BILLING_DATA *this);
  24029.  
  24030. //----- (08059F00) --------------------------------------------------------
  24031. void __cdecl _BILLING_INFO::~_BILLING_INFO(_BILLING_INFO *const this)
  24032. {
  24033. _BILLING_DATA **v1; // ecx
  24034. INT v2; // eax
  24035. INT v3; // ebx
  24036. _BILLING_DATA *v4; // edx
  24037.  
  24038. v1 = this->m_pInfo;
  24039. this->_vptr__BILLING_INFO = (int (**)(...))off_80BD1D0;
  24040. if ( v1 )
  24041. {
  24042. v2 = this->m_nNumber;
  24043. if ( v2 > 0 )
  24044. {
  24045. v3 = 0;
  24046. do
  24047. {
  24048. while ( 1 )
  24049. {
  24050. v4 = v1[v3];
  24051. if ( v4 )
  24052. break;
  24053. if ( v2 <= ++v3 )
  24054. goto LABEL_7;
  24055. }
  24056. (*((void (__cdecl **)(_BILLING_DATA *))v4->_vptr__BILLING_DATA + 1))(v1[v3]);
  24057. v1 = this->m_pInfo;
  24058. v1[v3] = 0;
  24059. v2 = this->m_nNumber;
  24060. ++v3;
  24061. }
  24062. while ( v2 > v3 );
  24063. LABEL_7:
  24064. if ( v1 )
  24065. operator delete[](v1);
  24066. this->m_pInfo = 0;
  24067. }
  24068. }
  24069. this->m_nNumber = 0;
  24070. this->m_nCur = 0;
  24071. this->m_bUse = 0;
  24072. }
  24073. // 80BD1D0: using guessed type _DWORD (__cdecl *off_80BD1D0[2])(_BILLING_INFO *this);
  24074.  
  24075. //----- (08059F84) --------------------------------------------------------
  24076. void __cdecl _BILLING_INFO::~_BILLING_INFO(_BILLING_INFO *const this)
  24077. {
  24078. _BILLING_DATA **v1; // ecx
  24079. INT v2; // eax
  24080. INT v3; // ebx
  24081. _BILLING_DATA *v4; // edx
  24082.  
  24083. v1 = this->m_pInfo;
  24084. this->_vptr__BILLING_INFO = (int (**)(...))off_80BD1D0;
  24085. if ( v1 )
  24086. {
  24087. v2 = this->m_nNumber;
  24088. if ( v2 > 0 )
  24089. {
  24090. v3 = 0;
  24091. do
  24092. {
  24093. while ( 1 )
  24094. {
  24095. v4 = v1[v3];
  24096. if ( v4 )
  24097. break;
  24098. if ( v2 <= ++v3 )
  24099. goto LABEL_7;
  24100. }
  24101. (*((void (__cdecl **)(_BILLING_DATA *))v4->_vptr__BILLING_DATA + 1))(v1[v3]);
  24102. v1 = this->m_pInfo;
  24103. v1[v3] = 0;
  24104. v2 = this->m_nNumber;
  24105. ++v3;
  24106. }
  24107. while ( v2 > v3 );
  24108. LABEL_7:
  24109. if ( v1 )
  24110. operator delete[](v1);
  24111. this->m_pInfo = 0;
  24112. }
  24113. }
  24114. this->m_nNumber = 0;
  24115. this->m_nCur = 0;
  24116. this->m_bUse = 0;
  24117. operator delete((IPRegionTable *const )this);
  24118. }
  24119. // 80BD1D0: using guessed type _DWORD (__cdecl *off_80BD1D0[2])(_BILLING_INFO *this);
  24120.  
  24121. //----- (0805A00C) --------------------------------------------------------
  24122. void __cdecl Log::Log(Log *const this)
  24123. {
  24124. pthread_mutex_t *v1; // ebx
  24125. signed int v2; // esi
  24126. signed int v3; // eax
  24127.  
  24128. v1 = (pthread_mutex_t *)this->m_LogLock;
  24129. v2 = 28;
  24130. do
  24131. {
  24132. --v2;
  24133. pthread_mutex_init(v1, 0);
  24134. ++v1;
  24135. }
  24136. while ( v2 != -1 );
  24137. v3 = 0;
  24138. do
  24139. {
  24140. this->m_LogCache[v3] = 0;
  24141. this->m_LogPos[v3] = 0;
  24142. this->m_LogDiskSize[v3] = 0;
  24143. this->m_LogDiskHold[v3++] = 0;
  24144. }
  24145. while ( v3 <= 28 );
  24146. this->m_pLogSaveDisk = 0;
  24147. this->m_CacheSize = 0;
  24148. this->m_CurDay = 0;
  24149. }
  24150.  
  24151. //----- (0805A094) --------------------------------------------------------
  24152. void __cdecl Log::Log(Log *const this)
  24153. {
  24154. pthread_mutex_t *v1; // ebx
  24155. signed int v2; // esi
  24156. signed int v3; // eax
  24157.  
  24158. v1 = (pthread_mutex_t *)this->m_LogLock;
  24159. v2 = 28;
  24160. do
  24161. {
  24162. --v2;
  24163. pthread_mutex_init(v1, 0);
  24164. ++v1;
  24165. }
  24166. while ( v2 != -1 );
  24167. v3 = 0;
  24168. do
  24169. {
  24170. this->m_LogCache[v3] = 0;
  24171. this->m_LogPos[v3] = 0;
  24172. this->m_LogDiskSize[v3] = 0;
  24173. this->m_LogDiskHold[v3++] = 0;
  24174. }
  24175. while ( v3 <= 28 );
  24176. this->m_pLogSaveDisk = 0;
  24177. this->m_CacheSize = 0;
  24178. this->m_CurDay = 0;
  24179. }
  24180.  
  24181. //----- (0805A11C) --------------------------------------------------------
  24182. void __cdecl Log::~Log(Log *const this)
  24183. {
  24184. signed int v1; // ebx
  24185. pthread_mutex_t *i; // ebx
  24186.  
  24187. v1 = 0;
  24188. do
  24189. {
  24190. while ( !this->m_LogCache[v1] )
  24191. {
  24192. this->m_LogPos[v1++] = 0;
  24193. if ( v1 > 28 )
  24194. goto LABEL_5;
  24195. }
  24196. operator delete[](this->m_LogCache[v1]);
  24197. this->m_LogCache[v1] = 0;
  24198. this->m_LogPos[v1++] = 0;
  24199. }
  24200. while ( v1 <= 28 );
  24201. LABEL_5:
  24202. if ( this->m_pLogSaveDisk )
  24203. {
  24204. operator delete[](this->m_pLogSaveDisk);
  24205. this->m_pLogSaveDisk = 0;
  24206. }
  24207. this->m_CacheSize = 0;
  24208. if ( this != (Log *const )-232 )
  24209. {
  24210. for ( i = (pthread_mutex_t *)this->m_LogDiskSize; this->m_LogLock != (MyLock *)i; pthread_mutex_destroy(i) )
  24211. --i;
  24212. }
  24213. }
  24214.  
  24215. //----- (0805A1BC) --------------------------------------------------------
  24216. void __cdecl Log::~Log(Log *const this)
  24217. {
  24218. signed int v1; // ebx
  24219. pthread_mutex_t *i; // ebx
  24220.  
  24221. v1 = 0;
  24222. do
  24223. {
  24224. while ( !this->m_LogCache[v1] )
  24225. {
  24226. this->m_LogPos[v1++] = 0;
  24227. if ( v1 > 28 )
  24228. goto LABEL_5;
  24229. }
  24230. operator delete[](this->m_LogCache[v1]);
  24231. this->m_LogCache[v1] = 0;
  24232. this->m_LogPos[v1++] = 0;
  24233. }
  24234. while ( v1 <= 28 );
  24235. LABEL_5:
  24236. if ( this->m_pLogSaveDisk )
  24237. {
  24238. operator delete[](this->m_pLogSaveDisk);
  24239. this->m_pLogSaveDisk = 0;
  24240. }
  24241. this->m_CacheSize = 0;
  24242. if ( this != (Log *const )-232 )
  24243. {
  24244. for ( i = (pthread_mutex_t *)this->m_LogDiskSize; this->m_LogLock != (MyLock *)i; pthread_mutex_destroy(i) )
  24245. --i;
  24246. }
  24247. }
  24248.  
  24249. //----- (0805A25C) --------------------------------------------------------
  24250. BOOL __cdecl Log::Init(Log *const this, INT cachesize)
  24251. {
  24252. signed int v2; // ebx
  24253. CHAR *v3; // eax
  24254. CHAR *v4; // eax
  24255. CHAR *v5; // edx
  24256. BOOL result; // eax
  24257.  
  24258. if ( cachesize <= 0 )
  24259. this->m_CacheSize = 0x400000;
  24260. else
  24261. this->m_CacheSize = cachesize;
  24262. v2 = 0;
  24263. do
  24264. {
  24265. v3 = (CHAR *)operator new[](this->m_CacheSize);
  24266. this->m_LogCache[v2] = v3;
  24267. if ( !v3 )
  24268. return 0;
  24269. memset(v3, 0, this->m_CacheSize);
  24270. this->m_LogPos[v2] = 0;
  24271. this->m_LogDiskSize[v2] = 0;
  24272. this->m_LogDiskHold[v2++] = 0;
  24273. }
  24274. while ( v2 <= 28 );
  24275. v4 = (CHAR *)operator new[](this->m_CacheSize);
  24276. v5 = v4;
  24277. this->m_pLogSaveDisk = v4;
  24278. result = 0;
  24279. if ( v5 )
  24280. {
  24281. memset(v5, 0, this->m_CacheSize);
  24282. result = 1;
  24283. }
  24284. return result;
  24285. }
  24286.  
  24287. //----- (0805A358) --------------------------------------------------------
  24288. void __cdecl Log::DisplayLog(Log *const this, const CHAR *szMsg)
  24289. {
  24290. if ( g_Command_LogPrint == 1 )
  24291. printf("%s", szMsg);
  24292. }
  24293.  
  24294. //----- (0805A3CC) --------------------------------------------------------
  24295. void __cdecl Log::CacheLog(Log *const this, INT logid, const CHAR *szMsg)
  24296. {
  24297. signed int v3; // edi
  24298. int v4; // edx
  24299. int v5; // eax
  24300.  
  24301. if ( g_Command_LogActive == 1 && (unsigned int)logid <= 0x1C )
  24302. {
  24303. v3 = strlen(szMsg);
  24304. if ( v3 > 0 )
  24305. {
  24306. pthread_mutex_lock(&this->m_LogLock[logid].m_Mutex);
  24307. v4 = this->m_LogPos[logid];
  24308. if ( v4 < this->m_CacheSize - v3 )
  24309. {
  24310. memcpy(&this->m_LogCache[logid][v4], szMsg, v3);
  24311. v5 = v3 + this->m_LogDiskSize[logid];
  24312. this->m_LogPos[logid] += v3;
  24313. if ( v5 <= 0x40000000 )
  24314. {
  24315. this->m_LogDiskSize[logid] = v5;
  24316. }
  24317. else
  24318. {
  24319. ++this->m_LogDiskHold[logid];
  24320. this->m_LogDiskSize[logid] = v3;
  24321. }
  24322. }
  24323. pthread_mutex_unlock(&this->m_LogLock[logid].m_Mutex);
  24324. Log::DisplayLog(this, szMsg);
  24325. }
  24326. }
  24327. }
  24328.  
  24329. //----- (0805A4DC) --------------------------------------------------------
  24330. void __cdecl Log::GetLogName(Log *const this, INT logid, CHAR *szName)
  24331. {
  24332. void *v3; // eax
  24333. TimeManager *v4; // ecx
  24334. int v5; // eax
  24335. signed int v6; // eax
  24336.  
  24337. if ( (unsigned int)logid <= 0x1C && szName )
  24338. {
  24339. v3 = memset(szName, 0, 0x104u);
  24340. v4 = g_pTimeManager;
  24341. if ( g_pTimeManager )
  24342. {
  24343. v5 = g_pTimeManager->m_TM.tm_mday;
  24344. if ( this->m_CurDay != v5 )
  24345. {
  24346. this->m_CurDay = v5;
  24347. v6 = 0;
  24348. do
  24349. {
  24350. this->m_LogDiskSize[v6] = 0;
  24351. this->m_LogDiskHold[v6++] = 0;
  24352. }
  24353. while ( v6 <= 28 );
  24354. }
  24355. snprintf(
  24356. szName,
  24357. 0x103u,
  24358. "%s_%.4d-%.2d-%.2d-%d.%u.log",
  24359. g_pLogFileName[logid],
  24360. v4->m_TM.tm_year + 1900,
  24361. v4->m_TM.tm_mon + 1,
  24362. v4->m_TM.tm_mday,
  24363. this->m_LogDiskHold[logid],
  24364. g_LogFileNameFix_Last);
  24365. }
  24366. else
  24367. {
  24368. snprintf(szName, 0x103u, "%s_%.4d-%.2d-%.2d.log", g_pLogFileName[logid], 2000, 1, 1, v3);
  24369. }
  24370. }
  24371. }
  24372.  
  24373. //----- (0805A5B8) --------------------------------------------------------
  24374. #error "805A6C2: call analysis failed (funcsize=82)"
  24375.  
  24376. //----- (0805A6E8) --------------------------------------------------------
  24377. #error "805A751: positive sp value has been found (funcsize=32)"
  24378.  
  24379. //----- (0805A768) --------------------------------------------------------
  24380. #error "805A7EC: call analysis failed (funcsize=78)"
  24381.  
  24382. //----- (0805A898) --------------------------------------------------------
  24383. BOOL LogSystem_Init()
  24384. {
  24385. Log *v0; // ebx
  24386.  
  24387. if ( g_pLog )
  24388. __assert__("../../Server/Server/Base/Log.cpp", 0x14Du, "BOOL LogSystem_Init()", "FALSE");
  24389. v0 = (Log *)operator new(0x494u);
  24390. Log::Log(v0);
  24391. g_pLog = v0;
  24392. if ( !v0 )
  24393. __assert__("../../Server/Server/Base/Log.cpp", 0x147u, "BOOL LogSystem_Init()", "g_pLog");
  24394. if ( !Log::Init(g_pLog, 0x400000) )
  24395. __assert__("../../Server/Server/Base/Log.cpp", 0x149u, "BOOL LogSystem_Init()", "bRet");
  24396. return 1;
  24397. }
  24398.  
  24399. //----- (0805A990) --------------------------------------------------------
  24400. void LogSystem_Flush()
  24401. {
  24402. if ( g_pLog )
  24403. Log::FlushLog_All(g_pLog);
  24404. }
  24405.  
  24406. //----- (0805AA00) --------------------------------------------------------
  24407. BOOL __cdecl LogSystem_CheckDebugLogSize(CHAR *strMessage, INT nSize)
  24408. {
  24409. BOOL result; // eax
  24410.  
  24411. result = 0;
  24412. if ( g_pLog )
  24413. result = Log::CheckDebugLogSize(g_pLog, strMessage, nSize);
  24414. return result;
  24415. }
  24416.  
  24417. //----- (0805AA74) --------------------------------------------------------
  24418. void CacheLog(INT logid, const CHAR *msg, ...)
  24419. {
  24420. TimeManager *v2; // ebx
  24421. UINT v3; // edx
  24422. UINT v4; // eax
  24423. int v5; // eax
  24424. double v6; // ST28_8
  24425. int v7; // ST24_4
  24426. int v8; // ST20_4
  24427. int v9; // ST1C_4
  24428. int v10; // ST18_4
  24429. int v11; // ST14_4
  24430. int v12; // ST10_4
  24431. int v13; // eax
  24432. CHAR szTime[128]; // [esp+0h] [ebp-1098h]
  24433. CHAR szBuff[4096]; // [esp+80h] [ebp-1018h]
  24434. va_list __varargs; // [esp+10A8h] [ebp+10h]
  24435.  
  24436. va_start(__varargs, msg);
  24437. if ( g_Command_LogActive == 1 && (unsigned int)logid <= 0x1C )
  24438. {
  24439. memset(szBuff, 0, 0x1000u);
  24440. vsnprintf(szBuff, 0xF7Fu, msg, __varargs);
  24441. if ( g_pTimeManager )
  24442. {
  24443. TimeManager::SetTime((int)g_pTimeManager);
  24444. memset(szTime, 0, 0x80u);
  24445. v2 = g_pTimeManager;
  24446. TimeManager::CurrentTime((int)g_pTimeManager);
  24447. v3 = v2->m_CurrentTime;
  24448. v4 = v2->m_StartTime;
  24449. if ( v3 >= v2->m_StartTime )
  24450. v5 = v3 - v4;
  24451. else
  24452. v5 = v3 - v4 - 1;
  24453. v6 = (long double)(unsigned int)v5 / 1000.0;
  24454. v7 = g_pTimeManager->m_TM.tm_sec;
  24455. v8 = g_pTimeManager->m_TM.tm_min;
  24456. v9 = g_pTimeManager->m_TM.tm_hour;
  24457. v10 = g_pTimeManager->m_TM.tm_mday;
  24458. v11 = g_pTimeManager->m_TM.tm_mon + 1;
  24459. v12 = g_pTimeManager->m_TM.tm_year + 1900;
  24460. v13 = ThreadValueManager::GetCurrentThreadID();
  24461. snprintf(szTime, 0x7Fu, " (%d)(T0=%d-%d-%d_%d:%d:%d T1=%.4f)\n", v13, v12, v11, v10, v9, v8, v7, LODWORD(v6));
  24462. strncat(szBuff, szTime, 0x7Fu);
  24463. }
  24464. if ( g_pLog )
  24465. Log::CacheLog(g_pLog, logid, szBuff);
  24466. }
  24467. }
  24468. // 8049B18: using guessed type int __stdcall __cxa_end_catch(_DWORD);
  24469.  
  24470. //----- (0805AC14) --------------------------------------------------------
  24471. void CacheLog_MIPFormat(INT logid, const CHAR *msg, ...)
  24472. {
  24473. unsigned int v2; // kr04_4
  24474. int v3; // ecx
  24475. unsigned int v4; // kr08_4
  24476. CHAR szBuff[4096]; // [esp+0h] [ebp-1018h]
  24477. va_list __varargs; // [esp+1028h] [ebp+10h]
  24478.  
  24479. va_start(__varargs, msg);
  24480. if ( g_Command_LogActive == 1 && (unsigned int)logid <= 0x1C )
  24481. {
  24482. szBuff[0] = 0;
  24483. if ( g_pTimeManager )
  24484. {
  24485. TimeManager::SetTime((int)g_pTimeManager);
  24486. snprintf(
  24487. szBuff,
  24488. 0x1000u,
  24489. "%d-%d-%d,%d:%d:%d,",
  24490. g_pTimeManager->m_TM.tm_year + 1900,
  24491. g_pTimeManager->m_TM.tm_mon + 1,
  24492. g_pTimeManager->m_TM.tm_mday,
  24493. g_pTimeManager->m_TM.tm_hour,
  24494. g_pTimeManager->m_TM.tm_min,
  24495. g_pTimeManager->m_TM.tm_sec);
  24496. szBuff[4095] = 0;
  24497. }
  24498. v2 = strlen(szBuff) + 1;
  24499. vsnprintf(&szBuff[v2 - 1], 4095 - (v2 - 1), msg, __varargs);
  24500. szBuff[4095] = 0;
  24501. v4 = strlen(szBuff) + 1;
  24502. v3 = v4 - 1;
  24503. if ( v4 - 1 <= 0xFFE )
  24504. {
  24505. szBuff[v3] = 10;
  24506. szBuff[v3 + 1] = 0;
  24507. }
  24508. if ( g_pLog )
  24509. Log::CacheLog(g_pLog, logid, szBuff);
  24510. }
  24511. }
  24512. // 8049B18: using guessed type int __stdcall __cxa_end_catch(_DWORD);
  24513.  
  24514. //----- (0805ADA0) --------------------------------------------------------
  24515. void DiskLog(CHAR *filename, const CHAR *msg, ...)
  24516. {
  24517. FILE *v2; // eax
  24518. FILE *v3; // esi
  24519. TimeManager *v4; // ebx
  24520. UINT v5; // edx
  24521. UINT v6; // eax
  24522. int v7; // eax
  24523. double v8; // ST28_8
  24524. int v9; // ST24_4
  24525. int v10; // ST20_4
  24526. int v11; // ST1C_4
  24527. int v12; // ST18_4
  24528. int v13; // ST14_4
  24529. int v14; // ST10_4
  24530. int v15; // eax
  24531. CHAR szFileName[260]; // [esp+10h] [ebp-11A8h]
  24532. CHAR szTime[128]; // [esp+120h] [ebp-1098h]
  24533. CHAR szBuff[4096]; // [esp+1A0h] [ebp-1018h]
  24534. va_list __varargs; // [esp+11C8h] [ebp+10h]
  24535.  
  24536. va_start(__varargs, msg);
  24537. if ( g_Command_LogActive == 1 && filename && *filename )
  24538. {
  24539. memset(szBuff, 0, 0x1000u);
  24540. vsnprintf(szBuff, 0xF7Fu, msg, __varargs);
  24541. if ( g_pTimeManager )
  24542. {
  24543. TimeManager::SetTime((int)g_pTimeManager);
  24544. memset(szTime, 0, 0x80u);
  24545. v4 = g_pTimeManager;
  24546. TimeManager::CurrentTime((int)g_pTimeManager);
  24547. v5 = v4->m_CurrentTime;
  24548. v6 = v4->m_StartTime;
  24549. if ( v5 >= v4->m_StartTime )
  24550. v7 = v5 - v6;
  24551. else
  24552. v7 = v5 - v6 - 1;
  24553. v8 = (long double)(unsigned int)v7 / 1000.0;
  24554. v9 = g_pTimeManager->m_TM.tm_sec;
  24555. v10 = g_pTimeManager->m_TM.tm_min;
  24556. v11 = g_pTimeManager->m_TM.tm_hour;
  24557. v12 = g_pTimeManager->m_TM.tm_mday;
  24558. v13 = g_pTimeManager->m_TM.tm_mon + 1;
  24559. v14 = g_pTimeManager->m_TM.tm_year + 1900;
  24560. v15 = ThreadValueManager::GetCurrentThreadID();
  24561. snprintf(szTime, 0x7Fu, " (%d)(T0=%d-%d-%d_%d:%d:%d T1=%.4f)\n", v15, v14, v13, v12, v11, v10, v9, LODWORD(v8));
  24562. strncat(szBuff, szTime, 0x7Fu);
  24563. }
  24564. memset(szFileName, 0, 0x104u);
  24565. sprintf(
  24566. szFileName,
  24567. "%s_%.4d-%.2d-%.2d.%u.log",
  24568. filename,
  24569. g_LogFileNameFix / 0x2710,
  24570. g_LogFileNameFix % 0x2710 / 0x64);
  24571. pthread_mutex_lock(&g_log_lock.m_Mutex);
  24572. v2 = fopen(szFileName, "a+");
  24573. v3 = v2;
  24574. if ( v2 )
  24575. {
  24576. fwrite(szBuff, 1u, strlen(szBuff), v2);
  24577. fclose(v3);
  24578. }
  24579. pthread_mutex_unlock(&g_log_lock.m_Mutex);
  24580. if ( g_Command_LogPrint == 1 )
  24581. printf("%s", szBuff);
  24582. }
  24583. }
  24584. // 8049B18: using guessed type int __stdcall __cxa_end_catch(_DWORD);
  24585.  
  24586. //----- (0805B050) --------------------------------------------------------
  24587. void __cdecl GetSerialKey(CHAR *pSerial, INT nZoneId, INT nWorldId, INT nServerId)
  24588. {
  24589. int v4; // ebx
  24590. int v5; // esi
  24591. int v6; // edi
  24592. INT v7; // ST2C_4
  24593. UINT v8; // ST28_4
  24594. UINT v9; // eax
  24595.  
  24596. if ( !pSerial )
  24597. __assert__("../../Server/Server/Base/Log.cpp", 0x24Eu, "void GetSerialKey(CHAR*, INT, INT, INT)", "pSerial");
  24598. v4 = g_pTimeManager->m_TM.tm_sec;
  24599. v5 = g_pTimeManager->m_TM.tm_min;
  24600. v6 = g_pTimeManager->m_TM.tm_hour;
  24601. v7 = GetSerialKey(char *,int,int,int)::s_Step;
  24602. v8 = TimeManager::CurrentTime((int)g_pTimeManager) % 0x3E8;
  24603. v9 = TimeManager::GetDayTime(g_pTimeManager);
  24604. snprintf(pSerial, 0x16u, "%.1d%.3d%.1d%.4d%.2d%.2d%.2d%.3d%.3d", nZoneId, nWorldId, nServerId, v9, v6, v5, v4, v8, v7);
  24605. if ( GetSerialKey(char *,int,int,int)::s_Step + 1 <= 999 )
  24606. ++GetSerialKey(char *,int,int,int)::s_Step;
  24607. else
  24608. GetSerialKey(char *,int,int,int)::s_Step = 100;
  24609. }
  24610.  
  24611. //----- (0805B160) --------------------------------------------------------
  24612. void __cdecl _tcf_0_9(void *a1)
  24613. {
  24614. std::ios_base::Init::~Init(&std::__ioinit);
  24615. }
  24616.  
  24617. //----- (0805B170) --------------------------------------------------------
  24618. void __cdecl _tcf_1_1(void *a1)
  24619. {
  24620. pthread_mutex_destroy(&g_log_lock.m_Mutex);
  24621. }
  24622.  
  24623. //----- (0805B180) --------------------------------------------------------
  24624. void `global constructor keyed to'g_log_lock()
  24625. {
  24626. std::ios_base::Init::Init(&std::__ioinit);
  24627. __cxa_atexit(_tcf_0_9, 0, &_dso_handle);
  24628. pthread_mutex_init(&g_log_lock.m_Mutex, 0);
  24629. __cxa_atexit(_tcf_1_1, 0, &_dso_handle);
  24630. }
  24631. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  24632.  
  24633. //----- (0805B1CC) --------------------------------------------------------
  24634. #error "805B411: positive sp value has been found (funcsize=191)"
  24635.  
  24636. //----- (0805B46C) --------------------------------------------------------
  24637. #error "805B5ED: positive sp value has been found (funcsize=106)"
  24638.  
  24639. //----- (0805B6DC) --------------------------------------------------------
  24640. void __cdecl SavePetLog(PET_LOG_PARAM *pLogParam)
  24641. {
  24642. INT v1; // STA4_4
  24643.  
  24644. v1 = pLogParam->PetDBLoad.m_nLevel;
  24645. CacheLog(
  24646. 8,
  24647. g_PetLogFormat,
  24648. pLogParam->CharGUID,
  24649. pLogParam->TargetGUID,
  24650. pLogParam->OPType,
  24651. pLogParam->SceneID,
  24652. pLogParam->XPos,
  24653. pLogParam->ZPos,
  24654. pLogParam->PetDBLoad.m_GUID.m_uHighSection,
  24655. pLogParam->PetDBLoad.m_GUID.m_uLowSection,
  24656. pLogParam->PetDBLoad.m_nDataID,
  24657. pLogParam->PetDBLoad.m_BaseAttrLevel1.m_pAttr[0],
  24658. pLogParam->PetDBLoad.m_BaseAttrLevel1.m_pAttr[2],
  24659. pLogParam->PetDBLoad.m_BaseAttrLevel1.m_pAttr[4],
  24660. pLogParam->PetDBLoad.m_BaseAttrLevel1.m_pAttr[1],
  24661. pLogParam->PetDBLoad.m_BaseAttrLevel1.m_pAttr[3],
  24662. pLogParam->PetDBLoad.m_nStrPerception,
  24663. pLogParam->PetDBLoad.m_nConPerception,
  24664. pLogParam->PetDBLoad.m_nDexPerception,
  24665. pLogParam->PetDBLoad.m_nSprPerception,
  24666. pLogParam->PetDBLoad.m_nIntPerception,
  24667. pLogParam->PetDBLoad.m_nRemainPoint,
  24668. pLogParam->PetDBLoad.m_fGrowRate,
  24669. pLogParam->PetDBLoad.m_nGenGu,
  24670. pLogParam->PetDBLoad.m_SkillList[0].m_nSkillID,
  24671. pLogParam->PetDBLoad.m_SkillList[1].m_nSkillID,
  24672. pLogParam->PetDBLoad.m_SkillList[2].m_nSkillID,
  24673. pLogParam->PetDBLoad.m_SkillList[3].m_nSkillID,
  24674. pLogParam->PetDBLoad.m_SkillList[4].m_nSkillID,
  24675. pLogParam->PetDBLoad.m_SkillList[5].m_nSkillID,
  24676. pLogParam->PetDBLoad.m_SkillList[6].m_nSkillID,
  24677. pLogParam->PetDBLoad.m_SkillList[7].m_nSkillID,
  24678. pLogParam->PetDBLoad.m_SkillList[8].m_nSkillID,
  24679. pLogParam->PetDBLoad.m_SkillList[9].m_nSkillID,
  24680. pLogParam->PetDBLoad.m_SkillList[10].m_nSkillID,
  24681. pLogParam->PetDBLoad.m_SkillList[11].m_nSkillID,
  24682. pLogParam->PetDBLoad.m_SkillList[12].m_nSkillID,
  24683. pLogParam->PetDBLoad.m_nSavvy);
  24684. CacheLog_MIPFormat(
  24685. 19,
  24686. g_PetLogFormat_MIP,
  24687. pLogParam->CharGUID,
  24688. pLogParam->TargetGUID,
  24689. pLogParam->OPType,
  24690. pLogParam->SceneID,
  24691. pLogParam->XPos,
  24692. pLogParam->ZPos,
  24693. pLogParam->PetDBLoad.m_GUID.m_uHighSection,
  24694. pLogParam->PetDBLoad.m_GUID.m_uLowSection,
  24695. pLogParam->PetDBLoad.m_nDataID,
  24696. pLogParam->PetDBLoad.m_BaseAttrLevel1.m_pAttr[0],
  24697. pLogParam->PetDBLoad.m_BaseAttrLevel1.m_pAttr[2],
  24698. pLogParam->PetDBLoad.m_BaseAttrLevel1.m_pAttr[4],
  24699. pLogParam->PetDBLoad.m_BaseAttrLevel1.m_pAttr[1],
  24700. pLogParam->PetDBLoad.m_BaseAttrLevel1.m_pAttr[3],
  24701. pLogParam->PetDBLoad.m_nStrPerception,
  24702. pLogParam->PetDBLoad.m_nConPerception,
  24703. pLogParam->PetDBLoad.m_nDexPerception,
  24704. pLogParam->PetDBLoad.m_nSprPerception,
  24705. pLogParam->PetDBLoad.m_nIntPerception,
  24706. pLogParam->PetDBLoad.m_nRemainPoint,
  24707. pLogParam->PetDBLoad.m_fGrowRate,
  24708. pLogParam->PetDBLoad.m_nGenGu,
  24709. pLogParam->PetDBLoad.m_SkillList[0].m_nSkillID,
  24710. pLogParam->PetDBLoad.m_SkillList[1].m_nSkillID,
  24711. pLogParam->PetDBLoad.m_SkillList[2].m_nSkillID,
  24712. pLogParam->PetDBLoad.m_SkillList[3].m_nSkillID,
  24713. pLogParam->PetDBLoad.m_SkillList[4].m_nSkillID,
  24714. pLogParam->PetDBLoad.m_SkillList[5].m_nSkillID,
  24715. pLogParam->PetDBLoad.m_SkillList[6].m_nSkillID,
  24716. pLogParam->PetDBLoad.m_SkillList[7].m_nSkillID,
  24717. pLogParam->PetDBLoad.m_SkillList[8].m_nSkillID,
  24718. pLogParam->PetDBLoad.m_SkillList[9].m_nSkillID,
  24719. pLogParam->PetDBLoad.m_SkillList[10].m_nSkillID,
  24720. pLogParam->PetDBLoad.m_SkillList[11].m_nSkillID,
  24721. pLogParam->PetDBLoad.m_SkillList[12].m_nSkillID,
  24722. pLogParam->PetDBLoad.m_nSavvy,
  24723. v1);
  24724. }
  24725.  
  24726. //----- (0805B934) --------------------------------------------------------
  24727. void __cdecl SaveSkillLog(SKILL_LOG_PARAM *pLogParam)
  24728. {
  24729. CacheLog(
  24730. 9,
  24731. g_SkillLogFormat,
  24732. pLogParam->CharGUID,
  24733. pLogParam->OPType,
  24734. pLogParam->SceneID,
  24735. pLogParam->XPos,
  24736. pLogParam->ZPos,
  24737. pLogParam->SkillID,
  24738. pLogParam->Level,
  24739. pLogParam->Count);
  24740. }
  24741.  
  24742. //----- (0805B9C0) --------------------------------------------------------
  24743. void __cdecl SaveXinFaLog(XINFA_LOG_PARAM *pLogParam)
  24744. {
  24745. CacheLog(
  24746. 10,
  24747. g_XinFaLogFormat,
  24748. pLogParam->CharGUID,
  24749. pLogParam->OPType,
  24750. pLogParam->SceneID,
  24751. pLogParam->XPos,
  24752. pLogParam->ZPos,
  24753. pLogParam->XinFaID,
  24754. pLogParam->Level,
  24755. pLogParam->Count);
  24756. }
  24757.  
  24758. //----- (0805BA4C) --------------------------------------------------------
  24759. void __cdecl SaveAbilityLog(ABILITY_LOG_PARAM *pLogParam)
  24760. {
  24761. CacheLog(
  24762. 11,
  24763. g_AbilityLogFormat,
  24764. pLogParam->CharGUID,
  24765. pLogParam->OPType,
  24766. pLogParam->SceneID,
  24767. pLogParam->XPos,
  24768. pLogParam->ZPos,
  24769. pLogParam->AbilityID,
  24770. pLogParam->Level,
  24771. pLogParam->Count);
  24772. }
  24773.  
  24774. //----- (0805BAD8) --------------------------------------------------------
  24775. void __cdecl SaveMissionLog(MISSION_LOG_PARAM *pLogParam)
  24776. {
  24777. CacheLog(
  24778. 13,
  24779. g_MissionLogFormat,
  24780. pLogParam->CharGUID,
  24781. pLogParam->OPType,
  24782. pLogParam->SceneID,
  24783. pLogParam->XPos,
  24784. pLogParam->ZPos,
  24785. pLogParam->idMission,
  24786. pLogParam->idScript,
  24787. pLogParam->yFlags,
  24788. pLogParam->aParam[0],
  24789. pLogParam->aParam[1],
  24790. pLogParam->aParam[2],
  24791. pLogParam->aParam[3],
  24792. pLogParam->aParam[4],
  24793. pLogParam->aParam[5],
  24794. pLogParam->aParam[6],
  24795. pLogParam->aParam[7],
  24796. pLogParam->nDoneFlagIndex,
  24797. pLogParam->nDoneFlagValue,
  24798. pLogParam->nDataIndex,
  24799. pLogParam->nDataValue);
  24800. }
  24801.  
  24802. //----- (0805BB88) --------------------------------------------------------
  24803. void __cdecl SaveExpLog(EXP_LOG_PARAM *pLogParam)
  24804. {
  24805. CacheLog(
  24806. 18,
  24807. g_ExpLogFormat,
  24808. pLogParam->CharGUID,
  24809. pLogParam->OPType,
  24810. pLogParam->CurrentExp,
  24811. pLogParam->Count,
  24812. pLogParam->SceneID,
  24813. pLogParam->XPos,
  24814. pLogParam->ZPos,
  24815. pLogParam->szExtraInfo);
  24816. }
  24817.  
  24818. //----- (0805BC14) --------------------------------------------------------
  24819. void __cdecl Save_EfficiencyStatistic(EFFICIENCY_LOG_PARAM *pLogParam)
  24820. {
  24821. CacheLog(
  24822. 28,
  24823. g_EfficiencyLogFormat,
  24824. pLogParam->ServerID,
  24825. pLogParam->LogType,
  24826. pLogParam->SceneID,
  24827. pLogParam->ResultArray111[0],
  24828. pLogParam->ResultArray111[1],
  24829. pLogParam->ResultArray111[2],
  24830. pLogParam->ResultArray111[3],
  24831. pLogParam->ResultArray111[4],
  24832. pLogParam->ResultArray111[5],
  24833. pLogParam->ResultArray111[6],
  24834. pLogParam->ResultArray111[7],
  24835. pLogParam->ResultArray111[8],
  24836. pLogParam->ResultArray111[9],
  24837. pLogParam->ResultArray222[0],
  24838. pLogParam->ResultArray222[1],
  24839. pLogParam->ResultArray222[2],
  24840. pLogParam->ResultArray222[3],
  24841. pLogParam->ResultArray222[4],
  24842. pLogParam->ResultArray222[5],
  24843. pLogParam->ResultArray222[6],
  24844. pLogParam->ResultArray222[7],
  24845. pLogParam->ResultArray222[8],
  24846. pLogParam->ResultArray222[9]);
  24847. }
  24848.  
  24849. //----- (0805BCC4) --------------------------------------------------------
  24850. void __cdecl AuditSwitch(BOOL a2)
  24851. {
  24852. g_bAuditFlag = a2;
  24853. }
  24854.  
  24855. //----- (0805BCD4) --------------------------------------------------------
  24856. void __cdecl LogForAudit(AuditType_T::TypeEnum_T nType, GUID_t guidUser, const CHAR *szData)
  24857. {
  24858. const char *v3; // [esp-18h] [ebp-1130h]
  24859. GUID_t v4; // [esp-10h] [ebp-1128h]
  24860. const CHAR *v5; // [esp-Ch] [ebp-1124h]
  24861. CHAR szBuffer[4096]; // [esp+0h] [ebp-1118h]
  24862. CHAR szType[256]; // [esp+1000h] [ebp-118h]
  24863.  
  24864. if ( g_bAuditFlag )
  24865. {
  24866. if ( (unsigned int)nType > 0xC6 )
  24867. strncpy(szType, (const char *)&unk_80C4365, 0x100u);
  24868. else
  24869. strncpy(szType, g_szAuditType[nType], 0x100u);
  24870. szType[255] = 0;
  24871. if ( szData )
  24872. {
  24873. v5 = szData;
  24874. v4 = guidUser;
  24875. v3 = "%s,0X%08X,%s,";
  24876. }
  24877. else
  24878. {
  24879. v4 = guidUser;
  24880. v3 = "%s,0X%08X,";
  24881. }
  24882. snprintf(szBuffer, 0x1000u, v3, szType, v4, v5);
  24883. szBuffer[4095] = 0;
  24884. CacheLog(16, "%s", szBuffer);
  24885. }
  24886. }
  24887.  
  24888. //----- (0805BDC8) --------------------------------------------------------
  24889. void __cdecl Audit_BravertChallenge(GUID_t guidSelf, INT iSort)
  24890. {
  24891. CHAR szBuffer[256]; // [esp+0h] [ebp-108h]
  24892.  
  24893. snprintf(szBuffer, 0x100u, "%d");
  24894. szBuffer[255] = 0;
  24895. LogForAudit(TYPE_BRAVERYCHALLENGE, guidSelf, szBuffer);
  24896. }
  24897.  
  24898. //----- (0805BE50) --------------------------------------------------------
  24899. void __cdecl Audit_GuildLeague(GUID_t guidUser, INT numOfLeague, INT numOfGuildInLeague)
  24900. {
  24901. CHAR szBuffer[1024]; // [esp+Ch] [ebp-408h]
  24902.  
  24903. snprintf(szBuffer, 0x400u, "numOfLeague:%d, numOfGuildInLeague:%d", numOfLeague, numOfGuildInLeague);
  24904. LogForAudit(TYPE_GUILD_LEAGUE, guidUser, szBuffer);
  24905. }
  24906.  
  24907. //----- (0805BED4) --------------------------------------------------------
  24908. void __cdecl Audit_Stall(GUID_t guidUser, INT CoinType, BOOL bOpen)
  24909. {
  24910. const CHAR *v3; // eax
  24911.  
  24912. if ( bOpen == 1 )
  24913. {
  24914. v3 = "YO";
  24915. if ( CoinType != 1 )
  24916. v3 = "MO";
  24917. }
  24918. else
  24919. {
  24920. v3 = "YC";
  24921. if ( CoinType != 1 )
  24922. v3 = "MC";
  24923. }
  24924. LogForAudit(TYPE_STALL, guidUser, v3);
  24925. }
  24926.  
  24927. //----- (0805BF5C) --------------------------------------------------------
  24928. void __cdecl Audit_ItemSoldInStall(GUID_t guidUser, INT nItemDataID, const CHAR *szItemName)
  24929. {
  24930. CHAR szBuffer[256]; // [esp+0h] [ebp-108h]
  24931.  
  24932. if ( szItemName )
  24933. {
  24934. snprintf(szBuffer, 0x100u, "%d,%s", nItemDataID, szItemName);
  24935. szBuffer[255] = 0;
  24936. LogForAudit(TYPE_ITEM_SOLD_IN_STALL, guidUser, szBuffer);
  24937. }
  24938. else
  24939. {
  24940. CacheLog(1, "%s", "[Audit_ItemSoldInStall]: szItemName is empty!!", 0);
  24941. }
  24942. }
  24943.  
  24944. //----- (0805C004) --------------------------------------------------------
  24945. void __cdecl Audit_PetSoldInStall(GUID_t guidUser, INT nPetDataID, const CHAR *szPetName, INT nPetLevel)
  24946. {
  24947. CHAR szBuffer[256]; // [esp+0h] [ebp-108h]
  24948.  
  24949. if ( szPetName )
  24950. {
  24951. snprintf(szBuffer, 0x100u, "%d,%s,%d", nPetDataID, szPetName, nPetLevel);
  24952. szBuffer[255] = 0;
  24953. LogForAudit(TYPE_PET_SOLD_IN_STALL, guidUser, szBuffer);
  24954. }
  24955. else
  24956. {
  24957. CacheLog(1, "%s", "[Audit_PetCreate]: szPetName is empty!!", 0);
  24958. }
  24959. }
  24960.  
  24961. //----- (0805C0B4) --------------------------------------------------------
  24962. void __cdecl Audit_GemCompound(GUID_t guidUser, BOOL bSuccess, INT nStuffID0, INT nStuffID1, INT nStuffID2, INT nStuffID3, INT nStuffID4, INT nProductID)
  24963. {
  24964. CHAR szBuffer[128]; // [esp+8h] [ebp-88h]
  24965.  
  24966. snprintf(
  24967. szBuffer,
  24968. 0x80u,
  24969. "%d,%d,%d,%d,%d,%d,%d",
  24970. bSuccess,
  24971. nStuffID0,
  24972. nStuffID1,
  24973. nStuffID2,
  24974. nStuffID3,
  24975. nStuffID4,
  24976. nProductID);
  24977. szBuffer[127] = 0;
  24978. LogForAudit(TYPE_GEMCOMPOUND, guidUser, szBuffer);
  24979. }
  24980.  
  24981. //----- (0805C14C) --------------------------------------------------------
  24982. void __cdecl Audit_CaoYun(GUID_t guidUser, INT nRound, BOOL bStartOrEnd, INT nMoney)
  24983. {
  24984. const char *v4; // [esp-18h] [ebp-120h]
  24985. INT v5; // [esp-14h] [ebp-11Ch]
  24986. INT v6; // [esp-10h] [ebp-118h]
  24987. CHAR szBuffer[256]; // [esp+0h] [ebp-108h]
  24988.  
  24989. if ( bStartOrEnd == 1 )
  24990. {
  24991. v6 = nMoney;
  24992. v5 = nRound;
  24993. v4 = "%d,S,%d";
  24994. }
  24995. else
  24996. {
  24997. v6 = nMoney;
  24998. v5 = nRound;
  24999. v4 = "%d,E,%d";
  25000. }
  25001. snprintf(szBuffer, 0x100u, v4, v5, v6);
  25002. szBuffer[255] = 0;
  25003. LogForAudit(TYPE_CAO_YUN, guidUser, szBuffer);
  25004. }
  25005.  
  25006. //----- (0805C1EC) --------------------------------------------------------
  25007. void __cdecl Audit_ShuiLao(GUID_t guidUser)
  25008. {
  25009. LogForAudit(TYPE_SHUI_LAO, guidUser, 0);
  25010. }
  25011.  
  25012. //----- (0805C250) --------------------------------------------------------
  25013. void __cdecl Audit_SafeBox(GUID_t guidUser)
  25014. {
  25015. LogForAudit(TYPE_SAFEBOX_OPEN, guidUser, 0);
  25016. }
  25017.  
  25018. //----- (0805C2B4) --------------------------------------------------------
  25019. void __cdecl Audit_DaTu(GUID_t guidUser)
  25020. {
  25021. LogForAudit(TYPE_DA_TU, guidUser, 0);
  25022. }
  25023.  
  25024. //----- (0805C318) --------------------------------------------------------
  25025. void __cdecl Audit_WaBao(GUID_t guidUser)
  25026. {
  25027. LogForAudit(TYPE_WA_BAO, guidUser, 0);
  25028. }
  25029.  
  25030. //----- (0805C37C) --------------------------------------------------------
  25031. void __cdecl Audit_MonsterKilled(GUID_t guidUser, INT nMonsterDataID, const CHAR *szMonsterName)
  25032. {
  25033. CHAR szBuffer[256]; // [esp+0h] [ebp-108h]
  25034.  
  25035. if ( szMonsterName )
  25036. {
  25037. snprintf(szBuffer, 0x100u, "%d,%s", nMonsterDataID, szMonsterName);
  25038. szBuffer[255] = 0;
  25039. LogForAudit(TYPE_MONSTER_KILLED, guidUser, szBuffer);
  25040. }
  25041. else
  25042. {
  25043. CacheLog(1, "%s", "[Audit_MonsterKilled]: szMonsterName is empty!!", 0);
  25044. }
  25045. }
  25046.  
  25047. //----- (0805C424) --------------------------------------------------------
  25048. void __cdecl Audit_MenpaiMember(GUID_t guidUser, INT nMenpaiId)
  25049. {
  25050. int v2; // edx
  25051. CHAR szBuffer[256]; // [esp+0h] [ebp-108h]
  25052.  
  25053. if ( (unsigned int)nMenpaiId <= 8 )
  25054. {
  25055. snprintf(szBuffer, 0x100u, "%d");
  25056. szBuffer[255] = 0;
  25057. LogForAudit(TYPE_MENPAI_MEMBER, guidUser, szBuffer);
  25058. }
  25059. else
  25060. {
  25061. CacheLog(1, "%s", "[Audit_MenpaiMember]: nMenpaiId is incorrect!!", v2);
  25062. }
  25063. }
  25064.  
  25065. //----- (0805C4CC) --------------------------------------------------------
  25066. void __cdecl Audit_PetKilled(GUID_t guidUser, INT nPetDataID, const CHAR *szPetName)
  25067. {
  25068. int v3; // ecx
  25069. CHAR szBuffer[256]; // [esp+0h] [ebp-108h]
  25070.  
  25071. if ( szPetName )
  25072. {
  25073. snprintf(szBuffer, 0x100u, "%d,%s", nPetDataID, szPetName);
  25074. szBuffer[255] = 0;
  25075. LogForAudit(TYPE_PET_KILLED, guidUser, szBuffer);
  25076. }
  25077. else
  25078. {
  25079. CacheLog(1, "%s", "[Audit_PetKilled]: szPetName is empty!!", v3);
  25080. }
  25081. }
  25082.  
  25083. //----- (0805C574) --------------------------------------------------------
  25084. void __cdecl Audit_GPS(GUID_t guidUser, BOOL bCreate)
  25085. {
  25086. const CHAR *v2; // [esp-Ch] [ebp-10h]
  25087.  
  25088. if ( bCreate == 1 )
  25089. v2 = "S";
  25090. else
  25091. v2 = "U";
  25092. LogForAudit(TYPE_GPS, guidUser, v2);
  25093. }
  25094.  
  25095. //----- (0805C5E8) --------------------------------------------------------
  25096. void __cdecl Audit_Team(GUID_t guidUser)
  25097. {
  25098. LogForAudit(TYPE_TEAM, guidUser, 0);
  25099. }
  25100.  
  25101. //----- (0805C64C) --------------------------------------------------------
  25102. void __cdecl Audit_Challenge(GUID_t guidSelf, GUID_t guidTarget)
  25103. {
  25104. CHAR szBuffer[256]; // [esp+0h] [ebp-108h]
  25105.  
  25106. snprintf(szBuffer, 0x100u, "0X%08X");
  25107. szBuffer[255] = 0;
  25108. LogForAudit(TYPE_CHALLENGE, guidSelf, szBuffer);
  25109. }
  25110.  
  25111. //----- (0805C6D4) --------------------------------------------------------
  25112. void __cdecl Audit_PetHuanTong(GUID_t guidUser, INT nPetDataID, const CHAR *szPetName)
  25113. {
  25114. int v3; // ebx
  25115. CHAR szBuffer[256]; // [esp+0h] [ebp-108h]
  25116.  
  25117. if ( szPetName )
  25118. {
  25119. snprintf(szBuffer, 0x100u, "%d,%s", nPetDataID, szPetName);
  25120. szBuffer[255] = 0;
  25121. LogForAudit(TYPE_PET_HUAN_TONG, guidUser, szBuffer);
  25122. }
  25123. else
  25124. {
  25125. CacheLog(1, "%s", "[Audit_PetHuanTong]: szPetName is empty!!", v3);
  25126. }
  25127. }
  25128.  
  25129. //----- (0805C77C) --------------------------------------------------------
  25130. void __cdecl Audit_PetProCreate(GUID_t guidUser, INT nPetDataID, const CHAR *szPetName, BOOL bRegister)
  25131. {
  25132. const char *v4; // [esp-18h] [ebp-120h]
  25133. INT v5; // [esp-14h] [ebp-11Ch]
  25134. const CHAR *v6; // [esp-10h] [ebp-118h]
  25135. CHAR szBuffer[256]; // [esp+0h] [ebp-108h]
  25136.  
  25137. if ( szPetName )
  25138. {
  25139. if ( bRegister == 1 )
  25140. {
  25141. v6 = szPetName;
  25142. v5 = nPetDataID;
  25143. v4 = "%d,%s,R";
  25144. }
  25145. else
  25146. {
  25147. v6 = szPetName;
  25148. v5 = nPetDataID;
  25149. v4 = "%d,%s,T";
  25150. }
  25151. snprintf(szBuffer, 0x100u, v4, v5, v6);
  25152. szBuffer[255] = 0;
  25153. LogForAudit(TYPE_PET_PROCREATE, guidUser, szBuffer);
  25154. }
  25155. else
  25156. {
  25157. CacheLog(1, "%s", "[Audit_PetProCreate]: szPetName is empty!!", 0);
  25158. }
  25159. }
  25160.  
  25161. //----- (0805C83C) --------------------------------------------------------
  25162. void __cdecl Audit_PetCreate(GUID_t guidUser, INT nPetDataID, const CHAR *szType)
  25163. {
  25164. const CHAR *v3; // [esp-10h] [ebp-118h]
  25165. CHAR szBuffer[256]; // [esp+0h] [ebp-108h]
  25166.  
  25167. if ( szType )
  25168. v3 = szType;
  25169. else
  25170. v3 = "UN";
  25171. snprintf(szBuffer, 0x100u, "%d,%s", nPetDataID, v3);
  25172. szBuffer[255] = 0;
  25173. LogForAudit(TYPE_PET_CREATE, guidUser, szBuffer);
  25174. }
  25175.  
  25176. //----- (0805C8E4) --------------------------------------------------------
  25177. void __cdecl Audit_PetCatched(GUID_t guidUser, INT nPetDataID, const CHAR *szPetName)
  25178. {
  25179. CHAR szBuffer[256]; // [esp+0h] [ebp-108h]
  25180.  
  25181. if ( szPetName )
  25182. {
  25183. snprintf(szBuffer, 0x100u, "%d,%s", nPetDataID, szPetName);
  25184. szBuffer[255] = 0;
  25185. LogForAudit(TYPE_PET_CATCHED, guidUser, szBuffer);
  25186. }
  25187. else
  25188. {
  25189. CacheLog(1, "%s", "[Audit_PetCatched]: szPetName is empty!!", 0);
  25190. }
  25191. }
  25192.  
  25193. //----- (0805C98C) --------------------------------------------------------
  25194. void __cdecl Audit_MissionChain(GUID_t guidUser, INT nRound)
  25195. {
  25196. CHAR szBuffer[256]; // [esp+0h] [ebp-108h]
  25197.  
  25198. snprintf(szBuffer, 0x100u, "%d");
  25199. szBuffer[255] = 0;
  25200. LogForAudit(TYPE_MISSION_CIRCLE, guidUser, szBuffer);
  25201. }
  25202.  
  25203. //----- (0805CA14) --------------------------------------------------------
  25204. void __cdecl Audit_PlayerShopBuy(GUID_t guidUser)
  25205. {
  25206. LogForAudit(TYPE_PLAYER_SHOP_BUY, guidUser, 0);
  25207. }
  25208.  
  25209. //----- (0805CA78) --------------------------------------------------------
  25210. void __cdecl Audit_PlayerShopSold(GUID_t guidUser)
  25211. {
  25212. LogForAudit(TYPE_PLAYER_SHOP_SOLD, guidUser, 0);
  25213. }
  25214.  
  25215. //----- (0805CADC) --------------------------------------------------------
  25216. void __cdecl Audit_ItemSoldInPlayerShop(GUID_t guidUser, INT nItemDataID, const CHAR *szItemName)
  25217. {
  25218. CHAR szBuffer[256]; // [esp+0h] [ebp-108h]
  25219.  
  25220. if ( szItemName )
  25221. {
  25222. snprintf(szBuffer, 0x100u, "%d,%s", nItemDataID, szItemName);
  25223. szBuffer[255] = 0;
  25224. LogForAudit(TYPE_ITEM_SOLD_IN_PLAYER_SHOP, guidUser, szBuffer);
  25225. }
  25226. else
  25227. {
  25228. CacheLog(1, "%s", "[Audit_ItemSoldInPlayerShop]: szItemName is empty!!", 0);
  25229. }
  25230. }
  25231.  
  25232. //----- (0805CB84) --------------------------------------------------------
  25233. void __cdecl Audit_PetSoldInPlayerShop(GUID_t guidUser, INT nPetDataID, const CHAR *szPetName, INT nPetLevel)
  25234. {
  25235. CHAR szBuffer[256]; // [esp+0h] [ebp-108h]
  25236.  
  25237. if ( szPetName )
  25238. {
  25239. snprintf(szBuffer, 0x100u, "%d,%s,%d", nPetDataID, szPetName, nPetLevel);
  25240. szBuffer[255] = 0;
  25241. LogForAudit(TYPE_PET_SOLD_IN_PLAYER_SHOP, guidUser, szBuffer);
  25242. }
  25243. else
  25244. {
  25245. CacheLog(1, "%s", "[Audit_PetSoldInPlayerShop]: szPetName is empty!!", 0);
  25246. }
  25247. }
  25248.  
  25249. //----- (0805CC34) --------------------------------------------------------
  25250. void __cdecl Audit_PlayerShopRemoved(GUID_t guidUser)
  25251. {
  25252. LogForAudit(TYPE_PLAYER_SHOP_REMOVED, guidUser, "Not enough money for maintenance");
  25253. }
  25254.  
  25255. //----- (0805CC9C) --------------------------------------------------------
  25256. void __cdecl Audit_PlayerMarriage(GUID_t guidUserA, GUID_t guidUserB, INT nWeddingType)
  25257. {
  25258. CHAR szBuffer[128]; // [esp+Ch] [ebp-88h]
  25259.  
  25260. snprintf(szBuffer, 0x80u, "0X%08X,%d", guidUserB, nWeddingType);
  25261. szBuffer[127] = 0;
  25262. LogForAudit(TYPE_PLAYER_MARRIAGE, guidUserA, szBuffer);
  25263. }
  25264.  
  25265. //----- (0805CD24) --------------------------------------------------------
  25266. void __cdecl Audit_PlayerDivorce(GUID_t guidUserA, GUID_t guidUserB)
  25267. {
  25268. CHAR szBuffer[128]; // [esp+0h] [ebp-88h]
  25269.  
  25270. snprintf(szBuffer, 0x80u, "0X%08X,");
  25271. szBuffer[127] = 0;
  25272. LogForAudit(TYPE_PLAYER_DIVORCE, guidUserA, szBuffer);
  25273. }
  25274.  
  25275. //----- (0805CDAC) --------------------------------------------------------
  25276. void __cdecl Audit_ItemCreate(GUID_t guidHuman, INT nNum, INT nItemDataID, const CHAR *szItemName, const CHAR *szCreateBy)
  25277. {
  25278. int v5; // ebx
  25279. CHAR szBuffer[1024]; // [esp+0h] [ebp-408h]
  25280.  
  25281. if ( szItemName && szCreateBy )
  25282. {
  25283. snprintf(szBuffer, 0x400u, "%d,%d,%s,%s", nNum, nItemDataID, szItemName, szCreateBy);
  25284. szBuffer[1023] = 0;
  25285. LogForAudit(TYPE_ITEM_CREATE, guidHuman, szBuffer);
  25286. }
  25287. else
  25288. {
  25289. CacheLog(1, "%s", "[Audit_ItemCreate]: szItemName or szCreateBy is empty!!", v5);
  25290. }
  25291. }
  25292.  
  25293. //----- (0805CE60) --------------------------------------------------------
  25294. void __cdecl Audit_PK(GUID_t guidDead, GUID_t guidKiller, INT nSceneID, const CHAR *szSceneName, BOOL bCaoYun, BOOL bPaoShang, const CHAR *szDesc)
  25295. {
  25296. CHAR szBuffer[128]; // [esp+0h] [ebp-88h]
  25297.  
  25298. if ( !szSceneName )
  25299. __assert__(
  25300. "../../Server/Server/Base/LogDefine.cpp",
  25301. 0x470u,
  25302. "void Audit_PK(GUID_t, GUID_t, INT, const CHAR*, BOOL, BOOL, const CHAR*)",
  25303. "szSceneName");
  25304. if ( !szDesc )
  25305. __assert__(
  25306. "../../Server/Server/Base/LogDefine.cpp",
  25307. 0x471u,
  25308. "void Audit_PK(GUID_t, GUID_t, INT, const CHAR*, BOOL, BOOL, const CHAR*)",
  25309. "szDesc");
  25310. snprintf(szBuffer, 0x80u, "0X%08X,%d,%s,%d,%d,%s", guidKiller, nSceneID, szSceneName, bCaoYun, bPaoShang, szDesc);
  25311. szBuffer[127] = 0;
  25312. LogForAudit(TYPE_PLAYER_PK, guidDead, szBuffer);
  25313. }
  25314.  
  25315. //----- (0805CF50) --------------------------------------------------------
  25316. void __cdecl Audit_ShiMenRenWu(GUID_t guidSelf, INT nRound, INT nPlayerLevel)
  25317. {
  25318. CHAR szBuffer[128]; // [esp+Ch] [ebp-88h]
  25319.  
  25320. snprintf(szBuffer, 0x80u, "%d,%d", nRound, nPlayerLevel);
  25321. szBuffer[127] = 0;
  25322. LogForAudit(TYPE_SHI_MEN_REN_WU, guidSelf, szBuffer);
  25323. }
  25324.  
  25325. //----- (0805CFD8) --------------------------------------------------------
  25326. void __cdecl Audit_ShiMenRenWu_Day(GUID_t guidSelf, INT nRound, INT nPlayerLevel)
  25327. {
  25328. CHAR szBuffer[128]; // [esp+Ch] [ebp-88h]
  25329.  
  25330. snprintf(szBuffer, 0x80u, "%d,%d", nRound, nPlayerLevel);
  25331. szBuffer[127] = 0;
  25332. LogForAudit(TYPE_SHI_MEN_REN_WU_DAY, guidSelf, szBuffer);
  25333. }
  25334.  
  25335. //----- (0805D060) --------------------------------------------------------
  25336. void __cdecl Audit_HuashanThreeWinners(GUID_t guidSelf, INT nMenpai)
  25337. {
  25338. CHAR szBuffer[128]; // [esp+0h] [ebp-88h]
  25339.  
  25340. snprintf(szBuffer, 0x80u, "%d");
  25341. szBuffer[127] = 0;
  25342. LogForAudit(TYPE_HUA_SHAN_THREE_WINNERS, guidSelf, szBuffer);
  25343. }
  25344.  
  25345. //----- (0805D0E8) --------------------------------------------------------
  25346. void __cdecl Audit_Candidate(GUID_t guidSelf, const char *lpPlayerName)
  25347. {
  25348. char szBuffer[128]; // [esp+4h] [ebp-88h]
  25349.  
  25350. szBuffer[0] = 0;
  25351. memset(&szBuffer[1], 0, 0x7Fu);
  25352. if ( guidSelf == -1 )
  25353. __assert__(
  25354. "../../Server/Server/Base/LogDefine.cpp",
  25355. 0x499u,
  25356. "void Audit_Candidate(GUID_t, const char*)",
  25357. "INVALID_ID!=guidSelf");
  25358. if ( !lpPlayerName )
  25359. __assert__(
  25360. "../../Server/Server/Base/LogDefine.cpp",
  25361. 0x49Au,
  25362. "void Audit_Candidate(GUID_t, const char*)",
  25363. "lpPlayerName");
  25364. snprintf(szBuffer, 0x80u, "%s");
  25365. szBuffer[127] = 0;
  25366. LogForAudit(TYPE_CANDIDATE, guidSelf, szBuffer);
  25367. }
  25368.  
  25369. //----- (0805D1E8) --------------------------------------------------------
  25370. void __cdecl Audit_RelationPoint(GUID_t guidSelf, const CHAR *szRelationNPC, INT nPoint)
  25371. {
  25372. char szBuffer[128]; // [esp+4h] [ebp-98h]
  25373.  
  25374. szBuffer[0] = 0;
  25375. memset(&szBuffer[1], 0, 0x7Fu);
  25376. if ( !szRelationNPC )
  25377. __assert__(
  25378. "../../Server/Server/Base/LogDefine.cpp",
  25379. 0x4A5u,
  25380. "void Audit_RelationPoint(GUID_t, const CHAR*, INT)",
  25381. "szRelationNPC");
  25382. if ( guidSelf == -1 )
  25383. __assert__(
  25384. "../../Server/Server/Base/LogDefine.cpp",
  25385. 0x4A6u,
  25386. "void Audit_RelationPoint(GUID_t, const CHAR*, INT)",
  25387. "INVALID_ID!=guidSelf");
  25388. if ( nPoint < 0 )
  25389. __assert__(
  25390. "../../Server/Server/Base/LogDefine.cpp",
  25391. 0x4A7u,
  25392. "void Audit_RelationPoint(GUID_t, const CHAR*, INT)",
  25393. "0 <= nPoint");
  25394. snprintf(szBuffer, 0x80u, "%s,%d", szRelationNPC, nPoint);
  25395. szBuffer[127] = 0;
  25396. LogForAudit(TYPE_RELATION_POINT_NPC, guidSelf, szBuffer);
  25397. }
  25398.  
  25399. //----- (0805D324) --------------------------------------------------------
  25400. void __cdecl Audit_Quest(GUID_t guidSelf, const char *szQuestName, INT nMenPai, INT nLevel)
  25401. {
  25402. char szBuffer[256]; // [esp+0h] [ebp-108h]
  25403.  
  25404. if ( szQuestName )
  25405. {
  25406. snprintf(szBuffer, 0x100u, "%s,%d,%d", szQuestName, nMenPai, nLevel);
  25407. szBuffer[255] = 0;
  25408. LogForAudit(TYPE_QUEST, guidSelf, szBuffer);
  25409. }
  25410. else
  25411. {
  25412. CacheLog(1, "%s", "[Audit_Quest]: szQuestName is empty!!", 0);
  25413. }
  25414. }
  25415.  
  25416. //----- (0805D3D4) --------------------------------------------------------
  25417. void __cdecl Audit_PaoShang(GUID_t guidUser, INT nMoney)
  25418. {
  25419. CHAR szBuffer[256]; // [esp+0h] [ebp-108h]
  25420.  
  25421. snprintf(szBuffer, 0x100u, "%d");
  25422. szBuffer[255] = 0;
  25423. LogForAudit(TYPE_PAO_SHANG, guidUser, szBuffer);
  25424. }
  25425.  
  25426. //----- (0805D45C) --------------------------------------------------------
  25427. void __cdecl Audit_PetImproveWuxing(GUID_t guidUser, INT nPetDataID, BOOL bSuccess, INT newValue)
  25428. {
  25429. CHAR szBuffer[256]; // [esp+8h] [ebp-108h]
  25430.  
  25431. snprintf(szBuffer, 0x100u, "%d,%d,%d", nPetDataID, bSuccess != 0, newValue);
  25432. szBuffer[255] = 0;
  25433. LogForAudit(TYPE_PET_IMPROVE_WU_XING, guidUser, szBuffer);
  25434. }
  25435.  
  25436. //----- (0805D4F0) --------------------------------------------------------
  25437. void __cdecl Audit_PetImproveSkillBook(GUID_t guidUser, INT nPetDataID, INT nSkillID)
  25438. {
  25439. CHAR szBuffer[256]; // [esp+Ch] [ebp-108h]
  25440.  
  25441. snprintf(szBuffer, 0x100u, "%d,%d", nPetDataID, nSkillID);
  25442. szBuffer[255] = 0;
  25443. LogForAudit(TYPE_PET_IMPROVE_SKILL_BOOK, guidUser, szBuffer);
  25444. }
  25445.  
  25446. //----- (0805D578) --------------------------------------------------------
  25447. void __cdecl Audit_PlayerCountOfScene(INT nSceneID, INT nServerID, const CHAR *szSceneName, INT nPlayerCount)
  25448. {
  25449. int v4; // ecx
  25450. CHAR szBuffer[256]; // [esp+0h] [ebp-108h]
  25451.  
  25452. if ( szSceneName )
  25453. {
  25454. snprintf(szBuffer, 0x100u, aD, nSceneID, nServerID, szSceneName, nPlayerCount);
  25455. szBuffer[255] = 0;
  25456. LogForAudit(TYPE_SCENE_PLAYER_COUNT, 0xFFFFFFFF, szBuffer);
  25457. }
  25458. else
  25459. {
  25460. CacheLog(1, "%s", "[Audit_PlayerCountOfScene]: szSceneName is empty!!", v4);
  25461. }
  25462. }
  25463.  
  25464. //----- (0805D628) --------------------------------------------------------
  25465. void __cdecl Audit_GemEmbed(GUID_t guidUser, INT nItemDataID, INT nItemLevel, INT nItemDataID_Equip)
  25466. {
  25467. CHAR szBuffer[256]; // [esp+8h] [ebp-108h]
  25468.  
  25469. snprintf(szBuffer, 0x100u, "%d,%d,%d", nItemDataID, nItemLevel, nItemDataID_Equip);
  25470. szBuffer[255] = 0;
  25471. LogForAudit(TYPE_GEM_EMBED, guidUser, szBuffer);
  25472. }
  25473.  
  25474. //----- (0805D6B4) --------------------------------------------------------
  25475. void __cdecl Audit_PlayerMaster(GUID_t guidMaster, GUID_t guidAprentice)
  25476. {
  25477. CHAR szBuffer[128]; // [esp+0h] [ebp-88h]
  25478.  
  25479. snprintf(szBuffer, 0x80u, "0X%08X");
  25480. szBuffer[127] = 0;
  25481. LogForAudit(TYPE_PLAYER_MASTER, guidMaster, szBuffer);
  25482. }
  25483.  
  25484. //----- (0805D73C) --------------------------------------------------------
  25485. void __cdecl Audit_PlayerMasterExp(GUID_t guidUser, INT nGBValue, INT nExp, SHORT sOpType)
  25486. {
  25487. CHAR szBuffer[256]; // [esp+8h] [ebp-108h]
  25488.  
  25489. snprintf(szBuffer, 0x100u, "%d,%d,%d", nGBValue, nExp, sOpType);
  25490. szBuffer[255] = 0;
  25491. LogForAudit(TYPE_PLAYER_MASTER_EXP, guidUser, szBuffer);
  25492. }
  25493.  
  25494. //----- (0805D7CC) --------------------------------------------------------
  25495. void __cdecl Audit_ItemUseMenPaiZhaoJiLing(GUID_t guidUser, INT nMenPaiID)
  25496. {
  25497. CHAR szBuffer[256]; // [esp+0h] [ebp-108h]
  25498.  
  25499. snprintf(szBuffer, 0x100u, "%d");
  25500. szBuffer[255] = 0;
  25501. LogForAudit(TYPE_ITEM_USE_MENPAIZHAOJILING, guidUser, szBuffer);
  25502. }
  25503.  
  25504. //----- (0805D854) --------------------------------------------------------
  25505. void __cdecl Audit_PlayerLevelup(GUID_t guidUser, INT nCurrentLevel, INT nUpLevel)
  25506. {
  25507. CHAR szBuffer[256]; // [esp+Ch] [ebp-108h]
  25508.  
  25509. snprintf(szBuffer, 0x100u, "%d,%d", nCurrentLevel, nUpLevel);
  25510. szBuffer[255] = 0;
  25511. LogForAudit(TYPE_PLAYER_LEVEL_UP, guidUser, szBuffer);
  25512. }
  25513.  
  25514. //----- (0805D8DC) --------------------------------------------------------
  25515. void __cdecl Audit_HDXianCaoZhengDuo(GUID_t guidSelf, const CHAR *szStep)
  25516. {
  25517. int v2; // ebx
  25518. CHAR szBuffer[128]; // [esp+0h] [ebp-88h]
  25519.  
  25520. if ( szStep )
  25521. {
  25522. snprintf(szBuffer, 0x80u, "%s");
  25523. szBuffer[127] = 0;
  25524. LogForAudit(TYPE_HUODONG_XIANCAOZHENGDUO, guidSelf, szBuffer);
  25525. }
  25526. else
  25527. {
  25528. CacheLog(1, "%s", "[Audit_HDXianCaoZhengDuo]: szStep is empty!!", v2);
  25529. }
  25530. }
  25531.  
  25532. //----- (0805D980) --------------------------------------------------------
  25533. void __cdecl Audit_PlayerGetGuildWage(GUID_t guidSelf, GUID_t guidGuild, INT nWage)
  25534. {
  25535. CHAR szBuffer[128]; // [esp+Ch] [ebp-88h]
  25536.  
  25537. snprintf(szBuffer, 0x80u, "0X%08X,%d", guidGuild, nWage);
  25538. szBuffer[127] = 0;
  25539. LogForAudit(TYPE_GUILD_WAGE, guidSelf, szBuffer);
  25540. }
  25541.  
  25542. //----- (0805DA08) --------------------------------------------------------
  25543. void __cdecl Audit_MiYinKuangShiUsed(GUID_t guidUser)
  25544. {
  25545. if ( guidUser == -1 )
  25546. __assert__(
  25547. "../../Server/Server/Base/LogDefine.cpp",
  25548. 0x539u,
  25549. "void Audit_MiYinKuangShiUsed(GUID_t)",
  25550. "guidUser != INVALID_ID");
  25551. LogForAudit(TYPE_MIYINKUANGSHI_USED, guidUser, 0);
  25552. }
  25553.  
  25554. //----- (0805DA94) --------------------------------------------------------
  25555. void __cdecl Audit_DarkKeyUsed(GUID_t guidSelf, INT nType, INT nRemain)
  25556. {
  25557. CHAR szBuffer[128]; // [esp+Ch] [ebp-88h]
  25558.  
  25559. snprintf(szBuffer, 0x80u, "%d,%d", nType, nRemain);
  25560. szBuffer[127] = 0;
  25561. LogForAudit(TYPE_DARK_KEY_USED, guidSelf, szBuffer);
  25562. }
  25563.  
  25564. //----- (0805DB1C) --------------------------------------------------------
  25565. void __cdecl Audit_JuBaoContainerUsed(GUID_t guidSelf, INT nType, INT nRemain)
  25566. {
  25567. CHAR szBuffer[128]; // [esp+Ch] [ebp-88h]
  25568.  
  25569. snprintf(szBuffer, 0x80u, "%d,%d", nType, nRemain);
  25570. szBuffer[127] = 0;
  25571. LogForAudit(TYPE_JUBAOCONTAINER_USED, guidSelf, szBuffer);
  25572. }
  25573.  
  25574. //----- (0805DBA4) --------------------------------------------------------
  25575. void __cdecl Audit_LuckyTurnTable(GUID_t guidSelf, INT nPrizeType_1, INT nPrizeType_2, INT nPrizeType_3)
  25576. {
  25577. CHAR szBuffer[128]; // [esp+8h] [ebp-88h]
  25578.  
  25579. snprintf(szBuffer, 0x80u, "%d,%d,%d", nPrizeType_1, nPrizeType_2, nPrizeType_3);
  25580. szBuffer[127] = 0;
  25581. LogForAudit(TYPE_LUCKY_TURN_TABLE, guidSelf, szBuffer);
  25582. }
  25583.  
  25584. //----- (0805DC30) --------------------------------------------------------
  25585. void __cdecl Audit_LuckyTurnTable_Dragon(GUID_t guidSelf, INT nPrizeType, INT nRemain)
  25586. {
  25587. CHAR szBuffer[128]; // [esp+Ch] [ebp-88h]
  25588.  
  25589. snprintf(szBuffer, 0x80u, "%d,%d", nPrizeType, nRemain);
  25590. szBuffer[127] = 0;
  25591. LogForAudit(TYPE_LUCKY_TURN_TABLE_DRAGON, guidSelf, szBuffer);
  25592. }
  25593.  
  25594. //----- (0805DCB8) --------------------------------------------------------
  25595. void __cdecl Audit_ChangeGem(GUID_t guidUser, const CHAR *strLog)
  25596. {
  25597. if ( guidUser == -1 )
  25598. __assert__(
  25599. "../../Server/Server/Base/LogDefine.cpp",
  25600. 0x565u,
  25601. "void Audit_ChangeGem(GUID_t, const CHAR*)",
  25602. "guidUser != INVALID_ID");
  25603. LogForAudit(TYPE_CHANGE_GEM, guidUser, strLog);
  25604. }
  25605.  
  25606. //----- (0805DD44) --------------------------------------------------------
  25607. void __cdecl Audit_ChangeNianShouDriver(GUID_t guidSelf, INT nLevel)
  25608. {
  25609. CHAR szBuffer[128]; // [esp+0h] [ebp-88h]
  25610.  
  25611. snprintf(szBuffer, 0x80u, "%d");
  25612. szBuffer[127] = 0;
  25613. LogForAudit(TYPE_CHANGENIANSHOUDRIVER, guidSelf, szBuffer);
  25614. }
  25615.  
  25616. //----- (0805DDCC) --------------------------------------------------------
  25617. void __cdecl Audit_CompoisteFigure(GUID_t guidSelf)
  25618. {
  25619. LogForAudit(TYPE_COMPOSE_FIGURE, guidSelf, 0);
  25620. }
  25621.  
  25622. //----- (0805DE34) --------------------------------------------------------
  25623. void __cdecl Audit_ZhuanDanUsed(GUID_t guidSelf, INT nType, INT nRemain)
  25624. {
  25625. CHAR szBuffer[128]; // [esp+Ch] [ebp-88h]
  25626.  
  25627. snprintf(szBuffer, 0x80u, "%d,%d", nType, nRemain);
  25628. szBuffer[127] = 0;
  25629. LogForAudit(TYPE_ZHUAN_DAN_USED, guidSelf, szBuffer);
  25630. }
  25631.  
  25632. //----- (0805DEC0) --------------------------------------------------------
  25633. void __cdecl Audit_ItemIdentified(GUID_t guidSelf, INT nItemIndex, INT nWorld, INT nServer, INT nItemSN, INT nItemLevel)
  25634. {
  25635. CHAR szBuffer[128]; // [esp+0h] [ebp-88h]
  25636.  
  25637. snprintf(szBuffer, 0x80u, "%d,%d-%d-%d,%d", nItemIndex, nWorld, nServer, nItemSN);
  25638. szBuffer[127] = 0;
  25639. LogForAudit(TYPE_ITEM_IDENTIFIED, guidSelf, szBuffer);
  25640. }
  25641.  
  25642. //----- (0805DF54) --------------------------------------------------------
  25643. void __cdecl Audit_CommisionSale(GUID_t guidSelf, INT nSN, INT nOptType, INT nValue, INT nPrice, BOOL bDeal, INT nPlayerLevel)
  25644. {
  25645. CHAR szBuffer[128]; // [esp+Ch] [ebp-88h]
  25646.  
  25647. snprintf(szBuffer, 0x80u, "%d,%d,%d,%d,%d,%d", nSN, nOptType, nValue, nPrice, bDeal, nPlayerLevel);
  25648. szBuffer[127] = 0;
  25649. LogForAudit(TYPE_COMMISIONSALE, guidSelf, szBuffer);
  25650. }
  25651.  
  25652. //----- (0805DFE8) --------------------------------------------------------
  25653. void __cdecl Audit_GuildDeclareWar(GUID_t guidSelf, GUID_t guidSelfGuild, GUID_t guidTargetGuild, INT nOptType)
  25654. {
  25655. const char *v4; // [esp-4h] [ebp-CCh]
  25656. CHAR szOpt[64]; // [esp+0h] [ebp-C8h]
  25657. CHAR szBuffer[128]; // [esp+40h] [ebp-88h]
  25658.  
  25659. if ( nOptType == 1 )
  25660. {
  25661. v4 = "WarDeclareCancelled";
  25662. }
  25663. else if ( nOptType <= 1 )
  25664. {
  25665. if ( nOptType )
  25666. goto LABEL_4;
  25667. v4 = "WarDeclared";
  25668. }
  25669. else
  25670. {
  25671. if ( nOptType != 2 )
  25672. {
  25673. LABEL_4:
  25674. szOpt[0] = 0;
  25675. __assert__(
  25676. "../../Server/Server/Base/LogDefine.cpp",
  25677. 0x5A6u,
  25678. "void Audit_GuildDeclareWar(GUID_t, GUID_t, GUID_t, INT)",
  25679. "FALSE");
  25680. }
  25681. v4 = "WarTimeOver";
  25682. }
  25683. snprintf(szOpt, 0x40u, "%s", v4);
  25684. snprintf(szBuffer, 0x80u, "0X%08X,0X%08X,%s", guidSelfGuild, guidTargetGuild, szOpt);
  25685. szBuffer[127] = 0;
  25686. LogForAudit(TYPE_GUILD_DECLARE_WAR, guidSelf, szBuffer);
  25687. }
  25688.  
  25689. //----- (0805E0F4) --------------------------------------------------------
  25690. void __cdecl Audit_MinorPassword(GUID_t guidSelf, const CHAR *szOpt)
  25691. {
  25692. CHAR szBuffer[128]; // [esp+0h] [ebp-88h]
  25693.  
  25694. if ( !szOpt )
  25695. __assert__(
  25696. "../../Server/Server/Base/LogDefine.cpp",
  25697. 0x5B2u,
  25698. "void Audit_MinorPassword(GUID_t, const CHAR*)",
  25699. "szOpt");
  25700. snprintf(szBuffer, 0x80u, "%s");
  25701. szBuffer[127] = 0;
  25702. LogForAudit(TYPE_MINOR_PASSWORD_OPT, guidSelf, szBuffer);
  25703. }
  25704.  
  25705. //----- (0805E1A4) --------------------------------------------------------
  25706. void __cdecl Audit_YanXuanYuExchange(GUID_t guidSelf, INT nItemIndexOfYanXuanYu, INT nCountOfYanXuanYu, INT nItemIndexOfTrophy)
  25707. {
  25708. CHAR szBuffer[128]; // [esp+0h] [ebp-98h]
  25709.  
  25710. if ( nItemIndexOfYanXuanYu < 0 )
  25711. __assert__(
  25712. "../../Server/Server/Base/LogDefine.cpp",
  25713. 0x5BCu,
  25714. "void Audit_YanXuanYuExchange(GUID_t, INT, INT, INT)",
  25715. "0<=nItemIndexOfYanXuanYu");
  25716. if ( nCountOfYanXuanYu < 0 )
  25717. __assert__(
  25718. "../../Server/Server/Base/LogDefine.cpp",
  25719. 0x5BDu,
  25720. "void Audit_YanXuanYuExchange(GUID_t, INT, INT, INT)",
  25721. "0<=nCountOfYanXuanYu");
  25722. if ( nItemIndexOfTrophy < 0 )
  25723. __assert__(
  25724. "../../Server/Server/Base/LogDefine.cpp",
  25725. 0x5BEu,
  25726. "void Audit_YanXuanYuExchange(GUID_t, INT, INT, INT)",
  25727. "0<=nItemIndexOfTrophy");
  25728. snprintf(szBuffer, 0x80u, "%d,%d,%d", nItemIndexOfYanXuanYu, nCountOfYanXuanYu, nItemIndexOfTrophy);
  25729. szBuffer[127] = 0;
  25730. LogForAudit(TYPE_YAN_XUAN_YU_EXCHANGE, guidSelf, szBuffer);
  25731. }
  25732.  
  25733. //----- (0805E2C0) --------------------------------------------------------
  25734. void __cdecl Audit_YunBiao(GUID_t guidSelf, GUID_t guidGuild, INT nInvest, const CHAR *szOpt)
  25735. {
  25736. CHAR szBuffer[128]; // [esp+0h] [ebp-88h]
  25737.  
  25738. if ( !szOpt )
  25739. __assert__(
  25740. "../../Server/Server/Base/LogDefine.cpp",
  25741. 0x5C8u,
  25742. "void Audit_YunBiao(GUID_t, GUID_t, INT, const CHAR*)",
  25743. "szOpt");
  25744. snprintf(szBuffer, 0x80u, a0x08x_0, guidGuild, nInvest, szOpt);
  25745. szBuffer[127] = 0;
  25746. LogForAudit(TYPE_YUN_BIAO, guidSelf, szBuffer);
  25747. }
  25748.  
  25749. //----- (0805E37C) --------------------------------------------------------
  25750. void __cdecl Audit_EquipQianghua(GUID_t guidSelf, INT nEquipItemIndex, INT nEnhanceLevel)
  25751. {
  25752. CHAR szBuffer[128]; // [esp+Ch] [ebp-88h]
  25753.  
  25754. snprintf(szBuffer, 0x80u, "%d,%d", nEquipItemIndex, nEnhanceLevel);
  25755. szBuffer[127] = 0;
  25756. LogForAudit(TYPE_EQUIP_QIANGHUA, guidSelf, szBuffer);
  25757. }
  25758.  
  25759. //----- (0805E404) --------------------------------------------------------
  25760. void __cdecl Audit_GoodbadDecPKValue(GUID_t guidSelf, INT nDec)
  25761. {
  25762. CHAR szBuffer[128]; // [esp+0h] [ebp-88h]
  25763.  
  25764. snprintf(szBuffer, 0x80u, "%d");
  25765. szBuffer[127] = 0;
  25766. LogForAudit(TYPE_GOODBAD_DEC_PKVALUE, guidSelf, szBuffer);
  25767. }
  25768.  
  25769. //----- (0805E48C) --------------------------------------------------------
  25770. void __cdecl Audit_Skill_Monster(GUID_t guidSelf, const CHAR *nPlayerName, INT nMonsterNum)
  25771. {
  25772. CHAR szBuffer[128]; // [esp+0h] [ebp-88h]
  25773.  
  25774. if ( !nPlayerName )
  25775. __assert__(
  25776. "../../Server/Server/Base/LogDefine.cpp",
  25777. 0x5E7u,
  25778. "void Audit_Skill_Monster(GUID_t, const CHAR*, INT)",
  25779. "nPlayerName");
  25780. snprintf(szBuffer, 0x80u, "%s,%d", nPlayerName, nMonsterNum);
  25781. szBuffer[127] = 0;
  25782. LogForAudit(TYPE_PLAYER_SKILL_MONSTER, guidSelf, szBuffer);
  25783. }
  25784.  
  25785. //----- (0805E540) --------------------------------------------------------
  25786. void __cdecl Audit_JiaoFei(GUID_t guidSelf)
  25787. {
  25788. LogForAudit(TYPE_GUILD_JIAO_FEI, guidSelf, 0);
  25789. }
  25790.  
  25791. //----- (0805E5A4) --------------------------------------------------------
  25792. void __cdecl Audit_PlayerEnterScene(GUID_t guidSelf, INT nSceneID, const CHAR *szMapName)
  25793. {
  25794. CHAR szBuffer[128]; // [esp+0h] [ebp-88h]
  25795.  
  25796. if ( nSceneID == -1 )
  25797. __assert__(
  25798. "../../Server/Server/Base/LogDefine.cpp",
  25799. 0x5F9u,
  25800. "void Audit_PlayerEnterScene(GUID_t, INT, const CHAR*)",
  25801. "INVALID_ID!=nSceneID");
  25802. if ( !szMapName )
  25803. __assert__(
  25804. "../../Server/Server/Base/LogDefine.cpp",
  25805. 0x5FAu,
  25806. "void Audit_PlayerEnterScene(GUID_t, INT, const CHAR*)",
  25807. "NULL!=szMapName");
  25808. snprintf(szBuffer, 0x80u, "%d,%s", nSceneID, szMapName);
  25809. szBuffer[127] = 0;
  25810. LogForAudit(TYPE_PLAYER_ENTER_SCENE, guidSelf, szBuffer);
  25811. }
  25812.  
  25813. //----- (0805E68C) --------------------------------------------------------
  25814. void __cdecl Audit_GemCarve(GUID_t guidSelf, INT GemItemID)
  25815. {
  25816. CHAR szBuffer[128]; // [esp+0h] [ebp-88h]
  25817.  
  25818. if ( guidSelf == -1 )
  25819. __assert__(
  25820. "../../Server/Server/Base/LogDefine.cpp",
  25821. 0x604u,
  25822. "void Audit_GemCarve(GUID_t, INT)",
  25823. "INVALID_ID!=guidSelf");
  25824. if ( GemItemID == -1 )
  25825. __assert__(
  25826. "../../Server/Server/Base/LogDefine.cpp",
  25827. 0x605u,
  25828. "void Audit_GemCarve(GUID_t, INT)",
  25829. "INVALID_UID!=GemItemID");
  25830. snprintf(szBuffer, 0x80u, "%d");
  25831. szBuffer[127] = 0;
  25832. LogForAudit(TYPE_GEM_CARVE, guidSelf, szBuffer);
  25833. }
  25834.  
  25835. //----- (0805E76C) --------------------------------------------------------
  25836. void __cdecl Audit_PlayerShopSaleShopAddItem(GUID_t guidSelf, INT nItemIndex, INT iPos, INT iNeedNum, INT iPrice)
  25837. {
  25838. CHAR szBuffer[128]; // [esp+0h] [ebp-88h]
  25839.  
  25840. if ( guidSelf == -1 )
  25841. __assert__(
  25842. "../../Server/Server/Base/LogDefine.cpp",
  25843. 0x610u,
  25844. "void Audit_PlayerShopSaleShopAddItem(GUID_t, INT, INT, INT, INT)",
  25845. "INVALID_ID!=guidSelf");
  25846. snprintf(szBuffer, 0x80u, "%d,%d,%d,%d", nItemIndex, iPos, iNeedNum, iPrice);
  25847. szBuffer[127] = 0;
  25848. LogForAudit(TYPE_PLAYER_SHOP_SALE_SHOP_ADD_ITEM, guidSelf, szBuffer);
  25849. }
  25850.  
  25851. //----- (0805E828) --------------------------------------------------------
  25852. void __cdecl Audit_PlayerShopSaleShopSellItem(GUID_t guidSelf, INT nItemIndex, INT itemWorld, INT itemServer, INT itemSerial, INT itemPrice, INT itemNum)
  25853. {
  25854. CHAR szBuffer[128]; // [esp+0h] [ebp-88h]
  25855.  
  25856. if ( guidSelf == -1 )
  25857. __assert__(
  25858. "../../Server/Server/Base/LogDefine.cpp",
  25859. 0x61Du,
  25860. "void Audit_PlayerShopSaleShopSellItem(GUID_t, INT, INT, INT, INT, INT, INT)",
  25861. "INVALID_ID!=guidSelf");
  25862. snprintf(szBuffer, 0x80u, "%d,%d,%d,%d,%d,%d", nItemIndex, itemWorld, itemServer, itemSerial, itemPrice, itemNum);
  25863. szBuffer[127] = 0;
  25864. LogForAudit(TYPE_PLAYER_SHOP_SALE_SHOP_SELL_ITEM, guidSelf, szBuffer);
  25865. }
  25866.  
  25867. //----- (0805E8F0) --------------------------------------------------------
  25868. void __cdecl Audit_LearnLifeAbility(GUID_t guidSelf, AbilityID_t nAid)
  25869. {
  25870. CHAR szBuffer[128]; // [esp+0h] [ebp-88h]
  25871.  
  25872. if ( guidSelf == -1 )
  25873. __assert__(
  25874. "../../Server/Server/Base/LogDefine.cpp",
  25875. 0x62Au,
  25876. "void Audit_LearnLifeAbility(GUID_t, AbilityID_t)",
  25877. "INVALID_ID!=guidSelf");
  25878. snprintf(szBuffer, 0x80u, "%d");
  25879. szBuffer[127] = 0;
  25880. LogForAudit(TYPE_LEARN_LIFE_ABILITY, guidSelf, szBuffer);
  25881. }
  25882.  
  25883. //----- (0805E9A4) --------------------------------------------------------
  25884. void __cdecl Audit_LevelUpLifeAbility(GUID_t guidSelf, AbilityID_t nAid, INT iToLevel)
  25885. {
  25886. CHAR szBuffer[128]; // [esp+0h] [ebp-88h]
  25887.  
  25888. if ( guidSelf == -1 )
  25889. __assert__(
  25890. "../../Server/Server/Base/LogDefine.cpp",
  25891. 0x636u,
  25892. "void Audit_LevelUpLifeAbility(GUID_t, AbilityID_t, INT)",
  25893. "INVALID_ID!=guidSelf");
  25894. snprintf(szBuffer, 0x80u, "%d,%d", nAid, iToLevel);
  25895. szBuffer[127] = 0;
  25896. LogForAudit(TYPE_LEVEL_UP_LIFE_ABILITY, guidSelf, szBuffer);
  25897. }
  25898.  
  25899. //----- (0805EA60) --------------------------------------------------------
  25900. void __cdecl Audit_ShengShou_Open_BigBox(GUID_t guidSelf)
  25901. {
  25902. LogForAudit(TYPE_SHENGSHOU_OPEN_BIGBOX, guidSelf, 0);
  25903. }
  25904.  
  25905. //----- (0805EAC4) --------------------------------------------------------
  25906. void __cdecl Audit_ShengShou_Open_SmallBox(GUID_t guidSelf)
  25907. {
  25908. LogForAudit(TYPE_SHENGSHOU_OPEN_SMALLBOX, guidSelf, 0);
  25909. }
  25910.  
  25911. //----- (0805EB28) --------------------------------------------------------
  25912. void __cdecl Audit_ShenQi(GUID_t guidSelf, INT nItemIndex)
  25913. {
  25914. CHAR szBuffer[128]; // [esp+0h] [ebp-88h]
  25915.  
  25916. if ( guidSelf == -1 )
  25917. __assert__(
  25918. "../../Server/Server/Base/LogDefine.cpp",
  25919. 0x651u,
  25920. "void Audit_ShenQi(GUID_t, INT)",
  25921. "INVALID_ID!=guidSelf");
  25922. snprintf(szBuffer, 0x80u, "PlayerGuid =%x ShenQiID =%d", guidSelf, nItemIndex);
  25923. szBuffer[127] = 0;
  25924. LogForAudit(TYPE_SHENQI_ITEM, guidSelf, szBuffer);
  25925. }
  25926.  
  25927. //----- (0805EBDC) --------------------------------------------------------
  25928. void __cdecl Audit_PlayerBehavior(GUID_t guidSelf, INT nSceneID, const CHAR *szSceneName, const CHAR *szDescription, INT nMenPai, INT nLevel)
  25929. {
  25930. char szBuffer[256]; // [esp+0h] [ebp-108h]
  25931.  
  25932. if ( szDescription )
  25933. {
  25934. snprintf(szBuffer, 0x100u, aDS_0, nSceneID, szSceneName, szDescription, nMenPai);
  25935. szBuffer[255] = 0;
  25936. LogForAudit(TYPE_PLAYER_BEHAVIOR, guidSelf, szBuffer);
  25937. }
  25938. else
  25939. {
  25940. CacheLog(1, "%s", "[Audit_PlayerBehavior]: szDescription is empty!!", 0);
  25941. }
  25942. }
  25943.  
  25944. //----- (0805EC90) --------------------------------------------------------
  25945. void __cdecl Audit_ShenCai(GUID_t guidSelf, INT nItemIndex)
  25946. {
  25947. CHAR szBuffer[128]; // [esp+0h] [ebp-88h]
  25948.  
  25949. if ( guidSelf == -1 )
  25950. __assert__(
  25951. "../../Server/Server/Base/LogDefine.cpp",
  25952. 0x66Eu,
  25953. "void Audit_ShenCai(GUID_t, INT)",
  25954. "INVALID_ID!=guidSelf");
  25955. snprintf(szBuffer, 0x80u, "PlayerGuid =%x ShenCaiID =%d", guidSelf, nItemIndex);
  25956. szBuffer[127] = 0;
  25957. LogForAudit(TYPE_SHENCAI_ITEM, guidSelf, szBuffer);
  25958. }
  25959.  
  25960. //----- (0805ED44) --------------------------------------------------------
  25961. void __cdecl Audit_CaoyunSale(GUID_t guidUser)
  25962. {
  25963. CHAR szBuffer[128]; // [esp+0h] [ebp-88h]
  25964.  
  25965. if ( guidUser == -1 )
  25966. __assert__(
  25967. "../../Server/Server/Base/LogDefine.cpp",
  25968. 0x679u,
  25969. "void Audit_CaoyunSale(GUID_t)",
  25970. "INVALID_ID!=guidUser");
  25971. snprintf(szBuffer, 0x80u, "PlayerGuid =%x Caoyun done");
  25972. szBuffer[127] = 0;
  25973. LogForAudit(TYPE_CAOYUN_SALE, guidUser, szBuffer);
  25974. }
  25975.  
  25976. //----- (0805EDF4) --------------------------------------------------------
  25977. void __cdecl AuditUseSChoolBags(GUID_t guidUser, INT nLevel, INT nSex)
  25978. {
  25979. CHAR szBuffer[128]; // [esp+Ch] [ebp-88h]
  25980.  
  25981. snprintf(szBuffer, 0x80u, "%d,%d", nLevel, nSex);
  25982. szBuffer[127] = 0;
  25983. LogForAudit(TYPE_USESCHOOLBAGS, guidUser, szBuffer);
  25984. }
  25985.  
  25986. //----- (0805EE80) --------------------------------------------------------
  25987. void __cdecl Audit_GetSChoolUniform(GUID_t guidUser, INT nLevel, INT nSex)
  25988. {
  25989. CHAR szBuffer[128]; // [esp+Ch] [ebp-88h]
  25990.  
  25991. snprintf(szBuffer, 0x80u, "%d,%d", nLevel, nSex);
  25992. szBuffer[127] = 0;
  25993. LogForAudit(TYPE_GETSCHOOLUNIFORM, guidUser, szBuffer);
  25994. }
  25995.  
  25996. //----- (0805EF0C) --------------------------------------------------------
  25997. void __cdecl Audit_ChangeHead(GUID_t guidSelf, INT nHeadIndex)
  25998. {
  25999. CHAR szBuffer[128]; // [esp+0h] [ebp-88h]
  26000.  
  26001. if ( guidSelf == -1 )
  26002. __assert__(
  26003. "../../Server/Server/Base/LogDefine.cpp",
  26004. 0x69Bu,
  26005. "void Audit_ChangeHead(GUID_t, INT)",
  26006. "INVALID_ID!=guidSelf");
  26007. snprintf(szBuffer, 0x80u, "PlayerGuid =%x HeadID =%d", guidSelf, nHeadIndex);
  26008. szBuffer[127] = 0;
  26009. LogForAudit(TYPE_CHANGEHEAD_SUCCEED, guidSelf, szBuffer);
  26010. }
  26011.  
  26012. //----- (0805EFC0) --------------------------------------------------------
  26013. void __cdecl Audit_Equip_Stiletto(GUID_t guidUser, INT nItemDataID_Equip, INT nSlots)
  26014. {
  26015. CHAR szBuffer[256]; // [esp+Ch] [ebp-108h]
  26016.  
  26017. snprintf(szBuffer, 0x100u, "%d,%d", nItemDataID_Equip, nSlots);
  26018. szBuffer[255] = 0;
  26019. LogForAudit(TYPE_EQUIP_STILETTO, guidUser, szBuffer);
  26020. }
  26021.  
  26022. //----- (0805F048) --------------------------------------------------------
  26023. void __cdecl Audit_EquipPickOffGem(GUID_t guidUser, INT nItemDataID_Gem, INT nItemLevel_Gem, INT nItemDataID_Equip)
  26024. {
  26025. CHAR szBuffer[256]; // [esp+8h] [ebp-108h]
  26026.  
  26027. snprintf(szBuffer, 0x100u, "%d,%d,%d", nItemDataID_Gem, nItemLevel_Gem, nItemDataID_Equip);
  26028. szBuffer[255] = 0;
  26029. LogForAudit(TYPE_EQUIP_PICKOFF_GEM, guidUser, szBuffer);
  26030. }
  26031.  
  26032. //----- (0805F0D4) --------------------------------------------------------
  26033. void __cdecl Audit_ShuangXiangPao(GUID_t guidUser, INT nEventID)
  26034. {
  26035. CHAR szBuffer[128]; // [esp+0h] [ebp-88h]
  26036.  
  26037. if ( guidUser == -1 )
  26038. __assert__(
  26039. "../../Server/Server/Base/LogDefine.cpp",
  26040. 0x6BDu,
  26041. "void Audit_ShuangXiangPao(GUID_t, INT)",
  26042. "INVALID_ID!=guidUser");
  26043. snprintf(szBuffer, 0x80u, "EventID =%d");
  26044. szBuffer[127] = 0;
  26045. LogForAudit(TYPE_SHUANG_XIANG_PAO, guidUser, szBuffer);
  26046. }
  26047.  
  26048. //----- (0805F184) --------------------------------------------------------
  26049. void __cdecl Audit_YuRenJie(GUID_t guidUser, const char *lpPlayerName)
  26050. {
  26051. char szBuffer[128]; // [esp+4h] [ebp-88h]
  26052.  
  26053. szBuffer[0] = 0;
  26054. memset(&szBuffer[1], 0, 0x7Fu);
  26055. if ( guidUser == -1 )
  26056. __assert__(
  26057. "../../Server/Server/Base/LogDefine.cpp",
  26058. 0x6C9u,
  26059. "void Audit_YuRenJie(GUID_t, const char*)",
  26060. "INVALID_ID!=guidUser");
  26061. if ( !lpPlayerName )
  26062. __assert__(
  26063. "../../Server/Server/Base/LogDefine.cpp",
  26064. 0x6CAu,
  26065. "void Audit_YuRenJie(GUID_t, const char*)",
  26066. "lpPlayerName");
  26067. snprintf(szBuffer, 0x80u, "%s");
  26068. LogForAudit(TYPE_YURENJIE, guidUser, szBuffer);
  26069. }
  26070.  
  26071. //----- (0805F280) --------------------------------------------------------
  26072. void __cdecl Audit_YuRenJie_Exp(GUID_t guidUser, const char *lpPlayerName, const int playerLevel, const int expNum)
  26073. {
  26074. char szBuffer[128]; // [esp+4h] [ebp-88h]
  26075.  
  26076. szBuffer[0] = 0;
  26077. memset(&szBuffer[1], 0, 0x7Fu);
  26078. if ( guidUser == -1 )
  26079. __assert__(
  26080. "../../Server/Server/Base/LogDefine.cpp",
  26081. 0x6D6u,
  26082. "void Audit_YuRenJie_Exp(GUID_t, const char*, int, int)",
  26083. "INVALID_ID!=guidUser");
  26084. if ( !lpPlayerName )
  26085. __assert__(
  26086. "../../Server/Server/Base/LogDefine.cpp",
  26087. 0x6D7u,
  26088. "void Audit_YuRenJie_Exp(GUID_t, const char*, int, int)",
  26089. "lpPlayerName");
  26090. snprintf(szBuffer, 0x80u, "PlayerName = %s, Level = %d, Exp = %d", lpPlayerName, playerLevel, expNum);
  26091. LogForAudit(TYPE_YURENJIE_EXP, guidUser, szBuffer);
  26092. }
  26093.  
  26094. //----- (0805F38C) --------------------------------------------------------
  26095. void __cdecl Audit_PetCagePresent(GUID_t guidUser, const char *lpPlayerName)
  26096. {
  26097. char szBuffer[128]; // [esp+4h] [ebp-98h]
  26098.  
  26099. memset(szBuffer, 0, 0x80u);
  26100. if ( guidUser == -1 )
  26101. __assert__(
  26102. "../../Server/Server/Base/LogDefine.cpp",
  26103. 0x6E3u,
  26104. "void Audit_PetCagePresent(GUID_t, const char*)",
  26105. "INVALID_ID!=guidUser");
  26106. if ( !lpPlayerName )
  26107. __assert__(
  26108. "../../Server/Server/Base/LogDefine.cpp",
  26109. 0x6E4u,
  26110. "void Audit_PetCagePresent(GUID_t, const char*)",
  26111. "lpPlayerName");
  26112. snprintf(szBuffer, 0x80u, "[PetCagePresentActivity] PlayerName:\"%s\" PresentCage OK");
  26113. LogForAudit(TYPE_PETCAGE_PRESENT, guidUser, szBuffer);
  26114. }
  26115.  
  26116. //----- (0805F480) --------------------------------------------------------
  26117. void __cdecl Audit_GeiZhaoPai(GUID_t guidUser, const char *lpPlayerName, const char *lpZhaoPaiName)
  26118. {
  26119. char szBuffer[128]; // [esp+4h] [ebp-88h]
  26120.  
  26121. szBuffer[0] = 0;
  26122. memset(&szBuffer[1], 0, 0x7Fu);
  26123. if ( guidUser == -1 )
  26124. __assert__(
  26125. "../../Server/Server/Base/LogDefine.cpp",
  26126. 0x6F0u,
  26127. "void Audit_GeiZhaoPai(GUID_t, const char*, const char*)",
  26128. "INVALID_ID!=guidUser");
  26129. if ( !lpPlayerName )
  26130. __assert__(
  26131. "../../Server/Server/Base/LogDefine.cpp",
  26132. 0x6F1u,
  26133. "void Audit_GeiZhaoPai(GUID_t, const char*, const char*)",
  26134. "lpPlayerName");
  26135. snprintf(szBuffer, 0x80u, &byte_80C4FBC, lpPlayerName, lpZhaoPaiName);
  26136. LogForAudit(TYPE_GEIZHAOPAI, guidUser, szBuffer);
  26137. }
  26138.  
  26139. //----- (0805F588) --------------------------------------------------------
  26140. void __cdecl Audit_GodFire(SceneID_t sceneId, GUID_t guidUser, INT nItemIndex, MissionID_t nMissionId, ID_t nWorldID, ID_t nZoneID, const CHAR *nName, const CHAR *nAccName, UINT nLevel)
  26141. {
  26142. char szBuffer[1024]; // [esp+4h] [ebp-418h]
  26143.  
  26144. szBuffer[0] = 0;
  26145. memset(&szBuffer[1], 0, 0x3FFu);
  26146. if ( guidUser == -1 )
  26147. __assert__(
  26148. "../../Server/Server/Base/LogDefine.cpp",
  26149. 0x6FEu,
  26150. "void Audit_GodFire(SceneID_t, GUID_t, INT, MissionID_t, ID_t, ID_t, const CHAR*, const CHAR*, UINT)",
  26151. "INVALID_ID!=guidUser");
  26152. snprintf(
  26153. szBuffer,
  26154. 0x400u,
  26155. "SceneId =%d, BonusItemId =%d, MissionId =%d, WorldId =%d, ZoneId =%d, PlayerName =%s, AccName =%s, Level =%d",
  26156. sceneId,
  26157. nItemIndex,
  26158. nMissionId,
  26159. nWorldID,
  26160. nZoneID,
  26161. nName,
  26162. nAccName,
  26163. nLevel);
  26164. LogForAudit(TYPE_GODFIRE_SUCCEED, guidUser, szBuffer);
  26165. }
  26166.  
  26167. //----- (0805F688) --------------------------------------------------------
  26168. void __cdecl Audit_DrawGuildWelfare(GUID_t guidUser, INT nMoney, INT nExp)
  26169. {
  26170. char szBuffer[1024]; // [esp+4h] [ebp-408h]
  26171.  
  26172. szBuffer[0] = 0;
  26173. memset(&szBuffer[1], 0, 0x3FFu);
  26174. if ( guidUser == -1 )
  26175. __assert__(
  26176. "../../Server/Server/Base/LogDefine.cpp",
  26177. 0x70Au,
  26178. "void Audit_DrawGuildWelfare(GUID_t, INT, INT)",
  26179. "guidUser != INVALID_ID");
  26180. snprintf(szBuffer, 0x400u, "DrawMoney = %d, DrawExp = %d", nMoney, nExp);
  26181. LogForAudit(TYPE_DRAWGUILDWELFARE, guidUser, szBuffer);
  26182. }
  26183.  
  26184. //----- (0805F760) --------------------------------------------------------
  26185. void __cdecl Audit_SwitchToLeaguePK(INT sceneId, GUID_t guidUser)
  26186. {
  26187. char szBuffer[1024]; // [esp+4h] [ebp-408h]
  26188.  
  26189. szBuffer[0] = 0;
  26190. memset(&szBuffer[1], 0, 0x3FFu);
  26191. if ( guidUser == -1 )
  26192. __assert__(
  26193. "../../Server/Server/Base/LogDefine.cpp",
  26194. 0x715u,
  26195. "void Audit_SwitchToLeaguePK(INT, GUID_t)",
  26196. "guidUser != INVALID_ID");
  26197. snprintf(szBuffer, 0x400u, "sceneId = %d, GUID = %x", sceneId, guidUser);
  26198. LogForAudit(TYPE_SWITCH_TO_LEAGUE_PK, guidUser, szBuffer);
  26199. }
  26200.  
  26201. //----- (0805F838) --------------------------------------------------------
  26202. void __cdecl Audit_LeaguePkDie(INT sceneId, GUID_t guidUser, GUID_t guidKiller)
  26203. {
  26204. char szBuffer[1024]; // [esp+4h] [ebp-408h]
  26205.  
  26206. szBuffer[0] = 0;
  26207. memset(&szBuffer[1], 0, 0x3FFu);
  26208. if ( guidUser == -1 )
  26209. __assert__(
  26210. "../../Server/Server/Base/LogDefine.cpp",
  26211. 0x71Fu,
  26212. "void Audit_LeaguePkDie(INT, GUID_t, GUID_t)",
  26213. "guidUser != INVALID_ID");
  26214. snprintf(szBuffer, 0x400u, "sceneId = %d, guidUser = %x, guidKiller = %x", sceneId, guidUser, guidKiller);
  26215. LogForAudit(TYPE_LEAGUE_PK_DIE, guidUser, szBuffer);
  26216. }
  26217.  
  26218. //----- (0805F914) --------------------------------------------------------
  26219. void __cdecl Audit_ShiTuZongDongYuan(GUID_t guidUser, const CHAR *strLog)
  26220. {
  26221. if ( guidUser == -1 )
  26222. __assert__(
  26223. "../../Server/Server/Base/LogDefine.cpp",
  26224. 0x729u,
  26225. "void Audit_ShiTuZongDongYuan(GUID_t, const CHAR*)",
  26226. "guidUser != INVALID_ID");
  26227. LogForAudit(TYPE_SHITUZONGDONGYUAN, guidUser, strLog);
  26228. }
  26229.  
  26230. //----- (0805F9A0) --------------------------------------------------------
  26231. void __cdecl Audit_SlotFour(GUID_t guidUser, const CHAR *strLog)
  26232. {
  26233. if ( guidUser == -1 )
  26234. __assert__(
  26235. "../../Server/Server/Base/LogDefine.cpp",
  26236. 0x733u,
  26237. "void Audit_SlotFour(GUID_t, const CHAR*)",
  26238. "guidUser != INVALID_ID");
  26239. LogForAudit(TYPE_FOUR_SLOT, guidUser, strLog);
  26240. }
  26241.  
  26242. //----- (0805FA2C) --------------------------------------------------------
  26243. void __cdecl Audit_EnchaseFour(GUID_t guidUser, const CHAR *strLog)
  26244. {
  26245. if ( guidUser == -1 )
  26246. __assert__(
  26247. "../../Server/Server/Base/LogDefine.cpp",
  26248. 0x73Eu,
  26249. "void Audit_EnchaseFour(GUID_t, const CHAR*)",
  26250. "guidUser != INVALID_ID");
  26251. LogForAudit(TYPE_FOUR_ENCHASE, guidUser, strLog);
  26252. }
  26253.  
  26254. //----- (0805FAB8) --------------------------------------------------------
  26255. void __cdecl Audit_JipinZhuangbei(GUID_t guidUser, INT nItemIndex)
  26256. {
  26257. CHAR szBuffer[128]; // [esp+0h] [ebp-88h]
  26258.  
  26259. if ( guidUser == -1 )
  26260. __assert__(
  26261. "../../Server/Server/Base/LogDefine.cpp",
  26262. 0x748u,
  26263. "void Audit_JipinZhuangbei(GUID_t, INT)",
  26264. "INVALID_ID!=guidUser");
  26265. snprintf(szBuffer, 0x80u, "PlayerGuid =%x ItemID =%d", guidUser, nItemIndex);
  26266. szBuffer[127] = 0;
  26267. LogForAudit(TYPE_JIPIN_ZHUANGBEI, guidUser, szBuffer);
  26268. }
  26269.  
  26270. //----- (0805FB70) --------------------------------------------------------
  26271. void __cdecl Audit_PetSkillStudy_Manual(GUID_t guidUser, INT nPetDataID, INT nSkillID)
  26272. {
  26273. CHAR szBuffer[256]; // [esp+Ch] [ebp-108h]
  26274.  
  26275. snprintf(szBuffer, 0x100u, "%d,%d", nPetDataID, nSkillID);
  26276. szBuffer[255] = 0;
  26277. LogForAudit(TYPE_PETSKILLSTUDY_MANUAL, guidUser, szBuffer);
  26278. }
  26279.  
  26280. //----- (0805FBFC) --------------------------------------------------------
  26281. void __cdecl Audit_PetSkillStudy_Auto(GUID_t guidUser, INT nPetDataID, INT nSkillID)
  26282. {
  26283. CHAR szBuffer[256]; // [esp+Ch] [ebp-108h]
  26284.  
  26285. snprintf(szBuffer, 0x100u, "%d,%d", nPetDataID, nSkillID);
  26286. szBuffer[255] = 0;
  26287. LogForAudit(TYPE_PETSKILLSTUDY_AUTO, guidUser, szBuffer);
  26288. }
  26289.  
  26290. //----- (0805FC88) --------------------------------------------------------
  26291. void __cdecl Audit_PetSkillStudy_GetManual2(GUID_t guidUser, INT nPetDataID, INT nSkillID)
  26292. {
  26293. CHAR szBuffer[256]; // [esp+Ch] [ebp-108h]
  26294.  
  26295. snprintf(szBuffer, 0x100u, "%d,%d", nPetDataID, nSkillID);
  26296. szBuffer[255] = 0;
  26297. LogForAudit(TYPE_PETSKILLSTUDY_GETMANUAL2, guidUser, szBuffer);
  26298. }
  26299.  
  26300. //----- (0805FD14) --------------------------------------------------------
  26301. void __cdecl Audit_PetSkillStudy_GetAuto5(GUID_t guidUser, INT nPetDataID, INT nSkillID)
  26302. {
  26303. CHAR szBuffer[256]; // [esp+Ch] [ebp-108h]
  26304.  
  26305. snprintf(szBuffer, 0x100u, "%d,%d", nPetDataID, nSkillID);
  26306. szBuffer[255] = 0;
  26307. LogForAudit(TYPE_PETSKILLSTUDY_GETAUTO5, guidUser, szBuffer);
  26308. }
  26309.  
  26310. //----- (0805FDA0) --------------------------------------------------------
  26311. void __cdecl Audit_PMF_CreateFuben(GUID_t guidUser)
  26312. {
  26313. LogForAudit(TYPE_PMF_CREATE_FUBEN, guidUser, 0);
  26314. }
  26315.  
  26316. //----- (0805FE08) --------------------------------------------------------
  26317. void __cdecl Audit_PMF_CreateBoss(GUID_t guidUser, INT nBossDataID)
  26318. {
  26319. CHAR szBuffer[128]; // [esp+0h] [ebp-88h]
  26320.  
  26321. snprintf(szBuffer, 0x80u, "BossDataID=%d");
  26322. szBuffer[127] = 0;
  26323. LogForAudit(TYPE_PMF_CREATE_BOSS, guidUser, szBuffer);
  26324. }
  26325.  
  26326. //----- (0805FE90) --------------------------------------------------------
  26327. void __cdecl Audit_PWLock(GUID_t OwnerGUID, SceneID_t sceneId, BYTE objType, BYTE optType, const _ITEM_GUID *itemGUID, const PET_GUID_t *petGUID)
  26328. {
  26329. char aObjType[20]; // [esp+10h] [ebp-158h]
  26330. char aOptType[20]; // [esp+30h] [ebp-138h]
  26331. CHAR szBuffer[256]; // [esp+50h] [ebp-118h]
  26332.  
  26333. memset(aObjType, 0, sizeof(aObjType));
  26334. memset(aOptType, 0, sizeof(aOptType));
  26335. if ( !optType )
  26336. {
  26337. *(_DWORD *)aOptType = -120859716;
  26338. LABEL_3:
  26339. aOptType[4] = 0;
  26340. goto LABEL_4;
  26341. }
  26342. if ( optType == 1 )
  26343. {
  26344. *(_DWORD *)aOptType = -120855875;
  26345. goto LABEL_3;
  26346. }
  26347. LABEL_4:
  26348. if ( !objType )
  26349. {
  26350. *(_DWORD *)aObjType = -1211699250;
  26351. LABEL_6:
  26352. aObjType[4] = 0;
  26353. goto LABEL_7;
  26354. }
  26355. if ( objType == 1 )
  26356. {
  26357. *(_DWORD *)aObjType = -557128491;
  26358. goto LABEL_6;
  26359. }
  26360. LABEL_7:
  26361. if ( itemGUID )
  26362. {
  26363. if ( petGUID )
  26364. return;
  26365. snprintf(
  26366. szBuffer,
  26367. 0x100u,
  26368. "SceneID=%d,ItemGUID=%d_%d_%d,objType=%s,optType=%s",
  26369. sceneId,
  26370. itemGUID->m_World,
  26371. itemGUID->m_Server,
  26372. itemGUID->m_Serial,
  26373. aObjType,
  26374. aOptType);
  26375. }
  26376. else
  26377. {
  26378. snprintf(
  26379. szBuffer,
  26380. 0x100u,
  26381. "SceneID=%d,PetGUID_H=%.8x,PetGUID_L=%.8x,objType=%s,optType=%s",
  26382. sceneId,
  26383. petGUID->m_uHighSection,
  26384. petGUID->m_uLowSection,
  26385. aObjType,
  26386. aOptType);
  26387. }
  26388. szBuffer[255] = 0;
  26389. LogForAudit(TYPE_PWLOCK, OwnerGUID, szBuffer);
  26390. }
  26391.  
  26392. //----- (0805FFF8) --------------------------------------------------------
  26393. void __cdecl Audit_JoinJiaoShiJie(GUID_t guidUser)
  26394. {
  26395. char szBuffer[1024]; // [esp+4h] [ebp-408h]
  26396.  
  26397. memset(szBuffer, 0, 0x400u);
  26398. if ( !guidUser )
  26399. __assert__(
  26400. "../../Server/Server/Base/LogDefine.cpp",
  26401. 0x7BCu,
  26402. "void Audit_JoinJiaoShiJie(GUID_t)",
  26403. "guidUser != NULL");
  26404. LogForAudit(TYPE_JOIN_JIAOSHIJIE, guidUser, szBuffer);
  26405. }
  26406.  
  26407. //----- (0806009C) --------------------------------------------------------
  26408. void __cdecl Audit_JoinCollectSignature(INT sceneId, GUID_t guidUser)
  26409. {
  26410. char szBuffer[1024]; // [esp+4h] [ebp-408h]
  26411.  
  26412. szBuffer[0] = 0;
  26413. memset(&szBuffer[1], 0, 0x3FFu);
  26414. if ( guidUser == -1 )
  26415. __assert__(
  26416. "../../Server/Server/Base/LogDefine.cpp",
  26417. 0x7C6u,
  26418. "void Audit_JoinCollectSignature(INT, GUID_t)",
  26419. "guidUser != INVALID_ID");
  26420. snprintf(szBuffer, 0x400u, "sceneId = %d, GUID = 0x%x", sceneId, guidUser);
  26421. LogForAudit(TYPE_COLLECT_SIGNATURE, guidUser, szBuffer);
  26422. }
  26423.  
  26424. //----- (08060174) --------------------------------------------------------
  26425. void __cdecl Audit_ExchangeMenpaiSuit(INT sceneId, GUID_t guidUser, INT menpai, INT suitId)
  26426. {
  26427. char szBuffer[1024]; // [esp+4h] [ebp-408h]
  26428.  
  26429. szBuffer[0] = 0;
  26430. memset(&szBuffer[1], 0, 0x3FFu);
  26431. if ( guidUser == -1 )
  26432. __assert__(
  26433. "../../Server/Server/Base/LogDefine.cpp",
  26434. 0x7D1u,
  26435. "void Audit_ExchangeMenpaiSuit(INT, GUID_t, INT, INT)",
  26436. "guidUser != INVALID_ID");
  26437. snprintf(szBuffer, 0x400u, "sceneId = %d, GUID = 0X%X, MenPai = %d, SuitID = %d", sceneId, guidUser, menpai, suitId);
  26438. LogForAudit(TYPE_EXCHANGE_MENPAI_SUIT, guidUser, szBuffer);
  26439. }
  26440.  
  26441. //----- (08060250) --------------------------------------------------------
  26442. void __cdecl Audit_ExchangeFriendGift(INT sceneId, GUID_t guidUser, UINT itemId)
  26443. {
  26444. char szBuffer[1024]; // [esp+4h] [ebp-408h]
  26445.  
  26446. szBuffer[0] = 0;
  26447. memset(&szBuffer[1], 0, 0x3FFu);
  26448. if ( guidUser == -1 )
  26449. __assert__(
  26450. "../../Server/Server/Base/LogDefine.cpp",
  26451. 0x7DCu,
  26452. "void Audit_ExchangeFriendGift(INT, GUID_t, UINT)",
  26453. "guidUser != INVALID_ID");
  26454. snprintf(szBuffer, 0x400u, "sceneId = %d, GUID = 0x%x, GiftID = %u", sceneId, guidUser, itemId);
  26455. LogForAudit(TYPE_EXCHANGE_FRIEND_GIFT, guidUser, szBuffer);
  26456. }
  26457.  
  26458. //----- (0806032C) --------------------------------------------------------
  26459. void __cdecl Audit_CitySpy(INT sceneId, GUID_t guidUser, UINT level, UINT type)
  26460. {
  26461. char szBuffer[1024]; // [esp+4h] [ebp-408h]
  26462.  
  26463. szBuffer[0] = 0;
  26464. memset(&szBuffer[1], 0, 0x3FFu);
  26465. if ( guidUser == -1 )
  26466. __assert__(
  26467. "../../Server/Server/Base/LogDefine.cpp",
  26468. 0x7E7u,
  26469. "void Audit_CitySpy(INT, GUID_t, UINT, UINT)",
  26470. "guidUser != INVALID_ID");
  26471. snprintf(szBuffer, 0x400u, "sceneId = %d, GUID = 0x%x, level = %u, type = %u", sceneId, guidUser, level, type);
  26472. LogForAudit(TYPE_CITY_SPY, guidUser, szBuffer);
  26473. }
  26474.  
  26475. //----- (08060408) --------------------------------------------------------
  26476. void __cdecl Audit_XQJ_CreateFuBen(GUID_t guidUser)
  26477. {
  26478. if ( guidUser == -1 )
  26479. __assert__(
  26480. "../../Server/Server/Base/LogDefine.cpp",
  26481. 0x7F1u,
  26482. "void Audit_XQJ_CreateFuBen(GUID_t)",
  26483. "guidUser != INVALID_ID");
  26484. LogForAudit(TYPE_XQJ_FUBEN_CREATE, guidUser, 0);
  26485. }
  26486.  
  26487. //----- (08060494) --------------------------------------------------------
  26488. void __cdecl Audit_ReexperienceWedding(GUID_t guidUser1, GUID_t guidUser2, INT level1, INT level2)
  26489. {
  26490. char szBuffer[1024]; // [esp+0h] [ebp-408h]
  26491.  
  26492. if ( guidUser1 == -1 )
  26493. __assert__(
  26494. "../../Server/Server/Base/LogDefine.cpp",
  26495. 0x7F9u,
  26496. "void Audit_ReexperienceWedding(GUID_t, GUID_t, INT, INT)",
  26497. "guidUser1 != INVALID_ID");
  26498. if ( guidUser2 == -1 )
  26499. __assert__(
  26500. "../../Server/Server/Base/LogDefine.cpp",
  26501. 0x7FAu,
  26502. "void Audit_ReexperienceWedding(GUID_t, GUID_t, INT, INT)",
  26503. "guidUser2 != INVALID_ID");
  26504. szBuffer[0] = 0;
  26505. memset(&szBuffer[1], 0, 0x3FFu);
  26506. snprintf(
  26507. szBuffer,
  26508. 0x400u,
  26509. "GUID1 = 0x%x, GUID2 = 0x%x Level1 = %u, Level2 = %u",
  26510. guidUser1,
  26511. guidUser2,
  26512. level1,
  26513. level2);
  26514. LogForAudit(TYPE_REEXPERIENCE_WEDDING, guidUser1, szBuffer);
  26515. }
  26516.  
  26517. //----- (080605A0) --------------------------------------------------------
  26518. void __cdecl Audit_UseTeacherGift(GUID_t guidUser, INT itemIndex)
  26519. {
  26520. char szBuffer[1024]; // [esp+4h] [ebp-408h]
  26521.  
  26522. memset(szBuffer, 0, 0x400u);
  26523. if ( !guidUser )
  26524. __assert__(
  26525. "../../Server/Server/Base/LogDefine.cpp",
  26526. 0x806u,
  26527. "void Audit_UseTeacherGift(GUID_t, INT)",
  26528. "guidUser != NULL");
  26529. snprintf(szBuffer, 0x400u, "ItemIndex=%08d");
  26530. LogForAudit(TYPE_USE_TEACHER_GIFT, guidUser, szBuffer);
  26531. }
  26532.  
  26533. //----- (08060658) --------------------------------------------------------
  26534. void __cdecl Audit_RunHunDanUsed(GUID_t guidSelf, INT ItemIndex)
  26535. {
  26536. CHAR szBuffer[128]; // [esp+Ch] [ebp-88h]
  26537.  
  26538. snprintf(szBuffer, 0x80u, "CharacterID:%d,ItemId:%d,Use RunHuanDan once", guidSelf, ItemIndex);
  26539. szBuffer[127] = 0;
  26540. LogForAudit(TYPE_RUNHUNDAN_USED, guidSelf, szBuffer);
  26541. }
  26542.  
  26543. //----- (080606E8) --------------------------------------------------------
  26544. void __cdecl Audit_DianHuaMiBaoZengPing(GUID_t guidSelf, const CHAR *AccName, INT ItemIndex)
  26545. {
  26546. CHAR szBuffer[128]; // [esp+8h] [ebp-88h]
  26547.  
  26548. snprintf(szBuffer, 0x80u, aGetRunhundanCh, guidSelf, ItemIndex, AccName);
  26549. szBuffer[127] = 0;
  26550. LogForAudit(TYPE_DIANHUAMIBAO_LINGQU, guidSelf, szBuffer);
  26551. }
  26552.  
  26553. //----- (08060778) --------------------------------------------------------
  26554. void __cdecl Audit_AnBaoJinPaiZengPing(GUID_t guidSelf, INT ItemIndex)
  26555. {
  26556. CHAR szBuffer[128]; // [esp+Ch] [ebp-88h]
  26557.  
  26558. snprintf(szBuffer, 0x80u, "Get AnBaoDaLiBao,ItemId:%d, CharacterId:%d", ItemIndex, guidSelf);
  26559. szBuffer[127] = 0;
  26560. LogForAudit(TYPE_ANBAOJINPAI_LINGQU, guidSelf, szBuffer);
  26561. }
  26562.  
  26563. //----- (08060808) --------------------------------------------------------
  26564. void __cdecl Audit_GiveExpAfterUnline(GUID_t guidSelf, INT nDone, INT nExpNum, INT nLevel, INT nMenPai)
  26565. {
  26566. const char *v5; // [esp-18h] [ebp-A0h]
  26567. INT v6; // [esp-14h] [ebp-9Ch]
  26568. INT v7; // [esp-10h] [ebp-98h]
  26569. INT v8; // [esp-Ch] [ebp-94h]
  26570. CHAR szBuffer[128]; // [esp+0h] [ebp-88h]
  26571.  
  26572. if ( nDone )
  26573. {
  26574. v8 = nMenPai;
  26575. v7 = nLevel;
  26576. v6 = nExpNum;
  26577. v5 = "This player have get all PoolExp, so Give exp num: %d, Level:%d, MenPai: %d";
  26578. }
  26579. else
  26580. {
  26581. v8 = nMenPai;
  26582. v7 = nLevel;
  26583. v6 = nExpNum;
  26584. v5 = "This player have not get all PoolExp, so Give exp num: %d, Level:%d, MenPai: %d";
  26585. }
  26586. snprintf(szBuffer, 0x80u, v5, v6, v7, v8);
  26587. szBuffer[127] = 0;
  26588. LogForAudit(TYPE_UNLINE_GIFTEXP, guidSelf, szBuffer);
  26589. }
  26590.  
  26591. //----- (080608B4) --------------------------------------------------------
  26592. void __cdecl Audit_GiveItemAfterUnline(GUID_t guidSelf, INT nItemID, INT nItemNum, INT nLevel, INT nMenPai)
  26593. {
  26594. CHAR szBuffer[128]; // [esp+4h] [ebp-88h]
  26595.  
  26596. snprintf(
  26597. szBuffer,
  26598. 0x80u,
  26599. "Give player offline gift,ItemId:%d, ItemNum:%d, Level:%d, MenPai: %d",
  26600. nItemID,
  26601. nItemNum,
  26602. nLevel,
  26603. nMenPai);
  26604. szBuffer[127] = 0;
  26605. LogForAudit(TYPE_UNLINE_GIFTITEM, guidSelf, szBuffer);
  26606. }
  26607.  
  26608. //----- (08060948) --------------------------------------------------------
  26609. void __cdecl Audit_GivePoolExpAfterUnline(GUID_t guidSelf, INT nExpNum, INT nDay, INT nLevel, INT nMenPai)
  26610. {
  26611. CHAR szBuffer[128]; // [esp+4h] [ebp-88h]
  26612.  
  26613. snprintf(
  26614. szBuffer,
  26615. 0x80u,
  26616. "Give player offline PoolExp,PoolExp:%d, LeaveDay:%d, Level:%d, MenPai: %d",
  26617. nExpNum,
  26618. nDay,
  26619. nLevel,
  26620. nMenPai);
  26621. szBuffer[127] = 0;
  26622. LogForAudit(TYPE_UNLINE_POOLEXP, guidSelf, szBuffer);
  26623. }
  26624.  
  26625. //----- (080609DC) --------------------------------------------------------
  26626. void __cdecl Audit_NetPet_CreateCopy(GUID_t createrGuid, INT nMemberNum)
  26627. {
  26628. CHAR szBuffer[128]; // [esp+0h] [ebp-88h]
  26629.  
  26630. snprintf(szBuffer, 0x80u, "A CopyScene was created, there are %d members in is");
  26631. szBuffer[127] = 0;
  26632. LogForAudit(TYPE_NEWPET_CREATECOPY, createrGuid, szBuffer);
  26633. }
  26634.  
  26635. //----- (08060A64) --------------------------------------------------------
  26636. void __cdecl Audit_CreateXSZhuangNum(GUID_t guidUser, INT num)
  26637. {
  26638. CHAR szBuffer[128]; // [esp+0h] [ebp-88h]
  26639.  
  26640. snprintf(szBuffer, 0x80u, "A player get %d xueshangzhuang");
  26641. szBuffer[127] = 0;
  26642. LogForAudit(TYPE_XSZHUANG_CREATENUM, guidUser, szBuffer);
  26643. }
  26644.  
  26645. //----- (08060AEC) --------------------------------------------------------
  26646. void __cdecl Audit_ShiMen_CaiJiPet(GUID_t guidUser, INT Level)
  26647. {
  26648. CHAR szBuffer[128]; // [esp+0h] [ebp-88h]
  26649.  
  26650. snprintf(szBuffer, 0x80u, "%d");
  26651. szBuffer[127] = 0;
  26652. LogForAudit(TYPE_SHIMEN_CAIJI_PETLEVELPLAYER, guidUser, szBuffer);
  26653. }
  26654.  
  26655. //----- (08060B74) --------------------------------------------------------
  26656. void __cdecl Audit_QingRenJie_ShiZhuang(GUID_t guidUser)
  26657. {
  26658. if ( guidUser == -1 )
  26659. __assert__(
  26660. "../../Server/Server/Base/LogDefine.cpp",
  26661. 0x875u,
  26662. "void Audit_QingRenJie_ShiZhuang(GUID_t)",
  26663. "guidUser != INVALID_ID");
  26664. LogForAudit(TYPE_QINRENJIE_SHIZHUANG, guidUser, 0);
  26665. }
  26666.  
  26667. //----- (08060C00) --------------------------------------------------------
  26668. void __cdecl Audit_ShiMen_CaiJi(GUID_t guidUser, INT type)
  26669. {
  26670. if ( type == 1 )
  26671. {
  26672. LogForAudit(TYPE_SHIMEN_CAIJI_JOINTPLAYER, guidUser, 0);
  26673. }
  26674. else if ( type == 2 )
  26675. {
  26676. LogForAudit(TYPE_SHIMEN_CAIJI_FINISHTHREEPLAYER, guidUser, 0);
  26677. }
  26678. }
  26679.  
  26680. //----- (08060C88) --------------------------------------------------------
  26681. void __cdecl Audit_XinSanHuan_CreateFuben(GUID_t guidUser, INT type)
  26682. {
  26683. switch ( type )
  26684. {
  26685. case 1:
  26686. LogForAudit(TYPE_XINSANHUAN_CREATE_HUANGJIN, guidUser, 0);
  26687. break;
  26688. case 2:
  26689. LogForAudit(TYPE_XINSANHUAN_CREATE_XUANFOUZHU, guidUser, 0);
  26690. break;
  26691. case 3:
  26692. LogForAudit(TYPE_XINSANHUAN_CREATE_RONGYAN, guidUser, 0);
  26693. break;
  26694. }
  26695. }
  26696.  
  26697. //----- (08060D24) --------------------------------------------------------
  26698. void __cdecl Audit_XuanHaoYu(GUID_t guidSelf, INT level, INT ItemID)
  26699. {
  26700. CHAR szBuffer[128]; // [esp+Ch] [ebp-88h]
  26701.  
  26702. snprintf(szBuffer, 0x80u, "Exchange XuanHaoYu EquipLevel:%d,EquipID:%d", level, ItemID);
  26703. szBuffer[127] = 0;
  26704. LogForAudit(TYPE_XUANHAOYU_EXCHANGE, guidSelf, szBuffer);
  26705. }
  26706.  
  26707. //----- (08060DB0) --------------------------------------------------------
  26708. void __cdecl Audit_GemMelting(GUID_t guidSelf, INT GemItemID1, INT GemItemID2, INT GemItemID3, INT NeedItemID, INT ProductItemID)
  26709. {
  26710. CHAR szBuffer[256]; // [esp+0h] [ebp-118h]
  26711.  
  26712. if ( guidSelf == -1 )
  26713. __assert__(
  26714. "../../Server/Server/Base/LogDefine.cpp",
  26715. 0x89Fu,
  26716. "void Audit_GemMelting(GUID_t, INT, INT, INT, INT, INT)",
  26717. "INVALID_ID!=guidSelf");
  26718. if ( GemItemID1 == -1 )
  26719. __assert__(
  26720. "../../Server/Server/Base/LogDefine.cpp",
  26721. 0x8A0u,
  26722. "void Audit_GemMelting(GUID_t, INT, INT, INT, INT, INT)",
  26723. "INVALID_ID!=GemItemID1");
  26724. if ( GemItemID2 == -1 )
  26725. __assert__(
  26726. "../../Server/Server/Base/LogDefine.cpp",
  26727. 0x8A1u,
  26728. "void Audit_GemMelting(GUID_t, INT, INT, INT, INT, INT)",
  26729. "INVALID_ID!=GemItemID2");
  26730. if ( GemItemID3 == -1 )
  26731. __assert__(
  26732. "../../Server/Server/Base/LogDefine.cpp",
  26733. 0x8A2u,
  26734. "void Audit_GemMelting(GUID_t, INT, INT, INT, INT, INT)",
  26735. "INVALID_ID!=GemItemID3");
  26736. if ( NeedItemID == -1 )
  26737. __assert__(
  26738. "../../Server/Server/Base/LogDefine.cpp",
  26739. 0x8A3u,
  26740. "void Audit_GemMelting(GUID_t, INT, INT, INT, INT, INT)",
  26741. "INVALID_ID!=NeedItemID");
  26742. if ( ProductItemID == -1 )
  26743. __assert__(
  26744. "../../Server/Server/Base/LogDefine.cpp",
  26745. 0x8A4u,
  26746. "void Audit_GemMelting(GUID_t, INT, INT, INT, INT, INT)",
  26747. "INVALID_ID!=ProductItemID");
  26748. snprintf(szBuffer, 0x100u, "%d,%d,%d,%d,%d", GemItemID1, GemItemID2, GemItemID3, NeedItemID);
  26749. szBuffer[255] = 0;
  26750. LogForAudit(TYPE_GEM_MELTING, guidSelf, szBuffer);
  26751. }
  26752.  
  26753. //----- (08060F5C) --------------------------------------------------------
  26754. void __cdecl Audit_UpgradeRing(GUID_t guidSelf, INT level, UINT itemID, INT type)
  26755. {
  26756. int v4; // eax
  26757. CHAR szBuffer[128]; // [esp+Ch] [ebp-88h]
  26758.  
  26759. snprintf(szBuffer, 0x80u, "Level = %d, RingID = %u ", level, itemID);
  26760. szBuffer[127] = 0;
  26761. v4 = 167;
  26762. if ( type != 1 )
  26763. v4 = (type != 2) + 168;
  26764. LogForAudit((AuditType_T::TypeEnum_T)v4, guidSelf, szBuffer);
  26765. }
  26766.  
  26767. //----- (08061004) --------------------------------------------------------
  26768. void __cdecl Audit_GuildCollect(GUID_t guidSelf, const CHAR *guildName, const CHAR *cityName, INT level, UINT num, INT type)
  26769. {
  26770. AuditType_T::TypeEnum_T v6; // eax
  26771. bool v7; // zf
  26772. CHAR szBuffer[128]; // [esp+4h] [ebp-88h]
  26773.  
  26774. snprintf(szBuffer, 0x80u, "guildName=%s,cityName=%s,level=%u,num=%u", guildName, cityName, level, num);
  26775. szBuffer[127] = 0;
  26776. v6 = 177;
  26777. if ( type != 2 )
  26778. {
  26779. if ( type <= 2 )
  26780. {
  26781. LOBYTE(v6) = -80;
  26782. v7 = type == 1;
  26783. }
  26784. else
  26785. {
  26786. v6 = 178;
  26787. v7 = type == 3;
  26788. }
  26789. if ( !v7 )
  26790. v6 = 176;
  26791. }
  26792. LogForAudit(v6, guidSelf, szBuffer);
  26793. }
  26794.  
  26795. //----- (080610BC) --------------------------------------------------------
  26796. void __cdecl Audit_YuanBaoStall_Item(GUID_t guidSelf, GUID_t guidBuyer, INT number, INT ItemIndex, INT ItemPrice)
  26797. {
  26798. CHAR szBuffer[128]; // [esp+0h] [ebp-88h]
  26799.  
  26800. if ( guidSelf == -1 )
  26801. __assert__(
  26802. "../../Server/Server/Base/LogDefine.cpp",
  26803. 0x8E0u,
  26804. "void Audit_YuanBaoStall_Item(GUID_t, GUID_t, INT, INT, INT)",
  26805. "INVALID_ID!=guidSelf");
  26806. snprintf(
  26807. szBuffer,
  26808. 0x80u,
  26809. "PlayerGuid=%x,BuyerGuid=%x,Num=%d,ItemIndex=%d,ItemPrice=%d",
  26810. guidSelf,
  26811. guidBuyer,
  26812. number,
  26813. ItemIndex);
  26814. szBuffer[127] = 0;
  26815. LogForAudit(TYPE_YUANBAO_STALL_ITEM, guidSelf, szBuffer);
  26816. }
  26817.  
  26818. //----- (08061178) --------------------------------------------------------
  26819. void __cdecl Audit_YuanBaoStall_Pet(GUID_t guidSelf, GUID_t guidBuyer, INT number, INT PetIndex, INT PetPrice)
  26820. {
  26821. CHAR szBuffer[128]; // [esp+0h] [ebp-88h]
  26822.  
  26823. if ( guidSelf == -1 )
  26824. __assert__(
  26825. "../../Server/Server/Base/LogDefine.cpp",
  26826. 0x8EBu,
  26827. "void Audit_YuanBaoStall_Pet(GUID_t, GUID_t, INT, INT, INT)",
  26828. "INVALID_ID!=guidSelf");
  26829. snprintf(
  26830. szBuffer,
  26831. 0x80u,
  26832. "PlayerGuid=%x,BuyerGuid=%x,Num=%d,PetIndex=%d,PetPrice=%d",
  26833. guidSelf,
  26834. guidBuyer,
  26835. number,
  26836. PetIndex);
  26837. szBuffer[127] = 0;
  26838. LogForAudit(TYPE_YUANBAO_STALL_PET, guidSelf, szBuffer);
  26839. }
  26840.  
  26841. //----- (08061234) --------------------------------------------------------
  26842. void __cdecl Audit_Segment(GUID_t guidSelf, INT type)
  26843. {
  26844. if ( type == 1 )
  26845. {
  26846. LogForAudit(TYPE_FRACTION_SEGMENT, guidSelf, 0);
  26847. }
  26848. else if ( type == 2 )
  26849. {
  26850. LogForAudit(TYPE_COMPOSE_SEGMENT, guidSelf, 0);
  26851. }
  26852. }
  26853.  
  26854. //----- (080612BC) --------------------------------------------------------
  26855. void __cdecl Audit_ResetPMFCountSmall(GUID_t guidSelf, INT nDayCount)
  26856. {
  26857. CHAR szBuffer[64]; // [esp+0h] [ebp-48h]
  26858.  
  26859. if ( guidSelf == -1 )
  26860. __assert__(
  26861. "../../Server/Server/Base/LogDefine.cpp",
  26862. 0x901u,
  26863. "void Audit_ResetPMFCountSmall(GUID_t, INT)",
  26864. "INVALID_ID!=guidSelf");
  26865. snprintf(szBuffer, 0x40u, "%d");
  26866. szBuffer[63] = 0;
  26867. LogForAudit(TYPE_RESET_PMFCOUNT_SMALL, guidSelf, szBuffer);
  26868. }
  26869.  
  26870. //----- (08061368) --------------------------------------------------------
  26871. void __cdecl Audit_ChangeFatigueState(GUID_t guidSelf, INT oldState, INT newState)
  26872. {
  26873. CHAR szBuffer[64]; // [esp+0h] [ebp-48h]
  26874.  
  26875. if ( guidSelf == -1 )
  26876. __assert__(
  26877. "../../Server/Server/Base/LogDefine.cpp",
  26878. 0x90Cu,
  26879. "void Audit_ChangeFatigueState(GUID_t, INT, INT)",
  26880. "INVALID_ID!=guidSelf");
  26881. snprintf(szBuffer, 0x40u, "%d,%d", oldState, newState);
  26882. szBuffer[63] = 0;
  26883. LogForAudit(TYPE_CHANGE_FATIGUE_STATE, guidSelf, szBuffer);
  26884. }
  26885.  
  26886. //----- (0806141C) --------------------------------------------------------
  26887. void __cdecl Oops_Log(INT type, INT from, INT srvID, const CHAR *szMsg)
  26888. {
  26889. const char *v4; // eax
  26890. CHAR *v5; // ecx
  26891. CHAR szBuffer[4096]; // [esp+0h] [ebp-1008h]
  26892.  
  26893. v4 = "WORLD";
  26894. if ( from )
  26895. {
  26896. v4 = "LOGIN_SERVER" + 6;
  26897. if ( from != 1 )
  26898. v4 = "UNKNOWN";
  26899. }
  26900. v5 = "undefined";
  26901. if ( (unsigned int)type <= 3 )
  26902. v5 = g_OopsLogDefine[type].szType;
  26903. snprintf(szBuffer, 0x1000u, "typeid=%d type=%s from=%s srvID=%d desc=%s", type, v5, v4, srvID);
  26904. szBuffer[4095] = 0;
  26905. CacheLog(27, "%s", szBuffer);
  26906. }
  26907.  
  26908. //----- (080614D8) --------------------------------------------------------
  26909. #error "8061518: positive sp value has been found (funcsize=21)"
  26910.  
  26911. //----- (08061598) --------------------------------------------------------
  26912. void __cdecl OopsLogBase::WriteLog(OopsLogBase *const this, INT type, const CHAR *szMsg)
  26913. {
  26914. Oops_Log(type, 0, 0, szMsg);
  26915. }
  26916.  
  26917. //----- (080615B0) --------------------------------------------------------
  26918. void __cdecl Audit_QianDao_Award(GUID_t guidPlayer, const CHAR *strPlayerName, INT nLevel, INT nAwardCount)
  26919. {
  26920. CHAR szBuffer[256]; // [esp+8h] [ebp-108h]
  26921.  
  26922. snprintf(
  26923. szBuffer,
  26924. 0x100u,
  26925. "Give player award![name = %s][level = %d][award count = %d]",
  26926. strPlayerName,
  26927. nLevel,
  26928. nAwardCount);
  26929. szBuffer[255] = 0;
  26930. LogForAudit(TYPE_QIANDAO, guidPlayer, szBuffer);
  26931. }
  26932.  
  26933. //----- (08061640) --------------------------------------------------------
  26934. void __cdecl Audit_QianDao_Join(GUID_t guidPlayer, const CHAR *strPlayerName, INT nLevel)
  26935. {
  26936. CHAR szBuffer[256]; // [esp+Ch] [ebp-108h]
  26937.  
  26938. snprintf(szBuffer, 0x100u, "Player join this act![name = %s][level = %d]", strPlayerName, nLevel);
  26939. szBuffer[255] = 0;
  26940. LogForAudit(TYPE_QIANDAO, guidPlayer, szBuffer);
  26941. }
  26942.  
  26943. //----- (080616CC) --------------------------------------------------------
  26944. void __cdecl Audit_FindFriendAD_DelInfo(GUID_t guidSelf, INT nADType)
  26945. {
  26946. CHAR szBuffer[64]; // [esp+0h] [ebp-48h]
  26947.  
  26948. if ( guidSelf == -1 )
  26949. __assert__(
  26950. "../../Server/Server/Base/LogDefine.cpp",
  26951. 0x97Au,
  26952. "void Audit_FindFriendAD_DelInfo(GUID_t, INT)",
  26953. "INVALID_ID!=guidSelf");
  26954. if ( nADType == 2 )
  26955. goto LABEL_8;
  26956. if ( nADType <= 2 )
  26957. {
  26958. if ( nADType != 1 )
  26959. return;
  26960. LABEL_8:
  26961. snprintf(szBuffer, 0x40u, "%s");
  26962. szBuffer[63] = 0;
  26963. LogForAudit(TYPE_FINDFRIENDAD_DELAD, guidSelf, szBuffer);
  26964. return;
  26965. }
  26966. if ( nADType == 3 || nADType == 4 )
  26967. goto LABEL_8;
  26968. }
  26969.  
  26970. //----- (080617B8) --------------------------------------------------------
  26971. void __cdecl Audit_FindFriendAD_NewInfo(GUID_t guidSelf, INT nADType)
  26972. {
  26973. CHAR szBuffer[64]; // [esp+0h] [ebp-48h]
  26974.  
  26975. if ( guidSelf == -1 )
  26976. __assert__(
  26977. "../../Server/Server/Base/LogDefine.cpp",
  26978. 0x996u,
  26979. "void Audit_FindFriendAD_NewInfo(GUID_t, INT)",
  26980. "INVALID_ID!=guidSelf");
  26981. if ( nADType == 2 )
  26982. goto LABEL_8;
  26983. if ( nADType <= 2 )
  26984. {
  26985. if ( nADType != 1 )
  26986. return;
  26987. LABEL_8:
  26988. snprintf(szBuffer, 0x40u, "%s");
  26989. szBuffer[63] = 0;
  26990. LogForAudit(TYPE_FINDFRIENDAD_ADDAD, guidSelf, szBuffer);
  26991. return;
  26992. }
  26993. if ( nADType == 3 || nADType == 4 )
  26994. goto LABEL_8;
  26995. }
  26996.  
  26997. //----- (080618A4) --------------------------------------------------------
  26998. void __cdecl Audit_FindFriendad_ClickZheng(GUID_t guidSelf)
  26999. {
  27000. CHAR szBuffer[64]; // [esp+0h] [ebp-48h]
  27001.  
  27002. snprintf(szBuffer, 0x40u, "%s");
  27003. szBuffer[63] = 0;
  27004. LogForAudit(TYPE_FINDFRIENDAD_CLICKZHENG, guidSelf, szBuffer);
  27005. }
  27006.  
  27007. //----- (08061928) --------------------------------------------------------
  27008. void __cdecl Audit_PetSkillLevelUpAndCompound(GUID_t guidUser, INT type, INT ItemID)
  27009. {
  27010. CHAR szBuffer[128]; // [esp+0h] [ebp-88h]
  27011.  
  27012. if ( type == 1 )
  27013. {
  27014. snprintf(szBuffer, 0x80u, "PetSkillLevelUp Consumed ItemID:%d");
  27015. szBuffer[127] = 0;
  27016. LogForAudit(TYPE_PETSKILLLEVELUP, guidUser, szBuffer);
  27017. }
  27018. else if ( type == 2 )
  27019. {
  27020. snprintf(szBuffer, 0x80u, "PetMedicineHC Compound ItemID:%d");
  27021. szBuffer[127] = 0;
  27022. LogForAudit(TYPE_PETMEDICINEHCCOMPOUND, guidUser, szBuffer);
  27023. }
  27024. }
  27025.  
  27026. //----- (080619F0) --------------------------------------------------------
  27027. void __cdecl _tcf_0_10(void *a1)
  27028. {
  27029. std::ios_base::Init::~Init(&std::__ioinit);
  27030. }
  27031.  
  27032. //----- (08061A00) --------------------------------------------------------
  27033. void __cdecl _tcf_1_2(void *a1)
  27034. {
  27035. theOopsLog._vptr_OopsLogBase = (int (**)(...))off_80C3600;
  27036. }
  27037. // 80C3600: using guessed type _DWORD (__cdecl *off_80C3600[2])(OopsLogBase *this);
  27038.  
  27039. //----- (08061A10) --------------------------------------------------------
  27040. void `global constructor keyed to'SaveItemLog()
  27041. {
  27042. std::ios_base::Init::Init(&std::__ioinit);
  27043. __cxa_atexit(_tcf_0_10, 0, &_dso_handle);
  27044. theOopsLog._vptr_OopsLogBase = (int (**)(...))off_80C3600;
  27045. __cxa_atexit(_tcf_1_2, 0, &_dso_handle);
  27046. }
  27047. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  27048. // 80C3600: using guessed type _DWORD (__cdecl *off_80C3600[2])(OopsLogBase *this);
  27049.  
  27050. //----- (08061A58) --------------------------------------------------------
  27051. void __cdecl OopsLogBase::~OopsLogBase(_DWORD *a2)
  27052. {
  27053. *a2 = off_80C3600;
  27054. }
  27055. // 80C3600: using guessed type _DWORD (__cdecl *off_80C3600[2])(OopsLogBase *this);
  27056.  
  27057. //----- (08061A68) --------------------------------------------------------
  27058. void __cdecl OopsLogBase::~OopsLogBase(IPRegionTable *const a2)
  27059. {
  27060. a2->_vptr_IPRegionTable = (int (**)(...))off_80C3600;
  27061. operator delete(a2);
  27062. }
  27063. // 80C3600: using guessed type _DWORD (__cdecl *off_80C3600[2])(OopsLogBase *this);
  27064.  
  27065. //----- (08061A7C) --------------------------------------------------------
  27066. void __cdecl OopsLogBase::Flush(OopsLogBase *const this)
  27067. {
  27068. ;
  27069. }
  27070.  
  27071. //----- (08061A84) --------------------------------------------------------
  27072. void __cdecl StrTable::StrTable(_DWORD *a2)
  27073. {
  27074. *a2 = 0;
  27075. a2[1] = 0;
  27076. a2[2] = 0;
  27077. }
  27078.  
  27079. //----- (08061AA0) --------------------------------------------------------
  27080. void __cdecl StrTable::StrTable(_DWORD *a2)
  27081. {
  27082. *a2 = 0;
  27083. a2[1] = 0;
  27084. a2[2] = 0;
  27085. }
  27086.  
  27087. //----- (08061ABC) --------------------------------------------------------
  27088. void __cdecl StrTable::~StrTable(StrTable *const this)
  27089. {
  27090. _TABLEITEM_STR *v1; // edx
  27091. int i; // ebx
  27092.  
  27093. v1 = this->m_pTable;
  27094. if ( this->m_pTable )
  27095. {
  27096. for ( i = (int)&v1[v1[-1].m_Status]; v1 != (_TABLEITEM_STR *)i; *(_DWORD *)(i + 8) = 0 )
  27097. {
  27098. i -= 12;
  27099. if ( *(_DWORD *)i )
  27100. {
  27101. operator delete[](*(void **)i);
  27102. v1 = this->m_pTable;
  27103. *(_DWORD *)i = 0;
  27104. }
  27105. *(_DWORD *)(i + 4) = 0;
  27106. }
  27107. operator delete[](&v1[-1].m_Status);
  27108. this->m_pTable = 0;
  27109. }
  27110. this->m_Count = 0;
  27111. this->m_StringSize = 0;
  27112. }
  27113.  
  27114. //----- (08061B34) --------------------------------------------------------
  27115. void __cdecl StrTable::~StrTable(StrTable *const this)
  27116. {
  27117. _TABLEITEM_STR *v1; // edx
  27118. int i; // ebx
  27119.  
  27120. v1 = this->m_pTable;
  27121. if ( this->m_pTable )
  27122. {
  27123. for ( i = (int)&v1[v1[-1].m_Status]; v1 != (_TABLEITEM_STR *)i; *(_DWORD *)(i + 8) = 0 )
  27124. {
  27125. i -= 12;
  27126. if ( *(_DWORD *)i )
  27127. {
  27128. operator delete[](*(void **)i);
  27129. v1 = this->m_pTable;
  27130. *(_DWORD *)i = 0;
  27131. }
  27132. *(_DWORD *)(i + 4) = 0;
  27133. }
  27134. operator delete[](&v1[-1].m_Status);
  27135. this->m_pTable = 0;
  27136. }
  27137. this->m_Count = 0;
  27138. this->m_StringSize = 0;
  27139. }
  27140.  
  27141. //----- (08061BAC) --------------------------------------------------------
  27142. #error "8061CF2: positive sp value has been found (funcsize=96)"
  27143.  
  27144. //----- (08061D28) --------------------------------------------------------
  27145. #error "8061E02: positive sp value has been found (funcsize=66)"
  27146.  
  27147. //----- (08061E38) --------------------------------------------------------
  27148. void *__cdecl StrTable::Get(StrTable *const this, const CHAR *szString)
  27149. {
  27150. UINT v3; // eax
  27151. UINT v4; // edi
  27152. int v5; // ebx
  27153. int v6; // esi
  27154. UINT v7; // eax
  27155. _TABLEITEM_STR *v8; // [esp+4h] [ebp-14h]
  27156. UINT i; // [esp+8h] [ebp-10h]
  27157.  
  27158. if ( szString )
  27159. {
  27160. if ( *szString )
  27161. {
  27162. v3 = MyCRC(szString);
  27163. v4 = this->m_Count;
  27164. v5 = (v3 >> 2) % v4;
  27165. i = 0;
  27166. if ( v4 )
  27167. {
  27168. v8 = this->m_pTable;
  27169. do
  27170. {
  27171. v6 = v5;
  27172. v7 = v8[v5].m_Status;
  27173. if ( !v7 )
  27174. break;
  27175. if ( v7 != 2 && !strcmp(v8[v6].m_pString, szString) )
  27176. return v8[v6].m_pPtr;
  27177. if ( v4 <= ++v5 )
  27178. v5 = 0;
  27179. ++i;
  27180. }
  27181. while ( v4 > i );
  27182. }
  27183. }
  27184. }
  27185. return 0;
  27186. }
  27187.  
  27188. //----- (08061F20) --------------------------------------------------------
  27189. void *__cdecl StrTable::GetByPos(StrTable *const this, UINT pos)
  27190. {
  27191. void *v2; // ebx
  27192.  
  27193. v2 = 0;
  27194. if ( this->m_Count > pos && this->m_pTable[pos].m_Status == 1 )
  27195. v2 = this->m_pTable[pos].m_pPtr;
  27196. return v2;
  27197. }
  27198.  
  27199. //----- (08061F4C) --------------------------------------------------------
  27200. void __cdecl StrTable::Remove(StrTable *const this, const CHAR *szString)
  27201. {
  27202. UINT v2; // eax
  27203. UINT v3; // edi
  27204. int v4; // ebx
  27205. int v5; // esi
  27206. UINT v6; // eax
  27207. _TABLEITEM_STR *v7; // eax
  27208. _TABLEITEM_STR *v8; // [esp+Ch] [ebp-18h]
  27209. UINT i; // [esp+10h] [ebp-14h]
  27210.  
  27211. v2 = MyCRC(szString);
  27212. v3 = this->m_Count;
  27213. v4 = (v2 >> 2) % v3;
  27214. i = 0;
  27215. if ( v3 )
  27216. {
  27217. v8 = this->m_pTable;
  27218. do
  27219. {
  27220. v5 = v4;
  27221. v6 = v8[v4].m_Status;
  27222. if ( !v6 )
  27223. break;
  27224. if ( v6 != 2 && !strcmp(v8[v5].m_pString, szString) )
  27225. {
  27226. memset(v8[v5].m_pString, 0, this->m_StringSize);
  27227. v7 = this->m_pTable;
  27228. v7[v5].m_pPtr = 0;
  27229. v7[v5].m_Status = 2;
  27230. return;
  27231. }
  27232. if ( v3 <= ++v4 )
  27233. v4 = 0;
  27234. ++i;
  27235. }
  27236. while ( v3 > i );
  27237. }
  27238. }
  27239.  
  27240. //----- (08062054) --------------------------------------------------------
  27241. void __cdecl StrTable::RemoveByPos(StrTable *const this, UINT pos)
  27242. {
  27243. UINT v2; // ebx
  27244. _TABLEITEM_STR *v3; // eax
  27245.  
  27246. if ( this->m_Count > pos )
  27247. {
  27248. v2 = pos;
  27249. memset(this->m_pTable[pos].m_pString, 0, this->m_StringSize);
  27250. v3 = this->m_pTable;
  27251. v3[v2].m_pPtr = 0;
  27252. v3[v2].m_Status = 2;
  27253. }
  27254. }
  27255.  
  27256. //----- (080620A0) --------------------------------------------------------
  27257. void __cdecl StrTable::CleanUp(StrTable *const this)
  27258. {
  27259. _TABLEITEM_STR *v1; // eax
  27260. UINT v2; // edi
  27261. int v3; // ebx
  27262.  
  27263. v1 = this->m_pTable;
  27264. if ( this->m_pTable )
  27265. {
  27266. v2 = 0;
  27267. if ( this->m_Count )
  27268. {
  27269. v3 = 0;
  27270. do
  27271. {
  27272. memset(v1[v3].m_pString, 0, this->m_StringSize);
  27273. v1 = this->m_pTable;
  27274. v1[v3].m_Status = 0;
  27275. ++v2;
  27276. v1[v3].m_pPtr = 0;
  27277. ++v3;
  27278. }
  27279. while ( this->m_Count > v2 );
  27280. }
  27281. }
  27282. }
  27283.  
  27284. //----- (080620F4) --------------------------------------------------------
  27285. void __cdecl _tcf_0_11(void *a1)
  27286. {
  27287. std::ios_base::Init::~Init(&std::__ioinit);
  27288. }
  27289.  
  27290. //----- (08062104) --------------------------------------------------------
  27291. void `global constructor keyed to'StrTable::StrTable()
  27292. {
  27293. std::ios_base::Init::Init(&std::__ioinit);
  27294. __cxa_atexit(_tcf_0_11, 0, &_dso_handle);
  27295. }
  27296. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  27297.  
  27298. //----- (08062130) --------------------------------------------------------
  27299. void __cdecl _HUMAN_DB_LOAD::CleanUp(_HUMAN_DB_LOAD *const this)
  27300. {
  27301. signed int v1; // eax
  27302. _PVPInfo *v2; // ecx
  27303. FightBackList_T *v3; // eax
  27304. signed int v4; // edx
  27305. PersonalDuelList_T *v5; // eax
  27306. signed int v6; // edx
  27307. PersonalEnemyList_T *v7; // eax
  27308. signed int v8; // edx
  27309. _HUMAN_DB_LOAD *v9; // eax
  27310. signed int v10; // edx
  27311. _HUMAN_DB_LOAD *v11; // eax
  27312. signed int v12; // edx
  27313. _DuelInfo *v13; // eax
  27314. _FATIGUE_INFO *v14; // eax
  27315. _DOUBLE_EXP *v15; // eax
  27316.  
  27317. this->m_PortraitID = -1;
  27318. memset(this->m_Name, 0, 0x1Cu);
  27319. *(_WORD *)&this->m_Name[28] = 0;
  27320. memset(this->m_Title, 0, 0x20u);
  27321. *(_WORD *)&this->m_Title[32] = 0;
  27322. this->m_GUID = -1;
  27323. this->m_Sex = 0;
  27324. this->m_CreateDate = 0;
  27325. memset(&this->m_Titles, 0, 0x2ECu);
  27326. this->m_Level = 0;
  27327. this->m_Vigor = 0;
  27328. this->m_MaxVigor = 0;
  27329. this->m_VigorRegeneRate = 0;
  27330. this->m_Energy = 0;
  27331. this->m_MaxEnergy = 0;
  27332. this->m_EnergyRegeneRate = 0;
  27333. this->m_Exp = 0;
  27334. this->m_nGoodBadValue = 0;
  27335. this->m_JuqingPoint = 0;
  27336. this->m_Money = 0;
  27337. memset(this->m_Passwd, 0, 0x10u);
  27338. this->m_Passwd[16] = 0;
  27339. this->m_Position.m_fX = 0.0;
  27340. this->m_Position.m_fZ = 0.0;
  27341. this->m_BakPosition.m_fX = 0.0;
  27342. this->m_BakPosition.m_fZ = 0.0;
  27343. v1 = 0;
  27344. this->m_uPwdDelTime = 0;
  27345. this->m_HairColor = -1;
  27346. this->m_FaceColor = -1;
  27347. this->m_HairModel = -1;
  27348. this->m_FaceModel = -1;
  27349. this->m_StartScene = -1;
  27350. this->m_BakScene = -1;
  27351. this->m_GuildID = -1;
  27352. this->m_GuildLeagueID = -1;
  27353. this->m_TeamID = -1;
  27354. this->m_OnlineTime = 0;
  27355. this->m_LastLoginTime = 0;
  27356. this->m_LastLogoutTime = 0;
  27357. this->m_LeftDieTime = 0;
  27358. this->m_DefEquip = -1;
  27359. this->m_GuildPoint = 0;
  27360. this->m_MenpaiPoint = 0;
  27361. this->m_DBVersion = 0;
  27362. this->m_ActualAge = 20;
  27363. this->m_MenPai = 0;
  27364. this->m_NeiShang = 0;
  27365. this->m_HP = 0;
  27366. this->m_MP = 0;
  27367. this->m_StrikePoint = 0;
  27368. this->m_Rage = 0;
  27369. this->m_nPKValue = 0;
  27370. this->m_guidCurrentPet.m_uHighSection = 0;
  27371. this->m_guidCurrentPet.m_uLowSection = 0;
  27372. memset(&this->m_BaseAttrLevel1, 0, sizeof(this->m_BaseAttrLevel1));
  27373. v2 = &this->m_PvpInfo;
  27374. this->m_Level1Points = 0;
  27375. this->m_PvpInfo.m_nCampID = -1;
  27376. v2->m_nReputationID = -1;
  27377. v2->m_nPvpMode = 0;
  27378. v2->m_nPvpModeSwitchDelayTime = 0;
  27379. do
  27380. this->m_PvpInfo.m_oReputationList.m_aList[v1++] = 0;
  27381. while ( v1 <= 63 );
  27382. v3 = &this->m_PvpInfo.m_oFightBackList;
  27383. v4 = 9;
  27384. do
  27385. {
  27386. v3->m_aList[0].m_nUniqueID = -1;
  27387. v3->m_aList[0].m_nTime = 0;
  27388. v3 = (FightBackList_T *)((char *)v3 + 8);
  27389. --v4;
  27390. }
  27391. while ( v4 >= 0 );
  27392. v5 = &this->m_PvpInfo.m_oPersonalDuelList;
  27393. v6 = 4;
  27394. do
  27395. {
  27396. v5->m_aList[0].m_nUniqueID = -1;
  27397. v5->m_aList[0].m_nTime = 0;
  27398. v5 = (PersonalDuelList_T *)((char *)v5 + 8);
  27399. --v6;
  27400. }
  27401. while ( v6 >= 0 );
  27402. v7 = &this->m_PvpInfo.m_oPersonalEnemyList;
  27403. v8 = 5;
  27404. do
  27405. {
  27406. v7->m_aList[0].m_nUniqueID = -1;
  27407. v7->m_aList[0].m_nTime = 0;
  27408. v7 = (PersonalEnemyList_T *)((char *)v7 + 8);
  27409. --v8;
  27410. }
  27411. while ( v8 >= 0 );
  27412. this->m_nLastHostilePlayer = -1;
  27413. this->m_nHostileActionWarningTime = 0;
  27414. v9 = this;
  27415. v10 = 1;
  27416. do
  27417. {
  27418. v9->m_ShopGuid[0].m_PoolPos = -1;
  27419. v9->m_ShopGuid[0].m_Server = -1;
  27420. v9->m_ShopGuid[0].m_World = -1;
  27421. v9->m_ShopGuid[0].m_Scene = -1;
  27422. v9 = (_HUMAN_DB_LOAD *)((char *)v9 + 12);
  27423. --v10;
  27424. }
  27425. while ( v10 >= 0 );
  27426. v11 = this;
  27427. v12 = 9;
  27428. do
  27429. {
  27430. v11->m_FavoriteList[0].m_PoolPos = -1;
  27431. v11->m_FavoriteList[0].m_Server = -1;
  27432. v11->m_FavoriteList[0].m_World = -1;
  27433. v11->m_FavoriteList[0].m_Scene = -1;
  27434. v11 = (_HUMAN_DB_LOAD *)((char *)v11 + 12);
  27435. --v12;
  27436. }
  27437. while ( v12 >= 0 );
  27438. memset(&this->m_Titles, 0, 0x2ECu);
  27439. v13 = &this->m_oDuelInfo;
  27440. v13->m_nMaxReqTime = 0;
  27441. v13->m_nProcessStatus = 0;
  27442. v14 = &this->m_FatigueInfo;
  27443. this->m_oDuelInfo.m_guidDueler = -1;
  27444. this->m_LastChangePKValueTime = 0;
  27445. this->m_LastConnectServerTime = 0;
  27446. this->m_LastConnectServerIP = 0;
  27447. v14->m_uTotalOfflineTime = 0;
  27448. v14->m_uCurrentEnterServerTime = 0;
  27449. v14->m_uLastLeaveServerTime = 0;
  27450. v15 = &this->m_DoubleExp;
  27451. this->m_FatigueInfo.m_uTotalOnlineTime = 0;
  27452. this->m_uKillMonsterCount = 0;
  27453. this->m_DoubleExp.m_nCount = 0;
  27454. v15->m_bLock = 0;
  27455. v15->m_unMoneyDETime = 0;
  27456. v15->m_unFreeDETime = 0;
  27457. v15->m_nPreFlashTime = 0;
  27458. this->m_DelTime = 0;
  27459. this->m_iYuanBao = 0;
  27460. this->m_nZengDian = 0;
  27461. this->m_nBuyYuanBao = 0;
  27462. this->m_CommitNum = 0;
  27463. this->m_uSafeMoney = 0;
  27464. this->m_uUnlockTime = 0;
  27465. this->m_bSafeBoxStatus = 0;
  27466. this->m_IPRegion = -1;
  27467. this->m_yPetNumExtra = 0;
  27468. this->m_nMoneyJZ = 0;
  27469. this->m_nBattleScore = 0;
  27470. this->m_nBattleFlag = 0;
  27471. this->m_nBattleRes = 0;
  27472. }
  27473.  
  27474. //----- (08062580) --------------------------------------------------------
  27475. void __cdecl _BANK_DB_LOAD::CleanUp(char *s)
  27476. {
  27477. memset(s, 0, 0x2940u);
  27478. *((_DWORD *)s + 2640) = 0;
  27479. s[10564] = 20;
  27480. *(_DWORD *)(s + 10565) = 0;
  27481. }
  27482.  
  27483. //----- (080625B8) --------------------------------------------------------
  27484. void __cdecl _BAG_DB_LOAD::CleanUp(_DWORD *s)
  27485. {
  27486. memset(s, 0, 0x44C0u);
  27487. s[4404] = 0;
  27488. s[4400] = 20;
  27489. s[4401] = 20;
  27490. s[4402] = 20;
  27491. }
  27492.  
  27493. //----- (080625FC) --------------------------------------------------------
  27494. void __cdecl _EQUIP_DB_LOAD::CleanUp(_WORD *s)
  27495. {
  27496. memset(s, 0, 0xD10u);
  27497. s[1672] = 0;
  27498. }
  27499.  
  27500. //----- (08062624) --------------------------------------------------------
  27501. void __cdecl _ABILITY_DB_LOAD::CleanUp(char *s)
  27502. {
  27503. memset(s + 256, 0, 0x200u);
  27504. memset(s, 0, 0x100u);
  27505. }
  27506.  
  27507. //----- (08062658) --------------------------------------------------------
  27508. void __cdecl _SKILL_DB_LOAD::CleanUp(_SKILL_DB_LOAD *const this)
  27509. {
  27510. signed int v1; // eax
  27511.  
  27512. v1 = 0;
  27513. do
  27514. this->m_aSkill[v1++].m_nSkillID = -1;
  27515. while ( v1 <= 127 );
  27516. this->m_Count = 0;
  27517. }
  27518.  
  27519. //----- (08062674) --------------------------------------------------------
  27520. void __cdecl _XINFA_DB_LOAD::CleanUp(_XINFA_DB_LOAD *const this)
  27521. {
  27522. signed int v1; // eax
  27523.  
  27524. v1 = 0;
  27525. do
  27526. {
  27527. this->m_aXinFa[v1].m_nXinFaID = -1;
  27528. this->m_aXinFa[v1++].m_nLevel = 0;
  27529. }
  27530. while ( v1 <= 15 );
  27531. this->m_Count = 0;
  27532. }
  27533.  
  27534. //----- (08062694) --------------------------------------------------------
  27535. void __cdecl _IMPACT_DB_LOAD::CleanUp(_BYTE *a2)
  27536. {
  27537. memset(a2 + 1, 0, 0x5F0u);
  27538. *a2 = 0;
  27539. }
  27540.  
  27541. //----- (080626B8) --------------------------------------------------------
  27542. void __cdecl _MISSION_DB_LOAD::CleanUp(_MISSION_DB_LOAD *const this)
  27543. {
  27544. signed int v1; // edx
  27545. _MISSION_DB_LOAD *v2; // [esp+4h] [ebp-14h]
  27546.  
  27547. v2 = this;
  27548. v1 = 19;
  27549. do
  27550. {
  27551. v2->m_aMission[0].m_yFlags = 0;
  27552. v2->m_aMission[0].m_idScript = -1;
  27553. v2->m_aMission[0].m_idMission = -1;
  27554. memset(&v2->m_aMission[0]._anon_0, 0, sizeof(v2->m_aMission[0]._anon_0));
  27555. v2 = (_MISSION_DB_LOAD *)((char *)v2 + 41);
  27556. --v1;
  27557. }
  27558. while ( v1 >= 0 );
  27559. this->m_Count = 0;
  27560. memset(this->m_aMissionHaveDoneFlags, 0, 0x200u);
  27561. memset(this->m_aMissionData, 0, 0x800u);
  27562. }
  27563.  
  27564. //----- (08062738) --------------------------------------------------------
  27565. void __cdecl _RELATION_DB_LOAD::CleanUp(_RELATION_DB_LOAD *const this)
  27566. {
  27567. signed int v1; // edx
  27568. signed int v2; // edx
  27569. PrenticeInfo *v3; // eax
  27570. PrenticeInfo1 *v4; // eax
  27571. _RELATION_DB_LOAD *v5; // [esp+0h] [ebp-14h]
  27572.  
  27573. v5 = this;
  27574. v1 = 99;
  27575. do
  27576. {
  27577. v5->m_aRelation[0].m_Member.m_MemberGUID = -1;
  27578. memset(v5->m_aRelation[0].m_Member.m_szMemberName, 0, 0x1Cu);
  27579. *(_WORD *)&v5->m_aRelation[0].m_Member.m_szMemberName[28] = 0;
  27580. v5->m_aRelation[0].m_Type = 0;
  27581. v5->m_aRelation[0].m_Group = 0;
  27582. v5->m_aRelation[0].m_Member.m_nLevel = 0;
  27583. v5->m_aRelation[0].m_Member.m_nMenPai = 9;
  27584. v5->m_aRelation[0].m_Member.m_nPortrait = -1;
  27585. v5->m_aRelation[0].m_Member.m_GuildID = -1;
  27586. v5->m_aRelation[0].m_FriendPoint = 0;
  27587. --v1;
  27588. v5 = (_RELATION_DB_LOAD *)((char *)v5 + 58);
  27589. }
  27590. while ( v1 >= 0 );
  27591. v2 = 0;
  27592. do
  27593. this->m_aRelationCount[v2++] = 0;
  27594. while ( v2 <= 6 );
  27595. memset(this->m_szMood, 0, sizeof(this->m_szMood));
  27596. v3 = &this->m_PrenticeInfo;
  27597. this->m_MarriageInfo.m_SpouseGUID = -1;
  27598. v3->m_uPrenticeCount = 0;
  27599. v3->m_uMoralPoint = 0;
  27600. v4 = &this->m_PrenticeInfo1;
  27601. this->m_PrenticeInfo.m_PrenticeGUID[0] = -1;
  27602. this->m_PrenticeInfo.m_PrenticeGUID[1] = -1;
  27603. this->m_MasterInfo.m_MasterGUID = -1;
  27604. this->m_PrenticeInfo.m_BetrayingTime = 0;
  27605. this->m_PrenticeInfo1.m_BetrayingTime = 0;
  27606. v4->m_uMoralPoint = 0;
  27607. v4->m_uPrenticeCount = 0;
  27608. v4->m_uPrenticeExp = 0;
  27609. v4->m_uMasterExp = 0;
  27610. v4->m_uMasterLevel = 0;
  27611. this->m_PrenticeInfo1.m_PrenticeGUID[0] = -1;
  27612. this->m_PrenticeInfo1.m_PrenticeGUID[1] = -1;
  27613. }
  27614.  
  27615. //----- (0806285C) --------------------------------------------------------
  27616. void __cdecl _PET_SKILL::CleanUp(int a2)
  27617. {
  27618. *(_BYTE *)a2 = 0;
  27619. *(_WORD *)(a2 + 1) = -1;
  27620. }
  27621.  
  27622. //----- (08062870) --------------------------------------------------------
  27623. void __cdecl _PET_DB_LOAD::CleanUp(_PET_DB_LOAD *const this)
  27624. {
  27625. _PET_SKILL *v1; // edi
  27626. signed int v2; // ebx
  27627. _COOLDOWN_DB_LOAD_FOR_PET *v3; // eax
  27628. signed int v4; // edx
  27629. _PET_DB_LOAD *v5; // eax
  27630. signed int v6; // edx
  27631.  
  27632. this->m_GUID.m_uHighSection = 0;
  27633. this->m_GUID.m_uLowSection = 0;
  27634. this->m_SpouseGUID.m_uHighSection = 0;
  27635. this->m_SpouseGUID.m_uLowSection = 0;
  27636. this->m_nDataID = -1;
  27637. memset(this->m_szName, 0, 0x1Cu);
  27638. *(_WORD *)&this->m_szName[28] = 0;
  27639. memset(this->m_szNick, 0, 0x20u);
  27640. *(_WORD *)&this->m_szNick[32] = 0;
  27641. this->m_nLevel = 0;
  27642. this->m_nLastProcreateLevel = -1;
  27643. this->m_nTakeLevel = 0;
  27644. this->m_nAttackType = 0;
  27645. this->m_AIType = -1;
  27646. this->m_nHP = 0;
  27647. this->m_nLife = 0;
  27648. this->m_byPetType = -1;
  27649. this->m_byGeneration = 0;
  27650. this->m_byHappiness = 0;
  27651. this->m_nStrPerception = 0;
  27652. this->m_nConPerception = 0;
  27653. this->m_nDexPerception = 0;
  27654. this->m_nSprPerception = 0;
  27655. this->m_nIntPerception = 0;
  27656. this->m_nGenGu = 0;
  27657. this->m_fGrowRate = 0.0;
  27658. this->m_nRemainPoint = 0;
  27659. this->m_nExp = 0;
  27660. v1 = this->m_SkillList;
  27661. this->m_yFlags = 0;
  27662. v2 = 12;
  27663. this->m_nSavvy = 0;
  27664. do
  27665. {
  27666. _PET_SKILL::CleanUp((int)v1);
  27667. ++v1;
  27668. --v2;
  27669. }
  27670. while ( v2 >= 0 );
  27671. v3 = &this->m_CooldownList;
  27672. v4 = 7;
  27673. do
  27674. {
  27675. v3->m_aCooldown[0].m_nID = -1;
  27676. v3->m_aCooldown[0].m_nCooldown = 0;
  27677. v3->m_aCooldown[0].m_nCooldownElapsed = 0;
  27678. v3 = (_COOLDOWN_DB_LOAD_FOR_PET *)((char *)v3 + 12);
  27679. --v4;
  27680. }
  27681. while ( v4 >= 0 );
  27682. v5 = this;
  27683. v6 = 9;
  27684. do
  27685. {
  27686. v5->m_PetTitle[0].m_tTitleID = -1;
  27687. v5->m_PetTitle[0].m_uCreateTime = 0;
  27688. v5 = (_PET_DB_LOAD *)((char *)v5 + 8);
  27689. --v6;
  27690. }
  27691. while ( v6 >= 0 );
  27692. this->m_tCurPetTitleID = -1;
  27693. this->m_usPWUnlockTime = 0;
  27694. this->m_usReserve = 0;
  27695. }
  27696.  
  27697. //----- (080629D4) --------------------------------------------------------
  27698. void __cdecl _PET_DB_LIST_LOAD::CleanUp(_PET_DB_LIST_LOAD *const this)
  27699. {
  27700. _PET_DB_LIST_LOAD *v1; // esi
  27701. signed int v2; // ebx
  27702.  
  27703. v1 = this;
  27704. v2 = 9;
  27705. do
  27706. {
  27707. _PET_DB_LOAD::CleanUp(v1->m_aPetDB);
  27708. v1 = (_PET_DB_LIST_LOAD *)((char *)v1 + 399);
  27709. --v2;
  27710. }
  27711. while ( v2 >= 0 );
  27712. }
  27713.  
  27714. //----- (080629FC) --------------------------------------------------------
  27715. void __cdecl _tcf_0_12(void *a1)
  27716. {
  27717. std::ios_base::Init::~Init(&std::__ioinit);
  27718. }
  27719.  
  27720. //----- (08062A0C) --------------------------------------------------------
  27721. void `global constructor keyed to'_HUMAN_DB_LOAD::CleanUp()
  27722. {
  27723. std::ios_base::Init::Init(&std::__ioinit);
  27724. __cxa_atexit(_tcf_0_12, 0, &_dso_handle);
  27725. }
  27726. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  27727.  
  27728. //----- (08062A38) --------------------------------------------------------
  27729. void __cdecl BATCH_MAIL::CleanUp(int a2)
  27730. {
  27731. *(_DWORD *)a2 = -1;
  27732. *(_BYTE *)(a2 + 4) = 0;
  27733. memset((void *)(a2 + 5), 0, 0x1Cu);
  27734. *(_WORD *)(a2 + 33) = 0;
  27735. *(_BYTE *)(a2 + 40) = 0;
  27736. memset((void *)(a2 + 41), 0, 0xC1Cu);
  27737. *(_WORD *)(a2 + 3142) = 0;
  27738. memset((void *)(a2 + 3144), 0, 0x100u);
  27739. *(_BYTE *)(a2 + 3400) = 3;
  27740. *(_DWORD *)(a2 + 3404) = 0;
  27741. }
  27742.  
  27743. //----- (08062AA8) --------------------------------------------------------
  27744. BYTE __cdecl GetSerialClass(UINT Serial)
  27745. {
  27746. return Serial / 0x989680;
  27747. }
  27748.  
  27749. //----- (08062AC0) --------------------------------------------------------
  27750. unsigned int __cdecl GetSerialType(unsigned int a2)
  27751. {
  27752. return a2 % 0x186A0 / 0x3E8;
  27753. }
  27754.  
  27755. //----- (08062AE4) --------------------------------------------------------
  27756. unsigned int __cdecl GetSerialQual(unsigned int a2)
  27757. {
  27758. return a2 % 0x989680 / 0x186A0;
  27759. }
  27760.  
  27761. //----- (08062B0C) --------------------------------------------------------
  27762. UINT __cdecl GetSerialIndex(unsigned int a2)
  27763. {
  27764. return a2 % 0x3E8;
  27765. }
  27766.  
  27767. //----- (08062B24) --------------------------------------------------------
  27768. void __cdecl SwapItem(_ITEM *pItemA, _ITEM *pItemB)
  27769. {
  27770. _ITEM tempItem; // [esp+0h] [ebp-C8h]
  27771.  
  27772. if ( !pItemA )
  27773. __assert__("../../Common/GameStruct.cpp", 0x9Eu, "void SwapItem(_ITEM*, _ITEM*)", "pItemA");
  27774. if ( !pItemB )
  27775. __assert__("../../Common/GameStruct.cpp", 0x9Fu, "void SwapItem(_ITEM*, _ITEM*)", "pItemB");
  27776. tempItem.m_ItemGUID.m_Serial = 0;
  27777. tempItem.m_ItemGUID.m_Server = 0;
  27778. tempItem.m_ItemGUID.m_World = 0;
  27779. memset(&tempItem, 0, 0xB0u);
  27780. memcpy(&tempItem, pItemA, 0xB0u);
  27781. memcpy(pItemA, pItemB, 0xB0u);
  27782. memcpy(pItemB, &tempItem, 0xB0u);
  27783. }
  27784.  
  27785. //----- (08062BE8) --------------------------------------------------------
  27786. void __cdecl _ITEM::SetItemBind(_ITEM *const this, BOOL bBind)
  27787. {
  27788. if ( bBind )
  27789. this->m_nsBind |= 1u;
  27790. else
  27791. this->m_nsBind &= 0xFEu;
  27792. }
  27793.  
  27794. //----- (08062C04) --------------------------------------------------------
  27795. void __cdecl _ITEM::SetItemLock(_ITEM *const this, BOOL bBind)
  27796. {
  27797. if ( bBind )
  27798. this->m_nsBind |= 0x40u;
  27799. else
  27800. this->m_nsBind &= 0xBFu;
  27801. }
  27802.  
  27803. //----- (08062C20) --------------------------------------------------------
  27804. void __cdecl FindFriendAD_DetailInfo::CleanUp(int a2)
  27805. {
  27806. *(_DWORD *)(a2 + 4) = -1;
  27807. *(_DWORD *)(a2 + 8) = 0;
  27808. *(_DWORD *)(a2 + 12) = 0;
  27809. memset((void *)(a2 + 16), 0, 0x1Cu);
  27810. *(_WORD *)(a2 + 44) = 0;
  27811. *(_DWORD *)(a2 + 48) = 0;
  27812. *(_BYTE *)(a2 + 52) = 0;
  27813. *(_BYTE *)(a2 + 53) = 0;
  27814. *(_DWORD *)(a2 + 56) = 0;
  27815. memset((void *)(a2 + 60), 0, 0x18u);
  27816. *(_BYTE *)(a2 + 84) = 0;
  27817. *(_BYTE *)(a2 + 85) = 0;
  27818. *(_DWORD *)(a2 + 88) = 0;
  27819. *(_DWORD *)(a2 + 92) = 0;
  27820. *(_DWORD *)(a2 + 104) = 0;
  27821. *(_DWORD *)(a2 + 96) = 0;
  27822. *(_DWORD *)(a2 + 100) = 0;
  27823. *(_DWORD *)(a2 + 108) = 0;
  27824. *(_DWORD *)(a2 + 112) = 0;
  27825. *(_DWORD *)(a2 + 116) = 0;
  27826. *(_DWORD *)(a2 + 120) = 0;
  27827. *(_DWORD *)(a2 + 124) = 0;
  27828. }
  27829.  
  27830. //----- (08062CBC) --------------------------------------------------------
  27831. _ITEM_TYPE *__userpurge ConvertSerial2ItemType@<eax>(_ITEM_TYPE *retstr, UINT Serial)
  27832. {
  27833. unsigned int v2; // ebx
  27834. unsigned int v3; // ebx
  27835. unsigned int v4; // ebx
  27836.  
  27837. v2 = GetSerialClass(Serial) & 0x7F | *(_DWORD *)retstr & 0xFFFFFF80;
  27838. *retstr = (_ITEM_TYPE)v2;
  27839. v3 = ((GetSerialQual(Serial) & 0x7F) << 7) | v2 & 0xFFFFC07F;
  27840. *retstr = (_ITEM_TYPE)v3;
  27841. v4 = ((GetSerialType(Serial) & 0x7F) << 14) | v3 & 0xFFE03FFF;
  27842. *retstr = (_ITEM_TYPE)v4;
  27843. *retstr = (_ITEM_TYPE)((GetSerialIndex(Serial) << 21) | v4 & 0x1FFFFF);
  27844. return retstr;
  27845. }
  27846.  
  27847. //----- (08062D2C) --------------------------------------------------------
  27848. BOOL __cdecl _ITEM::GetCreatorVar(int a2)
  27849. {
  27850. return (*(_BYTE *)(a2 + 13) & 0x10) != 0;
  27851. }
  27852.  
  27853. //----- (08062D40) --------------------------------------------------------
  27854. UINT __cdecl GetItemRealSize(const _ITEM *const it)
  27855. {
  27856. int v1; // edi
  27857. BYTE v2; // bl
  27858. UINT result; // eax
  27859. signed int v4; // eax
  27860. signed int v5; // eax
  27861.  
  27862. if ( GetSerialClass(it->m_ItemIndex) != 1 || it->_anon_1.m_Equip.m_bytDarksFlag != 1 )
  27863. {
  27864. v1 = (unsigned int)_ITEM::GetCreatorVar((int)it) >= 1 ? 0x3A : 0;
  27865. }
  27866. else
  27867. {
  27868. v4 = 2;
  27869. do
  27870. --v4;
  27871. while ( v4 >= 0 );
  27872. v5 = 4;
  27873. do
  27874. --v5;
  27875. while ( v5 >= 0 );
  27876. v1 = 25;
  27877. }
  27878. v2 = GetSerialClass(it->m_ItemIndex);
  27879. if ( v2 == 1 )
  27880. return v1 + 2 * it->_anon_1.m_Equip.m_AttrCount + 76;
  27881. GetSerialClass(it->m_ItemIndex);
  27882. result = v1 + 74;
  27883. if ( v2 != 5 )
  27884. {
  27885. GetSerialClass(it->m_ItemIndex);
  27886. if ( v2 == 3 || (GetSerialClass(it->m_ItemIndex), v2 == 2) || (GetSerialClass(it->m_ItemIndex), v2 == 4) )
  27887. {
  27888. result = v1 + 58;
  27889. }
  27890. else
  27891. {
  27892. GetSerialClass(it->m_ItemIndex);
  27893. result = v1 + 50;
  27894. if ( v2 != 6 )
  27895. result = v1 + 30;
  27896. }
  27897. }
  27898. return result;
  27899. }
  27900.  
  27901. //----- (08062E1C) --------------------------------------------------------
  27902. void __cdecl OverWriteItem(_ITEM *pItemA, _ITEM *pItemB)
  27903. {
  27904. if ( !pItemA )
  27905. __assert__("../../Common/GameStruct.cpp", 0xA9u, "void OverWriteItem(_ITEM*, _ITEM*)", "pItemA");
  27906. if ( !pItemB )
  27907. __assert__("../../Common/GameStruct.cpp", 0xAAu, "void OverWriteItem(_ITEM*, _ITEM*)", "pItemB");
  27908. memcpy(pItemB, pItemA, 0xB0u);
  27909. memset(pItemA, 0, 0xB0u);
  27910. }
  27911.  
  27912. //----- (08062E90) --------------------------------------------------------
  27913. void __cdecl _ITEM::Read(_ITEM *const this, SocketInputStream *const iStream)
  27914. {
  27915. BYTE v2; // bl
  27916. CHAR *v3; // ebx
  27917. signed int v4; // esi
  27918. CHAR *v5; // ebx
  27919. signed int v6; // esi
  27920. signed int v7; // esi
  27921. CHAR *v8; // ebx
  27922. CHAR *v9; // ebx
  27923. signed int v10; // esi
  27924.  
  27925. SocketInputStream::Read(iStream, (CHAR *)this, 8u);
  27926. SocketInputStream::Read(iStream, (CHAR *)&this->m_ItemIndex, 4u);
  27927. SocketInputStream::Read(iStream, &this->m_RulerID, 1u);
  27928. SocketInputStream::Read(iStream, &this->m_nsBind, 1u);
  27929. SocketInputStream::Read(iStream, (CHAR *)this->m_Param, 0xCu);
  27930. v2 = GetSerialClass(this->m_ItemIndex);
  27931. if ( v2 == 1 )
  27932. {
  27933. SocketInputStream::Read(iStream, (CHAR *)&this->_anon_1, 1u);
  27934. SocketInputStream::Read(iStream, (CHAR *)&this->_anon_1.m_Equip.m_GemMax, 1u);
  27935. SocketInputStream::Read(iStream, (CHAR *)&this->_anon_1.m_Equip.m_FaileTimes, 1u);
  27936. SocketInputStream::Read(iStream, (CHAR *)&this->_anon_1.m_Equip.m_CurDurPoint, 1u);
  27937. SocketInputStream::Read(iStream, (CHAR *)&this->_anon_1.m_StoreMap.m_xPos, 2u);
  27938. SocketInputStream::Read(iStream, (CHAR *)&this->_anon_1.m_Equip.m_AttrCount, 1u);
  27939. v7 = 0;
  27940. if ( this->_anon_1.m_Equip.m_AttrCount )
  27941. {
  27942. v8 = (char *)&this->_anon_1.m_StoreMap + 50;
  27943. do
  27944. {
  27945. SocketInputStream::Read(iStream, v8, 2u);
  27946. ++v7;
  27947. v8 += 2;
  27948. }
  27949. while ( this->_anon_1.m_Equip.m_AttrCount > v7 );
  27950. }
  27951. SocketInputStream::Read(iStream, (CHAR *)&this->_anon_1.m_Equip.m_StoneCount, 1u);
  27952. v9 = (char *)&this->_anon_1.m_StoreMap + 32;
  27953. v10 = 3;
  27954. do
  27955. {
  27956. SocketInputStream::Read(iStream, v9, 4u);
  27957. v9 += 4;
  27958. --v10;
  27959. }
  27960. while ( v10 >= 0 );
  27961. SocketInputStream::Read(iStream, (CHAR *)&this->_anon_1.m_Equip.m_Enhancelvl, 1u);
  27962. SocketInputStream::Read(iStream, (CHAR *)&this->_anon_1.m_Equip.m_AdMagic, 1u);
  27963. SocketInputStream::Read(iStream, (CHAR *)&this->_anon_1.m_StoreMap.m_zPos + 2, 2u);
  27964. SocketInputStream::Read(iStream, (CHAR *)this->_anon_1.m_Equip.m_Aptitude, 6u);
  27965. SocketInputStream::Read(iStream, (CHAR *)&this->_anon_1.m_Equip.m_Qual, 1u);
  27966. SocketInputStream::Read(iStream, (CHAR *)&this->_anon_1.m_StoreMap + 20, 2u);
  27967. SocketInputStream::Read(iStream, (CHAR *)&this->_anon_1.m_Medic.m_TargetType, 8u);
  27968. SocketInputStream::Read(iStream, (CHAR *)&this->_anon_1.m_Equip.m_bytDarksFlag, 1u);
  27969. LABEL_11:
  27970. if ( GetSerialClass(this->m_ItemIndex) != 1 )
  27971. goto LABEL_8;
  27972. goto LABEL_12;
  27973. }
  27974. GetSerialClass(this->m_ItemIndex);
  27975. if ( v2 == 5 )
  27976. {
  27977. SocketInputStream::Read(iStream, (CHAR *)&this->_anon_1, 0x2Cu);
  27978. goto LABEL_11;
  27979. }
  27980. GetSerialClass(this->m_ItemIndex);
  27981. if ( v2 == 3 || (GetSerialClass(this->m_ItemIndex), v2 == 2) || (GetSerialClass(this->m_ItemIndex), v2 == 4) )
  27982. {
  27983. SocketInputStream::Read(iStream, (CHAR *)&this->_anon_1, 0x1Cu);
  27984. goto LABEL_11;
  27985. }
  27986. GetSerialClass(this->m_ItemIndex);
  27987. if ( v2 == 6 )
  27988. {
  27989. SocketInputStream::Read(iStream, (CHAR *)&this->_anon_1, 0x14u);
  27990. goto LABEL_11;
  27991. }
  27992. if ( GetSerialClass(this->m_ItemIndex) != 1 )
  27993. goto LABEL_8;
  27994. LABEL_12:
  27995. if ( this->_anon_1.m_Equip.m_bytDarksFlag == 1 )
  27996. {
  27997. SocketInputStream::Read(iStream, &this->_anon_0.m_Creator[24], 1u);
  27998. SocketInputStream::Read(iStream, (CHAR *)&this->_anon_0, 4u);
  27999. v3 = &this->_anon_0.m_Creator[4];
  28000. v4 = 2;
  28001. do
  28002. {
  28003. SocketInputStream::Read(iStream, v3, 2u);
  28004. v3 += 2;
  28005. --v4;
  28006. }
  28007. while ( v4 >= 0 );
  28008. v5 = &this->_anon_0.m_Creator[10];
  28009. v6 = 4;
  28010. do
  28011. {
  28012. SocketInputStream::Read(iStream, v5, 2u);
  28013. v5 += 2;
  28014. --v6;
  28015. }
  28016. while ( v6 >= 0 );
  28017. SocketInputStream::Read(iStream, &this->_anon_0.m_Creator[20], 2u);
  28018. SocketInputStream::Read(iStream, &this->_anon_0.m_Creator[22], 2u);
  28019. goto LABEL_9;
  28020. }
  28021. LABEL_8:
  28022. if ( _ITEM::GetCreatorVar((int)this) )
  28023. SocketInputStream::Read(iStream, (CHAR *)&this->_anon_0, 0x3Au);
  28024. LABEL_9:
  28025. SocketInputStream::Read(iStream, (CHAR *)&this->m_usPWUnlockTime, 2u);
  28026. SocketInputStream::Read(iStream, (CHAR *)&this->m_usReserve, 2u);
  28027. }
  28028.  
  28029. //----- (080631D4) --------------------------------------------------------
  28030. void __cdecl _ITEM::Write(const _ITEM *const this, SocketOutputStream *const oStream)
  28031. {
  28032. BYTE v2; // al
  28033. const CHAR *v3; // ebx
  28034. signed int v4; // esi
  28035. const CHAR *v5; // ebx
  28036. signed int v6; // esi
  28037. signed int v7; // esi
  28038. const CHAR *v8; // ebx
  28039. const CHAR *v9; // ebx
  28040. signed int v10; // esi
  28041.  
  28042. SocketOutputStream::Write(oStream, (const CHAR *)this, 8u);
  28043. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_ItemIndex, 4u);
  28044. SocketOutputStream::Write(oStream, &this->m_RulerID, 1u);
  28045. SocketOutputStream::Write(oStream, &this->m_nsBind, 1u);
  28046. SocketOutputStream::Write(oStream, (const CHAR *)this->m_Param, 0xCu);
  28047. v2 = GetSerialClass(this->m_ItemIndex);
  28048. switch ( v2 )
  28049. {
  28050. case 1u:
  28051. SocketOutputStream::Write(oStream, (const CHAR *)&this->_anon_1, 1u);
  28052. SocketOutputStream::Write(oStream, (const CHAR *)&this->_anon_1.m_Equip.m_GemMax, 1u);
  28053. SocketOutputStream::Write(oStream, (const CHAR *)&this->_anon_1.m_Equip.m_FaileTimes, 1u);
  28054. SocketOutputStream::Write(oStream, (const CHAR *)&this->_anon_1.m_Equip.m_CurDurPoint, 1u);
  28055. SocketOutputStream::Write(oStream, (const CHAR *)&this->_anon_1.m_StoreMap.m_xPos, 2u);
  28056. SocketOutputStream::Write(oStream, (const CHAR *)&this->_anon_1.m_Equip.m_AttrCount, 1u);
  28057. v7 = 0;
  28058. if ( this->_anon_1.m_Equip.m_AttrCount )
  28059. {
  28060. v8 = (char *)&this->_anon_1.m_StoreMap + 50;
  28061. do
  28062. {
  28063. SocketOutputStream::Write(oStream, v8, 2u);
  28064. ++v7;
  28065. v8 += 2;
  28066. }
  28067. while ( this->_anon_1.m_Equip.m_AttrCount > v7 );
  28068. }
  28069. SocketOutputStream::Write(oStream, (const CHAR *)&this->_anon_1.m_Equip.m_StoneCount, 1u);
  28070. v9 = (char *)&this->_anon_1.m_StoreMap + 32;
  28071. v10 = 3;
  28072. do
  28073. {
  28074. SocketOutputStream::Write(oStream, v9, 4u);
  28075. v9 += 4;
  28076. --v10;
  28077. }
  28078. while ( v10 >= 0 );
  28079. SocketOutputStream::Write(oStream, (const CHAR *)&this->_anon_1.m_Equip.m_Enhancelvl, 1u);
  28080. SocketOutputStream::Write(oStream, (const CHAR *)&this->_anon_1.m_Equip.m_AdMagic, 1u);
  28081. SocketOutputStream::Write(oStream, (const CHAR *)&this->_anon_1.m_StoreMap.m_zPos + 2, 2u);
  28082. SocketOutputStream::Write(oStream, (const CHAR *)this->_anon_1.m_Equip.m_Aptitude, 6u);
  28083. SocketOutputStream::Write(oStream, (const CHAR *)&this->_anon_1.m_Equip.m_Qual, 1u);
  28084. SocketOutputStream::Write(oStream, (const CHAR *)&this->_anon_1.m_StoreMap + 20, 2u);
  28085. SocketOutputStream::Write(oStream, (const CHAR *)&this->_anon_1.m_Medic.m_TargetType, 8u);
  28086. SocketOutputStream::Write(oStream, (const CHAR *)&this->_anon_1.m_Equip.m_bytDarksFlag, 1u);
  28087. LABEL_11:
  28088. if ( GetSerialClass(this->m_ItemIndex) != 1 )
  28089. goto LABEL_8;
  28090. goto LABEL_12;
  28091. case 5u:
  28092. SocketOutputStream::Write(oStream, (const CHAR *)&this->_anon_1, 0x2Cu);
  28093. goto LABEL_11;
  28094. case 3u:
  28095. case 2u:
  28096. case 4u:
  28097. SocketOutputStream::Write(oStream, (const CHAR *)&this->_anon_1, 0x1Cu);
  28098. goto LABEL_11;
  28099. case 6u:
  28100. SocketOutputStream::Write(oStream, (const CHAR *)&this->_anon_1, 0x14u);
  28101. goto LABEL_11;
  28102. }
  28103. if ( GetSerialClass(this->m_ItemIndex) != 1 )
  28104. goto LABEL_8;
  28105. LABEL_12:
  28106. if ( this->_anon_1.m_Equip.m_bytDarksFlag == 1 )
  28107. {
  28108. SocketOutputStream::Write(oStream, &this->_anon_0.m_Creator[24], 1u);
  28109. SocketOutputStream::Write(oStream, (const CHAR *)&this->_anon_0, 4u);
  28110. v3 = &this->_anon_0.m_Creator[4];
  28111. v4 = 2;
  28112. do
  28113. {
  28114. SocketOutputStream::Write(oStream, v3, 2u);
  28115. v3 += 2;
  28116. --v4;
  28117. }
  28118. while ( v4 >= 0 );
  28119. v5 = &this->_anon_0.m_Creator[10];
  28120. v6 = 4;
  28121. do
  28122. {
  28123. SocketOutputStream::Write(oStream, v5, 2u);
  28124. v5 += 2;
  28125. --v6;
  28126. }
  28127. while ( v6 >= 0 );
  28128. SocketOutputStream::Write(oStream, &this->_anon_0.m_Creator[20], 2u);
  28129. SocketOutputStream::Write(oStream, &this->_anon_0.m_Creator[22], 2u);
  28130. goto LABEL_9;
  28131. }
  28132. LABEL_8:
  28133. if ( _ITEM::GetCreatorVar((int)this) )
  28134. SocketOutputStream::Write(oStream, (const CHAR *)&this->_anon_0, 0x3Au);
  28135. LABEL_9:
  28136. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_usPWUnlockTime, 2u);
  28137. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_usReserve, 2u);
  28138. }
  28139.  
  28140. //----- (080634E0) --------------------------------------------------------
  28141. BOOL __cdecl _ITEM::IsFixAttr(_ITEM *const this, BYTE attrType)
  28142. {
  28143. return (signed int)attrType >= 58 && ((signed int)attrType <= 61 || attrType == 63);
  28144. }
  28145.  
  28146. //----- (08063504) --------------------------------------------------------
  28147. BYTE __cdecl _ITEM::GetFixAttrCount(_ITEM *const this)
  28148. {
  28149. return 0;
  28150. }
  28151.  
  28152. //----- (0806350C) --------------------------------------------------------
  28153. BOOL __cdecl _ITEM::GetItemBind(int a2)
  28154. {
  28155. return (*(_BYTE *)(a2 + 13) & 1) != 0;
  28156. }
  28157.  
  28158. //----- (08063520) --------------------------------------------------------
  28159. BOOL __cdecl _ITEM::GetItemLock(int a2)
  28160. {
  28161. return (*(_BYTE *)(a2 + 13) & 0x40) != 0;
  28162. }
  28163.  
  28164. //----- (08063534) --------------------------------------------------------
  28165. BOOL __cdecl _ITEM::GetItemIdent(int a2)
  28166. {
  28167. return (*(_BYTE *)(a2 + 13) & 2) != 0;
  28168. }
  28169.  
  28170. //----- (08063548) --------------------------------------------------------
  28171. void __cdecl _ITEM::SetItemIdent(_ITEM *const this, BOOL bIdent)
  28172. {
  28173. if ( bIdent )
  28174. this->m_nsBind |= 2u;
  28175. else
  28176. this->m_nsBind &= 0xFDu;
  28177. }
  28178.  
  28179. //----- (08063564) --------------------------------------------------------
  28180. void __cdecl _ITEM::SetCreatorVar(_ITEM *const this, BOOL bCreator)
  28181. {
  28182. if ( bCreator )
  28183. this->m_nsBind |= 0x10u;
  28184. else
  28185. this->m_nsBind &= 0xEFu;
  28186. }
  28187.  
  28188. //----- (08063580) --------------------------------------------------------
  28189. const CHAR *__cdecl _ITEM::GetCreator(const _ITEM *const this)
  28190. {
  28191. const CHAR *result; // eax
  28192.  
  28193. result = 0;
  28194. if ( this->m_nsBind & 0x10 )
  28195. result = (const CHAR *)&this->_anon_0;
  28196. return result;
  28197. }
  28198.  
  28199. //----- (08063594) --------------------------------------------------------
  28200. BOOL __cdecl _ITEM::GetItemPLock(int a2)
  28201. {
  28202. return (*(_BYTE *)(a2 + 13) & 4) != 0;
  28203. }
  28204.  
  28205. //----- (080635A8) --------------------------------------------------------
  28206. void __cdecl _ITEM::SetItemPLock(_ITEM *const this, BOOL bLock)
  28207. {
  28208. if ( bLock )
  28209. this->m_nsBind |= 4u;
  28210. else
  28211. this->m_nsBind &= 0xFBu;
  28212. }
  28213.  
  28214. //----- (080635C4) --------------------------------------------------------
  28215. BOOL __cdecl _ITEM::GetItemAptitude(int a2)
  28216. {
  28217. return (*(_BYTE *)(a2 + 13) & 0x20) != 0;
  28218. }
  28219.  
  28220. //----- (080635D8) --------------------------------------------------------
  28221. void __cdecl _ITEM::SetItemAptitude(_ITEM *const this, BOOL bLock)
  28222. {
  28223. if ( bLock )
  28224. this->m_nsBind |= 0x20u;
  28225. else
  28226. this->m_nsBind &= 0xDFu;
  28227. }
  28228.  
  28229. //----- (080635F4) --------------------------------------------------------
  28230. INT __cdecl _ITEM::GetItemFailTimes(int a2)
  28231. {
  28232. return *(unsigned __int8 *)(a2 + 90);
  28233. }
  28234.  
  28235. //----- (08063600) --------------------------------------------------------
  28236. void __cdecl _ITEM::SetItemFailTimes(int a3, char a4)
  28237. {
  28238. *(_BYTE *)(a3 + 90) = a4;
  28239. }
  28240.  
  28241. //----- (08063610) --------------------------------------------------------
  28242. int __cdecl _ITEM::GetItemVisual(int a2)
  28243. {
  28244. return *(unsigned __int16 *)(a2 + 108);
  28245. }
  28246.  
  28247. //----- (0806361C) --------------------------------------------------------
  28248. void __cdecl _ITEM::SetItemVisual(int nVisual, __int16 nVisuala)
  28249. {
  28250. *(_WORD *)(nVisual + 108) = nVisuala;
  28251. }
  28252.  
  28253. //----- (0806362C) --------------------------------------------------------
  28254. INT __cdecl _ITEM::GetItemParamValue(_ITEM *const this, UINT Start, const ItemParamValue *const ipv)
  28255. {
  28256. ItemParamValue v3; // eax
  28257. INT result; // eax
  28258.  
  28259. v3 = *ipv;
  28260. if ( *ipv == 1 )
  28261. {
  28262. if ( Start > 0xA )
  28263. __assert__(
  28264. "../../Common/GameStruct.cpp",
  28265. 0x1E7u,
  28266. "INT _ITEM::GetItemParamValue(UINT, const ItemParamValue&)",
  28267. "FALSE");
  28268. result = *(signed __int16 *)((char *)this->m_Param + Start);
  28269. }
  28270. else if ( *ipv <= 1 )
  28271. {
  28272. if ( v3 )
  28273. LABEL_4:
  28274. __assert__(
  28275. "../../Common/GameStruct.cpp",
  28276. 0x1F7u,
  28277. "INT _ITEM::GetItemParamValue(UINT, const ItemParamValue&)",
  28278. "FALSE");
  28279. if ( Start > 0xB )
  28280. __assert__(
  28281. "../../Common/GameStruct.cpp",
  28282. 0x1DDu,
  28283. "INT _ITEM::GetItemParamValue(UINT, const ItemParamValue&)",
  28284. "FALSE");
  28285. result = *((char *)this->m_Param + Start);
  28286. }
  28287. else
  28288. {
  28289. if ( v3 != 2 )
  28290. goto LABEL_4;
  28291. if ( Start > 8 )
  28292. __assert__(
  28293. "../../Common/GameStruct.cpp",
  28294. 0x1F1u,
  28295. "INT _ITEM::GetItemParamValue(UINT, const ItemParamValue&)",
  28296. "FALSE");
  28297. result = *(INT *)((char *)this->m_Param + Start);
  28298. }
  28299. return result;
  28300. }
  28301.  
  28302. //----- (08063710) --------------------------------------------------------
  28303. void __cdecl _ITEM::SetItemParam(_ITEM *const this, UINT start, const ItemParamValue *const ipv, INT value)
  28304. {
  28305. ItemParamValue v4; // eax
  28306.  
  28307. v4 = *ipv;
  28308. if ( *ipv == 1 )
  28309. {
  28310. if ( start > 0xA )
  28311. __assert__(
  28312. "../../Common/GameStruct.cpp",
  28313. 0x213u,
  28314. "void _ITEM::SetItemParam(UINT, const ItemParamValue&, INT)",
  28315. "FALSE");
  28316. *(_WORD *)((char *)this->m_Param + start) = value;
  28317. }
  28318. else if ( *ipv <= 1 )
  28319. {
  28320. if ( v4 )
  28321. LABEL_4:
  28322. __assert__(
  28323. "../../Common/GameStruct.cpp",
  28324. 0x223u,
  28325. "void _ITEM::SetItemParam(UINT, const ItemParamValue&, INT)",
  28326. "FALSE");
  28327. if ( start > 0xB )
  28328. __assert__(
  28329. "../../Common/GameStruct.cpp",
  28330. 0x209u,
  28331. "void _ITEM::SetItemParam(UINT, const ItemParamValue&, INT)",
  28332. "FALSE");
  28333. *((_BYTE *)this->m_Param + start) = value;
  28334. }
  28335. else
  28336. {
  28337. if ( v4 != 2 )
  28338. goto LABEL_4;
  28339. if ( start > 8 )
  28340. __assert__(
  28341. "../../Common/GameStruct.cpp",
  28342. 0x21Du,
  28343. "void _ITEM::SetItemParam(UINT, const ItemParamValue&, INT)",
  28344. "FALSE");
  28345. *(INT *)((char *)this->m_Param + start) = value;
  28346. }
  28347. }
  28348.  
  28349. //----- (080637F4) --------------------------------------------------------
  28350. UINT __cdecl _ITEM::GetEquipmentMaxLevelGemID(_ITEM *const this)
  28351. {
  28352. _ITEM::$CD9C529E86993C344469A681B28E9DF0 *v2; // edi
  28353. BYTE v3; // al
  28354. unsigned __int8 v4; // si
  28355. UINT v5; // ebx
  28356. INT v6; // eax
  28357. BYTE yIndex; // [esp+3h] [ebp-19h]
  28358. INT nMaxLevel; // [esp+4h] [ebp-18h]
  28359. BYTE byCount; // [esp+Bh] [ebp-11h]
  28360. UINT uGemID; // [esp+Ch] [ebp-10h]
  28361.  
  28362. uGemID = -1;
  28363. if ( GetSerialClass(this->m_ItemIndex) == 1 )
  28364. {
  28365. v2 = &this->_anon_1;
  28366. v3 = this->_anon_1.m_Equip.m_StoneCount;
  28367. byCount = this->_anon_1.m_Equip.m_StoneCount;
  28368. nMaxLevel = -1;
  28369. if ( v3 )
  28370. {
  28371. v4 = 0;
  28372. yIndex = 0;
  28373. if ( v3 )
  28374. {
  28375. do
  28376. {
  28377. v5 = *((_DWORD *)&v2->m_StoreMap + v4 + 8);
  28378. if ( v5 - 1 <= 0xFFFFFFFD )
  28379. {
  28380. v6 = (unsigned __int8)GetSerialQual(*((_DWORD *)&v2->m_StoreMap + v4 + 8));
  28381. if ( (unsigned __int8)v6 > nMaxLevel )
  28382. {
  28383. nMaxLevel = v6;
  28384. uGemID = v5;
  28385. }
  28386. ++yIndex;
  28387. }
  28388. ++v4;
  28389. }
  28390. while ( v4 <= 3u && byCount > yIndex );
  28391. }
  28392. }
  28393. }
  28394. return uGemID;
  28395. }
  28396.  
  28397. //----- (0806387C) --------------------------------------------------------
  28398. INT __cdecl _ITEM::WriteFixAttr(_ITEM *const this, CHAR *pIn, INT BuffLength)
  28399. {
  28400. int v3; // eax
  28401. CHAR *v4; // esi
  28402. BYTE v5; // al
  28403. INT result; // eax
  28404. STORE_MAP_INFO *v7; // edx
  28405. _ITEM::$CD9C529E86993C344469A681B28E9DF0 *v8; // edx
  28406. signed int v9; // ecx
  28407. _ITEM::$CD9C529E86993C344469A681B28E9DF0 *v10; // edx
  28408. CHAR szTmp[128]; // [esp+0h] [ebp-98h]
  28409.  
  28410. if ( !pIn )
  28411. __assert__("../../Common/GameStruct.cpp", 0x24Au, "INT _ITEM::WriteFixAttr(CHAR*, INT)", "pIn");
  28412. v3 = GetSerialClass(this->m_ItemIndex);
  28413. v4 = pIn + 2;
  28414. this->m_RulerID = *pIn;
  28415. switch ( v3 )
  28416. {
  28417. case 1:
  28418. v9 = 0;
  28419. do
  28420. {
  28421. *((_DWORD *)&this->_anon_1.m_StoreMap + v9++ + 8) = *(_DWORD *)v4;
  28422. v4 += 4;
  28423. }
  28424. while ( v9 <= 2 );
  28425. break;
  28426. case 2:
  28427. case 3:
  28428. case 4:
  28429. v10 = &this->_anon_1;
  28430. v10->m_Medic.m_bCosSelf = *(_DWORD *)v4;
  28431. v10->m_Medic.m_nBasePrice = *(_DWORD *)(pIn + 6);
  28432. LOBYTE(v10->m_Gem.m_Attr[0].m_Value) = pIn[10];
  28433. v10->m_Equip.m_GemMax = pIn[11];
  28434. v10->m_Medic.m_nReqSkill = *((_DWORD *)pIn + 3);
  28435. v10->m_Medic.m_yReqSkillLevel = pIn[16];
  28436. v10->m_Medic.m_nScriptID = *(_DWORD *)(pIn + 17);
  28437. v10->m_Medic.m_nSkillID = *(_DWORD *)(pIn + 21);
  28438. v4 = pIn + 26;
  28439. LOBYTE(v10->m_Equip.m_ItemAttrFlag.mFlag[0]) = pIn[25];
  28440. break;
  28441. case 5:
  28442. v8 = &this->_anon_1;
  28443. v8->m_Gem.m_nPrice = *(_DWORD *)v4;
  28444. this->_anon_1.m_Equip.m_MaxDurPoint = pIn[6];
  28445. v4 = pIn + 9;
  28446. v8->m_Gem.m_Attr[0].m_Value = *(_WORD *)(pIn + 7);
  28447. break;
  28448. case 6:
  28449. v7 = (STORE_MAP_INFO *)&this->_anon_1;
  28450. v7->m_GrowType = *(_DWORD *)v4;
  28451. this->_anon_1.m_StoreMap.m_nLevel = *(_DWORD *)(pIn + 6);
  28452. v7->m_SceneID = *(_DWORD *)(pIn + 10);
  28453. v7->m_xPos = *(FLOAT *)(pIn + 14);
  28454. v4 = pIn + 22;
  28455. v7->m_zPos = *(FLOAT *)(pIn + 18);
  28456. break;
  28457. default:
  28458. szTmp[0] = 0;
  28459. memset(&szTmp[1], 0, 0x7Fu);
  28460. v5 = GetSerialClass(this->m_ItemIndex);
  28461. sprintf(szTmp, "ERROR:ItemTableIndex(%d),ItemClass(%d)!", this->m_ItemIndex, v5, *(_DWORD *)szTmp);
  28462. __assertex__("../../Common/GameStruct.cpp", 0x297u, "INT _ITEM::WriteFixAttr(CHAR*, INT)", "FALSE", szTmp);
  28463. return result;
  28464. }
  28465. if ( v4 - pIn > BuffLength )
  28466. __assert__("../../Common/GameStruct.cpp", 0x29Bu, "INT _ITEM::WriteFixAttr(CHAR*, INT)", "BuffLength>=(pBuff-pIn)");
  28467. return v4 - pIn;
  28468. }
  28469.  
  28470. //----- (08063A2C) --------------------------------------------------------
  28471. INT __cdecl _ITEM::Write_35_FixAttr(_ITEM *const this, CHAR *pIn, INT BuffLength)
  28472. {
  28473. signed int v3; // eax
  28474. CHAR *v4; // edi
  28475. BYTE v6; // al
  28476. CHAR szTmp[128]; // [esp+0h] [ebp-98h]
  28477.  
  28478. if ( !pIn )
  28479. __assert__("../../Common/GameStruct.cpp", 0x2A2u, "INT _ITEM::Write_35_FixAttr(CHAR*, INT)", "pIn");
  28480. v3 = GetSerialClass(this->m_ItemIndex);
  28481. v4 = pIn;
  28482. if ( (unsigned __int8)v3 == 1 )
  28483. {
  28484. v4 = pIn + 4;
  28485. *((_DWORD *)&this->_anon_1.m_StoreMap + 11) = *(_DWORD *)pIn;
  28486. }
  28487. else if ( (signed int)(unsigned __int8)v3 < 1 || v3 > 6 )
  28488. {
  28489. szTmp[0] = 0;
  28490. memset(&szTmp[1], 0, 0x7Fu);
  28491. v6 = GetSerialClass(this->m_ItemIndex);
  28492. sprintf(szTmp, "ERROR:ItemTableIndex(%d),ItemClass(%d)!", this->m_ItemIndex, v6, *(_DWORD *)szTmp);
  28493. __assertex__("../../Common/GameStruct.cpp", 0x2BDu, "INT _ITEM::Write_35_FixAttr(CHAR*, INT)", "FALSE", szTmp);
  28494. }
  28495. if ( v4 - pIn > BuffLength )
  28496. __assert__(
  28497. "../../Common/GameStruct.cpp",
  28498. 0x2C1u,
  28499. "INT _ITEM::Write_35_FixAttr(CHAR*, INT)",
  28500. "BuffLength>=(pBuff-pIn)");
  28501. return v4 - pIn;
  28502. }
  28503.  
  28504. //----- (08063B3C) --------------------------------------------------------
  28505. BOOL __cdecl _ITEM::ReadFixAttr(_ITEM *const this, CHAR *pOut, INT *const OutLength, INT BuffLength)
  28506. {
  28507. BYTE v4; // bl
  28508. CHAR *v5; // esi
  28509. BYTE v6; // al
  28510. BOOL result; // eax
  28511. signed int v8; // ecx
  28512. int v9; // eax
  28513. CHAR szTmp[128]; // [esp+0h] [ebp-98h]
  28514.  
  28515. if ( !pOut )
  28516. __assert__("../../Common/GameStruct.cpp", 0x2C8u, "BOOL _ITEM::ReadFixAttr(CHAR*, INT&, INT)", "pOut");
  28517. v4 = GetSerialClass(this->m_ItemIndex);
  28518. *pOut = this->m_RulerID;
  28519. pOut[1] = _ITEM::GetFixAttrCount(this);
  28520. v5 = pOut + 2;
  28521. switch ( v4 )
  28522. {
  28523. case 1u:
  28524. v8 = 0;
  28525. do
  28526. {
  28527. v9 = *((_DWORD *)&this->_anon_1.m_StoreMap + v8++ + 8);
  28528. *(_DWORD *)v5 = v9;
  28529. v5 += 4;
  28530. }
  28531. while ( v8 <= 2 );
  28532. break;
  28533. case 2u:
  28534. case 3u:
  28535. case 4u:
  28536. *(_DWORD *)v5 = this->_anon_1.m_Medic.m_bCosSelf;
  28537. *(_DWORD *)(pOut + 6) = this->_anon_1.m_Medic.m_nBasePrice;
  28538. pOut[10] = this->_anon_1.m_Equip.m_FaileTimes;
  28539. pOut[11] = this->_anon_1.m_Equip.m_GemMax;
  28540. *((_DWORD *)pOut + 3) = this->_anon_1.m_Medic.m_nReqSkill;
  28541. pOut[16] = this->_anon_1.m_Equip.m_CurDurPoint;
  28542. *(_QWORD *)(pOut + 17) = *(_QWORD *)&this->_anon_1.m_StoreMap.m_zPos;
  28543. pOut[25] = this->_anon_1.m_Medic.m_TargetType;
  28544. v5 = pOut + 26;
  28545. break;
  28546. case 5u:
  28547. *(_DWORD *)v5 = this->_anon_1.m_Gem.m_nPrice;
  28548. pOut[6] = this->_anon_1.m_Equip.m_MaxDurPoint;
  28549. *(_WORD *)(pOut + 7) = this->_anon_1.m_Gem.m_Attr[0].m_Value;
  28550. v5 = pOut + 9;
  28551. break;
  28552. case 6u:
  28553. *(_DWORD *)v5 = this->_anon_1.m_Medic.m_bCosSelf;
  28554. *(_DWORD *)(pOut + 6) = this->_anon_1.m_StoreMap.m_nLevel;
  28555. *(_DWORD *)(pOut + 10) = this->_anon_1.m_Medic.m_nSkillID;
  28556. *(_QWORD *)(pOut + 14) = *(_QWORD *)&this->_anon_1.m_StoreMap.m_xPos;
  28557. v5 = pOut + 22;
  28558. break;
  28559. default:
  28560. szTmp[0] = 0;
  28561. memset(&szTmp[1], 0, 0x7Fu);
  28562. v6 = GetSerialClass(this->m_ItemIndex);
  28563. sprintf(szTmp, "ERROR:ItemTableIndex(%d),ItemClass(%d)!", this->m_ItemIndex, v6, *(_DWORD *)szTmp);
  28564. __assertex__("../../Common/GameStruct.cpp", 0x314u, "BOOL _ITEM::ReadFixAttr(CHAR*, INT&, INT)", "FALSE", szTmp);
  28565. return result;
  28566. }
  28567. *OutLength = v5 - pOut;
  28568. if ( v5 - pOut > BuffLength )
  28569. __assert__(
  28570. "../../Common/GameStruct.cpp",
  28571. 0x319u,
  28572. "BOOL _ITEM::ReadFixAttr(CHAR*, INT&, INT)",
  28573. "BuffLength>=OutLength");
  28574. return 1;
  28575. }
  28576.  
  28577. //----- (08063D0C) --------------------------------------------------------
  28578. BOOL __cdecl _ITEM::Read_35_FixAttr(_ITEM *const this, CHAR *pOut, INT *const OutLength, INT BuffLength)
  28579. {
  28580. signed int v4; // eax
  28581. CHAR *v5; // edi
  28582. BYTE v7; // al
  28583. CHAR szTmp[128]; // [esp+0h] [ebp-98h]
  28584.  
  28585. if ( !pOut )
  28586. __assert__("../../Common/GameStruct.cpp", 0x320u, "BOOL _ITEM::Read_35_FixAttr(CHAR*, INT&, INT)", "pOut");
  28587. v4 = GetSerialClass(this->m_ItemIndex);
  28588. v5 = pOut;
  28589. if ( (unsigned __int8)v4 == 1 )
  28590. {
  28591. v5 = pOut + 4;
  28592. *(_DWORD *)pOut = *((_DWORD *)&this->_anon_1.m_StoreMap + 11);
  28593. }
  28594. else if ( (signed int)(unsigned __int8)v4 < 1 || v4 > 6 )
  28595. {
  28596. szTmp[0] = 0;
  28597. memset(&szTmp[1], 0, 0x7Fu);
  28598. v7 = GetSerialClass(this->m_ItemIndex);
  28599. sprintf(szTmp, "ERROR:ItemTableIndex(%d),ItemClass(%d)!", this->m_ItemIndex, v7, *(_DWORD *)szTmp);
  28600. __assertex__("../../Common/GameStruct.cpp", 0x33Au, "BOOL _ITEM::Read_35_FixAttr(CHAR*, INT&, INT)", "FALSE", szTmp);
  28601. }
  28602. *OutLength = v5 - pOut;
  28603. if ( v5 - pOut > BuffLength )
  28604. __assert__(
  28605. "../../Common/GameStruct.cpp",
  28606. 0x33Fu,
  28607. "BOOL _ITEM::Read_35_FixAttr(CHAR*, INT&, INT)",
  28608. "BuffLength>=OutLength");
  28609. return 1;
  28610. }
  28611.  
  28612. //----- (08063E2C) --------------------------------------------------------
  28613. INT __cdecl _ITEM::WriteVarAttr(_ITEM *const this, CHAR *pIn, INT BuffLength)
  28614. {
  28615. int v3; // eax
  28616. CHAR *v4; // esi
  28617. BYTE v5; // al
  28618. INT result; // eax
  28619. BYTE v7; // al
  28620. _ITEM::$CD9C529E86993C344469A681B28E9DF0 *v8; // ecx
  28621. BYTE *v9; // esi
  28622. signed int v10; // edx
  28623. int v11; // esi
  28624. __int16 v12; // ax
  28625. UINT v13; // edx
  28626. CHAR szTmp[128]; // [esp+0h] [ebp-98h]
  28627.  
  28628. if ( !pIn )
  28629. __assert__("../../Common/GameStruct.cpp", 0x348u, "INT _ITEM::WriteVarAttr(CHAR*, INT)", "pIn");
  28630. v3 = GetSerialClass(this->m_ItemIndex);
  28631. v4 = pIn + 1;
  28632. this->m_nsBind = *pIn;
  28633. switch ( v3 )
  28634. {
  28635. case 1:
  28636. this->_anon_1.m_Equip.m_MaxDurPoint = *v4;
  28637. v8 = &this->_anon_1;
  28638. v8->m_Equip.m_GemMax = pIn[2];
  28639. LOBYTE(v8->m_Gem.m_Attr[0].m_Value) = pIn[3];
  28640. v8->m_Medic.m_yReqSkillLevel = pIn[4];
  28641. LOWORD(v8->m_Medic.m_nBasePrice) = *(_WORD *)(pIn + 5);
  28642. BYTE2(v8->m_StoreMap.m_xPos) = pIn[7];
  28643. HIBYTE(v8->m_StoreMap.m_xPos) = pIn[8];
  28644. LOBYTE(v8->m_Medic.m_nScriptID) = pIn[9];
  28645. BYTE1(v8->m_StoreMap.m_zPos) = pIn[10];
  28646. HIWORD(v8->m_StoreMap.m_zPos) = *(_WORD *)(pIn + 11);
  28647. v9 = (BYTE *)(pIn + 13);
  28648. v10 = 0;
  28649. do
  28650. *((_BYTE *)&v8->m_Medic.m_nSkillID + v10++) = *v9++;
  28651. while ( v10 <= 5 );
  28652. this->_anon_1.m_Equip.m_Qual = *v9;
  28653. v11 = (int)(v9 + 1);
  28654. v12 = *(_WORD *)v11;
  28655. v11 += 2;
  28656. v13 = *(_DWORD *)(v11 + 4);
  28657. this->_anon_1.m_Equip.m_Visual = v12;
  28658. this->_anon_1.m_Equip.m_ItemAttrFlag.mFlag[0] = *(_DWORD *)v11;
  28659. v11 += 8;
  28660. this->_anon_1.m_Equip.m_ItemAttrFlag.mFlag[1] = v13;
  28661. LOBYTE(v12) = *(_BYTE *)v11;
  28662. v4 = (CHAR *)(v11 + 1);
  28663. this->_anon_1.m_Equip.m_Hidden = v12;
  28664. break;
  28665. case 2:
  28666. case 3:
  28667. case 4:
  28668. v7 = *v4;
  28669. v4 = pIn + 2;
  28670. this->_anon_1.m_Equip.m_MaxDurPoint = v7;
  28671. break;
  28672. case 5:
  28673. case 6:
  28674. break;
  28675. default:
  28676. szTmp[0] = 0;
  28677. memset(&szTmp[1], 0, 0x7Fu);
  28678. v5 = GetSerialClass(this->m_ItemIndex);
  28679. sprintf(szTmp, "ERROR:ItemTableIndex(%d),ItemClass(%d)!", this->m_ItemIndex, v5, *(_DWORD *)szTmp);
  28680. __assertex__("../../Common/GameStruct.cpp", 0x39Bu, "INT _ITEM::WriteVarAttr(CHAR*, INT)", "FALSE", szTmp);
  28681. return result;
  28682. }
  28683. if ( v4 - pIn > BuffLength )
  28684. __assert__("../../Common/GameStruct.cpp", 0x39Fu, "INT _ITEM::WriteVarAttr(CHAR*, INT)", "BuffLength>=(pBuff-pIn)");
  28685. return v4 - pIn;
  28686. }
  28687.  
  28688. //----- (08063FB0) --------------------------------------------------------
  28689. BOOL __cdecl _ITEM::ClientWriteVarAttr(_ITEM *const this, CHAR *pIn, INT *const OutLength, INT BuffLength)
  28690. {
  28691. signed int v4; // eax
  28692. CHAR *v5; // ebx
  28693. _ITEM::$CD9C529E86993C344469A681B28E9DF0 *v7; // esi
  28694. BYTE *v8; // ebx
  28695. signed int v9; // edx
  28696. BYTE v10; // al
  28697. int v11; // ebx
  28698. signed int v12; // edx
  28699. UINT v13; // eax
  28700. _DWORD *v14; // ebx
  28701. bool v15; // cf
  28702. bool v16; // zf
  28703. signed int v17; // edx
  28704. BYTE v18; // al
  28705.  
  28706. if ( !pIn )
  28707. __assert__("../../Common/GameStruct.cpp", 0x3A7u, "BOOL _ITEM::ClientWriteVarAttr(CHAR*, INT&, INT)", "pIn");
  28708. v4 = GetSerialClass(this->m_ItemIndex);
  28709. v5 = pIn;
  28710. if ( (unsigned __int8)v4 == 1 )
  28711. {
  28712. v7 = &this->_anon_1;
  28713. v7->m_Medic.m_yReqSkillLevel = *pIn;
  28714. LOWORD(v7->m_Medic.m_nBasePrice) = *(_WORD *)(pIn + 1);
  28715. this->_anon_1.m_Equip.m_MaxDurPoint = pIn[3];
  28716. LOBYTE(v7->m_Gem.m_Attr[0].m_Value) = pIn[4];
  28717. HIBYTE(v7->m_StoreMap.m_xPos) = pIn[5];
  28718. v7->m_Equip.m_GemMax = pIn[6];
  28719. LOBYTE(v7->m_Medic.m_nScriptID) = pIn[7];
  28720. BYTE1(v7->m_StoreMap.m_zPos) = pIn[8];
  28721. HIWORD(v7->m_StoreMap.m_zPos) = *(_WORD *)(pIn + 9);
  28722. BYTE2(v7->m_StoreMap.m_GrowType) = pIn[11];
  28723. LOWORD(v7->m_Medic.m_nReqSkill) = *((_WORD *)pIn + 6);
  28724. v8 = (BYTE *)(pIn + 14);
  28725. v9 = 0;
  28726. do
  28727. *((_BYTE *)&v7->m_Medic.m_nSkillID + v9++) = *v8++;
  28728. while ( v9 <= 5 );
  28729. v10 = *v8;
  28730. v11 = (int)(v8 + 1);
  28731. this->_anon_1.m_Equip.m_AttrCount = v10;
  28732. if ( v10 > 0x10u )
  28733. __assert__(
  28734. "../../Common/GameStruct.cpp",
  28735. 0x3DBu,
  28736. "BOOL _ITEM::ClientWriteVarAttr(CHAR*, INT&, INT)",
  28737. "GetEquipData()->m_AttrCount<=MAX_ITEM_ATTR");
  28738. v12 = 0;
  28739. if ( this->_anon_1.m_Equip.m_AttrCount )
  28740. {
  28741. do
  28742. {
  28743. *((_WORD *)&v7->m_StoreMap + v12++ + 25) = *(_WORD *)v11;
  28744. v11 += 2;
  28745. }
  28746. while ( this->_anon_1.m_Equip.m_AttrCount > v12 && v12 <= 15 );
  28747. }
  28748. this->_anon_1.m_Equip.m_ItemAttrFlag.mFlag[0] = *(_DWORD *)v11;
  28749. v13 = *(_DWORD *)(v11 + 4);
  28750. v14 = (_DWORD *)(v11 + 8);
  28751. v15 = this->_anon_1.m_Equip.m_StoneCount < 4u;
  28752. v16 = this->_anon_1.m_Equip.m_StoneCount == 4;
  28753. this->_anon_1.m_Equip.m_ItemAttrFlag.mFlag[1] = v13;
  28754. if ( !v15 && !v16 )
  28755. __assert__(
  28756. "../../Common/GameStruct.cpp",
  28757. 0x3E5u,
  28758. "BOOL _ITEM::ClientWriteVarAttr(CHAR*, INT&, INT)",
  28759. "GetEquipData()->m_StoneCount<=MAX_ITEM_GEM");
  28760. v17 = 0;
  28761. do
  28762. {
  28763. *((_DWORD *)&v7->m_StoreMap + v17++ + 8) = *v14;
  28764. ++v14;
  28765. }
  28766. while ( v17 <= 3 );
  28767. v18 = *(_BYTE *)v14;
  28768. v5 = (char *)v14 + 1;
  28769. this->_anon_1.m_Equip.m_bytDarksFlag = v18;
  28770. }
  28771. else if ( (signed int)(unsigned __int8)v4 < 1 || v4 > 8 )
  28772. {
  28773. __assert__("../../Common/GameStruct.cpp", 0x3FBu, "BOOL _ITEM::ClientWriteVarAttr(CHAR*, INT&, INT)", "FALSE");
  28774. }
  28775. *OutLength = v5 - pIn;
  28776. if ( v5 - pIn > BuffLength )
  28777. __assert__(
  28778. "../../Common/GameStruct.cpp",
  28779. 0x400u,
  28780. "BOOL _ITEM::ClientWriteVarAttr(CHAR*, INT&, INT)",
  28781. "BuffLength>=(pBuff-pIn)");
  28782. return 1;
  28783. }
  28784.  
  28785. //----- (08064184) --------------------------------------------------------
  28786. BOOL __cdecl _ITEM::ReadVarAttr(_ITEM *const this, CHAR *pOut, INT *const OutLength, INT BuffLength)
  28787. {
  28788. CHAR *v4; // esi
  28789. BYTE v5; // al
  28790. BOOL result; // eax
  28791. signed int v7; // edx
  28792. CHAR *v8; // esi
  28793. BYTE v9; // al
  28794. int v10; // esi
  28795. UINT v11; // edx
  28796. BYTE bClass; // [esp+Fh] [ebp-199h]
  28797. CHAR szTemp[256]; // [esp+10h] [ebp-198h]
  28798. CHAR szTmp[128]; // [esp+110h] [ebp-98h]
  28799.  
  28800. if ( !pOut )
  28801. __assert__("../../Common/GameStruct.cpp", 0x409u, "BOOL _ITEM::ReadVarAttr(CHAR*, INT&, INT)", "pOut");
  28802. bClass = GetSerialClass(this->m_ItemIndex);
  28803. *pOut = this->m_nsBind;
  28804. v4 = pOut + 1;
  28805. switch ( bClass )
  28806. {
  28807. case 1u:
  28808. *v4 = this->_anon_1.m_Equip.m_MaxDurPoint;
  28809. *((_WORD *)pOut + 1) = *(_WORD *)&this->_anon_1.m_Equip.m_GemMax;
  28810. pOut[4] = this->_anon_1.m_Equip.m_CurDurPoint;
  28811. *(_QWORD *)(pOut + 5) = *(_QWORD *)&this->_anon_1.m_StoreMap.m_xPos;
  28812. v7 = 0;
  28813. v8 = pOut + 13;
  28814. do
  28815. {
  28816. v9 = this->_anon_1.m_Equip.m_Aptitude[v7++];
  28817. *v8++ = v9;
  28818. }
  28819. while ( v7 <= 5 );
  28820. *v8 = this->_anon_1.m_Equip.m_Qual;
  28821. v10 = (int)(v8 + 1);
  28822. *(_WORD *)v10 = this->_anon_1.m_Equip.m_Visual;
  28823. v11 = this->_anon_1.m_Equip.m_ItemAttrFlag.mFlag[1];
  28824. v10 += 2;
  28825. *(_DWORD *)v10 = this->_anon_1.m_Equip.m_ItemAttrFlag.mFlag[0];
  28826. *(_DWORD *)(v10 + 4) = v11;
  28827. v10 += 8;
  28828. *(_BYTE *)v10 = this->_anon_1.m_Equip.m_Hidden;
  28829. v4 = (CHAR *)(v10 + 1);
  28830. break;
  28831. case 2u:
  28832. case 3u:
  28833. case 4u:
  28834. *v4 = this->_anon_1.m_Equip.m_MaxDurPoint;
  28835. v4 = pOut + 2;
  28836. break;
  28837. case 5u:
  28838. case 6u:
  28839. break;
  28840. default:
  28841. szTmp[0] = 0;
  28842. memset(&szTmp[1], 0, 0x7Fu);
  28843. v5 = GetSerialClass(this->m_ItemIndex);
  28844. sprintf(szTmp, "ERROR:ItemTableIndex(%d),ItemClass(%d)!", this->m_ItemIndex, v5);
  28845. __assertex__("../../Common/GameStruct.cpp", 0x45Cu, "BOOL _ITEM::ReadVarAttr(CHAR*, INT&, INT)", "FALSE", szTmp);
  28846. return result;
  28847. }
  28848. *OutLength = v4 - pOut;
  28849. if ( v4 - pOut > BuffLength )
  28850. sprintf(szTemp, "ERROR:Item:%d Class:%d %d>=%d", this->m_ItemIndex, bClass, BuffLength, v4 - pOut);
  28851. return 1;
  28852. }
  28853.  
  28854. //----- (08064328) --------------------------------------------------------
  28855. BOOL __cdecl _ITEM::DBReadAttr(_ITEM *const this, CHAR *pOut, INT *const OutLength, INT BuffLength)
  28856. {
  28857. int v4; // ebx
  28858. CHAR *v5; // esi
  28859. signed int v6; // edx
  28860. INT v7; // eax
  28861. CHAR *v8; // esi
  28862. int v9; // ebx
  28863. BYTE *v10; // esi
  28864. BOOL result; // eax
  28865. INT nFix_35_OutLength; // [esp+10h] [ebp-18h]
  28866. INT nVarOutLength; // [esp+14h] [ebp-14h]
  28867. INT nFixOutLength; // [esp+18h] [ebp-10h]
  28868.  
  28869. nFixOutLength = 0;
  28870. _ITEM::ReadFixAttr(this, pOut, &nFixOutLength, BuffLength);
  28871. nVarOutLength = 0;
  28872. _ITEM::ReadVarAttr(this, &pOut[nFixOutLength], &nVarOutLength, BuffLength - nFixOutLength);
  28873. v4 = nFixOutLength + nVarOutLength;
  28874. *OutLength = nFixOutLength + nVarOutLength;
  28875. v5 = &pOut[v4];
  28876. v6 = 0;
  28877. do
  28878. {
  28879. v7 = this->m_Param[v6++];
  28880. *(_DWORD *)v5 = v7;
  28881. v5 += 4;
  28882. }
  28883. while ( v6 <= 2 );
  28884. *(_WORD *)v5 = this->m_usPWUnlockTime;
  28885. v8 = v5 + 2;
  28886. *(_WORD *)v8 = this->m_usReserve;
  28887. v8 += 2;
  28888. *OutLength = v8 - pOut;
  28889. nFix_35_OutLength = 0;
  28890. _ITEM::Read_35_FixAttr(this, v8, &nFix_35_OutLength, BuffLength - (v8 - pOut));
  28891. v9 = *OutLength + nFix_35_OutLength;
  28892. *OutLength = v9;
  28893. v10 = (BYTE *)&v8[nFix_35_OutLength];
  28894. if ( GetSerialClass(this->m_ItemIndex) == 1 )
  28895. {
  28896. *v10 = this->_anon_1.m_Equip.m_bytDarksFlag;
  28897. v9 = *OutLength + 1;
  28898. *OutLength = v9;
  28899. }
  28900. result = v9 < BuffLength;
  28901. LOBYTE(result) = v9 <= BuffLength;
  28902. return result;
  28903. }
  28904.  
  28905. //----- (08064420) --------------------------------------------------------
  28906. BOOL __cdecl _ITEM::DBWriteAttr(_ITEM *const this, CHAR *pIn, INT BuffLength)
  28907. {
  28908. INT v3; // eax
  28909. USHORT *v4; // ebx
  28910. signed int v5; // edx
  28911. CHAR *v6; // ebx
  28912. USHORT v7; // ax
  28913. INT v8; // eax
  28914. INT v9; // esi
  28915. BYTE *v10; // ebx
  28916. BOOL result; // eax
  28917.  
  28918. v3 = _ITEM::WriteFixAttr(this, pIn, BuffLength);
  28919. v4 = (USHORT *)&pIn[_ITEM::WriteVarAttr(this, &pIn[v3], BuffLength - v3) + v3];
  28920. v5 = 0;
  28921. do
  28922. {
  28923. this->m_Param[v5++] = *(_DWORD *)v4;
  28924. v4 += 2;
  28925. }
  28926. while ( v5 <= 2 );
  28927. this->m_usPWUnlockTime = *v4;
  28928. v6 = (CHAR *)(v4 + 1);
  28929. v7 = *(_WORD *)v6;
  28930. v6 += 2;
  28931. this->m_usReserve = v7;
  28932. v8 = _ITEM::Write_35_FixAttr(this, v6, BuffLength - (v6 - pIn));
  28933. v9 = v8 + v6 - pIn;
  28934. v10 = (BYTE *)&v6[v8];
  28935. if ( GetSerialClass(this->m_ItemIndex) == 1 )
  28936. {
  28937. this->_anon_1.m_Equip.m_bytDarksFlag = *v10;
  28938. ++v9;
  28939. }
  28940. result = BuffLength < v9;
  28941. LOBYTE(result) = BuffLength >= v9;
  28942. return result;
  28943. }
  28944.  
  28945. //----- (080644D8) --------------------------------------------------------
  28946. BOOL __cdecl _ITEM::ClientReadVarAttr(_ITEM *const this, CHAR *pOut, INT *const OutLength, INT BuffLength)
  28947. {
  28948. signed int v4; // eax
  28949. CHAR *v5; // ebx
  28950. _ITEM::$CD9C529E86993C344469A681B28E9DF0 *v7; // esi
  28951. CHAR *v8; // ebx
  28952. signed int v9; // edx
  28953. CHAR v10; // al
  28954. _WORD *v11; // ebx
  28955. signed int v12; // edx
  28956. _DWORD *v13; // ebx
  28957. signed int v14; // edx
  28958. int v15; // eax
  28959.  
  28960. if ( !pOut )
  28961. __assert__("../../Common/GameStruct.cpp", 0x4C4u, "BOOL _ITEM::ClientReadVarAttr(CHAR*, INT&, INT)", "pOut");
  28962. v4 = GetSerialClass(this->m_ItemIndex);
  28963. v5 = pOut;
  28964. if ( (unsigned __int8)v4 == 1 )
  28965. {
  28966. v7 = &this->_anon_1;
  28967. *pOut = this->_anon_1.m_Equip.m_CurDurPoint;
  28968. *(_WORD *)(pOut + 1) = this->_anon_1.m_Equip.m_CurDamagePoint;
  28969. pOut[3] = this->_anon_1.m_Equip.m_MaxDurPoint;
  28970. pOut[4] = this->_anon_1.m_Equip.m_FaileTimes;
  28971. pOut[5] = this->_anon_1.m_Equip.m_StoneCount;
  28972. pOut[6] = this->_anon_1.m_Equip.m_GemMax;
  28973. *(_DWORD *)(pOut + 7) = this->_anon_1.m_Medic.m_nScriptID;
  28974. pOut[11] = this->_anon_1.m_Equip.m_Qual;
  28975. *((_WORD *)pOut + 6) = this->_anon_1.m_Equip.m_Visual;
  28976. v8 = pOut + 14;
  28977. v9 = 0;
  28978. do
  28979. {
  28980. v10 = *((_BYTE *)&v7->m_Medic.m_nSkillID + v9++);
  28981. *v8++ = v10;
  28982. }
  28983. while ( v9 <= 5 );
  28984. *v8 = this->_anon_1.m_Equip.m_AttrCount;
  28985. v11 = v8 + 1;
  28986. if ( this->_anon_1.m_Equip.m_AttrCount > 0x10u )
  28987. __assert__(
  28988. "../../Common/GameStruct.cpp",
  28989. 0x4F6u,
  28990. "BOOL _ITEM::ClientReadVarAttr(CHAR*, INT&, INT)",
  28991. "GetEquipData()->m_AttrCount<=MAX_ITEM_ATTR");
  28992. v12 = 0;
  28993. if ( this->_anon_1.m_Equip.m_AttrCount )
  28994. {
  28995. do
  28996. {
  28997. *v11 = *((_WORD *)&v7->m_StoreMap + v12++ + 25);
  28998. ++v11;
  28999. }
  29000. while ( this->_anon_1.m_Equip.m_AttrCount > v12 && v12 <= 15 );
  29001. }
  29002. *(_QWORD *)v11 = *((_QWORD *)&this->_anon_1.m_StoreMap + 3);
  29003. v13 = v11 + 4;
  29004. if ( this->_anon_1.m_Equip.m_StoneCount > 4u )
  29005. __assert__(
  29006. "../../Common/GameStruct.cpp",
  29007. 0x500u,
  29008. "BOOL _ITEM::ClientReadVarAttr(CHAR*, INT&, INT)",
  29009. "GetEquipData()->m_StoneCount<=MAX_ITEM_GEM");
  29010. v14 = 0;
  29011. do
  29012. {
  29013. v15 = *((_DWORD *)&v7->m_StoreMap + v14++ + 8);
  29014. *v13 = v15;
  29015. ++v13;
  29016. }
  29017. while ( v14 <= 3 );
  29018. *(_BYTE *)v13 = this->_anon_1.m_Equip.m_bytDarksFlag;
  29019. v5 = (char *)v13 + 1;
  29020. }
  29021. else if ( (signed int)(unsigned __int8)v4 < 1 || v4 > 8 )
  29022. {
  29023. __assert__("../../Common/GameStruct.cpp", 0x516u, "BOOL _ITEM::ClientReadVarAttr(CHAR*, INT&, INT)", "FALSE");
  29024. }
  29025. *OutLength = v5 - pOut;
  29026. if ( v5 - pOut > BuffLength )
  29027. __assert__(
  29028. "../../Common/GameStruct.cpp",
  29029. 0x51Bu,
  29030. "BOOL _ITEM::ClientReadVarAttr(CHAR*, INT&, INT)",
  29031. "BuffLength>=OutLength");
  29032. return 1;
  29033. }
  29034.  
  29035. //----- (080646B0) --------------------------------------------------------
  29036. BYTE __cdecl _ITEM::GetItemCount(const _ITEM *const this)
  29037. {
  29038. BYTE v1; // al
  29039. BYTE v2; // dl
  29040. BYTE result; // al
  29041.  
  29042. v1 = GetSerialClass(this->m_ItemIndex);
  29043. v2 = 1;
  29044. if ( v1 != 1 && v1 != 5 && (v1 == 3 || v1 == 2 || (v2 = 0, v1 == 4)) )
  29045. result = this->_anon_1.m_Equip.m_MaxDurPoint;
  29046. else
  29047. result = v2;
  29048. return result;
  29049. }
  29050.  
  29051. //----- (080646F0) --------------------------------------------------------
  29052. BOOL __cdecl _ITEM::DecCount(_ITEM *const this, char a3)
  29053. {
  29054. signed int v3; // eax
  29055.  
  29056. v3 = GetSerialClass(this->m_ItemIndex);
  29057. if ( (signed int)(unsigned __int8)v3 > 4 || v3 < 2 )
  29058. return 0;
  29059. if ( !_ITEM::GetItemCount(this) )
  29060. __assert__("../../Common/GameStruct.cpp", 0x5B7u, "BOOL _ITEM::DecCount(UINT)", "GetItemCount()>0");
  29061. this->_anon_1.m_Equip.m_MaxDurPoint -= a3;
  29062. return 1;
  29063. }
  29064.  
  29065. //----- (08064764) --------------------------------------------------------
  29066. void __cdecl _ITEM::SetItemCount(_ITEM *const this, INT nCount)
  29067. {
  29068. BYTE v2; // al
  29069.  
  29070. v2 = GetSerialClass(this->m_ItemIndex);
  29071. if ( v2 != 3 && v2 != 2 && v2 != 4 )
  29072. __assert__("../../Common/GameStruct.cpp", 0x553u, "void _ITEM::SetItemCount(INT)", "FALSE");
  29073. this->_anon_1.m_Equip.m_MaxDurPoint = nCount;
  29074. }
  29075.  
  29076. //----- (080647B0) --------------------------------------------------------
  29077. BYTE __cdecl _ITEM::GetItemTileMax(const _ITEM *const this)
  29078. {
  29079. BYTE v1; // bl
  29080. BYTE result; // al
  29081.  
  29082. v1 = GetSerialClass(this->m_ItemIndex);
  29083. GetSerialClass(this->m_ItemIndex);
  29084. switch ( v1 )
  29085. {
  29086. case 1u:
  29087. case 5u:
  29088. case 6u:
  29089. result = 1;
  29090. break;
  29091. case 2u:
  29092. case 3u:
  29093. case 4u:
  29094. result = this->_anon_1.m_Equip.m_FaileTimes;
  29095. break;
  29096. default:
  29097. __assertex__(
  29098. "../../Common/GameStruct.cpp",
  29099. 0x572u,
  29100. "BYTE _ITEM::GetItemTileMax() const",
  29101. "FALSE",
  29102. "not implement class");
  29103. return result;
  29104. }
  29105. return result;
  29106. }
  29107.  
  29108. //----- (08064824) --------------------------------------------------------
  29109. BOOL __cdecl _ITEM::isFullTile(_ITEM *a2)
  29110. {
  29111. unsigned int v2; // esi
  29112.  
  29113. v2 = _ITEM::GetItemCount(a2);
  29114. return v2 >= _ITEM::GetItemTileMax(a2);
  29115. }
  29116.  
  29117. //----- (08064854) --------------------------------------------------------
  29118. BOOL __cdecl _ITEM::IncCount(_ITEM *const this, char a3)
  29119. {
  29120. signed int v3; // eax
  29121.  
  29122. v3 = GetSerialClass(this->m_ItemIndex);
  29123. if ( (signed int)(unsigned __int8)v3 > 4 || v3 < 2 )
  29124. return 0;
  29125. if ( _ITEM::isFullTile(this) )
  29126. __assert__("../../Common/GameStruct.cpp", 0x596u, "BOOL _ITEM::IncCount(UINT)", "!isFullTile()");
  29127. this->_anon_1.m_Equip.m_MaxDurPoint += a3;
  29128. return 1;
  29129. }
  29130.  
  29131. //----- (080648C8) --------------------------------------------------------
  29132. BOOL __cdecl _ITEM::GetEncodeDarkData(const _ITEM *const this, CHAR *pOut, INT nBufLen)
  29133. {
  29134. BOOL result; // eax
  29135. CHAR sTmp[28]; // [esp+10h] [ebp-38h]
  29136.  
  29137. result = 0;
  29138. if ( pOut )
  29139. {
  29140. if ( GetSerialClass(this->m_ItemIndex) != 1 || this->_anon_1.m_Equip.m_bytDarksFlag != 1 )
  29141. {
  29142. result = 0;
  29143. }
  29144. else
  29145. {
  29146. qmemcpy(sTmp, &this->_anon_0, sizeof(sTmp));
  29147. if ( (unsigned int)nBufLen <= 0x37 )
  29148. __assert__(
  29149. "../../Common/GameStruct.cpp",
  29150. 0x5CEu,
  29151. "BOOL _ITEM::GetEncodeDarkData(CHAR*, INT) const",
  29152. "nBufLen >= 2 * sizeof(m_DarksInfo)");
  29153. result = Binary2String(sTmp, 0x1Cu, pOut);
  29154. }
  29155. }
  29156. return result;
  29157. }
  29158.  
  29159. //----- (08064950) --------------------------------------------------------
  29160. void __cdecl _ITEM::DecodeDarkData(_ITEM *const this)
  29161. {
  29162. UINT nOutLen; // [esp+1Ch] [ebp-5Ch]
  29163. CHAR sTmp[58]; // [esp+20h] [ebp-58h]
  29164.  
  29165. if ( GetSerialClass(this->m_ItemIndex) == 1 && this->_anon_1.m_Equip.m_bytDarksFlag == 1 )
  29166. {
  29167. memset(sTmp, 0, 0x38u);
  29168. *(_WORD *)&sTmp[56] = 0;
  29169. nOutLen = 0;
  29170. if ( !DBStr2Binary((const CHAR *)&this->_anon_0, 0x3Au, sTmp, 0x3Au, &nOutLen) )
  29171. __assert__("../../Common/GameStruct.cpp", 0x5F2u, "void _ITEM::DecodeDarkData()", "FALSE");
  29172. qmemcpy(&this->_anon_0, sTmp, 0x38u);
  29173. *(_WORD *)&this->_anon_0.m_Creator[56] = *(_WORD *)&sTmp[56];
  29174. }
  29175. }
  29176.  
  29177. //----- (080649E4) --------------------------------------------------------
  29178. BOOL __cdecl Item2String(_ITEM *pItem, CHAR *pOut, INT *const OutLength, INT BuffLength)
  29179. {
  29180. INT v4; // edi
  29181. CHAR *v6; // edx
  29182. _ITEM::$74A771CF9B5D30BBE99A592EB8C6E1F6 *v7; // edi
  29183. _WORD *v8; // ebx
  29184. INT v9; // edx
  29185. INT v10; // edx
  29186. _WORD *v11; // ebx
  29187. signed int v12; // esi
  29188. INT v13; // ecx
  29189. __int16 v14; // ax
  29190. signed int v15; // edx
  29191. __int16 v16; // ax
  29192. CHAR strLen[16]; // [esp+20h] [ebp-128h]
  29193. CHAR p[255]; // [esp+30h] [ebp-118h]
  29194.  
  29195. if ( !pItem )
  29196. __assert__("../../Common/GameStruct.cpp", 0x5FBu, "BOOL Item2String(_ITEM*, CHAR*, INT&, INT)", "pItem");
  29197. if ( !pOut )
  29198. __assert__("../../Common/GameStruct.cpp", 0x5FCu, "BOOL Item2String(_ITEM*, CHAR*, INT&, INT)", "pOut");
  29199. *(_DWORD *)pOut = pItem->m_ItemIndex;
  29200. pOut[4] = pItem->m_nsBind;
  29201. _ITEM::ClientReadVarAttr(pItem, pOut + 5, OutLength, BuffLength - 4);
  29202. v4 = *OutLength + 5;
  29203. *OutLength = v4;
  29204. if ( GetSerialClass(pItem->m_ItemIndex) != 1 || pItem->_anon_1.m_Equip.m_bytDarksFlag != 1 )
  29205. {
  29206. memcpy(&pOut[*OutLength], &pItem->_anon_0, strlen((const char *)&pItem->_anon_0));
  29207. *OutLength += strlen((const char *)&pItem->_anon_0);
  29208. }
  29209. else
  29210. {
  29211. v6 = &pOut[v4 + 5];
  29212. v7 = &pItem->_anon_0;
  29213. *(v6 - 5) = pItem->_anon_0.m_Creator[24];
  29214. ++*OutLength;
  29215. *((_DWORD *)v6 - 1) = pItem->_anon_0.m_DarksInfo.m_NowExp;
  29216. v8 = v6;
  29217. v9 = *OutLength;
  29218. *v8 = pItem->_anon_0.m_DarksInfo.m_Quality;
  29219. v10 = v9 + 8;
  29220. ++v8;
  29221. *v8 = pItem->_anon_0.m_DarksInfo.m_UseTimes;
  29222. *OutLength = v10;
  29223. v11 = v8 + 1;
  29224. v12 = 0;
  29225. v13 = v10;
  29226. do
  29227. {
  29228. v14 = *(_WORD *)&v7->m_Creator[2 * v12++ + 4];
  29229. v13 += 2;
  29230. *v11 = v14;
  29231. ++v11;
  29232. }
  29233. while ( v12 <= 2 );
  29234. *OutLength = v10 + 6;
  29235. v15 = 0;
  29236. do
  29237. {
  29238. v16 = *(_WORD *)&v7->m_Creator[2 * v15++ + 10];
  29239. *v11 = v16;
  29240. ++v11;
  29241. }
  29242. while ( v15 <= 4 );
  29243. *OutLength = v13 + 10;
  29244. }
  29245. memset(p, 0, 0xFFu);
  29246. Bin2Str(pOut, *OutLength, p);
  29247. memset(strLen, 0, sizeof(strLen));
  29248. snprintf(strLen, 0xFu, "%03di", strlen(p) + 1);
  29249. if ( (signed int)(strlen(strLen) + 1 + strlen(p) + 1 - 2) > BuffLength )
  29250. __assert__(
  29251. "../../Common/GameStruct.cpp",
  29252. 0x639u,
  29253. "BOOL Item2String(_ITEM*, CHAR*, INT&, INT)",
  29254. "BuffLength >= (INT)(strlen(p)+strlen(strLen))");
  29255. strcpy(pOut, strLen);
  29256. strcpy(&pOut[strlen(pOut)], p);
  29257. *OutLength = strlen(pOut);
  29258. return 1;
  29259. }
  29260.  
  29261. //----- (08064C9C) --------------------------------------------------------
  29262. BOOL __cdecl String2Item(const CHAR *pIn, INT BuffLength, _ITEM *pItem)
  29263. {
  29264. INT v3; // ebx
  29265. CHAR *v5; // ST34_4
  29266. _ITEM::$74A771CF9B5D30BBE99A592EB8C6E1F6 *v6; // esi
  29267. __int16 v7; // ax
  29268. INT v8; // ebx
  29269. signed int v9; // ecx
  29270. INT v10; // edx
  29271. INT v11; // edi
  29272. signed int v12; // edx
  29273. CHAR *pBuff; // [esp+14h] [ebp-124h]
  29274. INT nLen; // [esp+18h] [ebp-120h]
  29275. UINT iOut; // [esp+1Ch] [ebp-11Ch]
  29276. CHAR p[255]; // [esp+20h] [ebp-118h]
  29277.  
  29278. if ( !pItem )
  29279. __assert__("../../Common/GameStruct.cpp", 0x644u, "BOOL String2Item(const CHAR*, INT, _ITEM*)", "pItem");
  29280. if ( !pIn )
  29281. __assert__("../../Common/GameStruct.cpp", 0x645u, "BOOL String2Item(const CHAR*, INT, _ITEM*)", "pIn");
  29282. if ( strlen(pIn) <= 4 )
  29283. __assert__("../../Common/GameStruct.cpp", 0x646u, "BOOL String2Item(const CHAR*, INT, _ITEM*)", "strlen(pIn)>4");
  29284. memset(p, 0, 0xFFu);
  29285. Str2Bin(pIn + 4, BuffLength - 4, p, 0xFFu, &iOut);
  29286. pItem->m_ItemIndex = *(_DWORD *)p;
  29287. pItem->m_nsBind = p[4];
  29288. nLen = 0;
  29289. _ITEM::ClientWriteVarAttr(pItem, &p[5], &nLen, iOut);
  29290. v3 = nLen;
  29291. if ( nLen == iOut )
  29292. return 1;
  29293. if ( GetSerialClass(pItem->m_ItemIndex) != 1 || pItem->_anon_1.m_Equip.m_bytDarksFlag != 1 )
  29294. {
  29295. memcpy(&pItem->_anon_0, &p[v3 + 5], strlen(&p[v3 + 5]));
  29296. nLen += strlen(&p[nLen + 5]);
  29297. return 1;
  29298. }
  29299. v5 = &p[v3 + 5];
  29300. v6 = &pItem->_anon_0;
  29301. v6->m_Creator[24] = p[v3 + 5];
  29302. nLen = v3 + 1;
  29303. pItem->_anon_0.m_DarksInfo.m_NowExp = *(_DWORD *)&p[v3 + 6];
  29304. *(_WORD *)&v6->m_Creator[22] = *(_WORD *)&p[v3 + 10];
  29305. v7 = *(_WORD *)&p[v3 + 12];
  29306. v8 = v3 + 9;
  29307. pBuff = v5 + 9;
  29308. *(_WORD *)&v6->m_Creator[20] = v7;
  29309. nLen = v8;
  29310. v9 = 0;
  29311. v10 = v8;
  29312. do
  29313. {
  29314. *(_WORD *)&v6->m_Creator[2 * v9++ + 4] = *(_WORD *)pBuff;
  29315. v10 += 2;
  29316. pBuff += 2;
  29317. v11 = v10;
  29318. }
  29319. while ( v9 <= 2 );
  29320. nLen = v8 + 6;
  29321. v12 = 0;
  29322. do
  29323. {
  29324. *(_WORD *)&v6->m_Creator[2 * v12++ + 10] = *(_WORD *)pBuff;
  29325. pBuff += 2;
  29326. }
  29327. while ( v12 <= 4 );
  29328. nLen = v11 + 10;
  29329. return 1;
  29330. }
  29331.  
  29332. //----- (08064EF8) --------------------------------------------------------
  29333. void __cdecl GUILD_CGW_ASKLIST::Read(int a3, SocketInputStream *a4)
  29334. {
  29335. SocketInputStream::Read(a4, (CHAR *)(a3 + 4), 1u);
  29336. SocketInputStream::Read(a4, (CHAR *)(a3 + 6), 2u);
  29337. }
  29338.  
  29339. //----- (08064F28) --------------------------------------------------------
  29340. void __cdecl GUILD_CGW_ASKLIST::Write(int a3, SocketOutputStream *a4)
  29341. {
  29342. SocketOutputStream::Write(a4, (const CHAR *)(a3 + 4), 1u);
  29343. SocketOutputStream::Write(a4, (const CHAR *)(a3 + 6), 2u);
  29344. }
  29345.  
  29346. //----- (08064F58) --------------------------------------------------------
  29347. void __cdecl GUILD_CGW_ASKNAMELIST::Read(GUILD_CGW_ASKNAMELIST *const this, SocketInputStream *const iStream)
  29348. {
  29349. ;
  29350. }
  29351.  
  29352. //----- (08064F60) --------------------------------------------------------
  29353. void __cdecl GUILD_CGW_ASKNAMELIST::Write(const GUILD_CGW_ASKNAMELIST *const this, SocketOutputStream *const oStream)
  29354. {
  29355. ;
  29356. }
  29357.  
  29358. //----- (08064F68) --------------------------------------------------------
  29359. void __cdecl GUILD_CGW_CREATE::Read(GUILD_CGW_CREATE *const this, SocketInputStream *const iStream)
  29360. {
  29361. UCHAR v2; // dl
  29362. UCHAR v3; // dl
  29363.  
  29364. SocketInputStream::Read(iStream, (CHAR *)&this->m_NameSize, 1u);
  29365. v2 = this->m_NameSize;
  29366. if ( (unsigned __int8)(v2 - 1) > 0x17u )
  29367. {
  29368. SocketInputStream::Read(iStream, (CHAR *)&this->m_DescSize, 1u);
  29369. v3 = this->m_DescSize;
  29370. if ( (unsigned __int8)(v3 - 1) > 0x3Bu )
  29371. return;
  29372. LABEL_5:
  29373. SocketInputStream::Read(iStream, this->m_szGuildDesc, v3);
  29374. return;
  29375. }
  29376. SocketInputStream::Read(iStream, this->m_szGuildName, v2);
  29377. SocketInputStream::Read(iStream, (CHAR *)&this->m_DescSize, 1u);
  29378. v3 = this->m_DescSize;
  29379. if ( (unsigned __int8)(v3 - 1) <= 0x3Bu )
  29380. goto LABEL_5;
  29381. }
  29382.  
  29383. //----- (08064FF8) --------------------------------------------------------
  29384. void __cdecl GUILD_CGW_CREATE::Write(const GUILD_CGW_CREATE *const this, SocketOutputStream *const oStream)
  29385. {
  29386. UCHAR v2; // dl
  29387. UCHAR v3; // dl
  29388.  
  29389. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_NameSize, 1u);
  29390. v2 = this->m_NameSize;
  29391. if ( (unsigned __int8)(v2 - 1) > 0x17u )
  29392. {
  29393. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_DescSize, 1u);
  29394. v3 = this->m_DescSize;
  29395. if ( (unsigned __int8)(v3 - 1) > 0x3Bu )
  29396. return;
  29397. LABEL_5:
  29398. SocketOutputStream::Write(oStream, this->m_szGuildDesc, v3);
  29399. return;
  29400. }
  29401. SocketOutputStream::Write(oStream, this->m_szGuildName, v2);
  29402. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_DescSize, 1u);
  29403. v3 = this->m_DescSize;
  29404. if ( (unsigned __int8)(v3 - 1) <= 0x3Bu )
  29405. goto LABEL_5;
  29406. }
  29407.  
  29408. //----- (08065088) --------------------------------------------------------
  29409. void __cdecl GUILD_CGW_JOIN::Read(GUILD_CGW_JOIN *const this, SocketInputStream *const iStream)
  29410. {
  29411. SocketInputStream::Read(iStream, (CHAR *)&this->m_GuildGUID, 2u);
  29412. }
  29413.  
  29414. //----- (080650A4) --------------------------------------------------------
  29415. void __cdecl GUILD_CGW_JOIN::Write(const GUILD_CGW_JOIN *const this, SocketOutputStream *const oStream)
  29416. {
  29417. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_GuildGUID, 2u);
  29418. }
  29419.  
  29420. //----- (080650C0) --------------------------------------------------------
  29421. void __cdecl GUILD_CGW_ASKINFO::Read(int a3, SocketInputStream *a4)
  29422. {
  29423. SocketInputStream::Read(a4, (CHAR *)(a3 + 4), 2u);
  29424. SocketInputStream::Read(a4, (CHAR *)(a3 + 6), 1u);
  29425. }
  29426.  
  29427. //----- (080650F0) --------------------------------------------------------
  29428. void __cdecl GUILD_CGW_ASKINFO::Write(int a3, SocketOutputStream *a4)
  29429. {
  29430. SocketOutputStream::Write(a4, (const CHAR *)(a3 + 4), 2u);
  29431. SocketOutputStream::Write(a4, (const CHAR *)(a3 + 6), 1u);
  29432. }
  29433.  
  29434. //----- (08065120) --------------------------------------------------------
  29435. void __cdecl GUILD_CGW_APPOINT::Read(CHAR *a3, SocketInputStream *a4)
  29436. {
  29437. SocketInputStream::Read(a4, a3 + 4, 2u);
  29438. SocketInputStream::Read(a4, a3 + 8, 4u);
  29439. SocketInputStream::Read(a4, a3 + 12, 1u);
  29440. }
  29441.  
  29442. //----- (08065160) --------------------------------------------------------
  29443. void __cdecl GUILD_CGW_APPOINT::Write(const CHAR *a3, SocketOutputStream *a4)
  29444. {
  29445. SocketOutputStream::Write(a4, a3 + 4, 2u);
  29446. SocketOutputStream::Write(a4, a3 + 8, 4u);
  29447. SocketOutputStream::Write(a4, a3 + 12, 1u);
  29448. }
  29449.  
  29450. //----- (080651A0) --------------------------------------------------------
  29451. void __cdecl GUILD_CGW_ADJUSTAUTH::Read(CHAR *a3, SocketInputStream *a4)
  29452. {
  29453. SocketInputStream::Read(a4, a3 + 4, 2u);
  29454. SocketInputStream::Read(a4, a3 + 8, 4u);
  29455. SocketInputStream::Read(a4, a3 + 12, 1u);
  29456. }
  29457.  
  29458. //----- (080651E0) --------------------------------------------------------
  29459. void __cdecl GUILD_CGW_ADJUSTAUTH::Write(const CHAR *a3, SocketOutputStream *a4)
  29460. {
  29461. SocketOutputStream::Write(a4, a3 + 4, 2u);
  29462. SocketOutputStream::Write(a4, a3 + 8, 4u);
  29463. SocketOutputStream::Write(a4, a3 + 12, 1u);
  29464. }
  29465.  
  29466. //----- (08065220) --------------------------------------------------------
  29467. void __cdecl GUILD_CGW_RECRUIT::Read(GUILD_CGW_RECRUIT *const this, SocketInputStream *const iStream)
  29468. {
  29469. SocketInputStream::Read(iStream, (CHAR *)&this->m_ProposerGUID, 4u);
  29470. }
  29471.  
  29472. //----- (0806523C) --------------------------------------------------------
  29473. void __cdecl GUILD_CGW_RECRUIT::Write(const GUILD_CGW_RECRUIT *const this, SocketOutputStream *const oStream)
  29474. {
  29475. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_ProposerGUID, 4u);
  29476. }
  29477.  
  29478. //----- (08065258) --------------------------------------------------------
  29479. void __cdecl GUILD_CGW_EXPEL::Read(GUILD_CGW_EXPEL *const this, SocketInputStream *const iStream)
  29480. {
  29481. SocketInputStream::Read(iStream, (CHAR *)&this->m_GuildUserGUID, 4u);
  29482. }
  29483.  
  29484. //----- (08065274) --------------------------------------------------------
  29485. void __cdecl GUILD_CGW_EXPEL::Write(const GUILD_CGW_EXPEL *const this, SocketOutputStream *const oStream)
  29486. {
  29487. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_GuildUserGUID, 4u);
  29488. }
  29489.  
  29490. //----- (08065290) --------------------------------------------------------
  29491. void __cdecl GUILD_CGW_WITHDRAW::Read(GUILD_CGW_WITHDRAW *const this, SocketInputStream *const iStream)
  29492. {
  29493. SocketInputStream::Read(iStream, (CHAR *)&this->m_MoneyAmount, 4u);
  29494. }
  29495.  
  29496. //----- (080652AC) --------------------------------------------------------
  29497. void __cdecl GUILD_CGW_WITHDRAW::Write(const GUILD_CGW_WITHDRAW *const this, SocketOutputStream *const oStream)
  29498. {
  29499. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_MoneyAmount, 4u);
  29500. }
  29501.  
  29502. //----- (080652C8) --------------------------------------------------------
  29503. void __cdecl GUILD_CGW_DEPOSIT::Read(GUILD_CGW_DEPOSIT *const this, SocketInputStream *const iStream)
  29504. {
  29505. SocketInputStream::Read(iStream, (CHAR *)&this->m_MoneyAmount, 4u);
  29506. }
  29507.  
  29508. //----- (080652E4) --------------------------------------------------------
  29509. void __cdecl GUILD_CGW_DEPOSIT::Write(const GUILD_CGW_DEPOSIT *const this, SocketOutputStream *const oStream)
  29510. {
  29511. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_MoneyAmount, 4u);
  29512. }
  29513.  
  29514. //----- (08065300) --------------------------------------------------------
  29515. void __cdecl GUILD_POSITION_NAME_LIST::Read(int a3, SocketInputStream *a4)
  29516. {
  29517. SocketInputStream::Read(a4, (CHAR *)(a3 + 644), 4u);
  29518. SocketInputStream::Read(a4, (CHAR *)(a3 + 4), *(_DWORD *)(a3 + 644) << 6);
  29519. }
  29520.  
  29521. //----- (0806533C) --------------------------------------------------------
  29522. void __cdecl GUILD_POSITION_NAME_LIST::Write(int a3, SocketOutputStream *a4)
  29523. {
  29524. SocketOutputStream::Write(a4, (const CHAR *)(a3 + 644), 4u);
  29525. SocketOutputStream::Write(a4, (const CHAR *)(a3 + 4), *(_DWORD *)(a3 + 644) << 6);
  29526. }
  29527.  
  29528. //----- (08065378) --------------------------------------------------------
  29529. void __cdecl GUILD_CGW_CHANG_DESC::Read(GUILD_CGW_CHANG_DESC *const this, SocketInputStream *const iStream)
  29530. {
  29531. BYTE v2; // dl
  29532.  
  29533. SocketInputStream::Read(iStream, (CHAR *)&this->m_GuildDescLength, 1u);
  29534. v2 = this->m_GuildDescLength;
  29535. if ( (unsigned __int8)(v2 - 1) <= 0x3Bu )
  29536. SocketInputStream::Read(iStream, this->m_GuildDesc, v2);
  29537. }
  29538.  
  29539. //----- (080653C0) --------------------------------------------------------
  29540. void __cdecl GUILD_CGW_CHANG_DESC::Write(const GUILD_CGW_CHANG_DESC *const this, SocketOutputStream *const oStream)
  29541. {
  29542. BYTE v2; // dl
  29543.  
  29544. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_GuildDescLength, 1u);
  29545. v2 = this->m_GuildDescLength;
  29546. if ( (unsigned __int8)(v2 - 1) <= 0x3Bu )
  29547. SocketOutputStream::Write(oStream, this->m_GuildDesc, v2);
  29548. }
  29549.  
  29550. //----- (08065408) --------------------------------------------------------
  29551. void __cdecl GUILD_CGW_MODIFY_LEAVE_WORD::Read(GUILD_CGW_MODIFY_LEAVE_WORD *const this, SocketInputStream *const iStream)
  29552. {
  29553. UCHAR v2; // al
  29554.  
  29555. SocketInputStream::Read(iStream, (CHAR *)&this->m_uLeaveWordSize, 1u);
  29556. v2 = this->m_uLeaveWordSize;
  29557. if ( v2 )
  29558. SocketInputStream::Read(iStream, this->m_szGuildLeaveWord, v2);
  29559. }
  29560.  
  29561. //----- (08065450) --------------------------------------------------------
  29562. void __cdecl GUILD_CGW_MODIFY_LEAVE_WORD::Write(const GUILD_CGW_MODIFY_LEAVE_WORD *const this, SocketOutputStream *const oStream)
  29563. {
  29564. UCHAR v2; // al
  29565.  
  29566. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_uLeaveWordSize, 1u);
  29567. v2 = this->m_uLeaveWordSize;
  29568. if ( v2 )
  29569. SocketOutputStream::Write(oStream, this->m_szGuildLeaveWord, v2);
  29570. }
  29571.  
  29572. //----- (08065498) --------------------------------------------------------
  29573. void __cdecl GUILD_WGC_APPOINT_INFO::Read(CHAR *a3, SocketInputStream *a4)
  29574. {
  29575. SocketInputStream::Read(a4, a3 + 256, 4u);
  29576. SocketInputStream::Read(a4, a3 + 260, 1u);
  29577. SocketInputStream::Read(a4, a3 + 4, 25 * *((_DWORD *)a3 + 64));
  29578. }
  29579.  
  29580. //----- (080654E8) --------------------------------------------------------
  29581. void __cdecl GUILD_WGC_APPOINT_INFO::Write(const CHAR *a3, SocketOutputStream *a4)
  29582. {
  29583. SocketOutputStream::Write(a4, a3 + 256, 4u);
  29584. SocketOutputStream::Write(a4, a3 + 260, 1u);
  29585. SocketOutputStream::Write(a4, a3 + 4, 25 * *((_DWORD *)a3 + 64));
  29586. }
  29587.  
  29588. //----- (08065538) --------------------------------------------------------
  29589. void __cdecl GUILD_WGC_GUILD_INFO::Read(CHAR *a3, SocketInputStream *a4)
  29590. {
  29591. SocketInputStream::Read(a4, a3 + 4, 0x18u);
  29592. SocketInputStream::Read(a4, a3 + 29, 0x1Eu);
  29593. SocketInputStream::Read(a4, a3 + 59, 0x1Eu);
  29594. SocketInputStream::Read(a4, a3 + 89, 0x1Au);
  29595. SocketInputStream::Read(a4, a3 + 115, 0x20u);
  29596. SocketInputStream::Read(a4, a3 + 147, 1u);
  29597. SocketInputStream::Read(a4, a3 + 148, 4u);
  29598. SocketInputStream::Read(a4, a3 + 152, 4u);
  29599. SocketInputStream::Read(a4, a3 + 156, 4u);
  29600. SocketInputStream::Read(a4, a3 + 160, 4u);
  29601. SocketInputStream::Read(a4, a3 + 164, 4u);
  29602. SocketInputStream::Read(a4, a3 + 168, 4u);
  29603. SocketInputStream::Read(a4, a3 + 172, 4u);
  29604. SocketInputStream::Read(a4, a3 + 176, 4u);
  29605. SocketInputStream::Read(a4, a3 + 180, 4u);
  29606. SocketInputStream::Read(a4, a3 + 184, 4u);
  29607. SocketInputStream::Read(a4, a3 + 188, 4u);
  29608. SocketInputStream::Read(a4, a3 + 192, 4u);
  29609. SocketInputStream::Read(a4, a3 + 196, 4u);
  29610. SocketInputStream::Read(a4, a3 + 200, 4u);
  29611. SocketInputStream::Read(a4, a3 + 204, 4u);
  29612. SocketInputStream::Read(a4, a3 + 208, 4u);
  29613. SocketInputStream::Read(a4, a3 + 212, 4u);
  29614. SocketInputStream::Read(a4, a3 + 216, 4u);
  29615. }
  29616.  
  29617. //----- (080656EC) --------------------------------------------------------
  29618. void __cdecl GUILD_WGC_GUILD_INFO::Write(const CHAR *a3, SocketOutputStream *a4)
  29619. {
  29620. SocketOutputStream::Write(a4, a3 + 4, 0x18u);
  29621. SocketOutputStream::Write(a4, a3 + 29, 0x1Eu);
  29622. SocketOutputStream::Write(a4, a3 + 59, 0x1Eu);
  29623. SocketOutputStream::Write(a4, a3 + 89, 0x1Au);
  29624. SocketOutputStream::Write(a4, a3 + 115, 0x20u);
  29625. SocketOutputStream::Write(a4, a3 + 147, 1u);
  29626. SocketOutputStream::Write(a4, a3 + 148, 4u);
  29627. SocketOutputStream::Write(a4, a3 + 152, 4u);
  29628. SocketOutputStream::Write(a4, a3 + 156, 4u);
  29629. SocketOutputStream::Write(a4, a3 + 160, 4u);
  29630. SocketOutputStream::Write(a4, a3 + 164, 4u);
  29631. SocketOutputStream::Write(a4, a3 + 168, 4u);
  29632. SocketOutputStream::Write(a4, a3 + 172, 4u);
  29633. SocketOutputStream::Write(a4, a3 + 176, 4u);
  29634. SocketOutputStream::Write(a4, a3 + 180, 4u);
  29635. SocketOutputStream::Write(a4, a3 + 184, 4u);
  29636. SocketOutputStream::Write(a4, a3 + 188, 4u);
  29637. SocketOutputStream::Write(a4, a3 + 192, 4u);
  29638. SocketOutputStream::Write(a4, a3 + 196, 4u);
  29639. SocketOutputStream::Write(a4, a3 + 200, 4u);
  29640. SocketOutputStream::Write(a4, a3 + 204, 4u);
  29641. SocketOutputStream::Write(a4, a3 + 208, 4u);
  29642. SocketOutputStream::Write(a4, a3 + 212, 4u);
  29643. SocketOutputStream::Write(a4, a3 + 216, 4u);
  29644. }
  29645.  
  29646. //----- (080658A0) --------------------------------------------------------
  29647. void __cdecl GUILD_WGC_MEMBER_LIST::Read(GUILD_WGC_MEMBER_LIST *const this, SocketInputStream *const iStream)
  29648. {
  29649. USHORT v2; // dx
  29650. CHAR *v3; // esi
  29651. INT i; // [esp+8h] [ebp-14h]
  29652.  
  29653. SocketInputStream::Read(iStream, (CHAR *)&this->m_uValidMemberCount, 2u);
  29654. SocketInputStream::Read(iStream, (CHAR *)&this->m_uMemberCount, 2u);
  29655. SocketInputStream::Read(iStream, (CHAR *)&this->m_uMemberMax, 2u);
  29656. SocketInputStream::Read(iStream, (CHAR *)&this->m_bPosition, 1u);
  29657. SocketInputStream::Read(iStream, (CHAR *)&this->m_bAccess, 1u);
  29658. SocketInputStream::Read(iStream, this->m_GuildDesc, 0x3Cu);
  29659. SocketInputStream::Read(iStream, this->m_GuildName, 0x18u);
  29660. SocketInputStream::Read(iStream, this->m_GuildLeagueName, 0x20u);
  29661. v2 = this->m_uMemberCount;
  29662. if ( (unsigned __int16)(v2 - 1) <= 0x10Du )
  29663. {
  29664. i = 0;
  29665. if ( v2 )
  29666. {
  29667. v3 = (CHAR *)this;
  29668. do
  29669. {
  29670. SocketInputStream::Read(iStream, v3 + 4, 0x1Eu);
  29671. SocketInputStream::Read(iStream, v3 + 36, 4u);
  29672. SocketInputStream::Read(iStream, v3 + 40, 1u);
  29673. SocketInputStream::Read(iStream, v3 + 41, 1u);
  29674. SocketInputStream::Read(iStream, v3 + 44, 4u);
  29675. SocketInputStream::Read(iStream, v3 + 48, 4u);
  29676. SocketInputStream::Read(iStream, v3 + 52, 4u);
  29677. SocketInputStream::Read(iStream, v3 + 56, 4u);
  29678. SocketInputStream::Read(iStream, v3 + 60, 4u);
  29679. SocketInputStream::Read(iStream, v3 + 64, 1u);
  29680. SocketInputStream::Read(iStream, v3 + 65, 1u);
  29681. SocketInputStream::Read(iStream, v3 + 66, 1u);
  29682. ++i;
  29683. v3 += 64;
  29684. }
  29685. while ( this->m_uMemberCount > i );
  29686. }
  29687. }
  29688. }
  29689.  
  29690. //----- (08065A54) --------------------------------------------------------
  29691. void __cdecl GUILD_WGC_MEMBER_LIST::Write(const GUILD_WGC_MEMBER_LIST *const this, SocketOutputStream *const oStream)
  29692. {
  29693. USHORT v2; // dx
  29694. const CHAR *v3; // esi
  29695. INT i; // [esp+8h] [ebp-14h]
  29696.  
  29697. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_uValidMemberCount, 2u);
  29698. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_uMemberCount, 2u);
  29699. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_uMemberMax, 2u);
  29700. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_bPosition, 1u);
  29701. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_bAccess, 1u);
  29702. SocketOutputStream::Write(oStream, this->m_GuildDesc, 0x3Cu);
  29703. SocketOutputStream::Write(oStream, this->m_GuildName, 0x18u);
  29704. SocketOutputStream::Write(oStream, this->m_GuildLeagueName, 0x20u);
  29705. v2 = this->m_uMemberCount;
  29706. if ( (unsigned __int16)(v2 - 1) <= 0x10Du )
  29707. {
  29708. i = 0;
  29709. if ( v2 )
  29710. {
  29711. v3 = (const CHAR *)this;
  29712. do
  29713. {
  29714. SocketOutputStream::Write(oStream, v3 + 4, 0x1Eu);
  29715. SocketOutputStream::Write(oStream, v3 + 36, 4u);
  29716. SocketOutputStream::Write(oStream, v3 + 40, 1u);
  29717. SocketOutputStream::Write(oStream, v3 + 41, 1u);
  29718. SocketOutputStream::Write(oStream, v3 + 44, 4u);
  29719. SocketOutputStream::Write(oStream, v3 + 48, 4u);
  29720. SocketOutputStream::Write(oStream, v3 + 52, 4u);
  29721. SocketOutputStream::Write(oStream, v3 + 56, 4u);
  29722. SocketOutputStream::Write(oStream, v3 + 60, 4u);
  29723. SocketOutputStream::Write(oStream, v3 + 64, 1u);
  29724. SocketOutputStream::Write(oStream, v3 + 65, 1u);
  29725. SocketOutputStream::Write(oStream, v3 + 66, 1u);
  29726. ++i;
  29727. v3 += 64;
  29728. }
  29729. while ( this->m_uMemberCount > i );
  29730. }
  29731. }
  29732. }
  29733.  
  29734. //----- (08065C08) --------------------------------------------------------
  29735. void __cdecl GUILD_WGC_LIST::Read(GUILD_WGC_LIST *const this, SocketInputStream *const iStream)
  29736. {
  29737. UCHAR v2; // al
  29738.  
  29739. SocketInputStream::Read(iStream, (CHAR *)&this->m_uStartIndex, 2u);
  29740. SocketInputStream::Read(iStream, (CHAR *)&this->m_uGuildCount, 2u);
  29741. SocketInputStream::Read(iStream, (CHAR *)&this->m_uGuildListCount, 1u);
  29742. v2 = this->m_uGuildListCount;
  29743. if ( v2 )
  29744. SocketInputStream::Read(iStream, (CHAR *)this->m_uGuild, 208 * v2);
  29745. }
  29746.  
  29747. //----- (08065C74) --------------------------------------------------------
  29748. void __cdecl GUILD_WGC_LIST::Write(const GUILD_WGC_LIST *const this, SocketOutputStream *const oStream)
  29749. {
  29750. UCHAR v2; // al
  29751.  
  29752. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_uStartIndex, 2u);
  29753. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_uGuildCount, 2u);
  29754. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_uGuildListCount, 1u);
  29755. v2 = this->m_uGuildListCount;
  29756. if ( v2 )
  29757. SocketOutputStream::Write(oStream, (const CHAR *)this->m_uGuild, 208 * v2);
  29758. }
  29759.  
  29760. //----- (08065CE0) --------------------------------------------------------
  29761. void __cdecl GUILD_WGC_NAMELIST::Read(GUILD_WGC_NAMELIST *const this, SocketInputStream *const iStream)
  29762. {
  29763. SocketInputStream::Read(iStream, (CHAR *)this->m_uGuild, 0x7000u);
  29764. }
  29765.  
  29766. //----- (08065CFC) --------------------------------------------------------
  29767. void __cdecl GUILD_WGC_NAMELIST::Write(const GUILD_WGC_NAMELIST *const this, SocketOutputStream *const oStream)
  29768. {
  29769. SocketOutputStream::Write(oStream, (const CHAR *)this->m_uGuild, 0x7000u);
  29770. }
  29771.  
  29772. //----- (08065D18) --------------------------------------------------------
  29773. void __cdecl GUILD_WGC_SELF_GUILD_INFO::Read(GUILD_WGC_SELF_GUILD_INFO *const this, SocketInputStream *const iStream)
  29774. {
  29775. BYTE v2; // dl
  29776. BYTE v3; // dl
  29777. int v4; // ecx
  29778. UINT v5; // edx
  29779. UCHAR v6; // dl
  29780. GUILD_WGC_SELF_GUILD_INFO *v7; // edi
  29781. signed int v8; // ebx
  29782.  
  29783. SocketInputStream::Read(iStream, (CHAR *)&this->m_GuildID, 2u);
  29784. SocketInputStream::Read(iStream, (CHAR *)&this->m_GuildNameSize, 1u);
  29785. v2 = this->m_GuildNameSize;
  29786. if ( (unsigned __int8)(v2 - 1) <= 0x17u )
  29787. SocketInputStream::Read(iStream, this->m_GuildName, v2);
  29788. SocketInputStream::Read(iStream, (CHAR *)&this->m_PositionNameSize, 1u);
  29789. v3 = this->m_PositionNameSize;
  29790. if ( (unsigned __int8)(v3 - 1) <= 0x17u )
  29791. SocketInputStream::Read(iStream, this->m_PositionName, v3);
  29792. SocketInputStream::Read(iStream, (CHAR *)&this->m_GuildLeagueNameSize, 1u);
  29793. memset(this->m_GuildLeagueName, 0, sizeof(this->m_GuildLeagueName));
  29794. v4 = this->m_GuildLeagueNameSize;
  29795. if ( (unsigned __int8)(v4 - 1) <= 0x1Eu )
  29796. SocketInputStream::Read(iStream, this->m_GuildLeagueName, (unsigned __int8)v4);
  29797. SocketInputStream::Read(iStream, (CHAR *)&this->m_GuildPosition, 1u);
  29798. SocketInputStream::Read(iStream, (CHAR *)&this->m_GuildContri, 4u);
  29799. SocketInputStream::Read(iStream, (CHAR *)&this->m_GuildContriPerWeek, 4u);
  29800. SocketInputStream::Read(iStream, (CHAR *)&this->m_MaxGuildContri, 4u);
  29801. SocketInputStream::Read(iStream, (CHAR *)&this->m_CityID, 2u);
  29802. SocketInputStream::Read(iStream, (CHAR *)&this->m_uLeaveWordSize, 4u);
  29803. v5 = this->m_uLeaveWordSize;
  29804. if ( v5 - 1 <= 0x1FF )
  29805. SocketInputStream::Read(iStream, this->m_szGuildLeaveWord, v5);
  29806. SocketInputStream::Read(iStream, (CHAR *)&this->m_uGuildDescSize, 1u);
  29807. v6 = this->m_uGuildDescSize;
  29808. if ( (unsigned __int8)(v6 - 1) <= 0x3Du )
  29809. SocketInputStream::Read(iStream, this->m_szGuildDesc, v6);
  29810. SocketInputStream::Read(iStream, (CHAR *)&this->m_GuildLevel, 4u);
  29811. SocketInputStream::Read(iStream, (CHAR *)&this->m_GuildTime, 4u);
  29812. v7 = this;
  29813. v8 = 2;
  29814. do
  29815. {
  29816. SocketInputStream::Read(iStream, (CHAR *)v7->m_BattleGuildList, 2u);
  29817. SocketInputStream::Read(iStream, (CHAR *)&v7->m_BattleGuildList[0].m_uLeftTime, 4u);
  29818. v7 = (GUILD_WGC_SELF_GUILD_INFO *)((char *)v7 + 8);
  29819. --v8;
  29820. }
  29821. while ( v8 >= 0 );
  29822. SocketInputStream::Read(iStream, (CHAR *)&this->m_iBattleNum, 4u);
  29823. SocketInputStream::Read(iStream, (CHAR *)&this->m_iHostilityNum, 4u);
  29824. SocketInputStream::Read(iStream, (CHAR *)&this->m_uAppointTime, 4u);
  29825. SocketInputStream::Read(iStream, (CHAR *)&this->m_nProposerCount, 4u);
  29826. }
  29827.  
  29828. //----- (08065F78) --------------------------------------------------------
  29829. void __cdecl GUILD_WGC_SELF_GUILD_INFO::Write(const GUILD_WGC_SELF_GUILD_INFO *const this, SocketOutputStream *const oStream)
  29830. {
  29831. BYTE v2; // dl
  29832. BYTE v3; // dl
  29833. BYTE v4; // dl
  29834. UINT v5; // edx
  29835. UCHAR v6; // dl
  29836. const GUILD_WGC_SELF_GUILD_INFO *v7; // ebx
  29837. signed int v8; // esi
  29838.  
  29839. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_GuildID, 2u);
  29840. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_GuildNameSize, 1u);
  29841. v2 = this->m_GuildNameSize;
  29842. if ( (unsigned __int8)(v2 - 1) <= 0x17u )
  29843. SocketOutputStream::Write(oStream, this->m_GuildName, v2);
  29844. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_PositionNameSize, 1u);
  29845. v3 = this->m_PositionNameSize;
  29846. if ( (unsigned __int8)(v3 - 1) <= 0x17u )
  29847. SocketOutputStream::Write(oStream, this->m_PositionName, v3);
  29848. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_GuildLeagueNameSize, 1u);
  29849. v4 = this->m_GuildLeagueNameSize;
  29850. if ( (unsigned __int8)(v4 - 1) <= 0x1Eu )
  29851. SocketOutputStream::Write(oStream, this->m_GuildLeagueName, v4);
  29852. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_GuildPosition, 1u);
  29853. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_GuildContri, 4u);
  29854. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_GuildContriPerWeek, 4u);
  29855. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_MaxGuildContri, 4u);
  29856. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_CityID, 2u);
  29857. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_uLeaveWordSize, 4u);
  29858. v5 = this->m_uLeaveWordSize;
  29859. if ( v5 - 1 <= 0x1FE )
  29860. SocketOutputStream::Write(oStream, this->m_szGuildLeaveWord, v5);
  29861. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_uGuildDescSize, 1u);
  29862. v6 = this->m_uGuildDescSize;
  29863. if ( (unsigned __int8)(v6 - 1) <= 0x3Du )
  29864. SocketOutputStream::Write(oStream, this->m_szGuildDesc, v6);
  29865. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_GuildLevel, 4u);
  29866. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_GuildTime, 4u);
  29867. v7 = this;
  29868. v8 = 2;
  29869. do
  29870. {
  29871. SocketOutputStream::Write(oStream, (const CHAR *)v7->m_BattleGuildList, 2u);
  29872. SocketOutputStream::Write(oStream, (const CHAR *)&v7->m_BattleGuildList[0].m_uLeftTime, 4u);
  29873. v7 = (const GUILD_WGC_SELF_GUILD_INFO *)((char *)v7 + 8);
  29874. --v8;
  29875. }
  29876. while ( v8 >= 0 );
  29877. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_iBattleNum, 4u);
  29878. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_iHostilityNum, 4u);
  29879. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_uAppointTime, 4u);
  29880. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_nProposerCount, 4u);
  29881. }
  29882.  
  29883. //----- (080661CC) --------------------------------------------------------
  29884. void __cdecl _GUILD_PACKET::Read(_GUILD_PACKET *const this, SocketInputStream *const iStream)
  29885. {
  29886. int v2; // eax
  29887.  
  29888. SocketInputStream::Read(iStream, (CHAR *)&this->m_uPacketType, 1u);
  29889. SocketInputStream::Read(iStream, (CHAR *)&this->m_uSerial, 4u);
  29890. v2 = ((int (__cdecl *)(_GUILD_PACKET *const , _DWORD))*this->_vptr__GUILD_PACKET)(this, this->m_uPacketType);
  29891. if ( !v2 )
  29892. __assert__("../../Common/GameStruct.cpp", 0x89Cu, "void _GUILD_PACKET::Read(SocketInputStream&)", "FALSE");
  29893. (*(void (__cdecl **)(int, SocketInputStream *const ))(*(_DWORD *)v2 + 4))(v2, iStream);
  29894. }
  29895.  
  29896. //----- (08066240) --------------------------------------------------------
  29897. void __cdecl _GUILD_PACKET::Write(const _GUILD_PACKET *const this, SocketOutputStream *const oStream)
  29898. {
  29899. int v2; // eax
  29900.  
  29901. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_uPacketType, 1u);
  29902. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_uSerial, 4u);
  29903. v2 = ((int (__cdecl *)(const _GUILD_PACKET *const , _DWORD))*this->_vptr__GUILD_PACKET)(this, this->m_uPacketType);
  29904. if ( !v2 )
  29905. __assert__("../../Common/GameStruct.cpp", 0x8ADu, "void _GUILD_PACKET::Write(SocketOutputStream&) const", "FALSE");
  29906. (*(void (__cdecl **)(int, SocketOutputStream *const ))(*(_DWORD *)v2 + 8))(v2, oStream);
  29907. }
  29908.  
  29909. //----- (080662B4) --------------------------------------------------------
  29910. void __cdecl _GUILD_RETURN::Read(_GUILD_RETURN *const this, SocketInputStream *const iStream)
  29911. {
  29912. UCHAR v2; // dl
  29913. UCHAR v3; // dl
  29914. UCHAR v4; // dl
  29915. UCHAR v5; // dl
  29916. UCHAR v6; // dl
  29917. UCHAR v7; // dl
  29918. UCHAR v8; // dl
  29919. UCHAR v9; // dl
  29920. UCHAR v10; // dl
  29921. UCHAR v11; // dl
  29922. UCHAR v12; // dl
  29923. UCHAR v13; // dl
  29924. UCHAR v14; // dl
  29925. UCHAR v15; // dl
  29926. UCHAR v16; // dl
  29927. UCHAR v17; // dl
  29928.  
  29929. SocketInputStream::Read(iStream, &this->m_ReturnType, 1u);
  29930. switch ( this->m_ReturnType )
  29931. {
  29932. case 0:
  29933. case 2:
  29934. SocketInputStream::Read(iStream, (CHAR *)&this->m_uSerial, 4u);
  29935. SocketInputStream::Read(iStream, (CHAR *)&this->m_GuildID, 2u);
  29936. SocketInputStream::Read(iStream, (CHAR *)&this->m_GuildNameSize, 1u);
  29937. v17 = this->m_GuildNameSize;
  29938. if ( (unsigned __int8)(v17 - 1) <= 0x17u )
  29939. SocketInputStream::Read(iStream, this->m_GuildName, v17);
  29940. return;
  29941. case 3:
  29942. case 4:
  29943. SocketInputStream::Read(iStream, (CHAR *)&this->m_uSerial, 4u);
  29944. SocketInputStream::Read(iStream, (CHAR *)&this->m_GUID, 4u);
  29945. SocketInputStream::Read(iStream, (CHAR *)&this->m_GuildID, 2u);
  29946. SocketInputStream::Read(iStream, (CHAR *)&this->m_PosID, 1u);
  29947. SocketInputStream::Read(iStream, (CHAR *)&this->m_SourNameSize, 1u);
  29948. SocketInputStream::Read(iStream, (CHAR *)&this->m_DestNameSize, 1u);
  29949. SocketInputStream::Read(iStream, (CHAR *)&this->m_GuildNameSize, 1u);
  29950. SocketInputStream::Read(iStream, (CHAR *)&this->m_PositionNameSize, 1u);
  29951. goto LABEL_9;
  29952. case 5:
  29953. case 6:
  29954. case 0xA:
  29955. case 0xB:
  29956. case 0xE:
  29957. case 0xF:
  29958. case 0x13:
  29959. case 0x14:
  29960. case 0x16:
  29961. case 0x19:
  29962. return;
  29963. case 7:
  29964. SocketInputStream::Read(iStream, (CHAR *)&this->m_uSerial, 4u);
  29965. SocketInputStream::Read(iStream, (CHAR *)&this->m_GuildID, 2u);
  29966. SocketInputStream::Read(iStream, (CHAR *)&this->m_GUID, 4u);
  29967. SocketInputStream::Read(iStream, (CHAR *)&this->m_GUIDChanged, 4u);
  29968. SocketInputStream::Read(iStream, (CHAR *)&this->m_SourNameSize, 1u);
  29969. SocketInputStream::Read(iStream, (CHAR *)&this->m_DestNameSize, 1u);
  29970. SocketInputStream::Read(iStream, (CHAR *)&this->m_GuildNameSize, 1u);
  29971. SocketInputStream::Read(iStream, (CHAR *)&this->m_PositionNameSize, 1u);
  29972. SocketInputStream::Read(iStream, (CHAR *)&this->m_JoinTime, 4u);
  29973. SocketInputStream::Read(iStream, (CHAR *)&this->m_bIsOnline, 1u);
  29974. LABEL_9:
  29975. v4 = this->m_SourNameSize;
  29976. if ( (unsigned __int8)(v4 - 1) <= 0x1Du )
  29977. SocketInputStream::Read(iStream, this->m_SourName, v4);
  29978. v5 = this->m_DestNameSize;
  29979. if ( (unsigned __int8)(v5 - 1) <= 0x1Du )
  29980. SocketInputStream::Read(iStream, this->m_DestName, v5);
  29981. v6 = this->m_GuildNameSize;
  29982. if ( (unsigned __int8)(v6 - 1) <= 0x17u )
  29983. SocketInputStream::Read(iStream, this->m_GuildName, v6);
  29984. v7 = this->m_PositionNameSize;
  29985. if ( (unsigned __int8)(v7 - 1) <= 0x17u )
  29986. SocketInputStream::Read(iStream, this->m_PositionName, v7);
  29987. return;
  29988. case 8:
  29989. SocketInputStream::Read(iStream, (CHAR *)&this->m_uSerial, 4u);
  29990. SocketInputStream::Read(iStream, (CHAR *)&this->m_GUID, 4u);
  29991. SocketInputStream::Read(iStream, (CHAR *)&this->m_GuildNameSize, 1u);
  29992. SocketInputStream::Read(iStream, (CHAR *)&this->m_SourNameSize, 1u);
  29993. SocketInputStream::Read(iStream, (CHAR *)&this->m_DestNameSize, 1u);
  29994. v9 = this->m_GuildNameSize;
  29995. if ( (unsigned __int8)(v9 - 1) <= 0x17u )
  29996. SocketInputStream::Read(iStream, this->m_GuildName, v9);
  29997. v10 = this->m_SourNameSize;
  29998. if ( (unsigned __int8)(v10 - 1) <= 0x1Du )
  29999. SocketInputStream::Read(iStream, this->m_SourName, v10);
  30000. goto LABEL_6;
  30001. case 9:
  30002. SocketInputStream::Read(iStream, (CHAR *)&this->m_uSerial, 4u);
  30003. SocketInputStream::Read(iStream, (CHAR *)&this->m_GUID, 4u);
  30004. SocketInputStream::Read(iStream, (CHAR *)&this->m_GUIDChanged, 4u);
  30005. SocketInputStream::Read(iStream, (CHAR *)&this->m_GuildID, 2u);
  30006. SocketInputStream::Read(iStream, (CHAR *)&this->m_SourNameSize, 1u);
  30007. SocketInputStream::Read(iStream, (CHAR *)&this->m_DestNameSize, 1u);
  30008. SocketInputStream::Read(iStream, (CHAR *)&this->m_GuildNameSize, 1u);
  30009. SocketInputStream::Read(iStream, (CHAR *)&this->m_PositionNameSize, 1u);
  30010. SocketInputStream::Read(iStream, (CHAR *)&this->m_ChangedPositionNameSize, 1u);
  30011. v11 = this->m_SourNameSize;
  30012. if ( (unsigned __int8)(v11 - 1) <= 0x1Du )
  30013. SocketInputStream::Read(iStream, this->m_SourName, v11);
  30014. v12 = this->m_DestNameSize;
  30015. if ( (unsigned __int8)(v12 - 1) <= 0x1Du )
  30016. SocketInputStream::Read(iStream, this->m_DestName, v12);
  30017. v13 = this->m_GuildNameSize;
  30018. if ( (unsigned __int8)(v13 - 1) <= 0x17u )
  30019. SocketInputStream::Read(iStream, this->m_GuildName, v13);
  30020. v14 = this->m_PositionNameSize;
  30021. if ( (unsigned __int8)(v14 - 1) <= 0x17u )
  30022. SocketInputStream::Read(iStream, this->m_PositionName, v14);
  30023. v15 = this->m_ChangedPositionNameSize;
  30024. if ( (unsigned __int8)(v15 - 1) <= 0x17u )
  30025. SocketInputStream::Read(iStream, this->m_ChangedPositionName, v15);
  30026. break;
  30027. case 0xC:
  30028. case 0xD:
  30029. SocketInputStream::Read(iStream, (CHAR *)&this->m_uSerial, 4u);
  30030. SocketInputStream::Read(iStream, (CHAR *)&this->m_GUID, 4u);
  30031. SocketInputStream::Read(iStream, (CHAR *)&this->m_GuildNameSize, 1u);
  30032. SocketInputStream::Read(iStream, (CHAR *)&this->m_DestNameSize, 1u);
  30033. v2 = this->m_GuildNameSize;
  30034. if ( (unsigned __int8)(v2 - 1) <= 0x17u )
  30035. SocketInputStream::Read(iStream, this->m_GuildName, v2);
  30036. LABEL_6:
  30037. v3 = this->m_DestNameSize;
  30038. if ( (unsigned __int8)(v3 - 1) <= 0x1Du )
  30039. SocketInputStream::Read(iStream, this->m_DestName, v3);
  30040. break;
  30041. case 0x10:
  30042. SocketInputStream::Read(iStream, (CHAR *)&this->m_uSerial, 4u);
  30043. SocketInputStream::Read(iStream, (CHAR *)&this->m_GuildID, 2u);
  30044. SocketInputStream::Read(iStream, (CHAR *)&this->m_GuildDescSize, 1u);
  30045. v8 = this->m_GuildDescSize;
  30046. if ( (unsigned __int8)(v8 - 1) <= 0x3Bu )
  30047. SocketInputStream::Read(iStream, this->m_GuildDesc, v8);
  30048. break;
  30049. case 0x12:
  30050. SocketInputStream::Read(iStream, (CHAR *)&this->m_CityID, 2u);
  30051. break;
  30052. case 0x15:
  30053. SocketInputStream::Read(iStream, (CHAR *)&this->m_NotifyID, 4u);
  30054. break;
  30055. case 0x17:
  30056. SocketInputStream::Read(iStream, (CHAR *)&this->m_SourNameSize, 1u);
  30057. v16 = this->m_SourNameSize;
  30058. if ( (unsigned __int8)(v16 - 1) <= 0x1Cu )
  30059. SocketInputStream::Read(iStream, this->m_SourName, v16);
  30060. break;
  30061. default:
  30062. __assert__("../../Common/GameStruct.cpp", 0x9C0u, "void _GUILD_RETURN::Read(SocketInputStream&)", "FALSE");
  30063. return;
  30064. }
  30065. }
  30066.  
  30067. //----- (080667D0) --------------------------------------------------------
  30068. void __cdecl _GUILD_RETURN::Write(const _GUILD_RETURN *const this, SocketOutputStream *const oStream)
  30069. {
  30070. UCHAR v2; // dl
  30071. UCHAR v3; // dl
  30072. UCHAR v4; // dl
  30073. UCHAR v5; // dl
  30074. UCHAR v6; // dl
  30075. UCHAR v7; // dl
  30076. UCHAR v8; // dl
  30077. UCHAR v9; // dl
  30078. UCHAR v10; // dl
  30079. UCHAR v11; // dl
  30080. UCHAR v12; // dl
  30081. UCHAR v13; // dl
  30082. UCHAR v14; // dl
  30083. UCHAR v15; // dl
  30084. UCHAR v16; // dl
  30085. UCHAR v17; // dl
  30086.  
  30087. SocketOutputStream::Write(oStream, &this->m_ReturnType, 1u);
  30088. switch ( this->m_ReturnType )
  30089. {
  30090. case 0:
  30091. case 2:
  30092. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_uSerial, 4u);
  30093. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_GuildID, 2u);
  30094. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_GuildNameSize, 1u);
  30095. v17 = this->m_GuildNameSize;
  30096. if ( (unsigned __int8)(v17 - 1) <= 0x17u )
  30097. SocketOutputStream::Write(oStream, this->m_GuildName, v17);
  30098. return;
  30099. case 3:
  30100. case 4:
  30101. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_uSerial, 4u);
  30102. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_GUID, 4u);
  30103. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_GuildID, 2u);
  30104. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_PosID, 1u);
  30105. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_SourNameSize, 1u);
  30106. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_DestNameSize, 1u);
  30107. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_GuildNameSize, 1u);
  30108. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_PositionNameSize, 1u);
  30109. goto LABEL_9;
  30110. case 5:
  30111. case 6:
  30112. case 0xA:
  30113. case 0xB:
  30114. case 0xE:
  30115. case 0xF:
  30116. case 0x13:
  30117. case 0x14:
  30118. case 0x16:
  30119. case 0x19:
  30120. return;
  30121. case 7:
  30122. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_uSerial, 4u);
  30123. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_GuildID, 2u);
  30124. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_GUID, 4u);
  30125. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_GUIDChanged, 4u);
  30126. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_SourNameSize, 1u);
  30127. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_DestNameSize, 1u);
  30128. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_GuildNameSize, 1u);
  30129. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_PositionNameSize, 1u);
  30130. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_JoinTime, 4u);
  30131. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_bIsOnline, 1u);
  30132. LABEL_9:
  30133. v4 = this->m_SourNameSize;
  30134. if ( (unsigned __int8)(v4 - 1) <= 0x1Du )
  30135. SocketOutputStream::Write(oStream, this->m_SourName, v4);
  30136. v5 = this->m_DestNameSize;
  30137. if ( (unsigned __int8)(v5 - 1) <= 0x1Du )
  30138. SocketOutputStream::Write(oStream, this->m_DestName, v5);
  30139. v6 = this->m_GuildNameSize;
  30140. if ( (unsigned __int8)(v6 - 1) <= 0x17u )
  30141. SocketOutputStream::Write(oStream, this->m_GuildName, v6);
  30142. v7 = this->m_PositionNameSize;
  30143. if ( (unsigned __int8)(v7 - 1) <= 0x17u )
  30144. SocketOutputStream::Write(oStream, this->m_PositionName, v7);
  30145. return;
  30146. case 8:
  30147. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_uSerial, 4u);
  30148. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_GUID, 4u);
  30149. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_GuildNameSize, 1u);
  30150. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_SourNameSize, 1u);
  30151. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_DestNameSize, 1u);
  30152. v9 = this->m_GuildNameSize;
  30153. if ( (unsigned __int8)(v9 - 1) <= 0x17u )
  30154. SocketOutputStream::Write(oStream, this->m_GuildName, v9);
  30155. v10 = this->m_SourNameSize;
  30156. if ( (unsigned __int8)(v10 - 1) <= 0x1Du )
  30157. SocketOutputStream::Write(oStream, this->m_SourName, v10);
  30158. goto LABEL_6;
  30159. case 9:
  30160. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_uSerial, 4u);
  30161. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_GUID, 4u);
  30162. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_GUIDChanged, 4u);
  30163. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_GuildID, 2u);
  30164. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_SourNameSize, 1u);
  30165. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_DestNameSize, 1u);
  30166. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_GuildNameSize, 1u);
  30167. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_PositionNameSize, 1u);
  30168. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_ChangedPositionNameSize, 1u);
  30169. v11 = this->m_SourNameSize;
  30170. if ( (unsigned __int8)(v11 - 1) <= 0x1Du )
  30171. SocketOutputStream::Write(oStream, this->m_SourName, v11);
  30172. v12 = this->m_DestNameSize;
  30173. if ( (unsigned __int8)(v12 - 1) <= 0x1Du )
  30174. SocketOutputStream::Write(oStream, this->m_DestName, v12);
  30175. v13 = this->m_GuildNameSize;
  30176. if ( (unsigned __int8)(v13 - 1) <= 0x17u )
  30177. SocketOutputStream::Write(oStream, this->m_GuildName, v13);
  30178. v14 = this->m_PositionNameSize;
  30179. if ( (unsigned __int8)(v14 - 1) <= 0x17u )
  30180. SocketOutputStream::Write(oStream, this->m_PositionName, v14);
  30181. v15 = this->m_ChangedPositionNameSize;
  30182. if ( (unsigned __int8)(v15 - 1) <= 0x17u )
  30183. SocketOutputStream::Write(oStream, this->m_ChangedPositionName, v15);
  30184. break;
  30185. case 0xC:
  30186. case 0xD:
  30187. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_uSerial, 4u);
  30188. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_GUID, 4u);
  30189. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_GuildNameSize, 1u);
  30190. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_DestNameSize, 1u);
  30191. v2 = this->m_GuildNameSize;
  30192. if ( (unsigned __int8)(v2 - 1) <= 0x17u )
  30193. SocketOutputStream::Write(oStream, this->m_GuildName, v2);
  30194. LABEL_6:
  30195. v3 = this->m_DestNameSize;
  30196. if ( (unsigned __int8)(v3 - 1) <= 0x1Du )
  30197. SocketOutputStream::Write(oStream, this->m_DestName, v3);
  30198. break;
  30199. case 0x10:
  30200. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_uSerial, 4u);
  30201. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_GuildID, 2u);
  30202. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_GuildDescSize, 1u);
  30203. v8 = this->m_GuildDescSize;
  30204. if ( (unsigned __int8)(v8 - 1) <= 0x3Bu )
  30205. SocketOutputStream::Write(oStream, this->m_GuildDesc, v8);
  30206. break;
  30207. case 0x12:
  30208. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_CityID, 2u);
  30209. break;
  30210. case 0x15:
  30211. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_NotifyID, 4u);
  30212. break;
  30213. case 0x17:
  30214. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_SourNameSize, 1u);
  30215. v16 = this->m_SourNameSize;
  30216. if ( (unsigned __int8)(v16 - 1) <= 0x1Cu )
  30217. SocketOutputStream::Write(oStream, this->m_SourName, v16);
  30218. break;
  30219. default:
  30220. __assert__("../../Common/GameStruct.cpp", 0xAD1u, "void _GUILD_RETURN::Write(SocketOutputStream&) const", "FALSE");
  30221. return;
  30222. }
  30223. }
  30224.  
  30225. //----- (08066CEC) --------------------------------------------------------
  30226. void __cdecl MAIL::Read(MAIL *const this, SocketInputStream *const iStream)
  30227. {
  30228. BYTE v2; // al
  30229. BYTE v3; // al
  30230. WORD v4; // ax
  30231.  
  30232. SocketInputStream::Read(iStream, (CHAR *)this, 4u);
  30233. SocketInputStream::Read(iStream, (CHAR *)&this->m_SourSize, 1u);
  30234. v2 = this->m_SourSize;
  30235. if ( v2 > 0x1Du )
  30236. __assert__("../../Common/GameStruct.cpp", 0xADCu, "void MAIL::Read(SocketInputStream&)", "FALSE");
  30237. SocketInputStream::Read(iStream, this->m_szSourName, v2);
  30238. this->m_szSourName[29] = 0;
  30239. SocketInputStream::Read(iStream, (CHAR *)&this->m_nPortrait, 4u);
  30240. SocketInputStream::Read(iStream, (CHAR *)&this->m_DestSize, 1u);
  30241. v3 = this->m_DestSize;
  30242. if ( v3 > 0x1Du )
  30243. __assert__("../../Common/GameStruct.cpp", 0xAE7u, "void MAIL::Read(SocketInputStream&)", "FALSE");
  30244. SocketInputStream::Read(iStream, this->m_szDestName, v3);
  30245. this->m_szDestName[29] = 0;
  30246. SocketInputStream::Read(iStream, (CHAR *)&this->m_ContexSize, 2u);
  30247. v4 = this->m_ContexSize;
  30248. if ( v4 > 0xFFu )
  30249. __assert__("../../Common/GameStruct.cpp", 0xAF0u, "void MAIL::Read(SocketInputStream&)", "FALSE");
  30250. SocketInputStream::Read(iStream, this->m_szContex, v4);
  30251. this->m_szContex[255] = 0;
  30252. SocketInputStream::Read(iStream, (CHAR *)&this->m_uFlag, 4u);
  30253. SocketInputStream::Read(iStream, (CHAR *)&this->m_uCreateTime, 4u);
  30254. if ( this->m_uFlag == 2 )
  30255. {
  30256. SocketInputStream::Read(iStream, (CHAR *)&this->m_uParam0, 4u);
  30257. SocketInputStream::Read(iStream, (CHAR *)&this->m_uParam1, 4u);
  30258. SocketInputStream::Read(iStream, (CHAR *)&this->m_uParam2, 4u);
  30259. SocketInputStream::Read(iStream, (CHAR *)&this->m_uParam3, 4u);
  30260. }
  30261. }
  30262.  
  30263. //----- (08066EAC) --------------------------------------------------------
  30264. void __cdecl MAIL::Write(const MAIL *const this, SocketOutputStream *const oStream)
  30265. {
  30266. SocketOutputStream::Write(oStream, (const CHAR *)this, 4u);
  30267. if ( this->m_SourSize > 0x1Du )
  30268. __assert__(
  30269. "../../Common/GameStruct.cpp",
  30270. 0xB05u,
  30271. "void MAIL::Write(SocketOutputStream&) const",
  30272. "m_SourSize<MAX_CHARACTER_NAME");
  30273. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_SourSize, 1u);
  30274. SocketOutputStream::Write(oStream, this->m_szSourName, this->m_SourSize);
  30275. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_nPortrait, 4u);
  30276. if ( this->m_DestSize > 0x1Du )
  30277. __assert__(
  30278. "../../Common/GameStruct.cpp",
  30279. 0xB0Bu,
  30280. "void MAIL::Write(SocketOutputStream&) const",
  30281. "m_DestSize<MAX_CHARACTER_NAME");
  30282. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_DestSize, 1u);
  30283. SocketOutputStream::Write(oStream, this->m_szDestName, this->m_DestSize);
  30284. if ( this->m_ContexSize > 0xFFu )
  30285. __assert__(
  30286. "../../Common/GameStruct.cpp",
  30287. 0xB0Fu,
  30288. "void MAIL::Write(SocketOutputStream&) const",
  30289. "m_ContexSize<MAX_MAIL_CONTEX");
  30290. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_ContexSize, 2u);
  30291. SocketOutputStream::Write(oStream, this->m_szContex, this->m_ContexSize);
  30292. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_uFlag, 4u);
  30293. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_uCreateTime, 4u);
  30294. if ( this->m_uFlag == 2 )
  30295. {
  30296. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_uParam0, 4u);
  30297. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_uParam1, 4u);
  30298. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_uParam2, 4u);
  30299. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_uParam3, 4u);
  30300. }
  30301. }
  30302.  
  30303. //----- (08067048) --------------------------------------------------------
  30304. void __cdecl MAIL_LIST::Read(MAIL_LIST *const this, SocketInputStream *const iStream)
  30305. {
  30306. BYTE v2; // al
  30307. signed int v3; // esi
  30308. MAIL_LIST *v4; // ebx
  30309.  
  30310. SocketInputStream::Read(iStream, (CHAR *)&this->m_Count, 1u);
  30311. v2 = this->m_Count;
  30312. if ( v2 > 0x14u )
  30313. __assert__("../../Common/GameStruct.cpp", 0xB25u, "void MAIL_LIST::Read(SocketInputStream&)", "FALSE");
  30314. v3 = 0;
  30315. if ( v2 )
  30316. {
  30317. v4 = this;
  30318. do
  30319. {
  30320. MAIL::Read(v4->m_aMail, iStream);
  30321. ++v3;
  30322. v4 = (MAIL_LIST *)((char *)v4 + 356);
  30323. }
  30324. while ( this->m_Count > v3 );
  30325. }
  30326. SocketInputStream::Read(iStream, (CHAR *)&this->m_TotalLeft, 1u);
  30327. }
  30328.  
  30329. //----- (080670E4) --------------------------------------------------------
  30330. void __cdecl MAIL_LIST::Write(const MAIL_LIST *const this, SocketOutputStream *const oStream)
  30331. {
  30332. signed int v2; // esi
  30333. const MAIL_LIST *v3; // ebx
  30334.  
  30335. if ( this->m_Count > 0x14u )
  30336. __assert__(
  30337. "../../Common/GameStruct.cpp",
  30338. 0xB32u,
  30339. "void MAIL_LIST::Write(SocketOutputStream&) const",
  30340. "m_Count<=MAX_MAIL_SIZE");
  30341. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_Count, 1u);
  30342. v2 = 0;
  30343. if ( this->m_Count )
  30344. {
  30345. v3 = this;
  30346. do
  30347. {
  30348. MAIL::Write(v3->m_aMail, oStream);
  30349. ++v2;
  30350. v3 = (const MAIL_LIST *)((char *)v3 + 356);
  30351. }
  30352. while ( this->m_Count > v2 );
  30353. }
  30354. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_TotalLeft, 1u);
  30355. }
  30356.  
  30357. //----- (08067180) --------------------------------------------------------
  30358. UINT __cdecl BATCH_MAIL::GetSize(const BATCH_MAIL *const this)
  30359. {
  30360. int v1; // ecx
  30361. BYTE v2; // al
  30362. int v3; // esi
  30363. int v4; // ebx
  30364. BATCH_MAIL::$D39E05D92A8EEB2D2D67DDBC929F87CC *v5; // edx
  30365. int v6; // eax
  30366.  
  30367. v1 = this->m_SourSize + 10;
  30368. v2 = this->m_ReceiverCount;
  30369. if ( v2 )
  30370. {
  30371. v3 = v2;
  30372. v4 = 0;
  30373. if ( (signed int)v2 > 0 )
  30374. {
  30375. v5 = this->m_Receivers;
  30376. do
  30377. {
  30378. ++v4;
  30379. v6 = v5->m_DestSize;
  30380. ++v5;
  30381. v1 += v6 + 1;
  30382. }
  30383. while ( v3 > v4 );
  30384. }
  30385. }
  30386. return this->m_ContentSize + v1 + 7;
  30387. }
  30388.  
  30389. //----- (080671C8) --------------------------------------------------------
  30390. void __cdecl BATCH_MAIL::Read(BATCH_MAIL *const this, SocketInputStream *const iStream)
  30391. {
  30392. BYTE v2; // dl
  30393. BYTE v3; // dl
  30394. signed int v4; // esi
  30395. BATCH_MAIL *v5; // ebx
  30396. BYTE v6; // dl
  30397. WORD v7; // dx
  30398.  
  30399. SocketInputStream::Read(iStream, (CHAR *)this, 4u);
  30400. SocketInputStream::Read(iStream, (CHAR *)&this->m_SourSize, 1u);
  30401. SocketInputStream::Read(iStream, (CHAR *)&this->m_nPortrait, 4u);
  30402. v2 = this->m_SourSize;
  30403. if ( (unsigned __int8)(v2 - 1) <= 0x1Cu )
  30404. SocketInputStream::Read(iStream, this->m_szSourName, v2);
  30405. else
  30406. this->m_SourSize = 0;
  30407. SocketInputStream::Read(iStream, (CHAR *)&this->m_ReceiverCount, 1u);
  30408. v3 = this->m_ReceiverCount;
  30409. if ( (unsigned __int8)(v3 - 1) > 0x62u )
  30410. {
  30411. this->m_ReceiverCount = 0;
  30412. }
  30413. else
  30414. {
  30415. v4 = 0;
  30416. if ( v3 )
  30417. {
  30418. v5 = this;
  30419. do
  30420. {
  30421. SocketInputStream::Read(iStream, (CHAR *)v5->m_Receivers, 1u);
  30422. v6 = v5->m_Receivers[0].m_DestSize;
  30423. if ( (unsigned __int8)(v6 - 1) > 0x1Cu )
  30424. v5->m_Receivers[0].m_DestSize = 0;
  30425. else
  30426. SocketInputStream::Read(iStream, v5->m_Receivers[0].m_szDestName, v6);
  30427. ++v4;
  30428. v5 = (BATCH_MAIL *)((char *)v5 + 31);
  30429. }
  30430. while ( this->m_ReceiverCount > v4 );
  30431. }
  30432. }
  30433. SocketInputStream::Read(iStream, (CHAR *)&this->m_ContentSize, 2u);
  30434. v7 = this->m_ContentSize;
  30435. if ( (unsigned __int16)(v7 - 1) <= 0xFEu )
  30436. SocketInputStream::Read(iStream, this->m_szContent, v7);
  30437. else
  30438. this->m_ContentSize = 0;
  30439. SocketInputStream::Read(iStream, (CHAR *)&this->m_uFlag, 1u);
  30440. SocketInputStream::Read(iStream, (CHAR *)&this->m_uCreateTime, 4u);
  30441. }
  30442.  
  30443. //----- (08067318) --------------------------------------------------------
  30444. void __cdecl BATCH_MAIL::Write(const BATCH_MAIL *const this, SocketOutputStream *const oStream)
  30445. {
  30446. BYTE v2; // dl
  30447. BYTE v3; // dl
  30448. signed int v4; // esi
  30449. const BATCH_MAIL *v5; // ebx
  30450. BYTE v6; // dl
  30451. WORD v7; // dx
  30452.  
  30453. SocketOutputStream::Write(oStream, (const CHAR *)this, 4u);
  30454. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_SourSize, 1u);
  30455. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_nPortrait, 4u);
  30456. v2 = this->m_SourSize;
  30457. if ( (unsigned __int8)(v2 - 1) <= 0x1Cu )
  30458. SocketOutputStream::Write(oStream, this->m_szSourName, v2);
  30459. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_ReceiverCount, 1u);
  30460. v3 = this->m_ReceiverCount;
  30461. if ( (unsigned __int8)(v3 - 1) <= 0x62u )
  30462. {
  30463. v4 = 0;
  30464. if ( v3 )
  30465. {
  30466. v5 = this;
  30467. do
  30468. {
  30469. while ( 1 )
  30470. {
  30471. SocketOutputStream::Write(oStream, (const CHAR *)v5->m_Receivers, 1u);
  30472. v6 = v5->m_Receivers[0].m_DestSize;
  30473. if ( (unsigned __int8)(v6 - 1) <= 0x1Cu )
  30474. break;
  30475. ++v4;
  30476. v5 = (const BATCH_MAIL *)((char *)v5 + 31);
  30477. if ( this->m_ReceiverCount <= v4 )
  30478. goto LABEL_9;
  30479. }
  30480. SocketOutputStream::Write(oStream, v5->m_Receivers[0].m_szDestName, v6);
  30481. ++v4;
  30482. v5 = (const BATCH_MAIL *)((char *)v5 + 31);
  30483. }
  30484. while ( this->m_ReceiverCount > v4 );
  30485. }
  30486. }
  30487. LABEL_9:
  30488. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_ContentSize, 2u);
  30489. v7 = this->m_ContentSize;
  30490. if ( (unsigned __int16)(v7 - 1) <= 0xFEu )
  30491. SocketOutputStream::Write(oStream, this->m_szContent, v7);
  30492. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_uFlag, 1u);
  30493. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_uCreateTime, 4u);
  30494. }
  30495.  
  30496. //----- (0806745C) --------------------------------------------------------
  30497. void DB_QUERY::Parse(DB_QUERY *const this, const CHAR *pTemplate, ...)
  30498. {
  30499. int v2; // eax
  30500. va_list __varargs; // [esp+18h] [ebp+10h]
  30501.  
  30502. va_start(__varargs, pTemplate);
  30503. v2 = vsnprintf((char *)this, 0x1000u, pTemplate, __varargs);
  30504. if ( v2 == -1 || v2 > 4095 )
  30505. __assert__("../../Common/GameStruct.cpp", 0xBBFu, "void DB_QUERY::Parse(const CHAR*, ...)", "FALSE");
  30506. }
  30507.  
  30508. //----- (080674A4) --------------------------------------------------------
  30509. void LONG_DB_QUERY::Parse(LONG_DB_QUERY *const this, const CHAR *pTemplate, ...)
  30510. {
  30511. int v2; // eax
  30512. va_list __varargs; // [esp+18h] [ebp+10h]
  30513.  
  30514. va_start(__varargs, pTemplate);
  30515. v2 = vsnprintf((char *)this, 0x32000u, pTemplate, __varargs);
  30516. if ( v2 == -1 || v2 > 204799 )
  30517. __assert__("../../Common/GameStruct.cpp", 0xBCDu, "void LONG_DB_QUERY::Parse(const CHAR*, ...)", "FALSE");
  30518. }
  30519.  
  30520. //----- (080674EC) --------------------------------------------------------
  30521. int __cdecl TEAM_LIST_ENTRY::GetSize(int a2)
  30522. {
  30523. return *(unsigned __int8 *)(a2 + 12) + 19;
  30524. }
  30525.  
  30526. //----- (080674FC) --------------------------------------------------------
  30527. void __cdecl TEAM_LIST_ENTRY::Read(TEAM_LIST_ENTRY *const this, SocketInputStream *const iStream)
  30528. {
  30529. UCHAR v2; // al
  30530.  
  30531. SocketInputStream::Read(iStream, (CHAR *)this, 4u);
  30532. SocketInputStream::Read(iStream, (CHAR *)&this->m_SceneID, 2u);
  30533. SocketInputStream::Read(iStream, (CHAR *)&this->m_SceneResID, 2u);
  30534. SocketInputStream::Read(iStream, (CHAR *)&this->m_ExtraID, 4u);
  30535. SocketInputStream::Read(iStream, (CHAR *)&this->m_NameSize, 1u);
  30536. v2 = this->m_NameSize;
  30537. if ( v2 )
  30538. SocketInputStream::Read(iStream, this->m_Name, v2);
  30539. SocketInputStream::Read(iStream, (CHAR *)&this->m_nPortrait, 4u);
  30540. SocketInputStream::Read(iStream, (CHAR *)&this->m_uDataID, 2u);
  30541. }
  30542.  
  30543. //----- (080675B4) --------------------------------------------------------
  30544. void __cdecl TEAM_LIST_ENTRY::Write(const TEAM_LIST_ENTRY *const this, SocketOutputStream *const oStream)
  30545. {
  30546. UCHAR v2; // al
  30547.  
  30548. SocketOutputStream::Write(oStream, (const CHAR *)this, 4u);
  30549. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_SceneID, 2u);
  30550. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_SceneResID, 2u);
  30551. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_ExtraID, 4u);
  30552. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_NameSize, 1u);
  30553. v2 = this->m_NameSize;
  30554. if ( v2 )
  30555. SocketOutputStream::Write(oStream, this->m_Name, v2);
  30556. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_nPortrait, 4u);
  30557. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_uDataID, 2u);
  30558. }
  30559.  
  30560. //----- (0806766C) --------------------------------------------------------
  30561. void __cdecl _BUY_DATA::GetSubString(_BUY_DATA *const this, INT nIdx, CHAR *pBuf, INT nBufLength)
  30562. {
  30563. INT v4; // ebx
  30564. char *i; // eax
  30565. CHAR buf[21]; // [esp+0h] [ebp-38h]
  30566.  
  30567. if ( pBuf && nIdx > 0 && nBufLength <= 20 )
  30568. {
  30569. strncpy(buf, this->m_BuyString, 0x14u);
  30570. buf[20] = 0;
  30571. v4 = 1;
  30572. for ( i = strtok(buf, " "); v4 < nIdx; ++v4 )
  30573. i = strtok(0, " ");
  30574. if ( i )
  30575. strncpy(pBuf, i, nBufLength);
  30576. }
  30577. }
  30578.  
  30579. //----- (080676F4) --------------------------------------------------------
  30580. BYTE __cdecl _BUY_DATA::GetPrizeType(_BUY_DATA *const this)
  30581. {
  30582. bool v1; // cf
  30583. bool v2; // zf
  30584. _BUY_DATA *v3; // edi
  30585. signed int v4; // ecx
  30586. const char *v5; // esi
  30587. bool v6; // dl
  30588. bool v7; // al
  30589. bool v8; // cf
  30590. bool v9; // zf
  30591. signed int v10; // ecx
  30592. const char *v11; // esi
  30593. _BUY_DATA *v12; // edi
  30594. bool v13; // dl
  30595. bool v14; // al
  30596. bool v15; // cf
  30597. bool v16; // zf
  30598. const char *v17; // esi
  30599. _BUY_DATA *v18; // edi
  30600. bool v19; // dl
  30601. bool v20; // al
  30602. bool v21; // cf
  30603. bool v22; // zf
  30604. const char *v23; // esi
  30605. _BUY_DATA *v24; // edi
  30606. bool v25; // dl
  30607. bool v26; // al
  30608. bool v27; // cf
  30609. bool v28; // zf
  30610. const char *v29; // esi
  30611. _BUY_DATA *v30; // edi
  30612. bool v31; // cf
  30613. bool v32; // zf
  30614. const char *v33; // esi
  30615. signed int v34; // ecx
  30616. CHAR *v35; // edi
  30617. char v36; // dl
  30618. bool v37; // cf
  30619. bool v38; // zf
  30620. signed int v39; // ecx
  30621. const char *v40; // esi
  30622. CHAR *v41; // edi
  30623. bool v42; // dl
  30624. bool v43; // al
  30625. bool v45; // cf
  30626. bool v46; // zf
  30627. const char *v47; // esi
  30628. signed int v48; // ecx
  30629. CHAR *v49; // edi
  30630. CHAR sub[21]; // [esp+10h] [ebp-38h]
  30631.  
  30632. v1 = 0;
  30633. v2 = 0;
  30634. v3 = this;
  30635. v4 = 15;
  30636. v5 = "setflag 1500 1";
  30637. do
  30638. {
  30639. if ( !v4 )
  30640. break;
  30641. v1 = (const unsigned __int8)*v5 < v3->m_BuyString[0];
  30642. v2 = *v5++ == v3->m_BuyString[0];
  30643. v3 = (_BUY_DATA *)((char *)v3 + 1);
  30644. --v4;
  30645. }
  30646. while ( v2 );
  30647. v6 = !v1 && !v2;
  30648. v7 = v1;
  30649. v8 = v6 < (unsigned __int8)v1;
  30650. v9 = v6 == v7;
  30651. v10 = 1;
  30652. if ( v6 != v7 )
  30653. {
  30654. LOBYTE(v10) = 15;
  30655. v11 = "setflag 1600 1";
  30656. v12 = this;
  30657. do
  30658. {
  30659. if ( !v10 )
  30660. break;
  30661. v8 = (const unsigned __int8)*v11 < v12->m_BuyString[0];
  30662. v9 = *v11++ == v12->m_BuyString[0];
  30663. v12 = (_BUY_DATA *)((char *)v12 + 1);
  30664. --v10;
  30665. }
  30666. while ( v9 );
  30667. v13 = !v8 && !v9;
  30668. v14 = v8;
  30669. v15 = v13 < (unsigned __int8)v8;
  30670. v16 = v13 == v14;
  30671. v10 = 3;
  30672. if ( v13 != v14 )
  30673. {
  30674. LOBYTE(v10) = 15;
  30675. v17 = "setflag 1601 1";
  30676. v18 = this;
  30677. do
  30678. {
  30679. if ( !v10 )
  30680. break;
  30681. v15 = (const unsigned __int8)*v17 < v18->m_BuyString[0];
  30682. v16 = *v17++ == v18->m_BuyString[0];
  30683. v18 = (_BUY_DATA *)((char *)v18 + 1);
  30684. --v10;
  30685. }
  30686. while ( v16 );
  30687. v19 = !v15 && !v16;
  30688. v20 = v15;
  30689. v21 = v19 < (unsigned __int8)v15;
  30690. v22 = v19 == v20;
  30691. v10 = 8;
  30692. if ( v19 != v20 )
  30693. {
  30694. LOBYTE(v10) = 15;
  30695. v23 = "setflag 1800 1";
  30696. v24 = this;
  30697. do
  30698. {
  30699. if ( !v10 )
  30700. break;
  30701. v21 = (const unsigned __int8)*v23 < v24->m_BuyString[0];
  30702. v22 = *v23++ == v24->m_BuyString[0];
  30703. v24 = (_BUY_DATA *)((char *)v24 + 1);
  30704. --v10;
  30705. }
  30706. while ( v22 );
  30707. v25 = !v21 && !v22;
  30708. v26 = v21;
  30709. v27 = v25 < (unsigned __int8)v21;
  30710. v28 = v25 == v26;
  30711. v10 = 6;
  30712. if ( v25 != v26 )
  30713. {
  30714. LOBYTE(v10) = 15;
  30715. v29 = "setflag 1801 1";
  30716. v30 = this;
  30717. do
  30718. {
  30719. if ( !v10 )
  30720. break;
  30721. v27 = (const unsigned __int8)*v29 < v30->m_BuyString[0];
  30722. v28 = *v29++ == v30->m_BuyString[0];
  30723. v30 = (_BUY_DATA *)((char *)v30 + 1);
  30724. --v10;
  30725. }
  30726. while ( v28 );
  30727. v10 = 7;
  30728. if ( (!v27 && !v28) != v27 )
  30729. {
  30730. LOBYTE(v10) = 5;
  30731. memset(sub, 0, 4 * v10);
  30732. sub[4 * v10] = 0;
  30733. _BUY_DATA::GetSubString(this, 1, sub, 20);
  30734. v33 = "setflag";
  30735. v34 = 8;
  30736. v35 = sub;
  30737. do
  30738. {
  30739. if ( !v34 )
  30740. break;
  30741. v31 = *v33 < (unsigned __int8)*v35;
  30742. v32 = *v33++ == *v35++;
  30743. --v34;
  30744. }
  30745. while ( v32 );
  30746. v36 = (!v31 && !v32) - v31;
  30747. v37 = 0;
  30748. v38 = v36 == 0;
  30749. if ( v36 )
  30750. {
  30751. v39 = 5;
  30752. v40 = "item";
  30753. v41 = sub;
  30754. do
  30755. {
  30756. if ( !v39 )
  30757. break;
  30758. v37 = *v40 < (unsigned __int8)*v41;
  30759. v38 = *v40++ == *v41++;
  30760. --v39;
  30761. }
  30762. while ( v38 );
  30763. v42 = !v37 && !v38;
  30764. v43 = v37;
  30765. LOBYTE(v10) = 5;
  30766. }
  30767. else
  30768. {
  30769. memset(sub, 0, 0x14u);
  30770. sub[20] = 0;
  30771. _BUY_DATA::GetSubString(this, 2, sub, 20);
  30772. v47 = "1700";
  30773. v48 = 5;
  30774. v49 = sub;
  30775. do
  30776. {
  30777. if ( !v48 )
  30778. break;
  30779. v45 = *v47 < (unsigned __int8)*v49;
  30780. v46 = *v47++ == *v49++;
  30781. --v48;
  30782. }
  30783. while ( v46 );
  30784. v42 = !v45 && !v46;
  30785. v43 = v45;
  30786. LOBYTE(v10) = 4;
  30787. }
  30788. if ( v42 != v43 )
  30789. LOBYTE(v10) = 0;
  30790. }
  30791. }
  30792. }
  30793. }
  30794. }
  30795. return v10;
  30796. }
  30797.  
  30798. //----- (08067838) --------------------------------------------------------
  30799. int __cdecl _BUY_DATA::GetGoodsType(int a2)
  30800. {
  30801. return 2 * (*(_DWORD *)(a2 + 24) == 999);
  30802. }
  30803.  
  30804. //----- (08067850) --------------------------------------------------------
  30805. UINT __cdecl _BUY_DATA::GetPrizeSerial(_BUY_DATA *const this)
  30806. {
  30807. BYTE v1; // al
  30808. int v2; // edx
  30809. BYTE v3; // al
  30810. BYTE v4; // al
  30811. CHAR sub[21]; // [esp+Ch] [ebp-28h]
  30812.  
  30813. v1 = _BUY_DATA::GetPrizeType(this);
  30814. v2 = 0;
  30815. if ( v1 != 1 )
  30816. {
  30817. v3 = _BUY_DATA::GetPrizeType(this);
  30818. v2 = 0;
  30819. if ( v3 != 2 )
  30820. {
  30821. if ( _BUY_DATA::GetPrizeType(this) == 4 )
  30822. {
  30823. memset(sub, 0, 0x14u);
  30824. sub[20] = 0;
  30825. _BUY_DATA::GetSubString(this, 3, sub, 20);
  30826. }
  30827. else
  30828. {
  30829. v4 = _BUY_DATA::GetPrizeType(this);
  30830. v2 = 0;
  30831. if ( v4 != 5 )
  30832. return v2;
  30833. memset(sub, 0, 0x14u);
  30834. sub[20] = 0;
  30835. _BUY_DATA::GetSubString(this, 2, sub, 20);
  30836. }
  30837. v2 = 0;
  30838. if ( sub[0] )
  30839. v2 = __strtol_internal(sub, 0, 10, 0);
  30840. }
  30841. }
  30842. return v2;
  30843. }
  30844.  
  30845. //----- (080678FC) --------------------------------------------------------
  30846. int __cdecl _BUY_DATA::GetPrizeNum(int a2)
  30847. {
  30848. return *(unsigned __int8 *)(a2 + 28);
  30849. }
  30850.  
  30851. //----- (08067908) --------------------------------------------------------
  30852. int __cdecl _BUY_DATA::GetGoodsNum(int a2)
  30853. {
  30854. return *(unsigned __int16 *)(a2 + 28);
  30855. }
  30856.  
  30857. //----- (08067914) --------------------------------------------------------
  30858. UINT __cdecl _BUY_DATA::GetCostPoint(int a2)
  30859. {
  30860. return *(_DWORD *)(a2 + 20);
  30861. }
  30862.  
  30863. //----- (08067920) --------------------------------------------------------
  30864. void __cdecl DisclosureMsg::DisclosureInfo::Read(DisclosureMsg::DisclosureInfo *const this, SocketInputStream *const iStream)
  30865. {
  30866. WORD v2; // ax
  30867.  
  30868. SocketInputStream::Read(iStream, (CHAR *)this, 1u);
  30869. if ( this->m_TargetSize > 0x1Du )
  30870. __assert__(
  30871. "../../Common/GameStruct.cpp",
  30872. 0xC8Fu,
  30873. "void DisclosureMsg::DisclosureInfo::Read(SocketInputStream&)",
  30874. "FALSE");
  30875. SocketInputStream::Read(iStream, this->m_szTargetName, this->m_TargetSize);
  30876. this->m_szTargetName[29] = 0;
  30877. SocketInputStream::Read(iStream, (CHAR *)&this->m_ContexSize, 2u);
  30878. v2 = this->m_ContexSize;
  30879. if ( v2 > 0xFFu )
  30880. __assert__(
  30881. "../../Common/GameStruct.cpp",
  30882. 0xC98u,
  30883. "void DisclosureMsg::DisclosureInfo::Read(SocketInputStream&)",
  30884. "FALSE");
  30885. SocketInputStream::Read(iStream, this->m_szContex, v2);
  30886. this->m_szContex[255] = 0;
  30887. SocketInputStream::Read(iStream, (CHAR *)&this->m_uCreateTime, 4u);
  30888. }
  30889.  
  30890. //----- (080679F0) --------------------------------------------------------
  30891. void __cdecl DisclosureMsg::Read(DisclosureMsg *const this, SocketInputStream *const iStream)
  30892. {
  30893. BYTE v2; // al
  30894. WORD v3; // ax
  30895.  
  30896. SocketInputStream::Read(iStream, (CHAR *)this, 4u);
  30897. SocketInputStream::Read(iStream, (CHAR *)&this->m_SourSize, 1u);
  30898. v2 = this->m_SourSize;
  30899. if ( v2 > 0x1Du )
  30900. __assert__("../../Common/GameStruct.cpp", 0xC67u, "void DisclosureMsg::Read(SocketInputStream&)", "FALSE");
  30901. SocketInputStream::Read(iStream, this->m_szSourName, v2);
  30902. this->m_szSourName[29] = 0;
  30903. SocketInputStream::Read(iStream, (CHAR *)&this->m_ContexSize, 2u);
  30904. v3 = this->m_ContexSize;
  30905. if ( v3 > 0xFFu )
  30906. __assert__("../../Common/GameStruct.cpp", 0xC70u, "void DisclosureMsg::Read(SocketInputStream&)", "FALSE");
  30907. SocketInputStream::Read(iStream, this->m_szContex, v3);
  30908. this->m_szContex[255] = 0;
  30909. SocketInputStream::Read(iStream, (CHAR *)&this->m_nFlag, 4u);
  30910. SocketInputStream::Read(iStream, (CHAR *)&this->m_uCreateTime, 4u);
  30911. DisclosureMsg::DisclosureInfo::Read(&this->m_info, iStream);
  30912. }
  30913.  
  30914. //----- (08067AFC) --------------------------------------------------------
  30915. void __cdecl DisclosureMsg::DisclosureInfo::Write(const DisclosureMsg::DisclosureInfo *const this, SocketOutputStream *const oStream)
  30916. {
  30917. if ( this->m_TargetSize > 0x1Du )
  30918. __assert__(
  30919. "../../Common/GameStruct.cpp",
  30920. 0xCA2u,
  30921. "void DisclosureMsg::DisclosureInfo::Write(SocketOutputStream&) const",
  30922. "m_TargetSize<MAX_CHARACTER_NAME");
  30923. SocketOutputStream::Write(oStream, (const CHAR *)this, 1u);
  30924. SocketOutputStream::Write(oStream, this->m_szTargetName, this->m_TargetSize);
  30925. if ( this->m_ContexSize > 0xFFu )
  30926. __assert__(
  30927. "../../Common/GameStruct.cpp",
  30928. 0xCA6u,
  30929. "void DisclosureMsg::DisclosureInfo::Write(SocketOutputStream&) const",
  30930. "m_ContexSize<MAX_MAIL_CONTEX");
  30931. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_ContexSize, 2u);
  30932. SocketOutputStream::Write(oStream, this->m_szContex, this->m_ContexSize);
  30933. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_uCreateTime, 4u);
  30934. }
  30935.  
  30936. //----- (08067BAC) --------------------------------------------------------
  30937. void __cdecl DisclosureMsg::Write(const DisclosureMsg *const this, SocketOutputStream *const oStream)
  30938. {
  30939. SocketOutputStream::Write(oStream, (const CHAR *)this, 4u);
  30940. if ( this->m_SourSize > 0x1Du )
  30941. __assert__(
  30942. "../../Common/GameStruct.cpp",
  30943. 0xC7Du,
  30944. "void DisclosureMsg::Write(SocketOutputStream&) const",
  30945. "m_SourSize<MAX_CHARACTER_NAME");
  30946. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_SourSize, 1u);
  30947. SocketOutputStream::Write(oStream, this->m_szSourName, this->m_SourSize);
  30948. if ( this->m_ContexSize > 0xFFu )
  30949. __assert__(
  30950. "../../Common/GameStruct.cpp",
  30951. 0xC81u,
  30952. "void DisclosureMsg::Write(SocketOutputStream&) const",
  30953. "m_ContexSize<MAX_MAIL_CONTEX");
  30954. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_ContexSize, 2u);
  30955. SocketOutputStream::Write(oStream, this->m_szContex, this->m_ContexSize);
  30956. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_nFlag, 4u);
  30957. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_uCreateTime, 4u);
  30958. DisclosureMsg::DisclosureInfo::Write(&this->m_info, oStream);
  30959. }
  30960.  
  30961. //----- (08067CA4) --------------------------------------------------------
  30962. int __cdecl DisclosureMsg::DisclosureInfo::GetSize(unsigned __int8 *a2)
  30963. {
  30964. return *a2 + *((unsigned __int16 *)a2 + 16) + 7;
  30965. }
  30966.  
  30967. //----- (08067CB8) --------------------------------------------------------
  30968. int __cdecl DisclosureMsg::GetSize(int a2)
  30969. {
  30970. int v2; // ebx
  30971.  
  30972. v2 = *(unsigned __int8 *)(a2 + 4) + *(unsigned __int16 *)(a2 + 36);
  30973. return v2 + DisclosureMsg::DisclosureInfo::GetSize((unsigned __int8 *)(a2 + 304)) + 15;
  30974. }
  30975.  
  30976. //----- (08067CE0) --------------------------------------------------------
  30977. void __cdecl FindFriendAD_VoteInfo_Packets::Read(FindFriendAD_VoteInfo_Packets *const this, SocketInputStream *const iStream)
  30978. {
  30979. SocketInputStream::Read(iStream, (CHAR *)&this->m_CharNameSize, 4u);
  30980. if ( this->m_CharNameSize > 0x1D )
  30981. __assert__(
  30982. "../../Common/GameStruct.cpp",
  30983. 0xCC6u,
  30984. "virtual void FindFriendAD_VoteInfo_Packets::Read(SocketInputStream&)",
  30985. "m_CharNameSize < MAX_CHARACTER_NAME");
  30986. SocketInputStream::Read(iStream, this->m_VoteCharName, this->m_CharNameSize);
  30987. SocketInputStream::Read(iStream, (CHAR *)&this->m_OnlineFlag, 1u);
  30988. }
  30989.  
  30990. //----- (08067D68) --------------------------------------------------------
  30991. void __cdecl FindFriendAD_VoteInfo_Packets::Write(const FindFriendAD_VoteInfo_Packets *const this, SocketOutputStream *const oStream)
  30992. {
  30993. if ( this->m_CharNameSize > 0x1D )
  30994. __assert__(
  30995. "../../Common/GameStruct.cpp",
  30996. 0xCCDu,
  30997. "virtual void FindFriendAD_VoteInfo_Packets::Write(SocketOutputStream&) const",
  30998. "m_CharNameSize < MAX_CHARACTER_NAME");
  30999. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_CharNameSize, 4u);
  31000. SocketOutputStream::Write(oStream, this->m_VoteCharName, this->m_CharNameSize);
  31001. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_OnlineFlag, 1u);
  31002. }
  31003.  
  31004. //----- (08067DCC) --------------------------------------------------------
  31005. void __cdecl FindFriendAD_SimpleInfo::Read(FindFriendAD_SimpleInfo *const this, SocketInputStream *const iStream)
  31006. {
  31007. SocketInputStream::Read(iStream, (CHAR *)&this->m_CharGuid, 4u);
  31008. SocketInputStream::Read(iStream, (CHAR *)&this->type, 4u);
  31009. SocketInputStream::Read(iStream, (CHAR *)&this->m_HotLevel, 4u);
  31010. SocketInputStream::Read(iStream, (CHAR *)&this->m_CharSex, 1u);
  31011. SocketInputStream::Read(iStream, (CHAR *)&this->m_CharLevel, 4u);
  31012. SocketInputStream::Read(iStream, (CHAR *)&this->m_NameSize, 4u);
  31013. if ( this->m_NameSize > 0x1D )
  31014. __assert__(
  31015. "../../Common/GameStruct.cpp",
  31016. 0xCDDu,
  31017. "virtual void FindFriendAD_SimpleInfo::Read(SocketInputStream&)",
  31018. "m_NameSize < MAX_CHARACTER_NAME");
  31019. SocketInputStream::Read(iStream, this->m_CharName, this->m_NameSize);
  31020. this->m_CharName[this->m_NameSize] = 0;
  31021. }
  31022.  
  31023. //----- (08067E94) --------------------------------------------------------
  31024. void __cdecl FindFriendAD_SimpleInfo::Write(const FindFriendAD_SimpleInfo *const this, SocketOutputStream *const oStream)
  31025. {
  31026. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_CharGuid, 4u);
  31027. SocketOutputStream::Write(oStream, (const CHAR *)&this->type, 4u);
  31028. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_HotLevel, 4u);
  31029. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_CharSex, 1u);
  31030. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_CharLevel, 4u);
  31031. if ( this->m_NameSize > 0x1D )
  31032. __assert__(
  31033. "../../Common/GameStruct.cpp",
  31034. 0xCEAu,
  31035. "virtual void FindFriendAD_SimpleInfo::Write(SocketOutputStream&) const",
  31036. "m_NameSize < MAX_CHARACTER_NAME");
  31037. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_NameSize, 4u);
  31038. SocketOutputStream::Write(oStream, this->m_CharName, this->m_NameSize);
  31039. }
  31040.  
  31041. //----- (08067F58) --------------------------------------------------------
  31042. int __cdecl FindFriendAD_DetailInfo::GetPacketSize(int a2)
  31043. {
  31044. return *(_DWORD *)(a2 + 56) + *(_DWORD *)(a2 + 12) + 22 + 41;
  31045. }
  31046.  
  31047. //----- (08067F6C) --------------------------------------------------------
  31048. void __cdecl FindFriendAD_DetailInfo::Read(FindFriendAD_DetailInfo *const this, SocketInputStream *const iStream)
  31049. {
  31050. SocketInputStream::Read(iStream, (CHAR *)&this->m_CharGuid, 4u);
  31051. SocketInputStream::Read(iStream, (CHAR *)&this->m_ADType, 4u);
  31052. SocketInputStream::Read(iStream, (CHAR *)&this->m_NameSize, 4u);
  31053. if ( this->m_NameSize > 0x1D )
  31054. __assert__(
  31055. "../../Common/GameStruct.cpp",
  31056. 0xD28u,
  31057. "virtual void FindFriendAD_DetailInfo::Read(SocketInputStream&)",
  31058. "m_NameSize < MAX_CHARACTER_NAME");
  31059. SocketInputStream::Read(iStream, this->m_szCharName, this->m_NameSize);
  31060. this->m_szCharName[this->m_NameSize] = 0;
  31061. SocketInputStream::Read(iStream, (CHAR *)&this->m_CharLevel, 4u);
  31062. SocketInputStream::Read(iStream, (CHAR *)&this->m_CharSex, 1u);
  31063. SocketInputStream::Read(iStream, (CHAR *)&this->m_CharMenpai, 1u);
  31064. SocketInputStream::Read(iStream, (CHAR *)&this->m_GuildNameSize, 4u);
  31065. if ( this->m_GuildNameSize > 0x18 )
  31066. __assert__(
  31067. "../../Common/GameStruct.cpp",
  31068. 0xD2Fu,
  31069. "virtual void FindFriendAD_DetailInfo::Read(SocketInputStream&)",
  31070. "m_GuildNameSize <= (MAX_GUILD_NAME_SIZE)");
  31071. SocketInputStream::Read(iStream, this->m_CharGuild, this->m_GuildNameSize);
  31072. this->m_CharGuild[this->m_GuildNameSize] = 0;
  31073. SocketInputStream::Read(iStream, (CHAR *)&this->m_MarriedFlag, 1u);
  31074. SocketInputStream::Read(iStream, (CHAR *)&this->m_SendADTime, 4u);
  31075. SocketInputStream::Read(iStream, (CHAR *)&this->m_LeaveDay, 4u);
  31076. SocketInputStream::Read(iStream, (CHAR *)&this->m_NeedMenpai, 4u);
  31077. SocketInputStream::Read(iStream, (CHAR *)&this->m_NeedLevel, 4u);
  31078. SocketInputStream::Read(iStream, (CHAR *)&this->m_NeedSex, 4u);
  31079. SocketInputStream::Read(iStream, (CHAR *)&this->m_NeedDetail, 4u);
  31080. SocketInputStream::Read(iStream, (CHAR *)&this->m_VoteType1, 4u);
  31081. SocketInputStream::Read(iStream, (CHAR *)&this->m_VoteType2, 4u);
  31082. SocketInputStream::Read(iStream, (CHAR *)&this->m_VoteType3, 4u);
  31083. SocketInputStream::Read(iStream, (CHAR *)&this->m_VoteType4, 4u);
  31084. }
  31085.  
  31086. //----- (08068118) --------------------------------------------------------
  31087. void __cdecl FindFriendAD_DetailInfo::Write(const FindFriendAD_DetailInfo *const this, SocketOutputStream *const oStream)
  31088. {
  31089. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_CharGuid, 4u);
  31090. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_ADType, 4u);
  31091. if ( this->m_NameSize > 0x1D )
  31092. __assert__(
  31093. "../../Common/GameStruct.cpp",
  31094. 0xD44u,
  31095. "virtual void FindFriendAD_DetailInfo::Write(SocketOutputStream&) const",
  31096. "m_NameSize < MAX_CHARACTER_NAME");
  31097. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_NameSize, 4u);
  31098. SocketOutputStream::Write(oStream, this->m_szCharName, this->m_NameSize);
  31099. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_CharLevel, 4u);
  31100. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_CharSex, 1u);
  31101. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_CharMenpai, 1u);
  31102. if ( this->m_GuildNameSize > 0x18 )
  31103. __assert__(
  31104. "../../Common/GameStruct.cpp",
  31105. 0xD4Bu,
  31106. "virtual void FindFriendAD_DetailInfo::Write(SocketOutputStream&) const",
  31107. "m_GuildNameSize <= (MAX_GUILD_NAME_SIZE)");
  31108. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_GuildNameSize, 4u);
  31109. SocketOutputStream::Write(oStream, this->m_CharGuild, this->m_GuildNameSize);
  31110. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_MarriedFlag, 1u);
  31111. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_SendADTime, 4u);
  31112. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_LeaveDay, 4u);
  31113. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_NeedMenpai, 4u);
  31114. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_NeedLevel, 4u);
  31115. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_NeedSex, 4u);
  31116. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_NeedDetail, 4u);
  31117. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_VoteType1, 4u);
  31118. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_VoteType2, 4u);
  31119. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_VoteType3, 4u);
  31120. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_VoteType4, 4u);
  31121. }
  31122.  
  31123. //----- (080682B4) --------------------------------------------------------
  31124. void __cdecl _tcf_0_13(void *a1)
  31125. {
  31126. std::ios_base::Init::~Init(&std::__ioinit);
  31127. }
  31128.  
  31129. //----- (080682C4) --------------------------------------------------------
  31130. void `global constructor keyed to'GetSerialType()
  31131. {
  31132. std::ios_base::Init::Init(&std::__ioinit);
  31133. __cxa_atexit(_tcf_0_13, 0, &_dso_handle);
  31134. memset(&g_WorldGlobalData, 0, 0x1000u);
  31135. }
  31136. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  31137.  
  31138. //----- (08068304) --------------------------------------------------------
  31139. UINT __cdecl GUILD_CGW_ASKLIST::GetPacketSize(const GUILD_CGW_ASKLIST *const this)
  31140. {
  31141. return 3;
  31142. }
  31143.  
  31144. //----- (08068310) --------------------------------------------------------
  31145. UINT __cdecl GUILD_CGW_ASKNAMELIST::GetPacketSize(const GUILD_CGW_ASKNAMELIST *const this)
  31146. {
  31147. return 0;
  31148. }
  31149.  
  31150. //----- (08068318) --------------------------------------------------------
  31151. int __cdecl GUILD_CGW_CREATE::GetPacketSize(int a2)
  31152. {
  31153. return *(unsigned __int8 *)(a2 + 4) + *(unsigned __int8 *)(a2 + 30) + 2;
  31154. }
  31155.  
  31156. //----- (0806832C) --------------------------------------------------------
  31157. UINT __cdecl GUILD_CGW_JOIN::GetPacketSize(const GUILD_CGW_JOIN *const this)
  31158. {
  31159. return 2;
  31160. }
  31161.  
  31162. //----- (08068338) --------------------------------------------------------
  31163. UINT __cdecl GUILD_CGW_ASKINFO::GetPacketSize(const GUILD_CGW_ASKINFO *const this)
  31164. {
  31165. return 3;
  31166. }
  31167.  
  31168. //----- (08068344) --------------------------------------------------------
  31169. UINT __cdecl GUILD_CGW_APPOINT::GetPacketSize(const GUILD_CGW_APPOINT *const this)
  31170. {
  31171. return 7;
  31172. }
  31173.  
  31174. //----- (08068350) --------------------------------------------------------
  31175. UINT __cdecl GUILD_CGW_ADJUSTAUTH::GetPacketSize(const GUILD_CGW_ADJUSTAUTH *const this)
  31176. {
  31177. return 7;
  31178. }
  31179.  
  31180. //----- (0806835C) --------------------------------------------------------
  31181. UINT __cdecl GUILD_CGW_RECRUIT::GetPacketSize(const GUILD_CGW_RECRUIT *const this)
  31182. {
  31183. return 4;
  31184. }
  31185.  
  31186. //----- (08068368) --------------------------------------------------------
  31187. UINT __cdecl GUILD_CGW_EXPEL::GetPacketSize(const GUILD_CGW_EXPEL *const this)
  31188. {
  31189. return 4;
  31190. }
  31191.  
  31192. //----- (08068374) --------------------------------------------------------
  31193. UINT __cdecl GUILD_CGW_WITHDRAW::GetPacketSize(const GUILD_CGW_WITHDRAW *const this)
  31194. {
  31195. return 4;
  31196. }
  31197.  
  31198. //----- (08068380) --------------------------------------------------------
  31199. UINT __cdecl GUILD_CGW_DEPOSIT::GetPacketSize(const GUILD_CGW_DEPOSIT *const this)
  31200. {
  31201. return 4;
  31202. }
  31203.  
  31204. //----- (0806838C) --------------------------------------------------------
  31205. int __cdecl GUILD_POSITION_NAME_LIST::GetPacketSize(int a2)
  31206. {
  31207. return (*(_DWORD *)(a2 + 644) << 6) + 4;
  31208. }
  31209.  
  31210. //----- (080683A0) --------------------------------------------------------
  31211. int __cdecl GUILD_CGW_CHANG_DESC::GetPacketSize(int a2)
  31212. {
  31213. return *(unsigned __int8 *)(a2 + 65) + 1;
  31214. }
  31215.  
  31216. //----- (080683B0) --------------------------------------------------------
  31217. int __cdecl GUILD_CGW_MODIFY_LEAVE_WORD::GetPacketSize(int a2)
  31218. {
  31219. return *(unsigned __int8 *)(a2 + 4) + 1;
  31220. }
  31221.  
  31222. //----- (080683C0) --------------------------------------------------------
  31223. int __cdecl GUILD_WGC_APPOINT_INFO::GetPacketSize(int a2)
  31224. {
  31225. return 25 * *(_DWORD *)(a2 + 256) + 5;
  31226. }
  31227.  
  31228. //----- (080683D8) --------------------------------------------------------
  31229. UINT __cdecl GUILD_WGC_GUILD_INFO::GetPacketSize(const GUILD_WGC_GUILD_INFO *const this)
  31230. {
  31231. return 215;
  31232. }
  31233.  
  31234. //----- (080683E4) --------------------------------------------------------
  31235. int __cdecl GUILD_WGC_MEMBER_LIST::GetPacketSize(int a2)
  31236. {
  31237. return 59 * *(unsigned __int16 *)(a2 + 17286) + 124;
  31238. }
  31239.  
  31240. //----- (08068404) --------------------------------------------------------
  31241. int __cdecl GUILD_WGC_LIST::GetPacketSize(int a2)
  31242. {
  31243. return 208 * *(unsigned __int8 *)(a2 + 8) + 5;
  31244. }
  31245.  
  31246. //----- (0806841C) --------------------------------------------------------
  31247. UINT __cdecl GUILD_WGC_NAMELIST::GetPacketSize(const GUILD_WGC_NAMELIST *const this)
  31248. {
  31249. return 28672;
  31250. }
  31251.  
  31252. //----- (08068428) --------------------------------------------------------
  31253. UINT __fastcall GUILD_WGC_SELF_GUILD_INFO::GetPacketSize(const GUILD_WGC_SELF_GUILD_INFO *const this)
  31254. {
  31255. int v2; // [esp+8h] [ebp+8h]
  31256.  
  31257. return *(_DWORD *)(v2 + 108)
  31258. + *(unsigned __int8 *)(v2 + 90)
  31259. + *(unsigned __int8 *)(v2 + 57)
  31260. + *(unsigned __int8 *)(v2 + 31)
  31261. + *(unsigned __int8 *)(v2 + 624)
  31262. + 67;
  31263. }
  31264.  
  31265. //----- (08068450) --------------------------------------------------------
  31266. int __cdecl FindFriendAD_VoteInfo_Packets::GetPacketSize(int a2)
  31267. {
  31268. return *(_DWORD *)(a2 + 36) + 5;
  31269. }
  31270.  
  31271. //----- (08068460) --------------------------------------------------------
  31272. int __cdecl FindFriendAD_SimpleInfo::GetPacketSize(int a2)
  31273. {
  31274. return *(_DWORD *)(a2 + 56) + 21;
  31275. }
  31276.  
  31277. //----- (08068470) --------------------------------------------------------
  31278. void __cdecl MySleep(int a2)
  31279. {
  31280. usleep(1000 * a2);
  31281. }
  31282.  
  31283. //----- (0806848C) --------------------------------------------------------
  31284. BOOL __cdecl sm_trylock(CHAR *const flag, CHAR type)
  31285. {
  31286. signed int v2; // ebx
  31287.  
  31288. v2 = 0;
  31289. while ( *flag )
  31290. {
  31291. ++v2;
  31292. MySleep(1);
  31293. if ( v2 > 10 )
  31294. return 0;
  31295. }
  31296. *flag = type;
  31297. return 1;
  31298. }
  31299.  
  31300. //----- (080684D4) --------------------------------------------------------
  31301. void __cdecl sm_unlock(CHAR *const flag, CHAR type)
  31302. {
  31303. if ( *flag )
  31304. *flag = 0;
  31305. }
  31306.  
  31307. //----- (080684E4) --------------------------------------------------------
  31308. void __cdecl sm_lock(CHAR *const flag, CHAR type)
  31309. {
  31310. while ( *flag )
  31311. MySleep(1);
  31312. *flag = type;
  31313. }
  31314.  
  31315. //----- (08068510) --------------------------------------------------------
  31316. FLOAT __cdecl MySqrt(const WORLD_POS *pCur, const WORLD_POS *pTar)
  31317. {
  31318. long double v2; // fst6
  31319. long double v3; // t2
  31320. long double v4; // fst6
  31321.  
  31322. if ( !pCur )
  31323. __assert__("../../Common/GameUtil.cpp", 0x85u, "FLOAT MySqrt(const WORLD_POS*, const WORLD_POS*)", "pCur");
  31324. if ( !pTar )
  31325. __assert__("../../Common/GameUtil.cpp", 0x86u, "FLOAT MySqrt(const WORLD_POS*, const WORLD_POS*)", "pTar");
  31326. v2 = pCur->m_fZ - pTar->m_fZ;
  31327. v3 = v2 * v2;
  31328. v4 = pCur->m_fX - pTar->m_fX;
  31329. return sqrt(v3 + v4 * v4);
  31330. }
  31331.  
  31332. //----- (080685CC) --------------------------------------------------------
  31333. long double __cdecl MyLengthSq(float *a3, float *a4)
  31334. {
  31335. long double v4; // fst6
  31336. long double v5; // t2
  31337. long double v6; // fst6
  31338.  
  31339. v4 = a3[1] - a4[1];
  31340. v5 = v4 * v4;
  31341. v6 = *a3 - *a4;
  31342. return (float)(v5 + v6 * v6);
  31343. }
  31344.  
  31345. //----- (080685F4) --------------------------------------------------------
  31346. FLOAT __cdecl MyAngle(const WORLD_POS *pCur, const WORLD_POS *pTar)
  31347. {
  31348. long double v2; // fst4
  31349. long double v3; // tt
  31350. long double v4; // fst4
  31351. long double v5; // fst5
  31352. long double v6; // fst7
  31353. long double v7; // fst7
  31354.  
  31355. v2 = pCur->m_fX - pTar->m_fX;
  31356. v3 = v2 * v2;
  31357. v4 = pCur->m_fZ - pTar->m_fZ;
  31358. v5 = sqrt(v3 + v4 * v4);
  31359. if ( v5 <= 0.0 )
  31360. return 0.0;
  31361. v6 = (pTar->m_fZ - pCur->m_fZ) / v5;
  31362. if ( v6 > 1.0 )
  31363. v6 = 0.0;
  31364. if ( v6 < -1.0 )
  31365. v6 = 3.1415;
  31366. v7 = acos(v6);
  31367. if ( pTar->m_fX < (long double)pCur->m_fX )
  31368. v7 = 6.283 - v7;
  31369. return v7;
  31370. }
  31371.  
  31372. //----- (080686A0) --------------------------------------------------------
  31373. BOOL __cdecl MyPosEqual(const WORLD_POS *pA, const WORLD_POS *pB)
  31374. {
  31375. long double v2; // fst6
  31376. long double v3; // fst7
  31377. long double v4; // fst6
  31378. long double v5; // fst7
  31379. long double v6; // fst5
  31380. long double v7; // fst6
  31381. long double v8; // fst6
  31382. long double v10; // fst6
  31383.  
  31384. v2 = pA->m_fX;
  31385. v3 = pB->m_fX;
  31386. if ( v2 <= v3 )
  31387. {
  31388. v10 = v3 - v2;
  31389. v5 = 0.001;
  31390. if ( v10 > 0.001 )
  31391. return 0;
  31392. }
  31393. else
  31394. {
  31395. v4 = v2 - v3;
  31396. v5 = 0.001;
  31397. if ( v4 > 0.001 )
  31398. return 0;
  31399. }
  31400. v6 = pA->m_fZ;
  31401. v7 = pB->m_fZ;
  31402. if ( v6 > v7 )
  31403. v8 = v6 - v7;
  31404. else
  31405. v8 = v7 - v6;
  31406. if ( v8 <= v5 )
  31407. return 1;
  31408. return 0;
  31409. }
  31410.  
  31411. //----- (08068710) --------------------------------------------------------
  31412. void __cdecl MyRandPos(WORLD_POS *pPos, const WORLD_POS *pDir, FLOAT fRadioMax, FLOAT fRadioMin)
  31413. {
  31414. long double v4; // fst6
  31415. long double v5; // fst5
  31416. signed int v6; // ebx
  31417. signed int v7; // esi
  31418. int v8; // edi
  31419. int v9; // edx
  31420. unsigned int v10; // eax
  31421. long double v11; // fst7
  31422. long double v12; // fst6
  31423. float v13; // ST5C_4
  31424. double v14; // ST30_8
  31425. FLOAT x; // ST38_4
  31426. float v16; // ST5C_4
  31427. float fRandLength; // [esp+1Ch] [ebp-3Ch]
  31428. float fRandThi; // [esp+20h] [ebp-38h]
  31429. float fBz; // [esp+24h] [ebp-34h]
  31430. float fBx; // [esp+28h] [ebp-30h]
  31431. float fAz; // [esp+2Ch] [ebp-2Ch]
  31432. float fAx; // [esp+30h] [ebp-28h]
  31433.  
  31434. fAx = pPos->m_fX;
  31435. fAz = pPos->m_fZ;
  31436. fBx = pDir->m_fX;
  31437. fBz = pDir->m_fZ;
  31438. if ( fRadioMin < 0.0 )
  31439. return;
  31440. v4 = fRadioMax;
  31441. if ( fRadioMax < 0.0 )
  31442. return;
  31443. v5 = fRadioMin * 100.0;
  31444. v6 = (signed int)v5;
  31445. v7 = (signed int)(100.0 * v4);
  31446. if ( (signed int)v5 > v7 )
  31447. {
  31448. v6 = (signed int)(100.0 * v4);
  31449. v7 = (signed int)v5;
  31450. v8 = (signed int)v5 - v6;
  31451. if ( !v6 )
  31452. goto LABEL_7;
  31453. LABEL_13:
  31454. v9 = v8 + rand() % v6;
  31455. goto LABEL_8;
  31456. }
  31457. v8 = v7 - v6;
  31458. if ( v6 )
  31459. goto LABEL_13;
  31460. LABEL_7:
  31461. v9 = rand() % (v7 + 1);
  31462. LABEL_8:
  31463. fRandLength = (long double)v9 / 100.0;
  31464. fRandThi = (long double)(rand() % 79) / 100.0;
  31465. v10 = rand();
  31466. if ( v10 == ((v10 + (v10 >> 31)) & 0xFFFFFFFE) )
  31467. HIBYTE(fRandThi) ^= 0x80u;
  31468. v11 = fBx - fAx;
  31469. v12 = sqrt(v11 * v11 + (fBz - fAz) * (fBz - fAz));
  31470. if ( fabs(v12) >= 0.0000099999997 )
  31471. {
  31472. v13 = asin(v11 / v12);
  31473. v14 = v13 + fRandThi;
  31474. x = cos(v14) * fRandLength;
  31475. v16 = sin(v14) * fRandLength;
  31476. pPos->m_fX = x + fAx;
  31477. pPos->m_fZ = v16 + fAz;
  31478. }
  31479. }
  31480.  
  31481. //----- (080688C4) --------------------------------------------------------
  31482. CHAR *MySocketError()
  31483. {
  31484. return gSocketError;
  31485. }
  31486.  
  31487. //----- (080688D0) --------------------------------------------------------
  31488. UINT __cdecl MyCRC(const CHAR *szString)
  31489. {
  31490. UINT v1; // edx
  31491. unsigned int v2; // kr04_4
  31492. int i; // edi
  31493.  
  31494. if ( !szString || !*szString )
  31495. return 0;
  31496. v1 = -1;
  31497. v2 = strlen(szString) + 1;
  31498. for ( i = 0; i < (signed int)(v2 - 1); ++i )
  31499. v1 = 33 * v1 + (unsigned __int8)szString[i];
  31500. return v1;
  31501. }
  31502.  
  31503. //----- (0806891C) --------------------------------------------------------
  31504. UINT __cdecl BinCRC(const CHAR *pBinary, INT InSize)
  31505. {
  31506. UINT v2; // edx
  31507. INT i; // ecx
  31508.  
  31509. v2 = -1;
  31510. for ( i = 0; i < InSize; ++i )
  31511. v2 = 33 * v2 + (unsigned __int8)pBinary[i];
  31512. return v2;
  31513. }
  31514.  
  31515. //----- (0806894C) --------------------------------------------------------
  31516. BOOL __cdecl Bin2StrEx(const CHAR *pIn, UINT InLength, CHAR *pOut, UINT InMaxSize)
  31517. {
  31518. UINT v4; // esi
  31519. UINT v5; // edi
  31520. unsigned int v6; // ecx
  31521. char v7; // dl
  31522. char v8; // cl
  31523. CHAR chYuShu; // [esp+Bh] [ebp-Dh]
  31524.  
  31525. if ( 8 * InLength > 7 * InMaxSize - 7 )
  31526. __assert__(
  31527. "../../Common/GameUtil.cpp",
  31528. 0x1AFu,
  31529. "BOOL Bin2StrEx(const CHAR*, UINT, CHAR*, UINT)",
  31530. "InLength * 8 <= (InMaxSize *7-7)");
  31531. v4 = 0;
  31532. v5 = 0;
  31533. chYuShu = 0;
  31534. if ( InLength > 0 && InMaxSize != 1 )
  31535. {
  31536. do
  31537. {
  31538. v6 = 7 - v4 % 7;
  31539. v7 = chYuShu + ((signed int)(unsigned __int8)pIn[v4] >> (v4 % 7 + 1));
  31540. chYuShu = (unsigned __int8)pIn[v4] << v6;
  31541. v8 = (unsigned __int8)pIn[v4] << v6;
  31542. pOut[v5++] = v7 + 1;
  31543. if ( v4 % 7 == 6 )
  31544. {
  31545. chYuShu = 0;
  31546. pOut[v5++] = v8 + 1;
  31547. }
  31548. ++v4;
  31549. }
  31550. while ( v4 < InLength && InMaxSize - 1 > v5 );
  31551. }
  31552. if ( v4 % 7 && v5 < InMaxSize )
  31553. pOut[v5] = chYuShu + 1;
  31554. return v4 == InLength;
  31555. }
  31556.  
  31557. //----- (08068A30) --------------------------------------------------------
  31558. BOOL __cdecl Str2BinEx(const CHAR *pIn, UINT InLength, CHAR *pOut, UINT *const MaxLengthOrOutLength)
  31559. {
  31560. UINT v4; // edi
  31561. UINT v5; // esi
  31562. BOOL result; // eax
  31563. int v7; // ebx
  31564. CHAR v8; // al
  31565. UINT v9; // [esp+0h] [ebp-18h]
  31566. CHAR chYuShu; // [esp+7h] [ebp-11h]
  31567.  
  31568. v9 = *MaxLengthOrOutLength;
  31569. if ( 7 * InLength > 8 * *MaxLengthOrOutLength + 7 )
  31570. __assert__(
  31571. "../../Common/GameUtil.cpp",
  31572. 0x1F6u,
  31573. "BOOL Str2BinEx(const CHAR*, UINT, CHAR*, UINT&)",
  31574. "InLength*7 <= MaxLengthOrOutLength*8 + 7");
  31575. v4 = 0;
  31576. v5 = 0;
  31577. chYuShu = 0;
  31578. if ( InLength <= 0 || v9 <= 0 )
  31579. {
  31580. LABEL_4:
  31581. result = 0;
  31582. if ( v5 == InLength )
  31583. goto LABEL_13;
  31584. return result;
  31585. }
  31586. do
  31587. {
  31588. v7 = (unsigned __int8)(pIn[v5] - 1) << ((v5 & 7) + 1);
  31589. if ( !(v5 & 7) )
  31590. {
  31591. ++v5;
  31592. chYuShu = v7;
  31593. if ( v5 >= InLength )
  31594. break;
  31595. continue;
  31596. }
  31597. v8 = chYuShu + ((signed int)(unsigned __int8)(pIn[v5] - 1) >> (8 - (v5 & 7)));
  31598. chYuShu = v7;
  31599. ++v5;
  31600. pOut[v4++] = v8;
  31601. if ( v5 >= InLength )
  31602. break;
  31603. }
  31604. while ( v4 < v9 );
  31605. if ( !chYuShu || v4 >= v9 )
  31606. goto LABEL_4;
  31607. pOut[v4++] = chYuShu;
  31608. result = 0;
  31609. if ( v5 == InLength )
  31610. {
  31611. LABEL_13:
  31612. *MaxLengthOrOutLength = v4;
  31613. LOBYTE(result) = 1;
  31614. }
  31615. return result;
  31616. }
  31617.  
  31618. //----- (08068B20) --------------------------------------------------------
  31619. BOOL __cdecl Bin2Str(const CHAR *pIn, UINT InLength, CHAR *pOut)
  31620. {
  31621. BOOL result; // eax
  31622. UINT v4; // ecx
  31623. int v5; // edx
  31624. CHAR v6; // al
  31625. int v7; // edx
  31626.  
  31627. result = 0;
  31628. if ( InLength )
  31629. {
  31630. v4 = 0;
  31631. v5 = 0;
  31632. while ( v4 < InLength )
  31633. {
  31634. v6 = pIn[v4];
  31635. if ( v6 )
  31636. {
  31637. if ( v6 == 92 )
  31638. {
  31639. pOut[v5++] = 92;
  31640. pOut[v5] = 92;
  31641. }
  31642. else
  31643. {
  31644. pOut[v5] = v6;
  31645. }
  31646. ++v4;
  31647. ++v5;
  31648. }
  31649. else
  31650. {
  31651. pOut[v5] = 92;
  31652. v7 = v5 + 1;
  31653. pOut[v7] = 48;
  31654. ++v4;
  31655. v5 = v7 + 1;
  31656. }
  31657. }
  31658. result = 1;
  31659. }
  31660. return result;
  31661. }
  31662.  
  31663. //----- (08068B80) --------------------------------------------------------
  31664. CHAR __cdecl Value2Ascii(CHAR in)
  31665. {
  31666. CHAR result; // al
  31667.  
  31668. switch ( in )
  31669. {
  31670. case 0:
  31671. result = 48;
  31672. break;
  31673. case 1:
  31674. result = 49;
  31675. break;
  31676. case 2:
  31677. result = 50;
  31678. break;
  31679. case 3:
  31680. result = 51;
  31681. break;
  31682. case 4:
  31683. result = 52;
  31684. break;
  31685. case 5:
  31686. result = 53;
  31687. break;
  31688. case 6:
  31689. result = 54;
  31690. break;
  31691. case 7:
  31692. result = 55;
  31693. break;
  31694. case 8:
  31695. result = 56;
  31696. break;
  31697. case 9:
  31698. result = 57;
  31699. break;
  31700. case 10:
  31701. result = 65;
  31702. break;
  31703. case 11:
  31704. result = 66;
  31705. break;
  31706. case 12:
  31707. result = 67;
  31708. break;
  31709. case 13:
  31710. result = 68;
  31711. break;
  31712. case 14:
  31713. result = 69;
  31714. break;
  31715. case 15:
  31716. result = 70;
  31717. break;
  31718. default:
  31719. __assert__("../../Common/GameUtil.cpp", 0x28Cu, "CHAR Value2Ascii(CHAR)", "FALSE");
  31720. return result;
  31721. }
  31722. return result;
  31723. }
  31724.  
  31725. //----- (08068CA8) --------------------------------------------------------
  31726. CHAR __cdecl Ascii2Value(CHAR in)
  31727. {
  31728. CHAR result; // al
  31729.  
  31730. switch ( in )
  31731. {
  31732. case 48:
  31733. result = 0;
  31734. break;
  31735. case 49:
  31736. result = 1;
  31737. break;
  31738. case 50:
  31739. result = 2;
  31740. break;
  31741. case 51:
  31742. result = 3;
  31743. break;
  31744. case 52:
  31745. result = 4;
  31746. break;
  31747. case 53:
  31748. result = 5;
  31749. break;
  31750. case 54:
  31751. result = 6;
  31752. break;
  31753. case 55:
  31754. result = 7;
  31755. break;
  31756. case 56:
  31757. result = 8;
  31758. break;
  31759. case 57:
  31760. result = 9;
  31761. break;
  31762. case 65:
  31763. result = 10;
  31764. break;
  31765. case 66:
  31766. result = 11;
  31767. break;
  31768. case 67:
  31769. result = 12;
  31770. break;
  31771. case 68:
  31772. result = 13;
  31773. break;
  31774. case 69:
  31775. result = 14;
  31776. break;
  31777. case 70:
  31778. result = 15;
  31779. break;
  31780. default:
  31781. __assert__("../../Common/GameUtil.cpp", 0x2CBu, "CHAR Ascii2Value(CHAR)", "FALSE");
  31782. return result;
  31783. }
  31784. return result;
  31785. }
  31786.  
  31787. //----- (08068DD4) --------------------------------------------------------
  31788. BOOL __cdecl Binary2String(const CHAR *pIn, UINT InLength, CHAR *pOut)
  31789. {
  31790. BOOL result; // eax
  31791. int v4; // edi
  31792. UINT i; // esi
  31793. int v6; // edi
  31794.  
  31795. result = 0;
  31796. if ( InLength )
  31797. {
  31798. v4 = 0;
  31799. for ( i = 0; i < InLength; ++i )
  31800. {
  31801. pOut[v4] = Value2Ascii((const unsigned __int8)pIn[i] >> 4);
  31802. v6 = v4 + 1;
  31803. pOut[v6] = Value2Ascii(pIn[i] & 0xF);
  31804. v4 = v6 + 1;
  31805. }
  31806. result = 1;
  31807. }
  31808. return result;
  31809. }
  31810.  
  31811. //----- (08068E84) --------------------------------------------------------
  31812. BOOL __cdecl DBStr2Binary(const CHAR *pIn, UINT InLength, CHAR *pOut, UINT OutLimit, UINT *a6)
  31813. {
  31814. BOOL result; // eax
  31815. UINT v7; // esi
  31816. bool v8; // cf
  31817. bool i; // zf
  31818. CHAR v10; // al
  31819. char v11; // bl
  31820. UINT v12; // [esp+4h] [ebp-14h]
  31821. UINT iOut; // [esp+8h] [ebp-10h]
  31822.  
  31823. result = 0;
  31824. if ( InLength )
  31825. {
  31826. v7 = 0;
  31827. iOut = 0;
  31828. v12 = InLength - 1;
  31829. v8 = 0;
  31830. for ( i = InLength == 1; !v8 && !i; i = v12 == v7 )
  31831. {
  31832. v10 = pIn[v7];
  31833. if ( !v10 )
  31834. break;
  31835. if ( !pIn[v7 + 1] )
  31836. break;
  31837. v11 = 16 * Ascii2Value(v10);
  31838. pOut[iOut] = v11 + Ascii2Value(pIn[v7 + 1]);
  31839. v7 += 2;
  31840. if ( ++iOut >= OutLimit )
  31841. break;
  31842. v8 = v12 < v7;
  31843. }
  31844. *a6 = iOut;
  31845. result = 1;
  31846. }
  31847. return result;
  31848. }
  31849.  
  31850. //----- (08068F6C) --------------------------------------------------------
  31851. BOOL __cdecl Str2Bin(const CHAR *pIn, UINT InLength, CHAR *pOut, UINT OutLimit, UINT *a6)
  31852. {
  31853. BOOL result; // eax
  31854. UINT v7; // esi
  31855. UINT v8; // edx
  31856. UINT v9; // ebx
  31857. CHAR v10; // al
  31858. bool v11; // cf
  31859. bool v12; // zf
  31860. CHAR v13; // cl
  31861.  
  31862. result = 0;
  31863. if ( InLength )
  31864. {
  31865. v7 = InLength - 1;
  31866. v8 = 0;
  31867. v9 = 0;
  31868. if ( InLength != 1 )
  31869. {
  31870. while ( 1 )
  31871. {
  31872. v10 = pIn[v9];
  31873. if ( v10 != 92 )
  31874. break;
  31875. v13 = pIn[v9 + 1];
  31876. if ( v13 == 48 )
  31877. {
  31878. pOut[v8] = 0;
  31879. v9 += 2;
  31880. ++v8;
  31881. }
  31882. else
  31883. {
  31884. if ( v13 != 92 )
  31885. goto LABEL_5;
  31886. pOut[v8] = 92;
  31887. v9 += 2;
  31888. ++v8;
  31889. }
  31890. v11 = v7 < v9;
  31891. v12 = v7 == v9;
  31892. LABEL_7:
  31893. if ( v11 || v12 )
  31894. goto LABEL_8;
  31895. }
  31896. if ( !v10 )
  31897. goto LABEL_8;
  31898. LABEL_5:
  31899. pOut[v8++] = v10;
  31900. ++v9;
  31901. if ( v8 >= OutLimit )
  31902. goto LABEL_11;
  31903. v11 = v7 < v9;
  31904. v12 = v7 == v9;
  31905. goto LABEL_7;
  31906. }
  31907. LABEL_8:
  31908. if ( v8 < OutLimit && v7 == v9 )
  31909. pOut[v8++] = pIn[v9];
  31910. LABEL_11:
  31911. *a6 = v8;
  31912. result = 1;
  31913. }
  31914. return result;
  31915. }
  31916.  
  31917. //----- (08068FFC) --------------------------------------------------------
  31918. BOOL __cdecl StrSafeCheck(const CHAR *pIn, UINT InLength)
  31919. {
  31920. UINT i; // edx
  31921. bool v3; // zf
  31922. CHAR v4; // al
  31923.  
  31924. if ( !InLength || !pIn )
  31925. return 0;
  31926. for ( i = 0; i < InLength; ++i )
  31927. {
  31928. v4 = pIn[i];
  31929. if ( v4 <= 41 )
  31930. {
  31931. if ( v4 >= 39 )
  31932. return 0;
  31933. if ( !v4 )
  31934. return 1;
  31935. v3 = v4 == 34;
  31936. }
  31937. else
  31938. {
  31939. if ( v4 == 61 )
  31940. return 0;
  31941. v3 = v4 == 92;
  31942. }
  31943. if ( v3 )
  31944. return 0;
  31945. }
  31946. return 1;
  31947. }
  31948.  
  31949. //----- (08069044) --------------------------------------------------------
  31950. BOOL __cdecl AccNameCheck(const CHAR *pIn, UINT InLength, INT nLanguage)
  31951. {
  31952. int v4; // eax
  31953. UINT i; // ecx
  31954. CHAR v6; // dl
  31955.  
  31956. if ( nLanguage == 1 )
  31957. {
  31958. v4 = 0;
  31959. for ( i = 0; i < InLength; ++v4 )
  31960. {
  31961. v6 = pIn[i];
  31962. if ( !v6 )
  31963. break;
  31964. if ( v6 == 64 )
  31965. break;
  31966. ++i;
  31967. }
  31968. if ( (unsigned int)(v4 - 1) <= 0xF )
  31969. return 1;
  31970. return 0;
  31971. }
  31972. if ( !*pIn || strlen(pIn) > 0x32 )
  31973. return 0;
  31974. return 1;
  31975. }
  31976.  
  31977. //----- (080690B0) --------------------------------------------------------
  31978. UINT __cdecl GetMailSize(const MAIL *const mail)
  31979. {
  31980. UINT result; // eax
  31981.  
  31982. if ( mail->m_uFlag == 2 )
  31983. result = mail->m_DestSize + mail->m_SourSize + mail->m_ContexSize + 36;
  31984. else
  31985. result = mail->m_DestSize + mail->m_SourSize + mail->m_ContexSize + 20;
  31986. return result;
  31987. }
  31988.  
  31989. //----- (080690E8) --------------------------------------------------------
  31990. UINT __cdecl GetMailListSize(const MAIL_LIST *const maillist)
  31991. {
  31992. int v1; // esi
  31993. UINT v2; // edi
  31994. const MAIL_LIST *v3; // ebx
  31995. int v5; // [esp+0h] [ebp-10h]
  31996.  
  31997. v1 = 0;
  31998. v2 = 2;
  31999. if ( (signed int)maillist->m_Count > 0 )
  32000. {
  32001. v3 = maillist;
  32002. v5 = maillist->m_Count;
  32003. do
  32004. {
  32005. ++v1;
  32006. v2 += GetMailSize(v3->m_aMail);
  32007. v3 = (const MAIL_LIST *)((char *)v3 + 356);
  32008. }
  32009. while ( v5 > v1 );
  32010. }
  32011. return v2;
  32012. }
  32013.  
  32014. //----- (0806912C) --------------------------------------------------------
  32015. void __cdecl DumpStack(const CHAR *type)
  32016. {
  32017. struct tm *v1; // ebx
  32018. FILE *v2; // esi
  32019. int v3; // ST20_4
  32020. int v4; // ST1C_4
  32021. int v5; // ST18_4
  32022. int v6; // ST14_4
  32023. int v7; // ST10_4
  32024. int v8; // ST0C_4
  32025. int v9; // eax
  32026. signed int i; // ebx
  32027. FILE *s; // ST54_4
  32028. int v12; // eax
  32029. char **symbols; // [esp+14h] [ebp-64Ch]
  32030. signed int Size; // [esp+40h] [ebp-620h]
  32031. time_t tSetTime; // [esp+44h] [ebp-61Ch]
  32032. char threadinfo[256]; // [esp+48h] [ebp-618h]
  32033. char buffer[256]; // [esp+148h] [ebp-518h]
  32034. void *DumpArray[256]; // [esp+248h] [ebp-418h]
  32035.  
  32036. Size = backtrace(DumpArray, 256);
  32037. symbols = backtrace_symbols(DumpArray, Size);
  32038. if ( symbols )
  32039. {
  32040. if ( Size > 256 )
  32041. {
  32042. Size = 256;
  32043. }
  32044. else if ( Size <= 0 )
  32045. {
  32046. LABEL_8:
  32047. free(symbols);
  32048. return;
  32049. }
  32050. time(&tSetTime);
  32051. v1 = localtime(&tSetTime);
  32052. v2 = fopen("./Log/login_dump.log", "a");
  32053. memset(buffer, 0, 0x100u);
  32054. v3 = v1->tm_sec;
  32055. v4 = v1->tm_min;
  32056. v5 = v1->tm_hour;
  32057. v6 = v1->tm_mday;
  32058. v7 = v1->tm_mon + 1;
  32059. v8 = v1->tm_year + 1900;
  32060. v9 = ThreadValueManager::GetCurrentThreadID();
  32061. sprintf(buffer, "Dump: threadid=%d, Time: %d-%d-%d %d:%d:%d\r\n", v9, v8, v7, v6, v5, v4, v3);
  32062. fwrite(buffer, 1u, strlen(buffer), v2);
  32063. fwrite(type, 1u, strlen(type), v2);
  32064. for ( i = 0; i < Size; ++i )
  32065. {
  32066. printf("%s\r\n", symbols[i]);
  32067. fwrite(symbols[i], 1u, strlen(symbols[i]), v2);
  32068. fwrite("\r\n", 1u, 2u, v2);
  32069. }
  32070. fclose(v2);
  32071. goto LABEL_8;
  32072. }
  32073. s = fopen("./Log/login_dump.log", "a");
  32074. memset(buffer, 0, 0x100u);
  32075. memset(threadinfo, 0, 0x100u);
  32076. v12 = ThreadValueManager::GetCurrentThreadID();
  32077. sprintf(threadinfo, "threadid = %d cause dump\r\n", v12);
  32078. fwrite(threadinfo, 1u, strlen(threadinfo), s);
  32079. fwrite(type, 1u, strlen(type), s);
  32080. fclose(s);
  32081. }
  32082.  
  32083. //----- (0806939C) --------------------------------------------------------
  32084. UINT __cdecl FullDataCrc(FULLUSERDATA *pData, BOOL bLog)
  32085. {
  32086. int v2; // eax
  32087. GUID_t v3; // edx
  32088. unsigned int v4; // ebx
  32089. int v5; // ebx
  32090. UINT v6; // ecx
  32091. unsigned int v7; // ebx
  32092. UINT v8; // edx
  32093. unsigned int v9; // ebx
  32094. int v10; // edx
  32095. int v11; // ebx
  32096. int v12; // ebx
  32097. int v13; // edx
  32098. int v14; // ebx
  32099. int v15; // edx
  32100. int v16; // ebx
  32101. int v17; // edx
  32102. int v18; // ebx
  32103. int v19; // edx
  32104. int v20; // ebx
  32105. int v21; // edx
  32106. int v22; // ebx
  32107. int v23; // edx
  32108. int v24; // ebx
  32109. int v25; // edx
  32110. int v26; // ebx
  32111. BYTE v27; // al
  32112. int v28; // edi
  32113. int v29; // edx
  32114. int v30; // ebx
  32115. int v31; // edx
  32116. int v32; // edi
  32117. int v33; // ebx
  32118. int v34; // edi
  32119. int v35; // ebx
  32120. unsigned int v36; // edx
  32121. int v37; // edi
  32122. unsigned int v38; // ebx
  32123. int v39; // edi
  32124. int v40; // edx
  32125. int v41; // ebx
  32126. signed int v42; // esi
  32127. int v43; // edx
  32128. int v44; // ebx
  32129. int v45; // edx
  32130. int v46; // ebx
  32131. int v47; // edx
  32132. int v48; // ebx
  32133. int v49; // edx
  32134. int v50; // ebx
  32135. BYTE v51; // al
  32136. int v52; // edi
  32137. int v53; // edx
  32138. int v54; // ebx
  32139. int v55; // edi
  32140. int v56; // ebx
  32141. INT v57; // ecx
  32142. int v58; // edi
  32143. int v59; // ebx
  32144. unsigned int v60; // edx
  32145. int v61; // edi
  32146. unsigned int v62; // ebx
  32147. int v63; // edi
  32148. int v64; // edx
  32149. int v65; // ebx
  32150. signed int v66; // esi
  32151. int v67; // edx
  32152. int v68; // ebx
  32153. BYTE v69; // al
  32154. int v70; // edi
  32155. int v71; // edx
  32156. int v72; // ebx
  32157. int v73; // edx
  32158. int v74; // edi
  32159. int v75; // ebx
  32160. int v76; // edx
  32161. int v77; // edi
  32162. int v78; // ebx
  32163. unsigned int v79; // edx
  32164. int v80; // edi
  32165. unsigned int v81; // ebx
  32166. int v82; // edi
  32167. int v83; // edx
  32168. int v84; // ebx
  32169. signed int v85; // esi
  32170. int v86; // edx
  32171. int v87; // ebx
  32172. unsigned int v88; // edx
  32173. unsigned int v89; // ebx
  32174. UINT v90; // ecx
  32175. unsigned int v91; // ebx
  32176. int v92; // ebx
  32177. int v93; // ebx
  32178. int v94; // ebx
  32179. INT v95; // eax
  32180. int v96; // edx
  32181. int v97; // eax
  32182. int v98; // ebx
  32183. INT v99; // eax
  32184. int v100; // edx
  32185. int v101; // eax
  32186. int v102; // ebx
  32187. int v103; // ebx
  32188. int v104; // edx
  32189. int v105; // ebx
  32190. int v106; // edx
  32191. int v107; // ebx
  32192. int v108; // edx
  32193. int v109; // ebx
  32194. int v110; // edx
  32195. int v111; // ebx
  32196. int v112; // edx
  32197. int v113; // ebx
  32198. int v114; // edx
  32199. int v115; // ebx
  32200. int v116; // edx
  32201. int v117; // ebx
  32202. int v118; // ebx
  32203. int v119; // edx
  32204. int v120; // ebx
  32205. SkillID_t v121; // si
  32206. int v122; // edx
  32207. int v123; // ebx
  32208. int v124; // edx
  32209. int v125; // ebx
  32210. int v127; // edx
  32211. _BANK_DB_LOAD *v128; // [esp+4h] [ebp-54h]
  32212. _BAG_DB_LOAD *v129; // [esp+8h] [ebp-50h]
  32213. _EQUIP_DB_LOAD *v130; // [esp+Ch] [ebp-4Ch]
  32214. _PET_DB_LIST_LOAD *v131; // [esp+10h] [ebp-48h]
  32215. _PET_DB_LIST_LOAD *v132; // [esp+14h] [ebp-44h]
  32216. signed int v133; // [esp+18h] [ebp-40h]
  32217. unsigned int v134; // [esp+1Ch] [ebp-3Ch]
  32218. int v135; // [esp+1Ch] [ebp-3Ch]
  32219. int v136; // [esp+1Ch] [ebp-3Ch]
  32220. int v137; // [esp+1Ch] [ebp-3Ch]
  32221. int v138; // [esp+1Ch] [ebp-3Ch]
  32222. int v139; // [esp+1Ch] [ebp-3Ch]
  32223. int v140; // [esp+1Ch] [ebp-3Ch]
  32224. int v141; // [esp+1Ch] [ebp-3Ch]
  32225. int v142; // [esp+1Ch] [ebp-3Ch]
  32226. int v143; // [esp+1Ch] [ebp-3Ch]
  32227. int v144; // [esp+1Ch] [ebp-3Ch]
  32228. int v145; // [esp+1Ch] [ebp-3Ch]
  32229. int v146; // [esp+1Ch] [ebp-3Ch]
  32230. int v147; // [esp+1Ch] [ebp-3Ch]
  32231. int v148; // [esp+1Ch] [ebp-3Ch]
  32232. int v149; // [esp+1Ch] [ebp-3Ch]
  32233. int v150; // [esp+1Ch] [ebp-3Ch]
  32234. int v151; // [esp+1Ch] [ebp-3Ch]
  32235. signed int v152; // [esp+20h] [ebp-38h]
  32236. int v153; // [esp+24h] [ebp-34h]
  32237. signed int v154; // [esp+28h] [ebp-30h]
  32238. int v155; // [esp+2Ch] [ebp-2Ch]
  32239. signed int v156; // [esp+30h] [ebp-28h]
  32240. int v157; // [esp+34h] [ebp-24h]
  32241. signed int v158; // [esp+38h] [ebp-20h]
  32242. int v159; // [esp+3Ch] [ebp-1Ch]
  32243. int v160; // [esp+3Ch] [ebp-1Ch]
  32244. int v161; // [esp+3Ch] [ebp-1Ch]
  32245. int v162; // [esp+3Ch] [ebp-1Ch]
  32246. unsigned int v163; // [esp+44h] [ebp-14h]
  32247. int v164; // [esp+44h] [ebp-14h]
  32248. int v165; // [esp+44h] [ebp-14h]
  32249. int v166; // [esp+44h] [ebp-14h]
  32250. int v167; // [esp+44h] [ebp-14h]
  32251. int v168; // [esp+44h] [ebp-14h]
  32252. int v169; // [esp+44h] [ebp-14h]
  32253. int v170; // [esp+44h] [ebp-14h]
  32254. int v171; // [esp+44h] [ebp-14h]
  32255. int v172; // [esp+44h] [ebp-14h]
  32256. int v173; // [esp+44h] [ebp-14h]
  32257. int v174; // [esp+44h] [ebp-14h]
  32258. int v175; // [esp+44h] [ebp-14h]
  32259. UINT TotalCrc; // [esp+48h] [ebp-10h]
  32260. UINT TotalCrca; // [esp+48h] [ebp-10h]
  32261. UINT TotalCrcb; // [esp+48h] [ebp-10h]
  32262. UINT TotalCrcc; // [esp+48h] [ebp-10h]
  32263.  
  32264. if ( !pData )
  32265. __assert__("../../Common/GameUtil.cpp", 0x456u, "UINT FullDataCrc(FULLUSERDATA*, BOOL)", "pData");
  32266. if ( bLog )
  32267. {
  32268. printf("GUID=%X(%d)\n", pData->m_Human.m_GUID, pData->m_Human.m_GUID, v2);
  32269. if ( bLog )
  32270. puts("start of m_Human-------------------------------------------");
  32271. }
  32272. v3 = pData->m_Human.m_GUID % 0x11E1A300;
  32273. v4 = 13 * v3 >> 3;
  32274. if ( bLog )
  32275. printf("%s:%d(%ld) crc=%d\n", "../../Common/DB_Struct.h", 319, pData->m_Human.m_GUID, 13 * v3 >> 3);
  32276. v163 = v4;
  32277. v5 = 13 * (pData->m_Human.m_Level % 300000000) >> 3;
  32278. if ( bLog )
  32279. printf("%s:%d(%ld) crc=%d\n", "../../Common/DB_Struct.h", 320, pData->m_Human.m_Level, v5);
  32280. v6 = pData->m_Human.m_Exp;
  32281. v164 = v5 + v163;
  32282. v7 = 13 * (v6 % 0x11E1A300) >> 3;
  32283. if ( bLog )
  32284. printf("%s:%d(%ld) crc=%d\n", "../../Common/DB_Struct.h", 321, v6, 13 * (v6 % 0x11E1A300) >> 3);
  32285. v8 = pData->m_Human.m_Money % 0x11E1A300;
  32286. v165 = v7 + v164;
  32287. v9 = 13 * v8 >> 3;
  32288. if ( bLog )
  32289. printf("%s:%d(%ld) crc=%d\n", "../../Common/DB_Struct.h", 322, pData->m_Human.m_Money, 13 * v8 >> 3);
  32290. v10 = pData->m_Human.m_BaseAttrLevel1.m_pAttr[0] % 300000000;
  32291. v166 = v9 + v165;
  32292. v11 = 13 * v10 >> 3;
  32293. if ( bLog )
  32294. printf(
  32295. "%s:%d(%ld) crc=%d\n",
  32296. "../../Common/DB_Struct.h",
  32297. 323,
  32298. pData->m_Human.m_BaseAttrLevel1.m_pAttr[0],
  32299. 13 * v10 >> 3);
  32300. v167 = v11 + v166;
  32301. v12 = 13 * (pData->m_Human.m_BaseAttrLevel1.m_pAttr[1] % 300000000) >> 3;
  32302. if ( bLog )
  32303. printf("%s:%d(%ld) crc=%d\n", "../../Common/DB_Struct.h", 324, pData->m_Human.m_BaseAttrLevel1.m_pAttr[1], v12);
  32304. v13 = pData->m_Human.m_BaseAttrLevel1.m_pAttr[2] % 300000000;
  32305. v168 = v12 + v167;
  32306. v14 = 13 * v13 >> 3;
  32307. if ( bLog )
  32308. printf(
  32309. "%s:%d(%ld) crc=%d\n",
  32310. "../../Common/DB_Struct.h",
  32311. 325,
  32312. pData->m_Human.m_BaseAttrLevel1.m_pAttr[2],
  32313. 13 * v13 >> 3);
  32314. v15 = pData->m_Human.m_BaseAttrLevel1.m_pAttr[3] % 300000000;
  32315. v169 = v14 + v168;
  32316. v16 = 13 * v15 >> 3;
  32317. if ( bLog )
  32318. printf(
  32319. "%s:%d(%ld) crc=%d\n",
  32320. "../../Common/DB_Struct.h",
  32321. 326,
  32322. pData->m_Human.m_BaseAttrLevel1.m_pAttr[3],
  32323. 13 * v15 >> 3);
  32324. v17 = pData->m_Human.m_BaseAttrLevel1.m_pAttr[4] % 300000000;
  32325. v170 = v16 + v169;
  32326. v18 = 13 * v17 >> 3;
  32327. if ( bLog )
  32328. printf(
  32329. "%s:%d(%ld) crc=%d\n",
  32330. "../../Common/DB_Struct.h",
  32331. 327,
  32332. pData->m_Human.m_BaseAttrLevel1.m_pAttr[4],
  32333. 13 * v17 >> 3);
  32334. v19 = pData->m_Human.m_Level1Points % 300000000;
  32335. v171 = v18 + v170;
  32336. v20 = 13 * v19 >> 3;
  32337. if ( bLog )
  32338. printf("%s:%d(%ld) crc=%d\n", "../../Common/DB_Struct.h", 328, pData->m_Human.m_Level1Points, 13 * v19 >> 3);
  32339. v21 = pData->m_Human.m_iYuanBao % 300000000;
  32340. v172 = v20 + v171;
  32341. v22 = 13 * v21 >> 3;
  32342. if ( bLog )
  32343. printf("%s:%d(%ld) crc=%d\n", "../../Common/DB_Struct.h", 329, pData->m_Human.m_iYuanBao, 13 * v21 >> 3);
  32344. v23 = pData->m_Human.m_nZengDian % 300000000;
  32345. v173 = v22 + v172;
  32346. v24 = 13 * v23 >> 3;
  32347. if ( bLog )
  32348. printf("%s:%d(%ld) crc=%d\n", "../../Common/DB_Struct.h", 330, pData->m_Human.m_nZengDian, 13 * v23 >> 3);
  32349. v25 = pData->m_Human.m_nBuyYuanBao % 300000000;
  32350. v174 = v24 + v173;
  32351. v26 = 13 * v25 >> 3;
  32352. if ( bLog )
  32353. printf("%s:%d(%ld) crc=%d\n", "../../Common/DB_Struct.h", 331, pData->m_Human.m_nBuyYuanBao, 13 * v25 >> 3);
  32354. v175 = v26 + v174;
  32355. if ( bLog )
  32356. {
  32357. printf("curcrc=%u\n", v175);
  32358. puts("start of m_Bank--------------------------------------------");
  32359. }
  32360. v159 = 0;
  32361. v158 = 0;
  32362. v128 = &pData->m_Bank;
  32363. do
  32364. {
  32365. if ( bLog )
  32366. printf("BankItem(%d)...Begin\n", v158);
  32367. v27 = v128->m_pItem[0].m_ItemGUID.m_World;
  32368. v28 = 0;
  32369. if ( v128->m_pItem[0].m_ItemGUID.m_World
  32370. || v128->m_pItem[0].m_ItemGUID.m_Serial
  32371. || v128->m_pItem[0].m_ItemGUID.m_Server )
  32372. {
  32373. v29 = v27 % 300000000;
  32374. v30 = 13 * v29 >> 3;
  32375. if ( bLog )
  32376. printf("%s:%d(%ld) crc=%d\n", "../../Common/GameStruct_Item.h", 949, v27, 13 * v29 >> 3);
  32377. v31 = v128->m_pItem[0].m_ItemGUID.m_Server % 300000000;
  32378. v32 = v30;
  32379. v33 = 13 * v31 >> 3;
  32380. if ( bLog )
  32381. printf(
  32382. "%s:%d(%ld) crc=%d\n",
  32383. "../../Common/GameStruct_Item.h",
  32384. 950,
  32385. v128->m_pItem[0].m_ItemGUID.m_Server,
  32386. 13 * v31 >> 3);
  32387. v34 = v33 + v32;
  32388. v35 = 13 * (v128->m_pItem[0].m_ItemGUID.m_Serial % 300000000) >> 3;
  32389. if ( bLog )
  32390. printf("%s:%d(%ld) crc=%d\n", "../../Common/GameStruct_Item.h", 951, v128->m_pItem[0].m_ItemGUID.m_Serial, v35);
  32391. v36 = v128->m_pItem[0].m_ItemIndex % 0x11E1A300;
  32392. v37 = v35 + v34;
  32393. v38 = 13 * v36 >> 3;
  32394. if ( bLog )
  32395. printf(
  32396. "%s:%d(%ld) crc=%d\n",
  32397. "../../Common/GameStruct_Item.h",
  32398. 952,
  32399. v128->m_pItem[0].m_ItemIndex,
  32400. 13 * v36 >> 3);
  32401. v39 = v38 + v37;
  32402. v40 = v128->m_pItem[0].m_nsBind % 300000000;
  32403. v41 = 13 * v40 >> 3;
  32404. if ( bLog )
  32405. printf("%s:%d(%ld) crc=%d\n", "../../Common/GameStruct_Item.h", 953, v128->m_pItem[0].m_nsBind, 13 * v40 >> 3);
  32406. v28 = v41 + v39;
  32407. v42 = 0;
  32408. do
  32409. {
  32410. v43 = v128->m_pItem[0].m_Param[v42] % 300000000;
  32411. v44 = 13 * v43 >> 3;
  32412. if ( bLog )
  32413. printf(
  32414. "%s:%d(%ld) crc=%d\n",
  32415. "../../Common/GameStruct_Item.h",
  32416. 957,
  32417. v128->m_pItem[0].m_Param[v42],
  32418. 13 * v43 >> 3);
  32419. ++v42;
  32420. v28 += v44;
  32421. }
  32422. while ( v42 <= 2 );
  32423. }
  32424. v159 += v28;
  32425. if ( bLog )
  32426. printf("BankItem(%d)...End\n", v158);
  32427. ++v158;
  32428. v128 = (_BANK_DB_LOAD *)((char *)v128 + 176);
  32429. }
  32430. while ( v158 <= 59 );
  32431. v45 = pData->m_Bank.m_Count % 300000000;
  32432. v46 = 13 * v45 >> 3;
  32433. if ( bLog )
  32434. printf("%s:%d(%ld) crc=%d\n", "../../Common/DB_Struct.h", 364, pData->m_Bank.m_Count, 13 * v45 >> 3);
  32435. v160 = v46 + v159;
  32436. v47 = pData->m_Bank.m_CurEndIndex % 300000000;
  32437. v48 = 13 * v47 >> 3;
  32438. if ( bLog )
  32439. printf("%s:%d(%ld) crc=%d\n", "../../Common/DB_Struct.h", 365, pData->m_Bank.m_CurEndIndex, 13 * v47 >> 3);
  32440. v49 = pData->m_Bank.m_Money % 300000000;
  32441. v161 = v48 + v160;
  32442. v50 = 13 * v49 >> 3;
  32443. if ( bLog )
  32444. printf("%s:%d(%ld) crc=%d\n", "../../Common/DB_Struct.h", 366, pData->m_Bank.m_Money, 13 * v49 >> 3);
  32445. v162 = v50 + v161;
  32446. if ( bLog )
  32447. {
  32448. printf("curcrc=%u\n", v162 + v175);
  32449. puts("start of m_Bag---------------------------------------------");
  32450. }
  32451. v157 = 0;
  32452. v156 = 0;
  32453. v129 = &pData->m_Bag;
  32454. do
  32455. {
  32456. if ( bLog )
  32457. printf("BagItem(%d)...Begin\n", v156);
  32458. v51 = v129->m_pItem[0].m_ItemGUID.m_World;
  32459. v52 = 0;
  32460. if ( v129->m_pItem[0].m_ItemGUID.m_World
  32461. || v129->m_pItem[0].m_ItemGUID.m_Serial
  32462. || v129->m_pItem[0].m_ItemGUID.m_Server )
  32463. {
  32464. v53 = v51 % 300000000;
  32465. v54 = 13 * v53 >> 3;
  32466. if ( bLog )
  32467. {
  32468. printf("%s:%d(%ld) crc=%d\n", "../../Common/GameStruct_Item.h", 949, v51, 13 * v53 >> 3);
  32469. v127 = v129->m_pItem[0].m_ItemGUID.m_Server % 300000000;
  32470. v55 = v54;
  32471. v56 = 13 * v127 >> 3;
  32472. if ( bLog )
  32473. {
  32474. printf(
  32475. "%s:%d(%ld) crc=%d\n",
  32476. "../../Common/GameStruct_Item.h",
  32477. 950,
  32478. v129->m_pItem[0].m_ItemGUID.m_Server,
  32479. 13 * v127 >> 3);
  32480. v57 = v129->m_pItem[0].m_ItemGUID.m_Serial;
  32481. v58 = v56 + v55;
  32482. v59 = 13 * (v129->m_pItem[0].m_ItemGUID.m_Serial % 300000000) >> 3;
  32483. if ( !bLog )
  32484. goto LABEL_71;
  32485. goto LABEL_166;
  32486. }
  32487. }
  32488. else
  32489. {
  32490. v55 = 13 * v53 >> 3;
  32491. v56 = 13 * (v129->m_pItem[0].m_ItemGUID.m_Server % 300000000) >> 3;
  32492. }
  32493. v57 = v129->m_pItem[0].m_ItemGUID.m_Serial;
  32494. v58 = v56 + v55;
  32495. v59 = 13 * (v129->m_pItem[0].m_ItemGUID.m_Serial % 300000000) >> 3;
  32496. if ( !bLog )
  32497. {
  32498. LABEL_71:
  32499. v60 = v129->m_pItem[0].m_ItemIndex % 0x11E1A300;
  32500. v61 = v59 + v58;
  32501. v62 = 13 * v60 >> 3;
  32502. if ( bLog )
  32503. printf(
  32504. "%s:%d(%ld) crc=%d\n",
  32505. "../../Common/GameStruct_Item.h",
  32506. 952,
  32507. v129->m_pItem[0].m_ItemIndex,
  32508. 13 * v60 >> 3);
  32509. v63 = v62 + v61;
  32510. v64 = v129->m_pItem[0].m_nsBind % 300000000;
  32511. v65 = 13 * v64 >> 3;
  32512. if ( bLog )
  32513. printf("%s:%d(%ld) crc=%d\n", "../../Common/GameStruct_Item.h", 953, v129->m_pItem[0].m_nsBind, 13 * v64 >> 3);
  32514. v52 = v65 + v63;
  32515. v66 = 0;
  32516. do
  32517. {
  32518. v67 = v129->m_pItem[0].m_Param[v66] % 300000000;
  32519. v68 = 13 * v67 >> 3;
  32520. if ( bLog )
  32521. printf(
  32522. "%s:%d(%ld) crc=%d\n",
  32523. "../../Common/GameStruct_Item.h",
  32524. 957,
  32525. v129->m_pItem[0].m_Param[v66],
  32526. 13 * v67 >> 3);
  32527. ++v66;
  32528. v52 += v68;
  32529. }
  32530. while ( v66 <= 2 );
  32531. goto LABEL_79;
  32532. }
  32533. LABEL_166:
  32534. printf("%s:%d(%ld) crc=%d\n", "../../Common/GameStruct_Item.h", 951, v57, v59);
  32535. goto LABEL_71;
  32536. }
  32537. LABEL_79:
  32538. v157 += v52;
  32539. if ( bLog )
  32540. printf("BagItem(%d)...End\n", v156);
  32541. ++v156;
  32542. v129 = (_BAG_DB_LOAD *)((char *)v129 + 176);
  32543. }
  32544. while ( v156 <= 99 );
  32545. TotalCrc = v157 + v162 + v175;
  32546. if ( bLog )
  32547. {
  32548. printf("curcrc=%u\n", TotalCrc);
  32549. puts("start of m_Equip-------------------------------------------");
  32550. }
  32551. v155 = 0;
  32552. v154 = 0;
  32553. v130 = &pData->m_Equip;
  32554. do
  32555. {
  32556. if ( bLog )
  32557. printf("EquipItem(%d)...Begin\n", v154);
  32558. v69 = v130->m_pItem[0].m_ItemGUID.m_World;
  32559. v70 = 0;
  32560. if ( v130->m_pItem[0].m_ItemGUID.m_World
  32561. || v130->m_pItem[0].m_ItemGUID.m_Serial
  32562. || v130->m_pItem[0].m_ItemGUID.m_Server )
  32563. {
  32564. v71 = v69 % 300000000;
  32565. v72 = 13 * v71 >> 3;
  32566. if ( bLog )
  32567. printf("%s:%d(%ld) crc=%d\n", "../../Common/GameStruct_Item.h", 949, v69, 13 * v71 >> 3);
  32568. v73 = v130->m_pItem[0].m_ItemGUID.m_Server % 300000000;
  32569. v74 = v72;
  32570. v75 = 13 * v73 >> 3;
  32571. if ( bLog )
  32572. printf(
  32573. "%s:%d(%ld) crc=%d\n",
  32574. "../../Common/GameStruct_Item.h",
  32575. 950,
  32576. v130->m_pItem[0].m_ItemGUID.m_Server,
  32577. 13 * v73 >> 3);
  32578. v76 = v130->m_pItem[0].m_ItemGUID.m_Serial % 300000000;
  32579. v77 = v75 + v74;
  32580. v78 = 13 * v76 >> 3;
  32581. if ( bLog )
  32582. printf(
  32583. "%s:%d(%ld) crc=%d\n",
  32584. "../../Common/GameStruct_Item.h",
  32585. 951,
  32586. v130->m_pItem[0].m_ItemGUID.m_Serial,
  32587. 13 * v76 >> 3);
  32588. v79 = v130->m_pItem[0].m_ItemIndex % 0x11E1A300;
  32589. v80 = v78 + v77;
  32590. v81 = 13 * v79 >> 3;
  32591. if ( bLog )
  32592. printf(
  32593. "%s:%d(%ld) crc=%d\n",
  32594. "../../Common/GameStruct_Item.h",
  32595. 952,
  32596. v130->m_pItem[0].m_ItemIndex,
  32597. 13 * v79 >> 3);
  32598. v82 = v81 + v80;
  32599. v83 = v130->m_pItem[0].m_nsBind % 300000000;
  32600. v84 = 13 * v83 >> 3;
  32601. if ( bLog )
  32602. printf("%s:%d(%ld) crc=%d\n", "../../Common/GameStruct_Item.h", 953, v130->m_pItem[0].m_nsBind, 13 * v83 >> 3);
  32603. v70 = v84 + v82;
  32604. v85 = 0;
  32605. do
  32606. {
  32607. v86 = v130->m_pItem[0].m_Param[v85] % 300000000;
  32608. v87 = 13 * v86 >> 3;
  32609. if ( bLog )
  32610. printf(
  32611. "%s:%d(%ld) crc=%d\n",
  32612. "../../Common/GameStruct_Item.h",
  32613. 957,
  32614. v130->m_pItem[0].m_Param[v85],
  32615. 13 * v86 >> 3);
  32616. ++v85;
  32617. v70 += v87;
  32618. }
  32619. while ( v85 <= 2 );
  32620. }
  32621. v155 += v70;
  32622. if ( bLog )
  32623. printf("EquipItem(%d)...End\n", v154);
  32624. ++v154;
  32625. v130 = (_EQUIP_DB_LOAD *)((char *)v130 + 176);
  32626. }
  32627. while ( v154 <= 18 );
  32628. TotalCrca = v155 + TotalCrc;
  32629. if ( bLog )
  32630. {
  32631. printf("curcrc=%u\n", TotalCrca);
  32632. puts("start of m_PetList-----------------------------------------");
  32633. }
  32634. v153 = 0;
  32635. v152 = 0;
  32636. v131 = &pData->m_PetList;
  32637. do
  32638. {
  32639. if ( v131->m_aPetDB[0].m_GUID.m_uHighSection || v131->m_aPetDB[0].m_GUID.m_uLowSection )
  32640. {
  32641. if ( bLog )
  32642. printf("m_aPetDB[%d]...Begin\n", v152);
  32643. v88 = v131->m_aPetDB[0].m_GUID.m_uHighSection % 0x11E1A300;
  32644. v89 = 13 * v88 >> 3;
  32645. if ( bLog )
  32646. printf(
  32647. "%s:%d(%ld) crc=%d\n",
  32648. "../../Common/DB_Struct.h",
  32649. 822,
  32650. v131->m_aPetDB[0].m_GUID.m_uHighSection,
  32651. 13 * v88 >> 3);
  32652. v90 = v131->m_aPetDB[0].m_GUID.m_uLowSection;
  32653. v134 = v89;
  32654. v91 = 13 * (v90 % 0x11E1A300) >> 3;
  32655. if ( bLog )
  32656. printf("%s:%d(%ld) crc=%d\n", "../../Common/DB_Struct.h", 823, v90, 13 * (v90 % 0x11E1A300) >> 3);
  32657. v135 = v91 + v134;
  32658. v92 = 13 * (v131->m_aPetDB[0].m_nDataID % 300000000) >> 3;
  32659. if ( bLog )
  32660. printf("%s:%d(%ld) crc=%d\n", "../../Common/DB_Struct.h", 824, v131->m_aPetDB[0].m_nDataID, v92);
  32661. v136 = v92 + v135;
  32662. v93 = 13 * (v131->m_aPetDB[0].m_nLevel % 300000000) >> 3;
  32663. if ( bLog )
  32664. printf("%s:%d(%ld) crc=%d\n", "../../Common/DB_Struct.h", 825, v131->m_aPetDB[0].m_nLevel, v93);
  32665. v137 = v93 + v136;
  32666. v94 = 13 * (v131->m_aPetDB[0].m_nLife % 300000000) >> 3;
  32667. if ( bLog )
  32668. printf("%s:%d(%ld) crc=%d\n", "../../Common/DB_Struct.h", 826, v131->m_aPetDB[0].m_nLife, v94);
  32669. v95 = v131->m_aPetDB[0].m_nStrPerception;
  32670. v138 = v94 + v137;
  32671. v96 = v95 % 300000000;
  32672. v97 = 3 * (v95 % 300000000);
  32673. v98 = (v96 + 4 * v97) >> 3;
  32674. if ( bLog )
  32675. printf(
  32676. "%s:%d(%ld) crc=%d\n",
  32677. "../../Common/DB_Struct.h",
  32678. 827,
  32679. v131->m_aPetDB[0].m_nStrPerception,
  32680. (v96 + 4 * v97) >> 3);
  32681. v99 = v131->m_aPetDB[0].m_nConPerception;
  32682. v139 = v98 + v138;
  32683. v100 = v99 % 300000000;
  32684. v101 = 3 * (v99 % 300000000);
  32685. v102 = (v100 + 4 * v101) >> 3;
  32686. if ( bLog )
  32687. printf(
  32688. "%s:%d(%ld) crc=%d\n",
  32689. "../../Common/DB_Struct.h",
  32690. 828,
  32691. v131->m_aPetDB[0].m_nConPerception,
  32692. (v100 + 4 * v101) >> 3);
  32693. v140 = v102 + v139;
  32694. v103 = 13 * (v131->m_aPetDB[0].m_nDexPerception % 300000000) >> 3;
  32695. if ( bLog )
  32696. printf("%s:%d(%ld) crc=%d\n", "../../Common/DB_Struct.h", 829, v131->m_aPetDB[0].m_nDexPerception, v103);
  32697. v104 = v131->m_aPetDB[0].m_nSprPerception % 300000000;
  32698. v141 = v103 + v140;
  32699. v105 = 13 * v104 >> 3;
  32700. if ( bLog )
  32701. printf(
  32702. "%s:%d(%ld) crc=%d\n",
  32703. "../../Common/DB_Struct.h",
  32704. 830,
  32705. v131->m_aPetDB[0].m_nSprPerception,
  32706. 13 * v104 >> 3);
  32707. v106 = v131->m_aPetDB[0].m_nIntPerception % 300000000;
  32708. v142 = v105 + v141;
  32709. v107 = 13 * v106 >> 3;
  32710. if ( bLog )
  32711. printf(
  32712. "%s:%d(%ld) crc=%d\n",
  32713. "../../Common/DB_Struct.h",
  32714. 831,
  32715. v131->m_aPetDB[0].m_nIntPerception,
  32716. 13 * v106 >> 3);
  32717. v108 = v131->m_aPetDB[0].m_nRemainPoint % 300000000;
  32718. v143 = v107 + v142;
  32719. v109 = 13 * v108 >> 3;
  32720. if ( bLog )
  32721. printf("%s:%d(%ld) crc=%d\n", "../../Common/DB_Struct.h", 833, v131->m_aPetDB[0].m_nRemainPoint, 13 * v108 >> 3);
  32722. v110 = v131->m_aPetDB[0].m_nExp % 300000000;
  32723. v144 = v109 + v143;
  32724. v111 = 13 * v110 >> 3;
  32725. if ( bLog )
  32726. printf("%s:%d(%ld) crc=%d\n", "../../Common/DB_Struct.h", 834, v131->m_aPetDB[0].m_nExp, 13 * v110 >> 3);
  32727. v112 = v131->m_aPetDB[0].m_BaseAttrLevel1.m_pAttr[0] % 300000000;
  32728. v145 = v111 + v144;
  32729. v113 = 13 * v112 >> 3;
  32730. if ( bLog )
  32731. printf(
  32732. "%s:%d(%ld) crc=%d\n",
  32733. "../../Common/DB_Struct.h",
  32734. 836,
  32735. v131->m_aPetDB[0].m_BaseAttrLevel1.m_pAttr[0],
  32736. 13 * v112 >> 3);
  32737. v114 = v131->m_aPetDB[0].m_BaseAttrLevel1.m_pAttr[1] % 300000000;
  32738. v146 = v113 + v145;
  32739. v115 = 13 * v114 >> 3;
  32740. if ( bLog )
  32741. printf(
  32742. "%s:%d(%ld) crc=%d\n",
  32743. "../../Common/DB_Struct.h",
  32744. 837,
  32745. v131->m_aPetDB[0].m_BaseAttrLevel1.m_pAttr[1],
  32746. 13 * v114 >> 3);
  32747. v116 = v131->m_aPetDB[0].m_BaseAttrLevel1.m_pAttr[2] % 300000000;
  32748. v147 = v115 + v146;
  32749. v117 = 13 * v116 >> 3;
  32750. if ( bLog )
  32751. printf(
  32752. "%s:%d(%ld) crc=%d\n",
  32753. "../../Common/DB_Struct.h",
  32754. 838,
  32755. v131->m_aPetDB[0].m_BaseAttrLevel1.m_pAttr[2],
  32756. 13 * v116 >> 3);
  32757. v148 = v117 + v147;
  32758. v118 = 13 * (v131->m_aPetDB[0].m_BaseAttrLevel1.m_pAttr[3] % 300000000) >> 3;
  32759. if ( bLog )
  32760. printf(
  32761. "%s:%d(%ld) crc=%d\n",
  32762. "../../Common/DB_Struct.h",
  32763. 839,
  32764. v131->m_aPetDB[0].m_BaseAttrLevel1.m_pAttr[3],
  32765. v118);
  32766. v119 = v131->m_aPetDB[0].m_BaseAttrLevel1.m_pAttr[4] % 300000000;
  32767. v149 = v118 + v148;
  32768. v120 = 13 * v119 >> 3;
  32769. if ( bLog )
  32770. printf(
  32771. "%s:%d(%ld) crc=%d\n",
  32772. "../../Common/DB_Struct.h",
  32773. 840,
  32774. v131->m_aPetDB[0].m_BaseAttrLevel1.m_pAttr[4],
  32775. 13 * v119 >> 3);
  32776. v150 = v120 + v149;
  32777. v132 = v131;
  32778. v133 = 12;
  32779. do
  32780. {
  32781. v121 = v132->m_aPetDB[0].m_SkillList[0].m_nSkillID;
  32782. if ( v121 > 0 )
  32783. {
  32784. v122 = v132->m_aPetDB[0].m_SkillList[0].m_bSelfRealize % 300000000;
  32785. v123 = 13 * v122 >> 3;
  32786. if ( bLog )
  32787. {
  32788. printf(
  32789. "%s:%d(%ld) crc=%d\n",
  32790. "../../Common/DB_Struct.h",
  32791. 846,
  32792. v132->m_aPetDB[0].m_SkillList[0].m_bSelfRealize,
  32793. 13 * v122 >> 3);
  32794. v121 = v132->m_aPetDB[0].m_SkillList[0].m_nSkillID;
  32795. }
  32796. v124 = v121 % 300000000;
  32797. v151 = v123 + v150;
  32798. v125 = 13 * v124 >> 3;
  32799. if ( bLog )
  32800. printf("%s:%d(%ld) crc=%d\n", "../../Common/DB_Struct.h", 847, v121, 13 * v124 >> 3);
  32801. v150 = v125 + v151;
  32802. }
  32803. v132 = (_PET_DB_LIST_LOAD *)((char *)v132 + 3);
  32804. --v133;
  32805. }
  32806. while ( v133 >= 0 );
  32807. v153 += v150;
  32808. if ( bLog )
  32809. printf("m_aPetDB[%d]...End\n", v152);
  32810. }
  32811. ++v152;
  32812. v131 = (_PET_DB_LIST_LOAD *)((char *)v131 + 399);
  32813. }
  32814. while ( v152 <= 9 );
  32815. TotalCrcb = v153 + TotalCrca;
  32816. if ( bLog )
  32817. {
  32818. printf("curcrc=%u\n", TotalCrcb);
  32819. puts("start of m_Relation----------------------------------------");
  32820. }
  32821. TotalCrcc = g_CurWorld + TotalCrcb;
  32822. if ( bLog )
  32823. {
  32824. printf("curcrc=%u\n", TotalCrcc);
  32825. puts("start of g_CurWorld----------------------------------------");
  32826. }
  32827. return TotalCrcc;
  32828. }
  32829.  
  32830. //----- (0806A6D0) --------------------------------------------------------
  32831. bool __cdecl SafeMemCopy(void *pDest, const void *pSrc, const size_t DestSize, const size_t SrcSize)
  32832. {
  32833. if ( SrcSize > DestSize )
  32834. __assertex__(
  32835. "../../Common/GameUtil.cpp",
  32836. 0x4C4u,
  32837. "bool SafeMemCopy(void*, const void*, size_t, size_t)",
  32838. "FALSE",
  32839. "SafeMemCopy OverFlow");
  32840. memcpy(pDest, pSrc, SrcSize);
  32841. return 1;
  32842. }
  32843.  
  32844. //----- (0806A720) --------------------------------------------------------
  32845. bool __cdecl SafeStrCopy(char *pDest, const size_t DestSize, const char *pSrc, const size_t SrcSize)
  32846. {
  32847. if ( SrcSize > DestSize )
  32848. __assertex__(
  32849. "../../Common/GameUtil.cpp",
  32850. 0x4D3u,
  32851. "bool SafeStrCopy(char*, size_t, const char*, size_t)",
  32852. "FALSE",
  32853. "SafeStrCopy OverFlow");
  32854. if ( pSrc[SrcSize - 1] )
  32855. __assertex__(
  32856. "../../Common/GameUtil.cpp",
  32857. 0x4D8u,
  32858. "bool SafeStrCopy(char*, size_t, const char*, size_t)",
  32859. "FALSE",
  32860. "SafeStrCopy Truncation");
  32861. memcpy(pDest, pSrc, SrcSize);
  32862. return 1;
  32863. }
  32864.  
  32865. //----- (0806A794) --------------------------------------------------------
  32866. void __cdecl _tcf_0_14(void *a1)
  32867. {
  32868. std::ios_base::Init::~Init(&std::__ioinit);
  32869. }
  32870.  
  32871. //----- (0806A7A4) --------------------------------------------------------
  32872. void `global constructor keyed to'g_CmdArgv()
  32873. {
  32874. std::ios_base::Init::Init(&std::__ioinit);
  32875. __cxa_atexit(_tcf_0_14, 0, &_dso_handle);
  32876. }
  32877. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  32878.  
  32879. //----- (0806A7D0) --------------------------------------------------------
  32880. void __cdecl PacketFactoryManagerInstance::PacketFactoryManagerInstance(PacketFactoryManager *a2)
  32881. {
  32882. PacketFactoryManager::PacketFactoryManager(a2, 0x2C9u, 1);
  32883. a2->_vptr_PacketFactoryManager = (int (**)(...))&off_80C9930;
  32884. }
  32885. // 80C9930: using guessed type _DWORD (__cdecl *off_80C9930)(PacketFactoryManagerInstance *this);
  32886.  
  32887. //----- (0806A7F8) --------------------------------------------------------
  32888. void __cdecl PacketFactoryManagerInstance::PacketFactoryManagerInstance(PacketFactoryManager *a2)
  32889. {
  32890. PacketFactoryManager::PacketFactoryManager(a2, 0x2C9u, 1);
  32891. a2->_vptr_PacketFactoryManager = (int (**)(...))&off_80C9930;
  32892. }
  32893. // 80C9930: using guessed type _DWORD (__cdecl *off_80C9930)(PacketFactoryManagerInstance *this);
  32894.  
  32895. //----- (0806A820) --------------------------------------------------------
  32896. void __cdecl PacketFactoryManagerInstance::~PacketFactoryManagerInstance(PacketFactoryManager *a2)
  32897. {
  32898. a2->_vptr_PacketFactoryManager = (int (**)(...))&off_80C9930;
  32899. PacketFactoryManager::~PacketFactoryManager(a2);
  32900. }
  32901. // 80C9930: using guessed type _DWORD (__cdecl *off_80C9930)(PacketFactoryManagerInstance *this);
  32902.  
  32903. //----- (0806A83C) --------------------------------------------------------
  32904. void __cdecl PacketFactoryManagerInstance::~PacketFactoryManagerInstance(PacketFactoryManager *a2)
  32905. {
  32906. a2->_vptr_PacketFactoryManager = (int (**)(...))&off_80C9930;
  32907. PacketFactoryManager::~PacketFactoryManager(a2);
  32908. }
  32909. // 80C9930: using guessed type _DWORD (__cdecl *off_80C9930)(PacketFactoryManagerInstance *this);
  32910.  
  32911. //----- (0806A858) --------------------------------------------------------
  32912. void __cdecl PacketFactoryManagerInstance::~PacketFactoryManagerInstance(PacketFactoryManager *a2)
  32913. {
  32914. a2->_vptr_PacketFactoryManager = (int (**)(...))&off_80C9930;
  32915. PacketFactoryManager::~PacketFactoryManager(a2);
  32916. operator delete((IPRegionTable *const )a2);
  32917. }
  32918. // 80C9930: using guessed type _DWORD (__cdecl *off_80C9930)(PacketFactoryManagerInstance *this);
  32919.  
  32920. //----- (0806A880) --------------------------------------------------------
  32921. BOOL __cdecl PacketFactoryManagerInstance::Init(PacketFactoryManagerInstance *const this)
  32922. {
  32923. MyLock *v1; // eax
  32924. PacketFactory *v2; // eax
  32925. PacketFactory *v3; // eax
  32926. PacketFactory *v4; // eax
  32927. PacketFactory *v5; // eax
  32928. PacketFactory *v6; // eax
  32929. PacketFactory *v7; // eax
  32930. PacketFactory *v8; // eax
  32931. PacketFactory *v9; // eax
  32932. PacketFactory *v10; // eax
  32933. PacketFactory *v11; // eax
  32934. PacketFactory *v12; // eax
  32935. PacketFactory *v13; // eax
  32936. PacketFactory *v14; // eax
  32937. PacketFactory *v15; // eax
  32938. PacketFactory *v16; // eax
  32939. PacketFactory *v17; // eax
  32940. PacketFactory *v18; // eax
  32941. PacketFactory *v19; // eax
  32942. PacketFactory *v20; // eax
  32943. PacketFactory *v21; // eax
  32944. PacketFactory *v22; // eax
  32945. PacketFactory *v23; // eax
  32946. PacketFactory *v24; // eax
  32947. PacketFactory *v25; // eax
  32948. PacketFactory *v26; // eax
  32949. PacketFactory *v27; // eax
  32950. PacketFactory *v28; // eax
  32951. PacketFactory *v29; // eax
  32952. PacketFactory *v30; // eax
  32953. PacketFactory *v31; // eax
  32954. PacketFactory *v32; // eax
  32955. PacketFactory *v33; // eax
  32956. PacketFactory *v34; // eax
  32957. PacketFactory *v35; // eax
  32958. PacketFactory *v36; // eax
  32959. PacketFactory *v37; // eax
  32960. PacketFactory *v38; // eax
  32961. PacketFactory *v39; // eax
  32962. PacketFactory *v40; // eax
  32963. PacketFactory *v41; // eax
  32964. PacketFactory *v42; // eax
  32965. PacketFactory *v43; // eax
  32966. PacketFactory *v44; // eax
  32967. PacketFactory *v45; // eax
  32968. PacketFactory *v46; // eax
  32969. MyLock *autolock; // [esp+0h] [ebp-18h]
  32970.  
  32971. v1 = this->m_Lock;
  32972. autolock = this->m_Lock;
  32973. if ( v1 )
  32974. pthread_mutex_lock(&v1->m_Mutex);
  32975. v2 = (PacketFactory *)operator new(4u);
  32976. v2->_vptr_PacketFactory = (int (**)(...))&off_80CA090;
  32977. PacketFactoryManager::AddFactory(&this->0, v2);
  32978. v3 = (PacketFactory *)operator new(4u);
  32979. v3->_vptr_PacketFactory = (int (**)(...))&off_80CA110;
  32980. PacketFactoryManager::AddFactory(&this->0, v3);
  32981. v4 = (PacketFactory *)operator new(4u);
  32982. v4->_vptr_PacketFactory = (int (**)(...))&off_80CA170;
  32983. PacketFactoryManager::AddFactory(&this->0, v4);
  32984. v5 = (PacketFactory *)operator new(4u);
  32985. v5->_vptr_PacketFactory = (int (**)(...))&off_80CA1D0;
  32986. PacketFactoryManager::AddFactory(&this->0, v5);
  32987. v6 = (PacketFactory *)operator new(4u);
  32988. v6->_vptr_PacketFactory = (int (**)(...))&off_80CA218;
  32989. PacketFactoryManager::AddFactory(&this->0, v6);
  32990. v7 = (PacketFactory *)operator new(4u);
  32991. v7->_vptr_PacketFactory = (int (**)(...))&off_80CA270;
  32992. PacketFactoryManager::AddFactory(&this->0, v7);
  32993. v8 = (PacketFactory *)operator new(4u);
  32994. v8->_vptr_PacketFactory = (int (**)(...))&off_80CA2D0;
  32995. PacketFactoryManager::AddFactory(&this->0, v8);
  32996. v9 = (PacketFactory *)operator new(4u);
  32997. v9->_vptr_PacketFactory = (int (**)(...))&off_80CA330;
  32998. PacketFactoryManager::AddFactory(&this->0, v9);
  32999. v10 = (PacketFactory *)operator new(4u);
  33000. v10->_vptr_PacketFactory = (int (**)(...))&off_80CA390;
  33001. PacketFactoryManager::AddFactory(&this->0, v10);
  33002. v11 = (PacketFactory *)operator new(4u);
  33003. v11->_vptr_PacketFactory = (int (**)(...))&off_80CA3F0;
  33004. PacketFactoryManager::AddFactory(&this->0, v11);
  33005. v12 = (PacketFactory *)operator new(4u);
  33006. v12->_vptr_PacketFactory = (int (**)(...))&off_80CA450;
  33007. PacketFactoryManager::AddFactory(&this->0, v12);
  33008. v13 = (PacketFactory *)operator new(4u);
  33009. v13->_vptr_PacketFactory = (int (**)(...))&off_80CA4B0;
  33010. PacketFactoryManager::AddFactory(&this->0, v13);
  33011. v14 = (PacketFactory *)operator new(4u);
  33012. v14->_vptr_PacketFactory = (int (**)(...))&off_80CA4F8;
  33013. PacketFactoryManager::AddFactory(&this->0, v14);
  33014. v15 = (PacketFactory *)operator new(4u);
  33015. v15->_vptr_PacketFactory = (int (**)(...))&off_80CA550;
  33016. PacketFactoryManager::AddFactory(&this->0, v15);
  33017. v16 = (PacketFactory *)operator new(4u);
  33018. v16->_vptr_PacketFactory = (int (**)(...))&off_80CA598;
  33019. PacketFactoryManager::AddFactory(&this->0, v16);
  33020. v17 = (PacketFactory *)operator new(4u);
  33021. v17->_vptr_PacketFactory = (int (**)(...))&off_80CA5F0;
  33022. PacketFactoryManager::AddFactory(&this->0, v17);
  33023. v18 = (PacketFactory *)operator new(4u);
  33024. v18->_vptr_PacketFactory = (int (**)(...))&off_80CA648;
  33025. PacketFactoryManager::AddFactory(&this->0, v18);
  33026. v19 = (PacketFactory *)operator new(4u);
  33027. v19->_vptr_PacketFactory = (int (**)(...))&off_80CA6B0;
  33028. PacketFactoryManager::AddFactory(&this->0, v19);
  33029. v20 = (PacketFactory *)operator new(4u);
  33030. v20->_vptr_PacketFactory = (int (**)(...))&off_80CA710;
  33031. PacketFactoryManager::AddFactory(&this->0, v20);
  33032. v21 = (PacketFactory *)operator new(4u);
  33033. v21->_vptr_PacketFactory = (int (**)(...))&off_80CA770;
  33034. PacketFactoryManager::AddFactory(&this->0, v21);
  33035. v22 = (PacketFactory *)operator new(4u);
  33036. v22->_vptr_PacketFactory = (int (**)(...))&off_80CA7D0;
  33037. PacketFactoryManager::AddFactory(&this->0, v22);
  33038. v23 = (PacketFactory *)operator new(4u);
  33039. v23->_vptr_PacketFactory = (int (**)(...))&off_80CA818;
  33040. PacketFactoryManager::AddFactory(&this->0, v23);
  33041. v24 = (PacketFactory *)operator new(4u);
  33042. v24->_vptr_PacketFactory = (int (**)(...))&off_80CA860;
  33043. PacketFactoryManager::AddFactory(&this->0, v24);
  33044. v25 = (PacketFactory *)operator new(4u);
  33045. v25->_vptr_PacketFactory = (int (**)(...))&off_80CA8B0;
  33046. PacketFactoryManager::AddFactory(&this->0, v25);
  33047. v26 = (PacketFactory *)operator new(4u);
  33048. v26->_vptr_PacketFactory = (int (**)(...))&off_80CA908;
  33049. PacketFactoryManager::AddFactory(&this->0, v26);
  33050. v27 = (PacketFactory *)operator new(4u);
  33051. v27->_vptr_PacketFactory = (int (**)(...))&off_80CA970;
  33052. PacketFactoryManager::AddFactory(&this->0, v27);
  33053. v28 = (PacketFactory *)operator new(4u);
  33054. v28->_vptr_PacketFactory = (int (**)(...))&off_80CA9D0;
  33055. PacketFactoryManager::AddFactory(&this->0, v28);
  33056. v29 = (PacketFactory *)operator new(4u);
  33057. v29->_vptr_PacketFactory = (int (**)(...))&off_80CAA30;
  33058. PacketFactoryManager::AddFactory(&this->0, v29);
  33059. v30 = (PacketFactory *)operator new(4u);
  33060. v30->_vptr_PacketFactory = (int (**)(...))&off_80CAA90;
  33061. PacketFactoryManager::AddFactory(&this->0, v30);
  33062. v31 = (PacketFactory *)operator new(4u);
  33063. v31->_vptr_PacketFactory = (int (**)(...))&off_80CAAD8;
  33064. PacketFactoryManager::AddFactory(&this->0, v31);
  33065. v32 = (PacketFactory *)operator new(4u);
  33066. v32->_vptr_PacketFactory = (int (**)(...))&off_80CAB28;
  33067. PacketFactoryManager::AddFactory(&this->0, v32);
  33068. v33 = (PacketFactory *)operator new(4u);
  33069. v33->_vptr_PacketFactory = (int (**)(...))&off_80CAB88;
  33070. PacketFactoryManager::AddFactory(&this->0, v33);
  33071. v34 = (PacketFactory *)operator new(4u);
  33072. v34->_vptr_PacketFactory = (int (**)(...))&off_80CABF0;
  33073. PacketFactoryManager::AddFactory(&this->0, v34);
  33074. v35 = (PacketFactory *)operator new(4u);
  33075. v35->_vptr_PacketFactory = (int (**)(...))&off_80CAC50;
  33076. PacketFactoryManager::AddFactory(&this->0, v35);
  33077. v36 = (PacketFactory *)operator new(4u);
  33078. v36->_vptr_PacketFactory = (int (**)(...))&off_80CACB0;
  33079. PacketFactoryManager::AddFactory(&this->0, v36);
  33080. v37 = (PacketFactory *)operator new(4u);
  33081. v37->_vptr_PacketFactory = (int (**)(...))&off_80CAD08;
  33082. PacketFactoryManager::AddFactory(&this->0, v37);
  33083. v38 = (PacketFactory *)operator new(4u);
  33084. v38->_vptr_PacketFactory = (int (**)(...))&off_80CAD70;
  33085. PacketFactoryManager::AddFactory(&this->0, v38);
  33086. v39 = (PacketFactory *)operator new(4u);
  33087. v39->_vptr_PacketFactory = (int (**)(...))&off_80CADD0;
  33088. PacketFactoryManager::AddFactory(&this->0, v39);
  33089. v40 = (PacketFactory *)operator new(4u);
  33090. v40->_vptr_PacketFactory = (int (**)(...))&off_80CAE18;
  33091. PacketFactoryManager::AddFactory(&this->0, v40);
  33092. v41 = (PacketFactory *)operator new(4u);
  33093. v41->_vptr_PacketFactory = (int (**)(...))&off_80CAE68;
  33094. PacketFactoryManager::AddFactory(&this->0, v41);
  33095. v42 = (PacketFactory *)operator new(4u);
  33096. v42->_vptr_PacketFactory = (int (**)(...))&off_80CAEC8;
  33097. PacketFactoryManager::AddFactory(&this->0, v42);
  33098. v43 = (PacketFactory *)operator new(4u);
  33099. v43->_vptr_PacketFactory = (int (**)(...))&off_80CAF28;
  33100. PacketFactoryManager::AddFactory(&this->0, v43);
  33101. v44 = (PacketFactory *)operator new(4u);
  33102. v44->_vptr_PacketFactory = (int (**)(...))&off_80CAF70;
  33103. PacketFactoryManager::AddFactory(&this->0, v44);
  33104. v45 = (PacketFactory *)operator new(4u);
  33105. v45->_vptr_PacketFactory = (int (**)(...))&off_80CAFC8;
  33106. PacketFactoryManager::AddFactory(&this->0, v45);
  33107. v46 = (PacketFactory *)operator new(4u);
  33108. v46->_vptr_PacketFactory = (int (**)(...))&off_80CB030;
  33109. PacketFactoryManager::AddFactory(&this->0, v46);
  33110. if ( autolock )
  33111. pthread_mutex_unlock(&autolock->m_Mutex);
  33112. return 1;
  33113. }
  33114. // 80CA090: using guessed type _DWORD (__cdecl *off_80CA090)(Packets::CLAskLoginFactory *this);
  33115. // 80CA110: using guessed type _DWORD (__cdecl *off_80CA110)(Packets::CLAskCharListFactory *this);
  33116. // 80CA170: using guessed type _DWORD (__cdecl *off_80CA170)(Packets::CLAskCharLoginFactory *this);
  33117. // 80CA1D0: using guessed type _DWORD (__cdecl *off_80CA1D0)(Packets::CLConnectFactory *this);
  33118. // 80CA218: using guessed type _DWORD (__cdecl *off_80CA218)(Packets::CLAskCreateCharFactory *this);
  33119. // 80CA270: using guessed type _DWORD (__cdecl *off_80CA270)(Packets::CLAskDeleteCharFactory *this);
  33120. // 80CA2D0: using guessed type _DWORD (__cdecl *off_80CA2D0)(Packets::CLAskRegPassPortFactory *this);
  33121. // 80CA330: using guessed type _DWORD (__cdecl *off_80CA330)(Packets::CLAskCreateCodeFactory *this);
  33122. // 80CA390: using guessed type _DWORD (__cdecl *off_80CA390)(Packets::CLRegNewLicenseFactory *this);
  33123. // 80CA3F0: using guessed type _DWORD (__cdecl *off_80CA3F0)(Packets::CLAskLoginCodeFactory *this);
  33124. // 80CA450: using guessed type _DWORD (__cdecl *off_80CA450)(Packets::CLRegSafeSignFactory *this);
  33125. // 80CA4B0: using guessed type _DWORD (__cdecl *off_80CA4B0)(Packets::LCRetLoginFactory *this);
  33126. // 80CA4F8: using guessed type _DWORD (__cdecl *off_80CA4F8)(Packets::LCRetCharListFactory *this);
  33127. // 80CA550: using guessed type _DWORD (__cdecl *off_80CA550)(Packets::LCStatusFactory *this);
  33128. // 80CA598: using guessed type _DWORD (__cdecl *off_80CA598)(Packets::LCRetCharLoginFactory *this);
  33129. // 80CA5F0: using guessed type _DWORD (__cdecl *off_80CA5F0)(Packets::LCRetConnectFactory *this);
  33130. // 80CA648: using guessed type _DWORD (__cdecl *off_80CA648)(Packets::LCRetCreateCharFactory *this);
  33131. // 80CA6B0: using guessed type _DWORD (__cdecl *off_80CA6B0)(Packets::LCRetDeleteCharFactory *this);
  33132. // 80CA710: using guessed type _DWORD (__cdecl *off_80CA710)(Packets::LCRetCreateCodeFactory *this);
  33133. // 80CA770: using guessed type _DWORD (__cdecl *off_80CA770)(Packets::LCRetLoginCodeFactory *this);
  33134. // 80CA7D0: using guessed type _DWORD (__cdecl *off_80CA7D0)(Packets::KeyExchangeFactory *this);
  33135. // 80CA818: using guessed type _DWORD (__cdecl *off_80CA818)(Packets::SSConnectFactory *this);
  33136. // 80CA860: using guessed type _DWORD (__cdecl *off_80CA860)(Packets::SSScenePlayerCountFactory *this);
  33137. // 80CA8B0: using guessed type _DWORD (__cdecl *off_80CA8B0)(Packets::GWLWGCostLogFactory *this);
  33138. // 80CA908: using guessed type _DWORD (__cdecl *off_80CA908)(Packets::LWAskCharLoginFactory *this);
  33139. // 80CA970: using guessed type _DWORD (__cdecl *off_80CA970)(Packets::LWRetBillingStartFactory *this);
  33140. // 80CA9D0: using guessed type _DWORD (__cdecl *off_80CA9D0)(Packets::LWRetBillingEndFactory *this);
  33141. // 80CAA30: using guessed type _DWORD (__cdecl *off_80CAA30)(Packets::LWRetBillingKeepFactory *this);
  33142. // 80CAA90: using guessed type _DWORD (__cdecl *off_80CAA90)(Packets::LWRetPrizeFactory *this);
  33143. // 80CAAD8: using guessed type _DWORD (__cdecl *off_80CAAD8)(Packets::LWNotifyUserFactory *this);
  33144. // 80CAB28: using guessed type _DWORD (__cdecl *off_80CAB28)(Packets::LWChangeNameFactory *this);
  33145. // 80CAB88: using guessed type _DWORD (__cdecl *off_80CAB88)(Packets::LWOperateAccResultFactory *this);
  33146. // 80CABF0: using guessed type _DWORD (__cdecl *off_80CABF0)(Packets::WLRetCharLoginFactory *this);
  33147. // 80CAC50: using guessed type _DWORD (__cdecl *off_80CAC50)(Packets::WLBillingStartFactory *this);
  33148. // 80CACB0: using guessed type _DWORD (__cdecl *off_80CACB0)(Packets::WLBillingEndFactory *this);
  33149. // 80CAD08: using guessed type _DWORD (__cdecl *off_80CAD08)(Packets::WLBillingKeepFactory *this);
  33150. // 80CAD70: using guessed type _DWORD (__cdecl *off_80CAD70)(Packets::WLBillingKickFactory *this);
  33151. // 80CADD0: using guessed type _DWORD (__cdecl *off_80CADD0)(Packets::WLAskPrizeFactory *this);
  33152. // 80CAE18: using guessed type _DWORD (__cdecl *off_80CAE18)(Packets::WLNotifyUserFactory *this);
  33153. // 80CAE68: using guessed type _DWORD (__cdecl *off_80CAE68)(Packets::WLChangeNameFactory *this);
  33154. // 80CAEC8: using guessed type _DWORD (__cdecl *off_80CAEC8)(Packets::WLOperateAccFactory *this);
  33155. // 80CAF28: using guessed type _DWORD (__cdecl *off_80CAF28)(Packets::LBAskAuthFactory *this);
  33156. // 80CAF70: using guessed type _DWORD (__cdecl *off_80CAF70)(Packets::LBAskRegAuthFactory *this);
  33157. // 80CAFC8: using guessed type _DWORD (__cdecl *off_80CAFC8)(Packets::LBAskRegLicenseFactory *this);
  33158. // 80CB030: using guessed type _DWORD (__cdecl *off_80CB030)(Packets::BLRetAuthFactory *this);
  33159.  
  33160. //----- (0806AD8D) --------------------------------------------------------
  33161. void __noreturn sub_806AD8D()
  33162. {
  33163. __cxa_begin_catch();
  33164. __assertspecial__(
  33165. "../../Common/PacketFactoryManager.cpp",
  33166. 0x5D2u,
  33167. "virtual BOOL PacketFactoryManagerInstance::Init()",
  33168. "FALSE",
  33169. "virtual BOOL PacketFactoryManagerInstance::Init()");
  33170. }
  33171.  
  33172. //----- (0806ADC8) --------------------------------------------------------
  33173. void __usercall __noreturn sub_806ADC8(pthread_mutex_t *a1@<eax>, int a2@<ebp>)
  33174. {
  33175. pthread_mutex_unlock(a1);
  33176. *(_DWORD *)(a2 - 24) = 0;
  33177. sub_806AD8D();
  33178. }
  33179.  
  33180. //----- (0806ADF0) --------------------------------------------------------
  33181. void __cdecl BillPacketFactoryManagerInstance::BillPacketFactoryManagerInstance(BillPacketFactoryManager *a2)
  33182. {
  33183. BillPacketFactoryManager::BillPacketFactoryManager(a2, 0xFEu);
  33184. a2->_vptr_BillPacketFactoryManager = (int (**)(...))&off_80C9970;
  33185. }
  33186. // 80C9970: using guessed type _DWORD (__cdecl *off_80C9970)(BillPacketFactoryManagerInstance *this);
  33187.  
  33188. //----- (0806AE14) --------------------------------------------------------
  33189. void __cdecl BillPacketFactoryManagerInstance::BillPacketFactoryManagerInstance(BillPacketFactoryManager *a2)
  33190. {
  33191. BillPacketFactoryManager::BillPacketFactoryManager(a2, 0xFEu);
  33192. a2->_vptr_BillPacketFactoryManager = (int (**)(...))&off_80C9970;
  33193. }
  33194. // 80C9970: using guessed type _DWORD (__cdecl *off_80C9970)(BillPacketFactoryManagerInstance *this);
  33195.  
  33196. //----- (0806AE38) --------------------------------------------------------
  33197. void __cdecl BillPacketFactoryManagerInstance::~BillPacketFactoryManagerInstance(BillPacketFactoryManager *a2)
  33198. {
  33199. a2->_vptr_BillPacketFactoryManager = (int (**)(...))&off_80C9970;
  33200. BillPacketFactoryManager::~BillPacketFactoryManager(a2);
  33201. }
  33202. // 80C9970: using guessed type _DWORD (__cdecl *off_80C9970)(BillPacketFactoryManagerInstance *this);
  33203.  
  33204. //----- (0806AE54) --------------------------------------------------------
  33205. void __cdecl BillPacketFactoryManagerInstance::~BillPacketFactoryManagerInstance(BillPacketFactoryManager *a2)
  33206. {
  33207. a2->_vptr_BillPacketFactoryManager = (int (**)(...))&off_80C9970;
  33208. BillPacketFactoryManager::~BillPacketFactoryManager(a2);
  33209. }
  33210. // 80C9970: using guessed type _DWORD (__cdecl *off_80C9970)(BillPacketFactoryManagerInstance *this);
  33211.  
  33212. //----- (0806AE70) --------------------------------------------------------
  33213. void __cdecl BillPacketFactoryManagerInstance::~BillPacketFactoryManagerInstance(BillPacketFactoryManager *a2)
  33214. {
  33215. a2->_vptr_BillPacketFactoryManager = (int (**)(...))&off_80C9970;
  33216. BillPacketFactoryManager::~BillPacketFactoryManager(a2);
  33217. operator delete((IPRegionTable *const )a2);
  33218. }
  33219. // 80C9970: using guessed type _DWORD (__cdecl *off_80C9970)(BillPacketFactoryManagerInstance *this);
  33220.  
  33221. //----- (0806AE98) --------------------------------------------------------
  33222. BOOL __cdecl BillPacketFactoryManagerInstance::Init(BillPacketFactoryManagerInstance *const this)
  33223. {
  33224. BillPacketFactory *v1; // eax
  33225. BillPacketFactory *v2; // eax
  33226. BillPacketFactory *v3; // eax
  33227. BillPacketFactory *v4; // eax
  33228. BillPacketFactory *v5; // eax
  33229. BillPacketFactory *v6; // eax
  33230. BillPacketFactory *v7; // eax
  33231. BillPacketFactory *v8; // eax
  33232. BillPacketFactory *v9; // eax
  33233. BillPacketFactory *v10; // eax
  33234. BillPacketFactory *v11; // eax
  33235. BillPacketFactory *v12; // eax
  33236. BillPacketFactory *v13; // eax
  33237. BillPacketFactory *v14; // eax
  33238. BillPacketFactory *v15; // eax
  33239. BillPacketFactory *v16; // eax
  33240. BillPacketFactory *v17; // eax
  33241. BillPacketFactory *v18; // eax
  33242. BillPacketFactory *v19; // eax
  33243.  
  33244. v1 = (BillPacketFactory *)operator new(4u);
  33245. v1->_vptr_BillPacketFactory = (int (**)(...))&off_80C99D0;
  33246. BillPacketFactoryManager::AddFactory(&this->0, v1);
  33247. v2 = (BillPacketFactory *)operator new(4u);
  33248. v2->_vptr_BillPacketFactory = (int (**)(...))&off_80C9A68;
  33249. BillPacketFactoryManager::AddFactory(&this->0, v2);
  33250. v3 = (BillPacketFactory *)operator new(4u);
  33251. v3->_vptr_BillPacketFactory = (int (**)(...))&off_80C9AD0;
  33252. BillPacketFactoryManager::AddFactory(&this->0, v3);
  33253. v4 = (BillPacketFactory *)operator new(4u);
  33254. v4->_vptr_BillPacketFactory = (int (**)(...))&off_80C9B30;
  33255. BillPacketFactoryManager::AddFactory(&this->0, v4);
  33256. v5 = (BillPacketFactory *)operator new(4u);
  33257. v5->_vptr_BillPacketFactory = (int (**)(...))&off_80C9B90;
  33258. BillPacketFactoryManager::AddFactory(&this->0, v5);
  33259. v6 = (BillPacketFactory *)operator new(4u);
  33260. v6->_vptr_BillPacketFactory = (int (**)(...))&off_80C9BF0;
  33261. BillPacketFactoryManager::AddFactory(&this->0, v6);
  33262. v7 = (BillPacketFactory *)operator new(4u);
  33263. v7->_vptr_BillPacketFactory = (int (**)(...))&off_80C9C50;
  33264. BillPacketFactoryManager::AddFactory(&this->0, v7);
  33265. v8 = (BillPacketFactory *)operator new(4u);
  33266. v8->_vptr_BillPacketFactory = (int (**)(...))&off_80C9CA8;
  33267. BillPacketFactoryManager::AddFactory(&this->0, v8);
  33268. v9 = (BillPacketFactory *)operator new(4u);
  33269. v9->_vptr_BillPacketFactory = (int (**)(...))&off_80C9D10;
  33270. BillPacketFactoryManager::AddFactory(&this->0, v9);
  33271. v10 = (BillPacketFactory *)operator new(4u);
  33272. v10->_vptr_BillPacketFactory = (int (**)(...))&off_80C9D58;
  33273. BillPacketFactoryManager::AddFactory(&this->0, v10);
  33274. v11 = (BillPacketFactory *)operator new(4u);
  33275. v11->_vptr_BillPacketFactory = (int (**)(...))&off_80C9DB0;
  33276. BillPacketFactoryManager::AddFactory(&this->0, v11);
  33277. v12 = (BillPacketFactory *)operator new(4u);
  33278. v12->_vptr_BillPacketFactory = (int (**)(...))&off_80C9DF8;
  33279. BillPacketFactoryManager::AddFactory(&this->0, v12);
  33280. v13 = (BillPacketFactory *)operator new(4u);
  33281. v13->_vptr_BillPacketFactory = (int (**)(...))&off_80C9E40;
  33282. BillPacketFactoryManager::AddFactory(&this->0, v13);
  33283. v14 = (BillPacketFactory *)operator new(4u);
  33284. v14->_vptr_BillPacketFactory = (int (**)(...))&off_80C9E90;
  33285. BillPacketFactoryManager::AddFactory(&this->0, v14);
  33286. v15 = (BillPacketFactory *)operator new(4u);
  33287. v15->_vptr_BillPacketFactory = (int (**)(...))&off_80C9ED8;
  33288. BillPacketFactoryManager::AddFactory(&this->0, v15);
  33289. v16 = (BillPacketFactory *)operator new(4u);
  33290. v16->_vptr_BillPacketFactory = (int (**)(...))&off_80C9F30;
  33291. BillPacketFactoryManager::AddFactory(&this->0, v16);
  33292. v17 = (BillPacketFactory *)operator new(4u);
  33293. v17->_vptr_BillPacketFactory = (int (**)(...))&off_80C9F78;
  33294. BillPacketFactoryManager::AddFactory(&this->0, v17);
  33295. v18 = (BillPacketFactory *)operator new(4u);
  33296. v18->_vptr_BillPacketFactory = (int (**)(...))&off_80C9FD0;
  33297. BillPacketFactoryManager::AddFactory(&this->0, v18);
  33298. v19 = (BillPacketFactory *)operator new(4u);
  33299. v19->_vptr_BillPacketFactory = (int (**)(...))&off_80CA030;
  33300. BillPacketFactoryManager::AddFactory(&this->0, v19);
  33301. return 1;
  33302. }
  33303. // 80C99D0: using guessed type _DWORD (__cdecl *off_80C99D0)(Packets::BLRetConnectFactory *this);
  33304. // 80C9A68: using guessed type _DWORD (__cdecl *off_80C9A68)(Packets::BLRetKeepLiveFactory *this);
  33305. // 80C9AD0: using guessed type _DWORD (__cdecl *off_80C9AD0)(Packets::BLRetAccCheckFactory *this);
  33306. // 80C9B30: using guessed type _DWORD (__cdecl *off_80C9B30)(Packets::BLRetBillingStartFactory *this);
  33307. // 80C9B90: using guessed type _DWORD (__cdecl *off_80C9B90)(Packets::BLRetBillingEndFactory *this);
  33308. // 80C9BF0: using guessed type _DWORD (__cdecl *off_80C9BF0)(Packets::BLRetBillingKeepFactory *this);
  33309. // 80C9C50: using guessed type _DWORD (__cdecl *off_80C9C50)(Packets::BLRetKickALLFactory *this);
  33310. // 80C9CA8: using guessed type _DWORD (__cdecl *off_80C9CA8)(Packets::BLRetRegPassPortFactory *this);
  33311. // 80C9D10: using guessed type _DWORD (__cdecl *off_80C9D10)(Packets::BLRetPrizeFactory *this);
  33312. // 80C9D58: using guessed type _DWORD (__cdecl *off_80C9D58)(Packets::BLRetAskPointFactory *this);
  33313. // 80C9DB0: using guessed type _DWORD (__cdecl *off_80C9DB0)(Packets::BLRetAskBuyFactory *this);
  33314. // 80C9DF8: using guessed type _DWORD (__cdecl *off_80C9DF8)(Packets::LBLCostLogFactory *this);
  33315. // 80C9E40: using guessed type _DWORD (__cdecl *off_80C9E40)(Packets::LBLAskNewUserCardFactory *this);
  33316. // 80C9E90: using guessed type _DWORD (__cdecl *off_80C9E90)(Packets::LBLNewPrizeFactory *this);
  33317. // 80C9ED8: using guessed type _DWORD (__cdecl *off_80C9ED8)(Packets::LBLNewCheckPrizeFactory *this);
  33318. // 80C9F30: using guessed type _DWORD (__cdecl *off_80C9F30)(Packets::LBLAskMigFactory *this);
  33319. // 80C9F78: using guessed type _DWORD (__cdecl *off_80C9F78)(Packets::LBLRegNewLicenseFactory *this);
  33320. // 80C9FD0: using guessed type _DWORD (__cdecl *off_80C9FD0)(Packets::LBLCardCheckPrizeFactory *this);
  33321. // 80CA030: using guessed type _DWORD (__cdecl *off_80CA030)(Packets::LBLOperateAccFactory *this);
  33322.  
  33323. //----- (0806B0F0) --------------------------------------------------------
  33324. void __cdecl _tcf_0_15(void *a1)
  33325. {
  33326. std::ios_base::Init::~Init(&std::__ioinit);
  33327. }
  33328.  
  33329. //----- (0806B100) --------------------------------------------------------
  33330. void `global constructor keyed to'g_pPacketFactoryManager()
  33331. {
  33332. std::ios_base::Init::Init(&std::__ioinit);
  33333. __cxa_atexit(_tcf_0_15, 0, &_dso_handle);
  33334. }
  33335. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  33336.  
  33337. //----- (0806B12C) --------------------------------------------------------
  33338. void __cdecl PacketFactory::~PacketFactory(_DWORD *a2)
  33339. {
  33340. *a2 = off_80CA0F0;
  33341. }
  33342. // 80CA0F0: using guessed type _DWORD (__cdecl *off_80CA0F0[2])(PacketFactory *this);
  33343.  
  33344. //----- (0806B13C) --------------------------------------------------------
  33345. void __cdecl PacketFactory::~PacketFactory(IPRegionTable *const a2)
  33346. {
  33347. a2->_vptr_IPRegionTable = (int (**)(...))off_80CA0F0;
  33348. operator delete(a2);
  33349. }
  33350. // 80CA0F0: using guessed type _DWORD (__cdecl *off_80CA0F0[2])(PacketFactory *this);
  33351.  
  33352. //----- (0806B150) --------------------------------------------------------
  33353. Packet *__cdecl Packets::CLAskLoginFactory::CreatePacket(Packets::CLAskLoginFactory *const this)
  33354. {
  33355. int v1; // esi
  33356. int v2; // edi
  33357. signed int v3; // ecx
  33358. _WORD *v4; // ebx
  33359. _BYTE *v5; // edi
  33360.  
  33361. v1 = operator new(0x1A8u);
  33362. Packet::Packet(v1);
  33363. *(_DWORD *)v1 = off_80CC908;
  33364. memset((void *)(v1 + 12), 0, 0x30u);
  33365. v2 = v1 + 60;
  33366. *(_WORD *)v2 = 0;
  33367. *(_BYTE *)(v2 + 2) = 0;
  33368. memset((void *)(v1 + 63), 0, 0x20u);
  33369. v3 = 0;
  33370. *(_BYTE *)(v1 + 95) = 0;
  33371. v4 = (_WORD *)(v1 + 100);
  33372. do
  33373. {
  33374. ++v3;
  33375. *v4 = 0;
  33376. v5 = v4 + 1;
  33377. v4 = (_WORD *)((char *)v4 + 3);
  33378. *v5 = 0;
  33379. }
  33380. while ( v3 <= 2 );
  33381. memset((void *)(v1 + 109), 0, 0x20u);
  33382. *(_BYTE *)(v1 + 141) = 0;
  33383. memset((void *)(v1 + 144), 0, 0x10u);
  33384. return (Packet *)v1;
  33385. }
  33386. // 80CC908: using guessed type _DWORD (__cdecl *off_80CC908[2])(Packets::CLAskLogin *this);
  33387.  
  33388. //----- (0806B1E8) --------------------------------------------------------
  33389. PacketID_t __cdecl Packets::CLAskLoginFactory::GetPacketID(const Packets::CLAskLoginFactory *const this)
  33390. {
  33391. return 299;
  33392. }
  33393.  
  33394. //----- (0806B1F4) --------------------------------------------------------
  33395. UINT __cdecl Packets::CLAskLoginFactory::GetPacketMaxSize(const Packets::CLAskLoginFactory *const this)
  33396. {
  33397. return 407;
  33398. }
  33399.  
  33400. //----- (0806B200) --------------------------------------------------------
  33401. Packet *__cdecl Packets::CLAskCharListFactory::CreatePacket(Packets::CLAskCharListFactory *const this)
  33402. {
  33403. Packet *v1; // esi
  33404.  
  33405. v1 = (Packet *)operator new(0x44u);
  33406. Packet::Packet((int)v1);
  33407. v1->_vptr_Packet = (int (**)(...))off_80CC288;
  33408. return v1;
  33409. }
  33410. // 80CC288: using guessed type _DWORD (__cdecl *off_80CC288[2])(Packets::CLAskCharList *this);
  33411.  
  33412. //----- (0806B240) --------------------------------------------------------
  33413. PacketID_t __cdecl Packets::CLAskCharListFactory::GetPacketID(const Packets::CLAskCharListFactory *const this)
  33414. {
  33415. return 13;
  33416. }
  33417.  
  33418. //----- (0806B24C) --------------------------------------------------------
  33419. UINT __cdecl Packets::CLAskCharListFactory::GetPacketMaxSize(const Packets::CLAskCharListFactory *const this)
  33420. {
  33421. return 50;
  33422. }
  33423.  
  33424. //----- (0806B258) --------------------------------------------------------
  33425. Packet *__cdecl Packets::CLAskCharLoginFactory::CreatePacket(Packets::CLAskCharLoginFactory *const this)
  33426. {
  33427. Packet *v1; // esi
  33428.  
  33429. v1 = (Packet *)operator new(0x14u);
  33430. Packet::Packet((int)v1);
  33431. v1->_vptr_Packet = (int (**)(...))off_80CC428;
  33432. return v1;
  33433. }
  33434. // 80CC428: using guessed type _DWORD (__cdecl *off_80CC428[2])(Packets::CLAskCharLogin *this);
  33435.  
  33436. //----- (0806B298) --------------------------------------------------------
  33437. PacketID_t __cdecl Packets::CLAskCharLoginFactory::GetPacketID(const Packets::CLAskCharLoginFactory *const this)
  33438. {
  33439. return 596;
  33440. }
  33441.  
  33442. //----- (0806B2A4) --------------------------------------------------------
  33443. UINT __cdecl Packets::CLAskCharLoginFactory::GetPacketMaxSize(const Packets::CLAskCharLoginFactory *const this)
  33444. {
  33445. return 8;
  33446. }
  33447.  
  33448. //----- (0806B2B0) --------------------------------------------------------
  33449. Packet *__cdecl Packets::CLConnectFactory::CreatePacket(Packets::CLConnectFactory *const this)
  33450. {
  33451. Packet *v1; // esi
  33452.  
  33453. v1 = (Packet *)operator new(0x14u);
  33454. Packet::Packet((int)v1);
  33455. v1->_vptr_Packet = (int (**)(...))off_80CD088;
  33456. return v1;
  33457. }
  33458. // 80CD088: using guessed type _DWORD (__cdecl *off_80CD088[2])(Packets::CLConnect *this);
  33459.  
  33460. //----- (0806B2F0) --------------------------------------------------------
  33461. PacketID_t __cdecl Packets::CLConnectFactory::GetPacketID(const Packets::CLConnectFactory *const this)
  33462. {
  33463. return 355;
  33464. }
  33465.  
  33466. //----- (0806B2FC) --------------------------------------------------------
  33467. UINT __cdecl Packets::CLConnectFactory::GetPacketMaxSize(const Packets::CLConnectFactory *const this)
  33468. {
  33469. return 5;
  33470. }
  33471.  
  33472. //----- (0806B308) --------------------------------------------------------
  33473. Packet *__cdecl Packets::CLAskCreateCharFactory::CreatePacket(Packets::CLAskCreateCharFactory *const this)
  33474. {
  33475. int v1; // esi
  33476.  
  33477. v1 = operator new(0x78u);
  33478. Packet::Packet(v1);
  33479. *(_DWORD *)v1 = off_80CC588;
  33480. memset((void *)(v1 + 12), 0, 0x1Cu);
  33481. *(_WORD *)(v1 + 40) = 0;
  33482. return (Packet *)v1;
  33483. }
  33484. // 80CC588: using guessed type _DWORD (__cdecl *off_80CC588[2])(Packets::CLAskCreateChar *this);
  33485.  
  33486. //----- (0806B358) --------------------------------------------------------
  33487. PacketID_t __cdecl Packets::CLAskCreateCharFactory::GetPacketID(const Packets::CLAskCreateCharFactory *const this)
  33488. {
  33489. return 638;
  33490. }
  33491.  
  33492. //----- (0806B364) --------------------------------------------------------
  33493. UINT __cdecl Packets::CLAskCreateCharFactory::GetPacketMaxSize(const Packets::CLAskCreateCharFactory *const this)
  33494. {
  33495. return 47;
  33496. }
  33497.  
  33498. //----- (0806B370) --------------------------------------------------------
  33499. Packet *__cdecl Packets::CLAskDeleteCharFactory::CreatePacket(Packets::CLAskDeleteCharFactory *const this)
  33500. {
  33501. Packet *v1; // esi
  33502.  
  33503. v1 = (Packet *)operator new(0x48u);
  33504. Packet::Packet((int)v1);
  33505. v1->_vptr_Packet = (int (**)(...))off_80CC748;
  33506. return v1;
  33507. }
  33508. // 80CC748: using guessed type _DWORD (__cdecl *off_80CC748[2])(Packets::CLAskDeleteChar *this);
  33509.  
  33510. //----- (0806B3B0) --------------------------------------------------------
  33511. PacketID_t __cdecl Packets::CLAskDeleteCharFactory::GetPacketID(const Packets::CLAskDeleteCharFactory *const this)
  33512. {
  33513. return 1;
  33514. }
  33515.  
  33516. //----- (0806B3BC) --------------------------------------------------------
  33517. UINT __cdecl Packets::CLAskDeleteCharFactory::GetPacketMaxSize(const Packets::CLAskDeleteCharFactory *const this)
  33518. {
  33519. return 4;
  33520. }
  33521.  
  33522. //----- (0806B3C8) --------------------------------------------------------
  33523. Packet *__cdecl Packets::CLAskRegPassPortFactory::CreatePacket(Packets::CLAskRegPassPortFactory *const this)
  33524. {
  33525. int v1; // esi
  33526. int v2; // edi
  33527.  
  33528. v1 = operator new(0x1C4u);
  33529. Packet::Packet(v1);
  33530. *(_DWORD *)v1 = off_80CCD48;
  33531. memset((void *)(v1 + 12), 0, 0x30u);
  33532. v2 = v1 + 60;
  33533. *(_WORD *)v2 = 0;
  33534. *(_BYTE *)(v2 + 2) = 0;
  33535. memset((void *)(v1 + 63), 0, 0x20u);
  33536. *(_BYTE *)(v1 + 95) = 0;
  33537. memset((void *)(v1 + 96), 0, 0x20u);
  33538. *(_BYTE *)(v1 + 128) = 0;
  33539. memset((void *)(v1 + 129), 0, 0x20u);
  33540. *(_BYTE *)(v1 + 161) = 0;
  33541. memset((void *)(v1 + 162), 0, 0x20u);
  33542. *(_BYTE *)(v1 + 194) = 0;
  33543. memset((void *)(v1 + 195), 0, 0x100u);
  33544. return (Packet *)v1;
  33545. }
  33546. // 80CCD48: using guessed type _DWORD (__cdecl *off_80CCD48[2])(Packets::CLAskRegPassPort *this);
  33547.  
  33548. //----- (0806B458) --------------------------------------------------------
  33549. PacketID_t __cdecl Packets::CLAskRegPassPortFactory::GetPacketID(const Packets::CLAskRegPassPortFactory *const this)
  33550. {
  33551. return 439;
  33552. }
  33553.  
  33554. //----- (0806B464) --------------------------------------------------------
  33555. UINT __cdecl Packets::CLAskRegPassPortFactory::GetPacketMaxSize(const Packets::CLAskRegPassPortFactory *const this)
  33556. {
  33557. return 433;
  33558. }
  33559.  
  33560. //----- (0806B470) --------------------------------------------------------
  33561. Packet *__cdecl Packets::CLAskCreateCodeFactory::CreatePacket(Packets::CLAskCreateCodeFactory *const this)
  33562. {
  33563. int v1; // esi
  33564.  
  33565. v1 = operator new(0x18u);
  33566. Packet::Packet(v1);
  33567. *(_DWORD *)v1 = off_80D1FA8;
  33568. *(_BYTE *)(v1 + 12) = 0;
  33569. *(_DWORD *)(v1 + 14) = 0;
  33570. *(_DWORD *)(v1 + 18) = 0;
  33571. return (Packet *)v1;
  33572. }
  33573. // 80D1FA8: using guessed type _DWORD (__cdecl *off_80D1FA8[2])(Packets::CLAskCreateCode *this);
  33574.  
  33575. //----- (0806B4C4) --------------------------------------------------------
  33576. PacketID_t __cdecl Packets::CLAskCreateCodeFactory::GetPacketID(const Packets::CLAskCreateCodeFactory *const this)
  33577. {
  33578. return 31;
  33579. }
  33580.  
  33581. //----- (0806B4D0) --------------------------------------------------------
  33582. UINT __cdecl Packets::CLAskCreateCodeFactory::GetPacketMaxSize(const Packets::CLAskCreateCodeFactory *const this)
  33583. {
  33584. return 9;
  33585. }
  33586.  
  33587. //----- (0806B4DC) --------------------------------------------------------
  33588. Packet *__cdecl Packets::CLRegNewLicenseFactory::CreatePacket(Packets::CLRegNewLicenseFactory *const this)
  33589. {
  33590. int v1; // esi
  33591. int v2; // edi
  33592.  
  33593. v1 = operator new(0x40u);
  33594. Packet::Packet(v1);
  33595. *(_DWORD *)v1 = off_80D22A8;
  33596. *(_BYTE *)(v1 + 63) = 1;
  33597. memset((void *)(v1 + 12), 0, 0x30u);
  33598. v2 = v1 + 60;
  33599. *(_WORD *)v2 = 0;
  33600. *(_BYTE *)(v2 + 2) = 0;
  33601. return (Packet *)v1;
  33602. }
  33603. // 80D22A8: using guessed type _DWORD (__cdecl *off_80D22A8[2])(Packets::CLRegNewLicense *this);
  33604.  
  33605. //----- (0806B534) --------------------------------------------------------
  33606. PacketID_t __cdecl Packets::CLRegNewLicenseFactory::GetPacketID(const Packets::CLRegNewLicenseFactory *const this)
  33607. {
  33608. return 103;
  33609. }
  33610.  
  33611. //----- (0806B540) --------------------------------------------------------
  33612. UINT __cdecl Packets::CLRegNewLicenseFactory::GetPacketMaxSize(const Packets::CLRegNewLicenseFactory *const this)
  33613. {
  33614. return 51;
  33615. }
  33616.  
  33617. //----- (0806B54C) --------------------------------------------------------
  33618. Packet *__cdecl Packets::CLAskLoginCodeFactory::CreatePacket(Packets::CLAskLoginCodeFactory *const this)
  33619. {
  33620. int v1; // esi
  33621.  
  33622. v1 = operator new(0x18u);
  33623. Packet::Packet(v1);
  33624. *(_DWORD *)v1 = off_80CCBE8;
  33625. *(_BYTE *)(v1 + 12) = 0;
  33626. *(_DWORD *)(v1 + 14) = 0;
  33627. *(_DWORD *)(v1 + 18) = 0;
  33628. return (Packet *)v1;
  33629. }
  33630. // 80CCBE8: using guessed type _DWORD (__cdecl *off_80CCBE8[2])(Packets::CLAskLoginCode *this);
  33631.  
  33632. //----- (0806B5A0) --------------------------------------------------------
  33633. PacketID_t __cdecl Packets::CLAskLoginCodeFactory::GetPacketID(const Packets::CLAskLoginCodeFactory *const this)
  33634. {
  33635. return 572;
  33636. }
  33637.  
  33638. //----- (0806B5AC) --------------------------------------------------------
  33639. UINT __cdecl Packets::CLAskLoginCodeFactory::GetPacketMaxSize(const Packets::CLAskLoginCodeFactory *const this)
  33640. {
  33641. return 9;
  33642. }
  33643.  
  33644. //----- (0806B5B8) --------------------------------------------------------
  33645. Packet *__cdecl Packets::CLRegSafeSignFactory::CreatePacket(Packets::CLRegSafeSignFactory *const this)
  33646. {
  33647. int v1; // esi
  33648. int v2; // edi
  33649.  
  33650. v1 = operator new(0x40u);
  33651. Packet::Packet(v1);
  33652. *(_DWORD *)v1 = off_80D27C8;
  33653. *(_BYTE *)(v1 + 63) = 0;
  33654. memset((void *)(v1 + 12), 0, 0x30u);
  33655. v2 = v1 + 60;
  33656. *(_WORD *)v2 = 0;
  33657. *(_BYTE *)(v2 + 2) = 0;
  33658. return (Packet *)v1;
  33659. }
  33660. // 80D27C8: using guessed type _DWORD (__cdecl *off_80D27C8[2])(Packets::CLRegSafeSign *this);
  33661.  
  33662. //----- (0806B610) --------------------------------------------------------
  33663. PacketID_t __cdecl Packets::CLRegSafeSignFactory::GetPacketID(const Packets::CLRegSafeSignFactory *const this)
  33664. {
  33665. return 564;
  33666. }
  33667.  
  33668. //----- (0806B61C) --------------------------------------------------------
  33669. UINT __cdecl Packets::CLRegSafeSignFactory::GetPacketMaxSize(const Packets::CLRegSafeSignFactory *const this)
  33670. {
  33671. return 51;
  33672. }
  33673.  
  33674. //----- (0806B628) --------------------------------------------------------
  33675. Packet *__cdecl Packets::LCRetLoginFactory::CreatePacket(Packets::LCRetLoginFactory *const this)
  33676. {
  33677. Packet *v1; // esi
  33678.  
  33679. v1 = (Packet *)operator new(0x58u);
  33680. Packet::Packet((int)v1);
  33681. v1->_vptr_Packet = (int (**)(...))off_80CED48;
  33682. v1[7]._vptr_Packet = 0;
  33683. memset(&v1[5].m_fromWhere, 0, 0x10u);
  33684. return v1;
  33685. }
  33686. // 80CED48: using guessed type _DWORD (__cdecl *off_80CED48[2])(Packets::LCRetLogin *this);
  33687.  
  33688. //----- (0806B680) --------------------------------------------------------
  33689. PacketID_t __cdecl Packets::LCRetLoginFactory::GetPacketID(const Packets::LCRetLoginFactory *const this)
  33690. {
  33691. return 223;
  33692. }
  33693.  
  33694. //----- (0806B68C) --------------------------------------------------------
  33695. UINT __cdecl Packets::LCRetLoginFactory::GetPacketMaxSize(const Packets::LCRetLoginFactory *const this)
  33696. {
  33697. return 73;
  33698. }
  33699.  
  33700. //----- (0806B698) --------------------------------------------------------
  33701. Packet *__cdecl Packets::LCRetCharListFactory::CreatePacket(Packets::LCRetCharListFactory *const this)
  33702. {
  33703. PACKET_FROM_WHERE *v1; // esi
  33704. int v2; // ebx
  33705. signed int v3; // eax
  33706. signed int v4; // eax
  33707. signed int v6; // [esp+10h] [ebp-14h]
  33708. Packet *v7; // [esp+14h] [ebp-10h]
  33709.  
  33710. v7 = (Packet *)operator new(0x5FCu);
  33711. Packet::Packet((int)v7);
  33712. v7->_vptr_Packet = (int (**)(...))off_80CE568;
  33713. v1 = &v7[1].m_fromWhere;
  33714. v6 = 4;
  33715. do
  33716. {
  33717. v2 = (int)(v1 + 18);
  33718. v3 = 0;
  33719. do
  33720. {
  33721. *(_DWORD *)(v2 + 4 * v3) = 0;
  33722. *(_WORD *)(v2 + 2 * v3 + 76) = 0;
  33723. *(_DWORD *)(v2 + 4 * v3++ + 116) = -1;
  33724. }
  33725. while ( v3 <= 18 );
  33726. memset(v1 + 66, 0, 0x14u);
  33727. *((_WORD *)v1 + 142) = 0;
  33728. memset(v1, 0, 0x124u);
  33729. v4 = 0;
  33730. do
  33731. {
  33732. *(_DWORD *)(v2 + 4 * v4) = 0;
  33733. *(_WORD *)(v2 + 2 * v4 + 76) = 0;
  33734. *(_DWORD *)(v2 + 4 * v4++ + 116) = -1;
  33735. }
  33736. while ( v4 <= 18 );
  33737. --v6;
  33738. v1 += 73;
  33739. }
  33740. while ( v6 != -1 );
  33741. return v7;
  33742. }
  33743. // 80CE568: using guessed type _DWORD (__cdecl *off_80CE568[2])(Packets::LCRetCharList *this);
  33744.  
  33745. //----- (0806B764) --------------------------------------------------------
  33746. PacketID_t __cdecl Packets::LCRetCharListFactory::GetPacketID(const Packets::LCRetCharListFactory *const this)
  33747. {
  33748. return 622;
  33749. }
  33750.  
  33751. //----- (0806B770) --------------------------------------------------------
  33752. UINT __cdecl Packets::LCRetCharListFactory::GetPacketMaxSize(const Packets::LCRetCharListFactory *const this)
  33753. {
  33754. return 1523;
  33755. }
  33756.  
  33757. //----- (0806B77C) --------------------------------------------------------
  33758. Packet *__cdecl Packets::LCStatusFactory::CreatePacket(Packets::LCStatusFactory *const this)
  33759. {
  33760. Packet *v1; // esi
  33761.  
  33762. v1 = (Packet *)operator new(0x14u);
  33763. Packet::Packet((int)v1);
  33764. v1->_vptr_Packet = (int (**)(...))off_80CF048;
  33765. return v1;
  33766. }
  33767. // 80CF048: using guessed type _DWORD (__cdecl *off_80CF048[2])(Packets::LCStatus *this);
  33768.  
  33769. //----- (0806B7BC) --------------------------------------------------------
  33770. PacketID_t __cdecl Packets::LCStatusFactory::GetPacketID(const Packets::LCStatusFactory *const this)
  33771. {
  33772. return 554;
  33773. }
  33774.  
  33775. //----- (0806B7C8) --------------------------------------------------------
  33776. UINT __cdecl Packets::LCStatusFactory::GetPacketMaxSize(const Packets::LCStatusFactory *const this)
  33777. {
  33778. return 6;
  33779. }
  33780.  
  33781. //----- (0806B7D4) --------------------------------------------------------
  33782. Packet *__cdecl Packets::LCRetCharLoginFactory::CreatePacket(Packets::LCRetCharLoginFactory *const this)
  33783. {
  33784. int v1; // esi
  33785.  
  33786. v1 = operator new(0x38u);
  33787. Packet::Packet(v1);
  33788. *(_DWORD *)v1 = off_80CE708;
  33789. memset((void *)(v1 + 16), 0, 0x18u);
  33790. *(_DWORD *)(v1 + 40) = 0;
  33791. *(_DWORD *)(v1 + 52) = 0;
  33792. return (Packet *)v1;
  33793. }
  33794. // 80CE708: using guessed type _DWORD (__cdecl *off_80CE708[2])(Packets::LCRetCharLogin *this);
  33795.  
  33796. //----- (0806B830) --------------------------------------------------------
  33797. PacketID_t __cdecl Packets::LCRetCharLoginFactory::GetPacketID(const Packets::LCRetCharLoginFactory *const this)
  33798. {
  33799. return 346;
  33800. }
  33801.  
  33802. //----- (0806B83C) --------------------------------------------------------
  33803. UINT __cdecl Packets::LCRetCharLoginFactory::GetPacketMaxSize(const Packets::LCRetCharLoginFactory *const this)
  33804. {
  33805. return 41;
  33806. }
  33807.  
  33808. //----- (0806B848) --------------------------------------------------------
  33809. Packet *__cdecl Packets::LCRetConnectFactory::CreatePacket(Packets::LCRetConnectFactory *const this)
  33810. {
  33811. Packet *v1; // esi
  33812. Packet *v2; // ebx
  33813. signed int v3; // edx
  33814. _BYTE *v4; // edi
  33815.  
  33816. v1 = (Packet *)operator new(0x54u);
  33817. Packet::Packet((int)v1);
  33818. v1->_vptr_Packet = (int (**)(...))off_80CE868;
  33819. v2 = v1 + 6;
  33820. v3 = 2;
  33821. do
  33822. {
  33823. LOWORD(v2->_vptr_Packet) = 0;
  33824. v4 = (char *)&v2->_vptr_Packet + 2;
  33825. v2 = (Packet *)((char *)v2 + 3);
  33826. --v3;
  33827. *v4 = 0;
  33828. }
  33829. while ( v3 >= 0 );
  33830. return v1;
  33831. }
  33832. // 80CE868: using guessed type _DWORD (__cdecl *off_80CE868[2])(Packets::LCRetConnect *this);
  33833.  
  33834. //----- (0806B8A8) --------------------------------------------------------
  33835. PacketID_t __cdecl Packets::LCRetConnectFactory::GetPacketID(const Packets::LCRetConnectFactory *const this)
  33836. {
  33837. return 311;
  33838. }
  33839.  
  33840. //----- (0806B8B4) --------------------------------------------------------
  33841. UINT __cdecl Packets::LCRetConnectFactory::GetPacketMaxSize(const Packets::LCRetConnectFactory *const this)
  33842. {
  33843. return 69;
  33844. }
  33845.  
  33846. //----- (0806B8C0) --------------------------------------------------------
  33847. Packet *__cdecl Packets::LCRetCreateCharFactory::CreatePacket(Packets::LCRetCreateCharFactory *const this)
  33848. {
  33849. int v1; // esi
  33850.  
  33851. v1 = operator new(0x48u);
  33852. Packet::Packet(v1);
  33853. *(_DWORD *)v1 = off_80CE9C8;
  33854. *(_DWORD *)(v1 + 68) = -1;
  33855. return (Packet *)v1;
  33856. }
  33857. // 80CE9C8: using guessed type _DWORD (__cdecl *off_80CE9C8[2])(Packets::LCRetCreateChar *this);
  33858.  
  33859. //----- (0806B908) --------------------------------------------------------
  33860. PacketID_t __cdecl Packets::LCRetCreateCharFactory::GetPacketID(const Packets::LCRetCreateCharFactory *const this)
  33861. {
  33862. return 481;
  33863. }
  33864.  
  33865. //----- (0806B914) --------------------------------------------------------
  33866. UINT __cdecl Packets::LCRetCreateCharFactory::GetPacketMaxSize(const Packets::LCRetCreateCharFactory *const this)
  33867. {
  33868. return 4;
  33869. }
  33870.  
  33871. //----- (0806B920) --------------------------------------------------------
  33872. Packet *__cdecl Packets::LCRetDeleteCharFactory::CreatePacket(Packets::LCRetDeleteCharFactory *const this)
  33873. {
  33874. Packet *v1; // esi
  33875.  
  33876. v1 = (Packet *)operator new(0x44u);
  33877. Packet::Packet((int)v1);
  33878. v1->_vptr_Packet = (int (**)(...))off_80CEB88;
  33879. return v1;
  33880. }
  33881. // 80CEB88: using guessed type _DWORD (__cdecl *off_80CEB88[2])(Packets::LCRetDeleteChar *this);
  33882.  
  33883. //----- (0806B960) --------------------------------------------------------
  33884. PacketID_t __cdecl Packets::LCRetDeleteCharFactory::GetPacketID(const Packets::LCRetDeleteCharFactory *const this)
  33885. {
  33886. return 163;
  33887. }
  33888.  
  33889. //----- (0806B96C) --------------------------------------------------------
  33890. UINT __cdecl Packets::LCRetDeleteCharFactory::GetPacketMaxSize(const Packets::LCRetDeleteCharFactory *const this)
  33891. {
  33892. return 4;
  33893. }
  33894.  
  33895. //----- (0806B978) --------------------------------------------------------
  33896. Packet *__cdecl Packets::LCRetCreateCodeFactory::CreatePacket(Packets::LCRetCreateCodeFactory *const this)
  33897. {
  33898. int v1; // esi
  33899.  
  33900. v1 = operator new(0x250u);
  33901. Packet::Packet(v1);
  33902. *(_DWORD *)v1 = off_80D2128;
  33903. *(_BYTE *)(v1 + 12) = 2;
  33904. memset((void *)(v1 + 13), 0, 0x240u);
  33905. return (Packet *)v1;
  33906. }
  33907. // 80D2128: using guessed type _DWORD (__cdecl *off_80D2128[2])(Packets::LCRetCreateCode *this);
  33908.  
  33909. //----- (0806B9D4) --------------------------------------------------------
  33910. PacketID_t __cdecl Packets::LCRetCreateCodeFactory::GetPacketID(const Packets::LCRetCreateCodeFactory *const this)
  33911. {
  33912. return 402;
  33913. }
  33914.  
  33915. //----- (0806B9E0) --------------------------------------------------------
  33916. UINT __cdecl Packets::LCRetCreateCodeFactory::GetPacketMaxSize(const Packets::LCRetCreateCodeFactory *const this)
  33917. {
  33918. return 577;
  33919. }
  33920.  
  33921. //----- (0806B9EC) --------------------------------------------------------
  33922. Packet *__cdecl Packets::LCRetLoginCodeFactory::CreatePacket(Packets::LCRetLoginCodeFactory *const this)
  33923. {
  33924. int v1; // esi
  33925.  
  33926. v1 = operator new(0x250u);
  33927. Packet::Packet(v1);
  33928. *(_DWORD *)v1 = off_80CEEE8;
  33929. *(_BYTE *)(v1 + 12) = 2;
  33930. memset((void *)(v1 + 13), 0, 0x240u);
  33931. return (Packet *)v1;
  33932. }
  33933. // 80CEEE8: using guessed type _DWORD (__cdecl *off_80CEEE8[2])(Packets::LCRetLoginCode *this);
  33934.  
  33935. //----- (0806BA48) --------------------------------------------------------
  33936. PacketID_t __cdecl Packets::LCRetLoginCodeFactory::GetPacketID(const Packets::LCRetLoginCodeFactory *const this)
  33937. {
  33938. return 670;
  33939. }
  33940.  
  33941. //----- (0806BA54) --------------------------------------------------------
  33942. UINT __cdecl Packets::LCRetLoginCodeFactory::GetPacketMaxSize(const Packets::LCRetLoginCodeFactory *const this)
  33943. {
  33944. return 577;
  33945. }
  33946.  
  33947. //----- (0806BA60) --------------------------------------------------------
  33948. Packet *__cdecl Packets::KeyExchangeFactory::CreatePacket(Packets::KeyExchangeFactory *const this)
  33949. {
  33950. int v1; // esi
  33951.  
  33952. v1 = operator new(0x410u);
  33953. Packet::Packet(v1);
  33954. *(_DWORD *)v1 = off_80CD1E8;
  33955. *(_WORD *)(v1 + 1036) = 0;
  33956. *(_BYTE *)(v1 + 12) = 0;
  33957. return (Packet *)v1;
  33958. }
  33959. // 80CD1E8: using guessed type _DWORD (__cdecl *off_80CD1E8[2])(Packets::KeyExchange *this);
  33960.  
  33961. //----- (0806BAB0) --------------------------------------------------------
  33962. PacketID_t __cdecl Packets::KeyExchangeFactory::GetPacketID(const Packets::KeyExchangeFactory *const this)
  33963. {
  33964. return 627;
  33965. }
  33966.  
  33967. //----- (0806BABC) --------------------------------------------------------
  33968. UINT __cdecl Packets::KeyExchangeFactory::GetPacketMaxSize(const Packets::KeyExchangeFactory *const this)
  33969. {
  33970. return 1026;
  33971. }
  33972.  
  33973. //----- (0806BAC8) --------------------------------------------------------
  33974. Packet *__cdecl Packets::SSConnectFactory::CreatePacket(Packets::SSConnectFactory *const this)
  33975. {
  33976. int v1; // esi
  33977.  
  33978. v1 = operator new(0x14u);
  33979. Packet::Packet(v1);
  33980. *(_DWORD *)v1 = off_80CF868;
  33981. *(_WORD *)(v1 + 12) = -1;
  33982. *(_WORD *)(v1 + 14) = -1;
  33983. *(_WORD *)(v1 + 16) = -1;
  33984. return (Packet *)v1;
  33985. }
  33986. // 80CF868: using guessed type _DWORD (__cdecl *off_80CF868[2])(Packets::SSConnect *this);
  33987.  
  33988. //----- (0806BB1C) --------------------------------------------------------
  33989. PacketID_t __cdecl Packets::SSConnectFactory::GetPacketID(const Packets::SSConnectFactory *const this)
  33990. {
  33991. return 185;
  33992. }
  33993.  
  33994. //----- (0806BB28) --------------------------------------------------------
  33995. UINT __cdecl Packets::SSConnectFactory::GetPacketMaxSize(const Packets::SSConnectFactory *const this)
  33996. {
  33997. return 6;
  33998. }
  33999.  
  34000. //----- (0806BB34) --------------------------------------------------------
  34001. Packet *__cdecl Packets::SSScenePlayerCountFactory::CreatePacket(Packets::SSScenePlayerCountFactory *const this)
  34002. {
  34003. int v1; // esi
  34004.  
  34005. v1 = operator new(0x1018u);
  34006. Packet::Packet(v1);
  34007. *(_DWORD *)v1 = off_80CF9C8;
  34008. *(_WORD *)(v1 + 12) = 0;
  34009. *(_WORD *)(v1 + 4112) = -1;
  34010. return (Packet *)v1;
  34011. }
  34012. // 80CF9C8: using guessed type _DWORD (__cdecl *off_80CF9C8[2])(Packets::SSScenePlayerCount *this);
  34013.  
  34014. //----- (0806BB88) --------------------------------------------------------
  34015. PacketID_t __cdecl Packets::SSScenePlayerCountFactory::GetPacketID(const Packets::SSScenePlayerCountFactory *const this)
  34016. {
  34017. return 614;
  34018. }
  34019.  
  34020. //----- (0806BB94) --------------------------------------------------------
  34021. UINT __cdecl Packets::SSScenePlayerCountFactory::GetPacketMaxSize(const Packets::SSScenePlayerCountFactory *const this)
  34022. {
  34023. return 4106;
  34024. }
  34025.  
  34026. //----- (0806BBA0) --------------------------------------------------------
  34027. Packet *__cdecl Packets::GWLWGCostLogFactory::CreatePacket(Packets::GWLWGCostLogFactory *const this)
  34028. {
  34029. int v1; // esi
  34030.  
  34031. v1 = operator new(0x1C8u);
  34032. Packet::Packet(v1);
  34033. *(_DWORD *)v1 = off_80D17E8;
  34034. memset((void *)(v1 + 16), 0, 0x1A0u);
  34035. *(_DWORD *)(v1 + 52) = -1;
  34036. *(_WORD *)(v1 + 14) = -1;
  34037. memset((void *)(v1 + 432), 0, 0x14u);
  34038. *(_WORD *)(v1 + 452) = 0;
  34039. return (Packet *)v1;
  34040. }
  34041. // 80D17E8: using guessed type _DWORD (__cdecl *off_80D17E8[2])(Packets::GWLWGCostLog *this);
  34042.  
  34043. //----- (0806BC18) --------------------------------------------------------
  34044. PacketID_t __cdecl Packets::GWLWGCostLogFactory::GetPacketID(const Packets::GWLWGCostLogFactory *const this)
  34045. {
  34046. return 33;
  34047. }
  34048.  
  34049. //----- (0806BC24) --------------------------------------------------------
  34050. UINT __cdecl Packets::GWLWGCostLogFactory::GetPacketMaxSize(const Packets::GWLWGCostLogFactory *const this)
  34051. {
  34052. return 420;
  34053. }
  34054.  
  34055. //----- (0806BC30) --------------------------------------------------------
  34056. PacketID_t __cdecl Packets::LWAskCharLoginFactory::GetPacketID(const Packets::LWAskCharLoginFactory *const this)
  34057. {
  34058. return 107;
  34059. }
  34060.  
  34061. //----- (0806BC3C) --------------------------------------------------------
  34062. UINT __cdecl Packets::LWAskCharLoginFactory::GetPacketMaxSize(const Packets::LWAskCharLoginFactory *const this)
  34063. {
  34064. return 50801;
  34065. }
  34066.  
  34067. //----- (0806BC48) --------------------------------------------------------
  34068. Packet *__cdecl Packets::LWRetBillingStartFactory::CreatePacket(Packets::LWRetBillingStartFactory *const this)
  34069. {
  34070. Packet *v1; // esi
  34071. int v2; // edi
  34072.  
  34073. v1 = (Packet *)operator new(0x54u);
  34074. Packet::Packet((int)v1);
  34075. v1->_vptr_Packet = (int (**)(...))off_80CF6C8;
  34076. memset(&v1[1], 0, 0x30u);
  34077. v2 = (int)&v1[5];
  34078. *(_WORD *)v2 = 0;
  34079. *(_BYTE *)(v2 + 2) = 0;
  34080. return v1;
  34081. }
  34082. // 80CF6C8: using guessed type _DWORD (__cdecl *off_80CF6C8[2])(Packets::LWRetBillingStart *this);
  34083.  
  34084. //----- (0806BC9C) --------------------------------------------------------
  34085. PacketID_t __cdecl Packets::LWRetBillingStartFactory::GetPacketID(const Packets::LWRetBillingStartFactory *const this)
  34086. {
  34087. return 350;
  34088. }
  34089.  
  34090. //----- (0806BCA8) --------------------------------------------------------
  34091. UINT __cdecl Packets::LWRetBillingStartFactory::GetPacketMaxSize(const Packets::LWRetBillingStartFactory *const this)
  34092. {
  34093. return 69;
  34094. }
  34095.  
  34096. //----- (0806BCB4) --------------------------------------------------------
  34097. Packet *__cdecl Packets::LWRetBillingEndFactory::CreatePacket(Packets::LWRetBillingEndFactory *const this)
  34098. {
  34099. Packet *v1; // esi
  34100. int v2; // edi
  34101.  
  34102. v1 = (Packet *)operator new(0x40u);
  34103. Packet::Packet((int)v1);
  34104. v1->_vptr_Packet = (int (**)(...))off_80CF3A8;
  34105. memset(&v1[1], 0, 0x30u);
  34106. v2 = (int)&v1[5];
  34107. *(_WORD *)v2 = 0;
  34108. *(_BYTE *)(v2 + 2) = 0;
  34109. return v1;
  34110. }
  34111. // 80CF3A8: using guessed type _DWORD (__cdecl *off_80CF3A8[2])(Packets::LWRetBillingEnd *this);
  34112.  
  34113. //----- (0806BD08) --------------------------------------------------------
  34114. PacketID_t __cdecl Packets::LWRetBillingEndFactory::GetPacketID(const Packets::LWRetBillingEndFactory *const this)
  34115. {
  34116. return 494;
  34117. }
  34118.  
  34119. //----- (0806BD14) --------------------------------------------------------
  34120. UINT __cdecl Packets::LWRetBillingEndFactory::GetPacketMaxSize(const Packets::LWRetBillingEndFactory *const this)
  34121. {
  34122. return 52;
  34123. }
  34124.  
  34125. //----- (0806BD20) --------------------------------------------------------
  34126. Packet *__cdecl Packets::LWRetBillingKeepFactory::CreatePacket(Packets::LWRetBillingKeepFactory *const this)
  34127. {
  34128. Packet *v1; // esi
  34129. int v2; // edi
  34130.  
  34131. v1 = (Packet *)operator new(0x4Cu);
  34132. Packet::Packet((int)v1);
  34133. v1->_vptr_Packet = (int (**)(...))off_80CF528;
  34134. memset(&v1[1], 0, 0x30u);
  34135. v2 = (int)&v1[5];
  34136. *(_WORD *)v2 = 0;
  34137. *(_BYTE *)(v2 + 2) = 0;
  34138. return v1;
  34139. }
  34140. // 80CF528: using guessed type _DWORD (__cdecl *off_80CF528[2])(Packets::LWRetBillingKeep *this);
  34141.  
  34142. //----- (0806BD74) --------------------------------------------------------
  34143. PacketID_t __cdecl Packets::LWRetBillingKeepFactory::GetPacketID(const Packets::LWRetBillingKeepFactory *const this)
  34144. {
  34145. return 536;
  34146. }
  34147.  
  34148. //----- (0806BD80) --------------------------------------------------------
  34149. UINT __cdecl Packets::LWRetBillingKeepFactory::GetPacketMaxSize(const Packets::LWRetBillingKeepFactory *const this)
  34150. {
  34151. return 64;
  34152. }
  34153.  
  34154. //----- (0806BD8C) --------------------------------------------------------
  34155. Packet *__cdecl Packets::LWRetPrizeFactory::CreatePacket(Packets::LWRetPrizeFactory *const this)
  34156. {
  34157. int v1; // esi
  34158. int v2; // edi
  34159. signed int v4; // [esp+18h] [ebp-1Ch]
  34160. _DWORD *v5; // [esp+1Ch] [ebp-18h]
  34161.  
  34162. v1 = operator new(0x40Cu);
  34163. Packet::Packet(v1);
  34164. *(_DWORD *)v1 = off_80D11A8;
  34165. v5 = (_DWORD *)(v1 + 76);
  34166. v4 = 29;
  34167. do
  34168. {
  34169. memset(v5, 0, 0x14u);
  34170. --v4;
  34171. v5[5] = 0;
  34172. v5[6] = 0;
  34173. v5[7] = 0;
  34174. v5 += 8;
  34175. }
  34176. while ( v4 != -1 );
  34177. *(_WORD *)(v1 + 12) = -1;
  34178. memset((void *)(v1 + 14), 0, 0x30u);
  34179. v2 = v1 + 62;
  34180. *(_WORD *)v2 = 0;
  34181. *(_BYTE *)(v2 + 2) = 0;
  34182. *(_BYTE *)(v1 + 65) = 3;
  34183. *(_BYTE *)(v1 + 66) = 0;
  34184. *(_WORD *)(v1 + 72) = 0;
  34185. *(_DWORD *)(v1 + 68) = 0;
  34186. memset((void *)(v1 + 76), 0, 0x3C0u);
  34187. return (Packet *)v1;
  34188. }
  34189. // 80D11A8: using guessed type _DWORD (__cdecl *off_80D11A8[2])(Packets::LWRetPrize *this);
  34190.  
  34191. //----- (0806BE5C) --------------------------------------------------------
  34192. PacketID_t __cdecl Packets::LWRetPrizeFactory::GetPacketID(const Packets::LWRetPrizeFactory *const this)
  34193. {
  34194. return 567;
  34195. }
  34196.  
  34197. //----- (0806BE68) --------------------------------------------------------
  34198. UINT __cdecl Packets::LWRetPrizeFactory::GetPacketMaxSize(const Packets::LWRetPrizeFactory *const this)
  34199. {
  34200. return 1020;
  34201. }
  34202.  
  34203. //----- (0806BE74) --------------------------------------------------------
  34204. Packet *__cdecl Packets::LWNotifyUserFactory::CreatePacket(Packets::LWNotifyUserFactory *const this)
  34205. {
  34206. int v1; // esi
  34207. int v2; // edi
  34208.  
  34209. v1 = operator new(0x54u);
  34210. Packet::Packet(v1);
  34211. *(_DWORD *)v1 = off_80D14A8;
  34212. memset((void *)(v1 + 12), 0, 0x30u);
  34213. v2 = v1 + 60;
  34214. *(_WORD *)v2 = 0;
  34215. *(_BYTE *)(v2 + 2) = 0;
  34216. *(_DWORD *)(v1 + 64) = 0;
  34217. *(_DWORD *)(v1 + 68) = -1;
  34218. *(_DWORD *)(v1 + 80) = 0;
  34219. *(_DWORD *)(v1 + 76) = 0;
  34220. *(_DWORD *)(v1 + 72) = -1;
  34221. return (Packet *)v1;
  34222. }
  34223. // 80D14A8: using guessed type _DWORD (__cdecl *off_80D14A8[2])(Packets::LWNotifyUser *this);
  34224.  
  34225. //----- (0806BEE8) --------------------------------------------------------
  34226. PacketID_t __cdecl Packets::LWNotifyUserFactory::GetPacketID(const Packets::LWNotifyUserFactory *const this)
  34227. {
  34228. return 440;
  34229. }
  34230.  
  34231. //----- (0806BEF4) --------------------------------------------------------
  34232. UINT __cdecl Packets::LWNotifyUserFactory::GetPacketMaxSize(const Packets::LWNotifyUserFactory *const this)
  34233. {
  34234. return 70;
  34235. }
  34236.  
  34237. //----- (0806BF00) --------------------------------------------------------
  34238. Packet *__cdecl Packets::LWChangeNameFactory::CreatePacket(Packets::LWChangeNameFactory *const this)
  34239. {
  34240. Packet *v1; // ebx
  34241.  
  34242. v1 = (Packet *)operator new(0x58u);
  34243. Packet::Packet((int)v1);
  34244. v1->_vptr_Packet = (int (**)(...))off_80D1CE8;
  34245. Packets::SChgNamePacketUnit::SChgNamePacketUnit(&v1[1]._vptr_Packet);
  34246. return v1;
  34247. }
  34248. // 80D1CE8: using guessed type _DWORD (__cdecl *off_80D1CE8[2])(Packets::LWChangeName *this);
  34249.  
  34250. //----- (0806BF5C) --------------------------------------------------------
  34251. PacketID_t __cdecl Packets::LWChangeNameFactory::GetPacketID(const Packets::LWChangeNameFactory *const this)
  34252. {
  34253. return 459;
  34254. }
  34255.  
  34256. //----- (0806BF68) --------------------------------------------------------
  34257. UINT __cdecl Packets::LWChangeNameFactory::GetPacketMaxSize(const Packets::LWChangeNameFactory *const this)
  34258. {
  34259. return Packets::SChgNamePacketUnit::GetPacketSize();
  34260. }
  34261.  
  34262. //----- (0806BF74) --------------------------------------------------------
  34263. Packet *__cdecl Packets::LWOperateAccResultFactory::CreatePacket(Packets::LWOperateAccResultFactory *const this)
  34264. {
  34265. int v1; // esi
  34266.  
  34267. v1 = operator new(0x50u);
  34268. Packet::Packet(v1);
  34269. *(_DWORD *)v1 = off_80D2AA8;
  34270. *(_WORD *)(v1 + 78) = 0;
  34271. *(_DWORD *)(v1 + 72) = 0;
  34272. *(_DWORD *)(v1 + 64) = 0;
  34273. *(_WORD *)(v1 + 68) = 0;
  34274. *(_DWORD *)(v1 + 12) = 0;
  34275. return (Packet *)v1;
  34276. }
  34277. // 80D2AA8: using guessed type _DWORD (__cdecl *off_80D2AA8[2])(Packets::LWOperateAccResult *this);
  34278.  
  34279. //----- (0806BFD4) --------------------------------------------------------
  34280. PacketID_t __cdecl Packets::LWOperateAccResultFactory::GetPacketID(const Packets::LWOperateAccResultFactory *const this)
  34281. {
  34282. return 230;
  34283. }
  34284.  
  34285. //----- (0806BFE0) --------------------------------------------------------
  34286. UINT __cdecl Packets::LWOperateAccResultFactory::GetPacketMaxSize(const Packets::LWOperateAccResultFactory *const this)
  34287. {
  34288. return 64;
  34289. }
  34290.  
  34291. //----- (0806BFEC) --------------------------------------------------------
  34292. Packet *__cdecl Packets::WLRetCharLoginFactory::CreatePacket(Packets::WLRetCharLoginFactory *const this)
  34293. {
  34294. Packet *v1; // esi
  34295.  
  34296. v1 = (Packet *)operator new(0x54u);
  34297. Packet::Packet((int)v1);
  34298. v1->_vptr_Packet = (int (**)(...))off_80D00E8;
  34299. return v1;
  34300. }
  34301. // 80D00E8: using guessed type _DWORD (__cdecl *off_80D00E8[2])(Packets::WLRetCharLogin *this);
  34302.  
  34303. //----- (0806C02C) --------------------------------------------------------
  34304. PacketID_t __cdecl Packets::WLRetCharLoginFactory::GetPacketID(const Packets::WLRetCharLoginFactory *const this)
  34305. {
  34306. return 91;
  34307. }
  34308.  
  34309. //----- (0806C038) --------------------------------------------------------
  34310. UINT __cdecl Packets::WLRetCharLoginFactory::GetPacketMaxSize(const Packets::WLRetCharLoginFactory *const this)
  34311. {
  34312. return 66;
  34313. }
  34314.  
  34315. //----- (0806C044) --------------------------------------------------------
  34316. Packet *__cdecl Packets::WLBillingStartFactory::CreatePacket(Packets::WLBillingStartFactory *const this)
  34317. {
  34318. int v1; // esi
  34319. int v2; // edi
  34320. int v3; // edi
  34321.  
  34322. v1 = operator new(0x84u);
  34323. Packet::Packet(v1);
  34324. *(_DWORD *)v1 = off_80CFF88;
  34325. memset((void *)(v1 + 12), 0, 0x30u);
  34326. v2 = v1 + 60;
  34327. *(_WORD *)v2 = 0;
  34328. *(_BYTE *)(v2 + 2) = 0;
  34329. memset((void *)(v1 + 63), 0, 0x30u);
  34330. v3 = v1 + 111;
  34331. *(_WORD *)v3 = 0;
  34332. *(_BYTE *)(v3 + 2) = 0;
  34333. *(_DWORD *)(v1 + 116) = -1;
  34334. return (Packet *)v1;
  34335. }
  34336. // 80CFF88: using guessed type _DWORD (__cdecl *off_80CFF88[2])(Packets::WLBillingStart *this);
  34337.  
  34338. //----- (0806C0AC) --------------------------------------------------------
  34339. PacketID_t __cdecl Packets::WLBillingStartFactory::GetPacketID(const Packets::WLBillingStartFactory *const this)
  34340. {
  34341. return 470;
  34342. }
  34343.  
  34344. //----- (0806C0B8) --------------------------------------------------------
  34345. UINT __cdecl Packets::WLBillingStartFactory::GetPacketMaxSize(const Packets::WLBillingStartFactory *const this)
  34346. {
  34347. return 114;
  34348. }
  34349.  
  34350. //----- (0806C0C4) --------------------------------------------------------
  34351. Packet *__cdecl Packets::WLBillingEndFactory::CreatePacket(Packets::WLBillingEndFactory *const this)
  34352. {
  34353. Packet *v1; // esi
  34354. int v2; // edi
  34355.  
  34356. v1 = (Packet *)operator new(0x4Cu);
  34357. Packet::Packet((int)v1);
  34358. v1->_vptr_Packet = (int (**)(...))off_80CFB68;
  34359. memset(&v1[1], 0, 0x30u);
  34360. v2 = (int)&v1[5];
  34361. *(_WORD *)v2 = 0;
  34362. *(_BYTE *)(v2 + 2) = 0;
  34363. return v1;
  34364. }
  34365. // 80CFB68: using guessed type _DWORD (__cdecl *off_80CFB68[2])(Packets::WLBillingEnd *this);
  34366.  
  34367. //----- (0806C118) --------------------------------------------------------
  34368. PacketID_t __cdecl Packets::WLBillingEndFactory::GetPacketID(const Packets::WLBillingEndFactory *const this)
  34369. {
  34370. return 237;
  34371. }
  34372.  
  34373. //----- (0806C124) --------------------------------------------------------
  34374. UINT __cdecl Packets::WLBillingEndFactory::GetPacketMaxSize(const Packets::WLBillingEndFactory *const this)
  34375. {
  34376. return 62;
  34377. }
  34378.  
  34379. //----- (0806C130) --------------------------------------------------------
  34380. Packet *__cdecl Packets::WLBillingKeepFactory::CreatePacket(Packets::WLBillingKeepFactory *const this)
  34381. {
  34382. Packet *v1; // esi
  34383. int v2; // edi
  34384.  
  34385. v1 = (Packet *)operator new(0x4Cu);
  34386. Packet::Packet((int)v1);
  34387. v1->_vptr_Packet = (int (**)(...))off_80CFCC8;
  34388. memset(&v1[1], 0, 0x30u);
  34389. v2 = (int)&v1[5];
  34390. *(_WORD *)v2 = 0;
  34391. *(_BYTE *)(v2 + 2) = 0;
  34392. return v1;
  34393. }
  34394. // 80CFCC8: using guessed type _DWORD (__cdecl *off_80CFCC8[2])(Packets::WLBillingKeep *this);
  34395.  
  34396. //----- (0806C184) --------------------------------------------------------
  34397. PacketID_t __cdecl Packets::WLBillingKeepFactory::GetPacketID(const Packets::WLBillingKeepFactory *const this)
  34398. {
  34399. return 205;
  34400. }
  34401.  
  34402. //----- (0806C190) --------------------------------------------------------
  34403. UINT __cdecl Packets::WLBillingKeepFactory::GetPacketMaxSize(const Packets::WLBillingKeepFactory *const this)
  34404. {
  34405. return 61;
  34406. }
  34407.  
  34408. //----- (0806C19C) --------------------------------------------------------
  34409. Packet *__cdecl Packets::WLBillingKickFactory::CreatePacket(Packets::WLBillingKickFactory *const this)
  34410. {
  34411. Packet *v1; // esi
  34412.  
  34413. v1 = (Packet *)operator new(0x10u);
  34414. Packet::Packet((int)v1);
  34415. v1->_vptr_Packet = (int (**)(...))off_80CFE28;
  34416. return v1;
  34417. }
  34418. // 80CFE28: using guessed type _DWORD (__cdecl *off_80CFE28[2])(Packets::WLBillingKick *this);
  34419.  
  34420. //----- (0806C1DC) --------------------------------------------------------
  34421. PacketID_t __cdecl Packets::WLBillingKickFactory::GetPacketID(const Packets::WLBillingKickFactory *const this)
  34422. {
  34423. return 287;
  34424. }
  34425.  
  34426. //----- (0806C1E8) --------------------------------------------------------
  34427. UINT __cdecl Packets::WLBillingKickFactory::GetPacketMaxSize(const Packets::WLBillingKickFactory *const this)
  34428. {
  34429. return 2;
  34430. }
  34431.  
  34432. //----- (0806C1F4) --------------------------------------------------------
  34433. Packet *__cdecl Packets::WLAskPrizeFactory::CreatePacket(Packets::WLAskPrizeFactory *const this)
  34434. {
  34435. int v1; // esi
  34436. int v2; // edi
  34437. int v3; // edi
  34438.  
  34439. v1 = operator new(0xA8u);
  34440. Packet::Packet(v1);
  34441. *(_DWORD *)v1 = off_80D1348;
  34442. *(_WORD *)(v1 + 12) = -1;
  34443. memset((void *)(v1 + 14), 0, 0x30u);
  34444. v2 = v1 + 62;
  34445. *(_WORD *)v2 = 0;
  34446. *(_BYTE *)(v2 + 2) = 0;
  34447. memset((void *)(v1 + 65), 0, 0x1Cu);
  34448. v3 = v1 + 93;
  34449. *(_WORD *)v3 = 0;
  34450. *(_BYTE *)(v3 + 2) = 0;
  34451. memset((void *)(v1 + 96), 0, 0x18u);
  34452. *(_BYTE *)(v1 + 120) = 0;
  34453. *(_DWORD *)(v1 + 124) = -1;
  34454. *(_BYTE *)(v1 + 128) = 0;
  34455. *(_DWORD *)(v1 + 132) = 0;
  34456. *(_WORD *)(v1 + 136) = 0;
  34457. *(_DWORD *)(v1 + 140) = 0;
  34458. memset((void *)(v1 + 144), 0, 0x14u);
  34459. *(_BYTE *)(v1 + 164) = 0;
  34460. *(_WORD *)(v1 + 166) = 1;
  34461. return (Packet *)v1;
  34462. }
  34463. // 80D1348: using guessed type _DWORD (__cdecl *off_80D1348[2])(Packets::WLAskPrize *this);
  34464.  
  34465. //----- (0806C2A0) --------------------------------------------------------
  34466. PacketID_t __cdecl Packets::WLAskPrizeFactory::GetPacketID(const Packets::WLAskPrizeFactory *const this)
  34467. {
  34468. return 219;
  34469. }
  34470.  
  34471. //----- (0806C2AC) --------------------------------------------------------
  34472. UINT __cdecl Packets::WLAskPrizeFactory::GetPacketMaxSize(const Packets::WLAskPrizeFactory *const this)
  34473. {
  34474. return 143;
  34475. }
  34476.  
  34477. //----- (0806C2B8) --------------------------------------------------------
  34478. Packet *__cdecl Packets::WLNotifyUserFactory::CreatePacket(Packets::WLNotifyUserFactory *const this)
  34479. {
  34480. int v1; // esi
  34481. int v2; // edi
  34482.  
  34483. v1 = operator new(0x60u);
  34484. Packet::Packet(v1);
  34485. *(_DWORD *)v1 = off_80D1648;
  34486. memset((void *)(v1 + 12), 0, 0x30u);
  34487. v2 = v1 + 60;
  34488. *(_WORD *)v2 = 0;
  34489. *(_BYTE *)(v2 + 2) = 0;
  34490. memset((void *)(v1 + 63), 0, 0x18u);
  34491. *(_BYTE *)(v1 + 87) = 0;
  34492. *(_DWORD *)(v1 + 88) = 0;
  34493. *(_DWORD *)(v1 + 92) = -1;
  34494. return (Packet *)v1;
  34495. }
  34496. // 80D1648: using guessed type _DWORD (__cdecl *off_80D1648[2])(Packets::WLNotifyUser *this);
  34497.  
  34498. //----- (0806C320) --------------------------------------------------------
  34499. PacketID_t __cdecl Packets::WLNotifyUserFactory::GetPacketID(const Packets::WLNotifyUserFactory *const this)
  34500. {
  34501. return 358;
  34502. }
  34503.  
  34504. //----- (0806C32C) --------------------------------------------------------
  34505. UINT __cdecl Packets::WLNotifyUserFactory::GetPacketMaxSize(const Packets::WLNotifyUserFactory *const this)
  34506. {
  34507. return 82;
  34508. }
  34509.  
  34510. //----- (0806C338) --------------------------------------------------------
  34511. Packet *__cdecl Packets::WLChangeNameFactory::CreatePacket(Packets::WLChangeNameFactory *const this)
  34512. {
  34513. Packet *v1; // ebx
  34514.  
  34515. v1 = (Packet *)operator new(0x58u);
  34516. Packet::Packet((int)v1);
  34517. v1->_vptr_Packet = (int (**)(...))off_80D1E48;
  34518. Packets::SChgNamePacketUnit::SChgNamePacketUnit(&v1[1]._vptr_Packet);
  34519. return v1;
  34520. }
  34521. // 80D1E48: using guessed type _DWORD (__cdecl *off_80D1E48[2])(Packets::WLChangeName *this);
  34522.  
  34523. //----- (0806C394) --------------------------------------------------------
  34524. PacketID_t __cdecl Packets::WLChangeNameFactory::GetPacketID(const Packets::WLChangeNameFactory *const this)
  34525. {
  34526. return 151;
  34527. }
  34528.  
  34529. //----- (0806C3A0) --------------------------------------------------------
  34530. UINT __cdecl Packets::WLChangeNameFactory::GetPacketMaxSize(const Packets::WLChangeNameFactory *const this)
  34531. {
  34532. return Packets::SChgNamePacketUnit::GetPacketSize();
  34533. }
  34534.  
  34535. //----- (0806C3AC) --------------------------------------------------------
  34536. Packet *__cdecl Packets::WLOperateAccFactory::CreatePacket(Packets::WLOperateAccFactory *const this)
  34537. {
  34538. int v1; // esi
  34539.  
  34540. v1 = operator new(0xDCu);
  34541. Packet::Packet(v1);
  34542. *(_DWORD *)v1 = off_80D2C48;
  34543. *(_DWORD *)(v1 + 204) = 0;
  34544. *(_DWORD *)(v1 + 196) = 0;
  34545. *(_WORD *)(v1 + 200) = 0;
  34546. *(_DWORD *)(v1 + 12) = 0;
  34547. *(_DWORD *)(v1 + 212) = -1;
  34548. *(_WORD *)(v1 + 216) = 1;
  34549. return (Packet *)v1;
  34550. }
  34551. // 80D2C48: using guessed type _DWORD (__cdecl *off_80D2C48[2])(Packets::WLOperateAcc *this);
  34552.  
  34553. //----- (0806C428) --------------------------------------------------------
  34554. PacketID_t __cdecl Packets::WLOperateAccFactory::GetPacketID(const Packets::WLOperateAccFactory *const this)
  34555. {
  34556. return 265;
  34557. }
  34558.  
  34559. //----- (0806C434) --------------------------------------------------------
  34560. UINT __cdecl Packets::WLOperateAccFactory::GetPacketMaxSize(const Packets::WLOperateAccFactory *const this)
  34561. {
  34562. return 200;
  34563. }
  34564.  
  34565. //----- (0806C440) --------------------------------------------------------
  34566. Packet *__cdecl Packets::LBAskAuthFactory::CreatePacket(Packets::LBAskAuthFactory *const this)
  34567. {
  34568. int v1; // esi
  34569. int v2; // edi
  34570. signed int v3; // ecx
  34571. int v4; // ebx
  34572. _BYTE *v5; // edi
  34573.  
  34574. v1 = operator new(0xCCu);
  34575. Packet::Packet(v1);
  34576. *(_DWORD *)v1 = off_80CD588;
  34577. memset((void *)(v1 + 12), 0, 0x30u);
  34578. v2 = v1 + 60;
  34579. *(_WORD *)v2 = 0;
  34580. *(_BYTE *)(v2 + 2) = 0;
  34581. memset((void *)(v1 + 63), 0, 0x20u);
  34582. *(_BYTE *)(v1 + 95) = 0;
  34583. memset((void *)(v1 + 96), 0, 0x10u);
  34584. v3 = 0;
  34585. v4 = v1;
  34586. do
  34587. {
  34588. *(_WORD *)(v4 + 114) = 0;
  34589. *(_BYTE *)(v4 + 116) = 0;
  34590. ++v3;
  34591. *(_WORD *)(v4 + 123) = 0;
  34592. v5 = (_BYTE *)(v4 + 125);
  34593. v4 += 3;
  34594. *v5 = 0;
  34595. }
  34596. while ( v3 <= 2 );
  34597. memset((void *)(v1 + 132), 0, 0x20u);
  34598. *(_BYTE *)(v1 + 164) = 0;
  34599. memset((void *)(v1 + 165), 0, 0x24u);
  34600. return (Packet *)v1;
  34601. }
  34602. // 80CD588: using guessed type _DWORD (__cdecl *off_80CD588[2])(Packets::LBAskAuth *this);
  34603.  
  34604. //----- (0806C4E4) --------------------------------------------------------
  34605. PacketID_t __cdecl Packets::LBAskAuthFactory::GetPacketID(const Packets::LBAskAuthFactory *const this)
  34606. {
  34607. return 23;
  34608. }
  34609.  
  34610. //----- (0806C4F0) --------------------------------------------------------
  34611. UINT __cdecl Packets::LBAskAuthFactory::GetPacketMaxSize(const Packets::LBAskAuthFactory *const this)
  34612. {
  34613. return 176;
  34614. }
  34615.  
  34616. //----- (0806C4FC) --------------------------------------------------------
  34617. Packet *__cdecl Packets::LBAskRegAuthFactory::CreatePacket(Packets::LBAskRegAuthFactory *const this)
  34618. {
  34619. int v1; // esi
  34620. int v2; // edi
  34621.  
  34622. v1 = operator new(0x194u);
  34623. Packet::Packet(v1);
  34624. *(_DWORD *)v1 = off_80CD828;
  34625. memset((void *)(v1 + 12), 0, 0x30u);
  34626. v2 = v1 + 60;
  34627. *(_WORD *)v2 = 0;
  34628. *(_BYTE *)(v2 + 2) = 0;
  34629. memset((void *)(v1 + 63), 0, 0x20u);
  34630. *(_BYTE *)(v1 + 95) = 0;
  34631. memset((void *)(v1 + 96), 0, 0x20u);
  34632. *(_BYTE *)(v1 + 128) = 0;
  34633. memset((void *)(v1 + 129), 0, 0x10u);
  34634. memset((void *)(v1 + 145), 0, 0x100u);
  34635. *(_WORD *)(v1 + 402) = -1;
  34636. return (Packet *)v1;
  34637. }
  34638. // 80CD828: using guessed type _DWORD (__cdecl *off_80CD828[2])(Packets::LBAskRegAuth *this);
  34639.  
  34640. //----- (0806C58C) --------------------------------------------------------
  34641. PacketID_t __cdecl Packets::LBAskRegAuthFactory::GetPacketID(const Packets::LBAskRegAuthFactory *const this)
  34642. {
  34643. return 194;
  34644. }
  34645.  
  34646. //----- (0806C598) --------------------------------------------------------
  34647. UINT __cdecl Packets::LBAskRegAuthFactory::GetPacketMaxSize(const Packets::LBAskRegAuthFactory *const this)
  34648. {
  34649. return 386;
  34650. }
  34651.  
  34652. //----- (0806C5A4) --------------------------------------------------------
  34653. Packet *__cdecl Packets::LBAskRegLicenseFactory::CreatePacket(Packets::LBAskRegLicenseFactory *const this)
  34654. {
  34655. int v1; // esi
  34656. int v2; // edi
  34657.  
  34658. v1 = operator new(0x54u);
  34659. Packet::Packet(v1);
  34660. *(_DWORD *)v1 = off_80D2428;
  34661. memset((void *)(v1 + 12), 0, 0x30u);
  34662. v2 = v1 + 60;
  34663. *(_WORD *)v2 = 0;
  34664. *(_BYTE *)(v2 + 2) = 0;
  34665. *(_BYTE *)(v1 + 63) = 1;
  34666. *(_WORD *)(v1 + 64) = -1;
  34667. return (Packet *)v1;
  34668. }
  34669. // 80D2428: using guessed type _DWORD (__cdecl *off_80D2428[2])(Packets::LBAskRegLicense *this);
  34670.  
  34671. //----- (0806C600) --------------------------------------------------------
  34672. PacketID_t __cdecl Packets::LBAskRegLicenseFactory::GetPacketID(const Packets::LBAskRegLicenseFactory *const this)
  34673. {
  34674. return 282;
  34675. }
  34676.  
  34677. //----- (0806C60C) --------------------------------------------------------
  34678. UINT __cdecl Packets::LBAskRegLicenseFactory::GetPacketMaxSize(const Packets::LBAskRegLicenseFactory *const this)
  34679. {
  34680. return 68;
  34681. }
  34682.  
  34683. //----- (0806C618) --------------------------------------------------------
  34684. Packet *__cdecl Packets::BLRetAuthFactory::CreatePacket(Packets::BLRetAuthFactory *const this)
  34685. {
  34686. int v1; // esi
  34687. int v2; // edi
  34688.  
  34689. v1 = operator new(0x90u);
  34690. Packet::Packet(v1);
  34691. *(_DWORD *)v1 = off_80CB5E8;
  34692. memset((void *)(v1 + 76), 0, 0x20u);
  34693. *(_BYTE *)(v1 + 108) = 0;
  34694. memset((void *)(v1 + 12), 0, 0x30u);
  34695. v2 = v1 + 60;
  34696. *(_WORD *)v2 = 0;
  34697. *(_BYTE *)(v2 + 2) = 0;
  34698. memset((void *)(v1 + 109), 0, 0x10u);
  34699. *(_BYTE *)(v1 + 125) = 78;
  34700. *(_BYTE *)(v1 + 132) = 78;
  34701. *(_BYTE *)(v1 + 133) = 78;
  34702. *(_BYTE *)(v1 + 134) = 78;
  34703. *(_BYTE *)(v1 + 135) = 78;
  34704. *(_BYTE *)(v1 + 136) = 78;
  34705. *(_BYTE *)(v1 + 137) = 78;
  34706. *(_BYTE *)(v1 + 138) = 78;
  34707. *(_WORD *)(v1 + 140) = 0;
  34708. return (Packet *)v1;
  34709. }
  34710. // 80CB5E8: using guessed type _DWORD (__cdecl *off_80CB5E8[2])(Packets::BLRetAuth *this);
  34711.  
  34712. //----- (0806C6BC) --------------------------------------------------------
  34713. PacketID_t __cdecl Packets::BLRetAuthFactory::GetPacketID(const Packets::BLRetAuthFactory *const this)
  34714. {
  34715. return 97;
  34716. }
  34717.  
  34718. //----- (0806C6C8) --------------------------------------------------------
  34719. UINT __cdecl Packets::BLRetAuthFactory::GetPacketMaxSize(const Packets::BLRetAuthFactory *const this)
  34720. {
  34721. return 117;
  34722. }
  34723.  
  34724. //----- (0806C6D4) --------------------------------------------------------
  34725. void __cdecl BillPacketFactory::~BillPacketFactory(_DWORD *a2)
  34726. {
  34727. *a2 = off_80C9A48;
  34728. }
  34729. // 80C9A48: using guessed type _DWORD (__cdecl *off_80C9A48[2])(BillPacketFactory *this);
  34730.  
  34731. //----- (0806C6E4) --------------------------------------------------------
  34732. void __cdecl BillPacketFactory::~BillPacketFactory(IPRegionTable *const a2)
  34733. {
  34734. a2->_vptr_IPRegionTable = (int (**)(...))off_80C9A48;
  34735. operator delete(a2);
  34736. }
  34737. // 80C9A48: using guessed type _DWORD (__cdecl *off_80C9A48[2])(BillPacketFactory *this);
  34738.  
  34739. //----- (0806C6F8) --------------------------------------------------------
  34740. BillPacket *__cdecl Packets::BLRetConnectFactory::CreatePacket(Packets::BLRetConnectFactory *const this)
  34741. {
  34742. int v1; // esi
  34743.  
  34744. v1 = operator new(0xCu);
  34745. BillPacket::BillPacket((_DWORD *)v1);
  34746. *(_DWORD *)v1 = off_80CBC68;
  34747. *(_WORD *)(v1 + 8) = 0;
  34748. return (BillPacket *)v1;
  34749. }
  34750. // 80CBC68: using guessed type _DWORD (__cdecl *off_80CBC68[2])(Packets::BLRetConnect *this);
  34751.  
  34752. //----- (0806C740) --------------------------------------------------------
  34753. BPacketID_t __cdecl Packets::BLRetConnectFactory::GetPacketID(const Packets::BLRetConnectFactory *const this)
  34754. {
  34755. return -96;
  34756. }
  34757.  
  34758. //----- (0806C74C) --------------------------------------------------------
  34759. UINT __cdecl Packets::BLRetConnectFactory::GetPacketMaxSize(const Packets::BLRetConnectFactory *const this)
  34760. {
  34761. return 2;
  34762. }
  34763.  
  34764. //----- (0806C758) --------------------------------------------------------
  34765. BillPacket *__cdecl Packets::BLRetKeepLiveFactory::CreatePacket(Packets::BLRetKeepLiveFactory *const this)
  34766. {
  34767. int v1; // esi
  34768.  
  34769. v1 = operator new(0xCu);
  34770. BillPacket::BillPacket((_DWORD *)v1);
  34771. *(_DWORD *)v1 = off_80CBDE8;
  34772. *(_WORD *)(v1 + 8) = 0;
  34773. return (BillPacket *)v1;
  34774. }
  34775. // 80CBDE8: using guessed type _DWORD (__cdecl *off_80CBDE8[2])(Packets::BLRetKeepLive *this);
  34776.  
  34777. //----- (0806C7A0) --------------------------------------------------------
  34778. BPacketID_t __cdecl Packets::BLRetKeepLiveFactory::GetPacketID(const Packets::BLRetKeepLiveFactory *const this)
  34779. {
  34780. return -95;
  34781. }
  34782.  
  34783. //----- (0806C7AC) --------------------------------------------------------
  34784. UINT __cdecl Packets::BLRetKeepLiveFactory::GetPacketMaxSize(const Packets::BLRetKeepLiveFactory *const this)
  34785. {
  34786. return 2;
  34787. }
  34788.  
  34789. //----- (0806C7B8) --------------------------------------------------------
  34790. BillPacket *__cdecl Packets::BLRetAccCheckFactory::CreatePacket(Packets::BLRetAccCheckFactory *const this)
  34791. {
  34792. int v1; // esi
  34793. int v2; // edi
  34794.  
  34795. v1 = operator new(0x90u);
  34796. BillPacket::BillPacket((_DWORD *)v1);
  34797. *(_DWORD *)v1 = off_80CB468;
  34798. memset((void *)(v1 + 8), 0, 0x30u);
  34799. v2 = v1 + 56;
  34800. *(_WORD *)v2 = 0;
  34801. *(_BYTE *)(v2 + 2) = 0;
  34802. memset((void *)(v1 + 91), 0, 0x10u);
  34803. memset((void *)(v1 + 108), 0, 0x20u);
  34804. *(_BYTE *)(v1 + 140) = 0;
  34805. *(_BYTE *)(v1 + 72) = 78;
  34806. *(_BYTE *)(v1 + 80) = 78;
  34807. *(_BYTE *)(v1 + 81) = 78;
  34808. *(_BYTE *)(v1 + 82) = 78;
  34809. *(_BYTE *)(v1 + 83) = 78;
  34810. *(_BYTE *)(v1 + 84) = 78;
  34811. *(_BYTE *)(v1 + 85) = 78;
  34812. *(_BYTE *)(v1 + 86) = 78;
  34813. *(_DWORD *)(v1 + 76) = 0;
  34814. *(_WORD *)(v1 + 142) = 0;
  34815. return (BillPacket *)v1;
  34816. }
  34817. // 80CB468: using guessed type _DWORD (__cdecl *off_80CB468[2])(Packets::BLRetAccCheck *this);
  34818.  
  34819. //----- (0806C84C) --------------------------------------------------------
  34820. BPacketID_t __cdecl Packets::BLRetAccCheckFactory::GetPacketID(const Packets::BLRetAccCheckFactory *const this)
  34821. {
  34822. return -94;
  34823. }
  34824.  
  34825. //----- (0806C858) --------------------------------------------------------
  34826. UINT __cdecl Packets::BLRetAccCheckFactory::GetPacketMaxSize(const Packets::BLRetAccCheckFactory *const this)
  34827. {
  34828. return 105;
  34829. }
  34830.  
  34831. //----- (0806C864) --------------------------------------------------------
  34832. BillPacket *__cdecl Packets::BLRetBillingStartFactory::CreatePacket(Packets::BLRetBillingStartFactory *const this)
  34833. {
  34834. BillPacket *v1; // esi
  34835. int v2; // edi
  34836.  
  34837. v1 = (BillPacket *)operator new(0x50u);
  34838. BillPacket::BillPacket(v1);
  34839. v1->_vptr_BillPacket = (int (**)(...))off_80CBAC8;
  34840. memset(&v1[1], 0, 0x30u);
  34841. v2 = (int)&v1[7];
  34842. *(_WORD *)v2 = 0;
  34843. *(_BYTE *)(v2 + 2) = 0;
  34844. return v1;
  34845. }
  34846. // 80CBAC8: using guessed type _DWORD (__cdecl *off_80CBAC8[2])(Packets::BLRetBillingStart *this);
  34847.  
  34848. //----- (0806C8B8) --------------------------------------------------------
  34849. BPacketID_t __cdecl Packets::BLRetBillingStartFactory::GetPacketID(const Packets::BLRetBillingStartFactory *const this)
  34850. {
  34851. return -93;
  34852. }
  34853.  
  34854. //----- (0806C8C4) --------------------------------------------------------
  34855. UINT __cdecl Packets::BLRetBillingStartFactory::GetPacketMaxSize(const Packets::BLRetBillingStartFactory *const this)
  34856. {
  34857. return 66;
  34858. }
  34859.  
  34860. //----- (0806C8D0) --------------------------------------------------------
  34861. BillPacket *__cdecl Packets::BLRetBillingEndFactory::CreatePacket(Packets::BLRetBillingEndFactory *const this)
  34862. {
  34863. BillPacket *v1; // esi
  34864. int v2; // edi
  34865.  
  34866. v1 = (BillPacket *)operator new(0x3Cu);
  34867. BillPacket::BillPacket(v1);
  34868. v1->_vptr_BillPacket = (int (**)(...))off_80CB788;
  34869. memset(&v1[1], 0, 0x30u);
  34870. v2 = (int)&v1[7];
  34871. *(_WORD *)v2 = 0;
  34872. *(_BYTE *)(v2 + 2) = 0;
  34873. return v1;
  34874. }
  34875. // 80CB788: using guessed type _DWORD (__cdecl *off_80CB788[2])(Packets::BLRetBillingEnd *this);
  34876.  
  34877. //----- (0806C924) --------------------------------------------------------
  34878. BPacketID_t __cdecl Packets::BLRetBillingEndFactory::GetPacketID(const Packets::BLRetBillingEndFactory *const this)
  34879. {
  34880. return -92;
  34881. }
  34882.  
  34883. //----- (0806C930) --------------------------------------------------------
  34884. UINT __cdecl Packets::BLRetBillingEndFactory::GetPacketMaxSize(const Packets::BLRetBillingEndFactory *const this)
  34885. {
  34886. return 52;
  34887. }
  34888.  
  34889. //----- (0806C93C) --------------------------------------------------------
  34890. BillPacket *__cdecl Packets::BLRetBillingKeepFactory::CreatePacket(Packets::BLRetBillingKeepFactory *const this)
  34891. {
  34892. BillPacket *v1; // esi
  34893. int v2; // edi
  34894.  
  34895. v1 = (BillPacket *)operator new(0x48u);
  34896. BillPacket::BillPacket(v1);
  34897. v1->_vptr_BillPacket = (int (**)(...))off_80CB928;
  34898. memset(&v1[1], 0, 0x30u);
  34899. v2 = (int)&v1[7];
  34900. *(_WORD *)v2 = 0;
  34901. *(_BYTE *)(v2 + 2) = 0;
  34902. return v1;
  34903. }
  34904. // 80CB928: using guessed type _DWORD (__cdecl *off_80CB928[2])(Packets::BLRetBillingKeep *this);
  34905.  
  34906. //----- (0806C990) --------------------------------------------------------
  34907. BPacketID_t __cdecl Packets::BLRetBillingKeepFactory::GetPacketID(const Packets::BLRetBillingKeepFactory *const this)
  34908. {
  34909. return -90;
  34910. }
  34911.  
  34912. //----- (0806C99C) --------------------------------------------------------
  34913. UINT __cdecl Packets::BLRetBillingKeepFactory::GetPacketMaxSize(const Packets::BLRetBillingKeepFactory *const this)
  34914. {
  34915. return 64;
  34916. }
  34917.  
  34918. //----- (0806C9A8) --------------------------------------------------------
  34919. BillPacket *__cdecl Packets::BLRetKickALLFactory::CreatePacket(Packets::BLRetKickALLFactory *const this)
  34920. {
  34921. int v1; // esi
  34922.  
  34923. v1 = operator new(8u);
  34924. BillPacket::BillPacket((_DWORD *)v1);
  34925. *(_DWORD *)v1 = off_80CBF68;
  34926. *(_BYTE *)(v1 + 7) = 0;
  34927. return (BillPacket *)v1;
  34928. }
  34929. // 80CBF68: using guessed type _DWORD (__cdecl *off_80CBF68[2])(Packets::BLRetKickALL *this);
  34930.  
  34931. //----- (0806C9EC) --------------------------------------------------------
  34932. BPacketID_t __cdecl Packets::BLRetKickALLFactory::GetPacketID(const Packets::BLRetKickALLFactory *const this)
  34933. {
  34934. return -87;
  34935. }
  34936.  
  34937. //----- (0806C9F8) --------------------------------------------------------
  34938. UINT __cdecl Packets::BLRetKickALLFactory::GetPacketMaxSize(const Packets::BLRetKickALLFactory *const this)
  34939. {
  34940. return 1;
  34941. }
  34942.  
  34943. //----- (0806CA04) --------------------------------------------------------
  34944. BillPacket *__cdecl Packets::BLRetRegPassPortFactory::CreatePacket(Packets::BLRetRegPassPortFactory *const this)
  34945. {
  34946. int v1; // esi
  34947. int v2; // edi
  34948.  
  34949. v1 = operator new(0x3Cu);
  34950. BillPacket::BillPacket((_DWORD *)v1);
  34951. *(_DWORD *)v1 = off_80CC0E8;
  34952. memset((void *)(v1 + 8), 0, 0x30u);
  34953. v2 = v1 + 56;
  34954. *(_WORD *)v2 = 0;
  34955. *(_BYTE *)(v2 + 2) = 0;
  34956. *(_BYTE *)(v1 + 59) = 0;
  34957. *(_BYTE *)(v1 + 7) = 0;
  34958. return (BillPacket *)v1;
  34959. }
  34960. // 80CC0E8: using guessed type _DWORD (__cdecl *off_80CC0E8[2])(Packets::BLRetRegPassPort *this);
  34961.  
  34962. //----- (0806CA60) --------------------------------------------------------
  34963. BPacketID_t __cdecl Packets::BLRetRegPassPortFactory::GetPacketID(const Packets::BLRetRegPassPortFactory *const this)
  34964. {
  34965. return -15;
  34966. }
  34967.  
  34968. //----- (0806CA6C) --------------------------------------------------------
  34969. UINT __cdecl Packets::BLRetRegPassPortFactory::GetPacketMaxSize(const Packets::BLRetRegPassPortFactory *const this)
  34970. {
  34971. return 52;
  34972. }
  34973.  
  34974. //----- (0806CA78) --------------------------------------------------------
  34975. BillPacket *__cdecl Packets::BLRetPrizeFactory::CreatePacket(Packets::BLRetPrizeFactory *const this)
  34976. {
  34977. int v1; // esi
  34978. _BYTE *v2; // ebx
  34979. int v3; // edi
  34980. signed int v5; // [esp+10h] [ebp-24h]
  34981.  
  34982. v1 = operator new(0x2CCu);
  34983. BillPacket::BillPacket((_DWORD *)v1);
  34984. *(_DWORD *)v1 = off_80D0588;
  34985. v2 = (_BYTE *)(v1 + 61);
  34986. v5 = 29;
  34987. do
  34988. {
  34989. memset(v2, 0, 0x14u);
  34990. v2[20] = 0;
  34991. --v5;
  34992. v2 += 21;
  34993. }
  34994. while ( v5 != -1 );
  34995. memset((void *)(v1 + 8), 0, 0x30u);
  34996. v3 = v1 + 56;
  34997. *(_WORD *)v3 = 0;
  34998. *(_BYTE *)(v3 + 2) = 0;
  34999. memset((void *)(v1 + 61), 0, 0x276u);
  35000. memset((void *)(v1 + 691), 0, 0x14u);
  35001. *(_WORD *)(v1 + 711) = 0;
  35002. *(_BYTE *)(v1 + 60) = 0;
  35003. *(_BYTE *)(v1 + 59) = 0;
  35004. *(_BYTE *)(v1 + 7) = 0;
  35005. return (BillPacket *)v1;
  35006. }
  35007. // 80D0588: using guessed type _DWORD (__cdecl *off_80D0588[2])(Packets::BLRetPrize *this);
  35008.  
  35009. //----- (0806CB3C) --------------------------------------------------------
  35010. BPacketID_t __cdecl Packets::BLRetPrizeFactory::GetPacketID(const Packets::BLRetPrizeFactory *const this)
  35011. {
  35012. return -60;
  35013. }
  35014.  
  35015. //----- (0806CB48) --------------------------------------------------------
  35016. UINT __cdecl Packets::BLRetPrizeFactory::GetPacketMaxSize(const Packets::BLRetPrizeFactory *const this)
  35017. {
  35018. return 704;
  35019. }
  35020.  
  35021. //----- (0806CB54) --------------------------------------------------------
  35022. BillPacket *__cdecl Packets::BLRetAskPointFactory::CreatePacket(Packets::BLRetAskPointFactory *const this)
  35023. {
  35024. int v1; // esi
  35025. int v2; // edi
  35026.  
  35027. v1 = operator new(0x40u);
  35028. BillPacket::BillPacket((_DWORD *)v1);
  35029. *(_DWORD *)v1 = off_80D0408;
  35030. memset((void *)(v1 + 8), 0, 0x30u);
  35031. v2 = v1 + 56;
  35032. *(_WORD *)v2 = 0;
  35033. *(_BYTE *)(v2 + 2) = 0;
  35034. *(_DWORD *)(v1 + 60) = 0;
  35035. return (BillPacket *)v1;
  35036. }
  35037. // 80D0408: using guessed type _DWORD (__cdecl *off_80D0408[2])(Packets::BLRetAskPoint *this);
  35038.  
  35039. //----- (0806CBAC) --------------------------------------------------------
  35040. BPacketID_t __cdecl Packets::BLRetAskPointFactory::GetPacketID(const Packets::BLRetAskPointFactory *const this)
  35041. {
  35042. return -30;
  35043. }
  35044.  
  35045. //----- (0806CBB8) --------------------------------------------------------
  35046. UINT __cdecl Packets::BLRetAskPointFactory::GetPacketMaxSize(const Packets::BLRetAskPointFactory *const this)
  35047. {
  35048. return 55;
  35049. }
  35050.  
  35051. //----- (0806CBC4) --------------------------------------------------------
  35052. BillPacket *__cdecl Packets::BLRetAskBuyFactory::CreatePacket(Packets::BLRetAskBuyFactory *const this)
  35053. {
  35054. int v1; // esi
  35055. int v2; // eax
  35056. signed int v3; // edx
  35057. int v4; // edi
  35058.  
  35059. v1 = operator new(0x14Cu);
  35060. BillPacket::BillPacket((_DWORD *)v1);
  35061. *(_DWORD *)v1 = off_80D0288;
  35062. v2 = v1 + 68;
  35063. v3 = 29;
  35064. do
  35065. {
  35066. --v3;
  35067. *(_DWORD *)v2 = 0;
  35068. *(_WORD *)(v2 + 4) = 0;
  35069. v2 += 8;
  35070. }
  35071. while ( v3 != -1 );
  35072. memset((void *)(v1 + 8), 0, 0x30u);
  35073. v4 = v1 + 56;
  35074. *(_WORD *)v4 = 0;
  35075. *(_BYTE *)(v4 + 2) = 0;
  35076. memset((void *)(v1 + 308), 0, 0x14u);
  35077. *(_WORD *)(v1 + 328) = 0;
  35078. *(_BYTE *)(v1 + 59) = 0;
  35079. *(_BYTE *)(v1 + 7) = 0;
  35080. *(_WORD *)(v1 + 64) = 0;
  35081. *(_DWORD *)(v1 + 60) = 0;
  35082. return (BillPacket *)v1;
  35083. }
  35084. // 80D0288: using guessed type _DWORD (__cdecl *off_80D0288[2])(Packets::BLRetAskBuy *this);
  35085.  
  35086. //----- (0806CC58) --------------------------------------------------------
  35087. BPacketID_t __cdecl Packets::BLRetAskBuyFactory::GetPacketID(const Packets::BLRetAskBuyFactory *const this)
  35088. {
  35089. return -31;
  35090. }
  35091.  
  35092. //----- (0806CC64) --------------------------------------------------------
  35093. UINT __cdecl Packets::BLRetAskBuyFactory::GetPacketMaxSize(const Packets::BLRetAskBuyFactory *const this)
  35094. {
  35095. return 259;
  35096. }
  35097.  
  35098. //----- (0806CC70) --------------------------------------------------------
  35099. BillPacket *__cdecl Packets::LBLCostLogFactory::CreatePacket(Packets::LBLCostLogFactory *const this)
  35100. {
  35101. int v1; // esi
  35102. int v2; // edi
  35103. int v3; // edi
  35104.  
  35105. v1 = operator new(0x1A4u);
  35106. BillPacket::BillPacket((_DWORD *)v1);
  35107. *(_DWORD *)v1 = off_80D1948;
  35108. memset((void *)(v1 + 61), 0, 0x30u);
  35109. v2 = v1 + 109;
  35110. *(_WORD *)v2 = 0;
  35111. *(_BYTE *)(v2 + 2) = 0;
  35112. memset((void *)(v1 + 145), 0, 0x10u);
  35113. memset((void *)(v1 + 113), 0, 0x1Cu);
  35114. v3 = v1 + 141;
  35115. *(_WORD *)v3 = 0;
  35116. *(_BYTE *)(v3 + 2) = 0;
  35117. memset((void *)(v1 + 8), 0, 0x14u);
  35118. *(_WORD *)(v1 + 28) = 0;
  35119. memset((void *)(v1 + 162), 0, 0x100u);
  35120. *(_BYTE *)(v1 + 161) = 0;
  35121. *(_BYTE *)(v1 + 112) = 0;
  35122. *(_BYTE *)(v1 + 144) = 0;
  35123. *(_BYTE *)(v1 + 60) = 0;
  35124. *(_WORD *)(v1 + 30) = 0;
  35125. *(_DWORD *)(v1 + 32) = 0;
  35126. *(_DWORD *)(v1 + 36) = 0;
  35127. *(_DWORD *)(v1 + 40) = 0;
  35128. *(_DWORD *)(v1 + 44) = -1;
  35129. *(_WORD *)(v1 + 48) = 0;
  35130. *(_DWORD *)(v1 + 52) = 0;
  35131. *(_DWORD *)(v1 + 56) = 0;
  35132. *(_BYTE *)(v1 + 7) = 1;
  35133. *(_BYTE *)(v1 + 418) = 0;
  35134. return (BillPacket *)v1;
  35135. }
  35136. // 80D1948: using guessed type _DWORD (__cdecl *off_80D1948[2])(Packets::LBLCostLog *this);
  35137.  
  35138. //----- (0806CD50) --------------------------------------------------------
  35139. BPacketID_t __cdecl Packets::LBLCostLogFactory::GetPacketID(const Packets::LBLCostLogFactory *const this)
  35140. {
  35141. return -59;
  35142. }
  35143.  
  35144. //----- (0806CD5C) --------------------------------------------------------
  35145. UINT __cdecl Packets::LBLCostLogFactory::GetPacketMaxSize(const Packets::LBLCostLogFactory *const this)
  35146. {
  35147. return 404;
  35148. }
  35149.  
  35150. //----- (0806CD68) --------------------------------------------------------
  35151. BillPacket *__cdecl Packets::LBLAskNewUserCardFactory::CreatePacket(Packets::LBLAskNewUserCardFactory *const this)
  35152. {
  35153. int v1; // esi
  35154. _BYTE *v2; // ebx
  35155. int v3; // edi
  35156. int v4; // edi
  35157. signed int v6; // [esp+18h] [ebp-2Ch]
  35158.  
  35159. v1 = operator new(0x304u);
  35160. BillPacket::BillPacket((_DWORD *)v1);
  35161. *(_DWORD *)v1 = off_80D09E8;
  35162. v2 = (_BYTE *)(v1 + 133);
  35163. v6 = 29;
  35164. do
  35165. {
  35166. memset(v2, 0, 0x14u);
  35167. v2[20] = 0;
  35168. --v6;
  35169. v2 += 21;
  35170. }
  35171. while ( v6 != -1 );
  35172. memset((void *)(v1 + 31), 0, 0x30u);
  35173. v3 = v1 + 79;
  35174. *(_WORD *)v3 = 0;
  35175. *(_BYTE *)(v3 + 2) = 0;
  35176. memset((void *)(v1 + 83), 0, 0x10u);
  35177. memset((void *)(v1 + 100), 0, 0x1Cu);
  35178. v4 = v1 + 128;
  35179. *(_WORD *)v4 = 0;
  35180. *(_BYTE *)(v4 + 2) = 0;
  35181. memset((void *)(v1 + 9), 0, 0x14u);
  35182. *(_BYTE *)(v1 + 29) = 0;
  35183. memset((void *)(v1 + 133), 0, 0x276u);
  35184. *(_BYTE *)(v1 + 99) = 0;
  35185. *(_BYTE *)(v1 + 82) = 0;
  35186. *(_BYTE *)(v1 + 30) = 0;
  35187. *(_BYTE *)(v1 + 8) = 0;
  35188. *(_BYTE *)(v1 + 131) = 0;
  35189. *(_BYTE *)(v1 + 7) = 1;
  35190. *(_WORD *)(v1 + 768) = 1;
  35191. *(_DWORD *)(v1 + 764) = -1;
  35192. return (BillPacket *)v1;
  35193. }
  35194. // 80D09E8: using guessed type _DWORD (__cdecl *off_80D09E8[2])(Packets::LBLAskNewUserCard *this);
  35195.  
  35196. //----- (0806CE58) --------------------------------------------------------
  35197. BPacketID_t __cdecl Packets::LBLAskNewUserCardFactory::GetPacketID(const Packets::LBLAskNewUserCardFactory *const this)
  35198. {
  35199. return -63;
  35200. }
  35201.  
  35202. //----- (0806CE64) --------------------------------------------------------
  35203. UINT __cdecl Packets::LBLAskNewUserCardFactory::GetPacketMaxSize(const Packets::LBLAskNewUserCardFactory *const this)
  35204. {
  35205. return 757;
  35206. }
  35207.  
  35208. //----- (0806CE70) --------------------------------------------------------
  35209. BillPacket *__cdecl Packets::LBLNewPrizeFactory::CreatePacket(Packets::LBLNewPrizeFactory *const this)
  35210. {
  35211. int v1; // esi
  35212. _BYTE *v2; // ebx
  35213. int v3; // edi
  35214. int v4; // edi
  35215. signed int v6; // [esp+18h] [ebp-2Ch]
  35216.  
  35217. v1 = operator new(0x304u);
  35218. BillPacket::BillPacket((_DWORD *)v1);
  35219. *(_DWORD *)v1 = off_80D0EC8;
  35220. v2 = (_BYTE *)(v1 + 133);
  35221. v6 = 29;
  35222. do
  35223. {
  35224. memset(v2, 0, 0x14u);
  35225. v2[20] = 0;
  35226. --v6;
  35227. v2 += 21;
  35228. }
  35229. while ( v6 != -1 );
  35230. *(_BYTE *)(v1 + 7) = 1;
  35231. memset((void *)(v1 + 9), 0, 0x30u);
  35232. v3 = v1 + 57;
  35233. *(_WORD *)v3 = 0;
  35234. *(_BYTE *)(v3 + 2) = 0;
  35235. memset((void *)(v1 + 61), 0, 0x10u);
  35236. memset((void *)(v1 + 78), 0, 0x1Cu);
  35237. v4 = v1 + 106;
  35238. *(_WORD *)v4 = 0;
  35239. *(_BYTE *)(v4 + 2) = 0;
  35240. memset((void *)(v1 + 109), 0, 0x14u);
  35241. *(_WORD *)(v1 + 129) = 0;
  35242. *(_BYTE *)(v1 + 77) = 0;
  35243. *(_BYTE *)(v1 + 60) = 0;
  35244. *(_BYTE *)(v1 + 8) = 0;
  35245. memset((void *)(v1 + 133), 0, 0x276u);
  35246. *(_BYTE *)(v1 + 131) = 0;
  35247. *(_BYTE *)(v1 + 132) = 0;
  35248. *(_DWORD *)(v1 + 764) = -1;
  35249. *(_WORD *)(v1 + 768) = 1;
  35250. return (BillPacket *)v1;
  35251. }
  35252. // 80D0EC8: using guessed type _DWORD (__cdecl *off_80D0EC8[2])(Packets::LBLNewPrize *this);
  35253.  
  35254. //----- (0806CF64) --------------------------------------------------------
  35255. BPacketID_t __cdecl Packets::LBLNewPrizeFactory::GetPacketID(const Packets::LBLNewPrizeFactory *const this)
  35256. {
  35257. return -61;
  35258. }
  35259.  
  35260. //----- (0806CF70) --------------------------------------------------------
  35261. UINT __cdecl Packets::LBLNewPrizeFactory::GetPacketMaxSize(const Packets::LBLNewPrizeFactory *const this)
  35262. {
  35263. return 757;
  35264. }
  35265.  
  35266. //----- (0806CF7C) --------------------------------------------------------
  35267. BillPacket *__cdecl Packets::LBLNewCheckPrizeFactory::CreatePacket(Packets::LBLNewCheckPrizeFactory *const this)
  35268. {
  35269. int v1; // esi
  35270. _BYTE *v2; // ebx
  35271. int v3; // edi
  35272. int v4; // edi
  35273. signed int v6; // [esp+Ch] [ebp-28h]
  35274.  
  35275. v1 = operator new(0x2E8u);
  35276. BillPacket::BillPacket((_DWORD *)v1);
  35277. *(_DWORD *)v1 = off_80D0D28;
  35278. v2 = (_BYTE *)(v1 + 111);
  35279. v6 = 29;
  35280. do
  35281. {
  35282. memset(v2, 0, 0x14u);
  35283. v2[20] = 0;
  35284. --v6;
  35285. v2 += 21;
  35286. }
  35287. while ( v6 != -1 );
  35288. *(_BYTE *)(v1 + 7) = 1;
  35289. memset((void *)(v1 + 9), 0, 0x30u);
  35290. v3 = v1 + 57;
  35291. *(_WORD *)v3 = 0;
  35292. *(_BYTE *)(v3 + 2) = 0;
  35293. memset((void *)(v1 + 61), 0, 0x10u);
  35294. memset((void *)(v1 + 78), 0, 0x1Cu);
  35295. v4 = v1 + 106;
  35296. *(_WORD *)v4 = 0;
  35297. *(_BYTE *)(v4 + 2) = 0;
  35298. *(_BYTE *)(v1 + 77) = 0;
  35299. *(_BYTE *)(v1 + 60) = 0;
  35300. *(_BYTE *)(v1 + 8) = 0;
  35301. memset((void *)(v1 + 111), 0, 0x276u);
  35302. *(_BYTE *)(v1 + 109) = 0;
  35303. *(_BYTE *)(v1 + 110) = 0;
  35304. return (BillPacket *)v1;
  35305. }
  35306. // 80D0D28: using guessed type _DWORD (__cdecl *off_80D0D28[2])(Packets::LBLNewCheckPrize *this);
  35307.  
  35308. //----- (0806D044) --------------------------------------------------------
  35309. BPacketID_t __cdecl Packets::LBLNewCheckPrizeFactory::GetPacketID(const Packets::LBLNewCheckPrizeFactory *const this)
  35310. {
  35311. return -28;
  35312. }
  35313.  
  35314. //----- (0806D050) --------------------------------------------------------
  35315. UINT __cdecl Packets::LBLNewCheckPrizeFactory::GetPacketMaxSize(const Packets::LBLNewCheckPrizeFactory *const this)
  35316. {
  35317. return 730;
  35318. }
  35319.  
  35320. //----- (0806D05C) --------------------------------------------------------
  35321. BillPacket *__cdecl Packets::LBLAskMigFactory::CreatePacket(Packets::LBLAskMigFactory *const this)
  35322. {
  35323. int v1; // esi
  35324. int v2; // edi
  35325. int v3; // edi
  35326.  
  35327. v1 = operator new(0x90u);
  35328. BillPacket::BillPacket((_DWORD *)v1);
  35329. *(_DWORD *)v1 = off_80D1B68;
  35330. *(_BYTE *)(v1 + 7) = 1;
  35331. memset((void *)(v1 + 9), 0, 0x30u);
  35332. v2 = v1 + 57;
  35333. *(_WORD *)v2 = 0;
  35334. *(_BYTE *)(v2 + 2) = 0;
  35335. memset((void *)(v1 + 61), 0, 0x10u);
  35336. memset((void *)(v1 + 78), 0, 0x1Cu);
  35337. v3 = v1 + 106;
  35338. *(_WORD *)v3 = 0;
  35339. *(_BYTE *)(v3 + 2) = 0;
  35340. memset((void *)(v1 + 109), 0, 0x14u);
  35341. *(_WORD *)(v1 + 129) = 0;
  35342. *(_BYTE *)(v1 + 77) = 0;
  35343. *(_BYTE *)(v1 + 60) = 0;
  35344. *(_BYTE *)(v1 + 8) = 0;
  35345. *(_WORD *)(v1 + 132) = 0;
  35346. *(_DWORD *)(v1 + 136) = -1;
  35347. *(_BYTE *)(v1 + 140) = 0;
  35348. return (BillPacket *)v1;
  35349. }
  35350. // 80D1B68: using guessed type _DWORD (__cdecl *off_80D1B68[2])(Packets::LBLAskMig *this);
  35351.  
  35352. //----- (0806D0F4) --------------------------------------------------------
  35353. BPacketID_t __cdecl Packets::LBLAskMigFactory::GetPacketID(const Packets::LBLAskMigFactory *const this)
  35354. {
  35355. return -27;
  35356. }
  35357.  
  35358. //----- (0806D100) --------------------------------------------------------
  35359. UINT __cdecl Packets::LBLAskMigFactory::GetPacketMaxSize(const Packets::LBLAskMigFactory *const this)
  35360. {
  35361. return 126;
  35362. }
  35363.  
  35364. //----- (0806D10C) --------------------------------------------------------
  35365. BillPacket *__cdecl Packets::LBLRegNewLicenseFactory::CreatePacket(Packets::LBLRegNewLicenseFactory *const this)
  35366. {
  35367. int v1; // esi
  35368. int v2; // edi
  35369.  
  35370. v1 = operator new(0x50u);
  35371. BillPacket::BillPacket((_DWORD *)v1);
  35372. *(_DWORD *)v1 = off_80D2628;
  35373. *(_BYTE *)(v1 + 7) = 1;
  35374. memset((void *)(v1 + 9), 0, 0x30u);
  35375. v2 = v1 + 57;
  35376. *(_WORD *)v2 = 0;
  35377. *(_BYTE *)(v2 + 2) = 0;
  35378. *(_BYTE *)(v1 + 8) = 0;
  35379. *(_BYTE *)(v1 + 77) = 89;
  35380. *(_BYTE *)(v1 + 60) = 0;
  35381. memset((void *)(v1 + 61), 0, 0x10u);
  35382. return (BillPacket *)v1;
  35383. }
  35384. // 80D2628: using guessed type _DWORD (__cdecl *off_80D2628[2])(Packets::LBLRegNewLicense *this);
  35385.  
  35386. //----- (0806D174) --------------------------------------------------------
  35387. BPacketID_t __cdecl Packets::LBLRegNewLicenseFactory::GetPacketID(const Packets::LBLRegNewLicenseFactory *const this)
  35388. {
  35389. return -89;
  35390. }
  35391.  
  35392. //----- (0806D180) --------------------------------------------------------
  35393. UINT __cdecl Packets::LBLRegNewLicenseFactory::GetPacketMaxSize(const Packets::LBLRegNewLicenseFactory *const this)
  35394. {
  35395. return 68;
  35396. }
  35397.  
  35398. //----- (0806D18C) --------------------------------------------------------
  35399. BillPacket *__cdecl Packets::LBLCardCheckPrizeFactory::CreatePacket(Packets::LBLCardCheckPrizeFactory *const this)
  35400. {
  35401. int v1; // esi
  35402. _BYTE *v2; // ebx
  35403. int v3; // edi
  35404. int v4; // edi
  35405. signed int v6; // [esp+18h] [ebp-2Ch]
  35406.  
  35407. v1 = operator new(0x2FCu);
  35408. BillPacket::BillPacket((_DWORD *)v1);
  35409. *(_DWORD *)v1 = off_80D0B88;
  35410. v2 = (_BYTE *)(v1 + 133);
  35411. v6 = 29;
  35412. do
  35413. {
  35414. memset(v2, 0, 0x14u);
  35415. v2[20] = 0;
  35416. --v6;
  35417. v2 += 21;
  35418. }
  35419. while ( v6 != -1 );
  35420. memset((void *)(v1 + 31), 0, 0x30u);
  35421. v3 = v1 + 79;
  35422. *(_WORD *)v3 = 0;
  35423. *(_BYTE *)(v3 + 2) = 0;
  35424. memset((void *)(v1 + 83), 0, 0x10u);
  35425. memset((void *)(v1 + 100), 0, 0x1Cu);
  35426. v4 = v1 + 128;
  35427. *(_WORD *)v4 = 0;
  35428. *(_BYTE *)(v4 + 2) = 0;
  35429. memset((void *)(v1 + 9), 0, 0x14u);
  35430. *(_BYTE *)(v1 + 29) = 0;
  35431. memset((void *)(v1 + 133), 0, 0x276u);
  35432. *(_BYTE *)(v1 + 99) = 0;
  35433. *(_BYTE *)(v1 + 82) = 0;
  35434. *(_BYTE *)(v1 + 30) = 0;
  35435. *(_BYTE *)(v1 + 8) = 0;
  35436. *(_BYTE *)(v1 + 131) = 0;
  35437. *(_BYTE *)(v1 + 7) = 1;
  35438. return (BillPacket *)v1;
  35439. }
  35440. // 80D0B88: using guessed type _DWORD (__cdecl *off_80D0B88[2])(Packets::LBLCardCheckPrize *this);
  35441.  
  35442. //----- (0806D268) --------------------------------------------------------
  35443. BPacketID_t __cdecl Packets::LBLCardCheckPrizeFactory::GetPacketID(const Packets::LBLCardCheckPrizeFactory *const this)
  35444. {
  35445. return -58;
  35446. }
  35447.  
  35448. //----- (0806D274) --------------------------------------------------------
  35449. UINT __cdecl Packets::LBLCardCheckPrizeFactory::GetPacketMaxSize(const Packets::LBLCardCheckPrizeFactory *const this)
  35450. {
  35451. return 751;
  35452. }
  35453.  
  35454. //----- (0806D280) --------------------------------------------------------
  35455. BillPacket *__cdecl Packets::LBLOperateAccFactory::CreatePacket(Packets::LBLOperateAccFactory *const this)
  35456. {
  35457. int v1; // esi
  35458. int v2; // edi
  35459. int v3; // edi
  35460.  
  35461. v1 = operator new(0xECu);
  35462. BillPacket::BillPacket((_DWORD *)v1);
  35463. *(_DWORD *)v1 = off_80D2928;
  35464. *(_BYTE *)(v1 + 7) = 1;
  35465. *(_BYTE *)(v1 + 8) = 0;
  35466. memset((void *)(v1 + 9), 0, 0x14u);
  35467. *(_BYTE *)(v1 + 29) = 0;
  35468. *(_BYTE *)(v1 + 30) = 0;
  35469. memset((void *)(v1 + 31), 0, 0x30u);
  35470. v2 = v1 + 79;
  35471. *(_WORD *)v2 = 0;
  35472. *(_BYTE *)(v2 + 2) = 0;
  35473. *(_BYTE *)(v1 + 82) = 0;
  35474. memset((void *)(v1 + 83), 0, 0x30u);
  35475. v3 = v1 + 131;
  35476. *(_WORD *)v3 = 0;
  35477. *(_BYTE *)(v3 + 2) = 0;
  35478. *(_BYTE *)(v1 + 134) = 0;
  35479. memset((void *)(v1 + 135), 0, 0x10u);
  35480. *(_WORD *)(v1 + 152) = 1;
  35481. *(_BYTE *)(v1 + 154) = 89;
  35482. *(_BYTE *)(v1 + 155) = 0;
  35483. memset((void *)(v1 + 156), 0, 0x20u);
  35484. *(_BYTE *)(v1 + 188) = 0;
  35485. *(_BYTE *)(v1 + 189) = 0;
  35486. memset((void *)(v1 + 190), 0, 0x28u);
  35487. *(_BYTE *)(v1 + 230) = 0;
  35488. *(_DWORD *)(v1 + 232) = -1;
  35489. return (BillPacket *)v1;
  35490. }
  35491. // 80D2928: using guessed type _DWORD (__cdecl *off_80D2928[2])(Packets::LBLOperateAcc *this);
  35492.  
  35493. //----- (0806D348) --------------------------------------------------------
  35494. BPacketID_t __cdecl Packets::LBLOperateAccFactory::GetPacketID(const Packets::LBLOperateAccFactory *const this)
  35495. {
  35496. return -79;
  35497. }
  35498.  
  35499. //----- (0806D354) --------------------------------------------------------
  35500. UINT __cdecl Packets::LBLOperateAccFactory::GetPacketMaxSize(const Packets::LBLOperateAccFactory *const this)
  35501. {
  35502. return 220;
  35503. }
  35504.  
  35505. //----- (0806D360) --------------------------------------------------------
  35506. Packet *__cdecl Packets::LWAskCharLoginFactory::CreatePacket(Packets::LWAskCharLoginFactory *const this)
  35507. {
  35508. Packets::LWAskCharLogin *v1; // esi
  35509.  
  35510. v1 = (Packets::LWAskCharLogin *)operator new(0xC684u);
  35511. Packets::LWAskCharLogin::LWAskCharLogin(v1);
  35512. return &v1->0;
  35513. }
  35514.  
  35515. //----- (0806D39C) --------------------------------------------------------
  35516. void __cdecl Packets::CLAskLoginFactory::~CLAskLoginFactory(_DWORD *a2)
  35517. {
  35518. *a2 = off_80CA0F0;
  35519. }
  35520. // 80CA0F0: using guessed type _DWORD (__cdecl *off_80CA0F0[2])(PacketFactory *this);
  35521.  
  35522. //----- (0806D3AC) --------------------------------------------------------
  35523. void __cdecl Packets::CLAskLoginFactory::~CLAskLoginFactory(IPRegionTable *const a2)
  35524. {
  35525. a2->_vptr_IPRegionTable = (int (**)(...))off_80CA0F0;
  35526. operator delete(a2);
  35527. }
  35528. // 80CA0F0: using guessed type _DWORD (__cdecl *off_80CA0F0[2])(PacketFactory *this);
  35529.  
  35530. //----- (0806D3C0) --------------------------------------------------------
  35531. void __cdecl Packets::CLAskCharListFactory::~CLAskCharListFactory(_DWORD *a2)
  35532. {
  35533. *a2 = off_80CA0F0;
  35534. }
  35535. // 80CA0F0: using guessed type _DWORD (__cdecl *off_80CA0F0[2])(PacketFactory *this);
  35536.  
  35537. //----- (0806D3D0) --------------------------------------------------------
  35538. void __cdecl Packets::CLAskCharListFactory::~CLAskCharListFactory(IPRegionTable *const a2)
  35539. {
  35540. a2->_vptr_IPRegionTable = (int (**)(...))off_80CA0F0;
  35541. operator delete(a2);
  35542. }
  35543. // 80CA0F0: using guessed type _DWORD (__cdecl *off_80CA0F0[2])(PacketFactory *this);
  35544.  
  35545. //----- (0806D3E4) --------------------------------------------------------
  35546. void __cdecl Packets::CLAskCharLoginFactory::~CLAskCharLoginFactory(_DWORD *a2)
  35547. {
  35548. *a2 = off_80CA0F0;
  35549. }
  35550. // 80CA0F0: using guessed type _DWORD (__cdecl *off_80CA0F0[2])(PacketFactory *this);
  35551.  
  35552. //----- (0806D3F4) --------------------------------------------------------
  35553. void __cdecl Packets::CLAskCharLoginFactory::~CLAskCharLoginFactory(IPRegionTable *const a2)
  35554. {
  35555. a2->_vptr_IPRegionTable = (int (**)(...))off_80CA0F0;
  35556. operator delete(a2);
  35557. }
  35558. // 80CA0F0: using guessed type _DWORD (__cdecl *off_80CA0F0[2])(PacketFactory *this);
  35559.  
  35560. //----- (0806D408) --------------------------------------------------------
  35561. void __cdecl Packets::CLConnectFactory::~CLConnectFactory(_DWORD *a2)
  35562. {
  35563. *a2 = off_80CA0F0;
  35564. }
  35565. // 80CA0F0: using guessed type _DWORD (__cdecl *off_80CA0F0[2])(PacketFactory *this);
  35566.  
  35567. //----- (0806D418) --------------------------------------------------------
  35568. void __cdecl Packets::CLConnectFactory::~CLConnectFactory(IPRegionTable *const a2)
  35569. {
  35570. a2->_vptr_IPRegionTable = (int (**)(...))off_80CA0F0;
  35571. operator delete(a2);
  35572. }
  35573. // 80CA0F0: using guessed type _DWORD (__cdecl *off_80CA0F0[2])(PacketFactory *this);
  35574.  
  35575. //----- (0806D42C) --------------------------------------------------------
  35576. void __cdecl Packets::CLAskCreateCharFactory::~CLAskCreateCharFactory(_DWORD *a2)
  35577. {
  35578. *a2 = off_80CA0F0;
  35579. }
  35580. // 80CA0F0: using guessed type _DWORD (__cdecl *off_80CA0F0[2])(PacketFactory *this);
  35581.  
  35582. //----- (0806D43C) --------------------------------------------------------
  35583. void __cdecl Packets::CLAskCreateCharFactory::~CLAskCreateCharFactory(IPRegionTable *const a2)
  35584. {
  35585. a2->_vptr_IPRegionTable = (int (**)(...))off_80CA0F0;
  35586. operator delete(a2);
  35587. }
  35588. // 80CA0F0: using guessed type _DWORD (__cdecl *off_80CA0F0[2])(PacketFactory *this);
  35589.  
  35590. //----- (0806D450) --------------------------------------------------------
  35591. void __cdecl Packets::CLAskDeleteCharFactory::~CLAskDeleteCharFactory(_DWORD *a2)
  35592. {
  35593. *a2 = off_80CA0F0;
  35594. }
  35595. // 80CA0F0: using guessed type _DWORD (__cdecl *off_80CA0F0[2])(PacketFactory *this);
  35596.  
  35597. //----- (0806D460) --------------------------------------------------------
  35598. void __cdecl Packets::CLAskDeleteCharFactory::~CLAskDeleteCharFactory(IPRegionTable *const a2)
  35599. {
  35600. a2->_vptr_IPRegionTable = (int (**)(...))off_80CA0F0;
  35601. operator delete(a2);
  35602. }
  35603. // 80CA0F0: using guessed type _DWORD (__cdecl *off_80CA0F0[2])(PacketFactory *this);
  35604.  
  35605. //----- (0806D474) --------------------------------------------------------
  35606. void __cdecl Packets::CLAskRegPassPortFactory::~CLAskRegPassPortFactory(_DWORD *a2)
  35607. {
  35608. *a2 = off_80CA0F0;
  35609. }
  35610. // 80CA0F0: using guessed type _DWORD (__cdecl *off_80CA0F0[2])(PacketFactory *this);
  35611.  
  35612. //----- (0806D484) --------------------------------------------------------
  35613. void __cdecl Packets::CLAskRegPassPortFactory::~CLAskRegPassPortFactory(IPRegionTable *const a2)
  35614. {
  35615. a2->_vptr_IPRegionTable = (int (**)(...))off_80CA0F0;
  35616. operator delete(a2);
  35617. }
  35618. // 80CA0F0: using guessed type _DWORD (__cdecl *off_80CA0F0[2])(PacketFactory *this);
  35619.  
  35620. //----- (0806D498) --------------------------------------------------------
  35621. void __cdecl Packets::CLAskCreateCodeFactory::~CLAskCreateCodeFactory(_DWORD *a2)
  35622. {
  35623. *a2 = off_80CA0F0;
  35624. }
  35625. // 80CA0F0: using guessed type _DWORD (__cdecl *off_80CA0F0[2])(PacketFactory *this);
  35626.  
  35627. //----- (0806D4A8) --------------------------------------------------------
  35628. void __cdecl Packets::CLAskCreateCodeFactory::~CLAskCreateCodeFactory(IPRegionTable *const a2)
  35629. {
  35630. a2->_vptr_IPRegionTable = (int (**)(...))off_80CA0F0;
  35631. operator delete(a2);
  35632. }
  35633. // 80CA0F0: using guessed type _DWORD (__cdecl *off_80CA0F0[2])(PacketFactory *this);
  35634.  
  35635. //----- (0806D4BC) --------------------------------------------------------
  35636. void __cdecl Packets::CLRegNewLicenseFactory::~CLRegNewLicenseFactory(_DWORD *a2)
  35637. {
  35638. *a2 = off_80CA0F0;
  35639. }
  35640. // 80CA0F0: using guessed type _DWORD (__cdecl *off_80CA0F0[2])(PacketFactory *this);
  35641.  
  35642. //----- (0806D4CC) --------------------------------------------------------
  35643. void __cdecl Packets::CLRegNewLicenseFactory::~CLRegNewLicenseFactory(IPRegionTable *const a2)
  35644. {
  35645. a2->_vptr_IPRegionTable = (int (**)(...))off_80CA0F0;
  35646. operator delete(a2);
  35647. }
  35648. // 80CA0F0: using guessed type _DWORD (__cdecl *off_80CA0F0[2])(PacketFactory *this);
  35649.  
  35650. //----- (0806D4E0) --------------------------------------------------------
  35651. void __cdecl Packets::CLAskLoginCodeFactory::~CLAskLoginCodeFactory(_DWORD *a2)
  35652. {
  35653. *a2 = off_80CA0F0;
  35654. }
  35655. // 80CA0F0: using guessed type _DWORD (__cdecl *off_80CA0F0[2])(PacketFactory *this);
  35656.  
  35657. //----- (0806D4F0) --------------------------------------------------------
  35658. void __cdecl Packets::CLAskLoginCodeFactory::~CLAskLoginCodeFactory(IPRegionTable *const a2)
  35659. {
  35660. a2->_vptr_IPRegionTable = (int (**)(...))off_80CA0F0;
  35661. operator delete(a2);
  35662. }
  35663. // 80CA0F0: using guessed type _DWORD (__cdecl *off_80CA0F0[2])(PacketFactory *this);
  35664.  
  35665. //----- (0806D504) --------------------------------------------------------
  35666. void __cdecl Packets::CLRegSafeSignFactory::~CLRegSafeSignFactory(_DWORD *a2)
  35667. {
  35668. *a2 = off_80CA0F0;
  35669. }
  35670. // 80CA0F0: using guessed type _DWORD (__cdecl *off_80CA0F0[2])(PacketFactory *this);
  35671.  
  35672. //----- (0806D514) --------------------------------------------------------
  35673. void __cdecl Packets::CLRegSafeSignFactory::~CLRegSafeSignFactory(IPRegionTable *const a2)
  35674. {
  35675. a2->_vptr_IPRegionTable = (int (**)(...))off_80CA0F0;
  35676. operator delete(a2);
  35677. }
  35678. // 80CA0F0: using guessed type _DWORD (__cdecl *off_80CA0F0[2])(PacketFactory *this);
  35679.  
  35680. //----- (0806D528) --------------------------------------------------------
  35681. void __cdecl Packets::LCRetLoginFactory::~LCRetLoginFactory(_DWORD *a2)
  35682. {
  35683. *a2 = off_80CA0F0;
  35684. }
  35685. // 80CA0F0: using guessed type _DWORD (__cdecl *off_80CA0F0[2])(PacketFactory *this);
  35686.  
  35687. //----- (0806D538) --------------------------------------------------------
  35688. void __cdecl Packets::LCRetLoginFactory::~LCRetLoginFactory(IPRegionTable *const a2)
  35689. {
  35690. a2->_vptr_IPRegionTable = (int (**)(...))off_80CA0F0;
  35691. operator delete(a2);
  35692. }
  35693. // 80CA0F0: using guessed type _DWORD (__cdecl *off_80CA0F0[2])(PacketFactory *this);
  35694.  
  35695. //----- (0806D54C) --------------------------------------------------------
  35696. void __cdecl Packets::LCRetCharListFactory::~LCRetCharListFactory(_DWORD *a2)
  35697. {
  35698. *a2 = off_80CA0F0;
  35699. }
  35700. // 80CA0F0: using guessed type _DWORD (__cdecl *off_80CA0F0[2])(PacketFactory *this);
  35701.  
  35702. //----- (0806D55C) --------------------------------------------------------
  35703. void __cdecl Packets::LCRetCharListFactory::~LCRetCharListFactory(IPRegionTable *const a2)
  35704. {
  35705. a2->_vptr_IPRegionTable = (int (**)(...))off_80CA0F0;
  35706. operator delete(a2);
  35707. }
  35708. // 80CA0F0: using guessed type _DWORD (__cdecl *off_80CA0F0[2])(PacketFactory *this);
  35709.  
  35710. //----- (0806D570) --------------------------------------------------------
  35711. void __cdecl Packets::LCStatusFactory::~LCStatusFactory(_DWORD *a2)
  35712. {
  35713. *a2 = off_80CA0F0;
  35714. }
  35715. // 80CA0F0: using guessed type _DWORD (__cdecl *off_80CA0F0[2])(PacketFactory *this);
  35716.  
  35717. //----- (0806D580) --------------------------------------------------------
  35718. void __cdecl Packets::LCStatusFactory::~LCStatusFactory(IPRegionTable *const a2)
  35719. {
  35720. a2->_vptr_IPRegionTable = (int (**)(...))off_80CA0F0;
  35721. operator delete(a2);
  35722. }
  35723. // 80CA0F0: using guessed type _DWORD (__cdecl *off_80CA0F0[2])(PacketFactory *this);
  35724.  
  35725. //----- (0806D594) --------------------------------------------------------
  35726. void __cdecl Packets::LCRetCharLoginFactory::~LCRetCharLoginFactory(_DWORD *a2)
  35727. {
  35728. *a2 = off_80CA0F0;
  35729. }
  35730. // 80CA0F0: using guessed type _DWORD (__cdecl *off_80CA0F0[2])(PacketFactory *this);
  35731.  
  35732. //----- (0806D5A4) --------------------------------------------------------
  35733. void __cdecl Packets::LCRetCharLoginFactory::~LCRetCharLoginFactory(IPRegionTable *const a2)
  35734. {
  35735. a2->_vptr_IPRegionTable = (int (**)(...))off_80CA0F0;
  35736. operator delete(a2);
  35737. }
  35738. // 80CA0F0: using guessed type _DWORD (__cdecl *off_80CA0F0[2])(PacketFactory *this);
  35739.  
  35740. //----- (0806D5B8) --------------------------------------------------------
  35741. void __cdecl Packets::LCRetConnectFactory::~LCRetConnectFactory(_DWORD *a2)
  35742. {
  35743. *a2 = off_80CA0F0;
  35744. }
  35745. // 80CA0F0: using guessed type _DWORD (__cdecl *off_80CA0F0[2])(PacketFactory *this);
  35746.  
  35747. //----- (0806D5C8) --------------------------------------------------------
  35748. void __cdecl Packets::LCRetConnectFactory::~LCRetConnectFactory(IPRegionTable *const a2)
  35749. {
  35750. a2->_vptr_IPRegionTable = (int (**)(...))off_80CA0F0;
  35751. operator delete(a2);
  35752. }
  35753. // 80CA0F0: using guessed type _DWORD (__cdecl *off_80CA0F0[2])(PacketFactory *this);
  35754.  
  35755. //----- (0806D5DC) --------------------------------------------------------
  35756. void __cdecl Packets::LCRetCreateCharFactory::~LCRetCreateCharFactory(_DWORD *a2)
  35757. {
  35758. *a2 = off_80CA0F0;
  35759. }
  35760. // 80CA0F0: using guessed type _DWORD (__cdecl *off_80CA0F0[2])(PacketFactory *this);
  35761.  
  35762. //----- (0806D5EC) --------------------------------------------------------
  35763. void __cdecl Packets::LCRetCreateCharFactory::~LCRetCreateCharFactory(IPRegionTable *const a2)
  35764. {
  35765. a2->_vptr_IPRegionTable = (int (**)(...))off_80CA0F0;
  35766. operator delete(a2);
  35767. }
  35768. // 80CA0F0: using guessed type _DWORD (__cdecl *off_80CA0F0[2])(PacketFactory *this);
  35769.  
  35770. //----- (0806D600) --------------------------------------------------------
  35771. void __cdecl Packets::LCRetDeleteCharFactory::~LCRetDeleteCharFactory(_DWORD *a2)
  35772. {
  35773. *a2 = off_80CA0F0;
  35774. }
  35775. // 80CA0F0: using guessed type _DWORD (__cdecl *off_80CA0F0[2])(PacketFactory *this);
  35776.  
  35777. //----- (0806D610) --------------------------------------------------------
  35778. void __cdecl Packets::LCRetDeleteCharFactory::~LCRetDeleteCharFactory(IPRegionTable *const a2)
  35779. {
  35780. a2->_vptr_IPRegionTable = (int (**)(...))off_80CA0F0;
  35781. operator delete(a2);
  35782. }
  35783. // 80CA0F0: using guessed type _DWORD (__cdecl *off_80CA0F0[2])(PacketFactory *this);
  35784.  
  35785. //----- (0806D624) --------------------------------------------------------
  35786. void __cdecl Packets::LCRetCreateCodeFactory::~LCRetCreateCodeFactory(_DWORD *a2)
  35787. {
  35788. *a2 = off_80CA0F0;
  35789. }
  35790. // 80CA0F0: using guessed type _DWORD (__cdecl *off_80CA0F0[2])(PacketFactory *this);
  35791.  
  35792. //----- (0806D634) --------------------------------------------------------
  35793. void __cdecl Packets::LCRetCreateCodeFactory::~LCRetCreateCodeFactory(IPRegionTable *const a2)
  35794. {
  35795. a2->_vptr_IPRegionTable = (int (**)(...))off_80CA0F0;
  35796. operator delete(a2);
  35797. }
  35798. // 80CA0F0: using guessed type _DWORD (__cdecl *off_80CA0F0[2])(PacketFactory *this);
  35799.  
  35800. //----- (0806D648) --------------------------------------------------------
  35801. void __cdecl Packets::LCRetLoginCodeFactory::~LCRetLoginCodeFactory(_DWORD *a2)
  35802. {
  35803. *a2 = off_80CA0F0;
  35804. }
  35805. // 80CA0F0: using guessed type _DWORD (__cdecl *off_80CA0F0[2])(PacketFactory *this);
  35806.  
  35807. //----- (0806D658) --------------------------------------------------------
  35808. void __cdecl Packets::LCRetLoginCodeFactory::~LCRetLoginCodeFactory(IPRegionTable *const a2)
  35809. {
  35810. a2->_vptr_IPRegionTable = (int (**)(...))off_80CA0F0;
  35811. operator delete(a2);
  35812. }
  35813. // 80CA0F0: using guessed type _DWORD (__cdecl *off_80CA0F0[2])(PacketFactory *this);
  35814.  
  35815. //----- (0806D66C) --------------------------------------------------------
  35816. void __cdecl Packets::KeyExchangeFactory::~KeyExchangeFactory(_DWORD *a2)
  35817. {
  35818. *a2 = off_80CA0F0;
  35819. }
  35820. // 80CA0F0: using guessed type _DWORD (__cdecl *off_80CA0F0[2])(PacketFactory *this);
  35821.  
  35822. //----- (0806D67C) --------------------------------------------------------
  35823. void __cdecl Packets::KeyExchangeFactory::~KeyExchangeFactory(IPRegionTable *const a2)
  35824. {
  35825. a2->_vptr_IPRegionTable = (int (**)(...))off_80CA0F0;
  35826. operator delete(a2);
  35827. }
  35828. // 80CA0F0: using guessed type _DWORD (__cdecl *off_80CA0F0[2])(PacketFactory *this);
  35829.  
  35830. //----- (0806D690) --------------------------------------------------------
  35831. void __cdecl Packets::SSConnectFactory::~SSConnectFactory(_DWORD *a2)
  35832. {
  35833. *a2 = off_80CA0F0;
  35834. }
  35835. // 80CA0F0: using guessed type _DWORD (__cdecl *off_80CA0F0[2])(PacketFactory *this);
  35836.  
  35837. //----- (0806D6A0) --------------------------------------------------------
  35838. void __cdecl Packets::SSConnectFactory::~SSConnectFactory(IPRegionTable *const a2)
  35839. {
  35840. a2->_vptr_IPRegionTable = (int (**)(...))off_80CA0F0;
  35841. operator delete(a2);
  35842. }
  35843. // 80CA0F0: using guessed type _DWORD (__cdecl *off_80CA0F0[2])(PacketFactory *this);
  35844.  
  35845. //----- (0806D6B4) --------------------------------------------------------
  35846. void __cdecl Packets::SSScenePlayerCountFactory::~SSScenePlayerCountFactory(_DWORD *a2)
  35847. {
  35848. *a2 = off_80CA0F0;
  35849. }
  35850. // 80CA0F0: using guessed type _DWORD (__cdecl *off_80CA0F0[2])(PacketFactory *this);
  35851.  
  35852. //----- (0806D6C4) --------------------------------------------------------
  35853. void __cdecl Packets::SSScenePlayerCountFactory::~SSScenePlayerCountFactory(IPRegionTable *const a2)
  35854. {
  35855. a2->_vptr_IPRegionTable = (int (**)(...))off_80CA0F0;
  35856. operator delete(a2);
  35857. }
  35858. // 80CA0F0: using guessed type _DWORD (__cdecl *off_80CA0F0[2])(PacketFactory *this);
  35859.  
  35860. //----- (0806D6D8) --------------------------------------------------------
  35861. void __cdecl Packets::GWLWGCostLogFactory::~GWLWGCostLogFactory(_DWORD *a2)
  35862. {
  35863. *a2 = off_80CA0F0;
  35864. }
  35865. // 80CA0F0: using guessed type _DWORD (__cdecl *off_80CA0F0[2])(PacketFactory *this);
  35866.  
  35867. //----- (0806D6E8) --------------------------------------------------------
  35868. void __cdecl Packets::GWLWGCostLogFactory::~GWLWGCostLogFactory(IPRegionTable *const a2)
  35869. {
  35870. a2->_vptr_IPRegionTable = (int (**)(...))off_80CA0F0;
  35871. operator delete(a2);
  35872. }
  35873. // 80CA0F0: using guessed type _DWORD (__cdecl *off_80CA0F0[2])(PacketFactory *this);
  35874.  
  35875. //----- (0806D6FC) --------------------------------------------------------
  35876. void __cdecl Packets::LWAskCharLoginFactory::~LWAskCharLoginFactory(_DWORD *a2)
  35877. {
  35878. *a2 = off_80CA0F0;
  35879. }
  35880. // 80CA0F0: using guessed type _DWORD (__cdecl *off_80CA0F0[2])(PacketFactory *this);
  35881.  
  35882. //----- (0806D70C) --------------------------------------------------------
  35883. void __cdecl Packets::LWAskCharLoginFactory::~LWAskCharLoginFactory(IPRegionTable *const a2)
  35884. {
  35885. a2->_vptr_IPRegionTable = (int (**)(...))off_80CA0F0;
  35886. operator delete(a2);
  35887. }
  35888. // 80CA0F0: using guessed type _DWORD (__cdecl *off_80CA0F0[2])(PacketFactory *this);
  35889.  
  35890. //----- (0806D720) --------------------------------------------------------
  35891. void __cdecl Packets::LWRetBillingStartFactory::~LWRetBillingStartFactory(_DWORD *a2)
  35892. {
  35893. *a2 = off_80CA0F0;
  35894. }
  35895. // 80CA0F0: using guessed type _DWORD (__cdecl *off_80CA0F0[2])(PacketFactory *this);
  35896.  
  35897. //----- (0806D730) --------------------------------------------------------
  35898. void __cdecl Packets::LWRetBillingStartFactory::~LWRetBillingStartFactory(IPRegionTable *const a2)
  35899. {
  35900. a2->_vptr_IPRegionTable = (int (**)(...))off_80CA0F0;
  35901. operator delete(a2);
  35902. }
  35903. // 80CA0F0: using guessed type _DWORD (__cdecl *off_80CA0F0[2])(PacketFactory *this);
  35904.  
  35905. //----- (0806D744) --------------------------------------------------------
  35906. void __cdecl Packets::LWRetBillingEndFactory::~LWRetBillingEndFactory(_DWORD *a2)
  35907. {
  35908. *a2 = off_80CA0F0;
  35909. }
  35910. // 80CA0F0: using guessed type _DWORD (__cdecl *off_80CA0F0[2])(PacketFactory *this);
  35911.  
  35912. //----- (0806D754) --------------------------------------------------------
  35913. void __cdecl Packets::LWRetBillingEndFactory::~LWRetBillingEndFactory(IPRegionTable *const a2)
  35914. {
  35915. a2->_vptr_IPRegionTable = (int (**)(...))off_80CA0F0;
  35916. operator delete(a2);
  35917. }
  35918. // 80CA0F0: using guessed type _DWORD (__cdecl *off_80CA0F0[2])(PacketFactory *this);
  35919.  
  35920. //----- (0806D768) --------------------------------------------------------
  35921. void __cdecl Packets::LWRetBillingKeepFactory::~LWRetBillingKeepFactory(_DWORD *a2)
  35922. {
  35923. *a2 = off_80CA0F0;
  35924. }
  35925. // 80CA0F0: using guessed type _DWORD (__cdecl *off_80CA0F0[2])(PacketFactory *this);
  35926.  
  35927. //----- (0806D778) --------------------------------------------------------
  35928. void __cdecl Packets::LWRetBillingKeepFactory::~LWRetBillingKeepFactory(IPRegionTable *const a2)
  35929. {
  35930. a2->_vptr_IPRegionTable = (int (**)(...))off_80CA0F0;
  35931. operator delete(a2);
  35932. }
  35933. // 80CA0F0: using guessed type _DWORD (__cdecl *off_80CA0F0[2])(PacketFactory *this);
  35934.  
  35935. //----- (0806D78C) --------------------------------------------------------
  35936. void __cdecl Packets::LWRetPrizeFactory::~LWRetPrizeFactory(_DWORD *a2)
  35937. {
  35938. *a2 = off_80CA0F0;
  35939. }
  35940. // 80CA0F0: using guessed type _DWORD (__cdecl *off_80CA0F0[2])(PacketFactory *this);
  35941.  
  35942. //----- (0806D79C) --------------------------------------------------------
  35943. void __cdecl Packets::LWRetPrizeFactory::~LWRetPrizeFactory(IPRegionTable *const a2)
  35944. {
  35945. a2->_vptr_IPRegionTable = (int (**)(...))off_80CA0F0;
  35946. operator delete(a2);
  35947. }
  35948. // 80CA0F0: using guessed type _DWORD (__cdecl *off_80CA0F0[2])(PacketFactory *this);
  35949.  
  35950. //----- (0806D7B0) --------------------------------------------------------
  35951. void __cdecl Packets::LWNotifyUserFactory::~LWNotifyUserFactory(_DWORD *a2)
  35952. {
  35953. *a2 = off_80CA0F0;
  35954. }
  35955. // 80CA0F0: using guessed type _DWORD (__cdecl *off_80CA0F0[2])(PacketFactory *this);
  35956.  
  35957. //----- (0806D7C0) --------------------------------------------------------
  35958. void __cdecl Packets::LWNotifyUserFactory::~LWNotifyUserFactory(IPRegionTable *const a2)
  35959. {
  35960. a2->_vptr_IPRegionTable = (int (**)(...))off_80CA0F0;
  35961. operator delete(a2);
  35962. }
  35963. // 80CA0F0: using guessed type _DWORD (__cdecl *off_80CA0F0[2])(PacketFactory *this);
  35964.  
  35965. //----- (0806D7D4) --------------------------------------------------------
  35966. void __cdecl Packets::LWChangeNameFactory::~LWChangeNameFactory(_DWORD *a2)
  35967. {
  35968. *a2 = off_80CA0F0;
  35969. }
  35970. // 80CA0F0: using guessed type _DWORD (__cdecl *off_80CA0F0[2])(PacketFactory *this);
  35971.  
  35972. //----- (0806D7E4) --------------------------------------------------------
  35973. void __cdecl Packets::LWChangeNameFactory::~LWChangeNameFactory(IPRegionTable *const a2)
  35974. {
  35975. a2->_vptr_IPRegionTable = (int (**)(...))off_80CA0F0;
  35976. operator delete(a2);
  35977. }
  35978. // 80CA0F0: using guessed type _DWORD (__cdecl *off_80CA0F0[2])(PacketFactory *this);
  35979.  
  35980. //----- (0806D7F8) --------------------------------------------------------
  35981. void __cdecl Packets::LWOperateAccResultFactory::~LWOperateAccResultFactory(_DWORD *a2)
  35982. {
  35983. *a2 = off_80CA0F0;
  35984. }
  35985. // 80CA0F0: using guessed type _DWORD (__cdecl *off_80CA0F0[2])(PacketFactory *this);
  35986.  
  35987. //----- (0806D808) --------------------------------------------------------
  35988. void __cdecl Packets::LWOperateAccResultFactory::~LWOperateAccResultFactory(IPRegionTable *const a2)
  35989. {
  35990. a2->_vptr_IPRegionTable = (int (**)(...))off_80CA0F0;
  35991. operator delete(a2);
  35992. }
  35993. // 80CA0F0: using guessed type _DWORD (__cdecl *off_80CA0F0[2])(PacketFactory *this);
  35994.  
  35995. //----- (0806D81C) --------------------------------------------------------
  35996. void __cdecl Packets::WLRetCharLoginFactory::~WLRetCharLoginFactory(_DWORD *a2)
  35997. {
  35998. *a2 = off_80CA0F0;
  35999. }
  36000. // 80CA0F0: using guessed type _DWORD (__cdecl *off_80CA0F0[2])(PacketFactory *this);
  36001.  
  36002. //----- (0806D82C) --------------------------------------------------------
  36003. void __cdecl Packets::WLRetCharLoginFactory::~WLRetCharLoginFactory(IPRegionTable *const a2)
  36004. {
  36005. a2->_vptr_IPRegionTable = (int (**)(...))off_80CA0F0;
  36006. operator delete(a2);
  36007. }
  36008. // 80CA0F0: using guessed type _DWORD (__cdecl *off_80CA0F0[2])(PacketFactory *this);
  36009.  
  36010. //----- (0806D840) --------------------------------------------------------
  36011. void __cdecl Packets::WLBillingStartFactory::~WLBillingStartFactory(_DWORD *a2)
  36012. {
  36013. *a2 = off_80CA0F0;
  36014. }
  36015. // 80CA0F0: using guessed type _DWORD (__cdecl *off_80CA0F0[2])(PacketFactory *this);
  36016.  
  36017. //----- (0806D850) --------------------------------------------------------
  36018. void __cdecl Packets::WLBillingStartFactory::~WLBillingStartFactory(IPRegionTable *const a2)
  36019. {
  36020. a2->_vptr_IPRegionTable = (int (**)(...))off_80CA0F0;
  36021. operator delete(a2);
  36022. }
  36023. // 80CA0F0: using guessed type _DWORD (__cdecl *off_80CA0F0[2])(PacketFactory *this);
  36024.  
  36025. //----- (0806D864) --------------------------------------------------------
  36026. void __cdecl Packets::WLBillingEndFactory::~WLBillingEndFactory(_DWORD *a2)
  36027. {
  36028. *a2 = off_80CA0F0;
  36029. }
  36030. // 80CA0F0: using guessed type _DWORD (__cdecl *off_80CA0F0[2])(PacketFactory *this);
  36031.  
  36032. //----- (0806D874) --------------------------------------------------------
  36033. void __cdecl Packets::WLBillingEndFactory::~WLBillingEndFactory(IPRegionTable *const a2)
  36034. {
  36035. a2->_vptr_IPRegionTable = (int (**)(...))off_80CA0F0;
  36036. operator delete(a2);
  36037. }
  36038. // 80CA0F0: using guessed type _DWORD (__cdecl *off_80CA0F0[2])(PacketFactory *this);
  36039.  
  36040. //----- (0806D888) --------------------------------------------------------
  36041. void __cdecl Packets::WLBillingKeepFactory::~WLBillingKeepFactory(_DWORD *a2)
  36042. {
  36043. *a2 = off_80CA0F0;
  36044. }
  36045. // 80CA0F0: using guessed type _DWORD (__cdecl *off_80CA0F0[2])(PacketFactory *this);
  36046.  
  36047. //----- (0806D898) --------------------------------------------------------
  36048. void __cdecl Packets::WLBillingKeepFactory::~WLBillingKeepFactory(IPRegionTable *const a2)
  36049. {
  36050. a2->_vptr_IPRegionTable = (int (**)(...))off_80CA0F0;
  36051. operator delete(a2);
  36052. }
  36053. // 80CA0F0: using guessed type _DWORD (__cdecl *off_80CA0F0[2])(PacketFactory *this);
  36054.  
  36055. //----- (0806D8AC) --------------------------------------------------------
  36056. void __cdecl Packets::WLBillingKickFactory::~WLBillingKickFactory(_DWORD *a2)
  36057. {
  36058. *a2 = off_80CA0F0;
  36059. }
  36060. // 80CA0F0: using guessed type _DWORD (__cdecl *off_80CA0F0[2])(PacketFactory *this);
  36061.  
  36062. //----- (0806D8BC) --------------------------------------------------------
  36063. void __cdecl Packets::WLBillingKickFactory::~WLBillingKickFactory(IPRegionTable *const a2)
  36064. {
  36065. a2->_vptr_IPRegionTable = (int (**)(...))off_80CA0F0;
  36066. operator delete(a2);
  36067. }
  36068. // 80CA0F0: using guessed type _DWORD (__cdecl *off_80CA0F0[2])(PacketFactory *this);
  36069.  
  36070. //----- (0806D8D0) --------------------------------------------------------
  36071. void __cdecl Packets::WLAskPrizeFactory::~WLAskPrizeFactory(_DWORD *a2)
  36072. {
  36073. *a2 = off_80CA0F0;
  36074. }
  36075. // 80CA0F0: using guessed type _DWORD (__cdecl *off_80CA0F0[2])(PacketFactory *this);
  36076.  
  36077. //----- (0806D8E0) --------------------------------------------------------
  36078. void __cdecl Packets::WLAskPrizeFactory::~WLAskPrizeFactory(IPRegionTable *const a2)
  36079. {
  36080. a2->_vptr_IPRegionTable = (int (**)(...))off_80CA0F0;
  36081. operator delete(a2);
  36082. }
  36083. // 80CA0F0: using guessed type _DWORD (__cdecl *off_80CA0F0[2])(PacketFactory *this);
  36084.  
  36085. //----- (0806D8F4) --------------------------------------------------------
  36086. void __cdecl Packets::WLNotifyUserFactory::~WLNotifyUserFactory(_DWORD *a2)
  36087. {
  36088. *a2 = off_80CA0F0;
  36089. }
  36090. // 80CA0F0: using guessed type _DWORD (__cdecl *off_80CA0F0[2])(PacketFactory *this);
  36091.  
  36092. //----- (0806D904) --------------------------------------------------------
  36093. void __cdecl Packets::WLNotifyUserFactory::~WLNotifyUserFactory(IPRegionTable *const a2)
  36094. {
  36095. a2->_vptr_IPRegionTable = (int (**)(...))off_80CA0F0;
  36096. operator delete(a2);
  36097. }
  36098. // 80CA0F0: using guessed type _DWORD (__cdecl *off_80CA0F0[2])(PacketFactory *this);
  36099.  
  36100. //----- (0806D918) --------------------------------------------------------
  36101. void __cdecl Packets::WLChangeNameFactory::~WLChangeNameFactory(_DWORD *a2)
  36102. {
  36103. *a2 = off_80CA0F0;
  36104. }
  36105. // 80CA0F0: using guessed type _DWORD (__cdecl *off_80CA0F0[2])(PacketFactory *this);
  36106.  
  36107. //----- (0806D928) --------------------------------------------------------
  36108. void __cdecl Packets::WLChangeNameFactory::~WLChangeNameFactory(IPRegionTable *const a2)
  36109. {
  36110. a2->_vptr_IPRegionTable = (int (**)(...))off_80CA0F0;
  36111. operator delete(a2);
  36112. }
  36113. // 80CA0F0: using guessed type _DWORD (__cdecl *off_80CA0F0[2])(PacketFactory *this);
  36114.  
  36115. //----- (0806D93C) --------------------------------------------------------
  36116. void __cdecl Packets::WLOperateAccFactory::~WLOperateAccFactory(_DWORD *a2)
  36117. {
  36118. *a2 = off_80CA0F0;
  36119. }
  36120. // 80CA0F0: using guessed type _DWORD (__cdecl *off_80CA0F0[2])(PacketFactory *this);
  36121.  
  36122. //----- (0806D94C) --------------------------------------------------------
  36123. void __cdecl Packets::WLOperateAccFactory::~WLOperateAccFactory(IPRegionTable *const a2)
  36124. {
  36125. a2->_vptr_IPRegionTable = (int (**)(...))off_80CA0F0;
  36126. operator delete(a2);
  36127. }
  36128. // 80CA0F0: using guessed type _DWORD (__cdecl *off_80CA0F0[2])(PacketFactory *this);
  36129.  
  36130. //----- (0806D960) --------------------------------------------------------
  36131. void __cdecl Packets::LBAskAuthFactory::~LBAskAuthFactory(_DWORD *a2)
  36132. {
  36133. *a2 = off_80CA0F0;
  36134. }
  36135. // 80CA0F0: using guessed type _DWORD (__cdecl *off_80CA0F0[2])(PacketFactory *this);
  36136.  
  36137. //----- (0806D970) --------------------------------------------------------
  36138. void __cdecl Packets::LBAskAuthFactory::~LBAskAuthFactory(IPRegionTable *const a2)
  36139. {
  36140. a2->_vptr_IPRegionTable = (int (**)(...))off_80CA0F0;
  36141. operator delete(a2);
  36142. }
  36143. // 80CA0F0: using guessed type _DWORD (__cdecl *off_80CA0F0[2])(PacketFactory *this);
  36144.  
  36145. //----- (0806D984) --------------------------------------------------------
  36146. void __cdecl Packets::LBAskRegAuthFactory::~LBAskRegAuthFactory(_DWORD *a2)
  36147. {
  36148. *a2 = off_80CA0F0;
  36149. }
  36150. // 80CA0F0: using guessed type _DWORD (__cdecl *off_80CA0F0[2])(PacketFactory *this);
  36151.  
  36152. //----- (0806D994) --------------------------------------------------------
  36153. void __cdecl Packets::LBAskRegAuthFactory::~LBAskRegAuthFactory(IPRegionTable *const a2)
  36154. {
  36155. a2->_vptr_IPRegionTable = (int (**)(...))off_80CA0F0;
  36156. operator delete(a2);
  36157. }
  36158. // 80CA0F0: using guessed type _DWORD (__cdecl *off_80CA0F0[2])(PacketFactory *this);
  36159.  
  36160. //----- (0806D9A8) --------------------------------------------------------
  36161. void __cdecl Packets::LBAskRegLicenseFactory::~LBAskRegLicenseFactory(_DWORD *a2)
  36162. {
  36163. *a2 = off_80CA0F0;
  36164. }
  36165. // 80CA0F0: using guessed type _DWORD (__cdecl *off_80CA0F0[2])(PacketFactory *this);
  36166.  
  36167. //----- (0806D9B8) --------------------------------------------------------
  36168. void __cdecl Packets::LBAskRegLicenseFactory::~LBAskRegLicenseFactory(IPRegionTable *const a2)
  36169. {
  36170. a2->_vptr_IPRegionTable = (int (**)(...))off_80CA0F0;
  36171. operator delete(a2);
  36172. }
  36173. // 80CA0F0: using guessed type _DWORD (__cdecl *off_80CA0F0[2])(PacketFactory *this);
  36174.  
  36175. //----- (0806D9CC) --------------------------------------------------------
  36176. void __cdecl Packets::BLRetAuthFactory::~BLRetAuthFactory(_DWORD *a2)
  36177. {
  36178. *a2 = off_80CA0F0;
  36179. }
  36180. // 80CA0F0: using guessed type _DWORD (__cdecl *off_80CA0F0[2])(PacketFactory *this);
  36181.  
  36182. //----- (0806D9DC) --------------------------------------------------------
  36183. void __cdecl Packets::BLRetAuthFactory::~BLRetAuthFactory(IPRegionTable *const a2)
  36184. {
  36185. a2->_vptr_IPRegionTable = (int (**)(...))off_80CA0F0;
  36186. operator delete(a2);
  36187. }
  36188. // 80CA0F0: using guessed type _DWORD (__cdecl *off_80CA0F0[2])(PacketFactory *this);
  36189.  
  36190. //----- (0806D9F0) --------------------------------------------------------
  36191. void __cdecl Packets::BLRetConnectFactory::~BLRetConnectFactory(_DWORD *a2)
  36192. {
  36193. *a2 = off_80C9A48;
  36194. }
  36195. // 80C9A48: using guessed type _DWORD (__cdecl *off_80C9A48[2])(BillPacketFactory *this);
  36196.  
  36197. //----- (0806DA00) --------------------------------------------------------
  36198. void __cdecl Packets::BLRetConnectFactory::~BLRetConnectFactory(IPRegionTable *const a2)
  36199. {
  36200. a2->_vptr_IPRegionTable = (int (**)(...))off_80C9A48;
  36201. operator delete(a2);
  36202. }
  36203. // 80C9A48: using guessed type _DWORD (__cdecl *off_80C9A48[2])(BillPacketFactory *this);
  36204.  
  36205. //----- (0806DA14) --------------------------------------------------------
  36206. void __cdecl Packets::BLRetKeepLiveFactory::~BLRetKeepLiveFactory(_DWORD *a2)
  36207. {
  36208. *a2 = off_80C9A48;
  36209. }
  36210. // 80C9A48: using guessed type _DWORD (__cdecl *off_80C9A48[2])(BillPacketFactory *this);
  36211.  
  36212. //----- (0806DA24) --------------------------------------------------------
  36213. void __cdecl Packets::BLRetKeepLiveFactory::~BLRetKeepLiveFactory(IPRegionTable *const a2)
  36214. {
  36215. a2->_vptr_IPRegionTable = (int (**)(...))off_80C9A48;
  36216. operator delete(a2);
  36217. }
  36218. // 80C9A48: using guessed type _DWORD (__cdecl *off_80C9A48[2])(BillPacketFactory *this);
  36219.  
  36220. //----- (0806DA38) --------------------------------------------------------
  36221. void __cdecl Packets::BLRetAccCheckFactory::~BLRetAccCheckFactory(_DWORD *a2)
  36222. {
  36223. *a2 = off_80C9A48;
  36224. }
  36225. // 80C9A48: using guessed type _DWORD (__cdecl *off_80C9A48[2])(BillPacketFactory *this);
  36226.  
  36227. //----- (0806DA48) --------------------------------------------------------
  36228. void __cdecl Packets::BLRetAccCheckFactory::~BLRetAccCheckFactory(IPRegionTable *const a2)
  36229. {
  36230. a2->_vptr_IPRegionTable = (int (**)(...))off_80C9A48;
  36231. operator delete(a2);
  36232. }
  36233. // 80C9A48: using guessed type _DWORD (__cdecl *off_80C9A48[2])(BillPacketFactory *this);
  36234.  
  36235. //----- (0806DA5C) --------------------------------------------------------
  36236. void __cdecl Packets::BLRetBillingStartFactory::~BLRetBillingStartFactory(_DWORD *a2)
  36237. {
  36238. *a2 = off_80C9A48;
  36239. }
  36240. // 80C9A48: using guessed type _DWORD (__cdecl *off_80C9A48[2])(BillPacketFactory *this);
  36241.  
  36242. //----- (0806DA6C) --------------------------------------------------------
  36243. void __cdecl Packets::BLRetBillingStartFactory::~BLRetBillingStartFactory(IPRegionTable *const a2)
  36244. {
  36245. a2->_vptr_IPRegionTable = (int (**)(...))off_80C9A48;
  36246. operator delete(a2);
  36247. }
  36248. // 80C9A48: using guessed type _DWORD (__cdecl *off_80C9A48[2])(BillPacketFactory *this);
  36249.  
  36250. //----- (0806DA80) --------------------------------------------------------
  36251. void __cdecl Packets::BLRetBillingEndFactory::~BLRetBillingEndFactory(_DWORD *a2)
  36252. {
  36253. *a2 = off_80C9A48;
  36254. }
  36255. // 80C9A48: using guessed type _DWORD (__cdecl *off_80C9A48[2])(BillPacketFactory *this);
  36256.  
  36257. //----- (0806DA90) --------------------------------------------------------
  36258. void __cdecl Packets::BLRetBillingEndFactory::~BLRetBillingEndFactory(IPRegionTable *const a2)
  36259. {
  36260. a2->_vptr_IPRegionTable = (int (**)(...))off_80C9A48;
  36261. operator delete(a2);
  36262. }
  36263. // 80C9A48: using guessed type _DWORD (__cdecl *off_80C9A48[2])(BillPacketFactory *this);
  36264.  
  36265. //----- (0806DAA4) --------------------------------------------------------
  36266. void __cdecl Packets::BLRetBillingKeepFactory::~BLRetBillingKeepFactory(_DWORD *a2)
  36267. {
  36268. *a2 = off_80C9A48;
  36269. }
  36270. // 80C9A48: using guessed type _DWORD (__cdecl *off_80C9A48[2])(BillPacketFactory *this);
  36271.  
  36272. //----- (0806DAB4) --------------------------------------------------------
  36273. void __cdecl Packets::BLRetBillingKeepFactory::~BLRetBillingKeepFactory(IPRegionTable *const a2)
  36274. {
  36275. a2->_vptr_IPRegionTable = (int (**)(...))off_80C9A48;
  36276. operator delete(a2);
  36277. }
  36278. // 80C9A48: using guessed type _DWORD (__cdecl *off_80C9A48[2])(BillPacketFactory *this);
  36279.  
  36280. //----- (0806DAC8) --------------------------------------------------------
  36281. void __cdecl Packets::BLRetKickALLFactory::~BLRetKickALLFactory(_DWORD *a2)
  36282. {
  36283. *a2 = off_80C9A48;
  36284. }
  36285. // 80C9A48: using guessed type _DWORD (__cdecl *off_80C9A48[2])(BillPacketFactory *this);
  36286.  
  36287. //----- (0806DAD8) --------------------------------------------------------
  36288. void __cdecl Packets::BLRetKickALLFactory::~BLRetKickALLFactory(IPRegionTable *const a2)
  36289. {
  36290. a2->_vptr_IPRegionTable = (int (**)(...))off_80C9A48;
  36291. operator delete(a2);
  36292. }
  36293. // 80C9A48: using guessed type _DWORD (__cdecl *off_80C9A48[2])(BillPacketFactory *this);
  36294.  
  36295. //----- (0806DAEC) --------------------------------------------------------
  36296. void __cdecl Packets::BLRetRegPassPortFactory::~BLRetRegPassPortFactory(_DWORD *a2)
  36297. {
  36298. *a2 = off_80C9A48;
  36299. }
  36300. // 80C9A48: using guessed type _DWORD (__cdecl *off_80C9A48[2])(BillPacketFactory *this);
  36301.  
  36302. //----- (0806DAFC) --------------------------------------------------------
  36303. void __cdecl Packets::BLRetRegPassPortFactory::~BLRetRegPassPortFactory(IPRegionTable *const a2)
  36304. {
  36305. a2->_vptr_IPRegionTable = (int (**)(...))off_80C9A48;
  36306. operator delete(a2);
  36307. }
  36308. // 80C9A48: using guessed type _DWORD (__cdecl *off_80C9A48[2])(BillPacketFactory *this);
  36309.  
  36310. //----- (0806DB10) --------------------------------------------------------
  36311. void __cdecl Packets::BLRetPrizeFactory::~BLRetPrizeFactory(_DWORD *a2)
  36312. {
  36313. *a2 = off_80C9A48;
  36314. }
  36315. // 80C9A48: using guessed type _DWORD (__cdecl *off_80C9A48[2])(BillPacketFactory *this);
  36316.  
  36317. //----- (0806DB20) --------------------------------------------------------
  36318. void __cdecl Packets::BLRetPrizeFactory::~BLRetPrizeFactory(IPRegionTable *const a2)
  36319. {
  36320. a2->_vptr_IPRegionTable = (int (**)(...))off_80C9A48;
  36321. operator delete(a2);
  36322. }
  36323. // 80C9A48: using guessed type _DWORD (__cdecl *off_80C9A48[2])(BillPacketFactory *this);
  36324.  
  36325. //----- (0806DB34) --------------------------------------------------------
  36326. void __cdecl Packets::BLRetAskPointFactory::~BLRetAskPointFactory(_DWORD *a2)
  36327. {
  36328. *a2 = off_80C9A48;
  36329. }
  36330. // 80C9A48: using guessed type _DWORD (__cdecl *off_80C9A48[2])(BillPacketFactory *this);
  36331.  
  36332. //----- (0806DB44) --------------------------------------------------------
  36333. void __cdecl Packets::BLRetAskPointFactory::~BLRetAskPointFactory(IPRegionTable *const a2)
  36334. {
  36335. a2->_vptr_IPRegionTable = (int (**)(...))off_80C9A48;
  36336. operator delete(a2);
  36337. }
  36338. // 80C9A48: using guessed type _DWORD (__cdecl *off_80C9A48[2])(BillPacketFactory *this);
  36339.  
  36340. //----- (0806DB58) --------------------------------------------------------
  36341. void __cdecl Packets::BLRetAskBuyFactory::~BLRetAskBuyFactory(_DWORD *a2)
  36342. {
  36343. *a2 = off_80C9A48;
  36344. }
  36345. // 80C9A48: using guessed type _DWORD (__cdecl *off_80C9A48[2])(BillPacketFactory *this);
  36346.  
  36347. //----- (0806DB68) --------------------------------------------------------
  36348. void __cdecl Packets::BLRetAskBuyFactory::~BLRetAskBuyFactory(IPRegionTable *const a2)
  36349. {
  36350. a2->_vptr_IPRegionTable = (int (**)(...))off_80C9A48;
  36351. operator delete(a2);
  36352. }
  36353. // 80C9A48: using guessed type _DWORD (__cdecl *off_80C9A48[2])(BillPacketFactory *this);
  36354.  
  36355. //----- (0806DB7C) --------------------------------------------------------
  36356. void __cdecl Packets::LBLCostLogFactory::~LBLCostLogFactory(_DWORD *a2)
  36357. {
  36358. *a2 = off_80C9A48;
  36359. }
  36360. // 80C9A48: using guessed type _DWORD (__cdecl *off_80C9A48[2])(BillPacketFactory *this);
  36361.  
  36362. //----- (0806DB8C) --------------------------------------------------------
  36363. void __cdecl Packets::LBLCostLogFactory::~LBLCostLogFactory(IPRegionTable *const a2)
  36364. {
  36365. a2->_vptr_IPRegionTable = (int (**)(...))off_80C9A48;
  36366. operator delete(a2);
  36367. }
  36368. // 80C9A48: using guessed type _DWORD (__cdecl *off_80C9A48[2])(BillPacketFactory *this);
  36369.  
  36370. //----- (0806DBA0) --------------------------------------------------------
  36371. void __cdecl Packets::LBLAskNewUserCardFactory::~LBLAskNewUserCardFactory(_DWORD *a2)
  36372. {
  36373. *a2 = off_80C9A48;
  36374. }
  36375. // 80C9A48: using guessed type _DWORD (__cdecl *off_80C9A48[2])(BillPacketFactory *this);
  36376.  
  36377. //----- (0806DBB0) --------------------------------------------------------
  36378. void __cdecl Packets::LBLAskNewUserCardFactory::~LBLAskNewUserCardFactory(IPRegionTable *const a2)
  36379. {
  36380. a2->_vptr_IPRegionTable = (int (**)(...))off_80C9A48;
  36381. operator delete(a2);
  36382. }
  36383. // 80C9A48: using guessed type _DWORD (__cdecl *off_80C9A48[2])(BillPacketFactory *this);
  36384.  
  36385. //----- (0806DBC4) --------------------------------------------------------
  36386. void __cdecl Packets::LBLNewPrizeFactory::~LBLNewPrizeFactory(_DWORD *a2)
  36387. {
  36388. *a2 = off_80C9A48;
  36389. }
  36390. // 80C9A48: using guessed type _DWORD (__cdecl *off_80C9A48[2])(BillPacketFactory *this);
  36391.  
  36392. //----- (0806DBD4) --------------------------------------------------------
  36393. void __cdecl Packets::LBLNewPrizeFactory::~LBLNewPrizeFactory(IPRegionTable *const a2)
  36394. {
  36395. a2->_vptr_IPRegionTable = (int (**)(...))off_80C9A48;
  36396. operator delete(a2);
  36397. }
  36398. // 80C9A48: using guessed type _DWORD (__cdecl *off_80C9A48[2])(BillPacketFactory *this);
  36399.  
  36400. //----- (0806DBE8) --------------------------------------------------------
  36401. void __cdecl Packets::LBLNewCheckPrizeFactory::~LBLNewCheckPrizeFactory(_DWORD *a2)
  36402. {
  36403. *a2 = off_80C9A48;
  36404. }
  36405. // 80C9A48: using guessed type _DWORD (__cdecl *off_80C9A48[2])(BillPacketFactory *this);
  36406.  
  36407. //----- (0806DBF8) --------------------------------------------------------
  36408. void __cdecl Packets::LBLNewCheckPrizeFactory::~LBLNewCheckPrizeFactory(IPRegionTable *const a2)
  36409. {
  36410. a2->_vptr_IPRegionTable = (int (**)(...))off_80C9A48;
  36411. operator delete(a2);
  36412. }
  36413. // 80C9A48: using guessed type _DWORD (__cdecl *off_80C9A48[2])(BillPacketFactory *this);
  36414.  
  36415. //----- (0806DC0C) --------------------------------------------------------
  36416. void __cdecl Packets::LBLAskMigFactory::~LBLAskMigFactory(_DWORD *a2)
  36417. {
  36418. *a2 = off_80C9A48;
  36419. }
  36420. // 80C9A48: using guessed type _DWORD (__cdecl *off_80C9A48[2])(BillPacketFactory *this);
  36421.  
  36422. //----- (0806DC1C) --------------------------------------------------------
  36423. void __cdecl Packets::LBLAskMigFactory::~LBLAskMigFactory(IPRegionTable *const a2)
  36424. {
  36425. a2->_vptr_IPRegionTable = (int (**)(...))off_80C9A48;
  36426. operator delete(a2);
  36427. }
  36428. // 80C9A48: using guessed type _DWORD (__cdecl *off_80C9A48[2])(BillPacketFactory *this);
  36429.  
  36430. //----- (0806DC30) --------------------------------------------------------
  36431. void __cdecl Packets::LBLRegNewLicenseFactory::~LBLRegNewLicenseFactory(_DWORD *a2)
  36432. {
  36433. *a2 = off_80C9A48;
  36434. }
  36435. // 80C9A48: using guessed type _DWORD (__cdecl *off_80C9A48[2])(BillPacketFactory *this);
  36436.  
  36437. //----- (0806DC40) --------------------------------------------------------
  36438. void __cdecl Packets::LBLRegNewLicenseFactory::~LBLRegNewLicenseFactory(IPRegionTable *const a2)
  36439. {
  36440. a2->_vptr_IPRegionTable = (int (**)(...))off_80C9A48;
  36441. operator delete(a2);
  36442. }
  36443. // 80C9A48: using guessed type _DWORD (__cdecl *off_80C9A48[2])(BillPacketFactory *this);
  36444.  
  36445. //----- (0806DC54) --------------------------------------------------------
  36446. void __cdecl Packets::LBLCardCheckPrizeFactory::~LBLCardCheckPrizeFactory(_DWORD *a2)
  36447. {
  36448. *a2 = off_80C9A48;
  36449. }
  36450. // 80C9A48: using guessed type _DWORD (__cdecl *off_80C9A48[2])(BillPacketFactory *this);
  36451.  
  36452. //----- (0806DC64) --------------------------------------------------------
  36453. void __cdecl Packets::LBLCardCheckPrizeFactory::~LBLCardCheckPrizeFactory(IPRegionTable *const a2)
  36454. {
  36455. a2->_vptr_IPRegionTable = (int (**)(...))off_80C9A48;
  36456. operator delete(a2);
  36457. }
  36458. // 80C9A48: using guessed type _DWORD (__cdecl *off_80C9A48[2])(BillPacketFactory *this);
  36459.  
  36460. //----- (0806DC78) --------------------------------------------------------
  36461. void __cdecl Packets::LBLOperateAccFactory::~LBLOperateAccFactory(_DWORD *a2)
  36462. {
  36463. *a2 = off_80C9A48;
  36464. }
  36465. // 80C9A48: using guessed type _DWORD (__cdecl *off_80C9A48[2])(BillPacketFactory *this);
  36466.  
  36467. //----- (0806DC88) --------------------------------------------------------
  36468. void __cdecl Packets::LBLOperateAccFactory::~LBLOperateAccFactory(IPRegionTable *const a2)
  36469. {
  36470. a2->_vptr_IPRegionTable = (int (**)(...))off_80C9A48;
  36471. operator delete(a2);
  36472. }
  36473. // 80C9A48: using guessed type _DWORD (__cdecl *off_80C9A48[2])(BillPacketFactory *this);
  36474.  
  36475. //----- (0806DC9C) --------------------------------------------------------
  36476. void __cdecl Packets::SChgNamePacketUnit::SChgNamePacketUnit(_DWORD *a2)
  36477. {
  36478. *a2 = -1;
  36479. a2[1] = -1;
  36480. memset(a2 + 2, 0, 0x20u);
  36481. memset(a2 + 10, 0, 0x20u);
  36482. a2[18] = 0;
  36483. }
  36484.  
  36485. //----- (0806DCD4) --------------------------------------------------------
  36486. void __cdecl Packets::SChgNamePacketUnit::SChgNamePacketUnit(_DWORD *a2)
  36487. {
  36488. *a2 = -1;
  36489. a2[1] = -1;
  36490. memset(a2 + 2, 0, 0x20u);
  36491. memset(a2 + 10, 0, 0x20u);
  36492. a2[18] = 0;
  36493. }
  36494.  
  36495. //----- (0806DD0C) --------------------------------------------------------
  36496. void __cdecl Packets::SChgNamePacketUnit::SetUserNewName(Packets::SChgNamePacketUnit *const this, INT OpType, const CHAR *pName)
  36497. {
  36498. char *v3; // ebx
  36499.  
  36500. if ( pName )
  36501. {
  36502. v3 = this->m_UserNewName;
  36503. this->m_opType = OpType;
  36504. memset(this->m_UserNewName, 0, sizeof(this->m_UserNewName));
  36505. if ( OpType )
  36506. {
  36507. if ( OpType == 1 )
  36508. strncpy(v3, pName, 0x17u);
  36509. else
  36510. strncpy(v3, pName, 0x1Fu);
  36511. }
  36512. else
  36513. {
  36514. strncpy(v3, pName, 0x1Du);
  36515. }
  36516. }
  36517. }
  36518.  
  36519. //----- (0806DD88) --------------------------------------------------------
  36520. void __cdecl Packets::SChgNamePacketUnit::SetUserOldName(Packets::SChgNamePacketUnit *const this, INT OpType, const CHAR *pName)
  36521. {
  36522. char *v3; // ebx
  36523.  
  36524. if ( pName )
  36525. {
  36526. v3 = this->m_UserOldName;
  36527. this->m_opType = OpType;
  36528. memset(this->m_UserOldName, 0, sizeof(this->m_UserOldName));
  36529. if ( OpType )
  36530. {
  36531. if ( OpType == 1 )
  36532. strncpy(v3, pName, 0x17u);
  36533. else
  36534. strncpy(v3, pName, 0x1Fu);
  36535. }
  36536. else
  36537. {
  36538. strncpy(v3, pName, 0x1Du);
  36539. }
  36540. }
  36541. }
  36542.  
  36543. //----- (0806DE04) --------------------------------------------------------
  36544. UINT __cdecl Packets::SChgNamePacketUnit::GetPacketSize()
  36545. {
  36546. return 74;
  36547. }
  36548.  
  36549. //----- (0806DE10) --------------------------------------------------------
  36550. BOOL __cdecl Packets::SChgNamePacketUnit::ReadStream(Packets::SChgNamePacketUnit *const this, SocketInputStream *const iStream)
  36551. {
  36552. SocketInputStream::Read(iStream, (CHAR *)this, 4u);
  36553. SocketInputStream::Read(iStream, (CHAR *)&this->m_UserGuid, 4u);
  36554. memset(this->m_UserOldName, 0, sizeof(this->m_UserOldName));
  36555. SocketInputStream::Read(iStream, this->m_UserOldName, 0x1Fu);
  36556. memset(this->m_UserNewName, 0, sizeof(this->m_UserNewName));
  36557. SocketInputStream::Read(iStream, this->m_UserNewName, 0x1Fu);
  36558. SocketInputStream::Read(iStream, (CHAR *)&this->m_reType, 4u);
  36559. return 1;
  36560. }
  36561.  
  36562. //----- (0806DED8) --------------------------------------------------------
  36563. BOOL __cdecl Packets::SChgNamePacketUnit::WriteStream(const Packets::SChgNamePacketUnit *const this, SocketOutputStream *const oStream)
  36564. {
  36565. SocketOutputStream::Write(oStream, (const CHAR *)this, 4u);
  36566. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_UserGuid, 4u);
  36567. SocketOutputStream::Write(oStream, this->m_UserOldName, 0x1Fu);
  36568. SocketOutputStream::Write(oStream, this->m_UserNewName, 0x1Fu);
  36569. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_reType, 4u);
  36570. return 1;
  36571. }
  36572.  
  36573. //----- (0806DF78) --------------------------------------------------------
  36574. void __cdecl _tcf_0_16(void *a1)
  36575. {
  36576. std::ios_base::Init::~Init(&std::__ioinit);
  36577. }
  36578.  
  36579. //----- (0806DF88) --------------------------------------------------------
  36580. void `global constructor keyed to'Packets::SChgNamePacketUnit::SChgNamePacketUnit()
  36581. {
  36582. std::ios_base::Init::Init(&std::__ioinit);
  36583. __cxa_atexit(_tcf_0_16, 0, &_dso_handle);
  36584. }
  36585. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  36586.  
  36587. //----- (0806DFB4) --------------------------------------------------------
  36588. BOOL __cdecl RangeCheckForIndex_Assert(INT nIndex, INT nFrom, INT nTo, const CHAR *szCodeLocation)
  36589. {
  36590. INT v4; // esi
  36591. INT v5; // ebx
  36592. BOOL result; // eax
  36593. CHAR szBuff[1024]; // [esp+0h] [ebp-418h]
  36594.  
  36595. if ( nFrom > nTo )
  36596. {
  36597. v4 = nFrom;
  36598. v5 = nTo;
  36599. if ( nFrom >= 0 )
  36600. goto LABEL_3;
  36601. LABEL_11:
  36602. __assert__(
  36603. "../../Common/Combat/TemplateManager.cpp",
  36604. 0x25u,
  36605. "BOOL RangeCheckForIndex_Assert(INT, INT, INT, const CHAR*)",
  36606. "0<=nUpBorder");
  36607. }
  36608. v4 = nTo;
  36609. v5 = nFrom;
  36610. if ( nTo < 0 )
  36611. goto LABEL_11;
  36612. LABEL_3:
  36613. if ( v5 < 0 )
  36614. __assert__(
  36615. "../../Common/Combat/TemplateManager.cpp",
  36616. 0x26u,
  36617. "BOOL RangeCheckForIndex_Assert(INT, INT, INT, const CHAR*)",
  36618. "0<=nLowBorder");
  36619. if ( nIndex < 0 )
  36620. __assert__(
  36621. "../../Common/Combat/TemplateManager.cpp",
  36622. 0x27u,
  36623. "BOOL RangeCheckForIndex_Assert(INT, INT, INT, const CHAR*)",
  36624. "0<=nIndex");
  36625. if ( nIndex < v5 || (result = 1, nIndex > v4) )
  36626. {
  36627. snprintf(
  36628. szBuff,
  36629. 0x400u,
  36630. "[%s] Index out of range!! nIndex=%d, but legal range is [%d, %d]. check it now, please!!",
  36631. szCodeLocation,
  36632. nIndex);
  36633. szBuff[1023] = 0;
  36634. __assertex__(
  36635. "../../Common/Combat/TemplateManager.cpp",
  36636. 0x35u,
  36637. "BOOL RangeCheckForIndex_Assert(INT, INT, INT, const CHAR*)",
  36638. "FALSE",
  36639. szBuff);
  36640. }
  36641. return result;
  36642. }
  36643.  
  36644. //----- (0806E0AC) --------------------------------------------------------
  36645. void __cdecl _tcf_0_17(void *a1)
  36646. {
  36647. std::ios_base::Init::~Init(&std::__ioinit);
  36648. }
  36649.  
  36650. //----- (0806E0BC) --------------------------------------------------------
  36651. void `global constructor keyed to'RangeCheckForIndex_Assert()
  36652. {
  36653. std::ios_base::Init::Init(&std::__ioinit);
  36654. __cxa_atexit(_tcf_0_17, 0, &_dso_handle);
  36655. }
  36656. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  36657.  
  36658. //----- (0806E0E8) --------------------------------------------------------
  36659. BOOL __cdecl Packets::BLRetAccCheck::Read(Packets::BLRetAccCheck *const this, SocketBillingInputStream *const iStream)
  36660. {
  36661. BYTE v2; // al
  36662. BYTE v3; // al
  36663. BOOL result; // eax
  36664. BYTE v5; // al
  36665. BYTE v6; // al
  36666. UINT v7; // eax
  36667. UINT v8; // eax
  36668.  
  36669. SocketInputStream::Read(&iStream->0, (CHAR *)&this->mAccLength, 1u);
  36670. v2 = this->mAccLength;
  36671. if ( v2 > 0x32u )
  36672. {
  36673. v2 = 50;
  36674. this->mAccLength = 50;
  36675. }
  36676. SocketInputStream::Read(&iStream->0, this->mAccount, v2);
  36677. SocketInputStream::Read(&iStream->0, (CHAR *)&this->mAccResult, 1u);
  36678. v3 = this->mAccResult;
  36679. if ( v3 == 1 || v3 == -15 )
  36680. {
  36681. SocketInputStream::Read(&iStream->0, (CHAR *)&this->mCardPoint, 4u);
  36682. v7 = this->mCardPoint;
  36683. LOWORD(v7) = __ROR2__(v7, 8);
  36684. v7 = __ROR4__(v7, 16);
  36685. LOWORD(v7) = __ROR2__(v7, 8);
  36686. this->mCardPoint = v7;
  36687. SocketInputStream::Read(&iStream->0, (CHAR *)&this->mCardDay, 2u);
  36688. this->mCardDay = __ROR2__(this->mCardDay, 8);
  36689. SocketInputStream::Read(&iStream->0, &this->mIsFatigue, 1u);
  36690. SocketInputStream::Read(&iStream->0, (CHAR *)&this->mAccTotalOnlineSecond, 4u);
  36691. v8 = this->mAccTotalOnlineSecond;
  36692. LOWORD(v8) = __ROR2__(v8, 8);
  36693. v8 = __ROR4__(v8, 16);
  36694. LOWORD(v8) = __ROR2__(v8, 8);
  36695. this->mAccTotalOnlineSecond = v8;
  36696. SocketInputStream::Read(&iStream->0, &this->mIsPhoneBind, 1u);
  36697. SocketInputStream::Read(&iStream->0, &this->mIsIPBind, 1u);
  36698. SocketInputStream::Read(&iStream->0, &this->mIsMiBaoBind, 1u);
  36699. SocketInputStream::Read(&iStream->0, &this->mIsMacBind, 1u);
  36700. SocketInputStream::Read(&iStream->0, &this->mIsRealNameBind, 1u);
  36701. SocketInputStream::Read(&iStream->0, &this->mIsInputNameBind, 1u);
  36702. SocketInputStream::Read(&iStream->0, &this->mIsPhoneMiBaoBind, 1u);
  36703. SocketInputStream::Read(&iStream->0, (CHAR *)&this->mIsPilferedAccount, 2u);
  36704. this->mIsPilferedAccount = __ROR2__(this->mIsPilferedAccount, 8);
  36705. result = 1;
  36706. }
  36707. else if ( v3 == 5 )
  36708. {
  36709. SocketInputStream::Read(&iStream->0, (CHAR *)&this->mWorldID, 2u);
  36710. this->mWorldID = __ROR2__(this->mWorldID, 8);
  36711. SocketInputStream::Read(&iStream->0, (CHAR *)&this->mIPLength, 1u);
  36712. v5 = this->mIPLength;
  36713. if ( v5 > 0xFu )
  36714. {
  36715. this->mIPLength = 15;
  36716. v5 = 15;
  36717. }
  36718. SocketInputStream::Read(&iStream->0, this->mIP, v5);
  36719. SocketInputStream::Read(&iStream->0, (CHAR *)&this->mServerNameLength, 1u);
  36720. v6 = this->mServerNameLength;
  36721. if ( v6 > 0x20u )
  36722. {
  36723. this->mServerNameLength = 32;
  36724. v6 = 32;
  36725. }
  36726. SocketInputStream::Read(&iStream->0, this->mSName, v6);
  36727. result = 1;
  36728. }
  36729. else
  36730. {
  36731. result = 1;
  36732. }
  36733. return result;
  36734. }
  36735.  
  36736. //----- (0806E324) --------------------------------------------------------
  36737. BOOL __cdecl Packets::BLRetAccCheck::Write(const Packets::BLRetAccCheck *const this, SocketBillingOutputStream *const oStream)
  36738. {
  36739. return 1;
  36740. }
  36741.  
  36742. //----- (0806E330) --------------------------------------------------------
  36743. UINT __cdecl Packets::BLRetAccCheck::Execute(Packets::BLRetAccCheck *const this, Player *pPlayer)
  36744. {
  36745. return Packets::BLRetAccCheckHandler::Execute(this, pPlayer);
  36746. }
  36747.  
  36748. //----- (0806E390) --------------------------------------------------------
  36749. void __cdecl _tcf_0_18(void *a1)
  36750. {
  36751. std::ios_base::Init::~Init(&std::__ioinit);
  36752. }
  36753.  
  36754. //----- (0806E3A0) --------------------------------------------------------
  36755. void `global constructor keyed to'Packets::BLRetAccCheck::Read()
  36756. {
  36757. std::ios_base::Init::Init(&std::__ioinit);
  36758. __cxa_atexit(_tcf_0_18, 0, &_dso_handle);
  36759. }
  36760. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  36761.  
  36762. //----- (0806E3CC) --------------------------------------------------------
  36763. BOOL __cdecl BillPacket::CheckPacket(BillPacket *const this)
  36764. {
  36765. return 1;
  36766. }
  36767.  
  36768. //----- (0806E3D8) --------------------------------------------------------
  36769. void __cdecl Packets::BLRetAccCheck::~BLRetAccCheck(BillPacket *a2)
  36770. {
  36771. a2->_vptr_BillPacket = (int (**)(...))off_80CB468;
  36772. BillPacket::~BillPacket(a2);
  36773. }
  36774. // 80CB468: using guessed type _DWORD (__cdecl *off_80CB468[2])(Packets::BLRetAccCheck *this);
  36775.  
  36776. //----- (0806E3F4) --------------------------------------------------------
  36777. void __cdecl Packets::BLRetAccCheck::~BLRetAccCheck(IPRegionTable *a2)
  36778. {
  36779. a2->_vptr_IPRegionTable = (int (**)(...))off_80CB468;
  36780. BillPacket::~BillPacket(a2);
  36781. operator delete(a2);
  36782. }
  36783. // 80CB468: using guessed type _DWORD (__cdecl *off_80CB468[2])(Packets::BLRetAccCheck *this);
  36784.  
  36785. //----- (0806E41C) --------------------------------------------------------
  36786. BPacketID_t __cdecl Packets::BLRetAccCheck::GetPacketID(const Packets::BLRetAccCheck *const this)
  36787. {
  36788. return -94;
  36789. }
  36790.  
  36791. //----- (0806E428) --------------------------------------------------------
  36792. int __cdecl Packets::BLRetAccCheck::GetPacketSize(int a2)
  36793. {
  36794. return *(unsigned __int8 *)(a2 + 7) + 4;
  36795. }
  36796.  
  36797. //----- (0806E438) --------------------------------------------------------
  36798. BOOL __cdecl Packets::BLRetAuth::Read(Packets::BLRetAuth *const this, SocketInputStream *const iStream)
  36799. {
  36800. SocketInputStream::Read(iStream, this->szAccount, 0x32u);
  36801. SocketInputStream::Read(iStream, (CHAR *)&this->Result, 4u);
  36802. SocketInputStream::Read(iStream, (CHAR *)&this->PlayerID, 2u);
  36803. SocketInputStream::Read(iStream, (CHAR *)&this->PlayerGUID, 4u);
  36804. SocketInputStream::Read(iStream, this->mServerName, 0x20u);
  36805. SocketInputStream::Read(iStream, this->mIP, 0xFu);
  36806. SocketInputStream::Read(iStream, &this->mIsFatigue, 1u);
  36807. SocketInputStream::Read(iStream, (CHAR *)&this->mAccTotalOnlineSecond, 4u);
  36808. SocketInputStream::Read(iStream, &this->mIsPhoneBind, 1u);
  36809. SocketInputStream::Read(iStream, &this->mIsIPBind, 1u);
  36810. SocketInputStream::Read(iStream, &this->mIsMiBaoBind, 1u);
  36811. SocketInputStream::Read(iStream, &this->mIsMacBind, 1u);
  36812. SocketInputStream::Read(iStream, &this->mIsRealNameBind, 1u);
  36813. SocketInputStream::Read(iStream, &this->mIsInputNameBind, 1u);
  36814. SocketInputStream::Read(iStream, &this->mIsPhoneMiBaoBind, 1u);
  36815. SocketInputStream::Read(iStream, (CHAR *)&this->mIsPilferedAccount, 2u);
  36816. return 1;
  36817. }
  36818.  
  36819. //----- (0806E59C) --------------------------------------------------------
  36820. BOOL __cdecl Packets::BLRetAuth::Write(const Packets::BLRetAuth *const this, SocketOutputStream *const oStream)
  36821. {
  36822. SocketOutputStream::Write(oStream, this->szAccount, 0x32u);
  36823. SocketOutputStream::Write(oStream, (const CHAR *)&this->Result, 4u);
  36824. SocketOutputStream::Write(oStream, (const CHAR *)&this->PlayerID, 2u);
  36825. SocketOutputStream::Write(oStream, (const CHAR *)&this->PlayerGUID, 4u);
  36826. SocketOutputStream::Write(oStream, this->mServerName, 0x20u);
  36827. SocketOutputStream::Write(oStream, this->mIP, 0xFu);
  36828. SocketOutputStream::Write(oStream, &this->mIsFatigue, 1u);
  36829. SocketOutputStream::Write(oStream, (const CHAR *)&this->mAccTotalOnlineSecond, 4u);
  36830. SocketOutputStream::Write(oStream, &this->mIsPhoneBind, 1u);
  36831. SocketOutputStream::Write(oStream, &this->mIsIPBind, 1u);
  36832. SocketOutputStream::Write(oStream, &this->mIsMiBaoBind, 1u);
  36833. SocketOutputStream::Write(oStream, &this->mIsMacBind, 1u);
  36834. SocketOutputStream::Write(oStream, &this->mIsRealNameBind, 1u);
  36835. SocketOutputStream::Write(oStream, &this->mIsInputNameBind, 1u);
  36836. SocketOutputStream::Write(oStream, &this->mIsPhoneMiBaoBind, 1u);
  36837. SocketOutputStream::Write(oStream, (const CHAR *)&this->mIsPilferedAccount, 2u);
  36838. return 1;
  36839. }
  36840.  
  36841. //----- (0806E700) --------------------------------------------------------
  36842. UINT __cdecl Packets::BLRetAuth::Execute(Packets::BLRetAuth *const this, Player *pPlayer)
  36843. {
  36844. return Packets::BLRetAuthHandler::Execute(this, pPlayer);
  36845. }
  36846.  
  36847. //----- (0806E760) --------------------------------------------------------
  36848. const CHAR *__cdecl Packets::BLRetAuth::GetAccount(const Packets::BLRetAuth *const this)
  36849. {
  36850. return this->szAccount;
  36851. }
  36852.  
  36853. //----- (0806E76C) --------------------------------------------------------
  36854. void __cdecl Packets::BLRetAuth::SetAccount(Packets::BLRetAuth *const this, const CHAR *pAccount)
  36855. {
  36856. if ( !pAccount )
  36857. __assert__(
  36858. "../../Common/Packets/BLRetAuth.cpp",
  36859. 0x4Du,
  36860. "void Packets::BLRetAuth::SetAccount(const CHAR*)",
  36861. "pAccount");
  36862. strncpy(this->szAccount, pAccount, 0x32u);
  36863. this->szAccount[50] = 0;
  36864. }
  36865.  
  36866. //----- (0806E7B0) --------------------------------------------------------
  36867. LOGIN_RESULT __cdecl Packets::BLRetAuth::GetResult(int a2)
  36868. {
  36869. return *(_DWORD *)(a2 + 64);
  36870. }
  36871.  
  36872. //----- (0806E7BC) --------------------------------------------------------
  36873. void __cdecl Packets::BLRetAuth::SetResult(int a3, int a4)
  36874. {
  36875. *(_DWORD *)(a3 + 64) = a4;
  36876. }
  36877.  
  36878. //----- (0806E7CC) --------------------------------------------------------
  36879. int __cdecl Packets::BLRetAuth::GetPlayerID(int a2)
  36880. {
  36881. return *(signed __int16 *)(a2 + 68);
  36882. }
  36883.  
  36884. //----- (0806E7D8) --------------------------------------------------------
  36885. void __cdecl Packets::BLRetAuth::SetPlayerID(int pID, __int16 pIDa)
  36886. {
  36887. *(_WORD *)(pID + 68) = pIDa;
  36888. }
  36889.  
  36890. //----- (0806E7E8) --------------------------------------------------------
  36891. GUID_t __cdecl Packets::BLRetAuth::GetPlayerGUID(int a2)
  36892. {
  36893. return *(_DWORD *)(a2 + 72);
  36894. }
  36895.  
  36896. //----- (0806E7F4) --------------------------------------------------------
  36897. void __cdecl Packets::BLRetAuth::SetPlayerGUID(int a3, int a4)
  36898. {
  36899. *(_DWORD *)(a3 + 72) = a4;
  36900. }
  36901.  
  36902. //----- (0806E804) --------------------------------------------------------
  36903. void __cdecl _tcf_0_19(void *a1)
  36904. {
  36905. std::ios_base::Init::~Init(&std::__ioinit);
  36906. }
  36907.  
  36908. //----- (0806E814) --------------------------------------------------------
  36909. void `global constructor keyed to'Packets::BLRetAuth::Read()
  36910. {
  36911. std::ios_base::Init::Init(&std::__ioinit);
  36912. __cxa_atexit(_tcf_0_19, 0, &_dso_handle);
  36913. }
  36914. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  36915.  
  36916. //----- (0806E840) --------------------------------------------------------
  36917. BOOL __cdecl Packet::CheckPacket(Packet *const this)
  36918. {
  36919. return 1;
  36920. }
  36921.  
  36922. //----- (0806E84C) --------------------------------------------------------
  36923. BOOL __cdecl Packet::IsStreamPacket(const Packet *const this)
  36924. {
  36925. return 0;
  36926. }
  36927.  
  36928. //----- (0806E854) --------------------------------------------------------
  36929. void __cdecl Packets::BLRetAuth::~BLRetAuth(Packet *a2)
  36930. {
  36931. a2->_vptr_Packet = (int (**)(...))off_80CB5E8;
  36932. Packet::~Packet(a2);
  36933. }
  36934. // 80CB5E8: using guessed type _DWORD (__cdecl *off_80CB5E8[2])(Packets::BLRetAuth *this);
  36935.  
  36936. //----- (0806E870) --------------------------------------------------------
  36937. void __cdecl Packets::BLRetAuth::~BLRetAuth(IPRegionTable *a2)
  36938. {
  36939. a2->_vptr_IPRegionTable = (int (**)(...))off_80CB5E8;
  36940. Packet::~Packet(a2);
  36941. operator delete(a2);
  36942. }
  36943. // 80CB5E8: using guessed type _DWORD (__cdecl *off_80CB5E8[2])(Packets::BLRetAuth *this);
  36944.  
  36945. //----- (0806E898) --------------------------------------------------------
  36946. PacketID_t __cdecl Packets::BLRetAuth::GetPacketID(const Packets::BLRetAuth *const this)
  36947. {
  36948. return 97;
  36949. }
  36950.  
  36951. //----- (0806E8A4) --------------------------------------------------------
  36952. UINT __cdecl Packets::BLRetAuth::GetPacketSize(const Packets::BLRetAuth *const this)
  36953. {
  36954. return 86;
  36955. }
  36956.  
  36957. //----- (0806E8B0) --------------------------------------------------------
  36958. BOOL __cdecl Packets::BLRetBillingEnd::Read(Packets::BLRetBillingEnd *const this, SocketBillingInputStream *const iStream)
  36959. {
  36960. BYTE v2; // al
  36961.  
  36962. SocketInputStream::Read(&iStream->0, (CHAR *)&this->mAccLength, 1u);
  36963. v2 = this->mAccLength;
  36964. if ( v2 > 0x32u )
  36965. {
  36966. v2 = 50;
  36967. this->mAccLength = 50;
  36968. }
  36969. SocketInputStream::Read(&iStream->0, this->mAccount, v2);
  36970. SocketInputStream::Read(&iStream->0, (CHAR *)&this->mResult, 1u);
  36971. return 1;
  36972. }
  36973.  
  36974. //----- (0806E94C) --------------------------------------------------------
  36975. BOOL __cdecl Packets::BLRetBillingEnd::Write(const Packets::BLRetBillingEnd *const this, SocketBillingOutputStream *const oStream)
  36976. {
  36977. return 1;
  36978. }
  36979.  
  36980. //----- (0806E958) --------------------------------------------------------
  36981. UINT __cdecl Packets::BLRetBillingEnd::Execute(Packets::BLRetBillingEnd *const this, Player *pPlayer)
  36982. {
  36983. return Packets::BLRetBillingEndHandler::Execute(this, pPlayer);
  36984. }
  36985.  
  36986. //----- (0806E9B8) --------------------------------------------------------
  36987. void __cdecl _tcf_0_20(void *a1)
  36988. {
  36989. std::ios_base::Init::~Init(&std::__ioinit);
  36990. }
  36991.  
  36992. //----- (0806E9C8) --------------------------------------------------------
  36993. void `global constructor keyed to'Packets::BLRetBillingEnd::Read()
  36994. {
  36995. std::ios_base::Init::Init(&std::__ioinit);
  36996. __cxa_atexit(_tcf_0_20, 0, &_dso_handle);
  36997. }
  36998. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  36999.  
  37000. //----- (0806E9F4) --------------------------------------------------------
  37001. void __cdecl Packets::BLRetBillingEnd::~BLRetBillingEnd(BillPacket *a2)
  37002. {
  37003. a2->_vptr_BillPacket = (int (**)(...))off_80CB788;
  37004. BillPacket::~BillPacket(a2);
  37005. }
  37006. // 80CB788: using guessed type _DWORD (__cdecl *off_80CB788[2])(Packets::BLRetBillingEnd *this);
  37007.  
  37008. //----- (0806EA10) --------------------------------------------------------
  37009. void __cdecl Packets::BLRetBillingEnd::~BLRetBillingEnd(IPRegionTable *a2)
  37010. {
  37011. a2->_vptr_IPRegionTable = (int (**)(...))off_80CB788;
  37012. BillPacket::~BillPacket(a2);
  37013. operator delete(a2);
  37014. }
  37015. // 80CB788: using guessed type _DWORD (__cdecl *off_80CB788[2])(Packets::BLRetBillingEnd *this);
  37016.  
  37017. //----- (0806EA38) --------------------------------------------------------
  37018. BPacketID_t __cdecl Packets::BLRetBillingEnd::GetPacketID(const Packets::BLRetBillingEnd *const this)
  37019. {
  37020. return -92;
  37021. }
  37022.  
  37023. //----- (0806EA44) --------------------------------------------------------
  37024. int __cdecl Packets::BLRetBillingEnd::GetPacketSize(int a2)
  37025. {
  37026. return *(unsigned __int8 *)(a2 + 7) + 2;
  37027. }
  37028.  
  37029. //----- (0806EA54) --------------------------------------------------------
  37030. BOOL __cdecl Packets::BLRetBillingKeep::Read(Packets::BLRetBillingKeep *const this, SocketBillingInputStream *const iStream)
  37031. {
  37032. BYTE v2; // al
  37033. UINT v4; // eax
  37034. UINT v5; // eax
  37035. UINT v6; // eax
  37036.  
  37037. SocketInputStream::Read(&iStream->0, (CHAR *)&this->mAccLength, 1u);
  37038. v2 = this->mAccLength;
  37039. if ( v2 > 0x32u )
  37040. {
  37041. v2 = 50;
  37042. this->mAccLength = 50;
  37043. }
  37044. SocketInputStream::Read(&iStream->0, this->mAccount, v2);
  37045. SocketInputStream::Read(&iStream->0, (CHAR *)&this->mResult, 1u);
  37046. if ( this->mResult == 1 )
  37047. {
  37048. SocketInputStream::Read(&iStream->0, (CHAR *)&this->mLeftTime, 4u);
  37049. v4 = this->mLeftTime;
  37050. LOWORD(v4) = __ROR2__(v4, 8);
  37051. v4 = __ROR4__(v4, 16);
  37052. LOWORD(v4) = __ROR2__(v4, 8);
  37053. this->mLeftTime = v4;
  37054. SocketInputStream::Read(&iStream->0, (CHAR *)&this->mStorePoint, 4u);
  37055. v5 = this->mStorePoint;
  37056. LOWORD(v5) = __ROR2__(v5, 8);
  37057. v5 = __ROR4__(v5, 16);
  37058. LOWORD(v5) = __ROR2__(v5, 8);
  37059. this->mStorePoint = v5;
  37060. SocketInputStream::Read(&iStream->0, (CHAR *)&this->mUserPoint, 4u);
  37061. v6 = this->mUserPoint;
  37062. LOWORD(v6) = __ROR2__(v6, 8);
  37063. v6 = __ROR4__(v6, 16);
  37064. LOWORD(v6) = __ROR2__(v6, 8);
  37065. this->mUserPoint = v6;
  37066. }
  37067. return 1;
  37068. }
  37069.  
  37070. //----- (0806EB68) --------------------------------------------------------
  37071. BOOL __cdecl Packets::BLRetBillingKeep::Write(const Packets::BLRetBillingKeep *const this, SocketBillingOutputStream *const oStream)
  37072. {
  37073. return 1;
  37074. }
  37075.  
  37076. //----- (0806EB74) --------------------------------------------------------
  37077. UINT __cdecl Packets::BLRetBillingKeep::Execute(Packets::BLRetBillingKeep *const this, Player *pPlayer)
  37078. {
  37079. return Packets::BLRetBillingKeepHandler::Execute(this, pPlayer);
  37080. }
  37081.  
  37082. //----- (0806EBD4) --------------------------------------------------------
  37083. void __cdecl _tcf_0_21(void *a1)
  37084. {
  37085. std::ios_base::Init::~Init(&std::__ioinit);
  37086. }
  37087.  
  37088. //----- (0806EBE4) --------------------------------------------------------
  37089. void `global constructor keyed to'Packets::BLRetBillingKeep::Read()
  37090. {
  37091. std::ios_base::Init::Init(&std::__ioinit);
  37092. __cxa_atexit(_tcf_0_21, 0, &_dso_handle);
  37093. }
  37094. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  37095.  
  37096. //----- (0806EC10) --------------------------------------------------------
  37097. void __cdecl Packets::BLRetBillingKeep::~BLRetBillingKeep(BillPacket *a2)
  37098. {
  37099. a2->_vptr_BillPacket = (int (**)(...))off_80CB928;
  37100. BillPacket::~BillPacket(a2);
  37101. }
  37102. // 80CB928: using guessed type _DWORD (__cdecl *off_80CB928[2])(Packets::BLRetBillingKeep *this);
  37103.  
  37104. //----- (0806EC2C) --------------------------------------------------------
  37105. void __cdecl Packets::BLRetBillingKeep::~BLRetBillingKeep(IPRegionTable *a2)
  37106. {
  37107. a2->_vptr_IPRegionTable = (int (**)(...))off_80CB928;
  37108. BillPacket::~BillPacket(a2);
  37109. operator delete(a2);
  37110. }
  37111. // 80CB928: using guessed type _DWORD (__cdecl *off_80CB928[2])(Packets::BLRetBillingKeep *this);
  37112.  
  37113. //----- (0806EC54) --------------------------------------------------------
  37114. BPacketID_t __cdecl Packets::BLRetBillingKeep::GetPacketID(const Packets::BLRetBillingKeep *const this)
  37115. {
  37116. return -90;
  37117. }
  37118.  
  37119. //----- (0806EC60) --------------------------------------------------------
  37120. int __cdecl Packets::BLRetBillingKeep::GetPacketSize(int a2)
  37121. {
  37122. return *(unsigned __int8 *)(a2 + 7) + 14;
  37123. }
  37124.  
  37125. //----- (0806EC70) --------------------------------------------------------
  37126. BOOL __cdecl Packets::BLRetBillingStart::Read(Packets::BLRetBillingStart *const this, SocketBillingInputStream *const iStream)
  37127. {
  37128. BYTE v2; // al
  37129. BYTE v3; // al
  37130. CHAR *v5; // eax
  37131. UINT v6; // eax
  37132. UINT v7; // eax
  37133. UINT v8; // eax
  37134.  
  37135. SocketInputStream::Read(&iStream->0, (CHAR *)&this->mAccLength, 1u);
  37136. v2 = this->mAccLength;
  37137. if ( v2 > 0x32u )
  37138. {
  37139. v2 = 50;
  37140. this->mAccLength = 50;
  37141. }
  37142. SocketInputStream::Read(&iStream->0, this->mAccount, v2);
  37143. SocketInputStream::Read(&iStream->0, (CHAR *)&this->mResult, 1u);
  37144. v3 = this->mResult;
  37145. if ( v3 == 1 )
  37146. {
  37147. SocketInputStream::Read(&iStream->0, (CHAR *)&this->mFeeType, 1u);
  37148. SocketInputStream::Read(&iStream->0, (CHAR *)&this->mLeftTime, 4u);
  37149. v6 = this->mLeftTime;
  37150. LOWORD(v6) = __ROR2__(v6, 8);
  37151. v6 = __ROR4__(v6, 16);
  37152. LOWORD(v6) = __ROR2__(v6, 8);
  37153. this->mLeftTime = v6;
  37154. SocketInputStream::Read(&iStream->0, (CHAR *)&this->mStorePoint, 4u);
  37155. v7 = this->mStorePoint;
  37156. LOWORD(v7) = __ROR2__(v7, 8);
  37157. v7 = __ROR4__(v7, 16);
  37158. LOWORD(v7) = __ROR2__(v7, 8);
  37159. this->mStorePoint = v7;
  37160. SocketInputStream::Read(&iStream->0, (CHAR *)&this->mUserPoint, 4u);
  37161. v8 = this->mUserPoint;
  37162. LOWORD(v8) = __ROR2__(v8, 8);
  37163. v8 = __ROR4__(v8, 16);
  37164. LOWORD(v8) = __ROR2__(v8, 8);
  37165. this->mUserPoint = v8;
  37166. v5 = (CHAR *)&this->mWhyFlag;
  37167. }
  37168. else
  37169. {
  37170. if ( v3 )
  37171. return 1;
  37172. v5 = (CHAR *)&this->mCode;
  37173. }
  37174. SocketInputStream::Read(&iStream->0, v5, 1u);
  37175. return 1;
  37176. }
  37177.  
  37178. //----- (0806EDAC) --------------------------------------------------------
  37179. BOOL __cdecl Packets::BLRetBillingStart::Write(const Packets::BLRetBillingStart *const this, SocketBillingOutputStream *const oStream)
  37180. {
  37181. return 1;
  37182. }
  37183.  
  37184. //----- (0806EDB8) --------------------------------------------------------
  37185. UINT __cdecl Packets::BLRetBillingStart::Execute(Packets::BLRetBillingStart *const this, Player *pPlayer)
  37186. {
  37187. return Packets::BLRetBillingStartHandler::Execute(this, pPlayer);
  37188. }
  37189.  
  37190. //----- (0806EE18) --------------------------------------------------------
  37191. void __cdecl _tcf_0_22(void *a1)
  37192. {
  37193. std::ios_base::Init::~Init(&std::__ioinit);
  37194. }
  37195.  
  37196. //----- (0806EE28) --------------------------------------------------------
  37197. void `global constructor keyed to'Packets::BLRetBillingStart::Read()
  37198. {
  37199. std::ios_base::Init::Init(&std::__ioinit);
  37200. __cxa_atexit(_tcf_0_22, 0, &_dso_handle);
  37201. }
  37202. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  37203.  
  37204. //----- (0806EE54) --------------------------------------------------------
  37205. void __cdecl Packets::BLRetBillingStart::~BLRetBillingStart(BillPacket *a2)
  37206. {
  37207. a2->_vptr_BillPacket = (int (**)(...))off_80CBAC8;
  37208. BillPacket::~BillPacket(a2);
  37209. }
  37210. // 80CBAC8: using guessed type _DWORD (__cdecl *off_80CBAC8[2])(Packets::BLRetBillingStart *this);
  37211.  
  37212. //----- (0806EE70) --------------------------------------------------------
  37213. void __cdecl Packets::BLRetBillingStart::~BLRetBillingStart(IPRegionTable *a2)
  37214. {
  37215. a2->_vptr_IPRegionTable = (int (**)(...))off_80CBAC8;
  37216. BillPacket::~BillPacket(a2);
  37217. operator delete(a2);
  37218. }
  37219. // 80CBAC8: using guessed type _DWORD (__cdecl *off_80CBAC8[2])(Packets::BLRetBillingStart *this);
  37220.  
  37221. //----- (0806EE98) --------------------------------------------------------
  37222. BPacketID_t __cdecl Packets::BLRetBillingStart::GetPacketID(const Packets::BLRetBillingStart *const this)
  37223. {
  37224. return -93;
  37225. }
  37226.  
  37227. //----- (0806EEA4) --------------------------------------------------------
  37228. UINT __cdecl Packets::BLRetBillingStart::GetPacketSize(const Packets::BLRetBillingStart *const this)
  37229. {
  37230. int v1; // edx
  37231.  
  37232. v1 = 0;
  37233. if ( this->mResult == 1 )
  37234. LOBYTE(v1) = 13;
  37235. return this->mAccLength + v1 + 3;
  37236. }
  37237.  
  37238. //----- (0806EEC8) --------------------------------------------------------
  37239. BOOL __cdecl Packets::BLRetConnect::Read(Packets::BLRetConnect *const this, SocketBillingInputStream *const iStream)
  37240. {
  37241. SocketInputStream::Read(&iStream->0, (CHAR *)&this->mReserve, 2u);
  37242. return 1;
  37243. }
  37244.  
  37245. //----- (0806EF34) --------------------------------------------------------
  37246. BOOL __cdecl Packets::BLRetConnect::Write(const Packets::BLRetConnect *const this, SocketBillingOutputStream *const oStream)
  37247. {
  37248. SocketOutputStream::Write(&oStream->0, (const CHAR *)&this->mReserve, 2u);
  37249. return 1;
  37250. }
  37251.  
  37252. //----- (0806EFA0) --------------------------------------------------------
  37253. UINT __cdecl Packets::BLRetConnect::Execute(Packets::BLRetConnect *const this, Player *pPlayer)
  37254. {
  37255. return Packets::BLRetConnectHandler::Execute(this, pPlayer);
  37256. }
  37257.  
  37258. //----- (0806F000) --------------------------------------------------------
  37259. void __cdecl _tcf_0_23(void *a1)
  37260. {
  37261. std::ios_base::Init::~Init(&std::__ioinit);
  37262. }
  37263.  
  37264. //----- (0806F010) --------------------------------------------------------
  37265. void `global constructor keyed to'Packets::BLRetConnect::Read()
  37266. {
  37267. std::ios_base::Init::Init(&std::__ioinit);
  37268. __cxa_atexit(_tcf_0_23, 0, &_dso_handle);
  37269. }
  37270. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  37271.  
  37272. //----- (0806F03C) --------------------------------------------------------
  37273. void __cdecl Packets::BLRetConnect::~BLRetConnect(BillPacket *a2)
  37274. {
  37275. a2->_vptr_BillPacket = (int (**)(...))off_80CBC68;
  37276. BillPacket::~BillPacket(a2);
  37277. }
  37278. // 80CBC68: using guessed type _DWORD (__cdecl *off_80CBC68[2])(Packets::BLRetConnect *this);
  37279.  
  37280. //----- (0806F058) --------------------------------------------------------
  37281. void __cdecl Packets::BLRetConnect::~BLRetConnect(IPRegionTable *a2)
  37282. {
  37283. a2->_vptr_IPRegionTable = (int (**)(...))off_80CBC68;
  37284. BillPacket::~BillPacket(a2);
  37285. operator delete(a2);
  37286. }
  37287. // 80CBC68: using guessed type _DWORD (__cdecl *off_80CBC68[2])(Packets::BLRetConnect *this);
  37288.  
  37289. //----- (0806F080) --------------------------------------------------------
  37290. BPacketID_t __cdecl Packets::BLRetConnect::GetPacketID(const Packets::BLRetConnect *const this)
  37291. {
  37292. return -96;
  37293. }
  37294.  
  37295. //----- (0806F08C) --------------------------------------------------------
  37296. UINT __cdecl Packets::BLRetConnect::GetPacketSize(const Packets::BLRetConnect *const this)
  37297. {
  37298. return 2;
  37299. }
  37300.  
  37301. //----- (0806F098) --------------------------------------------------------
  37302. BOOL __cdecl Packets::BLRetKeepLive::Read(Packets::BLRetKeepLive *const this, SocketBillingInputStream *const iStream)
  37303. {
  37304. SocketInputStream::Read(&iStream->0, (CHAR *)&this->mReserve, 2u);
  37305. return 1;
  37306. }
  37307.  
  37308. //----- (0806F104) --------------------------------------------------------
  37309. BOOL __cdecl Packets::BLRetKeepLive::Write(const Packets::BLRetKeepLive *const this, SocketBillingOutputStream *const oStream)
  37310. {
  37311. SocketOutputStream::Write(&oStream->0, (const CHAR *)&this->mReserve, 2u);
  37312. return 1;
  37313. }
  37314.  
  37315. //----- (0806F170) --------------------------------------------------------
  37316. UINT __cdecl Packets::BLRetKeepLive::Execute(Packets::BLRetKeepLive *const this, Player *pPlayer)
  37317. {
  37318. return Packets::BLRetKeepLiveHandler::Execute(this, pPlayer);
  37319. }
  37320.  
  37321. //----- (0806F1D0) --------------------------------------------------------
  37322. void __cdecl _tcf_0_24(void *a1)
  37323. {
  37324. std::ios_base::Init::~Init(&std::__ioinit);
  37325. }
  37326.  
  37327. //----- (0806F1E0) --------------------------------------------------------
  37328. void `global constructor keyed to'Packets::BLRetKeepLive::Read()
  37329. {
  37330. std::ios_base::Init::Init(&std::__ioinit);
  37331. __cxa_atexit(_tcf_0_24, 0, &_dso_handle);
  37332. }
  37333. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  37334.  
  37335. //----- (0806F20C) --------------------------------------------------------
  37336. void __cdecl Packets::BLRetKeepLive::~BLRetKeepLive(BillPacket *a2)
  37337. {
  37338. a2->_vptr_BillPacket = (int (**)(...))off_80CBDE8;
  37339. BillPacket::~BillPacket(a2);
  37340. }
  37341. // 80CBDE8: using guessed type _DWORD (__cdecl *off_80CBDE8[2])(Packets::BLRetKeepLive *this);
  37342.  
  37343. //----- (0806F228) --------------------------------------------------------
  37344. void __cdecl Packets::BLRetKeepLive::~BLRetKeepLive(IPRegionTable *a2)
  37345. {
  37346. a2->_vptr_IPRegionTable = (int (**)(...))off_80CBDE8;
  37347. BillPacket::~BillPacket(a2);
  37348. operator delete(a2);
  37349. }
  37350. // 80CBDE8: using guessed type _DWORD (__cdecl *off_80CBDE8[2])(Packets::BLRetKeepLive *this);
  37351.  
  37352. //----- (0806F250) --------------------------------------------------------
  37353. BPacketID_t __cdecl Packets::BLRetKeepLive::GetPacketID(const Packets::BLRetKeepLive *const this)
  37354. {
  37355. return -95;
  37356. }
  37357.  
  37358. //----- (0806F25C) --------------------------------------------------------
  37359. UINT __cdecl Packets::BLRetKeepLive::GetPacketSize(const Packets::BLRetKeepLive *const this)
  37360. {
  37361. return 2;
  37362. }
  37363.  
  37364. //----- (0806F268) --------------------------------------------------------
  37365. BOOL __cdecl Packets::BLRetKickALL::Read(Packets::BLRetKickALL *const this, SocketBillingInputStream *const iStream)
  37366. {
  37367. SocketInputStream::Read(&iStream->0, (CHAR *)&this->mResult, 1u);
  37368. return 1;
  37369. }
  37370.  
  37371. //----- (0806F2D4) --------------------------------------------------------
  37372. BOOL __cdecl Packets::BLRetKickALL::Write(const Packets::BLRetKickALL *const this, SocketBillingOutputStream *const oStream)
  37373. {
  37374. SocketOutputStream::Write(&oStream->0, (const CHAR *)&this->mResult, 1u);
  37375. return 1;
  37376. }
  37377.  
  37378. //----- (0806F340) --------------------------------------------------------
  37379. UINT __cdecl Packets::BLRetKickALL::Execute(Packets::BLRetKickALL *const this, Player *pPlayer)
  37380. {
  37381. return Packets::BLRetKickALLHandler::Execute(this, pPlayer);
  37382. }
  37383.  
  37384. //----- (0806F3A0) --------------------------------------------------------
  37385. void __cdecl _tcf_0_25(void *a1)
  37386. {
  37387. std::ios_base::Init::~Init(&std::__ioinit);
  37388. }
  37389.  
  37390. //----- (0806F3B0) --------------------------------------------------------
  37391. void `global constructor keyed to'Packets::BLRetKickALL::Read()
  37392. {
  37393. std::ios_base::Init::Init(&std::__ioinit);
  37394. __cxa_atexit(_tcf_0_25, 0, &_dso_handle);
  37395. }
  37396. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  37397.  
  37398. //----- (0806F3DC) --------------------------------------------------------
  37399. void __cdecl Packets::BLRetKickALL::~BLRetKickALL(BillPacket *a2)
  37400. {
  37401. a2->_vptr_BillPacket = (int (**)(...))off_80CBF68;
  37402. BillPacket::~BillPacket(a2);
  37403. }
  37404. // 80CBF68: using guessed type _DWORD (__cdecl *off_80CBF68[2])(Packets::BLRetKickALL *this);
  37405.  
  37406. //----- (0806F3F8) --------------------------------------------------------
  37407. void __cdecl Packets::BLRetKickALL::~BLRetKickALL(IPRegionTable *a2)
  37408. {
  37409. a2->_vptr_IPRegionTable = (int (**)(...))off_80CBF68;
  37410. BillPacket::~BillPacket(a2);
  37411. operator delete(a2);
  37412. }
  37413. // 80CBF68: using guessed type _DWORD (__cdecl *off_80CBF68[2])(Packets::BLRetKickALL *this);
  37414.  
  37415. //----- (0806F420) --------------------------------------------------------
  37416. BPacketID_t __cdecl Packets::BLRetKickALL::GetPacketID(const Packets::BLRetKickALL *const this)
  37417. {
  37418. return -87;
  37419. }
  37420.  
  37421. //----- (0806F42C) --------------------------------------------------------
  37422. UINT __cdecl Packets::BLRetKickALL::GetPacketSize(const Packets::BLRetKickALL *const this)
  37423. {
  37424. return 1;
  37425. }
  37426.  
  37427. //----- (0806F438) --------------------------------------------------------
  37428. BOOL __cdecl Packets::BLRetRegPassPort::Read(Packets::BLRetRegPassPort *const this, SocketBillingInputStream *const iStream)
  37429. {
  37430. BYTE v2; // al
  37431.  
  37432. SocketInputStream::Read(&iStream->0, (CHAR *)&this->mAccLength, 1u);
  37433. v2 = this->mAccLength;
  37434. if ( v2 > 0x32u )
  37435. {
  37436. v2 = 50;
  37437. this->mAccLength = 50;
  37438. }
  37439. SocketInputStream::Read(&iStream->0, this->mAccount, v2);
  37440. SocketInputStream::Read(&iStream->0, (CHAR *)&this->mAccResult, 1u);
  37441. return 1;
  37442. }
  37443.  
  37444. //----- (0806F4D4) --------------------------------------------------------
  37445. BOOL __cdecl Packets::BLRetRegPassPort::Write(const Packets::BLRetRegPassPort *const this, SocketBillingOutputStream *const oStream)
  37446. {
  37447. return 1;
  37448. }
  37449.  
  37450. //----- (0806F4E0) --------------------------------------------------------
  37451. UINT __cdecl Packets::BLRetRegPassPort::Execute(Packets::BLRetRegPassPort *const this, Player *pPlayer)
  37452. {
  37453. return Packets::BLRetRegPassPortHandler::Execute(this, pPlayer);
  37454. }
  37455.  
  37456. //----- (0806F540) --------------------------------------------------------
  37457. void __cdecl _tcf_0_26(void *a1)
  37458. {
  37459. std::ios_base::Init::~Init(&std::__ioinit);
  37460. }
  37461.  
  37462. //----- (0806F550) --------------------------------------------------------
  37463. void `global constructor keyed to'Packets::BLRetRegPassPort::Read()
  37464. {
  37465. std::ios_base::Init::Init(&std::__ioinit);
  37466. __cxa_atexit(_tcf_0_26, 0, &_dso_handle);
  37467. }
  37468. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  37469.  
  37470. //----- (0806F57C) --------------------------------------------------------
  37471. void __cdecl Packets::BLRetRegPassPort::~BLRetRegPassPort(BillPacket *a2)
  37472. {
  37473. a2->_vptr_BillPacket = (int (**)(...))off_80CC0E8;
  37474. BillPacket::~BillPacket(a2);
  37475. }
  37476. // 80CC0E8: using guessed type _DWORD (__cdecl *off_80CC0E8[2])(Packets::BLRetRegPassPort *this);
  37477.  
  37478. //----- (0806F598) --------------------------------------------------------
  37479. void __cdecl Packets::BLRetRegPassPort::~BLRetRegPassPort(IPRegionTable *a2)
  37480. {
  37481. a2->_vptr_IPRegionTable = (int (**)(...))off_80CC0E8;
  37482. BillPacket::~BillPacket(a2);
  37483. operator delete(a2);
  37484. }
  37485. // 80CC0E8: using guessed type _DWORD (__cdecl *off_80CC0E8[2])(Packets::BLRetRegPassPort *this);
  37486.  
  37487. //----- (0806F5C0) --------------------------------------------------------
  37488. BPacketID_t __cdecl Packets::BLRetRegPassPort::GetPacketID(const Packets::BLRetRegPassPort *const this)
  37489. {
  37490. return -15;
  37491. }
  37492.  
  37493. //----- (0806F5CC) --------------------------------------------------------
  37494. int __cdecl Packets::BLRetRegPassPort::GetPacketSize(int a2)
  37495. {
  37496. return *(unsigned __int8 *)(a2 + 7) + 2;
  37497. }
  37498.  
  37499. //----- (0806F5DC) --------------------------------------------------------
  37500. BOOL __cdecl Packets::CLAskCharList::Read(Packets::CLAskCharList *const this, SocketInputStream *const iStream)
  37501. {
  37502. SocketInputStream::Read(iStream, this->szAccount, 0x32u);
  37503. return 1;
  37504. }
  37505.  
  37506. //----- (0806F648) --------------------------------------------------------
  37507. BOOL __cdecl Packets::CLAskCharList::Write(const Packets::CLAskCharList *const this, SocketOutputStream *const oStream)
  37508. {
  37509. SocketOutputStream::Write(oStream, this->szAccount, 0x32u);
  37510. return 1;
  37511. }
  37512.  
  37513. //----- (0806F6B4) --------------------------------------------------------
  37514. UINT __cdecl Packets::CLAskCharList::Execute(Packets::CLAskCharList *const this, Player *pPlayer)
  37515. {
  37516. return Packets::CLAskCharListHandler::Execute(this, pPlayer);
  37517. }
  37518.  
  37519. //----- (0806F714) --------------------------------------------------------
  37520. const CHAR *__cdecl Packets::CLAskCharList::GetAccount(const Packets::CLAskCharList *const this)
  37521. {
  37522. return this->szAccount;
  37523. }
  37524.  
  37525. //----- (0806F720) --------------------------------------------------------
  37526. void __cdecl Packets::CLAskCharList::SetAccount(Packets::CLAskCharList *const this, const CHAR *pAccount)
  37527. {
  37528. if ( !pAccount )
  37529. __assert__(
  37530. "../../Common/Packets/CLAskCharList.cpp",
  37531. 0x2Eu,
  37532. "void Packets::CLAskCharList::SetAccount(const CHAR*)",
  37533. "pAccount");
  37534. strncpy(this->szAccount, pAccount, 0x32u);
  37535. this->szAccount[50] = 0;
  37536. }
  37537.  
  37538. //----- (0806F764) --------------------------------------------------------
  37539. void __cdecl _tcf_0_27(void *a1)
  37540. {
  37541. std::ios_base::Init::~Init(&std::__ioinit);
  37542. }
  37543.  
  37544. //----- (0806F774) --------------------------------------------------------
  37545. void `global constructor keyed to'Packets::CLAskCharList::Read()
  37546. {
  37547. std::ios_base::Init::Init(&std::__ioinit);
  37548. __cxa_atexit(_tcf_0_27, 0, &_dso_handle);
  37549. }
  37550. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  37551.  
  37552. //----- (0806F7A0) --------------------------------------------------------
  37553. void __cdecl Packets::CLAskCharList::~CLAskCharList(Packet *a2)
  37554. {
  37555. a2->_vptr_Packet = (int (**)(...))off_80CC288;
  37556. Packet::~Packet(a2);
  37557. }
  37558. // 80CC288: using guessed type _DWORD (__cdecl *off_80CC288[2])(Packets::CLAskCharList *this);
  37559.  
  37560. //----- (0806F7BC) --------------------------------------------------------
  37561. void __cdecl Packets::CLAskCharList::~CLAskCharList(IPRegionTable *a2)
  37562. {
  37563. a2->_vptr_IPRegionTable = (int (**)(...))off_80CC288;
  37564. Packet::~Packet(a2);
  37565. operator delete(a2);
  37566. }
  37567. // 80CC288: using guessed type _DWORD (__cdecl *off_80CC288[2])(Packets::CLAskCharList *this);
  37568.  
  37569. //----- (0806F7E4) --------------------------------------------------------
  37570. PacketID_t __cdecl Packets::CLAskCharList::GetPacketID(const Packets::CLAskCharList *const this)
  37571. {
  37572. return 13;
  37573. }
  37574.  
  37575. //----- (0806F7F0) --------------------------------------------------------
  37576. UINT __cdecl Packets::CLAskCharList::GetPacketSize(const Packets::CLAskCharList *const this)
  37577. {
  37578. return 50;
  37579. }
  37580.  
  37581. //----- (0806F7FC) --------------------------------------------------------
  37582. BOOL __cdecl Packets::CLAskCharLogin::Read(Packets::CLAskCharLogin *const this, SocketInputStream *const iStream)
  37583. {
  37584. SocketInputStream::Read(iStream, (CHAR *)&this->CharGuid, 4u);
  37585. SocketInputStream::Read(iStream, (CHAR *)&this->PlayerID, 2u);
  37586. SocketInputStream::Read(iStream, (CHAR *)&this->SceneID, 2u);
  37587. return 1;
  37588. }
  37589.  
  37590. //----- (0806F888) --------------------------------------------------------
  37591. BOOL __cdecl Packets::CLAskCharLogin::Write(const Packets::CLAskCharLogin *const this, SocketOutputStream *const oStream)
  37592. {
  37593. SocketOutputStream::Write(oStream, (const CHAR *)&this->CharGuid, 4u);
  37594. SocketOutputStream::Write(oStream, (const CHAR *)&this->PlayerID, 2u);
  37595. SocketOutputStream::Write(oStream, (const CHAR *)&this->SceneID, 2u);
  37596. return 1;
  37597. }
  37598.  
  37599. //----- (0806F914) --------------------------------------------------------
  37600. UINT __cdecl Packets::CLAskCharLogin::Execute(Packets::CLAskCharLogin *const this, Player *pPlayer)
  37601. {
  37602. return Packets::CLAskCharLoginHandler::Execute(this, pPlayer);
  37603. }
  37604.  
  37605. //----- (0806F974) --------------------------------------------------------
  37606. GUID_t __cdecl Packets::CLAskCharLogin::GetCharGuid(int a2)
  37607. {
  37608. return *(_DWORD *)(a2 + 12);
  37609. }
  37610.  
  37611. //----- (0806F980) --------------------------------------------------------
  37612. void __cdecl Packets::CLAskCharLogin::SetCharGuid(int a3, int a4)
  37613. {
  37614. *(_DWORD *)(a3 + 12) = a4;
  37615. }
  37616.  
  37617. //----- (0806F990) --------------------------------------------------------
  37618. void __cdecl _tcf_0_28(void *a1)
  37619. {
  37620. std::ios_base::Init::~Init(&std::__ioinit);
  37621. }
  37622.  
  37623. //----- (0806F9A0) --------------------------------------------------------
  37624. void `global constructor keyed to'Packets::CLAskCharLogin::Read()
  37625. {
  37626. std::ios_base::Init::Init(&std::__ioinit);
  37627. __cxa_atexit(_tcf_0_28, 0, &_dso_handle);
  37628. }
  37629. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  37630.  
  37631. //----- (0806F9CC) --------------------------------------------------------
  37632. void __cdecl Packets::CLAskCharLogin::~CLAskCharLogin(Packet *a2)
  37633. {
  37634. a2->_vptr_Packet = (int (**)(...))off_80CC428;
  37635. Packet::~Packet(a2);
  37636. }
  37637. // 80CC428: using guessed type _DWORD (__cdecl *off_80CC428[2])(Packets::CLAskCharLogin *this);
  37638.  
  37639. //----- (0806F9E8) --------------------------------------------------------
  37640. void __cdecl Packets::CLAskCharLogin::~CLAskCharLogin(IPRegionTable *a2)
  37641. {
  37642. a2->_vptr_IPRegionTable = (int (**)(...))off_80CC428;
  37643. Packet::~Packet(a2);
  37644. operator delete(a2);
  37645. }
  37646. // 80CC428: using guessed type _DWORD (__cdecl *off_80CC428[2])(Packets::CLAskCharLogin *this);
  37647.  
  37648. //----- (0806FA10) --------------------------------------------------------
  37649. PacketID_t __cdecl Packets::CLAskCharLogin::GetPacketID(const Packets::CLAskCharLogin *const this)
  37650. {
  37651. return 596;
  37652. }
  37653.  
  37654. //----- (0806FA1C) --------------------------------------------------------
  37655. UINT __cdecl Packets::CLAskCharLogin::GetPacketSize(const Packets::CLAskCharLogin *const this)
  37656. {
  37657. return 8;
  37658. }
  37659.  
  37660. //----- (0806FA28) --------------------------------------------------------
  37661. BOOL __cdecl Packets::CLAskCreateChar::Read(Packets::CLAskCreateChar *const this, SocketInputStream *const iStream)
  37662. {
  37663. SocketInputStream::Read(iStream, this->m_Name, 0x1Eu);
  37664. SocketInputStream::Read(iStream, (CHAR *)&this->m_Sex, 4u);
  37665. SocketInputStream::Read(iStream, (CHAR *)&this->m_HairColor, 1u);
  37666. SocketInputStream::Read(iStream, (CHAR *)&this->m_FaceColor, 1u);
  37667. SocketInputStream::Read(iStream, (CHAR *)&this->m_HairModel, 1u);
  37668. SocketInputStream::Read(iStream, (CHAR *)&this->m_FaceModel, 1u);
  37669. SocketInputStream::Read(iStream, (CHAR *)&this->m_HeadID, 1u);
  37670. SocketInputStream::Read(iStream, (CHAR *)&this->m_DefEquip, 4u);
  37671. SocketInputStream::Read(iStream, (CHAR *)&this->m_GUID, 4u);
  37672. return 1;
  37673. }
  37674.  
  37675. //----- (0806FB08) --------------------------------------------------------
  37676. BOOL __cdecl Packets::CLAskCreateChar::Write(const Packets::CLAskCreateChar *const this, SocketOutputStream *const oStream)
  37677. {
  37678. SocketOutputStream::Write(oStream, this->m_Name, 0x1Eu);
  37679. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_Sex, 4u);
  37680. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_HairColor, 1u);
  37681. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_FaceColor, 1u);
  37682. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_HairModel, 1u);
  37683. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_FaceModel, 1u);
  37684. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_HeadID, 1u);
  37685. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_DefEquip, 4u);
  37686. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_GUID, 4u);
  37687. return 1;
  37688. }
  37689.  
  37690. //----- (0806FBE8) --------------------------------------------------------
  37691. UINT __cdecl Packets::CLAskCreateChar::Execute(Packets::CLAskCreateChar *const this, Player *pPlayer)
  37692. {
  37693. return Packets::CLAskCreateCharHandler::Execute(this, pPlayer);
  37694. }
  37695.  
  37696. //----- (0806FC48) --------------------------------------------------------
  37697. const CHAR *__cdecl Packets::CLAskCreateChar::GetAccount(const Packets::CLAskCreateChar *const this)
  37698. {
  37699. return this->szAccount;
  37700. }
  37701.  
  37702. //----- (0806FC54) --------------------------------------------------------
  37703. void __cdecl Packets::CLAskCreateChar::SetAccount(Packets::CLAskCreateChar *const this, const CHAR *pAccount)
  37704. {
  37705. if ( !pAccount )
  37706. __assert__(
  37707. "../../Common/Packets/CLAskCreateChar.cpp",
  37708. 0x3Du,
  37709. "void Packets::CLAskCreateChar::SetAccount(const CHAR*)",
  37710. "pAccount");
  37711. strncpy(this->szAccount, pAccount, 0x32u);
  37712. this->szAccount[50] = 0;
  37713. }
  37714.  
  37715. //----- (0806FC98) --------------------------------------------------------
  37716. void __cdecl _tcf_0_29(void *a1)
  37717. {
  37718. std::ios_base::Init::~Init(&std::__ioinit);
  37719. }
  37720.  
  37721. //----- (0806FCA8) --------------------------------------------------------
  37722. void `global constructor keyed to'Packets::CLAskCreateChar::Read()
  37723. {
  37724. std::ios_base::Init::Init(&std::__ioinit);
  37725. __cxa_atexit(_tcf_0_29, 0, &_dso_handle);
  37726. }
  37727. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  37728.  
  37729. //----- (0806FCD4) --------------------------------------------------------
  37730. void __cdecl Packets::CLAskCreateChar::~CLAskCreateChar(Packet *a2)
  37731. {
  37732. a2->_vptr_Packet = (int (**)(...))off_80CC588;
  37733. Packet::~Packet(a2);
  37734. }
  37735. // 80CC588: using guessed type _DWORD (__cdecl *off_80CC588[2])(Packets::CLAskCreateChar *this);
  37736.  
  37737. //----- (0806FCF0) --------------------------------------------------------
  37738. void __cdecl Packets::CLAskCreateChar::~CLAskCreateChar(IPRegionTable *a2)
  37739. {
  37740. a2->_vptr_IPRegionTable = (int (**)(...))off_80CC588;
  37741. Packet::~Packet(a2);
  37742. operator delete(a2);
  37743. }
  37744. // 80CC588: using guessed type _DWORD (__cdecl *off_80CC588[2])(Packets::CLAskCreateChar *this);
  37745.  
  37746. //----- (0806FD18) --------------------------------------------------------
  37747. PacketID_t __cdecl Packets::CLAskCreateChar::GetPacketID(const Packets::CLAskCreateChar *const this)
  37748. {
  37749. return 638;
  37750. }
  37751.  
  37752. //----- (0806FD24) --------------------------------------------------------
  37753. UINT __cdecl Packets::CLAskCreateChar::GetPacketSize(const Packets::CLAskCreateChar *const this)
  37754. {
  37755. return 47;
  37756. }
  37757.  
  37758. //----- (0806FD30) --------------------------------------------------------
  37759. BOOL __cdecl Packets::CLAskDeleteChar::Read(Packets::CLAskDeleteChar *const this, SocketInputStream *const iStream)
  37760. {
  37761. SocketInputStream::Read(iStream, (CHAR *)&this->m_GUID, 4u);
  37762. return 1;
  37763. }
  37764.  
  37765. //----- (0806FD9C) --------------------------------------------------------
  37766. BOOL __cdecl Packets::CLAskDeleteChar::Write(const Packets::CLAskDeleteChar *const this, SocketOutputStream *const oStream)
  37767. {
  37768. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_GUID, 4u);
  37769. return 1;
  37770. }
  37771.  
  37772. //----- (0806FE08) --------------------------------------------------------
  37773. UINT __cdecl Packets::CLAskDeleteChar::Execute(Packets::CLAskDeleteChar *const this, Player *pPlayer)
  37774. {
  37775. return Packets::CLAskDeleteCharHandler::Execute(this, pPlayer);
  37776. }
  37777.  
  37778. //----- (0806FE68) --------------------------------------------------------
  37779. const CHAR *__cdecl Packets::CLAskDeleteChar::GetAccount(const Packets::CLAskDeleteChar *const this)
  37780. {
  37781. return this->szAccount;
  37782. }
  37783.  
  37784. //----- (0806FE74) --------------------------------------------------------
  37785. void __cdecl Packets::CLAskDeleteChar::SetAccount(Packets::CLAskDeleteChar *const this, const CHAR *pAccount)
  37786. {
  37787. if ( !pAccount )
  37788. __assert__(
  37789. "../../Common/Packets/CLAskDeleteChar.cpp",
  37790. 0x29u,
  37791. "void Packets::CLAskDeleteChar::SetAccount(const CHAR*)",
  37792. "pAccount");
  37793. strncpy(this->szAccount, pAccount, 0x32u);
  37794. this->szAccount[50] = 0;
  37795. }
  37796.  
  37797. //----- (0806FEB8) --------------------------------------------------------
  37798. void __cdecl _tcf_0_30(void *a1)
  37799. {
  37800. std::ios_base::Init::~Init(&std::__ioinit);
  37801. }
  37802.  
  37803. //----- (0806FEC8) --------------------------------------------------------
  37804. void `global constructor keyed to'Packets::CLAskDeleteChar::Read()
  37805. {
  37806. std::ios_base::Init::Init(&std::__ioinit);
  37807. __cxa_atexit(_tcf_0_30, 0, &_dso_handle);
  37808. }
  37809. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  37810.  
  37811. //----- (0806FEF4) --------------------------------------------------------
  37812. void __cdecl Packets::CLAskDeleteChar::~CLAskDeleteChar(Packet *a2)
  37813. {
  37814. a2->_vptr_Packet = (int (**)(...))off_80CC748;
  37815. Packet::~Packet(a2);
  37816. }
  37817. // 80CC748: using guessed type _DWORD (__cdecl *off_80CC748[2])(Packets::CLAskDeleteChar *this);
  37818.  
  37819. //----- (0806FF10) --------------------------------------------------------
  37820. void __cdecl Packets::CLAskDeleteChar::~CLAskDeleteChar(IPRegionTable *a2)
  37821. {
  37822. a2->_vptr_IPRegionTable = (int (**)(...))off_80CC748;
  37823. Packet::~Packet(a2);
  37824. operator delete(a2);
  37825. }
  37826. // 80CC748: using guessed type _DWORD (__cdecl *off_80CC748[2])(Packets::CLAskDeleteChar *this);
  37827.  
  37828. //----- (0806FF38) --------------------------------------------------------
  37829. PacketID_t __cdecl Packets::CLAskDeleteChar::GetPacketID(const Packets::CLAskDeleteChar *const this)
  37830. {
  37831. return 1;
  37832. }
  37833.  
  37834. //----- (0806FF44) --------------------------------------------------------
  37835. UINT __cdecl Packets::CLAskDeleteChar::GetPacketSize(const Packets::CLAskDeleteChar *const this)
  37836. {
  37837. return 4;
  37838. }
  37839.  
  37840. //----- (0806FF50) --------------------------------------------------------
  37841. BOOL __cdecl Packets::CLAskLogin::Read(Packets::CLAskLogin *const this, SocketInputStream *const iStream)
  37842. {
  37843. SocketInputStream::Read(iStream, this->szAccount, 0x32u);
  37844. SocketInputStream::Read(iStream, this->szPassWord, 0x20u);
  37845. SocketInputStream::Read(iStream, (CHAR *)&this->uVersion, 4u);
  37846. SocketInputStream::Read(iStream, (CHAR *)this->mAllMiBaoValue, 9u);
  37847. SocketInputStream::Read(iStream, this->mMacAddr, 0x20u);
  37848. SocketInputStream::Read(iStream, (CHAR *)&this->mHwid, 0x10u);
  37849. SocketInputStream::Read(iStream, this->m_CPU, 0x80u);
  37850. SocketInputStream::Read(iStream, this->m_Video, 0x80u);
  37851. SocketInputStream::Read(iStream, (CHAR *)&this->m_fLocalVideoMemory, 4u);
  37852. SocketInputStream::Read(iStream, (CHAR *)&this->m_fPhyMemory, 4u);
  37853. return 1;
  37854. }
  37855.  
  37856. //----- (08070054) --------------------------------------------------------
  37857. BOOL __cdecl Packets::CLAskLogin::Write(const Packets::CLAskLogin *const this, SocketOutputStream *const oStream)
  37858. {
  37859. SocketOutputStream::Write(oStream, this->szAccount, 0x32u);
  37860. SocketOutputStream::Write(oStream, this->szPassWord, 0x20u);
  37861. SocketOutputStream::Write(oStream, (const CHAR *)&this->uVersion, 4u);
  37862. SocketOutputStream::Write(oStream, (const CHAR *)this->mAllMiBaoValue, 9u);
  37863. SocketOutputStream::Write(oStream, this->mMacAddr, 0x20u);
  37864. SocketOutputStream::Write(oStream, (const CHAR *)&this->mHwid, 0x10u);
  37865. SocketOutputStream::Write(oStream, this->m_CPU, 0x80u);
  37866. SocketOutputStream::Write(oStream, this->m_Video, 0x80u);
  37867. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_fLocalVideoMemory, 4u);
  37868. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_fPhyMemory, 4u);
  37869. return 1;
  37870. }
  37871.  
  37872. //----- (08070158) --------------------------------------------------------
  37873. UINT __cdecl Packets::CLAskLogin::Execute(Packets::CLAskLogin *const this, Player *pPlayer)
  37874. {
  37875. return Packets::CLAskLoginHandler::Execute(this, pPlayer);
  37876. }
  37877.  
  37878. //----- (080701B8) --------------------------------------------------------
  37879. const CHAR *__cdecl Packets::CLAskLogin::GetAccount(const Packets::CLAskLogin *const this)
  37880. {
  37881. return this->szAccount;
  37882. }
  37883.  
  37884. //----- (080701C4) --------------------------------------------------------
  37885. void __cdecl Packets::CLAskLogin::SetAccount(Packets::CLAskLogin *const this, CHAR *pAccount)
  37886. {
  37887. if ( !pAccount )
  37888. __assert__("../../Common/Packets/CLAskLogin.cpp", 0x3Fu, "void Packets::CLAskLogin::SetAccount(CHAR*)", "pAccount");
  37889. strncpy(this->szAccount, pAccount, 0x32u);
  37890. this->szAccount[50] = 0;
  37891. }
  37892.  
  37893. //----- (08070208) --------------------------------------------------------
  37894. const CHAR *__cdecl Packets::CLAskLogin::GetPassWord(const Packets::CLAskLogin *const this)
  37895. {
  37896. return this->szPassWord;
  37897. }
  37898.  
  37899. //----- (08070214) --------------------------------------------------------
  37900. void __cdecl Packets::CLAskLogin::SetPassWord(Packets::CLAskLogin *const this, CHAR *pPassWord)
  37901. {
  37902. if ( !pPassWord )
  37903. __assert__(
  37904. "../../Common/Packets/CLAskLogin.cpp",
  37905. 0x4Au,
  37906. "void Packets::CLAskLogin::SetPassWord(CHAR*)",
  37907. "pPassWord");
  37908. strncpy(this->szPassWord, pPassWord, 0x20u);
  37909. }
  37910.  
  37911. //----- (08070250) --------------------------------------------------------
  37912. UINT __cdecl Packets::CLAskLogin::GetVersion(int a2)
  37913. {
  37914. return *(_DWORD *)(a2 + 96);
  37915. }
  37916.  
  37917. //----- (0807025C) --------------------------------------------------------
  37918. void __cdecl Packets::CLAskLogin::SetVersion(int a3, int a4)
  37919. {
  37920. *(_DWORD *)(a3 + 96) = a4;
  37921. }
  37922.  
  37923. //----- (0807026C) --------------------------------------------------------
  37924. INT __cdecl Packets::CLAskLogin::GetPassWordLength(Packets::CLAskLogin *const this)
  37925. {
  37926. INT result; // eax
  37927.  
  37928. result = 0;
  37929. while ( this->szPassWord[result] )
  37930. {
  37931. if ( ++result > 32 )
  37932. return 0;
  37933. }
  37934. return result;
  37935. }
  37936.  
  37937. //----- (0807028C) --------------------------------------------------------
  37938. CHAR *__cdecl Packets::CLAskLogin::GetMacAddr(Packets::CLAskLogin *const this)
  37939. {
  37940. return this->mMacAddr;
  37941. }
  37942.  
  37943. //----- (08070298) --------------------------------------------------------
  37944. void __cdecl Packets::CLAskLogin::SetMacAddr(Packets::CLAskLogin *const this, CHAR *pMacMD5)
  37945. {
  37946. if ( !pMacMD5 )
  37947. __assert__("../../Common/Packets/CLAskLogin.cpp", 0x6Au, "void Packets::CLAskLogin::SetMacAddr(CHAR*)", "pMacMD5");
  37948. strncpy(this->mMacAddr, pMacMD5, 0x20u);
  37949. }
  37950.  
  37951. //----- (080702D4) --------------------------------------------------------
  37952. void __fastcall Packets::CLAskLogin::SetHWID(Packets::CLAskLogin *const this, const GL_HWIDSTRUCT *const hwid)
  37953. {
  37954. _DWORD *v2; // [esp+8h] [ebp+8h]
  37955. _DWORD *v3; // [esp+Ch] [ebp+Ch]
  37956.  
  37957. v2[36] = *v3;
  37958. v2[37] = v3[1];
  37959. v2[38] = v3[2];
  37960. v2[39] = v3[3];
  37961. }
  37962.  
  37963. //----- (08070304) --------------------------------------------------------
  37964. GL_HWIDSTRUCT *__userpurge Packets::CLAskLogin::GetHWID@<eax>(GL_HWIDSTRUCT *retstr, const Packets::CLAskLogin *const this)
  37965. {
  37966. GL_HWIDSTRUCT *result; // eax
  37967.  
  37968. result = retstr;
  37969. retstr->dw1 = this->mHwid.dw1;
  37970. retstr->dw2 = this->mHwid.dw2;
  37971. retstr->dw3 = this->mHwid.dw3;
  37972. retstr->dw4 = this->mHwid.dw4;
  37973. return result;
  37974. }
  37975.  
  37976. //----- (08070334) --------------------------------------------------------
  37977. void __cdecl Packets::CLAskLogin::SetCPUInformation(Packets::CLAskLogin *const this, CHAR *CPUInformation)
  37978. {
  37979. if ( !CPUInformation )
  37980. __assert__(
  37981. "../../Common/Packets/CLAskLogin.cpp",
  37982. 0x7Au,
  37983. "void Packets::CLAskLogin::SetCPUInformation(CHAR*)",
  37984. "CPUInformation");
  37985. memset(this->m_CPU, 0, 0x80u);
  37986. memcpy(this->m_CPU, CPUInformation, 0x80u);
  37987. this->m_CPU[127] = 0;
  37988. }
  37989.  
  37990. //----- (08070394) --------------------------------------------------------
  37991. CHAR *__cdecl Packets::CLAskLogin::GetCPUInformation(Packets::CLAskLogin *const this)
  37992. {
  37993. return this->m_CPU;
  37994. }
  37995.  
  37996. //----- (080703A4) --------------------------------------------------------
  37997. void __cdecl Packets::CLAskLogin::SetVideoInformation(Packets::CLAskLogin *const this, CHAR *VideoInformation)
  37998. {
  37999. if ( !VideoInformation )
  38000. __assert__(
  38001. "../../Common/Packets/CLAskLogin.cpp",
  38002. 0x87u,
  38003. "void Packets::CLAskLogin::SetVideoInformation(CHAR*)",
  38004. "VideoInformation");
  38005. memset(this->m_Video, 0, 0x80u);
  38006. memcpy(this->m_Video, VideoInformation, 0x80u);
  38007. this->m_Video[127] = 0;
  38008. }
  38009.  
  38010. //----- (08070408) --------------------------------------------------------
  38011. CHAR *__cdecl Packets::CLAskLogin::GetVideoInformation(Packets::CLAskLogin *const this)
  38012. {
  38013. return this->m_Video;
  38014. }
  38015.  
  38016. //----- (08070418) --------------------------------------------------------
  38017. void __cdecl _tcf_0_31(void *a1)
  38018. {
  38019. std::ios_base::Init::~Init(&std::__ioinit);
  38020. }
  38021.  
  38022. //----- (08070428) --------------------------------------------------------
  38023. void `global constructor keyed to'Packets::CLAskLogin::Read()
  38024. {
  38025. std::ios_base::Init::Init(&std::__ioinit);
  38026. __cxa_atexit(_tcf_0_31, 0, &_dso_handle);
  38027. }
  38028. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  38029.  
  38030. //----- (08070454) --------------------------------------------------------
  38031. void __cdecl Packets::CLAskLogin::~CLAskLogin(Packet *a2)
  38032. {
  38033. a2->_vptr_Packet = (int (**)(...))off_80CC908;
  38034. Packet::~Packet(a2);
  38035. }
  38036. // 80CC908: using guessed type _DWORD (__cdecl *off_80CC908[2])(Packets::CLAskLogin *this);
  38037.  
  38038. //----- (08070470) --------------------------------------------------------
  38039. void __cdecl Packets::CLAskLogin::~CLAskLogin(IPRegionTable *a2)
  38040. {
  38041. a2->_vptr_IPRegionTable = (int (**)(...))off_80CC908;
  38042. Packet::~Packet(a2);
  38043. operator delete(a2);
  38044. }
  38045. // 80CC908: using guessed type _DWORD (__cdecl *off_80CC908[2])(Packets::CLAskLogin *this);
  38046.  
  38047. //----- (08070498) --------------------------------------------------------
  38048. PacketID_t __cdecl Packets::CLAskLogin::GetPacketID(const Packets::CLAskLogin *const this)
  38049. {
  38050. return 299;
  38051. }
  38052.  
  38053. //----- (080704A4) --------------------------------------------------------
  38054. UINT __cdecl Packets::CLAskLogin::GetPacketSize(const Packets::CLAskLogin *const this)
  38055. {
  38056. return 407;
  38057. }
  38058.  
  38059. //----- (080704B0) --------------------------------------------------------
  38060. BOOL __cdecl Packets::CLAskLoginCode::Read(Packets::CLAskLoginCode *const this, SocketInputStream *const iStream)
  38061. {
  38062. SocketInputStream::Read(iStream, (CHAR *)&this->m_AskType, 1u);
  38063. if ( this->m_AskType == 1 )
  38064. SocketInputStream::Read(iStream, (CHAR *)&this->m_Answer, 8u);
  38065. return 1;
  38066. }
  38067.  
  38068. //----- (0807053C) --------------------------------------------------------
  38069. BOOL __cdecl Packets::CLAskLoginCode::Write(const Packets::CLAskLoginCode *const this, SocketOutputStream *const oStream)
  38070. {
  38071. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_AskType, 1u);
  38072. if ( this->m_AskType == 1 )
  38073. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_Answer, 8u);
  38074. return 1;
  38075. }
  38076.  
  38077. //----- (080705C8) --------------------------------------------------------
  38078. UINT __cdecl Packets::CLAskLoginCode::Execute(Packets::CLAskLoginCode *const this, Player *pPlayer)
  38079. {
  38080. return Packets::CLAskLoginCodeHandler::Execute(this, pPlayer);
  38081. }
  38082.  
  38083. //----- (08070628) --------------------------------------------------------
  38084. void __cdecl _tcf_0_32(void *a1)
  38085. {
  38086. std::ios_base::Init::~Init(&std::__ioinit);
  38087. }
  38088.  
  38089. //----- (08070638) --------------------------------------------------------
  38090. void `global constructor keyed to'Packets::CLAskLoginCode::Read()
  38091. {
  38092. std::ios_base::Init::Init(&std::__ioinit);
  38093. __cxa_atexit(_tcf_0_32, 0, &_dso_handle);
  38094. }
  38095. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  38096.  
  38097. //----- (08070664) --------------------------------------------------------
  38098. void __cdecl Packets::CLAskLoginCode::~CLAskLoginCode(Packet *a2)
  38099. {
  38100. a2->_vptr_Packet = (int (**)(...))off_80CCBE8;
  38101. Packet::~Packet(a2);
  38102. }
  38103. // 80CCBE8: using guessed type _DWORD (__cdecl *off_80CCBE8[2])(Packets::CLAskLoginCode *this);
  38104.  
  38105. //----- (08070680) --------------------------------------------------------
  38106. void __cdecl Packets::CLAskLoginCode::~CLAskLoginCode(IPRegionTable *a2)
  38107. {
  38108. a2->_vptr_IPRegionTable = (int (**)(...))off_80CCBE8;
  38109. Packet::~Packet(a2);
  38110. operator delete(a2);
  38111. }
  38112. // 80CCBE8: using guessed type _DWORD (__cdecl *off_80CCBE8[2])(Packets::CLAskLoginCode *this);
  38113.  
  38114. //----- (080706A8) --------------------------------------------------------
  38115. PacketID_t __cdecl Packets::CLAskLoginCode::GetPacketID(const Packets::CLAskLoginCode *const this)
  38116. {
  38117. return 572;
  38118. }
  38119.  
  38120. //----- (080706B4) --------------------------------------------------------
  38121. int __cdecl Packets::CLAskLoginCode::GetPacketSize(int a2)
  38122. {
  38123. return 8 * (*(_BYTE *)(a2 + 12) == 1) + 1;
  38124. }
  38125.  
  38126. //----- (080706D0) --------------------------------------------------------
  38127. BOOL __cdecl Packets::CLAskRegPassPort::Read(Packets::CLAskRegPassPort *const this, SocketInputStream *const iStream)
  38128. {
  38129. SocketInputStream::Read(iStream, this->szAccount, 0x32u);
  38130. SocketInputStream::Read(iStream, this->szSuperPw, 0x20u);
  38131. SocketInputStream::Read(iStream, this->szConfirmSuperPw, 0x20u);
  38132. SocketInputStream::Read(iStream, this->szPwMd5, 0x20u);
  38133. SocketInputStream::Read(iStream, this->szConfirmPwMd5, 0x20u);
  38134. SocketInputStream::Read(iStream, this->szEmail, 0xFFu);
  38135. return 1;
  38136. }
  38137.  
  38138. //----- (08070790) --------------------------------------------------------
  38139. BOOL __cdecl Packets::CLAskRegPassPort::Write(const Packets::CLAskRegPassPort *const this, SocketOutputStream *const oStream)
  38140. {
  38141. SocketOutputStream::Write(oStream, this->szAccount, 0x32u);
  38142. SocketOutputStream::Write(oStream, this->szSuperPw, 0x20u);
  38143. SocketOutputStream::Write(oStream, this->szConfirmSuperPw, 0x20u);
  38144. SocketOutputStream::Write(oStream, this->szPwMd5, 0x20u);
  38145. SocketOutputStream::Write(oStream, this->szConfirmPwMd5, 0x20u);
  38146. SocketOutputStream::Write(oStream, this->szEmail, 0xFFu);
  38147. return 1;
  38148. }
  38149.  
  38150. //----- (08070850) --------------------------------------------------------
  38151. UINT __cdecl Packets::CLAskRegPassPort::Execute(Packets::CLAskRegPassPort *const this, Player *pPlayer)
  38152. {
  38153. return Packets::CLAskRegPassPortHandler::Execute(this, pPlayer);
  38154. }
  38155.  
  38156. //----- (080708B0) --------------------------------------------------------
  38157. const CHAR *__cdecl Packets::CLAskRegPassPort::GetAccount(const Packets::CLAskRegPassPort *const this)
  38158. {
  38159. return this->szAccount;
  38160. }
  38161.  
  38162. //----- (080708BC) --------------------------------------------------------
  38163. void __cdecl Packets::CLAskRegPassPort::SetAccount(Packets::CLAskRegPassPort *const this, CHAR *pAccount)
  38164. {
  38165. if ( !pAccount )
  38166. __assert__(
  38167. "../../Common/Packets/CLAskRegPassPort.cpp",
  38168. 0x38u,
  38169. "void Packets::CLAskRegPassPort::SetAccount(CHAR*)",
  38170. "pAccount");
  38171. strncpy(this->szAccount, pAccount, 0x32u);
  38172. this->szAccount[50] = 0;
  38173. }
  38174.  
  38175. //----- (08070900) --------------------------------------------------------
  38176. const CHAR *__cdecl Packets::CLAskRegPassPort::GetSuperPw(const Packets::CLAskRegPassPort *const this)
  38177. {
  38178. return this->szSuperPw;
  38179. }
  38180.  
  38181. //----- (0807090C) --------------------------------------------------------
  38182. void __cdecl Packets::CLAskRegPassPort::SetSuperPw(Packets::CLAskRegPassPort *const this, CHAR *pSuperPw)
  38183. {
  38184. if ( !pSuperPw )
  38185. __assert__(
  38186. "../../Common/Packets/CLAskRegPassPort.cpp",
  38187. 0x44u,
  38188. "void Packets::CLAskRegPassPort::SetSuperPw(CHAR*)",
  38189. "pSuperPw");
  38190. strncpy(this->szSuperPw, pSuperPw, 0x20u);
  38191. this->szSuperPw[32] = 0;
  38192. }
  38193.  
  38194. //----- (08070950) --------------------------------------------------------
  38195. const CHAR *__cdecl Packets::CLAskRegPassPort::GetConfirmSuperPw(const Packets::CLAskRegPassPort *const this)
  38196. {
  38197. return this->szConfirmSuperPw;
  38198. }
  38199.  
  38200. //----- (0807095C) --------------------------------------------------------
  38201. void __cdecl Packets::CLAskRegPassPort::SetConfirmSuperPw(Packets::CLAskRegPassPort *const this, CHAR *pConfirmSuperPw)
  38202. {
  38203. if ( !pConfirmSuperPw )
  38204. __assert__(
  38205. "../../Common/Packets/CLAskRegPassPort.cpp",
  38206. 0x50u,
  38207. "void Packets::CLAskRegPassPort::SetConfirmSuperPw(CHAR*)",
  38208. "pConfirmSuperPw");
  38209. strncpy(this->szConfirmSuperPw, pConfirmSuperPw, 0x20u);
  38210. this->szConfirmSuperPw[32] = 0;
  38211. }
  38212.  
  38213. //----- (080709A4) --------------------------------------------------------
  38214. const CHAR *__cdecl Packets::CLAskRegPassPort::GetPwMd5(const Packets::CLAskRegPassPort *const this)
  38215. {
  38216. return this->szPwMd5;
  38217. }
  38218.  
  38219. //----- (080709B4) --------------------------------------------------------
  38220. void __cdecl Packets::CLAskRegPassPort::SetPwMd5(Packets::CLAskRegPassPort *const this, CHAR *pPwMd5)
  38221. {
  38222. if ( !pPwMd5 )
  38223. __assert__(
  38224. "../../Common/Packets/CLAskRegPassPort.cpp",
  38225. 0x5Cu,
  38226. "void Packets::CLAskRegPassPort::SetPwMd5(CHAR*)",
  38227. "pPwMd5");
  38228. strncpy(this->szPwMd5, pPwMd5, 0x20u);
  38229. this->szPwMd5[32] = 0;
  38230. }
  38231.  
  38232. //----- (080709FC) --------------------------------------------------------
  38233. const CHAR *__cdecl Packets::CLAskRegPassPort::GetConfirmPwMd5(const Packets::CLAskRegPassPort *const this)
  38234. {
  38235. return this->szConfirmPwMd5;
  38236. }
  38237.  
  38238. //----- (08070A0C) --------------------------------------------------------
  38239. void __cdecl Packets::CLAskRegPassPort::SetConfirmPwMd5(Packets::CLAskRegPassPort *const this, CHAR *pConfirmPwMd5)
  38240. {
  38241. if ( !pConfirmPwMd5 )
  38242. __assert__(
  38243. "../../Common/Packets/CLAskRegPassPort.cpp",
  38244. 0x68u,
  38245. "void Packets::CLAskRegPassPort::SetConfirmPwMd5(CHAR*)",
  38246. "pConfirmPwMd5");
  38247. strncpy(this->szConfirmPwMd5, pConfirmPwMd5, 0x20u);
  38248. this->szConfirmPwMd5[32] = 0;
  38249. }
  38250.  
  38251. //----- (08070A54) --------------------------------------------------------
  38252. const CHAR *__cdecl Packets::CLAskRegPassPort::GetEmail(const Packets::CLAskRegPassPort *const this)
  38253. {
  38254. return this->szEmail;
  38255. }
  38256.  
  38257. //----- (08070A64) --------------------------------------------------------
  38258. void __cdecl Packets::CLAskRegPassPort::SetEmail(Packets::CLAskRegPassPort *const this, CHAR *pEmail)
  38259. {
  38260. if ( !pEmail )
  38261. __assert__(
  38262. "../../Common/Packets/CLAskRegPassPort.cpp",
  38263. 0x74u,
  38264. "void Packets::CLAskRegPassPort::SetEmail(CHAR*)",
  38265. "pEmail");
  38266. strncpy(this->szEmail, pEmail, 0xFFu);
  38267. this->szEmail[255] = 0;
  38268. }
  38269.  
  38270. //----- (08070AB0) --------------------------------------------------------
  38271. void __cdecl _tcf_0_33(void *a1)
  38272. {
  38273. std::ios_base::Init::~Init(&std::__ioinit);
  38274. }
  38275.  
  38276. //----- (08070AC0) --------------------------------------------------------
  38277. void `global constructor keyed to'Packets::CLAskRegPassPort::Read()
  38278. {
  38279. std::ios_base::Init::Init(&std::__ioinit);
  38280. __cxa_atexit(_tcf_0_33, 0, &_dso_handle);
  38281. }
  38282. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  38283.  
  38284. //----- (08070AEC) --------------------------------------------------------
  38285. void __cdecl Packets::CLAskRegPassPort::~CLAskRegPassPort(Packet *a2)
  38286. {
  38287. a2->_vptr_Packet = (int (**)(...))off_80CCD48;
  38288. Packet::~Packet(a2);
  38289. }
  38290. // 80CCD48: using guessed type _DWORD (__cdecl *off_80CCD48[2])(Packets::CLAskRegPassPort *this);
  38291.  
  38292. //----- (08070B08) --------------------------------------------------------
  38293. void __cdecl Packets::CLAskRegPassPort::~CLAskRegPassPort(IPRegionTable *a2)
  38294. {
  38295. a2->_vptr_IPRegionTable = (int (**)(...))off_80CCD48;
  38296. Packet::~Packet(a2);
  38297. operator delete(a2);
  38298. }
  38299. // 80CCD48: using guessed type _DWORD (__cdecl *off_80CCD48[2])(Packets::CLAskRegPassPort *this);
  38300.  
  38301. //----- (08070B30) --------------------------------------------------------
  38302. PacketID_t __cdecl Packets::CLAskRegPassPort::GetPacketID(const Packets::CLAskRegPassPort *const this)
  38303. {
  38304. return 439;
  38305. }
  38306.  
  38307. //----- (08070B3C) --------------------------------------------------------
  38308. UINT __cdecl Packets::CLAskRegPassPort::GetPacketSize(const Packets::CLAskRegPassPort *const this)
  38309. {
  38310. return 433;
  38311. }
  38312.  
  38313. //----- (08070B48) --------------------------------------------------------
  38314. BOOL __cdecl Packets::CLConnect::Read(Packets::CLConnect *const this, SocketInputStream *const iStream)
  38315. {
  38316. SocketInputStream::Read(iStream, (CHAR *)&this->mMiBao, 1u);
  38317. SocketInputStream::Read(iStream, (CHAR *)&this->mNetProvider, 4u);
  38318. return 1;
  38319. }
  38320.  
  38321. //----- (08070BC4) --------------------------------------------------------
  38322. BOOL __cdecl Packets::CLConnect::Write(const Packets::CLConnect *const this, SocketOutputStream *const oStream)
  38323. {
  38324. SocketOutputStream::Write(oStream, (const CHAR *)&this->mMiBao, 1u);
  38325. SocketOutputStream::Write(oStream, (const CHAR *)&this->mNetProvider, 4u);
  38326. return 1;
  38327. }
  38328.  
  38329. //----- (08070C40) --------------------------------------------------------
  38330. UINT __cdecl Packets::CLConnect::Execute(Packets::CLConnect *const this, Player *pPlayer)
  38331. {
  38332. return Packets::CLConnectHandler::Execute(this, pPlayer);
  38333. }
  38334.  
  38335. //----- (08070CA0) --------------------------------------------------------
  38336. void __cdecl _tcf_0_34(void *a1)
  38337. {
  38338. std::ios_base::Init::~Init(&std::__ioinit);
  38339. }
  38340.  
  38341. //----- (08070CB0) --------------------------------------------------------
  38342. void `global constructor keyed to'Packets::CLConnect::Read()
  38343. {
  38344. std::ios_base::Init::Init(&std::__ioinit);
  38345. __cxa_atexit(_tcf_0_34, 0, &_dso_handle);
  38346. }
  38347. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  38348.  
  38349. //----- (08070CDC) --------------------------------------------------------
  38350. void __cdecl Packets::CLConnect::~CLConnect(Packet *a2)
  38351. {
  38352. a2->_vptr_Packet = (int (**)(...))off_80CD088;
  38353. Packet::~Packet(a2);
  38354. }
  38355. // 80CD088: using guessed type _DWORD (__cdecl *off_80CD088[2])(Packets::CLConnect *this);
  38356.  
  38357. //----- (08070CF8) --------------------------------------------------------
  38358. void __cdecl Packets::CLConnect::~CLConnect(IPRegionTable *a2)
  38359. {
  38360. a2->_vptr_IPRegionTable = (int (**)(...))off_80CD088;
  38361. Packet::~Packet(a2);
  38362. operator delete(a2);
  38363. }
  38364. // 80CD088: using guessed type _DWORD (__cdecl *off_80CD088[2])(Packets::CLConnect *this);
  38365.  
  38366. //----- (08070D20) --------------------------------------------------------
  38367. PacketID_t __cdecl Packets::CLConnect::GetPacketID(const Packets::CLConnect *const this)
  38368. {
  38369. return 355;
  38370. }
  38371.  
  38372. //----- (08070D2C) --------------------------------------------------------
  38373. UINT __cdecl Packets::CLConnect::GetPacketSize(const Packets::CLConnect *const this)
  38374. {
  38375. return 5;
  38376. }
  38377.  
  38378. //----- (08070D38) --------------------------------------------------------
  38379. BOOL __cdecl Packets::KeyExchange::Read(Packets::KeyExchange *const this, SocketInputStream *const iStream)
  38380. {
  38381. SHORT v2; // ax
  38382.  
  38383. SocketInputStream::Read(iStream, (CHAR *)&this->m_nKeySize, 2u);
  38384. v2 = this->m_nKeySize;
  38385. if ( (unsigned __int16)v2 > 0x400u )
  38386. __assert__(
  38387. "../../Common/Packets/KeyExchange.cpp",
  38388. 0xEu,
  38389. "virtual BOOL Packets::KeyExchange::Read(SocketInputStream&)",
  38390. "0<=m_nKeySize&&m_nKeySize<=MAX_BUFFER_SIZE");
  38391. SocketInputStream::Read(iStream, (CHAR *)this->m_szKey, v2);
  38392. return 1;
  38393. }
  38394.  
  38395. //----- (08070DE4) --------------------------------------------------------
  38396. BOOL __cdecl Packets::KeyExchange::Write(const Packets::KeyExchange *const this, SocketOutputStream *const oStream)
  38397. {
  38398. if ( this->m_nKeySize < 0 )
  38399. __assert__(
  38400. "../../Common/Packets/KeyExchange.cpp",
  38401. 0x1Bu,
  38402. "virtual BOOL Packets::KeyExchange::Write(SocketOutputStream&) const",
  38403. "0<=m_nKeySize");
  38404. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_nKeySize, 2u);
  38405. SocketOutputStream::Write(oStream, (const CHAR *)this->m_szKey, this->m_nKeySize);
  38406. return 1;
  38407. }
  38408.  
  38409. //----- (08070E94) --------------------------------------------------------
  38410. UINT __cdecl Packets::KeyExchange::Execute(Packets::KeyExchange *const this, Player *pPlayer)
  38411. {
  38412. return Packets::KeyExchangeHandler::Execute(this, pPlayer);
  38413. }
  38414.  
  38415. //----- (08070EF4) --------------------------------------------------------
  38416. void __cdecl Packets::KeyExchange::SetKey(Packets::KeyExchange *const this, const UCHAR *szKey, INT nKeySize)
  38417. {
  38418. if ( (unsigned int)nKeySize > 0x400 )
  38419. __assert__(
  38420. "../../Common/Packets/KeyExchange.cpp",
  38421. 0x34u,
  38422. "void Packets::KeyExchange::SetKey(const UCHAR*, INT)",
  38423. "MAX_BUFFER_SIZE>=nKeySize && 0<=nKeySize");
  38424. this->m_nKeySize = nKeySize;
  38425. memcpy(this->m_szKey, szKey, nKeySize);
  38426. }
  38427.  
  38428. //----- (08070FB0) --------------------------------------------------------
  38429. void __cdecl _tcf_0_35(void *a1)
  38430. {
  38431. std::ios_base::Init::~Init(&std::__ioinit);
  38432. }
  38433.  
  38434. //----- (08070FC0) --------------------------------------------------------
  38435. void `global constructor keyed to'Packets::KeyExchange::Read()
  38436. {
  38437. std::ios_base::Init::Init(&std::__ioinit);
  38438. __cxa_atexit(_tcf_0_35, 0, &_dso_handle);
  38439. }
  38440. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  38441.  
  38442. //----- (08070FEC) --------------------------------------------------------
  38443. void __cdecl Packets::KeyExchange::~KeyExchange(Packet *a2)
  38444. {
  38445. a2->_vptr_Packet = (int (**)(...))off_80CD1E8;
  38446. Packet::~Packet(a2);
  38447. }
  38448. // 80CD1E8: using guessed type _DWORD (__cdecl *off_80CD1E8[2])(Packets::KeyExchange *this);
  38449.  
  38450. //----- (08071008) --------------------------------------------------------
  38451. void __cdecl Packets::KeyExchange::~KeyExchange(IPRegionTable *a2)
  38452. {
  38453. a2->_vptr_IPRegionTable = (int (**)(...))off_80CD1E8;
  38454. Packet::~Packet(a2);
  38455. operator delete(a2);
  38456. }
  38457. // 80CD1E8: using guessed type _DWORD (__cdecl *off_80CD1E8[2])(Packets::KeyExchange *this);
  38458.  
  38459. //----- (08071030) --------------------------------------------------------
  38460. PacketID_t __cdecl Packets::KeyExchange::GetPacketID(const Packets::KeyExchange *const this)
  38461. {
  38462. return 627;
  38463. }
  38464.  
  38465. //----- (0807103C) --------------------------------------------------------
  38466. int __cdecl Packets::KeyExchange::GetPacketSize(int a2)
  38467. {
  38468. return *(signed __int16 *)(a2 + 1036) + 2;
  38469. }
  38470.  
  38471. //----- (08071050) --------------------------------------------------------
  38472. BOOL __cdecl Packets::LBAccCheck::Read(Packets::LBAccCheck *const this, SocketBillingInputStream *const iStream)
  38473. {
  38474. return 1;
  38475. }
  38476.  
  38477. //----- (0807105C) --------------------------------------------------------
  38478. BOOL __cdecl Packets::LBAccCheck::Write(const Packets::LBAccCheck *const this, SocketBillingOutputStream *const oStream)
  38479. {
  38480. const Packets::LBAccCheck *v2; // ebx
  38481. const CHAR *v3; // edi
  38482. const CHAR *v4; // edi
  38483. INT i_0; // [esp+4h] [ebp-18h]
  38484. INT i; // [esp+8h] [ebp-14h]
  38485. USHORT UserLevel; // [esp+Eh] [ebp-Eh]
  38486.  
  38487. v2 = this;
  38488. SocketOutputStream::Write(&oStream->0, (const CHAR *)&this->mAccLength, 1u);
  38489. SocketOutputStream::Write(&oStream->0, v2->mAccount, v2->mAccLength);
  38490. SocketOutputStream::Write(&oStream->0, (const CHAR *)&this->mPwLength, 1u);
  38491. SocketOutputStream::Write(&oStream->0, v2->mPwMd5, v2->mPwLength);
  38492. SocketOutputStream::Write(&oStream->0, (const CHAR *)&this->mIPLength, 1u);
  38493. SocketOutputStream::Write(&oStream->0, v2->mIP, v2->mIPLength);
  38494. UserLevel = __ROR2__(this->mUserLevel, 8);
  38495. SocketOutputStream::Write(&oStream->0, (const CHAR *)&UserLevel, 2u);
  38496. i = 0;
  38497. v3 = (const CHAR *)this->mAllMiBaoKey;
  38498. do
  38499. {
  38500. SocketOutputStream::Write(&oStream->0, v3, 2u);
  38501. ++i;
  38502. v3 += 3;
  38503. }
  38504. while ( i <= 2 );
  38505. i_0 = 0;
  38506. v4 = (const CHAR *)this->mAllMiBaoValue;
  38507. do
  38508. {
  38509. SocketOutputStream::Write(&oStream->0, v4, 2u);
  38510. ++i_0;
  38511. v4 += 3;
  38512. }
  38513. while ( i_0 <= 2 );
  38514. SocketOutputStream::Write(&oStream->0, this->mMacAddr, 0x20u);
  38515. SocketOutputStream::Write(&oStream->0, (const CHAR *)&this->mHWIDLength, 1u);
  38516. SocketOutputStream::Write(&oStream->0, this->mHWIDInfo, this->mHWIDLength);
  38517. return 1;
  38518. }
  38519.  
  38520. //----- (080711B8) --------------------------------------------------------
  38521. UINT __cdecl Packets::LBAccCheck::Execute(Packets::LBAccCheck *const this, Player *pPlayer)
  38522. {
  38523. return Packets::LBAccCheckHandler::Execute(this, pPlayer);
  38524. }
  38525.  
  38526. //----- (08071218) --------------------------------------------------------
  38527. void __cdecl _tcf_0_36(void *a1)
  38528. {
  38529. std::ios_base::Init::~Init(&std::__ioinit);
  38530. }
  38531.  
  38532. //----- (08071228) --------------------------------------------------------
  38533. void `global constructor keyed to'Packets::LBAccCheck::Read()
  38534. {
  38535. std::ios_base::Init::Init(&std::__ioinit);
  38536. __cxa_atexit(_tcf_0_36, 0, &_dso_handle);
  38537. }
  38538. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  38539.  
  38540. //----- (08071254) --------------------------------------------------------
  38541. void __cdecl Packets::LBAccCheck::~LBAccCheck(BillPacket *a2)
  38542. {
  38543. a2->_vptr_BillPacket = (int (**)(...))off_80CD408;
  38544. BillPacket::~BillPacket(a2);
  38545. }
  38546. // 80CD408: using guessed type _DWORD (__cdecl *off_80CD408[2])(Packets::LBAccCheck *this);
  38547.  
  38548. //----- (08071270) --------------------------------------------------------
  38549. void __cdecl Packets::LBAccCheck::~LBAccCheck(IPRegionTable *a2)
  38550. {
  38551. a2->_vptr_IPRegionTable = (int (**)(...))off_80CD408;
  38552. BillPacket::~BillPacket(a2);
  38553. operator delete(a2);
  38554. }
  38555. // 80CD408: using guessed type _DWORD (__cdecl *off_80CD408[2])(Packets::LBAccCheck *this);
  38556.  
  38557. //----- (08071298) --------------------------------------------------------
  38558. BPacketID_t __cdecl Packets::LBAccCheck::GetPacketID(const Packets::LBAccCheck *const this)
  38559. {
  38560. return -94;
  38561. }
  38562.  
  38563. //----- (080712A4) --------------------------------------------------------
  38564. UINT __fastcall Packets::LBAccCheck::GetPacketSize(const Packets::LBAccCheck *const this)
  38565. {
  38566. unsigned __int8 *v2; // [esp+8h] [ebp+8h]
  38567.  
  38568. return v2[93] + v2[59] + v2[7] + v2[163] + 50;
  38569. }
  38570.  
  38571. //----- (080712C8) --------------------------------------------------------
  38572. BOOL __cdecl Packets::LBAskAuth::Read(Packets::LBAskAuth *const this, SocketInputStream *const iStream)
  38573. {
  38574. CHAR *v2; // edi
  38575. CHAR *v3; // edi
  38576. INT i_0; // [esp+8h] [ebp-14h]
  38577. INT i; // [esp+Ch] [ebp-10h]
  38578.  
  38579. SocketInputStream::Read(iStream, this->szAccount, 0x32u);
  38580. SocketInputStream::Read(iStream, this->szPassWord, 0x20u);
  38581. SocketInputStream::Read(iStream, (CHAR *)&this->PlayerID, 2u);
  38582. SocketInputStream::Read(iStream, this->szIP, 0xFu);
  38583. i = 0;
  38584. v2 = (CHAR *)this->mAllMiBaoKey;
  38585. do
  38586. {
  38587. SocketInputStream::Read(iStream, v2, 2u);
  38588. ++i;
  38589. v2 += 3;
  38590. }
  38591. while ( i <= 2 );
  38592. i_0 = 0;
  38593. v3 = (CHAR *)this->mAllMiBaoValue;
  38594. do
  38595. {
  38596. SocketInputStream::Read(iStream, v3, 2u);
  38597. ++i_0;
  38598. v3 += 3;
  38599. }
  38600. while ( i_0 <= 2 );
  38601. SocketInputStream::Read(iStream, this->mMacAddr, 0x20u);
  38602. SocketInputStream::Read(iStream, this->mHWIDInfo, 0x23u);
  38603. return 1;
  38604. }
  38605.  
  38606. //----- (080713CC) --------------------------------------------------------
  38607. BOOL __cdecl Packets::LBAskAuth::Write(const Packets::LBAskAuth *const this, SocketOutputStream *const oStream)
  38608. {
  38609. const CHAR *v2; // edi
  38610. const CHAR *v3; // edi
  38611. INT i_0; // [esp+8h] [ebp-14h]
  38612. INT i; // [esp+Ch] [ebp-10h]
  38613.  
  38614. SocketOutputStream::Write(oStream, this->szAccount, 0x32u);
  38615. SocketOutputStream::Write(oStream, this->szPassWord, 0x20u);
  38616. SocketOutputStream::Write(oStream, (const CHAR *)&this->PlayerID, 2u);
  38617. SocketOutputStream::Write(oStream, this->szIP, 0xFu);
  38618. i = 0;
  38619. v2 = (const CHAR *)this->mAllMiBaoKey;
  38620. do
  38621. {
  38622. SocketOutputStream::Write(oStream, v2, 2u);
  38623. ++i;
  38624. v2 += 3;
  38625. }
  38626. while ( i <= 2 );
  38627. i_0 = 0;
  38628. v3 = (const CHAR *)this->mAllMiBaoValue;
  38629. do
  38630. {
  38631. SocketOutputStream::Write(oStream, v3, 2u);
  38632. ++i_0;
  38633. v3 += 3;
  38634. }
  38635. while ( i_0 <= 2 );
  38636. SocketOutputStream::Write(oStream, this->mMacAddr, 0x20u);
  38637. SocketOutputStream::Write(oStream, this->mHWIDInfo, 0x23u);
  38638. return 1;
  38639. }
  38640.  
  38641. //----- (080714D0) --------------------------------------------------------
  38642. UINT __cdecl Packets::LBAskAuth::Execute(Packets::LBAskAuth *const this, Player *pPlayer)
  38643. {
  38644. return Packets::LBAskAuthHandler::Execute(this, pPlayer);
  38645. }
  38646.  
  38647. //----- (08071530) --------------------------------------------------------
  38648. const CHAR *__cdecl Packets::LBAskAuth::GetAccount(const Packets::LBAskAuth *const this)
  38649. {
  38650. return this->szAccount;
  38651. }
  38652.  
  38653. //----- (0807153C) --------------------------------------------------------
  38654. void __cdecl Packets::LBAskAuth::SetAccount(Packets::LBAskAuth *const this, const CHAR *pAccount)
  38655. {
  38656. if ( !pAccount )
  38657. __assert__(
  38658. "../../Common/Packets/LBAskAuth.cpp",
  38659. 0x46u,
  38660. "void Packets::LBAskAuth::SetAccount(const CHAR*)",
  38661. "pAccount");
  38662. strncpy(this->szAccount, pAccount, 0x32u);
  38663. this->szAccount[50] = 0;
  38664. }
  38665.  
  38666. //----- (08071580) --------------------------------------------------------
  38667. const CHAR *__cdecl Packets::LBAskAuth::GetPassWord(const Packets::LBAskAuth *const this)
  38668. {
  38669. return this->szPassWord;
  38670. }
  38671.  
  38672. //----- (0807158C) --------------------------------------------------------
  38673. void __cdecl Packets::LBAskAuth::SetPassWord(Packets::LBAskAuth *const this, const CHAR *pPassWord)
  38674. {
  38675. if ( !pPassWord )
  38676. __assert__(
  38677. "../../Common/Packets/LBAskAuth.cpp",
  38678. 0x51u,
  38679. "void Packets::LBAskAuth::SetPassWord(const CHAR*)",
  38680. "pPassWord");
  38681. strncpy(this->szPassWord, pPassWord, 0x20u);
  38682. this->szPassWord[32] = 0;
  38683. }
  38684.  
  38685. //----- (080715D0) --------------------------------------------------------
  38686. int __cdecl Packets::LBAskAuth::GetPlayerID(int a2)
  38687. {
  38688. return *(signed __int16 *)(a2 + 112);
  38689. }
  38690.  
  38691. //----- (080715DC) --------------------------------------------------------
  38692. void __cdecl Packets::LBAskAuth::SetPlayerID(int pID, __int16 pIDa)
  38693. {
  38694. *(_WORD *)(pID + 112) = pIDa;
  38695. }
  38696.  
  38697. //----- (080715EC) --------------------------------------------------------
  38698. void __cdecl Packets::LBAskAuth::SetIPAddr(Packets::LBAskAuth *const this, const CHAR *pIP)
  38699. {
  38700. if ( !pIP )
  38701. __assert__("../../Common/Packets/LBAskAuth.cpp", 0x61u, "void Packets::LBAskAuth::SetIPAddr(const CHAR*)", "pIP");
  38702. strncpy(this->szIP, pIP, 0xFu);
  38703. this->szIP[15] = 0;
  38704. }
  38705.  
  38706. //----- (08071630) --------------------------------------------------------
  38707. const CHAR *__cdecl Packets::LBAskAuth::GetIPAddr(const Packets::LBAskAuth *const this)
  38708. {
  38709. return this->szIP;
  38710. }
  38711.  
  38712. //----- (0807163C) --------------------------------------------------------
  38713. const CHAR *__cdecl Packets::LBAskAuth::GetMacAddr(const Packets::LBAskAuth *const this)
  38714. {
  38715. return this->mMacAddr;
  38716. }
  38717.  
  38718. //----- (0807164C) --------------------------------------------------------
  38719. void __cdecl Packets::LBAskAuth::SetMacAddr(Packets::LBAskAuth *const this, CHAR *pMacMD5)
  38720. {
  38721. if ( !pMacMD5 )
  38722. __assert__("../../Common/Packets/LBAskAuth.cpp", 0x71u, "void Packets::LBAskAuth::SetMacAddr(CHAR*)", "pMacMD5");
  38723. strncpy(this->mMacAddr, pMacMD5, 0x20u);
  38724. this->mMacAddr[32] = 0;
  38725. }
  38726.  
  38727. //----- (08071694) --------------------------------------------------------
  38728. const CHAR *__cdecl Packets::LBAskAuth::GetHWIDInfo(const Packets::LBAskAuth *const this)
  38729. {
  38730. return this->mHWIDInfo;
  38731. }
  38732.  
  38733. //----- (080716A4) --------------------------------------------------------
  38734. void __cdecl Packets::LBAskAuth::SetHWIDInfo(Packets::LBAskAuth *const this, CHAR *pHWIDInfo)
  38735. {
  38736. if ( !pHWIDInfo )
  38737. __assert__("../../Common/Packets/LBAskAuth.cpp", 0x7Cu, "void Packets::LBAskAuth::SetHWIDInfo(CHAR*)", "pHWIDInfo");
  38738. strncpy(this->mHWIDInfo, pHWIDInfo, 0x23u);
  38739. this->mHWIDInfo[35] = 0;
  38740. }
  38741.  
  38742. //----- (080716EC) --------------------------------------------------------
  38743. void __cdecl _tcf_0_37(void *a1)
  38744. {
  38745. std::ios_base::Init::~Init(&std::__ioinit);
  38746. }
  38747.  
  38748. //----- (080716FC) --------------------------------------------------------
  38749. void `global constructor keyed to'Packets::LBAskAuth::Read()
  38750. {
  38751. std::ios_base::Init::Init(&std::__ioinit);
  38752. __cxa_atexit(_tcf_0_37, 0, &_dso_handle);
  38753. }
  38754. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  38755.  
  38756. //----- (08071728) --------------------------------------------------------
  38757. void __cdecl Packets::LBAskAuth::~LBAskAuth(Packet *a2)
  38758. {
  38759. a2->_vptr_Packet = (int (**)(...))off_80CD588;
  38760. Packet::~Packet(a2);
  38761. }
  38762. // 80CD588: using guessed type _DWORD (__cdecl *off_80CD588[2])(Packets::LBAskAuth *this);
  38763.  
  38764. //----- (08071744) --------------------------------------------------------
  38765. void __cdecl Packets::LBAskAuth::~LBAskAuth(IPRegionTable *a2)
  38766. {
  38767. a2->_vptr_IPRegionTable = (int (**)(...))off_80CD588;
  38768. Packet::~Packet(a2);
  38769. operator delete(a2);
  38770. }
  38771. // 80CD588: using guessed type _DWORD (__cdecl *off_80CD588[2])(Packets::LBAskAuth *this);
  38772.  
  38773. //----- (0807176C) --------------------------------------------------------
  38774. PacketID_t __cdecl Packets::LBAskAuth::GetPacketID(const Packets::LBAskAuth *const this)
  38775. {
  38776. return 23;
  38777. }
  38778.  
  38779. //----- (08071778) --------------------------------------------------------
  38780. UINT __cdecl Packets::LBAskAuth::GetPacketSize(const Packets::LBAskAuth *const this)
  38781. {
  38782. return 176;
  38783. }
  38784.  
  38785. //----- (08071784) --------------------------------------------------------
  38786. BOOL __cdecl Packets::LBAskRegAuth::Read(Packets::LBAskRegAuth *const this, SocketInputStream *const iStream)
  38787. {
  38788. SocketInputStream::Read(iStream, this->szAccount, 0x32u);
  38789. SocketInputStream::Read(iStream, this->szSuperPassWord, 0x20u);
  38790. SocketInputStream::Read(iStream, this->szPassWord, 0x20u);
  38791. SocketInputStream::Read(iStream, this->szIP, 0xFu);
  38792. SocketInputStream::Read(iStream, this->szEmail, 0xFFu);
  38793. SocketInputStream::Read(iStream, (CHAR *)&this->PlayerID, 2u);
  38794. return 1;
  38795. }
  38796.  
  38797. //----- (08071844) --------------------------------------------------------
  38798. BOOL __cdecl Packets::LBAskRegAuth::Write(const Packets::LBAskRegAuth *const this, SocketOutputStream *const oStream)
  38799. {
  38800. SocketOutputStream::Write(oStream, this->szAccount, 0x32u);
  38801. SocketOutputStream::Write(oStream, this->szSuperPassWord, 0x20u);
  38802. SocketOutputStream::Write(oStream, this->szPassWord, 0x20u);
  38803. SocketOutputStream::Write(oStream, this->szIP, 0xFu);
  38804. SocketOutputStream::Write(oStream, this->szEmail, 0xFFu);
  38805. SocketOutputStream::Write(oStream, (const CHAR *)&this->PlayerID, 2u);
  38806. return 1;
  38807. }
  38808.  
  38809. //----- (08071904) --------------------------------------------------------
  38810. UINT __cdecl Packets::LBAskRegAuth::Execute(Packets::LBAskRegAuth *const this, Player *pPlayer)
  38811. {
  38812. return Packets::LBAskRegAuthHandler::Execute(this, pPlayer);
  38813. }
  38814.  
  38815. //----- (08071964) --------------------------------------------------------
  38816. const CHAR *__cdecl Packets::LBAskRegAuth::GetAccount(const Packets::LBAskRegAuth *const this)
  38817. {
  38818. return this->szAccount;
  38819. }
  38820.  
  38821. //----- (08071970) --------------------------------------------------------
  38822. void __cdecl Packets::LBAskRegAuth::SetAccount(Packets::LBAskRegAuth *const this, const CHAR *pAccount)
  38823. {
  38824. if ( !pAccount )
  38825. __assert__(
  38826. "../../Common/Packets/LBAskRegAuth.cpp",
  38827. 0x37u,
  38828. "void Packets::LBAskRegAuth::SetAccount(const CHAR*)",
  38829. "pAccount");
  38830. strncpy(this->szAccount, pAccount, 0x32u);
  38831. this->szAccount[50] = 0;
  38832. }
  38833.  
  38834. //----- (080719B4) --------------------------------------------------------
  38835. const CHAR *__cdecl Packets::LBAskRegAuth::GetPassWord(const Packets::LBAskRegAuth *const this)
  38836. {
  38837. return this->szPassWord;
  38838. }
  38839.  
  38840. //----- (080719C0) --------------------------------------------------------
  38841. void __cdecl Packets::LBAskRegAuth::SetPassWord(Packets::LBAskRegAuth *const this, const CHAR *pPassWord)
  38842. {
  38843. if ( !pPassWord )
  38844. __assert__(
  38845. "../../Common/Packets/LBAskRegAuth.cpp",
  38846. 0x42u,
  38847. "void Packets::LBAskRegAuth::SetPassWord(const CHAR*)",
  38848. "pPassWord");
  38849. strncpy(this->szPassWord, pPassWord, 0x20u);
  38850. this->szPassWord[32] = 0;
  38851. }
  38852.  
  38853. //----- (08071A08) --------------------------------------------------------
  38854. int __cdecl Packets::LBAskRegAuth::GetPlayerID(int a2)
  38855. {
  38856. return *(signed __int16 *)(a2 + 402);
  38857. }
  38858.  
  38859. //----- (08071A18) --------------------------------------------------------
  38860. void __cdecl Packets::LBAskRegAuth::SetPlayerID(int pID, __int16 pIDa)
  38861. {
  38862. *(_WORD *)(pID + 402) = pIDa;
  38863. }
  38864.  
  38865. //----- (08071A2C) --------------------------------------------------------
  38866. const CHAR *__cdecl Packets::LBAskRegAuth::GetSuperPassWord(const Packets::LBAskRegAuth *const this)
  38867. {
  38868. return this->szSuperPassWord;
  38869. }
  38870.  
  38871. //----- (08071A38) --------------------------------------------------------
  38872. void __cdecl Packets::LBAskRegAuth::SetSuperPassWord(Packets::LBAskRegAuth *const this, const CHAR *pSuperPassWord)
  38873. {
  38874. if ( !pSuperPassWord )
  38875. __assert__(
  38876. "../../Common/Packets/LBAskRegAuth.cpp",
  38877. 0x57u,
  38878. "void Packets::LBAskRegAuth::SetSuperPassWord(const CHAR*)",
  38879. "pSuperPassWord");
  38880. strncpy(this->szSuperPassWord, pSuperPassWord, 0x20u);
  38881. this->szSuperPassWord[32] = 0;
  38882. }
  38883.  
  38884. //----- (08071A7C) --------------------------------------------------------
  38885. const CHAR *__cdecl Packets::LBAskRegAuth::GetIP(const Packets::LBAskRegAuth *const this)
  38886. {
  38887. return this->szIP;
  38888. }
  38889.  
  38890. //----- (08071A8C) --------------------------------------------------------
  38891. void __cdecl Packets::LBAskRegAuth::SetIP(Packets::LBAskRegAuth *const this, const CHAR *pIP)
  38892. {
  38893. if ( !pIP )
  38894. __assert__("../../Common/Packets/LBAskRegAuth.cpp", 0x63u, "void Packets::LBAskRegAuth::SetIP(const CHAR*)", "pIP");
  38895. strncpy(this->szIP, pIP, 0xFu);
  38896. this->szIP[15] = 0;
  38897. }
  38898.  
  38899. //----- (08071AD4) --------------------------------------------------------
  38900. const CHAR *__cdecl Packets::LBAskRegAuth::GetEmail(const Packets::LBAskRegAuth *const this)
  38901. {
  38902. return this->szEmail;
  38903. }
  38904.  
  38905. //----- (08071AE4) --------------------------------------------------------
  38906. void __cdecl Packets::LBAskRegAuth::SetEmail(Packets::LBAskRegAuth *const this, const CHAR *pEmail)
  38907. {
  38908. if ( !pEmail )
  38909. __assert__(
  38910. "../../Common/Packets/LBAskRegAuth.cpp",
  38911. 0x6Fu,
  38912. "void Packets::LBAskRegAuth::SetEmail(const CHAR*)",
  38913. "pEmail");
  38914. strncpy(this->szEmail, pEmail, 0xFFu);
  38915. this->szEmail[255] = 0;
  38916. }
  38917.  
  38918. //----- (08071B30) --------------------------------------------------------
  38919. void __cdecl _tcf_0_38(void *a1)
  38920. {
  38921. std::ios_base::Init::~Init(&std::__ioinit);
  38922. }
  38923.  
  38924. //----- (08071B40) --------------------------------------------------------
  38925. void `global constructor keyed to'Packets::LBAskRegAuth::Read()
  38926. {
  38927. std::ios_base::Init::Init(&std::__ioinit);
  38928. __cxa_atexit(_tcf_0_38, 0, &_dso_handle);
  38929. }
  38930. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  38931.  
  38932. //----- (08071B6C) --------------------------------------------------------
  38933. void __cdecl Packets::LBAskRegAuth::~LBAskRegAuth(Packet *a2)
  38934. {
  38935. a2->_vptr_Packet = (int (**)(...))off_80CD828;
  38936. Packet::~Packet(a2);
  38937. }
  38938. // 80CD828: using guessed type _DWORD (__cdecl *off_80CD828[2])(Packets::LBAskRegAuth *this);
  38939.  
  38940. //----- (08071B88) --------------------------------------------------------
  38941. void __cdecl Packets::LBAskRegAuth::~LBAskRegAuth(IPRegionTable *a2)
  38942. {
  38943. a2->_vptr_IPRegionTable = (int (**)(...))off_80CD828;
  38944. Packet::~Packet(a2);
  38945. operator delete(a2);
  38946. }
  38947. // 80CD828: using guessed type _DWORD (__cdecl *off_80CD828[2])(Packets::LBAskRegAuth *this);
  38948.  
  38949. //----- (08071BB0) --------------------------------------------------------
  38950. PacketID_t __cdecl Packets::LBAskRegAuth::GetPacketID(const Packets::LBAskRegAuth *const this)
  38951. {
  38952. return 194;
  38953. }
  38954.  
  38955. //----- (08071BBC) --------------------------------------------------------
  38956. UINT __cdecl Packets::LBAskRegAuth::GetPacketSize(const Packets::LBAskRegAuth *const this)
  38957. {
  38958. return 386;
  38959. }
  38960.  
  38961. //----- (08071BC8) --------------------------------------------------------
  38962. BOOL __cdecl Packets::LBBillingEnd::Read(Packets::LBBillingEnd *const this, SocketBillingInputStream *const iStream)
  38963. {
  38964. return 1;
  38965. }
  38966.  
  38967. //----- (08071BD4) --------------------------------------------------------
  38968. BOOL __cdecl Packets::LBBillingEnd::Write(const Packets::LBBillingEnd *const this, SocketBillingOutputStream *const oStream)
  38969. {
  38970. UINT v2; // eax
  38971. UINT v3; // eax
  38972. UINT EndTime; // [esp+8h] [ebp-14h]
  38973. UINT StartTime; // [esp+Ch] [ebp-10h]
  38974. USHORT CharLevel; // [esp+12h] [ebp-Ah]
  38975.  
  38976. SocketOutputStream::Write(&oStream->0, (const CHAR *)&this->mAccLength, 1u);
  38977. SocketOutputStream::Write(&oStream->0, this->mAccount, this->mAccLength);
  38978. CharLevel = __ROR2__(this->mCharLevel, 8);
  38979. SocketOutputStream::Write(&oStream->0, (const CHAR *)&CharLevel, 2u);
  38980. SocketOutputStream::Write(&oStream->0, (const CHAR *)&this->mEndType, 1u);
  38981. v2 = this->mStartTime;
  38982. LOWORD(v2) = __ROR2__(v2, 8);
  38983. v2 = __ROR4__(v2, 16);
  38984. LOWORD(v2) = __ROR2__(v2, 8);
  38985. StartTime = v2;
  38986. SocketOutputStream::Write(&oStream->0, (const CHAR *)&StartTime, 4u);
  38987. v3 = this->mEndTime;
  38988. LOWORD(v3) = __ROR2__(v3, 8);
  38989. v3 = __ROR4__(v3, 16);
  38990. LOWORD(v3) = __ROR2__(v3, 8);
  38991. EndTime = v3;
  38992. SocketOutputStream::Write(&oStream->0, (const CHAR *)&EndTime, 4u);
  38993. return 1;
  38994. }
  38995.  
  38996. //----- (08071CBC) --------------------------------------------------------
  38997. UINT __cdecl Packets::LBBillingEnd::Execute(Packets::LBBillingEnd *const this, Player *pPlayer)
  38998. {
  38999. return Packets::LBBillingEndHandler::Execute(this, pPlayer);
  39000. }
  39001.  
  39002. //----- (08071D1C) --------------------------------------------------------
  39003. void __cdecl _tcf_0_39(void *a1)
  39004. {
  39005. std::ios_base::Init::~Init(&std::__ioinit);
  39006. }
  39007.  
  39008. //----- (08071D2C) --------------------------------------------------------
  39009. void `global constructor keyed to'Packets::LBBillingEnd::Read()
  39010. {
  39011. std::ios_base::Init::Init(&std::__ioinit);
  39012. __cxa_atexit(_tcf_0_39, 0, &_dso_handle);
  39013. }
  39014. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  39015.  
  39016. //----- (08071D58) --------------------------------------------------------
  39017. void __cdecl Packets::LBBillingEnd::~LBBillingEnd(BillPacket *a2)
  39018. {
  39019. a2->_vptr_BillPacket = (int (**)(...))off_80CDAE8;
  39020. BillPacket::~BillPacket(a2);
  39021. }
  39022. // 80CDAE8: using guessed type _DWORD (__cdecl *off_80CDAE8[2])(Packets::LBBillingEnd *this);
  39023.  
  39024. //----- (08071D74) --------------------------------------------------------
  39025. void __cdecl Packets::LBBillingEnd::~LBBillingEnd(IPRegionTable *a2)
  39026. {
  39027. a2->_vptr_IPRegionTable = (int (**)(...))off_80CDAE8;
  39028. BillPacket::~BillPacket(a2);
  39029. operator delete(a2);
  39030. }
  39031. // 80CDAE8: using guessed type _DWORD (__cdecl *off_80CDAE8[2])(Packets::LBBillingEnd *this);
  39032.  
  39033. //----- (08071D9C) --------------------------------------------------------
  39034. BPacketID_t __cdecl Packets::LBBillingEnd::GetPacketID(const Packets::LBBillingEnd *const this)
  39035. {
  39036. return -92;
  39037. }
  39038.  
  39039. //----- (08071DA8) --------------------------------------------------------
  39040. int __cdecl Packets::LBBillingEnd::GetPacketSize(int a2)
  39041. {
  39042. return *(unsigned __int8 *)(a2 + 7) + 12;
  39043. }
  39044.  
  39045. //----- (08071DB8) --------------------------------------------------------
  39046. BOOL __cdecl Packets::LBBillingKeep::Read(Packets::LBBillingKeep *const this, SocketBillingInputStream *const iStream)
  39047. {
  39048. return 1;
  39049. }
  39050.  
  39051. //----- (08071DC4) --------------------------------------------------------
  39052. BOOL __cdecl Packets::LBBillingKeep::Write(const Packets::LBBillingKeep *const this, SocketBillingOutputStream *const oStream)
  39053. {
  39054. UINT v2; // eax
  39055. UINT v3; // eax
  39056. UINT EndTime; // [esp+8h] [ebp-14h]
  39057. UINT StartTime; // [esp+Ch] [ebp-10h]
  39058. USHORT CharLevel; // [esp+12h] [ebp-Ah]
  39059.  
  39060. SocketOutputStream::Write(&oStream->0, (const CHAR *)&this->mAccLength, 1u);
  39061. SocketOutputStream::Write(&oStream->0, this->mAccount, this->mAccLength);
  39062. CharLevel = __ROR2__(this->mCharLevel, 8);
  39063. SocketOutputStream::Write(&oStream->0, (const CHAR *)&CharLevel, 2u);
  39064. v2 = this->mStartTime;
  39065. LOWORD(v2) = __ROR2__(v2, 8);
  39066. v2 = __ROR4__(v2, 16);
  39067. LOWORD(v2) = __ROR2__(v2, 8);
  39068. StartTime = v2;
  39069. SocketOutputStream::Write(&oStream->0, (const CHAR *)&StartTime, 4u);
  39070. v3 = this->mEndTime;
  39071. LOWORD(v3) = __ROR2__(v3, 8);
  39072. v3 = __ROR4__(v3, 16);
  39073. LOWORD(v3) = __ROR2__(v3, 8);
  39074. EndTime = v3;
  39075. SocketOutputStream::Write(&oStream->0, (const CHAR *)&EndTime, 4u);
  39076. return 1;
  39077. }
  39078.  
  39079. //----- (08071E9C) --------------------------------------------------------
  39080. UINT __cdecl Packets::LBBillingKeep::Execute(Packets::LBBillingKeep *const this, Player *pPlayer)
  39081. {
  39082. return Packets::LBBillingKeepHandler::Execute(this, pPlayer);
  39083. }
  39084.  
  39085. //----- (08071EFC) --------------------------------------------------------
  39086. void __cdecl _tcf_0_40(void *a1)
  39087. {
  39088. std::ios_base::Init::~Init(&std::__ioinit);
  39089. }
  39090.  
  39091. //----- (08071F0C) --------------------------------------------------------
  39092. void `global constructor keyed to'Packets::LBBillingKeep::Read()
  39093. {
  39094. std::ios_base::Init::Init(&std::__ioinit);
  39095. __cxa_atexit(_tcf_0_40, 0, &_dso_handle);
  39096. }
  39097. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  39098.  
  39099. //----- (08071F38) --------------------------------------------------------
  39100. void __cdecl Packets::LBBillingKeep::~LBBillingKeep(BillPacket *a2)
  39101. {
  39102. a2->_vptr_BillPacket = (int (**)(...))off_80CDC68;
  39103. BillPacket::~BillPacket(a2);
  39104. }
  39105. // 80CDC68: using guessed type _DWORD (__cdecl *off_80CDC68[2])(Packets::LBBillingKeep *this);
  39106.  
  39107. //----- (08071F54) --------------------------------------------------------
  39108. void __cdecl Packets::LBBillingKeep::~LBBillingKeep(IPRegionTable *a2)
  39109. {
  39110. a2->_vptr_IPRegionTable = (int (**)(...))off_80CDC68;
  39111. BillPacket::~BillPacket(a2);
  39112. operator delete(a2);
  39113. }
  39114. // 80CDC68: using guessed type _DWORD (__cdecl *off_80CDC68[2])(Packets::LBBillingKeep *this);
  39115.  
  39116. //----- (08071F7C) --------------------------------------------------------
  39117. BPacketID_t __cdecl Packets::LBBillingKeep::GetPacketID(const Packets::LBBillingKeep *const this)
  39118. {
  39119. return -90;
  39120. }
  39121.  
  39122. //----- (08071F88) --------------------------------------------------------
  39123. int __cdecl Packets::LBBillingKeep::GetPacketSize(int a2)
  39124. {
  39125. return *(unsigned __int8 *)(a2 + 7) + 11;
  39126. }
  39127.  
  39128. //----- (08071F98) --------------------------------------------------------
  39129. BOOL __cdecl Packets::LBBillingStart::Read(Packets::LBBillingStart *const this, SocketBillingInputStream *const iStream)
  39130. {
  39131. return 1;
  39132. }
  39133.  
  39134. //----- (08071FA4) --------------------------------------------------------
  39135. BOOL __cdecl Packets::LBBillingStart::Write(const Packets::LBBillingStart *const this, SocketBillingOutputStream *const oStream)
  39136. {
  39137. const Packets::LBBillingStart *v2; // ebx
  39138. UINT v3; // eax
  39139. UINT v4; // eax
  39140. UINT StartTime; // [esp+8h] [ebp-14h]
  39141. USHORT CharLevel; // [esp+Eh] [ebp-Eh]
  39142. UINT guid; // [esp+10h] [ebp-Ch]
  39143.  
  39144. v2 = this;
  39145. SocketOutputStream::Write(&oStream->0, (const CHAR *)&this->mAccLength, 1u);
  39146. SocketOutputStream::Write(&oStream->0, v2->mAccount, v2->mAccLength);
  39147. SocketOutputStream::Write(&oStream->0, (const CHAR *)&this->mCharLength, 1u);
  39148. SocketOutputStream::Write(&oStream->0, v2->mCharName, v2->mCharLength);
  39149. v3 = this->mCharGUID;
  39150. LOWORD(v3) = __ROR2__(v3, 8);
  39151. v3 = __ROR4__(v3, 16);
  39152. LOWORD(v3) = __ROR2__(v3, 8);
  39153. guid = v3;
  39154. SocketOutputStream::Write(&oStream->0, (const CHAR *)&guid, 4u);
  39155. CharLevel = __ROR2__(this->mCharLevel, 8);
  39156. SocketOutputStream::Write(&oStream->0, (const CHAR *)&CharLevel, 2u);
  39157. v4 = this->mStartTime;
  39158. LOWORD(v4) = __ROR2__(v4, 8);
  39159. v4 = __ROR4__(v4, 16);
  39160. LOWORD(v4) = __ROR2__(v4, 8);
  39161. StartTime = v4;
  39162. SocketOutputStream::Write(&oStream->0, (const CHAR *)&StartTime, 4u);
  39163. return 1;
  39164. }
  39165.  
  39166. //----- (0807209C) --------------------------------------------------------
  39167. UINT __cdecl Packets::LBBillingStart::Execute(Packets::LBBillingStart *const this, Player *pPlayer)
  39168. {
  39169. return Packets::LBBillingStartHandler::Execute(this, pPlayer);
  39170. }
  39171.  
  39172. //----- (080720FC) --------------------------------------------------------
  39173. void __cdecl _tcf_0_41(void *a1)
  39174. {
  39175. std::ios_base::Init::~Init(&std::__ioinit);
  39176. }
  39177.  
  39178. //----- (0807210C) --------------------------------------------------------
  39179. void `global constructor keyed to'Packets::LBBillingStart::Read()
  39180. {
  39181. std::ios_base::Init::Init(&std::__ioinit);
  39182. __cxa_atexit(_tcf_0_41, 0, &_dso_handle);
  39183. }
  39184. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  39185.  
  39186. //----- (08072138) --------------------------------------------------------
  39187. void __cdecl Packets::LBBillingStart::~LBBillingStart(BillPacket *a2)
  39188. {
  39189. a2->_vptr_BillPacket = (int (**)(...))off_80CDDE8;
  39190. BillPacket::~BillPacket(a2);
  39191. }
  39192. // 80CDDE8: using guessed type _DWORD (__cdecl *off_80CDDE8[2])(Packets::LBBillingStart *this);
  39193.  
  39194. //----- (08072154) --------------------------------------------------------
  39195. void __cdecl Packets::LBBillingStart::~LBBillingStart(IPRegionTable *a2)
  39196. {
  39197. a2->_vptr_IPRegionTable = (int (**)(...))off_80CDDE8;
  39198. BillPacket::~BillPacket(a2);
  39199. operator delete(a2);
  39200. }
  39201. // 80CDDE8: using guessed type _DWORD (__cdecl *off_80CDDE8[2])(Packets::LBBillingStart *this);
  39202.  
  39203. //----- (0807217C) --------------------------------------------------------
  39204. BPacketID_t __cdecl Packets::LBBillingStart::GetPacketID(const Packets::LBBillingStart *const this)
  39205. {
  39206. return -93;
  39207. }
  39208.  
  39209. //----- (08072188) --------------------------------------------------------
  39210. int __cdecl Packets::LBBillingStart::GetPacketSize(int a2)
  39211. {
  39212. return *(unsigned __int8 *)(a2 + 7) + *(unsigned __int8 *)(a2 + 58) + 12;
  39213. }
  39214.  
  39215. //----- (0807219C) --------------------------------------------------------
  39216. BOOL __cdecl Packets::LBConnect::Read(Packets::LBConnect *const this, SocketBillingInputStream *const iStream)
  39217. {
  39218. BYTE v2; // al
  39219.  
  39220. SocketInputStream::Read(&iStream->0, (CHAR *)&this->mWorldID, 2u);
  39221. SocketInputStream::Read(&iStream->0, (CHAR *)&this->mIPSize, 1u);
  39222. v2 = this->mIPSize;
  39223. if ( v2 > 0xFu )
  39224. {
  39225. v2 = 15;
  39226. this->mIPSize = 15;
  39227. }
  39228. SocketInputStream::Read(&iStream->0, this->mIP, v2);
  39229. return 1;
  39230. }
  39231.  
  39232. //----- (08072238) --------------------------------------------------------
  39233. #error "80722DC: positive sp value has been found (funcsize=52)"
  39234.  
  39235. //----- (08072310) --------------------------------------------------------
  39236. UINT __cdecl Packets::LBConnect::Execute(Packets::LBConnect *const this, Player *pPlayer)
  39237. {
  39238. return Packets::LBConnectHandler::Execute(this, pPlayer);
  39239. }
  39240.  
  39241. //----- (08072370) --------------------------------------------------------
  39242. void __cdecl _tcf_0_42(void *a1)
  39243. {
  39244. std::ios_base::Init::~Init(&std::__ioinit);
  39245. }
  39246.  
  39247. //----- (08072380) --------------------------------------------------------
  39248. void `global constructor keyed to'Packets::LBConnect::Read()
  39249. {
  39250. std::ios_base::Init::Init(&std::__ioinit);
  39251. __cxa_atexit(_tcf_0_42, 0, &_dso_handle);
  39252. }
  39253. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  39254.  
  39255. //----- (080723AC) --------------------------------------------------------
  39256. void __cdecl Packets::LBConnect::~LBConnect(BillPacket *a2)
  39257. {
  39258. a2->_vptr_BillPacket = (int (**)(...))off_80CDF68;
  39259. BillPacket::~BillPacket(a2);
  39260. }
  39261. // 80CDF68: using guessed type _DWORD (__cdecl *off_80CDF68[2])(Packets::LBConnect *this);
  39262.  
  39263. //----- (080723C8) --------------------------------------------------------
  39264. void __cdecl Packets::LBConnect::~LBConnect(IPRegionTable *a2)
  39265. {
  39266. a2->_vptr_IPRegionTable = (int (**)(...))off_80CDF68;
  39267. BillPacket::~BillPacket(a2);
  39268. operator delete(a2);
  39269. }
  39270. // 80CDF68: using guessed type _DWORD (__cdecl *off_80CDF68[2])(Packets::LBConnect *this);
  39271.  
  39272. //----- (080723F0) --------------------------------------------------------
  39273. BPacketID_t __cdecl Packets::LBConnect::GetPacketID(const Packets::LBConnect *const this)
  39274. {
  39275. return -96;
  39276. }
  39277.  
  39278. //----- (080723FC) --------------------------------------------------------
  39279. int __cdecl Packets::LBConnect::GetPacketSize(int a2)
  39280. {
  39281. return *(unsigned __int8 *)(a2 + 12) + 5;
  39282. }
  39283.  
  39284. //----- (0807240C) --------------------------------------------------------
  39285. BOOL __cdecl Packets::LBKeepLive::Read(Packets::LBKeepLive *const this, SocketBillingInputStream *const iStream)
  39286. {
  39287. SocketInputStream::Read(&iStream->0, (CHAR *)&this->mWorldID, 2u);
  39288. SocketInputStream::Read(&iStream->0, (CHAR *)&this->mPlayerCount, 2u);
  39289. return 1;
  39290. }
  39291.  
  39292. //----- (08072488) --------------------------------------------------------
  39293. BOOL __cdecl Packets::LBKeepLive::Write(const Packets::LBKeepLive *const this, SocketBillingOutputStream *const oStream)
  39294. {
  39295. USHORT playercount; // [esp+Eh] [ebp-Eh]
  39296. USHORT worldid; // [esp+10h] [ebp-Ch]
  39297. USHORT zoneid; // [esp+12h] [ebp-Ah]
  39298.  
  39299. zoneid = __ROR2__(this->mZoneID, 8);
  39300. SocketOutputStream::Write(&oStream->0, (const CHAR *)&zoneid, 2u);
  39301. worldid = __ROR2__(this->mWorldID, 8);
  39302. SocketOutputStream::Write(&oStream->0, (const CHAR *)&worldid, 2u);
  39303. playercount = __ROR2__(this->mPlayerCount, 8);
  39304. SocketOutputStream::Write(&oStream->0, (const CHAR *)&playercount, 2u);
  39305. return 1;
  39306. }
  39307.  
  39308. //----- (08072538) --------------------------------------------------------
  39309. UINT __cdecl Packets::LBKeepLive::Execute(Packets::LBKeepLive *const this, Player *pPlayer)
  39310. {
  39311. return Packets::LBKeepLiveHandler::Execute(this, pPlayer);
  39312. }
  39313.  
  39314. //----- (08072598) --------------------------------------------------------
  39315. void __cdecl _tcf_0_43(void *a1)
  39316. {
  39317. std::ios_base::Init::~Init(&std::__ioinit);
  39318. }
  39319.  
  39320. //----- (080725A8) --------------------------------------------------------
  39321. void `global constructor keyed to'Packets::LBKeepLive::Read()
  39322. {
  39323. std::ios_base::Init::Init(&std::__ioinit);
  39324. __cxa_atexit(_tcf_0_43, 0, &_dso_handle);
  39325. }
  39326. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  39327.  
  39328. //----- (080725D4) --------------------------------------------------------
  39329. void __cdecl Packets::LBKeepLive::~LBKeepLive(BillPacket *a2)
  39330. {
  39331. a2->_vptr_BillPacket = (int (**)(...))off_80CE0E8;
  39332. BillPacket::~BillPacket(a2);
  39333. }
  39334. // 80CE0E8: using guessed type _DWORD (__cdecl *off_80CE0E8[2])(Packets::LBKeepLive *this);
  39335.  
  39336. //----- (080725F0) --------------------------------------------------------
  39337. void __cdecl Packets::LBKeepLive::~LBKeepLive(IPRegionTable *a2)
  39338. {
  39339. a2->_vptr_IPRegionTable = (int (**)(...))off_80CE0E8;
  39340. BillPacket::~BillPacket(a2);
  39341. operator delete(a2);
  39342. }
  39343. // 80CE0E8: using guessed type _DWORD (__cdecl *off_80CE0E8[2])(Packets::LBKeepLive *this);
  39344.  
  39345. //----- (08072618) --------------------------------------------------------
  39346. BPacketID_t __cdecl Packets::LBKeepLive::GetPacketID(const Packets::LBKeepLive *const this)
  39347. {
  39348. return -95;
  39349. }
  39350.  
  39351. //----- (08072624) --------------------------------------------------------
  39352. UINT __cdecl Packets::LBKeepLive::GetPacketSize(const Packets::LBKeepLive *const this)
  39353. {
  39354. return 6;
  39355. }
  39356.  
  39357. //----- (08072630) --------------------------------------------------------
  39358. BOOL __cdecl Packets::LBKickAll::Read(Packets::LBKickAll *const this, SocketBillingInputStream *const iStream)
  39359. {
  39360. return 1;
  39361. }
  39362.  
  39363. //----- (0807263C) --------------------------------------------------------
  39364. BOOL __cdecl Packets::LBKickAll::Write(const Packets::LBKickAll *const this, SocketBillingOutputStream *const oStream)
  39365. {
  39366. const Packets::LBKickAll *v2; // ebx
  39367. USHORT worldid; // [esp+10h] [ebp-Ch]
  39368. USHORT zoneid; // [esp+12h] [ebp-Ah]
  39369.  
  39370. v2 = this;
  39371. zoneid = __ROR2__(this->mZoneID, 8);
  39372. SocketOutputStream::Write(&oStream->0, (const CHAR *)&zoneid, 2u);
  39373. worldid = __ROR2__(this->mWorldID, 8);
  39374. SocketOutputStream::Write(&oStream->0, (const CHAR *)&worldid, 2u);
  39375. SocketOutputStream::Write(&oStream->0, (const CHAR *)&this->mReasonLength, 1u);
  39376. SocketOutputStream::Write(&oStream->0, v2->mReason, v2->mReasonLength);
  39377. SocketOutputStream::Write(&oStream->0, (const CHAR *)&this->mExtInfo1Length, 1u);
  39378. SocketOutputStream::Write(&oStream->0, v2->mExtInfo1, v2->mExtInfo1Length);
  39379. SocketOutputStream::Write(&oStream->0, (const CHAR *)&this->mExtInfo2Length, 1u);
  39380. SocketOutputStream::Write(&oStream->0, v2->mExtInfo2, v2->mExtInfo2Length);
  39381. SocketOutputStream::Write(&oStream->0, (const CHAR *)&this->mExtInfo3Length, 1u);
  39382. SocketOutputStream::Write(&oStream->0, v2->mExtInfo3, v2->mExtInfo3Length);
  39383. return 1;
  39384. }
  39385.  
  39386. //----- (08072750) --------------------------------------------------------
  39387. UINT __cdecl Packets::LBKickAll::Execute(Packets::LBKickAll *const this, Player *pPlayer)
  39388. {
  39389. return Packets::LBKickAllHandler::Execute(this, pPlayer);
  39390. }
  39391.  
  39392. //----- (080727B0) --------------------------------------------------------
  39393. void __cdecl _tcf_0_44(void *a1)
  39394. {
  39395. std::ios_base::Init::~Init(&std::__ioinit);
  39396. }
  39397.  
  39398. //----- (080727C0) --------------------------------------------------------
  39399. void `global constructor keyed to'Packets::LBKickAll::Read()
  39400. {
  39401. std::ios_base::Init::Init(&std::__ioinit);
  39402. __cxa_atexit(_tcf_0_44, 0, &_dso_handle);
  39403. }
  39404. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  39405.  
  39406. //----- (080727EC) --------------------------------------------------------
  39407. void __cdecl Packets::LBKickAll::~LBKickAll(BillPacket *a2)
  39408. {
  39409. a2->_vptr_BillPacket = (int (**)(...))off_80CE268;
  39410. BillPacket::~BillPacket(a2);
  39411. }
  39412. // 80CE268: using guessed type _DWORD (__cdecl *off_80CE268[2])(Packets::LBKickAll *this);
  39413.  
  39414. //----- (08072808) --------------------------------------------------------
  39415. void __cdecl Packets::LBKickAll::~LBKickAll(IPRegionTable *a2)
  39416. {
  39417. a2->_vptr_IPRegionTable = (int (**)(...))off_80CE268;
  39418. BillPacket::~BillPacket(a2);
  39419. operator delete(a2);
  39420. }
  39421. // 80CE268: using guessed type _DWORD (__cdecl *off_80CE268[2])(Packets::LBKickAll *this);
  39422.  
  39423. //----- (08072830) --------------------------------------------------------
  39424. BPacketID_t __cdecl Packets::LBKickAll::GetPacketID(const Packets::LBKickAll *const this)
  39425. {
  39426. return -87;
  39427. }
  39428.  
  39429. //----- (0807283C) --------------------------------------------------------
  39430. UINT __fastcall Packets::LBKickAll::GetPacketSize(const Packets::LBKickAll *const this)
  39431. {
  39432. unsigned __int8 *v2; // [esp+8h] [ebp+8h]
  39433.  
  39434. return v2[78] + v2[45] + v2[12] + v2[111] + 8;
  39435. }
  39436.  
  39437. //----- (0807285C) --------------------------------------------------------
  39438. BOOL __cdecl Packets::LBRegPassPort::Read(Packets::LBRegPassPort *const this, SocketBillingInputStream *const iStream)
  39439. {
  39440. return 1;
  39441. }
  39442.  
  39443. //----- (08072868) --------------------------------------------------------
  39444. BOOL __cdecl Packets::LBRegPassPort::Write(const Packets::LBRegPassPort *const this, SocketBillingOutputStream *const oStream)
  39445. {
  39446. const Packets::LBRegPassPort *v2; // ebx
  39447. USHORT oL; // [esp+Eh] [ebp-Eh]
  39448.  
  39449. v2 = this;
  39450. SocketOutputStream::Write(&oStream->0, (const CHAR *)&this->mAccLength, 1u);
  39451. SocketOutputStream::Write(&oStream->0, v2->mAccount, v2->mAccLength);
  39452. SocketOutputStream::Write(&oStream->0, (const CHAR *)&this->mSuperPwLength, 1u);
  39453. SocketOutputStream::Write(&oStream->0, v2->mSuperPw, v2->mSuperPwLength);
  39454. SocketOutputStream::Write(&oStream->0, (const CHAR *)&this->mPwLength, 1u);
  39455. SocketOutputStream::Write(&oStream->0, v2->mPwMd5, v2->mPwLength);
  39456. SocketOutputStream::Write(&oStream->0, (const CHAR *)&this->mIPLength, 1u);
  39457. SocketOutputStream::Write(&oStream->0, v2->mIP, v2->mIPLength);
  39458. SocketOutputStream::Write(&oStream->0, (const CHAR *)&this->mEmailLength, 1u);
  39459. SocketOutputStream::Write(&oStream->0, v2->mEmail, v2->mEmailLength);
  39460. oL = __ROR2__(this->mOtherInfo1Length, 8);
  39461. SocketOutputStream::Write(&oStream->0, (const CHAR *)&oL, 2u);
  39462. SocketOutputStream::Write(&oStream->0, v2->mOtherInfo1, v2->mOtherInfo1Length);
  39463. oL = __ROR2__(this->mOtherInfo2Length, 8);
  39464. SocketOutputStream::Write(&oStream->0, (const CHAR *)&oL, 2u);
  39465. SocketOutputStream::Write(&oStream->0, v2->mOtherInfo2, v2->mOtherInfo2Length);
  39466. oL = __ROR2__(this->mOtherInfo3Length, 8);
  39467. SocketOutputStream::Write(&oStream->0, (const CHAR *)&oL, 2u);
  39468. SocketOutputStream::Write(&oStream->0, v2->mOtherInfo3, v2->mOtherInfo3Length);
  39469. return 1;
  39470. }
  39471.  
  39472. //----- (08072A10) --------------------------------------------------------
  39473. UINT __cdecl Packets::LBRegPassPort::Execute(Packets::LBRegPassPort *const this, Player *pPlayer)
  39474. {
  39475. return Packets::LBRegPassPortHandler::Execute(this, pPlayer);
  39476. }
  39477.  
  39478. //----- (08072A70) --------------------------------------------------------
  39479. void __cdecl _tcf_0_45(void *a1)
  39480. {
  39481. std::ios_base::Init::~Init(&std::__ioinit);
  39482. }
  39483.  
  39484. //----- (08072A80) --------------------------------------------------------
  39485. void `global constructor keyed to'Packets::LBRegPassPort::Read()
  39486. {
  39487. std::ios_base::Init::Init(&std::__ioinit);
  39488. __cxa_atexit(_tcf_0_45, 0, &_dso_handle);
  39489. }
  39490. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  39491.  
  39492. //----- (08072AAC) --------------------------------------------------------
  39493. void __cdecl Packets::LBRegPassPort::~LBRegPassPort(BillPacket *a2)
  39494. {
  39495. a2->_vptr_BillPacket = (int (**)(...))off_80CE3E8;
  39496. BillPacket::~BillPacket(a2);
  39497. }
  39498. // 80CE3E8: using guessed type _DWORD (__cdecl *off_80CE3E8[2])(Packets::LBRegPassPort *this);
  39499.  
  39500. //----- (08072AC8) --------------------------------------------------------
  39501. void __cdecl Packets::LBRegPassPort::~LBRegPassPort(IPRegionTable *a2)
  39502. {
  39503. a2->_vptr_IPRegionTable = (int (**)(...))off_80CE3E8;
  39504. BillPacket::~BillPacket(a2);
  39505. operator delete(a2);
  39506. }
  39507. // 80CE3E8: using guessed type _DWORD (__cdecl *off_80CE3E8[2])(Packets::LBRegPassPort *this);
  39508.  
  39509. //----- (08072AF0) --------------------------------------------------------
  39510. BPacketID_t __cdecl Packets::LBRegPassPort::GetPacketID(const Packets::LBRegPassPort *const this)
  39511. {
  39512. return -15;
  39513. }
  39514.  
  39515. //----- (08072AFC) --------------------------------------------------------
  39516. UINT __fastcall Packets::LBRegPassPort::GetPacketSize(const Packets::LBRegPassPort *const this)
  39517. {
  39518. int v2; // [esp+8h] [ebp+8h]
  39519.  
  39520. return *(unsigned __int16 *)(v2 + 438)
  39521. + *(unsigned __int16 *)(v2 + 402)
  39522. + *(unsigned __int8 *)(v2 + 144)
  39523. + *(unsigned __int8 *)(v2 + 127)
  39524. + *(unsigned __int8 *)(v2 + 93)
  39525. + *(unsigned __int8 *)(v2 + 59)
  39526. + *(unsigned __int8 *)(v2 + 7)
  39527. + *(unsigned __int16 *)(v2 + 474)
  39528. + 11;
  39529. }
  39530.  
  39531. //----- (08072B40) --------------------------------------------------------
  39532. BOOL __cdecl Packets::LCRetCharList::Read(Packets::LCRetCharList *const this, SocketInputStream *const iStream)
  39533. {
  39534. return 1;
  39535. }
  39536.  
  39537. //----- (08072B4C) --------------------------------------------------------
  39538. BOOL __cdecl Packets::LCRetCharList::Write(const Packets::LCRetCharList *const this, SocketOutputStream *const oStream)
  39539. {
  39540. char *v2; // ebx
  39541. int v3; // eax
  39542. unsigned int v4; // edi
  39543. DB_CHAR_BASE_INFO *v5; // esi
  39544. int v6; // ebx
  39545. char tempMemory[65536]; // [esp+14h] [ebp-10018h]
  39546.  
  39547. memset(tempMemory, 0, 0x10000u);
  39548. *(_DWORD *)tempMemory = this->Result;
  39549. v2 = &tempMemory[4];
  39550. if ( this->Result == ASKCHARLIST_SUCCESS )
  39551. {
  39552. qmemcpy(&tempMemory[4], this->szAccount, 0x32u);
  39553. v3 = this->uCharNumber;
  39554. if ( (unsigned __int8)v3 > 5u )
  39555. __assert__(
  39556. "../../Common/Packets/LCRetCharList.cpp",
  39557. 0x51u,
  39558. "virtual BOOL Packets::LCRetCharList::Write(SocketOutputStream&) const",
  39559. "FALSE");
  39560. v4 = 0;
  39561. tempMemory[54] = this->uCharNumber;
  39562. v2 = &tempMemory[55];
  39563. if ( (_BYTE)v3 )
  39564. {
  39565. v5 = this->CharList;
  39566. do
  39567. {
  39568. memcpy(v2, v5, 0x124u);
  39569. ++v4;
  39570. v2 += 292;
  39571. ++v5;
  39572. }
  39573. while ( this->uCharNumber > v4 );
  39574. }
  39575. }
  39576. v6 = v2 - tempMemory;
  39577. Seraph::Encrypt_1_S(tempMemory, v6);
  39578. SocketOutputStream::Write(oStream, tempMemory, v6 + 8);
  39579. return 1;
  39580. }
  39581.  
  39582. //----- (08072CD4) --------------------------------------------------------
  39583. UINT __cdecl Packets::LCRetCharList::Execute(Packets::LCRetCharList *const this, Player *pPlayer)
  39584. {
  39585. return Packets::LCRetCharListHandler::Execute(this, pPlayer);
  39586. }
  39587.  
  39588. //----- (08072D34) --------------------------------------------------------
  39589. ASKCHARLIST_RESULT __cdecl Packets::LCRetCharList::GetResult(int a2)
  39590. {
  39591. return *(_DWORD *)(a2 + 12);
  39592. }
  39593.  
  39594. //----- (08072D40) --------------------------------------------------------
  39595. const CHAR *__cdecl Packets::LCRetCharList::GetAccount(const Packets::LCRetCharList *const this)
  39596. {
  39597. return this->szAccount;
  39598. }
  39599.  
  39600. //----- (08072D50) --------------------------------------------------------
  39601. void __cdecl Packets::LCRetCharList::SetAccount(Packets::LCRetCharList *const this, const CHAR *pAccount)
  39602. {
  39603. if ( !pAccount )
  39604. __assert__(
  39605. "../../Common/Packets/LCRetCharList.cpp",
  39606. 0xA4u,
  39607. "void Packets::LCRetCharList::SetAccount(const CHAR*)",
  39608. "pAccount");
  39609. strncpy(this->szAccount, pAccount, 0x32u);
  39610. this->szAccount[50] = 0;
  39611. }
  39612.  
  39613. //----- (08072D9C) --------------------------------------------------------
  39614. void __cdecl Packets::LCRetCharList::SetResult(int a3, int a4)
  39615. {
  39616. *(_DWORD *)(a3 + 12) = a4;
  39617. }
  39618.  
  39619. //----- (08072DAC) --------------------------------------------------------
  39620. void __cdecl _tcf_0_46(void *a1)
  39621. {
  39622. std::ios_base::Init::~Init(&std::__ioinit);
  39623. }
  39624.  
  39625. //----- (08072DBC) --------------------------------------------------------
  39626. void `global constructor keyed to'Packets::LCRetCharList::Read()
  39627. {
  39628. std::ios_base::Init::Init(&std::__ioinit);
  39629. __cxa_atexit(_tcf_0_46, 0, &_dso_handle);
  39630. }
  39631. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  39632.  
  39633. //----- (08072DE8) --------------------------------------------------------
  39634. void __cdecl Packets::LCRetCharList::~LCRetCharList(Packet *a2)
  39635. {
  39636. a2->_vptr_Packet = (int (**)(...))off_80CE568;
  39637. Packet::~Packet(a2);
  39638. }
  39639. // 80CE568: using guessed type _DWORD (__cdecl *off_80CE568[2])(Packets::LCRetCharList *this);
  39640.  
  39641. //----- (08072E04) --------------------------------------------------------
  39642. void __cdecl Packets::LCRetCharList::~LCRetCharList(IPRegionTable *a2)
  39643. {
  39644. a2->_vptr_IPRegionTable = (int (**)(...))off_80CE568;
  39645. Packet::~Packet(a2);
  39646. operator delete(a2);
  39647. }
  39648. // 80CE568: using guessed type _DWORD (__cdecl *off_80CE568[2])(Packets::LCRetCharList *this);
  39649.  
  39650. //----- (08072E2C) --------------------------------------------------------
  39651. PacketID_t __cdecl Packets::LCRetCharList::GetPacketID(const Packets::LCRetCharList *const this)
  39652. {
  39653. return 622;
  39654. }
  39655.  
  39656. //----- (08072E38) --------------------------------------------------------
  39657. UINT __cdecl Packets::LCRetCharList::GetPacketSize(const Packets::LCRetCharList *const this)
  39658. {
  39659. UINT result; // eax
  39660.  
  39661. result = 12;
  39662. if ( this->Result == ASKCHARLIST_SUCCESS )
  39663. result = 292 * this->uCharNumber + 63;
  39664. return result;
  39665. }
  39666.  
  39667. //----- (08072E60) --------------------------------------------------------
  39668. BOOL __cdecl Packets::LCRetCharLogin::Read(Packets::LCRetCharLogin *const this, SocketInputStream *const iStream)
  39669. {
  39670. SocketInputStream::Read(iStream, (CHAR *)&this->Result, 4u);
  39671. SocketInputStream::Read(iStream, (CHAR *)&this->ServerPort, 4u);
  39672. SocketInputStream::Read(iStream, this->ServerIP, 0x18u);
  39673. SocketInputStream::Read(iStream, (CHAR *)&this->Key, 4u);
  39674. SocketInputStream::Read(iStream, (CHAR *)&this->WorldID, 1u);
  39675. SocketInputStream::Read(iStream, (CHAR *)&this->ZoneID, 4u);
  39676. return 1;
  39677. }
  39678.  
  39679. //----- (08072F14) --------------------------------------------------------
  39680. BOOL __cdecl Packets::LCRetCharLogin::Write(const Packets::LCRetCharLogin *const this, SocketOutputStream *const oStream)
  39681. {
  39682. SocketOutputStream::Write(oStream, (const CHAR *)&this->Result, 4u);
  39683. SocketOutputStream::Write(oStream, (const CHAR *)&this->ServerPort, 4u);
  39684. SocketOutputStream::Write(oStream, this->ServerIP, 0x18u);
  39685. SocketOutputStream::Write(oStream, (const CHAR *)&this->Key, 4u);
  39686. SocketOutputStream::Write(oStream, (const CHAR *)&this->WorldID, 1u);
  39687. SocketOutputStream::Write(oStream, (const CHAR *)&this->ZoneID, 4u);
  39688. return 1;
  39689. }
  39690.  
  39691. //----- (08072FC8) --------------------------------------------------------
  39692. UINT __cdecl Packets::LCRetCharLogin::Execute(Packets::LCRetCharLogin *const this, Player *pPlayer)
  39693. {
  39694. return Packets::LCRetCharLoginHandler::Execute(this, pPlayer);
  39695. }
  39696.  
  39697. //----- (08073028) --------------------------------------------------------
  39698. void __cdecl _tcf_0_47(void *a1)
  39699. {
  39700. std::ios_base::Init::~Init(&std::__ioinit);
  39701. }
  39702.  
  39703. //----- (08073038) --------------------------------------------------------
  39704. void `global constructor keyed to'Packets::LCRetCharLogin::Read()
  39705. {
  39706. std::ios_base::Init::Init(&std::__ioinit);
  39707. __cxa_atexit(_tcf_0_47, 0, &_dso_handle);
  39708. }
  39709. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  39710.  
  39711. //----- (08073064) --------------------------------------------------------
  39712. void __cdecl Packets::LCRetCharLogin::~LCRetCharLogin(Packet *a2)
  39713. {
  39714. a2->_vptr_Packet = (int (**)(...))off_80CE708;
  39715. Packet::~Packet(a2);
  39716. }
  39717. // 80CE708: using guessed type _DWORD (__cdecl *off_80CE708[2])(Packets::LCRetCharLogin *this);
  39718.  
  39719. //----- (08073080) --------------------------------------------------------
  39720. void __cdecl Packets::LCRetCharLogin::~LCRetCharLogin(IPRegionTable *a2)
  39721. {
  39722. a2->_vptr_IPRegionTable = (int (**)(...))off_80CE708;
  39723. Packet::~Packet(a2);
  39724. operator delete(a2);
  39725. }
  39726. // 80CE708: using guessed type _DWORD (__cdecl *off_80CE708[2])(Packets::LCRetCharLogin *this);
  39727.  
  39728. //----- (080730A8) --------------------------------------------------------
  39729. PacketID_t __cdecl Packets::LCRetCharLogin::GetPacketID(const Packets::LCRetCharLogin *const this)
  39730. {
  39731. return 346;
  39732. }
  39733.  
  39734. //----- (080730B4) --------------------------------------------------------
  39735. UINT __cdecl Packets::LCRetCharLogin::GetPacketSize(const Packets::LCRetCharLogin *const this)
  39736. {
  39737. return 41;
  39738. }
  39739.  
  39740. //----- (080730C0) --------------------------------------------------------
  39741. BOOL __cdecl Packets::LCRetConnect::Read(Packets::LCRetConnect *const this, SocketInputStream *const iStream)
  39742. {
  39743. SocketInputStream::Read(iStream, (CHAR *)&this->Result, 4u);
  39744. SocketInputStream::Read(iStream, (CHAR *)&this->LoginPort, 4u);
  39745. SocketInputStream::Read(iStream, this->LoginIP, 0x18u);
  39746. SocketInputStream::Read(iStream, (CHAR *)&this->MyWANPort, 4u);
  39747. SocketInputStream::Read(iStream, this->MyWANIP, 0x18u);
  39748. SocketInputStream::Read(iStream, (CHAR *)this->mAllMiBaoKey, 9u);
  39749. return 1;
  39750. }
  39751.  
  39752. //----- (08073174) --------------------------------------------------------
  39753. BOOL __cdecl Packets::LCRetConnect::Write(const Packets::LCRetConnect *const this, SocketOutputStream *const oStream)
  39754. {
  39755. SocketOutputStream::Write(oStream, (const CHAR *)&this->Result, 4u);
  39756. SocketOutputStream::Write(oStream, (const CHAR *)&this->LoginPort, 4u);
  39757. SocketOutputStream::Write(oStream, this->LoginIP, 0x18u);
  39758. SocketOutputStream::Write(oStream, (const CHAR *)&this->MyWANPort, 4u);
  39759. SocketOutputStream::Write(oStream, this->MyWANIP, 0x18u);
  39760. SocketOutputStream::Write(oStream, (const CHAR *)this->mAllMiBaoKey, 9u);
  39761. return 1;
  39762. }
  39763.  
  39764. //----- (08073228) --------------------------------------------------------
  39765. UINT __cdecl Packets::LCRetConnect::Execute(Packets::LCRetConnect *const this, Player *pPlayer)
  39766. {
  39767. return Packets::LCRetConnectHandler::Execute(this, pPlayer);
  39768. }
  39769.  
  39770. //----- (08073288) --------------------------------------------------------
  39771. void __cdecl _tcf_0_48(void *a1)
  39772. {
  39773. std::ios_base::Init::~Init(&std::__ioinit);
  39774. }
  39775.  
  39776. //----- (08073298) --------------------------------------------------------
  39777. void `global constructor keyed to'Packets::LCRetConnect::Read()
  39778. {
  39779. std::ios_base::Init::Init(&std::__ioinit);
  39780. __cxa_atexit(_tcf_0_48, 0, &_dso_handle);
  39781. }
  39782. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  39783.  
  39784. //----- (080732C4) --------------------------------------------------------
  39785. void __cdecl Packets::LCRetConnect::~LCRetConnect(Packet *a2)
  39786. {
  39787. a2->_vptr_Packet = (int (**)(...))off_80CE868;
  39788. Packet::~Packet(a2);
  39789. }
  39790. // 80CE868: using guessed type _DWORD (__cdecl *off_80CE868[2])(Packets::LCRetConnect *this);
  39791.  
  39792. //----- (080732E0) --------------------------------------------------------
  39793. void __cdecl Packets::LCRetConnect::~LCRetConnect(IPRegionTable *a2)
  39794. {
  39795. a2->_vptr_IPRegionTable = (int (**)(...))off_80CE868;
  39796. Packet::~Packet(a2);
  39797. operator delete(a2);
  39798. }
  39799. // 80CE868: using guessed type _DWORD (__cdecl *off_80CE868[2])(Packets::LCRetConnect *this);
  39800.  
  39801. //----- (08073308) --------------------------------------------------------
  39802. PacketID_t __cdecl Packets::LCRetConnect::GetPacketID(const Packets::LCRetConnect *const this)
  39803. {
  39804. return 311;
  39805. }
  39806.  
  39807. //----- (08073314) --------------------------------------------------------
  39808. UINT __cdecl Packets::LCRetConnect::GetPacketSize(const Packets::LCRetConnect *const this)
  39809. {
  39810. return 69;
  39811. }
  39812.  
  39813. //----- (08073320) --------------------------------------------------------
  39814. BOOL __cdecl Packets::LCRetCreateChar::Read(Packets::LCRetCreateChar *const this, SocketInputStream *const iStream)
  39815. {
  39816. SocketInputStream::Read(iStream, (CHAR *)&this->Result, 4u);
  39817. return 1;
  39818. }
  39819.  
  39820. //----- (0807338C) --------------------------------------------------------
  39821. BOOL __cdecl Packets::LCRetCreateChar::Write(const Packets::LCRetCreateChar *const this, SocketOutputStream *const oStream)
  39822. {
  39823. SocketOutputStream::Write(oStream, (const CHAR *)&this->Result, 4u);
  39824. return 1;
  39825. }
  39826.  
  39827. //----- (080733F8) --------------------------------------------------------
  39828. UINT __cdecl Packets::LCRetCreateChar::Execute(Packets::LCRetCreateChar *const this, Player *pPlayer)
  39829. {
  39830. return Packets::LCRetCreateCharHandler::Execute(this, pPlayer);
  39831. }
  39832.  
  39833. //----- (08073458) --------------------------------------------------------
  39834. ASKCREATECHAR_RESULT __cdecl Packets::LCRetCreateChar::GetResult(int a2)
  39835. {
  39836. return *(_DWORD *)(a2 + 12);
  39837. }
  39838.  
  39839. //----- (08073464) --------------------------------------------------------
  39840. void __cdecl Packets::LCRetCreateChar::SetResult(int a3, int a4)
  39841. {
  39842. *(_DWORD *)(a3 + 12) = a4;
  39843. }
  39844.  
  39845. //----- (08073474) --------------------------------------------------------
  39846. const CHAR *__cdecl Packets::LCRetCreateChar::GetAccount(const Packets::LCRetCreateChar *const this)
  39847. {
  39848. return this->szAccount;
  39849. }
  39850.  
  39851. //----- (08073480) --------------------------------------------------------
  39852. void __cdecl Packets::LCRetCreateChar::SetAccount(Packets::LCRetCreateChar *const this, const CHAR *pAccount)
  39853. {
  39854. if ( !pAccount )
  39855. __assert__(
  39856. "../../Common/Packets/LCRetCreateChar.cpp",
  39857. 0x38u,
  39858. "void Packets::LCRetCreateChar::SetAccount(const CHAR*)",
  39859. "pAccount");
  39860. strncpy(this->szAccount, pAccount, 0x32u);
  39861. this->szAccount[50] = 0;
  39862. }
  39863.  
  39864. //----- (080734C4) --------------------------------------------------------
  39865. void __cdecl _tcf_0_49(void *a1)
  39866. {
  39867. std::ios_base::Init::~Init(&std::__ioinit);
  39868. }
  39869.  
  39870. //----- (080734D4) --------------------------------------------------------
  39871. void `global constructor keyed to'Packets::LCRetCreateChar::Read()
  39872. {
  39873. std::ios_base::Init::Init(&std::__ioinit);
  39874. __cxa_atexit(_tcf_0_49, 0, &_dso_handle);
  39875. }
  39876. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  39877.  
  39878. //----- (08073500) --------------------------------------------------------
  39879. void __cdecl Packets::LCRetCreateChar::~LCRetCreateChar(Packet *a2)
  39880. {
  39881. a2->_vptr_Packet = (int (**)(...))off_80CE9C8;
  39882. Packet::~Packet(a2);
  39883. }
  39884. // 80CE9C8: using guessed type _DWORD (__cdecl *off_80CE9C8[2])(Packets::LCRetCreateChar *this);
  39885.  
  39886. //----- (0807351C) --------------------------------------------------------
  39887. void __cdecl Packets::LCRetCreateChar::~LCRetCreateChar(IPRegionTable *a2)
  39888. {
  39889. a2->_vptr_IPRegionTable = (int (**)(...))off_80CE9C8;
  39890. Packet::~Packet(a2);
  39891. operator delete(a2);
  39892. }
  39893. // 80CE9C8: using guessed type _DWORD (__cdecl *off_80CE9C8[2])(Packets::LCRetCreateChar *this);
  39894.  
  39895. //----- (08073544) --------------------------------------------------------
  39896. PacketID_t __cdecl Packets::LCRetCreateChar::GetPacketID(const Packets::LCRetCreateChar *const this)
  39897. {
  39898. return 481;
  39899. }
  39900.  
  39901. //----- (08073550) --------------------------------------------------------
  39902. UINT __cdecl Packets::LCRetCreateChar::GetPacketSize(const Packets::LCRetCreateChar *const this)
  39903. {
  39904. return 4;
  39905. }
  39906.  
  39907. //----- (0807355C) --------------------------------------------------------
  39908. BOOL __cdecl Packets::LCRetDeleteChar::Read(Packets::LCRetDeleteChar *const this, SocketInputStream *const iStream)
  39909. {
  39910. SocketInputStream::Read(iStream, (CHAR *)&this->Result, 4u);
  39911. return 1;
  39912. }
  39913.  
  39914. //----- (080735C8) --------------------------------------------------------
  39915. BOOL __cdecl Packets::LCRetDeleteChar::Write(const Packets::LCRetDeleteChar *const this, SocketOutputStream *const oStream)
  39916. {
  39917. SocketOutputStream::Write(oStream, (const CHAR *)&this->Result, 4u);
  39918. return 1;
  39919. }
  39920.  
  39921. //----- (08073634) --------------------------------------------------------
  39922. UINT __cdecl Packets::LCRetDeleteChar::Execute(Packets::LCRetDeleteChar *const this, Player *pPlayer)
  39923. {
  39924. return Packets::LCRetDeleteCharHandler::Execute(this, pPlayer);
  39925. }
  39926.  
  39927. //----- (08073694) --------------------------------------------------------
  39928. const CHAR *__cdecl Packets::LCRetDeleteChar::GetAccount(const Packets::LCRetDeleteChar *const this)
  39929. {
  39930. return this->szAccount;
  39931. }
  39932.  
  39933. //----- (080736A0) --------------------------------------------------------
  39934. void __cdecl Packets::LCRetDeleteChar::SetAccount(Packets::LCRetDeleteChar *const this, const CHAR *pAccount)
  39935. {
  39936. if ( !pAccount )
  39937. __assert__(
  39938. "../../Common/Packets/LCRetDeleteChar.cpp",
  39939. 0x2Du,
  39940. "void Packets::LCRetDeleteChar::SetAccount(const CHAR*)",
  39941. "pAccount");
  39942. strncpy(this->szAccount, pAccount, 0x32u);
  39943. this->szAccount[50] = 0;
  39944. }
  39945.  
  39946. //----- (080736E4) --------------------------------------------------------
  39947. ASKDELETECHAR_RESULT __cdecl Packets::LCRetDeleteChar::GetResult(int a2)
  39948. {
  39949. return *(_DWORD *)(a2 + 12);
  39950. }
  39951.  
  39952. //----- (080736F0) --------------------------------------------------------
  39953. void __cdecl Packets::LCRetDeleteChar::SetResult(int a3, int a4)
  39954. {
  39955. *(_DWORD *)(a3 + 12) = a4;
  39956. }
  39957.  
  39958. //----- (08073700) --------------------------------------------------------
  39959. void __cdecl _tcf_0_50(void *a1)
  39960. {
  39961. std::ios_base::Init::~Init(&std::__ioinit);
  39962. }
  39963.  
  39964. //----- (08073710) --------------------------------------------------------
  39965. void `global constructor keyed to'Packets::LCRetDeleteChar::Read()
  39966. {
  39967. std::ios_base::Init::Init(&std::__ioinit);
  39968. __cxa_atexit(_tcf_0_50, 0, &_dso_handle);
  39969. }
  39970. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  39971.  
  39972. //----- (0807373C) --------------------------------------------------------
  39973. void __cdecl Packets::LCRetDeleteChar::~LCRetDeleteChar(Packet *a2)
  39974. {
  39975. a2->_vptr_Packet = (int (**)(...))off_80CEB88;
  39976. Packet::~Packet(a2);
  39977. }
  39978. // 80CEB88: using guessed type _DWORD (__cdecl *off_80CEB88[2])(Packets::LCRetDeleteChar *this);
  39979.  
  39980. //----- (08073758) --------------------------------------------------------
  39981. void __cdecl Packets::LCRetDeleteChar::~LCRetDeleteChar(IPRegionTable *a2)
  39982. {
  39983. a2->_vptr_IPRegionTable = (int (**)(...))off_80CEB88;
  39984. Packet::~Packet(a2);
  39985. operator delete(a2);
  39986. }
  39987. // 80CEB88: using guessed type _DWORD (__cdecl *off_80CEB88[2])(Packets::LCRetDeleteChar *this);
  39988.  
  39989. //----- (08073780) --------------------------------------------------------
  39990. PacketID_t __cdecl Packets::LCRetDeleteChar::GetPacketID(const Packets::LCRetDeleteChar *const this)
  39991. {
  39992. return 163;
  39993. }
  39994.  
  39995. //----- (0807378C) --------------------------------------------------------
  39996. UINT __cdecl Packets::LCRetDeleteChar::GetPacketSize(const Packets::LCRetDeleteChar *const this)
  39997. {
  39998. return 4;
  39999. }
  40000.  
  40001. //----- (08073798) --------------------------------------------------------
  40002. BOOL __cdecl Packets::LCRetLogin::Read(Packets::LCRetLogin *const this, SocketInputStream *const iStream)
  40003. {
  40004. SocketInputStream::Read(iStream, this->szAccount, 0x32u);
  40005. SocketInputStream::Read(iStream, (CHAR *)&this->Result, 4u);
  40006. SocketInputStream::Read(iStream, this->mIP, 0xFu);
  40007. SocketInputStream::Read(iStream, (CHAR *)&this->mSafeSign, 4u);
  40008. return 1;
  40009. }
  40010.  
  40011. //----- (0807382C) --------------------------------------------------------
  40012. BOOL __cdecl Packets::LCRetLogin::Write(const Packets::LCRetLogin *const this, SocketOutputStream *const oStream)
  40013. {
  40014. SocketOutputStream::Write(oStream, this->szAccount, 0x32u);
  40015. SocketOutputStream::Write(oStream, (const CHAR *)&this->Result, 4u);
  40016. SocketOutputStream::Write(oStream, this->mIP, 0xFu);
  40017. SocketOutputStream::Write(oStream, (const CHAR *)&this->mSafeSign, 4u);
  40018. return 1;
  40019. }
  40020.  
  40021. //----- (080738C0) --------------------------------------------------------
  40022. UINT __cdecl Packets::LCRetLogin::Execute(Packets::LCRetLogin *const this, Player *pPlayer)
  40023. {
  40024. return Packets::LCRetLoginHandler::Execute(this, pPlayer);
  40025. }
  40026.  
  40027. //----- (08073920) --------------------------------------------------------
  40028. const CHAR *__cdecl Packets::LCRetLogin::GetAccount(const Packets::LCRetLogin *const this)
  40029. {
  40030. return this->szAccount;
  40031. }
  40032.  
  40033. //----- (0807392C) --------------------------------------------------------
  40034. void __cdecl Packets::LCRetLogin::SetAccount(Packets::LCRetLogin *const this, const CHAR *pAccount)
  40035. {
  40036. if ( !pAccount )
  40037. __assert__(
  40038. "../../Common/Packets/LCRetLogin.cpp",
  40039. 0x33u,
  40040. "void Packets::LCRetLogin::SetAccount(const CHAR*)",
  40041. "pAccount");
  40042. strncpy(this->szAccount, pAccount, 0x32u);
  40043. this->szAccount[50] = 0;
  40044. }
  40045.  
  40046. //----- (08073970) --------------------------------------------------------
  40047. LOGIN_RESULT __cdecl Packets::LCRetLogin::GetResult(int a2)
  40048. {
  40049. return *(_DWORD *)(a2 + 64);
  40050. }
  40051.  
  40052. //----- (0807397C) --------------------------------------------------------
  40053. void __cdecl Packets::LCRetLogin::SetResult(int a3, int a4)
  40054. {
  40055. *(_DWORD *)(a3 + 64) = a4;
  40056. }
  40057.  
  40058. //----- (0807398C) --------------------------------------------------------
  40059. void __cdecl _tcf_0_51(void *a1)
  40060. {
  40061. std::ios_base::Init::~Init(&std::__ioinit);
  40062. }
  40063.  
  40064. //----- (0807399C) --------------------------------------------------------
  40065. void `global constructor keyed to'Packets::LCRetLogin::Read()
  40066. {
  40067. std::ios_base::Init::Init(&std::__ioinit);
  40068. __cxa_atexit(_tcf_0_51, 0, &_dso_handle);
  40069. }
  40070. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  40071.  
  40072. //----- (080739C8) --------------------------------------------------------
  40073. void __cdecl Packets::LCRetLogin::~LCRetLogin(Packet *a2)
  40074. {
  40075. a2->_vptr_Packet = (int (**)(...))off_80CED48;
  40076. Packet::~Packet(a2);
  40077. }
  40078. // 80CED48: using guessed type _DWORD (__cdecl *off_80CED48[2])(Packets::LCRetLogin *this);
  40079.  
  40080. //----- (080739E4) --------------------------------------------------------
  40081. void __cdecl Packets::LCRetLogin::~LCRetLogin(IPRegionTable *a2)
  40082. {
  40083. a2->_vptr_IPRegionTable = (int (**)(...))off_80CED48;
  40084. Packet::~Packet(a2);
  40085. operator delete(a2);
  40086. }
  40087. // 80CED48: using guessed type _DWORD (__cdecl *off_80CED48[2])(Packets::LCRetLogin *this);
  40088.  
  40089. //----- (08073A0C) --------------------------------------------------------
  40090. PacketID_t __cdecl Packets::LCRetLogin::GetPacketID(const Packets::LCRetLogin *const this)
  40091. {
  40092. return 223;
  40093. }
  40094.  
  40095. //----- (08073A18) --------------------------------------------------------
  40096. UINT __cdecl Packets::LCRetLogin::GetPacketSize(const Packets::LCRetLogin *const this)
  40097. {
  40098. return 73;
  40099. }
  40100.  
  40101. //----- (08073A24) --------------------------------------------------------
  40102. BOOL __cdecl Packets::LCRetLoginCode::Read(Packets::LCRetLoginCode *const this, SocketInputStream *const iStream)
  40103. {
  40104. SocketInputStream::Read(iStream, (CHAR *)&this->m_RetType, 1u);
  40105. if ( this->m_RetType == 2 )
  40106. SocketInputStream::Read(iStream, (CHAR *)this->m_imageBuf, 0x240u);
  40107. return 1;
  40108. }
  40109.  
  40110. //----- (08073AB0) --------------------------------------------------------
  40111. BOOL __cdecl Packets::LCRetLoginCode::Write(const Packets::LCRetLoginCode *const this, SocketOutputStream *const oStream)
  40112. {
  40113. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_RetType, 1u);
  40114. if ( this->m_RetType == 2 )
  40115. SocketOutputStream::Write(oStream, (const CHAR *)this->m_imageBuf, 0x240u);
  40116. return 1;
  40117. }
  40118.  
  40119. //----- (08073B3C) --------------------------------------------------------
  40120. UINT __cdecl Packets::LCRetLoginCode::Execute(Packets::LCRetLoginCode *const this, Player *pPlayer)
  40121. {
  40122. return Packets::LCRetLoginCodeHandler::Execute(this, pPlayer);
  40123. }
  40124.  
  40125. //----- (08073B9C) --------------------------------------------------------
  40126. void __cdecl _tcf_0_52(void *a1)
  40127. {
  40128. std::ios_base::Init::~Init(&std::__ioinit);
  40129. }
  40130.  
  40131. //----- (08073BAC) --------------------------------------------------------
  40132. void `global constructor keyed to'Packets::LCRetLoginCode::Read()
  40133. {
  40134. std::ios_base::Init::Init(&std::__ioinit);
  40135. __cxa_atexit(_tcf_0_52, 0, &_dso_handle);
  40136. }
  40137. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  40138.  
  40139. //----- (08073BD8) --------------------------------------------------------
  40140. void __cdecl Packets::LCRetLoginCode::~LCRetLoginCode(Packet *a2)
  40141. {
  40142. a2->_vptr_Packet = (int (**)(...))off_80CEEE8;
  40143. Packet::~Packet(a2);
  40144. }
  40145. // 80CEEE8: using guessed type _DWORD (__cdecl *off_80CEEE8[2])(Packets::LCRetLoginCode *this);
  40146.  
  40147. //----- (08073BF4) --------------------------------------------------------
  40148. void __cdecl Packets::LCRetLoginCode::~LCRetLoginCode(IPRegionTable *a2)
  40149. {
  40150. a2->_vptr_IPRegionTable = (int (**)(...))off_80CEEE8;
  40151. Packet::~Packet(a2);
  40152. operator delete(a2);
  40153. }
  40154. // 80CEEE8: using guessed type _DWORD (__cdecl *off_80CEEE8[2])(Packets::LCRetLoginCode *this);
  40155.  
  40156. //----- (08073C1C) --------------------------------------------------------
  40157. PacketID_t __cdecl Packets::LCRetLoginCode::GetPacketID(const Packets::LCRetLoginCode *const this)
  40158. {
  40159. return 670;
  40160. }
  40161.  
  40162. //----- (08073C28) --------------------------------------------------------
  40163. UINT __cdecl Packets::LCRetLoginCode::GetPacketSize(const Packets::LCRetLoginCode *const this)
  40164. {
  40165. UINT v1; // edx
  40166.  
  40167. v1 = 1;
  40168. if ( this->m_RetType == 2 )
  40169. LOWORD(v1) = 577;
  40170. return v1;
  40171. }
  40172.  
  40173. //----- (08073C48) --------------------------------------------------------
  40174. BOOL __cdecl Packets::LCStatus::Read(Packets::LCStatus *const this, SocketInputStream *const iStream)
  40175. {
  40176. SocketInputStream::Read(iStream, (CHAR *)&this->TurnNumber, 2u);
  40177. SocketInputStream::Read(iStream, (CHAR *)&this->ClientStatus, 4u);
  40178. return 1;
  40179. }
  40180.  
  40181. //----- (08073CC4) --------------------------------------------------------
  40182. BOOL __cdecl Packets::LCStatus::Write(const Packets::LCStatus *const this, SocketOutputStream *const oStream)
  40183. {
  40184. SocketOutputStream::Write(oStream, (const CHAR *)&this->TurnNumber, 2u);
  40185. SocketOutputStream::Write(oStream, (const CHAR *)&this->ClientStatus, 4u);
  40186. return 1;
  40187. }
  40188.  
  40189. //----- (08073D40) --------------------------------------------------------
  40190. UINT __cdecl Packets::LCStatus::Execute(Packets::LCStatus *const this, Player *pPlayer)
  40191. {
  40192. return Packets::LCStatusHandler::Execute(this, pPlayer);
  40193. }
  40194.  
  40195. //----- (08073DA0) --------------------------------------------------------
  40196. void __cdecl _tcf_0_53(void *a1)
  40197. {
  40198. std::ios_base::Init::~Init(&std::__ioinit);
  40199. }
  40200.  
  40201. //----- (08073DB0) --------------------------------------------------------
  40202. void `global constructor keyed to'Packets::LCStatus::Read()
  40203. {
  40204. std::ios_base::Init::Init(&std::__ioinit);
  40205. __cxa_atexit(_tcf_0_53, 0, &_dso_handle);
  40206. }
  40207. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  40208.  
  40209. //----- (08073DDC) --------------------------------------------------------
  40210. void __cdecl Packets::LCStatus::~LCStatus(Packet *a2)
  40211. {
  40212. a2->_vptr_Packet = (int (**)(...))off_80CF048;
  40213. Packet::~Packet(a2);
  40214. }
  40215. // 80CF048: using guessed type _DWORD (__cdecl *off_80CF048[2])(Packets::LCStatus *this);
  40216.  
  40217. //----- (08073DF8) --------------------------------------------------------
  40218. void __cdecl Packets::LCStatus::~LCStatus(IPRegionTable *a2)
  40219. {
  40220. a2->_vptr_IPRegionTable = (int (**)(...))off_80CF048;
  40221. Packet::~Packet(a2);
  40222. operator delete(a2);
  40223. }
  40224. // 80CF048: using guessed type _DWORD (__cdecl *off_80CF048[2])(Packets::LCStatus *this);
  40225.  
  40226. //----- (08073E20) --------------------------------------------------------
  40227. PacketID_t __cdecl Packets::LCStatus::GetPacketID(const Packets::LCStatus *const this)
  40228. {
  40229. return 554;
  40230. }
  40231.  
  40232. //----- (08073E2C) --------------------------------------------------------
  40233. UINT __cdecl Packets::LCStatus::GetPacketSize(const Packets::LCStatus *const this)
  40234. {
  40235. return 6;
  40236. }
  40237.  
  40238. //----- (08073E38) --------------------------------------------------------
  40239. BOOL __cdecl Packets::LWAskCharLogin::Read(Packets::LWAskCharLogin *const this, SocketInputStream *const iStream)
  40240. {
  40241. SocketInputStream::Read(iStream, this->szAccount, 0x32u);
  40242. SocketInputStream::Read(iStream, (CHAR *)&this->PlayerID, 2u);
  40243. SocketInputStream::Read(iStream, (CHAR *)&this->PlayerGUID, 4u);
  40244. SocketInputStream::Read(iStream, (CHAR *)&this->uKey, 4u);
  40245. SocketInputStream::Read(iStream, (CHAR *)&this->AskStatus, 4u);
  40246. if ( this->AskStatus == 1 )
  40247. {
  40248. SocketInputStream::Read(iStream, (CHAR *)&this->UserData, 0xC619u);
  40249. SocketInputStream::Read(iStream, this->Host, 0x18u);
  40250. }
  40251. return 1;
  40252. }
  40253.  
  40254. //----- (08073F14) --------------------------------------------------------
  40255. BOOL __cdecl Packets::LWAskCharLogin::Write(const Packets::LWAskCharLogin *const this, SocketOutputStream *const oStream)
  40256. {
  40257. SocketOutputStream::Write(oStream, this->szAccount, 0x32u);
  40258. SocketOutputStream::Write(oStream, (const CHAR *)&this->PlayerID, 2u);
  40259. SocketOutputStream::Write(oStream, (const CHAR *)&this->PlayerGUID, 4u);
  40260. SocketOutputStream::Write(oStream, (const CHAR *)&this->uKey, 4u);
  40261. SocketOutputStream::Write(oStream, (const CHAR *)&this->AskStatus, 4u);
  40262. if ( this->AskStatus == 1 )
  40263. {
  40264. SocketOutputStream::Write(oStream, (const CHAR *)&this->UserData, 0xC619u);
  40265. SocketOutputStream::Write(oStream, this->Host, 0x18u);
  40266. }
  40267. return 1;
  40268. }
  40269.  
  40270. //----- (08073FF0) --------------------------------------------------------
  40271. UINT __cdecl Packets::LWAskCharLogin::Execute(Packets::LWAskCharLogin *const this, Player *pPlayer)
  40272. {
  40273. return Packets::LWAskCharLoginHandler::Execute(this, pPlayer);
  40274. }
  40275.  
  40276. //----- (08074050) --------------------------------------------------------
  40277. const CHAR *__cdecl Packets::LWAskCharLogin::GetAccount(const Packets::LWAskCharLogin *const this)
  40278. {
  40279. return this->szAccount;
  40280. }
  40281.  
  40282. //----- (0807405C) --------------------------------------------------------
  40283. void __cdecl Packets::LWAskCharLogin::SetAccount(Packets::LWAskCharLogin *const this, const CHAR *pAccount)
  40284. {
  40285. if ( !pAccount )
  40286. __assert__(
  40287. "../../Common/Packets/LWAskCharLogin.cpp",
  40288. 0x42u,
  40289. "void Packets::LWAskCharLogin::SetAccount(const CHAR*)",
  40290. "pAccount");
  40291. strncpy(this->szAccount, pAccount, 0x32u);
  40292. this->szAccount[50] = 0;
  40293. }
  40294.  
  40295. //----- (080740A0) --------------------------------------------------------
  40296. const CHAR *__cdecl Packets::LWAskCharLogin::GetHost(const Packets::LWAskCharLogin *const this)
  40297. {
  40298. return this->Host;
  40299. }
  40300.  
  40301. //----- (080740AC) --------------------------------------------------------
  40302. void __cdecl Packets::LWAskCharLogin::SetHost(Packets::LWAskCharLogin *const this, const CHAR *pHost)
  40303. {
  40304. if ( !pHost )
  40305. __assert__(
  40306. "../../Common/Packets/LWAskCharLogin.cpp",
  40307. 0x4Du,
  40308. "void Packets::LWAskCharLogin::SetHost(const CHAR*)",
  40309. "pHost");
  40310. strncpy(this->Host, pHost, 0x18u);
  40311. this->Host[24] = 0;
  40312. }
  40313.  
  40314. //----- (080740F0) --------------------------------------------------------
  40315. void __cdecl _tcf_0_54(void *a1)
  40316. {
  40317. std::ios_base::Init::~Init(&std::__ioinit);
  40318. }
  40319.  
  40320. //----- (08074100) --------------------------------------------------------
  40321. void `global constructor keyed to'Packets::LWAskCharLogin::Read()
  40322. {
  40323. std::ios_base::Init::Init(&std::__ioinit);
  40324. __cxa_atexit(_tcf_0_54, 0, &_dso_handle);
  40325. }
  40326. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  40327.  
  40328. //----- (0807412C) --------------------------------------------------------
  40329. void __cdecl Packets::LWAskCharLogin::~LWAskCharLogin(Packets::LWAskCharLogin *const this)
  40330. {
  40331. char *v1; // ebx
  40332. Packets::LWAskCharLogin *v2; // ecx
  40333. int i; // eax
  40334. Packets::LWAskCharLogin *j; // eax
  40335. Packets::LWAskCharLogin *k; // eax
  40336. char *v6; // ecx
  40337. Packets::LWAskCharLogin *l; // eax
  40338. Packets::LWAskCharLogin *m; // eax
  40339. Packets::LWAskCharLogin *n; // eax
  40340.  
  40341. this->_vptr_Packet = (int (**)(...))off_80CF1A8;
  40342. v1 = (char *)&this->UserData;
  40343. if ( this != (Packets::LWAskCharLogin *const )-40372 )
  40344. {
  40345. v2 = (Packets::LWAskCharLogin *const )((char *)this + 44362);
  40346. while ( &this->UserData.m_PetList != (_PET_DB_LIST_LOAD *)v2 )
  40347. {
  40348. v2 = (Packets::LWAskCharLogin *)((char *)v2 - 399);
  40349. if ( v2 != (Packets::LWAskCharLogin *)-211 )
  40350. {
  40351. for ( i = (int)&v2->UserData.m_Human.m_Titles.m_szBangPai[33];
  40352. &v2->UserData.m_Human.m_Titles.m_szNick[5] != (CHAR *)i;
  40353. i -= 12 )
  40354. {
  40355. ;
  40356. }
  40357. }
  40358. }
  40359. }
  40360. if ( v1 != (char *)-33963 )
  40361. {
  40362. for ( j = (Packets::LWAskCharLogin *const )((char *)this + 35583);
  40363. this->UserData.m_Impact.m_aImpacts != (_OWN_IMPACT *)j;
  40364. j = (Packets::LWAskCharLogin *)((char *)j - 76) )
  40365. {
  40366. ;
  40367. }
  40368. }
  40369. if ( v1 != (char *)-33513 )
  40370. {
  40371. for ( k = (Packets::LWAskCharLogin *const )((char *)this + 33997);
  40372. &this->UserData.m_Cooldown != (_COOLDOWN_DB_LOAD_FOR_HUMAN *)k;
  40373. k = (Packets::LWAskCharLogin *)((char *)k - 12) )
  40374. {
  40375. ;
  40376. }
  40377. }
  40378. v6 = (char *)&this->UserData.m_Human.m_PvpInfo;
  40379. if ( v1 != (char *)-1409 )
  40380. {
  40381. for ( l = (Packets::LWAskCharLogin *const )((char *)this + 1557);
  40382. &this->UserData.m_Human.m_PvpInfo.m_oPersonalEnemyList != (PersonalEnemyList_T *)l;
  40383. l = (Packets::LWAskCharLogin *)((char *)l - 8) )
  40384. {
  40385. ;
  40386. }
  40387. }
  40388. if ( v6 != (char *)-347 )
  40389. {
  40390. for ( m = (Packets::LWAskCharLogin *const )((char *)this + 1509);
  40391. &this->UserData.m_Human.m_PvpInfo.m_oPersonalDuelList != (PersonalDuelList_T *)m;
  40392. m = (Packets::LWAskCharLogin *)((char *)m - 8) )
  40393. {
  40394. ;
  40395. }
  40396. }
  40397. if ( v6 != (char *)-267 )
  40398. {
  40399. for ( n = (Packets::LWAskCharLogin *const )((char *)this + 1469);
  40400. &this->UserData.m_Human.m_PvpInfo.m_oFightBackList != (FightBackList_T *)n;
  40401. n = (Packets::LWAskCharLogin *)((char *)n - 8) )
  40402. {
  40403. ;
  40404. }
  40405. }
  40406. Packet::~Packet(this);
  40407. }
  40408. // 80CF1A8: using guessed type _DWORD (__cdecl *off_80CF1A8[2])(Packets::LWAskCharLogin *this);
  40409.  
  40410. //----- (08074218) --------------------------------------------------------
  40411. void __cdecl Packets::LWAskCharLogin::~LWAskCharLogin(Packets::LWAskCharLogin *const this)
  40412. {
  40413. char *v1; // ebx
  40414. Packets::LWAskCharLogin *v2; // ecx
  40415. int i; // eax
  40416. Packets::LWAskCharLogin *j; // eax
  40417. Packets::LWAskCharLogin *k; // eax
  40418. char *v6; // ecx
  40419. Packets::LWAskCharLogin *l; // eax
  40420. Packets::LWAskCharLogin *m; // eax
  40421. Packets::LWAskCharLogin *n; // eax
  40422.  
  40423. this->_vptr_Packet = (int (**)(...))off_80CF1A8;
  40424. v1 = (char *)&this->UserData;
  40425. if ( this != (Packets::LWAskCharLogin *const )-40372 )
  40426. {
  40427. v2 = (Packets::LWAskCharLogin *const )((char *)this + 44362);
  40428. while ( &this->UserData.m_PetList != (_PET_DB_LIST_LOAD *)v2 )
  40429. {
  40430. v2 = (Packets::LWAskCharLogin *)((char *)v2 - 399);
  40431. if ( v2 != (Packets::LWAskCharLogin *)-211 )
  40432. {
  40433. for ( i = (int)&v2->UserData.m_Human.m_Titles.m_szBangPai[33];
  40434. &v2->UserData.m_Human.m_Titles.m_szNick[5] != (CHAR *)i;
  40435. i -= 12 )
  40436. {
  40437. ;
  40438. }
  40439. }
  40440. }
  40441. }
  40442. if ( v1 != (char *)-33963 )
  40443. {
  40444. for ( j = (Packets::LWAskCharLogin *const )((char *)this + 35583);
  40445. this->UserData.m_Impact.m_aImpacts != (_OWN_IMPACT *)j;
  40446. j = (Packets::LWAskCharLogin *)((char *)j - 76) )
  40447. {
  40448. ;
  40449. }
  40450. }
  40451. if ( v1 != (char *)-33513 )
  40452. {
  40453. for ( k = (Packets::LWAskCharLogin *const )((char *)this + 33997);
  40454. &this->UserData.m_Cooldown != (_COOLDOWN_DB_LOAD_FOR_HUMAN *)k;
  40455. k = (Packets::LWAskCharLogin *)((char *)k - 12) )
  40456. {
  40457. ;
  40458. }
  40459. }
  40460. v6 = (char *)&this->UserData.m_Human.m_PvpInfo;
  40461. if ( v1 != (char *)-1409 )
  40462. {
  40463. for ( l = (Packets::LWAskCharLogin *const )((char *)this + 1557);
  40464. &this->UserData.m_Human.m_PvpInfo.m_oPersonalEnemyList != (PersonalEnemyList_T *)l;
  40465. l = (Packets::LWAskCharLogin *)((char *)l - 8) )
  40466. {
  40467. ;
  40468. }
  40469. }
  40470. if ( v6 != (char *)-347 )
  40471. {
  40472. for ( m = (Packets::LWAskCharLogin *const )((char *)this + 1509);
  40473. &this->UserData.m_Human.m_PvpInfo.m_oPersonalDuelList != (PersonalDuelList_T *)m;
  40474. m = (Packets::LWAskCharLogin *)((char *)m - 8) )
  40475. {
  40476. ;
  40477. }
  40478. }
  40479. if ( v6 != (char *)-267 )
  40480. {
  40481. for ( n = (Packets::LWAskCharLogin *const )((char *)this + 1469);
  40482. &this->UserData.m_Human.m_PvpInfo.m_oFightBackList != (FightBackList_T *)n;
  40483. n = (Packets::LWAskCharLogin *)((char *)n - 8) )
  40484. {
  40485. ;
  40486. }
  40487. }
  40488. Packet::~Packet(this);
  40489. operator delete((IPRegionTable *const )this);
  40490. }
  40491. // 80CF1A8: using guessed type _DWORD (__cdecl *off_80CF1A8[2])(Packets::LWAskCharLogin *this);
  40492.  
  40493. //----- (0807430C) --------------------------------------------------------
  40494. PacketID_t __cdecl Packets::LWAskCharLogin::GetPacketID(const Packets::LWAskCharLogin *const this)
  40495. {
  40496. return 107;
  40497. }
  40498.  
  40499. //----- (08074318) --------------------------------------------------------
  40500. UINT __cdecl Packets::LWAskCharLogin::GetPacketSize(const Packets::LWAskCharLogin *const this)
  40501. {
  40502. UINT v1; // edx
  40503.  
  40504. v1 = 50801;
  40505. if ( this->AskStatus != 1 )
  40506. LOWORD(v1) = 64;
  40507. return v1;
  40508. }
  40509.  
  40510. //----- (08074334) --------------------------------------------------------
  40511. BOOL __cdecl Packets::LWRetBillingEnd::Read(Packets::LWRetBillingEnd *const this, SocketInputStream *const iStream)
  40512. {
  40513. SocketInputStream::Read(iStream, this->mAccount, 0x33u);
  40514. SocketInputStream::Read(iStream, (CHAR *)&this->mResult, 1u);
  40515. return 1;
  40516. }
  40517.  
  40518. //----- (080743B0) --------------------------------------------------------
  40519. BOOL __cdecl Packets::LWRetBillingEnd::Write(const Packets::LWRetBillingEnd *const this, SocketOutputStream *const oStream)
  40520. {
  40521. SocketOutputStream::Write(oStream, this->mAccount, 0x33u);
  40522. SocketOutputStream::Write(oStream, (const CHAR *)&this->mResult, 1u);
  40523. return 1;
  40524. }
  40525.  
  40526. //----- (0807442C) --------------------------------------------------------
  40527. UINT __cdecl Packets::LWRetBillingEnd::Execute(Packets::LWRetBillingEnd *const this, Player *pPlayer)
  40528. {
  40529. return Packets::LWRetBillingEndHandler::Execute(this, pPlayer);
  40530. }
  40531.  
  40532. //----- (0807448C) --------------------------------------------------------
  40533. void __cdecl _tcf_0_55(void *a1)
  40534. {
  40535. std::ios_base::Init::~Init(&std::__ioinit);
  40536. }
  40537.  
  40538. //----- (0807449C) --------------------------------------------------------
  40539. void `global constructor keyed to'Packets::LWRetBillingEnd::Read()
  40540. {
  40541. std::ios_base::Init::Init(&std::__ioinit);
  40542. __cxa_atexit(_tcf_0_55, 0, &_dso_handle);
  40543. }
  40544. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  40545.  
  40546. //----- (080744C8) --------------------------------------------------------
  40547. void __cdecl Packets::LWRetBillingEnd::~LWRetBillingEnd(Packet *a2)
  40548. {
  40549. a2->_vptr_Packet = (int (**)(...))off_80CF3A8;
  40550. Packet::~Packet(a2);
  40551. }
  40552. // 80CF3A8: using guessed type _DWORD (__cdecl *off_80CF3A8[2])(Packets::LWRetBillingEnd *this);
  40553.  
  40554. //----- (080744E4) --------------------------------------------------------
  40555. void __cdecl Packets::LWRetBillingEnd::~LWRetBillingEnd(IPRegionTable *a2)
  40556. {
  40557. a2->_vptr_IPRegionTable = (int (**)(...))off_80CF3A8;
  40558. Packet::~Packet(a2);
  40559. operator delete(a2);
  40560. }
  40561. // 80CF3A8: using guessed type _DWORD (__cdecl *off_80CF3A8[2])(Packets::LWRetBillingEnd *this);
  40562.  
  40563. //----- (0807450C) --------------------------------------------------------
  40564. PacketID_t __cdecl Packets::LWRetBillingEnd::GetPacketID(const Packets::LWRetBillingEnd *const this)
  40565. {
  40566. return 494;
  40567. }
  40568.  
  40569. //----- (08074518) --------------------------------------------------------
  40570. UINT __cdecl Packets::LWRetBillingEnd::GetPacketSize(const Packets::LWRetBillingEnd *const this)
  40571. {
  40572. return 52;
  40573. }
  40574.  
  40575. //----- (08074524) --------------------------------------------------------
  40576. BOOL __cdecl Packets::LWRetBillingKeep::Read(Packets::LWRetBillingKeep *const this, SocketInputStream *const iStream)
  40577. {
  40578. SocketInputStream::Read(iStream, this->mAccount, 0x33u);
  40579. SocketInputStream::Read(iStream, (CHAR *)&this->mResult, 1u);
  40580. SocketInputStream::Read(iStream, (CHAR *)&this->mLeftTime, 4u);
  40581. SocketInputStream::Read(iStream, (CHAR *)&this->mStorePoint, 4u);
  40582. SocketInputStream::Read(iStream, (CHAR *)&this->mUserPoint, 4u);
  40583. return 1;
  40584. }
  40585.  
  40586. //----- (080745C8) --------------------------------------------------------
  40587. BOOL __cdecl Packets::LWRetBillingKeep::Write(const Packets::LWRetBillingKeep *const this, SocketOutputStream *const oStream)
  40588. {
  40589. SocketOutputStream::Write(oStream, this->mAccount, 0x33u);
  40590. SocketOutputStream::Write(oStream, (const CHAR *)&this->mResult, 1u);
  40591. SocketOutputStream::Write(oStream, (const CHAR *)&this->mLeftTime, 4u);
  40592. SocketOutputStream::Write(oStream, (const CHAR *)&this->mStorePoint, 4u);
  40593. SocketOutputStream::Write(oStream, (const CHAR *)&this->mUserPoint, 4u);
  40594. return 1;
  40595. }
  40596.  
  40597. //----- (0807466C) --------------------------------------------------------
  40598. UINT __cdecl Packets::LWRetBillingKeep::Execute(Packets::LWRetBillingKeep *const this, Player *pPlayer)
  40599. {
  40600. return Packets::LWRetBillingKeepHandler::Execute(this, pPlayer);
  40601. }
  40602.  
  40603. //----- (080746CC) --------------------------------------------------------
  40604. void __cdecl _tcf_0_56(void *a1)
  40605. {
  40606. std::ios_base::Init::~Init(&std::__ioinit);
  40607. }
  40608.  
  40609. //----- (080746DC) --------------------------------------------------------
  40610. void `global constructor keyed to'Packets::LWRetBillingKeep::Read()
  40611. {
  40612. std::ios_base::Init::Init(&std::__ioinit);
  40613. __cxa_atexit(_tcf_0_56, 0, &_dso_handle);
  40614. }
  40615. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  40616.  
  40617. //----- (08074708) --------------------------------------------------------
  40618. void __cdecl Packets::LWRetBillingKeep::~LWRetBillingKeep(Packet *a2)
  40619. {
  40620. a2->_vptr_Packet = (int (**)(...))off_80CF528;
  40621. Packet::~Packet(a2);
  40622. }
  40623. // 80CF528: using guessed type _DWORD (__cdecl *off_80CF528[2])(Packets::LWRetBillingKeep *this);
  40624.  
  40625. //----- (08074724) --------------------------------------------------------
  40626. void __cdecl Packets::LWRetBillingKeep::~LWRetBillingKeep(IPRegionTable *a2)
  40627. {
  40628. a2->_vptr_IPRegionTable = (int (**)(...))off_80CF528;
  40629. Packet::~Packet(a2);
  40630. operator delete(a2);
  40631. }
  40632. // 80CF528: using guessed type _DWORD (__cdecl *off_80CF528[2])(Packets::LWRetBillingKeep *this);
  40633.  
  40634. //----- (0807474C) --------------------------------------------------------
  40635. PacketID_t __cdecl Packets::LWRetBillingKeep::GetPacketID(const Packets::LWRetBillingKeep *const this)
  40636. {
  40637. return 536;
  40638. }
  40639.  
  40640. //----- (08074758) --------------------------------------------------------
  40641. UINT __cdecl Packets::LWRetBillingKeep::GetPacketSize(const Packets::LWRetBillingKeep *const this)
  40642. {
  40643. return 64;
  40644. }
  40645.  
  40646. //----- (08074764) --------------------------------------------------------
  40647. BOOL __cdecl Packets::LWRetBillingStart::Read(Packets::LWRetBillingStart *const this, SocketInputStream *const iStream)
  40648. {
  40649. SocketInputStream::Read(iStream, this->mAccount, 0x33u);
  40650. SocketInputStream::Read(iStream, (CHAR *)&this->mResult, 1u);
  40651. SocketInputStream::Read(iStream, (CHAR *)&this->mFeeType, 1u);
  40652. SocketInputStream::Read(iStream, (CHAR *)&this->mLeftTime, 4u);
  40653. SocketInputStream::Read(iStream, (CHAR *)&this->mStorePoint, 4u);
  40654. SocketInputStream::Read(iStream, (CHAR *)&this->mUserPoint, 4u);
  40655. SocketInputStream::Read(iStream, (CHAR *)&this->mWhyFlag, 1u);
  40656. SocketInputStream::Read(iStream, (CHAR *)&this->mCode, 1u);
  40657. SocketInputStream::Read(iStream, (CHAR *)&this->mPlayerID, 2u);
  40658. return 1;
  40659. }
  40660.  
  40661. //----- (08074844) --------------------------------------------------------
  40662. BOOL __cdecl Packets::LWRetBillingStart::Write(const Packets::LWRetBillingStart *const this, SocketOutputStream *const oStream)
  40663. {
  40664. SocketOutputStream::Write(oStream, this->mAccount, 0x33u);
  40665. SocketOutputStream::Write(oStream, (const CHAR *)&this->mResult, 1u);
  40666. SocketOutputStream::Write(oStream, (const CHAR *)&this->mFeeType, 1u);
  40667. SocketOutputStream::Write(oStream, (const CHAR *)&this->mLeftTime, 4u);
  40668. SocketOutputStream::Write(oStream, (const CHAR *)&this->mStorePoint, 4u);
  40669. SocketOutputStream::Write(oStream, (const CHAR *)&this->mUserPoint, 4u);
  40670. SocketOutputStream::Write(oStream, (const CHAR *)&this->mWhyFlag, 1u);
  40671. SocketOutputStream::Write(oStream, (const CHAR *)&this->mCode, 1u);
  40672. SocketOutputStream::Write(oStream, (const CHAR *)&this->mPlayerID, 2u);
  40673. return 1;
  40674. }
  40675.  
  40676. //----- (08074924) --------------------------------------------------------
  40677. UINT __cdecl Packets::LWRetBillingStart::Execute(Packets::LWRetBillingStart *const this, Player *pPlayer)
  40678. {
  40679. return Packets::LWRetBillingStartHandler::Execute(this, pPlayer);
  40680. }
  40681.  
  40682. //----- (08074984) --------------------------------------------------------
  40683. void __cdecl _tcf_0_57(void *a1)
  40684. {
  40685. std::ios_base::Init::~Init(&std::__ioinit);
  40686. }
  40687.  
  40688. //----- (08074994) --------------------------------------------------------
  40689. void `global constructor keyed to'Packets::LWRetBillingStart::Read()
  40690. {
  40691. std::ios_base::Init::Init(&std::__ioinit);
  40692. __cxa_atexit(_tcf_0_57, 0, &_dso_handle);
  40693. }
  40694. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  40695.  
  40696. //----- (080749C0) --------------------------------------------------------
  40697. void __cdecl Packets::LWRetBillingStart::~LWRetBillingStart(Packet *a2)
  40698. {
  40699. a2->_vptr_Packet = (int (**)(...))off_80CF6C8;
  40700. Packet::~Packet(a2);
  40701. }
  40702. // 80CF6C8: using guessed type _DWORD (__cdecl *off_80CF6C8[2])(Packets::LWRetBillingStart *this);
  40703.  
  40704. //----- (080749DC) --------------------------------------------------------
  40705. void __cdecl Packets::LWRetBillingStart::~LWRetBillingStart(IPRegionTable *a2)
  40706. {
  40707. a2->_vptr_IPRegionTable = (int (**)(...))off_80CF6C8;
  40708. Packet::~Packet(a2);
  40709. operator delete(a2);
  40710. }
  40711. // 80CF6C8: using guessed type _DWORD (__cdecl *off_80CF6C8[2])(Packets::LWRetBillingStart *this);
  40712.  
  40713. //----- (08074A04) --------------------------------------------------------
  40714. PacketID_t __cdecl Packets::LWRetBillingStart::GetPacketID(const Packets::LWRetBillingStart *const this)
  40715. {
  40716. return 350;
  40717. }
  40718.  
  40719. //----- (08074A10) --------------------------------------------------------
  40720. UINT __cdecl Packets::LWRetBillingStart::GetPacketSize(const Packets::LWRetBillingStart *const this)
  40721. {
  40722. return 69;
  40723. }
  40724.  
  40725. //----- (08074A1C) --------------------------------------------------------
  40726. BOOL __cdecl Packets::SSConnect::Read(Packets::SSConnect *const this, SocketInputStream *const iStream)
  40727. {
  40728. SocketInputStream::Read(iStream, (CHAR *)&this->m_ServerID, 2u);
  40729. SocketInputStream::Read(iStream, (CHAR *)&this->m_ZoneID, 2u);
  40730. SocketInputStream::Read(iStream, (CHAR *)&this->m_WorldID, 2u);
  40731. return 1;
  40732. }
  40733.  
  40734. //----- (08074AA8) --------------------------------------------------------
  40735. BOOL __cdecl Packets::SSConnect::Write(const Packets::SSConnect *const this, SocketOutputStream *const oStream)
  40736. {
  40737. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_ServerID, 2u);
  40738. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_ZoneID, 2u);
  40739. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_WorldID, 2u);
  40740. return 1;
  40741. }
  40742.  
  40743. //----- (08074B34) --------------------------------------------------------
  40744. UINT __cdecl Packets::SSConnect::Execute(Packets::SSConnect *const this, Player *pPlayer)
  40745. {
  40746. return Packets::SSConnectHandler::Execute(this, pPlayer);
  40747. }
  40748.  
  40749. //----- (08074B94) --------------------------------------------------------
  40750. void __cdecl _tcf_0_58(void *a1)
  40751. {
  40752. std::ios_base::Init::~Init(&std::__ioinit);
  40753. }
  40754.  
  40755. //----- (08074BA4) --------------------------------------------------------
  40756. void `global constructor keyed to'Packets::SSConnect::Read()
  40757. {
  40758. std::ios_base::Init::Init(&std::__ioinit);
  40759. __cxa_atexit(_tcf_0_58, 0, &_dso_handle);
  40760. }
  40761. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  40762.  
  40763. //----- (08074BD0) --------------------------------------------------------
  40764. void __cdecl Packets::SSConnect::~SSConnect(Packet *a2)
  40765. {
  40766. a2->_vptr_Packet = (int (**)(...))off_80CF868;
  40767. Packet::~Packet(a2);
  40768. }
  40769. // 80CF868: using guessed type _DWORD (__cdecl *off_80CF868[2])(Packets::SSConnect *this);
  40770.  
  40771. //----- (08074BEC) --------------------------------------------------------
  40772. void __cdecl Packets::SSConnect::~SSConnect(IPRegionTable *a2)
  40773. {
  40774. a2->_vptr_IPRegionTable = (int (**)(...))off_80CF868;
  40775. Packet::~Packet(a2);
  40776. operator delete(a2);
  40777. }
  40778. // 80CF868: using guessed type _DWORD (__cdecl *off_80CF868[2])(Packets::SSConnect *this);
  40779.  
  40780. //----- (08074C14) --------------------------------------------------------
  40781. PacketID_t __cdecl Packets::SSConnect::GetPacketID(const Packets::SSConnect *const this)
  40782. {
  40783. return 185;
  40784. }
  40785.  
  40786. //----- (08074C20) --------------------------------------------------------
  40787. UINT __cdecl Packets::SSConnect::GetPacketSize(const Packets::SSConnect *const this)
  40788. {
  40789. return 6;
  40790. }
  40791.  
  40792. //----- (08074C2C) --------------------------------------------------------
  40793. BOOL __cdecl Packets::SSScenePlayerCount::Read(Packets::SSScenePlayerCount *const this, SocketInputStream *const iStream)
  40794. {
  40795. SHORT v2; // ax
  40796.  
  40797. SocketInputStream::Read(iStream, (CHAR *)&this->m_nChangeCount, 2u);
  40798. v2 = this->m_nChangeCount;
  40799. if ( v2 <= 0 )
  40800. {
  40801. SocketInputStream::Read(iStream, (CHAR *)&this->m_ServerID, 2u);
  40802. SocketInputStream::Read(iStream, (CHAR *)&this->m_PlayerPoolSize, 4u);
  40803. }
  40804. else
  40805. {
  40806. if ( v2 <= 1024 )
  40807. {
  40808. SocketInputStream::Read(iStream, (CHAR *)this->m_aChangeSceneID, 2 * v2);
  40809. SocketInputStream::Read(iStream, (CHAR *)this->m_aChangeScenePlayerCount, 2 * this->m_nChangeCount);
  40810. }
  40811. SocketInputStream::Read(iStream, (CHAR *)&this->m_nTotalPlayerCount, 2u);
  40812. }
  40813. return 1;
  40814. }
  40815.  
  40816. //----- (08074D08) --------------------------------------------------------
  40817. BOOL __cdecl Packets::SSScenePlayerCount::Write(const Packets::SSScenePlayerCount *const this, SocketOutputStream *const oStream)
  40818. {
  40819. SHORT v2; // ax
  40820.  
  40821. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_nChangeCount, 2u);
  40822. v2 = this->m_nChangeCount;
  40823. if ( v2 <= 0 )
  40824. {
  40825. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_ServerID, 2u);
  40826. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_PlayerPoolSize, 4u);
  40827. }
  40828. else
  40829. {
  40830. if ( v2 <= 1024 )
  40831. {
  40832. SocketOutputStream::Write(oStream, (const CHAR *)this->m_aChangeSceneID, 2 * v2);
  40833. SocketOutputStream::Write(oStream, (const CHAR *)this->m_aChangeScenePlayerCount, 2 * this->m_nChangeCount);
  40834. }
  40835. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_nTotalPlayerCount, 2u);
  40836. }
  40837. return 1;
  40838. }
  40839.  
  40840. //----- (08074DE4) --------------------------------------------------------
  40841. UINT __cdecl Packets::SSScenePlayerCount::Execute(Packets::SSScenePlayerCount *const this, Player *pPlayer)
  40842. {
  40843. return Packets::SSScenePlayerCountHandler::Execute(this, pPlayer);
  40844. }
  40845.  
  40846. //----- (08074E44) --------------------------------------------------------
  40847. void __cdecl _tcf_0_59(void *a1)
  40848. {
  40849. std::ios_base::Init::~Init(&std::__ioinit);
  40850. }
  40851.  
  40852. //----- (08074E54) --------------------------------------------------------
  40853. void `global constructor keyed to'Packets::SSScenePlayerCount::Read()
  40854. {
  40855. std::ios_base::Init::Init(&std::__ioinit);
  40856. __cxa_atexit(_tcf_0_59, 0, &_dso_handle);
  40857. }
  40858. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  40859.  
  40860. //----- (08074E80) --------------------------------------------------------
  40861. void __cdecl Packets::SSScenePlayerCount::~SSScenePlayerCount(Packet *a2)
  40862. {
  40863. a2->_vptr_Packet = (int (**)(...))off_80CF9C8;
  40864. Packet::~Packet(a2);
  40865. }
  40866. // 80CF9C8: using guessed type _DWORD (__cdecl *off_80CF9C8[2])(Packets::SSScenePlayerCount *this);
  40867.  
  40868. //----- (08074E9C) --------------------------------------------------------
  40869. void __cdecl Packets::SSScenePlayerCount::~SSScenePlayerCount(IPRegionTable *a2)
  40870. {
  40871. a2->_vptr_IPRegionTable = (int (**)(...))off_80CF9C8;
  40872. Packet::~Packet(a2);
  40873. operator delete(a2);
  40874. }
  40875. // 80CF9C8: using guessed type _DWORD (__cdecl *off_80CF9C8[2])(Packets::SSScenePlayerCount *this);
  40876.  
  40877. //----- (08074EC4) --------------------------------------------------------
  40878. PacketID_t __cdecl Packets::SSScenePlayerCount::GetPacketID(const Packets::SSScenePlayerCount *const this)
  40879. {
  40880. return 614;
  40881. }
  40882.  
  40883. //----- (08074ED0) --------------------------------------------------------
  40884. UINT __cdecl Packets::SSScenePlayerCount::GetPacketSize(const Packets::SSScenePlayerCount *const this)
  40885. {
  40886. SHORT v1; // ax
  40887. UINT v2; // edx
  40888.  
  40889. v1 = this->m_nChangeCount;
  40890. v2 = 8;
  40891. if ( v1 > 0 )
  40892. v2 = 4 * v1 + 4;
  40893. return v2;
  40894. }
  40895.  
  40896. //----- (08074EF0) --------------------------------------------------------
  40897. BOOL __cdecl Packets::WLBillingEnd::Read(Packets::WLBillingEnd *const this, SocketInputStream *const iStream)
  40898. {
  40899. SocketInputStream::Read(iStream, this->mAccount, 0x33u);
  40900. SocketInputStream::Read(iStream, (CHAR *)&this->mCharLevel, 2u);
  40901. SocketInputStream::Read(iStream, (CHAR *)&this->mEndType, 1u);
  40902. SocketInputStream::Read(iStream, (CHAR *)&this->mStartTime, 4u);
  40903. SocketInputStream::Read(iStream, (CHAR *)&this->mEndTime, 4u);
  40904. return 1;
  40905. }
  40906.  
  40907. //----- (08074F94) --------------------------------------------------------
  40908. BOOL __cdecl Packets::WLBillingEnd::Write(const Packets::WLBillingEnd *const this, SocketOutputStream *const oStream)
  40909. {
  40910. SocketOutputStream::Write(oStream, this->mAccount, 0x33u);
  40911. SocketOutputStream::Write(oStream, (const CHAR *)&this->mCharLevel, 2u);
  40912. SocketOutputStream::Write(oStream, (const CHAR *)&this->mEndType, 1u);
  40913. SocketOutputStream::Write(oStream, (const CHAR *)&this->mStartTime, 4u);
  40914. SocketOutputStream::Write(oStream, (const CHAR *)&this->mEndTime, 4u);
  40915. return 1;
  40916. }
  40917.  
  40918. //----- (08075038) --------------------------------------------------------
  40919. UINT __cdecl Packets::WLBillingEnd::Execute(Packets::WLBillingEnd *const this, Player *pPlayer)
  40920. {
  40921. return Packets::WLBillingEndHandler::Execute(this, pPlayer);
  40922. }
  40923.  
  40924. //----- (08075098) --------------------------------------------------------
  40925. void __cdecl _tcf_0_60(void *a1)
  40926. {
  40927. std::ios_base::Init::~Init(&std::__ioinit);
  40928. }
  40929.  
  40930. //----- (080750A8) --------------------------------------------------------
  40931. void `global constructor keyed to'Packets::WLBillingEnd::Read()
  40932. {
  40933. std::ios_base::Init::Init(&std::__ioinit);
  40934. __cxa_atexit(_tcf_0_60, 0, &_dso_handle);
  40935. }
  40936. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  40937.  
  40938. //----- (080750D4) --------------------------------------------------------
  40939. void __cdecl Packets::WLBillingEnd::~WLBillingEnd(Packet *a2)
  40940. {
  40941. a2->_vptr_Packet = (int (**)(...))off_80CFB68;
  40942. Packet::~Packet(a2);
  40943. }
  40944. // 80CFB68: using guessed type _DWORD (__cdecl *off_80CFB68[2])(Packets::WLBillingEnd *this);
  40945.  
  40946. //----- (080750F0) --------------------------------------------------------
  40947. void __cdecl Packets::WLBillingEnd::~WLBillingEnd(IPRegionTable *a2)
  40948. {
  40949. a2->_vptr_IPRegionTable = (int (**)(...))off_80CFB68;
  40950. Packet::~Packet(a2);
  40951. operator delete(a2);
  40952. }
  40953. // 80CFB68: using guessed type _DWORD (__cdecl *off_80CFB68[2])(Packets::WLBillingEnd *this);
  40954.  
  40955. //----- (08075118) --------------------------------------------------------
  40956. PacketID_t __cdecl Packets::WLBillingEnd::GetPacketID(const Packets::WLBillingEnd *const this)
  40957. {
  40958. return 237;
  40959. }
  40960.  
  40961. //----- (08075124) --------------------------------------------------------
  40962. UINT __cdecl Packets::WLBillingEnd::GetPacketSize(const Packets::WLBillingEnd *const this)
  40963. {
  40964. return 62;
  40965. }
  40966.  
  40967. //----- (08075130) --------------------------------------------------------
  40968. BOOL __cdecl Packets::WLBillingKeep::Read(Packets::WLBillingKeep *const this, SocketInputStream *const iStream)
  40969. {
  40970. SocketInputStream::Read(iStream, this->mAccount, 0x33u);
  40971. SocketInputStream::Read(iStream, (CHAR *)&this->mCharLevel, 2u);
  40972. SocketInputStream::Read(iStream, (CHAR *)&this->mStartTime, 4u);
  40973. SocketInputStream::Read(iStream, (CHAR *)&this->mEndTime, 4u);
  40974. return 1;
  40975. }
  40976.  
  40977. //----- (080751C4) --------------------------------------------------------
  40978. BOOL __cdecl Packets::WLBillingKeep::Write(const Packets::WLBillingKeep *const this, SocketOutputStream *const oStream)
  40979. {
  40980. SocketOutputStream::Write(oStream, this->mAccount, 0x33u);
  40981. SocketOutputStream::Write(oStream, (const CHAR *)&this->mCharLevel, 2u);
  40982. SocketOutputStream::Write(oStream, (const CHAR *)&this->mStartTime, 4u);
  40983. SocketOutputStream::Write(oStream, (const CHAR *)&this->mEndTime, 4u);
  40984. return 1;
  40985. }
  40986.  
  40987. //----- (08075258) --------------------------------------------------------
  40988. UINT __cdecl Packets::WLBillingKeep::Execute(Packets::WLBillingKeep *const this, Player *pPlayer)
  40989. {
  40990. return Packets::WLBillingKeepHandler::Execute(this, pPlayer);
  40991. }
  40992.  
  40993. //----- (080752B8) --------------------------------------------------------
  40994. void __cdecl _tcf_0_61(void *a1)
  40995. {
  40996. std::ios_base::Init::~Init(&std::__ioinit);
  40997. }
  40998.  
  40999. //----- (080752C8) --------------------------------------------------------
  41000. void `global constructor keyed to'Packets::WLBillingKeep::Read()
  41001. {
  41002. std::ios_base::Init::Init(&std::__ioinit);
  41003. __cxa_atexit(_tcf_0_61, 0, &_dso_handle);
  41004. }
  41005. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  41006.  
  41007. //----- (080752F4) --------------------------------------------------------
  41008. void __cdecl Packets::WLBillingKeep::~WLBillingKeep(Packet *a2)
  41009. {
  41010. a2->_vptr_Packet = (int (**)(...))off_80CFCC8;
  41011. Packet::~Packet(a2);
  41012. }
  41013. // 80CFCC8: using guessed type _DWORD (__cdecl *off_80CFCC8[2])(Packets::WLBillingKeep *this);
  41014.  
  41015. //----- (08075310) --------------------------------------------------------
  41016. void __cdecl Packets::WLBillingKeep::~WLBillingKeep(IPRegionTable *a2)
  41017. {
  41018. a2->_vptr_IPRegionTable = (int (**)(...))off_80CFCC8;
  41019. Packet::~Packet(a2);
  41020. operator delete(a2);
  41021. }
  41022. // 80CFCC8: using guessed type _DWORD (__cdecl *off_80CFCC8[2])(Packets::WLBillingKeep *this);
  41023.  
  41024. //----- (08075338) --------------------------------------------------------
  41025. PacketID_t __cdecl Packets::WLBillingKeep::GetPacketID(const Packets::WLBillingKeep *const this)
  41026. {
  41027. return 205;
  41028. }
  41029.  
  41030. //----- (08075344) --------------------------------------------------------
  41031. UINT __cdecl Packets::WLBillingKeep::GetPacketSize(const Packets::WLBillingKeep *const this)
  41032. {
  41033. return 61;
  41034. }
  41035.  
  41036. //----- (08075350) --------------------------------------------------------
  41037. BOOL __cdecl Packets::WLBillingKick::Read(Packets::WLBillingKick *const this, SocketInputStream *const iStream)
  41038. {
  41039. SocketInputStream::Read(iStream, (CHAR *)&this->mWorldID, 2u);
  41040. return 1;
  41041. }
  41042.  
  41043. //----- (080753BC) --------------------------------------------------------
  41044. BOOL __cdecl Packets::WLBillingKick::Write(const Packets::WLBillingKick *const this, SocketOutputStream *const oStream)
  41045. {
  41046. SocketOutputStream::Write(oStream, (const CHAR *)&this->mWorldID, 2u);
  41047. return 1;
  41048. }
  41049.  
  41050. //----- (08075428) --------------------------------------------------------
  41051. UINT __cdecl Packets::WLBillingKick::Execute(Packets::WLBillingKick *const this, Player *pPlayer)
  41052. {
  41053. return Packets::WLBillingKickHandler::Execute(this, pPlayer);
  41054. }
  41055.  
  41056. //----- (08075488) --------------------------------------------------------
  41057. void __cdecl _tcf_0_62(void *a1)
  41058. {
  41059. std::ios_base::Init::~Init(&std::__ioinit);
  41060. }
  41061.  
  41062. //----- (08075498) --------------------------------------------------------
  41063. void `global constructor keyed to'Packets::WLBillingKick::Read()
  41064. {
  41065. std::ios_base::Init::Init(&std::__ioinit);
  41066. __cxa_atexit(_tcf_0_62, 0, &_dso_handle);
  41067. }
  41068. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  41069.  
  41070. //----- (080754C4) --------------------------------------------------------
  41071. void __cdecl Packets::WLBillingKick::~WLBillingKick(Packet *a2)
  41072. {
  41073. a2->_vptr_Packet = (int (**)(...))off_80CFE28;
  41074. Packet::~Packet(a2);
  41075. }
  41076. // 80CFE28: using guessed type _DWORD (__cdecl *off_80CFE28[2])(Packets::WLBillingKick *this);
  41077.  
  41078. //----- (080754E0) --------------------------------------------------------
  41079. void __cdecl Packets::WLBillingKick::~WLBillingKick(IPRegionTable *a2)
  41080. {
  41081. a2->_vptr_IPRegionTable = (int (**)(...))off_80CFE28;
  41082. Packet::~Packet(a2);
  41083. operator delete(a2);
  41084. }
  41085. // 80CFE28: using guessed type _DWORD (__cdecl *off_80CFE28[2])(Packets::WLBillingKick *this);
  41086.  
  41087. //----- (08075508) --------------------------------------------------------
  41088. PacketID_t __cdecl Packets::WLBillingKick::GetPacketID(const Packets::WLBillingKick *const this)
  41089. {
  41090. return 287;
  41091. }
  41092.  
  41093. //----- (08075514) --------------------------------------------------------
  41094. UINT __cdecl Packets::WLBillingKick::GetPacketSize(const Packets::WLBillingKick *const this)
  41095. {
  41096. return 2;
  41097. }
  41098.  
  41099. //----- (08075520) --------------------------------------------------------
  41100. BOOL __cdecl Packets::WLBillingStart::Read(Packets::WLBillingStart *const this, SocketInputStream *const iStream)
  41101. {
  41102. SocketInputStream::Read(iStream, this->mAccount, 0x33u);
  41103. SocketInputStream::Read(iStream, this->mCharName, 0x33u);
  41104. SocketInputStream::Read(iStream, (CHAR *)&this->mCharGUID, 4u);
  41105. SocketInputStream::Read(iStream, (CHAR *)&this->mCharLevel, 2u);
  41106. SocketInputStream::Read(iStream, (CHAR *)&this->mStartTime, 4u);
  41107. SocketInputStream::Read(iStream, (CHAR *)&this->mPlayerID, 2u);
  41108. return 1;
  41109. }
  41110.  
  41111. //----- (080755D8) --------------------------------------------------------
  41112. BOOL __cdecl Packets::WLBillingStart::Write(const Packets::WLBillingStart *const this, SocketOutputStream *const oStream)
  41113. {
  41114. SocketOutputStream::Write(oStream, this->mAccount, 0x33u);
  41115. SocketOutputStream::Write(oStream, this->mCharName, 0x33u);
  41116. SocketOutputStream::Write(oStream, (const CHAR *)&this->mCharGUID, 4u);
  41117. SocketOutputStream::Write(oStream, (const CHAR *)&this->mCharLevel, 2u);
  41118. SocketOutputStream::Write(oStream, (const CHAR *)&this->mStartTime, 4u);
  41119. SocketOutputStream::Write(oStream, (const CHAR *)&this->mPlayerID, 2u);
  41120. return 1;
  41121. }
  41122.  
  41123. //----- (08075690) --------------------------------------------------------
  41124. UINT __cdecl Packets::WLBillingStart::Execute(Packets::WLBillingStart *const this, Player *pPlayer)
  41125. {
  41126. return Packets::WLBillingStartHandler::Execute(this, pPlayer);
  41127. }
  41128.  
  41129. //----- (080756F0) --------------------------------------------------------
  41130. void __cdecl _tcf_0_63(void *a1)
  41131. {
  41132. std::ios_base::Init::~Init(&std::__ioinit);
  41133. }
  41134.  
  41135. //----- (08075700) --------------------------------------------------------
  41136. void `global constructor keyed to'Packets::WLBillingStart::Read()
  41137. {
  41138. std::ios_base::Init::Init(&std::__ioinit);
  41139. __cxa_atexit(_tcf_0_63, 0, &_dso_handle);
  41140. }
  41141. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  41142.  
  41143. //----- (0807572C) --------------------------------------------------------
  41144. void __cdecl Packets::WLBillingStart::~WLBillingStart(Packet *a2)
  41145. {
  41146. a2->_vptr_Packet = (int (**)(...))off_80CFF88;
  41147. Packet::~Packet(a2);
  41148. }
  41149. // 80CFF88: using guessed type _DWORD (__cdecl *off_80CFF88[2])(Packets::WLBillingStart *this);
  41150.  
  41151. //----- (08075748) --------------------------------------------------------
  41152. void __cdecl Packets::WLBillingStart::~WLBillingStart(IPRegionTable *a2)
  41153. {
  41154. a2->_vptr_IPRegionTable = (int (**)(...))off_80CFF88;
  41155. Packet::~Packet(a2);
  41156. operator delete(a2);
  41157. }
  41158. // 80CFF88: using guessed type _DWORD (__cdecl *off_80CFF88[2])(Packets::WLBillingStart *this);
  41159.  
  41160. //----- (08075770) --------------------------------------------------------
  41161. PacketID_t __cdecl Packets::WLBillingStart::GetPacketID(const Packets::WLBillingStart *const this)
  41162. {
  41163. return 470;
  41164. }
  41165.  
  41166. //----- (0807577C) --------------------------------------------------------
  41167. UINT __cdecl Packets::WLBillingStart::GetPacketSize(const Packets::WLBillingStart *const this)
  41168. {
  41169. return 114;
  41170. }
  41171.  
  41172. //----- (08075788) --------------------------------------------------------
  41173. BOOL __cdecl Packets::WLRetCharLogin::Read(Packets::WLRetCharLogin *const this, SocketInputStream *const iStream)
  41174. {
  41175. SocketInputStream::Read(iStream, (CHAR *)&this->Result, 4u);
  41176. SocketInputStream::Read(iStream, this->szAccount, 0x32u);
  41177. SocketInputStream::Read(iStream, (CHAR *)&this->PlayerID, 2u);
  41178. SocketInputStream::Read(iStream, (CHAR *)&this->HoldStatus, 4u);
  41179. SocketInputStream::Read(iStream, (CHAR *)&this->PlayerGUID, 4u);
  41180. SocketInputStream::Read(iStream, (CHAR *)&this->ServerID, 2u);
  41181. return 1;
  41182. }
  41183.  
  41184. //----- (0807583C) --------------------------------------------------------
  41185. BOOL __cdecl Packets::WLRetCharLogin::Write(const Packets::WLRetCharLogin *const this, SocketOutputStream *const oStream)
  41186. {
  41187. SocketOutputStream::Write(oStream, (const CHAR *)&this->Result, 4u);
  41188. SocketOutputStream::Write(oStream, this->szAccount, 0x32u);
  41189. SocketOutputStream::Write(oStream, (const CHAR *)&this->PlayerID, 2u);
  41190. SocketOutputStream::Write(oStream, (const CHAR *)&this->HoldStatus, 4u);
  41191. SocketOutputStream::Write(oStream, (const CHAR *)&this->PlayerGUID, 4u);
  41192. SocketOutputStream::Write(oStream, (const CHAR *)&this->ServerID, 2u);
  41193. return 1;
  41194. }
  41195.  
  41196. //----- (080758F0) --------------------------------------------------------
  41197. UINT __cdecl Packets::WLRetCharLogin::Execute(Packets::WLRetCharLogin *const this, Player *pPlayer)
  41198. {
  41199. return Packets::WLRetCharLoginHandler::Execute(this, pPlayer);
  41200. }
  41201.  
  41202. //----- (08075950) --------------------------------------------------------
  41203. const CHAR *__cdecl Packets::WLRetCharLogin::GetAccount(const Packets::WLRetCharLogin *const this)
  41204. {
  41205. return this->szAccount;
  41206. }
  41207.  
  41208. //----- (0807595C) --------------------------------------------------------
  41209. void __cdecl Packets::WLRetCharLogin::SetAccount(Packets::WLRetCharLogin *const this, const CHAR *pAccount)
  41210. {
  41211. if ( !pAccount )
  41212. __assert__(
  41213. "../../Common/Packets/WLRetCharLogin.cpp",
  41214. 0x37u,
  41215. "void Packets::WLRetCharLogin::SetAccount(const CHAR*)",
  41216. "pAccount");
  41217. strncpy(this->szAccount, pAccount, 0x32u);
  41218. this->szAccount[50] = 0;
  41219. }
  41220.  
  41221. //----- (080759A0) --------------------------------------------------------
  41222. void __cdecl _tcf_0_64(void *a1)
  41223. {
  41224. std::ios_base::Init::~Init(&std::__ioinit);
  41225. }
  41226.  
  41227. //----- (080759B0) --------------------------------------------------------
  41228. void `global constructor keyed to'Packets::WLRetCharLogin::Read()
  41229. {
  41230. std::ios_base::Init::Init(&std::__ioinit);
  41231. __cxa_atexit(_tcf_0_64, 0, &_dso_handle);
  41232. }
  41233. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  41234.  
  41235. //----- (080759DC) --------------------------------------------------------
  41236. void __cdecl Packets::WLRetCharLogin::~WLRetCharLogin(Packet *a2)
  41237. {
  41238. a2->_vptr_Packet = (int (**)(...))off_80D00E8;
  41239. Packet::~Packet(a2);
  41240. }
  41241. // 80D00E8: using guessed type _DWORD (__cdecl *off_80D00E8[2])(Packets::WLRetCharLogin *this);
  41242.  
  41243. //----- (080759F8) --------------------------------------------------------
  41244. void __cdecl Packets::WLRetCharLogin::~WLRetCharLogin(IPRegionTable *a2)
  41245. {
  41246. a2->_vptr_IPRegionTable = (int (**)(...))off_80D00E8;
  41247. Packet::~Packet(a2);
  41248. operator delete(a2);
  41249. }
  41250. // 80D00E8: using guessed type _DWORD (__cdecl *off_80D00E8[2])(Packets::WLRetCharLogin *this);
  41251.  
  41252. //----- (08075A20) --------------------------------------------------------
  41253. PacketID_t __cdecl Packets::WLRetCharLogin::GetPacketID(const Packets::WLRetCharLogin *const this)
  41254. {
  41255. return 91;
  41256. }
  41257.  
  41258. //----- (08075A2C) --------------------------------------------------------
  41259. UINT __cdecl Packets::WLRetCharLogin::GetPacketSize(const Packets::WLRetCharLogin *const this)
  41260. {
  41261. return 66;
  41262. }
  41263.  
  41264. //----- (08075A38) --------------------------------------------------------
  41265. #error "8075AD8: positive sp value has been found (funcsize=53)"
  41266.  
  41267. //----- (08075BA8) --------------------------------------------------------
  41268. BOOL __cdecl Packets::BLRetAskBuy::Write(const Packets::BLRetAskBuy *const this, SocketBillingOutputStream *const oStream)
  41269. {
  41270. return 1;
  41271. }
  41272.  
  41273. //----- (08075BB4) --------------------------------------------------------
  41274. UINT __cdecl Packets::BLRetAskBuy::Execute(Packets::BLRetAskBuy *const this, Player *pPlayer)
  41275. {
  41276. return Packets::BLRetAskBuyHandler::Execute(this, pPlayer);
  41277. }
  41278.  
  41279. //----- (08075C14) --------------------------------------------------------
  41280. void __cdecl _tcf_0_65(void *a1)
  41281. {
  41282. std::ios_base::Init::~Init(&std::__ioinit);
  41283. }
  41284.  
  41285. //----- (08075C24) --------------------------------------------------------
  41286. void `global constructor keyed to'Packets::BLRetAskBuy::Read()
  41287. {
  41288. std::ios_base::Init::Init(&std::__ioinit);
  41289. __cxa_atexit(_tcf_0_65, 0, &_dso_handle);
  41290. }
  41291. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  41292.  
  41293. //----- (08075C50) --------------------------------------------------------
  41294. void __cdecl Packets::BLRetAskBuy::~BLRetAskBuy(BillPacket *a2)
  41295. {
  41296. a2->_vptr_BillPacket = (int (**)(...))off_80D0288;
  41297. BillPacket::~BillPacket(a2);
  41298. }
  41299. // 80D0288: using guessed type _DWORD (__cdecl *off_80D0288[2])(Packets::BLRetAskBuy *this);
  41300.  
  41301. //----- (08075C6C) --------------------------------------------------------
  41302. void __cdecl Packets::BLRetAskBuy::~BLRetAskBuy(IPRegionTable *a2)
  41303. {
  41304. a2->_vptr_IPRegionTable = (int (**)(...))off_80D0288;
  41305. BillPacket::~BillPacket(a2);
  41306. operator delete(a2);
  41307. }
  41308. // 80D0288: using guessed type _DWORD (__cdecl *off_80D0288[2])(Packets::BLRetAskBuy *this);
  41309.  
  41310. //----- (08075C94) --------------------------------------------------------
  41311. BPacketID_t __cdecl Packets::BLRetAskBuy::GetPacketID(const Packets::BLRetAskBuy *const this)
  41312. {
  41313. return -31;
  41314. }
  41315.  
  41316. //----- (08075CA0) --------------------------------------------------------
  41317. UINT __cdecl Packets::BLRetAskBuy::GetPacketSize(const Packets::BLRetAskBuy *const this)
  41318. {
  41319. int v1; // ecx
  41320. UINT result; // eax
  41321.  
  41322. v1 = this->mAccLength;
  41323. result = v1 + 23;
  41324. if ( this->mBuyResult <= 1u )
  41325. result = v1 + 6 * this->mGoodsNum + 29;
  41326. return result;
  41327. }
  41328.  
  41329. //----- (08075CC0) --------------------------------------------------------
  41330. BOOL __cdecl Packets::BLRetAskPoint::Read(Packets::BLRetAskPoint *const this, SocketBillingInputStream *const iStream)
  41331. {
  41332. BYTE v2; // al
  41333. UINT v3; // eax
  41334.  
  41335. SocketInputStream::Read(&iStream->0, (CHAR *)&this->mAccLength, 1u);
  41336. v2 = this->mAccLength;
  41337. if ( v2 > 0x32u )
  41338. {
  41339. v2 = 50;
  41340. this->mAccLength = 50;
  41341. }
  41342. SocketInputStream::Read(&iStream->0, this->mAccount, v2);
  41343. SocketInputStream::Read(&iStream->0, (CHAR *)&this->mPoint, 4u);
  41344. v3 = this->mPoint;
  41345. LOWORD(v3) = __ROR2__(v3, 8);
  41346. v3 = __ROR4__(v3, 16);
  41347. LOWORD(v3) = __ROR2__(v3, 8);
  41348. this->mPoint = v3;
  41349. return 1;
  41350. }
  41351.  
  41352. //----- (08075D70) --------------------------------------------------------
  41353. BOOL __cdecl Packets::BLRetAskPoint::Write(const Packets::BLRetAskPoint *const this, SocketBillingOutputStream *const oStream)
  41354. {
  41355. return 1;
  41356. }
  41357.  
  41358. //----- (08075D7C) --------------------------------------------------------
  41359. UINT __cdecl Packets::BLRetAskPoint::Execute(Packets::BLRetAskPoint *const this, Player *pPlayer)
  41360. {
  41361. return Packets::BLRetAskPointHandler::Execute(this, pPlayer);
  41362. }
  41363.  
  41364. //----- (08075DDC) --------------------------------------------------------
  41365. void __cdecl _tcf_0_66(void *a1)
  41366. {
  41367. std::ios_base::Init::~Init(&std::__ioinit);
  41368. }
  41369.  
  41370. //----- (08075DEC) --------------------------------------------------------
  41371. void `global constructor keyed to'Packets::BLRetAskPoint::Read()
  41372. {
  41373. std::ios_base::Init::Init(&std::__ioinit);
  41374. __cxa_atexit(_tcf_0_66, 0, &_dso_handle);
  41375. }
  41376. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  41377.  
  41378. //----- (08075E18) --------------------------------------------------------
  41379. void __cdecl Packets::BLRetAskPoint::~BLRetAskPoint(BillPacket *a2)
  41380. {
  41381. a2->_vptr_BillPacket = (int (**)(...))off_80D0408;
  41382. BillPacket::~BillPacket(a2);
  41383. }
  41384. // 80D0408: using guessed type _DWORD (__cdecl *off_80D0408[2])(Packets::BLRetAskPoint *this);
  41385.  
  41386. //----- (08075E34) --------------------------------------------------------
  41387. void __cdecl Packets::BLRetAskPoint::~BLRetAskPoint(IPRegionTable *a2)
  41388. {
  41389. a2->_vptr_IPRegionTable = (int (**)(...))off_80D0408;
  41390. BillPacket::~BillPacket(a2);
  41391. operator delete(a2);
  41392. }
  41393. // 80D0408: using guessed type _DWORD (__cdecl *off_80D0408[2])(Packets::BLRetAskPoint *this);
  41394.  
  41395. //----- (08075E5C) --------------------------------------------------------
  41396. BPacketID_t __cdecl Packets::BLRetAskPoint::GetPacketID(const Packets::BLRetAskPoint *const this)
  41397. {
  41398. return -30;
  41399. }
  41400.  
  41401. //----- (08075E68) --------------------------------------------------------
  41402. int __cdecl Packets::BLRetAskPoint::GetPacketSize(int a2)
  41403. {
  41404. return *(unsigned __int8 *)(a2 + 7) + 26;
  41405. }
  41406.  
  41407. //----- (08075E78) --------------------------------------------------------
  41408. #error "8075F1C: positive sp value has been found (funcsize=56)"
  41409.  
  41410. //----- (08075F98) --------------------------------------------------------
  41411. BOOL __cdecl Packets::BLRetPrize::Write(const Packets::BLRetPrize *const this, SocketBillingOutputStream *const oStream)
  41412. {
  41413. return 1;
  41414. }
  41415.  
  41416. //----- (08075FA4) --------------------------------------------------------
  41417. UINT __cdecl Packets::BLRetPrize::Execute(Packets::BLRetPrize *const this, Player *pPlayer)
  41418. {
  41419. return Packets::BLRetPrizeHandler::Execute(this, pPlayer);
  41420. }
  41421.  
  41422. //----- (08076004) --------------------------------------------------------
  41423. void __cdecl _tcf_0_67(void *a1)
  41424. {
  41425. std::ios_base::Init::~Init(&std::__ioinit);
  41426. }
  41427.  
  41428. //----- (08076014) --------------------------------------------------------
  41429. void `global constructor keyed to'Packets::BLRetPrize::Read()
  41430. {
  41431. std::ios_base::Init::Init(&std::__ioinit);
  41432. __cxa_atexit(_tcf_0_67, 0, &_dso_handle);
  41433. }
  41434. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  41435.  
  41436. //----- (08076040) --------------------------------------------------------
  41437. void __cdecl Packets::BLRetPrize::~BLRetPrize(BillPacket *a2)
  41438. {
  41439. a2->_vptr_BillPacket = (int (**)(...))off_80D0588;
  41440. BillPacket::~BillPacket(a2);
  41441. }
  41442. // 80D0588: using guessed type _DWORD (__cdecl *off_80D0588[2])(Packets::BLRetPrize *this);
  41443.  
  41444. //----- (0807605C) --------------------------------------------------------
  41445. void __cdecl Packets::BLRetPrize::~BLRetPrize(IPRegionTable *a2)
  41446. {
  41447. a2->_vptr_IPRegionTable = (int (**)(...))off_80D0588;
  41448. BillPacket::~BillPacket(a2);
  41449. operator delete(a2);
  41450. }
  41451. // 80D0588: using guessed type _DWORD (__cdecl *off_80D0588[2])(Packets::BLRetPrize *this);
  41452.  
  41453. //----- (08076084) --------------------------------------------------------
  41454. BPacketID_t __cdecl Packets::BLRetPrize::GetPacketID(const Packets::BLRetPrize *const this)
  41455. {
  41456. return -60;
  41457. }
  41458.  
  41459. //----- (08076090) --------------------------------------------------------
  41460. UINT __cdecl Packets::BLRetPrize::GetPacketSize(const Packets::BLRetPrize *const this)
  41461. {
  41462. BYTE v1; // dl
  41463. int v2; // ebx
  41464. UINT result; // eax
  41465.  
  41466. v1 = this->mPrizeResult;
  41467. v2 = this->mAccLength;
  41468. result = v2 + 23;
  41469. if ( !v1 || v1 == 2 )
  41470. result = v2 + 21 * this->mPrizeNum + 24;
  41471. return result;
  41472. }
  41473.  
  41474. //----- (080760C0) --------------------------------------------------------
  41475. BOOL __cdecl Packets::LBAskBuy::Read(Packets::LBAskBuy *const this, SocketBillingInputStream *const iStream)
  41476. {
  41477. return 1;
  41478. }
  41479.  
  41480. //----- (080760CC) --------------------------------------------------------
  41481. BOOL __cdecl Packets::LBAskBuy::Write(const Packets::LBAskBuy *const this, SocketBillingOutputStream *const oStream)
  41482. {
  41483. const Packets::LBAskBuy *v2; // ebx
  41484. UINT v3; // eax
  41485. UINT v4; // eax
  41486. UINT uCostPoint; // [esp+4h] [ebp-18h]
  41487. USHORT uGoodsNum; // [esp+Ah] [ebp-12h]
  41488. UINT uGoodsType; // [esp+Ch] [ebp-10h]
  41489. USHORT uGoodsTypeNum; // [esp+12h] [ebp-Ah]
  41490.  
  41491. v2 = this;
  41492. SocketOutputStream::Write(&oStream->0, (const CHAR *)&this->mAccLength, 1u);
  41493. SocketOutputStream::Write(&oStream->0, v2->mAccount, v2->mAccLength);
  41494. SocketOutputStream::Write(&oStream->0, (const CHAR *)&this->mIPLength, 1u);
  41495. SocketOutputStream::Write(&oStream->0, v2->mIP, v2->mIPLength);
  41496. SocketOutputStream::Write(&oStream->0, (const CHAR *)&this->mCharNameLength, 1u);
  41497. SocketOutputStream::Write(&oStream->0, v2->mCharName, v2->mCharNameLength);
  41498. SocketOutputStream::Write(&oStream->0, this->mPrizeSerial, 0x15u);
  41499. uGoodsTypeNum = __ROR2__(this->mGoodsTypeNum, 8);
  41500. SocketOutputStream::Write(&oStream->0, (const CHAR *)&uGoodsTypeNum, 2u);
  41501. v3 = this->mGoodsType;
  41502. LOWORD(v3) = __ROR2__(v3, 8);
  41503. v3 = __ROR4__(v3, 16);
  41504. LOWORD(v3) = __ROR2__(v3, 8);
  41505. uGoodsType = v3;
  41506. SocketOutputStream::Write(&oStream->0, (const CHAR *)&uGoodsType, 4u);
  41507. uGoodsNum = __ROR2__(this->mGoodsNumber, 8);
  41508. SocketOutputStream::Write(&oStream->0, (const CHAR *)&uGoodsNum, 2u);
  41509. v4 = this->mCostPoint;
  41510. LOWORD(v4) = __ROR2__(v4, 8);
  41511. v4 = __ROR4__(v4, 16);
  41512. LOWORD(v4) = __ROR2__(v4, 8);
  41513. uCostPoint = v4;
  41514. SocketOutputStream::Write(&oStream->0, (const CHAR *)&uCostPoint, 4u);
  41515. return 1;
  41516. }
  41517.  
  41518. //----- (0807621C) --------------------------------------------------------
  41519. UINT __cdecl Packets::LBAskBuy::Execute(Packets::LBAskBuy *const this, Player *pPlayer)
  41520. {
  41521. return Packets::LBAskBuyHandler::Execute(this, pPlayer);
  41522. }
  41523.  
  41524. //----- (0807627C) --------------------------------------------------------
  41525. void __cdecl _tcf_0_68(void *a1)
  41526. {
  41527. std::ios_base::Init::~Init(&std::__ioinit);
  41528. }
  41529.  
  41530. //----- (0807628C) --------------------------------------------------------
  41531. void `global constructor keyed to'Packets::LBAskBuy::Read()
  41532. {
  41533. std::ios_base::Init::Init(&std::__ioinit);
  41534. __cxa_atexit(_tcf_0_68, 0, &_dso_handle);
  41535. }
  41536. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  41537.  
  41538. //----- (080762B8) --------------------------------------------------------
  41539. void __cdecl Packets::LBAskBuy::~LBAskBuy(BillPacket *a2)
  41540. {
  41541. a2->_vptr_BillPacket = (int (**)(...))off_80D0708;
  41542. BillPacket::~BillPacket(a2);
  41543. }
  41544. // 80D0708: using guessed type _DWORD (__cdecl *off_80D0708[2])(Packets::LBAskBuy *this);
  41545.  
  41546. //----- (080762D4) --------------------------------------------------------
  41547. void __cdecl Packets::LBAskBuy::~LBAskBuy(IPRegionTable *a2)
  41548. {
  41549. a2->_vptr_IPRegionTable = (int (**)(...))off_80D0708;
  41550. BillPacket::~BillPacket(a2);
  41551. operator delete(a2);
  41552. }
  41553. // 80D0708: using guessed type _DWORD (__cdecl *off_80D0708[2])(Packets::LBAskBuy *this);
  41554.  
  41555. //----- (080762FC) --------------------------------------------------------
  41556. BPacketID_t __cdecl Packets::LBAskBuy::GetPacketID(const Packets::LBAskBuy *const this)
  41557. {
  41558. return -31;
  41559. }
  41560.  
  41561. //----- (08076308) --------------------------------------------------------
  41562. int __cdecl Packets::LBAskBuy::GetPacketSize(unsigned __int8 *a2)
  41563. {
  41564. return a2[59] + a2[7] + a2[76] + 36;
  41565. }
  41566.  
  41567. //----- (08076324) --------------------------------------------------------
  41568. BOOL __cdecl Packets::LBAskPoint::Read(Packets::LBAskPoint *const this, SocketBillingInputStream *const iStream)
  41569. {
  41570. return 1;
  41571. }
  41572.  
  41573. //----- (08076330) --------------------------------------------------------
  41574. BOOL __cdecl Packets::LBAskPoint::Write(const Packets::LBAskPoint *const this, SocketBillingOutputStream *const oStream)
  41575. {
  41576. const Packets::LBAskPoint *v2; // ebx
  41577.  
  41578. v2 = this;
  41579. SocketOutputStream::Write(&oStream->0, (const CHAR *)&this->mAccLength, 1u);
  41580. SocketOutputStream::Write(&oStream->0, v2->mAccount, v2->mAccLength);
  41581. SocketOutputStream::Write(&oStream->0, (const CHAR *)&this->mIPLength, 1u);
  41582. SocketOutputStream::Write(&oStream->0, v2->mIP, v2->mIPLength);
  41583. SocketOutputStream::Write(&oStream->0, (const CHAR *)&this->mCharNameLength, 1u);
  41584. SocketOutputStream::Write(&oStream->0, v2->mCharName, v2->mCharNameLength);
  41585. return 1;
  41586. }
  41587.  
  41588. //----- (080763EC) --------------------------------------------------------
  41589. UINT __cdecl Packets::LBAskPoint::Execute(Packets::LBAskPoint *const this, Player *pPlayer)
  41590. {
  41591. return Packets::LBAskPointHandler::Execute(this, pPlayer);
  41592. }
  41593.  
  41594. //----- (0807644C) --------------------------------------------------------
  41595. void __cdecl _tcf_0_69(void *a1)
  41596. {
  41597. std::ios_base::Init::~Init(&std::__ioinit);
  41598. }
  41599.  
  41600. //----- (0807645C) --------------------------------------------------------
  41601. void `global constructor keyed to'Packets::LBAskPoint::Read()
  41602. {
  41603. std::ios_base::Init::Init(&std::__ioinit);
  41604. __cxa_atexit(_tcf_0_69, 0, &_dso_handle);
  41605. }
  41606. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  41607.  
  41608. //----- (08076488) --------------------------------------------------------
  41609. void __cdecl Packets::LBAskPoint::~LBAskPoint(BillPacket *a2)
  41610. {
  41611. a2->_vptr_BillPacket = (int (**)(...))off_80D0868;
  41612. BillPacket::~BillPacket(a2);
  41613. }
  41614. // 80D0868: using guessed type _DWORD (__cdecl *off_80D0868[2])(Packets::LBAskPoint *this);
  41615.  
  41616. //----- (080764A4) --------------------------------------------------------
  41617. void __cdecl Packets::LBAskPoint::~LBAskPoint(IPRegionTable *a2)
  41618. {
  41619. a2->_vptr_IPRegionTable = (int (**)(...))off_80D0868;
  41620. BillPacket::~BillPacket(a2);
  41621. operator delete(a2);
  41622. }
  41623. // 80D0868: using guessed type _DWORD (__cdecl *off_80D0868[2])(Packets::LBAskPoint *this);
  41624.  
  41625. //----- (080764CC) --------------------------------------------------------
  41626. BPacketID_t __cdecl Packets::LBAskPoint::GetPacketID(const Packets::LBAskPoint *const this)
  41627. {
  41628. return -30;
  41629. }
  41630.  
  41631. //----- (080764D8) --------------------------------------------------------
  41632. int __cdecl Packets::LBAskPoint::GetPacketSize(unsigned __int8 *a2)
  41633. {
  41634. return a2[59] + a2[7] + a2[76] + 3;
  41635. }
  41636.  
  41637. //----- (080764F4) --------------------------------------------------------
  41638. BOOL __cdecl Packets::LBLAskNewUserCard::Read(Packets::LBLAskNewUserCard *const this, SocketBillingInputStream *const iStream)
  41639. {
  41640. BYTE v3; // al
  41641. BYTE v4; // al
  41642. BYTE v5; // al
  41643. Packets::LBLAskNewUserCard *v6; // edi
  41644. INT i; // [esp+8h] [ebp-10h]
  41645.  
  41646. if ( this->mType != 1 )
  41647. __assert__(
  41648. "../../Common/Packets/LBLAskNewUserCard.cpp",
  41649. 0x1Du,
  41650. "virtual BOOL Packets::LBLAskNewUserCard::Read(SocketBillingInputStream&)",
  41651. "FALSE");
  41652. SocketInputStream::Read(&iStream->0, (CHAR *)&this->mAccLength, 1u);
  41653. v3 = this->mAccLength;
  41654. if ( v3 > 0x32u )
  41655. {
  41656. this->mAccLength = 50;
  41657. v3 = 50;
  41658. }
  41659. SocketInputStream::Read(&iStream->0, this->mAccount, v3);
  41660. SocketInputStream::Read(&iStream->0, (CHAR *)&this->mPrizeResult, 1u);
  41661. v4 = this->mPrizeResult;
  41662. if ( v4 && v4 != 2 )
  41663. return 1;
  41664. SocketInputStream::Read(&iStream->0, (CHAR *)&this->mPrizeNum, 1u);
  41665. v5 = this->mPrizeNum;
  41666. if ( v5 > 0x1Eu )
  41667. {
  41668. this->mPrizeNum = 30;
  41669. v5 = 30;
  41670. }
  41671. i = 0;
  41672. if ( !v5 )
  41673. return 1;
  41674. v6 = this;
  41675. do
  41676. {
  41677. SocketInputStream::Read(&iStream->0, (CHAR *)v6->mPrize, 0x14u);
  41678. SocketInputStream::Read(&iStream->0, (CHAR *)&v6->mPrize[0].m_PrizeNum, 1u);
  41679. ++i;
  41680. v6 = (Packets::LBLAskNewUserCard *)((char *)v6 + 21);
  41681. }
  41682. while ( this->mPrizeNum > i );
  41683. return 1;
  41684. }
  41685.  
  41686. //----- (08076644) --------------------------------------------------------
  41687. BOOL __cdecl Packets::LBLAskNewUserCard::Write(const Packets::LBLAskNewUserCard *const this, SocketBillingOutputStream *const oStream)
  41688. {
  41689. UINT v2; // eax
  41690. USHORT nLevel; // [esp+Ah] [ebp-Eh]
  41691. UINT unGuid; // [esp+Ch] [ebp-Ch]
  41692.  
  41693. if ( this->mType )
  41694. __assert__(
  41695. "../../Common/Packets/LBLAskNewUserCard.cpp",
  41696. 0x3Bu,
  41697. "virtual BOOL Packets::LBLAskNewUserCard::Write(SocketBillingOutputStream&) const",
  41698. "FALSE");
  41699. SocketOutputStream::Write(&oStream->0, (const CHAR *)&this->mCardLength, 1u);
  41700. SocketOutputStream::Write(&oStream->0, this->mNewuserCard, this->mCardLength);
  41701. SocketOutputStream::Write(&oStream->0, (const CHAR *)&this->mAccLength, 1u);
  41702. SocketOutputStream::Write(&oStream->0, this->mAccount, this->mAccLength);
  41703. SocketOutputStream::Write(&oStream->0, (const CHAR *)&this->mIPLength, 1u);
  41704. SocketOutputStream::Write(&oStream->0, this->mIP, this->mIPLength);
  41705. SocketOutputStream::Write(&oStream->0, (const CHAR *)&this->mCharNameLength, 1u);
  41706. SocketOutputStream::Write(&oStream->0, this->mCharName, this->mCharNameLength);
  41707. v2 = this->mAccGuid;
  41708. LOWORD(v2) = __ROR2__(v2, 8);
  41709. v2 = __ROR4__(v2, 16);
  41710. LOWORD(v2) = __ROR2__(v2, 8);
  41711. unGuid = v2;
  41712. nLevel = __ROR2__(this->mAccLevel, 8);
  41713. SocketOutputStream::Write(&oStream->0, (const CHAR *)&unGuid, 4u);
  41714. SocketOutputStream::Write(&oStream->0, (const CHAR *)&nLevel, 2u);
  41715. return 1;
  41716. }
  41717.  
  41718. //----- (08076798) --------------------------------------------------------
  41719. UINT __cdecl Packets::LBLAskNewUserCard::Execute(Packets::LBLAskNewUserCard *const this, Player *pPlayer)
  41720. {
  41721. return Packets::LBLAskNewUserCardHandler::Execute(this, pPlayer);
  41722. }
  41723.  
  41724. //----- (080767F8) --------------------------------------------------------
  41725. void __cdecl _tcf_0_70(void *a1)
  41726. {
  41727. std::ios_base::Init::~Init(&std::__ioinit);
  41728. }
  41729.  
  41730. //----- (08076808) --------------------------------------------------------
  41731. void `global constructor keyed to'Packets::LBLAskNewUserCard::Read()
  41732. {
  41733. std::ios_base::Init::Init(&std::__ioinit);
  41734. __cxa_atexit(_tcf_0_70, 0, &_dso_handle);
  41735. }
  41736. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  41737.  
  41738. //----- (08076834) --------------------------------------------------------
  41739. void __cdecl Packets::LBLAskNewUserCard::~LBLAskNewUserCard(BillPacket *a2)
  41740. {
  41741. a2->_vptr_BillPacket = (int (**)(...))off_80D09E8;
  41742. BillPacket::~BillPacket(a2);
  41743. }
  41744. // 80D09E8: using guessed type _DWORD (__cdecl *off_80D09E8[2])(Packets::LBLAskNewUserCard *this);
  41745.  
  41746. //----- (08076850) --------------------------------------------------------
  41747. void __cdecl Packets::LBLAskNewUserCard::~LBLAskNewUserCard(IPRegionTable *a2)
  41748. {
  41749. a2->_vptr_IPRegionTable = (int (**)(...))off_80D09E8;
  41750. BillPacket::~BillPacket(a2);
  41751. operator delete(a2);
  41752. }
  41753. // 80D09E8: using guessed type _DWORD (__cdecl *off_80D09E8[2])(Packets::LBLAskNewUserCard *this);
  41754.  
  41755. //----- (08076878) --------------------------------------------------------
  41756. BPacketID_t __cdecl Packets::LBLAskNewUserCard::GetPacketID(const Packets::LBLAskNewUserCard *const this)
  41757. {
  41758. return -63;
  41759. }
  41760.  
  41761. //----- (08076884) --------------------------------------------------------
  41762. UINT __cdecl Packets::LBLAskNewUserCard::GetPacketSize(const Packets::LBLAskNewUserCard *const this)
  41763. {
  41764. BYTE v1; // al
  41765. int v2; // edx
  41766. UINT v3; // ebx
  41767. BYTE v5; // al
  41768.  
  41769. v1 = this->mType;
  41770. v2 = this->mAccLength;
  41771. v3 = v2 + 1;
  41772. if ( !v1 )
  41773. {
  41774. v3 += this->mCardLength + this->mCharNameLength + this->mIPLength + 9;
  41775. return v3;
  41776. }
  41777. if ( v1 != 1 )
  41778. return v3;
  41779. v5 = this->mPrizeResult;
  41780. v3 = v2 + 2;
  41781. if ( v5 )
  41782. {
  41783. if ( v5 != 2 )
  41784. return v3;
  41785. }
  41786. return v2 + 21 * this->mPrizeNum + 3;
  41787. }
  41788.  
  41789. //----- (080768DC) --------------------------------------------------------
  41790. BOOL __cdecl Packets::LBLCardCheckPrize::Read(Packets::LBLCardCheckPrize *const this, SocketBillingInputStream *const iStream)
  41791. {
  41792. BYTE v3; // al
  41793. BYTE v4; // al
  41794. BYTE v5; // al
  41795. Packets::LBLCardCheckPrize *v6; // edi
  41796. INT i; // [esp+8h] [ebp-10h]
  41797.  
  41798. if ( this->mType != 1 )
  41799. __assert__(
  41800. "../../Common/Packets/LBLCardCheckPrize.cpp",
  41801. 0x1Du,
  41802. "virtual BOOL Packets::LBLCardCheckPrize::Read(SocketBillingInputStream&)",
  41803. "FALSE");
  41804. SocketInputStream::Read(&iStream->0, (CHAR *)&this->mAccLength, 1u);
  41805. v3 = this->mAccLength;
  41806. if ( v3 > 0x32u )
  41807. {
  41808. this->mAccLength = 50;
  41809. v3 = 50;
  41810. }
  41811. SocketInputStream::Read(&iStream->0, this->mAccount, v3);
  41812. SocketInputStream::Read(&iStream->0, (CHAR *)&this->mPrizeResult, 1u);
  41813. v4 = this->mPrizeResult;
  41814. if ( v4 && v4 != 2 )
  41815. return 1;
  41816. SocketInputStream::Read(&iStream->0, (CHAR *)&this->mPrizeNum, 1u);
  41817. v5 = this->mPrizeNum;
  41818. if ( v5 > 0x1Eu )
  41819. {
  41820. this->mPrizeNum = 30;
  41821. v5 = 30;
  41822. }
  41823. i = 0;
  41824. if ( !v5 )
  41825. return 1;
  41826. v6 = this;
  41827. do
  41828. {
  41829. SocketInputStream::Read(&iStream->0, (CHAR *)v6->mPrize, 0x14u);
  41830. SocketInputStream::Read(&iStream->0, (CHAR *)&v6->mPrize[0].m_PrizeNum, 1u);
  41831. ++i;
  41832. v6 = (Packets::LBLCardCheckPrize *)((char *)v6 + 21);
  41833. }
  41834. while ( this->mPrizeNum > i );
  41835. return 1;
  41836. }
  41837.  
  41838. //----- (08076A2C) --------------------------------------------------------
  41839. BOOL __cdecl Packets::LBLCardCheckPrize::Write(const Packets::LBLCardCheckPrize *const this, SocketBillingOutputStream *const oStream)
  41840. {
  41841. if ( this->mType )
  41842. __assert__(
  41843. "../../Common/Packets/LBLCardCheckPrize.cpp",
  41844. 0x36u,
  41845. "virtual BOOL Packets::LBLCardCheckPrize::Write(SocketBillingOutputStream&) const",
  41846. "FALSE");
  41847. SocketOutputStream::Write(&oStream->0, (const CHAR *)&this->mCardLength, 1u);
  41848. SocketOutputStream::Write(&oStream->0, this->mNewuserCard, this->mCardLength);
  41849. SocketOutputStream::Write(&oStream->0, (const CHAR *)&this->mAccLength, 1u);
  41850. SocketOutputStream::Write(&oStream->0, this->mAccount, this->mAccLength);
  41851. SocketOutputStream::Write(&oStream->0, (const CHAR *)&this->mIPLength, 1u);
  41852. SocketOutputStream::Write(&oStream->0, this->mIP, this->mIPLength);
  41853. SocketOutputStream::Write(&oStream->0, (const CHAR *)&this->mCharNameLength, 1u);
  41854. SocketOutputStream::Write(&oStream->0, this->mCharName, this->mCharNameLength);
  41855. return 1;
  41856. }
  41857.  
  41858. //----- (08076B3C) --------------------------------------------------------
  41859. UINT __cdecl Packets::LBLCardCheckPrize::Execute(Packets::LBLCardCheckPrize *const this, Player *pPlayer)
  41860. {
  41861. return Packets::LBLCardCheckPrizeHandler::Execute(this, pPlayer);
  41862. }
  41863.  
  41864. //----- (08076B9C) --------------------------------------------------------
  41865. void __cdecl _tcf_0_71(void *a1)
  41866. {
  41867. std::ios_base::Init::~Init(&std::__ioinit);
  41868. }
  41869.  
  41870. //----- (08076BAC) --------------------------------------------------------
  41871. void `global constructor keyed to'Packets::LBLCardCheckPrize::Read()
  41872. {
  41873. std::ios_base::Init::Init(&std::__ioinit);
  41874. __cxa_atexit(_tcf_0_71, 0, &_dso_handle);
  41875. }
  41876. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  41877.  
  41878. //----- (08076BD8) --------------------------------------------------------
  41879. void __cdecl Packets::LBLCardCheckPrize::~LBLCardCheckPrize(BillPacket *a2)
  41880. {
  41881. a2->_vptr_BillPacket = (int (**)(...))off_80D0B88;
  41882. BillPacket::~BillPacket(a2);
  41883. }
  41884. // 80D0B88: using guessed type _DWORD (__cdecl *off_80D0B88[2])(Packets::LBLCardCheckPrize *this);
  41885.  
  41886. //----- (08076BF4) --------------------------------------------------------
  41887. void __cdecl Packets::LBLCardCheckPrize::~LBLCardCheckPrize(IPRegionTable *a2)
  41888. {
  41889. a2->_vptr_IPRegionTable = (int (**)(...))off_80D0B88;
  41890. BillPacket::~BillPacket(a2);
  41891. operator delete(a2);
  41892. }
  41893. // 80D0B88: using guessed type _DWORD (__cdecl *off_80D0B88[2])(Packets::LBLCardCheckPrize *this);
  41894.  
  41895. //----- (08076C1C) --------------------------------------------------------
  41896. BPacketID_t __cdecl Packets::LBLCardCheckPrize::GetPacketID(const Packets::LBLCardCheckPrize *const this)
  41897. {
  41898. return -58;
  41899. }
  41900.  
  41901. //----- (08076C28) --------------------------------------------------------
  41902. UINT __cdecl Packets::LBLCardCheckPrize::GetPacketSize(const Packets::LBLCardCheckPrize *const this)
  41903. {
  41904. BYTE v1; // al
  41905. int v2; // edx
  41906. UINT v3; // ebx
  41907. BYTE v5; // al
  41908.  
  41909. v1 = this->mType;
  41910. v2 = this->mAccLength;
  41911. v3 = v2 + 1;
  41912. if ( !v1 )
  41913. {
  41914. v3 += this->mCardLength + this->mCharNameLength + this->mIPLength + 3;
  41915. return v3;
  41916. }
  41917. if ( v1 != 1 )
  41918. return v3;
  41919. v5 = this->mPrizeResult;
  41920. v3 = v2 + 2;
  41921. if ( v5 )
  41922. {
  41923. if ( v5 != 2 )
  41924. return v3;
  41925. }
  41926. return v2 + 21 * this->mPrizeNum + 3;
  41927. }
  41928.  
  41929. //----- (08076C80) --------------------------------------------------------
  41930. BOOL __cdecl Packets::LBLNewCheckPrize::Read(Packets::LBLNewCheckPrize *const this, SocketBillingInputStream *const iStream)
  41931. {
  41932. BYTE v3; // al
  41933. BYTE v4; // al
  41934. Packets::LBLNewCheckPrize *v5; // edi
  41935. INT i; // [esp+8h] [ebp-10h]
  41936.  
  41937. if ( this->mType != 1 )
  41938. __assert__(
  41939. "../../Common/Packets/LBLNewCheckPrize.cpp",
  41940. 0x1Du,
  41941. "virtual BOOL Packets::LBLNewCheckPrize::Read(SocketBillingInputStream&)",
  41942. "FALSE");
  41943. SocketInputStream::Read(&iStream->0, (CHAR *)&this->mAccLength, 1u);
  41944. v3 = this->mAccLength;
  41945. if ( v3 > 0x32u )
  41946. {
  41947. this->mAccLength = 50;
  41948. v3 = 50;
  41949. }
  41950. SocketInputStream::Read(&iStream->0, this->mAccount, v3);
  41951. SocketInputStream::Read(&iStream->0, (CHAR *)&this->mPrizeResult, 1u);
  41952. if ( this->mPrizeResult )
  41953. return 1;
  41954. SocketInputStream::Read(&iStream->0, (CHAR *)&this->mPrizeNum, 1u);
  41955. v4 = this->mPrizeNum;
  41956. if ( v4 > 0x1Eu )
  41957. {
  41958. this->mPrizeNum = 30;
  41959. v4 = 30;
  41960. }
  41961. i = 0;
  41962. if ( !v4 )
  41963. return 1;
  41964. v5 = this;
  41965. do
  41966. {
  41967. SocketInputStream::Read(&iStream->0, (CHAR *)v5->mPrize, 0x14u);
  41968. SocketInputStream::Read(&iStream->0, (CHAR *)&v5->mPrize[0].m_PrizeNum, 1u);
  41969. ++i;
  41970. v5 = (Packets::LBLNewCheckPrize *)((char *)v5 + 21);
  41971. }
  41972. while ( this->mPrizeNum > i );
  41973. return 1;
  41974. }
  41975.  
  41976. //----- (08076DB8) --------------------------------------------------------
  41977. BOOL __cdecl Packets::LBLNewCheckPrize::Write(const Packets::LBLNewCheckPrize *const this, SocketBillingOutputStream *const oStream)
  41978. {
  41979. if ( this->mType )
  41980. __assert__(
  41981. "../../Common/Packets/LBLNewCheckPrize.cpp",
  41982. 0x34u,
  41983. "virtual BOOL Packets::LBLNewCheckPrize::Write(SocketBillingOutputStream&) const",
  41984. "FALSE");
  41985. SocketOutputStream::Write(&oStream->0, (const CHAR *)&this->mAccLength, 1u);
  41986. SocketOutputStream::Write(&oStream->0, this->mAccount, this->mAccLength);
  41987. SocketOutputStream::Write(&oStream->0, (const CHAR *)&this->mIPLength, 1u);
  41988. SocketOutputStream::Write(&oStream->0, this->mIP, this->mIPLength);
  41989. SocketOutputStream::Write(&oStream->0, (const CHAR *)&this->mCharNameLength, 1u);
  41990. SocketOutputStream::Write(&oStream->0, this->mCharName, this->mCharNameLength);
  41991. return 1;
  41992. }
  41993.  
  41994. //----- (08076EA4) --------------------------------------------------------
  41995. UINT __cdecl Packets::LBLNewCheckPrize::Execute(Packets::LBLNewCheckPrize *const this, Player *pPlayer)
  41996. {
  41997. return Packets::LBLNewCheckPrizeHandler::Execute(this, pPlayer);
  41998. }
  41999.  
  42000. //----- (08076F04) --------------------------------------------------------
  42001. void __cdecl _tcf_0_72(void *a1)
  42002. {
  42003. std::ios_base::Init::~Init(&std::__ioinit);
  42004. }
  42005.  
  42006. //----- (08076F14) --------------------------------------------------------
  42007. void `global constructor keyed to'Packets::LBLNewCheckPrize::Read()
  42008. {
  42009. std::ios_base::Init::Init(&std::__ioinit);
  42010. __cxa_atexit(_tcf_0_72, 0, &_dso_handle);
  42011. }
  42012. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  42013.  
  42014. //----- (08076F40) --------------------------------------------------------
  42015. void __cdecl Packets::LBLNewCheckPrize::~LBLNewCheckPrize(BillPacket *a2)
  42016. {
  42017. a2->_vptr_BillPacket = (int (**)(...))off_80D0D28;
  42018. BillPacket::~BillPacket(a2);
  42019. }
  42020. // 80D0D28: using guessed type _DWORD (__cdecl *off_80D0D28[2])(Packets::LBLNewCheckPrize *this);
  42021.  
  42022. //----- (08076F5C) --------------------------------------------------------
  42023. void __cdecl Packets::LBLNewCheckPrize::~LBLNewCheckPrize(IPRegionTable *a2)
  42024. {
  42025. a2->_vptr_IPRegionTable = (int (**)(...))off_80D0D28;
  42026. BillPacket::~BillPacket(a2);
  42027. operator delete(a2);
  42028. }
  42029. // 80D0D28: using guessed type _DWORD (__cdecl *off_80D0D28[2])(Packets::LBLNewCheckPrize *this);
  42030.  
  42031. //----- (08076F84) --------------------------------------------------------
  42032. BPacketID_t __cdecl Packets::LBLNewCheckPrize::GetPacketID(const Packets::LBLNewCheckPrize *const this)
  42033. {
  42034. return -28;
  42035. }
  42036.  
  42037. //----- (08076F90) --------------------------------------------------------
  42038. UINT __cdecl Packets::LBLNewCheckPrize::GetPacketSize(const Packets::LBLNewCheckPrize *const this)
  42039. {
  42040. BYTE v1; // al
  42041. int v2; // edx
  42042. UINT v3; // ecx
  42043.  
  42044. v1 = this->mType;
  42045. v2 = this->mAccLength;
  42046. v3 = v2 + 1;
  42047. if ( !v1 )
  42048. {
  42049. v3 += this->mCharNameLength + this->mIPLength + 2;
  42050. return v3;
  42051. }
  42052. if ( v1 != 1 )
  42053. return v3;
  42054. v3 = v2 + 2;
  42055. if ( this->mPrizeResult )
  42056. return v3;
  42057. return v2 + 21 * this->mPrizeNum + 3;
  42058. }
  42059.  
  42060. //----- (08076FD8) --------------------------------------------------------
  42061. BOOL __cdecl Packets::LBLNewPrize::Read(Packets::LBLNewPrize *const this, SocketBillingInputStream *const iStream)
  42062. {
  42063. BYTE v3; // al
  42064. BYTE v4; // al
  42065. BYTE v5; // al
  42066. Packets::LBLNewPrize *v6; // edi
  42067. INT i; // [esp+8h] [ebp-10h]
  42068.  
  42069. if ( this->mType != 1 )
  42070. __assert__(
  42071. "../../Common/Packets/LBLNewPrize.cpp",
  42072. 0x1Fu,
  42073. "virtual BOOL Packets::LBLNewPrize::Read(SocketBillingInputStream&)",
  42074. "FALSE");
  42075. SocketInputStream::Read(&iStream->0, (CHAR *)&this->mAccLength, 1u);
  42076. v3 = this->mAccLength;
  42077. if ( v3 > 0x32u )
  42078. {
  42079. this->mAccLength = 50;
  42080. v3 = 50;
  42081. }
  42082. SocketInputStream::Read(&iStream->0, this->mAccount, v3);
  42083. SocketInputStream::Read(&iStream->0, this->mPrizeSerial, 0x15u);
  42084. SocketInputStream::Read(&iStream->0, (CHAR *)&this->mPrizeResult, 1u);
  42085. v4 = this->mPrizeResult;
  42086. if ( v4 && v4 != 2 )
  42087. return 1;
  42088. SocketInputStream::Read(&iStream->0, (CHAR *)&this->mPrizeNum, 1u);
  42089. v5 = this->mPrizeNum;
  42090. if ( v5 > 0x1Eu )
  42091. {
  42092. this->mPrizeNum = 30;
  42093. v5 = 30;
  42094. }
  42095. i = 0;
  42096. if ( !v5 )
  42097. return 1;
  42098. v6 = this;
  42099. do
  42100. {
  42101. SocketInputStream::Read(&iStream->0, (CHAR *)v6->mPrize, 0x14u);
  42102. SocketInputStream::Read(&iStream->0, (CHAR *)&v6->mPrize[0].m_PrizeNum, 1u);
  42103. ++i;
  42104. v6 = (Packets::LBLNewPrize *)((char *)v6 + 21);
  42105. }
  42106. while ( this->mPrizeNum > i );
  42107. return 1;
  42108. }
  42109.  
  42110. //----- (08077138) --------------------------------------------------------
  42111. BOOL __cdecl Packets::LBLNewPrize::Write(const Packets::LBLNewPrize *const this, SocketBillingOutputStream *const oStream)
  42112. {
  42113. UINT v2; // eax
  42114. USHORT nLevel; // [esp+Ah] [ebp-Eh]
  42115. UINT unGuid; // [esp+Ch] [ebp-Ch]
  42116.  
  42117. if ( this->mType )
  42118. __assert__(
  42119. "../../Common/Packets/LBLNewPrize.cpp",
  42120. 0x3Eu,
  42121. "virtual BOOL Packets::LBLNewPrize::Write(SocketBillingOutputStream&) const",
  42122. "FALSE");
  42123. SocketOutputStream::Write(&oStream->0, (const CHAR *)&this->mAccLength, 1u);
  42124. SocketOutputStream::Write(&oStream->0, this->mAccount, this->mAccLength);
  42125. SocketOutputStream::Write(&oStream->0, (const CHAR *)&this->mIPLength, 1u);
  42126. SocketOutputStream::Write(&oStream->0, this->mIP, this->mIPLength);
  42127. SocketOutputStream::Write(&oStream->0, (const CHAR *)&this->mCharNameLength, 1u);
  42128. SocketOutputStream::Write(&oStream->0, this->mCharName, this->mCharNameLength);
  42129. v2 = this->mAccGuid;
  42130. LOWORD(v2) = __ROR2__(v2, 8);
  42131. v2 = __ROR4__(v2, 16);
  42132. LOWORD(v2) = __ROR2__(v2, 8);
  42133. unGuid = v2;
  42134. nLevel = __ROR2__(this->mAccLevel, 8);
  42135. SocketOutputStream::Write(&oStream->0, (const CHAR *)&unGuid, 4u);
  42136. SocketOutputStream::Write(&oStream->0, (const CHAR *)&nLevel, 2u);
  42137. SocketOutputStream::Write(&oStream->0, this->mPrizeSerial, 0x15u);
  42138. return 1;
  42139. }
  42140.  
  42141. //----- (0807727C) --------------------------------------------------------
  42142. UINT __cdecl Packets::LBLNewPrize::Execute(Packets::LBLNewPrize *const this, Player *pPlayer)
  42143. {
  42144. return Packets::LBLNewPrizeHandler::Execute(this, pPlayer);
  42145. }
  42146.  
  42147. //----- (080772DC) --------------------------------------------------------
  42148. void __cdecl _tcf_0_73(void *a1)
  42149. {
  42150. std::ios_base::Init::~Init(&std::__ioinit);
  42151. }
  42152.  
  42153. //----- (080772EC) --------------------------------------------------------
  42154. void `global constructor keyed to'Packets::LBLNewPrize::Read()
  42155. {
  42156. std::ios_base::Init::Init(&std::__ioinit);
  42157. __cxa_atexit(_tcf_0_73, 0, &_dso_handle);
  42158. }
  42159. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  42160.  
  42161. //----- (08077318) --------------------------------------------------------
  42162. void __cdecl Packets::LBLNewPrize::~LBLNewPrize(BillPacket *a2)
  42163. {
  42164. a2->_vptr_BillPacket = (int (**)(...))off_80D0EC8;
  42165. BillPacket::~BillPacket(a2);
  42166. }
  42167. // 80D0EC8: using guessed type _DWORD (__cdecl *off_80D0EC8[2])(Packets::LBLNewPrize *this);
  42168.  
  42169. //----- (08077334) --------------------------------------------------------
  42170. void __cdecl Packets::LBLNewPrize::~LBLNewPrize(IPRegionTable *a2)
  42171. {
  42172. a2->_vptr_IPRegionTable = (int (**)(...))off_80D0EC8;
  42173. BillPacket::~BillPacket(a2);
  42174. operator delete(a2);
  42175. }
  42176. // 80D0EC8: using guessed type _DWORD (__cdecl *off_80D0EC8[2])(Packets::LBLNewPrize *this);
  42177.  
  42178. //----- (0807735C) --------------------------------------------------------
  42179. BPacketID_t __cdecl Packets::LBLNewPrize::GetPacketID(const Packets::LBLNewPrize *const this)
  42180. {
  42181. return -61;
  42182. }
  42183.  
  42184. //----- (08077368) --------------------------------------------------------
  42185. UINT __cdecl Packets::LBLNewPrize::GetPacketSize(const Packets::LBLNewPrize *const this)
  42186. {
  42187. BYTE v1; // al
  42188. int v2; // edx
  42189. UINT v3; // ecx
  42190. BYTE v5; // al
  42191.  
  42192. v1 = this->mType;
  42193. v2 = this->mAccLength;
  42194. v3 = v2 + 22;
  42195. if ( !v1 )
  42196. {
  42197. v3 += this->mCharNameLength + this->mIPLength + 8;
  42198. return v3;
  42199. }
  42200. if ( v1 != 1 )
  42201. return v3;
  42202. v5 = this->mPrizeResult;
  42203. v3 = v2 + 23;
  42204. if ( v5 )
  42205. {
  42206. if ( v5 != 2 )
  42207. return v3;
  42208. }
  42209. return v2 + 21 * this->mPrizeNum + 24;
  42210. }
  42211.  
  42212. //----- (080773B8) --------------------------------------------------------
  42213. BOOL __cdecl Packets::LBPrize::Read(Packets::LBPrize *const this, SocketBillingInputStream *const iStream)
  42214. {
  42215. return 1;
  42216. }
  42217.  
  42218. //----- (080773C4) --------------------------------------------------------
  42219. BOOL __cdecl Packets::LBPrize::Write(const Packets::LBPrize *const this, SocketBillingOutputStream *const oStream)
  42220. {
  42221. const Packets::LBPrize *v2; // ebx
  42222. USHORT nType; // [esp+10h] [ebp-Ch]
  42223. USHORT nLevel; // [esp+12h] [ebp-Ah]
  42224.  
  42225. v2 = this;
  42226. SocketOutputStream::Write(&oStream->0, (const CHAR *)&this->mAccLength, 1u);
  42227. SocketOutputStream::Write(&oStream->0, v2->mAccount, v2->mAccLength);
  42228. SocketOutputStream::Write(&oStream->0, (const CHAR *)&this->mIPLength, 1u);
  42229. SocketOutputStream::Write(&oStream->0, v2->mIP, v2->mIPLength);
  42230. SocketOutputStream::Write(&oStream->0, (const CHAR *)&this->mCharNameLength, 1u);
  42231. SocketOutputStream::Write(&oStream->0, v2->mCharName, v2->mCharNameLength);
  42232. nLevel = __ROR2__(this->mLevel, 8);
  42233. SocketOutputStream::Write(&oStream->0, (const CHAR *)&nLevel, 2u);
  42234. SocketOutputStream::Write(&oStream->0, this->mPrizeSerial, 0x15u);
  42235. nType = __ROR2__(this->mPrizeType, 8);
  42236. SocketOutputStream::Write(&oStream->0, (const CHAR *)&nType, 2u);
  42237. return 1;
  42238. }
  42239.  
  42240. //----- (080774CC) --------------------------------------------------------
  42241. UINT __cdecl Packets::LBPrize::Execute(Packets::LBPrize *const this, Player *pPlayer)
  42242. {
  42243. return Packets::LBPrizeHandler::Execute(this, pPlayer);
  42244. }
  42245.  
  42246. //----- (0807752C) --------------------------------------------------------
  42247. void __cdecl _tcf_0_74(void *a1)
  42248. {
  42249. std::ios_base::Init::~Init(&std::__ioinit);
  42250. }
  42251.  
  42252. //----- (0807753C) --------------------------------------------------------
  42253. void `global constructor keyed to'Packets::LBPrize::Read()
  42254. {
  42255. std::ios_base::Init::Init(&std::__ioinit);
  42256. __cxa_atexit(_tcf_0_74, 0, &_dso_handle);
  42257. }
  42258. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  42259.  
  42260. //----- (08077568) --------------------------------------------------------
  42261. void __cdecl Packets::LBPrize::~LBPrize(BillPacket *a2)
  42262. {
  42263. a2->_vptr_BillPacket = (int (**)(...))off_80D1048;
  42264. BillPacket::~BillPacket(a2);
  42265. }
  42266. // 80D1048: using guessed type _DWORD (__cdecl *off_80D1048[2])(Packets::LBPrize *this);
  42267.  
  42268. //----- (08077584) --------------------------------------------------------
  42269. void __cdecl Packets::LBPrize::~LBPrize(IPRegionTable *a2)
  42270. {
  42271. a2->_vptr_IPRegionTable = (int (**)(...))off_80D1048;
  42272. BillPacket::~BillPacket(a2);
  42273. operator delete(a2);
  42274. }
  42275. // 80D1048: using guessed type _DWORD (__cdecl *off_80D1048[2])(Packets::LBPrize *this);
  42276.  
  42277. //----- (080775AC) --------------------------------------------------------
  42278. BPacketID_t __cdecl Packets::LBPrize::GetPacketID(const Packets::LBPrize *const this)
  42279. {
  42280. return -60;
  42281. }
  42282.  
  42283. //----- (080775B8) --------------------------------------------------------
  42284. int __cdecl Packets::LBPrize::GetPacketSize(unsigned __int8 *a2)
  42285. {
  42286. return a2[62] + a2[7] + a2[79] + 28;
  42287. }
  42288.  
  42289. //----- (080775D4) --------------------------------------------------------
  42290. BOOL __cdecl Packets::LWRetPrize::Read(Packets::LWRetPrize *const this, SocketInputStream *const iStream)
  42291. {
  42292. int v2; // eax
  42293. USHORT v4; // dx
  42294.  
  42295. SocketInputStream::Read(iStream, (CHAR *)&this->mPrizeUserID, 2u);
  42296. SocketInputStream::Read(iStream, this->mAccName, 0x32u);
  42297. SocketInputStream::Read(iStream, (CHAR *)&this->mPrizeResult, 1u);
  42298. SocketInputStream::Read(iStream, (CHAR *)&this->mRetType, 1u);
  42299. v2 = *(_DWORD *)&this->mAccName[50] & 0xFFFF00;
  42300. if ( v2 == 0x10000 || v2 == 327680 || v2 == 0x40000 || v2 == 393216 || v2 == 458752 )
  42301. {
  42302. SocketInputStream::Read(iStream, (CHAR *)&this->mPrizeNum, 2u);
  42303. v4 = this->mPrizeNum;
  42304. if ( (unsigned __int16)(v4 - 1) > 0x1Du )
  42305. __assert__(
  42306. "../../Common/Packets/LWRetPrize.cpp",
  42307. 0x13u,
  42308. "virtual BOOL Packets::LWRetPrize::Read(SocketInputStream&)",
  42309. "mPrizeNum > 0 && mPrizeNum <=MAX_PRIZE_NUMBER");
  42310. goto LABEL_12;
  42311. }
  42312. if ( v2 == 196608 )
  42313. {
  42314. SocketInputStream::Read(iStream, (CHAR *)&this->mLeftPoint, 4u);
  42315. SocketInputStream::Read(iStream, (CHAR *)&this->mPrizeNum, 2u);
  42316. v4 = this->mPrizeNum;
  42317. if ( (unsigned __int16)(v4 - 1) > 0x1Du )
  42318. __assert__(
  42319. "../../Common/Packets/LWRetPrize.cpp",
  42320. 0x1Au,
  42321. "virtual BOOL Packets::LWRetPrize::Read(SocketInputStream&)",
  42322. "mPrizeNum > 0 && mPrizeNum <=MAX_PRIZE_NUMBER");
  42323. LABEL_12:
  42324. SocketInputStream::Read(iStream, (CHAR *)this->mPrize, 32 * v4);
  42325. return 1;
  42326. }
  42327. if ( v2 != 0x20000 )
  42328. return 1;
  42329. SocketInputStream::Read(iStream, (CHAR *)&this->mLeftPoint, 4u);
  42330. return 1;
  42331. }
  42332.  
  42333. //----- (08077748) --------------------------------------------------------
  42334. BOOL __cdecl Packets::LWRetPrize::Write(const Packets::LWRetPrize *const this, SocketOutputStream *const oStream)
  42335. {
  42336. int v2; // eax
  42337. USHORT v4; // dx
  42338.  
  42339. SocketOutputStream::Write(oStream, (const CHAR *)&this->mPrizeUserID, 2u);
  42340. SocketOutputStream::Write(oStream, this->mAccName, 0x32u);
  42341. SocketOutputStream::Write(oStream, (const CHAR *)&this->mPrizeResult, 1u);
  42342. SocketOutputStream::Write(oStream, (const CHAR *)&this->mRetType, 1u);
  42343. v2 = *(_DWORD *)&this->mAccName[50] & 0xFFFF00;
  42344. if ( v2 == 0x10000 || v2 == 327680 || v2 == 0x40000 || v2 == 393216 || v2 == 458752 )
  42345. {
  42346. SocketOutputStream::Write(oStream, (const CHAR *)&this->mPrizeNum, 2u);
  42347. v4 = this->mPrizeNum;
  42348. if ( (unsigned __int16)(v4 - 1) > 0x1Du )
  42349. __assert__(
  42350. "../../Common/Packets/LWRetPrize.cpp",
  42351. 0x37u,
  42352. "virtual BOOL Packets::LWRetPrize::Write(SocketOutputStream&) const",
  42353. "mPrizeNum > 0 && mPrizeNum <=MAX_PRIZE_NUMBER");
  42354. goto LABEL_12;
  42355. }
  42356. if ( v2 == 196608 )
  42357. {
  42358. SocketOutputStream::Write(oStream, (const CHAR *)&this->mLeftPoint, 4u);
  42359. SocketOutputStream::Write(oStream, (const CHAR *)&this->mPrizeNum, 2u);
  42360. v4 = this->mPrizeNum;
  42361. if ( (unsigned __int16)(v4 - 1) > 0x1Du )
  42362. __assert__(
  42363. "../../Common/Packets/LWRetPrize.cpp",
  42364. 0x3Eu,
  42365. "virtual BOOL Packets::LWRetPrize::Write(SocketOutputStream&) const",
  42366. "mPrizeNum > 0 && mPrizeNum <=MAX_PRIZE_NUMBER");
  42367. LABEL_12:
  42368. SocketOutputStream::Write(oStream, (const CHAR *)this->mPrize, 32 * v4);
  42369. return 1;
  42370. }
  42371. if ( v2 != 0x20000 )
  42372. return 1;
  42373. SocketOutputStream::Write(oStream, (const CHAR *)&this->mLeftPoint, 4u);
  42374. return 1;
  42375. }
  42376.  
  42377. //----- (080778BC) --------------------------------------------------------
  42378. UINT __cdecl Packets::LWRetPrize::Execute(Packets::LWRetPrize *const this, Player *pPlayer)
  42379. {
  42380. return Packets::LWRetPrizeHandler::Execute(this, pPlayer);
  42381. }
  42382.  
  42383. //----- (0807791C) --------------------------------------------------------
  42384. void __cdecl _tcf_0_75(void *a1)
  42385. {
  42386. std::ios_base::Init::~Init(&std::__ioinit);
  42387. }
  42388.  
  42389. //----- (0807792C) --------------------------------------------------------
  42390. void `global constructor keyed to'Packets::LWRetPrize::Read()
  42391. {
  42392. std::ios_base::Init::Init(&std::__ioinit);
  42393. __cxa_atexit(_tcf_0_75, 0, &_dso_handle);
  42394. }
  42395. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  42396.  
  42397. //----- (08077958) --------------------------------------------------------
  42398. void __cdecl Packets::LWRetPrize::~LWRetPrize(Packet *a2)
  42399. {
  42400. a2->_vptr_Packet = (int (**)(...))off_80D11A8;
  42401. Packet::~Packet(a2);
  42402. }
  42403. // 80D11A8: using guessed type _DWORD (__cdecl *off_80D11A8[2])(Packets::LWRetPrize *this);
  42404.  
  42405. //----- (08077974) --------------------------------------------------------
  42406. void __cdecl Packets::LWRetPrize::~LWRetPrize(IPRegionTable *a2)
  42407. {
  42408. a2->_vptr_IPRegionTable = (int (**)(...))off_80D11A8;
  42409. Packet::~Packet(a2);
  42410. operator delete(a2);
  42411. }
  42412. // 80D11A8: using guessed type _DWORD (__cdecl *off_80D11A8[2])(Packets::LWRetPrize *this);
  42413.  
  42414. //----- (0807799C) --------------------------------------------------------
  42415. PacketID_t __cdecl Packets::LWRetPrize::GetPacketID(const Packets::LWRetPrize *const this)
  42416. {
  42417. return 567;
  42418. }
  42419.  
  42420. //----- (080779A8) --------------------------------------------------------
  42421. UINT __cdecl Packets::LWRetPrize::GetPacketSize(const Packets::LWRetPrize *const this)
  42422. {
  42423. int v1; // edx
  42424. UINT result; // eax
  42425.  
  42426. v1 = *(_DWORD *)&this->mAccName[50] & 0xFFFF00;
  42427. result = 54;
  42428. switch ( v1 )
  42429. {
  42430. case 65536:
  42431. case 327680:
  42432. case 262144:
  42433. case 393216:
  42434. case 458752:
  42435. return 32 * this->mPrizeNum + 56;
  42436. case 196608:
  42437. return 32 * this->mPrizeNum + 60;
  42438. case 131072:
  42439. result = 58;
  42440. break;
  42441. }
  42442. return result;
  42443. }
  42444.  
  42445. //----- (08077A18) --------------------------------------------------------
  42446. BOOL __cdecl Packets::WLAskPrize::Read(Packets::WLAskPrize *const this, SocketInputStream *const iStream)
  42447. {
  42448. BYTE v2; // al
  42449.  
  42450. SocketInputStream::Read(iStream, (CHAR *)&this->m_PrizeUserID, 2u);
  42451. SocketInputStream::Read(iStream, this->m_AccName, 0x32u);
  42452. SocketInputStream::Read(iStream, this->m_CharName, 0x1Eu);
  42453. SocketInputStream::Read(iStream, this->m_Host, 0x18u);
  42454. SocketInputStream::Read(iStream, (CHAR *)&this->m_GUID, 4u);
  42455. SocketInputStream::Read(iStream, (CHAR *)&this->m_askType, 1u);
  42456. v2 = this->m_askType;
  42457. if ( v2 == 3 )
  42458. {
  42459. SocketInputStream::Read(iStream, (CHAR *)&this->m_GoodsType, 4u);
  42460. SocketInputStream::Read(iStream, (CHAR *)&this->m_GoodsNumber, 2u);
  42461. SocketInputStream::Read(iStream, (CHAR *)&this->m_CostPoint, 4u);
  42462. }
  42463. else if ( v2 == 1 )
  42464. {
  42465. SocketInputStream::Read(iStream, (CHAR *)&this->m_GoodsType, 4u);
  42466. }
  42467. else
  42468. {
  42469. switch ( v2 )
  42470. {
  42471. case 5u:
  42472. SocketInputStream::Read(iStream, this->m_NewUserCard, 0x14u);
  42473. break;
  42474. case 7u:
  42475. SocketInputStream::Read(iStream, this->m_NewUserCard, 0x14u);
  42476. return 1;
  42477. case 4u:
  42478. break;
  42479. default:
  42480. return 1;
  42481. }
  42482. SocketInputStream::Read(iStream, (CHAR *)&this->m_usAccLevel, 2u);
  42483. }
  42484. return 1;
  42485. }
  42486.  
  42487. //----- (08077B6C) --------------------------------------------------------
  42488. BOOL __cdecl Packets::WLAskPrize::Write(const Packets::WLAskPrize *const this, SocketOutputStream *const oStream)
  42489. {
  42490. BYTE v2; // al
  42491.  
  42492. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_PrizeUserID, 2u);
  42493. SocketOutputStream::Write(oStream, this->m_AccName, 0x32u);
  42494. SocketOutputStream::Write(oStream, this->m_CharName, 0x1Eu);
  42495. SocketOutputStream::Write(oStream, this->m_Host, 0x18u);
  42496. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_GUID, 4u);
  42497. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_askType, 1u);
  42498. v2 = this->m_askType;
  42499. if ( v2 == 3 )
  42500. {
  42501. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_GoodsType, 4u);
  42502. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_GoodsNumber, 2u);
  42503. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_CostPoint, 4u);
  42504. }
  42505. else if ( v2 == 1 )
  42506. {
  42507. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_GoodsType, 4u);
  42508. }
  42509. else
  42510. {
  42511. switch ( v2 )
  42512. {
  42513. case 5u:
  42514. SocketOutputStream::Write(oStream, this->m_NewUserCard, 0x14u);
  42515. break;
  42516. case 7u:
  42517. SocketOutputStream::Write(oStream, this->m_NewUserCard, 0x14u);
  42518. return 1;
  42519. case 4u:
  42520. break;
  42521. default:
  42522. return 1;
  42523. }
  42524. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_usAccLevel, 2u);
  42525. }
  42526. return 1;
  42527. }
  42528.  
  42529. //----- (08077CC0) --------------------------------------------------------
  42530. UINT __cdecl Packets::WLAskPrize::Execute(Packets::WLAskPrize *const this, Player *pPlayer)
  42531. {
  42532. return Packets::WLAskPrizeHandler::Execute(this, pPlayer);
  42533. }
  42534.  
  42535. //----- (08077D20) --------------------------------------------------------
  42536. void __cdecl _tcf_0_76(void *a1)
  42537. {
  42538. std::ios_base::Init::~Init(&std::__ioinit);
  42539. }
  42540.  
  42541. //----- (08077D30) --------------------------------------------------------
  42542. void `global constructor keyed to'Packets::WLAskPrize::Read()
  42543. {
  42544. std::ios_base::Init::Init(&std::__ioinit);
  42545. __cxa_atexit(_tcf_0_76, 0, &_dso_handle);
  42546. }
  42547. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  42548.  
  42549. //----- (08077D5C) --------------------------------------------------------
  42550. void __cdecl Packets::WLAskPrize::~WLAskPrize(Packet *a2)
  42551. {
  42552. a2->_vptr_Packet = (int (**)(...))off_80D1348;
  42553. Packet::~Packet(a2);
  42554. }
  42555. // 80D1348: using guessed type _DWORD (__cdecl *off_80D1348[2])(Packets::WLAskPrize *this);
  42556.  
  42557. //----- (08077D78) --------------------------------------------------------
  42558. void __cdecl Packets::WLAskPrize::~WLAskPrize(IPRegionTable *a2)
  42559. {
  42560. a2->_vptr_IPRegionTable = (int (**)(...))off_80D1348;
  42561. Packet::~Packet(a2);
  42562. operator delete(a2);
  42563. }
  42564. // 80D1348: using guessed type _DWORD (__cdecl *off_80D1348[2])(Packets::WLAskPrize *this);
  42565.  
  42566. //----- (08077DA0) --------------------------------------------------------
  42567. PacketID_t __cdecl Packets::WLAskPrize::GetPacketID(const Packets::WLAskPrize *const this)
  42568. {
  42569. return 219;
  42570. }
  42571.  
  42572. //----- (08077DAC) --------------------------------------------------------
  42573. UINT __cdecl Packets::WLAskPrize::GetPacketSize(const Packets::WLAskPrize *const this)
  42574. {
  42575. BYTE v1; // al
  42576. UINT v2; // edx
  42577. UINT result; // eax
  42578.  
  42579. v1 = this->m_askType;
  42580. v2 = 111;
  42581. switch ( v1 )
  42582. {
  42583. case 3u:
  42584. LOBYTE(v2) = 121;
  42585. result = v2;
  42586. break;
  42587. case 1u:
  42588. result = 115;
  42589. break;
  42590. case 5u:
  42591. result = 133;
  42592. break;
  42593. case 7u:
  42594. result = 131;
  42595. break;
  42596. case 4u:
  42597. result = 113;
  42598. break;
  42599. default:
  42600. result = 111;
  42601. break;
  42602. }
  42603. return result;
  42604. }
  42605.  
  42606. //----- (08077E0C) --------------------------------------------------------
  42607. BOOL __cdecl Packets::LWNotifyUser::Read(Packets::LWNotifyUser *const this, SocketInputStream *const iStream)
  42608. {
  42609. SocketInputStream::Read(iStream, this->m_AccName, 0x32u);
  42610. SocketInputStream::Read(iStream, (CHAR *)&this->m_NotifyStatus, 4u);
  42611. SocketInputStream::Read(iStream, (CHAR *)&this->m_uKey, 4u);
  42612. SocketInputStream::Read(iStream, (CHAR *)&this->m_CharGUID, 4u);
  42613. SocketInputStream::Read(iStream, (CHAR *)&this->m_SaveCrc, 4u);
  42614. SocketInputStream::Read(iStream, (CHAR *)&this->m_LoadCrc, 4u);
  42615. return 1;
  42616. }
  42617.  
  42618. //----- (08077EC0) --------------------------------------------------------
  42619. BOOL __cdecl Packets::LWNotifyUser::Write(const Packets::LWNotifyUser *const this, SocketOutputStream *const oStream)
  42620. {
  42621. SocketOutputStream::Write(oStream, this->m_AccName, 0x32u);
  42622. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_NotifyStatus, 4u);
  42623. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_uKey, 4u);
  42624. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_CharGUID, 4u);
  42625. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_SaveCrc, 4u);
  42626. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_LoadCrc, 4u);
  42627. return 1;
  42628. }
  42629.  
  42630. //----- (08077F74) --------------------------------------------------------
  42631. UINT __cdecl Packets::LWNotifyUser::Execute(Packets::LWNotifyUser *const this, Player *pPlayer)
  42632. {
  42633. return Packets::LWNotifyUserHandler::Execute(this, pPlayer);
  42634. }
  42635.  
  42636. //----- (08077FD4) --------------------------------------------------------
  42637. const CHAR *__cdecl Packets::LWNotifyUser::GetAccount(const Packets::LWNotifyUser *const this)
  42638. {
  42639. return this->m_AccName;
  42640. }
  42641.  
  42642. //----- (08077FE0) --------------------------------------------------------
  42643. void __cdecl Packets::LWNotifyUser::SetAccount(Packets::LWNotifyUser *const this, const CHAR *pAccount)
  42644. {
  42645. if ( !pAccount )
  42646. __assert__(
  42647. "../../Common/Packets/LWNotifyUser.cpp",
  42648. 0x3Cu,
  42649. "void Packets::LWNotifyUser::SetAccount(const CHAR*)",
  42650. "pAccount");
  42651. strncpy(this->m_AccName, pAccount, 0x32u);
  42652. this->m_AccName[50] = 0;
  42653. }
  42654.  
  42655. //----- (08078024) --------------------------------------------------------
  42656. void __cdecl _tcf_0_77(void *a1)
  42657. {
  42658. std::ios_base::Init::~Init(&std::__ioinit);
  42659. }
  42660.  
  42661. //----- (08078034) --------------------------------------------------------
  42662. void `global constructor keyed to'Packets::LWNotifyUser::Read()
  42663. {
  42664. std::ios_base::Init::Init(&std::__ioinit);
  42665. __cxa_atexit(_tcf_0_77, 0, &_dso_handle);
  42666. }
  42667. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  42668.  
  42669. //----- (08078060) --------------------------------------------------------
  42670. void __cdecl Packets::LWNotifyUser::~LWNotifyUser(Packet *a2)
  42671. {
  42672. a2->_vptr_Packet = (int (**)(...))off_80D14A8;
  42673. Packet::~Packet(a2);
  42674. }
  42675. // 80D14A8: using guessed type _DWORD (__cdecl *off_80D14A8[2])(Packets::LWNotifyUser *this);
  42676.  
  42677. //----- (0807807C) --------------------------------------------------------
  42678. void __cdecl Packets::LWNotifyUser::~LWNotifyUser(IPRegionTable *a2)
  42679. {
  42680. a2->_vptr_IPRegionTable = (int (**)(...))off_80D14A8;
  42681. Packet::~Packet(a2);
  42682. operator delete(a2);
  42683. }
  42684. // 80D14A8: using guessed type _DWORD (__cdecl *off_80D14A8[2])(Packets::LWNotifyUser *this);
  42685.  
  42686. //----- (080780A4) --------------------------------------------------------
  42687. PacketID_t __cdecl Packets::LWNotifyUser::GetPacketID(const Packets::LWNotifyUser *const this)
  42688. {
  42689. return 440;
  42690. }
  42691.  
  42692. //----- (080780B0) --------------------------------------------------------
  42693. UINT __cdecl Packets::LWNotifyUser::GetPacketSize(const Packets::LWNotifyUser *const this)
  42694. {
  42695. return 70;
  42696. }
  42697.  
  42698. //----- (080780BC) --------------------------------------------------------
  42699. BOOL __cdecl Packets::WLNotifyUser::Read(Packets::WLNotifyUser *const this, SocketInputStream *const iStream)
  42700. {
  42701. SocketInputStream::Read(iStream, this->m_AccName, 0x32u);
  42702. SocketInputStream::Read(iStream, this->Host, 0x18u);
  42703. SocketInputStream::Read(iStream, (CHAR *)&this->m_NotifyStatus, 4u);
  42704. SocketInputStream::Read(iStream, (CHAR *)&this->m_uKey, 4u);
  42705. return 1;
  42706. }
  42707.  
  42708. //----- (08078150) --------------------------------------------------------
  42709. BOOL __cdecl Packets::WLNotifyUser::Write(const Packets::WLNotifyUser *const this, SocketOutputStream *const oStream)
  42710. {
  42711. SocketOutputStream::Write(oStream, this->m_AccName, 0x32u);
  42712. SocketOutputStream::Write(oStream, this->Host, 0x18u);
  42713. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_NotifyStatus, 4u);
  42714. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_uKey, 4u);
  42715. return 1;
  42716. }
  42717.  
  42718. //----- (080781E4) --------------------------------------------------------
  42719. UINT __cdecl Packets::WLNotifyUser::Execute(Packets::WLNotifyUser *const this, Player *pPlayer)
  42720. {
  42721. return Packets::WLNotifyUserHandler::Execute(this, pPlayer);
  42722. }
  42723.  
  42724. //----- (08078244) --------------------------------------------------------
  42725. const CHAR *__cdecl Packets::WLNotifyUser::GetHost(const Packets::WLNotifyUser *const this)
  42726. {
  42727. return this->Host;
  42728. }
  42729.  
  42730. //----- (08078250) --------------------------------------------------------
  42731. void __cdecl Packets::WLNotifyUser::SetHost(Packets::WLNotifyUser *const this, const CHAR *pHost)
  42732. {
  42733. if ( !pHost )
  42734. __assert__(
  42735. "../../Common/Packets/WLNotifyUser.cpp",
  42736. 0x31u,
  42737. "void Packets::WLNotifyUser::SetHost(const CHAR*)",
  42738. "pHost");
  42739. strncpy(this->Host, pHost, 0x18u);
  42740. this->Host[24] = 0;
  42741. }
  42742.  
  42743. //----- (08078294) --------------------------------------------------------
  42744. void __cdecl _tcf_0_78(void *a1)
  42745. {
  42746. std::ios_base::Init::~Init(&std::__ioinit);
  42747. }
  42748.  
  42749. //----- (080782A4) --------------------------------------------------------
  42750. void `global constructor keyed to'Packets::WLNotifyUser::Read()
  42751. {
  42752. std::ios_base::Init::Init(&std::__ioinit);
  42753. __cxa_atexit(_tcf_0_78, 0, &_dso_handle);
  42754. }
  42755. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  42756.  
  42757. //----- (080782D0) --------------------------------------------------------
  42758. void __cdecl Packets::WLNotifyUser::~WLNotifyUser(Packet *a2)
  42759. {
  42760. a2->_vptr_Packet = (int (**)(...))off_80D1648;
  42761. Packet::~Packet(a2);
  42762. }
  42763. // 80D1648: using guessed type _DWORD (__cdecl *off_80D1648[2])(Packets::WLNotifyUser *this);
  42764.  
  42765. //----- (080782EC) --------------------------------------------------------
  42766. void __cdecl Packets::WLNotifyUser::~WLNotifyUser(IPRegionTable *a2)
  42767. {
  42768. a2->_vptr_IPRegionTable = (int (**)(...))off_80D1648;
  42769. Packet::~Packet(a2);
  42770. operator delete(a2);
  42771. }
  42772. // 80D1648: using guessed type _DWORD (__cdecl *off_80D1648[2])(Packets::WLNotifyUser *this);
  42773.  
  42774. //----- (08078314) --------------------------------------------------------
  42775. PacketID_t __cdecl Packets::WLNotifyUser::GetPacketID(const Packets::WLNotifyUser *const this)
  42776. {
  42777. return 358;
  42778. }
  42779.  
  42780. //----- (08078320) --------------------------------------------------------
  42781. UINT __cdecl Packets::WLNotifyUser::GetPacketSize(const Packets::WLNotifyUser *const this)
  42782. {
  42783. return 82;
  42784. }
  42785.  
  42786. //----- (0807832C) --------------------------------------------------------
  42787. BOOL __cdecl Packets::GWLWGCostLog::Read(Packets::GWLWGCostLog *const this, SocketInputStream *const iStream)
  42788. {
  42789. BYTE v2; // al
  42790.  
  42791. SocketInputStream::Read(iStream, (CHAR *)&this->m_nType, 1u);
  42792. v2 = this->m_nType;
  42793. switch ( v2 )
  42794. {
  42795. case 0u:
  42796. goto LABEL_6;
  42797. case 1u:
  42798. SocketInputStream::Read(iStream, (CHAR *)&this->m_LogPos, 2u);
  42799. LABEL_6:
  42800. SocketInputStream::Read(iStream, this->m_LogInfo.m_SerialKey, 0x1A0u);
  42801. return 1;
  42802. case 2u:
  42803. SocketInputStream::Read(iStream, (CHAR *)&this->m_LogPos, 2u);
  42804. SocketInputStream::Read(iStream, (CHAR *)&this->m_nResult, 1u);
  42805. SocketInputStream::Read(iStream, this->m_SerialKey, 0x15u);
  42806. break;
  42807. }
  42808. return 1;
  42809. }
  42810.  
  42811. //----- (08078400) --------------------------------------------------------
  42812. BOOL __cdecl Packets::GWLWGCostLog::Write(const Packets::GWLWGCostLog *const this, SocketOutputStream *const oStream)
  42813. {
  42814. BYTE v2; // al
  42815.  
  42816. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_nType, 1u);
  42817. v2 = this->m_nType;
  42818. switch ( v2 )
  42819. {
  42820. case 0u:
  42821. goto LABEL_6;
  42822. case 1u:
  42823. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_LogPos, 2u);
  42824. LABEL_6:
  42825. SocketOutputStream::Write(oStream, this->m_LogInfo.m_SerialKey, 0x1A0u);
  42826. return 1;
  42827. case 2u:
  42828. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_LogPos, 2u);
  42829. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_nResult, 1u);
  42830. SocketOutputStream::Write(oStream, this->m_SerialKey, 0x15u);
  42831. break;
  42832. }
  42833. return 1;
  42834. }
  42835.  
  42836. //----- (080784D4) --------------------------------------------------------
  42837. UINT __cdecl Packets::GWLWGCostLog::Execute(Packets::GWLWGCostLog *const this, Player *pPlayer)
  42838. {
  42839. return Packets::GWLWGCostLogHandler::Execute(this, pPlayer);
  42840. }
  42841.  
  42842. //----- (08078534) --------------------------------------------------------
  42843. void __cdecl _tcf_0_79(void *a1)
  42844. {
  42845. std::ios_base::Init::~Init(&std::__ioinit);
  42846. }
  42847.  
  42848. //----- (08078544) --------------------------------------------------------
  42849. void `global constructor keyed to'Packets::GWLWGCostLog::Read()
  42850. {
  42851. std::ios_base::Init::Init(&std::__ioinit);
  42852. __cxa_atexit(_tcf_0_79, 0, &_dso_handle);
  42853. }
  42854. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  42855.  
  42856. //----- (08078570) --------------------------------------------------------
  42857. void __cdecl Packets::GWLWGCostLog::~GWLWGCostLog(Packet *a2)
  42858. {
  42859. a2->_vptr_Packet = (int (**)(...))off_80D17E8;
  42860. Packet::~Packet(a2);
  42861. }
  42862. // 80D17E8: using guessed type _DWORD (__cdecl *off_80D17E8[2])(Packets::GWLWGCostLog *this);
  42863.  
  42864. //----- (0807858C) --------------------------------------------------------
  42865. void __cdecl Packets::GWLWGCostLog::~GWLWGCostLog(IPRegionTable *a2)
  42866. {
  42867. a2->_vptr_IPRegionTable = (int (**)(...))off_80D17E8;
  42868. Packet::~Packet(a2);
  42869. operator delete(a2);
  42870. }
  42871. // 80D17E8: using guessed type _DWORD (__cdecl *off_80D17E8[2])(Packets::GWLWGCostLog *this);
  42872.  
  42873. //----- (080785B4) --------------------------------------------------------
  42874. PacketID_t __cdecl Packets::GWLWGCostLog::GetPacketID(const Packets::GWLWGCostLog *const this)
  42875. {
  42876. return 33;
  42877. }
  42878.  
  42879. //----- (080785C0) --------------------------------------------------------
  42880. UINT __cdecl Packets::GWLWGCostLog::GetPacketSize(const Packets::GWLWGCostLog *const this)
  42881. {
  42882. BYTE v1; // al
  42883. UINT v2; // edx
  42884.  
  42885. v1 = this->m_nType;
  42886. v2 = 1;
  42887. if ( !v1 )
  42888. {
  42889. LOWORD(v2) = 417;
  42890. return v2;
  42891. }
  42892. if ( v1 == 1 )
  42893. return 419;
  42894. if ( v1 != 2 )
  42895. return v2;
  42896. return 25;
  42897. }
  42898.  
  42899. //----- (080785FC) --------------------------------------------------------
  42900. BOOL __cdecl Packets::LBLCostLog::Read(Packets::LBLCostLog *const this, SocketBillingInputStream *const iStream)
  42901. {
  42902. if ( this->mType != 1 )
  42903. __assert__(
  42904. "../../Common/Packets/LBLCostLog.cpp",
  42905. 0xFu,
  42906. "virtual BOOL Packets::LBLCostLog::Read(SocketBillingInputStream&)",
  42907. "FALSE");
  42908. SocketInputStream::Read(&iStream->0, this->mSerial, 0x15u);
  42909. SocketInputStream::Read(&iStream->0, (CHAR *)&this->mResult, 1u);
  42910. return 1;
  42911. }
  42912.  
  42913. //----- (080786A0) --------------------------------------------------------
  42914. BOOL __cdecl Packets::LBLCostLog::Write(const Packets::LBLCostLog *const this, SocketBillingOutputStream *const oStream)
  42915. {
  42916. UINT v2; // eax
  42917. UINT v3; // eax
  42918. UINT v4; // eax
  42919. UINT v5; // eax
  42920. UINT v6; // eax
  42921. UINT v7; // eax
  42922. USHORT ulevel; // [esp+2h] [ebp-26h]
  42923. UINT uYuanBao; // [esp+4h] [ebp-24h]
  42924. UINT uTime; // [esp+8h] [ebp-20h]
  42925. UINT uId4; // [esp+Ch] [ebp-1Ch]
  42926. UINT uId3; // [esp+10h] [ebp-18h]
  42927. UINT uId2; // [esp+14h] [ebp-14h]
  42928. UINT uId1; // [esp+18h] [ebp-10h]
  42929. USHORT zoneid; // [esp+1Eh] [ebp-Ah]
  42930.  
  42931. if ( this->mType )
  42932. __assert__(
  42933. "../../Common/Packets/LBLCostLog.cpp",
  42934. 0x3Au,
  42935. "virtual BOOL Packets::LBLCostLog::Write(SocketBillingOutputStream&) const",
  42936. "FALSE");
  42937. SocketOutputStream::Write(&oStream->0, this->mSerial, 0x15u);
  42938. zoneid = __ROR2__(this->mZoneID, 8);
  42939. SocketOutputStream::Write(&oStream->0, (const CHAR *)&zoneid, 2u);
  42940. v2 = this->mWorldId;
  42941. LOWORD(v2) = __ROR2__(v2, 8);
  42942. v2 = __ROR4__(v2, 16);
  42943. LOWORD(v2) = __ROR2__(v2, 8);
  42944. uId1 = v2;
  42945. SocketOutputStream::Write(&oStream->0, (const CHAR *)&uId1, 4u);
  42946. v3 = this->mServerId;
  42947. LOWORD(v3) = __ROR2__(v3, 8);
  42948. v3 = __ROR4__(v3, 16);
  42949. LOWORD(v3) = __ROR2__(v3, 8);
  42950. uId2 = v3;
  42951. SocketOutputStream::Write(&oStream->0, (const CHAR *)&uId2, 4u);
  42952. v4 = this->mSceneId;
  42953. LOWORD(v4) = __ROR2__(v4, 8);
  42954. v4 = __ROR4__(v4, 16);
  42955. LOWORD(v4) = __ROR2__(v4, 8);
  42956. uId3 = v4;
  42957. SocketOutputStream::Write(&oStream->0, (const CHAR *)&uId3, 4u);
  42958. v5 = this->mUserGUID;
  42959. LOWORD(v5) = __ROR2__(v5, 8);
  42960. v5 = __ROR4__(v5, 16);
  42961. LOWORD(v5) = __ROR2__(v5, 8);
  42962. uId4 = v5;
  42963. SocketOutputStream::Write(&oStream->0, (const CHAR *)&uId4, 4u);
  42964. v6 = this->mCostTime;
  42965. LOWORD(v6) = __ROR2__(v6, 8);
  42966. v6 = __ROR4__(v6, 16);
  42967. LOWORD(v6) = __ROR2__(v6, 8);
  42968. uTime = v6;
  42969. SocketOutputStream::Write(&oStream->0, (const CHAR *)&uTime, 4u);
  42970. v7 = this->mYuanBao;
  42971. LOWORD(v7) = __ROR2__(v7, 8);
  42972. v7 = __ROR4__(v7, 16);
  42973. LOWORD(v7) = __ROR2__(v7, 8);
  42974. uYuanBao = v7;
  42975. SocketOutputStream::Write(&oStream->0, (const CHAR *)&uYuanBao, 4u);
  42976. SocketOutputStream::Write(&oStream->0, (const CHAR *)&this->mAccLength, 1u);
  42977. SocketOutputStream::Write(&oStream->0, this->mAccount, this->mAccLength);
  42978. SocketOutputStream::Write(&oStream->0, (const CHAR *)&this->mCharNameLength, 1u);
  42979. SocketOutputStream::Write(&oStream->0, this->mCharName, this->mCharNameLength);
  42980. ulevel = __ROR2__(this->mUserLevel, 8);
  42981. SocketOutputStream::Write(&oStream->0, (const CHAR *)&ulevel, 2u);
  42982. SocketOutputStream::Write(&oStream->0, (const CHAR *)&this->mIPLength, 1u);
  42983. SocketOutputStream::Write(&oStream->0, this->mIP, this->mIPLength);
  42984. SocketOutputStream::Write(&oStream->0, (const CHAR *)&this->mOtherLength, 1u);
  42985. SocketOutputStream::Write(&oStream->0, this->mOtherInfo, this->mOtherLength);
  42986. return 1;
  42987. }
  42988.  
  42989. //----- (080788CC) --------------------------------------------------------
  42990. UINT __cdecl Packets::LBLCostLog::Execute(Packets::LBLCostLog *const this, Player *pPlayer)
  42991. {
  42992. return Packets::LBLCostLogHandler::Execute(this, pPlayer);
  42993. }
  42994.  
  42995. //----- (0807892C) --------------------------------------------------------
  42996. void __cdecl Packets::LBLCostLog::SetCostInfo(Packets::LBLCostLog *const this, _COST_LOG *pLog)
  42997. {
  42998. signed int v2; // eax
  42999. signed int v3; // eax
  43000. signed int v4; // eax
  43001. signed int v5; // eax
  43002.  
  43003. if ( !pLog )
  43004. __assert__(
  43005. "../../Common/Packets/LBLCostLog.cpp",
  43006. 0x4Du,
  43007. "void Packets::LBLCostLog::SetCostInfo(_COST_LOG*)",
  43008. "pLog");
  43009. this->mType = 0;
  43010. strncpy(this->mAccount, pLog->m_AccName, 0x32u);
  43011. this->mAccount[50] = 0;
  43012. this->mAccLength = 0;
  43013. v2 = 0;
  43014. do
  43015. {
  43016. if ( this->mAccount[v2] )
  43017. ++this->mAccLength;
  43018. ++v2;
  43019. }
  43020. while ( v2 <= 49 );
  43021. strncpy(this->mCharName, pLog->m_CharName, 0x1Eu);
  43022. this->mCharName[30] = 0;
  43023. this->mCharNameLength = 0;
  43024. v3 = 0;
  43025. do
  43026. {
  43027. if ( this->mCharName[v3] )
  43028. ++this->mCharNameLength;
  43029. ++v3;
  43030. }
  43031. while ( v3 <= 29 );
  43032. strncpy(this->mIP, pLog->m_Host, 0xFu);
  43033. this->mIP[15] = 0;
  43034. this->mIPLength = 0;
  43035. v4 = 0;
  43036. do
  43037. {
  43038. if ( this->mIP[v4] )
  43039. ++this->mIPLength;
  43040. ++v4;
  43041. }
  43042. while ( v4 <= 14 );
  43043. strncpy(this->mOtherInfo, pLog->m_OtherInfo, 0xFFu);
  43044. this->mOtherInfo[255] = 0;
  43045. this->mOtherLength = 0;
  43046. v5 = 0;
  43047. do
  43048. {
  43049. if ( this->mOtherInfo[v5] )
  43050. ++this->mOtherLength;
  43051. ++v5;
  43052. }
  43053. while ( v5 <= 254 );
  43054. strncpy(this->mSerial, pLog->m_SerialKey, 0x15u);
  43055. this->mSerial[21] = 0;
  43056. this->mWorldId = pLog->m_WorldId;
  43057. this->mServerId = pLog->m_ServerId;
  43058. this->mSceneId = pLog->m_SceneId;
  43059. this->mUserGUID = pLog->m_UserGUID;
  43060. this->mUserLevel = pLog->m_UserLevel;
  43061. this->mCostTime = pLog->m_CostTime;
  43062. this->mYuanBao = pLog->m_YuanBao;
  43063. }
  43064.  
  43065. //----- (08078AD0) --------------------------------------------------------
  43066. void __cdecl _tcf_0_80(void *a1)
  43067. {
  43068. std::ios_base::Init::~Init(&std::__ioinit);
  43069. }
  43070.  
  43071. //----- (08078AE0) --------------------------------------------------------
  43072. void `global constructor keyed to'Packets::LBLCostLog::Read()
  43073. {
  43074. std::ios_base::Init::Init(&std::__ioinit);
  43075. __cxa_atexit(_tcf_0_80, 0, &_dso_handle);
  43076. }
  43077. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  43078.  
  43079. //----- (08078B0C) --------------------------------------------------------
  43080. void __cdecl Packets::LBLCostLog::~LBLCostLog(BillPacket *a2)
  43081. {
  43082. a2->_vptr_BillPacket = (int (**)(...))off_80D1948;
  43083. BillPacket::~BillPacket(a2);
  43084. }
  43085. // 80D1948: using guessed type _DWORD (__cdecl *off_80D1948[2])(Packets::LBLCostLog *this);
  43086.  
  43087. //----- (08078B28) --------------------------------------------------------
  43088. void __cdecl Packets::LBLCostLog::~LBLCostLog(IPRegionTable *a2)
  43089. {
  43090. a2->_vptr_IPRegionTable = (int (**)(...))off_80D1948;
  43091. BillPacket::~BillPacket(a2);
  43092. operator delete(a2);
  43093. }
  43094. // 80D1948: using guessed type _DWORD (__cdecl *off_80D1948[2])(Packets::LBLCostLog *this);
  43095.  
  43096. //----- (08078B50) --------------------------------------------------------
  43097. BPacketID_t __cdecl Packets::LBLCostLog::GetPacketID(const Packets::LBLCostLog *const this)
  43098. {
  43099. return -59;
  43100. }
  43101.  
  43102. //----- (08078B5C) --------------------------------------------------------
  43103. UINT __cdecl Packets::LBLCostLog::GetPacketSize(const Packets::LBLCostLog *const this)
  43104. {
  43105. BYTE v1; // al
  43106.  
  43107. v1 = this->mType;
  43108. if ( !v1 )
  43109. return this->mIPLength + this->mCharNameLength + this->mAccLength + this->mOtherLength + 53;
  43110. if ( v1 != 1 )
  43111. __assert__(
  43112. "../../Common/Packets/LBLCostLog.h",
  43113. 0x44u,
  43114. "virtual UINT Packets::LBLCostLog::GetPacketSize() const",
  43115. "FALSE");
  43116. return 22;
  43117. }
  43118.  
  43119. //----- (08078BC4) --------------------------------------------------------
  43120. BOOL __cdecl Packets::LBLAskMig::Read(Packets::LBLAskMig *const this, SocketBillingInputStream *const iStream)
  43121. {
  43122. BYTE v3; // al
  43123.  
  43124. if ( this->mType != 1 )
  43125. __assert__(
  43126. "../../Common/Packets/LBLAskMig.cpp",
  43127. 0x13u,
  43128. "virtual BOOL Packets::LBLAskMig::Read(SocketBillingInputStream&)",
  43129. "FALSE");
  43130. SocketInputStream::Read(&iStream->0, (CHAR *)&this->mAccLength, 1u);
  43131. v3 = this->mAccLength;
  43132. if ( v3 > 0x32u )
  43133. {
  43134. this->mAccLength = 50;
  43135. v3 = 50;
  43136. }
  43137. SocketInputStream::Read(&iStream->0, this->mAccount, v3);
  43138. SocketInputStream::Read(&iStream->0, this->mPrizeSerial, 0x15u);
  43139. SocketInputStream::Read(&iStream->0, (CHAR *)&this->mMigResult, 1u);
  43140. return 1;
  43141. }
  43142.  
  43143. //----- (08078C98) --------------------------------------------------------
  43144. BOOL __cdecl Packets::LBLAskMig::Write(const Packets::LBLAskMig *const this, SocketBillingOutputStream *const oStream)
  43145. {
  43146. UINT v2; // eax
  43147. UINT uGUID; // [esp+8h] [ebp-10h]
  43148. USHORT ulv; // [esp+Eh] [ebp-Ah]
  43149.  
  43150. if ( this->mType )
  43151. __assert__(
  43152. "../../Common/Packets/LBLAskMig.cpp",
  43153. 0x2Fu,
  43154. "virtual BOOL Packets::LBLAskMig::Write(SocketBillingOutputStream&) const",
  43155. "FALSE");
  43156. SocketOutputStream::Write(&oStream->0, (const CHAR *)&this->mAccLength, 1u);
  43157. SocketOutputStream::Write(&oStream->0, this->mAccount, this->mAccLength);
  43158. SocketOutputStream::Write(&oStream->0, (const CHAR *)&this->mIPLength, 1u);
  43159. SocketOutputStream::Write(&oStream->0, this->mIP, this->mIPLength);
  43160. SocketOutputStream::Write(&oStream->0, (const CHAR *)&this->mCharNameLength, 1u);
  43161. SocketOutputStream::Write(&oStream->0, this->mCharName, this->mCharNameLength);
  43162. ulv = __ROR2__(this->mCharLevel, 8);
  43163. SocketOutputStream::Write(&oStream->0, (const CHAR *)&ulv, 2u);
  43164. v2 = this->mCharGUID;
  43165. LOWORD(v2) = __ROR2__(v2, 8);
  43166. v2 = __ROR4__(v2, 16);
  43167. LOWORD(v2) = __ROR2__(v2, 8);
  43168. uGUID = v2;
  43169. SocketOutputStream::Write(&oStream->0, (const CHAR *)&uGUID, 4u);
  43170. SocketOutputStream::Write(&oStream->0, this->mPrizeSerial, 0x15u);
  43171. return 1;
  43172. }
  43173.  
  43174. //----- (08078DDC) --------------------------------------------------------
  43175. UINT __cdecl Packets::LBLAskMig::Execute(Packets::LBLAskMig *const this, Player *pPlayer)
  43176. {
  43177. return Packets::LBLAskMigHandler::Execute(this, pPlayer);
  43178. }
  43179.  
  43180. //----- (08078E3C) --------------------------------------------------------
  43181. void __cdecl _tcf_0_81(void *a1)
  43182. {
  43183. std::ios_base::Init::~Init(&std::__ioinit);
  43184. }
  43185.  
  43186. //----- (08078E4C) --------------------------------------------------------
  43187. void `global constructor keyed to'Packets::LBLAskMig::Read()
  43188. {
  43189. std::ios_base::Init::Init(&std::__ioinit);
  43190. __cxa_atexit(_tcf_0_81, 0, &_dso_handle);
  43191. }
  43192. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  43193.  
  43194. //----- (08078E78) --------------------------------------------------------
  43195. void __cdecl Packets::LBLAskMig::~LBLAskMig(BillPacket *a2)
  43196. {
  43197. a2->_vptr_BillPacket = (int (**)(...))off_80D1B68;
  43198. BillPacket::~BillPacket(a2);
  43199. }
  43200. // 80D1B68: using guessed type _DWORD (__cdecl *off_80D1B68[2])(Packets::LBLAskMig *this);
  43201.  
  43202. //----- (08078E94) --------------------------------------------------------
  43203. void __cdecl Packets::LBLAskMig::~LBLAskMig(IPRegionTable *a2)
  43204. {
  43205. a2->_vptr_IPRegionTable = (int (**)(...))off_80D1B68;
  43206. BillPacket::~BillPacket(a2);
  43207. operator delete(a2);
  43208. }
  43209. // 80D1B68: using guessed type _DWORD (__cdecl *off_80D1B68[2])(Packets::LBLAskMig *this);
  43210.  
  43211. //----- (08078EBC) --------------------------------------------------------
  43212. BPacketID_t __cdecl Packets::LBLAskMig::GetPacketID(const Packets::LBLAskMig *const this)
  43213. {
  43214. return -27;
  43215. }
  43216.  
  43217. //----- (08078EC8) --------------------------------------------------------
  43218. UINT __cdecl Packets::LBLAskMig::GetPacketSize(const Packets::LBLAskMig *const this)
  43219. {
  43220. BYTE v1; // al
  43221. int v2; // ebx
  43222. UINT v3; // ecx
  43223.  
  43224. v1 = this->mType;
  43225. v2 = this->mAccLength;
  43226. v3 = v2 + 22;
  43227. if ( !v1 )
  43228. {
  43229. v3 += this->mCharNameLength + this->mIPLength + 8;
  43230. return v3;
  43231. }
  43232. if ( v1 != 1 )
  43233. return v3;
  43234. return v2 + 23;
  43235. }
  43236.  
  43237. //----- (08078EFC) --------------------------------------------------------
  43238. BOOL __cdecl Packets::LWChangeName::Read(Packets::LWChangeName *const this, SocketInputStream *const iStream)
  43239. {
  43240. return Packets::SChgNamePacketUnit::ReadStream(&this->m_sPacketUnit, iStream);
  43241. }
  43242.  
  43243. //----- (08078F60) --------------------------------------------------------
  43244. BOOL __cdecl Packets::LWChangeName::Write(const Packets::LWChangeName *const this, SocketOutputStream *const oStream)
  43245. {
  43246. return Packets::SChgNamePacketUnit::WriteStream(&this->m_sPacketUnit, oStream);
  43247. }
  43248.  
  43249. //----- (08078FC4) --------------------------------------------------------
  43250. UINT __cdecl Packets::LWChangeName::Execute(Packets::LWChangeName *const this, Player *pPlayer)
  43251. {
  43252. return Packets::LWChangeNameHandler::Execute(this, pPlayer);
  43253. }
  43254.  
  43255. //----- (08079024) --------------------------------------------------------
  43256. void __cdecl _tcf_0_82(void *a1)
  43257. {
  43258. std::ios_base::Init::~Init(&std::__ioinit);
  43259. }
  43260.  
  43261. //----- (08079034) --------------------------------------------------------
  43262. void `global constructor keyed to'Packets::LWChangeName::Read()
  43263. {
  43264. std::ios_base::Init::Init(&std::__ioinit);
  43265. __cxa_atexit(_tcf_0_82, 0, &_dso_handle);
  43266. }
  43267. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  43268.  
  43269. //----- (08079060) --------------------------------------------------------
  43270. void __cdecl Packets::LWChangeName::~LWChangeName(Packet *a2)
  43271. {
  43272. a2->_vptr_Packet = (int (**)(...))off_80D1CE8;
  43273. Packet::~Packet(a2);
  43274. }
  43275. // 80D1CE8: using guessed type _DWORD (__cdecl *off_80D1CE8[2])(Packets::LWChangeName *this);
  43276.  
  43277. //----- (0807907C) --------------------------------------------------------
  43278. void __cdecl Packets::LWChangeName::~LWChangeName(IPRegionTable *a2)
  43279. {
  43280. a2->_vptr_IPRegionTable = (int (**)(...))off_80D1CE8;
  43281. Packet::~Packet(a2);
  43282. operator delete(a2);
  43283. }
  43284. // 80D1CE8: using guessed type _DWORD (__cdecl *off_80D1CE8[2])(Packets::LWChangeName *this);
  43285.  
  43286. //----- (080790A4) --------------------------------------------------------
  43287. PacketID_t __cdecl Packets::LWChangeName::GetPacketID(const Packets::LWChangeName *const this)
  43288. {
  43289. return 459;
  43290. }
  43291.  
  43292. //----- (080790B0) --------------------------------------------------------
  43293. UINT __cdecl Packets::LWChangeName::GetPacketSize(const Packets::LWChangeName *const this)
  43294. {
  43295. return Packets::SChgNamePacketUnit::GetPacketSize();
  43296. }
  43297.  
  43298. //----- (080790BC) --------------------------------------------------------
  43299. BOOL __cdecl Packets::WLChangeName::Read(Packets::WLChangeName *const this, SocketInputStream *const iStream)
  43300. {
  43301. return Packets::SChgNamePacketUnit::ReadStream(&this->m_sPacketUnit, iStream);
  43302. }
  43303.  
  43304. //----- (08079120) --------------------------------------------------------
  43305. BOOL __cdecl Packets::WLChangeName::Write(const Packets::WLChangeName *const this, SocketOutputStream *const oStream)
  43306. {
  43307. return Packets::SChgNamePacketUnit::WriteStream(&this->m_sPacketUnit, oStream);
  43308. }
  43309.  
  43310. //----- (08079184) --------------------------------------------------------
  43311. UINT __cdecl Packets::WLChangeName::Execute(Packets::WLChangeName *const this, Player *pPlayer)
  43312. {
  43313. return Packets::WLChangeNameHandler::Execute(this, pPlayer);
  43314. }
  43315.  
  43316. //----- (080791E4) --------------------------------------------------------
  43317. void __cdecl _tcf_0_83(void *a1)
  43318. {
  43319. std::ios_base::Init::~Init(&std::__ioinit);
  43320. }
  43321.  
  43322. //----- (080791F4) --------------------------------------------------------
  43323. void `global constructor keyed to'Packets::WLChangeName::Read()
  43324. {
  43325. std::ios_base::Init::Init(&std::__ioinit);
  43326. __cxa_atexit(_tcf_0_83, 0, &_dso_handle);
  43327. }
  43328. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  43329.  
  43330. //----- (08079220) --------------------------------------------------------
  43331. void __cdecl Packets::WLChangeName::~WLChangeName(Packet *a2)
  43332. {
  43333. a2->_vptr_Packet = (int (**)(...))off_80D1E48;
  43334. Packet::~Packet(a2);
  43335. }
  43336. // 80D1E48: using guessed type _DWORD (__cdecl *off_80D1E48[2])(Packets::WLChangeName *this);
  43337.  
  43338. //----- (0807923C) --------------------------------------------------------
  43339. void __cdecl Packets::WLChangeName::~WLChangeName(IPRegionTable *a2)
  43340. {
  43341. a2->_vptr_IPRegionTable = (int (**)(...))off_80D1E48;
  43342. Packet::~Packet(a2);
  43343. operator delete(a2);
  43344. }
  43345. // 80D1E48: using guessed type _DWORD (__cdecl *off_80D1E48[2])(Packets::WLChangeName *this);
  43346.  
  43347. //----- (08079264) --------------------------------------------------------
  43348. PacketID_t __cdecl Packets::WLChangeName::GetPacketID(const Packets::WLChangeName *const this)
  43349. {
  43350. return 151;
  43351. }
  43352.  
  43353. //----- (08079270) --------------------------------------------------------
  43354. UINT __cdecl Packets::WLChangeName::GetPacketSize(const Packets::WLChangeName *const this)
  43355. {
  43356. return Packets::SChgNamePacketUnit::GetPacketSize();
  43357. }
  43358.  
  43359. //----- (0807927C) --------------------------------------------------------
  43360. BOOL __cdecl Packets::CLAskCreateCode::Read(Packets::CLAskCreateCode *const this, SocketInputStream *const iStream)
  43361. {
  43362. SocketInputStream::Read(iStream, (CHAR *)&this->m_AskType, 1u);
  43363. if ( this->m_AskType == 1 )
  43364. SocketInputStream::Read(iStream, (CHAR *)&this->m_Answer, 8u);
  43365. return 1;
  43366. }
  43367.  
  43368. //----- (08079308) --------------------------------------------------------
  43369. BOOL __cdecl Packets::CLAskCreateCode::Write(const Packets::CLAskCreateCode *const this, SocketOutputStream *const oStream)
  43370. {
  43371. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_AskType, 1u);
  43372. if ( this->m_AskType == 1 )
  43373. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_Answer, 8u);
  43374. return 1;
  43375. }
  43376.  
  43377. //----- (08079394) --------------------------------------------------------
  43378. UINT __cdecl Packets::CLAskCreateCode::Execute(Packets::CLAskCreateCode *const this, Player *pPlayer)
  43379. {
  43380. return Packets::CLAskCreateCodeHandler::Execute(this, pPlayer);
  43381. }
  43382.  
  43383. //----- (080793F4) --------------------------------------------------------
  43384. void __cdecl _tcf_0_84(void *a1)
  43385. {
  43386. std::ios_base::Init::~Init(&std::__ioinit);
  43387. }
  43388.  
  43389. //----- (08079404) --------------------------------------------------------
  43390. void `global constructor keyed to'Packets::CLAskCreateCode::Read()
  43391. {
  43392. std::ios_base::Init::Init(&std::__ioinit);
  43393. __cxa_atexit(_tcf_0_84, 0, &_dso_handle);
  43394. }
  43395. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  43396.  
  43397. //----- (08079430) --------------------------------------------------------
  43398. void __cdecl Packets::CLAskCreateCode::~CLAskCreateCode(Packet *a2)
  43399. {
  43400. a2->_vptr_Packet = (int (**)(...))off_80D1FA8;
  43401. Packet::~Packet(a2);
  43402. }
  43403. // 80D1FA8: using guessed type _DWORD (__cdecl *off_80D1FA8[2])(Packets::CLAskCreateCode *this);
  43404.  
  43405. //----- (0807944C) --------------------------------------------------------
  43406. void __cdecl Packets::CLAskCreateCode::~CLAskCreateCode(IPRegionTable *a2)
  43407. {
  43408. a2->_vptr_IPRegionTable = (int (**)(...))off_80D1FA8;
  43409. Packet::~Packet(a2);
  43410. operator delete(a2);
  43411. }
  43412. // 80D1FA8: using guessed type _DWORD (__cdecl *off_80D1FA8[2])(Packets::CLAskCreateCode *this);
  43413.  
  43414. //----- (08079474) --------------------------------------------------------
  43415. PacketID_t __cdecl Packets::CLAskCreateCode::GetPacketID(const Packets::CLAskCreateCode *const this)
  43416. {
  43417. return 31;
  43418. }
  43419.  
  43420. //----- (08079480) --------------------------------------------------------
  43421. int __cdecl Packets::CLAskCreateCode::GetPacketSize(int a2)
  43422. {
  43423. return 8 * (*(_BYTE *)(a2 + 12) == 1) + 1;
  43424. }
  43425.  
  43426. //----- (0807949C) --------------------------------------------------------
  43427. BOOL __cdecl Packets::LCRetCreateCode::Read(Packets::LCRetCreateCode *const this, SocketInputStream *const iStream)
  43428. {
  43429. SocketInputStream::Read(iStream, (CHAR *)&this->m_RetType, 1u);
  43430. if ( this->m_RetType == 2 )
  43431. SocketInputStream::Read(iStream, (CHAR *)this->m_imageBuf, 0x240u);
  43432. return 1;
  43433. }
  43434.  
  43435. //----- (08079528) --------------------------------------------------------
  43436. BOOL __cdecl Packets::LCRetCreateCode::Write(const Packets::LCRetCreateCode *const this, SocketOutputStream *const oStream)
  43437. {
  43438. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_RetType, 1u);
  43439. if ( this->m_RetType == 2 )
  43440. SocketOutputStream::Write(oStream, (const CHAR *)this->m_imageBuf, 0x240u);
  43441. return 1;
  43442. }
  43443.  
  43444. //----- (080795B4) --------------------------------------------------------
  43445. UINT __cdecl Packets::LCRetCreateCode::Execute(Packets::LCRetCreateCode *const this, Player *pPlayer)
  43446. {
  43447. return Packets::LCRetCreateCodeHandler::Execute(this, pPlayer);
  43448. }
  43449.  
  43450. //----- (08079614) --------------------------------------------------------
  43451. void __cdecl _tcf_0_85(void *a1)
  43452. {
  43453. std::ios_base::Init::~Init(&std::__ioinit);
  43454. }
  43455.  
  43456. //----- (08079624) --------------------------------------------------------
  43457. void `global constructor keyed to'Packets::LCRetCreateCode::Read()
  43458. {
  43459. std::ios_base::Init::Init(&std::__ioinit);
  43460. __cxa_atexit(_tcf_0_85, 0, &_dso_handle);
  43461. }
  43462. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  43463.  
  43464. //----- (08079650) --------------------------------------------------------
  43465. void __cdecl Packets::LCRetCreateCode::~LCRetCreateCode(Packet *a2)
  43466. {
  43467. a2->_vptr_Packet = (int (**)(...))off_80D2128;
  43468. Packet::~Packet(a2);
  43469. }
  43470. // 80D2128: using guessed type _DWORD (__cdecl *off_80D2128[2])(Packets::LCRetCreateCode *this);
  43471.  
  43472. //----- (0807966C) --------------------------------------------------------
  43473. void __cdecl Packets::LCRetCreateCode::~LCRetCreateCode(IPRegionTable *a2)
  43474. {
  43475. a2->_vptr_IPRegionTable = (int (**)(...))off_80D2128;
  43476. Packet::~Packet(a2);
  43477. operator delete(a2);
  43478. }
  43479. // 80D2128: using guessed type _DWORD (__cdecl *off_80D2128[2])(Packets::LCRetCreateCode *this);
  43480.  
  43481. //----- (08079694) --------------------------------------------------------
  43482. PacketID_t __cdecl Packets::LCRetCreateCode::GetPacketID(const Packets::LCRetCreateCode *const this)
  43483. {
  43484. return 402;
  43485. }
  43486.  
  43487. //----- (080796A0) --------------------------------------------------------
  43488. UINT __cdecl Packets::LCRetCreateCode::GetPacketSize(const Packets::LCRetCreateCode *const this)
  43489. {
  43490. UINT v1; // edx
  43491.  
  43492. v1 = 1;
  43493. if ( this->m_RetType == 2 )
  43494. LOWORD(v1) = 577;
  43495. return v1;
  43496. }
  43497.  
  43498. //----- (080796C0) --------------------------------------------------------
  43499. BOOL __cdecl Packets::CLRegNewLicense::Read(Packets::CLRegNewLicense *const this, SocketInputStream *const iStream)
  43500. {
  43501. SocketInputStream::Read(iStream, this->szAccount, 0x32u);
  43502. SocketInputStream::Read(iStream, (CHAR *)&this->m_UserAnswer, 1u);
  43503. return 1;
  43504. }
  43505.  
  43506. //----- (0807973C) --------------------------------------------------------
  43507. BOOL __cdecl Packets::CLRegNewLicense::Write(const Packets::CLRegNewLicense *const this, SocketOutputStream *const oStream)
  43508. {
  43509. SocketOutputStream::Write(oStream, this->szAccount, 0x32u);
  43510. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_UserAnswer, 1u);
  43511. return 1;
  43512. }
  43513.  
  43514. //----- (080797B8) --------------------------------------------------------
  43515. UINT __cdecl Packets::CLRegNewLicense::Execute(Packets::CLRegNewLicense *const this, Player *pPlayer)
  43516. {
  43517. return Packets::CLRegNewLicenseHandler::Execute(this, pPlayer);
  43518. }
  43519.  
  43520. //----- (08079818) --------------------------------------------------------
  43521. void __cdecl _tcf_0_86(void *a1)
  43522. {
  43523. std::ios_base::Init::~Init(&std::__ioinit);
  43524. }
  43525.  
  43526. //----- (08079828) --------------------------------------------------------
  43527. void `global constructor keyed to'Packets::CLRegNewLicense::Read()
  43528. {
  43529. std::ios_base::Init::Init(&std::__ioinit);
  43530. __cxa_atexit(_tcf_0_86, 0, &_dso_handle);
  43531. }
  43532. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  43533.  
  43534. //----- (08079854) --------------------------------------------------------
  43535. void __cdecl Packets::CLRegNewLicense::~CLRegNewLicense(Packet *a2)
  43536. {
  43537. a2->_vptr_Packet = (int (**)(...))off_80D22A8;
  43538. Packet::~Packet(a2);
  43539. }
  43540. // 80D22A8: using guessed type _DWORD (__cdecl *off_80D22A8[2])(Packets::CLRegNewLicense *this);
  43541.  
  43542. //----- (08079870) --------------------------------------------------------
  43543. void __cdecl Packets::CLRegNewLicense::~CLRegNewLicense(IPRegionTable *a2)
  43544. {
  43545. a2->_vptr_IPRegionTable = (int (**)(...))off_80D22A8;
  43546. Packet::~Packet(a2);
  43547. operator delete(a2);
  43548. }
  43549. // 80D22A8: using guessed type _DWORD (__cdecl *off_80D22A8[2])(Packets::CLRegNewLicense *this);
  43550.  
  43551. //----- (08079898) --------------------------------------------------------
  43552. PacketID_t __cdecl Packets::CLRegNewLicense::GetPacketID(const Packets::CLRegNewLicense *const this)
  43553. {
  43554. return 103;
  43555. }
  43556.  
  43557. //----- (080798A4) --------------------------------------------------------
  43558. UINT __cdecl Packets::CLRegNewLicense::GetPacketSize(const Packets::CLRegNewLicense *const this)
  43559. {
  43560. return 51;
  43561. }
  43562.  
  43563. //----- (080798B0) --------------------------------------------------------
  43564. BOOL __cdecl Packets::LBAskRegLicense::Read(Packets::LBAskRegLicense *const this, SocketInputStream *const iStream)
  43565. {
  43566. SocketInputStream::Read(iStream, this->szAccount, 0x32u);
  43567. SocketInputStream::Read(iStream, (CHAR *)&this->UserAnswer, 1u);
  43568. SocketInputStream::Read(iStream, (CHAR *)&this->PlayerID, 2u);
  43569. SocketInputStream::Read(iStream, this->szIP, 0xFu);
  43570. return 1;
  43571. }
  43572.  
  43573. //----- (08079944) --------------------------------------------------------
  43574. BOOL __cdecl Packets::LBAskRegLicense::Write(const Packets::LBAskRegLicense *const this, SocketOutputStream *const oStream)
  43575. {
  43576. SocketOutputStream::Write(oStream, this->szAccount, 0x32u);
  43577. SocketOutputStream::Write(oStream, (const CHAR *)&this->UserAnswer, 1u);
  43578. SocketOutputStream::Write(oStream, (const CHAR *)&this->PlayerID, 2u);
  43579. SocketOutputStream::Write(oStream, this->szIP, 0xFu);
  43580. return 1;
  43581. }
  43582.  
  43583. //----- (080799D8) --------------------------------------------------------
  43584. UINT __cdecl Packets::LBAskRegLicense::Execute(Packets::LBAskRegLicense *const this, Player *pPlayer)
  43585. {
  43586. return Packets::LBAskRegLicenseHandler::Execute(this, pPlayer);
  43587. }
  43588.  
  43589. //----- (08079A38) --------------------------------------------------------
  43590. const CHAR *__cdecl Packets::LBAskRegLicense::GetAccount(const Packets::LBAskRegLicense *const this)
  43591. {
  43592. return this->szAccount;
  43593. }
  43594.  
  43595. //----- (08079A44) --------------------------------------------------------
  43596. void __cdecl Packets::LBAskRegLicense::SetAccount(Packets::LBAskRegLicense *const this, const CHAR *pAccount)
  43597. {
  43598. if ( !pAccount )
  43599. __assert__(
  43600. "../../Common/Packets/LBAskRegLicense.cpp",
  43601. 0x33u,
  43602. "void Packets::LBAskRegLicense::SetAccount(const CHAR*)",
  43603. "pAccount");
  43604. strncpy(this->szAccount, pAccount, 0x32u);
  43605. this->szAccount[50] = 0;
  43606. }
  43607.  
  43608. //----- (08079A88) --------------------------------------------------------
  43609. int __cdecl Packets::LBAskRegLicense::GetPlayerID(int a2)
  43610. {
  43611. return *(signed __int16 *)(a2 + 64);
  43612. }
  43613.  
  43614. //----- (08079A94) --------------------------------------------------------
  43615. void __cdecl Packets::LBAskRegLicense::SetPlayerID(int pID, __int16 pIDa)
  43616. {
  43617. *(_WORD *)(pID + 64) = pIDa;
  43618. }
  43619.  
  43620. //----- (08079AA4) --------------------------------------------------------
  43621. int __cdecl Packets::LBAskRegLicense::GetUserAnswer(int a2)
  43622. {
  43623. return *(unsigned __int8 *)(a2 + 63);
  43624. }
  43625.  
  43626. //----- (08079AB0) --------------------------------------------------------
  43627. void __cdecl Packets::LBAskRegLicense::SetUserAnswer(int rt, char rta)
  43628. {
  43629. *(_BYTE *)(rt + 63) = rta;
  43630. }
  43631.  
  43632. //----- (08079AC0) --------------------------------------------------------
  43633. void __cdecl Packets::LBAskRegLicense::SetIPAddr(Packets::LBAskRegLicense *const this, const CHAR *pIP)
  43634. {
  43635. if ( !pIP )
  43636. __assert__(
  43637. "../../Common/Packets/LBAskRegLicense.cpp",
  43638. 0x4Eu,
  43639. "void Packets::LBAskRegLicense::SetIPAddr(const CHAR*)",
  43640. "pIP");
  43641. strncpy(this->szIP, pIP, 0xFu);
  43642. this->szIP[15] = 0;
  43643. }
  43644.  
  43645. //----- (08079B04) --------------------------------------------------------
  43646. const CHAR *__cdecl Packets::LBAskRegLicense::GetIPAddr(const Packets::LBAskRegLicense *const this)
  43647. {
  43648. return this->szIP;
  43649. }
  43650.  
  43651. //----- (08079B10) --------------------------------------------------------
  43652. void __cdecl _tcf_0_87(void *a1)
  43653. {
  43654. std::ios_base::Init::~Init(&std::__ioinit);
  43655. }
  43656.  
  43657. //----- (08079B20) --------------------------------------------------------
  43658. void `global constructor keyed to'Packets::LBAskRegLicense::Read()
  43659. {
  43660. std::ios_base::Init::Init(&std::__ioinit);
  43661. __cxa_atexit(_tcf_0_87, 0, &_dso_handle);
  43662. }
  43663. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  43664.  
  43665. //----- (08079B4C) --------------------------------------------------------
  43666. void __cdecl Packets::LBAskRegLicense::~LBAskRegLicense(Packet *a2)
  43667. {
  43668. a2->_vptr_Packet = (int (**)(...))off_80D2428;
  43669. Packet::~Packet(a2);
  43670. }
  43671. // 80D2428: using guessed type _DWORD (__cdecl *off_80D2428[2])(Packets::LBAskRegLicense *this);
  43672.  
  43673. //----- (08079B68) --------------------------------------------------------
  43674. void __cdecl Packets::LBAskRegLicense::~LBAskRegLicense(IPRegionTable *a2)
  43675. {
  43676. a2->_vptr_IPRegionTable = (int (**)(...))off_80D2428;
  43677. Packet::~Packet(a2);
  43678. operator delete(a2);
  43679. }
  43680. // 80D2428: using guessed type _DWORD (__cdecl *off_80D2428[2])(Packets::LBAskRegLicense *this);
  43681.  
  43682. //----- (08079B90) --------------------------------------------------------
  43683. PacketID_t __cdecl Packets::LBAskRegLicense::GetPacketID(const Packets::LBAskRegLicense *const this)
  43684. {
  43685. return 282;
  43686. }
  43687.  
  43688. //----- (08079B9C) --------------------------------------------------------
  43689. UINT __cdecl Packets::LBAskRegLicense::GetPacketSize(const Packets::LBAskRegLicense *const this)
  43690. {
  43691. return 68;
  43692. }
  43693.  
  43694. //----- (08079BA8) --------------------------------------------------------
  43695. BOOL __cdecl Packets::LBLRegNewLicense::Read(Packets::LBLRegNewLicense *const this, SocketBillingInputStream *const iStream)
  43696. {
  43697. BYTE v3; // al
  43698.  
  43699. if ( this->mType != 1 )
  43700. __assert__(
  43701. "../../Common/Packets/LBLRegNewLicense.cpp",
  43702. 0x12u,
  43703. "virtual BOOL Packets::LBLRegNewLicense::Read(SocketBillingInputStream&)",
  43704. "FALSE");
  43705. SocketInputStream::Read(&iStream->0, (CHAR *)&this->mAccLength, 1u);
  43706. v3 = this->mAccLength;
  43707. if ( v3 > 0x32u )
  43708. {
  43709. this->mAccLength = 50;
  43710. v3 = 50;
  43711. }
  43712. SocketInputStream::Read(&iStream->0, this->mAccount, v3);
  43713. SocketInputStream::Read(&iStream->0, (CHAR *)&this->mRegLicense, 1u);
  43714. return 1;
  43715. }
  43716.  
  43717. //----- (08079C68) --------------------------------------------------------
  43718. BOOL __cdecl Packets::LBLRegNewLicense::Write(const Packets::LBLRegNewLicense *const this, SocketBillingOutputStream *const oStream)
  43719. {
  43720. if ( this->mType )
  43721. __assert__(
  43722. "../../Common/Packets/LBLRegNewLicense.cpp",
  43723. 0x28u,
  43724. "virtual BOOL Packets::LBLRegNewLicense::Write(SocketBillingOutputStream&) const",
  43725. "FALSE");
  43726. SocketOutputStream::Write(&oStream->0, (const CHAR *)&this->mAccLength, 1u);
  43727. SocketOutputStream::Write(&oStream->0, this->mAccount, this->mAccLength);
  43728. SocketOutputStream::Write(&oStream->0, (const CHAR *)&this->mIPLength, 1u);
  43729. SocketOutputStream::Write(&oStream->0, this->mIP, this->mIPLength);
  43730. SocketOutputStream::Write(&oStream->0, (const CHAR *)&this->mRegLicense, 1u);
  43731. return 1;
  43732. }
  43733.  
  43734. //----- (08079D40) --------------------------------------------------------
  43735. UINT __cdecl Packets::LBLRegNewLicense::Execute(Packets::LBLRegNewLicense *const this, Player *pPlayer)
  43736. {
  43737. return Packets::LBLRegNewLicenseHandler::Execute(this, pPlayer);
  43738. }
  43739.  
  43740. //----- (08079DA0) --------------------------------------------------------
  43741. void __cdecl _tcf_0_88(void *a1)
  43742. {
  43743. std::ios_base::Init::~Init(&std::__ioinit);
  43744. }
  43745.  
  43746. //----- (08079DB0) --------------------------------------------------------
  43747. void `global constructor keyed to'Packets::LBLRegNewLicense::Read()
  43748. {
  43749. std::ios_base::Init::Init(&std::__ioinit);
  43750. __cxa_atexit(_tcf_0_88, 0, &_dso_handle);
  43751. }
  43752. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  43753.  
  43754. //----- (08079DDC) --------------------------------------------------------
  43755. void __cdecl Packets::LBLRegNewLicense::~LBLRegNewLicense(BillPacket *a2)
  43756. {
  43757. a2->_vptr_BillPacket = (int (**)(...))off_80D2628;
  43758. BillPacket::~BillPacket(a2);
  43759. }
  43760. // 80D2628: using guessed type _DWORD (__cdecl *off_80D2628[2])(Packets::LBLRegNewLicense *this);
  43761.  
  43762. //----- (08079DF8) --------------------------------------------------------
  43763. void __cdecl Packets::LBLRegNewLicense::~LBLRegNewLicense(IPRegionTable *a2)
  43764. {
  43765. a2->_vptr_IPRegionTable = (int (**)(...))off_80D2628;
  43766. BillPacket::~BillPacket(a2);
  43767. operator delete(a2);
  43768. }
  43769. // 80D2628: using guessed type _DWORD (__cdecl *off_80D2628[2])(Packets::LBLRegNewLicense *this);
  43770.  
  43771. //----- (08079E20) --------------------------------------------------------
  43772. BPacketID_t __cdecl Packets::LBLRegNewLicense::GetPacketID(const Packets::LBLRegNewLicense *const this)
  43773. {
  43774. return -89;
  43775. }
  43776.  
  43777. //----- (08079E2C) --------------------------------------------------------
  43778. UINT __cdecl Packets::LBLRegNewLicense::GetPacketSize(const Packets::LBLRegNewLicense *const this)
  43779. {
  43780. BYTE v1; // al
  43781. int v2; // ebx
  43782. UINT v3; // edx
  43783.  
  43784. v1 = this->mType;
  43785. v2 = this->mAccLength;
  43786. v3 = v2 + 1;
  43787. if ( !v1 )
  43788. {
  43789. v3 += this->mIPLength + 2;
  43790. return v3;
  43791. }
  43792. if ( v1 != 1 )
  43793. return v3;
  43794. return v2 + 2;
  43795. }
  43796.  
  43797. //----- (08079E5C) --------------------------------------------------------
  43798. BOOL __cdecl Packets::CLRegSafeSign::Read(Packets::CLRegSafeSign *const this, SocketInputStream *const iStream)
  43799. {
  43800. SocketInputStream::Read(iStream, this->szAccount, 0x32u);
  43801. SocketInputStream::Read(iStream, (CHAR *)&this->m_UserAnswer, 1u);
  43802. return 1;
  43803. }
  43804.  
  43805. //----- (08079ED8) --------------------------------------------------------
  43806. BOOL __cdecl Packets::CLRegSafeSign::Write(const Packets::CLRegSafeSign *const this, SocketOutputStream *const oStream)
  43807. {
  43808. SocketOutputStream::Write(oStream, this->szAccount, 0x32u);
  43809. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_UserAnswer, 1u);
  43810. return 1;
  43811. }
  43812.  
  43813. //----- (08079F54) --------------------------------------------------------
  43814. UINT __cdecl Packets::CLRegSafeSign::Execute(Packets::CLRegSafeSign *const this, Player *pPlayer)
  43815. {
  43816. return Packets::CLRegSafeSignHandler::Execute(this, pPlayer);
  43817. }
  43818.  
  43819. //----- (08079FB4) --------------------------------------------------------
  43820. void __cdecl _tcf_0_89(void *a1)
  43821. {
  43822. std::ios_base::Init::~Init(&std::__ioinit);
  43823. }
  43824.  
  43825. //----- (08079FC4) --------------------------------------------------------
  43826. void `global constructor keyed to'Packets::CLRegSafeSign::Read()
  43827. {
  43828. std::ios_base::Init::Init(&std::__ioinit);
  43829. __cxa_atexit(_tcf_0_89, 0, &_dso_handle);
  43830. }
  43831. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  43832.  
  43833. //----- (08079FF0) --------------------------------------------------------
  43834. void __cdecl Packets::CLRegSafeSign::~CLRegSafeSign(Packet *a2)
  43835. {
  43836. a2->_vptr_Packet = (int (**)(...))off_80D27C8;
  43837. Packet::~Packet(a2);
  43838. }
  43839. // 80D27C8: using guessed type _DWORD (__cdecl *off_80D27C8[2])(Packets::CLRegSafeSign *this);
  43840.  
  43841. //----- (0807A00C) --------------------------------------------------------
  43842. void __cdecl Packets::CLRegSafeSign::~CLRegSafeSign(IPRegionTable *a2)
  43843. {
  43844. a2->_vptr_IPRegionTable = (int (**)(...))off_80D27C8;
  43845. Packet::~Packet(a2);
  43846. operator delete(a2);
  43847. }
  43848. // 80D27C8: using guessed type _DWORD (__cdecl *off_80D27C8[2])(Packets::CLRegSafeSign *this);
  43849.  
  43850. //----- (0807A034) --------------------------------------------------------
  43851. PacketID_t __cdecl Packets::CLRegSafeSign::GetPacketID(const Packets::CLRegSafeSign *const this)
  43852. {
  43853. return 564;
  43854. }
  43855.  
  43856. //----- (0807A040) --------------------------------------------------------
  43857. UINT __cdecl Packets::CLRegSafeSign::GetPacketSize(const Packets::CLRegSafeSign *const this)
  43858. {
  43859. return 51;
  43860. }
  43861.  
  43862. //----- (0807A04C) --------------------------------------------------------
  43863. BOOL __cdecl Packets::LBLOperateAcc::Read(Packets::LBLOperateAcc *const this, SocketBillingInputStream *const iStream)
  43864. {
  43865. BYTE v3; // al
  43866. BYTE v4; // al
  43867.  
  43868. if ( this->mType != 1 )
  43869. __assert__(
  43870. "../../Common/Packets/LBLOperateAcc.cpp",
  43871. 0x18u,
  43872. "virtual BOOL Packets::LBLOperateAcc::Read(SocketBillingInputStream&)",
  43873. "FALSE");
  43874. SocketInputStream::Read(&iStream->0, (CHAR *)&this->mSerialLength, 1u);
  43875. v3 = this->mSerialLength;
  43876. if ( v3 > 0x14u )
  43877. {
  43878. this->mSerialLength = 20;
  43879. v3 = 20;
  43880. }
  43881. SocketInputStream::Read(&iStream->0, this->mSerial, v3);
  43882. SocketInputStream::Read(&iStream->0, (CHAR *)&this->mAccLength, 1u);
  43883. v4 = this->mAccLength;
  43884. if ( v4 > 0x32u )
  43885. {
  43886. this->mAccLength = 50;
  43887. v4 = 50;
  43888. }
  43889. SocketInputStream::Read(&iStream->0, this->mAccount, v4);
  43890. SocketInputStream::Read(&iStream->0, (CHAR *)&this->mFengTingResult, 1u);
  43891. return 1;
  43892. }
  43893.  
  43894. //----- (0807A140) --------------------------------------------------------
  43895. BOOL __cdecl Packets::LBLOperateAcc::Write(const Packets::LBLOperateAcc *const this, SocketBillingOutputStream *const oStream)
  43896. {
  43897. UINT v2; // eax
  43898. USHORT nLevel; // [esp+Ah] [ebp-Eh]
  43899. UINT unGuid; // [esp+Ch] [ebp-Ch]
  43900.  
  43901. if ( this->mType )
  43902. __assert__(
  43903. "../../Common/Packets/LBLOperateAcc.cpp",
  43904. 0x3Cu,
  43905. "virtual BOOL Packets::LBLOperateAcc::Write(SocketBillingOutputStream&) const",
  43906. "FALSE");
  43907. SocketOutputStream::Write(&oStream->0, (const CHAR *)&this->mSerialLength, 1u);
  43908. SocketOutputStream::Write(&oStream->0, this->mSerial, this->mSerialLength);
  43909. SocketOutputStream::Write(&oStream->0, (const CHAR *)&this->mAccLength, 1u);
  43910. SocketOutputStream::Write(&oStream->0, this->mAccount, this->mAccLength);
  43911. SocketOutputStream::Write(&oStream->0, (const CHAR *)&this->mCharNameLength, 1u);
  43912. SocketOutputStream::Write(&oStream->0, this->mCharName, this->mCharNameLength);
  43913. SocketOutputStream::Write(&oStream->0, (const CHAR *)&this->mIPLength, 1u);
  43914. SocketOutputStream::Write(&oStream->0, this->mIP, this->mIPLength);
  43915. v2 = this->mAccGuid;
  43916. LOWORD(v2) = __ROR2__(v2, 8);
  43917. v2 = __ROR4__(v2, 16);
  43918. LOWORD(v2) = __ROR2__(v2, 8);
  43919. unGuid = v2;
  43920. nLevel = __ROR2__(this->mAccLevel, 8);
  43921. SocketOutputStream::Write(&oStream->0, (const CHAR *)&unGuid, 4u);
  43922. SocketOutputStream::Write(&oStream->0, (const CHAR *)&nLevel, 2u);
  43923. SocketOutputStream::Write(&oStream->0, (const CHAR *)&this->mFengTing, 1u);
  43924. SocketOutputStream::Write(&oStream->0, (const CHAR *)&this->mReasonLength, 1u);
  43925. SocketOutputStream::Write(&oStream->0, this->mReason, this->mReasonLength);
  43926. SocketOutputStream::Write(&oStream->0, (const CHAR *)&this->mGMAccLength, 1u);
  43927. SocketOutputStream::Write(&oStream->0, this->mGMAccount, this->mGMAccLength);
  43928. return 1;
  43929. }
  43930.  
  43931. //----- (0807A304) --------------------------------------------------------
  43932. UINT __cdecl Packets::LBLOperateAcc::Execute(Packets::LBLOperateAcc *const this, Player *pPlayer)
  43933. {
  43934. return Packets::LBLOperateAccHandler::Execute(this, pPlayer);
  43935. }
  43936.  
  43937. //----- (0807A364) --------------------------------------------------------
  43938. void __cdecl _tcf_0_90(void *a1)
  43939. {
  43940. std::ios_base::Init::~Init(&std::__ioinit);
  43941. }
  43942.  
  43943. //----- (0807A374) --------------------------------------------------------
  43944. void `global constructor keyed to'Packets::LBLOperateAcc::Read()
  43945. {
  43946. std::ios_base::Init::Init(&std::__ioinit);
  43947. __cxa_atexit(_tcf_0_90, 0, &_dso_handle);
  43948. }
  43949. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  43950.  
  43951. //----- (0807A3A0) --------------------------------------------------------
  43952. void __cdecl Packets::LBLOperateAcc::~LBLOperateAcc(BillPacket *a2)
  43953. {
  43954. a2->_vptr_BillPacket = (int (**)(...))off_80D2928;
  43955. BillPacket::~BillPacket(a2);
  43956. }
  43957. // 80D2928: using guessed type _DWORD (__cdecl *off_80D2928[2])(Packets::LBLOperateAcc *this);
  43958.  
  43959. //----- (0807A3BC) --------------------------------------------------------
  43960. void __cdecl Packets::LBLOperateAcc::~LBLOperateAcc(IPRegionTable *a2)
  43961. {
  43962. a2->_vptr_IPRegionTable = (int (**)(...))off_80D2928;
  43963. BillPacket::~BillPacket(a2);
  43964. operator delete(a2);
  43965. }
  43966. // 80D2928: using guessed type _DWORD (__cdecl *off_80D2928[2])(Packets::LBLOperateAcc *this);
  43967.  
  43968. //----- (0807A3E4) --------------------------------------------------------
  43969. BPacketID_t __cdecl Packets::LBLOperateAcc::GetPacketID(const Packets::LBLOperateAcc *const this)
  43970. {
  43971. return -79;
  43972. }
  43973.  
  43974. //----- (0807A3F0) --------------------------------------------------------
  43975. UINT __cdecl Packets::LBLOperateAcc::GetPacketSize(const Packets::LBLOperateAcc *const this)
  43976. {
  43977. BYTE v1; // al
  43978. int v2; // edx
  43979. UINT v3; // ebx
  43980.  
  43981. v1 = this->mType;
  43982. v2 = this->mAccLength;
  43983. v3 = v2 + 1;
  43984. if ( !v1 )
  43985. {
  43986. v3 += this->mGMAccLength + this->mReasonLength + this->mIPLength + this->mSerialLength + this->mCharNameLength + 12;
  43987. return v3;
  43988. }
  43989. if ( v1 != 1 )
  43990. return v3;
  43991. return v2 + 2;
  43992. }
  43993.  
  43994. //----- (0807A440) --------------------------------------------------------
  43995. BOOL __cdecl Packets::LWOperateAccResult::Read(Packets::LWOperateAccResult *const this, SocketInputStream *const iStream)
  43996. {
  43997. this->m_Result = 0;
  43998. this->m_Socket = 0;
  43999. this->m_Operate = 0;
  44000. this->m_WorldID = 0;
  44001. *(_DWORD *)this->szAccounts = 0;
  44002. SocketInputStream::Read(iStream, this->szAccounts, 0x32u);
  44003. SocketInputStream::Read(iStream, (CHAR *)&this->m_Operate, 4u);
  44004. SocketInputStream::Read(iStream, (CHAR *)&this->m_WorldID, 2u);
  44005. SocketInputStream::Read(iStream, (CHAR *)&this->m_Socket, 4u);
  44006. SocketInputStream::Read(iStream, (CHAR *)&this->m_ControlID, 2u);
  44007. SocketInputStream::Read(iStream, (CHAR *)&this->m_Result, 2u);
  44008. return 1;
  44009. }
  44010.  
  44011. //----- (0807A514) --------------------------------------------------------
  44012. BOOL __cdecl Packets::LWOperateAccResult::Write(const Packets::LWOperateAccResult *const this, SocketOutputStream *const oStream)
  44013. {
  44014. SocketOutputStream::Write(oStream, this->szAccounts, 0x32u);
  44015. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_Operate, 4u);
  44016. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_WorldID, 2u);
  44017. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_Socket, 4u);
  44018. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_ControlID, 2u);
  44019. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_Result, 2u);
  44020. return 1;
  44021. }
  44022.  
  44023. //----- (0807A5C8) --------------------------------------------------------
  44024. UINT __cdecl Packets::LWOperateAccResult::Execute(Packets::LWOperateAccResult *const this, Player *pPlayer)
  44025. {
  44026. return Packets::LWOperateAccResultHandler::Execute(this, pPlayer);
  44027. }
  44028.  
  44029. //----- (0807A628) --------------------------------------------------------
  44030. void __cdecl _tcf_0_91(void *a1)
  44031. {
  44032. std::ios_base::Init::~Init(&std::__ioinit);
  44033. }
  44034.  
  44035. //----- (0807A638) --------------------------------------------------------
  44036. void `global constructor keyed to'Packets::LWOperateAccResult::Read()
  44037. {
  44038. std::ios_base::Init::Init(&std::__ioinit);
  44039. __cxa_atexit(_tcf_0_91, 0, &_dso_handle);
  44040. }
  44041. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  44042.  
  44043. //----- (0807A664) --------------------------------------------------------
  44044. void __cdecl Packets::LWOperateAccResult::~LWOperateAccResult(Packet *a2)
  44045. {
  44046. a2->_vptr_Packet = (int (**)(...))off_80D2AA8;
  44047. Packet::~Packet(a2);
  44048. }
  44049. // 80D2AA8: using guessed type _DWORD (__cdecl *off_80D2AA8[2])(Packets::LWOperateAccResult *this);
  44050.  
  44051. //----- (0807A680) --------------------------------------------------------
  44052. void __cdecl Packets::LWOperateAccResult::~LWOperateAccResult(IPRegionTable *a2)
  44053. {
  44054. a2->_vptr_IPRegionTable = (int (**)(...))off_80D2AA8;
  44055. Packet::~Packet(a2);
  44056. operator delete(a2);
  44057. }
  44058. // 80D2AA8: using guessed type _DWORD (__cdecl *off_80D2AA8[2])(Packets::LWOperateAccResult *this);
  44059.  
  44060. //----- (0807A6A8) --------------------------------------------------------
  44061. PacketID_t __cdecl Packets::LWOperateAccResult::GetPacketID(const Packets::LWOperateAccResult *const this)
  44062. {
  44063. return 230;
  44064. }
  44065.  
  44066. //----- (0807A6B4) --------------------------------------------------------
  44067. UINT __cdecl Packets::LWOperateAccResult::GetPacketSize(const Packets::LWOperateAccResult *const this)
  44068. {
  44069. return 64;
  44070. }
  44071.  
  44072. //----- (0807A6C0) --------------------------------------------------------
  44073. BOOL __cdecl Packets::WLOperateAcc::Read(Packets::WLOperateAcc *const this, SocketInputStream *const iStream)
  44074. {
  44075. this->m_Socket = 0;
  44076. this->m_Operate = 0;
  44077. this->m_WorldID = 0;
  44078. *(_DWORD *)this->szAccounts = 0;
  44079. this->m_uGuid = -1;
  44080. this->m_usAccLevel = 1;
  44081. SocketInputStream::Read(iStream, this->szAccounts, 0x32u);
  44082. SocketInputStream::Read(iStream, this->szCharName, 0x32u);
  44083. SocketInputStream::Read(iStream, this->szReason, 0x20u);
  44084. SocketInputStream::Read(iStream, this->szUser, 0x32u);
  44085. SocketInputStream::Read(iStream, (CHAR *)&this->m_Operate, 4u);
  44086. SocketInputStream::Read(iStream, (CHAR *)&this->m_WorldID, 2u);
  44087. SocketInputStream::Read(iStream, (CHAR *)&this->m_Socket, 4u);
  44088. SocketInputStream::Read(iStream, (CHAR *)&this->m_ControlID, 2u);
  44089. SocketInputStream::Read(iStream, (CHAR *)&this->m_uGuid, 4u);
  44090. SocketInputStream::Read(iStream, (CHAR *)&this->m_usAccLevel, 2u);
  44091. return 1;
  44092. }
  44093.  
  44094. //----- (0807A7FC) --------------------------------------------------------
  44095. BOOL __cdecl Packets::WLOperateAcc::Write(const Packets::WLOperateAcc *const this, SocketOutputStream *const oStream)
  44096. {
  44097. SocketOutputStream::Write(oStream, this->szAccounts, 0x32u);
  44098. SocketOutputStream::Write(oStream, this->szCharName, 0x32u);
  44099. SocketOutputStream::Write(oStream, this->szReason, 0x20u);
  44100. SocketOutputStream::Write(oStream, this->szUser, 0x32u);
  44101. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_Operate, 4u);
  44102. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_WorldID, 2u);
  44103. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_Socket, 4u);
  44104. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_ControlID, 2u);
  44105. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_uGuid, 4u);
  44106. SocketOutputStream::Write(oStream, (const CHAR *)&this->m_usAccLevel, 2u);
  44107. return 1;
  44108. }
  44109.  
  44110. //----- (0807A900) --------------------------------------------------------
  44111. UINT __cdecl Packets::WLOperateAcc::Execute(Packets::WLOperateAcc *const this, Player *pPlayer)
  44112. {
  44113. return Packets::WLOperateAccHandler::Execute(this, pPlayer);
  44114. }
  44115.  
  44116. //----- (0807A960) --------------------------------------------------------
  44117. void __cdecl _tcf_0_92(void *a1)
  44118. {
  44119. std::ios_base::Init::~Init(&std::__ioinit);
  44120. }
  44121.  
  44122. //----- (0807A970) --------------------------------------------------------
  44123. void `global constructor keyed to'Packets::WLOperateAcc::Read()
  44124. {
  44125. std::ios_base::Init::Init(&std::__ioinit);
  44126. __cxa_atexit(_tcf_0_92, 0, &_dso_handle);
  44127. }
  44128. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  44129.  
  44130. //----- (0807A99C) --------------------------------------------------------
  44131. void __cdecl Packets::WLOperateAcc::~WLOperateAcc(Packet *a2)
  44132. {
  44133. a2->_vptr_Packet = (int (**)(...))off_80D2C48;
  44134. Packet::~Packet(a2);
  44135. }
  44136. // 80D2C48: using guessed type _DWORD (__cdecl *off_80D2C48[2])(Packets::WLOperateAcc *this);
  44137.  
  44138. //----- (0807A9B8) --------------------------------------------------------
  44139. void __cdecl Packets::WLOperateAcc::~WLOperateAcc(IPRegionTable *a2)
  44140. {
  44141. a2->_vptr_IPRegionTable = (int (**)(...))off_80D2C48;
  44142. Packet::~Packet(a2);
  44143. operator delete(a2);
  44144. }
  44145. // 80D2C48: using guessed type _DWORD (__cdecl *off_80D2C48[2])(Packets::WLOperateAcc *this);
  44146.  
  44147. //----- (0807A9E0) --------------------------------------------------------
  44148. PacketID_t __cdecl Packets::WLOperateAcc::GetPacketID(const Packets::WLOperateAcc *const this)
  44149. {
  44150. return 265;
  44151. }
  44152.  
  44153. //----- (0807A9EC) --------------------------------------------------------
  44154. UINT __cdecl Packets::WLOperateAcc::GetPacketSize(const Packets::WLOperateAcc *const this)
  44155. {
  44156. return 200;
  44157. }
  44158.  
  44159. //----- (0807A9F8) --------------------------------------------------------
  44160. void __cdecl DBAbilityList::DBAbilityList(DBAbilityList *const this, ODBCInterface *pInterface)
  44161. {
  44162. ODBCBase::ODBCBase(this);
  44163. this->_vptr_ODBCBase = (int (**)(...))&off_80D2DA8;
  44164. this->mDBName = 1;
  44165. this->mResult = 0;
  44166. this->mResultCount = 0;
  44167. this->m_CharGuid = -1;
  44168. this->m_DBVersion = 0;
  44169. if ( !pInterface )
  44170. __assert__(
  44171. "../../Common/DBSystem/DataBase/DBAbilityList.cpp",
  44172. 0x11u,
  44173. "DBAbilityList::DBAbilityList(ODBCInterface*)",
  44174. "pInterface");
  44175. this->mInterface = pInterface;
  44176. }
  44177. // 80D2DA8: using guessed type _DWORD (__cdecl *off_80D2DA8)(DBAbilityList *this);
  44178.  
  44179. //----- (0807AAA4) --------------------------------------------------------
  44180. void __cdecl DBAbilityList::DBAbilityList(DBAbilityList *const this, ODBCInterface *pInterface)
  44181. {
  44182. ODBCBase::ODBCBase(this);
  44183. this->_vptr_ODBCBase = (int (**)(...))&off_80D2DA8;
  44184. this->mDBName = 1;
  44185. this->mResult = 0;
  44186. this->mResultCount = 0;
  44187. this->m_CharGuid = -1;
  44188. this->m_DBVersion = 0;
  44189. if ( !pInterface )
  44190. __assert__(
  44191. "../../Common/DBSystem/DataBase/DBAbilityList.cpp",
  44192. 0x11u,
  44193. "DBAbilityList::DBAbilityList(ODBCInterface*)",
  44194. "pInterface");
  44195. this->mInterface = pInterface;
  44196. }
  44197. // 80D2DA8: using guessed type _DWORD (__cdecl *off_80D2DA8)(DBAbilityList *this);
  44198.  
  44199. //----- (0807AB50) --------------------------------------------------------
  44200. #error "807ABD8: positive sp value has been found (funcsize=41)"
  44201.  
  44202. //----- (0807AC10) --------------------------------------------------------
  44203. int __cdecl DBAbilityList::Save(DBAbilityList *const this, void *pSource)
  44204. {
  44205. signed int v2; // ebx
  44206. DB_QUERY *v3; // eax
  44207. DB_QUERY *v4; // edi
  44208. int result; // eax
  44209. DB_QUERY *v6; // eax
  44210. DB_QUERY *v7; // edi
  44211. UINT v8; // ST1C_4
  44212. int v9; // ST18_4
  44213. INT Result; // [esp+18h] [ebp-41Ch]
  44214. CHAR Pres[1024]; // [esp+1Ch] [ebp-418h]
  44215.  
  44216. (*((void (__cdecl **)(DBAbilityList *const ))this->_vptr_ODBCBase + 2))(this);
  44217. (*((void (__cdecl **)(DBAbilityList *const , INT *))this->_vptr_ODBCBase + 4))(this, &Result);
  44218. if ( !pSource )
  44219. __assert__(
  44220. "../../Common/DBSystem/DataBase/DBAbilityList.cpp",
  44221. 0x43u,
  44222. "virtual int DBAbilityList::Save(void*)",
  44223. "pCharFullData");
  44224. v2 = 0;
  44225. do
  44226. {
  44227. if ( *(_WORD *)((char *)pSource + 8 * v2 + 35739) )
  44228. {
  44229. v6 = ODBCBase::GetInternalQuery((int)this);
  44230. v7 = v6;
  44231. if ( !v6 )
  44232. __assert__(
  44233. "../../Common/DBSystem/DataBase/DBAbilityList.cpp",
  44234. 0x4Fu,
  44235. "virtual int DBAbilityList::Save(void*)",
  44236. "FALSE");
  44237. memset(v6, 0, 0x1000u);
  44238. if ( this->m_CharGuid == -1 )
  44239. return 0;
  44240. v8 = this->m_DBVersion;
  44241. v9 = *(_DWORD *)((char *)pSource + 8 * v2 + 35743);
  44242. DB_QUERY::Parse(
  44243. v7,
  44244. NewCharAbility,
  44245. "t_ability",
  44246. this->m_CharGuid,
  44247. v2,
  44248. *(unsigned __int16 *)((char *)pSource + 8 * v2 + 35739));
  44249. if ( !ODBCBase::Save(&this->0, pSource) )
  44250. return 0;
  44251. }
  44252. ++v2;
  44253. }
  44254. while ( v2 <= 63 );
  44255. memset(Pres, 0, 0x400u);
  44256. Binary2String((const CHAR *)pSource + 35483, 0x100u, Pres);
  44257. v3 = ODBCBase::GetInternalQuery((int)this);
  44258. v4 = v3;
  44259. if ( !v3 )
  44260. __assert__(
  44261. "../../Common/DBSystem/DataBase/DBAbilityList.cpp",
  44262. 0x73u,
  44263. "virtual int DBAbilityList::Save(void*)",
  44264. "FALSE");
  44265. memset(v3, 0, 0x1000u);
  44266. result = 0;
  44267. if ( this->m_CharGuid != -1 )
  44268. {
  44269. DB_QUERY::Parse(v4, UpdateCharPresList, "t_char", Pres, this->m_CharGuid, this->m_DBVersion);
  44270. result = ODBCBase::Save(&this->0, pSource) != 0;
  44271. }
  44272. return result;
  44273. }
  44274.  
  44275. //----- (0807AE08) --------------------------------------------------------
  44276. #error "807AE93: positive sp value has been found (funcsize=41)"
  44277.  
  44278. //----- (0807AECC) --------------------------------------------------------
  44279. int __cdecl DBAbilityList::ParseResult(DBAbilityList *const this, void *pResult)
  44280. {
  44281. SHORT AbilityID; // ST2E_2
  44282. __int16 v3; // ST28_2
  44283. UINT v4; // eax
  44284. int v5; // edx
  44285. DB_QUERY *v6; // eax
  44286. DB_QUERY *v7; // esi
  44287. INT i; // [esp+10h] [ebp-18h]
  44288. INT ErrorCode_0; // [esp+14h] [ebp-14h]
  44289. INT ErrorCode; // [esp+18h] [ebp-10h]
  44290.  
  44291. if ( this->mOPType == DB_LOAD )
  44292. {
  44293. if ( !pResult )
  44294. __assert__(
  44295. "../../Common/DBSystem/DataBase/DBAbilityList.cpp",
  44296. 0xB7u,
  44297. "virtual int DBAbilityList::ParseResult(void*)",
  44298. "pCharFullData");
  44299. if ( this->mResultCount > 64 )
  44300. __assert__(
  44301. "../../Common/DBSystem/DataBase/DBAbilityList.cpp",
  44302. 0xC1u,
  44303. "virtual int DBAbilityList::ParseResult(void*)",
  44304. "mResultCount<=MAX_CHAR_ABILITY_NUM");
  44305. if ( !this->mInterface )
  44306. __assert__(
  44307. "../../Common/DBSystem/DataBase/DBAbilityList.cpp",
  44308. 0xC2u,
  44309. "virtual int DBAbilityList::ParseResult(void*)",
  44310. "mInterface");
  44311. i = 0;
  44312. do
  44313. {
  44314. if ( !ODBCInterface::Fetch(this->mInterface) )
  44315. break;
  44316. ODBCInterface::GetUInt(this->mInterface, 1, &ErrorCode);
  44317. AbilityID = ODBCInterface::GetInt(this->mInterface, 2, &ErrorCode);
  44318. v3 = ODBCInterface::GetInt(this->mInterface, 3, &ErrorCode);
  44319. v4 = ODBCInterface::GetUInt(this->mInterface, 4, &ErrorCode);
  44320. ++i;
  44321. v5 = AbilityID;
  44322. *(_WORD *)((char *)pResult + 8 * v5 + 35739) = v3;
  44323. *(_DWORD *)((char *)pResult + 8 * v5 + 35743) = v4;
  44324. }
  44325. while ( i <= 63 );
  44326. ODBCInterface::Clear(this->mInterface);
  44327. v6 = ODBCBase::GetInternalQuery((int)this);
  44328. v7 = v6;
  44329. if ( !v6 )
  44330. __assert__(
  44331. "../../Common/DBSystem/DataBase/DBAbilityList.cpp",
  44332. 0xDEu,
  44333. "virtual int DBAbilityList::ParseResult(void*)",
  44334. "FALSE");
  44335. memset(v6, 0, 0x1000u);
  44336. DB_QUERY::Parse(v7, LoadCharPresList, "t_char", this->m_CharGuid, this->m_DBVersion);
  44337. ODBCBase::Load(&this->0);
  44338. if ( !this->mInterface )
  44339. __assert__(
  44340. "../../Common/DBSystem/DataBase/DBAbilityList.cpp",
  44341. 0xEDu,
  44342. "virtual int DBAbilityList::ParseResult(void*)",
  44343. "mInterface");
  44344. if ( this->mResultCount > 1 )
  44345. __assert__(
  44346. "../../Common/DBSystem/DataBase/DBAbilityList.cpp",
  44347. 0xEEu,
  44348. "virtual int DBAbilityList::ParseResult(void*)",
  44349. "mResultCount <= 1");
  44350. if ( !ODBCInterface::Fetch(this->mInterface) )
  44351. return 0;
  44352. ODBCInterface::GetUInt(this->mInterface, 1, &ErrorCode_0);
  44353. ODBCInterface::GetField(this->mInterface, 2, (CHAR *)pResult + 35483, 256, &ErrorCode_0);
  44354. ODBCInterface::Clear(this->mInterface);
  44355. }
  44356. if ( !this->mInterface )
  44357. __assert__(
  44358. "../../Common/DBSystem/DataBase/DBAbilityList.cpp",
  44359. 0x10Du,
  44360. "virtual int DBAbilityList::ParseResult(void*)",
  44361. "mInterface");
  44362. ODBCInterface::Clear(this->mInterface);
  44363. return 1;
  44364. }
  44365.  
  44366. //----- (0807B18C) --------------------------------------------------------
  44367. GUID_t __cdecl DBAbilityList::GetCharGuid(int a2)
  44368. {
  44369. return *(_DWORD *)(a2 + 24);
  44370. }
  44371.  
  44372. //----- (0807B198) --------------------------------------------------------
  44373. void __cdecl DBAbilityList::SetCharGuid(int a3, int a4)
  44374. {
  44375. *(_DWORD *)(a3 + 24) = a4;
  44376. }
  44377.  
  44378. //----- (0807B1A8) --------------------------------------------------------
  44379. UINT __cdecl DBAbilityList::GetDBVersion(int a2)
  44380. {
  44381. return *(_DWORD *)(a2 + 28);
  44382. }
  44383.  
  44384. //----- (0807B1B4) --------------------------------------------------------
  44385. void __cdecl DBAbilityList::SetDBVersion(int a3, int a4)
  44386. {
  44387. *(_DWORD *)(a3 + 28) = a4;
  44388. }
  44389.  
  44390. //----- (0807B1C4) --------------------------------------------------------
  44391. void __cdecl _tcf_0_93(void *a1)
  44392. {
  44393. std::ios_base::Init::~Init(&std::__ioinit);
  44394. }
  44395.  
  44396. //----- (0807B1D4) --------------------------------------------------------
  44397. void `global constructor keyed to'DBAbilityList::DBAbilityList()
  44398. {
  44399. std::ios_base::Init::Init(&std::__ioinit);
  44400. __cxa_atexit(_tcf_0_93, 0, &_dso_handle);
  44401. }
  44402. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  44403.  
  44404. //----- (0807B200) --------------------------------------------------------
  44405. void __cdecl DBCharCreate::DBCharCreate(DBCharCreate *const this, ODBCInterface *pInterface)
  44406. {
  44407. ODBCBase::ODBCBase(this);
  44408. this->_vptr_ODBCBase = (int (**)(...))off_80D2FB8;
  44409. this->mDBName = 1;
  44410. this->mResult = 0;
  44411. this->mResultCount = 0;
  44412. this->m_Account[0] = 0;
  44413. this->m_AID = 0;
  44414. if ( !pInterface )
  44415. __assert__(
  44416. "../../Common/DBSystem/DataBase/DBCharCreate.cpp",
  44417. 0x12u,
  44418. "DBCharCreate::DBCharCreate(ODBCInterface*)",
  44419. "pInterface");
  44420. this->mInterface = pInterface;
  44421. this->m_CharGuid = -1;
  44422. }
  44423. // 80D2FB8: using guessed type _DWORD (__cdecl *off_80D2FB8[2])(DBCharCreate *this);
  44424.  
  44425. //----- (0807B2B0) --------------------------------------------------------
  44426. void __cdecl DBCharCreate::DBCharCreate(DBCharCreate *const this, ODBCInterface *pInterface)
  44427. {
  44428. ODBCBase::ODBCBase(this);
  44429. this->_vptr_ODBCBase = (int (**)(...))off_80D2FB8;
  44430. this->mDBName = 1;
  44431. this->mResult = 0;
  44432. this->mResultCount = 0;
  44433. this->m_Account[0] = 0;
  44434. this->m_AID = 0;
  44435. if ( !pInterface )
  44436. __assert__(
  44437. "../../Common/DBSystem/DataBase/DBCharCreate.cpp",
  44438. 0x12u,
  44439. "DBCharCreate::DBCharCreate(ODBCInterface*)",
  44440. "pInterface");
  44441. this->mInterface = pInterface;
  44442. this->m_CharGuid = -1;
  44443. }
  44444. // 80D2FB8: using guessed type _DWORD (__cdecl *off_80D2FB8[2])(DBCharCreate *this);
  44445.  
  44446. //----- (0807B360) --------------------------------------------------------
  44447. int __cdecl DBCharCreate::Load(DBCharCreate *const this)
  44448. {
  44449. return 1;
  44450. }
  44451.  
  44452. //----- (0807B36C) --------------------------------------------------------
  44453. int __cdecl DBCharCreate::AddNew(DBCharCreate *const this)
  44454. {
  44455. DB_QUERY *v1; // eax
  44456. DB_QUERY *v2; // esi
  44457. int v3; // edx
  44458. BOOL v5; // eax
  44459. BOOL v6; // eax
  44460. INT v7; // ST2C_4
  44461. int v8; // ST28_4
  44462. int v9; // ST24_4
  44463. int v10; // ST20_4
  44464. int v11; // ST1C_4
  44465. int v12; // ST18_4
  44466. UINT v13; // eax
  44467.  
  44468. v1 = ODBCBase::GetInternalQuery((int)this);
  44469. v2 = v1;
  44470. if ( !v1 )
  44471. __assert__("../../Common/DBSystem/DataBase/DBCharCreate.cpp", 0x25u, "virtual int DBCharCreate::AddNew()", "FALSE");
  44472. memset(v1, 0, 0x1000u);
  44473. v3 = 0;
  44474. if ( this->m_Account[0] )
  44475. {
  44476. v5 = StrSafeCheck(this->m_Account, 0x33u);
  44477. v3 = 0;
  44478. if ( v5 )
  44479. {
  44480. v6 = StrSafeCheck(this->m_CharName, 0x1Eu);
  44481. v3 = 0;
  44482. if ( v6 )
  44483. {
  44484. v7 = this->m_DefEquip;
  44485. v8 = this->m_HeadID;
  44486. v9 = this->m_FaceModel;
  44487. v10 = this->m_FaceColor;
  44488. v11 = this->m_HairModel;
  44489. v12 = this->m_HairColor;
  44490. v13 = TimeManager::CurrentDate(g_pTimeManager);
  44491. DB_QUERY::Parse(v2, CreateChar, this->m_Account, this->m_CharName, this->m_Sex, v13, v12, v11, v10);
  44492. v3 = ODBCBase::AddNew(&this->0);
  44493. }
  44494. }
  44495. }
  44496. return v3;
  44497. }
  44498.  
  44499. //----- (0807B4A0) --------------------------------------------------------
  44500. int __cdecl DBCharCreate::ParseResult(DBCharCreate *const this, void *pResult)
  44501. {
  44502. signed int v2; // edi
  44503. int v3; // edx
  44504. int v5; // eax
  44505. INT ResultCode; // [esp+4h] [ebp-14h]
  44506. INT ErrorCode; // [esp+8h] [ebp-10h]
  44507.  
  44508. v2 = 0;
  44509. if ( this->mOPType != 2 )
  44510. goto LABEL_2;
  44511. if ( !pResult )
  44512. __assert__(
  44513. "../../Common/DBSystem/DataBase/DBCharCreate.cpp",
  44514. 0x5Eu,
  44515. "virtual int DBCharCreate::ParseResult(void*)",
  44516. "pAskResult");
  44517. if ( !this->mInterface )
  44518. __assert__(
  44519. "../../Common/DBSystem/DataBase/DBCharCreate.cpp",
  44520. 0x5Fu,
  44521. "virtual int DBCharCreate::ParseResult(void*)",
  44522. "mInterface");
  44523. v5 = ODBCInterface::Fetch(this->mInterface);
  44524. v3 = 0;
  44525. if ( v5 )
  44526. {
  44527. ResultCode = ODBCInterface::GetInt(this->mInterface, 1, &ErrorCode);
  44528. this->m_CharGuid = ODBCInterface::GetUInt(this->mInterface, 2, &ErrorCode);
  44529. if ( ResultCode == -2 )
  44530. {
  44531. *(_DWORD *)pResult = 4;
  44532. }
  44533. else if ( ResultCode == 1 )
  44534. {
  44535. v2 = 1;
  44536. *(_DWORD *)pResult = 0;
  44537. }
  44538. else
  44539. {
  44540. *(_DWORD *)pResult = 6;
  44541. }
  44542. ODBCInterface::Clear(this->mInterface);
  44543. LABEL_2:
  44544. if ( !this->mInterface )
  44545. __assert__(
  44546. "../../Common/DBSystem/DataBase/DBCharCreate.cpp",
  44547. 0x7Du,
  44548. "virtual int DBCharCreate::ParseResult(void*)",
  44549. "mInterface");
  44550. ODBCInterface::Clear(this->mInterface);
  44551. v3 = v2;
  44552. }
  44553. return v3;
  44554. }
  44555.  
  44556. //----- (0807B614) --------------------------------------------------------
  44557. const CHAR *__cdecl DBCharCreate::GetAccount(const DBCharCreate *const this)
  44558. {
  44559. return this->m_Account;
  44560. }
  44561.  
  44562. //----- (0807B620) --------------------------------------------------------
  44563. void __cdecl DBCharCreate::SetAccount(DBCharCreate *const this, const CHAR *pAccount)
  44564. {
  44565. if ( !pAccount )
  44566. __assert__(
  44567. "../../Common/DBSystem/DataBase/DBCharCreate.cpp",
  44568. 0x8Au,
  44569. "void DBCharCreate::SetAccount(const CHAR*)",
  44570. "pAccount");
  44571. strncpy(this->m_Account, pAccount, 0x32u);
  44572. this->m_Account[50] = 0;
  44573. }
  44574.  
  44575. //----- (0807B668) --------------------------------------------------------
  44576. void __cdecl DBCharCreate::SetCharName(const CHAR *pName, const char *pNamea)
  44577. {
  44578. strncpy((char *)pName + 84, pNamea, 0x1Eu);
  44579. *((_BYTE *)pName + 113) = 0;
  44580. }
  44581.  
  44582. //----- (0807B68C) --------------------------------------------------------
  44583. const CHAR *__cdecl DBCharCreate::GetCharName(DBCharCreate *const this)
  44584. {
  44585. return this->m_CharName;
  44586. }
  44587.  
  44588. //----- (0807B698) --------------------------------------------------------
  44589. void __cdecl DBCharCreate::SetSex(int a3, int a4)
  44590. {
  44591. *(_DWORD *)(a3 + 116) = a4;
  44592. }
  44593.  
  44594. //----- (0807B6A8) --------------------------------------------------------
  44595. int __cdecl DBCharCreate::GetSex(int a2)
  44596. {
  44597. return *(_DWORD *)(a2 + 116);
  44598. }
  44599.  
  44600. //----- (0807B6B4) --------------------------------------------------------
  44601. void __cdecl DBCharCreate::SetHairColor(int Color, char Colora)
  44602. {
  44603. *(_BYTE *)(Color + 120) = Colora;
  44604. }
  44605.  
  44606. //----- (0807B6C4) --------------------------------------------------------
  44607. int __cdecl DBCharCreate::GetHairColor(int a2)
  44608. {
  44609. return *(unsigned __int8 *)(a2 + 120);
  44610. }
  44611.  
  44612. //----- (0807B6D0) --------------------------------------------------------
  44613. void __cdecl DBCharCreate::SetFaceColor(int Color, char Colora)
  44614. {
  44615. *(_BYTE *)(Color + 121) = Colora;
  44616. }
  44617.  
  44618. //----- (0807B6E0) --------------------------------------------------------
  44619. int __cdecl DBCharCreate::GetFaceColor(int a2)
  44620. {
  44621. return *(unsigned __int8 *)(a2 + 121);
  44622. }
  44623.  
  44624. //----- (0807B6EC) --------------------------------------------------------
  44625. void __cdecl DBCharCreate::SetHairModel(int Model, char Modela)
  44626. {
  44627. *(_BYTE *)(Model + 122) = Modela;
  44628. }
  44629.  
  44630. //----- (0807B6FC) --------------------------------------------------------
  44631. int __cdecl DBCharCreate::GetHairModel(int a2)
  44632. {
  44633. return *(unsigned __int8 *)(a2 + 122);
  44634. }
  44635.  
  44636. //----- (0807B708) --------------------------------------------------------
  44637. void __cdecl DBCharCreate::SetFaceModel(int Model, char Modela)
  44638. {
  44639. *(_BYTE *)(Model + 123) = Modela;
  44640. }
  44641.  
  44642. //----- (0807B718) --------------------------------------------------------
  44643. int __cdecl DBCharCreate::GetFaceModel(int a2)
  44644. {
  44645. return *(unsigned __int8 *)(a2 + 123);
  44646. }
  44647.  
  44648. //----- (0807B724) --------------------------------------------------------
  44649. void __cdecl DBCharCreate::SetHeadID(int Head, char Heada)
  44650. {
  44651. *(_BYTE *)(Head + 128) = Heada;
  44652. }
  44653.  
  44654. //----- (0807B738) --------------------------------------------------------
  44655. int __cdecl DBCharCreate::GetHeadID(int a2)
  44656. {
  44657. return *(unsigned __int8 *)(a2 + 128);
  44658. }
  44659.  
  44660. //----- (0807B748) --------------------------------------------------------
  44661. void __cdecl DBCharCreate::SetDefEquip(int a3, int a4)
  44662. {
  44663. *(_DWORD *)(a3 + 124) = a4;
  44664. }
  44665.  
  44666. //----- (0807B758) --------------------------------------------------------
  44667. INT __cdecl DBCharCreate::GetDefEquip(int a2)
  44668. {
  44669. return *(_DWORD *)(a2 + 124);
  44670. }
  44671.  
  44672. //----- (0807B764) --------------------------------------------------------
  44673. GUID_t __cdecl DBCharCreate::GetCharGuid(int a2)
  44674. {
  44675. return *(_DWORD *)(a2 + 80);
  44676. }
  44677.  
  44678. //----- (0807B770) --------------------------------------------------------
  44679. void __cdecl _tcf_0_94(void *a1)
  44680. {
  44681. std::ios_base::Init::~Init(&std::__ioinit);
  44682. }
  44683.  
  44684. //----- (0807B780) --------------------------------------------------------
  44685. void `global constructor keyed to'DBCharCreate::DBCharCreate()
  44686. {
  44687. std::ios_base::Init::Init(&std::__ioinit);
  44688. __cxa_atexit(_tcf_0_94, 0, &_dso_handle);
  44689. }
  44690. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  44691.  
  44692. //----- (0807B7AC) --------------------------------------------------------
  44693. void __cdecl DBChardbVersion::DBChardbVersion(DBChardbVersion *const this, ODBCInterface *pInterface)
  44694. {
  44695. ODBCBase::ODBCBase(this);
  44696. this->_vptr_ODBCBase = (int (**)(...))&off_80D3130;
  44697. this->mDBName = 1;
  44698. this->mResult = 0;
  44699. this->mResultCount = 0;
  44700. if ( !pInterface )
  44701. __assert__(
  44702. "../../Common/DBSystem/DataBase/DBChardbVersion.cpp",
  44703. 0xDu,
  44704. "DBChardbVersion::DBChardbVersion(ODBCInterface*)",
  44705. "pInterface");
  44706. this->mInterface = pInterface;
  44707. this->m_curdbVersion = -1;
  44708. this->m_isValid = -1;
  44709. }
  44710. // 80D3130: using guessed type _DWORD (__cdecl *off_80D3130)(DBChardbVersion *this);
  44711.  
  44712. //----- (0807B858) --------------------------------------------------------
  44713. void __cdecl DBChardbVersion::DBChardbVersion(DBChardbVersion *const this, ODBCInterface *pInterface)
  44714. {
  44715. ODBCBase::ODBCBase(this);
  44716. this->_vptr_ODBCBase = (int (**)(...))&off_80D3130;
  44717. this->mDBName = 1;
  44718. this->mResult = 0;
  44719. this->mResultCount = 0;
  44720. if ( !pInterface )
  44721. __assert__(
  44722. "../../Common/DBSystem/DataBase/DBChardbVersion.cpp",
  44723. 0xDu,
  44724. "DBChardbVersion::DBChardbVersion(ODBCInterface*)",
  44725. "pInterface");
  44726. this->mInterface = pInterface;
  44727. this->m_curdbVersion = -1;
  44728. this->m_isValid = -1;
  44729. }
  44730. // 80D3130: using guessed type _DWORD (__cdecl *off_80D3130)(DBChardbVersion *this);
  44731.  
  44732. //----- (0807B904) --------------------------------------------------------
  44733. int __cdecl DBChardbVersion::Load(DBChardbVersion *const this)
  44734. {
  44735. DB_QUERY *v1; // eax
  44736. DB_QUERY *v2; // ebx
  44737. GUID_t v3; // eax
  44738. int v4; // edx
  44739. int v5; // eax
  44740. int v7; // eax
  44741. INT ErrorCode; // [esp+18h] [ebp-Ch]
  44742.  
  44743. v1 = ODBCBase::GetInternalQuery((int)this);
  44744. v2 = v1;
  44745. if ( !v1 )
  44746. __assert__(
  44747. "../../Common/DBSystem/DataBase/DBChardbVersion.cpp",
  44748. 0x22u,
  44749. "virtual int DBChardbVersion::Load()",
  44750. "FALSE");
  44751. memset(v1, 0, 0x1000u);
  44752. v3 = this->m_CharGuid;
  44753. v4 = 0;
  44754. if ( v3 != -1 )
  44755. {
  44756. DB_QUERY::Parse(v2, LoadChardbVersion, "t_char", v3);
  44757. v5 = ODBCBase::Load(&this->0);
  44758. v4 = 0;
  44759. if ( v5 )
  44760. {
  44761. if ( !this->mInterface )
  44762. __assert__(
  44763. "../../Common/DBSystem/DataBase/DBChardbVersion.cpp",
  44764. 0x30u,
  44765. "virtual int DBChardbVersion::Load()",
  44766. "mInterface");
  44767. if ( this->mResultCount )
  44768. {
  44769. v7 = ODBCInterface::Fetch(this->mInterface);
  44770. v4 = 0;
  44771. if ( v7 )
  44772. {
  44773. this->m_curdbVersion = ODBCInterface::GetInt(this->mInterface, 1, &ErrorCode);
  44774. this->m_isValid = ODBCInterface::GetInt(this->mInterface, 2, &ErrorCode);
  44775. ODBCInterface::Clear(this->mInterface);
  44776. v4 = 1;
  44777. }
  44778. }
  44779. else
  44780. {
  44781. this->m_curdbVersion = -1;
  44782. this->m_isValid = -1;
  44783. v4 = 1;
  44784. }
  44785. }
  44786. }
  44787. return v4;
  44788. }
  44789.  
  44790. //----- (0807BA14) --------------------------------------------------------
  44791. int __cdecl DBChardbVersion::ParseResult(DBChardbVersion *const this, void *pResult)
  44792. {
  44793. if ( !this->mInterface )
  44794. __assert__(
  44795. "../../Common/DBSystem/DataBase/DBChardbVersion.cpp",
  44796. 0x4Au,
  44797. "virtual int DBChardbVersion::ParseResult(void*)",
  44798. "mInterface");
  44799. ODBCInterface::Clear(this->mInterface);
  44800. return 1;
  44801. }
  44802.  
  44803. //----- (0807BA68) --------------------------------------------------------
  44804. void __cdecl DBChardbVersion::SetCharGuid(int a3, int a4)
  44805. {
  44806. *(_DWORD *)(a3 + 32) = a4;
  44807. }
  44808.  
  44809. //----- (0807BA78) --------------------------------------------------------
  44810. GUID_t __cdecl DBChardbVersion::GetCharGuid(int a2)
  44811. {
  44812. return *(_DWORD *)(a2 + 32);
  44813. }
  44814.  
  44815. //----- (0807BA84) --------------------------------------------------------
  44816. INT __cdecl DBChardbVersion::GetdbVersion(int a2)
  44817. {
  44818. return *(_DWORD *)(a2 + 24);
  44819. }
  44820.  
  44821. //----- (0807BA90) --------------------------------------------------------
  44822. BOOL __cdecl DBChardbVersion::IsValid(int a2)
  44823. {
  44824. return *(_DWORD *)(a2 + 28) == 1;
  44825. }
  44826.  
  44827. //----- (0807BAA4) --------------------------------------------------------
  44828. void __cdecl DBChardbVersion::ForceCheckConnect(DBChardbVersion *const this)
  44829. {
  44830. ODBCBase::CheckDBConnect(&this->0, "DBChardbVersion");
  44831. }
  44832.  
  44833. //----- (0807BABC) --------------------------------------------------------
  44834. void __cdecl _tcf_0_95(void *a1)
  44835. {
  44836. std::ios_base::Init::~Init(&std::__ioinit);
  44837. }
  44838.  
  44839. //----- (0807BACC) --------------------------------------------------------
  44840. void `global constructor keyed to'DBChardbVersion::DBChardbVersion()
  44841. {
  44842. std::ios_base::Init::Init(&std::__ioinit);
  44843. __cxa_atexit(_tcf_0_95, 0, &_dso_handle);
  44844. }
  44845. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  44846.  
  44847. //----- (0807BAF8) --------------------------------------------------------
  44848. void __cdecl DBCharExtradbVersion::DBCharExtradbVersion(DBCharExtradbVersion *const this, ODBCInterface *pInterface)
  44849. {
  44850. ODBCBase::ODBCBase(this);
  44851. this->_vptr_ODBCBase = (int (**)(...))&off_80D3280;
  44852. this->mDBName = 1;
  44853. this->mResult = 0;
  44854. this->mResultCount = 0;
  44855. if ( !pInterface )
  44856. __assert__(
  44857. "../../Common/DBSystem/DataBase/DBCharExtradbVersion.cpp",
  44858. 0xDu,
  44859. "DBCharExtradbVersion::DBCharExtradbVersion(ODBCInterface*)",
  44860. "pInterface");
  44861. this->mInterface = pInterface;
  44862. this->m_curdbVersion = -1;
  44863. }
  44864. // 80D3280: using guessed type _DWORD (__cdecl *off_80D3280)(DBCharExtradbVersion *this);
  44865.  
  44866. //----- (0807BB9C) --------------------------------------------------------
  44867. void __cdecl DBCharExtradbVersion::DBCharExtradbVersion(DBCharExtradbVersion *const this, ODBCInterface *pInterface)
  44868. {
  44869. ODBCBase::ODBCBase(this);
  44870. this->_vptr_ODBCBase = (int (**)(...))&off_80D3280;
  44871. this->mDBName = 1;
  44872. this->mResult = 0;
  44873. this->mResultCount = 0;
  44874. if ( !pInterface )
  44875. __assert__(
  44876. "../../Common/DBSystem/DataBase/DBCharExtradbVersion.cpp",
  44877. 0xDu,
  44878. "DBCharExtradbVersion::DBCharExtradbVersion(ODBCInterface*)",
  44879. "pInterface");
  44880. this->mInterface = pInterface;
  44881. this->m_curdbVersion = -1;
  44882. }
  44883. // 80D3280: using guessed type _DWORD (__cdecl *off_80D3280)(DBCharExtradbVersion *this);
  44884.  
  44885. //----- (0807BC40) --------------------------------------------------------
  44886. int __cdecl DBCharExtradbVersion::Load(DBCharExtradbVersion *const this)
  44887. {
  44888. DB_QUERY *v1; // eax
  44889. DB_QUERY *v2; // ebx
  44890. GUID_t v3; // eax
  44891. int v4; // edx
  44892. int v5; // eax
  44893. int v7; // eax
  44894. INT ErrorCode; // [esp+18h] [ebp-Ch]
  44895.  
  44896. v1 = ODBCBase::GetInternalQuery((int)this);
  44897. v2 = v1;
  44898. if ( !v1 )
  44899. __assert__(
  44900. "../../Common/DBSystem/DataBase/DBCharExtradbVersion.cpp",
  44901. 0x20u,
  44902. "virtual int DBCharExtradbVersion::Load()",
  44903. "FALSE");
  44904. memset(v1, 0, 0x1000u);
  44905. v3 = this->m_CharGuid;
  44906. v4 = 0;
  44907. if ( v3 != -1 )
  44908. {
  44909. DB_QUERY::Parse(v2, LoadCharExtradbVersion, "t_charextra", v3);
  44910. v5 = ODBCBase::Load(&this->0);
  44911. v4 = 0;
  44912. if ( v5 )
  44913. {
  44914. if ( !this->mInterface )
  44915. __assert__(
  44916. "../../Common/DBSystem/DataBase/DBCharExtradbVersion.cpp",
  44917. 0x2Eu,
  44918. "virtual int DBCharExtradbVersion::Load()",
  44919. "mInterface");
  44920. if ( this->mResultCount )
  44921. {
  44922. v7 = ODBCInterface::Fetch(this->mInterface);
  44923. v4 = 0;
  44924. if ( v7 )
  44925. {
  44926. this->m_curdbVersion = ODBCInterface::GetInt(this->mInterface, 1, &ErrorCode);
  44927. ODBCInterface::Clear(this->mInterface);
  44928. v4 = 1;
  44929. }
  44930. }
  44931. else
  44932. {
  44933. this->m_curdbVersion = -2;
  44934. v4 = 1;
  44935. }
  44936. }
  44937. }
  44938. return v4;
  44939. }
  44940.  
  44941. //----- (0807BD30) --------------------------------------------------------
  44942. int __cdecl DBCharExtradbVersion::ParseResult(DBCharExtradbVersion *const this, void *pResult)
  44943. {
  44944. if ( !this->mInterface )
  44945. __assert__(
  44946. "../../Common/DBSystem/DataBase/DBCharExtradbVersion.cpp",
  44947. 0x47u,
  44948. "virtual int DBCharExtradbVersion::ParseResult(void*)",
  44949. "mInterface");
  44950. ODBCInterface::Clear(this->mInterface);
  44951. return 1;
  44952. }
  44953.  
  44954. //----- (0807BD84) --------------------------------------------------------
  44955. void __cdecl DBCharExtradbVersion::SetCharGuid(int a3, int a4)
  44956. {
  44957. *(_DWORD *)(a3 + 28) = a4;
  44958. }
  44959.  
  44960. //----- (0807BD94) --------------------------------------------------------
  44961. GUID_t __cdecl DBCharExtradbVersion::GetCharGuid(int a2)
  44962. {
  44963. return *(_DWORD *)(a2 + 28);
  44964. }
  44965.  
  44966. //----- (0807BDA0) --------------------------------------------------------
  44967. INT __cdecl DBCharExtradbVersion::GetdbVersion(int a2)
  44968. {
  44969. return *(_DWORD *)(a2 + 24);
  44970. }
  44971.  
  44972. //----- (0807BDAC) --------------------------------------------------------
  44973. void __cdecl DBCharExtradbVersion::ForceCheckConnect(DBCharExtradbVersion *const this)
  44974. {
  44975. ODBCBase::CheckDBConnect(&this->0, "DBCharExtradbVersion");
  44976. }
  44977.  
  44978. //----- (0807BDC4) --------------------------------------------------------
  44979. void __cdecl _tcf_0_96(void *a1)
  44980. {
  44981. std::ios_base::Init::~Init(&std::__ioinit);
  44982. }
  44983.  
  44984. //----- (0807BDD4) --------------------------------------------------------
  44985. void `global constructor keyed to'DBCharExtradbVersion::DBCharExtradbVersion()
  44986. {
  44987. std::ios_base::Init::Init(&std::__ioinit);
  44988. __cxa_atexit(_tcf_0_96, 0, &_dso_handle);
  44989. }
  44990. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  44991.  
  44992. //----- (0807BE00) --------------------------------------------------------
  44993. void __cdecl DBCharExtraInfo::DBCharExtraInfo(DBCharExtraInfo *const this, ODBCInterface *pInterface)
  44994. {
  44995. ODBCBase::ODBCBase(this);
  44996. this->_vptr_ODBCBase = (int (**)(...))&off_80D33D8;
  44997. this->mDBName = 1;
  44998. this->mResult = 0;
  44999. this->mResultCount = 0;
  45000. this->m_CharGuid = -1;
  45001. this->m_DBVersion = 0;
  45002. if ( !pInterface )
  45003. __assert__(
  45004. "../../Common/DBSystem/DataBase/DBCharExtraInfo.cpp",
  45005. 0x12u,
  45006. "DBCharExtraInfo::DBCharExtraInfo(ODBCInterface*)",
  45007. "pInterface");
  45008. this->mInterface = pInterface;
  45009. }
  45010. // 80D33D8: using guessed type _DWORD (__cdecl *off_80D33D8)(DBCharExtraInfo *this);
  45011.  
  45012. //----- (0807BEAC) --------------------------------------------------------
  45013. void __cdecl DBCharExtraInfo::DBCharExtraInfo(DBCharExtraInfo *const this, ODBCInterface *pInterface)
  45014. {
  45015. ODBCBase::ODBCBase(this);
  45016. this->_vptr_ODBCBase = (int (**)(...))&off_80D33D8;
  45017. this->mDBName = 1;
  45018. this->mResult = 0;
  45019. this->mResultCount = 0;
  45020. this->m_CharGuid = -1;
  45021. this->m_DBVersion = 0;
  45022. if ( !pInterface )
  45023. __assert__(
  45024. "../../Common/DBSystem/DataBase/DBCharExtraInfo.cpp",
  45025. 0x12u,
  45026. "DBCharExtraInfo::DBCharExtraInfo(ODBCInterface*)",
  45027. "pInterface");
  45028. this->mInterface = pInterface;
  45029. }
  45030. // 80D33D8: using guessed type _DWORD (__cdecl *off_80D33D8)(DBCharExtraInfo *this);
  45031.  
  45032. //----- (0807BF58) --------------------------------------------------------
  45033. #error "807BFE0: positive sp value has been found (funcsize=41)"
  45034.  
  45035. //----- (0807C018) --------------------------------------------------------
  45036. int __cdecl DBCharExtraInfo::Save(DBCharExtraInfo *const this, void *pSource)
  45037. {
  45038. DB_QUERY *v2; // eax
  45039. DB_QUERY *v3; // esi
  45040.  
  45041. if ( !pSource )
  45042. __assert__(
  45043. "../../Common/DBSystem/DataBase/DBCharExtraInfo.cpp",
  45044. 0x36u,
  45045. "virtual int DBCharExtraInfo::Save(void*)",
  45046. "pCharFullData");
  45047. v2 = ODBCBase::GetInternalQuery((int)this);
  45048. v3 = v2;
  45049. if ( !v2 )
  45050. __assert__(
  45051. "../../Common/DBSystem/DataBase/DBCharExtraInfo.cpp",
  45052. 0x3Fu,
  45053. "virtual int DBCharExtraInfo::Save(void*)",
  45054. "FALSE");
  45055. memset(v2, 0, 0x1000u);
  45056. DB_QUERY::Parse(
  45057. v3,
  45058. SaveCharExtra,
  45059. this->m_CharGuid,
  45060. this->m_DBVersion,
  45061. *(_DWORD *)((char *)pSource + 1638),
  45062. *(_DWORD *)((char *)pSource + 1658),
  45063. *((unsigned __int8 *)pSource + 1686),
  45064. *(_DWORD *)((char *)pSource + 1687),
  45065. *(_DWORD *)((char *)pSource + 1691),
  45066. *((unsigned __int8 *)pSource + 1695),
  45067. *((_DWORD *)pSource + 424),
  45068. *((unsigned __int8 *)pSource + 1700),
  45069. *((signed __int16 *)pSource + 453),
  45070. *(_DWORD *)((char *)pSource + 1717));
  45071. return ODBCBase::Save(&this->0, pSource) != 0;
  45072. }
  45073.  
  45074. //----- (0807C14C) --------------------------------------------------------
  45075. #error "807C1D0: positive sp value has been found (funcsize=39)"
  45076.  
  45077. //----- (0807C208) --------------------------------------------------------
  45078. int __cdecl DBCharExtraInfo::ParseResult(DBCharExtraInfo *const this, void *pResult)
  45079. {
  45080. INT ErrorCode; // [esp+8h] [ebp-10h]
  45081.  
  45082. if ( this->mOPType )
  45083. {
  45084. LABEL_8:
  45085. if ( !this->mInterface )
  45086. __assert__(
  45087. "../../Common/DBSystem/DataBase/DBCharExtraInfo.cpp",
  45088. 0xBAu,
  45089. "virtual int DBCharExtraInfo::ParseResult(void*)",
  45090. "mInterface");
  45091. ODBCInterface::Clear(this->mInterface);
  45092. return 0;
  45093. }
  45094. if ( !pResult )
  45095. __assert__(
  45096. "../../Common/DBSystem/DataBase/DBCharExtraInfo.cpp",
  45097. 0x90u,
  45098. "virtual int DBCharExtraInfo::ParseResult(void*)",
  45099. "pCharFullData");
  45100. if ( !this->mInterface )
  45101. __assert__(
  45102. "../../Common/DBSystem/DataBase/DBCharExtraInfo.cpp",
  45103. 0x92u,
  45104. "virtual int DBCharExtraInfo::ParseResult(void*)",
  45105. "mInterface");
  45106. if ( !this->mResultCount )
  45107. {
  45108. ODBCInterface::Clear(this->mInterface);
  45109. return 1;
  45110. }
  45111. if ( ODBCInterface::Fetch(this->mInterface) )
  45112. {
  45113. *(_DWORD *)((char *)pResult + 1638) = ODBCInterface::GetInt(this->mInterface, 2, &ErrorCode);
  45114. *(_DWORD *)((char *)pResult + 1658) = ODBCInterface::GetUInt(this->mInterface, 3, &ErrorCode);
  45115. *((_BYTE *)pResult + 1686) = ODBCInterface::GetInt(this->mInterface, 4, &ErrorCode);
  45116. *(_DWORD *)((char *)pResult + 1687) = ODBCInterface::GetUInt(this->mInterface, 5, &ErrorCode);
  45117. *(_DWORD *)((char *)pResult + 1691) = ODBCInterface::GetUInt(this->mInterface, 6, &ErrorCode);
  45118. *((_BYTE *)pResult + 1695) = ODBCInterface::GetUInt(this->mInterface, 7, &ErrorCode);
  45119. *((_DWORD *)pResult + 424) = ODBCInterface::GetInt(this->mInterface, 8, &ErrorCode);
  45120. *((_BYTE *)pResult + 1700) = ODBCInterface::GetInt(this->mInterface, 9, &ErrorCode);
  45121. *((_WORD *)pResult + 453) = ODBCInterface::GetInt(this->mInterface, 10, &ErrorCode);
  45122. *(_DWORD *)((char *)pResult + 1717) = ODBCInterface::GetInt(this->mInterface, 11, &ErrorCode);
  45123. ODBCInterface::Clear(this->mInterface);
  45124. goto LABEL_8;
  45125. }
  45126. return 0;
  45127. }
  45128.  
  45129. //----- (0807C40C) --------------------------------------------------------
  45130. GUID_t __cdecl DBCharExtraInfo::GetCharGuid(int a2)
  45131. {
  45132. return *(_DWORD *)(a2 + 24);
  45133. }
  45134.  
  45135. //----- (0807C418) --------------------------------------------------------
  45136. void __cdecl DBCharExtraInfo::SetCharGuid(int a3, int a4)
  45137. {
  45138. *(_DWORD *)(a3 + 24) = a4;
  45139. }
  45140.  
  45141. //----- (0807C428) --------------------------------------------------------
  45142. UINT __cdecl DBCharExtraInfo::GetDBVersion(int a2)
  45143. {
  45144. return *(_DWORD *)(a2 + 28);
  45145. }
  45146.  
  45147. //----- (0807C434) --------------------------------------------------------
  45148. void __cdecl DBCharExtraInfo::SetDBVersion(int a3, int a4)
  45149. {
  45150. *(_DWORD *)(a3 + 28) = a4;
  45151. }
  45152.  
  45153. //----- (0807C444) --------------------------------------------------------
  45154. void __cdecl _tcf_0_97(void *a1)
  45155. {
  45156. std::ios_base::Init::~Init(&std::__ioinit);
  45157. }
  45158.  
  45159. //----- (0807C454) --------------------------------------------------------
  45160. void `global constructor keyed to'DBCharExtraInfo::DBCharExtraInfo()
  45161. {
  45162. std::ios_base::Init::Init(&std::__ioinit);
  45163. __cxa_atexit(_tcf_0_97, 0, &_dso_handle);
  45164. }
  45165. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  45166.  
  45167. //----- (0807C480) --------------------------------------------------------
  45168. void __cdecl DBCharFullData::DBCharFullData(DBCharFullData *const this, ODBCInterface *pInterface)
  45169. {
  45170. ODBCBase::ODBCBase(this);
  45171. this->_vptr_ODBCBase = (int (**)(...))&off_80D3590;
  45172. this->mDBName = 1;
  45173. this->mResult = 0;
  45174. this->mResultCount = 0;
  45175. this->m_CharGuid = -1;
  45176. this->m_FullDataCRC = 0;
  45177. if ( !pInterface )
  45178. __assert__(
  45179. "../../Common/DBSystem/DataBase/DBCharFullData.cpp",
  45180. 0x21u,
  45181. "DBCharFullData::DBCharFullData(ODBCInterface*)",
  45182. "pInterface");
  45183. this->mInterface = pInterface;
  45184. this->m_DebugStep = 0;
  45185. }
  45186. // 80D3590: using guessed type _DWORD (__cdecl *off_80D3590)(DBCharFullData *this);
  45187.  
  45188. //----- (0807C530) --------------------------------------------------------
  45189. void __cdecl DBCharFullData::DBCharFullData(DBCharFullData *const this, ODBCInterface *pInterface)
  45190. {
  45191. ODBCBase::ODBCBase(this);
  45192. this->_vptr_ODBCBase = (int (**)(...))&off_80D3590;
  45193. this->mDBName = 1;
  45194. this->mResult = 0;
  45195. this->mResultCount = 0;
  45196. this->m_CharGuid = -1;
  45197. this->m_FullDataCRC = 0;
  45198. if ( !pInterface )
  45199. __assert__(
  45200. "../../Common/DBSystem/DataBase/DBCharFullData.cpp",
  45201. 0x21u,
  45202. "DBCharFullData::DBCharFullData(ODBCInterface*)",
  45203. "pInterface");
  45204. this->mInterface = pInterface;
  45205. this->m_DebugStep = 0;
  45206. }
  45207. // 80D3590: using guessed type _DWORD (__cdecl *off_80D3590)(DBCharFullData *this);
  45208.  
  45209. //----- (0807C5E0) --------------------------------------------------------
  45210. #error "807C664: positive sp value has been found (funcsize=39)"
  45211.  
  45212. //----- (0807C69C) --------------------------------------------------------
  45213. GUID_t __cdecl DBCharFullData::GetCharGuid(int a2)
  45214. {
  45215. return *(_DWORD *)(a2 + 24);
  45216. }
  45217.  
  45218. //----- (0807C6A8) --------------------------------------------------------
  45219. void __cdecl DBCharFullData::SetCharGuid(int a3, int a4)
  45220. {
  45221. *(_DWORD *)(a3 + 24) = a4;
  45222. }
  45223.  
  45224. //----- (0807C6B8) --------------------------------------------------------
  45225. void __cdecl DBCharFullData::SetCRC(int a3, int a4)
  45226. {
  45227. *(_DWORD *)(a3 + 28) = a4;
  45228. }
  45229.  
  45230. //----- (0807C6C8) --------------------------------------------------------
  45231. UINT __cdecl DBCharFullData::GetCRC(int a2)
  45232. {
  45233. return *(_DWORD *)(a2 + 28);
  45234. }
  45235.  
  45236. //----- (0807C6D4) --------------------------------------------------------
  45237. INT __cdecl FullDataMagicInt2(FULLUSERDATA_0 *pData)
  45238. {
  45239. if ( !pData )
  45240. __assert__(
  45241. "../../Common/DBSystem/DataBase/DBCharFullData.cpp",
  45242. 0x2DBu,
  45243. "INT FullDataMagicInt2(FULLUSERDATA*)",
  45244. "pData");
  45245. return Seraph::CRC_Get(
  45246. pData->m_Human.m_GUID,
  45247. pData->m_Human.m_Money,
  45248. pData->m_Bank.m_Money,
  45249. pData->m_Human.m_iYuanBao,
  45250. pData->m_Human.m_Level);
  45251. }
  45252.  
  45253. //----- (0807C728) --------------------------------------------------------
  45254. int __cdecl DBCharFullData::Save(DBCharFullData *const this, void *pSource)
  45255. {
  45256. DB_QUERY *v2; // eax
  45257. INT v3; // eax
  45258. signed int v4; // edx
  45259. int v5; // ST100_4
  45260. GUID_t v6; // STFC_4
  45261. int v7; // STF8_4
  45262. int v8; // STF4_4
  45263. int v9; // STF0_4
  45264. int v10; // STEC_4
  45265. int v11; // STE8_4
  45266. UINT v12; // STE4_4
  45267. int v13; // STDC_4
  45268. int v14; // STD8_4
  45269. int v15; // STD4_4
  45270. int v16; // STD0_4
  45271. int v17; // STCC_4
  45272. int v18; // STC8_4
  45273. int v19; // STC4_4
  45274. int v20; // STC0_4
  45275. float v21; // STB0_4
  45276. INT v22; // STBC_4
  45277. float v23; // STB0_4
  45278. INT v24; // STB8_4
  45279. int v25; // STB4_4
  45280. int v26; // STB0_4
  45281. int v27; // STAC_4
  45282. int v28; // STA8_4
  45283. int v29; // STA4_4
  45284. int v30; // STA0_4
  45285. int v31; // ST9C_4
  45286. int v32; // ST98_4
  45287. int v33; // ST94_4
  45288. int v34; // ST90_4
  45289. int v35; // ST8C_4
  45290. int v36; // ST88_4
  45291. int v37; // ST84_4
  45292. int v38; // ST74_4
  45293. int v39; // ST70_4
  45294. int v40; // ST6C_4
  45295. int v41; // ST68_4
  45296. int v42; // ST64_4
  45297. int v43; // ST60_4
  45298. int v44; // ST5C_4
  45299. int v45; // ST58_4
  45300. int v46; // ST54_4
  45301. int v47; // ST50_4
  45302. int v48; // ST4C_4
  45303. int v49; // ST48_4
  45304. int v50; // ST44_4
  45305. float v51; // ST40_4
  45306. INT v52; // ST40_4
  45307. float v53; // ST30_4
  45308. INT v54; // eax
  45309. int v55; // eax
  45310. int v56; // edx
  45311. bool v57; // zf
  45312. bool v58; // sf
  45313. unsigned __int8 v59; // of
  45314. int v60; // edi
  45315. int v61; // eax
  45316. int v62; // eax
  45317. int v63; // eax
  45318. int v64; // eax
  45319. int v65; // eax
  45320. int v66; // eax
  45321. int v67; // eax
  45322. int v68; // eax
  45323. int v69; // eax
  45324. int v70; // eax
  45325. int v71; // eax
  45326. int v72; // eax
  45327. int v73; // eax
  45328. int v74; // eax
  45329. int v75; // eax
  45330. _PLAYERSHOP_GUID *v77; // [esp+10h] [ebp-E34h]
  45331. _HUMAN_DB_LOAD_0::_PSHOP_INFO *v78; // [esp+14h] [ebp-E30h]
  45332. signed int v79; // [esp+14h] [ebp-E30h]
  45333. DB_QUERY *pQuery; // [esp+38h] [ebp-E0Ch]
  45334. DBCharExtraInfo ExtraObject; // [esp+3Ch] [ebp-E08h]
  45335. DBFatigueInfo FatigueInfoObject; // [esp+5Ch] [ebp-DE8h]
  45336. DBPvPInfo PvPInfoObject; // [esp+7Ch] [ebp-DC8h]
  45337. DBCoolDownInfo CoolDownInfoObject; // [esp+9Ch] [ebp-DA8h]
  45338. DBTitleInfo TitleInfoObject; // [esp+BCh] [ebp-D88h]
  45339. DBPrivateInfo PrivateInfoObject; // [esp+DCh] [ebp-D68h]
  45340. DBPetList PetListObject; // [esp+FCh] [ebp-D48h]
  45341. DBImpactList ImpactListObject; // [esp+11Ch] [ebp-D28h]
  45342. DBRelationList RelationListObject; // [esp+13Ch] [ebp-D08h]
  45343. DBTaskList TaskListObject; // [esp+15Ch] [ebp-CE8h]
  45344. DBAbilityList AbilityListObject; // [esp+17Ch] [ebp-CC8h]
  45345. DBXinFaList XinFaListObject; // [esp+19Ch] [ebp-CA8h]
  45346. DBSkillList SkillListObject; // [esp+1BCh] [ebp-C88h]
  45347. DBCharVisualGem VisualGemObject; // [esp+1DCh] [ebp-C68h]
  45348. DBItemList ItemListObject; // [esp+1FCh] [ebp-C48h]
  45349. CHAR ExpInfo[255]; // [esp+22Ch] [ebp-C18h]
  45350. CHAR CharCarryPet[100]; // [esp+32Ch] [ebp-B18h]
  45351. _HUMAN_DB_LOAD_0::_PSHOP_INFO ShopInfo; // [esp+39Ch] [ebp-AA8h]
  45352. CHAR CharShopInfo[512]; // [esp+42Ch] [ebp-A18h]
  45353. CHAR CharSetting[2048]; // [esp+62Ch] [ebp-818h]
  45354.  
  45355. v2 = ODBCBase::GetInternalQuery((int)this);
  45356. pQuery = v2;
  45357. this->m_DebugStep = 5;
  45358. if ( !v2 )
  45359. __assert__(
  45360. "../../Common/DBSystem/DataBase/DBCharFullData.cpp",
  45361. 0x4Eu,
  45362. "virtual int DBCharFullData::Save(void*)",
  45363. "FALSE");
  45364. memset(v2, 0, 0x1000u);
  45365. if ( this->m_CharGuid == -1 )
  45366. {
  45367. this->m_DebugStep = 10;
  45368. v56 = 0;
  45369. }
  45370. else
  45371. {
  45372. if ( !pSource )
  45373. {
  45374. this->m_DebugStep = 10;
  45375. __assert__(
  45376. "../../Common/DBSystem/DataBase/DBCharFullData.cpp",
  45377. 0x5Au,
  45378. "virtual int DBCharFullData::Save(void*)",
  45379. "pCharFullData");
  45380. }
  45381. this->m_DebugStep = 15;
  45382. if ( !StrSafeCheck((const CHAR *)pSource + 34, 0x22u) )
  45383. {
  45384. *((_BYTE *)pSource + 34) = 0;
  45385. this->m_DebugStep = 17;
  45386. }
  45387. this->m_FullDataCRC = FullDataCrc((FULLUSERDATA *)pSource, 0);
  45388. v3 = FullDataMagicInt2((FULLUSERDATA_0 *)pSource);
  45389. *((_BYTE *)pSource + 39977) = 1;
  45390. *(_DWORD *)((char *)pSource + 39978) = v3;
  45391. this->m_DebugStep = 20;
  45392. if ( !StrSafeCheck((const CHAR *)pSource + 872, 0x11u) )
  45393. *((_BYTE *)pSource + 872) = 0;
  45394. this->m_DebugStep = 25;
  45395. memset(CharSetting, 0, 0x800u);
  45396. Binary2String((const CHAR *)pSource + 39632, 0x280u, CharSetting);
  45397. this->m_DebugStep = 30;
  45398. memset(CharShopInfo, 0, 0x200u);
  45399. v78 = &ShopInfo;
  45400. v4 = 1;
  45401. do
  45402. {
  45403. memset(v78, 0, 0xCu);
  45404. --v4;
  45405. v78->m_ShopGuid[0].m_PoolPos = -1;
  45406. v78->m_ShopGuid[0].m_Server = -1;
  45407. v78->m_ShopGuid[0].m_World = -1;
  45408. v78->m_ShopGuid[0].m_Scene = -1;
  45409. v78 = (_HUMAN_DB_LOAD_0::_PSHOP_INFO *)((char *)v78 + 12);
  45410. }
  45411. while ( v4 != -1 );
  45412. v77 = ShopInfo.m_FavoriteList;
  45413. v79 = 9;
  45414. do
  45415. {
  45416. memset(v77, 0, sizeof(_PLAYERSHOP_GUID));
  45417. --v79;
  45418. v77->m_PoolPos = -1;
  45419. v77->m_Server = -1;
  45420. v77->m_World = -1;
  45421. v77->m_Scene = -1;
  45422. ++v77;
  45423. }
  45424. while ( v79 != -1 );
  45425. memset(&ShopInfo, 0, 0x90u);
  45426. qmemcpy(&ShopInfo, (char *)pSource + 1465, 0x18u);
  45427. memcpy(ShopInfo.m_FavoriteList, (char *)pSource + 1489, 0x78u);
  45428. Binary2String((const CHAR *)&ShopInfo, 0x90u, CharShopInfo);
  45429. this->m_DebugStep = 35;
  45430. memset(CharCarryPet, 0, 0x64u);
  45431. Binary2String((const CHAR *)pSource + 990, 8u, CharCarryPet);
  45432. this->m_DebugStep = 40;
  45433. memset(ExpInfo, 0, 0xFFu);
  45434. Binary2String((const CHAR *)pSource + 1662, 0x14u, ExpInfo);
  45435. this->m_DebugStep = 45;
  45436. if ( *(_DWORD *)((char *)pSource + 1682) == -1 )
  45437. {
  45438. DB_QUERY::Parse(pQuery, DeleteCharRequest, "t_char", this->m_CharGuid, this->m_CharGuid);
  45439. this->m_DebugStep = 55;
  45440. v56 = ODBCBase::Save(&this->0, pSource) != 0;
  45441. }
  45442. else
  45443. {
  45444. v5 = *(_DWORD *)((char *)pSource + 954);
  45445. v6 = this->m_CharGuid;
  45446. v7 = *(_DWORD *)((char *)pSource + 1634);
  45447. v8 = *((_DWORD *)pSource + 217);
  45448. v9 = *(_DWORD *)((char *)pSource + 1630);
  45449. v10 = *(_DWORD *)((char *)pSource + 1618);
  45450. v11 = *(_DWORD *)((char *)pSource + 1626);
  45451. v12 = this->m_FullDataCRC;
  45452. v13 = *(_DWORD *)((char *)pSource + 1682);
  45453. v14 = *(_DWORD *)((char *)pSource + 926);
  45454. v15 = *(_DWORD *)((char *)pSource + 986);
  45455. v16 = *((_DWORD *)pSource + 216);
  45456. v17 = *(_DWORD *)((char *)pSource + 950);
  45457. v18 = *(_DWORD *)((char *)pSource + 946);
  45458. v19 = *(_DWORD *)((char *)pSource + 942);
  45459. v20 = *(_DWORD *)((char *)pSource + 982);
  45460. v21 = *(float *)((char *)pSource + 922) * 100.0;
  45461. v22 = Float2Int<float>(v21);
  45462. v23 = *(float *)((char *)pSource + 918) * 100.0;
  45463. v24 = Float2Int<float>(v23);
  45464. v25 = *((signed __int16 *)pSource + 451);
  45465. v26 = *((unsigned __int8 *)pSource + 12285);
  45466. v27 = *(_DWORD *)((char *)pSource + 12286);
  45467. v28 = *(_DWORD *)((char *)pSource + 938);
  45468. v29 = *(_DWORD *)((char *)pSource + 889);
  45469. v30 = *((_DWORD *)pSource + 212);
  45470. v31 = *((_DWORD *)pSource + 210);
  45471. v32 = *((_DWORD *)pSource + 209);
  45472. v33 = *((_DWORD *)pSource + 208);
  45473. v34 = *((_DWORD *)pSource + 213);
  45474. v35 = *(_DWORD *)pSource;
  45475. v36 = *((signed __int16 *)pSource + 454);
  45476. v37 = *((signed __int16 *)pSource + 452);
  45477. v38 = *(_DWORD *)((char *)pSource + 1018);
  45478. v39 = *(_DWORD *)((char *)pSource + 1014);
  45479. v40 = *(_DWORD *)((char *)pSource + 1010);
  45480. v41 = *(_DWORD *)((char *)pSource + 1006);
  45481. v42 = *(_DWORD *)((char *)pSource + 1002);
  45482. v43 = *(_DWORD *)((char *)pSource + 998);
  45483. v44 = *(_DWORD *)((char *)pSource + 978);
  45484. v45 = *(_DWORD *)((char *)pSource + 974);
  45485. v46 = *(_DWORD *)((char *)pSource + 970);
  45486. v47 = *(_DWORD *)((char *)pSource + 962);
  45487. v48 = *(_DWORD *)((char *)pSource + 954);
  45488. v49 = *(_DWORD *)((char *)pSource + 934);
  45489. v50 = *(_DWORD *)((char *)pSource + 930);
  45490. v51 = *(float *)((char *)pSource + 914) * 100.0;
  45491. v52 = Float2Int<float>(v51);
  45492. v53 = 100.0 * *(float *)((char *)pSource + 910);
  45493. v54 = Float2Int<float>(v53);
  45494. DB_QUERY::Parse(
  45495. pQuery,
  45496. UpdateCharFullData,
  45497. "t_char",
  45498. (char *)pSource + 34,
  45499. *((_DWORD *)pSource + 18),
  45500. *((_DWORD *)pSource + 207),
  45501. *((_DWORD *)pSource + 211),
  45502. *((_DWORD *)pSource + 214),
  45503. *((_DWORD *)pSource + 215),
  45504. (char *)pSource + 872,
  45505. *(_DWORD *)((char *)pSource + 893),
  45506. *((unsigned __int8 *)pSource + 897),
  45507. *((unsigned __int8 *)pSource + 898),
  45508. *((unsigned __int8 *)pSource + 899),
  45509. *((signed __int16 *)pSource + 450),
  45510. v54,
  45511. v52,
  45512. v50,
  45513. v49,
  45514. v48,
  45515. v47,
  45516. v46,
  45517. v45,
  45518. v44,
  45519. v43,
  45520. v42,
  45521. v41,
  45522. v40,
  45523. v39,
  45524. v38,
  45525. CharSetting,
  45526. CharShopInfo,
  45527. CharCarryPet,
  45528. v37,
  45529. v36,
  45530. v35,
  45531. v34,
  45532. v33,
  45533. v32,
  45534. v31,
  45535. v30,
  45536. v29,
  45537. v28,
  45538. v27,
  45539. v26,
  45540. v25,
  45541. v24,
  45542. v22,
  45543. v20,
  45544. v19,
  45545. v18,
  45546. v17,
  45547. v16,
  45548. v15,
  45549. v14,
  45550. v13,
  45551. ExpInfo,
  45552. v12,
  45553. v11,
  45554. v10,
  45555. v9,
  45556. v8,
  45557. v7);
  45558. this->m_DebugStep = 50;
  45559. v55 = ODBCBase::Save(&this->0, pSource);
  45560. v56 = 0;
  45561. if ( v55 )
  45562. {
  45563. v59 = __OFSUB__(this->mResultCount, 1);
  45564. v57 = this->mResultCount == 1;
  45565. v58 = this->mResultCount - 1 < 0;
  45566. this->m_DebugStep = 60;
  45567. if ( !((unsigned __int8)(v58 ^ v59) | v57) )
  45568. __assert__(
  45569. "../../Common/DBSystem/DataBase/DBCharFullData.cpp",
  45570. 0xE6u,
  45571. "virtual int DBCharFullData::Save(void*)",
  45572. "mResultCount<=1");
  45573. ODBCInterface::Clear(this->mInterface);
  45574. v56 = 1;
  45575. if ( this->mResultCount )
  45576. {
  45577. v60 = *(_DWORD *)((char *)pSource + 954);
  45578. this->m_DebugStep = 100;
  45579. DBItemList::DBItemList(&ItemListObject, this->mInterface);
  45580. DBItemList::SetCharGuid((int)&ItemListObject, this->m_CharGuid);
  45581. DBItemList::SetDBVersion((int)&ItemListObject, v60);
  45582. v61 = DBItemList::Save(&ItemListObject, pSource);
  45583. v56 = 0;
  45584. if ( v61 )
  45585. {
  45586. DBItemList::ParseResult(&ItemListObject, pSource);
  45587. this->m_DebugStep = 105;
  45588. DBCharVisualGem::DBCharVisualGem(&VisualGemObject, this->mInterface);
  45589. DBCharVisualGem::SetCharGuid((int)&VisualGemObject, this->m_CharGuid);
  45590. DBCharVisualGem::SetDBVersion((int)&VisualGemObject, v60);
  45591. v62 = DBCharVisualGem::Save(&VisualGemObject, pSource);
  45592. v56 = 0;
  45593. if ( v62 )
  45594. {
  45595. DBCharVisualGem::ParseResult(&VisualGemObject, pSource);
  45596. this->m_DebugStep = 110;
  45597. DBSkillList::DBSkillList(&SkillListObject, this->mInterface);
  45598. DBSkillList::SetCharGuid((int)&SkillListObject, this->m_CharGuid);
  45599. DBSkillList::SetDBVersion((int)&SkillListObject, v60);
  45600. v63 = DBSkillList::Save(&SkillListObject, pSource);
  45601. v56 = 0;
  45602. if ( v63 )
  45603. {
  45604. DBSkillList::ParseResult(&SkillListObject, pSource);
  45605. this->m_DebugStep = 115;
  45606. DBXinFaList::DBXinFaList(&XinFaListObject, this->mInterface);
  45607. DBXinFaList::SetCharGuid((int)&XinFaListObject, this->m_CharGuid);
  45608. DBXinFaList::SetDBVersion((int)&XinFaListObject, v60);
  45609. v64 = DBXinFaList::Save(&XinFaListObject, pSource);
  45610. v56 = 0;
  45611. if ( v64 )
  45612. {
  45613. DBXinFaList::ParseResult(&XinFaListObject, pSource);
  45614. this->m_DebugStep = 120;
  45615. DBAbilityList::DBAbilityList(&AbilityListObject, this->mInterface);
  45616. DBAbilityList::SetCharGuid((int)&AbilityListObject, this->m_CharGuid);
  45617. DBAbilityList::SetDBVersion((int)&AbilityListObject, v60);
  45618. v65 = DBAbilityList::Save(&AbilityListObject, pSource);
  45619. v56 = 0;
  45620. if ( v65 )
  45621. {
  45622. DBAbilityList::ParseResult(&AbilityListObject, pSource);
  45623. this->m_DebugStep = 125;
  45624. DBTaskList::DBTaskList(&TaskListObject, this->mInterface);
  45625. DBTaskList::SetCharGuid((int)&TaskListObject, this->m_CharGuid);
  45626. DBTaskList::SetDBVersion((int)&TaskListObject, v60);
  45627. v66 = DBTaskList::Save(&TaskListObject, pSource);
  45628. v56 = 0;
  45629. if ( v66 )
  45630. {
  45631. DBTaskList::ParseResult(&TaskListObject, pSource);
  45632. this->m_DebugStep = 130;
  45633. DBRelationList::DBRelationList(&RelationListObject, this->mInterface);
  45634. DBRelationList::SetCharGuid((int)&RelationListObject, this->m_CharGuid);
  45635. DBRelationList::SetDBVersion((int)&RelationListObject, v60);
  45636. v67 = DBRelationList::Save(&RelationListObject, pSource);
  45637. v56 = 0;
  45638. if ( v67 )
  45639. {
  45640. DBRelationList::ParseResult(&RelationListObject, pSource);
  45641. this->m_DebugStep = 135;
  45642. DBImpactList::DBImpactList(&ImpactListObject, this->mInterface);
  45643. DBImpactList::SetCharGuid((int)&ImpactListObject, this->m_CharGuid);
  45644. DBImpactList::SetDBVersion((int)&ImpactListObject, v60);
  45645. v68 = DBImpactList::Save(&ImpactListObject, pSource);
  45646. v56 = 0;
  45647. if ( v68 )
  45648. {
  45649. DBImpactList::ParseResult(&ImpactListObject, pSource);
  45650. this->m_DebugStep = 140;
  45651. DBPetList::DBPetList(&PetListObject, this->mInterface);
  45652. DBPetList::SetCharGuid((int)&PetListObject, this->m_CharGuid);
  45653. DBPetList::SetDBVersion((int)&PetListObject, v60);
  45654. v69 = DBPetList::Save(&PetListObject, pSource);
  45655. v56 = 0;
  45656. if ( v69 )
  45657. {
  45658. DBPetList::ParseResult(&PetListObject, pSource);
  45659. this->m_DebugStep = 145;
  45660. DBPrivateInfo::DBPrivateInfo(&PrivateInfoObject, this->mInterface);
  45661. DBPrivateInfo::SetCharGuid((int)&PrivateInfoObject, this->m_CharGuid);
  45662. DBPrivateInfo::SetDBVersion((int)&PrivateInfoObject, v60);
  45663. v70 = DBPrivateInfo::Save(&PrivateInfoObject, pSource);
  45664. v56 = 0;
  45665. if ( v70 )
  45666. {
  45667. DBPrivateInfo::ParseResult(&PrivateInfoObject, pSource);
  45668. this->m_DebugStep = 150;
  45669. DBTitleInfo::DBTitleInfo(&TitleInfoObject, this->mInterface);
  45670. DBTitleInfo::SetCharGuid((int)&TitleInfoObject, this->m_CharGuid);
  45671. DBTitleInfo::SetDBVersion((int)&TitleInfoObject, v60);
  45672. v71 = DBTitleInfo::Save(&TitleInfoObject, pSource);
  45673. v56 = 0;
  45674. if ( v71 )
  45675. {
  45676. DBTitleInfo::ParseResult(&TitleInfoObject, pSource);
  45677. this->m_DebugStep = 155;
  45678. DBCoolDownInfo::DBCoolDownInfo(&CoolDownInfoObject, this->mInterface);
  45679. DBCoolDownInfo::SetCharGuid((int)&CoolDownInfoObject, this->m_CharGuid);
  45680. DBCoolDownInfo::SetDBVersion((int)&CoolDownInfoObject, v60);
  45681. v72 = DBCoolDownInfo::Save(&CoolDownInfoObject, pSource);
  45682. v56 = 0;
  45683. if ( v72 )
  45684. {
  45685. DBCoolDownInfo::ParseResult(&CoolDownInfoObject, pSource);
  45686. this->m_DebugStep = 160;
  45687. DBPvPInfo::DBPvPInfo(&PvPInfoObject, this->mInterface);
  45688. DBPvPInfo::SetCharGuid((int)&PvPInfoObject, this->m_CharGuid);
  45689. DBPvPInfo::SetDBVersion((int)&PvPInfoObject, v60);
  45690. v73 = DBPvPInfo::Save(&PvPInfoObject, pSource);
  45691. v56 = 0;
  45692. if ( v73 )
  45693. {
  45694. DBPvPInfo::ParseResult(&PvPInfoObject, pSource);
  45695. this->m_DebugStep = 165;
  45696. DBFatigueInfo::DBFatigueInfo(&FatigueInfoObject, this->mInterface);
  45697. DBFatigueInfo::SetCharGuid((int)&FatigueInfoObject, this->m_CharGuid);
  45698. DBFatigueInfo::SetDBVersion((int)&FatigueInfoObject, v60);
  45699. v74 = DBFatigueInfo::Save(&FatigueInfoObject, pSource);
  45700. v56 = 0;
  45701. if ( v74 )
  45702. {
  45703. DBFatigueInfo::ParseResult(&FatigueInfoObject, pSource);
  45704. this->m_DebugStep = 170;
  45705. DBCharExtraInfo::DBCharExtraInfo(&ExtraObject, this->mInterface);
  45706. DBCharExtraInfo::SetCharGuid((int)&ExtraObject, this->m_CharGuid);
  45707. DBCharExtraInfo::SetDBVersion((int)&ExtraObject, v60);
  45708. v75 = DBCharExtraInfo::Save(&ExtraObject, pSource);
  45709. v56 = 0;
  45710. if ( v75 )
  45711. {
  45712. DBCharExtraInfo::ParseResult(&ExtraObject, pSource);
  45713. v56 = 1;
  45714. this->m_DebugStep = 200;
  45715. }
  45716. }
  45717. }
  45718. }
  45719. }
  45720. }
  45721. }
  45722. }
  45723. }
  45724. }
  45725. }
  45726. }
  45727. }
  45728. }
  45729. }
  45730. }
  45731. }
  45732. }
  45733. }
  45734. return v56;
  45735. }
  45736. // 807CBD5: too many varargs, some ignored
  45737.  
  45738. //----- (0807D1E4) --------------------------------------------------------
  45739. INT __cdecl FullDataMagicInt1(FULLUSERDATA_0 *pData)
  45740. {
  45741. if ( !pData )
  45742. __assert__(
  45743. "../../Common/DBSystem/DataBase/DBCharFullData.cpp",
  45744. 0x2CEu,
  45745. "INT FullDataMagicInt1(FULLUSERDATA*)",
  45746. "pData");
  45747. return Seraph::CRC_Get(
  45748. pData->m_Human.m_GUID,
  45749. pData->m_Human.m_Money,
  45750. pData->m_Bank.m_Money,
  45751. pData->m_Human.m_iYuanBao,
  45752. pData->m_Human.m_LastLogoutTime);
  45753. }
  45754.  
  45755. //----- (0807D238) --------------------------------------------------------
  45756. int __cdecl DBCharFullData::ParseResult(DBCharFullData *const this, void *pResult)
  45757. {
  45758. char *v2; // eax
  45759. signed int v3; // edx
  45760. char *v4; // eax
  45761. signed int v5; // edx
  45762. char *v6; // edi
  45763. signed int v7; // edx
  45764. signed int v8; // edx
  45765. INT nIsOldItem; // ST40_4
  45766. ODBCInterface *v10; // eax
  45767. _HUMAN_DB_LOAD_0::_PSHOP_INFO *v12; // [esp+8h] [ebp-2B0h]
  45768. _PLAYERSHOP_GUID *v13; // [esp+8h] [ebp-2B0h]
  45769. int dbVersion; // [esp+1Ch] [ebp-29Ch]
  45770. INT i; // [esp+30h] [ebp-288h]
  45771. INT ErrorCode; // [esp+34h] [ebp-284h]
  45772. int v17; // [esp+38h] [ebp-280h]
  45773. int v18; // [esp+3Ch] [ebp-27Ch]
  45774. DBCharExtraInfo ExtraObject; // [esp+40h] [ebp-278h]
  45775. DBFatigueInfo FatigueInfoObject; // [esp+60h] [ebp-258h]
  45776. DBPvPInfo PvPInfoObject; // [esp+80h] [ebp-238h]
  45777. DBCoolDownInfo CoolDownInfoObject; // [esp+A0h] [ebp-218h]
  45778. DBTitleInfo TitleInfoObject; // [esp+C0h] [ebp-1F8h]
  45779. DBPrivateInfo PrivateInfoObject; // [esp+E0h] [ebp-1D8h]
  45780. DBPetList PetListObject; // [esp+100h] [ebp-1B8h]
  45781. DBImpactList ImpactListObject; // [esp+120h] [ebp-198h]
  45782. DBRelationList RelationListObject; // [esp+140h] [ebp-178h]
  45783. DBTaskList TaskListObject; // [esp+160h] [ebp-158h]
  45784. DBAbilityList AbilityListObject; // [esp+180h] [ebp-138h]
  45785. DBXinFaList XinFaListObject; // [esp+1A0h] [ebp-118h]
  45786. DBSkillList SkillListObject; // [esp+1C0h] [ebp-F8h]
  45787. DBItemList ItemListObject; // [esp+1E0h] [ebp-D8h]
  45788. _HUMAN_DB_LOAD_0::_PSHOP_INFO ShopInfo; // [esp+210h] [ebp-A8h]
  45789.  
  45790. if ( this->mOPType == DB_LOAD )
  45791. {
  45792. if ( !pResult )
  45793. __assert__(
  45794. "../../Common/DBSystem/DataBase/DBCharFullData.cpp",
  45795. 0x18Au,
  45796. "virtual int DBCharFullData::ParseResult(void*)",
  45797. "pCharFullData");
  45798. _HUMAN_DB_LOAD::CleanUp((_HUMAN_DB_LOAD *const )pResult);
  45799. _EQUIP_DB_LOAD::CleanUp((_WORD *)pResult + 14955);
  45800. _BAG_DB_LOAD::CleanUp((char *)pResult + 12290);
  45801. _BANK_DB_LOAD::CleanUp((char *)pResult + 1721);
  45802. _SKILL_DB_LOAD::CleanUp((_SKILL_DB_LOAD *const )((char *)pResult + 33256));
  45803. v2 = (char *)pResult + 33513;
  45804. v3 = 31;
  45805. do
  45806. {
  45807. *(_WORD *)v2 = -1;
  45808. *((_DWORD *)v2 + 1) = 0;
  45809. *((_DWORD *)v2 + 2) = 0;
  45810. v2 += 12;
  45811. --v3;
  45812. }
  45813. while ( v3 >= 0 );
  45814. _XINFA_DB_LOAD::CleanUp((_XINFA_DB_LOAD *const )((char *)pResult + 33897));
  45815. _IMPACT_DB_LOAD::CleanUp((_BYTE *)pResult + 33962);
  45816. _ABILITY_DB_LOAD::CleanUp((char *)pResult + 35483);
  45817. _MISSION_DB_LOAD::CleanUp((_MISSION_DB_LOAD *const )((char *)pResult + 36251));
  45818. v4 = (char *)pResult + 39632;
  45819. v5 = 127;
  45820. do
  45821. {
  45822. *v4 = 0;
  45823. *(_DWORD *)(v4 + 1) = 0;
  45824. v4 += 5;
  45825. --v5;
  45826. }
  45827. while ( v5 >= 0 );
  45828. _PET_DB_LIST_LOAD::CleanUp((_PET_DB_LIST_LOAD *const )((char *)pResult + 40272));
  45829. _RELATION_DB_LOAD::CleanUp((_RELATION_DB_LOAD *const )((char *)pResult + 44262));
  45830. memset((char *)pResult + 50161, 0, 0x1B0u);
  45831. *(_DWORD *)((char *)pResult + 50162) = -1;
  45832. *(_DWORD *)((char *)pResult + 50593) = 0;
  45833. *(_DWORD *)((char *)pResult + 50597) = 0;
  45834. *(_DWORD *)((char *)pResult + 50601) = -1;
  45835. memset((char *)pResult + 50605, 0, 0x30u);
  45836. v6 = (char *)pResult + 50653;
  45837. *(_WORD *)v6 = 0;
  45838. v6[2] = 0;
  45839. v17 = 0;
  45840. v18 = 0;
  45841. *((_DWORD *)pResult + 12664) = 0;
  45842. *((_DWORD *)pResult + 12665) = 0;
  45843. *((_DWORD *)pResult + 12666) = 0;
  45844. *((_DWORD *)pResult + 12667) = 0;
  45845. *((_DWORD *)pResult + 12668) = 0;
  45846. *((_DWORD *)pResult + 12669) = 0;
  45847. memset((char *)pResult + 50680, 0, 0x18u);
  45848. *((_BYTE *)pResult + 50704) = 0;
  45849. *(_DWORD *)((char *)pResult + 50705) = 0;
  45850. *(_DWORD *)((char *)pResult + 50709) = 0;
  45851. if ( this->mResultCount > 1 )
  45852. __assert__(
  45853. "../../Common/DBSystem/DataBase/DBCharFullData.cpp",
  45854. 0x1D1u,
  45855. "virtual int DBCharFullData::ParseResult(void*)",
  45856. "mResultCount<=1");
  45857. if ( !this->mInterface )
  45858. __assert__(
  45859. "../../Common/DBSystem/DataBase/DBCharFullData.cpp",
  45860. 0x1D2u,
  45861. "virtual int DBCharFullData::ParseResult(void*)",
  45862. "mInterface");
  45863. i = 0;
  45864. while ( ODBCInterface::Fetch(this->mInterface) )
  45865. {
  45866. *((_DWORD *)pResult + 17) = ODBCInterface::GetUInt(this->mInterface, 1, &ErrorCode);
  45867. ODBCInterface::GetString(this->mInterface, 2, (CHAR *)pResult + 4, 30, &ErrorCode);
  45868. ODBCInterface::GetString(this->mInterface, 3, (CHAR *)pResult + 34, 34, &ErrorCode);
  45869. *((_DWORD *)pResult + 18) = ODBCInterface::GetUInt(this->mInterface, 4, &ErrorCode);
  45870. *((_DWORD *)pResult + 19) = ODBCInterface::GetUInt(this->mInterface, 5, &ErrorCode);
  45871. *((_DWORD *)pResult + 207) = ODBCInterface::GetUInt(this->mInterface, 6, &ErrorCode);
  45872. *((_DWORD *)pResult + 211) = ODBCInterface::GetUInt(this->mInterface, 7, &ErrorCode);
  45873. *((_DWORD *)pResult + 214) = ODBCInterface::GetUInt(this->mInterface, 8, &ErrorCode);
  45874. *((_DWORD *)pResult + 215) = ODBCInterface::GetUInt(this->mInterface, 9, &ErrorCode);
  45875. ODBCInterface::GetString(this->mInterface, 10, (CHAR *)pResult + 872, 17, &ErrorCode);
  45876. *(_DWORD *)((char *)pResult + 893) = ODBCInterface::GetUInt(this->mInterface, 11, &ErrorCode);
  45877. *((_BYTE *)pResult + 897) = ODBCInterface::GetInt(this->mInterface, 12, &ErrorCode);
  45878. *((_BYTE *)pResult + 898) = ODBCInterface::GetInt(this->mInterface, 13, &ErrorCode);
  45879. *((_BYTE *)pResult + 899) = ODBCInterface::GetInt(this->mInterface, 14, &ErrorCode);
  45880. *((_WORD *)pResult + 450) = ODBCInterface::GetUInt(this->mInterface, 15, &ErrorCode);
  45881. *(float *)((char *)pResult + 910) = (long double)ODBCInterface::GetUInt(this->mInterface, 16, &ErrorCode)
  45882. * 0.0099999998;
  45883. *(float *)((char *)pResult + 914) = (long double)ODBCInterface::GetUInt(this->mInterface, 17, &ErrorCode)
  45884. * 0.0099999998;
  45885. *(_DWORD *)((char *)pResult + 930) = ODBCInterface::GetUInt(this->mInterface, 18, &ErrorCode);
  45886. *(_DWORD *)((char *)pResult + 934) = ODBCInterface::GetUInt(this->mInterface, 19, &ErrorCode);
  45887. *(_DWORD *)((char *)pResult + 954) = ODBCInterface::GetUInt(this->mInterface, 20, &ErrorCode);
  45888. *(_DWORD *)((char *)pResult + 962) = ODBCInterface::GetUInt(this->mInterface, 21, &ErrorCode);
  45889. *(_DWORD *)((char *)pResult + 970) = ODBCInterface::GetUInt(this->mInterface, 22, &ErrorCode);
  45890. *(_DWORD *)((char *)pResult + 974) = ODBCInterface::GetUInt(this->mInterface, 23, &ErrorCode);
  45891. *(_DWORD *)((char *)pResult + 978) = ODBCInterface::GetUInt(this->mInterface, 24, &ErrorCode);
  45892. *(_DWORD *)((char *)pResult + 998) = ODBCInterface::GetUInt(this->mInterface, 25, &ErrorCode);
  45893. *(_DWORD *)((char *)pResult + 1002) = ODBCInterface::GetUInt(this->mInterface, 26, &ErrorCode);
  45894. *(_DWORD *)((char *)pResult + 1006) = ODBCInterface::GetUInt(this->mInterface, 27, &ErrorCode);
  45895. *(_DWORD *)((char *)pResult + 1010) = ODBCInterface::GetUInt(this->mInterface, 28, &ErrorCode);
  45896. *(_DWORD *)((char *)pResult + 1014) = ODBCInterface::GetUInt(this->mInterface, 29, &ErrorCode);
  45897. *(_DWORD *)((char *)pResult + 1018) = ODBCInterface::GetUInt(this->mInterface, 30, &ErrorCode);
  45898. ODBCInterface::GetField(this->mInterface, 31, (CHAR *)pResult + 39632, 640, &ErrorCode);
  45899. v12 = &ShopInfo;
  45900. v7 = 1;
  45901. do
  45902. {
  45903. memset(v12, 0, 0xCu);
  45904. --v7;
  45905. v12->m_ShopGuid[0].m_PoolPos = -1;
  45906. v12->m_ShopGuid[0].m_Server = -1;
  45907. v12->m_ShopGuid[0].m_World = -1;
  45908. v12->m_ShopGuid[0].m_Scene = -1;
  45909. v12 = (_HUMAN_DB_LOAD_0::_PSHOP_INFO *)((char *)v12 + 12);
  45910. }
  45911. while ( v7 != -1 );
  45912. v13 = ShopInfo.m_FavoriteList;
  45913. v8 = 9;
  45914. do
  45915. {
  45916. memset(v13, 0, sizeof(_PLAYERSHOP_GUID));
  45917. --v8;
  45918. v13->m_PoolPos = -1;
  45919. v13->m_Server = -1;
  45920. v13->m_World = -1;
  45921. v13->m_Scene = -1;
  45922. ++v13;
  45923. }
  45924. while ( v8 != -1 );
  45925. memset(&ShopInfo, 0, 0x90u);
  45926. ODBCInterface::GetField(this->mInterface, 32, (CHAR *)&ShopInfo, 144, &ErrorCode);
  45927. qmemcpy((char *)pResult + 1465, &ShopInfo, 0x18u);
  45928. memcpy((char *)pResult + 1489, ShopInfo.m_FavoriteList, 0x78u);
  45929. ODBCInterface::GetField(this->mInterface, 33, (CHAR *)pResult + 990, 8, &ErrorCode);
  45930. *((_WORD *)pResult + 452) = ODBCInterface::GetUInt(this->mInterface, 34, &ErrorCode);
  45931. *((_WORD *)pResult + 454) = ODBCInterface::GetUInt(this->mInterface, 35, &ErrorCode);
  45932. *(_DWORD *)pResult = ODBCInterface::GetUInt(this->mInterface, 36, &ErrorCode);
  45933. *((_DWORD *)pResult + 213) = ODBCInterface::GetInt(this->mInterface, 37, &ErrorCode);
  45934. *((_DWORD *)pResult + 208) = ODBCInterface::GetInt(this->mInterface, 38, &ErrorCode);
  45935. *((_DWORD *)pResult + 209) = ODBCInterface::GetInt(this->mInterface, 39, &ErrorCode);
  45936. *((_DWORD *)pResult + 210) = ODBCInterface::GetInt(this->mInterface, 40, &ErrorCode);
  45937. *((_DWORD *)pResult + 212) = ODBCInterface::GetInt(this->mInterface, 41, &ErrorCode);
  45938. *(_DWORD *)((char *)pResult + 889) = ODBCInterface::GetUInt(this->mInterface, 42, &ErrorCode);
  45939. *(_DWORD *)((char *)pResult + 938) = ODBCInterface::GetUInt(this->mInterface, 43, &ErrorCode);
  45940. *(_DWORD *)((char *)pResult + 12286) = ODBCInterface::GetUInt(this->mInterface, 44, &ErrorCode);
  45941. *((_BYTE *)pResult + 12285) = ODBCInterface::GetUInt(this->mInterface, 45, &ErrorCode);
  45942. *((_WORD *)pResult + 451) = ODBCInterface::GetUInt(this->mInterface, 46, &ErrorCode);
  45943. *(float *)((char *)pResult + 918) = (long double)ODBCInterface::GetUInt(this->mInterface, 47, &ErrorCode)
  45944. * 0.0099999998;
  45945. *(float *)((char *)pResult + 922) = (long double)ODBCInterface::GetUInt(this->mInterface, 48, &ErrorCode)
  45946. * 0.0099999998;
  45947. *(_DWORD *)((char *)pResult + 982) = ODBCInterface::GetUInt(this->mInterface, 49, &ErrorCode);
  45948. *(_DWORD *)((char *)pResult + 942) = ODBCInterface::GetInt(this->mInterface, 50, &ErrorCode);
  45949. *(_DWORD *)((char *)pResult + 946) = ODBCInterface::GetInt(this->mInterface, 51, &ErrorCode);
  45950. *(_DWORD *)((char *)pResult + 950) = ODBCInterface::GetInt(this->mInterface, 52, &ErrorCode);
  45951. *((_DWORD *)pResult + 216) = ODBCInterface::GetInt(this->mInterface, 53, &ErrorCode);
  45952. *(_DWORD *)((char *)pResult + 986) = ODBCInterface::GetInt(this->mInterface, 54, &ErrorCode);
  45953. *(_DWORD *)((char *)pResult + 926) = ODBCInterface::GetUInt(this->mInterface, 55, &ErrorCode);
  45954. *(_DWORD *)((char *)pResult + 1682) = ODBCInterface::GetInt(this->mInterface, 56, &ErrorCode);
  45955. ODBCInterface::GetField(this->mInterface, 57, (CHAR *)pResult + 1662, 20, &ErrorCode);
  45956. this->m_FullDataCRC = ODBCInterface::GetUInt(this->mInterface, 58, &ErrorCode);
  45957. *(_DWORD *)((char *)pResult + 1626) = ODBCInterface::GetUInt(this->mInterface, 59, &ErrorCode);
  45958. *(_DWORD *)((char *)pResult + 1618) = ODBCInterface::GetUInt(this->mInterface, 60, &ErrorCode);
  45959. *(_DWORD *)((char *)pResult + 1630) = ODBCInterface::GetUInt(this->mInterface, 61, &ErrorCode);
  45960. nIsOldItem = ODBCInterface::GetInt(this->mInterface, 62, &ErrorCode);
  45961. *((_DWORD *)pResult + 217) = ODBCInterface::GetUInt(this->mInterface, 63, &ErrorCode);
  45962. *(_DWORD *)((char *)pResult + 1634) = ODBCInterface::GetUInt(this->mInterface, 64, &ErrorCode);
  45963. ODBCInterface::Clear(this->mInterface);
  45964. dbVersion = *(_DWORD *)((char *)pResult + 954);
  45965. DBItemList::DBItemList(&ItemListObject, this->mInterface);
  45966. DBItemList::SetCharGuid((int)&ItemListObject, this->m_CharGuid);
  45967. DBItemList::SetDBVersion((int)&ItemListObject, dbVersion);
  45968. DBItemList::SetIsOld((int)&ItemListObject, nIsOldItem > 0);
  45969. if ( !DBItemList::Load(&ItemListObject) )
  45970. return 0;
  45971. DBItemList::ParseResult(&ItemListObject, pResult);
  45972. DBSkillList::DBSkillList(&SkillListObject, this->mInterface);
  45973. DBSkillList::SetCharGuid((int)&SkillListObject, this->m_CharGuid);
  45974. DBSkillList::SetDBVersion((int)&SkillListObject, dbVersion);
  45975. if ( !DBSkillList::Load(&SkillListObject) )
  45976. return 0;
  45977. DBSkillList::ParseResult(&SkillListObject, pResult);
  45978. DBXinFaList::DBXinFaList(&XinFaListObject, this->mInterface);
  45979. DBXinFaList::SetCharGuid((int)&XinFaListObject, this->m_CharGuid);
  45980. DBXinFaList::SetDBVersion((int)&XinFaListObject, dbVersion);
  45981. if ( !DBXinFaList::Load(&XinFaListObject) )
  45982. return 0;
  45983. DBXinFaList::ParseResult(&XinFaListObject, pResult);
  45984. DBAbilityList::DBAbilityList(&AbilityListObject, this->mInterface);
  45985. DBAbilityList::SetCharGuid((int)&AbilityListObject, this->m_CharGuid);
  45986. DBAbilityList::SetDBVersion((int)&AbilityListObject, dbVersion);
  45987. if ( !DBAbilityList::Load(&AbilityListObject) )
  45988. return 0;
  45989. DBAbilityList::ParseResult(&AbilityListObject, pResult);
  45990. DBTaskList::DBTaskList(&TaskListObject, this->mInterface);
  45991. DBTaskList::SetCharGuid((int)&TaskListObject, this->m_CharGuid);
  45992. DBTaskList::SetDBVersion((int)&TaskListObject, dbVersion);
  45993. if ( !DBTaskList::Load(&TaskListObject) )
  45994. return 0;
  45995. DBTaskList::ParseResult(&TaskListObject, pResult);
  45996. DBRelationList::DBRelationList(&RelationListObject, this->mInterface);
  45997. DBRelationList::SetCharGuid((int)&RelationListObject, this->m_CharGuid);
  45998. DBRelationList::SetDBVersion((int)&RelationListObject, dbVersion);
  45999. if ( !DBRelationList::Load(&RelationListObject) )
  46000. return 0;
  46001. DBRelationList::ParseResult(&RelationListObject, pResult);
  46002. DBImpactList::DBImpactList(&ImpactListObject, this->mInterface);
  46003. DBImpactList::SetCharGuid((int)&ImpactListObject, this->m_CharGuid);
  46004. DBImpactList::SetDBVersion((int)&ImpactListObject, dbVersion);
  46005. if ( !DBImpactList::Load(&ImpactListObject) )
  46006. return 0;
  46007. DBImpactList::ParseResult(&ImpactListObject, pResult);
  46008. DBPetList::DBPetList(&PetListObject, this->mInterface);
  46009. DBPetList::SetCharGuid((int)&PetListObject, this->m_CharGuid);
  46010. DBPetList::SetDBVersion((int)&PetListObject, dbVersion);
  46011. if ( !DBPetList::Load(&PetListObject) )
  46012. return 0;
  46013. DBPetList::ParseResult(&PetListObject, pResult);
  46014. DBPrivateInfo::DBPrivateInfo(&PrivateInfoObject, this->mInterface);
  46015. DBPrivateInfo::SetCharGuid((int)&PrivateInfoObject, this->m_CharGuid);
  46016. DBPrivateInfo::SetDBVersion((int)&PrivateInfoObject, dbVersion);
  46017. if ( !DBPrivateInfo::Load(&PrivateInfoObject) )
  46018. return 0;
  46019. DBPrivateInfo::ParseResult(&PrivateInfoObject, pResult);
  46020. DBTitleInfo::DBTitleInfo(&TitleInfoObject, this->mInterface);
  46021. DBTitleInfo::SetCharGuid((int)&TitleInfoObject, this->m_CharGuid);
  46022. DBTitleInfo::SetDBVersion((int)&TitleInfoObject, dbVersion);
  46023. if ( !DBTitleInfo::Load(&TitleInfoObject) )
  46024. return 0;
  46025. DBTitleInfo::ParseResult(&TitleInfoObject, pResult);
  46026. DBCoolDownInfo::DBCoolDownInfo(&CoolDownInfoObject, this->mInterface);
  46027. DBCoolDownInfo::SetCharGuid((int)&CoolDownInfoObject, this->m_CharGuid);
  46028. DBCoolDownInfo::SetDBVersion((int)&CoolDownInfoObject, dbVersion);
  46029. if ( !DBCoolDownInfo::Load(&CoolDownInfoObject) )
  46030. return 0;
  46031. DBCoolDownInfo::ParseResult(&CoolDownInfoObject, pResult);
  46032. DBPvPInfo::DBPvPInfo(&PvPInfoObject, this->mInterface);
  46033. DBPvPInfo::SetCharGuid((int)&PvPInfoObject, this->m_CharGuid);
  46034. DBPvPInfo::SetDBVersion((int)&PvPInfoObject, dbVersion);
  46035. if ( !DBPvPInfo::Load(&PvPInfoObject) )
  46036. return 0;
  46037. DBPvPInfo::ParseResult(&PvPInfoObject, pResult);
  46038. DBFatigueInfo::DBFatigueInfo(&FatigueInfoObject, this->mInterface);
  46039. DBFatigueInfo::SetCharGuid((int)&FatigueInfoObject, this->m_CharGuid);
  46040. DBFatigueInfo::SetDBVersion((int)&FatigueInfoObject, dbVersion);
  46041. if ( !DBFatigueInfo::Load(&FatigueInfoObject) )
  46042. return 0;
  46043. DBFatigueInfo::ParseResult(&FatigueInfoObject, pResult);
  46044. DBCharExtraInfo::DBCharExtraInfo(&ExtraObject, this->mInterface);
  46045. DBCharExtraInfo::SetCharGuid((int)&ExtraObject, this->m_CharGuid);
  46046. DBCharExtraInfo::SetDBVersion((int)&ExtraObject, dbVersion);
  46047. if ( !DBCharExtraInfo::Load(&ExtraObject) )
  46048. return 0;
  46049. DBCharExtraInfo::ParseResult(&ExtraObject, pResult);
  46050. if ( ++i > 0 )
  46051. break;
  46052. }
  46053. }
  46054. v10 = this->mInterface;
  46055. this->m_DebugStep = 305;
  46056. if ( !v10 )
  46057. __assert__(
  46058. "../../Common/DBSystem/DataBase/DBCharFullData.cpp",
  46059. 0x2B1u,
  46060. "virtual int DBCharFullData::ParseResult(void*)",
  46061. "mInterface");
  46062. ODBCInterface::Clear(this->mInterface);
  46063. return 1;
  46064. }
  46065.  
  46066. //----- (0807E164) --------------------------------------------------------
  46067. void __cdecl _tcf_0_98(void *a1)
  46068. {
  46069. std::ios_base::Init::~Init(&std::__ioinit);
  46070. }
  46071.  
  46072. //----- (0807E174) --------------------------------------------------------
  46073. void `global constructor keyed to'DBCharFullData::DBCharFullData()
  46074. {
  46075. std::ios_base::Init::Init(&std::__ioinit);
  46076. __cxa_atexit(_tcf_0_98, 0, &_dso_handle);
  46077. }
  46078. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  46079.  
  46080. //----- (0807E1A0) --------------------------------------------------------
  46081. INT __cdecl Float2Int<float>(float TValue)
  46082. {
  46083. INT result; // eax
  46084.  
  46085. if ( TValue - (long double)(signed int)TValue >= 0.5 )
  46086. result = (signed int)TValue + 1;
  46087. else
  46088. result = (signed int)TValue;
  46089. return result;
  46090. }
  46091.  
  46092. //----- (0807E1E4) --------------------------------------------------------
  46093. void __cdecl DBCharList::CleanUp(_DWORD *a2)
  46094. {
  46095. a2[3] = 1;
  46096. a2[2] = 0;
  46097. a2[1] = 0;
  46098. a2[19] = 0;
  46099. }
  46100.  
  46101. //----- (0807E208) --------------------------------------------------------
  46102. void __cdecl DBCharList::DBCharList(DBCharList *const this, ODBCInterface *pInterface)
  46103. {
  46104. ODBCBase::ODBCBase(this);
  46105. this->_vptr_ODBCBase = (int (**)(...))&off_80D37A8;
  46106. DBCharList::CleanUp(this);
  46107. if ( !pInterface )
  46108. __assert__(
  46109. "../../Common/DBSystem/DataBase/DBCharList.cpp",
  46110. 0x10u,
  46111. "DBCharList::DBCharList(ODBCInterface*)",
  46112. "pInterface");
  46113. this->mInterface = pInterface;
  46114. }
  46115. // 80D37A8: using guessed type _DWORD (__cdecl *off_80D37A8)(DBCharList *this);
  46116.  
  46117. //----- (0807E294) --------------------------------------------------------
  46118. void __cdecl DBCharList::DBCharList(DBCharList *const this, ODBCInterface *pInterface)
  46119. {
  46120. ODBCBase::ODBCBase(this);
  46121. this->_vptr_ODBCBase = (int (**)(...))&off_80D37A8;
  46122. DBCharList::CleanUp(this);
  46123. if ( !pInterface )
  46124. __assert__(
  46125. "../../Common/DBSystem/DataBase/DBCharList.cpp",
  46126. 0x10u,
  46127. "DBCharList::DBCharList(ODBCInterface*)",
  46128. "pInterface");
  46129. this->mInterface = pInterface;
  46130. }
  46131. // 80D37A8: using guessed type _DWORD (__cdecl *off_80D37A8)(DBCharList *this);
  46132.  
  46133. //----- (0807E320) --------------------------------------------------------
  46134. int __cdecl DBCharList::Load(DBCharList *const this)
  46135. {
  46136. DB_QUERY *v1; // eax
  46137. DB_QUERY *v2; // ebx
  46138. int v3; // edx
  46139. BOOL v5; // eax
  46140.  
  46141. v1 = ODBCBase::GetInternalQuery((int)this);
  46142. v2 = v1;
  46143. if ( !v1 )
  46144. __assert__("../../Common/DBSystem/DataBase/DBCharList.cpp", 0x28u, "virtual int DBCharList::Load()", "FALSE");
  46145. memset(v1, 0, 0x1000u);
  46146. v3 = 0;
  46147. if ( this->szAccount[0] )
  46148. {
  46149. v5 = StrSafeCheck(this->szAccount, 0x33u);
  46150. v3 = 0;
  46151. if ( v5 )
  46152. {
  46153. DB_QUERY::Parse(v2, LoadCharList, "t_char", this->szAccount);
  46154. v3 = ODBCBase::Load(&this->0);
  46155. }
  46156. }
  46157. return v3;
  46158. }
  46159.  
  46160. //----- (0807E404) --------------------------------------------------------
  46161. int __cdecl DBCharList::Save(DBCharList *const this)
  46162. {
  46163. return 1;
  46164. }
  46165.  
  46166. //----- (0807E410) --------------------------------------------------------
  46167. int __cdecl DBCharList::ParseResult(DBCharList *const this, void *pResult)
  46168. {
  46169. int result; // eax
  46170. signed int v3; // eax
  46171. _DWORD *v4; // esi
  46172. UINT v5; // eax
  46173. INT v6; // ST30_4
  46174. signed int v7; // esi
  46175. int v8; // [esp+4h] [ebp-154h]
  46176. GUID_t guid; // [esp+8h] [ebp-150h]
  46177. UINT v10; // [esp+Ch] [ebp-14Ch]
  46178. signed int v11; // [esp+14h] [ebp-144h]
  46179. INT NeedPos; // [esp+18h] [ebp-140h]
  46180. INT ErrorCode; // [esp+1Ch] [ebp-13Ch]
  46181. DBCharVisualGem CharVisualGemObject; // [esp+20h] [ebp-138h]
  46182. DBEquipBaseList EquipListObject; // [esp+40h] [ebp-118h]
  46183. DBDeleteCharOp DeleteCharOp; // [esp+60h] [ebp-F8h]
  46184. INT dbVersion[5]; // [esp+C0h] [ebp-98h]
  46185. INT IsOldItem[5]; // [esp+E0h] [ebp-78h]
  46186. INT NeedTime[5]; // [esp+100h] [ebp-58h]
  46187. GUID_t NeedClear[5]; // [esp+120h] [ebp-38h]
  46188.  
  46189. result = 0;
  46190. if ( this->mOPType == DB_LOAD )
  46191. {
  46192. if ( !pResult )
  46193. __assert__(
  46194. "../../Common/DBSystem/DataBase/DBCharList.cpp",
  46195. 0x4Cu,
  46196. "virtual int DBCharList::ParseResult(void*)",
  46197. "pCharBaseInfo");
  46198. if ( this->mResultCount > 5 )
  46199. __assert__(
  46200. "../../Common/DBSystem/DataBase/DBCharList.cpp",
  46201. 0x61u,
  46202. "virtual int DBCharList::ParseResult(void*)",
  46203. "mResultCount<=DB_CHAR_NUMBER");
  46204. if ( !this->mInterface )
  46205. __assert__(
  46206. "../../Common/DBSystem/DataBase/DBCharList.cpp",
  46207. 0x62u,
  46208. "virtual int DBCharList::ParseResult(void*)",
  46209. "mInterface");
  46210. v3 = 0;
  46211. do
  46212. {
  46213. NeedClear[v3] = -1;
  46214. NeedTime[v3] = 0;
  46215. IsOldItem[v3] = 0;
  46216. dbVersion[v3++] = 0;
  46217. }
  46218. while ( v3 <= 4 );
  46219. NeedPos = 0;
  46220. v11 = 0;
  46221. v8 = 0;
  46222. v4 = pResult;
  46223. do
  46224. {
  46225. if ( !ODBCInterface::Fetch(this->mInterface) )
  46226. break;
  46227. v5 = ODBCInterface::GetUInt(this->mInterface, 1, &ErrorCode);
  46228. *v4 = v5;
  46229. this->m_GuidList[v11] = v5;
  46230. v4[1] = ODBCInterface::GetUInt(this->mInterface, 2, &ErrorCode);
  46231. ODBCInterface::GetString(this->mInterface, 3, (CHAR *)pResult + v8 + 8, 30, &ErrorCode);
  46232. v4[10] = ODBCInterface::GetInt(this->mInterface, 4, &ErrorCode);
  46233. v4[11] = ODBCInterface::GetUInt(this->mInterface, 5, &ErrorCode);
  46234. *((_BYTE *)v4 + 48) = ODBCInterface::GetInt(this->mInterface, 6, &ErrorCode);
  46235. *((_BYTE *)v4 + 49) = ODBCInterface::GetInt(this->mInterface, 7, &ErrorCode);
  46236. *((_BYTE *)v4 + 50) = ODBCInterface::GetInt(this->mInterface, 8, &ErrorCode);
  46237. *((_WORD *)v4 + 26) = ODBCInterface::GetInt(this->mInterface, 9, &ErrorCode);
  46238. v4[14] = ODBCInterface::GetInt(this->mInterface, 10, &ErrorCode);
  46239. v4[15] = ODBCInterface::GetInt(this->mInterface, 11, &ErrorCode);
  46240. v4[16] = ODBCInterface::GetInt(this->mInterface, 12, &ErrorCode) == 0;
  46241. v4[17] = ODBCInterface::GetInt(this->mInterface, 13, &ErrorCode);
  46242. dbVersion[v11] = ODBCInterface::GetInt(this->mInterface, 15, &ErrorCode);
  46243. IsOldItem[v11] = ODBCInterface::GetInt(this->mInterface, 16, &ErrorCode);
  46244. if ( ODBCInterface::GetInt(this->mInterface, 14, &ErrorCode) <= 0 )
  46245. {
  46246. v4[72] = 0;
  46247. }
  46248. else
  46249. {
  46250. v6 = ODBCInterface::GetInt(this->mInterface, 14, &ErrorCode);
  46251. v4[72] = v6 - TimeManager::GetDayTime(g_pTimeManager);
  46252. }
  46253. if ( v4[72] < 0 )
  46254. {
  46255. NeedClear[NeedPos] = *v4;
  46256. NeedTime[NeedPos++] = ODBCInterface::GetInt(this->mInterface, 14, &ErrorCode);
  46257. v4[72] = 0;
  46258. }
  46259. if ( *(_DWORD *)((char *)pResult + v8 + 64) == 1 )
  46260. CharConfig::GetCharChooseScene((DB_CHOOSE_SCENE *)((char *)pResult + v8 + 264), 0);
  46261. ++v11;
  46262. ++this->m_CharNumber;
  46263. v8 += 292;
  46264. v4 += 73;
  46265. }
  46266. while ( v11 <= 4 );
  46267. ODBCInterface::Clear(this->mInterface);
  46268. v7 = 0;
  46269. do
  46270. {
  46271. ODBCInterface::Clear(this->mInterface);
  46272. if ( NeedClear[v7] == -1 )
  46273. break;
  46274. DBDeleteCharOp::DBDeleteCharOp(&DeleteCharOp, this->mInterface);
  46275. DBDeleteCharOp::SetCharGuid((int)&DeleteCharOp, NeedClear[v7]);
  46276. DBDeleteCharOp::SetNeedTime((int)&DeleteCharOp, NeedTime[v7]);
  46277. if ( !DBDeleteCharOp::Load(&DeleteCharOp) )
  46278. return 0;
  46279. DBDeleteCharOp::ParseResult(&DeleteCharOp, pResult);
  46280. ++v7;
  46281. }
  46282. while ( v7 <= 4 );
  46283. ODBCInterface::Clear(this->mInterface);
  46284. v10 = 0;
  46285. if ( this->m_CharNumber )
  46286. {
  46287. guid = 0;
  46288. do
  46289. {
  46290. if ( IsOldItem[v10] <= 0 )
  46291. {
  46292. DBCharVisualGem::DBCharVisualGem(&CharVisualGemObject, this->mInterface);
  46293. DBCharVisualGem::SetCharGuid((int)&CharVisualGemObject, *(_DWORD *)((char *)pResult + guid));
  46294. DBCharVisualGem::SetDBVersion((int)&CharVisualGemObject, dbVersion[v10]);
  46295. if ( !DBCharVisualGem::Load(&CharVisualGemObject) )
  46296. return 0;
  46297. DBCharVisualGem::ParseResult(&CharVisualGemObject, (char *)pResult + guid + 72);
  46298. }
  46299. else
  46300. {
  46301. DBEquipBaseList::DBEquipBaseList(&EquipListObject, this->mInterface);
  46302. DBEquipBaseList::SetCharGuid((int)&EquipListObject, *(_DWORD *)((char *)pResult + guid));
  46303. if ( !DBEquipBaseList::Load(&EquipListObject) )
  46304. return 0;
  46305. DBEquipBaseList::ParseResult(&EquipListObject, (char *)pResult + guid + 72);
  46306. }
  46307. ++v10;
  46308. guid += 292;
  46309. }
  46310. while ( this->m_CharNumber > v10 );
  46311. }
  46312. if ( !this->mInterface )
  46313. __assert__(
  46314. "../../Common/DBSystem/DataBase/DBCharList.cpp",
  46315. 0xD3u,
  46316. "virtual int DBCharList::ParseResult(void*)",
  46317. "mInterface");
  46318. ODBCInterface::Clear(this->mInterface);
  46319. result = 1;
  46320. }
  46321. return result;
  46322. }
  46323.  
  46324. //----- (0807E9CC) --------------------------------------------------------
  46325. const CHAR *__cdecl DBCharList::GetAccount(const DBCharList *const this)
  46326. {
  46327. return this->szAccount;
  46328. }
  46329.  
  46330. //----- (0807E9D8) --------------------------------------------------------
  46331. void __cdecl DBCharList::SetAccount(DBCharList *const this, const CHAR *pAccount)
  46332. {
  46333. if ( !pAccount )
  46334. __assert__(
  46335. "../../Common/DBSystem/DataBase/DBCharList.cpp",
  46336. 0xE2u,
  46337. "void DBCharList::SetAccount(const CHAR*)",
  46338. "pAccount");
  46339. strncpy(this->szAccount, pAccount, 0x32u);
  46340. this->szAccount[50] = 0;
  46341. }
  46342.  
  46343. //----- (0807EA20) --------------------------------------------------------
  46344. UINT __cdecl DBCharList::GetCharNumber(int a2)
  46345. {
  46346. return *(_DWORD *)(a2 + 76);
  46347. }
  46348.  
  46349. //----- (0807EA2C) --------------------------------------------------------
  46350. GUID_t __cdecl DBCharList::GetGuid(DBCharList *const this, UINT Index)
  46351. {
  46352. if ( this->m_CharNumber <= Index )
  46353. __assert__(
  46354. "../../Common/DBSystem/DataBase/DBCharList.cpp",
  46355. 0xEFu,
  46356. "GUID_t DBCharList::GetGuid(UINT)",
  46357. "Index<m_CharNumber");
  46358. return this->m_GuidList[Index];
  46359. }
  46360.  
  46361. //----- (0807EA70) --------------------------------------------------------
  46362. void __cdecl _tcf_0_99(void *a1)
  46363. {
  46364. std::ios_base::Init::~Init(&std::__ioinit);
  46365. }
  46366.  
  46367. //----- (0807EA80) --------------------------------------------------------
  46368. void `global constructor keyed to'DBCharList::DBCharList()
  46369. {
  46370. std::ios_base::Init::Init(&std::__ioinit);
  46371. __cxa_atexit(_tcf_0_99, 0, &_dso_handle);
  46372. }
  46373. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  46374.  
  46375. //----- (0807EAAC) --------------------------------------------------------
  46376. void __cdecl DBCharVisualGem::DBCharVisualGem(DBCharVisualGem *const this, ODBCInterface *pInterface)
  46377. {
  46378. ODBCBase::ODBCBase(this);
  46379. this->_vptr_ODBCBase = (int (**)(...))&off_80D3958;
  46380. this->mDBName = 1;
  46381. this->mResult = 0;
  46382. this->mResultCount = 0;
  46383. this->m_CharGuid = -1;
  46384. this->m_DBVersion = 0;
  46385. if ( !pInterface )
  46386. __assert__(
  46387. "../../Common/DBSystem/DataBase/DBCharVisualGem.cpp",
  46388. 0xEu,
  46389. "DBCharVisualGem::DBCharVisualGem(ODBCInterface*)",
  46390. "pInterface");
  46391. this->mInterface = pInterface;
  46392. }
  46393. // 80D3958: using guessed type _DWORD (__cdecl *off_80D3958)(DBCharVisualGem *this);
  46394.  
  46395. //----- (0807EB18) --------------------------------------------------------
  46396. void __cdecl DBCharVisualGem::DBCharVisualGem(DBCharVisualGem *const this, ODBCInterface *pInterface)
  46397. {
  46398. ODBCBase::ODBCBase(this);
  46399. this->_vptr_ODBCBase = (int (**)(...))&off_80D3958;
  46400. this->mDBName = 1;
  46401. this->mResult = 0;
  46402. this->mResultCount = 0;
  46403. this->m_CharGuid = -1;
  46404. this->m_DBVersion = 0;
  46405. if ( !pInterface )
  46406. __assert__(
  46407. "../../Common/DBSystem/DataBase/DBCharVisualGem.cpp",
  46408. 0xEu,
  46409. "DBCharVisualGem::DBCharVisualGem(ODBCInterface*)",
  46410. "pInterface");
  46411. this->mInterface = pInterface;
  46412. }
  46413. // 80D3958: using guessed type _DWORD (__cdecl *off_80D3958)(DBCharVisualGem *this);
  46414.  
  46415. //----- (0807EB84) --------------------------------------------------------
  46416. #error "807EC0C: positive sp value has been found (funcsize=41)"
  46417.  
  46418. //----- (0807EC44) --------------------------------------------------------
  46419. int __cdecl DBCharVisualGem::Save(DBCharVisualGem *const this, void *pSource)
  46420. {
  46421. signed int v2; // eax
  46422. signed int v3; // edi
  46423. unsigned int v4; // esi
  46424. _ITEM *v5; // edx
  46425. DB_QUERY *v6; // eax
  46426. DB_QUERY *v7; // ebx
  46427. char *v9; // [esp+0h] [ebp-8E8h]
  46428. char *v10; // [esp+4h] [ebp-8E4h]
  46429. char *v11; // [esp+8h] [ebp-8E0h]
  46430. DB_CHAR_EQUIP_LIST eqlist; // [esp+10h] [ebp-8D8h]
  46431. CHAR VisualGemInfo[2048]; // [esp+D0h] [ebp-818h]
  46432.  
  46433. if ( !pSource )
  46434. __assert__(
  46435. "../../Common/DBSystem/DataBase/DBCharVisualGem.cpp",
  46436. 0x32u,
  46437. "virtual int DBCharVisualGem::Save(void*)",
  46438. "pCharFullData");
  46439. memset(VisualGemInfo, 0, 0x800u);
  46440. v2 = 0;
  46441. do
  46442. {
  46443. eqlist.m_Equip[v2] = 0;
  46444. eqlist.m_EquipVisual[v2] = 0;
  46445. eqlist.m_EquipGemID[v2++] = -1;
  46446. }
  46447. while ( v2 <= 18 );
  46448. v3 = 0;
  46449. v11 = (char *)pSource + 17600;
  46450. v10 = (char *)pSource + 17600;
  46451. v9 = (char *)pSource + 17600;
  46452. do
  46453. {
  46454. v4 = v3 + 100;
  46455. if ( (unsigned int)(v3 + 100) > 0xB2 )
  46456. __assert__("../../Common/DB_Struct.h", 0x539u, "_ITEM* FULLUSERDATA::GetItem(UINT)", "uDBPos<=DB_BANK_POS_END");
  46457. if ( v4 <= 0x76 )
  46458. {
  46459. if ( v4 <= 0x63 )
  46460. {
  46461. v5 = 0;
  46462. if ( (v4 & 0x80000000) == 0 )
  46463. v5 = (_ITEM *)(v11 + 12290);
  46464. }
  46465. else
  46466. {
  46467. v5 = (_ITEM *)(v10 + 12310);
  46468. }
  46469. }
  46470. else
  46471. {
  46472. v5 = (_ITEM *)(v9 - 19223);
  46473. }
  46474. if ( v5->m_ItemGUID.m_World || v5->m_ItemGUID.m_Serial || v5->m_ItemGUID.m_Server )
  46475. {
  46476. eqlist.m_Equip[v3] = v5->m_ItemIndex;
  46477. eqlist.m_EquipVisual[v3] = v5->_anon_1.m_Equip.m_Visual;
  46478. eqlist.m_EquipGemID[v3] = _ITEM::GetEquipmentMaxLevelGemID(v5);
  46479. }
  46480. ++v3;
  46481. v9 += 176;
  46482. v10 += 176;
  46483. v11 += 176;
  46484. }
  46485. while ( v3 <= 18 );
  46486. Binary2String((const CHAR *)&eqlist, 0xC0u, VisualGemInfo);
  46487. v6 = ODBCBase::GetInternalQuery((int)this);
  46488. v7 = v6;
  46489. if ( !v6 )
  46490. __assert__(
  46491. "../../Common/DBSystem/DataBase/DBCharVisualGem.cpp",
  46492. 0x4Eu,
  46493. "virtual int DBCharVisualGem::Save(void*)",
  46494. "FALSE");
  46495. memset(v6, 0, 0x1000u);
  46496. DB_QUERY::Parse(v7, UpdateCharVisualGem, "t_char", VisualGemInfo, this->m_CharGuid, this->m_DBVersion);
  46497. return ODBCBase::Save(&this->0, pSource) != 0;
  46498. }
  46499.  
  46500. //----- (0807EE9C) --------------------------------------------------------
  46501. int __cdecl DBCharVisualGem::Delete(DBCharVisualGem *const this)
  46502. {
  46503. return 1;
  46504. }
  46505.  
  46506. //----- (0807EEA8) --------------------------------------------------------
  46507. int __cdecl DBCharVisualGem::ParseResult(DBCharVisualGem *const this, void *pResult)
  46508. {
  46509. INT ErrorCode; // [esp+8h] [ebp-10h]
  46510.  
  46511. if ( this->mOPType == DB_LOAD )
  46512. {
  46513. if ( !pResult )
  46514. __assert__(
  46515. "../../Common/DBSystem/DataBase/DBCharVisualGem.cpp",
  46516. 0x7Au,
  46517. "virtual int DBCharVisualGem::ParseResult(void*)",
  46518. "pCharEquipList");
  46519. if ( !this->mInterface )
  46520. __assert__(
  46521. "../../Common/DBSystem/DataBase/DBCharVisualGem.cpp",
  46522. 0x82u,
  46523. "virtual int DBCharVisualGem::ParseResult(void*)",
  46524. "mInterface");
  46525. if ( ODBCInterface::Fetch(this->mInterface) )
  46526. {
  46527. ODBCInterface::GetUInt(this->mInterface, 1, &ErrorCode);
  46528. ODBCInterface::GetField(this->mInterface, 2, (CHAR *)pResult, 192, &ErrorCode);
  46529. }
  46530. ODBCInterface::Clear(this->mInterface);
  46531. }
  46532. if ( !this->mInterface )
  46533. __assert__(
  46534. "../../Common/DBSystem/DataBase/DBCharVisualGem.cpp",
  46535. 0xA1u,
  46536. "virtual int DBCharVisualGem::ParseResult(void*)",
  46537. "mInterface");
  46538. ODBCInterface::Clear(this->mInterface);
  46539. return 1;
  46540. }
  46541.  
  46542. //----- (0807EFDC) --------------------------------------------------------
  46543. GUID_t __cdecl DBCharVisualGem::GetCharGuid(int a2)
  46544. {
  46545. return *(_DWORD *)(a2 + 24);
  46546. }
  46547.  
  46548. //----- (0807EFE8) --------------------------------------------------------
  46549. void __cdecl DBCharVisualGem::SetCharGuid(int a3, int a4)
  46550. {
  46551. *(_DWORD *)(a3 + 24) = a4;
  46552. }
  46553.  
  46554. //----- (0807EFF8) --------------------------------------------------------
  46555. UINT __cdecl DBCharVisualGem::GetDBVersion(int a2)
  46556. {
  46557. return *(_DWORD *)(a2 + 28);
  46558. }
  46559.  
  46560. //----- (0807F004) --------------------------------------------------------
  46561. void __cdecl DBCharVisualGem::SetDBVersion(int a3, int a4)
  46562. {
  46563. *(_DWORD *)(a3 + 28) = a4;
  46564. }
  46565.  
  46566. //----- (0807F014) --------------------------------------------------------
  46567. void __cdecl _tcf_0_100(void *a1)
  46568. {
  46569. std::ios_base::Init::~Init(&std::__ioinit);
  46570. }
  46571.  
  46572. //----- (0807F024) --------------------------------------------------------
  46573. void `global constructor keyed to'DBCharVisualGem::DBCharVisualGem()
  46574. {
  46575. std::ios_base::Init::Init(&std::__ioinit);
  46576. __cxa_atexit(_tcf_0_100, 0, &_dso_handle);
  46577. }
  46578. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  46579.  
  46580. //----- (0807F050) --------------------------------------------------------
  46581. void __cdecl DBCheckCharName::DBCheckCharName(DBCheckCharName *const this, ODBCInterface *pInterface)
  46582. {
  46583. ODBCBase::ODBCBase(this);
  46584. this->_vptr_ODBCBase = (int (**)(...))&off_80D3B78;
  46585. this->mDBName = 1;
  46586. this->mResult = 0;
  46587. this->mResultCount = 0;
  46588. this->m_CharName[0] = 0;
  46589. this->m_nResult = 0;
  46590. if ( !pInterface )
  46591. __assert__(
  46592. "../../Common/DBSystem/DataBase/DBCheckCharName.cpp",
  46593. 0x12u,
  46594. "DBCheckCharName::DBCheckCharName(ODBCInterface*)",
  46595. "pInterface");
  46596. this->mInterface = pInterface;
  46597. }
  46598. // 80D3B78: using guessed type _DWORD (__cdecl *off_80D3B78)(DBCheckCharName *this);
  46599.  
  46600. //----- (0807F0F8) --------------------------------------------------------
  46601. void __cdecl DBCheckCharName::DBCheckCharName(DBCheckCharName *const this, ODBCInterface *pInterface)
  46602. {
  46603. ODBCBase::ODBCBase(this);
  46604. this->_vptr_ODBCBase = (int (**)(...))&off_80D3B78;
  46605. this->mDBName = 1;
  46606. this->mResult = 0;
  46607. this->mResultCount = 0;
  46608. this->m_CharName[0] = 0;
  46609. this->m_nResult = 0;
  46610. if ( !pInterface )
  46611. __assert__(
  46612. "../../Common/DBSystem/DataBase/DBCheckCharName.cpp",
  46613. 0x12u,
  46614. "DBCheckCharName::DBCheckCharName(ODBCInterface*)",
  46615. "pInterface");
  46616. this->mInterface = pInterface;
  46617. }
  46618. // 80D3B78: using guessed type _DWORD (__cdecl *off_80D3B78)(DBCheckCharName *this);
  46619.  
  46620. //----- (0807F1A0) --------------------------------------------------------
  46621. int __cdecl DBCheckCharName::Load(DBCheckCharName *const this)
  46622. {
  46623. DB_QUERY *v1; // eax
  46624. DB_QUERY *v2; // ebx
  46625. int result; // eax
  46626.  
  46627. v1 = ODBCBase::GetInternalQuery((int)this);
  46628. v2 = v1;
  46629. if ( !v1 )
  46630. __assert__(
  46631. "../../Common/DBSystem/DataBase/DBCheckCharName.cpp",
  46632. 0x1Fu,
  46633. "virtual int DBCheckCharName::Load()",
  46634. "FALSE");
  46635. memset(v1, 0, 0x1000u);
  46636. result = 0;
  46637. if ( this->m_CharName[0] )
  46638. {
  46639. DB_QUERY::Parse(v2, CheckCharName, this->m_CharName, 0);
  46640. result = ODBCBase::Load(&this->0);
  46641. }
  46642. return result;
  46643. }
  46644.  
  46645. //----- (0807F260) --------------------------------------------------------
  46646. #error "807F33C: positive sp value has been found (funcsize=67)"
  46647.  
  46648. //----- (0807F3A4) --------------------------------------------------------
  46649. void __cdecl DBCheckCharName::SetCharName(const CHAR *pName, const char *pNamea)
  46650. {
  46651. strncpy((char *)pName + 24, pNamea, 0x1Eu);
  46652. *((_BYTE *)pName + 53) = 0;
  46653. }
  46654.  
  46655. //----- (0807F3C8) --------------------------------------------------------
  46656. const CHAR *__cdecl DBCheckCharName::GetCharName(DBCheckCharName *const this)
  46657. {
  46658. return this->m_CharName;
  46659. }
  46660.  
  46661. //----- (0807F3D4) --------------------------------------------------------
  46662. INT __cdecl DBCheckCharName::GetCheckResult(int a2)
  46663. {
  46664. return *(_DWORD *)(a2 + 56);
  46665. }
  46666.  
  46667. //----- (0807F3E0) --------------------------------------------------------
  46668. void __cdecl _tcf_0_101(void *a1)
  46669. {
  46670. std::ios_base::Init::~Init(&std::__ioinit);
  46671. }
  46672.  
  46673. //----- (0807F3F0) --------------------------------------------------------
  46674. void `global constructor keyed to'DBCheckCharName::DBCheckCharName()
  46675. {
  46676. std::ios_base::Init::Init(&std::__ioinit);
  46677. __cxa_atexit(_tcf_0_101, 0, &_dso_handle);
  46678. }
  46679. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  46680.  
  46681. //----- (0807F41C) --------------------------------------------------------
  46682. void __cdecl DBClearDupItemList::DBClearDupItemList(DBClearDupItemList *const this, ODBCInterface *pInterface)
  46683. {
  46684. signed int v2; // ebx
  46685. DupItemList *v3; // ecx
  46686. DupItemUnit *v4; // eax
  46687. signed int v5; // edx
  46688. DupItemList *v6; // eax
  46689. signed int v7; // edx
  46690. signed int v8; // ebx
  46691. DBClearDupItemList *v9; // ecx
  46692. DupItemList *v10; // eax
  46693. signed int v11; // edx
  46694.  
  46695. v2 = 178;
  46696. ODBCBase::ODBCBase(this);
  46697. this->_vptr_ODBCBase = (int (**)(...))off_80D3CB0;
  46698. v3 = this->m_DupList;
  46699. do
  46700. {
  46701. v3->m_itemGUID.m_Serial = 0;
  46702. v3->m_itemGUID.m_Server = 0;
  46703. v3->m_itemGUID.m_World = 0;
  46704. v4 = v3->m_DupUnit;
  46705. v5 = 199;
  46706. do
  46707. {
  46708. --v5;
  46709. v4->m_CharGUID = -1;
  46710. v4->m_itemPos = -1;
  46711. v4->m_itemType = -1;
  46712. v4->m_itemdbVersion = -1;
  46713. ++v4;
  46714. }
  46715. while ( v5 != -1 );
  46716. v3->m_itemGUID.m_Serial = 0;
  46717. v3->m_itemGUID.m_Server = 0;
  46718. v3->m_itemGUID.m_World = 0;
  46719. v6 = v3;
  46720. v7 = 199;
  46721. do
  46722. {
  46723. v6->m_DupUnit[0].m_CharGUID = -1;
  46724. v6->m_DupUnit[0].m_itemPos = -1;
  46725. v6->m_DupUnit[0].m_itemType = -1;
  46726. v6->m_DupUnit[0].m_itemdbVersion = -1;
  46727. v6 = (DupItemList *)((char *)v6 + 16);
  46728. --v7;
  46729. }
  46730. while ( v7 >= 0 );
  46731. --v2;
  46732. v3->m_DupCount = 0;
  46733. ++v3;
  46734. }
  46735. while ( v2 != -1 );
  46736. this->mDBName = 1;
  46737. this->mResult = 0;
  46738. this->mResultCount = 0;
  46739. this->m_CharGuid = -1;
  46740. this->m_DBVersion = 0;
  46741. if ( !pInterface )
  46742. __assert__(
  46743. "../../Common/DBSystem/DataBase/DBClearDupItemList.cpp",
  46744. 0xFu,
  46745. "DBClearDupItemList::DBClearDupItemList(ODBCInterface*)",
  46746. "pInterface");
  46747. this->mInterface = pInterface;
  46748. v8 = 0;
  46749. v9 = this;
  46750. do
  46751. {
  46752. v9->m_DupList[0].m_itemGUID.m_Serial = 0;
  46753. v9->m_DupList[0].m_itemGUID.m_Server = 0;
  46754. v9->m_DupList[0].m_itemGUID.m_World = 0;
  46755. v10 = v9->m_DupList;
  46756. v11 = 199;
  46757. do
  46758. {
  46759. v10->m_DupUnit[0].m_CharGUID = -1;
  46760. v10->m_DupUnit[0].m_itemPos = -1;
  46761. v10->m_DupUnit[0].m_itemType = -1;
  46762. v10->m_DupUnit[0].m_itemdbVersion = -1;
  46763. v10 = (DupItemList *)((char *)v10 + 16);
  46764. --v11;
  46765. }
  46766. while ( v11 >= 0 );
  46767. ++v8;
  46768. v9->m_DupList[0].m_DupCount = 0;
  46769. v9 = (DBClearDupItemList *)((char *)v9 + 3212);
  46770. }
  46771. while ( v8 <= 178 );
  46772. }
  46773. // 80D3CB0: using guessed type _DWORD (__cdecl *off_80D3CB0[3])(ODBCBase *this);
  46774.  
  46775. //----- (0807F574) --------------------------------------------------------
  46776. void __cdecl DBClearDupItemList::DBClearDupItemList(DBClearDupItemList *const this, ODBCInterface *pInterface)
  46777. {
  46778. signed int v2; // ebx
  46779. DupItemList *v3; // ecx
  46780. DupItemUnit *v4; // eax
  46781. signed int v5; // edx
  46782. DupItemList *v6; // eax
  46783. signed int v7; // edx
  46784. signed int v8; // ebx
  46785. DBClearDupItemList *v9; // ecx
  46786. DupItemList *v10; // eax
  46787. signed int v11; // edx
  46788.  
  46789. v2 = 178;
  46790. ODBCBase::ODBCBase(this);
  46791. this->_vptr_ODBCBase = (int (**)(...))off_80D3CB0;
  46792. v3 = this->m_DupList;
  46793. do
  46794. {
  46795. v3->m_itemGUID.m_Serial = 0;
  46796. v3->m_itemGUID.m_Server = 0;
  46797. v3->m_itemGUID.m_World = 0;
  46798. v4 = v3->m_DupUnit;
  46799. v5 = 199;
  46800. do
  46801. {
  46802. --v5;
  46803. v4->m_CharGUID = -1;
  46804. v4->m_itemPos = -1;
  46805. v4->m_itemType = -1;
  46806. v4->m_itemdbVersion = -1;
  46807. ++v4;
  46808. }
  46809. while ( v5 != -1 );
  46810. v3->m_itemGUID.m_Serial = 0;
  46811. v3->m_itemGUID.m_Server = 0;
  46812. v3->m_itemGUID.m_World = 0;
  46813. v6 = v3;
  46814. v7 = 199;
  46815. do
  46816. {
  46817. v6->m_DupUnit[0].m_CharGUID = -1;
  46818. v6->m_DupUnit[0].m_itemPos = -1;
  46819. v6->m_DupUnit[0].m_itemType = -1;
  46820. v6->m_DupUnit[0].m_itemdbVersion = -1;
  46821. v6 = (DupItemList *)((char *)v6 + 16);
  46822. --v7;
  46823. }
  46824. while ( v7 >= 0 );
  46825. --v2;
  46826. v3->m_DupCount = 0;
  46827. ++v3;
  46828. }
  46829. while ( v2 != -1 );
  46830. this->mDBName = 1;
  46831. this->mResult = 0;
  46832. this->mResultCount = 0;
  46833. this->m_CharGuid = -1;
  46834. this->m_DBVersion = 0;
  46835. if ( !pInterface )
  46836. __assert__(
  46837. "../../Common/DBSystem/DataBase/DBClearDupItemList.cpp",
  46838. 0xFu,
  46839. "DBClearDupItemList::DBClearDupItemList(ODBCInterface*)",
  46840. "pInterface");
  46841. this->mInterface = pInterface;
  46842. v8 = 0;
  46843. v9 = this;
  46844. do
  46845. {
  46846. v9->m_DupList[0].m_itemGUID.m_Serial = 0;
  46847. v9->m_DupList[0].m_itemGUID.m_Server = 0;
  46848. v9->m_DupList[0].m_itemGUID.m_World = 0;
  46849. v10 = v9->m_DupList;
  46850. v11 = 199;
  46851. do
  46852. {
  46853. v10->m_DupUnit[0].m_CharGUID = -1;
  46854. v10->m_DupUnit[0].m_itemPos = -1;
  46855. v10->m_DupUnit[0].m_itemType = -1;
  46856. v10->m_DupUnit[0].m_itemdbVersion = -1;
  46857. v10 = (DupItemList *)((char *)v10 + 16);
  46858. --v11;
  46859. }
  46860. while ( v11 >= 0 );
  46861. ++v8;
  46862. v9->m_DupList[0].m_DupCount = 0;
  46863. v9 = (DBClearDupItemList *)((char *)v9 + 3212);
  46864. }
  46865. while ( v8 <= 178 );
  46866. }
  46867. // 80D3CB0: using guessed type _DWORD (__cdecl *off_80D3CB0[3])(ODBCBase *this);
  46868.  
  46869. //----- (0807F6CC) --------------------------------------------------------
  46870. int __cdecl DBClearDupItemList::Save(DBClearDupItemList *const this, void *pSource)
  46871. {
  46872. DB_QUERY *v2; // edi
  46873. int result; // eax
  46874. unsigned __int8 *v4; // ebx
  46875. int v5; // ST24_4
  46876. signed int v6; // ebx
  46877. char *v7; // [esp+14h] [ebp-40h]
  46878. char *v8; // [esp+18h] [ebp-3Ch]
  46879. char *v9; // [esp+1Ch] [ebp-38h]
  46880. DBClearDupItemList *v10; // [esp+20h] [ebp-34h]
  46881. unsigned int ItemPos; // [esp+24h] [ebp-30h]
  46882. INT ErrorCode; // [esp+28h] [ebp-2Ch]
  46883. DupItemUnit dUnit; // [esp+2Ch] [ebp-28h]
  46884.  
  46885. v2 = ODBCBase::GetInternalQuery((int)this);
  46886. if ( !v2 )
  46887. __assert__(
  46888. "../../Common/DBSystem/DataBase/DBClearDupItemList.cpp",
  46889. 0x1Du,
  46890. "virtual int DBClearDupItemList::Save(void*)",
  46891. "FALSE");
  46892. result = 0;
  46893. if ( this->m_CharGuid != -1 )
  46894. {
  46895. if ( !pSource )
  46896. __assert__(
  46897. "../../Common/DBSystem/DataBase/DBClearDupItemList.cpp",
  46898. 0x2Eu,
  46899. "virtual int DBClearDupItemList::Save(void*)",
  46900. "pCharFullData");
  46901. ItemPos = 0;
  46902. v10 = this;
  46903. v9 = (char *)pSource;
  46904. v8 = (char *)pSource;
  46905. v7 = (char *)pSource;
  46906. while ( 1 )
  46907. {
  46908. if ( ItemPos > 0xB2 )
  46909. __assert__("../../Common/DB_Struct.h", 0x539u, "_ITEM* FULLUSERDATA::GetItem(UINT)", "uDBPos<=DB_BANK_POS_END");
  46910. if ( ItemPos > 0x76 )
  46911. {
  46912. v4 = (unsigned __int8 *)(v7 - 19223);
  46913. }
  46914. else if ( ItemPos <= 0x63 )
  46915. {
  46916. v4 = 0;
  46917. if ( (ItemPos & 0x80000000) == 0 )
  46918. v4 = (unsigned __int8 *)(v9 + 12290);
  46919. }
  46920. else
  46921. {
  46922. v4 = (unsigned __int8 *)(v8 + 12310);
  46923. }
  46924. if ( *v4 || *((_DWORD *)v4 + 1) || v4[1] )
  46925. {
  46926. memset(v2, 0, 0x1000u);
  46927. ODBCInterface::Clear(this->mInterface);
  46928. v5 = v4[1];
  46929. DB_QUERY::Parse(v2, LoadDupItemList, "t_iteminfo", *((_DWORD *)v4 + 1), *v4);
  46930. if ( !ODBCBase::Load(&this->0) )
  46931. return 0;
  46932. v10->m_DupList[0].m_itemGUID.m_Serial = *((_DWORD *)v4 + 1);
  46933. v10->m_DupList[0].m_itemGUID.m_Server = v4[1];
  46934. v10->m_DupList[0].m_itemGUID.m_World = *v4;
  46935. v6 = 0;
  46936. do
  46937. {
  46938. if ( !ODBCInterface::Fetch(this->mInterface) )
  46939. break;
  46940. dUnit.m_CharGUID = -1;
  46941. dUnit.m_itemPos = -1;
  46942. dUnit.m_itemType = -1;
  46943. dUnit.m_itemdbVersion = -1;
  46944. dUnit.m_CharGUID = ODBCInterface::GetInt(this->mInterface, 1, &ErrorCode);
  46945. dUnit.m_itemPos = ODBCInterface::GetInt(this->mInterface, 2, &ErrorCode);
  46946. dUnit.m_itemType = ODBCInterface::GetInt(this->mInterface, 3, &ErrorCode);
  46947. ++v6;
  46948. dUnit.m_itemdbVersion = ODBCInterface::GetInt(this->mInterface, 4, &ErrorCode);
  46949. }
  46950. while ( v6 <= 199 );
  46951. }
  46952. ++ItemPos;
  46953. v7 += 176;
  46954. v8 += 176;
  46955. v9 += 176;
  46956. v10 = (DBClearDupItemList *)((char *)v10 + 3212);
  46957. if ( (signed int)ItemPos > 178 )
  46958. return ODBCBase::Save(&this->0, pSource);
  46959. }
  46960. }
  46961. return result;
  46962. }
  46963.  
  46964. //----- (0807F954) --------------------------------------------------------
  46965. int __cdecl DBClearDupItemList::ParseResult(DBClearDupItemList *const this, void *pResult)
  46966. {
  46967. if ( !this->mInterface )
  46968. __assert__(
  46969. "../../Common/DBSystem/DataBase/DBClearDupItemList.cpp",
  46970. 0x63u,
  46971. "virtual int DBClearDupItemList::ParseResult(void*)",
  46972. "mInterface");
  46973. ODBCInterface::Clear(this->mInterface);
  46974. return 1;
  46975. }
  46976.  
  46977. //----- (0807F9DC) --------------------------------------------------------
  46978. GUID_t __cdecl DBClearDupItemList::GetCharGuid(int a2)
  46979. {
  46980. return *(_DWORD *)(a2 + 24);
  46981. }
  46982.  
  46983. //----- (0807F9E8) --------------------------------------------------------
  46984. void __cdecl DBClearDupItemList::SetCharGuid(int a3, int a4)
  46985. {
  46986. *(_DWORD *)(a3 + 24) = a4;
  46987. }
  46988.  
  46989. //----- (0807F9F8) --------------------------------------------------------
  46990. UINT __cdecl DBClearDupItemList::GetDBVersion(int a2)
  46991. {
  46992. return *(_DWORD *)(a2 + 28);
  46993. }
  46994.  
  46995. //----- (0807FA04) --------------------------------------------------------
  46996. void __cdecl DBClearDupItemList::SetDBVersion(int a3, int a4)
  46997. {
  46998. *(_DWORD *)(a3 + 28) = a4;
  46999. }
  47000.  
  47001. //----- (0807FA14) --------------------------------------------------------
  47002. void __cdecl _tcf_0_102(void *a1)
  47003. {
  47004. std::ios_base::Init::~Init(&std::__ioinit);
  47005. }
  47006.  
  47007. //----- (0807FA24) --------------------------------------------------------
  47008. void `global constructor keyed to'DBClearDupItemList::DBClearDupItemList()
  47009. {
  47010. std::ios_base::Init::Init(&std::__ioinit);
  47011. __cxa_atexit(_tcf_0_102, 0, &_dso_handle);
  47012. }
  47013. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  47014.  
  47015. //----- (0807FA50) --------------------------------------------------------
  47016. void __cdecl DBCoolDownInfo::DBCoolDownInfo(DBCoolDownInfo *const this, ODBCInterface *pInterface)
  47017. {
  47018. ODBCBase::ODBCBase(this);
  47019. this->_vptr_ODBCBase = (int (**)(...))&off_80D3E40;
  47020. this->mDBName = 1;
  47021. this->mResult = 0;
  47022. this->mResultCount = 0;
  47023. this->m_CharGuid = -1;
  47024. this->m_DBVersion = 0;
  47025. if ( !pInterface )
  47026. __assert__(
  47027. "../../Common/DBSystem/DataBase/DBCoolDownInfo.cpp",
  47028. 0xEu,
  47029. "DBCoolDownInfo::DBCoolDownInfo(ODBCInterface*)",
  47030. "pInterface");
  47031. this->mInterface = pInterface;
  47032. }
  47033. // 80D3E40: using guessed type _DWORD (__cdecl *off_80D3E40)(DBCoolDownInfo *this);
  47034.  
  47035. //----- (0807FABC) --------------------------------------------------------
  47036. void __cdecl DBCoolDownInfo::DBCoolDownInfo(DBCoolDownInfo *const this, ODBCInterface *pInterface)
  47037. {
  47038. ODBCBase::ODBCBase(this);
  47039. this->_vptr_ODBCBase = (int (**)(...))&off_80D3E40;
  47040. this->mDBName = 1;
  47041. this->mResult = 0;
  47042. this->mResultCount = 0;
  47043. this->m_CharGuid = -1;
  47044. this->m_DBVersion = 0;
  47045. if ( !pInterface )
  47046. __assert__(
  47047. "../../Common/DBSystem/DataBase/DBCoolDownInfo.cpp",
  47048. 0xEu,
  47049. "DBCoolDownInfo::DBCoolDownInfo(ODBCInterface*)",
  47050. "pInterface");
  47051. this->mInterface = pInterface;
  47052. }
  47053. // 80D3E40: using guessed type _DWORD (__cdecl *off_80D3E40)(DBCoolDownInfo *this);
  47054.  
  47055. //----- (0807FB28) --------------------------------------------------------
  47056. #error "807FBB0: positive sp value has been found (funcsize=41)"
  47057.  
  47058. //----- (0807FBE8) --------------------------------------------------------
  47059. int __cdecl DBCoolDownInfo::Save(DBCoolDownInfo *const this, void *pSource)
  47060. {
  47061. DB_QUERY *v2; // eax
  47062. DB_QUERY *v3; // esi
  47063. CHAR CoolDownInfo[2048]; // [esp+10h] [ebp-818h]
  47064.  
  47065. if ( !pSource )
  47066. __assert__(
  47067. "../../Common/DBSystem/DataBase/DBCoolDownInfo.cpp",
  47068. 0x39u,
  47069. "virtual int DBCoolDownInfo::Save(void*)",
  47070. "pCharFullData");
  47071. memset(CoolDownInfo, 0, 0x800u);
  47072. Binary2String((const CHAR *)pSource + 33513, 0x180u, CoolDownInfo);
  47073. v2 = ODBCBase::GetInternalQuery((int)this);
  47074. v3 = v2;
  47075. if ( !v2 )
  47076. __assert__(
  47077. "../../Common/DBSystem/DataBase/DBCoolDownInfo.cpp",
  47078. 0x48u,
  47079. "virtual int DBCoolDownInfo::Save(void*)",
  47080. "FALSE");
  47081. memset(v2, 0, 0x1000u);
  47082. DB_QUERY::Parse(v3, UpdateCharCoolDownInfo, "t_char", CoolDownInfo, this->m_CharGuid, this->m_DBVersion);
  47083. return ODBCBase::Save(&this->0, pSource) != 0;
  47084. }
  47085.  
  47086. //----- (0807FD18) --------------------------------------------------------
  47087. int __cdecl DBCoolDownInfo::Delete(DBCoolDownInfo *const this)
  47088. {
  47089. return 1;
  47090. }
  47091.  
  47092. //----- (0807FD24) --------------------------------------------------------
  47093. int __cdecl DBCoolDownInfo::ParseResult(DBCoolDownInfo *const this, void *pResult)
  47094. {
  47095. INT ErrorCode; // [esp+8h] [ebp-10h]
  47096.  
  47097. if ( this->mOPType == DB_LOAD )
  47098. {
  47099. if ( !pResult )
  47100. __assert__(
  47101. "../../Common/DBSystem/DataBase/DBCoolDownInfo.cpp",
  47102. 0x74u,
  47103. "virtual int DBCoolDownInfo::ParseResult(void*)",
  47104. "pCharFullData");
  47105. if ( !this->mInterface )
  47106. __assert__(
  47107. "../../Common/DBSystem/DataBase/DBCoolDownInfo.cpp",
  47108. 0x7Eu,
  47109. "virtual int DBCoolDownInfo::ParseResult(void*)",
  47110. "mInterface");
  47111. if ( ODBCInterface::Fetch(this->mInterface) )
  47112. {
  47113. ODBCInterface::GetUInt(this->mInterface, 1, &ErrorCode);
  47114. ODBCInterface::GetField(this->mInterface, 2, (CHAR *)pResult + 33513, 384, &ErrorCode);
  47115. }
  47116. ODBCInterface::Clear(this->mInterface);
  47117. }
  47118. if ( !this->mInterface )
  47119. __assert__(
  47120. "../../Common/DBSystem/DataBase/DBCoolDownInfo.cpp",
  47121. 0x98u,
  47122. "virtual int DBCoolDownInfo::ParseResult(void*)",
  47123. "mInterface");
  47124. ODBCInterface::Clear(this->mInterface);
  47125. return 1;
  47126. }
  47127.  
  47128. //----- (0807FE5C) --------------------------------------------------------
  47129. GUID_t __cdecl DBCoolDownInfo::GetCharGuid(int a2)
  47130. {
  47131. return *(_DWORD *)(a2 + 24);
  47132. }
  47133.  
  47134. //----- (0807FE68) --------------------------------------------------------
  47135. void __cdecl DBCoolDownInfo::SetCharGuid(int a3, int a4)
  47136. {
  47137. *(_DWORD *)(a3 + 24) = a4;
  47138. }
  47139.  
  47140. //----- (0807FE78) --------------------------------------------------------
  47141. UINT __cdecl DBCoolDownInfo::GetDBVersion(int a2)
  47142. {
  47143. return *(_DWORD *)(a2 + 28);
  47144. }
  47145.  
  47146. //----- (0807FE84) --------------------------------------------------------
  47147. void __cdecl DBCoolDownInfo::SetDBVersion(int a3, int a4)
  47148. {
  47149. *(_DWORD *)(a3 + 28) = a4;
  47150. }
  47151.  
  47152. //----- (0807FE94) --------------------------------------------------------
  47153. void __cdecl _tcf_0_103(void *a1)
  47154. {
  47155. std::ios_base::Init::~Init(&std::__ioinit);
  47156. }
  47157.  
  47158. //----- (0807FEA4) --------------------------------------------------------
  47159. void `global constructor keyed to'DBCoolDownInfo::DBCoolDownInfo()
  47160. {
  47161. std::ios_base::Init::Init(&std::__ioinit);
  47162. __cxa_atexit(_tcf_0_103, 0, &_dso_handle);
  47163. }
  47164. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  47165.  
  47166. //----- (0807FED0) --------------------------------------------------------
  47167. void __cdecl DBCrcInfo::DBCrcInfo(DBCrcInfo *const this, ODBCInterface *pInterface)
  47168. {
  47169. ODBCBase::ODBCBase(this);
  47170. this->_vptr_ODBCBase = (int (**)(...))&off_80D3FF0;
  47171. this->mDBName = 1;
  47172. this->mResult = 0;
  47173. this->mResultCount = 0;
  47174. if ( !pInterface )
  47175. __assert__(
  47176. "../../Common/DBSystem/DataBase/DBCrcInfo.cpp",
  47177. 0xCu,
  47178. "DBCrcInfo::DBCrcInfo(ODBCInterface*)",
  47179. "pInterface");
  47180. this->mInterface = pInterface;
  47181. this->m_aid = -1;
  47182. this->m_CharGuid = -1;
  47183. this->m_Crc32 = 0;
  47184. this->m_ServerId = -1;
  47185. this->m_Change = 0;
  47186. }
  47187. // 80D3FF0: using guessed type _DWORD (__cdecl *off_80D3FF0)(DBCrcInfo *this);
  47188.  
  47189. //----- (0807FF50) --------------------------------------------------------
  47190. void __cdecl DBCrcInfo::DBCrcInfo(DBCrcInfo *const this, ODBCInterface *pInterface)
  47191. {
  47192. ODBCBase::ODBCBase(this);
  47193. this->_vptr_ODBCBase = (int (**)(...))&off_80D3FF0;
  47194. this->mDBName = 1;
  47195. this->mResult = 0;
  47196. this->mResultCount = 0;
  47197. if ( !pInterface )
  47198. __assert__(
  47199. "../../Common/DBSystem/DataBase/DBCrcInfo.cpp",
  47200. 0xCu,
  47201. "DBCrcInfo::DBCrcInfo(ODBCInterface*)",
  47202. "pInterface");
  47203. this->mInterface = pInterface;
  47204. this->m_aid = -1;
  47205. this->m_CharGuid = -1;
  47206. this->m_Crc32 = 0;
  47207. this->m_ServerId = -1;
  47208. this->m_Change = 0;
  47209. }
  47210. // 80D3FF0: using guessed type _DWORD (__cdecl *off_80D3FF0)(DBCrcInfo *this);
  47211.  
  47212. //----- (0807FFD0) --------------------------------------------------------
  47213. #error "8080054: positive sp value has been found (funcsize=39)"
  47214.  
  47215. //----- (0808008C) --------------------------------------------------------
  47216. int __cdecl DBCrcInfo::Save(DBCrcInfo *const this, void *pSource)
  47217. {
  47218. LONG_DB_QUERY *v2; // eax
  47219. LONG_DB_QUERY *v3; // edi
  47220. int result; // eax
  47221. UINT nLogoutTime; // [esp+8h] [ebp-19020h]
  47222. CHAR FullDataInfo[102400]; // [esp+10h] [ebp-19018h]
  47223.  
  47224. if ( !pSource )
  47225. __assert__(
  47226. "../../Common/DBSystem/DataBase/DBCrcInfo.cpp",
  47227. 0x33u,
  47228. "virtual int DBCrcInfo::Save(void*)",
  47229. "pCharFullData");
  47230. memset(FullDataInfo, 0, 0x19000u);
  47231. Binary2String((const CHAR *)pSource, 0xC619u, FullDataInfo);
  47232. nLogoutTime = *(_DWORD *)((char *)pSource + 934);
  47233. v2 = ODBCBase::GetLongInterQuery((int)this);
  47234. v3 = v2;
  47235. if ( !v2 )
  47236. __assert__("../../Common/DBSystem/DataBase/DBCrcInfo.cpp", 0x46u, "virtual int DBCrcInfo::Save(void*)", "FALSE");
  47237. memset(v2, 0, 0x32000u);
  47238. result = 0;
  47239. if ( this->m_CharGuid != -1 )
  47240. {
  47241. LONG_DB_QUERY::Parse(
  47242. v3,
  47243. SaveCrcInfo,
  47244. "t_crc32",
  47245. this->m_CharGuid,
  47246. nLogoutTime,
  47247. this->m_Crc32,
  47248. FullDataInfo,
  47249. 1,
  47250. this->m_ServerId);
  47251. result = ODBCBase::LongSave(&this->0, pSource) != 0;
  47252. }
  47253. return result;
  47254. }
  47255.  
  47256. //----- (080801DC) --------------------------------------------------------
  47257. #error "808026B: positive sp value has been found (funcsize=42)"
  47258.  
  47259. //----- (080802B0) --------------------------------------------------------
  47260. int __cdecl DBCrcInfo::ParseResult(DBCrcInfo *const this, void *pResult)
  47261. {
  47262. INT ErrorCode; // [esp+8h] [ebp-10h]
  47263.  
  47264. if ( this->mOPType == DB_LOAD )
  47265. {
  47266. if ( !pResult )
  47267. __assert__(
  47268. "../../Common/DBSystem/DataBase/DBCrcInfo.cpp",
  47269. 0x8Fu,
  47270. "virtual int DBCrcInfo::ParseResult(void*)",
  47271. "pCharFullData");
  47272. if ( this->mResultCount < 0 )
  47273. return 0;
  47274. if ( !this->mInterface )
  47275. __assert__(
  47276. "../../Common/DBSystem/DataBase/DBCrcInfo.cpp",
  47277. 0x9Fu,
  47278. "virtual int DBCrcInfo::ParseResult(void*)",
  47279. "mInterface");
  47280. if ( !ODBCInterface::Fetch(this->mInterface) )
  47281. return 0;
  47282. this->m_CharGuid = ODBCInterface::GetUInt(this->mInterface, 1, &ErrorCode);
  47283. this->m_Crc32 = ODBCInterface::GetUInt(this->mInterface, 3, &ErrorCode);
  47284. ODBCInterface::GetLongField(this->mInterface, 4, (CHAR *)pResult, 50713, &ErrorCode);
  47285. this->m_ServerId = ODBCInterface::GetInt(this->mInterface, 6, &ErrorCode);
  47286. ODBCInterface::Clear(this->mInterface);
  47287. }
  47288. if ( !this->mInterface )
  47289. __assert__(
  47290. "../../Common/DBSystem/DataBase/DBCrcInfo.cpp",
  47291. 0xBEu,
  47292. "virtual int DBCrcInfo::ParseResult(void*)",
  47293. "mInterface");
  47294. ODBCInterface::Clear(this->mInterface);
  47295. return 1;
  47296. }
  47297.  
  47298. //----- (08080420) --------------------------------------------------------
  47299. UINT __cdecl DBCrcInfo::GetAid(int a2)
  47300. {
  47301. return *(_DWORD *)(a2 + 24);
  47302. }
  47303.  
  47304. //----- (0808042C) --------------------------------------------------------
  47305. void __cdecl DBCrcInfo::SetAid(int a3, int a4)
  47306. {
  47307. *(_DWORD *)(a3 + 24) = a4;
  47308. }
  47309.  
  47310. //----- (0808043C) --------------------------------------------------------
  47311. GUID_t __cdecl DBCrcInfo::GetCharGuid(int a2)
  47312. {
  47313. return *(_DWORD *)(a2 + 28);
  47314. }
  47315.  
  47316. //----- (08080448) --------------------------------------------------------
  47317. void __cdecl DBCrcInfo::SetCharGuid(int a3, int a4)
  47318. {
  47319. *(_DWORD *)(a3 + 28) = a4;
  47320. }
  47321.  
  47322. //----- (08080458) --------------------------------------------------------
  47323. UINT __cdecl DBCrcInfo::GetCrc32(int a2)
  47324. {
  47325. return *(_DWORD *)(a2 + 32);
  47326. }
  47327.  
  47328. //----- (08080464) --------------------------------------------------------
  47329. void __cdecl DBCrcInfo::SetCrc32(int a3, int a4)
  47330. {
  47331. *(_DWORD *)(a3 + 32) = a4;
  47332. }
  47333.  
  47334. //----- (08080474) --------------------------------------------------------
  47335. INT __cdecl DBCrcInfo::GetServerId(int a2)
  47336. {
  47337. return *(_DWORD *)(a2 + 36);
  47338. }
  47339.  
  47340. //----- (08080480) --------------------------------------------------------
  47341. void __cdecl DBCrcInfo::SetServerId(int a3, int a4)
  47342. {
  47343. *(_DWORD *)(a3 + 36) = a4;
  47344. }
  47345.  
  47346. //----- (08080490) --------------------------------------------------------
  47347. void __cdecl DBCrcInfo::SetChange(int a3, int a4)
  47348. {
  47349. *(_DWORD *)(a3 + 40) = a4;
  47350. }
  47351.  
  47352. //----- (080804A0) --------------------------------------------------------
  47353. void __cdecl _tcf_0_104(void *a1)
  47354. {
  47355. std::ios_base::Init::~Init(&std::__ioinit);
  47356. }
  47357.  
  47358. //----- (080804B0) --------------------------------------------------------
  47359. void `global constructor keyed to'DBCrcInfo::DBCrcInfo()
  47360. {
  47361. std::ios_base::Init::Init(&std::__ioinit);
  47362. __cxa_atexit(_tcf_0_104, 0, &_dso_handle);
  47363. }
  47364. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  47365.  
  47366. //----- (080804DC) --------------------------------------------------------
  47367. void __cdecl DBCreateCharOp::DBCreateCharOp(DBCreateCharOp *const this, ODBCInterface *pInterface)
  47368. {
  47369. ODBCBase::ODBCBase(this);
  47370. this->_vptr_ODBCBase = (int (**)(...))off_80D4150;
  47371. this->mDBName = 1;
  47372. this->mResult = 0;
  47373. this->mResultCount = 0;
  47374. this->m_Account[0] = 0;
  47375. this->m_AID = 0;
  47376. if ( !pInterface )
  47377. __assert__(
  47378. "../../Common/DBSystem/DataBase/DBCreateCharOp.cpp",
  47379. 0x12u,
  47380. "DBCreateCharOp::DBCreateCharOp(ODBCInterface*)",
  47381. "pInterface");
  47382. this->mInterface = pInterface;
  47383. }
  47384. // 80D4150: using guessed type _DWORD (__cdecl *off_80D4150[2])(DBCreateCharOp *this);
  47385.  
  47386. //----- (08080584) --------------------------------------------------------
  47387. void __cdecl DBCreateCharOp::DBCreateCharOp(DBCreateCharOp *const this, ODBCInterface *pInterface)
  47388. {
  47389. ODBCBase::ODBCBase(this);
  47390. this->_vptr_ODBCBase = (int (**)(...))off_80D4150;
  47391. this->mDBName = 1;
  47392. this->mResult = 0;
  47393. this->mResultCount = 0;
  47394. this->m_Account[0] = 0;
  47395. this->m_AID = 0;
  47396. if ( !pInterface )
  47397. __assert__(
  47398. "../../Common/DBSystem/DataBase/DBCreateCharOp.cpp",
  47399. 0x12u,
  47400. "DBCreateCharOp::DBCreateCharOp(ODBCInterface*)",
  47401. "pInterface");
  47402. this->mInterface = pInterface;
  47403. }
  47404. // 80D4150: using guessed type _DWORD (__cdecl *off_80D4150[2])(DBCreateCharOp *this);
  47405.  
  47406. //----- (0808062C) --------------------------------------------------------
  47407. int __cdecl DBCreateCharOp::Load(DBCreateCharOp *const this)
  47408. {
  47409. return 1;
  47410. }
  47411.  
  47412. //----- (08080638) --------------------------------------------------------
  47413. int __cdecl DBCreateCharOp::AddNew(DBCreateCharOp *const this)
  47414. {
  47415. DB_QUERY *v1; // eax
  47416. DB_QUERY *v2; // ebx
  47417. int v3; // edx
  47418. int v5; // eax
  47419. int v6; // eax
  47420. DB_QUERY *v7; // eax
  47421. DB_QUERY *v8; // ebx
  47422. BOOL v9; // eax
  47423. BOOL v10; // eax
  47424. INT v11; // STE8_4
  47425. int v12; // STA8_4
  47426. int v13; // ST80_4
  47427. int v14; // ST7C_4
  47428. int v15; // ST78_4
  47429. int v16; // ST74_4
  47430. UINT v17; // eax
  47431. INT ErrorCode; // [esp+14h] [ebp-10h]
  47432.  
  47433. v1 = ODBCBase::GetInternalQuery((int)this);
  47434. v2 = v1;
  47435. if ( !v1 )
  47436. __assert__(
  47437. "../../Common/DBSystem/DataBase/DBCreateCharOp.cpp",
  47438. 0x32u,
  47439. "virtual int DBCreateCharOp::AddNew()",
  47440. "FALSE");
  47441. memset(v1, 0, 0x1000u);
  47442. v3 = 0;
  47443. if ( this->m_Account[0] )
  47444. {
  47445. DB_QUERY::Parse(v2, FetchNewGuid);
  47446. v5 = ODBCBase::Load(&this->0);
  47447. v3 = 0;
  47448. if ( v5 )
  47449. {
  47450. if ( !this->mInterface )
  47451. __assert__(
  47452. "../../Common/DBSystem/DataBase/DBCreateCharOp.cpp",
  47453. 0x41u,
  47454. "virtual int DBCreateCharOp::AddNew()",
  47455. "mInterface");
  47456. v6 = ODBCInterface::Fetch(this->mInterface);
  47457. v3 = 0;
  47458. if ( v6 )
  47459. {
  47460. this->m_CharGuid = ODBCInterface::GetUInt(this->mInterface, 1, &ErrorCode);
  47461. ODBCInterface::Clear(this->mInterface);
  47462. v7 = ODBCBase::GetInternalQuery((int)this);
  47463. v8 = v7;
  47464. if ( !v7 )
  47465. __assert__(
  47466. "../../Common/DBSystem/DataBase/DBCreateCharOp.cpp",
  47467. 0x5Cu,
  47468. "virtual int DBCreateCharOp::AddNew()",
  47469. "FALSE");
  47470. memset(v7, 0, 0x1000u);
  47471. v3 = 0;
  47472. if ( this->m_Account[0] )
  47473. {
  47474. v9 = StrSafeCheck(this->m_Account, 0x33u);
  47475. v3 = 0;
  47476. if ( v9 )
  47477. {
  47478. v10 = StrSafeCheck(this->m_CharName, 0x1Eu);
  47479. v3 = 0;
  47480. if ( v10 )
  47481. {
  47482. v11 = this->m_DefEquip;
  47483. v12 = this->m_HeadID;
  47484. v13 = this->m_FaceModel;
  47485. v14 = this->m_FaceColor;
  47486. v15 = this->m_HairModel;
  47487. v16 = this->m_HairColor;
  47488. v17 = TimeManager::CurrentDate(g_pTimeManager);
  47489. DB_QUERY::Parse(
  47490. v8,
  47491. CreateNewChar,
  47492. "t_char",
  47493. this->m_Account,
  47494. this->m_CharGuid,
  47495. this->m_CharName,
  47496. "",
  47497. "",
  47498. this->m_Sex,
  47499. 1,
  47500. 0,
  47501. 0,
  47502. 0,
  47503. 100,
  47504. 100,
  47505. 9,
  47506. 5000,
  47507. 5000,
  47508. 0,
  47509. 5,
  47510. 5,
  47511. 5,
  47512. 5,
  47513. 5,
  47514. 0,
  47515. 0,
  47516. 0,
  47517. v17,
  47518. 0,
  47519. v16,
  47520. v15,
  47521. v14,
  47522. v13,
  47523. 0,
  47524. "",
  47525. 1,
  47526. 0,
  47527. "",
  47528. "",
  47529. "",
  47530. -1,
  47531. -1,
  47532. v12,
  47533. 0,
  47534. 0,
  47535. 0,
  47536. 0,
  47537. 0,
  47538. 0,
  47539. "",
  47540. 0,
  47541. 0,
  47542. 0,
  47543. "",
  47544. 0,
  47545. 0,
  47546. 20);
  47547. v3 = ODBCBase::AddNew(&this->0);
  47548. }
  47549. }
  47550. }
  47551. }
  47552. }
  47553. }
  47554. return v3;
  47555. }
  47556.  
  47557. //----- (080808BC) --------------------------------------------------------
  47558. int __cdecl DBCreateCharOp::ParseResult(DBCreateCharOp *const this, void *pResult)
  47559. {
  47560. if ( !pResult )
  47561. __assert__(
  47562. "../../Common/DBSystem/DataBase/DBCreateCharOp.cpp",
  47563. 0xB6u,
  47564. "virtual int DBCreateCharOp::ParseResult(void*)",
  47565. "pAskResult");
  47566. if ( !this->mInterface )
  47567. __assert__(
  47568. "../../Common/DBSystem/DataBase/DBCreateCharOp.cpp",
  47569. 0xB8u,
  47570. "virtual int DBCreateCharOp::ParseResult(void*)",
  47571. "mInterface");
  47572. if ( ODBCBase::GetInternalAffectCount((int)this) <= 0 )
  47573. *(_DWORD *)pResult = 6;
  47574. else
  47575. *(_DWORD *)pResult = 0;
  47576. ODBCInterface::Clear(this->mInterface);
  47577. return 1;
  47578. }
  47579.  
  47580. //----- (0808096C) --------------------------------------------------------
  47581. const CHAR *__cdecl DBCreateCharOp::GetAccount(const DBCreateCharOp *const this)
  47582. {
  47583. return this->m_Account;
  47584. }
  47585.  
  47586. //----- (08080978) --------------------------------------------------------
  47587. void __cdecl DBCreateCharOp::SetAccount(DBCreateCharOp *const this, const CHAR *pAccount)
  47588. {
  47589. if ( !pAccount )
  47590. __assert__(
  47591. "../../Common/DBSystem/DataBase/DBCreateCharOp.cpp",
  47592. 0xD4u,
  47593. "void DBCreateCharOp::SetAccount(const CHAR*)",
  47594. "pAccount");
  47595. strncpy(this->m_Account, pAccount, 0x32u);
  47596. this->m_Account[50] = 0;
  47597. }
  47598.  
  47599. //----- (080809C0) --------------------------------------------------------
  47600. GUID_t __cdecl DBCreateCharOp::GetCharGuid(int a2)
  47601. {
  47602. return *(_DWORD *)(a2 + 80);
  47603. }
  47604.  
  47605. //----- (080809CC) --------------------------------------------------------
  47606. void __cdecl DBCreateCharOp::SetCharGuid(int a3, int a4)
  47607. {
  47608. *(_DWORD *)(a3 + 80) = a4;
  47609. }
  47610.  
  47611. //----- (080809DC) --------------------------------------------------------
  47612. void __cdecl DBCreateCharOp::SetCharName(const CHAR *pName, const char *pNamea)
  47613. {
  47614. strncpy((char *)pName + 84, pNamea, 0x1Eu);
  47615. *((_BYTE *)pName + 113) = 0;
  47616. }
  47617.  
  47618. //----- (08080A00) --------------------------------------------------------
  47619. const CHAR *__cdecl DBCreateCharOp::GetCharName(DBCreateCharOp *const this)
  47620. {
  47621. return this->m_CharName;
  47622. }
  47623.  
  47624. //----- (08080A0C) --------------------------------------------------------
  47625. void __cdecl DBCreateCharOp::SetSex(int a3, int a4)
  47626. {
  47627. *(_DWORD *)(a3 + 116) = a4;
  47628. }
  47629.  
  47630. //----- (08080A1C) --------------------------------------------------------
  47631. int __cdecl DBCreateCharOp::GetSex(int a2)
  47632. {
  47633. return *(_DWORD *)(a2 + 116);
  47634. }
  47635.  
  47636. //----- (08080A28) --------------------------------------------------------
  47637. void __cdecl DBCreateCharOp::SetHairColor(int Color, char Colora)
  47638. {
  47639. *(_BYTE *)(Color + 120) = Colora;
  47640. }
  47641.  
  47642. //----- (08080A38) --------------------------------------------------------
  47643. int __cdecl DBCreateCharOp::GetHairColor(int a2)
  47644. {
  47645. return *(unsigned __int8 *)(a2 + 120);
  47646. }
  47647.  
  47648. //----- (08080A44) --------------------------------------------------------
  47649. void __cdecl DBCreateCharOp::SetFaceColor(int Color, char Colora)
  47650. {
  47651. *(_BYTE *)(Color + 121) = Colora;
  47652. }
  47653.  
  47654. //----- (08080A54) --------------------------------------------------------
  47655. int __cdecl DBCreateCharOp::GetFaceColor(int a2)
  47656. {
  47657. return *(unsigned __int8 *)(a2 + 121);
  47658. }
  47659.  
  47660. //----- (08080A60) --------------------------------------------------------
  47661. void __cdecl DBCreateCharOp::SetHairModel(int Model, char Modela)
  47662. {
  47663. *(_BYTE *)(Model + 122) = Modela;
  47664. }
  47665.  
  47666. //----- (08080A70) --------------------------------------------------------
  47667. int __cdecl DBCreateCharOp::GetHairModel(int a2)
  47668. {
  47669. return *(unsigned __int8 *)(a2 + 122);
  47670. }
  47671.  
  47672. //----- (08080A7C) --------------------------------------------------------
  47673. void __cdecl DBCreateCharOp::SetFaceModel(int Model, char Modela)
  47674. {
  47675. *(_BYTE *)(Model + 123) = Modela;
  47676. }
  47677.  
  47678. //----- (08080A8C) --------------------------------------------------------
  47679. int __cdecl DBCreateCharOp::GetFaceModel(int a2)
  47680. {
  47681. return *(unsigned __int8 *)(a2 + 123);
  47682. }
  47683.  
  47684. //----- (08080A98) --------------------------------------------------------
  47685. void __cdecl DBCreateCharOp::SetHeadID(int Head, char Heada)
  47686. {
  47687. *(_BYTE *)(Head + 128) = Heada;
  47688. }
  47689.  
  47690. //----- (08080AAC) --------------------------------------------------------
  47691. int __cdecl DBCreateCharOp::GetHeadID(int a2)
  47692. {
  47693. return *(unsigned __int8 *)(a2 + 128);
  47694. }
  47695.  
  47696. //----- (08080ABC) --------------------------------------------------------
  47697. void __cdecl DBCreateCharOp::SetDefEquip(int a3, int a4)
  47698. {
  47699. *(_DWORD *)(a3 + 124) = a4;
  47700. }
  47701.  
  47702. //----- (08080ACC) --------------------------------------------------------
  47703. INT __cdecl DBCreateCharOp::GetDefEquip(int a2)
  47704. {
  47705. return *(_DWORD *)(a2 + 124);
  47706. }
  47707.  
  47708. //----- (08080AD8) --------------------------------------------------------
  47709. void __cdecl _tcf_0_105(void *a1)
  47710. {
  47711. std::ios_base::Init::~Init(&std::__ioinit);
  47712. }
  47713.  
  47714. //----- (08080AE8) --------------------------------------------------------
  47715. void `global constructor keyed to'DBCreateCharOp::DBCreateCharOp()
  47716. {
  47717. std::ios_base::Init::Init(&std::__ioinit);
  47718. __cxa_atexit(_tcf_0_105, 0, &_dso_handle);
  47719. }
  47720. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  47721.  
  47722. //----- (08080B14) --------------------------------------------------------
  47723. void __cdecl DBDeleteCharOp::DBDeleteCharOp(DBDeleteCharOp *const this, ODBCInterface *pInterface)
  47724. {
  47725. ODBCBase::ODBCBase(this);
  47726. this->_vptr_ODBCBase = (int (**)(...))off_80D42D0;
  47727. this->mDBName = 1;
  47728. this->mResult = 0;
  47729. this->mResultCount = 0;
  47730. this->m_Account[0] = 0;
  47731. this->m_AID = 0;
  47732. if ( !pInterface )
  47733. __assert__(
  47734. "../../Common/DBSystem/DataBase/DBDeleteCharOp.cpp",
  47735. 0x1Du,
  47736. "DBDeleteCharOp::DBDeleteCharOp(ODBCInterface*)",
  47737. "pInterface");
  47738. this->mInterface = pInterface;
  47739. this->m_CharGuid = -1;
  47740. this->m_NeedTime = 0;
  47741. }
  47742. // 80D42D0: using guessed type _DWORD (__cdecl *off_80D42D0[3])(DBDeleteCharOp *this);
  47743.  
  47744. //----- (08080BC8) --------------------------------------------------------
  47745. void __cdecl DBDeleteCharOp::DBDeleteCharOp(DBDeleteCharOp *const this, ODBCInterface *pInterface)
  47746. {
  47747. ODBCBase::ODBCBase(this);
  47748. this->_vptr_ODBCBase = (int (**)(...))off_80D42D0;
  47749. this->mDBName = 1;
  47750. this->mResult = 0;
  47751. this->mResultCount = 0;
  47752. this->m_Account[0] = 0;
  47753. this->m_AID = 0;
  47754. if ( !pInterface )
  47755. __assert__(
  47756. "../../Common/DBSystem/DataBase/DBDeleteCharOp.cpp",
  47757. 0x1Du,
  47758. "DBDeleteCharOp::DBDeleteCharOp(ODBCInterface*)",
  47759. "pInterface");
  47760. this->mInterface = pInterface;
  47761. this->m_CharGuid = -1;
  47762. this->m_NeedTime = 0;
  47763. }
  47764. // 80D42D0: using guessed type _DWORD (__cdecl *off_80D42D0[3])(DBDeleteCharOp *this);
  47765.  
  47766. //----- (08080C7C) --------------------------------------------------------
  47767. #error "8080D04: positive sp value has been found (funcsize=42)"
  47768.  
  47769. //----- (08080D3C) --------------------------------------------------------
  47770. int __cdecl DBDeleteCharOp::AddNew(DBDeleteCharOp *const this)
  47771. {
  47772. return 1;
  47773. }
  47774.  
  47775. //----- (08080D48) --------------------------------------------------------
  47776. int __cdecl DBDeleteCharOp::Delete(DBDeleteCharOp *const this)
  47777. {
  47778. DB_QUERY *v1; // eax
  47779. DB_QUERY *v2; // ebx
  47780. int v3; // edx
  47781. BOOL v5; // eax
  47782. UINT v6; // ST14_4
  47783.  
  47784. v1 = ODBCBase::GetInternalQuery((int)this);
  47785. v2 = v1;
  47786. if ( !v1 )
  47787. __assert__(
  47788. "../../Common/DBSystem/DataBase/DBDeleteCharOp.cpp",
  47789. 0x4Eu,
  47790. "virtual int DBDeleteCharOp::Delete()",
  47791. "FALSE");
  47792. memset(v1, 0, 0x1000u);
  47793. v3 = 0;
  47794. if ( this->m_Account[0] )
  47795. {
  47796. v5 = StrSafeCheck(this->m_Account, 0x33u);
  47797. v3 = 0;
  47798. if ( v5 )
  47799. {
  47800. v6 = TimeManager::GetDayTime(g_pTimeManager) + 14;
  47801. DB_QUERY::Parse(v2, DeleteBaseChar, "", this->m_Account, this->m_CharGuid);
  47802. v3 = ODBCBase::Delete(&this->0);
  47803. }
  47804. }
  47805. return v3;
  47806. }
  47807.  
  47808. //----- (08080E48) --------------------------------------------------------
  47809. int __cdecl DBDeleteCharOp::ParseResult(DBDeleteCharOp *const this, void *pResult)
  47810. {
  47811. int v2; // edx
  47812. int v4; // eax
  47813. INT iNext; // ST28_4
  47814. int v6; // eax
  47815. int v7; // eax
  47816. int v8; // eax
  47817. int v9; // eax
  47818. int v10; // eax
  47819. int v11; // eax
  47820. int v12; // eax
  47821. int v13; // eax
  47822. int v14; // eax
  47823. int iDBVersion; // [esp+4h] [ebp-154h]
  47824. INT ErrorCode; // [esp+Ch] [ebp-14Ch]
  47825. DBCharExtraInfo ExtraObject; // [esp+10h] [ebp-148h]
  47826. DBPetList PetListObject; // [esp+30h] [ebp-128h]
  47827. DBImpactList ImpactListObject; // [esp+50h] [ebp-108h]
  47828. DBRelationList RelationListObject; // [esp+70h] [ebp-E8h]
  47829. DBTaskList TaskListObject; // [esp+90h] [ebp-C8h]
  47830. DBAbilityList AbilityListObject; // [esp+B0h] [ebp-A8h]
  47831. DBXinFaList XinFaListObject; // [esp+D0h] [ebp-88h]
  47832. DBSkillList SkillListObject; // [esp+F0h] [ebp-68h]
  47833. DBItemList ItemListObject; // [esp+110h] [ebp-48h]
  47834.  
  47835. if ( this->mOPType != 3 )
  47836. {
  47837. LABEL_2:
  47838. if ( !this->mInterface )
  47839. __assert__(
  47840. "../../Common/DBSystem/DataBase/DBDeleteCharOp.cpp",
  47841. 0xE7u,
  47842. "virtual int DBDeleteCharOp::ParseResult(void*)",
  47843. "mInterface");
  47844. ODBCInterface::Clear(this->mInterface);
  47845. return 1;
  47846. }
  47847. if ( !pResult )
  47848. __assert__(
  47849. "../../Common/DBSystem/DataBase/DBDeleteCharOp.cpp",
  47850. 0x76u,
  47851. "virtual int DBDeleteCharOp::ParseResult(void*)",
  47852. "pAskResult");
  47853. if ( this->mResultCount > 1 )
  47854. __assert__(
  47855. "../../Common/DBSystem/DataBase/DBDeleteCharOp.cpp",
  47856. 0x7Fu,
  47857. "virtual int DBDeleteCharOp::ParseResult(void*)",
  47858. "mResultCount<=1");
  47859. if ( !this->mInterface )
  47860. __assert__(
  47861. "../../Common/DBSystem/DataBase/DBDeleteCharOp.cpp",
  47862. 0x80u,
  47863. "virtual int DBDeleteCharOp::ParseResult(void*)",
  47864. "mInterface");
  47865. v4 = ODBCInterface::Fetch(this->mInterface);
  47866. v2 = 0;
  47867. if ( v4 )
  47868. {
  47869. iNext = ODBCInterface::GetInt(this->mInterface, 1, &ErrorCode);
  47870. iDBVersion = ODBCInterface::GetInt(this->mInterface, 2, &ErrorCode);
  47871. ODBCInterface::Clear(this->mInterface);
  47872. if ( iNext <= 0 || iDBVersion < 0 )
  47873. *(_DWORD *)pResult = 6;
  47874. else
  47875. *(_DWORD *)pResult = 0;
  47876. if ( !*(_DWORD *)pResult )
  47877. {
  47878. DBItemList::DBItemList(&ItemListObject, this->mInterface);
  47879. DBItemList::SetCharGuid((int)&ItemListObject, this->m_CharGuid);
  47880. DBItemList::SetDBVersion((int)&ItemListObject, iDBVersion);
  47881. v6 = DBItemList::Delete(&ItemListObject);
  47882. v2 = 0;
  47883. if ( !v6 )
  47884. return v2;
  47885. DBItemList::ParseResult(&ItemListObject, pResult);
  47886. DBSkillList::DBSkillList(&SkillListObject, this->mInterface);
  47887. DBSkillList::SetCharGuid((int)&SkillListObject, this->m_CharGuid);
  47888. DBSkillList::SetDBVersion((int)&SkillListObject, iDBVersion);
  47889. v7 = DBSkillList::Delete(&SkillListObject);
  47890. v2 = 0;
  47891. if ( !v7 )
  47892. return v2;
  47893. DBSkillList::ParseResult(&SkillListObject, pResult);
  47894. DBXinFaList::DBXinFaList(&XinFaListObject, this->mInterface);
  47895. DBXinFaList::SetCharGuid((int)&XinFaListObject, this->m_CharGuid);
  47896. DBXinFaList::SetDBVersion((int)&XinFaListObject, iDBVersion);
  47897. v8 = DBXinFaList::Delete(&XinFaListObject);
  47898. v2 = 0;
  47899. if ( !v8 )
  47900. return v2;
  47901. DBXinFaList::ParseResult(&XinFaListObject, pResult);
  47902. DBAbilityList::DBAbilityList(&AbilityListObject, this->mInterface);
  47903. DBAbilityList::SetCharGuid((int)&AbilityListObject, this->m_CharGuid);
  47904. DBAbilityList::SetDBVersion((int)&AbilityListObject, iDBVersion);
  47905. v9 = DBAbilityList::Delete(&AbilityListObject);
  47906. v2 = 0;
  47907. if ( !v9 )
  47908. return v2;
  47909. DBAbilityList::ParseResult(&AbilityListObject, pResult);
  47910. DBTaskList::DBTaskList(&TaskListObject, this->mInterface);
  47911. DBTaskList::SetCharGuid((int)&TaskListObject, this->m_CharGuid);
  47912. DBTaskList::SetDBVersion((int)&TaskListObject, iDBVersion);
  47913. v10 = DBTaskList::Delete(&TaskListObject);
  47914. v2 = 0;
  47915. if ( !v10 )
  47916. return v2;
  47917. DBTaskList::ParseResult(&TaskListObject, pResult);
  47918. DBRelationList::DBRelationList(&RelationListObject, this->mInterface);
  47919. DBRelationList::SetCharGuid((int)&RelationListObject, this->m_CharGuid);
  47920. DBRelationList::SetDBVersion((int)&RelationListObject, iDBVersion);
  47921. v11 = DBRelationList::Delete(&RelationListObject);
  47922. v2 = 0;
  47923. if ( !v11 )
  47924. return v2;
  47925. DBRelationList::ParseResult(&RelationListObject, pResult);
  47926. DBImpactList::DBImpactList(&ImpactListObject, this->mInterface);
  47927. DBImpactList::SetCharGuid((int)&ImpactListObject, this->m_CharGuid);
  47928. DBImpactList::SetDBVersion((int)&ImpactListObject, iDBVersion);
  47929. v12 = DBImpactList::Delete(&ImpactListObject);
  47930. v2 = 0;
  47931. if ( !v12 )
  47932. return v2;
  47933. DBImpactList::ParseResult(&ImpactListObject, pResult);
  47934. DBPetList::DBPetList(&PetListObject, this->mInterface);
  47935. DBPetList::SetCharGuid((int)&PetListObject, this->m_CharGuid);
  47936. DBPetList::SetDBVersion((int)&PetListObject, iDBVersion);
  47937. v13 = DBPetList::Delete(&PetListObject);
  47938. v2 = 0;
  47939. if ( !v13 )
  47940. return v2;
  47941. DBPetList::ParseResult(&PetListObject, pResult);
  47942. DBCharExtraInfo::DBCharExtraInfo(&ExtraObject, this->mInterface);
  47943. DBCharExtraInfo::SetCharGuid((int)&ExtraObject, this->m_CharGuid);
  47944. DBCharExtraInfo::SetDBVersion((int)&ExtraObject, iDBVersion);
  47945. v14 = DBCharExtraInfo::Delete(&ExtraObject);
  47946. v2 = 0;
  47947. if ( !v14 )
  47948. return v2;
  47949. DBCharExtraInfo::ParseResult(&ExtraObject, pResult);
  47950. }
  47951. goto LABEL_2;
  47952. }
  47953. return v2;
  47954. }
  47955.  
  47956. //----- (08081280) --------------------------------------------------------
  47957. const CHAR *__cdecl DBDeleteCharOp::GetAccount(const DBDeleteCharOp *const this)
  47958. {
  47959. return this->m_Account;
  47960. }
  47961.  
  47962. //----- (0808128C) --------------------------------------------------------
  47963. void __cdecl DBDeleteCharOp::SetAccount(DBDeleteCharOp *const this, const CHAR *pAccount)
  47964. {
  47965. if ( !pAccount )
  47966. __assert__(
  47967. "../../Common/DBSystem/DataBase/DBDeleteCharOp.cpp",
  47968. 0xF6u,
  47969. "void DBDeleteCharOp::SetAccount(const CHAR*)",
  47970. "pAccount");
  47971. strncpy(this->m_Account, pAccount, 0x32u);
  47972. this->m_Account[50] = 0;
  47973. }
  47974.  
  47975. //----- (080812D4) --------------------------------------------------------
  47976. GUID_t __cdecl DBDeleteCharOp::GetCharGuid(int a2)
  47977. {
  47978. return *(_DWORD *)(a2 + 80);
  47979. }
  47980.  
  47981. //----- (080812E0) --------------------------------------------------------
  47982. void __cdecl DBDeleteCharOp::SetCharGuid(int a3, int a4)
  47983. {
  47984. *(_DWORD *)(a3 + 80) = a4;
  47985. }
  47986.  
  47987. //----- (080812F0) --------------------------------------------------------
  47988. void __cdecl DBDeleteCharOp::SetNeedTime(int a3, int a4)
  47989. {
  47990. *(_DWORD *)(a3 + 84) = a4;
  47991. }
  47992.  
  47993. //----- (08081300) --------------------------------------------------------
  47994. void __cdecl _tcf_0_106(void *a1)
  47995. {
  47996. std::ios_base::Init::~Init(&std::__ioinit);
  47997. }
  47998.  
  47999. //----- (08081310) --------------------------------------------------------
  48000. void `global constructor keyed to'DBDeleteCharOp::DBDeleteCharOp()
  48001. {
  48002. std::ios_base::Init::Init(&std::__ioinit);
  48003. __cxa_atexit(_tcf_0_106, 0, &_dso_handle);
  48004. }
  48005. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  48006.  
  48007. //----- (0808133C) --------------------------------------------------------
  48008. void __cdecl DBEquipBaseList::DBEquipBaseList(DBEquipBaseList *const this, ODBCInterface *pInterface)
  48009. {
  48010. ODBCBase::ODBCBase(this);
  48011. this->_vptr_ODBCBase = (int (**)(...))&off_80D44A8;
  48012. this->mDBName = 1;
  48013. this->mResult = 0;
  48014. this->mResultCount = 0;
  48015. this->m_CharGuid = -1;
  48016. if ( !pInterface )
  48017. __assert__(
  48018. "../../Common/DBSystem/DataBase/DBEquipBaseList.cpp",
  48019. 0xDu,
  48020. "DBEquipBaseList::DBEquipBaseList(ODBCInterface*)",
  48021. "pInterface");
  48022. this->mInterface = pInterface;
  48023. }
  48024. // 80D44A8: using guessed type _DWORD (__cdecl *off_80D44A8)(DBEquipBaseList *this);
  48025.  
  48026. //----- (080813A0) --------------------------------------------------------
  48027. void __cdecl DBEquipBaseList::DBEquipBaseList(DBEquipBaseList *const this, ODBCInterface *pInterface)
  48028. {
  48029. ODBCBase::ODBCBase(this);
  48030. this->_vptr_ODBCBase = (int (**)(...))&off_80D44A8;
  48031. this->mDBName = 1;
  48032. this->mResult = 0;
  48033. this->mResultCount = 0;
  48034. this->m_CharGuid = -1;
  48035. if ( !pInterface )
  48036. __assert__(
  48037. "../../Common/DBSystem/DataBase/DBEquipBaseList.cpp",
  48038. 0xDu,
  48039. "DBEquipBaseList::DBEquipBaseList(ODBCInterface*)",
  48040. "pInterface");
  48041. this->mInterface = pInterface;
  48042. }
  48043. // 80D44A8: using guessed type _DWORD (__cdecl *off_80D44A8)(DBEquipBaseList *this);
  48044.  
  48045. //----- (08081404) --------------------------------------------------------
  48046. #error "8081490: positive sp value has been found (funcsize=42)"
  48047.  
  48048. //----- (080814C8) --------------------------------------------------------
  48049. int __cdecl DBEquipBaseList::Save(DBEquipBaseList *const this)
  48050. {
  48051. return 1;
  48052. }
  48053.  
  48054. //----- (080814D4) --------------------------------------------------------
  48055. int __cdecl DBEquipBaseList::ParseResult(DBEquipBaseList *const this, void *pResult)
  48056. {
  48057. UINT GemID; // [esp+4h] [ebp-24h]
  48058. __int16 v4; // [esp+8h] [ebp-20h]
  48059. UINT Pos; // [esp+Ch] [ebp-1Ch]
  48060. UINT ItemType; // [esp+10h] [ebp-18h]
  48061. INT i; // [esp+14h] [ebp-14h]
  48062. INT ErrorCode; // [esp+18h] [ebp-10h]
  48063.  
  48064. if ( !pResult )
  48065. __assert__(
  48066. "../../Common/DBSystem/DataBase/DBEquipBaseList.cpp",
  48067. 0x3Au,
  48068. "virtual int DBEquipBaseList::ParseResult(void*)",
  48069. "pCharEquipList");
  48070. if ( this->mResultCount > 19 )
  48071. __assert__(
  48072. "../../Common/DBSystem/DataBase/DBEquipBaseList.cpp",
  48073. 0x45u,
  48074. "virtual int DBEquipBaseList::ParseResult(void*)",
  48075. "mResultCount<=HEQUIP_NUMBER");
  48076. if ( !this->mInterface )
  48077. __assert__(
  48078. "../../Common/DBSystem/DataBase/DBEquipBaseList.cpp",
  48079. 0x46u,
  48080. "virtual int DBEquipBaseList::ParseResult(void*)",
  48081. "mInterface");
  48082. i = 0;
  48083. do
  48084. {
  48085. if ( !ODBCInterface::Fetch(this->mInterface) )
  48086. break;
  48087. ItemType = ODBCInterface::GetUInt(this->mInterface, 1, &ErrorCode);
  48088. Pos = ODBCInterface::GetUInt(this->mInterface, 2, &ErrorCode);
  48089. v4 = ODBCInterface::GetInt(this->mInterface, 3, &ErrorCode);
  48090. GemID = ODBCInterface::GetUInt(this->mInterface, 4, &ErrorCode);
  48091. if ( Pos <= 0x63 )
  48092. __assert__(
  48093. "../../Common/DBSystem/DataBase/DBEquipBaseList.cpp",
  48094. 0x54u,
  48095. "virtual int DBEquipBaseList::ParseResult(void*)",
  48096. "Pos>=DB_EQUIP_POS_START");
  48097. if ( Pos > 0x75 )
  48098. __assert__(
  48099. "../../Common/DBSystem/DataBase/DBEquipBaseList.cpp",
  48100. 0x55u,
  48101. "virtual int DBEquipBaseList::ParseResult(void*)",
  48102. "Pos<DB_EQUIP_POS_END");
  48103. *((_DWORD *)pResult + Pos - 100) = ItemType;
  48104. ++i;
  48105. *((_WORD *)pResult + Pos - 62) = v4;
  48106. *((_DWORD *)pResult + Pos - 71) = GemID;
  48107. }
  48108. while ( i <= 18 );
  48109. ODBCInterface::Clear(this->mInterface);
  48110. return 1;
  48111. }
  48112.  
  48113. //----- (080816A4) --------------------------------------------------------
  48114. GUID_t __cdecl DBEquipBaseList::GetCharGuid(int a2)
  48115. {
  48116. return *(_DWORD *)(a2 + 24);
  48117. }
  48118.  
  48119. //----- (080816B0) --------------------------------------------------------
  48120. void __cdecl DBEquipBaseList::SetCharGuid(int a3, int a4)
  48121. {
  48122. *(_DWORD *)(a3 + 24) = a4;
  48123. }
  48124.  
  48125. //----- (080816C0) --------------------------------------------------------
  48126. void __cdecl _tcf_0_107(void *a1)
  48127. {
  48128. std::ios_base::Init::~Init(&std::__ioinit);
  48129. }
  48130.  
  48131. //----- (080816D0) --------------------------------------------------------
  48132. void `global constructor keyed to'DBEquipBaseList::DBEquipBaseList()
  48133. {
  48134. std::ios_base::Init::Init(&std::__ioinit);
  48135. __cxa_atexit(_tcf_0_107, 0, &_dso_handle);
  48136. }
  48137. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  48138.  
  48139. //----- (080816FC) --------------------------------------------------------
  48140. void __cdecl DBFatigueInfo::DBFatigueInfo(DBFatigueInfo *const this, ODBCInterface *pInterface)
  48141. {
  48142. ODBCBase::ODBCBase(this);
  48143. this->_vptr_ODBCBase = (int (**)(...))&off_80D4618;
  48144. this->mDBName = 1;
  48145. this->mResult = 0;
  48146. this->mResultCount = 0;
  48147. this->m_CharGuid = -1;
  48148. this->m_DBVersion = 0;
  48149. if ( !pInterface )
  48150. __assert__(
  48151. "../../Common/DBSystem/DataBase/DBFatigueInfo.cpp",
  48152. 0xEu,
  48153. "DBFatigueInfo::DBFatigueInfo(ODBCInterface*)",
  48154. "pInterface");
  48155. this->mInterface = pInterface;
  48156. }
  48157. // 80D4618: using guessed type _DWORD (__cdecl *off_80D4618)(DBFatigueInfo *this);
  48158.  
  48159. //----- (08081768) --------------------------------------------------------
  48160. void __cdecl DBFatigueInfo::DBFatigueInfo(DBFatigueInfo *const this, ODBCInterface *pInterface)
  48161. {
  48162. ODBCBase::ODBCBase(this);
  48163. this->_vptr_ODBCBase = (int (**)(...))&off_80D4618;
  48164. this->mDBName = 1;
  48165. this->mResult = 0;
  48166. this->mResultCount = 0;
  48167. this->m_CharGuid = -1;
  48168. this->m_DBVersion = 0;
  48169. if ( !pInterface )
  48170. __assert__(
  48171. "../../Common/DBSystem/DataBase/DBFatigueInfo.cpp",
  48172. 0xEu,
  48173. "DBFatigueInfo::DBFatigueInfo(ODBCInterface*)",
  48174. "pInterface");
  48175. this->mInterface = pInterface;
  48176. }
  48177. // 80D4618: using guessed type _DWORD (__cdecl *off_80D4618)(DBFatigueInfo *this);
  48178.  
  48179. //----- (080817D4) --------------------------------------------------------
  48180. #error "808185C: positive sp value has been found (funcsize=41)"
  48181.  
  48182. //----- (08081894) --------------------------------------------------------
  48183. int __cdecl DBFatigueInfo::Save(DBFatigueInfo *const this, void *pSource)
  48184. {
  48185. DB_QUERY *v2; // eax
  48186. DB_QUERY *v3; // esi
  48187. CHAR FatigueInfo[2048]; // [esp+10h] [ebp-818h]
  48188.  
  48189. if ( !pSource )
  48190. __assert__(
  48191. "../../Common/DBSystem/DataBase/DBFatigueInfo.cpp",
  48192. 0x38u,
  48193. "virtual int DBFatigueInfo::Save(void*)",
  48194. "pCharFullData");
  48195. memset(FatigueInfo, 0, 0x800u);
  48196. Binary2String((const CHAR *)pSource + 1642, 0x10u, FatigueInfo);
  48197. v2 = ODBCBase::GetInternalQuery((int)this);
  48198. v3 = v2;
  48199. if ( !v2 )
  48200. __assert__(
  48201. "../../Common/DBSystem/DataBase/DBFatigueInfo.cpp",
  48202. 0x47u,
  48203. "virtual int DBFatigueInfo::Save(void*)",
  48204. "FALSE");
  48205. memset(v2, 0, 0x1000u);
  48206. DB_QUERY::Parse(v3, UpdateCharFatigueInfo, "t_char", FatigueInfo, this->m_CharGuid, this->m_DBVersion);
  48207. return ODBCBase::Save(&this->0, pSource) != 0;
  48208. }
  48209.  
  48210. //----- (080819C4) --------------------------------------------------------
  48211. int __cdecl DBFatigueInfo::Delete(DBFatigueInfo *const this)
  48212. {
  48213. return 1;
  48214. }
  48215.  
  48216. //----- (080819D0) --------------------------------------------------------
  48217. int __cdecl DBFatigueInfo::ParseResult(DBFatigueInfo *const this, void *pResult)
  48218. {
  48219. INT ErrorCode; // [esp+8h] [ebp-10h]
  48220.  
  48221. if ( this->mOPType == DB_LOAD )
  48222. {
  48223. if ( !pResult )
  48224. __assert__(
  48225. "../../Common/DBSystem/DataBase/DBFatigueInfo.cpp",
  48226. 0x73u,
  48227. "virtual int DBFatigueInfo::ParseResult(void*)",
  48228. "pCharFullData");
  48229. if ( !this->mInterface )
  48230. __assert__(
  48231. "../../Common/DBSystem/DataBase/DBFatigueInfo.cpp",
  48232. 0x7Du,
  48233. "virtual int DBFatigueInfo::ParseResult(void*)",
  48234. "mInterface");
  48235. if ( ODBCInterface::Fetch(this->mInterface) )
  48236. {
  48237. ODBCInterface::GetUInt(this->mInterface, 1, &ErrorCode);
  48238. ODBCInterface::GetField(this->mInterface, 2, (CHAR *)pResult + 1642, 16, &ErrorCode);
  48239. }
  48240. ODBCInterface::Clear(this->mInterface);
  48241. }
  48242. if ( !this->mInterface )
  48243. __assert__(
  48244. "../../Common/DBSystem/DataBase/DBFatigueInfo.cpp",
  48245. 0x97u,
  48246. "virtual int DBFatigueInfo::ParseResult(void*)",
  48247. "mInterface");
  48248. ODBCInterface::Clear(this->mInterface);
  48249. return 1;
  48250. }
  48251.  
  48252. //----- (08081B04) --------------------------------------------------------
  48253. GUID_t __cdecl DBFatigueInfo::GetCharGuid(int a2)
  48254. {
  48255. return *(_DWORD *)(a2 + 24);
  48256. }
  48257.  
  48258. //----- (08081B10) --------------------------------------------------------
  48259. void __cdecl DBFatigueInfo::SetCharGuid(int a3, int a4)
  48260. {
  48261. *(_DWORD *)(a3 + 24) = a4;
  48262. }
  48263.  
  48264. //----- (08081B20) --------------------------------------------------------
  48265. UINT __cdecl DBFatigueInfo::GetDBVersion(int a2)
  48266. {
  48267. return *(_DWORD *)(a2 + 28);
  48268. }
  48269.  
  48270. //----- (08081B2C) --------------------------------------------------------
  48271. void __cdecl DBFatigueInfo::SetDBVersion(int a3, int a4)
  48272. {
  48273. *(_DWORD *)(a3 + 28) = a4;
  48274. }
  48275.  
  48276. //----- (08081B3C) --------------------------------------------------------
  48277. void __cdecl _tcf_0_108(void *a1)
  48278. {
  48279. std::ios_base::Init::~Init(&std::__ioinit);
  48280. }
  48281.  
  48282. //----- (08081B4C) --------------------------------------------------------
  48283. void `global constructor keyed to'DBFatigueInfo::DBFatigueInfo()
  48284. {
  48285. std::ios_base::Init::Init(&std::__ioinit);
  48286. __cxa_atexit(_tcf_0_108, 0, &_dso_handle);
  48287. }
  48288. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  48289.  
  48290. //----- (08081B78) --------------------------------------------------------
  48291. void __cdecl DBGeneralSet::DBGeneralSet(DBGeneralSet *const this, ODBCInterface *pInterface)
  48292. {
  48293. ODBCBase::ODBCBase(this);
  48294. this->_vptr_ODBCBase = (int (**)(...))off_80D47D0;
  48295. this->mDBName = 1;
  48296. this->mResult = 0;
  48297. this->mResultCount = 0;
  48298. if ( !pInterface )
  48299. __assert__(
  48300. "../../Common/DBSystem/DataBase/DBGeneralSet.cpp",
  48301. 0x1Au,
  48302. "DBGeneralSet::DBGeneralSet(ODBCInterface*)",
  48303. "pInterface");
  48304. this->mInterface = pInterface;
  48305. }
  48306. // 80D47D0: using guessed type _DWORD (__cdecl *off_80D47D0[3])(ODBCBase *this);
  48307.  
  48308. //----- (08081BD4) --------------------------------------------------------
  48309. void __cdecl DBGeneralSet::DBGeneralSet(DBGeneralSet *const this, ODBCInterface *pInterface)
  48310. {
  48311. ODBCBase::ODBCBase(this);
  48312. this->_vptr_ODBCBase = (int (**)(...))off_80D47D0;
  48313. this->mDBName = 1;
  48314. this->mResult = 0;
  48315. this->mResultCount = 0;
  48316. if ( !pInterface )
  48317. __assert__(
  48318. "../../Common/DBSystem/DataBase/DBGeneralSet.cpp",
  48319. 0x1Au,
  48320. "DBGeneralSet::DBGeneralSet(ODBCInterface*)",
  48321. "pInterface");
  48322. this->mInterface = pInterface;
  48323. }
  48324. // 80D47D0: using guessed type _DWORD (__cdecl *off_80D47D0[3])(ODBCBase *this);
  48325.  
  48326. //----- (08081C30) --------------------------------------------------------
  48327. int __cdecl DBGeneralSet::MySave(DBGeneralSet *const this, DBGeneralSet::GSET_TYPE tKey, INT nVal)
  48328. {
  48329. int result; // eax
  48330. LONG_DB_QUERY *v4; // edi
  48331. INT nResult; // [esp+8h] [ebp-10h]
  48332.  
  48333. result = 0;
  48334. if ( (unsigned int)tKey <= 5 )
  48335. {
  48336. v4 = ODBCBase::GetLongInterQuery((int)this);
  48337. if ( !v4 )
  48338. __assert__(
  48339. "../../Common/DBSystem/DataBase/DBGeneralSet.cpp",
  48340. 0x29u,
  48341. "int DBGeneralSet::MySave(DBGeneralSet::GSET_TYPE, INT)",
  48342. "pQuery");
  48343. ODBCInterface::Clear(this->mInterface);
  48344. ODBCBase::CheckDBConnect(&this->0, "DBGeneralSet");
  48345. memset(v4, 0, 0x32000u);
  48346. LONG_DB_QUERY::Parse(v4, SaveTGeneralSet, &GSET_KEY[32 * tKey], nVal);
  48347. result = ODBCBase::LongSave(&this->0, &nResult);
  48348. }
  48349. return result;
  48350. }
  48351.  
  48352. //----- (08081D20) --------------------------------------------------------
  48353. int __cdecl DBGeneralSet::MyLoad(DBGeneralSet *const this, DBGeneralSet::GSET_TYPE tKey, INT *const pVal)
  48354. {
  48355. int v3; // edx
  48356. LONG_DB_QUERY *v5; // eax
  48357. LONG_DB_QUERY *v6; // esi
  48358. int v7; // eax
  48359. int v8; // eax
  48360. INT nErrorCode; // [esp+8h] [ebp-10h]
  48361.  
  48362. v3 = 0;
  48363. if ( (unsigned int)tKey <= 5 )
  48364. {
  48365. v5 = ODBCBase::GetLongInterQuery((int)this);
  48366. v6 = v5;
  48367. if ( !v5 )
  48368. __assert__(
  48369. "../../Common/DBSystem/DataBase/DBGeneralSet.cpp",
  48370. 0x45u,
  48371. "int DBGeneralSet::MyLoad(DBGeneralSet::GSET_TYPE, INT&)",
  48372. "pQuery");
  48373. memset(v5, 0, 0x32000u);
  48374. LONG_DB_QUERY::Parse(v6, LoadTGeneralSet, "t_general_set", &GSET_KEY[32 * tKey]);
  48375. v7 = ODBCBase::LongLoad(&this->0);
  48376. v3 = 0;
  48377. if ( v7 )
  48378. {
  48379. v8 = ODBCInterface::Fetch(this->mInterface);
  48380. v3 = 0;
  48381. if ( v8 )
  48382. {
  48383. *pVal = ODBCInterface::GetInt(this->mInterface, 1, &nErrorCode);
  48384. ODBCInterface::Clear(this->mInterface);
  48385. v3 = 1;
  48386. }
  48387. }
  48388. }
  48389. return v3;
  48390. }
  48391.  
  48392. //----- (08081E3C) --------------------------------------------------------
  48393. int __cdecl DBGeneralSet::SetValue(DBGeneralSet *const this, DBGeneralSet::GSET_TYPE tKey, INT nVal)
  48394. {
  48395. int v3; // edi
  48396.  
  48397. v3 = DBGeneralSet::MySave(this, tKey, nVal);
  48398. if ( v3 )
  48399. DiskLog("./Log/ShareMemory", "DBGeneralSet::SetValue(%d,%d) Successful!", tKey, nVal);
  48400. else
  48401. DiskLog("./Log/ShareMemory", "DBGeneralSet::SetValue(%d,%d) UnSuccessful!", tKey, nVal);
  48402. return v3;
  48403. }
  48404.  
  48405. //----- (08081ED0) --------------------------------------------------------
  48406. int __cdecl DBGeneralSet::GetValue(DBGeneralSet *const this, DBGeneralSet::GSET_TYPE tKey, INT *const pVal)
  48407. {
  48408. int v3; // edi
  48409.  
  48410. v3 = DBGeneralSet::MyLoad(this, tKey, pVal);
  48411. if ( v3 )
  48412. DiskLog("./Log/ShareMemory", "DBGeneralSet::GetValue(%d) = %d Successful!", tKey, *pVal);
  48413. else
  48414. DiskLog("./Log/ShareMemory", "DBGeneralSet::GetValue(%d) UnSuccessful!", tKey, 0);
  48415. return v3;
  48416. }
  48417.  
  48418. //----- (08081F68) --------------------------------------------------------
  48419. int __cdecl DBGeneralSet::ParseResult(DBGeneralSet *const this, void *pResult)
  48420. {
  48421. return 1;
  48422. }
  48423.  
  48424. //----- (08081F74) --------------------------------------------------------
  48425. void __cdecl _tcf_0_109(void *a1)
  48426. {
  48427. std::ios_base::Init::~Init(&std::__ioinit);
  48428. }
  48429.  
  48430. //----- (08081F84) --------------------------------------------------------
  48431. void `global constructor keyed to'DBGeneralSet::DBGeneralSet()
  48432. {
  48433. std::ios_base::Init::Init(&std::__ioinit);
  48434. __cxa_atexit(_tcf_0_109, 0, &_dso_handle);
  48435. }
  48436. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  48437.  
  48438. //----- (08081FB0) --------------------------------------------------------
  48439. void __cdecl DBImmigration::DBImmigration(DBImmigration *const this, ODBCInterface *pInterface)
  48440. {
  48441. CHAR *v2; // edi
  48442. CHAR *v3; // edi
  48443.  
  48444. ODBCBase::ODBCBase(this);
  48445. this->_vptr_ODBCBase = (int (**)(...))off_80D4A90;
  48446. this->mDBName = 1;
  48447. this->mResult = 0;
  48448. this->mResultCount = 0;
  48449. memset(this->m_Account, 0, 0x30u);
  48450. v2 = &this->m_Account[48];
  48451. *(_WORD *)v2 = 0;
  48452. v2[2] = 0;
  48453. memset(this->m_CharName, 0, 0x1Cu);
  48454. v3 = &this->m_CharName[28];
  48455. *(_WORD *)v3 = 0;
  48456. v3[2] = 0;
  48457. this->m_CreateTime = 0;
  48458. this->m_CharGuid = -1;
  48459. if ( !pInterface )
  48460. __assert__(
  48461. "../../Common/DBSystem/DataBase/DBImmigration.cpp",
  48462. 0x15u,
  48463. "DBImmigration::DBImmigration(ODBCInterface*)",
  48464. "pInterface");
  48465. this->mInterface = pInterface;
  48466. }
  48467. // 80D4A90: using guessed type _DWORD (__cdecl *off_80D4A90[2])(DBImmigration *this);
  48468.  
  48469. //----- (08082078) --------------------------------------------------------
  48470. void __cdecl DBImmigration::DBImmigration(DBImmigration *const this, ODBCInterface *pInterface)
  48471. {
  48472. CHAR *v2; // edi
  48473. CHAR *v3; // edi
  48474.  
  48475. ODBCBase::ODBCBase(this);
  48476. this->_vptr_ODBCBase = (int (**)(...))off_80D4A90;
  48477. this->mDBName = 1;
  48478. this->mResult = 0;
  48479. this->mResultCount = 0;
  48480. memset(this->m_Account, 0, 0x30u);
  48481. v2 = &this->m_Account[48];
  48482. *(_WORD *)v2 = 0;
  48483. v2[2] = 0;
  48484. memset(this->m_CharName, 0, 0x1Cu);
  48485. v3 = &this->m_CharName[28];
  48486. *(_WORD *)v3 = 0;
  48487. v3[2] = 0;
  48488. this->m_CreateTime = 0;
  48489. this->m_CharGuid = -1;
  48490. if ( !pInterface )
  48491. __assert__(
  48492. "../../Common/DBSystem/DataBase/DBImmigration.cpp",
  48493. 0x15u,
  48494. "DBImmigration::DBImmigration(ODBCInterface*)",
  48495. "pInterface");
  48496. this->mInterface = pInterface;
  48497. }
  48498. // 80D4A90: using guessed type _DWORD (__cdecl *off_80D4A90[2])(DBImmigration *this);
  48499.  
  48500. //----- (08082140) --------------------------------------------------------
  48501. #error "80821C4: positive sp value has been found (funcsize=39)"
  48502.  
  48503. //----- (080821FC) --------------------------------------------------------
  48504. int __cdecl DBImmigration::IsCharNameOK(DBImmigration *const this)
  48505. {
  48506. DB_QUERY *v1; // eax
  48507. DB_QUERY *v2; // ebx
  48508. int v3; // edx
  48509. int v5; // eax
  48510. int v6; // eax
  48511.  
  48512. v1 = ODBCBase::GetInternalQuery((int)this);
  48513. v2 = v1;
  48514. if ( !v1 )
  48515. __assert__("../../Common/DBSystem/DataBase/DBImmigration.cpp", 0x3Eu, "int DBImmigration::IsCharNameOK()", "FALSE");
  48516. memset(v1, 0, 0x1000u);
  48517. v3 = 0;
  48518. if ( !this->m_CharName[0] )
  48519. return v3;
  48520. DB_QUERY::Parse(v2, MigCheckCharName, "t_char", this->m_CharName);
  48521. v5 = ODBCBase::Load(&this->0);
  48522. v3 = 0;
  48523. if ( !v5 )
  48524. return v3;
  48525. if ( !this->mResultCount )
  48526. {
  48527. ODBCInterface::Clear(this->mInterface);
  48528. return 1;
  48529. }
  48530. if ( !this->mInterface )
  48531. __assert__(
  48532. "../../Common/DBSystem/DataBase/DBImmigration.cpp",
  48533. 0x4Eu,
  48534. "int DBImmigration::IsCharNameOK()",
  48535. "mInterface");
  48536. v6 = ODBCInterface::Fetch(this->mInterface);
  48537. v3 = 0;
  48538. if ( !v6 )
  48539. return v3;
  48540. ODBCInterface::Clear(this->mInterface);
  48541. return 0;
  48542. }
  48543.  
  48544. //----- (08082330) --------------------------------------------------------
  48545. int __cdecl DBImmigration::UpdateNewCharName(DBImmigration *const this)
  48546. {
  48547. DB_QUERY *v1; // eax
  48548. DB_QUERY *v2; // ebx
  48549. int v3; // edx
  48550. BOOL v4; // eax
  48551. int v6; // eax
  48552.  
  48553. v1 = ODBCBase::GetInternalQuery((int)this);
  48554. v2 = v1;
  48555. if ( !v1 )
  48556. __assert__(
  48557. "../../Common/DBSystem/DataBase/DBImmigration.cpp",
  48558. 0x67u,
  48559. "int DBImmigration::UpdateNewCharName()",
  48560. "FALSE");
  48561. memset(v1, 0, 0x1000u);
  48562. v3 = 0;
  48563. if ( !this->m_CharName[0] )
  48564. return v3;
  48565. if ( this->m_CharGuid == -1 )
  48566. return v3;
  48567. v4 = StrSafeCheck(this->m_CharName, 0x1Eu);
  48568. v3 = 0;
  48569. if ( !v4 )
  48570. return v3;
  48571. DB_QUERY::Parse(v2, UpdateCharName, "t_char", this->m_CharName, this->m_CharGuid);
  48572. v6 = ODBCBase::Load(&this->0);
  48573. v3 = 0;
  48574. if ( !v6 )
  48575. return v3;
  48576. if ( this->mResultCount )
  48577. {
  48578. ODBCInterface::Clear(this->mInterface);
  48579. return 1;
  48580. }
  48581. if ( !this->mInterface )
  48582. __assert__(
  48583. "../../Common/DBSystem/DataBase/DBImmigration.cpp",
  48584. 0x82u,
  48585. "int DBImmigration::UpdateNewCharName()",
  48586. "mInterface");
  48587. ODBCInterface::Clear(this->mInterface);
  48588. return 0;
  48589. }
  48590.  
  48591. //----- (08082484) --------------------------------------------------------
  48592. int __cdecl DBImmigration::AddNew(DBImmigration *const this)
  48593. {
  48594. DB_QUERY *v1; // eax
  48595. DB_QUERY *v2; // esi
  48596. int v3; // edx
  48597. BOOL v5; // eax
  48598.  
  48599. v1 = ODBCBase::GetInternalQuery((int)this);
  48600. v2 = v1;
  48601. if ( !v1 )
  48602. __assert__(
  48603. "../../Common/DBSystem/DataBase/DBImmigration.cpp",
  48604. 0x97u,
  48605. "virtual int DBImmigration::AddNew()",
  48606. "FALSE");
  48607. memset(v1, 0, 0x1000u);
  48608. if ( !this->m_Account[0] || this->m_CharGuid == -1 || !this->m_CharName[0] )
  48609. return 0;
  48610. v5 = StrSafeCheck(this->m_Account, 0x33u);
  48611. v3 = 0;
  48612. if ( v5 )
  48613. {
  48614. DB_QUERY::Parse(
  48615. v2,
  48616. MigNewChar,
  48617. "t_char",
  48618. this->m_Account,
  48619. this->m_CharGuid,
  48620. this->m_CharName,
  48621. "",
  48622. "",
  48623. 0,
  48624. 1,
  48625. 0,
  48626. 0,
  48627. 0,
  48628. 100,
  48629. 100,
  48630. 9,
  48631. 5000,
  48632. 5000,
  48633. 0,
  48634. 5,
  48635. 5,
  48636. 5,
  48637. 5,
  48638. 5,
  48639. 0,
  48640. 0,
  48641. 0,
  48642. this->m_CreateTime,
  48643. 0,
  48644. 0,
  48645. 0,
  48646. 0,
  48647. 0,
  48648. 0,
  48649. "",
  48650. 31234,
  48651. 0,
  48652. "",
  48653. "",
  48654. "",
  48655. -1,
  48656. -1,
  48657. 0,
  48658. 0,
  48659. 0,
  48660. 0,
  48661. 0,
  48662. 0,
  48663. 0,
  48664. "",
  48665. 0,
  48666. 0,
  48667. 0,
  48668. "",
  48669. 0,
  48670. 0,
  48671. 20);
  48672. v3 = ODBCBase::AddNew(&this->0);
  48673. }
  48674. return v3;
  48675. }
  48676.  
  48677. //----- (0808260C) --------------------------------------------------------
  48678. #error "80826A8: positive sp value has been found (funcsize=45)"
  48679.  
  48680. //----- (080826E4) --------------------------------------------------------
  48681. int __cdecl DBImmigration::ParseResult(DBImmigration *const this, void *pResult)
  48682. {
  48683. ODBCBase::DBOP_TYPE v2; // eax
  48684. int v3; // esi
  48685. INT ErrorCode; // [esp+Ch] [ebp-Ch]
  48686.  
  48687. if ( !this->mInterface )
  48688. __assert__(
  48689. "../../Common/DBSystem/DataBase/DBImmigration.cpp",
  48690. 0x10Bu,
  48691. "virtual int DBImmigration::ParseResult(void*)",
  48692. "mInterface");
  48693. v2 = this->mOPType;
  48694. v3 = 0;
  48695. if ( v2 == 1 )
  48696. {
  48697. v3 = 1;
  48698. }
  48699. else if ( (signed int)v2 <= 1 )
  48700. {
  48701. if ( v2 == DB_LOAD )
  48702. {
  48703. if ( this->mResultCount > 1 )
  48704. __assert__(
  48705. "../../Common/DBSystem/DataBase/DBImmigration.cpp",
  48706. 0x120u,
  48707. "virtual int DBImmigration::ParseResult(void*)",
  48708. "mResultCount<=1");
  48709. if ( !this->mInterface )
  48710. __assert__(
  48711. "../../Common/DBSystem/DataBase/DBImmigration.cpp",
  48712. 0x121u,
  48713. "virtual int DBImmigration::ParseResult(void*)",
  48714. "mInterface");
  48715. if ( ODBCInterface::Fetch(this->mInterface) )
  48716. {
  48717. ODBCInterface::GetString(this->mInterface, 1, this->m_Account, 50, &ErrorCode);
  48718. v3 = 1;
  48719. }
  48720. }
  48721. }
  48722. else if ( v2 == 2 && ODBCBase::GetInternalAffectCount((int)this) > 0 )
  48723. {
  48724. v3 = 1;
  48725. }
  48726. ODBCInterface::Clear(this->mInterface);
  48727. return v3;
  48728. }
  48729.  
  48730. //----- (0808284C) --------------------------------------------------------
  48731. const CHAR *__cdecl DBImmigration::GetAccount(const DBImmigration *const this)
  48732. {
  48733. return this->m_Account;
  48734. }
  48735.  
  48736. //----- (08082858) --------------------------------------------------------
  48737. void __cdecl DBImmigration::SetAccount(DBImmigration *const this, const CHAR *pAccount)
  48738. {
  48739. if ( !pAccount )
  48740. __assert__(
  48741. "../../Common/DBSystem/DataBase/DBImmigration.cpp",
  48742. 0x140u,
  48743. "void DBImmigration::SetAccount(const CHAR*)",
  48744. "pAccount");
  48745. strncpy(this->m_Account, pAccount, 0x32u);
  48746. this->m_Account[50] = 0;
  48747. }
  48748.  
  48749. //----- (080828A0) --------------------------------------------------------
  48750. const CHAR *__cdecl DBImmigration::GetCharName(const DBImmigration *const this)
  48751. {
  48752. return this->m_CharName;
  48753. }
  48754.  
  48755. //----- (080828AC) --------------------------------------------------------
  48756. void __cdecl DBImmigration::SetCharName(DBImmigration *const this, const CHAR *pName)
  48757. {
  48758. if ( !pName )
  48759. __assert__(
  48760. "../../Common/DBSystem/DataBase/DBImmigration.cpp",
  48761. 0x14Bu,
  48762. "void DBImmigration::SetCharName(const CHAR*)",
  48763. "pName");
  48764. strncpy(this->m_CharName, pName, 0x1Eu);
  48765. this->m_CharName[30] = 0;
  48766. }
  48767.  
  48768. //----- (080828F4) --------------------------------------------------------
  48769. GUID_t __cdecl DBImmigration::GetCharGuid(int a2)
  48770. {
  48771. return *(_DWORD *)(a2 + 76);
  48772. }
  48773.  
  48774. //----- (08082900) --------------------------------------------------------
  48775. void __cdecl DBImmigration::SetCharGuid(int a3, int a4)
  48776. {
  48777. *(_DWORD *)(a3 + 76) = a4;
  48778. }
  48779.  
  48780. //----- (08082910) --------------------------------------------------------
  48781. void __cdecl DBImmigration::SetCharCreateTime(int a3, int a4)
  48782. {
  48783. *(_DWORD *)(a3 + 80) = a4;
  48784. }
  48785.  
  48786. //----- (08082920) --------------------------------------------------------
  48787. UINT __cdecl DBImmigration::GetCharCreateTime(int a2)
  48788. {
  48789. return *(_DWORD *)(a2 + 80);
  48790. }
  48791.  
  48792. //----- (0808292C) --------------------------------------------------------
  48793. void __cdecl _tcf_0_110(void *a1)
  48794. {
  48795. std::ios_base::Init::~Init(&std::__ioinit);
  48796. }
  48797.  
  48798. //----- (0808293C) --------------------------------------------------------
  48799. void `global constructor keyed to'DBImmigration::DBImmigration()
  48800. {
  48801. std::ios_base::Init::Init(&std::__ioinit);
  48802. __cxa_atexit(_tcf_0_110, 0, &_dso_handle);
  48803. }
  48804. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  48805.  
  48806. //----- (08082968) --------------------------------------------------------
  48807. void __cdecl DBImpactList::DBImpactList(DBImpactList *const this, ODBCInterface *pInterface)
  48808. {
  48809. ODBCBase::ODBCBase(this);
  48810. this->_vptr_ODBCBase = (int (**)(...))&off_80D4D30;
  48811. this->mDBName = 1;
  48812. this->mResult = 0;
  48813. this->mResultCount = 0;
  48814. this->m_CharGuid = -1;
  48815. this->m_DBVersion = 0;
  48816. if ( !pInterface )
  48817. __assert__(
  48818. "../../Common/DBSystem/DataBase/DBImpactList.cpp",
  48819. 0xFu,
  48820. "DBImpactList::DBImpactList(ODBCInterface*)",
  48821. "pInterface");
  48822. this->mInterface = pInterface;
  48823. }
  48824. // 80D4D30: using guessed type _DWORD (__cdecl *off_80D4D30)(DBImpactList *this);
  48825.  
  48826. //----- (080829D4) --------------------------------------------------------
  48827. void __cdecl DBImpactList::DBImpactList(DBImpactList *const this, ODBCInterface *pInterface)
  48828. {
  48829. ODBCBase::ODBCBase(this);
  48830. this->_vptr_ODBCBase = (int (**)(...))&off_80D4D30;
  48831. this->mDBName = 1;
  48832. this->mResult = 0;
  48833. this->mResultCount = 0;
  48834. this->m_CharGuid = -1;
  48835. this->m_DBVersion = 0;
  48836. if ( !pInterface )
  48837. __assert__(
  48838. "../../Common/DBSystem/DataBase/DBImpactList.cpp",
  48839. 0xFu,
  48840. "DBImpactList::DBImpactList(ODBCInterface*)",
  48841. "pInterface");
  48842. this->mInterface = pInterface;
  48843. }
  48844. // 80D4D30: using guessed type _DWORD (__cdecl *off_80D4D30)(DBImpactList *this);
  48845.  
  48846. //----- (08082A40) --------------------------------------------------------
  48847. #error "8082AC8: positive sp value has been found (funcsize=41)"
  48848.  
  48849. //----- (08082B00) --------------------------------------------------------
  48850. int __cdecl DBImpactList::Save(DBImpactList *const this, void *pSource)
  48851. {
  48852. int v2; // eax
  48853. int v3; // edx
  48854. signed int v5; // edi
  48855. DB_QUERY *v6; // eax
  48856. CHAR *pIn; // [esp+Ch] [ebp-128h]
  48857. DB_QUERY *pQuery; // [esp+10h] [ebp-124h]
  48858. INT i; // [esp+14h] [ebp-120h]
  48859. INT Result; // [esp+18h] [ebp-11Ch]
  48860. CHAR ImpactData[256]; // [esp+1Ch] [ebp-118h]
  48861.  
  48862. v2 = (*((int (__cdecl **)(DBImpactList *const ))this->_vptr_ODBCBase + 2))(this);
  48863. v3 = 0;
  48864. if ( !v2 )
  48865. return v3;
  48866. (*((void (__cdecl **)(DBImpactList *const , INT *))this->_vptr_ODBCBase + 4))(this, &Result);
  48867. if ( !pSource )
  48868. __assert__(
  48869. "../../Common/DBSystem/DataBase/DBImpactList.cpp",
  48870. 0x40u,
  48871. "virtual int DBImpactList::Save(void*)",
  48872. "pCharFullData");
  48873. v5 = *((unsigned __int8 *)pSource + 33962);
  48874. if ( v5 > 20 )
  48875. __assert__(
  48876. "../../Common/DBSystem/DataBase/DBImpactList.cpp",
  48877. 0x45u,
  48878. "virtual int DBImpactList::Save(void*)",
  48879. "ImpactCount<=MAX_IMPACT_NUM");
  48880. i = 0;
  48881. if ( v5 <= 0 )
  48882. return 1;
  48883. pIn = (char *)pSource + 33963;
  48884. while ( 1 )
  48885. {
  48886. v6 = ODBCBase::GetInternalQuery((int)this);
  48887. pQuery = v6;
  48888. if ( !v6 )
  48889. __assert__(
  48890. "../../Common/DBSystem/DataBase/DBImpactList.cpp",
  48891. 0x4Du,
  48892. "virtual int DBImpactList::Save(void*)",
  48893. "FALSE");
  48894. memset(v6, 0, 0x1000u);
  48895. if ( this->m_CharGuid == -1 )
  48896. break;
  48897. memset(ImpactData, 0, 0x100u);
  48898. Binary2String(pIn, 0x4Cu, ImpactData);
  48899. DB_QUERY::Parse(pQuery, NewCharImpact, "t_impact", this->m_CharGuid, ImpactData, this->m_DBVersion);
  48900. if ( !ODBCBase::Save(&this->0, pSource) )
  48901. break;
  48902. ++i;
  48903. pIn += 76;
  48904. if ( i >= v5 )
  48905. return 1;
  48906. }
  48907. return 0;
  48908. }
  48909.  
  48910. //----- (08082CE4) --------------------------------------------------------
  48911. #error "8082D6F: positive sp value has been found (funcsize=41)"
  48912.  
  48913. //----- (08082DA4) --------------------------------------------------------
  48914. int __cdecl DBImpactList::ParseResult(DBImpactList *const this, void *pResult)
  48915. {
  48916. CHAR *v2; // edi
  48917. INT i; // [esp+4h] [ebp-14h]
  48918. INT ErrorCode; // [esp+8h] [ebp-10h]
  48919.  
  48920. if ( this->mOPType == DB_LOAD )
  48921. {
  48922. if ( !pResult )
  48923. __assert__(
  48924. "../../Common/DBSystem/DataBase/DBImpactList.cpp",
  48925. 0x94u,
  48926. "virtual int DBImpactList::ParseResult(void*)",
  48927. "pCharFullData");
  48928. if ( this->mResultCount > 20 )
  48929. __assert__(
  48930. "../../Common/DBSystem/DataBase/DBImpactList.cpp",
  48931. 0x9Eu,
  48932. "virtual int DBImpactList::ParseResult(void*)",
  48933. "mResultCount<=MAX_IMPACT_NUM");
  48934. if ( !this->mInterface )
  48935. __assert__(
  48936. "../../Common/DBSystem/DataBase/DBImpactList.cpp",
  48937. 0x9Fu,
  48938. "virtual int DBImpactList::ParseResult(void*)",
  48939. "mInterface");
  48940. *((_BYTE *)pResult + 33962) = 0;
  48941. v2 = (char *)pResult + 33963;
  48942. i = 0;
  48943. do
  48944. {
  48945. if ( !ODBCInterface::Fetch(this->mInterface) )
  48946. break;
  48947. ODBCInterface::GetUInt(this->mInterface, 1, &ErrorCode);
  48948. ODBCInterface::GetField(this->mInterface, 2, v2, 76, &ErrorCode);
  48949. ++*((_BYTE *)pResult + 33962);
  48950. ++i;
  48951. v2 += 76;
  48952. }
  48953. while ( i <= 19 );
  48954. ODBCInterface::Clear(this->mInterface);
  48955. }
  48956. if ( !this->mInterface )
  48957. __assert__(
  48958. "../../Common/DBSystem/DataBase/DBImpactList.cpp",
  48959. 0xC2u,
  48960. "virtual int DBImpactList::ParseResult(void*)",
  48961. "mInterface");
  48962. ODBCInterface::Clear(this->mInterface);
  48963. return 1;
  48964. }
  48965.  
  48966. //----- (08082F38) --------------------------------------------------------
  48967. GUID_t __cdecl DBImpactList::GetCharGuid(int a2)
  48968. {
  48969. return *(_DWORD *)(a2 + 24);
  48970. }
  48971.  
  48972. //----- (08082F44) --------------------------------------------------------
  48973. void __cdecl DBImpactList::SetCharGuid(int a3, int a4)
  48974. {
  48975. *(_DWORD *)(a3 + 24) = a4;
  48976. }
  48977.  
  48978. //----- (08082F54) --------------------------------------------------------
  48979. UINT __cdecl DBImpactList::GetDBVersion(int a2)
  48980. {
  48981. return *(_DWORD *)(a2 + 28);
  48982. }
  48983.  
  48984. //----- (08082F60) --------------------------------------------------------
  48985. void __cdecl DBImpactList::SetDBVersion(int a3, int a4)
  48986. {
  48987. *(_DWORD *)(a3 + 28) = a4;
  48988. }
  48989.  
  48990. //----- (08082F70) --------------------------------------------------------
  48991. void __cdecl _tcf_0_111(void *a1)
  48992. {
  48993. std::ios_base::Init::~Init(&std::__ioinit);
  48994. }
  48995.  
  48996. //----- (08082F80) --------------------------------------------------------
  48997. void `global constructor keyed to'DBImpactList::DBImpactList()
  48998. {
  48999. std::ios_base::Init::Init(&std::__ioinit);
  49000. __cxa_atexit(_tcf_0_111, 0, &_dso_handle);
  49001. }
  49002. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  49003.  
  49004. //----- (08082FAC) --------------------------------------------------------
  49005. void __cdecl DBItemList::DBItemList(DBItemList *const this, ODBCInterface *pInterface)
  49006. {
  49007. ODBCBase::ODBCBase(this);
  49008. this->_vptr_ODBCBase = (int (**)(...))&off_80D4F08;
  49009. this->mDBName = 1;
  49010. this->mResult = 0;
  49011. this->mResultCount = 0;
  49012. this->m_CharGuid = -1;
  49013. this->m_DBVersion = 0;
  49014. this->m_IsOld = 0;
  49015. if ( !pInterface )
  49016. __assert__(
  49017. "../../Common/DBSystem/DataBase/DBItemList.cpp",
  49018. 0x10u,
  49019. "DBItemList::DBItemList(ODBCInterface*)",
  49020. "pInterface");
  49021. this->mInterface = pInterface;
  49022. }
  49023. // 80D4F08: using guessed type _DWORD (__cdecl *off_80D4F08)(DBItemList *this);
  49024.  
  49025. //----- (0808301C) --------------------------------------------------------
  49026. void __cdecl DBItemList::DBItemList(DBItemList *const this, ODBCInterface *pInterface)
  49027. {
  49028. ODBCBase::ODBCBase(this);
  49029. this->_vptr_ODBCBase = (int (**)(...))&off_80D4F08;
  49030. this->mDBName = 1;
  49031. this->mResult = 0;
  49032. this->mResultCount = 0;
  49033. this->m_CharGuid = -1;
  49034. this->m_DBVersion = 0;
  49035. this->m_IsOld = 0;
  49036. if ( !pInterface )
  49037. __assert__(
  49038. "../../Common/DBSystem/DataBase/DBItemList.cpp",
  49039. 0x10u,
  49040. "DBItemList::DBItemList(ODBCInterface*)",
  49041. "pInterface");
  49042. this->mInterface = pInterface;
  49043. }
  49044. // 80D4F08: using guessed type _DWORD (__cdecl *off_80D4F08)(DBItemList *this);
  49045.  
  49046. //----- (0808308C) --------------------------------------------------------
  49047. #error "8083114: positive sp value has been found (funcsize=41)"
  49048.  
  49049. //----- (0808314C) --------------------------------------------------------
  49050. int __cdecl DBItemList::Save(DBItemList *const this, void *pSource)
  49051. {
  49052. _ITEM *v2; // esi
  49053. int result; // eax
  49054. UINT v4; // ST78_4
  49055. DB_QUERY *pQuery; // [esp+0h] [ebp-468h]
  49056. unsigned int ItemPos; // [esp+4h] [ebp-464h]
  49057. INT OutLength; // [esp+Ch] [ebp-45Ch]
  49058. CHAR szDarkEncodeData[60]; // [esp+10h] [ebp-458h]
  49059. INT PArray[256]; // [esp+50h] [ebp-418h]
  49060.  
  49061. if ( !pSource )
  49062. __assert__(
  49063. "../../Common/DBSystem/DataBase/DBItemList.cpp",
  49064. 0x3Bu,
  49065. "virtual int DBItemList::Save(void*)",
  49066. "pCharFullData");
  49067. ItemPos = 0;
  49068. while ( 1 )
  49069. {
  49070. if ( ItemPos > 0xB2 )
  49071. __assert__("../../Common/DB_Struct.h", 0x539u, "_ITEM* FULLUSERDATA::GetItem(UINT)", "uDBPos<=DB_BANK_POS_END");
  49072. if ( ItemPos > 0x76 )
  49073. {
  49074. v2 = (_ITEM *)((char *)pSource + 176 * ItemPos - 19223);
  49075. }
  49076. else if ( ItemPos <= 0x63 )
  49077. {
  49078. v2 = 0;
  49079. if ( (ItemPos & 0x80000000) == 0 )
  49080. v2 = (_ITEM *)((char *)pSource + 176 * ItemPos + 12290);
  49081. }
  49082. else
  49083. {
  49084. v2 = (_ITEM *)((char *)pSource + 176 * ItemPos + 12310);
  49085. }
  49086. pQuery = ODBCBase::GetInternalQuery((int)this);
  49087. if ( !pQuery )
  49088. __assert__("../../Common/DBSystem/DataBase/DBItemList.cpp", 0x47u, "virtual int DBItemList::Save(void*)", "FALSE");
  49089. memset(pQuery, 0, 0x1000u);
  49090. if ( this->m_CharGuid == -1 )
  49091. break;
  49092. if ( v2->m_ItemGUID.m_World || v2->m_ItemGUID.m_Serial || v2->m_ItemGUID.m_Server )
  49093. {
  49094. memset(PArray, 0, 0x400u);
  49095. _ITEM::DBReadAttr(v2, (CHAR *)PArray, &OutLength, 1020);
  49096. memset(szDarkEncodeData, 0, sizeof(szDarkEncodeData));
  49097. if ( GetSerialClass(v2->m_ItemIndex) == 1
  49098. && v2->_anon_1.m_Equip.m_bytDarksFlag == 1
  49099. && !_ITEM::GetEncodeDarkData(v2, szDarkEncodeData, 60) )
  49100. {
  49101. return 0;
  49102. }
  49103. GetSerialClass(v2->m_ItemIndex);
  49104. DB_QUERY::Parse(
  49105. pQuery,
  49106. NewCharItem,
  49107. this->m_CharGuid,
  49108. v2->m_ItemGUID.m_Serial,
  49109. v2->m_ItemGUID.m_World,
  49110. v2->m_ItemGUID.m_Server,
  49111. v2->m_ItemIndex,
  49112. ItemPos,
  49113. 0,
  49114. -1,
  49115. "",
  49116. PArray[0],
  49117. PArray[1],
  49118. PArray[2],
  49119. PArray[3],
  49120. PArray[4],
  49121. PArray[5],
  49122. PArray[6],
  49123. PArray[7],
  49124. PArray[8],
  49125. PArray[9],
  49126. PArray[10],
  49127. PArray[11],
  49128. PArray[12],
  49129. PArray[13],
  49130. PArray[14],
  49131. PArray[15],
  49132. PArray[16],
  49133. 1,
  49134. this->m_DBVersion);
  49135. result = ODBCBase::Save(&this->0, pSource);
  49136. if ( !result )
  49137. return result;
  49138. }
  49139. else
  49140. {
  49141. v4 = this->m_DBVersion;
  49142. DB_QUERY::Parse(pQuery, DeleteCharItemSingle, "t_iteminfo", this->m_DBVersion, this->m_CharGuid);
  49143. if ( !ODBCBase::Delete(&this->0) )
  49144. return 0;
  49145. ODBCInterface::Clear(this->mInterface);
  49146. }
  49147. if ( (signed int)++ItemPos > 178 )
  49148. return 1;
  49149. }
  49150. return 0;
  49151. }
  49152. // 8049B18: using guessed type int __stdcall __cxa_end_catch(_DWORD);
  49153.  
  49154. //----- (08083514) --------------------------------------------------------
  49155. int __cdecl DBItemList::Delete(DBItemList *const this)
  49156. {
  49157. return 0;
  49158. }
  49159.  
  49160. //----- (0808351C) --------------------------------------------------------
  49161. int __cdecl DBItemList::GetIsOld(int a2)
  49162. {
  49163. return *(_DWORD *)(a2 + 32);
  49164. }
  49165.  
  49166. //----- (08083528) --------------------------------------------------------
  49167. int __cdecl DBItemList::ParseResult(DBItemList *const this, void *pResult)
  49168. {
  49169. unsigned __int16 v2; // ax
  49170. char *v3; // ebx
  49171. INT i; // [esp+8h] [ebp-140h]
  49172. INT ErrorCode; // [esp+Ch] [ebp-13Ch]
  49173. INT PArray[17]; // [esp+10h] [ebp-138h]
  49174. CHAR FixAttr[200]; // [esp+60h] [ebp-E8h]
  49175.  
  49176. if ( this->mOPType == DB_LOAD )
  49177. {
  49178. if ( !pResult )
  49179. __assert__(
  49180. "../../Common/DBSystem/DataBase/DBItemList.cpp",
  49181. 0xB4u,
  49182. "virtual int DBItemList::ParseResult(void*)",
  49183. "pCharFullData");
  49184. if ( this->mResultCount > 179 )
  49185. __assert__(
  49186. "../../Common/DBSystem/DataBase/DBItemList.cpp",
  49187. 0xD3u,
  49188. "virtual int DBItemList::ParseResult(void*)",
  49189. "mResultCount<=(DB_BANK_POS_END+1)");
  49190. if ( !this->mInterface )
  49191. __assert__(
  49192. "../../Common/DBSystem/DataBase/DBItemList.cpp",
  49193. 0xD5u,
  49194. "virtual int DBItemList::ParseResult(void*)",
  49195. "mInterface");
  49196. i = 0;
  49197. do
  49198. {
  49199. if ( !ODBCInterface::Fetch(this->mInterface) )
  49200. break;
  49201. ODBCInterface::GetUInt(this->mInterface, 1, &ErrorCode);
  49202. v2 = ODBCInterface::GetInt(this->mInterface, 6, &ErrorCode);
  49203. if ( v2 > 0xB2u )
  49204. __assert__(
  49205. "../../Common/DBSystem/DataBase/DBItemList.cpp",
  49206. 0xE0u,
  49207. "virtual int DBItemList::ParseResult(void*)",
  49208. "ItemPos<=DB_BANK_POS_END");
  49209. if ( v2 > 0xB2u )
  49210. __assert__("../../Common/DB_Struct.h", 0x539u, "_ITEM* FULLUSERDATA::GetItem(UINT)", "uDBPos<=DB_BANK_POS_END");
  49211. if ( v2 <= 0x76u )
  49212. {
  49213. if ( v2 <= 0x63u )
  49214. v3 = (char *)pResult + 176 * v2 + 12290;
  49215. else
  49216. v3 = (char *)pResult + 176 * v2 + 12310;
  49217. }
  49218. else
  49219. {
  49220. v3 = (char *)pResult + 176 * v2 - 19223;
  49221. }
  49222. if ( !v3 )
  49223. __assert__(
  49224. "../../Common/DBSystem/DataBase/DBItemList.cpp",
  49225. 0xE4u,
  49226. "virtual int DBItemList::ParseResult(void*)",
  49227. "pItem");
  49228. *v3 = ODBCInterface::GetInt(this->mInterface, 2, &ErrorCode);
  49229. v3[1] = ODBCInterface::GetInt(this->mInterface, 3, &ErrorCode);
  49230. *((_DWORD *)v3 + 1) = ODBCInterface::GetUInt(this->mInterface, 4, &ErrorCode);
  49231. *((_DWORD *)v3 + 2) = ODBCInterface::GetUInt(this->mInterface, 5, &ErrorCode);
  49232. if ( DBItemList::GetIsOld((int)this) )
  49233. {
  49234. memset(FixAttr, 0, 0xC8u);
  49235. ODBCInterface::GetField(this->mInterface, 7, FixAttr, 200, &ErrorCode);
  49236. _ITEM::WriteFixAttr((_ITEM *const )v3, FixAttr, 200);
  49237. }
  49238. PArray[0] = ODBCInterface::GetInt(this->mInterface, 8, &ErrorCode);
  49239. PArray[1] = ODBCInterface::GetInt(this->mInterface, 9, &ErrorCode);
  49240. PArray[2] = ODBCInterface::GetInt(this->mInterface, 10, &ErrorCode);
  49241. PArray[3] = ODBCInterface::GetInt(this->mInterface, 11, &ErrorCode);
  49242. PArray[4] = ODBCInterface::GetInt(this->mInterface, 12, &ErrorCode);
  49243. PArray[5] = ODBCInterface::GetInt(this->mInterface, 13, &ErrorCode);
  49244. PArray[6] = ODBCInterface::GetInt(this->mInterface, 14, &ErrorCode);
  49245. PArray[7] = ODBCInterface::GetInt(this->mInterface, 15, &ErrorCode);
  49246. PArray[8] = ODBCInterface::GetInt(this->mInterface, 16, &ErrorCode);
  49247. PArray[9] = ODBCInterface::GetInt(this->mInterface, 17, &ErrorCode);
  49248. PArray[10] = ODBCInterface::GetInt(this->mInterface, 18, &ErrorCode);
  49249. PArray[11] = ODBCInterface::GetInt(this->mInterface, 19, &ErrorCode);
  49250. PArray[12] = ODBCInterface::GetInt(this->mInterface, 20, &ErrorCode);
  49251. PArray[13] = ODBCInterface::GetInt(this->mInterface, 21, &ErrorCode);
  49252. PArray[14] = ODBCInterface::GetInt(this->mInterface, 22, &ErrorCode);
  49253. PArray[15] = ODBCInterface::GetInt(this->mInterface, 23, &ErrorCode);
  49254. PArray[16] = ODBCInterface::GetInt(this->mInterface, 24, &ErrorCode);
  49255. if ( DBItemList::GetIsOld((int)this) )
  49256. {
  49257. _ITEM::WriteVarAttr((_ITEM *const )v3, (CHAR *)PArray, 68);
  49258. ODBCInterface::GetField(this->mInterface, 26, v3 + 76, 12, &ErrorCode);
  49259. }
  49260. else
  49261. {
  49262. _ITEM::DBWriteAttr((_ITEM *const )v3, (CHAR *)PArray, 68);
  49263. }
  49264. ODBCInterface::GetString(this->mInterface, 25, v3 + 16, 58, &ErrorCode);
  49265. _ITEM::DecodeDarkData((_ITEM *const )v3);
  49266. ++i;
  49267. }
  49268. while ( i <= 178 );
  49269. ODBCInterface::Clear(this->mInterface);
  49270. }
  49271. if ( !this->mInterface )
  49272. __assert__(
  49273. "../../Common/DBSystem/DataBase/DBItemList.cpp",
  49274. 0x123u,
  49275. "virtual int DBItemList::ParseResult(void*)",
  49276. "mInterface");
  49277. ODBCInterface::Clear(this->mInterface);
  49278. return 1;
  49279. }
  49280.  
  49281. //----- (08083A78) --------------------------------------------------------
  49282. GUID_t __cdecl DBItemList::GetCharGuid(int a2)
  49283. {
  49284. return *(_DWORD *)(a2 + 24);
  49285. }
  49286.  
  49287. //----- (08083A84) --------------------------------------------------------
  49288. void __cdecl DBItemList::SetCharGuid(int a3, int a4)
  49289. {
  49290. *(_DWORD *)(a3 + 24) = a4;
  49291. }
  49292.  
  49293. //----- (08083A94) --------------------------------------------------------
  49294. UINT __cdecl DBItemList::GetDBVersion(int a2)
  49295. {
  49296. return *(_DWORD *)(a2 + 28);
  49297. }
  49298.  
  49299. //----- (08083AA0) --------------------------------------------------------
  49300. void __cdecl DBItemList::SetDBVersion(int a3, int a4)
  49301. {
  49302. *(_DWORD *)(a3 + 28) = a4;
  49303. }
  49304.  
  49305. //----- (08083AB0) --------------------------------------------------------
  49306. void __cdecl DBItemList::SetIsOld(int a3, int a4)
  49307. {
  49308. *(_DWORD *)(a3 + 32) = a4;
  49309. }
  49310.  
  49311. //----- (08083AC0) --------------------------------------------------------
  49312. void __cdecl _tcf_0_112(void *a1)
  49313. {
  49314. std::ios_base::Init::~Init(&std::__ioinit);
  49315. }
  49316.  
  49317. //----- (08083AD0) --------------------------------------------------------
  49318. void `global constructor keyed to'DBItemList::DBItemList()
  49319. {
  49320. std::ios_base::Init::Init(&std::__ioinit);
  49321. __cxa_atexit(_tcf_0_112, 0, &_dso_handle);
  49322. }
  49323. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  49324.  
  49325. //----- (08083AFC) --------------------------------------------------------
  49326. void __cdecl DBManager::DBManager(DBManager *const this)
  49327. {
  49328. ODBCInterface *v1; // ebx
  49329.  
  49330. Thread::Thread(this);
  49331. this->_vptr_Thread = (int (**)(...))&off_80D5108;
  49332. v1 = (ODBCInterface *)operator new(0x71098u);
  49333. ODBCInterface::ODBCInterface((int)v1);
  49334. this->mCharDBInterface = v1;
  49335. this->m_Active = 1;
  49336. }
  49337. // 80D5108: using guessed type _DWORD (__cdecl *off_80D5108)(DBManager *this);
  49338.  
  49339. //----- (08083B64) --------------------------------------------------------
  49340. void __cdecl DBManager::DBManager(DBManager *const this)
  49341. {
  49342. ODBCInterface *v1; // ebx
  49343.  
  49344. Thread::Thread(this);
  49345. this->_vptr_Thread = (int (**)(...))&off_80D5108;
  49346. v1 = (ODBCInterface *)operator new(0x71098u);
  49347. ODBCInterface::ODBCInterface((int)v1);
  49348. this->mCharDBInterface = v1;
  49349. this->m_Active = 1;
  49350. }
  49351. // 80D5108: using guessed type _DWORD (__cdecl *off_80D5108)(DBManager *this);
  49352.  
  49353. //----- (08083BCC) --------------------------------------------------------
  49354. void __cdecl DBManager::~DBManager(DBManager *const this)
  49355. {
  49356. ODBCInterface *v1; // ebx
  49357.  
  49358. v1 = this->mCharDBInterface;
  49359. this->_vptr_Thread = (int (**)(...))&off_80D5108;
  49360. if ( v1 )
  49361. {
  49362. ODBCInterface::~ODBCInterface(v1);
  49363. operator delete((IPRegionTable *const )v1);
  49364. this->mCharDBInterface = 0;
  49365. }
  49366. Thread::~Thread(this);
  49367. }
  49368. // 80D5108: using guessed type _DWORD (__cdecl *off_80D5108)(DBManager *this);
  49369.  
  49370. //----- (08083C24) --------------------------------------------------------
  49371. void __cdecl DBManager::~DBManager(DBManager *const this)
  49372. {
  49373. ODBCInterface *v1; // ebx
  49374.  
  49375. v1 = this->mCharDBInterface;
  49376. this->_vptr_Thread = (int (**)(...))&off_80D5108;
  49377. if ( v1 )
  49378. {
  49379. ODBCInterface::~ODBCInterface(v1);
  49380. operator delete((IPRegionTable *const )v1);
  49381. this->mCharDBInterface = 0;
  49382. }
  49383. Thread::~Thread(this);
  49384. }
  49385. // 80D5108: using guessed type _DWORD (__cdecl *off_80D5108)(DBManager *this);
  49386.  
  49387. //----- (08083C7C) --------------------------------------------------------
  49388. void __cdecl DBManager::~DBManager(DBManager *const this)
  49389. {
  49390. ODBCInterface *v1; // ebx
  49391.  
  49392. v1 = this->mCharDBInterface;
  49393. this->_vptr_Thread = (int (**)(...))&off_80D5108;
  49394. if ( v1 )
  49395. {
  49396. ODBCInterface::~ODBCInterface(v1);
  49397. operator delete((IPRegionTable *const )v1);
  49398. this->mCharDBInterface = 0;
  49399. }
  49400. Thread::~Thread(this);
  49401. operator delete((IPRegionTable *const )this);
  49402. }
  49403. // 80D5108: using guessed type _DWORD (__cdecl *off_80D5108)(DBManager *this);
  49404.  
  49405. //----- (08083CDC) --------------------------------------------------------
  49406. int __cdecl DBManager::Init(DBManager *const this)
  49407. {
  49408. int v1; // edx
  49409. ODBCInterface *v2; // eax
  49410. CHAR Password[256]; // [esp+4h] [ebp-1D8h]
  49411. CHAR User[32]; // [esp+104h] [ebp-D8h]
  49412. CHAR Database[128]; // [esp+124h] [ebp-B8h]
  49413. CHAR Host[30]; // [esp+1A4h] [ebp-38h]
  49414.  
  49415. strncpy(Host, g_Config.m_ShareMemInfo.m_DBIP, 0x1Eu);
  49416. Host[29] = 0;
  49417. strncpy(Database, g_Config.m_ShareMemInfo.m_DBName, 0x80u);
  49418. Database[127] = 0;
  49419. strncpy(User, g_Config.m_ShareMemInfo.m_DBUser, 0x20u);
  49420. User[31] = 0;
  49421. if ( g_Config.m_ShareMemInfo.CryptPwd <= 0 )
  49422. {
  49423. strncpy(Password, g_Config.m_ShareMemInfo.m_DBPassword, 0x100u);
  49424. Password[255] = 0;
  49425. }
  49426. else
  49427. {
  49428. memset(Password, 0, 0x100u);
  49429. Seraph::string2pwd(g_Config.m_ShareMemInfo.m_DBPassword, Password);
  49430. }
  49431. if ( !this->mCharDBInterface )
  49432. __assert__(
  49433. "../../Common/DBSystem/DataBase/DBManager.cpp",
  49434. 0x34u,
  49435. "virtual int DBManager::Init()",
  49436. "mCharDBInterface");
  49437. *(_DWORD *)&Password[12] = Password;
  49438. *(_DWORD *)&Password[8] = User;
  49439. *(_DWORD *)&Password[4] = Database;
  49440. ODBCInterface::Connect(this->mCharDBInterface, Database, User, Password);
  49441. v2 = this->mCharDBInterface;
  49442. if ( !v2->mConnected )
  49443. {
  49444. *(_DWORD *)&Password[12] = v1;
  49445. *(_DWORD *)&Password[8] = (char *)v2 + 462744;
  49446. CacheLog(0, "mCharDBInterface->Connect()... Get Errors: %s ", v2->mErrorMsg, v1);
  49447. }
  49448. return 1;
  49449. }
  49450.  
  49451. //----- (08083E48) --------------------------------------------------------
  49452. void __cdecl DBManager::run(DBManager *const this)
  49453. {
  49454. ;
  49455. }
  49456.  
  49457. //----- (08083E50) --------------------------------------------------------
  49458. ODBCInterface *__cdecl DBManager::GetInterface(DB_NAMES name, DB_NAMES namea)
  49459. {
  49460. ODBCInterface *result; // eax
  49461.  
  49462. result = 0;
  49463. if ( namea == 1 )
  49464. result = *(ODBCInterface **)(name + 12);
  49465. return result;
  49466. }
  49467.  
  49468. //----- (08083E64) --------------------------------------------------------
  49469. void __cdecl DBManager::Quit(DBManager *const this)
  49470. {
  49471. if ( this->mCharDBInterface )
  49472. ODBCInterface::Close(this->mCharDBInterface);
  49473. }
  49474.  
  49475. //----- (08083ED0) --------------------------------------------------------
  49476. void __cdecl _tcf_0_113(void *a1)
  49477. {
  49478. std::ios_base::Init::~Init(&std::__ioinit);
  49479. }
  49480.  
  49481. //----- (08083EE0) --------------------------------------------------------
  49482. void `global constructor keyed to'DBManager::DBManager()
  49483. {
  49484. std::ios_base::Init::Init(&std::__ioinit);
  49485. __cxa_atexit(_tcf_0_113, 0, &_dso_handle);
  49486. }
  49487. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  49488.  
  49489. //----- (08083F0C) --------------------------------------------------------
  49490. void __cdecl DBManager::stop(int a2)
  49491. {
  49492. *(_DWORD *)(a2 + 16) = 0;
  49493. }
  49494.  
  49495. //----- (08083F1C) --------------------------------------------------------
  49496. BOOL __cdecl DBManager::CheckWorldIDZoneID(DBManager *const this)
  49497. {
  49498. return 1;
  49499. }
  49500.  
  49501. //----- (08083F28) --------------------------------------------------------
  49502. void __cdecl DBPetList::DBPetList(DBPetList *const this, ODBCInterface *pInterface)
  49503. {
  49504. ODBCBase::ODBCBase(this);
  49505. this->_vptr_ODBCBase = (int (**)(...))&off_80D5248;
  49506. this->mDBName = 1;
  49507. this->mResult = 0;
  49508. this->mResultCount = 0;
  49509. this->m_CharGuid = -1;
  49510. this->m_DBVersion = 0;
  49511. if ( !pInterface )
  49512. __assert__(
  49513. "../../Common/DBSystem/DataBase/DBPetList.cpp",
  49514. 0xFu,
  49515. "DBPetList::DBPetList(ODBCInterface*)",
  49516. "pInterface");
  49517. this->mInterface = pInterface;
  49518. }
  49519. // 80D5248: using guessed type _DWORD (__cdecl *off_80D5248)(DBPetList *this);
  49520.  
  49521. //----- (08083F94) --------------------------------------------------------
  49522. void __cdecl DBPetList::DBPetList(DBPetList *const this, ODBCInterface *pInterface)
  49523. {
  49524. ODBCBase::ODBCBase(this);
  49525. this->_vptr_ODBCBase = (int (**)(...))&off_80D5248;
  49526. this->mDBName = 1;
  49527. this->mResult = 0;
  49528. this->mResultCount = 0;
  49529. this->m_CharGuid = -1;
  49530. this->m_DBVersion = 0;
  49531. if ( !pInterface )
  49532. __assert__(
  49533. "../../Common/DBSystem/DataBase/DBPetList.cpp",
  49534. 0xFu,
  49535. "DBPetList::DBPetList(ODBCInterface*)",
  49536. "pInterface");
  49537. this->mInterface = pInterface;
  49538. }
  49539. // 80D5248: using guessed type _DWORD (__cdecl *off_80D5248)(DBPetList *this);
  49540.  
  49541. //----- (08084000) --------------------------------------------------------
  49542. #error "8084088: positive sp value has been found (funcsize=41)"
  49543.  
  49544. //----- (080840C0) --------------------------------------------------------
  49545. int __cdecl DBPetList::Save(DBPetList *const this, void *pSource)
  49546. {
  49547. char *v2; // edi
  49548. DB_QUERY *v3; // eax
  49549. int v4; // ebx
  49550. int v5; // STB0_4
  49551. int v6; // STAC_4
  49552. int v7; // STA8_4
  49553. int v8; // STA0_4
  49554. int v9; // ST9C_4
  49555. int v10; // ST98_4
  49556. UINT v11; // ST94_4
  49557. int v12; // ST90_4
  49558. int v13; // STC8_4
  49559. int v14; // ST8C_4
  49560. int v15; // ST84_4
  49561. int v16; // ST80_4
  49562. int v17; // ST7C_4
  49563. int v18; // ST78_4
  49564. int v19; // ST74_4
  49565. int v20; // ST70_4
  49566. int v21; // ST6C_4
  49567. float v22; // ST60_4
  49568. INT v23; // eax
  49569. DB_QUERY *pQuery; // [esp+20h] [ebp-264h]
  49570. INT i; // [esp+24h] [ebp-260h]
  49571. INT Result; // [esp+28h] [ebp-25Ch]
  49572. CHAR PetCamp[100]; // [esp+2Ch] [ebp-258h]
  49573. CHAR PetTitle[200]; // [esp+9Ch] [ebp-1E8h]
  49574. CHAR PetSkill[256]; // [esp+16Ch] [ebp-118h]
  49575.  
  49576. (*((void (__cdecl **)(DBPetList *const ))this->_vptr_ODBCBase + 2))(this);
  49577. (*((void (__cdecl **)(DBPetList *const , INT *))this->_vptr_ODBCBase + 4))(this, &Result);
  49578. if ( !pSource )
  49579. __assert__(
  49580. "../../Common/DBSystem/DataBase/DBPetList.cpp",
  49581. 0x37u,
  49582. "virtual int DBPetList::Save(void*)",
  49583. "pCharFullData");
  49584. i = 0;
  49585. v2 = (char *)pSource;
  49586. while ( 1 )
  49587. {
  49588. if ( *((_DWORD *)v2 + 10068) || *((_DWORD *)v2 + 10069) )
  49589. {
  49590. v3 = ODBCBase::GetInternalQuery((int)this);
  49591. pQuery = v3;
  49592. if ( !v3 )
  49593. __assert__("../../Common/DBSystem/DataBase/DBPetList.cpp", 0x42u, "virtual int DBPetList::Save(void*)", "FALSE");
  49594. memset(v3, 0, 0x1000u);
  49595. if ( this->m_CharGuid == -1 )
  49596. break;
  49597. memset(PetSkill, 0, 0x100u);
  49598. Binary2String(v2 + 40444, 0x27u, PetSkill);
  49599. memset(PetTitle, 0, 0xC8u);
  49600. Binary2String(v2 + 40583, 0x50u, PetTitle);
  49601. memset(PetCamp, 0, 0x64u);
  49602. if ( !StrSafeCheck(v2 + 40292, 0x1Eu) )
  49603. break;
  49604. if ( !StrSafeCheck(v2 + 40322, 0x22u) )
  49605. break;
  49606. v4 = *((_DWORD *)v2 + 10069);
  49607. v5 = *(unsigned __int16 *)(v2 + 40669);
  49608. v6 = *(unsigned __int16 *)(v2 + 40667);
  49609. v7 = *(_DWORD *)(v2 + 40663);
  49610. v8 = *(_DWORD *)(v2 + 40579);
  49611. v9 = *((_DWORD *)v2 + 10071);
  49612. v10 = *((_DWORD *)v2 + 10070);
  49613. v11 = this->m_DBVersion;
  49614. v12 = *((_DWORD *)v2 + 10090);
  49615. v13 = *((_DWORD *)v2 + 10068);
  49616. v14 = (unsigned __int8)v2[40423];
  49617. v15 = *((_DWORD *)v2 + 10109);
  49618. v16 = *((_DWORD *)v2 + 10107);
  49619. v17 = *((_DWORD *)v2 + 10110);
  49620. v18 = *((_DWORD *)v2 + 10108);
  49621. v19 = *((_DWORD *)v2 + 10106);
  49622. v20 = *(_DWORD *)(v2 + 40419);
  49623. v21 = *(_DWORD *)(v2 + 40415);
  49624. v22 = *(float *)(v2 + 40411) * 1000.0;
  49625. v23 = Float2Int<float>(v22);
  49626. DB_QUERY::Parse(
  49627. pQuery,
  49628. NewCharPet,
  49629. "t_pet",
  49630. this->m_CharGuid,
  49631. v13,
  49632. v4,
  49633. *((_DWORD *)v2 + 10072),
  49634. v2 + 40292,
  49635. v2 + 40322,
  49636. *((_DWORD *)v2 + 10089),
  49637. *((_DWORD *)v2 + 10091),
  49638. *((_DWORD *)v2 + 10092),
  49639. *((_DWORD *)v2 + 10093),
  49640. PetCamp,
  49641. *((_DWORD *)v2 + 10094),
  49642. 0,
  49643. *((_DWORD *)v2 + 10095),
  49644. (unsigned __int8)v2[40384],
  49645. (unsigned __int8)v2[40385],
  49646. (unsigned __int8)v2[40386],
  49647. *(_DWORD *)(v2 + 40387),
  49648. *(_DWORD *)(v2 + 40391),
  49649. *(_DWORD *)(v2 + 40395),
  49650. *(_DWORD *)(v2 + 40399),
  49651. *(_DWORD *)(v2 + 40403),
  49652. *(_DWORD *)(v2 + 40407),
  49653. v23,
  49654. v21,
  49655. v20,
  49656. v19,
  49657. v18,
  49658. v17,
  49659. v16,
  49660. v15,
  49661. PetSkill,
  49662. v14,
  49663. v12,
  49664. v11,
  49665. v10,
  49666. v9,
  49667. v8,
  49668. PetTitle,
  49669. v7,
  49670. v6,
  49671. v5,
  49672. 1);
  49673. if ( !ODBCBase::Save(&this->0, pSource) )
  49674. break;
  49675. }
  49676. ++i;
  49677. v2 += 399;
  49678. if ( i > 9 )
  49679. return 1;
  49680. }
  49681. return 0;
  49682. }
  49683.  
  49684. //----- (08084400) --------------------------------------------------------
  49685. #error "808448B: positive sp value has been found (funcsize=41)"
  49686.  
  49687. //----- (080844C4) --------------------------------------------------------
  49688. void __cdecl DBPetList::LoadPetSkillFrom_V0(_PET_SKILL *PetSkill, UINT PetSkillNum, _PET_SKILL *PetSkill_V0, UINT PetSkillNum_V0)
  49689. {
  49690. UINT v4; // esi
  49691. UINT v5; // edx
  49692. signed int v6; // ecx
  49693. _PET_SKILL *v7; // ebx
  49694.  
  49695. if ( PetSkill && PetSkill_V0 )
  49696. {
  49697. if ( PetSkillNum > 0 && PetSkillNum_V0 > 0 )
  49698. {
  49699. *(_WORD *)&PetSkill->m_bSelfRealize = *(_WORD *)&PetSkill_V0->m_bSelfRealize;
  49700. HIBYTE(PetSkill->m_nSkillID) = HIBYTE(PetSkill_V0->m_nSkillID);
  49701. }
  49702. v4 = 2;
  49703. v5 = 1;
  49704. v6 = 1;
  49705. v7 = PetSkill + 2;
  49706. do
  49707. {
  49708. if ( v4 < PetSkillNum && v5 < PetSkillNum_V0 )
  49709. {
  49710. *(_WORD *)&v7->m_bSelfRealize = *(_WORD *)&PetSkill_V0[v6].m_bSelfRealize;
  49711. HIBYTE(v7->m_nSkillID) = HIBYTE(PetSkill_V0[v6].m_nSkillID);
  49712. ++v4;
  49713. ++v7;
  49714. }
  49715. ++v5;
  49716. ++v6;
  49717. }
  49718. while ( v5 <= 4 );
  49719. if ( PetSkillNum > 0xC && PetSkillNum_V0 > 5 )
  49720. {
  49721. *(_WORD *)&PetSkill[12].m_bSelfRealize = *(_WORD *)&PetSkill_V0[5].m_bSelfRealize;
  49722. HIBYTE(PetSkill[12].m_nSkillID) = HIBYTE(PetSkill_V0[5].m_nSkillID);
  49723. }
  49724. }
  49725. }
  49726.  
  49727. //----- (08084560) --------------------------------------------------------
  49728. int __cdecl DBPetList::ParseResult(DBPetList *const this, void *pResult)
  49729. {
  49730. char *v2; // ebx
  49731. UINT v3; // edi
  49732. INT v4; // eax
  49733. _PET_SKILL *v5; // eax
  49734. signed int v6; // edx
  49735. UINT v7; // edi
  49736. _PET_SKILL *PetSkill; // [esp+4h] [ebp-44h]
  49737. INT i; // [esp+8h] [ebp-40h]
  49738. INT ErrorCode; // [esp+Ch] [ebp-3Ch]
  49739. _PET_SKILL SkillList[6]; // [esp+10h] [ebp-38h]
  49740.  
  49741. v2 = (char *)pResult;
  49742. if ( this->mOPType == DB_LOAD )
  49743. {
  49744. if ( !pResult )
  49745. __assert__(
  49746. "../../Common/DBSystem/DataBase/DBPetList.cpp",
  49747. 0xC0u,
  49748. "virtual int DBPetList::ParseResult(void*)",
  49749. "pCharFullData");
  49750. if ( this->mResultCount > 10 )
  49751. __assert__(
  49752. "../../Common/DBSystem/DataBase/DBPetList.cpp",
  49753. 0xF0u,
  49754. "virtual int DBPetList::ParseResult(void*)",
  49755. "mResultCount<=HUMAN_PET_MAX_COUNT");
  49756. if ( !this->mInterface )
  49757. __assert__(
  49758. "../../Common/DBSystem/DataBase/DBPetList.cpp",
  49759. 0xF1u,
  49760. "virtual int DBPetList::ParseResult(void*)",
  49761. "mInterface");
  49762. i = 0;
  49763. PetSkill = (_PET_SKILL *)((char *)pResult + 40444);
  49764. do
  49765. {
  49766. if ( !ODBCInterface::Fetch(this->mInterface) )
  49767. break;
  49768. ODBCInterface::GetUInt(this->mInterface, 1, &ErrorCode);
  49769. v3 = ODBCInterface::GetUInt(this->mInterface, 2, &ErrorCode);
  49770. *((_DWORD *)v2 + 10069) = ODBCInterface::GetUInt(this->mInterface, 3, &ErrorCode);
  49771. *((_DWORD *)v2 + 10068) = v3;
  49772. *((_DWORD *)v2 + 10072) = ODBCInterface::GetInt(this->mInterface, 4, &ErrorCode);
  49773. ODBCInterface::GetString(this->mInterface, 5, v2 + 40292, 30, &ErrorCode);
  49774. ODBCInterface::GetString(this->mInterface, 6, v2 + 40322, 34, &ErrorCode);
  49775. *((_DWORD *)v2 + 10089) = ODBCInterface::GetInt(this->mInterface, 7, &ErrorCode);
  49776. *((_DWORD *)v2 + 10091) = ODBCInterface::GetInt(this->mInterface, 8, &ErrorCode);
  49777. *((_DWORD *)v2 + 10092) = ODBCInterface::GetInt(this->mInterface, 9, &ErrorCode);
  49778. *((_DWORD *)v2 + 10093) = ODBCInterface::GetInt(this->mInterface, 10, &ErrorCode);
  49779. *((_DWORD *)v2 + 10094) = ODBCInterface::GetInt(this->mInterface, 12, &ErrorCode);
  49780. *((_DWORD *)v2 + 10095) = ODBCInterface::GetInt(this->mInterface, 14, &ErrorCode);
  49781. v2[40384] = ODBCInterface::GetInt(this->mInterface, 15, &ErrorCode);
  49782. v2[40385] = ODBCInterface::GetInt(this->mInterface, 16, &ErrorCode);
  49783. v2[40386] = ODBCInterface::GetInt(this->mInterface, 17, &ErrorCode);
  49784. *(_DWORD *)(v2 + 40387) = ODBCInterface::GetUInt(this->mInterface, 18, &ErrorCode);
  49785. *(_DWORD *)(v2 + 40391) = ODBCInterface::GetUInt(this->mInterface, 19, &ErrorCode);
  49786. *(_DWORD *)(v2 + 40395) = ODBCInterface::GetUInt(this->mInterface, 20, &ErrorCode);
  49787. *(_DWORD *)(v2 + 40399) = ODBCInterface::GetUInt(this->mInterface, 21, &ErrorCode);
  49788. *(_DWORD *)(v2 + 40403) = ODBCInterface::GetUInt(this->mInterface, 22, &ErrorCode);
  49789. *(_DWORD *)(v2 + 40407) = ODBCInterface::GetUInt(this->mInterface, 23, &ErrorCode);
  49790. *(float *)(v2 + 40411) = (long double)ODBCInterface::GetUInt(this->mInterface, 24, &ErrorCode) * 0.001;
  49791. *(_DWORD *)(v2 + 40415) = ODBCInterface::GetUInt(this->mInterface, 25, &ErrorCode);
  49792. *(_DWORD *)(v2 + 40419) = ODBCInterface::GetUInt(this->mInterface, 26, &ErrorCode);
  49793. *((_DWORD *)v2 + 10106) = ODBCInterface::GetUInt(this->mInterface, 27, &ErrorCode);
  49794. *((_DWORD *)v2 + 10108) = ODBCInterface::GetUInt(this->mInterface, 28, &ErrorCode);
  49795. *((_DWORD *)v2 + 10110) = ODBCInterface::GetUInt(this->mInterface, 29, &ErrorCode);
  49796. *((_DWORD *)v2 + 10107) = ODBCInterface::GetUInt(this->mInterface, 30, &ErrorCode);
  49797. *((_DWORD *)v2 + 10109) = ODBCInterface::GetUInt(this->mInterface, 31, &ErrorCode);
  49798. v4 = ODBCInterface::GetInt(this->mInterface, 42, &ErrorCode);
  49799. if ( v4 )
  49800. {
  49801. if ( v4 == 1 )
  49802. ODBCInterface::GetField(this->mInterface, 32, v2 + 40444, 39, &ErrorCode);
  49803. }
  49804. else
  49805. {
  49806. v5 = SkillList;
  49807. v6 = 5;
  49808. while ( v6 != -1 )
  49809. {
  49810. v5->m_bSelfRealize = 0;
  49811. v5->m_nSkillID = -1;
  49812. --v6;
  49813. ++v5;
  49814. }
  49815. ODBCInterface::GetField(this->mInterface, 32, (CHAR *)SkillList, 18, &ErrorCode);
  49816. DBPetList::LoadPetSkillFrom_V0(PetSkill, 0xDu, SkillList, 6u);
  49817. }
  49818. v2[40423] = ODBCInterface::GetInt(this->mInterface, 33, &ErrorCode);
  49819. *((_DWORD *)v2 + 10090) = ODBCInterface::GetInt(this->mInterface, 34, &ErrorCode);
  49820. v7 = ODBCInterface::GetUInt(this->mInterface, 35, &ErrorCode);
  49821. *((_DWORD *)v2 + 10071) = ODBCInterface::GetUInt(this->mInterface, 36, &ErrorCode);
  49822. *((_DWORD *)v2 + 10070) = v7;
  49823. *(_DWORD *)(v2 + 40579) = ODBCInterface::GetInt(this->mInterface, 37, &ErrorCode);
  49824. ODBCInterface::GetField(this->mInterface, 38, v2 + 40583, 80, &ErrorCode);
  49825. *(_DWORD *)(v2 + 40663) = ODBCInterface::GetInt(this->mInterface, 39, &ErrorCode);
  49826. *(_WORD *)(v2 + 40667) = ODBCInterface::GetInt(this->mInterface, 40, &ErrorCode);
  49827. ++i;
  49828. *(_WORD *)(v2 + 40669) = ODBCInterface::GetInt(this->mInterface, 41, &ErrorCode);
  49829. PetSkill += 133;
  49830. v2 += 399;
  49831. }
  49832. while ( i <= 9 );
  49833. ODBCInterface::Clear(this->mInterface);
  49834. }
  49835. if ( !this->mInterface )
  49836. __assert__(
  49837. "../../Common/DBSystem/DataBase/DBPetList.cpp",
  49838. 0x174u,
  49839. "virtual int DBPetList::ParseResult(void*)",
  49840. "mInterface");
  49841. ODBCInterface::Clear(this->mInterface);
  49842. return 1;
  49843. }
  49844.  
  49845. //----- (08084AE4) --------------------------------------------------------
  49846. GUID_t __cdecl DBPetList::GetCharGuid(int a2)
  49847. {
  49848. return *(_DWORD *)(a2 + 24);
  49849. }
  49850.  
  49851. //----- (08084AF0) --------------------------------------------------------
  49852. void __cdecl DBPetList::SetCharGuid(int a3, int a4)
  49853. {
  49854. *(_DWORD *)(a3 + 24) = a4;
  49855. }
  49856.  
  49857. //----- (08084B00) --------------------------------------------------------
  49858. UINT __cdecl DBPetList::GetDBVersion(int a2)
  49859. {
  49860. return *(_DWORD *)(a2 + 28);
  49861. }
  49862.  
  49863. //----- (08084B0C) --------------------------------------------------------
  49864. void __cdecl DBPetList::SetDBVersion(int a3, int a4)
  49865. {
  49866. *(_DWORD *)(a3 + 28) = a4;
  49867. }
  49868.  
  49869. //----- (08084B1C) --------------------------------------------------------
  49870. void __cdecl _tcf_0_114(void *a1)
  49871. {
  49872. std::ios_base::Init::~Init(&std::__ioinit);
  49873. }
  49874.  
  49875. //----- (08084B2C) --------------------------------------------------------
  49876. void `global constructor keyed to'DBPetList::DBPetList()
  49877. {
  49878. std::ios_base::Init::Init(&std::__ioinit);
  49879. __cxa_atexit(_tcf_0_114, 0, &_dso_handle);
  49880. }
  49881. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  49882.  
  49883. //----- (08084B58) --------------------------------------------------------
  49884. void __cdecl DBPrivateInfo::DBPrivateInfo(DBPrivateInfo *const this, ODBCInterface *pInterface)
  49885. {
  49886. ODBCBase::ODBCBase(this);
  49887. this->_vptr_ODBCBase = (int (**)(...))&off_80D5430;
  49888. this->mDBName = 1;
  49889. this->mResult = 0;
  49890. this->mResultCount = 0;
  49891. this->m_CharGuid = -1;
  49892. this->m_DBVersion = 0;
  49893. if ( !pInterface )
  49894. __assert__(
  49895. "../../Common/DBSystem/DataBase/DBPrivateInfo.cpp",
  49896. 0xEu,
  49897. "DBPrivateInfo::DBPrivateInfo(ODBCInterface*)",
  49898. "pInterface");
  49899. this->mInterface = pInterface;
  49900. }
  49901. // 80D5430: using guessed type _DWORD (__cdecl *off_80D5430)(DBPrivateInfo *this);
  49902.  
  49903. //----- (08084BC4) --------------------------------------------------------
  49904. void __cdecl DBPrivateInfo::DBPrivateInfo(DBPrivateInfo *const this, ODBCInterface *pInterface)
  49905. {
  49906. ODBCBase::ODBCBase(this);
  49907. this->_vptr_ODBCBase = (int (**)(...))&off_80D5430;
  49908. this->mDBName = 1;
  49909. this->mResult = 0;
  49910. this->mResultCount = 0;
  49911. this->m_CharGuid = -1;
  49912. this->m_DBVersion = 0;
  49913. if ( !pInterface )
  49914. __assert__(
  49915. "../../Common/DBSystem/DataBase/DBPrivateInfo.cpp",
  49916. 0xEu,
  49917. "DBPrivateInfo::DBPrivateInfo(ODBCInterface*)",
  49918. "pInterface");
  49919. this->mInterface = pInterface;
  49920. }
  49921. // 80D5430: using guessed type _DWORD (__cdecl *off_80D5430)(DBPrivateInfo *this);
  49922.  
  49923. //----- (08084C30) --------------------------------------------------------
  49924. #error "8084CB8: positive sp value has been found (funcsize=41)"
  49925.  
  49926. //----- (08084CF0) --------------------------------------------------------
  49927. int __cdecl DBPrivateInfo::Save(DBPrivateInfo *const this, void *pSource)
  49928. {
  49929. DB_QUERY *v2; // eax
  49930. DB_QUERY *v3; // esi
  49931. CHAR PrivateInfo[1024]; // [esp+10h] [ebp-418h]
  49932.  
  49933. if ( !pSource )
  49934. __assert__(
  49935. "../../Common/DBSystem/DataBase/DBPrivateInfo.cpp",
  49936. 0x32u,
  49937. "virtual int DBPrivateInfo::Save(void*)",
  49938. "pCharFullData");
  49939. memset(PrivateInfo, 0, 0x400u);
  49940. Binary2String((const CHAR *)pSource + 50161, 0x1B0u, PrivateInfo);
  49941. v2 = ODBCBase::GetInternalQuery((int)this);
  49942. v3 = v2;
  49943. if ( !v2 )
  49944. __assert__(
  49945. "../../Common/DBSystem/DataBase/DBPrivateInfo.cpp",
  49946. 0x41u,
  49947. "virtual int DBPrivateInfo::Save(void*)",
  49948. "FALSE");
  49949. memset(v2, 0, 0x1000u);
  49950. DB_QUERY::Parse(v3, UpdateCharPrivateInfo, "t_char", PrivateInfo, this->m_CharGuid, this->m_DBVersion);
  49951. return ODBCBase::Save(&this->0, pSource) != 0;
  49952. }
  49953.  
  49954. //----- (08084E20) --------------------------------------------------------
  49955. int __cdecl DBPrivateInfo::Delete(DBPrivateInfo *const this)
  49956. {
  49957. return 1;
  49958. }
  49959.  
  49960. //----- (08084E2C) --------------------------------------------------------
  49961. int __cdecl DBPrivateInfo::ParseResult(DBPrivateInfo *const this, void *pResult)
  49962. {
  49963. signed int v2; // esi
  49964. INT ErrorCode; // [esp+8h] [ebp-10h]
  49965.  
  49966. if ( this->mOPType == DB_LOAD )
  49967. {
  49968. if ( !pResult )
  49969. __assert__(
  49970. "../../Common/DBSystem/DataBase/DBPrivateInfo.cpp",
  49971. 0x6Du,
  49972. "virtual int DBPrivateInfo::ParseResult(void*)",
  49973. "pCharFullData");
  49974. if ( this->mResultCount > 20 )
  49975. __assert__(
  49976. "../../Common/DBSystem/DataBase/DBPrivateInfo.cpp",
  49977. 0x76u,
  49978. "virtual int DBPrivateInfo::ParseResult(void*)",
  49979. "mResultCount<=MAX_CHAR_MISSION_NUM");
  49980. if ( !this->mInterface )
  49981. __assert__(
  49982. "../../Common/DBSystem/DataBase/DBPrivateInfo.cpp",
  49983. 0x77u,
  49984. "virtual int DBPrivateInfo::ParseResult(void*)",
  49985. "mInterface");
  49986. v2 = 0;
  49987. do
  49988. {
  49989. if ( !ODBCInterface::Fetch(this->mInterface) )
  49990. break;
  49991. ODBCInterface::GetUInt(this->mInterface, 1, &ErrorCode);
  49992. ODBCInterface::GetField(this->mInterface, 2, (CHAR *)pResult + 50161, 432, &ErrorCode);
  49993. ++v2;
  49994. }
  49995. while ( v2 <= 19 );
  49996. ODBCInterface::Clear(this->mInterface);
  49997. }
  49998. if ( !this->mInterface )
  49999. __assert__(
  50000. "../../Common/DBSystem/DataBase/DBPrivateInfo.cpp",
  50001. 0x91u,
  50002. "virtual int DBPrivateInfo::ParseResult(void*)",
  50003. "mInterface");
  50004. ODBCInterface::Clear(this->mInterface);
  50005. return 1;
  50006. }
  50007.  
  50008. //----- (08084F9C) --------------------------------------------------------
  50009. GUID_t __cdecl DBPrivateInfo::GetCharGuid(int a2)
  50010. {
  50011. return *(_DWORD *)(a2 + 24);
  50012. }
  50013.  
  50014. //----- (08084FA8) --------------------------------------------------------
  50015. void __cdecl DBPrivateInfo::SetCharGuid(int a3, int a4)
  50016. {
  50017. *(_DWORD *)(a3 + 24) = a4;
  50018. }
  50019.  
  50020. //----- (08084FB8) --------------------------------------------------------
  50021. UINT __cdecl DBPrivateInfo::GetDBVersion(int a2)
  50022. {
  50023. return *(_DWORD *)(a2 + 28);
  50024. }
  50025.  
  50026. //----- (08084FC4) --------------------------------------------------------
  50027. void __cdecl DBPrivateInfo::SetDBVersion(int a3, int a4)
  50028. {
  50029. *(_DWORD *)(a3 + 28) = a4;
  50030. }
  50031.  
  50032. //----- (08084FD4) --------------------------------------------------------
  50033. void __cdecl _tcf_0_115(void *a1)
  50034. {
  50035. std::ios_base::Init::~Init(&std::__ioinit);
  50036. }
  50037.  
  50038. //----- (08084FE4) --------------------------------------------------------
  50039. void `global constructor keyed to'DBPrivateInfo::DBPrivateInfo()
  50040. {
  50041. std::ios_base::Init::Init(&std::__ioinit);
  50042. __cxa_atexit(_tcf_0_115, 0, &_dso_handle);
  50043. }
  50044. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  50045.  
  50046. //----- (08085010) --------------------------------------------------------
  50047. void __cdecl DBPvPInfo::DBPvPInfo(DBPvPInfo *const this, ODBCInterface *pInterface)
  50048. {
  50049. ODBCBase::ODBCBase(this);
  50050. this->_vptr_ODBCBase = (int (**)(...))&off_80D55F0;
  50051. this->mDBName = 1;
  50052. this->mResult = 0;
  50053. this->mResultCount = 0;
  50054. this->m_CharGuid = -1;
  50055. this->m_DBVersion = 0;
  50056. if ( !pInterface )
  50057. __assert__(
  50058. "../../Common/DBSystem/DataBase/DBPvPInfo.cpp",
  50059. 0xEu,
  50060. "DBPvPInfo::DBPvPInfo(ODBCInterface*)",
  50061. "pInterface");
  50062. this->mInterface = pInterface;
  50063. }
  50064. // 80D55F0: using guessed type _DWORD (__cdecl *off_80D55F0)(DBPvPInfo *this);
  50065.  
  50066. //----- (0808507C) --------------------------------------------------------
  50067. void __cdecl DBPvPInfo::DBPvPInfo(DBPvPInfo *const this, ODBCInterface *pInterface)
  50068. {
  50069. ODBCBase::ODBCBase(this);
  50070. this->_vptr_ODBCBase = (int (**)(...))&off_80D55F0;
  50071. this->mDBName = 1;
  50072. this->mResult = 0;
  50073. this->mResultCount = 0;
  50074. this->m_CharGuid = -1;
  50075. this->m_DBVersion = 0;
  50076. if ( !pInterface )
  50077. __assert__(
  50078. "../../Common/DBSystem/DataBase/DBPvPInfo.cpp",
  50079. 0xEu,
  50080. "DBPvPInfo::DBPvPInfo(ODBCInterface*)",
  50081. "pInterface");
  50082. this->mInterface = pInterface;
  50083. }
  50084. // 80D55F0: using guessed type _DWORD (__cdecl *off_80D55F0)(DBPvPInfo *this);
  50085.  
  50086. //----- (080850E8) --------------------------------------------------------
  50087. #error "8085170: positive sp value has been found (funcsize=41)"
  50088.  
  50089. //----- (080851A8) --------------------------------------------------------
  50090. int __cdecl DBPvPInfo::Save(DBPvPInfo *const this, void *pSource)
  50091. {
  50092. DB_QUERY *v2; // eax
  50093. DB_QUERY *v3; // esi
  50094. CHAR PvPInfo[2048]; // [esp+10h] [ebp-818h]
  50095.  
  50096. if ( !pSource )
  50097. __assert__(
  50098. "../../Common/DBSystem/DataBase/DBPvPInfo.cpp",
  50099. 0x32u,
  50100. "virtual int DBPvPInfo::Save(void*)",
  50101. "pCharFullData");
  50102. memset(PvPInfo, 0, 0x800u);
  50103. Binary2String((const CHAR *)pSource + 1022, 0x1B3u, PvPInfo);
  50104. v2 = ODBCBase::GetInternalQuery((int)this);
  50105. v3 = v2;
  50106. if ( !v2 )
  50107. __assert__("../../Common/DBSystem/DataBase/DBPvPInfo.cpp", 0x41u, "virtual int DBPvPInfo::Save(void*)", "FALSE");
  50108. memset(v2, 0, 0x1000u);
  50109. DB_QUERY::Parse(v3, UpdateCharPvPInfo, "t_char", PvPInfo, this->m_CharGuid, this->m_DBVersion);
  50110. return ODBCBase::Save(&this->0, pSource) != 0;
  50111. }
  50112.  
  50113. //----- (080852D8) --------------------------------------------------------
  50114. int __cdecl DBPvPInfo::Delete(DBPvPInfo *const this)
  50115. {
  50116. return 1;
  50117. }
  50118.  
  50119. //----- (080852E4) --------------------------------------------------------
  50120. int __cdecl DBPvPInfo::ParseResult(DBPvPInfo *const this, void *pResult)
  50121. {
  50122. INT ErrorCode; // [esp+8h] [ebp-10h]
  50123.  
  50124. if ( this->mOPType == DB_LOAD )
  50125. {
  50126. if ( !pResult )
  50127. __assert__(
  50128. "../../Common/DBSystem/DataBase/DBPvPInfo.cpp",
  50129. 0x6Du,
  50130. "virtual int DBPvPInfo::ParseResult(void*)",
  50131. "pCharFullData");
  50132. if ( !this->mInterface )
  50133. __assert__(
  50134. "../../Common/DBSystem/DataBase/DBPvPInfo.cpp",
  50135. 0x77u,
  50136. "virtual int DBPvPInfo::ParseResult(void*)",
  50137. "mInterface");
  50138. if ( ODBCInterface::Fetch(this->mInterface) )
  50139. {
  50140. ODBCInterface::GetUInt(this->mInterface, 1, &ErrorCode);
  50141. ODBCInterface::GetField(this->mInterface, 2, (CHAR *)pResult + 1022, 435, &ErrorCode);
  50142. }
  50143. ODBCInterface::Clear(this->mInterface);
  50144. }
  50145. if ( !this->mInterface )
  50146. __assert__(
  50147. "../../Common/DBSystem/DataBase/DBPvPInfo.cpp",
  50148. 0x91u,
  50149. "virtual int DBPvPInfo::ParseResult(void*)",
  50150. "mInterface");
  50151. ODBCInterface::Clear(this->mInterface);
  50152. return 1;
  50153. }
  50154.  
  50155. //----- (0808541C) --------------------------------------------------------
  50156. GUID_t __cdecl DBPvPInfo::GetCharGuid(int a2)
  50157. {
  50158. return *(_DWORD *)(a2 + 24);
  50159. }
  50160.  
  50161. //----- (08085428) --------------------------------------------------------
  50162. void __cdecl DBPvPInfo::SetCharGuid(int a3, int a4)
  50163. {
  50164. *(_DWORD *)(a3 + 24) = a4;
  50165. }
  50166.  
  50167. //----- (08085438) --------------------------------------------------------
  50168. UINT __cdecl DBPvPInfo::GetDBVersion(int a2)
  50169. {
  50170. return *(_DWORD *)(a2 + 28);
  50171. }
  50172.  
  50173. //----- (08085444) --------------------------------------------------------
  50174. void __cdecl DBPvPInfo::SetDBVersion(int a3, int a4)
  50175. {
  50176. *(_DWORD *)(a3 + 28) = a4;
  50177. }
  50178.  
  50179. //----- (08085454) --------------------------------------------------------
  50180. void __cdecl _tcf_0_116(void *a1)
  50181. {
  50182. std::ios_base::Init::~Init(&std::__ioinit);
  50183. }
  50184.  
  50185. //----- (08085464) --------------------------------------------------------
  50186. void `global constructor keyed to'DBPvPInfo::DBPvPInfo()
  50187. {
  50188. std::ios_base::Init::Init(&std::__ioinit);
  50189. __cxa_atexit(_tcf_0_116, 0, &_dso_handle);
  50190. }
  50191. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  50192.  
  50193. //----- (08085490) --------------------------------------------------------
  50194. void __cdecl DBRelationList::DBRelationList(DBRelationList *const this, ODBCInterface *pInterface)
  50195. {
  50196. ODBCBase::ODBCBase(this);
  50197. this->_vptr_ODBCBase = (int (**)(...))&off_80D5748;
  50198. this->mDBName = 1;
  50199. this->mResult = 0;
  50200. this->mResultCount = 0;
  50201. this->m_CharGuid = -1;
  50202. this->m_DBVersion = 0;
  50203. if ( !pInterface )
  50204. __assert__(
  50205. "../../Common/DBSystem/DataBase/DBRelationList.cpp",
  50206. 0xFu,
  50207. "DBRelationList::DBRelationList(ODBCInterface*)",
  50208. "pInterface");
  50209. this->mInterface = pInterface;
  50210. }
  50211. // 80D5748: using guessed type _DWORD (__cdecl *off_80D5748)(DBRelationList *this);
  50212.  
  50213. //----- (080854FC) --------------------------------------------------------
  50214. void __cdecl DBRelationList::DBRelationList(DBRelationList *const this, ODBCInterface *pInterface)
  50215. {
  50216. ODBCBase::ODBCBase(this);
  50217. this->_vptr_ODBCBase = (int (**)(...))&off_80D5748;
  50218. this->mDBName = 1;
  50219. this->mResult = 0;
  50220. this->mResultCount = 0;
  50221. this->m_CharGuid = -1;
  50222. this->m_DBVersion = 0;
  50223. if ( !pInterface )
  50224. __assert__(
  50225. "../../Common/DBSystem/DataBase/DBRelationList.cpp",
  50226. 0xFu,
  50227. "DBRelationList::DBRelationList(ODBCInterface*)",
  50228. "pInterface");
  50229. this->mInterface = pInterface;
  50230. }
  50231. // 80D5748: using guessed type _DWORD (__cdecl *off_80D5748)(DBRelationList *this);
  50232.  
  50233. //----- (08085568) --------------------------------------------------------
  50234. #error "80855F0: positive sp value has been found (funcsize=41)"
  50235.  
  50236. //----- (08085628) --------------------------------------------------------
  50237. int __cdecl DBRelationList::Save(DBRelationList *const this, void *pSource)
  50238. {
  50239. int v2; // eax
  50240. int v3; // edx
  50241. char *v5; // esi
  50242. DB_QUERY *v6; // eax
  50243. DB_QUERY *v7; // eax
  50244. DB_QUERY *v8; // ebx
  50245. __int16 v9; // ax
  50246. INT v10; // edx
  50247. UINT v11; // ST28_4
  50248. DB_QUERY *pQuery; // [esp+30h] [ebp-2F4h]
  50249. INT i; // [esp+34h] [ebp-2F0h]
  50250. INT Result; // [esp+38h] [ebp-2ECh]
  50251. char src; // [esp+3Ch] [ebp-2E8h]
  50252. __int16 v16; // [esp+40h] [ebp-2E4h]
  50253. char v17; // [esp+42h] [ebp-2E2h]
  50254. int v18; // [esp+66h] [ebp-2BEh]
  50255. int v19; // [esp+7Eh] [ebp-2A6h]
  50256. _RELATION_DB_LOAD::RelationData ReData; // [esp+ACh] [ebp-278h]
  50257. CHAR CharRelationData[256]; // [esp+11Ch] [ebp-208h]
  50258. INT v22; // [esp+21Ch] [ebp-108h]
  50259. INT v23; // [esp+220h] [ebp-104h]
  50260. INT v24; // [esp+224h] [ebp-100h]
  50261. int v25; // [esp+228h] [ebp-FCh]
  50262. RELATION_MEMBER::ReMember_ExtData ExtData; // [esp+22Ch] [ebp-F8h]
  50263. CHAR MemberExtData[200]; // [esp+23Ch] [ebp-E8h]
  50264.  
  50265. v2 = (*((int (__cdecl **)(DBRelationList *const ))this->_vptr_ODBCBase + 2))(this);
  50266. v3 = 0;
  50267. if ( v2 )
  50268. {
  50269. (*((void (__cdecl **)(DBRelationList *const , INT *))this->_vptr_ODBCBase + 4))(this, &Result);
  50270. if ( !pSource )
  50271. __assert__(
  50272. "../../Common/DBSystem/DataBase/DBRelationList.cpp",
  50273. 0x44u,
  50274. "virtual int DBRelationList::Save(void*)",
  50275. "pCharFullData");
  50276. i = 0;
  50277. v5 = (char *)pSource;
  50278. do
  50279. {
  50280. v6 = ODBCBase::GetInternalQuery((int)this);
  50281. pQuery = v6;
  50282. if ( !v6 )
  50283. __assert__(
  50284. "../../Common/DBSystem/DataBase/DBRelationList.cpp",
  50285. 0x4Cu,
  50286. "virtual int DBRelationList::Save(void*)",
  50287. "FALSE");
  50288. memset(v6, 0, 0x1000u);
  50289. if ( this->m_CharGuid == -1 )
  50290. return 0;
  50291. if ( *(_DWORD *)(v5 + 44262) != -1 )
  50292. {
  50293. memset(MemberExtData, 0, 0xC8u);
  50294. v22 = *(_DWORD *)(v5 + 44298);
  50295. v9 = *((_WORD *)v5 + 22155);
  50296. v23 = *(_DWORD *)(v5 + 44302);
  50297. LOWORD(v25) = v9;
  50298. v10 = *(_DWORD *)(v5 + 44306);
  50299. *(_DWORD *)&ExtData.m_GuildID = v25;
  50300. v24 = v10;
  50301. ExtData.m_nLevel = v22;
  50302. ExtData.m_nMenPai = v23;
  50303. ExtData.m_nPortrait = v10;
  50304. Binary2String((const CHAR *)&ExtData, 0x10u, MemberExtData);
  50305. v11 = this->m_DBVersion;
  50306. DB_QUERY::Parse(
  50307. pQuery,
  50308. NewCharRelation,
  50309. "t_relation",
  50310. this->m_CharGuid,
  50311. *(_DWORD *)(v5 + 44262),
  50312. v5 + 44266,
  50313. *(_DWORD *)(v5 + 44314),
  50314. (unsigned __int8)v5[44318],
  50315. (unsigned __int8)v5[44319],
  50316. MemberExtData);
  50317. if ( !ODBCBase::Save(&this->0, pSource) )
  50318. return 0;
  50319. }
  50320. ++i;
  50321. v5 += 58;
  50322. }
  50323. while ( i <= 99 );
  50324. memset(CharRelationData, 0, 0x100u);
  50325. memset(&src, 0, 4u);
  50326. v16 = 0;
  50327. qmemcpy(&v17, (char *)pSource + 50069, 0x24u);
  50328. qmemcpy(&v18, (char *)pSource + 50105, 0x18u);
  50329. qmemcpy(&v19, (char *)pSource + 50129, 0x20u);
  50330. memcpy(&ReData, &src, 0x62u);
  50331. Binary2String((const CHAR *)&ReData, 0x62u, CharRelationData);
  50332. v7 = ODBCBase::GetInternalQuery((int)this);
  50333. v8 = v7;
  50334. if ( !v7 )
  50335. __assert__(
  50336. "../../Common/DBSystem/DataBase/DBRelationList.cpp",
  50337. 0x7Eu,
  50338. "virtual int DBRelationList::Save(void*)",
  50339. "FALSE");
  50340. memset(v7, 0, 0x1000u);
  50341. DB_QUERY::Parse(v8, UpdateCharRelationData, "t_char", CharRelationData, this->m_CharGuid, this->m_DBVersion);
  50342. v3 = ODBCBase::Save(&this->0, pSource) != 0;
  50343. }
  50344. return v3;
  50345. }
  50346.  
  50347. //----- (08085A28) --------------------------------------------------------
  50348. #error "8085AB3: positive sp value has been found (funcsize=41)"
  50349.  
  50350. //----- (08085AEC) --------------------------------------------------------
  50351. int __cdecl DBRelationList::ParseResult(DBRelationList *const this, void *pResult)
  50352. {
  50353. INT v2; // eax
  50354. unsigned __int8 v3; // dl
  50355. DB_QUERY *v4; // eax
  50356. DB_QUERY *v5; // esi
  50357. char *v6; // edx
  50358. char *v8; // esi
  50359. char *v9; // [esp+8h] [ebp-E0h]
  50360. char *v10; // [esp+Ch] [ebp-DCh]
  50361. INT i_0; // [esp+10h] [ebp-D8h]
  50362. INT i; // [esp+1Ch] [ebp-CCh]
  50363. INT iEnemySize; // [esp+20h] [ebp-C8h]
  50364. INT iBlackSize; // [esp+24h] [ebp-C4h]
  50365. INT iFriendSize; // [esp+28h] [ebp-C0h]
  50366. INT ErrorCode; // [esp+2Ch] [ebp-BCh]
  50367. _RELATION_DB_LOAD::RelationData ReData; // [esp+30h] [ebp-B8h]
  50368. RELATION_MEMBER::ReMember_ExtData ExtData; // [esp+A0h] [ebp-48h]
  50369. INT iGroupFriendSize[5]; // [esp+B0h] [ebp-38h]
  50370.  
  50371. if ( this->mOPType == DB_LOAD )
  50372. {
  50373. if ( !pResult )
  50374. __assert__(
  50375. "../../Common/DBSystem/DataBase/DBRelationList.cpp",
  50376. 0xBBu,
  50377. "virtual int DBRelationList::ParseResult(void*)",
  50378. "pCharFullData");
  50379. if ( this->mResultCount > 100 )
  50380. __assert__(
  50381. "../../Common/DBSystem/DataBase/DBRelationList.cpp",
  50382. 0xCAu,
  50383. "virtual int DBRelationList::ParseResult(void*)",
  50384. "mResultCount<=MAX_RELATION_SIZE");
  50385. if ( !this->mInterface )
  50386. __assert__(
  50387. "../../Common/DBSystem/DataBase/DBRelationList.cpp",
  50388. 0xCCu,
  50389. "virtual int DBRelationList::ParseResult(void*)",
  50390. "mInterface");
  50391. memset(iGroupFriendSize, 0, sizeof(iGroupFriendSize));
  50392. iFriendSize = 0;
  50393. iBlackSize = 0;
  50394. iEnemySize = 0;
  50395. i = 0;
  50396. v10 = (char *)pResult;
  50397. v9 = (char *)pResult + 5220;
  50398. do
  50399. {
  50400. if ( !ODBCInterface::Fetch(this->mInterface) )
  50401. break;
  50402. v2 = ODBCInterface::GetInt(this->mInterface, 5, &ErrorCode);
  50403. if ( v2 == 9 )
  50404. {
  50405. if ( iEnemySize + 90 <= 99 )
  50406. {
  50407. ODBCInterface::GetUInt(this->mInterface, 1, &ErrorCode);
  50408. *(_DWORD *)(v9 + 44262) = ODBCInterface::GetUInt(this->mInterface, 2, &ErrorCode);
  50409. ODBCInterface::GetString(this->mInterface, 3, v9 + 44266, 30, &ErrorCode);
  50410. *(_DWORD *)(v9 + 44314) = ODBCInterface::GetInt(this->mInterface, 4, &ErrorCode);
  50411. v9[44318] = ODBCInterface::GetInt(this->mInterface, 5, &ErrorCode);
  50412. v9[44319] = ODBCInterface::GetInt(this->mInterface, 6, &ErrorCode);
  50413. ODBCInterface::GetField(this->mInterface, 7, (CHAR *)&ExtData, 16, &ErrorCode);
  50414. *(RELATION_MEMBER::ReMember_ExtData *)(v9 + 44298) = ExtData;
  50415. ++iEnemySize;
  50416. v9 += 58;
  50417. }
  50418. }
  50419. else if ( v2 == 4 )
  50420. {
  50421. if ( iBlackSize + 80 <= 89 )
  50422. {
  50423. ODBCInterface::GetUInt(this->mInterface, 1, &ErrorCode);
  50424. v8 = (char *)pResult + 58 * (iBlackSize + 80);
  50425. *(_DWORD *)(v8 + 44262) = ODBCInterface::GetUInt(this->mInterface, 2, &ErrorCode);
  50426. ODBCInterface::GetString(this->mInterface, 3, v8 + 44266, 30, &ErrorCode);
  50427. *(_DWORD *)(v8 + 44314) = ODBCInterface::GetInt(this->mInterface, 4, &ErrorCode);
  50428. v8[44318] = ODBCInterface::GetInt(this->mInterface, 5, &ErrorCode);
  50429. v8[44319] = ODBCInterface::GetInt(this->mInterface, 6, &ErrorCode);
  50430. ODBCInterface::GetField(this->mInterface, 7, (CHAR *)&ExtData, 16, &ErrorCode);
  50431. *(RELATION_MEMBER::ReMember_ExtData *)(v8 + 44298) = ExtData;
  50432. ++iBlackSize;
  50433. }
  50434. }
  50435. else
  50436. {
  50437. if ( iFriendSize > 79 )
  50438. __assert__(
  50439. "../../Common/DBSystem/DataBase/DBRelationList.cpp",
  50440. 0x13Cu,
  50441. "virtual int DBRelationList::ParseResult(void*)",
  50442. "FALSE");
  50443. ODBCInterface::GetUInt(this->mInterface, 1, &ErrorCode);
  50444. *(_DWORD *)(v10 + 44262) = ODBCInterface::GetUInt(this->mInterface, 2, &ErrorCode);
  50445. ODBCInterface::GetString(this->mInterface, 3, v10 + 44266, 30, &ErrorCode);
  50446. *(_DWORD *)(v10 + 44314) = ODBCInterface::GetInt(this->mInterface, 4, &ErrorCode);
  50447. v10[44318] = ODBCInterface::GetInt(this->mInterface, 5, &ErrorCode);
  50448. v3 = ODBCInterface::GetInt(this->mInterface, 6, &ErrorCode);
  50449. v10[44319] = v3;
  50450. if ( (unsigned __int8)(v3 - 1) <= 3u )
  50451. ++iGroupFriendSize[v3];
  50452. ODBCInterface::GetField(this->mInterface, 7, (CHAR *)&ExtData, 16, &ErrorCode);
  50453. *(RELATION_MEMBER::ReMember_ExtData *)(v10 + 44298) = ExtData;
  50454. ++iFriendSize;
  50455. v10 += 58;
  50456. }
  50457. ++i;
  50458. }
  50459. while ( i <= 99 );
  50460. ODBCInterface::Clear(this->mInterface);
  50461. v4 = ODBCBase::GetInternalQuery((int)this);
  50462. v5 = v4;
  50463. if ( !v4 )
  50464. __assert__(
  50465. "../../Common/DBSystem/DataBase/DBRelationList.cpp",
  50466. 0x149u,
  50467. "virtual int DBRelationList::ParseResult(void*)",
  50468. "FALSE");
  50469. memset(v4, 0, 0x1000u);
  50470. DB_QUERY::Parse(v5, LoadCharRelationData, "t_char", this->m_CharGuid, this->m_DBVersion);
  50471. ODBCBase::Load(&this->0);
  50472. if ( !this->mInterface )
  50473. __assert__(
  50474. "../../Common/DBSystem/DataBase/DBRelationList.cpp",
  50475. 0x159u,
  50476. "virtual int DBRelationList::ParseResult(void*)",
  50477. "mInterface");
  50478. if ( this->mResultCount > 1 )
  50479. __assert__(
  50480. "../../Common/DBSystem/DataBase/DBRelationList.cpp",
  50481. 0x15Au,
  50482. "virtual int DBRelationList::ParseResult(void*)",
  50483. "mResultCount <= 1");
  50484. i_0 = 0;
  50485. do
  50486. {
  50487. if ( !ODBCInterface::Fetch(this->mInterface) )
  50488. break;
  50489. memset(&ReData, 0, 4u);
  50490. *(_WORD *)&ReData.m_aRelationCount[4] = 0;
  50491. memset(ReData.m_szMood, 0, sizeof(ReData.m_szMood));
  50492. ReData.m_MarriageInfo.m_SpouseGUID = -1;
  50493. ReData.m_PrenticeInfo.m_BetrayingTime = 0;
  50494. ReData.m_PrenticeInfo.m_uPrenticeCount = 0;
  50495. ReData.m_PrenticeInfo.m_uMoralPoint = 0;
  50496. ReData.m_PrenticeInfo.m_PrenticeGUID[0] = -1;
  50497. ReData.m_PrenticeInfo.m_PrenticeGUID[1] = -1;
  50498. ReData.m_MasterInfo.m_MasterGUID = -1;
  50499. ReData.m_PrenticeInfo1.m_BetrayingTime = 0;
  50500. ReData.m_PrenticeInfo1.m_uMoralPoint = 0;
  50501. ReData.m_PrenticeInfo1.m_uPrenticeCount = 0;
  50502. ReData.m_PrenticeInfo1.m_uPrenticeExp = 0;
  50503. ReData.m_PrenticeInfo1.m_uMasterExp = 0;
  50504. ReData.m_PrenticeInfo1.m_uMasterLevel = 0;
  50505. ReData.m_PrenticeInfo1.m_PrenticeGUID[0] = -1;
  50506. ReData.m_PrenticeInfo1.m_PrenticeGUID[1] = -1;
  50507. ODBCInterface::GetUInt(this->mInterface, 1, &ErrorCode);
  50508. ODBCInterface::GetField(this->mInterface, 2, (CHAR *)&ReData, 98, &ErrorCode);
  50509. qmemcpy((char *)pResult + 50069, ReData.m_szMood, 0x20u);
  50510. v6 = (char *)pResult + 44262;
  50511. *(_DWORD *)(v6 + 5839) = ReData.m_MarriageInfo.m_SpouseGUID;
  50512. qmemcpy((char *)pResult + 50105, &ReData.m_PrenticeInfo, 0x14u);
  50513. *(_DWORD *)(v6 + 5863) = ReData.m_MasterInfo.m_MasterGUID;
  50514. qmemcpy((char *)pResult + 50129, &ReData.m_PrenticeInfo1, 0x20u);
  50515. *((_BYTE *)pResult + 50062) = iFriendSize;
  50516. *((_BYTE *)pResult + 50063) = iGroupFriendSize[1];
  50517. *((_BYTE *)pResult + 50064) = iGroupFriendSize[2];
  50518. *((_BYTE *)pResult + 50065) = iGroupFriendSize[3];
  50519. *((_BYTE *)pResult + 50066) = iGroupFriendSize[4];
  50520. *((_BYTE *)pResult + 50067) = iBlackSize;
  50521. *((_BYTE *)pResult + 50068) = iEnemySize;
  50522. ++i_0;
  50523. }
  50524. while ( i_0 <= 0 );
  50525. ODBCInterface::Clear(this->mInterface);
  50526. }
  50527. if ( !this->mInterface )
  50528. __assert__(
  50529. "../../Common/DBSystem/DataBase/DBRelationList.cpp",
  50530. 0x185u,
  50531. "virtual int DBRelationList::ParseResult(void*)",
  50532. "mInterface");
  50533. ODBCInterface::Clear(this->mInterface);
  50534. return 1;
  50535. }
  50536.  
  50537. //----- (08086228) --------------------------------------------------------
  50538. GUID_t __cdecl DBRelationList::GetCharGuid(int a2)
  50539. {
  50540. return *(_DWORD *)(a2 + 24);
  50541. }
  50542.  
  50543. //----- (08086234) --------------------------------------------------------
  50544. void __cdecl DBRelationList::SetCharGuid(int a3, int a4)
  50545. {
  50546. *(_DWORD *)(a3 + 24) = a4;
  50547. }
  50548.  
  50549. //----- (08086244) --------------------------------------------------------
  50550. void __cdecl DBRelationList::SetDBVersion(int a3, int a4)
  50551. {
  50552. *(_DWORD *)(a3 + 28) = a4;
  50553. }
  50554.  
  50555. //----- (08086254) --------------------------------------------------------
  50556. UINT __cdecl DBRelationList::GetDBVersion(int a2)
  50557. {
  50558. return *(_DWORD *)(a2 + 28);
  50559. }
  50560.  
  50561. //----- (08086260) --------------------------------------------------------
  50562. void __cdecl _tcf_0_117(void *a1)
  50563. {
  50564. std::ios_base::Init::~Init(&std::__ioinit);
  50565. }
  50566.  
  50567. //----- (08086270) --------------------------------------------------------
  50568. void `global constructor keyed to'DBRelationList::DBRelationList()
  50569. {
  50570. std::ios_base::Init::Init(&std::__ioinit);
  50571. __cxa_atexit(_tcf_0_117, 0, &_dso_handle);
  50572. }
  50573. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  50574.  
  50575. //----- (0808629C) --------------------------------------------------------
  50576. int __cdecl SkillCompare(const void *pVoid1, const void *pVoid2)
  50577. {
  50578. int v2; // esi
  50579. int v3; // ebx
  50580. int result; // eax
  50581.  
  50582. if ( !pVoid1 || !pVoid2 )
  50583. return 0;
  50584. v2 = *(signed __int16 *)pVoid1;
  50585. v3 = *(signed __int16 *)pVoid2;
  50586. result = 0;
  50587. if ( v2 != v3 )
  50588. {
  50589. LOBYTE(result) = 1;
  50590. if ( *(_WORD *)pVoid1 != -1 )
  50591. {
  50592. result = -1;
  50593. if ( *(_WORD *)pVoid2 != -1 )
  50594. {
  50595. result = 1;
  50596. if ( v2 <= v3 )
  50597. result = (v2 >= v3) - 1;
  50598. }
  50599. }
  50600. }
  50601. return result;
  50602. }
  50603.  
  50604. //----- (080862EC) --------------------------------------------------------
  50605. void __cdecl DBSkillList::DBSkillList(DBSkillList *const this, ODBCInterface *pInterface)
  50606. {
  50607. ODBCBase::ODBCBase(this);
  50608. this->_vptr_ODBCBase = (int (**)(...))&off_80D5918;
  50609. this->mDBName = 1;
  50610. this->mResult = 0;
  50611. this->mResultCount = 0;
  50612. this->m_CharGuid = -1;
  50613. this->m_DBVersion = 0;
  50614. if ( !pInterface )
  50615. __assert__(
  50616. "../../Common/DBSystem/DataBase/DBSkillList.cpp",
  50617. 0x1Du,
  50618. "DBSkillList::DBSkillList(ODBCInterface*)",
  50619. "pInterface");
  50620. this->mInterface = pInterface;
  50621. }
  50622. // 80D5918: using guessed type _DWORD (__cdecl *off_80D5918)(DBSkillList *this);
  50623.  
  50624. //----- (08086358) --------------------------------------------------------
  50625. void __cdecl DBSkillList::DBSkillList(DBSkillList *const this, ODBCInterface *pInterface)
  50626. {
  50627. ODBCBase::ODBCBase(this);
  50628. this->_vptr_ODBCBase = (int (**)(...))&off_80D5918;
  50629. this->mDBName = 1;
  50630. this->mResult = 0;
  50631. this->mResultCount = 0;
  50632. this->m_CharGuid = -1;
  50633. this->m_DBVersion = 0;
  50634. if ( !pInterface )
  50635. __assert__(
  50636. "../../Common/DBSystem/DataBase/DBSkillList.cpp",
  50637. 0x1Du,
  50638. "DBSkillList::DBSkillList(ODBCInterface*)",
  50639. "pInterface");
  50640. this->mInterface = pInterface;
  50641. }
  50642. // 80D5918: using guessed type _DWORD (__cdecl *off_80D5918)(DBSkillList *this);
  50643.  
  50644. //----- (080863C4) --------------------------------------------------------
  50645. #error "808644C: positive sp value has been found (funcsize=41)"
  50646.  
  50647. //----- (08086484) --------------------------------------------------------
  50648. int __cdecl DBSkillList::Save(DBSkillList *const this, void *pSource)
  50649. {
  50650. int v2; // eax
  50651. int v3; // edx
  50652. INT v5; // eax
  50653. DB_QUERY *v6; // eax
  50654. DB_QUERY *v7; // edi
  50655. INT i; // [esp+Ch] [ebp-18h]
  50656. INT SkillCount; // [esp+10h] [ebp-14h]
  50657. INT Result; // [esp+14h] [ebp-10h]
  50658.  
  50659. v2 = (*((int (__cdecl **)(DBSkillList *const ))this->_vptr_ODBCBase + 2))(this);
  50660. v3 = 0;
  50661. if ( v2 )
  50662. {
  50663. (*((void (__cdecl **)(DBSkillList *const , INT *))this->_vptr_ODBCBase + 4))(this, &Result);
  50664. if ( !pSource )
  50665. __assert__(
  50666. "../../Common/DBSystem/DataBase/DBSkillList.cpp",
  50667. 0x4Du,
  50668. "virtual int DBSkillList::Save(void*)",
  50669. "pCharFullData");
  50670. v5 = *((unsigned __int8 *)pSource + 33256);
  50671. SkillCount = *((unsigned __int8 *)pSource + 33256);
  50672. i = 0;
  50673. while ( i < v5 )
  50674. {
  50675. v6 = ODBCBase::GetInternalQuery((int)this);
  50676. v7 = v6;
  50677. if ( !v6 )
  50678. __assert__(
  50679. "../../Common/DBSystem/DataBase/DBSkillList.cpp",
  50680. 0x58u,
  50681. "virtual int DBSkillList::Save(void*)",
  50682. "FALSE");
  50683. memset(v6, 0, 0x1000u);
  50684. if ( this->m_CharGuid == -1 )
  50685. return 0;
  50686. DB_QUERY::Parse(
  50687. v7,
  50688. NewCharSkill,
  50689. "t_skill",
  50690. this->m_CharGuid,
  50691. *(signed __int16 *)((char *)pSource + 2 * i + 33257),
  50692. this->m_DBVersion);
  50693. if ( !ODBCBase::Save(&this->0, pSource) )
  50694. return 0;
  50695. ++i;
  50696. v5 = SkillCount;
  50697. }
  50698. v3 = 1;
  50699. }
  50700. return v3;
  50701. }
  50702.  
  50703. //----- (080865DC) --------------------------------------------------------
  50704. #error "8086667: positive sp value has been found (funcsize=41)"
  50705.  
  50706. //----- (0808669C) --------------------------------------------------------
  50707. int __cdecl DBSkillList::ParseResult(DBSkillList *const this, void *pResult)
  50708. {
  50709. signed int v2; // eax
  50710. signed int v3; // ebx
  50711. signed int v4; // ebx
  50712. INT ErrorCode; // [esp+Ch] [ebp-11Ch]
  50713. _OWN_SKILL tmpSkill[128]; // [esp+10h] [ebp-118h]
  50714.  
  50715. if ( this->mOPType == DB_LOAD )
  50716. {
  50717. if ( !pResult )
  50718. __assert__(
  50719. "../../Common/DBSystem/DataBase/DBSkillList.cpp",
  50720. 0x97u,
  50721. "virtual int DBSkillList::ParseResult(void*)",
  50722. "pCharFullData");
  50723. if ( this->mResultCount > 128 )
  50724. __assert__(
  50725. "../../Common/DBSystem/DataBase/DBSkillList.cpp",
  50726. 0xA0u,
  50727. "virtual int DBSkillList::ParseResult(void*)",
  50728. "mResultCount<=MAX_CHAR_SKILL_NUM");
  50729. if ( !this->mInterface )
  50730. __assert__(
  50731. "../../Common/DBSystem/DataBase/DBSkillList.cpp",
  50732. 0xA1u,
  50733. "virtual int DBSkillList::ParseResult(void*)",
  50734. "mInterface");
  50735. *((_BYTE *)pResult + 33256) = 0;
  50736. v2 = 0;
  50737. do
  50738. tmpSkill[v2++].m_nSkillID = -1;
  50739. while ( v2 <= 127 );
  50740. v3 = 0;
  50741. do
  50742. {
  50743. if ( !ODBCInterface::Fetch(this->mInterface) )
  50744. break;
  50745. ODBCInterface::GetUInt(this->mInterface, 1, &ErrorCode);
  50746. tmpSkill[v3++].m_nSkillID = ODBCInterface::GetInt(this->mInterface, 2, &ErrorCode);
  50747. }
  50748. while ( v3 <= 127 );
  50749. qsort(tmpSkill, 0x80u, 2u, SkillCompare);
  50750. v4 = 0;
  50751. do
  50752. {
  50753. if ( tmpSkill[v4].m_nSkillID == -1 )
  50754. break;
  50755. ODBCInterface::GetUInt(this->mInterface, 1, &ErrorCode);
  50756. ODBCInterface::GetInt(this->mInterface, 2, &ErrorCode);
  50757. *(_OWN_SKILL *)((char *)pResult + 2 * v4 + 33257) = tmpSkill[v4];
  50758. ++v4;
  50759. ++*((_BYTE *)pResult + 33256);
  50760. }
  50761. while ( v4 <= 127 );
  50762. ODBCInterface::Clear(this->mInterface);
  50763. }
  50764. if ( !this->mInterface )
  50765. __assert__(
  50766. "../../Common/DBSystem/DataBase/DBSkillList.cpp",
  50767. 0xD3u,
  50768. "virtual int DBSkillList::ParseResult(void*)",
  50769. "mInterface");
  50770. ODBCInterface::Clear(this->mInterface);
  50771. return 1;
  50772. }
  50773.  
  50774. //----- (08086874) --------------------------------------------------------
  50775. GUID_t __cdecl DBSkillList::GetCharGuid(int a2)
  50776. {
  50777. return *(_DWORD *)(a2 + 24);
  50778. }
  50779.  
  50780. //----- (08086880) --------------------------------------------------------
  50781. void __cdecl DBSkillList::SetCharGuid(int a3, int a4)
  50782. {
  50783. *(_DWORD *)(a3 + 24) = a4;
  50784. }
  50785.  
  50786. //----- (08086890) --------------------------------------------------------
  50787. UINT __cdecl DBSkillList::GetDBVersion(int a2)
  50788. {
  50789. return *(_DWORD *)(a2 + 28);
  50790. }
  50791.  
  50792. //----- (0808689C) --------------------------------------------------------
  50793. void __cdecl DBSkillList::SetDBVersion(int a3, int a4)
  50794. {
  50795. *(_DWORD *)(a3 + 28) = a4;
  50796. }
  50797.  
  50798. //----- (080868AC) --------------------------------------------------------
  50799. void __cdecl _tcf_0_118(void *a1)
  50800. {
  50801. std::ios_base::Init::~Init(&std::__ioinit);
  50802. }
  50803.  
  50804. //----- (080868BC) --------------------------------------------------------
  50805. void `global constructor keyed to'DBSkillList::DBSkillList()
  50806. {
  50807. std::ios_base::Init::Init(&std::__ioinit);
  50808. __cxa_atexit(_tcf_0_118, 0, &_dso_handle);
  50809. }
  50810. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  50811.  
  50812. //----- (080868E8) --------------------------------------------------------
  50813. void __cdecl DBTaskList::DBTaskList(DBTaskList *const this, ODBCInterface *pInterface)
  50814. {
  50815. ODBCBase::ODBCBase(this);
  50816. this->_vptr_ODBCBase = (int (**)(...))&off_80D5AD0;
  50817. this->mDBName = 1;
  50818. this->mResult = 0;
  50819. this->mResultCount = 0;
  50820. this->m_CharGuid = -1;
  50821. this->m_DBVersion = 0;
  50822. if ( !pInterface )
  50823. __assert__(
  50824. "../../Common/DBSystem/DataBase/DBTaskList.cpp",
  50825. 0xEu,
  50826. "DBTaskList::DBTaskList(ODBCInterface*)",
  50827. "pInterface");
  50828. this->mInterface = pInterface;
  50829. }
  50830. // 80D5AD0: using guessed type _DWORD (__cdecl *off_80D5AD0)(DBTaskList *this);
  50831.  
  50832. //----- (08086954) --------------------------------------------------------
  50833. void __cdecl DBTaskList::DBTaskList(DBTaskList *const this, ODBCInterface *pInterface)
  50834. {
  50835. ODBCBase::ODBCBase(this);
  50836. this->_vptr_ODBCBase = (int (**)(...))&off_80D5AD0;
  50837. this->mDBName = 1;
  50838. this->mResult = 0;
  50839. this->mResultCount = 0;
  50840. this->m_CharGuid = -1;
  50841. this->m_DBVersion = 0;
  50842. if ( !pInterface )
  50843. __assert__(
  50844. "../../Common/DBSystem/DataBase/DBTaskList.cpp",
  50845. 0xEu,
  50846. "DBTaskList::DBTaskList(ODBCInterface*)",
  50847. "pInterface");
  50848. this->mInterface = pInterface;
  50849. }
  50850. // 80D5AD0: using guessed type _DWORD (__cdecl *off_80D5AD0)(DBTaskList *this);
  50851.  
  50852. //----- (080869C0) --------------------------------------------------------
  50853. #error "8086A48: positive sp value has been found (funcsize=41)"
  50854.  
  50855. //----- (08086A80) --------------------------------------------------------
  50856. int __cdecl DBTaskList::Save(DBTaskList *const this, void *pSource)
  50857. {
  50858. int v2; // eax
  50859. int v3; // edx
  50860. _DWORD *v5; // esi
  50861. LONG_DB_QUERY *v6; // eax
  50862. int v7; // edx
  50863. LONG_DB_QUERY *v8; // eax
  50864. LONG_DB_QUERY *v9; // esi
  50865. int v10; // eax
  50866. LONG_DB_QUERY *v11; // eax
  50867. LONG_DB_QUERY *v12; // esi
  50868. UINT v13; // ST3C_4
  50869. int v14; // ST38_4
  50870. LONG_DB_QUERY *pQuery; // [esp+10h] [ebp-1834h]
  50871. INT i; // [esp+14h] [ebp-1830h]
  50872. INT Result; // [esp+18h] [ebp-182Ch]
  50873. CHAR CharMissionFlag[2048]; // [esp+1Ch] [ebp-1828h]
  50874. CHAR CharMissionData[4097]; // [esp+81Ch] [ebp-1028h]
  50875.  
  50876. v2 = (*((int (__cdecl **)(DBTaskList *const ))this->_vptr_ODBCBase + 2))(this);
  50877. v3 = 0;
  50878. if ( v2 )
  50879. {
  50880. (*((void (__cdecl **)(DBTaskList *const , INT *))this->_vptr_ODBCBase + 4))(this, &Result);
  50881. if ( !pSource )
  50882. __assert__(
  50883. "../../Common/DBSystem/DataBase/DBTaskList.cpp",
  50884. 0x48u,
  50885. "virtual int DBTaskList::Save(void*)",
  50886. "pCharFullData");
  50887. i = 0;
  50888. v5 = pSource;
  50889. do
  50890. {
  50891. v6 = ODBCBase::GetLongInterQuery((int)this);
  50892. pQuery = v6;
  50893. if ( !v6 )
  50894. __assert__(
  50895. "../../Common/DBSystem/DataBase/DBTaskList.cpp",
  50896. 0x54u,
  50897. "virtual int DBTaskList::Save(void*)",
  50898. "FALSE");
  50899. memset(v6, 0, 0x32000u);
  50900. if ( this->m_CharGuid == -1 )
  50901. return 0;
  50902. v7 = v5[9063];
  50903. if ( v7 != -1 )
  50904. {
  50905. v13 = this->m_DBVersion;
  50906. v14 = *(_DWORD *)((char *)v5 + 36289);
  50907. LONG_DB_QUERY::Parse(
  50908. pQuery,
  50909. NewCharTask,
  50910. "t_mission",
  50911. this->m_CharGuid,
  50912. v7,
  50913. v5[9064],
  50914. *((unsigned __int8 *)v5 + 36260),
  50915. *(_DWORD *)((char *)v5 + 36261),
  50916. *(_DWORD *)((char *)v5 + 36265),
  50917. *(_DWORD *)((char *)v5 + 36269),
  50918. *(_DWORD *)((char *)v5 + 36273),
  50919. *(_DWORD *)((char *)v5 + 36277),
  50920. *(_DWORD *)((char *)v5 + 36281),
  50921. *(_DWORD *)((char *)v5 + 36285));
  50922. if ( !ODBCBase::LongSave(&this->0, pSource) )
  50923. return 0;
  50924. }
  50925. ++i;
  50926. v5 = (_DWORD *)((char *)v5 + 41);
  50927. }
  50928. while ( i <= 19 );
  50929. memset(CharMissionData, 0, 0x1001u);
  50930. Binary2String((const CHAR *)pSource + 37584, 0x800u, CharMissionData);
  50931. v8 = ODBCBase::GetLongInterQuery((int)this);
  50932. v9 = v8;
  50933. if ( !v8 )
  50934. __assert__("../../Common/DBSystem/DataBase/DBTaskList.cpp", 0x85u, "virtual int DBTaskList::Save(void*)", "FALSE");
  50935. memset(v8, 0, 0x32000u);
  50936. LONG_DB_QUERY::Parse(v9, UpdateCharTaskData, "t_char", CharMissionData, this->m_CharGuid, this->m_DBVersion);
  50937. v10 = ODBCBase::LongSave(&this->0, pSource);
  50938. v3 = 0;
  50939. if ( v10 )
  50940. {
  50941. memset(CharMissionFlag, 0, 0x800u);
  50942. Binary2String((const CHAR *)pSource + 37072, 0x200u, CharMissionFlag);
  50943. v11 = ODBCBase::GetLongInterQuery((int)this);
  50944. v12 = v11;
  50945. if ( !v11 )
  50946. __assert__(
  50947. "../../Common/DBSystem/DataBase/DBTaskList.cpp",
  50948. 0xA5u,
  50949. "virtual int DBTaskList::Save(void*)",
  50950. "FALSE");
  50951. memset(v11, 0, 0x32000u);
  50952. LONG_DB_QUERY::Parse(v12, UpdateCharTaskFlag, "t_char", CharMissionFlag, this->m_CharGuid, this->m_DBVersion);
  50953. v3 = ODBCBase::LongSave(&this->0, pSource) != 0;
  50954. }
  50955. }
  50956. return v3;
  50957. }
  50958.  
  50959. //----- (08086D88) --------------------------------------------------------
  50960. #error "8086E13: positive sp value has been found (funcsize=41)"
  50961.  
  50962. //----- (08086E4C) --------------------------------------------------------
  50963. int __cdecl DBTaskList::ParseResult(DBTaskList *const this, void *pResult)
  50964. {
  50965. UINT MissionID; // ST50_4
  50966. UINT ScriptID; // ST4C_4
  50967. char v4; // ST48_1
  50968. INT TP1; // ST44_4
  50969. INT TP2; // ST40_4
  50970. INT TP3; // ST3C_4
  50971. INT TP4; // ST38_4
  50972. INT TP5; // ST34_4
  50973. INT TP6; // ST30_4
  50974. INT TP7; // ST2C_4
  50975. INT v12; // eax
  50976. LONG_DB_QUERY *v13; // eax
  50977. LONG_DB_QUERY *v14; // esi
  50978. _DWORD *v16; // [esp+8h] [ebp-40h]
  50979. INT i; // [esp+34h] [ebp-14h]
  50980. INT ErrorCode; // [esp+38h] [ebp-10h]
  50981.  
  50982. if ( this->mOPType == DB_LOAD )
  50983. {
  50984. if ( !pResult )
  50985. __assert__(
  50986. "../../Common/DBSystem/DataBase/DBTaskList.cpp",
  50987. 0xDFu,
  50988. "virtual int DBTaskList::ParseResult(void*)",
  50989. "pCharFullData");
  50990. if ( this->mResultCount > 20 )
  50991. __assert__(
  50992. "../../Common/DBSystem/DataBase/DBTaskList.cpp",
  50993. 0xF2u,
  50994. "virtual int DBTaskList::ParseResult(void*)",
  50995. "mResultCount<=MAX_CHAR_MISSION_NUM");
  50996. if ( !this->mInterface )
  50997. __assert__(
  50998. "../../Common/DBSystem/DataBase/DBTaskList.cpp",
  50999. 0xF3u,
  51000. "virtual int DBTaskList::ParseResult(void*)",
  51001. "mInterface");
  51002. *((_BYTE *)pResult + 36251) = 0;
  51003. i = 0;
  51004. v16 = pResult;
  51005. do
  51006. {
  51007. if ( !ODBCInterface::LongFetch(this->mInterface) )
  51008. break;
  51009. ODBCInterface::GetUInt(this->mInterface, 1, &ErrorCode);
  51010. MissionID = ODBCInterface::GetUInt(this->mInterface, 2, &ErrorCode);
  51011. ScriptID = ODBCInterface::GetUInt(this->mInterface, 3, &ErrorCode);
  51012. v4 = ODBCInterface::GetUInt(this->mInterface, 4, &ErrorCode);
  51013. TP1 = ODBCInterface::GetInt(this->mInterface, 5, &ErrorCode);
  51014. TP2 = ODBCInterface::GetInt(this->mInterface, 6, &ErrorCode);
  51015. TP3 = ODBCInterface::GetInt(this->mInterface, 7, &ErrorCode);
  51016. TP4 = ODBCInterface::GetInt(this->mInterface, 8, &ErrorCode);
  51017. TP5 = ODBCInterface::GetInt(this->mInterface, 9, &ErrorCode);
  51018. TP6 = ODBCInterface::GetInt(this->mInterface, 10, &ErrorCode);
  51019. TP7 = ODBCInterface::GetInt(this->mInterface, 11, &ErrorCode);
  51020. v12 = ODBCInterface::GetInt(this->mInterface, 12, &ErrorCode);
  51021. v16[9063] = MissionID;
  51022. v16[9064] = ScriptID;
  51023. *((_BYTE *)v16 + 36260) = v4;
  51024. *(_DWORD *)((char *)v16 + 36261) = TP1;
  51025. *(_DWORD *)((char *)v16 + 36265) = TP2;
  51026. *(_DWORD *)((char *)v16 + 36269) = TP3;
  51027. *(_DWORD *)((char *)v16 + 36273) = TP4;
  51028. *(_DWORD *)((char *)v16 + 36277) = TP5;
  51029. *(_DWORD *)((char *)v16 + 36281) = TP6;
  51030. *(_DWORD *)((char *)v16 + 36285) = TP7;
  51031. *(_DWORD *)((char *)v16 + 36289) = v12;
  51032. ++*((_BYTE *)pResult + 36251);
  51033. ++i;
  51034. v16 = (_DWORD *)((char *)v16 + 41);
  51035. }
  51036. while ( i <= 19 );
  51037. ODBCInterface::Clear(this->mInterface);
  51038. v13 = ODBCBase::GetLongInterQuery((int)this);
  51039. v14 = v13;
  51040. if ( !v13 )
  51041. __assert__(
  51042. "../../Common/DBSystem/DataBase/DBTaskList.cpp",
  51043. 0x124u,
  51044. "virtual int DBTaskList::ParseResult(void*)",
  51045. "FALSE");
  51046. memset(v13, 0, 0x32000u);
  51047. LONG_DB_QUERY::Parse(v14, LoadCharTaskDataAndFlag, "t_char", this->m_CharGuid, this->m_DBVersion);
  51048. ODBCBase::LongLoad(&this->0);
  51049. if ( !this->mInterface )
  51050. __assert__(
  51051. "../../Common/DBSystem/DataBase/DBTaskList.cpp",
  51052. 0x134u,
  51053. "virtual int DBTaskList::ParseResult(void*)",
  51054. "mInterface");
  51055. if ( this->mResultCount > 1 )
  51056. __assert__(
  51057. "../../Common/DBSystem/DataBase/DBTaskList.cpp",
  51058. 0x135u,
  51059. "virtual int DBTaskList::ParseResult(void*)",
  51060. "mResultCount <= 1");
  51061. if ( ODBCInterface::LongFetch(this->mInterface) )
  51062. {
  51063. ODBCInterface::GetUInt(this->mInterface, 1, &ErrorCode);
  51064. ODBCInterface::GetField(this->mInterface, 2, (CHAR *)pResult + 37072, 512, &ErrorCode);
  51065. ODBCInterface::GetLongField(this->mInterface, 3, (CHAR *)pResult + 37584, 2048, &ErrorCode);
  51066. }
  51067. ODBCInterface::Clear(this->mInterface);
  51068. }
  51069. if ( !this->mInterface )
  51070. __assert__(
  51071. "../../Common/DBSystem/DataBase/DBTaskList.cpp",
  51072. 0x15Du,
  51073. "virtual int DBTaskList::ParseResult(void*)",
  51074. "mInterface");
  51075. ODBCInterface::Clear(this->mInterface);
  51076. return 1;
  51077. }
  51078.  
  51079. //----- (08087208) --------------------------------------------------------
  51080. GUID_t __cdecl DBTaskList::GetCharGuid(int a2)
  51081. {
  51082. return *(_DWORD *)(a2 + 24);
  51083. }
  51084.  
  51085. //----- (08087214) --------------------------------------------------------
  51086. void __cdecl DBTaskList::SetCharGuid(int a3, int a4)
  51087. {
  51088. *(_DWORD *)(a3 + 24) = a4;
  51089. }
  51090.  
  51091. //----- (08087224) --------------------------------------------------------
  51092. UINT __cdecl DBTaskList::GetDBVersion(int a2)
  51093. {
  51094. return *(_DWORD *)(a2 + 28);
  51095. }
  51096.  
  51097. //----- (08087230) --------------------------------------------------------
  51098. void __cdecl DBTaskList::SetDBVersion(int a3, int a4)
  51099. {
  51100. *(_DWORD *)(a3 + 28) = a4;
  51101. }
  51102.  
  51103. //----- (08087240) --------------------------------------------------------
  51104. void __cdecl _tcf_0_119(void *a1)
  51105. {
  51106. std::ios_base::Init::~Init(&std::__ioinit);
  51107. }
  51108.  
  51109. //----- (08087250) --------------------------------------------------------
  51110. void `global constructor keyed to'DBTaskList::DBTaskList()
  51111. {
  51112. std::ios_base::Init::Init(&std::__ioinit);
  51113. __cxa_atexit(_tcf_0_119, 0, &_dso_handle);
  51114. }
  51115. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  51116.  
  51117. //----- (0808727C) --------------------------------------------------------
  51118. void __cdecl DBTitleInfo::DBTitleInfo(DBTitleInfo *const this, ODBCInterface *pInterface)
  51119. {
  51120. ODBCBase::ODBCBase(this);
  51121. this->_vptr_ODBCBase = (int (**)(...))&off_80D5C50;
  51122. this->mDBName = 1;
  51123. this->mResult = 0;
  51124. this->mResultCount = 0;
  51125. this->m_CharGuid = -1;
  51126. this->m_DBVersion = 0;
  51127. if ( !pInterface )
  51128. __assert__(
  51129. "../../Common/DBSystem/DataBase/DBTitleInfo.cpp",
  51130. 0xEu,
  51131. "DBTitleInfo::DBTitleInfo(ODBCInterface*)",
  51132. "pInterface");
  51133. this->mInterface = pInterface;
  51134. }
  51135. // 80D5C50: using guessed type _DWORD (__cdecl *off_80D5C50)(DBTitleInfo *this);
  51136.  
  51137. //----- (080872E8) --------------------------------------------------------
  51138. void __cdecl DBTitleInfo::DBTitleInfo(DBTitleInfo *const this, ODBCInterface *pInterface)
  51139. {
  51140. ODBCBase::ODBCBase(this);
  51141. this->_vptr_ODBCBase = (int (**)(...))&off_80D5C50;
  51142. this->mDBName = 1;
  51143. this->mResult = 0;
  51144. this->mResultCount = 0;
  51145. this->m_CharGuid = -1;
  51146. this->m_DBVersion = 0;
  51147. if ( !pInterface )
  51148. __assert__(
  51149. "../../Common/DBSystem/DataBase/DBTitleInfo.cpp",
  51150. 0xEu,
  51151. "DBTitleInfo::DBTitleInfo(ODBCInterface*)",
  51152. "pInterface");
  51153. this->mInterface = pInterface;
  51154. }
  51155. // 80D5C50: using guessed type _DWORD (__cdecl *off_80D5C50)(DBTitleInfo *this);
  51156.  
  51157. //----- (08087354) --------------------------------------------------------
  51158. #error "80873DC: positive sp value has been found (funcsize=41)"
  51159.  
  51160. //----- (08087414) --------------------------------------------------------
  51161. int __cdecl DBTitleInfo::Save(DBTitleInfo *const this, void *pSource)
  51162. {
  51163. DB_QUERY *v2; // eax
  51164. DB_QUERY *v3; // esi
  51165. CHAR TitleInfo[2048]; // [esp+10h] [ebp-818h]
  51166.  
  51167. if ( !pSource )
  51168. __assert__(
  51169. "../../Common/DBSystem/DataBase/DBTitleInfo.cpp",
  51170. 0x3Eu,
  51171. "virtual int DBTitleInfo::Save(void*)",
  51172. "pCharFullData");
  51173. memset(TitleInfo, 0, 0x800u);
  51174. Binary2String((const CHAR *)pSource + 80, 0x2ECu, TitleInfo);
  51175. v2 = ODBCBase::GetInternalQuery((int)this);
  51176. v3 = v2;
  51177. if ( !v2 )
  51178. __assert__("../../Common/DBSystem/DataBase/DBTitleInfo.cpp", 0x4Du, "virtual int DBTitleInfo::Save(void*)", "FALSE");
  51179. memset(v2, 0, 0x1000u);
  51180. DB_QUERY::Parse(v3, UpdateCharTitleInfo, "t_char", TitleInfo, this->m_CharGuid, this->m_DBVersion);
  51181. return ODBCBase::Save(&this->0, pSource) != 0;
  51182. }
  51183.  
  51184. //----- (08087544) --------------------------------------------------------
  51185. int __cdecl DBTitleInfo::Delete(DBTitleInfo *const this)
  51186. {
  51187. return 1;
  51188. }
  51189.  
  51190. //----- (08087550) --------------------------------------------------------
  51191. int __cdecl DBTitleInfo::ParseResult(DBTitleInfo *const this, void *pResult)
  51192. {
  51193. INT ErrorCode; // [esp+8h] [ebp-10h]
  51194.  
  51195. if ( this->mOPType == DB_LOAD )
  51196. {
  51197. if ( !pResult )
  51198. __assert__(
  51199. "../../Common/DBSystem/DataBase/DBTitleInfo.cpp",
  51200. 0x79u,
  51201. "virtual int DBTitleInfo::ParseResult(void*)",
  51202. "pCharFullData");
  51203. if ( !this->mInterface )
  51204. __assert__(
  51205. "../../Common/DBSystem/DataBase/DBTitleInfo.cpp",
  51206. 0x83u,
  51207. "virtual int DBTitleInfo::ParseResult(void*)",
  51208. "mInterface");
  51209. if ( ODBCInterface::Fetch(this->mInterface) )
  51210. {
  51211. ODBCInterface::GetUInt(this->mInterface, 1, &ErrorCode);
  51212. ODBCInterface::GetField(this->mInterface, 2, (CHAR *)pResult + 80, 748, &ErrorCode);
  51213. }
  51214. ODBCInterface::Clear(this->mInterface);
  51215. }
  51216. if ( !this->mInterface )
  51217. __assert__(
  51218. "../../Common/DBSystem/DataBase/DBTitleInfo.cpp",
  51219. 0x9Du,
  51220. "virtual int DBTitleInfo::ParseResult(void*)",
  51221. "mInterface");
  51222. ODBCInterface::Clear(this->mInterface);
  51223. return 1;
  51224. }
  51225.  
  51226. //----- (08087688) --------------------------------------------------------
  51227. GUID_t __cdecl DBTitleInfo::GetCharGuid(int a2)
  51228. {
  51229. return *(_DWORD *)(a2 + 24);
  51230. }
  51231.  
  51232. //----- (08087694) --------------------------------------------------------
  51233. void __cdecl DBTitleInfo::SetCharGuid(int a3, int a4)
  51234. {
  51235. *(_DWORD *)(a3 + 24) = a4;
  51236. }
  51237.  
  51238. //----- (080876A4) --------------------------------------------------------
  51239. UINT __cdecl DBTitleInfo::GetDBVersion(int a2)
  51240. {
  51241. return *(_DWORD *)(a2 + 28);
  51242. }
  51243.  
  51244. //----- (080876B0) --------------------------------------------------------
  51245. void __cdecl DBTitleInfo::SetDBVersion(int a3, int a4)
  51246. {
  51247. *(_DWORD *)(a3 + 28) = a4;
  51248. }
  51249.  
  51250. //----- (080876C0) --------------------------------------------------------
  51251. void __cdecl _tcf_0_120(void *a1)
  51252. {
  51253. std::ios_base::Init::~Init(&std::__ioinit);
  51254. }
  51255.  
  51256. //----- (080876D0) --------------------------------------------------------
  51257. void `global constructor keyed to'DBTitleInfo::DBTitleInfo()
  51258. {
  51259. std::ios_base::Init::Init(&std::__ioinit);
  51260. __cxa_atexit(_tcf_0_120, 0, &_dso_handle);
  51261. }
  51262. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  51263.  
  51264. //----- (080876FC) --------------------------------------------------------
  51265. int __cdecl XinFaCompare(const void *pVoid1, const void *pVoid2)
  51266. {
  51267. int v2; // esi
  51268. int v3; // ebx
  51269. int result; // eax
  51270.  
  51271. if ( !pVoid1 || !pVoid2 )
  51272. return 0;
  51273. v2 = *(signed __int16 *)pVoid1;
  51274. v3 = *(signed __int16 *)pVoid2;
  51275. result = 0;
  51276. if ( v2 != v3 )
  51277. {
  51278. LOBYTE(result) = 1;
  51279. if ( *(_WORD *)pVoid1 != -1 )
  51280. {
  51281. result = -1;
  51282. if ( *(_WORD *)pVoid2 != -1 )
  51283. {
  51284. result = 1;
  51285. if ( v2 <= v3 )
  51286. result = (v2 >= v3) - 1;
  51287. }
  51288. }
  51289. }
  51290. return result;
  51291. }
  51292.  
  51293. //----- (0808774C) --------------------------------------------------------
  51294. void __cdecl DBXinFaList::DBXinFaList(DBXinFaList *const this, ODBCInterface *pInterface)
  51295. {
  51296. ODBCBase::ODBCBase(this);
  51297. this->_vptr_ODBCBase = (int (**)(...))&off_80D5DC8;
  51298. this->mDBName = 1;
  51299. this->mResult = 0;
  51300. this->mResultCount = 0;
  51301. this->m_CharGuid = -1;
  51302. this->m_DBVersion = 0;
  51303. if ( !pInterface )
  51304. __assert__(
  51305. "../../Common/DBSystem/DataBase/DBXinFaList.cpp",
  51306. 0x1Cu,
  51307. "DBXinFaList::DBXinFaList(ODBCInterface*)",
  51308. "pInterface");
  51309. this->mInterface = pInterface;
  51310. }
  51311. // 80D5DC8: using guessed type _DWORD (__cdecl *off_80D5DC8)(DBXinFaList *this);
  51312.  
  51313. //----- (080877B8) --------------------------------------------------------
  51314. void __cdecl DBXinFaList::DBXinFaList(DBXinFaList *const this, ODBCInterface *pInterface)
  51315. {
  51316. ODBCBase::ODBCBase(this);
  51317. this->_vptr_ODBCBase = (int (**)(...))&off_80D5DC8;
  51318. this->mDBName = 1;
  51319. this->mResult = 0;
  51320. this->mResultCount = 0;
  51321. this->m_CharGuid = -1;
  51322. this->m_DBVersion = 0;
  51323. if ( !pInterface )
  51324. __assert__(
  51325. "../../Common/DBSystem/DataBase/DBXinFaList.cpp",
  51326. 0x1Cu,
  51327. "DBXinFaList::DBXinFaList(ODBCInterface*)",
  51328. "pInterface");
  51329. this->mInterface = pInterface;
  51330. }
  51331. // 80D5DC8: using guessed type _DWORD (__cdecl *off_80D5DC8)(DBXinFaList *this);
  51332.  
  51333. //----- (08087824) --------------------------------------------------------
  51334. #error "80878AC: positive sp value has been found (funcsize=41)"
  51335.  
  51336. //----- (080878E4) --------------------------------------------------------
  51337. int __cdecl DBXinFaList::Save(DBXinFaList *const this, void *pSource)
  51338. {
  51339. int v2; // eax
  51340. int v3; // edx
  51341. INT v5; // eax
  51342. DB_QUERY *v6; // eax
  51343. DB_QUERY *v7; // edi
  51344. UINT v8; // ST18_4
  51345. INT i; // [esp+Ch] [ebp-18h]
  51346. INT XinFaCount; // [esp+10h] [ebp-14h]
  51347. INT Result; // [esp+14h] [ebp-10h]
  51348.  
  51349. v2 = (*((int (__cdecl **)(DBXinFaList *const ))this->_vptr_ODBCBase + 2))(this);
  51350. v3 = 0;
  51351. if ( v2 )
  51352. {
  51353. (*((void (__cdecl **)(DBXinFaList *const , INT *))this->_vptr_ODBCBase + 4))(this, &Result);
  51354. if ( !pSource )
  51355. __assert__(
  51356. "../../Common/DBSystem/DataBase/DBXinFaList.cpp",
  51357. 0x4Cu,
  51358. "virtual int DBXinFaList::Save(void*)",
  51359. "pCharFullData");
  51360. v5 = *((unsigned __int8 *)pSource + 33897);
  51361. XinFaCount = *((unsigned __int8 *)pSource + 33897);
  51362. i = 0;
  51363. while ( i < v5 )
  51364. {
  51365. v6 = ODBCBase::GetInternalQuery((int)this);
  51366. v7 = v6;
  51367. if ( !v6 )
  51368. __assert__(
  51369. "../../Common/DBSystem/DataBase/DBXinFaList.cpp",
  51370. 0x56u,
  51371. "virtual int DBXinFaList::Save(void*)",
  51372. "FALSE");
  51373. memset(v6, 0, 0x1000u);
  51374. if ( this->m_CharGuid == -1 )
  51375. return 0;
  51376. v8 = this->m_DBVersion;
  51377. DB_QUERY::Parse(
  51378. v7,
  51379. NewCharXinFa,
  51380. "t_xinfa",
  51381. this->m_CharGuid,
  51382. *((signed __int16 *)pSource + 2 * i + 16949),
  51383. *((unsigned __int8 *)pSource + 4 * i + 33900));
  51384. if ( !ODBCBase::Save(&this->0, pSource) )
  51385. return 0;
  51386. ++i;
  51387. v5 = XinFaCount;
  51388. }
  51389. v3 = 1;
  51390. }
  51391. return v3;
  51392. }
  51393.  
  51394. //----- (08087A4C) --------------------------------------------------------
  51395. #error "8087AD7: positive sp value has been found (funcsize=41)"
  51396.  
  51397. //----- (08087B0C) --------------------------------------------------------
  51398. int __cdecl DBXinFaList::ParseResult(DBXinFaList *const this, void *pResult)
  51399. {
  51400. signed int v2; // eax
  51401. SkillID_t v3; // ST24_2
  51402. BYTE v4; // al
  51403. signed int v5; // edx
  51404. _OWN_XINFA v6; // eax
  51405. INT k; // [esp+8h] [ebp-60h]
  51406. INT ErrorCode; // [esp+Ch] [ebp-5Ch]
  51407. _OWN_XINFA tmpXinFa[16]; // [esp+10h] [ebp-58h]
  51408.  
  51409. if ( this->mOPType == DB_LOAD )
  51410. {
  51411. if ( !pResult )
  51412. __assert__(
  51413. "../../Common/DBSystem/DataBase/DBXinFaList.cpp",
  51414. 0x97u,
  51415. "virtual int DBXinFaList::ParseResult(void*)",
  51416. "pCharFullData");
  51417. if ( this->mResultCount > 16 )
  51418. __assert__(
  51419. "../../Common/DBSystem/DataBase/DBXinFaList.cpp",
  51420. 0xA2u,
  51421. "virtual int DBXinFaList::ParseResult(void*)",
  51422. "mResultCount<=MAX_CHAR_XINFA_NUM");
  51423. if ( !this->mInterface )
  51424. __assert__(
  51425. "../../Common/DBSystem/DataBase/DBXinFaList.cpp",
  51426. 0xA3u,
  51427. "virtual int DBXinFaList::ParseResult(void*)",
  51428. "mInterface");
  51429. *((_BYTE *)pResult + 33897) = 0;
  51430. v2 = 0;
  51431. do
  51432. {
  51433. tmpXinFa[v2].m_nXinFaID = -1;
  51434. tmpXinFa[v2++].m_nLevel = 0;
  51435. }
  51436. while ( v2 <= 15 );
  51437. k = 0;
  51438. do
  51439. {
  51440. if ( !ODBCInterface::Fetch(this->mInterface) )
  51441. break;
  51442. ODBCInterface::GetUInt(this->mInterface, 1, &ErrorCode);
  51443. v3 = ODBCInterface::GetInt(this->mInterface, 2, &ErrorCode);
  51444. v4 = ODBCInterface::GetInt(this->mInterface, 3, &ErrorCode);
  51445. tmpXinFa[k].m_nXinFaID = v3;
  51446. tmpXinFa[k++].m_nLevel = v4;
  51447. }
  51448. while ( k <= 15 );
  51449. qsort(tmpXinFa, 0x10u, 4u, XinFaCompare);
  51450. v5 = 0;
  51451. do
  51452. {
  51453. v6 = tmpXinFa[v5];
  51454. if ( v6.m_nXinFaID == -1 )
  51455. break;
  51456. *((_WORD *)pResult + 2 * v5 + 16949) = v6.m_nXinFaID;
  51457. *((_BYTE *)pResult + 4 * v5 + 33900) = tmpXinFa[v5].m_nLevel;
  51458. ++v5;
  51459. ++*((_BYTE *)pResult + 33897);
  51460. }
  51461. while ( v5 <= 15 );
  51462. ODBCInterface::Clear(this->mInterface);
  51463. }
  51464. if ( !this->mInterface )
  51465. __assert__(
  51466. "../../Common/DBSystem/DataBase/DBXinFaList.cpp",
  51467. 0xD5u,
  51468. "virtual int DBXinFaList::ParseResult(void*)",
  51469. "mInterface");
  51470. ODBCInterface::Clear(this->mInterface);
  51471. return 1;
  51472. }
  51473.  
  51474. //----- (08087CFC) --------------------------------------------------------
  51475. GUID_t __cdecl DBXinFaList::GetCharGuid(int a2)
  51476. {
  51477. return *(_DWORD *)(a2 + 24);
  51478. }
  51479.  
  51480. //----- (08087D08) --------------------------------------------------------
  51481. void __cdecl DBXinFaList::SetCharGuid(int a3, int a4)
  51482. {
  51483. *(_DWORD *)(a3 + 24) = a4;
  51484. }
  51485.  
  51486. //----- (08087D18) --------------------------------------------------------
  51487. UINT __cdecl DBXinFaList::GetDBVersion(int a2)
  51488. {
  51489. return *(_DWORD *)(a2 + 28);
  51490. }
  51491.  
  51492. //----- (08087D24) --------------------------------------------------------
  51493. void __cdecl DBXinFaList::SetDBVersion(int a3, int a4)
  51494. {
  51495. *(_DWORD *)(a3 + 28) = a4;
  51496. }
  51497.  
  51498. //----- (08087D34) --------------------------------------------------------
  51499. void __cdecl _tcf_0_121(void *a1)
  51500. {
  51501. std::ios_base::Init::~Init(&std::__ioinit);
  51502. }
  51503.  
  51504. //----- (08087D44) --------------------------------------------------------
  51505. void `global constructor keyed to'DBXinFaList::DBXinFaList()
  51506. {
  51507. std::ios_base::Init::Init(&std::__ioinit);
  51508. __cxa_atexit(_tcf_0_121, 0, &_dso_handle);
  51509. }
  51510. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  51511.  
  51512. //----- (08087D70) --------------------------------------------------------
  51513. void __cdecl ODBCBase::ODBCBase(_DWORD *a2)
  51514. {
  51515. *a2 = off_80D5F70;
  51516. a2[2] = 0;
  51517. a2[1] = 0;
  51518. a2[4] = 4;
  51519. }
  51520. // 80D5F70: using guessed type _DWORD (__cdecl *off_80D5F70[3])(ODBCBase *this);
  51521.  
  51522. //----- (08087D94) --------------------------------------------------------
  51523. void __cdecl ODBCBase::ODBCBase(_DWORD *a2)
  51524. {
  51525. *a2 = off_80D5F70;
  51526. a2[2] = 0;
  51527. a2[1] = 0;
  51528. a2[4] = 4;
  51529. }
  51530. // 80D5F70: using guessed type _DWORD (__cdecl *off_80D5F70[3])(ODBCBase *this);
  51531.  
  51532. //----- (08087DB8) --------------------------------------------------------
  51533. UINT __cdecl ODBCBase::GetResultCount(int a2)
  51534. {
  51535. return *(_DWORD *)(a2 + 4);
  51536. }
  51537.  
  51538. //----- (08087DC4) --------------------------------------------------------
  51539. DB_QUERY *__cdecl ODBCBase::GetInternalQuery(int a2)
  51540. {
  51541. return (DB_QUERY *)(*(_DWORD *)(a2 + 20) + 253844);
  51542. }
  51543.  
  51544. //----- (08087DD4) --------------------------------------------------------
  51545. LONG_DB_QUERY *__cdecl ODBCBase::GetLongInterQuery(int a2)
  51546. {
  51547. return (LONG_DB_QUERY *)(*(_DWORD *)(a2 + 20) + 257940);
  51548. }
  51549.  
  51550. //----- (08087DE4) --------------------------------------------------------
  51551. INT __cdecl ODBCBase::GetInternalAffectCount(int a2)
  51552. {
  51553. return *(_DWORD *)(*(_DWORD *)(a2 + 20) + 250432);
  51554. }
  51555.  
  51556. //----- (08087DF8) --------------------------------------------------------
  51557. int __cdecl ODBCBase::IsPrepare(int a2)
  51558. {
  51559. return **(_DWORD **)(a2 + 20);
  51560. }
  51561.  
  51562. //----- (08087E08) --------------------------------------------------------
  51563. int __cdecl ODBCBase::Load(ODBCBase *const this)
  51564. {
  51565. int v1; // eax
  51566. int v2; // edx
  51567. ODBCInterface *v3; // ebx
  51568. int v4; // eax
  51569.  
  51570. v1 = ODBCBase::IsPrepare((int)this);
  51571. v2 = 0;
  51572. if ( v1 )
  51573. {
  51574. v3 = this->mInterface;
  51575. if ( v3 )
  51576. {
  51577. this->mOPType = 0;
  51578. v4 = ODBCInterface::Execute(v3);
  51579. this->mResultCount = v3->mAffectCount;
  51580. this->mResult = v4;
  51581. v2 = v4;
  51582. }
  51583. }
  51584. return v2;
  51585. }
  51586.  
  51587. //----- (08087E98) --------------------------------------------------------
  51588. int __cdecl ODBCBase::LongLoad(ODBCBase *const this)
  51589. {
  51590. int v1; // eax
  51591. int v2; // edx
  51592. ODBCInterface *v3; // ebx
  51593. int v4; // eax
  51594.  
  51595. v1 = ODBCBase::IsPrepare((int)this);
  51596. v2 = 0;
  51597. if ( v1 )
  51598. {
  51599. v3 = this->mInterface;
  51600. if ( v3 )
  51601. {
  51602. this->mOPType = 0;
  51603. v4 = ODBCInterface::LongExecute(v3);
  51604. this->mResultCount = v3->mAffectCount;
  51605. this->mResult = v4;
  51606. v2 = v4;
  51607. }
  51608. }
  51609. return v2;
  51610. }
  51611.  
  51612. //----- (08087F28) --------------------------------------------------------
  51613. int __cdecl ODBCBase::AddNew(ODBCBase *const this)
  51614. {
  51615. int v1; // eax
  51616. int v2; // edx
  51617. ODBCInterface *v3; // ebx
  51618. int v4; // eax
  51619.  
  51620. v1 = ODBCBase::IsPrepare((int)this);
  51621. v2 = 0;
  51622. if ( v1 )
  51623. {
  51624. v3 = this->mInterface;
  51625. if ( v3 )
  51626. {
  51627. this->mOPType = 2;
  51628. v4 = ODBCInterface::Execute(v3);
  51629. this->mResultCount = v3->mAffectCount;
  51630. this->mResult = v4;
  51631. v2 = v4;
  51632. }
  51633. }
  51634. return v2;
  51635. }
  51636.  
  51637. //----- (08087FB8) --------------------------------------------------------
  51638. int __cdecl ODBCBase::Delete(ODBCBase *const this)
  51639. {
  51640. int v1; // eax
  51641. int v2; // edx
  51642. ODBCInterface *v3; // ebx
  51643. int v4; // eax
  51644.  
  51645. v1 = ODBCBase::IsPrepare((int)this);
  51646. v2 = 0;
  51647. if ( v1 )
  51648. {
  51649. v3 = this->mInterface;
  51650. if ( v3 )
  51651. {
  51652. this->mOPType = 3;
  51653. v4 = ODBCInterface::Execute(v3);
  51654. this->mResultCount = v3->mAffectCount;
  51655. this->mResult = v4;
  51656. v2 = v4;
  51657. }
  51658. }
  51659. return v2;
  51660. }
  51661.  
  51662. //----- (0808804C) --------------------------------------------------------
  51663. int __cdecl ODBCBase::LongDelete(ODBCBase *const this)
  51664. {
  51665. int v1; // eax
  51666. int v2; // edx
  51667. ODBCInterface *v3; // ebx
  51668. int v4; // eax
  51669.  
  51670. v1 = ODBCBase::IsPrepare((int)this);
  51671. v2 = 0;
  51672. if ( v1 )
  51673. {
  51674. v3 = this->mInterface;
  51675. if ( v3 )
  51676. {
  51677. this->mOPType = 3;
  51678. v4 = ODBCInterface::LongExecute(v3);
  51679. this->mResultCount = v3->mAffectCount;
  51680. this->mResult = v4;
  51681. v2 = v4;
  51682. }
  51683. }
  51684. return v2;
  51685. }
  51686.  
  51687. //----- (080880E0) --------------------------------------------------------
  51688. int __cdecl ODBCBase::Save(ODBCBase *const this, void *pSource)
  51689. {
  51690. int v2; // eax
  51691. int v3; // edx
  51692. ODBCInterface *v4; // ebx
  51693. int v5; // eax
  51694.  
  51695. v2 = ODBCBase::IsPrepare((int)this);
  51696. v3 = 0;
  51697. if ( v2 )
  51698. {
  51699. v4 = this->mInterface;
  51700. if ( v4 )
  51701. {
  51702. this->mOPType = 1;
  51703. v5 = ODBCInterface::Execute(v4);
  51704. this->mResultCount = v4->mAffectCount;
  51705. this->mResult = v5;
  51706. v3 = v5;
  51707. }
  51708. }
  51709. return v3;
  51710. }
  51711.  
  51712. //----- (08088174) --------------------------------------------------------
  51713. int __cdecl ODBCBase::LongSave(ODBCBase *const this, void *pSource)
  51714. {
  51715. int v2; // eax
  51716. int v3; // edx
  51717. ODBCInterface *v4; // ebx
  51718. int v5; // eax
  51719.  
  51720. v2 = ODBCBase::IsPrepare((int)this);
  51721. v3 = 0;
  51722. if ( v2 )
  51723. {
  51724. v4 = this->mInterface;
  51725. if ( v4 )
  51726. {
  51727. this->mOPType = 1;
  51728. v5 = ODBCInterface::LongExecute(v4);
  51729. this->mResultCount = v4->mAffectCount;
  51730. this->mResult = v5;
  51731. v3 = v5;
  51732. }
  51733. }
  51734. return v3;
  51735. }
  51736.  
  51737. //----- (08088208) --------------------------------------------------------
  51738. void __cdecl ODBCBase::SetDBName(int a3, int a4)
  51739. {
  51740. *(_DWORD *)(a3 + 12) = a4;
  51741. }
  51742.  
  51743. //----- (08088218) --------------------------------------------------------
  51744. INT __cdecl ODBCBase::GetErrorCode(int a2)
  51745. {
  51746. return *(_DWORD *)(*(_DWORD *)(a2 + 20) + 462740);
  51747. }
  51748.  
  51749. //----- (0808822C) --------------------------------------------------------
  51750. CHAR *__cdecl ODBCBase::GetErrorMessage(int a2)
  51751. {
  51752. return (CHAR *)(*(_DWORD *)(a2 + 20) + 462744);
  51753. }
  51754.  
  51755. //----- (0808823C) --------------------------------------------------------
  51756. int __cdecl ODBCBase::CheckDBConnect(ODBCBase *const this, const CHAR *pInfo)
  51757. {
  51758. int v2; // ecx
  51759. signed int v4; // ebx
  51760. int v5; // eax
  51761. CHAR info[256]; // [esp+0h] [ebp-118h]
  51762.  
  51763. if ( !this->mInterface )
  51764. __assert__(
  51765. "../../Common/DBSystem/DataBase/ODBCBase.cpp",
  51766. 0xF3u,
  51767. "int ODBCBase::CheckDBConnect(const CHAR*)",
  51768. "mInterface");
  51769. memset(info, 0, 0x100u);
  51770. if ( pInfo )
  51771. strncpy(info, pInfo, 0xFFu);
  51772. if ( !this->mInterface->mConnected )
  51773. {
  51774. DiskLog("./Log/ShareMemory", "ERROR:%s...connect database is fails", info, v2);
  51775. v4 = 0;
  51776. while ( 1 )
  51777. {
  51778. MySleep(5000);
  51779. v5 = ODBCInterface::Connect(this->mInterface);
  51780. if ( v5 )
  51781. break;
  51782. DiskLog("./Log/ShareMemory", "ERROR:%s...Can't connect database(%d)", info, v4++);
  51783. if ( v4 > 4 )
  51784. return 0;
  51785. }
  51786. DiskLog("./Log/ShareMemory", "ERROR:%s...Reconnect database", info, v5);
  51787. }
  51788. return 1;
  51789. }
  51790.  
  51791. //----- (08088374) --------------------------------------------------------
  51792. void __cdecl _tcf_0_122(void *a1)
  51793. {
  51794. std::ios_base::Init::~Init(&std::__ioinit);
  51795. }
  51796.  
  51797. //----- (08088384) --------------------------------------------------------
  51798. void `global constructor keyed to'ODBCBase::ODBCBase()
  51799. {
  51800. std::ios_base::Init::Init(&std::__ioinit);
  51801. __cxa_atexit(_tcf_0_122, 0, &_dso_handle);
  51802. }
  51803. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  51804.  
  51805. //----- (080883B0) --------------------------------------------------------
  51806. INT __cdecl ODBCInterface::GetInt(ODBCInterface *const this, INT ColIndex, INT *const ErrorCode)
  51807. {
  51808. if ( this->mColCount < ColIndex )
  51809. {
  51810. *ErrorCode = -102;
  51811. __assert__(
  51812. "../../Common/DBSystem/DataBase/ODBCInterface.cpp",
  51813. 0x173u,
  51814. "int ODBCInterface::GetInt(INT, INT&)",
  51815. "FALSE");
  51816. }
  51817. if ( *(_DWORD *)&this->ColName[99][4 * ColIndex + 28] == -1 )
  51818. {
  51819. *ErrorCode = -100;
  51820. __assert__(
  51821. "../../Common/DBSystem/DataBase/ODBCInterface.cpp",
  51822. 0x17Au,
  51823. "int ODBCInterface::GetInt(INT, INT&)",
  51824. "FALSE");
  51825. }
  51826. *ErrorCode = 0;
  51827. return __strtol_internal((const char *)this + 2500 * ColIndex - 2486, 0, 10, 0);
  51828. }
  51829.  
  51830. //----- (080884A0) --------------------------------------------------------
  51831. void __cdecl ODBCInterface::ODBCInterface(int a2)
  51832. {
  51833. *(_DWORD *)a2 = 0;
  51834. *(_DWORD *)(a2 + 250432) = -1;
  51835. *(_WORD *)(a2 + 12) = 0;
  51836. *(_DWORD *)(a2 + 4) = 0;
  51837. *(_DWORD *)(a2 + 250436) = 0;
  51838. *(_DWORD *)(a2 + 8) = 0;
  51839. memset((void *)(a2 + 462744), 0, 0xFFu);
  51840. memset((void *)(a2 + 253844), 0, 0x1000u);
  51841. }
  51842.  
  51843. //----- (0808850C) --------------------------------------------------------
  51844. void __cdecl ODBCInterface::ODBCInterface(int a2)
  51845. {
  51846. *(_DWORD *)a2 = 0;
  51847. *(_DWORD *)(a2 + 250432) = -1;
  51848. *(_WORD *)(a2 + 12) = 0;
  51849. *(_DWORD *)(a2 + 4) = 0;
  51850. *(_DWORD *)(a2 + 250436) = 0;
  51851. *(_DWORD *)(a2 + 8) = 0;
  51852. memset((void *)(a2 + 462744), 0, 0xFFu);
  51853. memset((void *)(a2 + 253844), 0, 0x1000u);
  51854. }
  51855.  
  51856. //----- (08088578) --------------------------------------------------------
  51857. void __cdecl ODBCInterface::~ODBCInterface(ODBCInterface *const this)
  51858. {
  51859. SQLHDBC v1; // eax
  51860. int v2; // [esp-10h] [ebp-14h]
  51861.  
  51862. if ( this->hStmt )
  51863. {
  51864. SQLFreeHandle(3, this->hStmt);
  51865. v1 = this->hDbc;
  51866. if ( !v1 )
  51867. goto LABEL_3;
  51868. }
  51869. else
  51870. {
  51871. v1 = this->hDbc;
  51872. if ( !v1 )
  51873. goto LABEL_3;
  51874. }
  51875. SQLDisconnect(v1, v2);
  51876. if ( this->hDbc )
  51877. SQLFreeHandle(2, this->hDbc);
  51878. LABEL_3:
  51879. if ( this->hEnv )
  51880. SQLFreeHandle(1, this->hEnv);
  51881. }
  51882. // 8049D08: using guessed type int __cdecl SQLFreeHandle(_DWORD, _DWORD);
  51883. // 804A188: using guessed type int __stdcall SQLDisconnect(_DWORD, _DWORD);
  51884.  
  51885. //----- (08088634) --------------------------------------------------------
  51886. void __cdecl ODBCInterface::~ODBCInterface(ODBCInterface *const this)
  51887. {
  51888. SQLHDBC v1; // eax
  51889. int v2; // [esp-10h] [ebp-14h]
  51890.  
  51891. if ( this->hStmt )
  51892. {
  51893. SQLFreeHandle(3, this->hStmt);
  51894. v1 = this->hDbc;
  51895. if ( !v1 )
  51896. goto LABEL_3;
  51897. }
  51898. else
  51899. {
  51900. v1 = this->hDbc;
  51901. if ( !v1 )
  51902. goto LABEL_3;
  51903. }
  51904. SQLDisconnect(v1, v2);
  51905. if ( this->hDbc )
  51906. SQLFreeHandle(2, this->hDbc);
  51907. LABEL_3:
  51908. if ( this->hEnv )
  51909. SQLFreeHandle(1, this->hEnv);
  51910. }
  51911. // 8049D08: using guessed type int __cdecl SQLFreeHandle(_DWORD, _DWORD);
  51912. // 804A188: using guessed type int __stdcall SQLDisconnect(_DWORD, _DWORD);
  51913.  
  51914. //----- (080886F0) --------------------------------------------------------
  51915. int __cdecl ODBCInterface::Close(ODBCInterface *const this)
  51916. {
  51917. int v2; // [esp-Ch] [ebp-14h]
  51918.  
  51919. if ( this->hStmt )
  51920. {
  51921. SQLCloseCursor(this->hStmt);
  51922. SQLFreeStmt(this->hStmt);
  51923. SQLFreeHandle(3, this->hStmt);
  51924. this->hStmt = 0;
  51925. }
  51926. if ( this->hDbc )
  51927. {
  51928. SQLDisconnect(this->hDbc, v2);
  51929. SQLFreeHandle(2, this->hDbc);
  51930. this->hDbc = 0;
  51931. }
  51932. this->mConnected = 0;
  51933. return 1;
  51934. }
  51935. // 8049B18: using guessed type int __stdcall __cxa_end_catch(_DWORD);
  51936. // 8049D08: using guessed type int __cdecl SQLFreeHandle(_DWORD, _DWORD);
  51937. // 8049FA8: using guessed type int __cdecl SQLFreeStmt(_DWORD);
  51938. // 804A048: using guessed type int __cdecl SQLCloseCursor(_DWORD);
  51939. // 804A188: using guessed type int __stdcall SQLDisconnect(_DWORD, _DWORD);
  51940.  
  51941. //----- (08088804) --------------------------------------------------------
  51942. void __cdecl ODBCInterface::Clear(ODBCInterface *const this)
  51943. {
  51944. SQLCloseCursor(this->hStmt);
  51945. SQLFreeStmt(this->hStmt);
  51946. }
  51947. // 8049FA8: using guessed type int __cdecl SQLFreeStmt(_DWORD);
  51948. // 804A048: using guessed type int __cdecl SQLCloseCursor(_DWORD);
  51949.  
  51950. //----- (08088878) --------------------------------------------------------
  51951. void __cdecl ODBCInterface::Clear_NoCommit(ODBCInterface *const this)
  51952. {
  51953. SQLCloseCursor(this->hStmt);
  51954. SQLFreeStmt(this->hStmt);
  51955. }
  51956. // 8049FA8: using guessed type int __cdecl SQLFreeStmt(_DWORD);
  51957. // 804A048: using guessed type int __cdecl SQLCloseCursor(_DWORD);
  51958.  
  51959. //----- (080888EC) --------------------------------------------------------
  51960. UINT __cdecl ODBCInterface::GetUInt(ODBCInterface *const this, INT ColIndex, INT *const ErrorCode)
  51961. {
  51962. if ( this->mColCount < ColIndex )
  51963. {
  51964. *ErrorCode = -102;
  51965. __assert__(
  51966. "../../Common/DBSystem/DataBase/ODBCInterface.cpp",
  51967. 0x18Fu,
  51968. "UINT ODBCInterface::GetUInt(INT, INT&)",
  51969. "FALSE");
  51970. }
  51971. if ( *(_DWORD *)&this->ColName[99][4 * ColIndex + 28] == -1 )
  51972. {
  51973. *ErrorCode = -100;
  51974. __assert__(
  51975. "../../Common/DBSystem/DataBase/ODBCInterface.cpp",
  51976. 0x196u,
  51977. "UINT ODBCInterface::GetUInt(INT, INT&)",
  51978. "FALSE");
  51979. }
  51980. *ErrorCode = 0;
  51981. return __strtol_internal((const char *)this + 2500 * ColIndex - 2486, 0, 10, 0);
  51982. }
  51983.  
  51984. //----- (080889DC) --------------------------------------------------------
  51985. FLOAT __cdecl ODBCInterface::GetFloat(ODBCInterface *const this, INT ColIndex, INT *const ErrorCode)
  51986. {
  51987. if ( this->mColCount < ColIndex )
  51988. {
  51989. *ErrorCode = -102;
  51990. __assert__(
  51991. "../../Common/DBSystem/DataBase/ODBCInterface.cpp",
  51992. 0x1ABu,
  51993. "FLOAT ODBCInterface::GetFloat(INT, INT&)",
  51994. "FALSE");
  51995. }
  51996. if ( *(_DWORD *)&this->ColName[99][4 * ColIndex + 28] == -1 )
  51997. {
  51998. *ErrorCode = -100;
  51999. __assert__(
  52000. "../../Common/DBSystem/DataBase/ODBCInterface.cpp",
  52001. 0x1B2u,
  52002. "FLOAT ODBCInterface::GetFloat(INT, INT&)",
  52003. "FALSE");
  52004. }
  52005. *ErrorCode = 0;
  52006. return __strtod_internal((const char *)this + 2500 * ColIndex - 2486, 0, 0);
  52007. }
  52008.  
  52009. //----- (08088AD0) --------------------------------------------------------
  52010. void __cdecl ODBCInterface::GetString(ODBCInterface *const this, INT ColIndex, CHAR *buf, INT BufLen, INT *const ErrorCode)
  52011. {
  52012. UINT v5; // [esp-Ch] [ebp-24h]
  52013.  
  52014. if ( this->mColCount < ColIndex )
  52015. {
  52016. *ErrorCode = -102;
  52017. *buf = 0;
  52018. v5 = 458;
  52019. goto LABEL_8;
  52020. }
  52021. if ( *(_DWORD *)&this->ColName[99][4 * ColIndex + 28] == -1 )
  52022. {
  52023. *ErrorCode = -100;
  52024. *buf = 0;
  52025. v5 = 466;
  52026. LABEL_8:
  52027. __assert__(
  52028. "../../Common/DBSystem/DataBase/ODBCInterface.cpp",
  52029. v5,
  52030. "void ODBCInterface::GetString(INT, CHAR*, INT, INT&)",
  52031. "FALSE");
  52032. }
  52033. if ( BufLen <= 2499 )
  52034. strncpy(buf, (const char *)this + 2500 * ColIndex - 2486, BufLen);
  52035. else
  52036. strncpy(buf, (const char *)this + 2500 * ColIndex - 2486, 0x9C4u);
  52037. *ErrorCode = 0;
  52038. }
  52039.  
  52040. //----- (08088BD8) --------------------------------------------------------
  52041. void __cdecl ODBCInterface::GetField(ODBCInterface *const this, INT ColIndex, CHAR *buf, INT BufLen, INT *const ErrorCode)
  52042. {
  52043. UINT v5; // [esp-Ch] [ebp-24h]
  52044. const CHAR *v6; // [esp-4h] [ebp-1Ch]
  52045. UINT OutLength; // [esp+8h] [ebp-10h]
  52046.  
  52047. if ( this->mColCount < ColIndex )
  52048. {
  52049. *ErrorCode = -102;
  52050. *buf = 0;
  52051. __assert__(
  52052. "../../Common/DBSystem/DataBase/ODBCInterface.cpp",
  52053. 0x1EAu,
  52054. "void ODBCInterface::GetField(INT, CHAR*, INT, INT&)",
  52055. "FALSE");
  52056. }
  52057. if ( *(_DWORD *)&this->ColName[99][4 * ColIndex + 28] == -1 )
  52058. {
  52059. *ErrorCode = -100;
  52060. *buf = 0;
  52061. __assert__(
  52062. "../../Common/DBSystem/DataBase/ODBCInterface.cpp",
  52063. 0x1F2u,
  52064. "void ODBCInterface::GetField(INT, CHAR*, INT, INT&)",
  52065. "FALSE");
  52066. }
  52067. if ( BufLen > 2499 )
  52068. {
  52069. memcpy(buf, (char *)this + 2500 * ColIndex - 2486, 0x9C4u);
  52070. v6 = "FALSE";
  52071. v5 = 511;
  52072. goto LABEL_5;
  52073. }
  52074. OutLength = 0;
  52075. DBStr2Binary((const CHAR *)this + 2500 * ColIndex - 2486, 0x9C4u, buf, BufLen, &OutLength);
  52076. if ( (signed int)OutLength > BufLen )
  52077. {
  52078. v6 = "(INT)OutLength<=BufLen";
  52079. v5 = 506;
  52080. LABEL_5:
  52081. __assert__(
  52082. "../../Common/DBSystem/DataBase/ODBCInterface.cpp",
  52083. v5,
  52084. "void ODBCInterface::GetField(INT, CHAR*, INT, INT&)",
  52085. v6);
  52086. }
  52087. *ErrorCode = 0;
  52088. }
  52089.  
  52090. //----- (08088D44) --------------------------------------------------------
  52091. void __cdecl ODBCInterface::GetLongField(ODBCInterface *const this, INT ColIndex, CHAR *buf, INT BufLen, INT *const ErrorCode)
  52092. {
  52093. UINT v5; // [esp-Ch] [ebp-24h]
  52094. const CHAR *v6; // [esp-4h] [ebp-1Ch]
  52095. UINT OutLength; // [esp+8h] [ebp-10h]
  52096.  
  52097. if ( this->mColCount < ColIndex )
  52098. {
  52099. *ErrorCode = -102;
  52100. *buf = 0;
  52101. __assert__(
  52102. "../../Common/DBSystem/DataBase/ODBCInterface.cpp",
  52103. 0x20Fu,
  52104. "void ODBCInterface::GetLongField(INT, CHAR*, INT, INT&)",
  52105. "FALSE");
  52106. }
  52107. if ( *(_DWORD *)&this->ColName[99][4 * ColIndex + 28] == -1 )
  52108. {
  52109. *ErrorCode = -100;
  52110. *buf = 0;
  52111. __assert__(
  52112. "../../Common/DBSystem/DataBase/ODBCInterface.cpp",
  52113. 0x217u,
  52114. "void ODBCInterface::GetLongField(INT, CHAR*, INT, INT&)",
  52115. "FALSE");
  52116. }
  52117. if ( BufLen > 249999 )
  52118. {
  52119. memcpy(buf, (char *)this + 2500 * ColIndex - 2486, 0x3D090u);
  52120. v6 = "FALSE";
  52121. v5 = 548;
  52122. goto LABEL_5;
  52123. }
  52124. OutLength = 0;
  52125. DBStr2Binary((const CHAR *)this + 2500 * ColIndex - 2486, 0x3D090u, buf, BufLen, &OutLength);
  52126. if ( (signed int)OutLength > BufLen )
  52127. {
  52128. v6 = "(INT)OutLength<=BufLen";
  52129. v5 = 543;
  52130. LABEL_5:
  52131. __assert__(
  52132. "../../Common/DBSystem/DataBase/ODBCInterface.cpp",
  52133. v5,
  52134. "void ODBCInterface::GetLongField(INT, CHAR*, INT, INT&)",
  52135. v6);
  52136. }
  52137. *ErrorCode = 0;
  52138. }
  52139.  
  52140. //----- (08088EB0) --------------------------------------------------------
  52141. void __cdecl ODBCInterface::SaveErrorLog(ODBCInterface *const this, const CHAR *pLog)
  52142. {
  52143. FILE *v2; // eax
  52144. FILE *v3; // esi
  52145.  
  52146. if ( *pLog )
  52147. {
  52148. v2 = fopen("./Log/dberror.log", "a");
  52149. v3 = v2;
  52150. if ( v2 )
  52151. {
  52152. fwrite(pLog, 1u, strlen(pLog), v2);
  52153. fwrite("\r\n", 1u, 2u, v3);
  52154. fclose(v3);
  52155. }
  52156. }
  52157. }
  52158.  
  52159. //----- (08088F6C) --------------------------------------------------------
  52160. void __cdecl ODBCInterface::DiagStateEx(ODBCInterface *const this)
  52161. {
  52162. SQLCHAR *v1; // edi
  52163. signed int v2; // ebx
  52164. __int16 i; // ax
  52165. _BOOL2 v4; // ax
  52166. bool v5; // zf
  52167. SQLINTEGER v6; // eax
  52168. SQLINTEGER NativeError; // [esp+Ch] [ebp-230h]
  52169. SQLSMALLINT MsgLen; // [esp+12h] [ebp-22Ah]
  52170. CHAR ErrorBuffer[512]; // [esp+14h] [ebp-228h]
  52171. SQLCHAR SqlState[6]; // [esp+214h] [ebp-28h]
  52172.  
  52173. v1 = this->mErrorMsg;
  52174. memset(this->mErrorMsg, 0, 0xFFu);
  52175. v2 = 1;
  52176. for ( i = SQLGetDiagRec(2, this->hDbc, 1, SqlState, &NativeError, this->mErrorMsg, 255, &MsgLen);
  52177. ;
  52178. i = SQLGetDiagRec(2, this->hDbc, (signed __int16)v2, SqlState, &NativeError, v1, 255, &MsgLen) )
  52179. {
  52180. v4 = i != 100;
  52181. this->mResult = v4;
  52182. if ( !v4 )
  52183. break;
  52184. ++v2;
  52185. }
  52186. v5 = this->mErrorMsg[0] == 0;
  52187. this->mErrorMsg[254] = 0;
  52188. if ( v5 )
  52189. this->mResult = SQLError(this->hEnv, this->hDbc, this->hStmt, SqlState, &NativeError, v1, 255, &MsgLen);
  52190. v6 = NativeError;
  52191. v5 = NativeError == 1062;
  52192. this->mErrorCode = NativeError;
  52193. if ( !v5 && v6 != 2601 )
  52194. ODBCInterface::Close(this);
  52195. memset(ErrorBuffer, 0, 0x200u);
  52196. sprintf(ErrorBuffer, "ErrorCode = %d,ErrorMessage = %s,ErrorSql", this->mErrorCode, v1);
  52197. ODBCInterface::SaveErrorLog(this, ErrorBuffer);
  52198. ODBCInterface::SaveErrorLog(this, (const CHAR *)&this->m_LongQuery);
  52199. }
  52200. // 8049D78: using guessed type int __cdecl SQLGetDiagRec(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD);
  52201. // 8049F28: using guessed type int __cdecl SQLError(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD);
  52202.  
  52203. //----- (080890FC) --------------------------------------------------------
  52204. void __cdecl ODBCInterface::DiagState(ODBCInterface *const this)
  52205. {
  52206. SQLCHAR *v1; // edi
  52207. signed int v2; // ebx
  52208. __int16 i; // ax
  52209. _BOOL2 v4; // ax
  52210. bool v5; // zf
  52211. SQLINTEGER v6; // eax
  52212. SQLINTEGER NativeError; // [esp+Ch] [ebp-230h]
  52213. SQLSMALLINT MsgLen; // [esp+12h] [ebp-22Ah]
  52214. CHAR ErrorBuffer[512]; // [esp+14h] [ebp-228h]
  52215. SQLCHAR SqlState[6]; // [esp+214h] [ebp-28h]
  52216.  
  52217. v1 = this->mErrorMsg;
  52218. memset(this->mErrorMsg, 0, 0xFFu);
  52219. v2 = 1;
  52220. for ( i = SQLGetDiagRec(2, this->hDbc, 1, SqlState, &NativeError, this->mErrorMsg, 255, &MsgLen);
  52221. ;
  52222. i = SQLGetDiagRec(2, this->hDbc, (signed __int16)v2, SqlState, &NativeError, v1, 255, &MsgLen) )
  52223. {
  52224. v4 = i != 100;
  52225. this->mResult = v4;
  52226. if ( !v4 )
  52227. break;
  52228. ++v2;
  52229. }
  52230. v5 = this->mErrorMsg[0] == 0;
  52231. this->mErrorMsg[254] = 0;
  52232. if ( v5 )
  52233. this->mResult = SQLError(this->hEnv, this->hDbc, this->hStmt, SqlState, &NativeError, v1, 255, &MsgLen);
  52234. v6 = NativeError;
  52235. v5 = NativeError == 1062;
  52236. this->mErrorCode = NativeError;
  52237. if ( !v5 && v6 != 2601 )
  52238. ODBCInterface::Close(this);
  52239. memset(ErrorBuffer, 0, 0x200u);
  52240. sprintf(ErrorBuffer, "ErrorCode = %d,ErrorMessage = %s,ErrorSql", this->mErrorCode, v1);
  52241. ODBCInterface::SaveErrorLog(this, ErrorBuffer);
  52242. ODBCInterface::SaveErrorLog(this, (const CHAR *)&this->m_Query);
  52243. }
  52244. // 8049D78: using guessed type int __cdecl SQLGetDiagRec(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD);
  52245. // 8049F28: using guessed type int __cdecl SQLError(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD);
  52246.  
  52247. //----- (0808928C) --------------------------------------------------------
  52248. int __cdecl ODBCInterface::LongFetch(ODBCInterface *const this)
  52249. {
  52250. SQLRETURN v1; // ax
  52251. CHAR (*v3)[2500]; // esi
  52252. signed int v4; // edi
  52253. int ColIndex; // [esp+10h] [ebp-14h]
  52254. SQLINTEGER LenData; // [esp+14h] [ebp-10h]
  52255.  
  52256. v1 = SQLFetch(this->hStmt);
  52257. this->mResult = v1;
  52258. if ( (unsigned __int16)v1 > 1u )
  52259. {
  52260. if ( v1 != 100 )
  52261. ODBCInterface::DiagState(this);
  52262. return 0;
  52263. }
  52264. if ( v1 == 100 )
  52265. return 0;
  52266. ColIndex = 0;
  52267. if ( this->mColCount > 0 )
  52268. {
  52269. v3 = this->Col;
  52270. v4 = 250000;
  52271. do
  52272. {
  52273. LenData = 0;
  52274. SQLGetData(this->hStmt, (unsigned __int16)(ColIndex++ + 1), 1, v3, v4, &LenData);
  52275. v4 -= 2500;
  52276. ++v3;
  52277. }
  52278. while ( this->mColCount > ColIndex );
  52279. }
  52280. return 1;
  52281. }
  52282. // 804A058: using guessed type int __cdecl SQLFetch(_DWORD);
  52283. // 804A078: using guessed type int __cdecl SQLGetData(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD);
  52284.  
  52285. //----- (08089380) --------------------------------------------------------
  52286. int __cdecl ODBCInterface::Fetch(ODBCInterface *const this)
  52287. {
  52288. SQLRETURN v1; // ax
  52289. signed int v3; // edi
  52290. CHAR (*v4)[2500]; // esi
  52291. SQLINTEGER LenData; // [esp+14h] [ebp-10h]
  52292.  
  52293. v1 = SQLFetch(this->hStmt);
  52294. this->mResult = v1;
  52295. if ( (unsigned __int16)v1 > 1u )
  52296. {
  52297. if ( v1 != 100 )
  52298. ODBCInterface::DiagState(this);
  52299. return 0;
  52300. }
  52301. if ( v1 == 100 )
  52302. return 0;
  52303. v3 = 0;
  52304. if ( this->mColCount > 0 )
  52305. {
  52306. v4 = this->Col;
  52307. do
  52308. {
  52309. LenData = 0;
  52310. SQLGetData(this->hStmt, (unsigned __int16)(v3++ + 1), 1, v4, 2500, &LenData);
  52311. ++v4;
  52312. }
  52313. while ( this->mColCount > v3 );
  52314. }
  52315. return 1;
  52316. }
  52317. // 804A058: using guessed type int __cdecl SQLFetch(_DWORD);
  52318. // 804A078: using guessed type int __cdecl SQLGetData(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD);
  52319.  
  52320. //----- (08089464) --------------------------------------------------------
  52321. int __cdecl ODBCInterface::Connect(ODBCInterface *const this)
  52322. {
  52323. ODBCInterface *v1; // esi
  52324. int v2; // eax
  52325. int v3; // ST1C_4
  52326. int result; // eax
  52327. SQLRETURN v5; // ax
  52328. CHAR LogBuff[512]; // [esp+1Ch] [ebp-218h]
  52329.  
  52330. v1 = this;
  52331. ODBCInterface::Close(this);
  52332. SQLAllocHandle(2, v1->hEnv, &v1->hDbc);
  52333. v2 = SQLConnect(v1->hDbc, v1->mConnectStr, -3, v1->mUserName, -3, v1->mPassWord, -3);
  52334. this->mResult = v2;
  52335. if ( (unsigned __int16)v2 > 1u )
  52336. {
  52337. v3 = v2;
  52338. memset(LogBuff, 0, 0x200u);
  52339. sprintf(LogBuff, "Connect string: %s", this->mConnectStr);
  52340. sprintf(LogBuff, "Connect string: %s", this->mUserName, v3);
  52341. ODBCInterface::DiagState(this);
  52342. return 0;
  52343. }
  52344. v5 = SQLAllocHandle(3, this->hDbc, &this->hStmt);
  52345. this->mResult = v5;
  52346. if ( (unsigned __int16)v5 > 1u )
  52347. {
  52348. this->hStmt = 0;
  52349. return 0;
  52350. }
  52351. result = 1;
  52352. this->mConnected = 1;
  52353. return result;
  52354. }
  52355. // 804A088: using guessed type int __cdecl SQLConnect(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD);
  52356. // 804A118: using guessed type int __cdecl SQLAllocHandle(_DWORD, _DWORD, _DWORD);
  52357.  
  52358. //----- (08089590) --------------------------------------------------------
  52359. int __cdecl ODBCInterface::Connect(ODBCInterface *const this, const CHAR *ConnectStr, const CHAR *UserName, const CHAR *Password)
  52360. {
  52361. ODBCInterface *v4; // esi
  52362. int v5; // eax
  52363. int v6; // ST1C_4
  52364. int result; // eax
  52365. SQLRETURN v8; // ax
  52366. CHAR LogBuff[512]; // [esp+1Ch] [ebp-218h]
  52367.  
  52368. v4 = this;
  52369. ODBCInterface::Close(this);
  52370. strncpy(this->mConnectStr, ConnectStr, 0x80u);
  52371. strncpy(this->mUserName, UserName, 0x20u);
  52372. strncpy(this->mPassWord, Password, 0x100u);
  52373. SQLAllocHandle(1, 0, &this->hEnv);
  52374. SQLSetEnvAttr(this->hEnv, 200, 3);
  52375. SQLAllocHandle(2, v4->hEnv, &v4->hDbc);
  52376. v5 = SQLConnect(v4->hDbc, this->mConnectStr, -3, v4->mUserName, -3, v4->mPassWord, -3);
  52377. this->mResult = v5;
  52378. if ( (unsigned __int16)v5 > 1u )
  52379. {
  52380. v6 = v5;
  52381. memset(LogBuff, 0, 0x200u);
  52382. sprintf(LogBuff, "Connect string: %s", this->mConnectStr);
  52383. sprintf(LogBuff, "Connect string: %s", this->mUserName, v6);
  52384. ODBCInterface::DiagState(this);
  52385. return 0;
  52386. }
  52387. v8 = SQLAllocHandle(3, this->hDbc, &this->hStmt);
  52388. this->mResult = v8;
  52389. if ( (unsigned __int16)v8 > 1u )
  52390. {
  52391. this->hStmt = 0;
  52392. return 0;
  52393. }
  52394. result = 1;
  52395. this->mConnected = 1;
  52396. return result;
  52397. }
  52398. // 8049E28: using guessed type int __cdecl SQLSetEnvAttr(_DWORD, _DWORD, _DWORD);
  52399. // 804A088: using guessed type int __cdecl SQLConnect(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD);
  52400. // 804A118: using guessed type int __cdecl SQLAllocHandle(_DWORD, _DWORD, _DWORD);
  52401.  
  52402. //----- (08089714) --------------------------------------------------------
  52403. int __cdecl ODBCInterface::LongExecute(ODBCInterface *const this)
  52404. {
  52405. SQLRETURN v1; // ax
  52406. int result; // eax
  52407. int v3; // edx
  52408. int v4; // eax
  52409. bool v5; // zf
  52410. bool i; // sf
  52411. unsigned __int8 v7; // of
  52412.  
  52413. v1 = SQLExecDirect(this->hStmt, &this->m_LongQuery, -3);
  52414. this->mResult = v1;
  52415. if ( (unsigned __int16)v1 <= 1u || v1 == 100 )
  52416. {
  52417. SQLRowCount(this->hStmt, &this->mAffectCount);
  52418. SQLNumResultCols(this->hStmt, &this->mColCount);
  52419. LOWORD(v3) = this->mColCount;
  52420. result = 0;
  52421. if ( (signed __int16)v3 <= 100 )
  52422. {
  52423. if ( (signed __int16)v3 > 0 || this->mAffectCount > 0 )
  52424. {
  52425. v3 = (signed __int16)v3;
  52426. v4 = 0;
  52427. v7 = 0;
  52428. v5 = (signed __int16)v3 == 0;
  52429. for ( i = (v3 & 0x8000u) != 0; !((unsigned __int8)(i ^ v7) | v5); i = v3 - v4 < 0 )
  52430. {
  52431. v7 = __OFSUB__(v3, ++v4);
  52432. v5 = v3 == v4;
  52433. }
  52434. result = 1;
  52435. }
  52436. else
  52437. {
  52438. ODBCInterface::Clear(this);
  52439. result = 1;
  52440. }
  52441. }
  52442. }
  52443. else
  52444. {
  52445. ODBCInterface::DiagStateEx(this);
  52446. result = 0;
  52447. }
  52448. return result;
  52449. }
  52450. // 8049B18: using guessed type int __stdcall __cxa_end_catch(_DWORD);
  52451. // 8049B98: using guessed type int __cdecl SQLExecDirect(_DWORD, _DWORD, _DWORD);
  52452. // 8049E38: using guessed type int __cdecl SQLNumResultCols(_DWORD, _DWORD);
  52453. // 8049EE8: using guessed type int __cdecl SQLRowCount(_DWORD, _DWORD);
  52454.  
  52455. //----- (08089810) --------------------------------------------------------
  52456. int __cdecl ODBCInterface::Execute(ODBCInterface *const this)
  52457. {
  52458. SQLRETURN v1; // ax
  52459. int result; // eax
  52460. int v3; // edx
  52461. int v4; // eax
  52462. bool v5; // zf
  52463. bool i; // sf
  52464. unsigned __int8 v7; // of
  52465.  
  52466. v1 = SQLExecDirect(this->hStmt, &this->m_Query, -3);
  52467. this->mResult = v1;
  52468. if ( (unsigned __int16)v1 <= 1u || v1 == 100 )
  52469. {
  52470. SQLRowCount(this->hStmt, &this->mAffectCount);
  52471. SQLNumResultCols(this->hStmt, &this->mColCount);
  52472. LOWORD(v3) = this->mColCount;
  52473. result = 0;
  52474. if ( (signed __int16)v3 <= 100 )
  52475. {
  52476. if ( (signed __int16)v3 > 0 || this->mAffectCount > 0 )
  52477. {
  52478. v3 = (signed __int16)v3;
  52479. v4 = 0;
  52480. v7 = 0;
  52481. v5 = (signed __int16)v3 == 0;
  52482. for ( i = (v3 & 0x8000u) != 0; !((unsigned __int8)(i ^ v7) | v5); i = v3 - v4 < 0 )
  52483. {
  52484. v7 = __OFSUB__(v3, ++v4);
  52485. v5 = v3 == v4;
  52486. }
  52487. result = 1;
  52488. }
  52489. else
  52490. {
  52491. ODBCInterface::Clear(this);
  52492. result = 1;
  52493. }
  52494. }
  52495. }
  52496. else
  52497. {
  52498. ODBCInterface::DiagState(this);
  52499. result = 0;
  52500. }
  52501. return result;
  52502. }
  52503. // 8049B18: using guessed type int __stdcall __cxa_end_catch(_DWORD);
  52504. // 8049B98: using guessed type int __cdecl SQLExecDirect(_DWORD, _DWORD, _DWORD);
  52505. // 8049E38: using guessed type int __cdecl SQLNumResultCols(_DWORD, _DWORD);
  52506. // 8049EE8: using guessed type int __cdecl SQLRowCount(_DWORD, _DWORD);
  52507.  
  52508. //----- (0808990C) --------------------------------------------------------
  52509. void __cdecl ODBCInterface::SaveWarrning(ODBCInterface *const this, const CHAR *pLog)
  52510. {
  52511. FILE *v2; // eax
  52512. FILE *v3; // esi
  52513.  
  52514. if ( *pLog )
  52515. {
  52516. v2 = fopen("./Log/dbwarrning.log", "a");
  52517. v3 = v2;
  52518. if ( v2 )
  52519. {
  52520. fwrite(pLog, 1u, strlen(pLog), v2);
  52521. fwrite("\r\n", 1u, 2u, v3);
  52522. fclose(v3);
  52523. }
  52524. }
  52525. }
  52526.  
  52527. //----- (080899C8) --------------------------------------------------------
  52528. void __cdecl ODBCInterface::CleanEnv(ODBCInterface *const this)
  52529. {
  52530. int v1; // [esp-10h] [ebp-14h]
  52531.  
  52532. if ( this->hStmt )
  52533. {
  52534. SQLCloseCursor(this->hStmt);
  52535. SQLFreeStmt(this->hStmt);
  52536. SQLFreeHandle(3, this->hStmt);
  52537. this->hStmt = 0;
  52538. }
  52539. if ( this->hDbc )
  52540. {
  52541. SQLDisconnect(this->hDbc, v1);
  52542. SQLFreeHandle(2, this->hDbc);
  52543. this->hDbc = 0;
  52544. }
  52545. }
  52546. // 8049D08: using guessed type int __cdecl SQLFreeHandle(_DWORD, _DWORD);
  52547. // 8049FA8: using guessed type int __cdecl SQLFreeStmt(_DWORD);
  52548. // 804A048: using guessed type int __cdecl SQLCloseCursor(_DWORD);
  52549. // 804A188: using guessed type int __stdcall SQLDisconnect(_DWORD, _DWORD);
  52550.  
  52551. //----- (08089A44) --------------------------------------------------------
  52552. void __cdecl ODBCInterface::Dump(ODBCInterface *const this, INT col)
  52553. {
  52554. FILE *v2; // eax
  52555. FILE *v3; // ebx
  52556.  
  52557. v2 = fopen("./Log/field", "a");
  52558. v3 = v2;
  52559. if ( v2 )
  52560. {
  52561. fwrite("begin", 1u, 5u, v2);
  52562. fwrite((char *)this + 2500 * col - 2486, 1u, 0x9C4u, v3);
  52563. fclose(v3);
  52564. }
  52565. }
  52566.  
  52567. //----- (08089AB8) --------------------------------------------------------
  52568. void __cdecl _tcf_0_123(void *a1)
  52569. {
  52570. std::ios_base::Init::~Init(&std::__ioinit);
  52571. }
  52572.  
  52573. //----- (08089AC8) --------------------------------------------------------
  52574. void `global constructor keyed to'ODBCInterface::ODBCInterface()
  52575. {
  52576. std::ios_base::Init::Init(&std::__ioinit);
  52577. __cxa_atexit(_tcf_0_123, 0, &_dso_handle);
  52578. }
  52579. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  52580.  
  52581. //----- (08089AF4) --------------------------------------------------------
  52582. void __cdecl _tcf_0_124(void *a1)
  52583. {
  52584. std::ios_base::Init::~Init(&std::__ioinit);
  52585. }
  52586.  
  52587. //----- (08089B04) --------------------------------------------------------
  52588. void `global constructor keyed to'LoadCharList()
  52589. {
  52590. std::ios_base::Init::Init(&std::__ioinit);
  52591. __cxa_atexit(_tcf_0_124, 0, &_dso_handle);
  52592. }
  52593. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  52594.  
  52595. //----- (08089B30) --------------------------------------------------------
  52596. void __cdecl BillingPlayer::BillingPlayer(BillingPlayer *const this, BOOL bIsServer)
  52597. {
  52598. Socket *v2; // esi
  52599. Socket *v3; // esi
  52600. Socket *v4; // esi
  52601.  
  52602. Player_AtLogin::Player_AtLogin(&this->0, 0);
  52603. this->_vptr_Player = (int (**)(...))off_80DA2C8;
  52604. this->m_Status = 0;
  52605. this->m_PID = -1;
  52606. this->m_UID = -1;
  52607. this->m_PlayerManagerID = -1;
  52608. v2 = (Socket *)operator new(0x34u);
  52609. Socket::Socket(v2);
  52610. this->m_pSocket = v2;
  52611. if ( !v2 )
  52612. __assert__("./Player/BillingPlayer.cpp", 0x19u, "BillingPlayer::BillingPlayer(BOOL)", "m_pSocket");
  52613. v3 = (Socket *)operator new(0x1Cu);
  52614. SocketBillingInputStream::SocketBillingInputStream(v3, (UINT)this->m_pSocket, 0x10000u, 0x18000u);
  52615. this->m_pSocketInputStream = (SocketInputStream *)v3;
  52616. if ( !v3 )
  52617. __assert__("./Player/BillingPlayer.cpp", 0x1Cu, "BillingPlayer::BillingPlayer(BOOL)", "m_pSocketInputStream");
  52618. v4 = (Socket *)operator new(0x1Cu);
  52619. SocketBillingOutputStream::SocketBillingOutputStream(v4, (UINT)this->m_pSocket, 0x2000u, 0x19000u);
  52620. this->m_pSocketOutputStream = (SocketOutputStream *)v4;
  52621. if ( !v4 )
  52622. __assert__("./Player/BillingPlayer.cpp", 0x1Fu, "BillingPlayer::BillingPlayer(BOOL)", "m_pSocketOutputStream");
  52623. this->m_IsEmpty = 1;
  52624. this->m_IsDisconnect = 0;
  52625. this->m_PacketIndex = 0;
  52626. this->m_Status = 400;
  52627. this->m_LastKeepLiveTime = 0;
  52628. this->m_KeepLiveSendNum = 0;
  52629. }
  52630. // 80DA2C8: using guessed type _DWORD (__cdecl *off_80DA2C8[2])(Player *this, UINT *const socketRet);
  52631.  
  52632. //----- (08089CC4) --------------------------------------------------------
  52633. void __cdecl BillingPlayer::BillingPlayer(BillingPlayer *const this, BOOL bIsServer)
  52634. {
  52635. Socket *v2; // esi
  52636. Socket *v3; // esi
  52637. Socket *v4; // esi
  52638.  
  52639. Player_AtLogin::Player_AtLogin(&this->0, 0);
  52640. this->_vptr_Player = (int (**)(...))off_80DA2C8;
  52641. this->m_Status = 0;
  52642. this->m_PID = -1;
  52643. this->m_UID = -1;
  52644. this->m_PlayerManagerID = -1;
  52645. v2 = (Socket *)operator new(0x34u);
  52646. Socket::Socket(v2);
  52647. this->m_pSocket = v2;
  52648. if ( !v2 )
  52649. __assert__("./Player/BillingPlayer.cpp", 0x19u, "BillingPlayer::BillingPlayer(BOOL)", "m_pSocket");
  52650. v3 = (Socket *)operator new(0x1Cu);
  52651. SocketBillingInputStream::SocketBillingInputStream(v3, (UINT)this->m_pSocket, 0x10000u, 0x18000u);
  52652. this->m_pSocketInputStream = (SocketInputStream *)v3;
  52653. if ( !v3 )
  52654. __assert__("./Player/BillingPlayer.cpp", 0x1Cu, "BillingPlayer::BillingPlayer(BOOL)", "m_pSocketInputStream");
  52655. v4 = (Socket *)operator new(0x1Cu);
  52656. SocketBillingOutputStream::SocketBillingOutputStream(v4, (UINT)this->m_pSocket, 0x2000u, 0x19000u);
  52657. this->m_pSocketOutputStream = (SocketOutputStream *)v4;
  52658. if ( !v4 )
  52659. __assert__("./Player/BillingPlayer.cpp", 0x1Fu, "BillingPlayer::BillingPlayer(BOOL)", "m_pSocketOutputStream");
  52660. this->m_IsEmpty = 1;
  52661. this->m_IsDisconnect = 0;
  52662. this->m_PacketIndex = 0;
  52663. this->m_Status = 400;
  52664. this->m_LastKeepLiveTime = 0;
  52665. this->m_KeepLiveSendNum = 0;
  52666. }
  52667. // 80DA2C8: using guessed type _DWORD (__cdecl *off_80DA2C8[2])(Player *this, UINT *const socketRet);
  52668.  
  52669. //----- (08089E58) --------------------------------------------------------
  52670. void __cdecl BillingPlayer::~BillingPlayer(Player_AtLogin *a2)
  52671. {
  52672. a2->_vptr_Player = (int (**)(...))off_80DA2C8;
  52673. Player_AtLogin::~Player_AtLogin(&a2->0);
  52674. }
  52675. // 80DA2C8: using guessed type _DWORD (__cdecl *off_80DA2C8[2])(Player *this, UINT *const socketRet);
  52676.  
  52677. //----- (08089E74) --------------------------------------------------------
  52678. void __cdecl BillingPlayer::~BillingPlayer(Player_AtLogin *a2)
  52679. {
  52680. a2->_vptr_Player = (int (**)(...))off_80DA2C8;
  52681. Player_AtLogin::~Player_AtLogin(&a2->0);
  52682. }
  52683. // 80DA2C8: using guessed type _DWORD (__cdecl *off_80DA2C8[2])(Player *this, UINT *const socketRet);
  52684.  
  52685. //----- (08089E90) --------------------------------------------------------
  52686. void __cdecl BillingPlayer::~BillingPlayer(Player *a2)
  52687. {
  52688. a2->_vptr_Player = (int (**)(...))off_80DA2C8;
  52689. Player_AtLogin::~Player_AtLogin(a2);
  52690. operator delete((IPRegionTable *const )a2);
  52691. }
  52692. // 80DA2C8: using guessed type _DWORD (__cdecl *off_80DA2C8[2])(Player *this, UINT *const socketRet);
  52693.  
  52694. //----- (08089EB8) --------------------------------------------------------
  52695. #error "808A0C4: call analysis failed (funcsize=257)"
  52696.  
  52697. //----- (0808A260) --------------------------------------------------------
  52698. BOOL __cdecl BillingPlayer::ProcessInput(BillingPlayer *const this)
  52699. {
  52700. return Player_AtLogin::ProcessInput(&this->0);
  52701. }
  52702.  
  52703. //----- (0808A2BC) --------------------------------------------------------
  52704. BOOL __cdecl BillingPlayer::ProcessOutput(BillingPlayer *const this)
  52705. {
  52706. return Player_AtLogin::ProcessOutput(&this->0);
  52707. }
  52708.  
  52709. //----- (0808A318) --------------------------------------------------------
  52710. BOOL __cdecl BillingPlayer::SendPacket(BillingPlayer *const this, BillPacket *pPacket)
  52711. {
  52712. BOOL result; // eax
  52713.  
  52714. result = 1;
  52715. if ( !this->m_IsDisconnect )
  52716. {
  52717. if ( this->m_pSocketOutputStream )
  52718. {
  52719. if ( !SocketBillingOutputStream::WritePacket(this->m_pSocketOutputStream, (int)pPacket) )
  52720. __assert__("./Player/BillingPlayer.cpp", 0x102u, "virtual BOOL BillingPlayer::SendPacket(BillPacket*)", "ret");
  52721. }
  52722. result = 1;
  52723. }
  52724. return result;
  52725. }
  52726.  
  52727. //----- (0808A3C0) --------------------------------------------------------
  52728. BOOL __cdecl BillingPlayer::IsValid(BillingPlayer *const this)
  52729. {
  52730. return Player::IsValid(&this->0) != 0;
  52731. }
  52732.  
  52733. //----- (0808A428) --------------------------------------------------------
  52734. void __cdecl BillingPlayer::CleanUp(BillingPlayer *const this)
  52735. {
  52736. this->m_Status = 400;
  52737. this->m_LastKeepLiveTime = 0;
  52738. this->m_KeepLiveSendNum = 0;
  52739. Player_AtLogin::CleanUp(&this->0);
  52740. }
  52741.  
  52742. //----- (0808A4A0) --------------------------------------------------------
  52743. BOOL __cdecl BillingPlayer::HeartBeat(BillingPlayer *const this, UINT uTime)
  52744. {
  52745. BOOL result; // eax
  52746. UINT v3; // edx
  52747. int v4; // ecx
  52748. Packets::LBKeepLive Msg; // [esp+0h] [ebp-28h]
  52749.  
  52750. if ( this->m_Status != 401 )
  52751. return Player_AtLogin::HeartBeat(&this->0, uTime);
  52752. result = 0;
  52753. if ( this->m_KeepLiveSendNum <= 4 )
  52754. {
  52755. v3 = this->m_LastKeepLiveTime;
  52756. if ( uTime - v3 > 0x7530 || (signed int)(v3 - uTime) > 30000 )
  52757. {
  52758. BillPacket::BillPacket(&Msg);
  52759. Msg.mZoneID = g_Config.m_WorldInfo.m_ZoneID;
  52760. Msg._vptr_BillPacket = (int (**)(...))off_80CE0E8;
  52761. Msg.mWorldID = g_Config.m_WorldInfo.m_WorldID;
  52762. Msg.mPlayerCount = g_WorldPlayerCounter.m_WorldPlayerCount;
  52763. (*((void (__fastcall **)(int, BillingPlayer *const , Packets::LBKeepLive *))this->_vptr_Player + 29))(
  52764. v4,
  52765. this,
  52766. &Msg);
  52767. this->m_LastKeepLiveTime = uTime;
  52768. ++this->m_KeepLiveSendNum;
  52769. Msg._vptr_BillPacket = (int (**)(...))off_80CE0E8;
  52770. BillPacket::~BillPacket(&Msg);
  52771. }
  52772. return Player_AtLogin::HeartBeat(&this->0, uTime);
  52773. }
  52774. return result;
  52775. }
  52776. // 80CE0E8: using guessed type _DWORD (__cdecl *off_80CE0E8[2])(Packets::LBKeepLive *this);
  52777.  
  52778. //----- (0808A5B0) --------------------------------------------------------
  52779. void __cdecl _tcf_0_125(void *a1)
  52780. {
  52781. std::ios_base::Init::~Init(&std::__ioinit);
  52782. }
  52783.  
  52784. //----- (0808A5C0) --------------------------------------------------------
  52785. void `global constructor keyed to'BillingPlayer::BillingPlayer()
  52786. {
  52787. std::ios_base::Init::Init(&std::__ioinit);
  52788. __cxa_atexit(_tcf_0_125, 0, &_dso_handle);
  52789. }
  52790. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  52791.  
  52792. //----- (0808A5EC) --------------------------------------------------------
  52793. void __cdecl Player_AtLogin::onPacketExecuteError(Player_AtLogin *const this, PacketID_t id, const CHAR *debugBuffer, UINT debugBufferLength)
  52794. {
  52795. ;
  52796. }
  52797.  
  52798. //----- (0808A5F4) --------------------------------------------------------
  52799. void __cdecl Player_AtLogin::onPacketExecuteBreak(Player_AtLogin *const this, PacketID_t id, const CHAR *debugBuffer, UINT debugBufferLength)
  52800. {
  52801. ;
  52802. }
  52803.  
  52804. //----- (0808A5FC) --------------------------------------------------------
  52805. void __cdecl Player_AtLogin::onPacketExecuteContinue(Player_AtLogin *const this, PacketID_t id, const CHAR *debugBuffer, UINT debugBufferLength)
  52806. {
  52807. ;
  52808. }
  52809.  
  52810. //----- (0808A604) --------------------------------------------------------
  52811. void __cdecl Player_AtLogin::onPacketExecuteNotRemove(Player_AtLogin *const this, PacketID_t id, const CHAR *debugBuffer, UINT debugBufferLength)
  52812. {
  52813. ;
  52814. }
  52815.  
  52816. //----- (0808A60C) --------------------------------------------------------
  52817. void __cdecl Player_AtLogin::onPacketExecuteNotRemoveError(Player_AtLogin *const this, PacketID_t id, const CHAR *debugBuffer, UINT debugBufferLength)
  52818. {
  52819. ;
  52820. }
  52821.  
  52822. //----- (0808A614) --------------------------------------------------------
  52823. BOOL __cdecl BillingPlayer::IsServerPlayer(BillingPlayer *const this)
  52824. {
  52825. return 0;
  52826. }
  52827.  
  52828. //----- (0808A61C) --------------------------------------------------------
  52829. BOOL __cdecl BillingPlayer::IsBillingPlayer(BillingPlayer *const this)
  52830. {
  52831. return 1;
  52832. }
  52833.  
  52834. //----- (0808A628) --------------------------------------------------------
  52835. BOOL __cdecl BillingPlayer::IsLoginPlayer(BillingPlayer *const this)
  52836. {
  52837. return 0;
  52838. }
  52839.  
  52840. //----- (0808A630) --------------------------------------------------------
  52841. void __cdecl LoginPlayer::ResetDisconnectCountDown(int a2)
  52842. {
  52843. _DWORD *v2; // edx
  52844.  
  52845. v2 = (_DWORD *)(a2 + 516);
  52846. v2[2] = 0;
  52847. v2[1] = 0;
  52848. *v2 = 0;
  52849. *(_DWORD *)(a2 + 528) = 0;
  52850. }
  52851.  
  52852. //----- (0808A660) --------------------------------------------------------
  52853. void __cdecl LoginPlayer::LoginPlayer(LoginPlayer *const this)
  52854. {
  52855. MiBaoGroup *v1; // esi
  52856. signed int v2; // ecx
  52857. int v3; // edi
  52858. signed int v4; // ecx
  52859. int v5; // edi
  52860. CMyTimer *v6; // eax
  52861. signed int v7; // ecx
  52862. CHAR *v8; // edi
  52863. MiBaoGroup *v9; // [esp+14h] [ebp-1Ch]
  52864. MiBaoGroup *v10; // [esp+14h] [ebp-1Ch]
  52865.  
  52866. Player_AtLogin::Player_AtLogin(&this->0, 0);
  52867. v1 = &this->m_MiBaoGroup;
  52868. this->m_WorldPos.m_fZ = 0.0;
  52869. this->_vptr_Player = (int (**)(...))off_80DA848;
  52870. this->m_WorldPos.m_fX = 0.0;
  52871. v9 = &this->m_MiBaoGroup;
  52872. v2 = 2;
  52873. do
  52874. {
  52875. v9->unit[0].column = -1;
  52876. v9->unit[0].row = -1;
  52877. v3 = (int)v9->unit[0].key;
  52878. *(_WORD *)v3 = 0;
  52879. *(_BYTE *)(v3 + 2) = 0;
  52880. *(_WORD *)v9->unit[0].value = 0;
  52881. v9->unit[0].value[2] = 0;
  52882. --v2;
  52883. v9 = (MiBaoGroup *)((char *)v9 + 8);
  52884. }
  52885. while ( v2 != -1 );
  52886. v10 = &this->m_MiBaoGroup;
  52887. v4 = 2;
  52888. do
  52889. {
  52890. v10->unit[0].column = -1;
  52891. v10->unit[0].row = -1;
  52892. v5 = (int)v10->unit[0].key;
  52893. *(_WORD *)v5 = 0;
  52894. *(_BYTE *)(v5 + 2) = 0;
  52895. *(_WORD *)v10->unit[0].value = 0;
  52896. v10->unit[0].value[2] = 0;
  52897. v10 = (MiBaoGroup *)((char *)v10 + 8);
  52898. --v4;
  52899. }
  52900. while ( v4 >= 0 );
  52901. *(_DWORD *)this->m_CreateCode.code = 0;
  52902. *(_DWORD *)&this->m_CreateCode.code[2] = 0;
  52903. *(_DWORD *)this->m_LoginCode.code = 0;
  52904. *(_DWORD *)&this->m_LoginCode.code[2] = 0;
  52905. v6 = &this->m_DisconnectCountDown;
  52906. v6->m_bOper = 0;
  52907. v6->m_uTickOld = 0;
  52908. this->m_DisconnectCountDown.m_uTickTerm = 0;
  52909. this->m_AccountSafeSign.m_Sign = 0;
  52910. this->m_Status = 300;
  52911. this->m_LastSendTime = 0;
  52912. this->m_ConnectTime = 0;
  52913. this->m_KickTime = 0;
  52914. this->m_CurrentTime = 0;
  52915. this->m_LeftTimeToQuit = 0;
  52916. this->m_AccountGuid = 0;
  52917. this->m_Version = 0;
  52918. this->m_LastSendProcessTurn = 0;
  52919. this->m_QueuePos = 0;
  52920. this->m_LastDBOpTime = 0;
  52921. this->m_CharNumber = -1;
  52922. memset(this->m_GUIDList, -1, 0x14u);
  52923. this->m_WorldPos.m_fZ = 0.0;
  52924. this->m_uKey = -1;
  52925. this->m_bDBOprating = 0;
  52926. this->m_ReadyKickCount = 0;
  52927. this->m_WrongPWCount = 0;
  52928. this->m_SceneID = 0;
  52929. this->m_WorldPos.m_fX = 0.0;
  52930. this->m_bEnableMiBao = 0;
  52931. v7 = 2;
  52932. do
  52933. {
  52934. v1->unit[0].column = -1;
  52935. v1->unit[0].row = -1;
  52936. *(_WORD *)v1->unit[0].key = 0;
  52937. v1->unit[0].key[2] = 0;
  52938. *(_WORD *)v1->unit[0].value = 0;
  52939. v8 = &v1->unit[0].value[2];
  52940. v1 = (MiBaoGroup *)((char *)v1 + 8);
  52941. --v7;
  52942. *v8 = 0;
  52943. }
  52944. while ( v7 >= 0 );
  52945. this->m_ProxyType = 4;
  52946. *(_DWORD *)this->m_CreateCode.code = 0;
  52947. this->m_MiBaoInputBeginTime = 0;
  52948. this->m_FatigueSign = 0;
  52949. this->m_AccountTotalOnlineTime = 0;
  52950. this->m_bAlreadyCheckCreateCode = 0;
  52951. this->m_bAlreadyCheckLoginCode = 0;
  52952. *(_DWORD *)&this->m_CreateCode.code[2] = 0;
  52953. *(_DWORD *)this->m_LoginCode.code = 0;
  52954. *(_DWORD *)&this->m_LoginCode.code[2] = 0;
  52955. this->m_AccountSafeSign.m_Sign = 0;
  52956. LoginPlayer::ResetDisconnectCountDown((int)this);
  52957. }
  52958. // 80DA848: using guessed type _DWORD (__cdecl *off_80DA848[2])(Player *this, UINT *const socketRet);
  52959.  
  52960. //----- (0808A8CC) --------------------------------------------------------
  52961. void __cdecl LoginPlayer::LoginPlayer(LoginPlayer *const this)
  52962. {
  52963. MiBaoGroup *v1; // esi
  52964. signed int v2; // ecx
  52965. int v3; // edi
  52966. signed int v4; // ecx
  52967. int v5; // edi
  52968. CMyTimer *v6; // eax
  52969. signed int v7; // ecx
  52970. CHAR *v8; // edi
  52971. MiBaoGroup *v9; // [esp+14h] [ebp-1Ch]
  52972. MiBaoGroup *v10; // [esp+14h] [ebp-1Ch]
  52973.  
  52974. Player_AtLogin::Player_AtLogin(&this->0, 0);
  52975. v1 = &this->m_MiBaoGroup;
  52976. this->m_WorldPos.m_fZ = 0.0;
  52977. this->_vptr_Player = (int (**)(...))off_80DA848;
  52978. this->m_WorldPos.m_fX = 0.0;
  52979. v9 = &this->m_MiBaoGroup;
  52980. v2 = 2;
  52981. do
  52982. {
  52983. v9->unit[0].column = -1;
  52984. v9->unit[0].row = -1;
  52985. v3 = (int)v9->unit[0].key;
  52986. *(_WORD *)v3 = 0;
  52987. *(_BYTE *)(v3 + 2) = 0;
  52988. *(_WORD *)v9->unit[0].value = 0;
  52989. v9->unit[0].value[2] = 0;
  52990. --v2;
  52991. v9 = (MiBaoGroup *)((char *)v9 + 8);
  52992. }
  52993. while ( v2 != -1 );
  52994. v10 = &this->m_MiBaoGroup;
  52995. v4 = 2;
  52996. do
  52997. {
  52998. v10->unit[0].column = -1;
  52999. v10->unit[0].row = -1;
  53000. v5 = (int)v10->unit[0].key;
  53001. *(_WORD *)v5 = 0;
  53002. *(_BYTE *)(v5 + 2) = 0;
  53003. *(_WORD *)v10->unit[0].value = 0;
  53004. v10->unit[0].value[2] = 0;
  53005. v10 = (MiBaoGroup *)((char *)v10 + 8);
  53006. --v4;
  53007. }
  53008. while ( v4 >= 0 );
  53009. *(_DWORD *)this->m_CreateCode.code = 0;
  53010. *(_DWORD *)&this->m_CreateCode.code[2] = 0;
  53011. *(_DWORD *)this->m_LoginCode.code = 0;
  53012. *(_DWORD *)&this->m_LoginCode.code[2] = 0;
  53013. v6 = &this->m_DisconnectCountDown;
  53014. v6->m_bOper = 0;
  53015. v6->m_uTickOld = 0;
  53016. this->m_DisconnectCountDown.m_uTickTerm = 0;
  53017. this->m_AccountSafeSign.m_Sign = 0;
  53018. this->m_Status = 300;
  53019. this->m_LastSendTime = 0;
  53020. this->m_ConnectTime = 0;
  53021. this->m_KickTime = 0;
  53022. this->m_CurrentTime = 0;
  53023. this->m_LeftTimeToQuit = 0;
  53024. this->m_AccountGuid = 0;
  53025. this->m_Version = 0;
  53026. this->m_LastSendProcessTurn = 0;
  53027. this->m_QueuePos = 0;
  53028. this->m_LastDBOpTime = 0;
  53029. this->m_CharNumber = -1;
  53030. memset(this->m_GUIDList, -1, 0x14u);
  53031. this->m_WorldPos.m_fZ = 0.0;
  53032. this->m_uKey = -1;
  53033. this->m_bDBOprating = 0;
  53034. this->m_ReadyKickCount = 0;
  53035. this->m_WrongPWCount = 0;
  53036. this->m_SceneID = 0;
  53037. this->m_WorldPos.m_fX = 0.0;
  53038. this->m_bEnableMiBao = 0;
  53039. v7 = 2;
  53040. do
  53041. {
  53042. v1->unit[0].column = -1;
  53043. v1->unit[0].row = -1;
  53044. *(_WORD *)v1->unit[0].key = 0;
  53045. v1->unit[0].key[2] = 0;
  53046. *(_WORD *)v1->unit[0].value = 0;
  53047. v8 = &v1->unit[0].value[2];
  53048. v1 = (MiBaoGroup *)((char *)v1 + 8);
  53049. --v7;
  53050. *v8 = 0;
  53051. }
  53052. while ( v7 >= 0 );
  53053. this->m_ProxyType = 4;
  53054. *(_DWORD *)this->m_CreateCode.code = 0;
  53055. this->m_MiBaoInputBeginTime = 0;
  53056. this->m_FatigueSign = 0;
  53057. this->m_AccountTotalOnlineTime = 0;
  53058. this->m_bAlreadyCheckCreateCode = 0;
  53059. this->m_bAlreadyCheckLoginCode = 0;
  53060. *(_DWORD *)&this->m_CreateCode.code[2] = 0;
  53061. *(_DWORD *)this->m_LoginCode.code = 0;
  53062. *(_DWORD *)&this->m_LoginCode.code[2] = 0;
  53063. this->m_AccountSafeSign.m_Sign = 0;
  53064. LoginPlayer::ResetDisconnectCountDown((int)this);
  53065. }
  53066. // 80DA848: using guessed type _DWORD (__cdecl *off_80DA848[2])(Player *this, UINT *const socketRet);
  53067.  
  53068. //----- (0808AB38) --------------------------------------------------------
  53069. void __cdecl LoginPlayer::~LoginPlayer(Player_AtLogin *a2)
  53070. {
  53071. a2->_vptr_Player = (int (**)(...))off_80DA848;
  53072. Player_AtLogin::~Player_AtLogin(&a2->0);
  53073. }
  53074. // 80DA848: using guessed type _DWORD (__cdecl *off_80DA848[2])(Player *this, UINT *const socketRet);
  53075.  
  53076. //----- (0808AB54) --------------------------------------------------------
  53077. void __cdecl LoginPlayer::~LoginPlayer(Player_AtLogin *a2)
  53078. {
  53079. a2->_vptr_Player = (int (**)(...))off_80DA848;
  53080. Player_AtLogin::~Player_AtLogin(&a2->0);
  53081. }
  53082. // 80DA848: using guessed type _DWORD (__cdecl *off_80DA848[2])(Player *this, UINT *const socketRet);
  53083.  
  53084. //----- (0808AB70) --------------------------------------------------------
  53085. void __cdecl LoginPlayer::~LoginPlayer(Player *a2)
  53086. {
  53087. a2->_vptr_Player = (int (**)(...))off_80DA848;
  53088. Player_AtLogin::~Player_AtLogin(a2);
  53089. operator delete((IPRegionTable *const )a2);
  53090. }
  53091. // 80DA848: using guessed type _DWORD (__cdecl *off_80DA848[2])(Player *this, UINT *const socketRet);
  53092.  
  53093. //----- (0808AB98) --------------------------------------------------------
  53094. void __cdecl LoginPlayer::CleanUp(LoginPlayer *const this)
  53095. {
  53096. MiBaoGroup *v1; // esi
  53097. signed int v2; // ecx
  53098. CHAR *v3; // edi
  53099.  
  53100. this->m_Status = 300;
  53101. this->m_KickTime = 0;
  53102. this->m_LastSendTime = 0;
  53103. this->m_ConnectTime = 0;
  53104. this->m_CurrentTime = 0;
  53105. this->m_LeftTimeToQuit = 0;
  53106. this->m_AccountGuid = 0;
  53107. this->m_Version = 0;
  53108. this->m_LastSendProcessTurn = 0;
  53109. this->m_QueuePos = 0;
  53110. this->m_LastDBOpTime = 0;
  53111. this->m_CharNumber = -1;
  53112. memset(this->m_GUIDList, -1, 0x14u);
  53113. this->m_uKey = -1;
  53114. this->m_bDBOprating = 0;
  53115. this->m_ReadyKickCount = 0;
  53116. this->m_WrongPWCount = 0;
  53117. this->m_SceneID = 0;
  53118. this->m_WorldPos.m_fX = 0.0;
  53119. this->m_WorldPos.m_fZ = 0.0;
  53120. this->m_bEnableMiBao = 0;
  53121. v1 = &this->m_MiBaoGroup;
  53122. v2 = 2;
  53123. do
  53124. {
  53125. v1->unit[0].column = -1;
  53126. v1->unit[0].row = -1;
  53127. *(_WORD *)v1->unit[0].key = 0;
  53128. v1->unit[0].key[2] = 0;
  53129. *(_WORD *)v1->unit[0].value = 0;
  53130. v3 = &v1->unit[0].value[2];
  53131. v1 = (MiBaoGroup *)((char *)v1 + 8);
  53132. --v2;
  53133. *v3 = 0;
  53134. }
  53135. while ( v2 >= 0 );
  53136. this->m_MiBaoInputBeginTime = 0;
  53137. this->m_FatigueSign = 0;
  53138. this->m_AccountTotalOnlineTime = 0;
  53139. this->m_ProxyType = 4;
  53140. this->m_bAlreadyCheckCreateCode = 0;
  53141. this->m_bAlreadyCheckLoginCode = 0;
  53142. *(_DWORD *)this->m_CreateCode.code = 0;
  53143. *(_DWORD *)&this->m_CreateCode.code[2] = 0;
  53144. *(_DWORD *)this->m_LoginCode.code = 0;
  53145. *(_DWORD *)&this->m_LoginCode.code[2] = 0;
  53146. this->m_AccountSafeSign.m_Sign = 0;
  53147. LoginPlayer::ResetDisconnectCountDown((int)this);
  53148. (*((void (__cdecl **)(LoginPlayer *const ))this->_vptr_Player + 27))(this);
  53149. Player_AtLogin::CleanUp(&this->0);
  53150. }
  53151.  
  53152. //----- (0808AD64) --------------------------------------------------------
  53153. BOOL __cdecl LoginPlayer::ProcessCommand(LoginPlayer *const this, BOOL Option)
  53154. {
  53155. return Player_AtLogin::ProcessCommand(&this->0, Option);
  53156. }
  53157.  
  53158. //----- (0808ADC4) --------------------------------------------------------
  53159. BOOL __cdecl LoginPlayer::ProcessInput(LoginPlayer *const this)
  53160. {
  53161. return Player_AtLogin::ProcessInput(&this->0);
  53162. }
  53163.  
  53164. //----- (0808AE20) --------------------------------------------------------
  53165. BOOL __cdecl LoginPlayer::ProcessOutput(LoginPlayer *const this)
  53166. {
  53167. return Player_AtLogin::ProcessOutput(&this->0);
  53168. }
  53169.  
  53170. //----- (0808AE7C) --------------------------------------------------------
  53171. BOOL __cdecl LoginPlayer::SendPacket(LoginPlayer *const this, Packet *pPacket)
  53172. {
  53173. return Player_AtLogin::SendPacket(&this->0, pPacket);
  53174. }
  53175.  
  53176. //----- (0808AEDC) --------------------------------------------------------
  53177. BOOL __cdecl LoginPlayer::IsDisconnectCountDown(const LoginPlayer *const this)
  53178. {
  53179. BOOL result; // eax
  53180.  
  53181. result = 0;
  53182. if ( this->m_bNeedDisconnect || this->m_DisconnectCountDown.m_bOper )
  53183. result = 1;
  53184. return result;
  53185. }
  53186.  
  53187. //----- (0808AF00) --------------------------------------------------------
  53188. void __cdecl LoginPlayer::TrigerDisconnectCountDown(LoginPlayer *const this, UINT a3)
  53189. {
  53190. UINT v3; // eax
  53191. CMyTimer *v4; // ecx
  53192.  
  53193. if ( LoginPlayer::IsDisconnectCountDown(this) )
  53194. LoginPlayer::ResetDisconnectCountDown((int)this);
  53195. v3 = TimeManager::CurrentTime((int)g_pTimeManager);
  53196. v4 = &this->m_DisconnectCountDown;
  53197. v4->m_bOper = 1;
  53198. this->m_DisconnectCountDown.m_uTickTerm = a3;
  53199. v4->m_uTickOld = v3;
  53200. }
  53201.  
  53202. //----- (0808AF50) --------------------------------------------------------
  53203. BOOL __cdecl LoginPlayer::DisconnectCountDown(LoginPlayer *const this, UINT now)
  53204. {
  53205. BOOL result; // eax
  53206.  
  53207. result = 0;
  53208. if ( !this->m_bNeedDisconnect )
  53209. {
  53210. if ( this->m_DisconnectCountDown.m_bOper
  53211. && this->m_DisconnectCountDown.m_uTickOld + this->m_DisconnectCountDown.m_uTickTerm <= now )
  53212. {
  53213. this->m_bNeedDisconnect = 1;
  53214. this->m_DisconnectCountDown.m_uTickTerm = 0;
  53215. this->m_DisconnectCountDown.m_bOper = 0;
  53216. this->m_DisconnectCountDown.m_uTickOld = 0;
  53217. result = 0;
  53218. }
  53219. else
  53220. {
  53221. result = 1;
  53222. }
  53223. }
  53224. return result;
  53225. }
  53226.  
  53227. //----- (0808AFAC) --------------------------------------------------------
  53228. BOOL __cdecl LoginPlayer::HeartBeat(LoginPlayer *const this, UINT uTime)
  53229. {
  53230. UINT v2; // eax
  53231. BOOL v3; // edx
  53232. INT v5; // eax
  53233. UINT v6; // ecx
  53234. UINT v7; // eax
  53235. int v8; // ecx
  53236. UINT v9; // eax
  53237. UINT v10; // eax
  53238. int v11; // ST0C_4
  53239. Packets::LCStatus Msg; // [esp+0h] [ebp-38h]
  53240.  
  53241. if ( !LoginPlayer::DisconnectCountDown(this, uTime) )
  53242. {
  53243. CacheLog(0, "LoginPlayer::HeartBeat Disconnect because over turn !");
  53244. return 0;
  53245. }
  53246. if ( !this->m_IsDisconnect )
  53247. {
  53248. v2 = this->m_Status;
  53249. this->m_CurrentTime = uTime;
  53250. if ( v2 != 307 )
  53251. goto LABEL_4;
  53252. LABEL_10:
  53253. if ( this->m_LastSendProcessTurn + 5000 >= uTime )
  53254. return Player_AtLogin::HeartBeat(&this->0, uTime);
  53255. v6 = this->m_QueuePos;
  53256. this->m_LastSendProcessTurn = uTime;
  53257. if ( !v6 )
  53258. return Player_AtLogin::HeartBeat(&this->0, uTime);
  53259. Packet::Packet((int)&Msg);
  53260. v7 = this->m_QueuePos;
  53261. Msg._vptr_Packet = (int (**)(...))off_80CF048;
  53262. Msg.TurnNumber = v7;
  53263. Msg.ClientStatus = 0;
  53264. (*((void (__fastcall **)(int, LoginPlayer *const , Packets::LCStatus *))this->_vptr_Player + 3))(v8, this, &Msg);
  53265. (*((void (__cdecl **)(LoginPlayer *const ))this->_vptr_Player + 27))(this);
  53266. LABEL_13:
  53267. Msg._vptr_Packet = (int (**)(...))off_80CF048;
  53268. Packet::~Packet(&Msg);
  53269. return Player_AtLogin::HeartBeat(&this->0, uTime);
  53270. }
  53271. v5 = this->m_LeftTimeToQuit - (uTime - this->m_CurrentTime);
  53272. v3 = 0;
  53273. this->m_LeftTimeToQuit = v5;
  53274. if ( v5 < 0 )
  53275. return v3;
  53276. v2 = this->m_Status;
  53277. this->m_CurrentTime = uTime;
  53278. if ( v2 == 307 )
  53279. goto LABEL_10;
  53280. LABEL_4:
  53281. if ( v2 == 312 )
  53282. {
  53283. if ( this->m_LastSendProcessTurn + 5000 >= uTime )
  53284. return Player_AtLogin::HeartBeat(&this->0, uTime);
  53285. v9 = this->m_QueuePos;
  53286. this->m_LastSendProcessTurn = uTime;
  53287. if ( !v9 )
  53288. return Player_AtLogin::HeartBeat(&this->0, uTime);
  53289. Packet::Packet((int)&Msg);
  53290. v10 = this->m_QueuePos;
  53291. Msg._vptr_Packet = (int (**)(...))off_80CF048;
  53292. Msg.TurnNumber = v10;
  53293. Msg.ClientStatus = 0;
  53294. (*((void (__fastcall **)(int))this->_vptr_Player + 3))(v11);
  53295. (*((void (__cdecl **)(LoginPlayer *const ))this->_vptr_Player + 27))(this);
  53296. goto LABEL_13;
  53297. }
  53298. if ( this->m_KickTime + 300000 >= uTime )
  53299. return Player_AtLogin::HeartBeat(&this->0, uTime);
  53300. CacheLog(0, "ERROR: Player_AtLogin::HeartBeat Didn't recv message for too long time. Kicked!");
  53301. return 0;
  53302. }
  53303. // 80CF048: using guessed type _DWORD (__cdecl *off_80CF048[2])(Packets::LCStatus *this);
  53304.  
  53305. //----- (0808B188) --------------------------------------------------------
  53306. void __cdecl LoginPlayer::SetCPUInformation(LoginPlayer *const this, CHAR *CPUInformation)
  53307. {
  53308. if ( !CPUInformation )
  53309. __assert__("./Player/LoginPlayer.cpp", 0x11Bu, "void LoginPlayer::SetCPUInformation(CHAR*)", "CPUInformation");
  53310. memset(this->m_CPU, 0, 0x80u);
  53311. memcpy(this->m_CPU, CPUInformation, 0x80u);
  53312. this->m_CPU[127] = 0;
  53313. }
  53314.  
  53315. //----- (0808B1EC) --------------------------------------------------------
  53316. CHAR *__cdecl LoginPlayer::GetCPUInformation(LoginPlayer *const this)
  53317. {
  53318. return this->m_CPU;
  53319. }
  53320.  
  53321. //----- (0808B1FC) --------------------------------------------------------
  53322. void __cdecl LoginPlayer::SetVideoInformation(LoginPlayer *const this, CHAR *VideoInformation)
  53323. {
  53324. if ( !VideoInformation )
  53325. __assert__("./Player/LoginPlayer.cpp", 0x128u, "void LoginPlayer::SetVideoInformation(CHAR*)", "VideoInformation");
  53326. memset(this->m_Video, 0, 0x80u);
  53327. memcpy(this->m_Video, VideoInformation, 0x80u);
  53328. this->m_Video[127] = 0;
  53329. }
  53330.  
  53331. //----- (0808B260) --------------------------------------------------------
  53332. CHAR *__cdecl LoginPlayer::GetVideoInformation(LoginPlayer *const this)
  53333. {
  53334. return this->m_Video;
  53335. }
  53336.  
  53337. //----- (0808B270) --------------------------------------------------------
  53338. BOOL __cdecl LoginPlayer::FreeOwn(LoginPlayer *const this)
  53339. {
  53340. (*((void (__stdcall **)(LoginPlayer *const ))this->_vptr_Player + 26))(this);
  53341. PlayerPool::DelPlayer(g_pPlayerPool, this->m_PID);
  53342. return 1;
  53343. }
  53344.  
  53345. //----- (0808B2E4) --------------------------------------------------------
  53346. void __cdecl LoginPlayer::Init(LoginPlayer *const this)
  53347. {
  53348. int v1; // [esp+0h] [ebp-14h]
  53349. int v2; // [esp+4h] [ebp-10h]
  53350.  
  53351. this->m_IsDisconnect = 0;
  53352. (*((void (__stdcall **)(LoginPlayer *const , int, int))this->_vptr_Player + 27))(this, v1, v2);
  53353. MIBAO::InitMiBaoGroupKey(&this->m_MiBaoGroup);
  53354. }
  53355.  
  53356. //----- (0808B35C) --------------------------------------------------------
  53357. void __cdecl LoginPlayer::Disconnect(LoginPlayer *const this)
  53358. {
  53359. this->m_LeftTimeToQuit = g_Config.m_ConfigInfo.m_DisconnectTime;
  53360. this->m_IsDisconnect = 1;
  53361. Player::Disconnect(&this->0);
  53362. }
  53363.  
  53364. //----- (0808B3D0) --------------------------------------------------------
  53365. void __cdecl LoginPlayer::ResetKick(LoginPlayer *const this)
  53366. {
  53367. this->m_KickTime = g_pTimeManager->m_CurrentTime;
  53368. Player_AtLogin::ResetKick(&this->0);
  53369. }
  53370.  
  53371. //----- (0808B440) --------------------------------------------------------
  53372. const CHAR *__cdecl LoginPlayer::GetAccount(LoginPlayer *const this)
  53373. {
  53374. return this->szAccount;
  53375. }
  53376.  
  53377. //----- (0808B44C) --------------------------------------------------------
  53378. void __cdecl LoginPlayer::SetAccount(const CHAR *pAccount, const char *pAccounta)
  53379. {
  53380. strncpy((char *)pAccount + 60, pAccounta, 0x32u);
  53381. *((_BYTE *)pAccount + 110) = 0;
  53382. }
  53383.  
  53384. //----- (0808B470) --------------------------------------------------------
  53385. UINT __cdecl LoginPlayer::GetVersion(int a2)
  53386. {
  53387. return *(_DWORD *)(a2 + 44);
  53388. }
  53389.  
  53390. //----- (0808B47C) --------------------------------------------------------
  53391. void __cdecl LoginPlayer::SetVersion(int a3, int a4)
  53392. {
  53393. *(_DWORD *)(a3 + 44) = a4;
  53394. }
  53395.  
  53396. //----- (0808B48C) --------------------------------------------------------
  53397. UINT __cdecl LoginPlayer::GetQueuePos(int a2)
  53398. {
  53399. return *(_DWORD *)(a2 + 52);
  53400. }
  53401.  
  53402. //----- (0808B498) --------------------------------------------------------
  53403. void __cdecl LoginPlayer::SetQueuePos(int a3, int a4)
  53404. {
  53405. *(_DWORD *)(a3 + 52) = a4;
  53406. }
  53407.  
  53408. //----- (0808B4A8) --------------------------------------------------------
  53409. void __cdecl LoginPlayer::SetCharNumber(int a3, int a4)
  53410. {
  53411. *(_DWORD *)(a3 + 56) = a4;
  53412. }
  53413.  
  53414. //----- (0808B4B8) --------------------------------------------------------
  53415. INT __cdecl LoginPlayer::GetCharNumber(int a2)
  53416. {
  53417. return *(_DWORD *)(a2 + 56);
  53418. }
  53419.  
  53420. //----- (0808B4C4) --------------------------------------------------------
  53421. void __cdecl LoginPlayer::SetCharGUID(UINT uIndex, int a4, UINT uIndexa)
  53422. {
  53423. if ( uIndexa > 4 )
  53424. __assert__(
  53425. "./Player/LoginPlayer.cpp",
  53426. 0x197u,
  53427. "void LoginPlayer::SetCharGUID(GUID_t, UINT)",
  53428. "uIndex<DB_CHAR_NUMBER");
  53429. *(_DWORD *)(uIndex + 4 * uIndexa + 112) = a4;
  53430. }
  53431.  
  53432. //----- (0808B50C) --------------------------------------------------------
  53433. BOOL __cdecl LoginPlayer::IsGUIDOwner(LoginPlayer *const this, GUID_t guid)
  53434. {
  53435. INT v2; // edx
  53436. signed int v3; // eax
  53437.  
  53438. v2 = this->m_CharNumber;
  53439. v3 = 0;
  53440. if ( v2 <= 0 )
  53441. return 0;
  53442. while ( this->m_GUIDList[v3] != guid || guid == -1 )
  53443. {
  53444. if ( v2 <= ++v3 || v3 > 4 )
  53445. return 0;
  53446. }
  53447. return 1;
  53448. }
  53449.  
  53450. //----- (0808B548) --------------------------------------------------------
  53451. void __cdecl LoginPlayer::SetUserKey(int a3, int a4)
  53452. {
  53453. *(_DWORD *)(a3 + 132) = a4;
  53454. }
  53455.  
  53456. //----- (0808B55C) --------------------------------------------------------
  53457. UINT __cdecl LoginPlayer::GetUserKey(int a2)
  53458. {
  53459. return *(_DWORD *)(a2 + 132);
  53460. }
  53461.  
  53462. //----- (0808B56C) --------------------------------------------------------
  53463. void __cdecl LoginPlayer::SetDBOperating(int a3, int a4)
  53464. {
  53465. *(_DWORD *)(a3 + 136) = a4;
  53466. }
  53467.  
  53468. //----- (0808B580) --------------------------------------------------------
  53469. BOOL __cdecl LoginPlayer::GetDBOperating(int a2)
  53470. {
  53471. return *(_DWORD *)(a2 + 136);
  53472. }
  53473.  
  53474. //----- (0808B590) --------------------------------------------------------
  53475. void __cdecl LoginPlayer::SetReadyKickCount(int a3, int a4)
  53476. {
  53477. *(_DWORD *)(a3 + 140) = a4;
  53478. }
  53479.  
  53480. //----- (0808B5A4) --------------------------------------------------------
  53481. INT __cdecl LoginPlayer::GetReadyKickCount(int a2)
  53482. {
  53483. return *(_DWORD *)(a2 + 140);
  53484. }
  53485.  
  53486. //----- (0808B5B4) --------------------------------------------------------
  53487. UINT __cdecl LoginPlayer::GetLastSendTurnTime(int a2)
  53488. {
  53489. return *(_DWORD *)(a2 + 48);
  53490. }
  53491.  
  53492. //----- (0808B5C0) --------------------------------------------------------
  53493. void __cdecl LoginPlayer::SetLastSendTurnTime(int a3, int a4)
  53494. {
  53495. *(_DWORD *)(a3 + 48) = a4;
  53496. }
  53497.  
  53498. //----- (0808B5D0) --------------------------------------------------------
  53499. void __cdecl LoginPlayer::SetWrongPWCount(int a3, int a4)
  53500. {
  53501. *(_DWORD *)(a3 + 144) = a4;
  53502. }
  53503.  
  53504. //----- (0808B5E4) --------------------------------------------------------
  53505. INT __cdecl LoginPlayer::GetWrongPWCount(int a2)
  53506. {
  53507. return *(_DWORD *)(a2 + 144);
  53508. }
  53509.  
  53510. //----- (0808B5F4) --------------------------------------------------------
  53511. int __cdecl LoginPlayer::GetChooseSceneID(int a2)
  53512. {
  53513. return *(signed __int16 *)(a2 + 148);
  53514. }
  53515.  
  53516. //----- (0808B604) --------------------------------------------------------
  53517. void __cdecl LoginPlayer::SetChooseSceneID(int sid, __int16 sida)
  53518. {
  53519. *(_WORD *)(sid + 148) = sida;
  53520. }
  53521.  
  53522. //----- (0808B618) --------------------------------------------------------
  53523. WORLD_POS *__userpurge LoginPlayer::GetWorldPos@<eax>(WORLD_POS *retstr, const LoginPlayer *const this)
  53524. {
  53525. WORLD_POS *result; // eax
  53526. FLOAT v3; // ecx
  53527.  
  53528. result = retstr;
  53529. v3 = this->m_WorldPos.m_fZ;
  53530. retstr->m_fX = this->m_WorldPos.m_fX;
  53531. retstr->m_fZ = v3;
  53532. return result;
  53533. }
  53534.  
  53535. //----- (0808B638) --------------------------------------------------------
  53536. void __fastcall LoginPlayer::SetWorldPos(LoginPlayer *const this, WORLD_POS *const pos)
  53537. {
  53538. int v2; // [esp+8h] [ebp+8h]
  53539. _DWORD *v3; // [esp+Ch] [ebp+Ch]
  53540.  
  53541. *(_DWORD *)(v2 + 152) = *v3;
  53542. *(_DWORD *)(v2 + 156) = v3[1];
  53543. }
  53544.  
  53545. //----- (0808B654) --------------------------------------------------------
  53546. void __cdecl LoginPlayer::SetAccFatigueSign(int cSign, CHAR cSigna)
  53547. {
  53548. *(_DWORD *)(cSign + 480) = cSigna == 89;
  53549. }
  53550.  
  53551. //----- (0808B66C) --------------------------------------------------------
  53552. void __cdecl LoginPlayer::SetAccOnlineTime(int a3, int a4)
  53553. {
  53554. *(_DWORD *)(a3 + 484) = a4;
  53555. }
  53556.  
  53557. //----- (0808B680) --------------------------------------------------------
  53558. BOOL __cdecl LoginPlayer::GetPhoneBind(int a2)
  53559. {
  53560. return (*(_BYTE *)(a2 + 532) & 8) != 0;
  53561. }
  53562.  
  53563. //----- (0808B698) --------------------------------------------------------
  53564. BOOL __cdecl LoginPlayer::GetIPBind(int a2)
  53565. {
  53566. return (*(_BYTE *)(a2 + 532) & 2) != 0;
  53567. }
  53568.  
  53569. //----- (0808B6B0) --------------------------------------------------------
  53570. BOOL __cdecl LoginPlayer::GetMiBaoBind(int a2)
  53571. {
  53572. return (*(_BYTE *)(a2 + 532) & 4) != 0;
  53573. }
  53574.  
  53575. //----- (0808B6C8) --------------------------------------------------------
  53576. BOOL __cdecl LoginPlayer::GetMacBind(int a2)
  53577. {
  53578. return (*(_BYTE *)(a2 + 532) & 0x10) != 0;
  53579. }
  53580.  
  53581. //----- (0808B6E0) --------------------------------------------------------
  53582. BOOL __cdecl LoginPlayer::GetRealNameBind(int a2)
  53583. {
  53584. return (*(_BYTE *)(a2 + 532) & 0x20) != 0;
  53585. }
  53586.  
  53587. //----- (0808B6F8) --------------------------------------------------------
  53588. BOOL __cdecl LoginPlayer::GetInputNameBind(int a2)
  53589. {
  53590. return (*(_BYTE *)(a2 + 532) & 0x40) != 0;
  53591. }
  53592.  
  53593. //----- (0808B710) --------------------------------------------------------
  53594. BOOL __cdecl LoginPlayer::GetPhoneMiBaoBind(int a2)
  53595. {
  53596. return *(_BYTE *)(a2 + 532) < 0;
  53597. }
  53598.  
  53599. //----- (0808B728) --------------------------------------------------------
  53600. void __cdecl LoginPlayer::SetPhoneBind(LoginPlayer *const this, CHAR cSign)
  53601. {
  53602. if ( cSign == 89 )
  53603. this->m_AccountSafeSign.m_Sign |= 8u;
  53604. else
  53605. this->m_AccountSafeSign.m_Sign &= 0xFFFFFFF7;
  53606. }
  53607.  
  53608. //----- (0808B74C) --------------------------------------------------------
  53609. void __cdecl LoginPlayer::SetIPBind(LoginPlayer *const this, CHAR cSign)
  53610. {
  53611. if ( cSign == 89 )
  53612. this->m_AccountSafeSign.m_Sign |= 2u;
  53613. else
  53614. this->m_AccountSafeSign.m_Sign &= 0xFFFFFFFD;
  53615. }
  53616.  
  53617. //----- (0808B770) --------------------------------------------------------
  53618. void __cdecl LoginPlayer::SetMiBaoBind(LoginPlayer *const this, CHAR cSign)
  53619. {
  53620. if ( cSign == 89 )
  53621. this->m_AccountSafeSign.m_Sign |= 4u;
  53622. else
  53623. this->m_AccountSafeSign.m_Sign &= 0xFFFFFFFB;
  53624. }
  53625.  
  53626. //----- (0808B794) --------------------------------------------------------
  53627. void __cdecl LoginPlayer::SetMacBind(LoginPlayer *const this, CHAR cSign)
  53628. {
  53629. if ( cSign == 89 )
  53630. this->m_AccountSafeSign.m_Sign |= 0x10u;
  53631. else
  53632. this->m_AccountSafeSign.m_Sign &= 0xFFFFFFEF;
  53633. }
  53634.  
  53635. //----- (0808B7B8) --------------------------------------------------------
  53636. void __cdecl LoginPlayer::SetRealNameBind(LoginPlayer *const this, CHAR cSign)
  53637. {
  53638. if ( cSign == 89 )
  53639. this->m_AccountSafeSign.m_Sign |= 0x20u;
  53640. else
  53641. this->m_AccountSafeSign.m_Sign &= 0xFFFFFFDF;
  53642. }
  53643.  
  53644. //----- (0808B7DC) --------------------------------------------------------
  53645. void __cdecl LoginPlayer::SetInputNameBind(LoginPlayer *const this, CHAR cSign)
  53646. {
  53647. if ( cSign == 89 )
  53648. this->m_AccountSafeSign.m_Sign |= 0x40u;
  53649. else
  53650. this->m_AccountSafeSign.m_Sign &= 0xFFFFFFBF;
  53651. }
  53652.  
  53653. //----- (0808B800) --------------------------------------------------------
  53654. void __cdecl LoginPlayer::SetPhoneMiBaoBind(LoginPlayer *const this, CHAR cSign)
  53655. {
  53656. if ( cSign == 89 )
  53657. this->m_AccountSafeSign.m_Sign |= 0x80u;
  53658. else
  53659. this->m_AccountSafeSign.m_Sign &= 0xFFFFFF7F;
  53660. }
  53661.  
  53662. //----- (0808B824) --------------------------------------------------------
  53663. CHAR *__cdecl ProxyTool_GetIPByNetProvider(const LoginPlayer *pPlayer, ID_t ServerID)
  53664. {
  53665. _SERVER_DATA *v2; // esi
  53666. signed int v3; // eax
  53667. INT v5; // ebx
  53668. int v6; // eax
  53669. CHAR szLog[1024]; // [esp+0h] [ebp-418h]
  53670.  
  53671. if ( !pPlayer )
  53672. __assert__(
  53673. "./Player/LoginPlayer.cpp",
  53674. 0x27Au,
  53675. "CHAR* ProxyTool_GetIPByNetProvider(const LoginPlayer*, ID_t)",
  53676. "pPlayer");
  53677. v2 = ServerManager::FindServerInfo(*(ServerManager *const *)&g_pServerManager, ServerID);
  53678. if ( !v2 )
  53679. {
  53680. snprintf(szLog, 0x400u, "[ProxyTool_GetIPByNetProvider] Error: Can't found the specific server(%d).", ServerID);
  53681. szLog[1023] = 0;
  53682. __assertex__(
  53683. "./Player/LoginPlayer.cpp",
  53684. 0x281u,
  53685. "CHAR* ProxyTool_GetIPByNetProvider(const LoginPlayer*, ID_t)",
  53686. "pData",
  53687. szLog);
  53688. }
  53689. v3 = pPlayer->m_ProxyType;
  53690. if ( v3 == 2 )
  53691. {
  53692. v5 = 0;
  53693. }
  53694. else if ( v3 > 2 )
  53695. {
  53696. if ( v3 != 3 )
  53697. return v2->m_IP0;
  53698. v5 = 2;
  53699. }
  53700. else
  53701. {
  53702. if ( v3 != 1 )
  53703. return v2->m_IP0;
  53704. v5 = 1;
  53705. }
  53706. if ( RangeCheckForIndex_Assert(v5, 0, 2, "ProxyTool_GetIPByNetProvider") != 1 )
  53707. return v2->m_IP0;
  53708. v6 = (int)v2 + 36 * v5;
  53709. if ( *(_DWORD *)(v6 + 96) != 1 )
  53710. return v2->m_IP0;
  53711. return (CHAR *)(v6 + 66);
  53712. }
  53713.  
  53714. //----- (0808B978) --------------------------------------------------------
  53715. UINT __cdecl ProxyTool_GetPortByNetProvider(const LoginPlayer *pPlayer, ID_t ServerID)
  53716. {
  53717. _SERVER_DATA *v2; // esi
  53718. signed int v3; // eax
  53719. INT v5; // ebx
  53720. CHAR szLog[1024]; // [esp+0h] [ebp-418h]
  53721.  
  53722. if ( !pPlayer )
  53723. __assert__(
  53724. "./Player/LoginPlayer.cpp",
  53725. 0x2B1u,
  53726. "UINT ProxyTool_GetPortByNetProvider(const LoginPlayer*, ID_t)",
  53727. "pPlayer");
  53728. v2 = ServerManager::FindServerInfo(*(ServerManager *const *)&g_pServerManager, ServerID);
  53729. if ( !v2 )
  53730. {
  53731. snprintf(szLog, 0x400u, "[ProxyTool_GetPortByNetProvider] Error: Can't found the specific server(%d).", ServerID);
  53732. szLog[1023] = 0;
  53733. __assertex__(
  53734. "./Player/LoginPlayer.cpp",
  53735. 0x2B8u,
  53736. "UINT ProxyTool_GetPortByNetProvider(const LoginPlayer*, ID_t)",
  53737. "pData",
  53738. szLog);
  53739. }
  53740. v3 = pPlayer->m_ProxyType;
  53741. if ( v3 == 2 )
  53742. {
  53743. v5 = 0;
  53744. }
  53745. else if ( v3 > 2 )
  53746. {
  53747. if ( v3 != 3 )
  53748. return v2->m_Port0;
  53749. v5 = 2;
  53750. }
  53751. else
  53752. {
  53753. if ( v3 != 1 )
  53754. return v2->m_Port0;
  53755. v5 = 1;
  53756. }
  53757. if ( RangeCheckForIndex_Assert(v5, 0, 2, "ProxyTool_GetPortByNetProvider") != 1 || v2->m_aProxy[v5].m_bEnabled != 1 )
  53758. return v2->m_Port0;
  53759. return v2->m_aProxy[v5].m_nPort;
  53760. }
  53761.  
  53762. //----- (0808BACC) --------------------------------------------------------
  53763. void __cdecl LoginPlayer::SendCreateCode(LoginPlayer *const this)
  53764. {
  53765. int v1; // eax
  53766. Packets::LCRetCreateCode msg; // [esp+0h] [ebp-4D8h]
  53767. CAPTCHA::CAPTCHA_DATA data; // [esp+250h] [ebp-288h]
  53768.  
  53769. if ( g_pGenerator )
  53770. {
  53771. CAPTCHA::Generator::generatorImage(g_pGenerator, &data, 1, 1, 0);
  53772. if ( data.nCorrectAnswer == 1 )
  53773. {
  53774. *(_DWORD *)this->m_CreateCode.code = *(_DWORD *)data.wAnswer1;
  53775. v1 = *(_DWORD *)&data.wAnswer1[2];
  53776. }
  53777. else if ( data.nCorrectAnswer <= 1 )
  53778. {
  53779. if ( data.nCorrectAnswer )
  53780. LABEL_7:
  53781. __assert__("./Player/LoginPlayer.cpp", 0x2FDu, "void LoginPlayer::SendCreateCode()", "FALSE");
  53782. *(_DWORD *)this->m_CreateCode.code = *(_DWORD *)data.wAnswer0;
  53783. v1 = *(_DWORD *)&data.wAnswer0[2];
  53784. }
  53785. else if ( data.nCorrectAnswer == 2 )
  53786. {
  53787. *(_DWORD *)this->m_CreateCode.code = *(_DWORD *)data.wAnswer2;
  53788. v1 = *(_DWORD *)&data.wAnswer2[2];
  53789. }
  53790. else
  53791. {
  53792. if ( data.nCorrectAnswer != 3 )
  53793. goto LABEL_7;
  53794. *(_DWORD *)this->m_CreateCode.code = *(_DWORD *)data.wAnswer3;
  53795. v1 = *(_DWORD *)&data.wAnswer3[2];
  53796. }
  53797. *(_DWORD *)&this->m_CreateCode.code[2] = v1;
  53798. Packet::Packet((int)&msg);
  53799. msg._vptr_Packet = (int (**)(...))off_80D2128;
  53800. msg.m_RetType = 2;
  53801. memset(msg.m_imageBuf, 0, 0x240u);
  53802. msg.m_RetType = 2;
  53803. memcpy(msg.m_imageBuf, data.imageBuf, 0x240u);
  53804. (*((void (__cdecl **)(LoginPlayer *const , Packets::LCRetCreateCode *))this->_vptr_Player + 3))(this, &msg);
  53805. this->m_bAlreadyCheckCreateCode = 0;
  53806. msg._vptr_Packet = (int (**)(...))off_80D2128;
  53807. Packet::~Packet(&msg);
  53808. }
  53809. }
  53810. // 80D2128: using guessed type _DWORD (__cdecl *off_80D2128[2])(Packets::LCRetCreateCode *this);
  53811.  
  53812. //----- (0808BC98) --------------------------------------------------------
  53813. void __cdecl LoginPlayer::SendLoginCode(LoginPlayer *const this)
  53814. {
  53815. int v1; // ecx
  53816. int v2; // ST14_4
  53817. int v3; // eax
  53818. Packets::LCRetLoginCode msg; // [esp+0h] [ebp-4D8h]
  53819. CAPTCHA::CAPTCHA_DATA data; // [esp+250h] [ebp-288h]
  53820.  
  53821. if ( g_pGenerator )
  53822. {
  53823. CAPTCHA::Generator::generatorImage(g_pGenerator, &data, 1, 1, 0);
  53824. if ( data.nCorrectAnswer == 1 )
  53825. {
  53826. *(_DWORD *)this->m_LoginCode.code = *(_DWORD *)data.wAnswer1;
  53827. v3 = *(_DWORD *)&data.wAnswer1[2];
  53828. }
  53829. else if ( data.nCorrectAnswer <= 1 )
  53830. {
  53831. if ( data.nCorrectAnswer )
  53832. LABEL_7:
  53833. __assert__("./Player/LoginPlayer.cpp", 0x322u, "void LoginPlayer::SendLoginCode()", "FALSE");
  53834. *(_DWORD *)this->m_LoginCode.code = *(_DWORD *)data.wAnswer0;
  53835. v3 = *(_DWORD *)&data.wAnswer0[2];
  53836. }
  53837. else if ( data.nCorrectAnswer == 2 )
  53838. {
  53839. *(_DWORD *)this->m_LoginCode.code = *(_DWORD *)data.wAnswer2;
  53840. v3 = *(_DWORD *)&data.wAnswer2[2];
  53841. }
  53842. else
  53843. {
  53844. if ( data.nCorrectAnswer != 3 )
  53845. goto LABEL_7;
  53846. *(_DWORD *)this->m_LoginCode.code = *(_DWORD *)data.wAnswer3;
  53847. v3 = *(_DWORD *)&data.wAnswer3[2];
  53848. }
  53849. *(_DWORD *)&this->m_LoginCode.code[2] = v3;
  53850. Packet::Packet((int)&msg);
  53851. msg._vptr_Packet = (int (**)(...))off_80CEEE8;
  53852. msg.m_RetType = 2;
  53853. memset(msg.m_imageBuf, 0, 0x240u);
  53854. msg.m_RetType = 2;
  53855. memcpy(msg.m_imageBuf, data.imageBuf, 0x240u);
  53856. (*((void (__fastcall **)(int, int, LoginPlayer *const , Packets::LCRetLoginCode *))this->_vptr_Player + 3))(
  53857. v1,
  53858. v2,
  53859. this,
  53860. &msg);
  53861. this->m_bAlreadyCheckLoginCode = 0;
  53862. msg._vptr_Packet = (int (**)(...))off_80CEEE8;
  53863. Packet::~Packet(&msg);
  53864. }
  53865. }
  53866. // 80CEEE8: using guessed type _DWORD (__cdecl *off_80CEEE8[2])(Packets::LCRetLoginCode *this);
  53867.  
  53868. //----- (0808BE64) --------------------------------------------------------
  53869. int __cdecl LoginPlayer::GetIsPilferedAccount(int a2)
  53870. {
  53871. return *(unsigned __int16 *)(a2 + 536);
  53872. }
  53873.  
  53874. //----- (0808BE74) --------------------------------------------------------
  53875. void __cdecl LoginPlayer::SetIsPilferedAccount(int isPilfered, USHORT isPilfereda)
  53876. {
  53877. *(_DWORD *)(isPilfered + 536) = isPilfereda;
  53878. }
  53879.  
  53880. //----- (0808BE88) --------------------------------------------------------
  53881. void __cdecl _tcf_0_126(void *a1)
  53882. {
  53883. std::ios_base::Init::~Init(&std::__ioinit);
  53884. }
  53885.  
  53886. //----- (0808BE98) --------------------------------------------------------
  53887. void `global constructor keyed to'LoginPlayer::LoginPlayer()
  53888. {
  53889. std::ios_base::Init::Init(&std::__ioinit);
  53890. __cxa_atexit(_tcf_0_126, 0, &_dso_handle);
  53891. }
  53892. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  53893.  
  53894. //----- (0808BEC4) --------------------------------------------------------
  53895. BOOL __cdecl LoginPlayer::IsBillingPlayer(LoginPlayer *const this)
  53896. {
  53897. return 0;
  53898. }
  53899.  
  53900. //----- (0808BECC) --------------------------------------------------------
  53901. BOOL __cdecl LoginPlayer::IsLoginPlayer(LoginPlayer *const this)
  53902. {
  53903. return 1;
  53904. }
  53905.  
  53906. //----- (0808BED8) --------------------------------------------------------
  53907. BOOL __cdecl LoginPlayer::IsServerPlayer(LoginPlayer *const this)
  53908. {
  53909. return 0;
  53910. }
  53911.  
  53912. //----- (0808BEE0) --------------------------------------------------------
  53913. void __cdecl LoginPlayerManager::LoginPlayerManager(LoginPlayerManager *const this)
  53914. {
  53915. ASYNC_PACKET *v1; // eax
  53916. ASYNC_PACKET *v2; // edx
  53917. signed int v3; // ecx
  53918.  
  53919. PlayerManager::PlayerManager(&this->0);
  53920. this->_vptr_PlayerManager = (int (**)(...))&off_80DB268;
  53921. pthread_mutex_init(&this->m_Lock.m_Mutex, 0);
  53922. memset(&this->m_ReadFDs[1], 0, sizeof(this->m_ReadFDs[1]));
  53923. memset(&this->m_WriteFDs[1], 0, sizeof(this->m_WriteFDs[1]));
  53924. memset(&this->m_ExceptFDs[1], 0, sizeof(this->m_ExceptFDs[1]));
  53925. memset(this->m_ReadFDs, 0, 0x200u);
  53926. memset(this->m_WriteFDs, 0, 0x200u);
  53927. memset(this->m_ExceptFDs, 0, 0x200u);
  53928. this->m_Timeout[1].tv_sec = 0;
  53929. this->m_Timeout[1].tv_usec = 100;
  53930. this->m_Timeout[0].tv_sec = 0;
  53931. this->m_Timeout[0].tv_usec = 0;
  53932. this->m_MaxFD = -1;
  53933. this->m_MinFD = -1;
  53934. this->m_nFDSize = 0;
  53935. v1 = (ASYNC_PACKET *)(operator new[](0x3004u) + 4);
  53936. v1[-1].m_Flag = 1024;
  53937. v2 = v1;
  53938. v3 = 1023;
  53939. do
  53940. {
  53941. --v3;
  53942. v2->m_pPacket = 0;
  53943. v2->m_PlayerID = -1;
  53944. v2->m_Flag = 0;
  53945. ++v2;
  53946. }
  53947. while ( v3 != -1 );
  53948. this->m_PacketQue = v1;
  53949. if ( !v1 )
  53950. __assert__("./Player/LoginPlayerManager.cpp", 0x2Bu, "LoginPlayerManager::LoginPlayerManager()", "m_PacketQue");
  53951. this->m_QueSize = 1024;
  53952. this->m_Head = 0;
  53953. this->m_Tail = 0;
  53954. }
  53955. // 80DB268: using guessed type _DWORD (__cdecl *off_80DB268)(PlayerManager *this, UINT uTime);
  53956.  
  53957. //----- (0808C080) --------------------------------------------------------
  53958. void __cdecl LoginPlayerManager::LoginPlayerManager(LoginPlayerManager *const this)
  53959. {
  53960. ASYNC_PACKET *v1; // eax
  53961. ASYNC_PACKET *v2; // edx
  53962. signed int v3; // ecx
  53963.  
  53964. PlayerManager::PlayerManager(&this->0);
  53965. this->_vptr_PlayerManager = (int (**)(...))&off_80DB268;
  53966. pthread_mutex_init(&this->m_Lock.m_Mutex, 0);
  53967. memset(&this->m_ReadFDs[1], 0, sizeof(this->m_ReadFDs[1]));
  53968. memset(&this->m_WriteFDs[1], 0, sizeof(this->m_WriteFDs[1]));
  53969. memset(&this->m_ExceptFDs[1], 0, sizeof(this->m_ExceptFDs[1]));
  53970. memset(this->m_ReadFDs, 0, 0x200u);
  53971. memset(this->m_WriteFDs, 0, 0x200u);
  53972. memset(this->m_ExceptFDs, 0, 0x200u);
  53973. this->m_Timeout[1].tv_sec = 0;
  53974. this->m_Timeout[1].tv_usec = 100;
  53975. this->m_Timeout[0].tv_sec = 0;
  53976. this->m_Timeout[0].tv_usec = 0;
  53977. this->m_MaxFD = -1;
  53978. this->m_MinFD = -1;
  53979. this->m_nFDSize = 0;
  53980. v1 = (ASYNC_PACKET *)(operator new[](0x3004u) + 4);
  53981. v1[-1].m_Flag = 1024;
  53982. v2 = v1;
  53983. v3 = 1023;
  53984. do
  53985. {
  53986. --v3;
  53987. v2->m_pPacket = 0;
  53988. v2->m_PlayerID = -1;
  53989. v2->m_Flag = 0;
  53990. ++v2;
  53991. }
  53992. while ( v3 != -1 );
  53993. this->m_PacketQue = v1;
  53994. if ( !v1 )
  53995. __assert__("./Player/LoginPlayerManager.cpp", 0x2Bu, "LoginPlayerManager::LoginPlayerManager()", "m_PacketQue");
  53996. this->m_QueSize = 1024;
  53997. this->m_Head = 0;
  53998. this->m_Tail = 0;
  53999. }
  54000. // 80DB268: using guessed type _DWORD (__cdecl *off_80DB268)(PlayerManager *this, UINT uTime);
  54001.  
  54002. //----- (0808C220) --------------------------------------------------------
  54003. void __cdecl LoginPlayerManager::~LoginPlayerManager(LoginPlayerManager *const this)
  54004. {
  54005. ServerSocket *v1; // ebx
  54006. ASYNC_PACKET *v2; // ecx
  54007. ASYNC_PACKET *i; // ebx
  54008.  
  54009. v1 = this->m_pServerSocket;
  54010. this->_vptr_PlayerManager = (int (**)(...))&off_80DB268;
  54011. if ( v1 )
  54012. {
  54013. ServerSocket::~ServerSocket(v1);
  54014. operator delete((IPRegionTable *const )v1);
  54015. this->m_pServerSocket = 0;
  54016. }
  54017. v2 = this->m_PacketQue;
  54018. if ( v2 )
  54019. {
  54020. for ( i = &v2[v2[-1].m_Flag]; v2 != i; i->m_Flag = 0 )
  54021. {
  54022. --i;
  54023. if ( i->m_pPacket )
  54024. {
  54025. (*((void (__cdecl **)(Packet *))i->m_pPacket->_vptr_Packet + 1))(i->m_pPacket);
  54026. v2 = this->m_PacketQue;
  54027. i->m_pPacket = 0;
  54028. }
  54029. i->m_PlayerID = -1;
  54030. }
  54031. operator delete[](&v2[-1].m_Flag);
  54032. this->m_PacketQue = 0;
  54033. }
  54034. pthread_mutex_destroy(&this->m_Lock.m_Mutex);
  54035. PlayerManager::~PlayerManager(&this->0);
  54036. }
  54037. // 80DB268: using guessed type _DWORD (__cdecl *off_80DB268)(PlayerManager *this, UINT uTime);
  54038.  
  54039. //----- (0808C33D) --------------------------------------------------------
  54040. void __usercall __noreturn sub_808C33D(int a1@<esi>)
  54041. {
  54042. pthread_mutex_destroy((pthread_mutex_t *)(a1 + 6028));
  54043. PlayerManager::~PlayerManager((PlayerManager *const )a1);
  54044. _Unwind_Resume();
  54045. }
  54046.  
  54047. //----- (0808C368) --------------------------------------------------------
  54048. void __cdecl LoginPlayerManager::~LoginPlayerManager(LoginPlayerManager *const this)
  54049. {
  54050. ServerSocket *v1; // ebx
  54051. ASYNC_PACKET *v2; // ecx
  54052. ASYNC_PACKET *i; // ebx
  54053.  
  54054. v1 = this->m_pServerSocket;
  54055. this->_vptr_PlayerManager = (int (**)(...))&off_80DB268;
  54056. if ( v1 )
  54057. {
  54058. ServerSocket::~ServerSocket(v1);
  54059. operator delete((IPRegionTable *const )v1);
  54060. this->m_pServerSocket = 0;
  54061. }
  54062. v2 = this->m_PacketQue;
  54063. if ( v2 )
  54064. {
  54065. for ( i = &v2[v2[-1].m_Flag]; v2 != i; i->m_Flag = 0 )
  54066. {
  54067. --i;
  54068. if ( i->m_pPacket )
  54069. {
  54070. (*((void (__cdecl **)(Packet *))i->m_pPacket->_vptr_Packet + 1))(i->m_pPacket);
  54071. v2 = this->m_PacketQue;
  54072. i->m_pPacket = 0;
  54073. }
  54074. i->m_PlayerID = -1;
  54075. }
  54076. operator delete[](&v2[-1].m_Flag);
  54077. this->m_PacketQue = 0;
  54078. }
  54079. pthread_mutex_destroy(&this->m_Lock.m_Mutex);
  54080. PlayerManager::~PlayerManager(&this->0);
  54081. }
  54082. // 80DB268: using guessed type _DWORD (__cdecl *off_80DB268)(PlayerManager *this, UINT uTime);
  54083.  
  54084. //----- (0808C485) --------------------------------------------------------
  54085. void __usercall __noreturn sub_808C485(int a1@<esi>)
  54086. {
  54087. pthread_mutex_destroy((pthread_mutex_t *)(a1 + 6028));
  54088. PlayerManager::~PlayerManager((PlayerManager *const )a1);
  54089. _Unwind_Resume();
  54090. }
  54091.  
  54092. //----- (0808C4B0) --------------------------------------------------------
  54093. #error "808C5D0: positive sp value has been found (funcsize=72)"
  54094.  
  54095. //----- (0808C624) --------------------------------------------------------
  54096. #error "808C6F6: call analysis failed (funcsize=107)"
  54097.  
  54098. //----- (0808C7D4) --------------------------------------------------------
  54099. BOOL __cdecl LoginPlayerManager::AddPlayer(LoginPlayerManager *const this, Player *pPlayer)
  54100. {
  54101. unsigned int v2; // esi
  54102. SOCKET v3; // eax
  54103. SOCKET v4; // eax
  54104. int v5; // eax
  54105. BOOL result; // eax
  54106. UINT v7; // [esp-Ch] [ebp-24h]
  54107.  
  54108. if ( this->m_nFDSize > 1455 )
  54109. {
  54110. v7 = 509;
  54111. goto LABEL_3;
  54112. }
  54113. v2 = Socket::getSOCKET((int)pPlayer->m_pSocket);
  54114. if ( v2 == -1 )
  54115. __assert__(
  54116. "./Player/LoginPlayerManager.cpp",
  54117. 0x206u,
  54118. "BOOL LoginPlayerManager::AddPlayer(Player*)",
  54119. "fd != INVALID_SOCKET");
  54120. v3 = this->m_MinFD;
  54121. if ( v3 > (signed int)v2 )
  54122. v3 = v2;
  54123. this->m_MinFD = v3;
  54124. v4 = this->m_MaxFD;
  54125. if ( v4 < (signed int)v2 )
  54126. v4 = v2;
  54127. this->m_MaxFD = v4;
  54128. if ( (unsigned int)v4 > 0xFFF )
  54129. __assert__(
  54130. "./Player/LoginPlayerManager.cpp",
  54131. 0x20Au,
  54132. "BOOL LoginPlayerManager::AddPlayer(Player*)",
  54133. "m_MaxFD<FD_SETSIZE && m_MaxFD>=0");
  54134. if ( !PlayerManager::AddPlayer(&this->0, (Player_AtLogin *)pPlayer) )
  54135. {
  54136. v7 = 527;
  54137. LABEL_3:
  54138. __assert__("./Player/LoginPlayerManager.cpp", v7, "BOOL LoginPlayerManager::AddPlayer(Player*)", "FALSE");
  54139. }
  54140. v5 = v2 & 0x1F;
  54141. _bittestandset((signed __int32 *)this->m_ReadFDs + (v2 >> 5), v5);
  54142. _bittestandset((signed __int32 *)this->m_WriteFDs + (v2 >> 5), v5);
  54143. _bittestandset((signed __int32 *)this->m_ExceptFDs + (v2 >> 5), v5);
  54144. result = 1;
  54145. ++this->m_nFDSize;
  54146. return result;
  54147. }
  54148.  
  54149. //----- (0808C94C) --------------------------------------------------------
  54150. BOOL __cdecl LoginPlayerManager::AcceptNewConnection(LoginPlayerManager *const this)
  54151. {
  54152. int *v1; // esi
  54153. BOOL result; // eax
  54154. int v3; // ebx
  54155. SOCKET v4; // eax
  54156. int v5; // ebx
  54157. SOCKET v6; // eax
  54158.  
  54159. v1 = (int *)PlayerPool::NewPlayer(g_pPlayerPool);
  54160. result = 0;
  54161. if ( v1 )
  54162. {
  54163. (*(void (__cdecl **)(int *))(*v1 + 104))(v1);
  54164. if ( ServerSocket::accept(this->m_pServerSocket, (Socket *)v1[1]) )
  54165. {
  54166. if ( Socket::getSOCKET(v1[1]) == -1 )
  54167. __assert__("./Player/LoginPlayerManager.cpp", 0x1AAu, "BOOL LoginPlayerManager::AcceptNewConnection()", "FALSE");
  54168. if ( !Socket::setNonBlocking(v1[1], 1) )
  54169. __assert__("./Player/LoginPlayerManager.cpp", 0x1B2u, "BOOL LoginPlayerManager::AcceptNewConnection()", "FALSE");
  54170. if ( Socket::getSockError((const Socket *const )v1[1]) )
  54171. __assert__("./Player/LoginPlayerManager.cpp", 0x1B9u, "BOOL LoginPlayerManager::AcceptNewConnection()", "FALSE");
  54172. if ( !Socket::setLinger(v1[1], 0) )
  54173. __assert__("./Player/LoginPlayerManager.cpp", 0x1C1u, "BOOL LoginPlayerManager::AcceptNewConnection()", "FALSE");
  54174. LoginPlayer::Init((LoginPlayer *const )v1);
  54175. v1[9] = 301;
  54176. v1[108] = TimeManager::CurrentTime((int)g_pTimeManager);
  54177. if ( !LoginPlayerManager::AddPlayer(this, (Player *)v1) )
  54178. __assert__("./Player/LoginPlayerManager.cpp", 0x1D2u, "BOOL LoginPlayerManager::AcceptNewConnection()", "FALSE");
  54179. v5 = v1[1] + 24;
  54180. v6 = Socket::getSOCKET(v1[1]);
  54181. CacheLog(0, "AcceptNewConnection(SOCKET=%d, IP=%s)...OK", v6, v5);
  54182. result = 1;
  54183. }
  54184. else
  54185. {
  54186. v3 = v1[1] + 24;
  54187. v4 = Socket::getSOCKET(v1[1]);
  54188. CacheLog(0, "AcceptNewConnection(SOCKET=%d,IP=%s,Step=%d)...Fails", v4, v3, 15);
  54189. (*(void (__cdecl **)(int *))(*v1 + 104))(v1);
  54190. PlayerPool::DelPlayer(g_pPlayerPool, *((_WORD *)v1 + 12));
  54191. result = 0;
  54192. }
  54193. }
  54194. return result;
  54195. }
  54196. // 8049B18: using guessed type int __stdcall __cxa_end_catch(_DWORD);
  54197.  
  54198. //----- (0808CBB0) --------------------------------------------------------
  54199. BOOL __cdecl LoginPlayerManager::DelPlayer(LoginPlayerManager *const this, PlayerID_t pid)
  54200. {
  54201. SOCKET v2; // eax
  54202. unsigned int v3; // ebx
  54203. SOCKET v4; // edx
  54204. SOCKET v5; // eax
  54205. int v6; // edx
  54206. unsigned int v7; // ecx
  54207. INT v8; // eax
  54208. LoginPlayer *v10; // ebx
  54209. SOCKET v11; // eax
  54210. PlayerID_t v12; // ax
  54211. LoginPlayer *v13; // eax
  54212. SOCKET v14; // eax
  54213. SOCKET v15; // eax
  54214. PlayerID_t v16; // ax
  54215. LoginPlayer *v17; // eax
  54216. SOCKET v18; // eax
  54217. SOCKET v19; // eax
  54218. UINT i_0; // [esp+4h] [ebp-24h]
  54219. UINT nPlayerCount_0; // [esp+8h] [ebp-20h]
  54220. SOCKET s_0; // [esp+Ch] [ebp-1Ch]
  54221. UINT i; // [esp+10h] [ebp-18h]
  54222. UINT nPlayerCount; // [esp+14h] [ebp-14h]
  54223. SOCKET s; // [esp+18h] [ebp-10h]
  54224.  
  54225. if ( pid == -1 )
  54226. __assert__(
  54227. "./Player/LoginPlayerManager.cpp",
  54228. 0x224u,
  54229. "BOOL LoginPlayerManager::DelPlayer(PlayerID_t)",
  54230. "pid!=INVALID_ID");
  54231. if ( pid == -1 || pid > 3071 || pid < 0 || (v10 = &g_pPlayerPool->m_pPlayer[pid]) == 0 )
  54232. __assert__(
  54233. "./Player/LoginPlayerManager.cpp",
  54234. 0x226u,
  54235. "BOOL LoginPlayerManager::DelPlayer(PlayerID_t)",
  54236. "pLoginPlayer");
  54237. v2 = Socket::getSOCKET((int)v10->m_pSocket);
  54238. v3 = v2;
  54239. if ( this->m_MinFD == -1 )
  54240. __assert__(
  54241. "./Player/LoginPlayerManager.cpp",
  54242. 0x22Au,
  54243. "BOOL LoginPlayerManager::DelPlayer(PlayerID_t)",
  54244. "m_MinFD!=INVALID_SOCKET");
  54245. if ( this->m_MaxFD == -1 )
  54246. __assert__(
  54247. "./Player/LoginPlayerManager.cpp",
  54248. 0x22Bu,
  54249. "BOOL LoginPlayerManager::DelPlayer(PlayerID_t)",
  54250. "m_MaxFD!=INVALID_SOCKET");
  54251. if ( v2 == -1 )
  54252. __assert__("./Player/LoginPlayerManager.cpp", 0x22Eu, "BOOL LoginPlayerManager::DelPlayer(PlayerID_t)", "FALSE");
  54253. v4 = this->m_MinFD;
  54254. if ( v4 != v2 )
  54255. {
  54256. v5 = this->m_MaxFD;
  54257. if ( v5 != v3 )
  54258. goto LABEL_10;
  54259. i_0 = 0;
  54260. s_0 = this->m_MinFD;
  54261. nPlayerCount_0 = this->m_nPlayers;
  54262. if ( nPlayerCount_0 > 0 )
  54263. {
  54264. do
  54265. {
  54266. v16 = this->m_pPlayers[i_0];
  54267. if ( v16 != -1 )
  54268. {
  54269. if ( v16 > 3071 || v16 < 0 || (v17 = &g_pPlayerPool->m_pPlayer[v16]) == 0 )
  54270. __assert__(
  54271. "./Player/LoginPlayerManager.cpp",
  54272. 0x266u,
  54273. "BOOL LoginPlayerManager::DelPlayer(PlayerID_t)",
  54274. "pPlayer");
  54275. v18 = Socket::getSOCKET((int)v17->m_pSocket);
  54276. if ( v18 != v3 && v18 != -1 && v18 > s_0 )
  54277. s_0 = v18;
  54278. }
  54279. ++i_0;
  54280. }
  54281. while ( i_0 < nPlayerCount_0 );
  54282. v4 = this->m_MinFD;
  54283. v5 = this->m_MaxFD;
  54284. }
  54285. if ( v5 != v4 )
  54286. {
  54287. v19 = this->m_SocketID;
  54288. if ( v19 <= s_0 )
  54289. v19 = s_0;
  54290. this->m_MaxFD = v19;
  54291. goto LABEL_10;
  54292. }
  54293. LABEL_64:
  54294. this->m_MaxFD = -1;
  54295. this->m_MinFD = -1;
  54296. goto LABEL_10;
  54297. }
  54298. i = 0;
  54299. v11 = this->m_MaxFD;
  54300. s = this->m_MaxFD;
  54301. nPlayerCount = this->m_nPlayers;
  54302. if ( nPlayerCount > 0 )
  54303. {
  54304. do
  54305. {
  54306. v12 = this->m_pPlayers[i];
  54307. if ( v12 != -1 )
  54308. {
  54309. if ( v12 > 3071 || v12 < 0 || (v13 = &g_pPlayerPool->m_pPlayer[v12]) == 0 )
  54310. __assert__(
  54311. "./Player/LoginPlayerManager.cpp",
  54312. 0x23Bu,
  54313. "BOOL LoginPlayerManager::DelPlayer(PlayerID_t)",
  54314. "pPlayer");
  54315. v14 = Socket::getSOCKET((int)v13->m_pSocket);
  54316. if ( v14 != v3 && v14 != -1 && v14 < s )
  54317. s = v14;
  54318. }
  54319. ++i;
  54320. }
  54321. while ( i < nPlayerCount );
  54322. v4 = this->m_MinFD;
  54323. v11 = this->m_MaxFD;
  54324. }
  54325. if ( v4 == v11 )
  54326. goto LABEL_64;
  54327. v15 = this->m_SocketID;
  54328. if ( v15 >= s )
  54329. v15 = s;
  54330. this->m_MinFD = v15;
  54331. LABEL_10:
  54332. v6 = v3 & 0x1F;
  54333. v7 = v3 >> 5;
  54334. if ( _bittest((const signed __int32 *)this->m_ReadFDs + (v3 >> 5), v6) )
  54335. _bittestandreset((signed __int32 *)this->m_ReadFDs + v7, v6);
  54336. if ( _bittest(&this->m_ReadFDs[1].fds_bits[v7], v6) )
  54337. _bittestandreset(&this->m_ReadFDs[1].fds_bits[v7], v6);
  54338. if ( _bittest((const signed __int32 *)this->m_WriteFDs + v7, v6) )
  54339. _bittestandreset((signed __int32 *)this->m_WriteFDs + v7, v6);
  54340. if ( _bittest(&this->m_WriteFDs[1].fds_bits[v7], v6) )
  54341. _bittestandreset(&this->m_WriteFDs[1].fds_bits[v7], v6);
  54342. if ( _bittest((const signed __int32 *)this->m_ExceptFDs + v7, v6) )
  54343. _bittestandreset((signed __int32 *)this->m_ExceptFDs + v7, v6);
  54344. if ( _bittest(&this->m_ExceptFDs[1].fds_bits[v7], v6) )
  54345. _bittestandreset(&this->m_ExceptFDs[1].fds_bits[v7], v6);
  54346. v8 = this->m_nFDSize - 1;
  54347. this->m_nFDSize = v8;
  54348. if ( v8 < 0 )
  54349. __assert__(
  54350. "./Player/LoginPlayerManager.cpp",
  54351. 0x290u,
  54352. "BOOL LoginPlayerManager::DelPlayer(PlayerID_t)",
  54353. "m_nFDSize>=0");
  54354. PlayerManager::RemovePlayer(&this->0, pid);
  54355. return 1;
  54356. }
  54357.  
  54358. //----- (0808CFEC) --------------------------------------------------------
  54359. #error "808D087: positive sp value has been found (funcsize=42)"
  54360.  
  54361. //----- (0808D0A0) --------------------------------------------------------
  54362. BOOL __cdecl LoginPlayerManager::ProcessCommands(LoginPlayerManager *const this)
  54363. {
  54364. int v1; // edi
  54365. PlayerID_t v2; // ax
  54366. bool v3; // cf
  54367. BOOL result; // eax
  54368. Socket *v5; // [esp+4h] [ebp-14h]
  54369. UINT nPlayerCount; // [esp+8h] [ebp-10h]
  54370.  
  54371. if ( this->m_MinFD != -1 || (result = 1, this->m_MaxFD != -1) )
  54372. {
  54373. v1 = 0;
  54374. nPlayerCount = this->m_nPlayers;
  54375. if ( this->m_nPlayers <= 0 )
  54376. return 1;
  54377. while ( 1 )
  54378. {
  54379. v2 = this->m_pPlayers[v1];
  54380. if ( v2 != -1 )
  54381. {
  54382. if ( v2 > 3071 || v2 < 0 || (v5 = (Socket *)&g_pPlayerPool->m_pPlayer[v2]) == 0 )
  54383. __assert__("./Player/LoginPlayerManager.cpp", 0x15Eu, "BOOL LoginPlayerManager::ProcessCommands()", "pPlayer");
  54384. if ( this->m_SocketID != Socket::getSOCKET(v5->m_SocketID) )
  54385. {
  54386. if ( Socket::isSockError(v5->m_SocketID) )
  54387. {
  54388. LoginPlayerManager::RemovePlayer(this, (Player *)v5);
  54389. goto LABEL_19;
  54390. }
  54391. if ( !(*((int (__cdecl **)(Socket *, _DWORD))v5->_vptr_Socket + 21))(v5, 0) )
  54392. {
  54393. LoginPlayerManager::RemovePlayer(this, (Player *)v5);
  54394. LABEL_19:
  54395. v3 = ++v1 < nPlayerCount;
  54396. goto LABEL_8;
  54397. }
  54398. }
  54399. }
  54400. v3 = ++v1 < nPlayerCount;
  54401. LABEL_8:
  54402. if ( !v3 )
  54403. return 1;
  54404. }
  54405. }
  54406. return result;
  54407. }
  54408. // 8049B18: using guessed type int __stdcall __cxa_end_catch(_DWORD);
  54409.  
  54410. //----- (0808D238) --------------------------------------------------------
  54411. BOOL __cdecl LoginPlayerManager::ProcessExceptions(LoginPlayerManager *const this)
  54412. {
  54413. int v1; // esi
  54414. PlayerID_t v2; // ax
  54415. unsigned int v3; // eax
  54416. bool v4; // cf
  54417. BOOL result; // eax
  54418. LoginPlayer *v6; // edi
  54419. UINT nPlayerCount; // [esp+8h] [ebp-10h]
  54420.  
  54421. if ( this->m_MinFD != -1 || (result = 1, this->m_MaxFD != -1) )
  54422. {
  54423. v1 = 0;
  54424. nPlayerCount = this->m_nPlayers;
  54425. if ( this->m_nPlayers > 0 )
  54426. {
  54427. do
  54428. {
  54429. v2 = this->m_pPlayers[v1];
  54430. if ( v2 == -1 )
  54431. goto LABEL_21;
  54432. if ( v2 > 3071 || v2 < 0 || (v6 = &g_pPlayerPool->m_pPlayer[v2]) == 0 )
  54433. __assert__(
  54434. "./Player/LoginPlayerManager.cpp",
  54435. 0x132u,
  54436. "BOOL LoginPlayerManager::ProcessExceptions()",
  54437. "pPlayer");
  54438. v3 = Socket::getSOCKET((int)v6->m_pSocket);
  54439. if ( this->m_SocketID == v3 )
  54440. __assert__("./Player/LoginPlayerManager.cpp", 0x137u, "BOOL LoginPlayerManager::ProcessExceptions()", "FALSE");
  54441. if ( _bittest(&this->m_ExceptFDs[1].fds_bits[v3 >> 5], v3 & 0x1F) )
  54442. {
  54443. LoginPlayerManager::RemovePlayer(this, &v6->0);
  54444. v4 = ++v1 < nPlayerCount;
  54445. }
  54446. else
  54447. {
  54448. LABEL_21:
  54449. v4 = ++v1 < nPlayerCount;
  54450. }
  54451. }
  54452. while ( v4 );
  54453. }
  54454. result = 1;
  54455. }
  54456. return result;
  54457. }
  54458.  
  54459. //----- (0808D38C) --------------------------------------------------------
  54460. BOOL __cdecl LoginPlayerManager::ProcessOutputs(LoginPlayerManager *const this)
  54461. {
  54462. int v1; // edi
  54463. PlayerID_t v2; // ax
  54464. unsigned int v3; // ebx
  54465. bool v4; // cf
  54466. BOOL result; // eax
  54467. Socket *v6; // [esp+4h] [ebp-14h]
  54468. UINT nPlayerCount; // [esp+8h] [ebp-10h]
  54469.  
  54470. if ( this->m_MinFD != -1 || (result = 1, this->m_MaxFD != -1) )
  54471. {
  54472. v1 = 0;
  54473. nPlayerCount = this->m_nPlayers;
  54474. if ( this->m_nPlayers <= 0 )
  54475. return 1;
  54476. while ( 1 )
  54477. {
  54478. v2 = this->m_pPlayers[v1];
  54479. if ( v2 != -1 )
  54480. {
  54481. if ( v2 > 3071 || v2 < 0 || (v6 = (Socket *)&g_pPlayerPool->m_pPlayer[v2]) == 0 )
  54482. __assert__("./Player/LoginPlayerManager.cpp", 0xFEu, "BOOL LoginPlayerManager::ProcessOutputs()", "pPlayer");
  54483. v3 = Socket::getSOCKET(v6->m_SocketID);
  54484. if ( this->m_SocketID != v3 )
  54485. {
  54486. if ( Socket::isSockError(v6->m_SocketID) )
  54487. {
  54488. LoginPlayerManager::RemovePlayer(this, (Player *)v6);
  54489. goto LABEL_20;
  54490. }
  54491. if ( _bittest(&this->m_WriteFDs[1].fds_bits[v3 >> 5], v3 & 0x1F)
  54492. && !(*((int (__cdecl **)(Socket *))v6->_vptr_Socket + 20))(v6) )
  54493. {
  54494. LoginPlayerManager::RemovePlayer(this, (Player *)v6);
  54495. LABEL_20:
  54496. v4 = ++v1 < nPlayerCount;
  54497. goto LABEL_8;
  54498. }
  54499. }
  54500. }
  54501. v4 = ++v1 < nPlayerCount;
  54502. LABEL_8:
  54503. if ( !v4 )
  54504. return 1;
  54505. }
  54506. }
  54507. return result;
  54508. }
  54509. // 8049B18: using guessed type int __stdcall __cxa_end_catch(_DWORD);
  54510.  
  54511. //----- (0808D544) --------------------------------------------------------
  54512. BOOL __cdecl LoginPlayerManager::ProcessInputs(LoginPlayerManager *const this)
  54513. {
  54514. signed int v1; // ebx
  54515. int v2; // edi
  54516. PlayerID_t v3; // ax
  54517. unsigned int v4; // ebx
  54518. bool v5; // cf
  54519. BOOL result; // eax
  54520. Socket *v7; // [esp+4h] [ebp-14h]
  54521. UINT nPlayerCount; // [esp+8h] [ebp-10h]
  54522.  
  54523. if ( this->m_MinFD != -1 || (result = 1, this->m_MaxFD != -1) )
  54524. {
  54525. if ( _bittest(&this->m_ReadFDs[1].fds_bits[(unsigned int)this->m_SocketID >> 5], this->m_SocketID & 0x1F) )
  54526. {
  54527. v1 = 0;
  54528. do
  54529. {
  54530. if ( !LoginPlayerManager::AcceptNewConnection(this) )
  54531. break;
  54532. ++v1;
  54533. }
  54534. while ( v1 <= 49 );
  54535. }
  54536. v2 = 0;
  54537. nPlayerCount = this->m_nPlayers;
  54538. if ( this->m_nPlayers <= 0 )
  54539. return 1;
  54540. while ( 1 )
  54541. {
  54542. v3 = this->m_pPlayers[v2];
  54543. if ( v3 != -1 )
  54544. {
  54545. if ( v3 > 3071 || v3 < 0 || (v7 = (Socket *)&g_pPlayerPool->m_pPlayer[v3]) == 0 )
  54546. __assert__("./Player/LoginPlayerManager.cpp", 0xC8u, "BOOL LoginPlayerManager::ProcessInputs()", "pPlayer");
  54547. v4 = Socket::getSOCKET(v7->m_SocketID);
  54548. if ( this->m_SocketID != v4 )
  54549. {
  54550. if ( Socket::isSockError(v7->m_SocketID) )
  54551. {
  54552. LoginPlayerManager::RemovePlayer(this, (Player *)v7);
  54553. goto LABEL_24;
  54554. }
  54555. if ( _bittest(&this->m_ReadFDs[1].fds_bits[v4 >> 5], v4 & 0x1F)
  54556. && !(*((int (__cdecl **)(Socket *))v7->_vptr_Socket + 19))(v7) )
  54557. {
  54558. LoginPlayerManager::RemovePlayer(this, (Player *)v7);
  54559. LABEL_24:
  54560. v5 = ++v2 < nPlayerCount;
  54561. goto LABEL_12;
  54562. }
  54563. }
  54564. }
  54565. v5 = ++v2 < nPlayerCount;
  54566. LABEL_12:
  54567. if ( !v5 )
  54568. return 1;
  54569. }
  54570. }
  54571. return result;
  54572. }
  54573. // 8049B18: using guessed type int __stdcall __cxa_end_catch(_DWORD);
  54574.  
  54575. //----- (0808D734) --------------------------------------------------------
  54576. BOOL __cdecl LoginPlayerManager::HeartBeat(LoginPlayerManager *const this)
  54577. {
  54578. UINT v1; // esi
  54579. PlayerID_t v2; // ax
  54580. LoginPlayer *v3; // ebx
  54581. UINT v5; // eax
  54582. UINT nPlayerCount; // [esp+10h] [ebp-14h]
  54583. UINT uTime; // [esp+14h] [ebp-10h]
  54584.  
  54585. uTime = TimeManager::CurrentTime((int)g_pTimeManager);
  54586. v1 = 0;
  54587. nPlayerCount = this->m_nPlayers;
  54588. if ( nPlayerCount > 0 )
  54589. {
  54590. do
  54591. {
  54592. v2 = this->m_pPlayers[v1];
  54593. if ( v2 != -1 )
  54594. {
  54595. if ( v2 > 3071 || v2 < 0 || (v3 = &g_pPlayerPool->m_pPlayer[v2]) == 0 )
  54596. __assert__("./Player/LoginPlayerManager.cpp", 0x2ACu, "virtual BOOL LoginPlayerManager::HeartBeat()", "FALSE");
  54597. if ( (*((int (__cdecl **)(LoginPlayer *, UINT))v3->_vptr_Player + 22))(v3, uTime) )
  54598. {
  54599. if ( v3->m_Status == 301 && uTime - v3->m_ConnectTime > 0x7530 )
  54600. {
  54601. v5 = v3->m_MiBaoInputBeginTime;
  54602. if ( v5 )
  54603. {
  54604. if ( uTime - v5 > 0x493E0 && !LoginPlayerManager::RemovePlayer(this, &v3->0) )
  54605. __assert__(
  54606. "./Player/LoginPlayerManager.cpp",
  54607. 0x2C9u,
  54608. "virtual BOOL LoginPlayerManager::HeartBeat()",
  54609. "ret");
  54610. }
  54611. else if ( !LoginPlayerManager::RemovePlayer(this, &v3->0) )
  54612. {
  54613. __assert__(
  54614. "./Player/LoginPlayerManager.cpp",
  54615. 0x2C2u,
  54616. "virtual BOOL LoginPlayerManager::HeartBeat()",
  54617. "ret");
  54618. }
  54619. }
  54620. }
  54621. else if ( !LoginPlayerManager::RemovePlayer(this, &v3->0) )
  54622. {
  54623. __assert__("./Player/LoginPlayerManager.cpp", 0x2B4u, "virtual BOOL LoginPlayerManager::HeartBeat()", "ret");
  54624. }
  54625. }
  54626. ++v1;
  54627. }
  54628. while ( v1 < nPlayerCount );
  54629. }
  54630. return 1;
  54631. }
  54632.  
  54633. //----- (0808D8F0) --------------------------------------------------------
  54634. void __cdecl LoginPlayerManager::RemoveAllPlayer(LoginPlayerManager *const this)
  54635. {
  54636. UINT v1; // edi
  54637. UINT v2; // esi
  54638. PlayerID_t v3; // ax
  54639. LoginPlayer *v4; // eax
  54640.  
  54641. v1 = this->m_nPlayers;
  54642. v2 = 0;
  54643. while ( v2 < v1 )
  54644. {
  54645. v3 = this->m_pPlayers[0];
  54646. if ( v3 == -1 )
  54647. break;
  54648. if ( v3 <= 3071 && v3 >= 0 )
  54649. {
  54650. v4 = &g_pPlayerPool->m_pPlayer[v3];
  54651. if ( v4 )
  54652. continue;
  54653. }
  54654. __assert__("./Player/LoginPlayerManager.cpp", 0x2E8u, "void LoginPlayerManager::RemoveAllPlayer()", "FALSE");
  54655. LoginPlayerManager::RemovePlayer(this, &v4->0);
  54656. ++v2;
  54657. }
  54658. }
  54659.  
  54660. //----- (0808D9C4) --------------------------------------------------------
  54661. BOOL __cdecl LoginPlayerManager::RecvPacket(LoginPlayerManager *const this, Packet **const pPacket, PlayerID_t *const PlayerID, UINT *const Flag)
  54662. {
  54663. ASYNC_PACKET *v4; // ebx
  54664. UINT v5; // ecx
  54665. Packet *v6; // edx
  54666. UINT v8; // eax
  54667. UINT v9; // eax
  54668. pthread_mutex_t *v10; // eax
  54669.  
  54670. pthread_mutex_lock(&this->m_Lock.m_Mutex);
  54671. v4 = this->m_PacketQue;
  54672. v5 = this->m_Head;
  54673. v6 = v4[v5].m_pPacket;
  54674. if ( v6 )
  54675. {
  54676. *pPacket = v6;
  54677. *PlayerID = v4[v5].m_PlayerID;
  54678. *Flag = v4[v5].m_Flag;
  54679. v8 = this->m_Head;
  54680. v4[v8].m_Flag = 0;
  54681. v4[v8].m_pPacket = 0;
  54682. v4[v8].m_PlayerID = -1;
  54683. v9 = this->m_Head + 1;
  54684. if ( v9 >= this->m_QueSize )
  54685. {
  54686. v10 = &this->m_Lock.m_Mutex;
  54687. this->m_Head = 0;
  54688. if ( this == (LoginPlayerManager *const )-6028 )
  54689. return 1;
  54690. }
  54691. else
  54692. {
  54693. this->m_Head = v9;
  54694. v10 = &this->m_Lock.m_Mutex;
  54695. if ( this == (LoginPlayerManager *const )-6028 )
  54696. return 1;
  54697. }
  54698. pthread_mutex_unlock(v10);
  54699. return 1;
  54700. }
  54701. if ( this != (LoginPlayerManager *const )-6028 )
  54702. pthread_mutex_unlock(&this->m_Lock.m_Mutex);
  54703. return 0;
  54704. }
  54705.  
  54706. //----- (0808DABC) --------------------------------------------------------
  54707. BOOL __cdecl LoginPlayerManager::MovePacket(LoginPlayerManager *const this, PlayerID_t PlayerID)
  54708. {
  54709. UINT v2; // ebx
  54710. UINT v3; // edi
  54711. UINT v4; // ecx
  54712. ASYNC_PACKET *v5; // esi
  54713. int v6; // edx
  54714.  
  54715. pthread_mutex_lock(&this->m_Lock.m_Mutex);
  54716. v2 = this->m_QueSize;
  54717. v3 = 0;
  54718. v4 = this->m_Head;
  54719. if ( v2 )
  54720. {
  54721. v5 = this->m_PacketQue;
  54722. do
  54723. {
  54724. v6 = v4;
  54725. if ( !v5[v4].m_pPacket )
  54726. break;
  54727. if ( v5[v6].m_PlayerID == PlayerID )
  54728. {
  54729. v5[v6].m_Flag = 1;
  54730. v2 = this->m_QueSize;
  54731. }
  54732. if ( v2 <= ++v4 )
  54733. v4 = 0;
  54734. ++v3;
  54735. }
  54736. while ( v2 > v3 );
  54737. }
  54738. if ( this != (LoginPlayerManager *const )-6028 )
  54739. pthread_mutex_unlock(&this->m_Lock.m_Mutex);
  54740. return 1;
  54741. }
  54742.  
  54743. //----- (0808DB7C) --------------------------------------------------------
  54744. #error "808DD20: positive sp value has been found (funcsize=123)"
  54745.  
  54746. //----- (0808DD90) --------------------------------------------------------
  54747. #error "808DED7: positive sp value has been found (funcsize=89)"
  54748.  
  54749. //----- (0808DF5C) --------------------------------------------------------
  54750. BOOL __cdecl LoginPlayerManager::SendPacket(LoginPlayerManager *const this, Packet *pPacket, PlayerID_t PlayerID, UINT Flag)
  54751. {
  54752. UINT v4; // edx
  54753. ASYNC_PACKET *v5; // ecx
  54754. int v6; // eax
  54755. UINT v7; // eax
  54756. pthread_mutex_t *v8; // eax
  54757.  
  54758. pthread_mutex_lock(&this->m_Lock.m_Mutex);
  54759. v4 = this->m_Tail;
  54760. v5 = this->m_PacketQue;
  54761. if ( v5[v4].m_pPacket )
  54762. {
  54763. if ( !LoginPlayerManager::ResizeCache(this) )
  54764. __assert__(
  54765. "./Player/LoginPlayerManager.cpp",
  54766. 0x389u,
  54767. "BOOL LoginPlayerManager::SendPacket(Packet*, PlayerID_t, UINT)",
  54768. "ret");
  54769. v4 = this->m_Tail;
  54770. v5 = this->m_PacketQue;
  54771. }
  54772. v6 = v4;
  54773. v5[v6].m_pPacket = pPacket;
  54774. v5[v6].m_Flag = Flag;
  54775. v5[v6].m_PlayerID = PlayerID;
  54776. v7 = this->m_Tail + 1;
  54777. if ( v7 >= this->m_QueSize )
  54778. {
  54779. v8 = &this->m_Lock.m_Mutex;
  54780. this->m_Tail = 0;
  54781. if ( this == (LoginPlayerManager *const )-6028 )
  54782. return 1;
  54783. LABEL_6:
  54784. pthread_mutex_unlock(v8);
  54785. return 1;
  54786. }
  54787. this->m_Tail = v7;
  54788. v8 = &this->m_Lock.m_Mutex;
  54789. if ( this != (LoginPlayerManager *const )-6028 )
  54790. goto LABEL_6;
  54791. return 1;
  54792. }
  54793.  
  54794. //----- (0808E0A8) --------------------------------------------------------
  54795. void __cdecl _tcf_0_127(void *a1)
  54796. {
  54797. std::ios_base::Init::~Init(&std::__ioinit);
  54798. }
  54799.  
  54800. //----- (0808E0B8) --------------------------------------------------------
  54801. void `global constructor keyed to'g_pLoginPlayerManager()
  54802. {
  54803. std::ios_base::Init::Init(&std::__ioinit);
  54804. __cxa_atexit(_tcf_0_127, 0, &_dso_handle);
  54805. }
  54806. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  54807.  
  54808. //----- (0808E0E4) --------------------------------------------------------
  54809. void __cdecl Player_AtLogin::Player_AtLogin(Player *a3, unsigned int a4)
  54810. {
  54811. Player::Player(a3, 0x10000u, a4 < 1 ? 98304 : 0x4000000, 0x2000u, a4 < 1 ? 102400 : 0x4000000);
  54812. a3->_vptr_Player = (int (**)(...))off_80DB9A8;
  54813. LOWORD(a3[1].m_pSocketInputStream) = -1;
  54814. HIWORD(a3[1].m_pSocketInputStream) = -1;
  54815. LOWORD(a3[1].m_pSocketOutputStream) = -1;
  54816. a3[1]._vptr_Player = (int (**)(...))1;
  54817. a3[1].m_pSocket = 0;
  54818. BYTE2(a3[1].m_pSocketOutputStream) = 0;
  54819. }
  54820. // 80DB9A8: using guessed type _DWORD (__cdecl *off_80DB9A8[2])(Player *this, UINT *const socketRet);
  54821.  
  54822. //----- (0808E154) --------------------------------------------------------
  54823. void __cdecl Player_AtLogin::Player_AtLogin(Player *a3, unsigned int a4)
  54824. {
  54825. Player::Player(a3, 0x10000u, a4 < 1 ? 98304 : 0x4000000, 0x2000u, a4 < 1 ? 102400 : 0x4000000);
  54826. a3->_vptr_Player = (int (**)(...))off_80DB9A8;
  54827. LOWORD(a3[1].m_pSocketInputStream) = -1;
  54828. HIWORD(a3[1].m_pSocketInputStream) = -1;
  54829. LOWORD(a3[1].m_pSocketOutputStream) = -1;
  54830. a3[1]._vptr_Player = (int (**)(...))1;
  54831. a3[1].m_pSocket = 0;
  54832. BYTE2(a3[1].m_pSocketOutputStream) = 0;
  54833. }
  54834. // 80DB9A8: using guessed type _DWORD (__cdecl *off_80DB9A8[2])(Player *this, UINT *const socketRet);
  54835.  
  54836. //----- (0808E1C4) --------------------------------------------------------
  54837. void __cdecl Player_AtLogin::~Player_AtLogin(Player *a2)
  54838. {
  54839. a2->_vptr_Player = (int (**)(...))off_80DB9A8;
  54840. Player::~Player(a2);
  54841. }
  54842. // 80DB9A8: using guessed type _DWORD (__cdecl *off_80DB9A8[2])(Player *this, UINT *const socketRet);
  54843.  
  54844. //----- (0808E1E0) --------------------------------------------------------
  54845. void __cdecl Player_AtLogin::~Player_AtLogin(Player *a2)
  54846. {
  54847. a2->_vptr_Player = (int (**)(...))off_80DB9A8;
  54848. Player::~Player(a2);
  54849. }
  54850. // 80DB9A8: using guessed type _DWORD (__cdecl *off_80DB9A8[2])(Player *this, UINT *const socketRet);
  54851.  
  54852. //----- (0808E1FC) --------------------------------------------------------
  54853. void __cdecl Player_AtLogin::~Player_AtLogin(Player *a2)
  54854. {
  54855. a2->_vptr_Player = (int (**)(...))off_80DB9A8;
  54856. Player::~Player(a2);
  54857. operator delete((IPRegionTable *const )a2);
  54858. }
  54859. // 80DB9A8: using guessed type _DWORD (__cdecl *off_80DB9A8[2])(Player *this, UINT *const socketRet);
  54860.  
  54861. //----- (0808E224) --------------------------------------------------------
  54862. void __cdecl Player_AtLogin::CleanUp(Player_AtLogin *const this)
  54863. {
  54864. Socket::close(this->m_pSocket);
  54865. SocketInputStream::CleanUp((int)this->m_pSocketInputStream);
  54866. SocketOutputStream::CleanUp((int)this->m_pSocketOutputStream);
  54867. this->m_PlayerManagerID = -1;
  54868. this->m_UID = -1;
  54869. this->m_PacketIndex = 0;
  54870. this->m_IsDisconnect = 0;
  54871. }
  54872.  
  54873. //----- (0808E2AC) --------------------------------------------------------
  54874. BOOL __cdecl Player_AtLogin::ProcessInput(Player_AtLogin *const this)
  54875. {
  54876. UINT v1; // eax
  54877. CHAR *v3; // ST10_4
  54878. UINT v4; // ST0C_4
  54879. int v5; // eax
  54880. UINT socketRet; // [esp+0h] [ebp-8h]
  54881.  
  54882. socketRet = v1;
  54883. if ( this->m_IsDisconnect || Player::ProcessInput(&this->0, &socketRet) )
  54884. return 1;
  54885. v3 = MySocketError();
  54886. v4 = socketRet;
  54887. v5 = TimeManager::Time2DWORD(g_pTimeManager);
  54888. CacheLog(0, "[%d] m_pSocketInputStream->Fill ret:%d %s", v5, v4, v3);
  54889. return 0;
  54890. }
  54891.  
  54892. //----- (0808E35C) --------------------------------------------------------
  54893. BOOL __cdecl Player_AtLogin::ProcessOutput(Player_AtLogin *const this)
  54894. {
  54895. UINT v1; // eax
  54896. CHAR *v3; // ST10_4
  54897. UINT v4; // ST0C_4
  54898. int v5; // eax
  54899. UINT socketRet; // [esp+0h] [ebp-8h]
  54900.  
  54901. socketRet = v1;
  54902. if ( this->m_IsDisconnect || Player::ProcessOutput(&this->0, &socketRet) )
  54903. return 1;
  54904. v3 = MySocketError();
  54905. v4 = socketRet;
  54906. v5 = TimeManager::Time2DWORD(g_pTimeManager);
  54907. CacheLog(0, "[%d] m_pSocketOutputStream->Flush ret:%d %s", v5, v4, v3);
  54908. return 0;
  54909. }
  54910.  
  54911. //----- (0808E40C) --------------------------------------------------------
  54912. void __cdecl __noreturn Player_AtLogin::onPacketIDInvalid(Player_AtLogin *const this, PacketID_t packetID)
  54913. {
  54914. CacheLog(6, "onPacketIDInvalid Login...packetID=%d", packetID);
  54915. __assert__("./Player/Player.cpp", 0x68u, "virtual void Player_AtLogin::onPacketIDInvalid(PacketID_t)", "FALSE");
  54916. }
  54917.  
  54918. //----- (0808E444) --------------------------------------------------------
  54919. void __cdecl __noreturn Player_AtLogin::onPacketSizeInvalid(Player_AtLogin *const this, PacketID_t packetID, UINT packetSize, UINT packetMaxSize)
  54920. {
  54921. CacheLog(6, "onPacketSizeInvalid Login...packetID=%d Size=%d MaxSize=%d", packetID, packetSize, packetMaxSize);
  54922. __assert__(
  54923. "./Player/Player.cpp",
  54924. 0x70u,
  54925. "virtual void Player_AtLogin::onPacketSizeInvalid(PacketID_t, UINT, UINT)",
  54926. "FALSE");
  54927. }
  54928.  
  54929. //----- (0808E488) --------------------------------------------------------
  54930. void __cdecl __noreturn Player_AtLogin::onPacketCreateError(Player_AtLogin *const this, PacketID_t packetID, UINT packetSize, UINT packetMaxSize)
  54931. {
  54932. CacheLog(6, "onPacketCreateError Login...packetID=%d Size=%d MaxSize=%d", packetID, packetSize, packetMaxSize);
  54933. __assert__(
  54934. "./Player/Player.cpp",
  54935. 0x78u,
  54936. "virtual void Player_AtLogin::onPacketCreateError(PacketID_t, UINT, UINT)",
  54937. "FALSE");
  54938. }
  54939.  
  54940. //----- (0808E4CC) --------------------------------------------------------
  54941. void __cdecl __noreturn Player_AtLogin::onPacketReadError(Player_AtLogin *const this, PacketID_t id, UINT packetSize, UINT packetMaxSize, const CHAR *debugBuffer, UINT debugBufferLength)
  54942. {
  54943. CacheLog(6, "onPacketReadError Login...packetID=%d Size=%d MaxSize=%d", id, packetSize, packetMaxSize);
  54944. __assert__(
  54945. "./Player/Player.cpp",
  54946. 0x7Fu,
  54947. "virtual void Player_AtLogin::onPacketReadError(PacketID_t, UINT, UINT, const CHAR*, UINT)",
  54948. "FALSE");
  54949. }
  54950.  
  54951. //----- (0808E510) --------------------------------------------------------
  54952. BOOL __cdecl Player_AtLogin::beforeExecutePacket(UINT packetIndex)
  54953. {
  54954. (*(void (__stdcall **)(UINT))(*(_DWORD *)packetIndex + 108))(packetIndex);
  54955. return 1;
  54956. }
  54957.  
  54958. //----- (0808E528) --------------------------------------------------------
  54959. void __cdecl __noreturn Player_AtLogin::onPacketExecuteUNKNOWN(Player_AtLogin *const this, PacketID_t id, const CHAR *debugBuffer, UINT debugBufferLength)
  54960. {
  54961. __assert__(
  54962. "./Player/Player.cpp",
  54963. 0x8Du,
  54964. "virtual void Player_AtLogin::onPacketExecuteUNKNOWN(PacketID_t, const CHAR*, UINT)",
  54965. "FALSE");
  54966. }
  54967.  
  54968. //----- (0808E550) --------------------------------------------------------
  54969. void __cdecl Player_AtLogin::onExecutePacketException(Player_AtLogin *const this, INT ring, const CHAR *debugBuffer, UINT debugBufferLength)
  54970. {
  54971. ;
  54972. }
  54973.  
  54974. //----- (0808E558) --------------------------------------------------------
  54975. BOOL __cdecl Player_AtLogin::ProcessCommand(Player_AtLogin *const this, BOOL a2)
  54976. {
  54977. BOOL result; // eax
  54978.  
  54979. result = 1;
  54980. if ( !this->m_IsDisconnect )
  54981. result = Player::ProcessCommand(&this->0, 0x2C9u, g_pPacketFactoryManager, -1, 0);
  54982. return result;
  54983. }
  54984.  
  54985. //----- (0808E5DC) --------------------------------------------------------
  54986. BOOL __cdecl Player_AtLogin::SendPacket(Player_AtLogin *const this, Packet *pPacket)
  54987. {
  54988. BOOL result; // eax
  54989. BYTE v3; // dl
  54990.  
  54991. result = 1;
  54992. if ( !this->m_IsDisconnect )
  54993. {
  54994. if ( this->m_pSocketOutputStream )
  54995. {
  54996. v3 = this->m_PacketIndex;
  54997. this->m_PacketIndex = v3 + 1;
  54998. pPacket->m_Index = v3;
  54999. if ( !SocketOutputStream::WritePacket(this->m_pSocketOutputStream, (unsigned __int8 *)pPacket) )
  55000. __assert__("./Player/Player.cpp", 0xACu, "virtual BOOL Player_AtLogin::SendPacket(Packet*)", "ret");
  55001. }
  55002. result = 1;
  55003. }
  55004. return result;
  55005. }
  55006.  
  55007. //----- (0808E690) --------------------------------------------------------
  55008. BOOL __cdecl Player_AtLogin::HeartBeat(Player_AtLogin *const this, UINT uTime)
  55009. {
  55010. return 1;
  55011. }
  55012.  
  55013. //----- (0808E69C) --------------------------------------------------------
  55014. void __cdecl Player_AtLogin::ResetKick(Player_AtLogin *const this)
  55015. {
  55016. ;
  55017. }
  55018.  
  55019. //----- (0808E6A4) --------------------------------------------------------
  55020. INT __cdecl Player_AtLogin::WhereThisPlayerFrom(const Player_AtLogin *const this)
  55021. {
  55022. Socket *v1; // edx
  55023. INT result; // eax
  55024. const char *v3; // ebx
  55025. signed int v4; // edi
  55026. const char *v5; // esi
  55027.  
  55028. v1 = this->m_pSocket;
  55029. result = -1;
  55030. if ( v1 )
  55031. {
  55032. v3 = v1->m_Host;
  55033. v4 = 0;
  55034. v5 = (const char *)&g_Config.m_InternalIpofProxy;
  55035. while ( 1 )
  55036. {
  55037. if ( !strncmp(v3, v5, 0x18u) )
  55038. return 0;
  55039. if ( !strncmp(v3, v5 + 48, 0x18u) )
  55040. return 1;
  55041. if ( !strncmp(v3, v5 + 96, 0x18u) )
  55042. break;
  55043. ++v4;
  55044. v5 += 24;
  55045. if ( v4 > 1 )
  55046. return -1;
  55047. }
  55048. result = 2;
  55049. }
  55050. return result;
  55051. }
  55052.  
  55053. //----- (0808E728) --------------------------------------------------------
  55054. CHAR *__cdecl ProxyTool_GetCorrespondingIP(const Player *pPlayer, ID_t ServerID)
  55055. {
  55056. _SERVER_DATA *v2; // esi
  55057. INT v3; // eax
  55058. INT v4; // ebx
  55059. CHAR *result; // eax
  55060. int v6; // eax
  55061. CHAR szLog[1024]; // [esp+8h] [ebp-408h]
  55062.  
  55063. v2 = ServerManager::FindServerInfo(*(ServerManager *const *)&g_pServerManager, ServerID);
  55064. if ( !v2 )
  55065. {
  55066. snprintf(szLog, 0x400u, "[ProxyTool_GetCorrespondingIP] Error: Can't found the specific server(%d).", ServerID);
  55067. szLog[1023] = 0;
  55068. __assertex__(
  55069. "./Player/Player.cpp",
  55070. 0xE7u,
  55071. "CHAR* ProxyTool_GetCorrespondingIP(const Player*, ID_t)",
  55072. "pData",
  55073. szLog);
  55074. }
  55075. v3 = Player_AtLogin::WhereThisPlayerFrom((const Player_AtLogin *const )pPlayer);
  55076. v4 = v3;
  55077. if ( v3 == -1
  55078. || RangeCheckForIndex_Assert(v3, 0, 2, "ProxyTool_GetCorrespondingIP") != 1
  55079. || (v6 = (int)v2 + 36 * v4, *(_DWORD *)(v6 + 96) != 1) )
  55080. {
  55081. result = v2->m_IP0;
  55082. }
  55083. else
  55084. {
  55085. result = (CHAR *)(v6 + 66);
  55086. }
  55087. return result;
  55088. }
  55089.  
  55090. //----- (0808E82C) --------------------------------------------------------
  55091. UINT __cdecl ProxyTool_GetCorrespondingPort(const Player *pPlayer, ID_t ServerID)
  55092. {
  55093. _SERVER_DATA *v2; // esi
  55094. INT v3; // eax
  55095. INT v4; // ebx
  55096. UINT result; // eax
  55097. CHAR szLog[1024]; // [esp+8h] [ebp-408h]
  55098.  
  55099. v2 = ServerManager::FindServerInfo(*(ServerManager *const *)&g_pServerManager, ServerID);
  55100. if ( !v2 )
  55101. {
  55102. snprintf(szLog, 0x400u, "[ProxyTool_GetCorrespondingPort] Error: Can't found the specific server(%d).", ServerID);
  55103. szLog[1023] = 0;
  55104. __assertex__(
  55105. "./Player/Player.cpp",
  55106. 0x120u,
  55107. "UINT ProxyTool_GetCorrespondingPort(const Player*, ID_t)",
  55108. "pData",
  55109. szLog);
  55110. }
  55111. v3 = Player_AtLogin::WhereThisPlayerFrom((const Player_AtLogin *const )pPlayer);
  55112. v4 = v3;
  55113. if ( v3 == -1
  55114. || RangeCheckForIndex_Assert(v3, 0, 2, "ProxyTool_GetCorrespondingIP") != 1
  55115. || v2->m_aProxy[v4].m_bEnabled != 1 )
  55116. {
  55117. result = v2->m_Port0;
  55118. }
  55119. else
  55120. {
  55121. result = v2->m_aProxy[v4].m_nPort;
  55122. }
  55123. return result;
  55124. }
  55125.  
  55126. //----- (0808E930) --------------------------------------------------------
  55127. void __cdecl _tcf_0_128(void *a1)
  55128. {
  55129. std::ios_base::Init::~Init(&std::__ioinit);
  55130. }
  55131.  
  55132. //----- (0808E940) --------------------------------------------------------
  55133. void `global constructor keyed to'Player_AtLogin::Player_AtLogin()
  55134. {
  55135. std::ios_base::Init::Init(&std::__ioinit);
  55136. __cxa_atexit(_tcf_0_128, 0, &_dso_handle);
  55137. }
  55138. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  55139.  
  55140. //----- (0808E96C) --------------------------------------------------------
  55141. void __cdecl PlayerManager::PlayerManager(PlayerManager *const this)
  55142. {
  55143. signed int v1; // eax
  55144.  
  55145. this->_vptr_PlayerManager = (int (**)(...))&off_80DC0C8;
  55146. this->m_nPlayers = 0;
  55147. v1 = 0;
  55148. do
  55149. this->m_pPlayers[v1++] = -1;
  55150. while ( v1 <= 1455 );
  55151. }
  55152. // 80DC0C8: using guessed type _DWORD (__cdecl *off_80DC0C8)(PlayerManager *this, UINT uTime);
  55153.  
  55154. //----- (0808E998) --------------------------------------------------------
  55155. void __cdecl PlayerManager::PlayerManager(PlayerManager *const this)
  55156. {
  55157. signed int v1; // eax
  55158.  
  55159. this->_vptr_PlayerManager = (int (**)(...))&off_80DC0C8;
  55160. this->m_nPlayers = 0;
  55161. v1 = 0;
  55162. do
  55163. this->m_pPlayers[v1++] = -1;
  55164. while ( v1 <= 1455 );
  55165. }
  55166. // 80DC0C8: using guessed type _DWORD (__cdecl *off_80DC0C8)(PlayerManager *this, UINT uTime);
  55167.  
  55168. //----- (0808E9C4) --------------------------------------------------------
  55169. void __cdecl PlayerManager::CleanUp(PlayerManager *const this)
  55170. {
  55171. signed int v1; // eax
  55172.  
  55173. this->m_nPlayers = 0;
  55174. v1 = 0;
  55175. do
  55176. this->m_pPlayers[v1++] = -1;
  55177. while ( v1 <= 1455 );
  55178. }
  55179.  
  55180. //----- (0808E9EC) --------------------------------------------------------
  55181. void __cdecl PlayerManager::~PlayerManager(PlayerManager *const a2)
  55182. {
  55183. a2->_vptr_PlayerManager = (int (**)(...))&off_80DC0C8;
  55184. PlayerManager::CleanUp(a2);
  55185. }
  55186. // 80DC0C8: using guessed type _DWORD (__cdecl *off_80DC0C8)(PlayerManager *this, UINT uTime);
  55187.  
  55188. //----- (0808EA00) --------------------------------------------------------
  55189. void __cdecl PlayerManager::~PlayerManager(PlayerManager *const a2)
  55190. {
  55191. a2->_vptr_PlayerManager = (int (**)(...))&off_80DC0C8;
  55192. PlayerManager::CleanUp(a2);
  55193. }
  55194. // 80DC0C8: using guessed type _DWORD (__cdecl *off_80DC0C8)(PlayerManager *this, UINT uTime);
  55195.  
  55196. //----- (0808EA14) --------------------------------------------------------
  55197. BOOL __cdecl PlayerManager::AddPlayer(PlayerManager *const this, Player_AtLogin *pPlayer)
  55198. {
  55199. UINT v3; // edx
  55200. UINT v4; // [esp-Ch] [ebp-14h]
  55201. const CHAR *v5; // [esp-4h] [ebp-Ch]
  55202.  
  55203. if ( !pPlayer )
  55204. __assert__("./Player/PlayerManager.cpp", 0x37u, "BOOL PlayerManager::AddPlayer(Player_AtLogin*)", "pPlayer");
  55205. if ( pPlayer->m_PlayerManagerID != -1 )
  55206. return 0;
  55207. v3 = this->m_nPlayers;
  55208. if ( this->m_pPlayers[v3] != -1 )
  55209. {
  55210. v5 = "FALSE";
  55211. v4 = 68;
  55212. goto LABEL_6;
  55213. }
  55214. this->m_pPlayers[v3] = pPlayer->m_PID;
  55215. pPlayer->m_PlayerManagerID = v3;
  55216. this->m_nPlayers = v3 + 1;
  55217. if ( v3 + 1 > 0x5B0 )
  55218. {
  55219. v5 = "m_nPlayers<=MAX_PLAYER";
  55220. v4 = 64;
  55221. LABEL_6:
  55222. __assert__("./Player/PlayerManager.cpp", v4, "BOOL PlayerManager::AddPlayer(Player_AtLogin*)", v5);
  55223. }
  55224. return 1;
  55225. }
  55226.  
  55227. //----- (0808EB04) --------------------------------------------------------
  55228. BOOL __cdecl PlayerManager::AddPlayer(PlayerManager *const this, Player_AtLogin *pPlayer, UINT MaxPlayer)
  55229. {
  55230. UINT v3; // edx
  55231. BOOL v4; // ecx
  55232.  
  55233. if ( !pPlayer )
  55234. __assert__("./Player/PlayerManager.cpp", 0x52u, "BOOL PlayerManager::AddPlayer(Player_AtLogin*, UINT)", "pPlayer");
  55235. v3 = this->m_nPlayers;
  55236. v4 = 0;
  55237. if ( v3 < MaxPlayer && pPlayer->m_PlayerManagerID == -1 )
  55238. {
  55239. if ( this->m_pPlayers[v3] != -1 )
  55240. __assert__("./Player/PlayerManager.cpp", 0x62u, "BOOL PlayerManager::AddPlayer(Player_AtLogin*, UINT)", "FALSE");
  55241. this->m_pPlayers[v3] = pPlayer->m_PID;
  55242. pPlayer->m_PlayerManagerID = v3;
  55243. this->m_nPlayers = v3 + 1;
  55244. if ( v3 + 1 > 0x5B0 )
  55245. __assert__(
  55246. "./Player/PlayerManager.cpp",
  55247. 0x5Eu,
  55248. "BOOL PlayerManager::AddPlayer(Player_AtLogin*, UINT)",
  55249. "m_nPlayers<=MAX_PLAYER");
  55250. v4 = 1;
  55251. }
  55252. return v4;
  55253. }
  55254.  
  55255. //----- (0808EBF0) --------------------------------------------------------
  55256. BOOL __cdecl __noreturn PlayerManager::AddPlayer(PlayerManager *const this, PlayerID_t pid)
  55257. {
  55258. __assert__("./Player/PlayerManager.cpp", 0x73u, "BOOL PlayerManager::AddPlayer(PlayerID_t)", "FALSE");
  55259. }
  55260.  
  55261. //----- (0808EC60) --------------------------------------------------------
  55262. void __cdecl PlayerManager::RemovePlayer(PlayerManager *const this, PlayerID_t pid)
  55263. {
  55264. UINT v2; // ecx
  55265. LoginPlayer *v3; // eax
  55266. PlayerID_t v4; // bx
  55267. ID_t v5; // [esp+10h] [ebp-18h]
  55268. ID_t PlayerManagerID; // [esp+16h] [ebp-12h]
  55269. LoginPlayer *v7; // [esp+18h] [ebp-10h]
  55270.  
  55271. v2 = this->m_nPlayers;
  55272. if ( v2 )
  55273. {
  55274. if ( pid != -1 && pid <= 3071 && pid >= 0 )
  55275. {
  55276. v3 = &g_pPlayerPool->m_pPlayer[pid];
  55277. v7 = g_pPlayerPool->m_pPlayer;
  55278. if ( v3 )
  55279. {
  55280. v5 = v3->m_PlayerManagerID;
  55281. PlayerManagerID = v3->m_PlayerManagerID;
  55282. if ( (unsigned __int16)PlayerManagerID <= 0x5AFu )
  55283. {
  55284. v3->m_PlayerManagerID = -1;
  55285. v4 = *((_WORD *)&this->_vptr_PlayerManager + v2 + 1);
  55286. if ( v4 == -1 || v4 > 3071 || v4 < 0 || !&v7[v4] )
  55287. __assert__("./Player/PlayerManager.cpp", 0xC4u, "void PlayerManager::RemovePlayer(PlayerID_t)", "FALSE");
  55288. if ( pid == v4 )
  55289. {
  55290. *((_WORD *)&this->_vptr_PlayerManager + v2 + 1) = -1;
  55291. }
  55292. else
  55293. {
  55294. this->m_pPlayers[PlayerManagerID] = v4;
  55295. *((_WORD *)&this->_vptr_PlayerManager + v2 + 1) = -1;
  55296. v7[v4].m_PlayerManagerID = v5;
  55297. }
  55298. this->m_nPlayers = v2 - 1;
  55299. }
  55300. }
  55301. }
  55302. }
  55303. }
  55304.  
  55305. //----- (0808EDA8) --------------------------------------------------------
  55306. BOOL __cdecl PlayerManager::HeartBeat(PlayerManager *const this, UINT uTime)
  55307. {
  55308. return 1;
  55309. }
  55310.  
  55311. //----- (0808EDB4) --------------------------------------------------------
  55312. void __cdecl _tcf_0_129(void *a1)
  55313. {
  55314. std::ios_base::Init::~Init(&std::__ioinit);
  55315. }
  55316.  
  55317. //----- (0808EDC4) --------------------------------------------------------
  55318. void `global constructor keyed to'PlayerManager::PlayerManager()
  55319. {
  55320. std::ios_base::Init::Init(&std::__ioinit);
  55321. __cxa_atexit(_tcf_0_129, 0, &_dso_handle);
  55322. }
  55323. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  55324.  
  55325. //----- (0808EDF0) --------------------------------------------------------
  55326. void __cdecl PlayerPool::PlayerPool(int a2)
  55327. {
  55328. pthread_mutex_init((pthread_mutex_t *)(a2 + 8), 0);
  55329. *(_DWORD *)a2 = 0;
  55330. *(_DWORD *)(a2 + 4) = 0;
  55331. *(_DWORD *)(a2 + 32) = 0;
  55332. }
  55333.  
  55334. //----- (0808EE24) --------------------------------------------------------
  55335. void __cdecl PlayerPool::PlayerPool(int a2)
  55336. {
  55337. pthread_mutex_init((pthread_mutex_t *)(a2 + 8), 0);
  55338. *(_DWORD *)a2 = 0;
  55339. *(_DWORD *)(a2 + 4) = 0;
  55340. *(_DWORD *)(a2 + 32) = 0;
  55341. }
  55342.  
  55343. //----- (0808EE58) --------------------------------------------------------
  55344. void __cdecl PlayerPool::~PlayerPool(PlayerPool *const this)
  55345. {
  55346. LoginPlayer *v1; // ecx
  55347. LoginPlayer *v2; // ebx
  55348.  
  55349. v1 = this->m_pPlayer;
  55350. if ( this->m_pPlayer )
  55351. {
  55352. v2 = &v1[v1[-1].m_IsPilferedAccount];
  55353. if ( v1 != v2 )
  55354. {
  55355. do
  55356. {
  55357. --v2;
  55358. (*((void (__cdecl **)(LoginPlayer *))v2->_vptr_Player + 17))(v2);
  55359. v1 = this->m_pPlayer;
  55360. }
  55361. while ( this->m_pPlayer != v2 );
  55362. }
  55363. operator delete[](&v1[-1].m_IsPilferedAccount);
  55364. this->m_pPlayer = 0;
  55365. }
  55366. pthread_mutex_destroy(&this->m_Lock.m_Mutex);
  55367. }
  55368.  
  55369. //----- (0808EF08) --------------------------------------------------------
  55370. void __usercall __noreturn sub_808EF08(int a1@<ebx>, int a2@<esi>)
  55371. {
  55372. pthread_mutex_destroy((pthread_mutex_t *)(a2 + 8));
  55373. _Unwind_Resume();
  55374. }
  55375.  
  55376. //----- (0808EF28) --------------------------------------------------------
  55377. void __cdecl PlayerPool::~PlayerPool(PlayerPool *const this)
  55378. {
  55379. LoginPlayer *v1; // ecx
  55380. LoginPlayer *v2; // ebx
  55381.  
  55382. v1 = this->m_pPlayer;
  55383. if ( this->m_pPlayer )
  55384. {
  55385. v2 = &v1[v1[-1].m_IsPilferedAccount];
  55386. if ( v1 != v2 )
  55387. {
  55388. do
  55389. {
  55390. --v2;
  55391. (*((void (__cdecl **)(LoginPlayer *))v2->_vptr_Player + 17))(v2);
  55392. v1 = this->m_pPlayer;
  55393. }
  55394. while ( this->m_pPlayer != v2 );
  55395. }
  55396. operator delete[](&v1[-1].m_IsPilferedAccount);
  55397. this->m_pPlayer = 0;
  55398. }
  55399. pthread_mutex_destroy(&this->m_Lock.m_Mutex);
  55400. }
  55401.  
  55402. //----- (0808EFD8) --------------------------------------------------------
  55403. void __usercall __noreturn sub_808EFD8(int a1@<ebx>, int a2@<esi>)
  55404. {
  55405. pthread_mutex_destroy((pthread_mutex_t *)(a2 + 8));
  55406. _Unwind_Resume();
  55407. }
  55408.  
  55409. //----- (0808EFF8) --------------------------------------------------------
  55410. #error "808F0B6: positive sp value has been found (funcsize=50)"
  55411.  
  55412. //----- (0808F138) --------------------------------------------------------
  55413. LoginPlayer *__cdecl PlayerPool::NewPlayer(PlayerPool *const this)
  55414. {
  55415. int v1; // ebx
  55416. LoginPlayer *v2; // edi
  55417. UINT v3; // ecx
  55418. int v4; // edx
  55419. UINT v5; // edx
  55420. LoginPlayer *v6; // ebx
  55421. pthread_mutex_t *autolock; // [esp+Ch] [ebp-28h]
  55422.  
  55423. autolock = &this->m_Lock.m_Mutex;
  55424. v1 = 0;
  55425. pthread_mutex_lock(&this->m_Lock.m_Mutex);
  55426. v2 = this->m_pPlayer;
  55427. while ( 1 )
  55428. {
  55429. v3 = this->m_Position;
  55430. v4 = (int)&v2[v3];
  55431. if ( *(_DWORD *)(v4 + 16) )
  55432. break;
  55433. if ( v3 + 1 > 0xBFF )
  55434. this->m_Position = 0;
  55435. else
  55436. this->m_Position = v3 + 1;
  55437. if ( ++v1 > 3071 )
  55438. {
  55439. if ( this != (PlayerPool *const )-8 )
  55440. pthread_mutex_unlock(autolock);
  55441. return 0;
  55442. }
  55443. }
  55444. *(_DWORD *)(v4 + 16) = 0;
  55445. v5 = this->m_Position + 1;
  55446. if ( v5 <= 0xBFF )
  55447. this->m_Position = v5;
  55448. else
  55449. this->m_Position = 0;
  55450. v6 = &v2[v3];
  55451. --this->m_PlayerCount;
  55452. if ( this != (PlayerPool *const )-8 )
  55453. pthread_mutex_unlock(autolock);
  55454. return v6;
  55455. }
  55456.  
  55457. //----- (0808F204) --------------------------------------------------------
  55458. LoginPlayer *__cdecl PlayerPool::NewPlayer(PlayerPool *const this, PlayerID_t PlayerID)
  55459. {
  55460. LoginPlayer *v2; // ebx
  55461. pthread_mutex_t *v3; // eax
  55462.  
  55463. pthread_mutex_lock(&this->m_Lock.m_Mutex);
  55464. if ( PlayerID <= 3071 )
  55465. {
  55466. v2 = &this->m_pPlayer[PlayerID];
  55467. if ( v2->m_IsEmpty )
  55468. {
  55469. v2->m_IsEmpty = 0;
  55470. --this->m_PlayerCount;
  55471. if ( (unsigned int)(PlayerID + 1) > 0xBFF )
  55472. {
  55473. v3 = &this->m_Lock.m_Mutex;
  55474. this->m_Position = 0;
  55475. if ( this == (PlayerPool *const )-8 )
  55476. return v2;
  55477. }
  55478. else
  55479. {
  55480. this->m_Position = PlayerID + 1;
  55481. v3 = &this->m_Lock.m_Mutex;
  55482. if ( this == (PlayerPool *const )-8 )
  55483. return v2;
  55484. }
  55485. pthread_mutex_unlock(v3);
  55486. return v2;
  55487. }
  55488. }
  55489. if ( this != (PlayerPool *const )-8 )
  55490. pthread_mutex_unlock(&this->m_Lock.m_Mutex);
  55491. return 0;
  55492. }
  55493.  
  55494. //----- (0808F2B4) --------------------------------------------------------
  55495. #error "808F336: positive sp value has been found (funcsize=41)"
  55496.  
  55497. //----- (0808F3A0) --------------------------------------------------------
  55498. void __cdecl _tcf_0_130(void *a1)
  55499. {
  55500. std::ios_base::Init::~Init(&std::__ioinit);
  55501. }
  55502.  
  55503. //----- (0808F3B0) --------------------------------------------------------
  55504. void `global constructor keyed to'g_pPlayerPool()
  55505. {
  55506. std::ios_base::Init::Init(&std::__ioinit);
  55507. __cxa_atexit(_tcf_0_130, 0, &_dso_handle);
  55508. }
  55509. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  55510.  
  55511. //----- (0808F3DC) --------------------------------------------------------
  55512. void __cdecl ServerPlayer::ServerPlayer(BOOL bIsServer, unsigned int bIsServera)
  55513. {
  55514. Player_AtLogin::Player_AtLogin((Player *)bIsServer, bIsServera);
  55515. *(_DWORD *)bIsServer = off_80DC408;
  55516. *(_DWORD *)(bIsServer + 32) = 0;
  55517. }
  55518. // 80DC408: using guessed type _DWORD (__cdecl *off_80DC408[2])(Player *this, UINT *const socketRet);
  55519.  
  55520. //----- (0808F404) --------------------------------------------------------
  55521. void __cdecl ServerPlayer::ServerPlayer(BOOL bIsServer, unsigned int bIsServera)
  55522. {
  55523. Player_AtLogin::Player_AtLogin((Player *)bIsServer, bIsServera);
  55524. *(_DWORD *)bIsServer = off_80DC408;
  55525. *(_DWORD *)(bIsServer + 32) = 0;
  55526. }
  55527. // 80DC408: using guessed type _DWORD (__cdecl *off_80DC408[2])(Player *this, UINT *const socketRet);
  55528.  
  55529. //----- (0808F42C) --------------------------------------------------------
  55530. void __cdecl ServerPlayer::~ServerPlayer(Player_AtLogin *a2)
  55531. {
  55532. a2->_vptr_Player = (int (**)(...))off_80DC408;
  55533. Player_AtLogin::~Player_AtLogin(&a2->0);
  55534. }
  55535. // 80DC408: using guessed type _DWORD (__cdecl *off_80DC408[2])(Player *this, UINT *const socketRet);
  55536.  
  55537. //----- (0808F448) --------------------------------------------------------
  55538. void __cdecl ServerPlayer::~ServerPlayer(Player_AtLogin *a2)
  55539. {
  55540. a2->_vptr_Player = (int (**)(...))off_80DC408;
  55541. Player_AtLogin::~Player_AtLogin(&a2->0);
  55542. }
  55543. // 80DC408: using guessed type _DWORD (__cdecl *off_80DC408[2])(Player *this, UINT *const socketRet);
  55544.  
  55545. //----- (0808F464) --------------------------------------------------------
  55546. void __cdecl ServerPlayer::~ServerPlayer(Player *a2)
  55547. {
  55548. a2->_vptr_Player = (int (**)(...))off_80DC408;
  55549. Player_AtLogin::~Player_AtLogin(a2);
  55550. operator delete((IPRegionTable *const )a2);
  55551. }
  55552. // 80DC408: using guessed type _DWORD (__cdecl *off_80DC408[2])(Player *this, UINT *const socketRet);
  55553.  
  55554. //----- (0808F48C) --------------------------------------------------------
  55555. BOOL __cdecl ServerPlayer::ProcessCommand(ServerPlayer *const this, BOOL Option)
  55556. {
  55557. return Player_AtLogin::ProcessCommand(&this->0, Option);
  55558. }
  55559.  
  55560. //----- (0808F4EC) --------------------------------------------------------
  55561. BOOL __cdecl ServerPlayer::ProcessInput(ServerPlayer *const this)
  55562. {
  55563. return Player_AtLogin::ProcessInput(&this->0);
  55564. }
  55565.  
  55566. //----- (0808F548) --------------------------------------------------------
  55567. BOOL __cdecl ServerPlayer::ProcessOutput(ServerPlayer *const this)
  55568. {
  55569. return Player_AtLogin::ProcessOutput(&this->0);
  55570. }
  55571.  
  55572. //----- (0808F5A4) --------------------------------------------------------
  55573. BOOL __cdecl ServerPlayer::SendPacket(ServerPlayer *const this, Packet *pPacket)
  55574. {
  55575. return Player_AtLogin::SendPacket(&this->0, pPacket);
  55576. }
  55577.  
  55578. //----- (0808F604) --------------------------------------------------------
  55579. BOOL __cdecl ServerPlayer::IsValid(ServerPlayer *const this)
  55580. {
  55581. return Player::IsValid(&this->0) != 0;
  55582. }
  55583.  
  55584. //----- (0808F66C) --------------------------------------------------------
  55585. void __cdecl ServerPlayer::CleanUp(ServerPlayer *const this)
  55586. {
  55587. Player_AtLogin::CleanUp(&this->0);
  55588. }
  55589.  
  55590. //----- (0808F6C8) --------------------------------------------------------
  55591. BOOL __cdecl ServerPlayer::HeartBeat(ServerPlayer *const this, UINT uTime)
  55592. {
  55593. return Player_AtLogin::HeartBeat(&this->0, uTime);
  55594. }
  55595.  
  55596. //----- (0808F728) --------------------------------------------------------
  55597. void __cdecl _tcf_0_131(void *a1)
  55598. {
  55599. std::ios_base::Init::~Init(&std::__ioinit);
  55600. }
  55601.  
  55602. //----- (0808F738) --------------------------------------------------------
  55603. void `global constructor keyed to'ServerPlayer::ServerPlayer()
  55604. {
  55605. std::ios_base::Init::Init(&std::__ioinit);
  55606. __cxa_atexit(_tcf_0_131, 0, &_dso_handle);
  55607. }
  55608. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  55609.  
  55610. //----- (0808F764) --------------------------------------------------------
  55611. BOOL __cdecl ServerPlayer::IsLoginPlayer(ServerPlayer *const this)
  55612. {
  55613. return 0;
  55614. }
  55615.  
  55616. //----- (0808F76C) --------------------------------------------------------
  55617. BOOL __cdecl ServerPlayer::IsServerPlayer(ServerPlayer *const this)
  55618. {
  55619. return 1;
  55620. }
  55621.  
  55622. //----- (0808F778) --------------------------------------------------------
  55623. BOOL __cdecl ServerPlayer::IsBillingPlayer(ServerPlayer *const this)
  55624. {
  55625. return 0;
  55626. }
  55627.  
  55628. //----- (0808F780) --------------------------------------------------------
  55629. void __cdecl TurnPlayerQueue::TurnPlayerQueue(TurnPlayerQueue *const this)
  55630. {
  55631. TURN_PLAYER_INFO *v1; // eax
  55632. TURN_PLAYER_INFO *v2; // edx
  55633. signed int v3; // ecx
  55634. UINT v4; // eax
  55635.  
  55636. pthread_mutex_init(&this->m_Lock.m_Mutex, 0);
  55637. this->m_Size = 2048;
  55638. v1 = (TURN_PLAYER_INFO *)operator new[](0x20000u);
  55639. v2 = v1;
  55640. v3 = 2047;
  55641. do
  55642. {
  55643. --v3;
  55644. v2->PlayerID = -1;
  55645. v2->PlayerName[0] = 0;
  55646. v2->Used = 0;
  55647. v2->QueuePos = 0;
  55648. ++v2;
  55649. }
  55650. while ( v3 != -1 );
  55651. this->m_pTurnPlayerQueue = v1;
  55652. v4 = this->m_Size;
  55653. this->m_Head = 0;
  55654. this->m_Tail = 0;
  55655. this->m_ValidCount = 0;
  55656. this->m_InvalidCount = 0;
  55657. this->m_pSortPlayerQueue = (TURN_PLAYER_INFO **)operator new[](4 * v4);
  55658. }
  55659.  
  55660. //----- (0808F840) --------------------------------------------------------
  55661. void __noreturn sub_808F840()
  55662. {
  55663. pthread_mutex_t *v1; // [esp+0h] [ebp-10h]
  55664.  
  55665. pthread_mutex_destroy(v1);
  55666. _Unwind_Resume();
  55667. }
  55668.  
  55669. //----- (0808F85C) --------------------------------------------------------
  55670. void __cdecl TurnPlayerQueue::TurnPlayerQueue(TurnPlayerQueue *const this)
  55671. {
  55672. TURN_PLAYER_INFO *v1; // eax
  55673. TURN_PLAYER_INFO *v2; // edx
  55674. signed int v3; // ecx
  55675. UINT v4; // eax
  55676.  
  55677. pthread_mutex_init(&this->m_Lock.m_Mutex, 0);
  55678. this->m_Size = 2048;
  55679. v1 = (TURN_PLAYER_INFO *)operator new[](0x20000u);
  55680. v2 = v1;
  55681. v3 = 2047;
  55682. do
  55683. {
  55684. --v3;
  55685. v2->PlayerID = -1;
  55686. v2->PlayerName[0] = 0;
  55687. v2->Used = 0;
  55688. v2->QueuePos = 0;
  55689. ++v2;
  55690. }
  55691. while ( v3 != -1 );
  55692. this->m_pTurnPlayerQueue = v1;
  55693. v4 = this->m_Size;
  55694. this->m_Head = 0;
  55695. this->m_Tail = 0;
  55696. this->m_ValidCount = 0;
  55697. this->m_InvalidCount = 0;
  55698. this->m_pSortPlayerQueue = (TURN_PLAYER_INFO **)operator new[](4 * v4);
  55699. }
  55700.  
  55701. //----- (0808F91C) --------------------------------------------------------
  55702. void __noreturn sub_808F91C()
  55703. {
  55704. pthread_mutex_t *v1; // [esp+0h] [ebp-10h]
  55705.  
  55706. pthread_mutex_destroy(v1);
  55707. _Unwind_Resume();
  55708. }
  55709.  
  55710. //----- (0808F938) --------------------------------------------------------
  55711. void __cdecl TurnPlayerQueue::~TurnPlayerQueue(TurnPlayerQueue *const this)
  55712. {
  55713. TURN_PLAYER_INFO **v1; // eax
  55714.  
  55715. if ( this->m_pTurnPlayerQueue )
  55716. {
  55717. operator delete[](this->m_pTurnPlayerQueue);
  55718. v1 = this->m_pSortPlayerQueue;
  55719. this->m_pTurnPlayerQueue = 0;
  55720. if ( !v1 )
  55721. goto LABEL_3;
  55722. }
  55723. else
  55724. {
  55725. v1 = this->m_pSortPlayerQueue;
  55726. if ( !v1 )
  55727. {
  55728. LABEL_3:
  55729. pthread_mutex_destroy(&this->m_Lock.m_Mutex);
  55730. return;
  55731. }
  55732. }
  55733. operator delete[](v1);
  55734. this->m_pSortPlayerQueue = 0;
  55735. pthread_mutex_destroy(&this->m_Lock.m_Mutex);
  55736. }
  55737.  
  55738. //----- (0808F9A8) --------------------------------------------------------
  55739. void __cdecl TurnPlayerQueue::~TurnPlayerQueue(TurnPlayerQueue *const this)
  55740. {
  55741. TURN_PLAYER_INFO **v1; // eax
  55742.  
  55743. if ( this->m_pTurnPlayerQueue )
  55744. {
  55745. operator delete[](this->m_pTurnPlayerQueue);
  55746. v1 = this->m_pSortPlayerQueue;
  55747. this->m_pTurnPlayerQueue = 0;
  55748. if ( !v1 )
  55749. goto LABEL_3;
  55750. }
  55751. else
  55752. {
  55753. v1 = this->m_pSortPlayerQueue;
  55754. if ( !v1 )
  55755. {
  55756. LABEL_3:
  55757. pthread_mutex_destroy(&this->m_Lock.m_Mutex);
  55758. return;
  55759. }
  55760. }
  55761. operator delete[](v1);
  55762. this->m_pSortPlayerQueue = 0;
  55763. pthread_mutex_destroy(&this->m_Lock.m_Mutex);
  55764. }
  55765.  
  55766. //----- (0808FA18) --------------------------------------------------------
  55767. BOOL __cdecl TurnPlayerQueue::Init(TurnPlayerQueue *const this)
  55768. {
  55769. g_WorldPlayerCounter1.m_MaxWorldUserCount = g_Config.m_ConfigInfo.m_nHashOnlineUserCount;
  55770. return 1;
  55771. }
  55772.  
  55773. //----- (0808FA2C) --------------------------------------------------------
  55774. BOOL __cdecl TurnPlayerQueue::AddInPlayer(TurnPlayerQueue *const this, PlayerID_t pID, const CHAR *Name, UINT *const QueuePos)
  55775. {
  55776. UINT v4; // eax
  55777. TURN_PLAYER_INFO *v5; // edx
  55778. BOOL result; // eax
  55779. UINT v7; // eax
  55780. pthread_mutex_t *autolock; // [esp+Ch] [ebp-18h]
  55781.  
  55782. autolock = &this->m_Lock.m_Mutex;
  55783. pthread_mutex_lock(&this->m_Lock.m_Mutex);
  55784. v4 = this->m_Tail << 6;
  55785. v5 = this->m_pTurnPlayerQueue;
  55786. if ( *(BOOL *)((char *)&this->m_pTurnPlayerQueue->Used + v4) )
  55787. {
  55788. if ( this != (TurnPlayerQueue *const )-28 )
  55789. pthread_mutex_unlock(autolock);
  55790. result = 0;
  55791. }
  55792. else
  55793. {
  55794. *(BOOL *)((char *)&v5->Used + v4) = 1;
  55795. v5[this->m_Tail].PlayerID = pID;
  55796. strncpy(v5[this->m_Tail].PlayerName, Name, 0x32u);
  55797. this->m_pTurnPlayerQueue[this->m_Tail].PlayerName[50] = 0;
  55798. this->m_pTurnPlayerQueue[this->m_Tail].QueuePos = this->m_Tail;
  55799. *QueuePos = this->m_Tail;
  55800. v7 = this->m_Tail + 1;
  55801. if ( v7 >= this->m_Size )
  55802. this->m_Tail = 0;
  55803. else
  55804. this->m_Tail = v7;
  55805. if ( this != (TurnPlayerQueue *const )-28 )
  55806. pthread_mutex_unlock(autolock);
  55807. result = 1;
  55808. }
  55809. return result;
  55810. }
  55811.  
  55812. //----- (0808FB18) --------------------------------------------------------
  55813. BOOL __cdecl TurnPlayerQueue::GetOutPlayer(TurnPlayerQueue *const this, PlayerID_t *const pID, CHAR *NameBuff)
  55814. {
  55815. UINT v4; // edx
  55816. TURN_PLAYER_INFO *v5; // ebx
  55817. UINT v6; // eax
  55818. pthread_mutex_t *v7; // eax
  55819.  
  55820. pthread_mutex_lock(&this->m_Lock.m_Mutex);
  55821. if ( this->m_pTurnPlayerQueue[this->m_Head].Used )
  55822. {
  55823. if ( !NameBuff )
  55824. __assert__(
  55825. "./Player/TurnPlayerQueue.cpp",
  55826. 0x57u,
  55827. "BOOL TurnPlayerQueue::GetOutPlayer(PlayerID_t&, CHAR*)",
  55828. "NameBuff");
  55829. strncpy(NameBuff, this->m_pTurnPlayerQueue[this->m_Head].PlayerName, 0x32u);
  55830. NameBuff[50] = 0;
  55831. v4 = this->m_Head << 6;
  55832. v5 = this->m_pTurnPlayerQueue;
  55833. *pID = *(PlayerID_t *)((char *)&this->m_pTurnPlayerQueue->PlayerID + v4);
  55834. v5->PlayerName[v4] = 0;
  55835. this->m_pTurnPlayerQueue[this->m_Head].Used = 0;
  55836. v6 = this->m_Head + 1;
  55837. if ( v6 < this->m_Size )
  55838. {
  55839. this->m_Head = v6;
  55840. v7 = &this->m_Lock.m_Mutex;
  55841. if ( this == (TurnPlayerQueue *const )-28 )
  55842. return 1;
  55843. }
  55844. else
  55845. {
  55846. v7 = &this->m_Lock.m_Mutex;
  55847. this->m_Head = 0;
  55848. if ( this == (TurnPlayerQueue *const )-28 )
  55849. return 1;
  55850. }
  55851. pthread_mutex_unlock(v7);
  55852. return 1;
  55853. }
  55854. if ( this != (TurnPlayerQueue *const )-28 )
  55855. pthread_mutex_unlock(&this->m_Lock.m_Mutex);
  55856. return 0;
  55857. }
  55858.  
  55859. //----- (0808FC88) --------------------------------------------------------
  55860. void __cdecl TurnPlayerQueue::RePosQueue(TurnPlayerQueue *const this)
  55861. {
  55862. UINT v1; // esi
  55863. TURN_PLAYER_INFO *v2; // eax
  55864. TURN_PLAYER_INFO *v3; // edx
  55865. int v4; // eax
  55866. UINT v5; // edx
  55867. UINT v6; // eax
  55868. PlayerID_t v7; // ax
  55869. LoginPlayer *v8; // esi
  55870. const char *v9; // edi
  55871. const char *v10; // eax
  55872. int v11; // eax
  55873. bool v12; // cf
  55874. bool v13; // zf
  55875. TURN_PLAYER_INFO *v14; // [esp+0h] [ebp-28h]
  55876. INT i; // [esp+8h] [ebp-20h]
  55877. UINT nNewPos; // [esp+Ch] [ebp-1Ch]
  55878. UINT nPos; // [esp+10h] [ebp-18h]
  55879. int v18; // [esp+14h] [ebp-14h]
  55880. TURN_PLAYER_INFO *v19; // [esp+18h] [ebp-10h]
  55881.  
  55882. if ( this->m_InvalidCount > 0xC7 )
  55883. {
  55884. v1 = this->m_Size;
  55885. v2 = (TURN_PLAYER_INFO *)operator new[](this->m_Size << 6);
  55886. v19 = v2;
  55887. v3 = v2;
  55888. v4 = v1 - 1;
  55889. while ( v4 != -1 )
  55890. {
  55891. v3->PlayerID = -1;
  55892. v3->PlayerName[0] = 0;
  55893. v3->Used = 0;
  55894. v3->QueuePos = 0;
  55895. --v4;
  55896. ++v3;
  55897. }
  55898. if ( !v19 )
  55899. __assert__("./Player/TurnPlayerQueue.cpp", 0x9Eu, "void TurnPlayerQueue::RePosQueue()", "pNewQueue");
  55900. v5 = this->m_Head;
  55901. v6 = this->m_Tail;
  55902. if ( v5 > v6 )
  55903. v18 = this->m_Size - (v5 - v6);
  55904. else
  55905. v18 = v6 - v5;
  55906. nNewPos = 0;
  55907. nPos = this->m_Head;
  55908. i = 0;
  55909. if ( v18 > 0 )
  55910. {
  55911. v14 = v19;
  55912. do
  55913. {
  55914. v7 = this->m_pTurnPlayerQueue[nPos].PlayerID;
  55915. if ( v7 == -1 || v7 > 3071 || v7 < 0 )
  55916. v8 = 0;
  55917. else
  55918. v8 = &g_pPlayerPool->m_pPlayer[v7];
  55919. v9 = this->m_pTurnPlayerQueue[nPos].PlayerName;
  55920. v10 = LoginPlayer::GetAccount(v8);
  55921. if ( !strcmp(v10, v9) && v8->m_Status == 307 )
  55922. {
  55923. qmemcpy(v14, &this->m_pTurnPlayerQueue[nPos], sizeof(TURN_PLAYER_INFO));
  55924. ++nNewPos;
  55925. ++v14;
  55926. }
  55927. v11 = nPos + 1;
  55928. v12 = nPos + 1 < this->m_Size;
  55929. nPos = 0;
  55930. if ( v12 )
  55931. nPos = v11;
  55932. ++i;
  55933. }
  55934. while ( i < v18 );
  55935. }
  55936. if ( this->m_ValidCount != nNewPos )
  55937. __assert__("./Player/TurnPlayerQueue.cpp", 0xB0u, "void TurnPlayerQueue::RePosQueue()", "nNewPos == m_ValidCount");
  55938. v12 = this->m_Size < nNewPos;
  55939. v13 = this->m_Size == nNewPos;
  55940. this->m_Head = 0;
  55941. if ( v12 || v13 )
  55942. this->m_Tail = 0;
  55943. else
  55944. this->m_Tail = nNewPos;
  55945. if ( this->m_pTurnPlayerQueue )
  55946. operator delete[](this->m_pTurnPlayerQueue);
  55947. this->m_pTurnPlayerQueue = v19;
  55948. }
  55949. }
  55950.  
  55951. //----- (0808FED0) --------------------------------------------------------
  55952. void __cdecl TurnPlayerQueue::SortQueuePos(TurnPlayerQueue *const this)
  55953. {
  55954. UINT v1; // edx
  55955. UINT v2; // eax
  55956. UINT j; // esi
  55957. PlayerID_t v4; // ax
  55958. const char *v5; // ebx
  55959. const char *v6; // eax
  55960. UINT v7; // eax
  55961. signed int v8; // eax
  55962. bool v9; // zf
  55963. bool k; // sf
  55964. unsigned __int8 v11; // of
  55965. TURN_PLAYER_INFO *v12; // ebx
  55966. PlayerID_t v13; // ax
  55967. LoginPlayer *v14; // esi
  55968. UINT v15; // eax
  55969. INT i_0; // [esp+18h] [ebp-3Ch]
  55970. LoginPlayer *v17; // [esp+20h] [ebp-34h]
  55971. INT i; // [esp+24h] [ebp-30h]
  55972. int v19; // [esp+28h] [ebp-2Ch]
  55973.  
  55974. pthread_mutex_lock(&this->m_Lock.m_Mutex);
  55975. v1 = this->m_Head;
  55976. v2 = this->m_Tail;
  55977. if ( v1 > v2 )
  55978. v19 = this->m_Size - (v1 - v2);
  55979. else
  55980. v19 = v2 - v1;
  55981. i = 0;
  55982. this->m_ValidCount = 0;
  55983. this->m_InvalidCount = 0;
  55984. for ( j = v1; i < v19; ++i )
  55985. {
  55986. v4 = this->m_pTurnPlayerQueue[j].PlayerID;
  55987. if ( v4 == -1 || v4 > 3071 || v4 < 0 )
  55988. v17 = 0;
  55989. else
  55990. v17 = &g_pPlayerPool->m_pPlayer[v4];
  55991. v5 = this->m_pTurnPlayerQueue[j].PlayerName;
  55992. v6 = LoginPlayer::GetAccount(v17);
  55993. if ( !strcmp(v6, v5) && v17->m_Status == 307 )
  55994. {
  55995. v15 = this->m_ValidCount;
  55996. this->m_pSortPlayerQueue[v15] = &this->m_pTurnPlayerQueue[j];
  55997. this->m_ValidCount = v15 + 1;
  55998. }
  55999. else
  56000. {
  56001. ++this->m_InvalidCount;
  56002. }
  56003. v7 = j + 1;
  56004. j = 0;
  56005. if ( v7 < this->m_Size )
  56006. j = v7;
  56007. }
  56008. v8 = this->m_ValidCount;
  56009. if ( v8 > v19 )
  56010. __assert__(
  56011. "./Player/TurnPlayerQueue.cpp",
  56012. 0x89u,
  56013. "void TurnPlayerQueue::SortQueuePos()",
  56014. "nCount>=(INT)m_ValidCount");
  56015. i_0 = 0;
  56016. v11 = 0;
  56017. v9 = v8 == 0;
  56018. for ( k = v8 < 0; !((unsigned __int8)(k ^ v11) | v9); k = (signed int)(this->m_ValidCount - (i_0++ + 1)) < 0 )
  56019. {
  56020. v12 = this->m_pSortPlayerQueue[i_0];
  56021. if ( !v12 )
  56022. __assert__("./Player/TurnPlayerQueue.cpp", 0x8Du, "void TurnPlayerQueue::SortQueuePos()", "pChild");
  56023. v13 = v12->PlayerID;
  56024. if ( v12->PlayerID == -1 || v13 > 3071 || v13 < 0 || (v14 = &g_pPlayerPool->m_pPlayer[v13]) == 0 )
  56025. __assert__("./Player/TurnPlayerQueue.cpp", 0x8Fu, "void TurnPlayerQueue::SortQueuePos()", "pLoginPlayer");
  56026. LoginPlayer::SetQueuePos((int)v14, i_0 + 1);
  56027. v11 = __OFSUB__(this->m_ValidCount, i_0 + 1);
  56028. v9 = this->m_ValidCount == i_0 + 1;
  56029. }
  56030. TurnPlayerQueue::RePosQueue(this);
  56031. if ( this != (TurnPlayerQueue *const )-28 )
  56032. pthread_mutex_unlock(&this->m_Lock.m_Mutex);
  56033. }
  56034.  
  56035. //----- (08090160) --------------------------------------------------------
  56036. void __cdecl WorldPlayerQueue::WorldPlayerQueue(WorldPlayerQueue *const this)
  56037. {
  56038. WORLD_PLAYER_INFO *v1; // eax
  56039. WORLD_PLAYER_INFO *v2; // edx
  56040. signed int v3; // ecx
  56041. UINT v4; // eax
  56042.  
  56043. pthread_mutex_init(&this->m_Lock.m_Mutex, 0);
  56044. this->m_Size = 1024;
  56045. v1 = (WORLD_PLAYER_INFO *)operator new[](0x12000u);
  56046. v2 = v1;
  56047. v3 = 1023;
  56048. do
  56049. {
  56050. --v3;
  56051. v2->PlayerID = -1;
  56052. v2->PlayerName[0] = 0;
  56053. v2->Used = 0;
  56054. v2->QueuePos = 0;
  56055. v2->Guid = -1;
  56056. v2->SID = -1;
  56057. ++v2;
  56058. }
  56059. while ( v3 != -1 );
  56060. this->m_pWorldPlayerQueue = v1;
  56061. v4 = this->m_Size;
  56062. this->m_Head = 0;
  56063. this->m_Tail = 0;
  56064. this->m_SendCount = 0;
  56065. this->m_ValidCount = 0;
  56066. this->m_InvalidCount = 0;
  56067. this->m_pSortPlayerQueue = (WORLD_PLAYER_INFO **)operator new[](4 * v4);
  56068. }
  56069.  
  56070. //----- (08090237) --------------------------------------------------------
  56071. void __noreturn sub_8090237()
  56072. {
  56073. pthread_mutex_t *v1; // [esp+0h] [ebp-10h]
  56074.  
  56075. pthread_mutex_destroy(v1);
  56076. _Unwind_Resume();
  56077. }
  56078.  
  56079. //----- (08090254) --------------------------------------------------------
  56080. void __cdecl WorldPlayerQueue::WorldPlayerQueue(WorldPlayerQueue *const this)
  56081. {
  56082. WORLD_PLAYER_INFO *v1; // eax
  56083. WORLD_PLAYER_INFO *v2; // edx
  56084. signed int v3; // ecx
  56085. UINT v4; // eax
  56086.  
  56087. pthread_mutex_init(&this->m_Lock.m_Mutex, 0);
  56088. this->m_Size = 1024;
  56089. v1 = (WORLD_PLAYER_INFO *)operator new[](0x12000u);
  56090. v2 = v1;
  56091. v3 = 1023;
  56092. do
  56093. {
  56094. --v3;
  56095. v2->PlayerID = -1;
  56096. v2->PlayerName[0] = 0;
  56097. v2->Used = 0;
  56098. v2->QueuePos = 0;
  56099. v2->Guid = -1;
  56100. v2->SID = -1;
  56101. ++v2;
  56102. }
  56103. while ( v3 != -1 );
  56104. this->m_pWorldPlayerQueue = v1;
  56105. v4 = this->m_Size;
  56106. this->m_Head = 0;
  56107. this->m_Tail = 0;
  56108. this->m_SendCount = 0;
  56109. this->m_ValidCount = 0;
  56110. this->m_InvalidCount = 0;
  56111. this->m_pSortPlayerQueue = (WORLD_PLAYER_INFO **)operator new[](4 * v4);
  56112. }
  56113.  
  56114. //----- (0809032B) --------------------------------------------------------
  56115. void __noreturn sub_809032B()
  56116. {
  56117. pthread_mutex_t *v1; // [esp+0h] [ebp-10h]
  56118.  
  56119. pthread_mutex_destroy(v1);
  56120. _Unwind_Resume();
  56121. }
  56122.  
  56123. //----- (08090348) --------------------------------------------------------
  56124. void __cdecl WorldPlayerQueue::~WorldPlayerQueue(WorldPlayerQueue *const this)
  56125. {
  56126. WORLD_PLAYER_INFO **v1; // eax
  56127.  
  56128. if ( this->m_pWorldPlayerQueue )
  56129. {
  56130. operator delete[](this->m_pWorldPlayerQueue);
  56131. v1 = this->m_pSortPlayerQueue;
  56132. this->m_pWorldPlayerQueue = 0;
  56133. if ( !v1 )
  56134. goto LABEL_3;
  56135. }
  56136. else
  56137. {
  56138. v1 = this->m_pSortPlayerQueue;
  56139. if ( !v1 )
  56140. {
  56141. LABEL_3:
  56142. pthread_mutex_destroy(&this->m_Lock.m_Mutex);
  56143. return;
  56144. }
  56145. }
  56146. operator delete[](v1);
  56147. this->m_pSortPlayerQueue = 0;
  56148. pthread_mutex_destroy(&this->m_Lock.m_Mutex);
  56149. }
  56150.  
  56151. //----- (080903B8) --------------------------------------------------------
  56152. void __cdecl WorldPlayerQueue::~WorldPlayerQueue(WorldPlayerQueue *const this)
  56153. {
  56154. WORLD_PLAYER_INFO **v1; // eax
  56155.  
  56156. if ( this->m_pWorldPlayerQueue )
  56157. {
  56158. operator delete[](this->m_pWorldPlayerQueue);
  56159. v1 = this->m_pSortPlayerQueue;
  56160. this->m_pWorldPlayerQueue = 0;
  56161. if ( !v1 )
  56162. goto LABEL_3;
  56163. }
  56164. else
  56165. {
  56166. v1 = this->m_pSortPlayerQueue;
  56167. if ( !v1 )
  56168. {
  56169. LABEL_3:
  56170. pthread_mutex_destroy(&this->m_Lock.m_Mutex);
  56171. return;
  56172. }
  56173. }
  56174. operator delete[](v1);
  56175. this->m_pSortPlayerQueue = 0;
  56176. pthread_mutex_destroy(&this->m_Lock.m_Mutex);
  56177. }
  56178.  
  56179. //----- (08090428) --------------------------------------------------------
  56180. BOOL __cdecl WorldPlayerQueue::Init(WorldPlayerQueue *const this)
  56181. {
  56182. g_WorldPlayerCounter.m_MaxWorldUserCount = g_Config.m_ConfigInfo.m_nHashOnlineUserCount;
  56183. return 1;
  56184. }
  56185.  
  56186. //----- (0809043C) --------------------------------------------------------
  56187. BOOL __cdecl WorldPlayerQueue::AddInPlayer(WorldPlayerQueue *const this, PlayerID_t pID, const CHAR *Name, GUID_t guid, UINT *const QueuePos)
  56188. {
  56189. UINT v5; // eax
  56190. WORLD_PLAYER_INFO *v6; // edx
  56191. BOOL result; // eax
  56192. WORLD_PLAYER_INFO *v8; // ecx
  56193. UINT v9; // eax
  56194. pthread_mutex_t *autolock; // [esp+Ch] [ebp-18h]
  56195.  
  56196. autolock = &this->m_Lock.m_Mutex;
  56197. pthread_mutex_lock(&this->m_Lock.m_Mutex);
  56198. v5 = this->m_Tail;
  56199. v6 = this->m_pWorldPlayerQueue;
  56200. if ( this->m_pWorldPlayerQueue[v5].Used )
  56201. {
  56202. if ( this != (WorldPlayerQueue *const )-32 )
  56203. pthread_mutex_unlock(autolock);
  56204. result = 0;
  56205. }
  56206. else
  56207. {
  56208. v6[v5].Used = 1;
  56209. v6[this->m_Tail].PlayerID = pID;
  56210. strncpy(v6[this->m_Tail].PlayerName, Name, 0x32u);
  56211. this->m_pWorldPlayerQueue[this->m_Tail].PlayerName[50] = 0;
  56212. v8 = this->m_pWorldPlayerQueue;
  56213. v8[this->m_Tail].QueuePos = this->m_Tail;
  56214. v8[this->m_Tail].Guid = guid;
  56215. *QueuePos = this->m_Tail;
  56216. v9 = this->m_Tail + 1;
  56217. if ( v9 >= this->m_Size )
  56218. this->m_Tail = 0;
  56219. else
  56220. this->m_Tail = v9;
  56221. if ( this != (WorldPlayerQueue *const )-32 )
  56222. pthread_mutex_unlock(autolock);
  56223. result = 1;
  56224. }
  56225. return result;
  56226. }
  56227.  
  56228. //----- (08090530) --------------------------------------------------------
  56229. #error "809056A: positive sp value has been found (funcsize=22)"
  56230.  
  56231. //----- (08090668) --------------------------------------------------------
  56232. BOOL __cdecl WorldPlayerQueue::FindHeadPlayer(WorldPlayerQueue *const this, UINT *const QueuePos)
  56233. {
  56234. UINT v2; // ecx
  56235. BOOL result; // eax
  56236. pthread_mutex_t *autolock; // [esp+Ch] [ebp-18h]
  56237.  
  56238. autolock = &this->m_Lock.m_Mutex;
  56239. pthread_mutex_lock(&this->m_Lock.m_Mutex);
  56240. v2 = this->m_Head;
  56241. if ( this->m_pWorldPlayerQueue[v2].Used )
  56242. {
  56243. *QueuePos = v2;
  56244. if ( this != (WorldPlayerQueue *const )-32 )
  56245. pthread_mutex_unlock(autolock);
  56246. result = 1;
  56247. }
  56248. else
  56249. {
  56250. if ( this != (WorldPlayerQueue *const )-32 )
  56251. pthread_mutex_unlock(autolock);
  56252. result = 0;
  56253. }
  56254. return result;
  56255. }
  56256.  
  56257. //----- (080906EC) --------------------------------------------------------
  56258. WORLD_PLAYER_INFO *__cdecl WorldPlayerQueue::GetPlayer(_DWORD *a3, int a4)
  56259. {
  56260. return (WORLD_PLAYER_INFO *)(*a3 + 72 * a4);
  56261. }
  56262.  
  56263. //----- (08090700) --------------------------------------------------------
  56264. void __cdecl WorldPlayerQueue::RePosQueue(WorldPlayerQueue *const this)
  56265. {
  56266. UINT v1; // ebx
  56267. WORLD_PLAYER_INFO *v2; // eax
  56268. int v3; // edx
  56269. UINT v4; // edx
  56270. UINT v5; // eax
  56271. UINT v6; // ebx
  56272. PlayerID_t v7; // ax
  56273. UINT v8; // eax
  56274. bool v9; // cf
  56275. bool v10; // zf
  56276. WORLD_PLAYER_INFO *v11; // edx
  56277. WORLD_PLAYER_INFO *dest; // [esp+4h] [ebp-24h]
  56278. LoginPlayer *v13; // [esp+8h] [ebp-20h]
  56279. INT i; // [esp+Ch] [ebp-1Ch]
  56280. UINT nNewPos; // [esp+10h] [ebp-18h]
  56281. int v16; // [esp+14h] [ebp-14h]
  56282. WORLD_PLAYER_INFO *v17; // [esp+18h] [ebp-10h]
  56283.  
  56284. if ( this->m_InvalidCount > 0xC7 )
  56285. {
  56286. v1 = this->m_Size;
  56287. v2 = (WORLD_PLAYER_INFO *)operator new[](72 * v1);
  56288. v3 = v1 - 1;
  56289. v17 = v2;
  56290. while ( v3 != -1 )
  56291. {
  56292. v2->PlayerID = -1;
  56293. v2->PlayerName[0] = 0;
  56294. v2->Used = 0;
  56295. v2->QueuePos = 0;
  56296. v2->Guid = -1;
  56297. v2->SID = -1;
  56298. --v3;
  56299. ++v2;
  56300. }
  56301. if ( !v17 )
  56302. __assert__("./Player/TurnPlayerQueue.cpp", 0x159u, "void WorldPlayerQueue::RePosQueue()", "pNewQueue");
  56303. v4 = this->m_Head;
  56304. v5 = this->m_Tail;
  56305. if ( v4 > v5 )
  56306. v16 = this->m_Size - (v4 - v5);
  56307. else
  56308. v16 = v5 - v4;
  56309. nNewPos = 0;
  56310. v6 = this->m_Head;
  56311. i = 0;
  56312. if ( v16 > 0 )
  56313. {
  56314. dest = v17;
  56315. do
  56316. {
  56317. v7 = this->m_pWorldPlayerQueue[v6].PlayerID;
  56318. if ( v7 == -1 || v7 > 3071 || v7 < 0 )
  56319. v13 = 0;
  56320. else
  56321. v13 = &g_pPlayerPool->m_pPlayer[v7];
  56322. if ( LoginPlayer::IsGUIDOwner(v13, this->m_pWorldPlayerQueue[v6].Guid) && v13->m_Status == 312 )
  56323. {
  56324. v11 = dest;
  56325. ++nNewPos;
  56326. ++dest;
  56327. memcpy(v11, &this->m_pWorldPlayerQueue[v6], 0x48u);
  56328. }
  56329. v8 = v6 + 1;
  56330. v6 = 0;
  56331. if ( v8 < this->m_Size )
  56332. v6 = v8;
  56333. ++i;
  56334. }
  56335. while ( i < v16 );
  56336. }
  56337. if ( this->m_ValidCount != nNewPos )
  56338. __assert__(
  56339. "./Player/TurnPlayerQueue.cpp",
  56340. 0x16Bu,
  56341. "void WorldPlayerQueue::RePosQueue()",
  56342. "nNewPos == m_ValidCount");
  56343. v9 = this->m_Size < nNewPos;
  56344. v10 = this->m_Size == nNewPos;
  56345. this->m_Head = 0;
  56346. if ( v9 || v10 )
  56347. this->m_Tail = 0;
  56348. else
  56349. this->m_Tail = nNewPos;
  56350. if ( this->m_pWorldPlayerQueue )
  56351. operator delete[](this->m_pWorldPlayerQueue);
  56352. this->m_pWorldPlayerQueue = v17;
  56353. }
  56354. }
  56355.  
  56356. //----- (08090954) --------------------------------------------------------
  56357. void __cdecl WorldPlayerQueue::SortQueuePos(WorldPlayerQueue *const this)
  56358. {
  56359. UINT v1; // edx
  56360. UINT v2; // eax
  56361. UINT j; // ebx
  56362. PlayerID_t v4; // ax
  56363. LoginPlayer *v5; // esi
  56364. UINT v6; // eax
  56365. signed int v7; // eax
  56366. int v8; // edi
  56367. bool v9; // zf
  56368. bool k; // sf
  56369. unsigned __int8 v11; // of
  56370. WORLD_PLAYER_INFO *v12; // ebx
  56371. PlayerID_t v13; // ax
  56372. LoginPlayer *v14; // esi
  56373. UINT v15; // eax
  56374. INT i; // [esp+10h] [ebp-34h]
  56375. int v17; // [esp+14h] [ebp-30h]
  56376.  
  56377. pthread_mutex_lock(&this->m_Lock.m_Mutex);
  56378. v1 = this->m_Head;
  56379. v2 = this->m_Tail;
  56380. if ( v1 > v2 )
  56381. v17 = this->m_Size - (v1 - v2);
  56382. else
  56383. v17 = v2 - v1;
  56384. i = 0;
  56385. this->m_ValidCount = 0;
  56386. this->m_InvalidCount = 0;
  56387. for ( j = v1; i < v17; ++i )
  56388. {
  56389. v4 = this->m_pWorldPlayerQueue[j].PlayerID;
  56390. if ( v4 == -1 || v4 > 3071 || v4 < 0 )
  56391. v5 = 0;
  56392. else
  56393. v5 = &g_pPlayerPool->m_pPlayer[v4];
  56394. if ( LoginPlayer::IsGUIDOwner(v5, this->m_pWorldPlayerQueue[j].Guid) && v5->m_Status == 312 )
  56395. {
  56396. v15 = this->m_ValidCount;
  56397. this->m_pSortPlayerQueue[v15] = &this->m_pWorldPlayerQueue[j];
  56398. this->m_ValidCount = v15 + 1;
  56399. }
  56400. else
  56401. {
  56402. ++this->m_InvalidCount;
  56403. }
  56404. v6 = j + 1;
  56405. j = 0;
  56406. if ( v6 < this->m_Size )
  56407. j = v6;
  56408. }
  56409. v7 = this->m_ValidCount;
  56410. if ( v7 > v17 )
  56411. __assert__(
  56412. "./Player/TurnPlayerQueue.cpp",
  56413. 0x144u,
  56414. "void WorldPlayerQueue::SortQueuePos()",
  56415. "nCount>=(INT)m_ValidCount");
  56416. v8 = 0;
  56417. v11 = 0;
  56418. v9 = v7 == 0;
  56419. for ( k = v7 < 0; !((unsigned __int8)(k ^ v11) | v9); k = (signed int)(this->m_ValidCount - v8) < 0 )
  56420. {
  56421. v12 = this->m_pSortPlayerQueue[v8];
  56422. if ( !v12 )
  56423. __assert__("./Player/TurnPlayerQueue.cpp", 0x148u, "void WorldPlayerQueue::SortQueuePos()", "pChild");
  56424. v13 = v12->PlayerID;
  56425. if ( v12->PlayerID == -1 || v13 > 3071 || v13 < 0 || (v14 = &g_pPlayerPool->m_pPlayer[v13]) == 0 )
  56426. __assert__("./Player/TurnPlayerQueue.cpp", 0x14Au, "void WorldPlayerQueue::SortQueuePos()", "pLoginPlayer");
  56427. LoginPlayer::SetQueuePos((int)v14, v8++ + 1);
  56428. v11 = __OFSUB__(this->m_ValidCount, v8);
  56429. v9 = this->m_ValidCount == v8;
  56430. }
  56431. WorldPlayerQueue::RePosQueue(this);
  56432. if ( this != (WorldPlayerQueue *const )-32 )
  56433. pthread_mutex_unlock(&this->m_Lock.m_Mutex);
  56434. }
  56435.  
  56436. //----- (08090BE0) --------------------------------------------------------
  56437. void __cdecl _tcf_0_132(void *a1)
  56438. {
  56439. std::ios_base::Init::~Init(&std::__ioinit);
  56440. }
  56441.  
  56442. //----- (08090BF0) --------------------------------------------------------
  56443. void __cdecl _tcf_1_3(void *a1)
  56444. {
  56445. ;
  56446. }
  56447.  
  56448. //----- (08090BF8) --------------------------------------------------------
  56449. void __cdecl _tcf_2(void *a1)
  56450. {
  56451. ;
  56452. }
  56453.  
  56454. //----- (08090C00) --------------------------------------------------------
  56455. void `global constructor keyed to'g_WorldPlayerCounter1()
  56456. {
  56457. std::ios_base::Init::Init(&std::__ioinit);
  56458. __cxa_atexit(_tcf_0_132, 0, &_dso_handle);
  56459. g_WorldPlayerCounter1.m_WorldPlayerCount = 0;
  56460. g_WorldPlayerCounter1.m_RequirePlayerCount = 1;
  56461. g_WorldPlayerCounter1.m_MaxWorldUserCount = 0;
  56462. __cxa_atexit(_tcf_1_3, 0, &_dso_handle);
  56463. g_WorldPlayerCounter.m_WorldPlayerCount = 0;
  56464. g_WorldPlayerCounter.m_RequirePlayerCount = 1;
  56465. g_WorldPlayerCounter.m_MaxWorldUserCount = 0;
  56466. __cxa_atexit(_tcf_2, 0, &_dso_handle);
  56467. }
  56468. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  56469.  
  56470. //----- (08090C90) --------------------------------------------------------
  56471. UINT __cdecl Packets::BLRetAccCheckHandler::Execute(Packets::BLRetAccCheck *pPacket, Player *pPlayer)
  56472. {
  56473. PlayerID_t v2; // bx
  56474. LoginPlayer *v3; // eax
  56475. int v5; // ecx
  56476. Packet *v6; // ebx
  56477. int v7; // ST2C_4
  56478. PlayerID_t v8; // [esp-8h] [ebp-20h]
  56479. CHAR *pAccount; // [esp+0h] [ebp-18h]
  56480. Packets::BLRetAuth *pMsg; // [esp+4h] [ebp-14h]
  56481. BYTE stats; // [esp+Bh] [ebp-Dh]
  56482.  
  56483. if ( *(_DWORD *)(*(_DWORD *)&g_pServerManager + 7480) != ThreadValueManager::GetCurrentThreadID() )
  56484. __assert__(
  56485. "./Packets/BLRetAccCheckHandler.cpp",
  56486. 0x31u,
  56487. "static UINT Packets::BLRetAccCheckHandler::Execute(Packets::BLRetAccCheck*, Player*)",
  56488. "FALSE");
  56489. if ( !pPlayer )
  56490. __assert__(
  56491. "./Packets/BLRetAccCheckHandler.cpp",
  56492. 0x34u,
  56493. "static UINT Packets::BLRetAccCheckHandler::Execute(Packets::BLRetAccCheck*, Player*)",
  56494. "pPlayer");
  56495. if ( !(*((int (__cdecl **)(Player *))pPlayer->_vptr_Player + 25))(pPlayer) )
  56496. return 2;
  56497. if ( !pPacket )
  56498. __assert__(
  56499. "./Packets/BLRetAccCheckHandler.cpp",
  56500. 0x3Au,
  56501. "static UINT Packets::BLRetAccCheckHandler::Execute(Packets::BLRetAccCheck*, Player*)",
  56502. "pPacket");
  56503. v2 = *(_WORD *)&pPacket->baseclass_0[4];
  56504. if ( v2 == -1 || v2 > 3071 || v2 < 0 || (v3 = &g_pPlayerPool->m_pPlayer[v2]) == 0 )
  56505. __assert__(
  56506. "./Packets/BLRetAccCheckHandler.cpp",
  56507. 0x42u,
  56508. "static UINT Packets::BLRetAccCheckHandler::Execute(Packets::BLRetAccCheck*, Player*)",
  56509. "FALSE");
  56510. if ( v3->m_Status != 302 )
  56511. {
  56512. CacheLog(0, "BLRetAccCheckHandler::Execute() Acc = %s PlayerID=%d... Wrong logic!", pPacket->mAccount, v2);
  56513. return 2;
  56514. }
  56515. stats = pPacket->mAccResult;
  56516. pMsg = (Packets::BLRetAuth *)PacketFactoryManager::CreatePacket(g_pPacketFactoryManager, 0x61u);
  56517. if ( !pMsg )
  56518. __assert__(
  56519. "./Packets/BLRetAccCheckHandler.cpp",
  56520. 0x50u,
  56521. "static UINT Packets::BLRetAccCheckHandler::Execute(Packets::BLRetAccCheck*, Player*)",
  56522. "pMsg");
  56523. pAccount = pPacket->mAccount;
  56524. Packets::BLRetAuth::SetAccount(pMsg, pPacket->mAccount);
  56525. if ( stats == 161 )
  56526. {
  56527. Packets::BLRetAuth::SetResult((int)pMsg, 14);
  56528. LoginPlayerManager::SendPacket(g_pLoginPlayerManager, &pMsg->0, v2, 0);
  56529. CacheLog(0, "BLRetAccCheckHandler... Acc = %s Need Web Reg Passport!", pAccount);
  56530. return 2;
  56531. }
  56532. if ( (signed int)stats > 161 )
  56533. {
  56534. if ( stats == 195 )
  56535. {
  56536. CacheLog(0, "MIBAO:BLRetAccCheckHandler... Acc = %s Wrong MIBAO value!", pAccount, 195);
  56537. Packets::BLRetAuth::SetResult((int)pMsg, 16);
  56538. }
  56539. else
  56540. {
  56541. if ( (signed int)stats <= 195 )
  56542. {
  56543. if ( stats == 178 )
  56544. {
  56545. Packets::BLRetAuth::SetResult((int)pMsg, 18);
  56546. LoginPlayerManager::SendPacket(g_pLoginPlayerManager, &pMsg->0, v2, 0);
  56547. CacheLog(0, "BLRetAccCheckHandler... Acc = %s Lock By Mobile!", pAccount);
  56548. return 2;
  56549. }
  56550. if ( (signed int)stats <= 178 )
  56551. {
  56552. if ( stats == 177 )
  56553. {
  56554. Packets::BLRetAuth::SetResult((int)pMsg, 17);
  56555. LoginPlayerManager::SendPacket(g_pLoginPlayerManager, &pMsg->0, v2, 0);
  56556. CacheLog(0, "BLRetAccCheckHandler... Acc = %s IP Is Invalid!", pAccount);
  56557. return 2;
  56558. }
  56559. goto LABEL_26;
  56560. }
  56561. if ( stats == 193 )
  56562. {
  56563. CacheLog(0, "MIBAO:BLRetAccCheckHandler... Acc = %s Not Reg MIBAO!", pAccount, pPacket);
  56564. }
  56565. else
  56566. {
  56567. if ( stats != 194 )
  56568. goto LABEL_26;
  56569. CacheLog(0, "MIBAO:BLRetAccCheckHandler... Acc = %s Reg MIBAO but not Use!", pAccount, v5);
  56570. }
  56571. Packets::BLRetAuth::SetResult((int)pMsg, 15);
  56572. LABEL_45:
  56573. v8 = v2;
  56574. LABEL_46:
  56575. LoginPlayerManager::SendPacket(g_pLoginPlayerManager, &pMsg->0, v8, 0);
  56576. return 2;
  56577. }
  56578. if ( stats != 209 )
  56579. {
  56580. if ( (signed int)stats > 209 )
  56581. {
  56582. if ( stats != 225 )
  56583. {
  56584. if ( stats != 241 )
  56585. goto LABEL_26;
  56586. if ( g_Config.m_LoginInfo.EnableLicense > 0 )
  56587. {
  56588. CacheLog(
  56589. 0,
  56590. "BLRetAccCheckHandler... Acc = %s No New License!",
  56591. pAccount,
  56592. g_Config.m_LoginInfo.EnableLicense);
  56593. Packets::BLRetAuth::SetResult((int)pMsg, 21);
  56594. pMsg->mIsFatigue = pPacket->mIsFatigue;
  56595. pMsg->mIsPhoneBind = pPacket->mIsPhoneBind;
  56596. pMsg->mIsIPBind = pPacket->mIsIPBind;
  56597. pMsg->mIsMiBaoBind = pPacket->mIsMiBaoBind;
  56598. pMsg->mIsMacBind = pPacket->mIsMacBind;
  56599. pMsg->mIsRealNameBind = pPacket->mIsRealNameBind;
  56600. pMsg->mIsInputNameBind = pPacket->mIsInputNameBind;
  56601. pMsg->mIsPhoneMiBaoBind = pPacket->mIsPhoneMiBaoBind;
  56602. pMsg->mAccTotalOnlineSecond = pPacket->mAccTotalOnlineSecond;
  56603. pMsg->mIsPilferedAccount = pPacket->mIsPilferedAccount;
  56604. LoginPlayerManager::SendPacket(g_pLoginPlayerManager, &pMsg->0, v2, 0);
  56605. return 2;
  56606. }
  56607. CacheLog(0, "BLRetAccCheckHandler... Acc = %s No New License BUT IGNORE!", pAccount, v5);
  56608. LABEL_70:
  56609. Packets::BLRetAuth::SetResult((int)pMsg, 0);
  56610. pMsg->mIsFatigue = pPacket->mIsFatigue;
  56611. pMsg->mIsPhoneBind = pPacket->mIsPhoneBind;
  56612. pMsg->mIsIPBind = pPacket->mIsIPBind;
  56613. pMsg->mIsMiBaoBind = pPacket->mIsMiBaoBind;
  56614. pMsg->mIsMacBind = pPacket->mIsMacBind;
  56615. pMsg->mIsRealNameBind = pPacket->mIsRealNameBind;
  56616. pMsg->mIsInputNameBind = pPacket->mIsInputNameBind;
  56617. pMsg->mIsPhoneMiBaoBind = pPacket->mIsPhoneMiBaoBind;
  56618. pMsg->mAccTotalOnlineSecond = pPacket->mAccTotalOnlineSecond;
  56619. pMsg->mIsPilferedAccount = pPacket->mIsPilferedAccount;
  56620. LoginPlayerManager::SendPacket(g_pLoginPlayerManager, &pMsg->0, v2, 0);
  56621. CacheLog(0, "BLRetAccCheckHandler... Acc = %s Success!", pAccount);
  56622. return 2;
  56623. }
  56624. CacheLog(0, "MIBAO:BLRetAccCheckHandler... Acc = %s Fatigue Only One!", pAccount, v5);
  56625. Packets::BLRetAuth::SetResult((int)pMsg, 19);
  56626. }
  56627. else if ( stats == 197 )
  56628. {
  56629. CacheLog(0, "MIBAO:BLRetAccCheckHandler... Acc = %s Phone MIBAO NoActive!", pAccount, v5);
  56630. Packets::BLRetAuth::SetResult((int)pMsg, 27);
  56631. }
  56632. else
  56633. {
  56634. if ( stats != 198 )
  56635. goto LABEL_26;
  56636. CacheLog(0, "MIBAO:BLRetAccCheckHandler... Acc = %s Must use Phone!");
  56637. Packets::BLRetAuth::SetResult((int)pMsg, 29);
  56638. }
  56639. goto LABEL_45;
  56640. }
  56641. CacheLog(0, "MIBAO:BLRetAccCheckHandler... Acc = %s Wrong MAC md5 value!", pAccount, 209);
  56642. Packets::BLRetAuth::SetResult((int)pMsg, 20);
  56643. }
  56644. v8 = v2;
  56645. goto LABEL_46;
  56646. }
  56647. if ( stats == 5 )
  56648. {
  56649. Packets::BLRetAuth::SetResult((int)pMsg, 5);
  56650. strncpy(pMsg->mIP, pPacket->mIP, 0xFu);
  56651. LoginPlayerManager::SendPacket(g_pLoginPlayerManager, &pMsg->0, v2, 0);
  56652. CacheLog(0, "BLRetAccCheckHandler... Acc = %s Other Char Online!", pAccount);
  56653. return 2;
  56654. }
  56655. if ( (signed int)stats > 5 )
  56656. {
  56657. if ( stats == 8 )
  56658. {
  56659. Packets::BLRetAuth::SetResult((int)pMsg, 3);
  56660. LoginPlayerManager::SendPacket(g_pLoginPlayerManager, &pMsg->0, v2, 0);
  56661. CacheLog(0, "BLRetAccCheckHandler... Acc = %s Insufficient Point!", pAccount);
  56662. return 2;
  56663. }
  56664. if ( (signed int)stats > 8 )
  56665. {
  56666. if ( stats == 9 )
  56667. {
  56668. Packets::BLRetAuth::SetResult((int)pMsg, 9);
  56669. LoginPlayerManager::SendPacket(g_pLoginPlayerManager, &pMsg->0, v2, 0);
  56670. CacheLog(0, "BLRetAccCheckHandler... Acc = %s Need Reg Passport!", pAccount);
  56671. return 2;
  56672. }
  56673. if ( stats == 160 )
  56674. {
  56675. Packets::BLRetAuth::SetResult((int)pMsg, 13);
  56676. LoginPlayerManager::SendPacket(g_pLoginPlayerManager, &pMsg->0, v2, 0);
  56677. CacheLog(0, "BLRetAccCheckHandler... Acc = %s Need Active acc!", pAccount);
  56678. return 2;
  56679. }
  56680. }
  56681. else
  56682. {
  56683. if ( stats == 6 )
  56684. {
  56685. Packets::BLRetAuth::SetResult((int)pMsg, 6);
  56686. LoginPlayerManager::SendPacket(g_pLoginPlayerManager, &pMsg->0, v2, 0);
  56687. CacheLog(0, "BLRetAccCheckHandler... Acc = %s Other Error!", pAccount);
  56688. return 2;
  56689. }
  56690. if ( stats == 7 )
  56691. {
  56692. Packets::BLRetAuth::SetResult((int)pMsg, 7);
  56693. LoginPlayerManager::SendPacket(g_pLoginPlayerManager, &pMsg->0, v2, 0);
  56694. CacheLog(0, "BLRetAccCheckHandler... Acc = %s Forbid logon!", pAccount);
  56695. return 2;
  56696. }
  56697. }
  56698. goto LABEL_26;
  56699. }
  56700. if ( stats == 2 )
  56701. {
  56702. Packets::BLRetAuth::SetResult((int)pMsg, 1);
  56703. LoginPlayerManager::SendPacket(g_pLoginPlayerManager, &pMsg->0, v2, 0);
  56704. CacheLog(0, "BLRetAccCheckHandler... Acc = %s Not Exist!", pAccount);
  56705. return 2;
  56706. }
  56707. if ( (signed int)stats > 2 )
  56708. {
  56709. if ( stats == 3 )
  56710. {
  56711. Packets::BLRetAuth::SetResult((int)pMsg, 1);
  56712. LoginPlayerManager::SendPacket(g_pLoginPlayerManager, &pMsg->0, v2, 0);
  56713. CacheLog(0, "BLRetAccCheckHandler... Acc = %s Wrong password!", pAccount);
  56714. return 2;
  56715. }
  56716. if ( stats == 4 )
  56717. {
  56718. Packets::BLRetAuth::SetResult((int)pMsg, 8);
  56719. LoginPlayerManager::SendPacket(g_pLoginPlayerManager, &pMsg->0, v2, 0);
  56720. v6 = PacketFactoryManager::CreatePacket(g_pPacketFactoryManager, 0x1B8u);
  56721. Packets::LWNotifyUser::SetAccount((Packets::LWNotifyUser *const )v6, pAccount);
  56722. *(_DWORD *)&v6[5].m_Index = 2;
  56723. v6[5].m_fromWhere = 0;
  56724. ServerManager::SendPacket(*(ServerManager *const *)&g_pServerManager, v6, 0, 0);
  56725. CacheLog(0, "BLRetAccCheckHandler... Acc = %s send kick request to world!", pAccount);
  56726. CacheLog(0, "BLRetAccCheckHandler... Acc = %s Char Online!", pAccount, v7);
  56727. return 2;
  56728. }
  56729. goto LABEL_26;
  56730. }
  56731. if ( stats == 1 )
  56732. goto LABEL_70;
  56733. LABEL_26:
  56734. CacheLog(0, "BLRetAccCheckHandler... Acc = %s Unknow Result(0x%02X)!", pAccount, stats);
  56735. PacketFactoryManager::RemovePacket(g_pPacketFactoryManager, &pMsg->0);
  56736. return 2;
  56737. }
  56738.  
  56739. //----- (08091474) --------------------------------------------------------
  56740. void __cdecl _tcf_0_133(void *a1)
  56741. {
  56742. std::ios_base::Init::~Init(&std::__ioinit);
  56743. }
  56744.  
  56745. //----- (08091484) --------------------------------------------------------
  56746. void `global constructor keyed to'Packets::BLRetAccCheckHandler::Execute()
  56747. {
  56748. std::ios_base::Init::Init(&std::__ioinit);
  56749. __cxa_atexit(_tcf_0_133, 0, &_dso_handle);
  56750. }
  56751. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  56752.  
  56753. //----- (080914B0) --------------------------------------------------------
  56754. UINT __cdecl Packets::BLRetAuthHandler::Execute(Packets::BLRetAuth *pPacket, Player *pPlayer)
  56755. {
  56756. PlayerID_t v2; // ax
  56757. PlayerID_t v3; // bx
  56758. LoginPlayer *v4; // eax
  56759. UINT result; // eax
  56760. int v6; // edx
  56761. const CHAR *v7; // ST38_4
  56762. const char *v8; // ebx
  56763. const char *v9; // eax
  56764. const CHAR *v10; // ST3C_4
  56765. const CHAR *v11; // ST38_4
  56766. const char *v12; // ebx
  56767. const char *v13; // eax
  56768. const CHAR *v14; // ebx
  56769. INT v15; // ST3C_4
  56770. const CHAR *v16; // eax
  56771. double v17; // ST2C_8
  56772. double v18; // ST24_8
  56773. CHAR *v19; // ST20_4
  56774. CHAR *v20; // ST1C_4
  56775. const CHAR *v21; // eax
  56776. const CHAR *v22; // ST3C_4
  56777. const CHAR *v23; // eax
  56778. const CHAR *v24; // eax
  56779. Player *v25; // eax
  56780. LoginPlayer *v26; // esi
  56781. Packet *v27; // ebx
  56782. const CHAR *v28; // eax
  56783. const CHAR *v29; // ST3C_4
  56784. const CHAR *v30; // ST38_4
  56785. int v31; // eax
  56786. UINT v32; // ebx
  56787. char *v33; // edi
  56788. BOOL v34; // eax
  56789. char *v35; // edx
  56790. BOOL v36; // eax
  56791. char *v37; // edx
  56792. BOOL v38; // eax
  56793. char *v39; // edx
  56794. BOOL v40; // eax
  56795. char *v41; // edx
  56796. BOOL v42; // eax
  56797. char *v43; // edx
  56798. BOOL v44; // eax
  56799. char *v45; // edx
  56800. BOOL v46; // eax
  56801. char *v47; // edx
  56802. char *v48; // ST14_4
  56803. const CHAR *v49; // eax
  56804. const CHAR *v50; // eax
  56805. int v51; // eax
  56806. int v52; // ST30_4
  56807. PlayerID_t v53; // bx
  56808. const CHAR *v54; // eax
  56809. int v55; // eax
  56810. const CHAR *v56; // eax
  56811. int (**v57)(...); // eax
  56812. int v58; // ST30_4
  56813. LoginPlayer *v59; // edx
  56814. INT v60; // eax
  56815. const CHAR *v61; // eax
  56816. int v62; // eax
  56817. const CHAR *v63; // eax
  56818. const CHAR *v64; // eax
  56819. const CHAR *v65; // eax
  56820. const CHAR *v66; // eax
  56821. const CHAR *v67; // eax
  56822. const CHAR *v68; // eax
  56823. int v69; // eax
  56824. const CHAR *v70; // eax
  56825. char *v71; // [esp-28h] [ebp-D0h]
  56826. char *v72; // [esp-24h] [ebp-CCh]
  56827. char *v73; // [esp-20h] [ebp-C8h]
  56828. char *v74; // [esp-1Ch] [ebp-C4h]
  56829. char *v75; // [esp-18h] [ebp-C0h]
  56830. char *v76; // [esp-14h] [ebp-BCh]
  56831. int v77; // [esp-10h] [ebp-B8h]
  56832. int v78; // [esp-4h] [ebp-ACh]
  56833. LoginPlayer *pLoginPlayer; // [esp+8h] [ebp-A0h]
  56834. UINT QueuePos; // [esp+Ch] [ebp-9Ch]
  56835. Packets::LCStatus errMsg; // [esp+10h] [ebp-98h]
  56836. Packets::LCRetLogin Msg; // [esp+30h] [ebp-78h]
  56837.  
  56838. if ( !pPlayer )
  56839. __assert__(
  56840. "./Packets/BLRetAuthHandler.cpp",
  56841. 0x1Au,
  56842. "static UINT Packets::BLRetAuthHandler::Execute(Packets::BLRetAuth*, Player*)",
  56843. "pPlayer");
  56844. if ( (*((int (__cdecl **)(Player *))pPlayer->_vptr_Player + 24))(pPlayer) )
  56845. {
  56846. v2 = Packets::BLRetAuth::GetPlayerID((int)pPacket);
  56847. v3 = v2;
  56848. if ( v2 == -1 || v2 > 3071 || v2 < 0 )
  56849. v4 = 0;
  56850. else
  56851. v4 = &g_pPlayerPool->m_pPlayer[v2];
  56852. pLoginPlayer = v4;
  56853. if ( !v4 )
  56854. __assert__(
  56855. "./Packets/BLRetAuthHandler.cpp",
  56856. 0x22u,
  56857. "static UINT Packets::BLRetAuthHandler::Execute(Packets::BLRetAuth*, Player*)",
  56858. "FALSE");
  56859. }
  56860. else
  56861. {
  56862. if ( !(*((int (__cdecl **)(Player *))pPlayer->_vptr_Player + 23))(pPlayer) )
  56863. __assert__(
  56864. "./Packets/BLRetAuthHandler.cpp",
  56865. 0x33u,
  56866. "static UINT Packets::BLRetAuthHandler::Execute(Packets::BLRetAuth*, Player*)",
  56867. "FALSE");
  56868. v3 = (PlayerID_t)pPlayer[1].m_pSocketInputStream;
  56869. pLoginPlayer = (LoginPlayer *)pPlayer;
  56870. if ( !pPlayer )
  56871. __assert__(
  56872. "./Packets/BLRetAuthHandler.cpp",
  56873. 0x2Du,
  56874. "static UINT Packets::BLRetAuthHandler::Execute(Packets::BLRetAuth*, Player*)",
  56875. "FALSE");
  56876. }
  56877. v6 = ThreadValueManager::GetCurrentThreadID();
  56878. if ( *(_DWORD *)(*(_DWORD *)&g_pServerManager + 7480) == v6 )
  56879. {
  56880. result = 2;
  56881. if ( pLoginPlayer->m_Status == 302 )
  56882. {
  56883. LoginPlayerManager::SendPacket(g_pLoginPlayerManager, &pPacket->0, v3, 0);
  56884. result = 3;
  56885. }
  56886. }
  56887. else
  56888. {
  56889. if ( g_pLoginPlayerManager->m_ThreadID != v6 )
  56890. {
  56891. if ( g_pProcessPlayerManager->m_ThreadID != v6 )
  56892. {
  56893. LABEL_15:
  56894. v7 = LoginPlayer::GetAccount(pLoginPlayer);
  56895. CacheLog(0, "BLRetAuthHandler::Execute()....OK! acc = %s ", v7, v78);
  56896. return 2;
  56897. }
  56898. v8 = Packets::BLRetAuth::GetAccount(pPacket);
  56899. v9 = LoginPlayer::GetAccount(pLoginPlayer);
  56900. if ( strcmp(v9, v8) )
  56901. {
  56902. v10 = Packets::BLRetAuth::GetAccount(pPacket);
  56903. v11 = LoginPlayer::GetAccount(pLoginPlayer);
  56904. CacheLog(0, "ERROR: BLRetAuthHandler::Execute Process Errors,acc = %s,Packet acc = %s", v11, v10);
  56905. return 2;
  56906. }
  56907. if ( !ProcessPlayerManager::AddPlayer(g_pProcessPlayerManager, &pLoginPlayer->0) )
  56908. {
  56909. v22 = Packets::BLRetAuth::GetAccount(pPacket);
  56910. v23 = LoginPlayer::GetAccount(pLoginPlayer);
  56911. CacheLog(0, "ERROR: BLRetAuthHandler::Execute Process Errors,acc = %s,Packet acc = %s maybe online", v23, v22);
  56912. v24 = LoginPlayer::GetAccount(pLoginPlayer);
  56913. v25 = ProcessPlayerManager::FindAccName(g_pProcessPlayerManager, v24);
  56914. v26 = (LoginPlayer *)v25;
  56915. if ( v25 )
  56916. {
  56917. if ( v25[2].m_pSocket != (Socket *)310 )
  56918. {
  56919. v27 = PacketFactoryManager::CreatePacket(g_pPacketFactoryManager, 0x1B8u);
  56920. v28 = LoginPlayer::GetAccount(v26);
  56921. Packets::LWNotifyUser::SetAccount((Packets::LWNotifyUser *const )v27, v28);
  56922. *(_DWORD *)&v27[5].m_Index = 2;
  56923. v27[5].m_fromWhere = LoginPlayer::GetUserKey((int)v26);
  56924. ServerManager::SendPacket(*(ServerManager *const *)&g_pServerManager, v27, 0, 0);
  56925. }
  56926. v26->m_Status = 310;
  56927. }
  56928. return 0;
  56929. }
  56930. v31 = rand();
  56931. LoginPlayer::SetUserKey((int)pLoginPlayer, v31);
  56932. v32 = pLoginPlayer->m_AccountTotalOnlineTime;
  56933. v33 = "Y";
  56934. if ( !pLoginPlayer->m_FatigueSign )
  56935. v33 = "N";
  56936. v77 = (unsigned __int16)LoginPlayer::GetIsPilferedAccount((int)pLoginPlayer);
  56937. v34 = LoginPlayer::GetPhoneMiBaoBind((int)pLoginPlayer);
  56938. v35 = "Y";
  56939. if ( !v34 )
  56940. v35 = "N";
  56941. v76 = v35;
  56942. v36 = LoginPlayer::GetInputNameBind((int)pLoginPlayer);
  56943. v37 = "Y";
  56944. if ( !v36 )
  56945. v37 = "N";
  56946. v75 = v37;
  56947. v38 = LoginPlayer::GetRealNameBind((int)pLoginPlayer);
  56948. v39 = "Y";
  56949. if ( !v38 )
  56950. v39 = "N";
  56951. v74 = v39;
  56952. v40 = LoginPlayer::GetMacBind((int)pLoginPlayer);
  56953. v41 = "Y";
  56954. if ( !v40 )
  56955. v41 = "N";
  56956. v73 = v41;
  56957. v42 = LoginPlayer::GetMiBaoBind((int)pLoginPlayer);
  56958. v43 = "Y";
  56959. if ( !v42 )
  56960. v43 = "N";
  56961. v72 = v43;
  56962. v44 = LoginPlayer::GetIPBind((int)pLoginPlayer);
  56963. v45 = "Y";
  56964. if ( !v44 )
  56965. v45 = "N";
  56966. v71 = v45;
  56967. v46 = LoginPlayer::GetPhoneBind((int)pLoginPlayer);
  56968. v47 = "Y";
  56969. if ( !v46 )
  56970. v47 = "N";
  56971. v48 = v47;
  56972. v49 = LoginPlayer::GetAccount(pLoginPlayer);
  56973. CacheLog(
  56974. 0,
  56975. "BLRetAuthHandler Acc=%s, SetAccFatigueSign=%s, SetAccOnlineTime=%us,PhoneBind=%s,\t\t\t\t\t\t\t IPBind=%s,MiBaoB"
  56976. "ind=%s,MacBind=%s,ReadNameBind=%s,InputNameBind=%s,PhoneMiBaoBind=%s,IsPilfered=%d",
  56977. v49,
  56978. v33,
  56979. v32,
  56980. v48,
  56981. v71,
  56982. v72,
  56983. v73,
  56984. v74,
  56985. v75,
  56986. v76,
  56987. v77);
  56988. Packet::Packet((int)&Msg);
  56989. Msg._vptr_Packet = (int (**)(...))off_80CED48;
  56990. Msg.mSafeSign.m_Sign = 0;
  56991. memset(Msg.mIP, 0, sizeof(Msg.mIP));
  56992. v50 = LoginPlayer::GetAccount(pLoginPlayer);
  56993. Packets::LCRetLogin::SetAccount(&Msg, v50);
  56994. v51 = Packets::BLRetAuth::GetResult((int)pPacket);
  56995. Packets::LCRetLogin::SetResult((int)&Msg, v51);
  56996. (*((void (__fastcall **)(int))pLoginPlayer->_vptr_Player + 3))(v52);
  56997. v53 = pLoginPlayer->m_PID;
  56998. v54 = LoginPlayer::GetAccount(pLoginPlayer);
  56999. if ( TurnPlayerQueue::AddInPlayer(g_pProcessPlayerQueue, v53, v54, &QueuePos) )
  57000. {
  57001. pLoginPlayer->m_Status = 307;
  57002. v55 = TimeManager::CurrentTime((int)g_pTimeManager);
  57003. LoginPlayer::SetLastSendTurnTime((int)pLoginPlayer, v55);
  57004. Msg._vptr_Packet = (int (**)(...))off_80CED48;
  57005. Packet::~Packet(&Msg);
  57006. goto LABEL_15;
  57007. }
  57008. v56 = LoginPlayer::GetAccount(pLoginPlayer);
  57009. CacheLog(0, "ERROR: BLRetAuthHandler Reach MAX_TURN_PLAYER Acc = %s", v56);
  57010. pLoginPlayer->m_Status = 316;
  57011. Packet::Packet((int)&errMsg);
  57012. errMsg._vptr_Packet = (int (**)(...))off_80CF048;
  57013. v57 = pLoginPlayer->_vptr_Player;
  57014. errMsg.ClientStatus = 2;
  57015. ((void (__fastcall *)(int))v57[3])(v58);
  57016. LoginPlayer::TrigerDisconnectCountDown(pLoginPlayer, 0xBB8u);
  57017. errMsg._vptr_Packet = (int (**)(...))off_80CF048;
  57018. Packet::~Packet(&errMsg);
  57019. goto LABEL_64;
  57020. }
  57021. v12 = Packets::BLRetAuth::GetAccount(pPacket);
  57022. v13 = LoginPlayer::GetAccount(pLoginPlayer);
  57023. if ( strcmp(v13, v12) )
  57024. {
  57025. v29 = Packets::BLRetAuth::GetAccount(pPacket);
  57026. v30 = LoginPlayer::GetAccount(pLoginPlayer);
  57027. CacheLog(0, "ERROR: BLRetAuthHandler::Execute Errors,acc = %s,Packet acc = %s", v30, v29);
  57028. return 2;
  57029. }
  57030. if ( pLoginPlayer->m_Status != 302 )
  57031. goto LABEL_15;
  57032. v14 = pLoginPlayer->m_pSocket->m_Host;
  57033. v15 = Packets::BLRetAuth::GetResult((int)pPacket);
  57034. v16 = Packets::BLRetAuth::GetAccount(pPacket);
  57035. ReLoginManager::SetPwdCheck(g_pReLoginManager, v16, v14, v15);
  57036. if ( Packets::BLRetAuth::GetResult((int)pPacket) && Packets::BLRetAuth::GetResult((int)pPacket) != 10 )
  57037. {
  57038. if ( Packets::BLRetAuth::GetResult((int)pPacket) != 25 && Packets::BLRetAuth::GetResult((int)pPacket) != 26 )
  57039. {
  57040. if ( Packets::BLRetAuth::GetResult((int)pPacket) == 9 )
  57041. {
  57042. Packet::Packet((int)&Msg);
  57043. Msg._vptr_Packet = (int (**)(...))off_80CED48;
  57044. Msg.mSafeSign.m_Sign = 0;
  57045. memset(Msg.mIP, 0, sizeof(Msg.mIP));
  57046. v66 = LoginPlayer::GetAccount(pLoginPlayer);
  57047. Packets::LCRetLogin::SetAccount(&Msg, v66);
  57048. Packets::LCRetLogin::SetResult((int)&Msg, 9);
  57049. (*((void (__cdecl **)(LoginPlayer *, Packets::LCRetLogin *))pLoginPlayer->_vptr_Player + 3))(
  57050. pLoginPlayer,
  57051. &Msg);
  57052. pLoginPlayer->m_Status = 303;
  57053. v67 = LoginPlayer::GetAccount(pLoginPlayer);
  57054. CacheLog(0, "REG: BLRetAuthHandler Wait Client Send PassPort Reg Info acc=%s", v67);
  57055. }
  57056. else if ( Packets::BLRetAuth::GetResult((int)pPacket) == 21 )
  57057. {
  57058. Packet::Packet((int)&Msg);
  57059. Msg._vptr_Packet = (int (**)(...))off_80CED48;
  57060. Msg.mSafeSign.m_Sign = 0;
  57061. memset(Msg.mIP, 0, sizeof(Msg.mIP));
  57062. v64 = LoginPlayer::GetAccount(pLoginPlayer);
  57063. Packets::LCRetLogin::SetAccount(&Msg, v64);
  57064. Packets::LCRetLogin::SetResult((int)&Msg, 21);
  57065. (*((void (__cdecl **)(LoginPlayer *, Packets::LCRetLogin *))pLoginPlayer->_vptr_Player + 3))(
  57066. pLoginPlayer,
  57067. &Msg);
  57068. pLoginPlayer->m_Status = 313;
  57069. LoginPlayer::SetAccFatigueSign((int)pLoginPlayer, pPacket->mIsFatigue);
  57070. LoginPlayer::SetAccOnlineTime((int)pLoginPlayer, pPacket->mAccTotalOnlineSecond);
  57071. LoginPlayer::SetPhoneBind(pLoginPlayer, pPacket->mIsPhoneBind);
  57072. LoginPlayer::SetIPBind(pLoginPlayer, pPacket->mIsIPBind);
  57073. LoginPlayer::SetMiBaoBind(pLoginPlayer, pPacket->mIsMiBaoBind);
  57074. LoginPlayer::SetMacBind(pLoginPlayer, pPacket->mIsMacBind);
  57075. LoginPlayer::SetRealNameBind(pLoginPlayer, pPacket->mIsRealNameBind);
  57076. LoginPlayer::SetInputNameBind(pLoginPlayer, pPacket->mIsInputNameBind);
  57077. LoginPlayer::SetPhoneMiBaoBind(pLoginPlayer, pPacket->mIsPhoneMiBaoBind);
  57078. LoginPlayer::SetIsPilferedAccount((int)pLoginPlayer, pPacket->mIsPilferedAccount);
  57079. v65 = LoginPlayer::GetAccount(pLoginPlayer);
  57080. CacheLog(0, "BLRetAuthHandler Wait Client Send New License Info acc=%s", v65);
  57081. }
  57082. else
  57083. {
  57084. if ( Packets::BLRetAuth::GetResult((int)pPacket) != 1
  57085. && Packets::BLRetAuth::GetResult((int)pPacket) != 16
  57086. && Packets::BLRetAuth::GetResult((int)pPacket) != 20 )
  57087. {
  57088. if ( Packets::BLRetAuth::GetResult((int)pPacket) == 27 )
  57089. {
  57090. v70 = LoginPlayer::GetAccount(pLoginPlayer);
  57091. ReLoginManager::ResetAccReLogin(g_pReLoginManager, v70);
  57092. }
  57093. Packet::Packet((int)&Msg);
  57094. Msg._vptr_Packet = (int (**)(...))off_80CED48;
  57095. Msg.mSafeSign.m_Sign = 0;
  57096. memset(Msg.mIP, 0, sizeof(Msg.mIP));
  57097. v68 = LoginPlayer::GetAccount(pLoginPlayer);
  57098. Packets::LCRetLogin::SetAccount(&Msg, v68);
  57099. v69 = Packets::BLRetAuth::GetResult((int)pPacket);
  57100. Packets::LCRetLogin::SetResult((int)&Msg, v69);
  57101. strncpy(Msg.mIP, pPacket->mIP, 0xFu);
  57102. (*((void (__cdecl **)(LoginPlayer *, Packets::LCRetLogin *))pLoginPlayer->_vptr_Player + 3))(
  57103. pLoginPlayer,
  57104. &Msg);
  57105. LABEL_64:
  57106. Msg._vptr_Packet = (int (**)(...))off_80CED48;
  57107. Packet::~Packet(&Msg);
  57108. return 2;
  57109. }
  57110. v60 = LoginPlayer::GetWrongPWCount((int)pLoginPlayer);
  57111. LoginPlayer::SetWrongPWCount((int)pLoginPlayer, v60 + 1);
  57112. Packet::Packet((int)&Msg);
  57113. Msg._vptr_Packet = (int (**)(...))off_80CED48;
  57114. Msg.mSafeSign.m_Sign = 0;
  57115. memset(Msg.mIP, 0, sizeof(Msg.mIP));
  57116. v61 = LoginPlayer::GetAccount(pLoginPlayer);
  57117. Packets::LCRetLogin::SetAccount(&Msg, v61);
  57118. v62 = Packets::BLRetAuth::GetResult((int)pPacket);
  57119. Packets::LCRetLogin::SetResult((int)&Msg, v62);
  57120. (*((void (__cdecl **)(LoginPlayer *))pLoginPlayer->_vptr_Player + 3))(pLoginPlayer);
  57121. if ( LoginPlayer::GetWrongPWCount((int)pLoginPlayer) > 2 )
  57122. {
  57123. v63 = LoginPlayer::GetAccount(pLoginPlayer);
  57124. CacheLog(0, "ERROR: BLRetAuthHandler Reach Max Password Wrong Times acc=%s", v63);
  57125. Msg._vptr_Packet = (int (**)(...))off_80CED48;
  57126. Packet::~Packet(&Msg);
  57127. return 0;
  57128. }
  57129. }
  57130. Msg._vptr_Packet = (int (**)(...))off_80CED48;
  57131. Packet::~Packet(&Msg);
  57132. return 2;
  57133. }
  57134. Packets::BLRetAuth::SetResult((int)pPacket, 0);
  57135. v59 = pLoginPlayer;
  57136. pLoginPlayer->m_Status = 305;
  57137. }
  57138. else
  57139. {
  57140. LoginPlayer::SetAccFatigueSign((int)pLoginPlayer, pPacket->mIsFatigue);
  57141. LoginPlayer::SetAccOnlineTime((int)pLoginPlayer, pPacket->mAccTotalOnlineSecond);
  57142. LoginPlayer::SetPhoneBind(pLoginPlayer, pPacket->mIsPhoneBind);
  57143. LoginPlayer::SetIPBind(pLoginPlayer, pPacket->mIsIPBind);
  57144. LoginPlayer::SetMiBaoBind(pLoginPlayer, pPacket->mIsMiBaoBind);
  57145. LoginPlayer::SetMacBind(pLoginPlayer, pPacket->mIsMacBind);
  57146. LoginPlayer::SetRealNameBind(pLoginPlayer, pPacket->mIsRealNameBind);
  57147. LoginPlayer::SetInputNameBind(pLoginPlayer, pPacket->mIsInputNameBind);
  57148. LoginPlayer::SetPhoneMiBaoBind(pLoginPlayer, pPacket->mIsPhoneMiBaoBind);
  57149. LoginPlayer::SetIsPilferedAccount((int)pLoginPlayer, pPacket->mIsPilferedAccount);
  57150. if ( pLoginPlayer
  57151. && (LoginPlayer::GetCPUInformation(pLoginPlayer) || LoginPlayer::GetVideoInformation(pLoginPlayer)) )
  57152. {
  57153. v17 = pLoginPlayer->m_fPhyMemory;
  57154. v18 = pLoginPlayer->m_fLocalVideoMemory;
  57155. v19 = LoginPlayer::GetVideoInformation(pLoginPlayer);
  57156. v20 = LoginPlayer::GetCPUInformation(pLoginPlayer);
  57157. v21 = LoginPlayer::GetAccount(pLoginPlayer);
  57158. CacheLog(26, "%s,%s,%s @ %f,%f", v21, v20, v19, v18, v17);
  57159. }
  57160. pLoginPlayer->m_Status = 305;
  57161. v59 = pLoginPlayer;
  57162. }
  57163. LoginPlayerManager::DelPlayer(g_pLoginPlayerManager, v59->m_PID);
  57164. ProcessManager::SendPacket(g_pProcessManager, &pPacket->0, pLoginPlayer->m_PID, 0);
  57165. pLoginPlayer->m_Status = 306;
  57166. result = 3;
  57167. }
  57168. return result;
  57169. }
  57170. // 80CED48: using guessed type _DWORD (__cdecl *off_80CED48[2])(Packets::LCRetLogin *this);
  57171. // 80CF048: using guessed type _DWORD (__cdecl *off_80CF048[2])(Packets::LCStatus *this);
  57172.  
  57173. //----- (08092360) --------------------------------------------------------
  57174. void __cdecl _tcf_0_134(void *a1)
  57175. {
  57176. std::ios_base::Init::~Init(&std::__ioinit);
  57177. }
  57178.  
  57179. //----- (08092370) --------------------------------------------------------
  57180. void `global constructor keyed to'Packets::BLRetAuthHandler::Execute()
  57181. {
  57182. std::ios_base::Init::Init(&std::__ioinit);
  57183. __cxa_atexit(_tcf_0_134, 0, &_dso_handle);
  57184. }
  57185. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  57186.  
  57187. //----- (0809239C) --------------------------------------------------------
  57188. UINT __cdecl Packets::BLRetBillingEndHandler::Execute(Packets::BLRetBillingEnd *pPacket, Player *pPlayer)
  57189. {
  57190. Player *v2; // eax
  57191. Packets::LWRetBillingEnd Msg; // [esp+0h] [ebp-58h]
  57192.  
  57193. if ( !pPlayer )
  57194. __assert__(
  57195. "./Packets/BLRetBillingEndHandler.cpp",
  57196. 0x13u,
  57197. "static UINT Packets::BLRetBillingEndHandler::Execute(Packets::BLRetBillingEnd*, Player*)",
  57198. "pPlayer");
  57199. if ( (*((int (__cdecl **)(Player *))pPlayer->_vptr_Player + 25))(pPlayer) )
  57200. {
  57201. if ( !pPacket )
  57202. __assert__(
  57203. "./Packets/BLRetBillingEndHandler.cpp",
  57204. 0x19u,
  57205. "static UINT Packets::BLRetBillingEndHandler::Execute(Packets::BLRetBillingEnd*, Player*)",
  57206. "pPacket");
  57207. Packet::Packet((int)&Msg);
  57208. Msg._vptr_Packet = (int (**)(...))off_80CF3A8;
  57209. memset(Msg.mAccount, 0, 0x30u);
  57210. *(_WORD *)&Msg.mAccount[48] = 0;
  57211. Msg.mAccount[50] = 0;
  57212. strncpy(Msg.mAccount, pPacket->mAccount, 0x32u);
  57213. Msg.mResult = pPacket->mResult;
  57214. v2 = ServerManager::GetServerPlayer(*(ServerManager *const *)&g_pServerManager, 0);
  57215. if ( v2 )
  57216. (*((void (__cdecl **)(Player *, Packets::LWRetBillingEnd *))v2->_vptr_Player + 3))(v2, &Msg);
  57217. CacheLog(
  57218. 0,
  57219. "BLRetBillingEnd::Execute()...Acc=%s Billing End Result = %d ",
  57220. pPacket->mAccount,
  57221. pPacket->mResult,
  57222. Msg._vptr_Packet);
  57223. Msg._vptr_Packet = (int (**)(...))off_80CF3A8;
  57224. Packet::~Packet(&Msg);
  57225. }
  57226. return 2;
  57227. }
  57228. // 80CF3A8: using guessed type _DWORD (__cdecl *off_80CF3A8[2])(Packets::LWRetBillingEnd *this);
  57229.  
  57230. //----- (0809250C) --------------------------------------------------------
  57231. void __cdecl _tcf_0_135(void *a1)
  57232. {
  57233. std::ios_base::Init::~Init(&std::__ioinit);
  57234. }
  57235.  
  57236. //----- (0809251C) --------------------------------------------------------
  57237. void `global constructor keyed to'Packets::BLRetBillingEndHandler::Execute()
  57238. {
  57239. std::ios_base::Init::Init(&std::__ioinit);
  57240. __cxa_atexit(_tcf_0_135, 0, &_dso_handle);
  57241. }
  57242. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  57243.  
  57244. //----- (08092548) --------------------------------------------------------
  57245. UINT __cdecl Packets::BLRetBillingKeepHandler::Execute(Packets::BLRetBillingKeep *pPacket, Player *pPlayer)
  57246. {
  57247. Player *v2; // eax
  57248. UINT v3; // ST18_4
  57249. UINT v4; // ST14_4
  57250. Packets::LWRetBillingKeep Msg; // [esp+0h] [ebp-68h]
  57251.  
  57252. if ( !pPlayer )
  57253. __assert__(
  57254. "./Packets/BLRetBillingKeepHandler.cpp",
  57255. 0xCu,
  57256. "static UINT Packets::BLRetBillingKeepHandler::Execute(Packets::BLRetBillingKeep*, Player*)",
  57257. "pPlayer");
  57258. if ( (*((int (__cdecl **)(Player *))pPlayer->_vptr_Player + 25))(pPlayer) )
  57259. {
  57260. if ( !pPacket )
  57261. __assert__(
  57262. "./Packets/BLRetBillingKeepHandler.cpp",
  57263. 0x12u,
  57264. "static UINT Packets::BLRetBillingKeepHandler::Execute(Packets::BLRetBillingKeep*, Player*)",
  57265. "pPacket");
  57266. Packet::Packet((int)&Msg);
  57267. Msg._vptr_Packet = (int (**)(...))off_80CF528;
  57268. memset(Msg.mAccount, 0, 0x30u);
  57269. *(_WORD *)&Msg.mAccount[48] = 0;
  57270. Msg.mAccount[50] = 0;
  57271. strncpy(Msg.mAccount, pPacket->mAccount, 0x32u);
  57272. Msg.mResult = pPacket->mResult;
  57273. Msg.mLeftTime = pPacket->mLeftTime;
  57274. Msg.mStorePoint = pPacket->mStorePoint;
  57275. Msg.mUserPoint = pPacket->mUserPoint;
  57276. v2 = ServerManager::GetServerPlayer(*(ServerManager *const *)&g_pServerManager, 0);
  57277. if ( v2 )
  57278. (*((void (__cdecl **)(Player *, Packets::LWRetBillingKeep *))v2->_vptr_Player + 3))(v2, &Msg);
  57279. v3 = pPacket->mUserPoint;
  57280. v4 = pPacket->mStorePoint;
  57281. CacheLog(
  57282. 0,
  57283. "BLRetBillingKeep::Execute()...Acc=%s BillingKeep Result = %d,lt=%d,sp=%d,up=%d",
  57284. pPacket->mAccount,
  57285. pPacket->mResult,
  57286. pPacket->mLeftTime);
  57287. Msg._vptr_Packet = (int (**)(...))off_80CF528;
  57288. Packet::~Packet(&Msg);
  57289. }
  57290. return 2;
  57291. }
  57292. // 80CF528: using guessed type _DWORD (__cdecl *off_80CF528[2])(Packets::LWRetBillingKeep *this);
  57293.  
  57294. //----- (080926D4) --------------------------------------------------------
  57295. void __cdecl _tcf_0_136(void *a1)
  57296. {
  57297. std::ios_base::Init::~Init(&std::__ioinit);
  57298. }
  57299.  
  57300. //----- (080926E4) --------------------------------------------------------
  57301. void `global constructor keyed to'Packets::BLRetBillingKeepHandler::Execute()
  57302. {
  57303. std::ios_base::Init::Init(&std::__ioinit);
  57304. __cxa_atexit(_tcf_0_136, 0, &_dso_handle);
  57305. }
  57306. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  57307.  
  57308. //----- (08092710) --------------------------------------------------------
  57309. UINT __cdecl Packets::BLRetBillingStartHandler::Execute(Packets::BLRetBillingStart *pPacket, Player *pPlayer)
  57310. {
  57311. Player *v2; // eax
  57312. Packets::LWRetBillingStart Msg; // [esp+0h] [ebp-78h]
  57313.  
  57314. if ( !pPlayer )
  57315. __assert__(
  57316. "./Packets/BLRetBillingStartHandler.cpp",
  57317. 0xCu,
  57318. "static UINT Packets::BLRetBillingStartHandler::Execute(Packets::BLRetBillingStart*, Player*)",
  57319. "pPlayer");
  57320. if ( (*((int (__cdecl **)(Player *))pPlayer->_vptr_Player + 25))(pPlayer) )
  57321. {
  57322. if ( !pPacket )
  57323. __assert__(
  57324. "./Packets/BLRetBillingStartHandler.cpp",
  57325. 0x13u,
  57326. "static UINT Packets::BLRetBillingStartHandler::Execute(Packets::BLRetBillingStart*, Player*)",
  57327. "pPacket");
  57328. Packet::Packet((int)&Msg);
  57329. Msg._vptr_Packet = (int (**)(...))off_80CF6C8;
  57330. memset(Msg.mAccount, 0, 0x30u);
  57331. *(_WORD *)&Msg.mAccount[48] = 0;
  57332. Msg.mAccount[50] = 0;
  57333. strncpy(Msg.mAccount, pPacket->mAccount, 0x32u);
  57334. Msg.mResult = pPacket->mResult;
  57335. Msg.mPlayerID = *(_WORD *)&pPacket->baseclass_0[4];
  57336. if ( Msg.mResult )
  57337. {
  57338. if ( Msg.mResult != 1 )
  57339. __assert__(
  57340. "./Packets/BLRetBillingStartHandler.cpp",
  57341. 0x33u,
  57342. "static UINT Packets::BLRetBillingStartHandler::Execute(Packets::BLRetBillingStart*, Player*)",
  57343. "FALSE");
  57344. Msg.mFeeType = pPacket->mFeeType;
  57345. Msg.mLeftTime = pPacket->mLeftTime;
  57346. Msg.mStorePoint = pPacket->mStorePoint;
  57347. Msg.mUserPoint = pPacket->mUserPoint;
  57348. Msg.mWhyFlag = pPacket->mWhyFlag;
  57349. CacheLog(
  57350. 0,
  57351. "BLRetBillingStart::Execute()...Acc=%s Billing Start ft=%d,lt=%d",
  57352. pPacket->mAccount,
  57353. Msg.mFeeType,
  57354. Msg.mLeftTime);
  57355. }
  57356. else
  57357. {
  57358. Msg.mCode = pPacket->mCode;
  57359. CacheLog(
  57360. 0,
  57361. "BLRetBillingStart::Execute()...Acc=%s Billing Fail Code = %d ",
  57362. pPacket->mAccount,
  57363. Msg.mCode,
  57364. Msg._vptr_Packet);
  57365. }
  57366. v2 = ServerManager::GetServerPlayer(*(ServerManager *const *)&g_pServerManager, 0);
  57367. if ( v2 )
  57368. {
  57369. (*((void (__cdecl **)(Player *, Packets::LWRetBillingStart *))v2->_vptr_Player + 3))(v2, &Msg);
  57370. CacheLog(0, "BLRetBillingStart::Execute()...Send Packet LWRetBillingStart");
  57371. }
  57372. Msg._vptr_Packet = (int (**)(...))off_80CF6C8;
  57373. Packet::~Packet(&Msg);
  57374. }
  57375. return 2;
  57376. }
  57377. // 80CF6C8: using guessed type _DWORD (__cdecl *off_80CF6C8[2])(Packets::LWRetBillingStart *this);
  57378.  
  57379. //----- (080928FC) --------------------------------------------------------
  57380. void __cdecl _tcf_0_137(void *a1)
  57381. {
  57382. std::ios_base::Init::~Init(&std::__ioinit);
  57383. }
  57384.  
  57385. //----- (0809290C) --------------------------------------------------------
  57386. void `global constructor keyed to'Packets::BLRetBillingStartHandler::Execute()
  57387. {
  57388. std::ios_base::Init::Init(&std::__ioinit);
  57389. __cxa_atexit(_tcf_0_137, 0, &_dso_handle);
  57390. }
  57391. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  57392.  
  57393. //----- (08092938) --------------------------------------------------------
  57394. UINT __cdecl Packets::BLRetConnectHandler::Execute(Packets::BLRetConnect *pPacket, Player *pPlayer)
  57395. {
  57396. if ( !pPlayer )
  57397. __assert__(
  57398. "./Packets/BLRetConnectHandler.cpp",
  57399. 0xAu,
  57400. "static UINT Packets::BLRetConnectHandler::Execute(Packets::BLRetConnect*, Player*)",
  57401. "pPlayer");
  57402. if ( !(*((int (__cdecl **)(Player *))pPlayer->_vptr_Player + 25))(pPlayer) )
  57403. __assert__(
  57404. "./Packets/BLRetConnectHandler.cpp",
  57405. 0x1Bu,
  57406. "static UINT Packets::BLRetConnectHandler::Execute(Packets::BLRetConnect*, Player*)",
  57407. "FALSE");
  57408. if ( !pPlayer )
  57409. __assert__(
  57410. "./Packets/BLRetConnectHandler.cpp",
  57411. 0x12u,
  57412. "static UINT Packets::BLRetConnectHandler::Execute(Packets::BLRetConnect*, Player*)",
  57413. "FALSE");
  57414. pPlayer[2]._vptr_Player = (int (**)(...))401;
  57415. CacheLog(0, "BLRetConnectHandler::Execute() ... OK!");
  57416. return 2;
  57417. }
  57418.  
  57419. //----- (08092A1C) --------------------------------------------------------
  57420. void __cdecl _tcf_0_138(void *a1)
  57421. {
  57422. std::ios_base::Init::~Init(&std::__ioinit);
  57423. }
  57424.  
  57425. //----- (08092A2C) --------------------------------------------------------
  57426. void `global constructor keyed to'Packets::BLRetConnectHandler::Execute()
  57427. {
  57428. std::ios_base::Init::Init(&std::__ioinit);
  57429. __cxa_atexit(_tcf_0_138, 0, &_dso_handle);
  57430. }
  57431. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  57432.  
  57433. //----- (08092A58) --------------------------------------------------------
  57434. UINT __cdecl Packets::BLRetKeepLiveHandler::Execute(Packets::BLRetKeepLive *pPacket, Player *pPlayer)
  57435. {
  57436. if ( !pPlayer )
  57437. __assert__(
  57438. "./Packets/BLRetKeepLiveHandler.cpp",
  57439. 0xAu,
  57440. "static UINT Packets::BLRetKeepLiveHandler::Execute(Packets::BLRetKeepLive*, Player*)",
  57441. "pPlayer");
  57442. if ( !(*((int (__cdecl **)(Player *))pPlayer->_vptr_Player + 25))(pPlayer) )
  57443. __assert__(
  57444. "./Packets/BLRetKeepLiveHandler.cpp",
  57445. 0x1Au,
  57446. "static UINT Packets::BLRetKeepLiveHandler::Execute(Packets::BLRetKeepLive*, Player*)",
  57447. "FALSE");
  57448. if ( !pPlayer )
  57449. __assert__(
  57450. "./Packets/BLRetKeepLiveHandler.cpp",
  57451. 0x11u,
  57452. "static UINT Packets::BLRetKeepLiveHandler::Execute(Packets::BLRetKeepLive*, Player*)",
  57453. "FALSE");
  57454. pPlayer[2].m_pSocketInputStream = 0;
  57455. CacheLog(0, "BLRetKeepLiveHandler::Execute() ... OK!");
  57456. return 2;
  57457. }
  57458.  
  57459. //----- (08092B3C) --------------------------------------------------------
  57460. void __cdecl _tcf_0_139(void *a1)
  57461. {
  57462. std::ios_base::Init::~Init(&std::__ioinit);
  57463. }
  57464.  
  57465. //----- (08092B4C) --------------------------------------------------------
  57466. void `global constructor keyed to'Packets::BLRetKeepLiveHandler::Execute()
  57467. {
  57468. std::ios_base::Init::Init(&std::__ioinit);
  57469. __cxa_atexit(_tcf_0_139, 0, &_dso_handle);
  57470. }
  57471. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  57472.  
  57473. //----- (08092B78) --------------------------------------------------------
  57474. UINT __cdecl Packets::BLRetKickALLHandler::Execute(Packets::BLRetKickALL *pPacket, Player *pPlayer)
  57475. {
  57476. if ( !pPlayer )
  57477. __assert__(
  57478. "./Packets/BLRetKickAllHandler.cpp",
  57479. 0xAu,
  57480. "static UINT Packets::BLRetKickALLHandler::Execute(Packets::BLRetKickALL*, Player*)",
  57481. "pPlayer");
  57482. if ( !(*((int (__cdecl **)(Player *))pPlayer->_vptr_Player + 25))(pPlayer) )
  57483. __assert__(
  57484. "./Packets/BLRetKickAllHandler.cpp",
  57485. 0x2Eu,
  57486. "static UINT Packets::BLRetKickALLHandler::Execute(Packets::BLRetKickALL*, Player*)",
  57487. "FALSE");
  57488. if ( !pPacket )
  57489. __assert__(
  57490. "./Packets/BLRetKickAllHandler.cpp",
  57491. 0x16u,
  57492. "static UINT Packets::BLRetKickALLHandler::Execute(Packets::BLRetKickALL*, Player*)",
  57493. "pPacket");
  57494. if ( pPacket->mResult )
  57495. {
  57496. if ( pPacket->mResult == 1 )
  57497. CacheLog(0, "BLRetKickAllHandler::Execute() ... Success!");
  57498. else
  57499. CacheLog(0, "BLRetKickAllHandler::Execute() ... UnKnow Result!");
  57500. }
  57501. else
  57502. {
  57503. CacheLog(0, "BLRetKickAllHandler::Execute() ... Fail!");
  57504. }
  57505. return 2;
  57506. }
  57507.  
  57508. //----- (08092C94) --------------------------------------------------------
  57509. void __cdecl _tcf_0_140(void *a1)
  57510. {
  57511. std::ios_base::Init::~Init(&std::__ioinit);
  57512. }
  57513.  
  57514. //----- (08092CA4) --------------------------------------------------------
  57515. void `global constructor keyed to'Packets::BLRetKickALLHandler::Execute()
  57516. {
  57517. std::ios_base::Init::Init(&std::__ioinit);
  57518. __cxa_atexit(_tcf_0_140, 0, &_dso_handle);
  57519. }
  57520. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  57521.  
  57522. //----- (08092CD0) --------------------------------------------------------
  57523. UINT __cdecl Packets::BLRetRegPassPortHandler::Execute(Packets::BLRetRegPassPort *pPacket, Player *pPlayer)
  57524. {
  57525. signed __int16 v2; // ax
  57526. int v3; // ebx
  57527. LoginPlayer *v4; // eax
  57528. Packets::BLRetAuth *v6; // edi
  57529. BYTE v7; // al
  57530. CHAR *v8; // [esp+8h] [ebp-10h]
  57531.  
  57532. if ( *(_DWORD *)(*(_DWORD *)&g_pServerManager + 7480) != ThreadValueManager::GetCurrentThreadID() )
  57533. __assert__(
  57534. "./Packets/BLRetRegPassPortHandler.cpp",
  57535. 0x22u,
  57536. "static UINT Packets::BLRetRegPassPortHandler::Execute(Packets::BLRetRegPassPort*, Player*)",
  57537. "FALSE");
  57538. if ( !pPlayer )
  57539. __assert__(
  57540. "./Packets/BLRetRegPassPortHandler.cpp",
  57541. 0x25u,
  57542. "static UINT Packets::BLRetRegPassPortHandler::Execute(Packets::BLRetRegPassPort*, Player*)",
  57543. "pPlayer");
  57544. if ( !(*((int (__cdecl **)(Player *))pPlayer->_vptr_Player + 25))(pPlayer) )
  57545. return 2;
  57546. if ( !pPacket )
  57547. __assert__(
  57548. "./Packets/BLRetRegPassPortHandler.cpp",
  57549. 0x29u,
  57550. "static UINT Packets::BLRetRegPassPortHandler::Execute(Packets::BLRetRegPassPort*, Player*)",
  57551. "pPacket");
  57552. v2 = pPacket->m_Index;
  57553. if ( v2 == -1 || v2 > 3071 || v2 < 0 || (v3 = v2, (v4 = &g_pPlayerPool->m_pPlayer[v2]) == 0) )
  57554. __assert__(
  57555. "./Packets/BLRetRegPassPortHandler.cpp",
  57556. 0x30u,
  57557. "static UINT Packets::BLRetRegPassPortHandler::Execute(Packets::BLRetRegPassPort*, Player*)",
  57558. "FALSE");
  57559. if ( v4->m_Status != 304 )
  57560. {
  57561. CacheLog(0, "BLRetRegPassPortHandler::Execute() Acc = %s PlayerID=%d... Wrong logic!", pPacket->mAccount, v3);
  57562. return 2;
  57563. }
  57564. v4->m_Status = 302;
  57565. v6 = (Packets::BLRetAuth *)PacketFactoryManager::CreatePacket(g_pPacketFactoryManager, 0x61u);
  57566. if ( !v6 )
  57567. __assert__(
  57568. "./Packets/BLRetRegPassPortHandler.cpp",
  57569. 0x3Eu,
  57570. "static UINT Packets::BLRetRegPassPortHandler::Execute(Packets::BLRetRegPassPort*, Player*)",
  57571. "pMsg");
  57572. v8 = pPacket->mAccount;
  57573. Packets::BLRetAuth::SetAccount(v6, pPacket->mAccount);
  57574. v7 = pPacket->mAccResult;
  57575. if ( v7 == 5 )
  57576. {
  57577. Packets::BLRetAuth::SetResult((int)v6, 12);
  57578. LoginPlayerManager::SendPacket(g_pLoginPlayerManager, &v6->0, v3, 0);
  57579. CacheLog(0, "REG:BLRetRegPassPortHandler... Acc = %s User Other Online!", v8);
  57580. goto LABEL_24;
  57581. }
  57582. if ( (signed int)v7 > 5 )
  57583. {
  57584. if ( v7 == 7 )
  57585. {
  57586. Packets::BLRetAuth::SetResult((int)v6, 12);
  57587. LoginPlayerManager::SendPacket(g_pLoginPlayerManager, &v6->0, v3, 0);
  57588. CacheLog(0, "REG:BLRetRegPassPortHandler... Acc = %s Forbit login acc!", v8);
  57589. goto LABEL_24;
  57590. }
  57591. if ( (signed int)v7 < 7 )
  57592. {
  57593. Packets::BLRetAuth::SetResult((int)v6, 12);
  57594. LoginPlayerManager::SendPacket(g_pLoginPlayerManager, &v6->0, v3, 0);
  57595. CacheLog(0, "REG:BLRetRegPassPortHandler... Acc = %s Reg Failed Other Reason!", v8);
  57596. goto LABEL_24;
  57597. }
  57598. if ( v7 == 8 )
  57599. {
  57600. Packets::BLRetAuth::SetResult((int)v6, 12);
  57601. LoginPlayerManager::SendPacket(g_pLoginPlayerManager, &v6->0, v3, 0);
  57602. CacheLog(0, "REG:BLRetRegPassPortHandler... Acc = %s No point acc!", v8);
  57603. goto LABEL_24;
  57604. }
  57605. if ( v7 == 160 )
  57606. {
  57607. Packets::BLRetAuth::SetResult((int)v6, 13);
  57608. LoginPlayerManager::SendPacket(g_pLoginPlayerManager, &v6->0, v3, 0);
  57609. CacheLog(0, "REG:BLRetRegPassPortHandler... Acc = %s Need Active acc!", v8);
  57610. goto LABEL_24;
  57611. }
  57612. }
  57613. else
  57614. {
  57615. if ( v7 == 2 )
  57616. {
  57617. Packets::BLRetAuth::SetResult((int)v6, 11);
  57618. LoginPlayerManager::SendPacket(g_pLoginPlayerManager, &v6->0, v3, 0);
  57619. CacheLog(0, "REG:BLRetRegPassPortHandler... Acc = %s Already Reg acc!", v8);
  57620. goto LABEL_24;
  57621. }
  57622. if ( (signed int)v7 > 2 )
  57623. {
  57624. if ( v7 == 4 )
  57625. {
  57626. Packets::BLRetAuth::SetResult((int)v6, 12);
  57627. LoginPlayerManager::SendPacket(g_pLoginPlayerManager, &v6->0, v3, 0);
  57628. CacheLog(0, "REG:BLRetRegPassPortHandler... Acc = %s User Online!", v8);
  57629. goto LABEL_24;
  57630. }
  57631. }
  57632. else if ( v7 == 1 )
  57633. {
  57634. Packets::BLRetAuth::SetResult((int)v6, 10);
  57635. LoginPlayerManager::SendPacket(g_pLoginPlayerManager, &v6->0, v3, 0);
  57636. CacheLog(0, "REG:BLRetRegPassPortHandler... Acc = %s Reg Success!", v8);
  57637. goto LABEL_24;
  57638. }
  57639. }
  57640. CacheLog(0, "REG:BLRetRegPassPortHandler... Acc = %s Unknow Result(0x%02X)!", v8, v7);
  57641. PacketFactoryManager::RemovePacket(g_pPacketFactoryManager, &v6->0);
  57642. LABEL_24:
  57643. CacheLog(0, "REG:BLRetRegPassPortHandler::Execute() Acc = %s... OK!", v8);
  57644. return 2;
  57645. }
  57646.  
  57647. //----- (0809308C) --------------------------------------------------------
  57648. void __cdecl _tcf_0_141(void *a1)
  57649. {
  57650. std::ios_base::Init::~Init(&std::__ioinit);
  57651. }
  57652.  
  57653. //----- (0809309C) --------------------------------------------------------
  57654. void `global constructor keyed to'Packets::BLRetRegPassPortHandler::Execute()
  57655. {
  57656. std::ios_base::Init::Init(&std::__ioinit);
  57657. __cxa_atexit(_tcf_0_141, 0, &_dso_handle);
  57658. }
  57659. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  57660.  
  57661. //----- (080930C8) --------------------------------------------------------
  57662. UINT __cdecl Packets::CLAskCharListHandler::Execute(Packets::CLAskCharList *pPacket, Player *pPlayer)
  57663. {
  57664. int v2; // edi
  57665. ODBCInterface *v3; // eax
  57666. ODBCInterface *v4; // ebx
  57667. bool v5; // zf
  57668. UINT result; // eax
  57669. Packets::LCRetCharList *v7; // edi
  57670. const CHAR *v8; // eax
  57671. const CHAR *v9; // eax
  57672. const char *v10; // ebx
  57673. const char *v11; // eax
  57674. DB_CHAR_BASE_INFO *v12; // esi
  57675. int v13; // ebx
  57676. signed int v14; // eax
  57677. signed int v15; // eax
  57678. const CHAR *v16; // ST2C_4
  57679. const CHAR *v17; // eax
  57680. DB_CHAR_BASE_INFO *v18; // esi
  57681. int v19; // ebx
  57682. signed int v20; // eax
  57683. signed int v21; // eax
  57684. char *s2; // ST3C_4
  57685. const char *v23; // eax
  57686. const CHAR *v24; // eax
  57687. CHAR *v25; // eax
  57688. const CHAR *v26; // eax
  57689. const CHAR *v27; // eax
  57690. int v28; // ebx
  57691. const CHAR *v29; // eax
  57692. INT v30; // ST2C_4
  57693. const CHAR *v31; // eax
  57694. signed int i; // [esp+8h] [ebp-6A0h]
  57695. PlayerID_t PlayerID; // [esp+12h] [ebp-696h]
  57696. signed int v34; // [esp+14h] [ebp-694h]
  57697. signed int v35; // [esp+18h] [ebp-690h]
  57698. int (**uTime)(...); // [esp+1Ch] [ebp-68Ch]
  57699. DBCharList CharListObject; // [esp+20h] [ebp-688h]
  57700. Packets::LCRetCharList Msg; // [esp+90h] [ebp-618h]
  57701.  
  57702. v2 = ThreadValueManager::GetCurrentThreadID();
  57703. if ( g_pProcessPlayerManager->m_ThreadID == v2 )
  57704. {
  57705. if ( !pPlayer )
  57706. __assert__(
  57707. "./Packets/CLAskCharListHandler.cpp",
  57708. 0x18u,
  57709. "static UINT Packets::CLAskCharListHandler::Execute(Packets::CLAskCharList*, Player*)",
  57710. "pLoginPlayer");
  57711. v10 = Packets::CLAskCharList::GetAccount(pPacket);
  57712. v11 = LoginPlayer::GetAccount((LoginPlayer *const )pPlayer);
  57713. if ( strcmp(v11, v10) )
  57714. {
  57715. v16 = Packets::CLAskCharList::GetAccount(pPacket);
  57716. v17 = LoginPlayer::GetAccount((LoginPlayer *const )pPlayer);
  57717. CacheLog(0, "ERROR: CLAskCharListHandler Get Guid Errors,acc = %s,Packet acc = %s", v17, v16);
  57718. return 0;
  57719. }
  57720. uTime = (int (**)(...))TimeManager::CurrentTime((int)g_pTimeManager);
  57721. if ( pPlayer[2]._vptr_Player + 125 > uTime )
  57722. {
  57723. Packet::Packet((int)&Msg);
  57724. Msg._vptr_Packet = (int (**)(...))off_80CE568;
  57725. v18 = Msg.CharList;
  57726. v35 = 4;
  57727. do
  57728. {
  57729. v19 = (int)&v18->m_EquipList;
  57730. v20 = 0;
  57731. do
  57732. {
  57733. *(_DWORD *)(v19 + 4 * v20) = 0;
  57734. *(_WORD *)(v19 + 2 * v20 + 76) = 0;
  57735. *(_DWORD *)(v19 + 4 * v20++ + 116) = -1;
  57736. }
  57737. while ( v20 <= 18 );
  57738. memset(&v18->m_SceneList, 0, 0x14u);
  57739. v18->m_SceneList.mSceneID[9] = 0;
  57740. memset(v18, 0, 0x124u);
  57741. v21 = 0;
  57742. do
  57743. {
  57744. *(_DWORD *)(v19 + 4 * v21) = 0;
  57745. *(_WORD *)(v19 + 2 * v21 + 76) = 0;
  57746. *(_DWORD *)(v19 + 4 * v21++ + 116) = -1;
  57747. }
  57748. while ( v21 <= 18 );
  57749. --v35;
  57750. ++v18;
  57751. }
  57752. while ( v35 != -1 );
  57753. Packets::LCRetCharList::SetResult((int)&Msg, 3);
  57754. (*((void (__cdecl **)(Player *, Packets::LCRetCharList *))pPlayer->_vptr_Player + 3))(pPlayer, &Msg);
  57755. }
  57756. else
  57757. {
  57758. result = 2;
  57759. if ( pPlayer[2].m_pSocket != (Socket *)308 )
  57760. return result;
  57761. pPacket->PlayerID = (PlayerID_t)pPlayer[1].m_pSocketInputStream;
  57762. if ( DBThreadManager::SendPacket(g_pDBThreadManager, &pPacket->0, (PlayerID_t)pPlayer[1].m_pSocketInputStream) )
  57763. {
  57764. pPlayer[2]._vptr_Player = uTime;
  57765. return 3;
  57766. }
  57767. Packet::Packet((int)&Msg);
  57768. Msg._vptr_Packet = (int (**)(...))off_80CE568;
  57769. v12 = Msg.CharList;
  57770. v34 = 4;
  57771. do
  57772. {
  57773. v13 = (int)&v12->m_EquipList;
  57774. v14 = 0;
  57775. do
  57776. {
  57777. *(_DWORD *)(v13 + 4 * v14) = 0;
  57778. *(_WORD *)(v13 + 2 * v14 + 76) = 0;
  57779. *(_DWORD *)(v13 + 4 * v14++ + 116) = -1;
  57780. }
  57781. while ( v14 <= 18 );
  57782. memset(&v12->m_SceneList, 0, 0x14u);
  57783. v12->m_SceneList.mSceneID[9] = 0;
  57784. memset(v12, 0, 0x124u);
  57785. v15 = 0;
  57786. do
  57787. {
  57788. *(_DWORD *)(v13 + 4 * v15) = 0;
  57789. *(_WORD *)(v13 + 2 * v15 + 76) = 0;
  57790. *(_DWORD *)(v13 + 4 * v15++ + 116) = -1;
  57791. }
  57792. while ( v15 <= 18 );
  57793. --v34;
  57794. ++v12;
  57795. }
  57796. while ( v34 != -1 );
  57797. Packets::LCRetCharList::SetResult((int)&Msg, 2);
  57798. (*((void (__cdecl **)(Player *, Packets::LCRetCharList *))pPlayer->_vptr_Player + 3))(pPlayer, &Msg);
  57799. pPlayer[2]._vptr_Player = uTime;
  57800. }
  57801. Msg._vptr_Packet = (int (**)(...))off_80CE568;
  57802. Packet::~Packet(&Msg);
  57803. goto LABEL_23;
  57804. }
  57805. if ( !DBThreadManager::IsPoolTID(g_pDBThreadManager, v2) )
  57806. return 2;
  57807. PlayerID = pPacket->PlayerID;
  57808. if ( !pPlayer )
  57809. __assert__(
  57810. "./Packets/CLAskCharListHandler.cpp",
  57811. 0x48u,
  57812. "static UINT Packets::CLAskCharListHandler::Execute(Packets::CLAskCharList*, Player*)",
  57813. "pLoginPlayer");
  57814. v3 = DBThreadManager::GetInterface(g_pDBThreadManager, v2);
  57815. v4 = v3;
  57816. v5 = v3 == 0;
  57817. result = 2;
  57818. if ( !v5 )
  57819. {
  57820. v7 = (Packets::LCRetCharList *)PacketFactoryManager::CreatePacket(g_pPacketFactoryManager, 0x26Eu);
  57821. if ( !v7 )
  57822. __assertex__(
  57823. "./Packets/CLAskCharListHandler.cpp",
  57824. 0x53u,
  57825. "static UINT Packets::CLAskCharListHandler::Execute(Packets::CLAskCharList*, Player*)",
  57826. "FALSE",
  57827. &byte_80DDF85);
  57828. if ( LoginPlayer::GetDBOperating((int)pPlayer) == 1 || !v4->mConnected )
  57829. {
  57830. v8 = Packets::CLAskCharList::GetAccount(pPacket);
  57831. Packets::LCRetCharList::SetAccount(v7, v8);
  57832. Packets::LCRetCharList::SetResult((int)v7, 2);
  57833. v7->uCharNumber = 0;
  57834. ProcessManager::SendPacket(g_pProcessManager, &v7->0, PlayerID, 0);
  57835. v9 = LoginPlayer::GetAccount((LoginPlayer *const )pPlayer);
  57836. CacheLog(0, aClaskcharlisth_1, v9);
  57837. return 2;
  57838. }
  57839. s2 = (char *)Packets::CLAskCharList::GetAccount(pPacket);
  57840. v23 = LoginPlayer::GetAccount((LoginPlayer *const )pPlayer);
  57841. if ( strcmp(v23, s2) )
  57842. {
  57843. Packets::CLAskCharList::GetAccount(pPacket);
  57844. LoginPlayer::GetAccount((LoginPlayer *const )pPlayer);
  57845. CacheLog(0, "ERROR: CLAskCharListHandler DBOperation Errors,acc = %s,Packet acc = %s");
  57846. PacketFactoryManager::RemovePacket(g_pPacketFactoryManager, &v7->0);
  57847. return 2;
  57848. }
  57849. LoginPlayer::SetDBOperating((int)pPlayer, 1);
  57850. DBCharList::DBCharList(&CharListObject, v4);
  57851. v24 = Packets::CLAskCharList::GetAccount(pPacket);
  57852. DBCharList::SetAccount(&CharListObject, v24);
  57853. if ( !DBCharList::Load(&CharListObject) )
  57854. {
  57855. v25 = ODBCBase::GetErrorMessage((int)&CharListObject);
  57856. CacheLog(0, "CharListObject.Load() ... Get Errors: %s", v25);
  57857. v26 = Packets::CLAskCharList::GetAccount(pPacket);
  57858. Packets::LCRetCharList::SetAccount(v7, v26);
  57859. Packets::LCRetCharList::SetResult((int)v7, 1);
  57860. v7->uCharNumber = 0;
  57861. ProcessManager::SendPacket(g_pProcessManager, &v7->0, PlayerID, 0);
  57862. v27 = LoginPlayer::GetAccount((LoginPlayer *const )pPlayer);
  57863. CacheLog(0, "CLAskCharListHandler....Fails!,code = ASKCHARLIST_OP_FAILS,acc=%s", v27);
  57864. LoginPlayer::SetDBOperating((int)pPlayer, 0);
  57865. return 2;
  57866. }
  57867. DBCharList::ParseResult(&CharListObject, v7->CharList);
  57868. v28 = DBCharList::GetCharNumber((int)&CharListObject);
  57869. v29 = Packets::CLAskCharList::GetAccount(pPacket);
  57870. Packets::LCRetCharList::SetAccount(v7, v29);
  57871. Packets::LCRetCharList::SetResult((int)v7, 0);
  57872. v7->uCharNumber = v28;
  57873. LoginPlayer::SetCharNumber((int)pPlayer, v28);
  57874. for ( i = 0; LoginPlayer::GetCharNumber((int)pPlayer) > i; ++i )
  57875. {
  57876. if ( (unsigned __int8)i > 4u )
  57877. __assert__(
  57878. "../../Common/Packets/LCRetCharList.h",
  57879. 0x3Cu,
  57880. "DB_CHAR_BASE_INFO* Packets::LCRetCharList::GetCharBaseInfo(UCHAR)",
  57881. "CharIndex<DB_CHAR_NUMBER");
  57882. LoginPlayer::SetCharGUID((UINT)pPlayer, v7->CharList[(unsigned __int8)i].m_GUID, i);
  57883. }
  57884. ProcessManager::SendPacket(g_pProcessManager, &v7->0, PlayerID, 0);
  57885. LoginPlayer::SetDBOperating((int)pPlayer, 0);
  57886. v30 = LoginPlayer::GetCharNumber((int)pPlayer);
  57887. v31 = Packets::CLAskCharList::GetAccount(pPacket);
  57888. CacheLog(0, "CLAskCharListHandler::Execute()....OK! Acc=%s CharNum=%d", v31, v30);
  57889. LABEL_23:
  57890. result = 2;
  57891. }
  57892. return result;
  57893. }
  57894. // 80CE568: using guessed type _DWORD (__cdecl *off_80CE568[2])(Packets::LCRetCharList *this);
  57895.  
  57896. //----- (08093784) --------------------------------------------------------
  57897. void __cdecl _tcf_0_142(void *a1)
  57898. {
  57899. std::ios_base::Init::~Init(&std::__ioinit);
  57900. }
  57901.  
  57902. //----- (08093794) --------------------------------------------------------
  57903. void `global constructor keyed to'Packets::CLAskCharListHandler::Execute()
  57904. {
  57905. std::ios_base::Init::Init(&std::__ioinit);
  57906. __cxa_atexit(_tcf_0_142, 0, &_dso_handle);
  57907. }
  57908. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  57909.  
  57910. //----- (080937C0) --------------------------------------------------------
  57911. UINT __cdecl Packets::CLAskCharLoginHandler::Execute(Packets::CLAskCharLogin *pPacket, Player *pPlayer)
  57912. {
  57913. int v2; // edx
  57914. const CHAR *v3; // ST28_4
  57915. UINT result; // eax
  57916. GUID_t v5; // eax
  57917. int (**v6)(...); // eax
  57918. GUID_t v7; // ST2C_4
  57919. const CHAR *v8; // eax
  57920. int (**v9)(...); // eax
  57921. GUID_t v10; // ST2C_4
  57922. const CHAR *v11; // eax
  57923. PlayerID_t v12; // di
  57924. GUID_t v13; // eax
  57925. GUID_t v14; // ST2C_4
  57926. const CHAR *v15; // ST28_4
  57927. int v16; // eax
  57928. BOOL v17; // eax
  57929. bool v18; // zf
  57930. int (**v19)(...); // eax
  57931. GUID_t v20; // ST2C_4
  57932. const CHAR *v21; // eax
  57933. int (**v22)(...); // eax
  57934. GUID_t v23; // ST2C_4
  57935. const CHAR *v24; // eax
  57936. GUID_t v25; // ST1C_4
  57937. const CHAR *v26; // eax
  57938. int v27; // eax
  57939. const CHAR *v28; // ST28_4
  57940. const CHAR *v29; // eax
  57941. int v30; // [esp-4h] [ebp-7Ch]
  57942. GUID_t PlayerCharGUID; // [esp+8h] [ebp-70h]
  57943. int v32; // [esp+Ch] [ebp-6Ch]
  57944. int (**uTime)(...); // [esp+18h] [ebp-60h]
  57945. UINT QueuePos; // [esp+1Ch] [ebp-5Ch]
  57946. Packets::LCRetCharLogin Msg; // [esp+20h] [ebp-58h]
  57947.  
  57948. v2 = ThreadValueManager::GetCurrentThreadID();
  57949. if ( g_pProcessPlayerManager->m_ThreadID != v2 )
  57950. {
  57951. if ( !DBThreadManager::IsPoolTID(g_pDBThreadManager, v2) )
  57952. {
  57953. if ( !pPlayer )
  57954. __assert__(
  57955. "./Packets/CLAskCharLoginHandler.cpp",
  57956. 0x93u,
  57957. "static UINT Packets::CLAskCharLoginHandler::Execute(Packets::CLAskCharLogin*, Player*)",
  57958. "pLoginPlayer");
  57959. v3 = LoginPlayer::GetAccount((LoginPlayer *const )pPlayer);
  57960. CacheLog(0, "ERROR::CLAskCharLoginHandler::Execute()...Fail, Invalid Thread Handler,acc = %s", v3, v30);
  57961. return 2;
  57962. }
  57963. v12 = pPacket->PlayerID;
  57964. PlayerCharGUID = Packets::CLAskCharLogin::GetCharGuid((int)pPacket);
  57965. if ( !pPlayer )
  57966. __assert__(
  57967. "./Packets/CLAskCharLoginHandler.cpp",
  57968. 0x68u,
  57969. "static UINT Packets::CLAskCharLoginHandler::Execute(Packets::CLAskCharLogin*, Player*)",
  57970. "pLoginPlayer");
  57971. v13 = Packets::CLAskCharLogin::GetCharGuid((int)pPacket);
  57972. if ( !LoginPlayer::IsGUIDOwner((LoginPlayer *const )pPlayer, v13) )
  57973. {
  57974. v14 = Packets::CLAskCharLogin::GetCharGuid((int)pPacket);
  57975. v15 = LoginPlayer::GetAccount((LoginPlayer *const )pPlayer);
  57976. CacheLog(0, "CLAskCharLoginHandler Wrong operation,acc=%s,guid=%X", v15, v14);
  57977. return 2;
  57978. }
  57979. v25 = Packets::CLAskCharLogin::GetCharGuid((int)pPacket);
  57980. v26 = LoginPlayer::GetAccount((LoginPlayer *const )pPlayer);
  57981. if ( WorldPlayerQueue::AddInPlayer(g_pWorldPlayerQueue, v12, v26, v25, &QueuePos) )
  57982. {
  57983. pPlayer[2].m_pSocket = (Socket *)312;
  57984. v27 = TimeManager::CurrentTime((int)g_pTimeManager);
  57985. LoginPlayer::SetLastSendTurnTime((int)pPlayer, v27);
  57986. v28 = LoginPlayer::GetAccount((LoginPlayer *const )pPlayer);
  57987. CacheLog(0, "CLAskCharLoginHandler::Execute()....OK!, acc= %s guid = %X ", v28, PlayerCharGUID);
  57988. return 2;
  57989. }
  57990. v29 = LoginPlayer::GetAccount((LoginPlayer *const )pPlayer);
  57991. CacheLog(0, "CLAskCharLoginHandler::Execute()....Fail,World is Full,acc=%s,GUID = %X ", v29, PlayerCharGUID);
  57992. return 2;
  57993. }
  57994. if ( !pPlayer )
  57995. __assert__(
  57996. "./Packets/CLAskCharLoginHandler.cpp",
  57997. 0x1Bu,
  57998. "static UINT Packets::CLAskCharLoginHandler::Execute(Packets::CLAskCharLogin*, Player*)",
  57999. "pLoginPlayer");
  58000. result = 2;
  58001. if ( pPlayer[2].m_pSocket == (Socket *)308 )
  58002. {
  58003. uTime = (int (**)(...))TimeManager::CurrentTime((int)g_pTimeManager);
  58004. if ( pPlayer[2]._vptr_Player + 125 > uTime )
  58005. {
  58006. Packet::Packet((int)&Msg);
  58007. Msg._vptr_Packet = (int (**)(...))off_80CE708;
  58008. memset(Msg.ServerIP, 0, sizeof(Msg.ServerIP));
  58009. v9 = pPlayer->_vptr_Player;
  58010. Msg.ServerPort = 0;
  58011. Msg.ZoneID = 0;
  58012. Msg.Result = 4;
  58013. ((void (__cdecl *)(Player *, Packets::LCRetCharLogin *))v9[3])(pPlayer, &Msg);
  58014. v10 = Packets::CLAskCharLogin::GetCharGuid((int)pPacket);
  58015. v11 = LoginPlayer::GetAccount((LoginPlayer *const )pPlayer);
  58016. CacheLog(0, "CLAskCharLoginHandler::Execute()....Fails!,code = ASKCHARLOGIN_OP_TIMES,acc=%s,guid=%X", v11, v10);
  58017. goto LABEL_12;
  58018. }
  58019. v5 = Packets::CLAskCharLogin::GetCharGuid((int)pPacket);
  58020. if ( !LoginPlayer::IsGUIDOwner((LoginPlayer *const )pPlayer, v5) )
  58021. {
  58022. Packet::Packet((int)&Msg);
  58023. Msg._vptr_Packet = (int (**)(...))off_80CE708;
  58024. memset(Msg.ServerIP, 0, sizeof(Msg.ServerIP));
  58025. v22 = pPlayer->_vptr_Player;
  58026. Msg.ServerPort = 0;
  58027. Msg.ZoneID = 0;
  58028. Msg.Result = 5;
  58029. ((void (__cdecl *)(Player *, Packets::LCRetCharLogin *))v22[3])(pPlayer, &Msg);
  58030. v23 = Packets::CLAskCharLogin::GetCharGuid((int)pPacket);
  58031. v24 = LoginPlayer::GetAccount((LoginPlayer *const )pPlayer);
  58032. CacheLog(0, "CLAskCharLoginHandler::Execute()....Fails!,code = ASKCHARLOGIN_NOT_OWNER,acc=%s,guid=%X", v24, v23);
  58033. goto LABEL_12;
  58034. }
  58035. if ( !pPlayer[31].m_pSocketInputStream )
  58036. {
  58037. Packet::Packet((int)&Msg);
  58038. Msg._vptr_Packet = (int (**)(...))off_80CE708;
  58039. memset(Msg.ServerIP, 0, sizeof(Msg.ServerIP));
  58040. v6 = pPlayer->_vptr_Player;
  58041. Msg.ServerPort = 0;
  58042. Msg.ZoneID = 0;
  58043. Msg.Result = 14;
  58044. ((void (__cdecl *)(Player *, Packets::LCRetCharLogin *))v6[3])(pPlayer, &Msg);
  58045. v7 = Packets::CLAskCharLogin::GetCharGuid((int)pPacket);
  58046. v8 = LoginPlayer::GetAccount((LoginPlayer *const )pPlayer);
  58047. CacheLog(
  58048. 0,
  58049. "CLAskCharLoginHandler::Execute()....Fails!, code = ASKCHARLOGIN_VALIDATE_ERROR,acc=%s,guid=%X",
  58050. v8,
  58051. v7);
  58052. LABEL_12:
  58053. Msg._vptr_Packet = (int (**)(...))off_80CE708;
  58054. Packet::~Packet(&Msg);
  58055. return 2;
  58056. }
  58057. if ( DBChooseSceneTable::isValidSceneID(&g_DBSceneTable, pPacket->SceneID, 0) )
  58058. LoginPlayer::SetChooseSceneID((int)pPlayer, pPacket->SceneID);
  58059. v16 = rand();
  58060. LoginPlayer::SetUserKey((int)pPlayer, v16);
  58061. pPacket->PlayerID = (PlayerID_t)pPlayer[1].m_pSocketInputStream;
  58062. v17 = DBThreadManager::SendPacket(g_pDBThreadManager, &pPacket->0, (PlayerID_t)pPlayer[1].m_pSocketInputStream);
  58063. v32 = v17;
  58064. v18 = v17 == 0;
  58065. result = 3;
  58066. if ( v18 )
  58067. {
  58068. Packet::Packet((int)&Msg);
  58069. Msg._vptr_Packet = (int (**)(...))off_80CE708;
  58070. memset32(Msg.ServerIP, v32, 6u);
  58071. v19 = pPlayer->_vptr_Player;
  58072. Msg.ServerPort = 0;
  58073. Msg.ZoneID = 0;
  58074. Msg.Result = 2;
  58075. ((void (__cdecl *)(Player *, Packets::LCRetCharLogin *))v19[3])(pPlayer, &Msg);
  58076. pPlayer[2]._vptr_Player = uTime;
  58077. v20 = Packets::CLAskCharLogin::GetCharGuid((int)pPacket);
  58078. v21 = LoginPlayer::GetAccount((LoginPlayer *const )pPlayer);
  58079. CacheLog(
  58080. 0,
  58081. "CLAskCharLoginHandler::Execute()....Fails!, code = ASKCHARLOGIN_SERVER_BUSY,acc=%s,guid=%X",
  58082. v21,
  58083. v20);
  58084. Msg._vptr_Packet = (int (**)(...))off_80CE708;
  58085. Packet::~Packet(&Msg);
  58086. return 2;
  58087. }
  58088. }
  58089. return result;
  58090. }
  58091. // 80CE708: using guessed type _DWORD (__cdecl *off_80CE708[2])(Packets::LCRetCharLogin *this);
  58092.  
  58093. //----- (08093CC8) --------------------------------------------------------
  58094. void __cdecl _tcf_0_143(void *a1)
  58095. {
  58096. std::ios_base::Init::~Init(&std::__ioinit);
  58097. }
  58098.  
  58099. //----- (08093CD8) --------------------------------------------------------
  58100. void `global constructor keyed to'Packets::CLAskCharLoginHandler::Execute()
  58101. {
  58102. std::ios_base::Init::Init(&std::__ioinit);
  58103. __cxa_atexit(_tcf_0_143, 0, &_dso_handle);
  58104. }
  58105. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  58106.  
  58107. //----- (08093D04) --------------------------------------------------------
  58108. UINT __cdecl Packets::CLAskCreateCharHandler::Execute(Packets::CLAskCreateChar *pPacket, Player *pPlayer)
  58109. {
  58110. int v2; // ebx
  58111. BOOL v3; // eax
  58112. UINT v4; // edx
  58113. char *s2; // ST4C_4
  58114. const char *v6; // eax
  58115. const CHAR *v7; // eax
  58116. int v8; // ST20_4
  58117. const CHAR *v9; // eax
  58118. int (**v11)(...); // ebx
  58119. const CHAR *v12; // eax
  58120. const CHAR *v13; // eax
  58121. const CHAR *v14; // eax
  58122. const CHAR *v15; // eax
  58123. const CHAR *v16; // eax
  58124. const CHAR *v17; // eax
  58125. const CHAR *v18; // eax
  58126. const CHAR *v19; // eax
  58127. const CHAR *v20; // eax
  58128. const CHAR *v21; // eax
  58129. const CHAR *v22; // eax
  58130. const CHAR *v23; // eax
  58131. CHAR *v24; // ST2C_4
  58132. const CHAR *v25; // eax
  58133. const CHAR *v26; // eax
  58134. CHAR *v27; // ST2C_4
  58135. const CHAR *v28; // eax
  58136. const CHAR *v29; // eax
  58137. const CHAR *v30; // eax
  58138. const CHAR *v31; // eax
  58139. FULLUSERDATA_0 *v32; // edx
  58140. int j; // eax
  58141. FULLUSERDATA_0 *k; // eax
  58142. const CHAR *v35; // eax
  58143. const CHAR *v36; // eax
  58144. FULLUSERDATA_0 *v37; // edx
  58145. int jj; // eax
  58146. FULLUSERDATA_0 *l; // eax
  58147. FULLUSERDATA_0 *m; // eax
  58148. FULLUSERDATA_0 *n; // eax
  58149. FULLUSERDATA_0 *ii; // eax
  58150. FULLUSERDATA_0 *kk; // eax
  58151. const CHAR *v44; // eax
  58152. const CHAR *v45; // eax
  58153. FULLUSERDATA_0 *v46; // edx
  58154. int i2; // eax
  58155. FULLUSERDATA_0 *ll; // eax
  58156. FULLUSERDATA_0 *i3; // eax
  58157. const CHAR *v50; // eax
  58158. const CHAR *v51; // eax
  58159. int v52; // eax
  58160. const CHAR *v53; // eax
  58161. FULLUSERDATA_0 *v54; // edx
  58162. int i8; // eax
  58163. FULLUSERDATA_0 *mm; // eax
  58164. FULLUSERDATA_0 *i4; // eax
  58165. FULLUSERDATA_0 *nn; // eax
  58166. FULLUSERDATA_0 *i5; // eax
  58167. FULLUSERDATA_0 *i1; // eax
  58168. FULLUSERDATA_0 *i6; // eax
  58169. FULLUSERDATA_0 *i9; // eax
  58170. FULLUSERDATA_0 *i7; // eax
  58171. FULLUSERDATA_0 *i10; // eax
  58172. FULLUSERDATA_0 *i11; // eax
  58173. FULLUSERDATA_0 *i12; // eax
  58174. FULLUSERDATA_0 *i13; // eax
  58175. signed int i; // [esp+Ch] [ebp-C7DCh]
  58176. ODBCInterface *pInterface; // [esp+10h] [ebp-C7D8h]
  58177. UINT CharNumber; // [esp+14h] [ebp-C7D4h]
  58178. Packets::LCRetCharList *pRetListMsg; // [esp+18h] [ebp-C7D0h]
  58179. Packets::LCRetCreateChar *pMsg; // [esp+20h] [ebp-C7C8h]
  58180. int PlayerCharGUID; // [esp+24h] [ebp-C7C4h]
  58181. PlayerID_t PlayerID; // [esp+2Ah] [ebp-C7BEh]
  58182. ASKCREATECHAR_RESULT Result; // [esp+2Ch] [ebp-C7BCh]
  58183. DBCharList CharListObject; // [esp+30h] [ebp-C7B8h]
  58184. DBCharFullData CharFullDataObject; // [esp+A0h] [ebp-C748h]
  58185. FULLUSERDATA_0 UserData; // [esp+D0h] [ebp-C718h]
  58186. DBCharCreate CreateCharOp; // [esp+C6F0h] [ebp-F8h]
  58187. Packets::LCRetCreateChar Msg; // [esp+C780h] [ebp-68h]
  58188.  
  58189. v2 = ThreadValueManager::GetCurrentThreadID();
  58190. if ( g_pProcessPlayerManager->m_ThreadID == v2 )
  58191. {
  58192. if ( !pPlayer )
  58193. __assert__(
  58194. "./Packets/CLAskCreateCharHander.cpp",
  58195. 0x1Fu,
  58196. "static UINT Packets::CLAskCreateCharHandler::Execute(Packets::CLAskCreateChar*, Player*)",
  58197. "pLoginPlayer");
  58198. v4 = 2;
  58199. if ( pPlayer[2].m_pSocket == (Socket *)308 )
  58200. {
  58201. if ( pPacket->m_Name[0] && StrSafeCheck(pPacket->m_Name, 0x1Eu) )
  58202. {
  58203. v11 = (int (**)(...))TimeManager::CurrentTime((int)g_pTimeManager);
  58204. if ( pPlayer[2]._vptr_Player + 125 > v11 )
  58205. {
  58206. Packet::Packet((int)&Msg);
  58207. Msg._vptr_Packet = (int (**)(...))off_80CE9C8;
  58208. Msg.guid = -1;
  58209. v19 = LoginPlayer::GetAccount((LoginPlayer *const )pPlayer);
  58210. Packets::LCRetCreateChar::SetAccount(&Msg, v19);
  58211. Packets::LCRetCreateChar::SetResult((int)&Msg, 2);
  58212. (*((void (__cdecl **)(Player *, Packets::LCRetCreateChar *))pPlayer->_vptr_Player + 3))(pPlayer, &Msg);
  58213. v20 = LoginPlayer::GetAccount((LoginPlayer *const )pPlayer);
  58214. CacheLog(0, "CLAskCreateCharHandler....Fails!, code = ASKCREATECHAR_OP_TIMES,acc = %s", v20);
  58215. }
  58216. else if ( pPlayer[30].m_pSocketOutputStream )
  58217. {
  58218. pPacket->PlayerID = (PlayerID_t)pPlayer[1].m_pSocketInputStream;
  58219. v16 = LoginPlayer::GetAccount((LoginPlayer *const )pPlayer);
  58220. Packets::CLAskCreateChar::SetAccount(pPacket, v16);
  58221. if ( DBThreadManager::SendPacket(g_pDBThreadManager, &pPacket->0, (PlayerID_t)pPlayer[1].m_pSocketInputStream) )
  58222. {
  58223. pPlayer[2]._vptr_Player = v11;
  58224. return 3;
  58225. }
  58226. Packet::Packet((int)&Msg);
  58227. Msg._vptr_Packet = (int (**)(...))off_80CE9C8;
  58228. Msg.guid = -1;
  58229. v17 = Packets::CLAskCreateChar::GetAccount(pPacket);
  58230. Packets::LCRetCreateChar::SetAccount(&Msg, v17);
  58231. Packets::LCRetCreateChar::SetResult((int)&Msg, 1);
  58232. (*((void (__cdecl **)(Player *, Packets::LCRetCreateChar *))pPlayer->_vptr_Player + 3))(pPlayer, &Msg);
  58233. v18 = Packets::CLAskCreateChar::GetAccount(pPacket);
  58234. CacheLog(0, "CLAskCreateCharHandler....Fails!, code = ASKCREATECHAR_SERVER_BUSY,acc=%s", v18);
  58235. }
  58236. else
  58237. {
  58238. Packet::Packet((int)&Msg);
  58239. Msg._vptr_Packet = (int (**)(...))off_80CE9C8;
  58240. Msg.guid = -1;
  58241. v12 = Packets::CLAskCreateChar::GetAccount(pPacket);
  58242. Packets::LCRetCreateChar::SetAccount(&Msg, v12);
  58243. Packets::LCRetCreateChar::SetResult((int)&Msg, 9);
  58244. (*((void (__cdecl **)(Player *, Packets::LCRetCreateChar *))pPlayer->_vptr_Player + 3))(pPlayer, &Msg);
  58245. v13 = Packets::CLAskCreateChar::GetAccount(pPacket);
  58246. CacheLog(0, "ERROR:CLAskCreateCharHandler....Fails!, code = ASKCREATECHAR_CREATECODE_FALSE,acc = %s", v13);
  58247. }
  58248. }
  58249. else
  58250. {
  58251. Packet::Packet((int)&Msg);
  58252. Msg._vptr_Packet = (int (**)(...))off_80CE9C8;
  58253. Msg.guid = -1;
  58254. v7 = LoginPlayer::GetAccount((LoginPlayer *const )pPlayer);
  58255. Packets::LCRetCreateChar::SetAccount(&Msg, v7);
  58256. Packets::LCRetCreateChar::SetResult((int)&Msg, 8);
  58257. (*((void (__fastcall **)(int))pPlayer->_vptr_Player + 3))(v8);
  58258. v9 = LoginPlayer::GetAccount((LoginPlayer *const )pPlayer);
  58259. CacheLog(0, "CLAskCreateCharHandler....Fails!, code = ASKCREATECHAR_NAME_ERROR,acc=%s", v9);
  58260. }
  58261. Msg._vptr_Packet = (int (**)(...))off_80CE9C8;
  58262. Packet::~Packet(&Msg);
  58263. return 2;
  58264. }
  58265. }
  58266. else
  58267. {
  58268. v3 = DBThreadManager::IsPoolTID(g_pDBThreadManager, v2);
  58269. v4 = 2;
  58270. if ( v3 )
  58271. {
  58272. PlayerID = pPacket->PlayerID;
  58273. PlayerCharGUID = 1;
  58274. if ( !pPlayer )
  58275. __assert__(
  58276. "./Packets/CLAskCreateCharHander.cpp",
  58277. 0x73u,
  58278. "static UINT Packets::CLAskCreateCharHandler::Execute(Packets::CLAskCreateChar*, Player*)",
  58279. "pLoginPlayer");
  58280. Result = 6;
  58281. pMsg = (Packets::LCRetCreateChar *)PacketFactoryManager::CreatePacket(g_pPacketFactoryManager, 0x1E1u);
  58282. if ( !pMsg )
  58283. __assertex__(
  58284. "./Packets/CLAskCreateCharHander.cpp",
  58285. 0x79u,
  58286. "static UINT Packets::CLAskCreateCharHandler::Execute(Packets::CLAskCreateChar*, Player*)",
  58287. "FALSE",
  58288. &byte_80DE6FA);
  58289. if ( LoginPlayer::GetDBOperating((int)pPlayer) == 1 )
  58290. {
  58291. v14 = Packets::CLAskCreateChar::GetAccount(pPacket);
  58292. Packets::LCRetCreateChar::SetAccount(pMsg, v14);
  58293. Packets::LCRetCreateChar::SetResult((int)pMsg, 1);
  58294. ProcessManager::SendPacket(g_pProcessManager, &pMsg->0, PlayerID, 0);
  58295. v15 = Packets::CLAskCreateChar::GetAccount(pPacket);
  58296. CacheLog(0, aClaskcreatecha_6, v15);
  58297. return 2;
  58298. }
  58299. s2 = (char *)Packets::CLAskCreateChar::GetAccount(pPacket);
  58300. v6 = LoginPlayer::GetAccount((LoginPlayer *const )pPlayer);
  58301. if ( strcmp(v6, s2) )
  58302. {
  58303. Packets::CLAskCreateChar::GetAccount(pPacket);
  58304. LoginPlayer::GetAccount((LoginPlayer *const )pPlayer);
  58305. CacheLog(0, "ERROR: CLAskCreateChar DBOperation Errors,acc = %s,Packet acc = %s");
  58306. PacketFactoryManager::RemovePacket(g_pPacketFactoryManager, &pMsg->0);
  58307. return 2;
  58308. }
  58309. LoginPlayer::SetDBOperating((int)pPlayer, 1);
  58310. pRetListMsg = (Packets::LCRetCharList *)PacketFactoryManager::CreatePacket(g_pPacketFactoryManager, 0x26Eu);
  58311. if ( !pRetListMsg )
  58312. __assertex__(
  58313. "./Packets/CLAskCreateCharHander.cpp",
  58314. 0x96u,
  58315. "static UINT Packets::CLAskCreateCharHandler::Execute(Packets::CLAskCreateChar*, Player*)",
  58316. "FALSE",
  58317. &byte_80DDF85);
  58318. CharNumber = LoginPlayer::GetCharNumber((int)pPlayer);
  58319. if ( (signed int)CharNumber <= 2 )
  58320. {
  58321. if ( CharNumber != -1 )
  58322. {
  58323. pInterface = DBThreadManager::GetInterface(g_pDBThreadManager, v2);
  58324. if ( !pInterface )
  58325. {
  58326. PacketFactoryManager::RemovePacket(g_pPacketFactoryManager, &pMsg->0);
  58327. PacketFactoryManager::RemovePacket(g_pPacketFactoryManager, &pRetListMsg->0);
  58328. LoginPlayer::SetDBOperating((int)pPlayer, 0);
  58329. return 2;
  58330. }
  58331. DBCharCreate::DBCharCreate(&CreateCharOp, pInterface);
  58332. v23 = Packets::CLAskCreateChar::GetAccount(pPacket);
  58333. DBCharCreate::SetAccount(&CreateCharOp, v23);
  58334. DBCharCreate::SetCharName((const CHAR *)&CreateCharOp, pPacket->m_Name);
  58335. DBCharCreate::SetSex((int)&CreateCharOp, pPacket->m_Sex);
  58336. DBCharCreate::SetHairColor((int)&CreateCharOp, pPacket->m_HairColor);
  58337. DBCharCreate::SetHairModel((int)&CreateCharOp, pPacket->m_HairModel);
  58338. DBCharCreate::SetFaceColor((int)&CreateCharOp, pPacket->m_FaceColor);
  58339. DBCharCreate::SetFaceModel((int)&CreateCharOp, pPacket->m_FaceModel);
  58340. DBCharCreate::SetDefEquip((int)&CreateCharOp, pPacket->m_DefEquip);
  58341. DBCharCreate::SetHeadID((int)&CreateCharOp, pPacket->m_HeadID);
  58342. if ( DBCharCreate::AddNew(&CreateCharOp) )
  58343. {
  58344. if ( DBCharCreate::ParseResult(&CreateCharOp, &Result) )
  58345. {
  58346. PlayerCharGUID = DBCharCreate::GetCharGuid((int)&CreateCharOp);
  58347. if ( PlayerCharGUID == -1 )
  58348. __assert__(
  58349. "./Packets/CLAskCreateCharHander.cpp",
  58350. 0xFDu,
  58351. "static UINT Packets::CLAskCreateCharHandler::Execute(Packets::CLAskCreateChar*, Player*)",
  58352. "PlayerCharGUID!=INVALID_ID");
  58353. FULLUSERDATA::FULLUSERDATA(&UserData);
  58354. DBCharFullData::DBCharFullData(&CharFullDataObject, pInterface);
  58355. DBCharFullData::SetCharGuid((int)&CharFullDataObject, PlayerCharGUID);
  58356. if ( !DBCharFullData::Load(&CharFullDataObject) )
  58357. {
  58358. v30 = Packets::CLAskCreateChar::GetAccount(pPacket);
  58359. Packets::LCRetCreateChar::SetAccount(pMsg, v30);
  58360. pMsg->guid = PlayerCharGUID;
  58361. Packets::LCRetCreateChar::SetResult((int)pMsg, 7);
  58362. ProcessManager::SendPacket(g_pProcessManager, &pMsg->0, PlayerID, 0);
  58363. PacketFactoryManager::RemovePacket(g_pPacketFactoryManager, &pRetListMsg->0);
  58364. LoginPlayer::SetDBOperating((int)pPlayer, 0);
  58365. v31 = Packets::CLAskCreateChar::GetAccount(pPacket);
  58366. CacheLog(
  58367. 0,
  58368. "CLAskCreateCharHandler::Execute() ...Load()....Fails! Next DBThread Try!,acc = %s,guid=%X",
  58369. v31,
  58370. PlayerCharGUID);
  58371. v32 = (FULLUSERDATA_0 *)((char *)&UserData + 44262);
  58372. while ( &UserData.m_PetList != (_PET_DB_LIST_LOAD *)v32 )
  58373. {
  58374. v32 = (FULLUSERDATA_0 *)((char *)v32 - 399);
  58375. if ( v32 != (FULLUSERDATA_0 *)-211 )
  58376. {
  58377. for ( j = (int)&v32->m_Human.m_Titles.m_szShangDian[31];
  58378. &v32->m_Human.m_Titles.m_szJieBai[3] != (CHAR *)j;
  58379. j -= 12 )
  58380. {
  58381. ;
  58382. }
  58383. }
  58384. }
  58385. if ( &UserData != (FULLUSERDATA_0 *)-33963 )
  58386. {
  58387. for ( k = (FULLUSERDATA_0 *)((char *)&UserData + 35483);
  58388. UserData.m_Impact.m_aImpacts != (_OWN_IMPACT *)k;
  58389. k = (FULLUSERDATA_0 *)((char *)k - 76) )
  58390. {
  58391. ;
  58392. }
  58393. }
  58394. if ( &UserData != (FULLUSERDATA_0 *)-33513 )
  58395. {
  58396. for ( l = (FULLUSERDATA_0 *)((char *)&UserData + 33897);
  58397. &UserData.m_Cooldown != (_COOLDOWN_DB_LOAD_FOR_HUMAN *)l;
  58398. l = (FULLUSERDATA_0 *)((char *)l - 12) )
  58399. {
  58400. ;
  58401. }
  58402. }
  58403. if ( &UserData != (FULLUSERDATA_0 *)-1409 )
  58404. {
  58405. for ( m = (FULLUSERDATA_0 *)((char *)&UserData + 1457);
  58406. &UserData.m_Human.m_PvpInfo.m_oPersonalEnemyList != (PersonalEnemyList_T *)m;
  58407. m = (FULLUSERDATA_0 *)((char *)m - 8) )
  58408. {
  58409. ;
  58410. }
  58411. }
  58412. if ( &UserData.m_Human.m_PvpInfo != (_PVPInfo *)-347 )
  58413. {
  58414. for ( n = (FULLUSERDATA_0 *)((char *)&UserData + 1409);
  58415. &UserData.m_Human.m_PvpInfo.m_oPersonalDuelList != (PersonalDuelList_T *)n;
  58416. n = (FULLUSERDATA_0 *)((char *)n - 8) )
  58417. {
  58418. ;
  58419. }
  58420. }
  58421. if ( &UserData != (FULLUSERDATA_0 *)-1289 )
  58422. {
  58423. for ( ii = (FULLUSERDATA_0 *)((char *)&UserData + 1369);
  58424. &UserData.m_Human.m_PvpInfo.m_oFightBackList != (FightBackList_T *)ii;
  58425. ii = (FULLUSERDATA_0 *)((char *)ii - 8) )
  58426. {
  58427. ;
  58428. }
  58429. }
  58430. return 3;
  58431. }
  58432. DBCharFullData::ParseResult(&CharFullDataObject, &UserData);
  58433. CharConfig::InitCharAttr((FULLUSERDATA *)&UserData);
  58434. if ( !DBCharFullData::Save(&CharFullDataObject, &UserData) )
  58435. {
  58436. v35 = Packets::CLAskCreateChar::GetAccount(pPacket);
  58437. Packets::LCRetCreateChar::SetAccount(pMsg, v35);
  58438. Packets::LCRetCreateChar::SetResult((int)pMsg, 6);
  58439. ProcessManager::SendPacket(g_pProcessManager, &pMsg->0, PlayerID, 0);
  58440. v36 = Packets::CLAskCreateChar::GetAccount(pPacket);
  58441. CacheLog(
  58442. 0,
  58443. "CLAskCreateCharHandler::Execute() ...Save()....Fails!,acc = %s,guid = %X",
  58444. v36,
  58445. PlayerCharGUID);
  58446. PacketFactoryManager::RemovePacket(g_pPacketFactoryManager, &pRetListMsg->0);
  58447. LoginPlayer::SetDBOperating((int)pPlayer, 0);
  58448. v37 = (FULLUSERDATA_0 *)((char *)&UserData + 44262);
  58449. while ( &UserData.m_PetList != (_PET_DB_LIST_LOAD *)v37 )
  58450. {
  58451. v37 = (FULLUSERDATA_0 *)((char *)v37 - 399);
  58452. if ( v37 != (FULLUSERDATA_0 *)-211 )
  58453. {
  58454. for ( jj = (int)&v37->m_Human.m_Titles.m_szShangDian[31];
  58455. &v37->m_Human.m_Titles.m_szJieBai[3] != (CHAR *)jj;
  58456. jj -= 12 )
  58457. {
  58458. ;
  58459. }
  58460. }
  58461. }
  58462. if ( &UserData != (FULLUSERDATA_0 *)-33963 )
  58463. {
  58464. for ( kk = (FULLUSERDATA_0 *)((char *)&UserData + 35483);
  58465. UserData.m_Impact.m_aImpacts != (_OWN_IMPACT *)kk;
  58466. kk = (FULLUSERDATA_0 *)((char *)kk - 76) )
  58467. {
  58468. ;
  58469. }
  58470. }
  58471. if ( &UserData != (FULLUSERDATA_0 *)-33513 )
  58472. {
  58473. for ( ll = (FULLUSERDATA_0 *)((char *)&UserData + 33897);
  58474. &UserData.m_Cooldown != (_COOLDOWN_DB_LOAD_FOR_HUMAN *)ll;
  58475. ll = (FULLUSERDATA_0 *)((char *)ll - 12) )
  58476. {
  58477. ;
  58478. }
  58479. }
  58480. if ( &UserData != (FULLUSERDATA_0 *)-1409 )
  58481. {
  58482. for ( mm = (FULLUSERDATA_0 *)((char *)&UserData + 1457);
  58483. &UserData.m_Human.m_PvpInfo.m_oPersonalEnemyList != (PersonalEnemyList_T *)mm;
  58484. mm = (FULLUSERDATA_0 *)((char *)mm - 8) )
  58485. {
  58486. ;
  58487. }
  58488. }
  58489. if ( &UserData.m_Human.m_PvpInfo != (_PVPInfo *)-347 )
  58490. {
  58491. for ( nn = (FULLUSERDATA_0 *)((char *)&UserData + 1409);
  58492. &UserData.m_Human.m_PvpInfo.m_oPersonalDuelList != (PersonalDuelList_T *)nn;
  58493. nn = (FULLUSERDATA_0 *)((char *)nn - 8) )
  58494. {
  58495. ;
  58496. }
  58497. }
  58498. if ( &UserData != (FULLUSERDATA_0 *)-1289 )
  58499. {
  58500. for ( i1 = (FULLUSERDATA_0 *)((char *)&UserData + 1369);
  58501. &UserData.m_Human.m_PvpInfo.m_oFightBackList != (FightBackList_T *)i1;
  58502. i1 = (FULLUSERDATA_0 *)((char *)i1 - 8) )
  58503. {
  58504. ;
  58505. }
  58506. }
  58507. return 3;
  58508. }
  58509. if ( !DBCharFullData::ParseResult(&CharFullDataObject, &UserData) )
  58510. {
  58511. v44 = Packets::CLAskCreateChar::GetAccount(pPacket);
  58512. Packets::LCRetCreateChar::SetAccount(pMsg, v44);
  58513. Packets::LCRetCreateChar::SetResult((int)pMsg, 6);
  58514. ProcessManager::SendPacket(g_pProcessManager, &pMsg->0, PlayerID, 0);
  58515. v45 = Packets::CLAskCreateChar::GetAccount(pPacket);
  58516. CacheLog(
  58517. 0,
  58518. "CLAskCreateCharHandler::Execute() ...ParseResult....Fails!,acc=%s,guid=%X",
  58519. v45,
  58520. PlayerCharGUID);
  58521. PacketFactoryManager::RemovePacket(g_pPacketFactoryManager, &pRetListMsg->0);
  58522. LoginPlayer::SetDBOperating((int)pPlayer, 0);
  58523. v46 = (FULLUSERDATA_0 *)((char *)&UserData + 44262);
  58524. while ( &UserData.m_PetList != (_PET_DB_LIST_LOAD *)v46 )
  58525. {
  58526. v46 = (FULLUSERDATA_0 *)((char *)v46 - 399);
  58527. if ( v46 != (FULLUSERDATA_0 *)-211 )
  58528. {
  58529. for ( i2 = (int)&v46->m_Human.m_Titles.m_szShangDian[31];
  58530. &v46->m_Human.m_Titles.m_szJieBai[3] != (CHAR *)i2;
  58531. i2 -= 12 )
  58532. {
  58533. ;
  58534. }
  58535. }
  58536. }
  58537. if ( &UserData != (FULLUSERDATA_0 *)-33963 )
  58538. {
  58539. for ( i3 = (FULLUSERDATA_0 *)((char *)&UserData + 35483);
  58540. UserData.m_Impact.m_aImpacts != (_OWN_IMPACT *)i3;
  58541. i3 = (FULLUSERDATA_0 *)((char *)i3 - 76) )
  58542. {
  58543. ;
  58544. }
  58545. }
  58546. if ( &UserData != (FULLUSERDATA_0 *)-33513 )
  58547. {
  58548. for ( i4 = (FULLUSERDATA_0 *)((char *)&UserData + 33897);
  58549. &UserData.m_Cooldown != (_COOLDOWN_DB_LOAD_FOR_HUMAN *)i4;
  58550. i4 = (FULLUSERDATA_0 *)((char *)i4 - 12) )
  58551. {
  58552. ;
  58553. }
  58554. }
  58555. if ( &UserData != (FULLUSERDATA_0 *)-1409 )
  58556. {
  58557. for ( i5 = (FULLUSERDATA_0 *)((char *)&UserData + 1457);
  58558. &UserData.m_Human.m_PvpInfo.m_oPersonalEnemyList != (PersonalEnemyList_T *)i5;
  58559. i5 = (FULLUSERDATA_0 *)((char *)i5 - 8) )
  58560. {
  58561. ;
  58562. }
  58563. }
  58564. if ( &UserData.m_Human.m_PvpInfo != (_PVPInfo *)-347 )
  58565. {
  58566. for ( i6 = (FULLUSERDATA_0 *)((char *)&UserData + 1409);
  58567. &UserData.m_Human.m_PvpInfo.m_oPersonalDuelList != (PersonalDuelList_T *)i6;
  58568. i6 = (FULLUSERDATA_0 *)((char *)i6 - 8) )
  58569. {
  58570. ;
  58571. }
  58572. }
  58573. if ( &UserData != (FULLUSERDATA_0 *)-1289 )
  58574. {
  58575. for ( i7 = (FULLUSERDATA_0 *)((char *)&UserData + 1369);
  58576. &UserData.m_Human.m_PvpInfo.m_oFightBackList != (FightBackList_T *)i7;
  58577. i7 = (FULLUSERDATA_0 *)((char *)i7 - 8) )
  58578. {
  58579. ;
  58580. }
  58581. }
  58582. return 3;
  58583. }
  58584. DBCharList::DBCharList(&CharListObject, pInterface);
  58585. v50 = Packets::CLAskCreateChar::GetAccount(pPacket);
  58586. DBCharList::SetAccount(&CharListObject, v50);
  58587. if ( DBCharList::Load(&CharListObject) )
  58588. {
  58589. DBCharList::ParseResult(&CharListObject, pRetListMsg->CharList);
  58590. v51 = Packets::CLAskCreateChar::GetAccount(pPacket);
  58591. Packets::LCRetCharList::SetAccount(pRetListMsg, v51);
  58592. Packets::LCRetCharList::SetResult((int)pRetListMsg, 0);
  58593. pRetListMsg->uCharNumber = DBCharList::GetCharNumber((int)&CharListObject);
  58594. if ( DBCharList::GetCharNumber((int)&CharListObject) <= CharNumber )
  58595. {
  58596. Result = 6;
  58597. }
  58598. else
  58599. {
  58600. Result = 0;
  58601. pPlayer[30].m_pSocketOutputStream = 0;
  58602. }
  58603. v52 = DBCharList::GetCharNumber((int)&CharListObject);
  58604. LoginPlayer::SetCharNumber((int)pPlayer, v52);
  58605. for ( i = 0; LoginPlayer::GetCharNumber((int)pPlayer) > i; ++i )
  58606. {
  58607. if ( (unsigned __int8)i > 4u )
  58608. __assert__(
  58609. "../../Common/Packets/LCRetCharList.h",
  58610. 0x3Cu,
  58611. "DB_CHAR_BASE_INFO* Packets::LCRetCharList::GetCharBaseInfo(UCHAR)",
  58612. "CharIndex<DB_CHAR_NUMBER");
  58613. LoginPlayer::SetCharGUID((UINT)pPlayer, pRetListMsg->CharList[(unsigned __int8)i].m_GUID, i);
  58614. }
  58615. }
  58616. else
  58617. {
  58618. v53 = Packets::CLAskCreateChar::GetAccount(pPacket);
  58619. Packets::LCRetCharList::SetAccount(pRetListMsg, v53);
  58620. Packets::LCRetCharList::SetResult((int)pRetListMsg, 1);
  58621. pRetListMsg->uCharNumber = DBCharList::GetCharNumber((int)&CharListObject);
  58622. }
  58623. v54 = (FULLUSERDATA_0 *)((char *)&UserData + 44262);
  58624. while ( &UserData.m_PetList != (_PET_DB_LIST_LOAD *)v54 )
  58625. {
  58626. v54 = (FULLUSERDATA_0 *)((char *)v54 - 399);
  58627. if ( v54 != (FULLUSERDATA_0 *)-211 )
  58628. {
  58629. for ( i8 = (int)&v54->m_Human.m_Titles.m_szShangDian[31];
  58630. &v54->m_Human.m_Titles.m_szJieBai[3] != (CHAR *)i8;
  58631. i8 -= 12 )
  58632. {
  58633. ;
  58634. }
  58635. }
  58636. }
  58637. if ( &UserData != (FULLUSERDATA_0 *)-33963 )
  58638. {
  58639. for ( i9 = (FULLUSERDATA_0 *)((char *)&UserData + 35483);
  58640. UserData.m_Impact.m_aImpacts != (_OWN_IMPACT *)i9;
  58641. i9 = (FULLUSERDATA_0 *)((char *)i9 - 76) )
  58642. {
  58643. ;
  58644. }
  58645. }
  58646. if ( &UserData != (FULLUSERDATA_0 *)-33513 )
  58647. {
  58648. for ( i10 = (FULLUSERDATA_0 *)((char *)&UserData + 33897);
  58649. &UserData.m_Cooldown != (_COOLDOWN_DB_LOAD_FOR_HUMAN *)i10;
  58650. i10 = (FULLUSERDATA_0 *)((char *)i10 - 12) )
  58651. {
  58652. ;
  58653. }
  58654. }
  58655. if ( &UserData != (FULLUSERDATA_0 *)-1409 )
  58656. {
  58657. for ( i11 = (FULLUSERDATA_0 *)((char *)&UserData + 1457);
  58658. &UserData.m_Human.m_PvpInfo.m_oPersonalEnemyList != (PersonalEnemyList_T *)i11;
  58659. i11 = (FULLUSERDATA_0 *)((char *)i11 - 8) )
  58660. {
  58661. ;
  58662. }
  58663. }
  58664. if ( &UserData.m_Human.m_PvpInfo != (_PVPInfo *)-347 )
  58665. {
  58666. for ( i12 = (FULLUSERDATA_0 *)((char *)&UserData + 1409);
  58667. &UserData.m_Human.m_PvpInfo.m_oPersonalDuelList != (PersonalDuelList_T *)i12;
  58668. i12 = (FULLUSERDATA_0 *)((char *)i12 - 8) )
  58669. {
  58670. ;
  58671. }
  58672. }
  58673. if ( &UserData != (FULLUSERDATA_0 *)-1289 )
  58674. {
  58675. for ( i13 = (FULLUSERDATA_0 *)((char *)&UserData + 1369);
  58676. &UserData.m_Human.m_PvpInfo.m_oFightBackList != (FightBackList_T *)i13;
  58677. i13 = (FULLUSERDATA_0 *)((char *)i13 - 8) )
  58678. {
  58679. ;
  58680. }
  58681. }
  58682. goto LABEL_28;
  58683. }
  58684. v27 = ODBCBase::GetErrorMessage((int)&CreateCharOp);
  58685. v28 = Packets::CLAskCreateChar::GetAccount(pPacket);
  58686. CacheLog(0, "CreateCharOp.ParseResult()...acc = %s Get Errors: %s", v28, v27);
  58687. v29 = Packets::CLAskCreateChar::GetAccount(pPacket);
  58688. Packets::LCRetCreateChar::SetAccount(pMsg, v29);
  58689. Packets::LCRetCreateChar::SetResult((int)pMsg, Result);
  58690. }
  58691. else
  58692. {
  58693. v24 = ODBCBase::GetErrorMessage((int)&CreateCharOp);
  58694. v25 = Packets::CLAskCreateChar::GetAccount(pPacket);
  58695. CacheLog(0, "CreateCharOp.AddNew()...acc = %s Get Errors: %s", v25, v24);
  58696. v26 = Packets::CLAskCreateChar::GetAccount(pPacket);
  58697. Packets::LCRetCreateChar::SetAccount(pMsg, v26);
  58698. Packets::LCRetCreateChar::SetResult((int)pMsg, 6);
  58699. }
  58700. ProcessManager::SendPacket(g_pProcessManager, &pMsg->0, PlayerID, 0);
  58701. PacketFactoryManager::RemovePacket(g_pPacketFactoryManager, &pRetListMsg->0);
  58702. LoginPlayer::SetDBOperating((int)pPlayer, 0);
  58703. return 3;
  58704. }
  58705. Result = 5;
  58706. }
  58707. else
  58708. {
  58709. Result = 3;
  58710. }
  58711. LABEL_28:
  58712. v21 = Packets::CLAskCreateChar::GetAccount(pPacket);
  58713. Packets::LCRetCreateChar::SetAccount(pMsg, v21);
  58714. Packets::LCRetCreateChar::SetResult((int)pMsg, Result);
  58715. ProcessManager::SendPacket(g_pProcessManager, &pMsg->0, PlayerID, 0);
  58716. ProcessManager::SendPacket(g_pProcessManager, &pRetListMsg->0, PlayerID, 0);
  58717. LoginPlayer::SetDBOperating((int)pPlayer, 0);
  58718. v22 = Packets::CLAskCreateChar::GetAccount(pPacket);
  58719. CacheLog(
  58720. 0,
  58721. "CLAskCreateCharHandler::Execute()....OK! \t\t\t\tAccount = %s CharGuid = %X CharName = %s",
  58722. v22,
  58723. PlayerCharGUID,
  58724. pPacket->m_Name);
  58725. return 3;
  58726. }
  58727. }
  58728. return v4;
  58729. }
  58730. // 80CE9C8: using guessed type _DWORD (__cdecl *off_80CE9C8[2])(Packets::LCRetCreateChar *this);
  58731.  
  58732. //----- (08094D04) --------------------------------------------------------
  58733. void __cdecl _tcf_0_144(void *a1)
  58734. {
  58735. std::ios_base::Init::~Init(&std::__ioinit);
  58736. }
  58737.  
  58738. //----- (08094D14) --------------------------------------------------------
  58739. void `global constructor keyed to'Packets::CLAskCreateCharHandler::Execute()
  58740. {
  58741. std::ios_base::Init::Init(&std::__ioinit);
  58742. __cxa_atexit(_tcf_0_144, 0, &_dso_handle);
  58743. }
  58744. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  58745.  
  58746. //----- (08094D40) --------------------------------------------------------
  58747. void __cdecl FULLUSERDATA::FULLUSERDATA(FULLUSERDATA_0 *const this)
  58748. {
  58749. signed int v1; // edx
  58750. FightBackList_T *v2; // eax
  58751. PersonalDuelList_T *v3; // eax
  58752. signed int v4; // edx
  58753. PersonalEnemyList_T *v5; // eax
  58754. signed int v6; // edx
  58755. signed int v7; // eax
  58756. FightBackList_T *v8; // eax
  58757. signed int v9; // edx
  58758. PersonalDuelList_T *v10; // eax
  58759. signed int v11; // edx
  58760. PersonalEnemyList_T *v12; // eax
  58761. signed int v13; // edx
  58762. signed int v14; // edx
  58763. _PLAYERSHOP_GUID *v15; // esi
  58764. signed int v16; // edx
  58765. _DuelInfo *v17; // eax
  58766. _FATIGUE_INFO *v18; // eax
  58767. _DOUBLE_EXP_0 *v19; // eax
  58768. _BANK_DB_LOAD *v20; // edi
  58769. signed int v21; // ebx
  58770. _BAG_DB_LOAD *v22; // edi
  58771. signed int v23; // ebx
  58772. _EQUIP_DB_LOAD *v24; // ebx
  58773. signed int v25; // edi
  58774. _COOLDOWN_DB_LOAD_FOR_HUMAN *v26; // eax
  58775. signed int v27; // edx
  58776. signed int v28; // edx
  58777. _SETTING_DB_LOAD *v29; // eax
  58778. signed int v30; // edx
  58779. _SETTING_DB_LOAD *v31; // eax
  58780. signed int v32; // edx
  58781. _PET_DB_LOAD *v33; // ebx
  58782. signed int v34; // edx
  58783. int v35; // eax
  58784. int v36; // eax
  58785. signed int v37; // edx
  58786. _PET_TITLE *v38; // eax
  58787. signed int v39; // edx
  58788. _RELATION_DB_LOAD *v40; // ebx
  58789. PrenticeInfo *v41; // eax
  58790. PrenticeInfo1 *v42; // eax
  58791. _COOLDOWN_DB_LOAD_FOR_HUMAN *v43; // eax
  58792. signed int v44; // edx
  58793. _SETTING_DB_LOAD *v45; // eax
  58794. signed int v46; // edx
  58795. CHAR *v47; // edi
  58796. _PLAYERSHOP_GUID *v48; // [esp+Ch] [ebp-7Ch]
  58797. _OWN_IMPACT *v49; // [esp+Ch] [ebp-7Ch]
  58798. _RELATION_DB_LOAD *v50; // [esp+Ch] [ebp-7Ch]
  58799. _EQUIP_DB_LOAD *v51; // [esp+18h] [ebp-70h]
  58800. _BAG_DB_LOAD *v52; // [esp+28h] [ebp-60h]
  58801. _IMPACT_DB_LOAD *v53; // [esp+34h] [ebp-54h]
  58802. char *v54; // [esp+38h] [ebp-50h]
  58803. signed int v55; // [esp+50h] [ebp-38h]
  58804. signed int v56; // [esp+58h] [ebp-30h]
  58805.  
  58806. this->m_Human.m_Position.m_fX = 0.0;
  58807. this->m_Human.m_Position.m_fZ = 0.0;
  58808. this->m_Human.m_BakPosition.m_fX = 0.0;
  58809. this->m_Human.m_BakPosition.m_fZ = 0.0;
  58810. this->m_Human.m_guidCurrentPet.m_uHighSection = 0;
  58811. this->m_Human.m_guidCurrentPet.m_uLowSection = 0;
  58812. v1 = 9;
  58813. memset(&this->m_Human.m_BaseAttrLevel1, 0, sizeof(this->m_Human.m_BaseAttrLevel1));
  58814. v2 = &this->m_Human.m_PvpInfo.m_oFightBackList;
  58815. do
  58816. {
  58817. --v1;
  58818. v2->m_aList[0].m_nUniqueID = -1;
  58819. v2->m_aList[0].m_nTime = 0;
  58820. v2 = (FightBackList_T *)((char *)v2 + 8);
  58821. }
  58822. while ( v1 != -1 );
  58823. v3 = &this->m_Human.m_PvpInfo.m_oPersonalDuelList;
  58824. v4 = 4;
  58825. do
  58826. {
  58827. --v4;
  58828. v3->m_aList[0].m_nUniqueID = -1;
  58829. v3->m_aList[0].m_nTime = 0;
  58830. v3 = (PersonalDuelList_T *)((char *)v3 + 8);
  58831. }
  58832. while ( v4 != -1 );
  58833. v5 = &this->m_Human.m_PvpInfo.m_oPersonalEnemyList;
  58834. v6 = 5;
  58835. do
  58836. {
  58837. --v6;
  58838. v5->m_aList[0].m_nUniqueID = -1;
  58839. v5->m_aList[0].m_nTime = 0;
  58840. v5 = (PersonalEnemyList_T *)((char *)v5 + 8);
  58841. }
  58842. while ( v6 != -1 );
  58843. this->m_Human.m_PvpInfo.m_nCampID = -1;
  58844. this->m_Human.m_PvpInfo.m_nReputationID = -1;
  58845. this->m_Human.m_PvpInfo.m_nPvpMode = 0;
  58846. this->m_Human.m_PvpInfo.m_nPvpModeSwitchDelayTime = 0;
  58847. v7 = 0;
  58848. do
  58849. this->m_Human.m_PvpInfo.m_oReputationList.m_aList[v7++] = 0;
  58850. while ( v7 <= 63 );
  58851. v8 = &this->m_Human.m_PvpInfo.m_oFightBackList;
  58852. v9 = 9;
  58853. do
  58854. {
  58855. v8->m_aList[0].m_nUniqueID = -1;
  58856. v8->m_aList[0].m_nTime = 0;
  58857. v8 = (FightBackList_T *)((char *)v8 + 8);
  58858. --v9;
  58859. }
  58860. while ( v9 >= 0 );
  58861. v10 = &this->m_Human.m_PvpInfo.m_oPersonalDuelList;
  58862. v11 = 4;
  58863. do
  58864. {
  58865. v10->m_aList[0].m_nUniqueID = -1;
  58866. v10->m_aList[0].m_nTime = 0;
  58867. v10 = (PersonalDuelList_T *)((char *)v10 + 8);
  58868. --v11;
  58869. }
  58870. while ( v11 >= 0 );
  58871. v12 = &this->m_Human.m_PvpInfo.m_oPersonalEnemyList;
  58872. v13 = 5;
  58873. do
  58874. {
  58875. v12->m_aList[0].m_nUniqueID = -1;
  58876. v12->m_aList[0].m_nTime = 0;
  58877. v12 = (PersonalEnemyList_T *)((char *)v12 + 8);
  58878. --v13;
  58879. }
  58880. while ( v13 >= 0 );
  58881. v48 = this->m_Human.m_ShopGuid;
  58882. v14 = 1;
  58883. do
  58884. {
  58885. memset(v48, 0, sizeof(_PLAYERSHOP_GUID));
  58886. --v14;
  58887. v48->m_PoolPos = -1;
  58888. v48->m_Server = -1;
  58889. v48->m_World = -1;
  58890. v48->m_Scene = -1;
  58891. ++v48;
  58892. }
  58893. while ( v14 != -1 );
  58894. v15 = this->m_Human.m_FavoriteList;
  58895. v16 = 9;
  58896. do
  58897. {
  58898. --v16;
  58899. memset(v15, 0, sizeof(_PLAYERSHOP_GUID));
  58900. v15->m_PoolPos = -1;
  58901. v15->m_Server = -1;
  58902. v15->m_World = -1;
  58903. v15->m_Scene = -1;
  58904. ++v15;
  58905. }
  58906. while ( v16 != -1 );
  58907. v17 = &this->m_Human.m_oDuelInfo;
  58908. v17->m_nMaxReqTime = 0;
  58909. v17->m_nProcessStatus = 0;
  58910. v18 = &this->m_Human.m_FatigueInfo;
  58911. this->m_Human.m_oDuelInfo.m_guidDueler = -1;
  58912. v18->m_uTotalOfflineTime = 0;
  58913. v18->m_uCurrentEnterServerTime = 0;
  58914. v18->m_uLastLeaveServerTime = 0;
  58915. v19 = &this->m_Human.m_DoubleExp;
  58916. this->m_Human.m_FatigueInfo.m_uTotalOnlineTime = 0;
  58917. this->m_Human.m_DoubleExp.m_nCount = 0;
  58918. v19->m_bLock = 0;
  58919. v19->m_unMoneyDETime = 0;
  58920. v19->m_unFreeDETime = 0;
  58921. v19->m_nPreFlashTime = 0;
  58922. _HUMAN_DB_LOAD::CleanUp((_HUMAN_DB_LOAD *const )this);
  58923. v20 = &this->m_Bank;
  58924. v21 = 59;
  58925. v54 = (char *)&this->m_Bank;
  58926. while ( v21 != -1 )
  58927. {
  58928. v20->m_pItem[0].m_ItemGUID.m_Serial = 0;
  58929. v20->m_pItem[0].m_ItemGUID.m_Server = 0;
  58930. v20->m_pItem[0].m_ItemGUID.m_World = 0;
  58931. memset(v20, 0, 0xB0u);
  58932. v20 = (_BANK_DB_LOAD *)((char *)v20 + 176);
  58933. --v21;
  58934. }
  58935. _BANK_DB_LOAD::CleanUp(v54);
  58936. v52 = &this->m_Bag;
  58937. v22 = &this->m_Bag;
  58938. v23 = 99;
  58939. do
  58940. {
  58941. v22->m_pItem[0].m_ItemGUID.m_Serial = 0;
  58942. v22->m_pItem[0].m_ItemGUID.m_Server = 0;
  58943. v22->m_pItem[0].m_ItemGUID.m_World = 0;
  58944. --v23;
  58945. memset(v22, 0, 0xB0u);
  58946. v22 = (_BAG_DB_LOAD *)((char *)v22 + 176);
  58947. }
  58948. while ( v23 != -1 );
  58949. _BAG_DB_LOAD::CleanUp(v52);
  58950. v51 = &this->m_Equip;
  58951. v24 = &this->m_Equip;
  58952. v25 = 18;
  58953. do
  58954. {
  58955. v24->m_pItem[0].m_ItemGUID.m_Serial = 0;
  58956. v24->m_pItem[0].m_ItemGUID.m_Server = 0;
  58957. v24->m_pItem[0].m_ItemGUID.m_World = 0;
  58958. --v25;
  58959. memset(v24, 0, 0xB0u);
  58960. v24 = (_EQUIP_DB_LOAD *)((char *)v24 + 176);
  58961. }
  58962. while ( v25 != -1 );
  58963. _EQUIP_DB_LOAD::CleanUp(v51);
  58964. _SKILL_DB_LOAD::CleanUp(&this->m_Skill);
  58965. v26 = &this->m_Cooldown;
  58966. v27 = 31;
  58967. do
  58968. {
  58969. --v27;
  58970. v26->m_aCooldown[0].m_nID = -1;
  58971. v26->m_aCooldown[0].m_nCooldown = 0;
  58972. v26->m_aCooldown[0].m_nCooldownElapsed = 0;
  58973. v26 = (_COOLDOWN_DB_LOAD_FOR_HUMAN *)((char *)v26 + 12);
  58974. }
  58975. while ( v27 != -1 );
  58976. _XINFA_DB_LOAD::CleanUp(&this->m_XinFa);
  58977. v53 = &this->m_Impact;
  58978. v49 = this->m_Impact.m_aImpacts;
  58979. v28 = 19;
  58980. do
  58981. {
  58982. v49->m_Flags.m_aBitFlags[0] = 0;
  58983. v49->m_nSN = -1;
  58984. v49->m_nDataIndex = -1;
  58985. v49->m_nImpactID = -1;
  58986. v49->m_nSkillID = -1;
  58987. v49->m_nCasterObjID = -1;
  58988. v49->m_nCasterUniqueID = -1;
  58989. v49->m_nCasterLogicCount = 0;
  58990. v49->m_nContinuance = 0;
  58991. v49->m_nContinuanceElapsed = 0;
  58992. v49->m_nIntervalElapsed = 0;
  58993. v49->m_nSubLevel = 0;
  58994. memset(v49->m_aParams, 0, sizeof(v49->m_aParams));
  58995. --v28;
  58996. ++v49;
  58997. }
  58998. while ( v28 != -1 );
  58999. _IMPACT_DB_LOAD::CleanUp(v53);
  59000. _ABILITY_DB_LOAD::CleanUp(this->m_Ability.m_aPrescr);
  59001. _MISSION_DB_LOAD::CleanUp((_MISSION_DB_LOAD *const )&this->m_Mission);
  59002. v29 = &this->m_Setting;
  59003. v30 = 127;
  59004. do
  59005. {
  59006. --v30;
  59007. v29->m_aSetting[0].m_SettingType = 0;
  59008. v29->m_aSetting[0].m_SettingData = 0;
  59009. v29 = (_SETTING_DB_LOAD *)((char *)v29 + 5);
  59010. }
  59011. while ( v30 != -1 );
  59012. v31 = &this->m_Setting;
  59013. v32 = 127;
  59014. do
  59015. {
  59016. v31->m_aSetting[0].m_SettingType = 0;
  59017. v31->m_aSetting[0].m_SettingData = 0;
  59018. v31 = (_SETTING_DB_LOAD *)((char *)v31 + 5);
  59019. --v32;
  59020. }
  59021. while ( v32 >= 0 );
  59022. v33 = this->m_PetList.m_aPetDB;
  59023. v56 = 9;
  59024. do
  59025. {
  59026. v34 = 12;
  59027. v33->m_GUID.m_uHighSection = 0;
  59028. v33->m_GUID.m_uLowSection = 0;
  59029. v33->m_SpouseGUID.m_uHighSection = 0;
  59030. v33->m_SpouseGUID.m_uLowSection = 0;
  59031. memset(&v33->m_BaseAttrLevel1, 0, sizeof(v33->m_BaseAttrLevel1));
  59032. v35 = (int)v33->m_SkillList;
  59033. do
  59034. {
  59035. --v34;
  59036. *(_BYTE *)v35 = 0;
  59037. *(_WORD *)(v35 + 1) = -1;
  59038. v35 += 3;
  59039. }
  59040. while ( v34 != -1 );
  59041. v36 = (int)&v33->m_CooldownList;
  59042. v37 = 7;
  59043. do
  59044. {
  59045. --v37;
  59046. *(_WORD *)v36 = -1;
  59047. *(_DWORD *)(v36 + 4) = 0;
  59048. *(_DWORD *)(v36 + 8) = 0;
  59049. v36 += 12;
  59050. }
  59051. while ( v37 != -1 );
  59052. v38 = v33->m_PetTitle;
  59053. v39 = 9;
  59054. do
  59055. {
  59056. --v39;
  59057. v38->m_tTitleID = -1;
  59058. v38->m_uCreateTime = 0;
  59059. ++v38;
  59060. }
  59061. while ( v39 != -1 );
  59062. _PET_DB_LOAD::CleanUp(v33);
  59063. --v56;
  59064. ++v33;
  59065. }
  59066. while ( v56 != -1 );
  59067. v40 = &this->m_Relation;
  59068. v50 = &this->m_Relation;
  59069. v55 = 99;
  59070. do
  59071. {
  59072. memset(v50->m_aRelation[0].m_Member.m_szMemberName, 0, 0x1Cu);
  59073. *(_WORD *)&v50->m_aRelation[0].m_Member.m_szMemberName[28] = 0;
  59074. v50->m_aRelation[0].m_Member.m_MemberGUID = -1;
  59075. memset(v50->m_aRelation[0].m_Member.m_szMemberName, 0, 0x1Cu);
  59076. *(_WORD *)&v50->m_aRelation[0].m_Member.m_szMemberName[28] = 0;
  59077. v50->m_aRelation[0].m_Type = 0;
  59078. v50->m_aRelation[0].m_Group = 0;
  59079. --v55;
  59080. v50->m_aRelation[0].m_Member.m_nLevel = 0;
  59081. v50->m_aRelation[0].m_Member.m_nMenPai = 9;
  59082. v50->m_aRelation[0].m_Member.m_nPortrait = -1;
  59083. v50->m_aRelation[0].m_Member.m_GuildID = -1;
  59084. v50->m_aRelation[0].m_FriendPoint = 0;
  59085. v50 = (_RELATION_DB_LOAD *)((char *)v50 + 58);
  59086. }
  59087. while ( v55 != -1 );
  59088. v41 = &this->m_Relation.m_PrenticeInfo;
  59089. this->m_Relation.m_MarriageInfo.m_SpouseGUID = -1;
  59090. v41->m_uPrenticeCount = 0;
  59091. v41->m_uMoralPoint = 0;
  59092. v42 = &this->m_Relation.m_PrenticeInfo1;
  59093. this->m_Relation.m_PrenticeInfo.m_PrenticeGUID[0] = -1;
  59094. this->m_Relation.m_PrenticeInfo.m_PrenticeGUID[1] = -1;
  59095. this->m_Relation.m_MasterInfo.m_MasterGUID = -1;
  59096. this->m_Relation.m_PrenticeInfo.m_BetrayingTime = 0;
  59097. this->m_Relation.m_PrenticeInfo1.m_BetrayingTime = 0;
  59098. v42->m_uMoralPoint = 0;
  59099. v42->m_uPrenticeCount = 0;
  59100. v42->m_uPrenticeExp = 0;
  59101. v42->m_uMasterExp = 0;
  59102. v42->m_uMasterLevel = 0;
  59103. this->m_Relation.m_PrenticeInfo1.m_PrenticeGUID[0] = -1;
  59104. this->m_Relation.m_PrenticeInfo1.m_PrenticeGUID[1] = -1;
  59105. _RELATION_DB_LOAD::CleanUp(v40);
  59106. memset(&this->m_PrivateInfo, 0, 0x1B0u);
  59107. this->m_PrivateInfo.m_CharGUID = -1;
  59108. this->m_DRideData.m_bDRideMountOwner = 0;
  59109. this->m_DRideData.m_uDRideTargetGUID = -1;
  59110. this->m_macValue.m_uLow = 0;
  59111. this->m_macValue.m_uHigh = 0;
  59112. this->m_AccountSafeSign.m_Sign = 0;
  59113. _HUMAN_DB_LOAD::CleanUp((_HUMAN_DB_LOAD *const )this);
  59114. _EQUIP_DB_LOAD::CleanUp(v51);
  59115. _BAG_DB_LOAD::CleanUp(v52);
  59116. _BANK_DB_LOAD::CleanUp(v54);
  59117. _SKILL_DB_LOAD::CleanUp(&this->m_Skill);
  59118. v43 = &this->m_Cooldown;
  59119. v44 = 31;
  59120. do
  59121. {
  59122. v43->m_aCooldown[0].m_nID = -1;
  59123. v43->m_aCooldown[0].m_nCooldown = 0;
  59124. v43->m_aCooldown[0].m_nCooldownElapsed = 0;
  59125. v43 = (_COOLDOWN_DB_LOAD_FOR_HUMAN *)((char *)v43 + 12);
  59126. --v44;
  59127. }
  59128. while ( v44 >= 0 );
  59129. _XINFA_DB_LOAD::CleanUp(&this->m_XinFa);
  59130. _IMPACT_DB_LOAD::CleanUp(v53);
  59131. _ABILITY_DB_LOAD::CleanUp(this->m_Ability.m_aPrescr);
  59132. _MISSION_DB_LOAD::CleanUp((_MISSION_DB_LOAD *const )&this->m_Mission);
  59133. v45 = &this->m_Setting;
  59134. v46 = 127;
  59135. do
  59136. {
  59137. v45->m_aSetting[0].m_SettingType = 0;
  59138. v45->m_aSetting[0].m_SettingData = 0;
  59139. v45 = (_SETTING_DB_LOAD *)((char *)v45 + 5);
  59140. --v46;
  59141. }
  59142. while ( v46 >= 0 );
  59143. _PET_DB_LIST_LOAD::CleanUp(&this->m_PetList);
  59144. _RELATION_DB_LOAD::CleanUp(v40);
  59145. memset(&this->m_PrivateInfo, 0, 0x1B0u);
  59146. this->m_PrivateInfo.m_CharGUID = -1;
  59147. this->m_bIsPasswdUnlock = 0;
  59148. this->m_DRideData.m_uDRideTargetGUID = -1;
  59149. this->m_DRideData.m_bDRideMountOwner = 0;
  59150. memset(this->m_AccName, 0, 0x30u);
  59151. v47 = &this->m_AccName[48];
  59152. *(_WORD *)v47 = 0;
  59153. v47[2] = 0;
  59154. this->m_macValue.m_uHigh = 0;
  59155. this->m_macValue.m_uLow = 0;
  59156. this->m_uVERecoverTime = 0;
  59157. this->m_nLeftPilferLockTime = 0;
  59158. this->m_bPilferLockTimeStart = 0;
  59159. this->m_uPrevHeartBeatANSITime = 0;
  59160. memset(this->m_LoginHost, 0, 0x18u);
  59161. this->m_LoginHost[24] = 0;
  59162. this->m_AccountSafeSign.m_Sign = 0;
  59163. this->m_IsPilfered = 0;
  59164. }
  59165.  
  59166. //----- (080955B9) --------------------------------------------------------
  59167. void __noreturn sub_80955B9()
  59168. {
  59169. _Unwind_Resume();
  59170. }
  59171.  
  59172. //----- (08095704) --------------------------------------------------------
  59173. UINT __cdecl Packets::CLAskCreateCodeHandler::Execute(Packets::CLAskCreateCode *pPacket, Player *pPlayer)
  59174. {
  59175. const CHAR *v2; // ST28_4
  59176. signed int v4; // eax
  59177. bool v5; // zf
  59178. const CHAR *v6; // ST28_4
  59179. bool v7; // zf
  59180. signed int v8; // ecx
  59181. Player *v9; // esi
  59182. CreateCode *v10; // edi
  59183. int v11; // ecx
  59184. int v12; // ST24_4
  59185. int v13; // ST20_4
  59186. Packets::LCRetCreateCode rmsg; // [esp+10h] [ebp-268h]
  59187.  
  59188. if ( g_pProcessPlayerManager->m_ThreadID == ThreadValueManager::GetCurrentThreadID() )
  59189. {
  59190. if ( !pPlayer )
  59191. __assert__(
  59192. "./Packets/CLAskCreateCodeHandler.cpp",
  59193. 0x15u,
  59194. "static UINT Packets::CLAskCreateCodeHandler::Execute(Packets::CLAskCreateCode*, Player*)",
  59195. "pLoginPlayer");
  59196. if ( !pPacket )
  59197. __assert__(
  59198. "./Packets/CLAskCreateCodeHandler.cpp",
  59199. 0x16u,
  59200. "static UINT Packets::CLAskCreateCodeHandler::Execute(Packets::CLAskCreateCode*, Player*)",
  59201. "pPacket");
  59202. v4 = pPacket->m_AskType;
  59203. if ( v4 == 1 )
  59204. {
  59205. if ( pPacket == (Packets::CLAskCreateCode *)-14 )
  59206. __assert__(
  59207. "./Packets/CLAskCreateCodeHandler.cpp",
  59208. 0x25u,
  59209. "static UINT Packets::CLAskCreateCodeHandler::Execute(Packets::CLAskCreateCode*, Player*)",
  59210. "pAnswer");
  59211. v7 = &pPacket->m_Answer == 0;
  59212. if ( pPacket == (Packets::CLAskCreateCode *)-14 )
  59213. goto LABEL_30;
  59214. v8 = 8;
  59215. v9 = pPlayer + 31;
  59216. v10 = &pPacket->m_Answer;
  59217. do
  59218. {
  59219. if ( !v8 )
  59220. break;
  59221. v7 = LOBYTE(v9->_vptr_Player) == LOBYTE(v10->code[0]);
  59222. v9 = (Player *)((char *)v9 + 1);
  59223. v10 = (CreateCode *)((char *)v10 + 1);
  59224. --v8;
  59225. }
  59226. while ( v7 );
  59227. if ( v7 )
  59228. {
  59229. Packet::Packet((int)&rmsg);
  59230. rmsg._vptr_Packet = (int (**)(...))off_80D2128;
  59231. rmsg.m_RetType = 2;
  59232. memset(rmsg.m_imageBuf, 0, 0x240u);
  59233. rmsg.m_RetType = 1;
  59234. (*((void (__fastcall **)(int))pPlayer->_vptr_Player + 3))(v13);
  59235. pPlayer[30].m_pSocketOutputStream = (SocketOutputStream *)1;
  59236. }
  59237. else
  59238. {
  59239. LABEL_30:
  59240. Packet::Packet((int)&rmsg);
  59241. rmsg._vptr_Packet = (int (**)(...))off_80D2128;
  59242. rmsg.m_RetType = 2;
  59243. memset(rmsg.m_imageBuf, 0, 0x240u);
  59244. rmsg.m_RetType = 0;
  59245. (*((void (__fastcall **)(int, int, Player *, Packets::LCRetCreateCode *))pPlayer->_vptr_Player + 3))(
  59246. v11,
  59247. v12,
  59248. pPlayer,
  59249. &rmsg);
  59250. LoginPlayer::SendCreateCode((LoginPlayer *const )pPlayer);
  59251. }
  59252. rmsg._vptr_Packet = (int (**)(...))off_80D2128;
  59253. Packet::~Packet(&rmsg);
  59254. }
  59255. else
  59256. {
  59257. if ( v4 <= 1 )
  59258. v5 = v4 == 0;
  59259. else
  59260. v5 = v4 == 2;
  59261. if ( !v5 )
  59262. __assert__(
  59263. "./Packets/CLAskCreateCodeHandler.cpp",
  59264. 0x3Cu,
  59265. "static UINT Packets::CLAskCreateCodeHandler::Execute(Packets::CLAskCreateCode*, Player*)",
  59266. "FALSE");
  59267. LoginPlayer::SendCreateCode((LoginPlayer *const )pPlayer);
  59268. }
  59269. v6 = LoginPlayer::GetAccount((LoginPlayer *const )pPlayer);
  59270. CacheLog(0, "CLAskCreateCodeHandler::Execute(...)...OK!!! acc=%s", v6);
  59271. }
  59272. else
  59273. {
  59274. if ( !pPlayer )
  59275. __assert__(
  59276. "./Packets/CLAskCreateCodeHandler.cpp",
  59277. 0x45u,
  59278. "static UINT Packets::CLAskCreateCodeHandler::Execute(Packets::CLAskCreateCode*, Player*)",
  59279. "pLoginPlayer");
  59280. v2 = LoginPlayer::GetAccount((LoginPlayer *const )pPlayer);
  59281. CacheLog(0, "ERROR::CLAskCreateCodeHandler::Execute()...Fail, Invalid Thread Handler,acc = %s", v2);
  59282. }
  59283. return 2;
  59284. }
  59285. // 80D2128: using guessed type _DWORD (__cdecl *off_80D2128[2])(Packets::LCRetCreateCode *this);
  59286.  
  59287. //----- (08095990) --------------------------------------------------------
  59288. void __cdecl _tcf_0_145(void *a1)
  59289. {
  59290. std::ios_base::Init::~Init(&std::__ioinit);
  59291. }
  59292.  
  59293. //----- (080959A0) --------------------------------------------------------
  59294. void `global constructor keyed to'Packets::CLAskCreateCodeHandler::Execute()
  59295. {
  59296. std::ios_base::Init::Init(&std::__ioinit);
  59297. __cxa_atexit(_tcf_0_145, 0, &_dso_handle);
  59298. }
  59299. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  59300.  
  59301. //----- (080959CC) --------------------------------------------------------
  59302. UINT __cdecl Packets::CLAskDeleteCharHandler::Execute(Packets::CLAskDeleteChar *pPacket, Player *pPlayer)
  59303. {
  59304. int v2; // ebx
  59305. BOOL v3; // eax
  59306. UINT v4; // edx
  59307. char *s2; // ST4C_4
  59308. const char *v6; // eax
  59309. GUID_t v7; // ebx
  59310. const CHAR *v8; // eax
  59311. const CHAR *v10; // eax
  59312. const CHAR *v11; // eax
  59313. const CHAR *v12; // eax
  59314. const CHAR *v13; // ST28_4
  59315. int v14; // ST2C_4
  59316. const CHAR *v15; // eax
  59317. GUID_t v16; // ebx
  59318. const CHAR *v17; // ST2C_4
  59319. ODBCInterface *v18; // eax
  59320. ODBCInterface *v19; // ebx
  59321. const CHAR *v20; // eax
  59322. CHAR *v21; // ST2C_4
  59323. const CHAR *v22; // eax
  59324. const CHAR *v23; // eax
  59325. GUID_t v24; // ebx
  59326. const CHAR *v25; // ST2C_4
  59327. const CHAR *v26; // eax
  59328. const CHAR *v27; // eax
  59329. int v28; // eax
  59330. CHAR *v29; // ST2C_4
  59331. const CHAR *v30; // eax
  59332. const CHAR *v31; // eax
  59333. signed int i_0; // [esp+8h] [ebp-160h]
  59334. INT i; // [esp+10h] [ebp-158h]
  59335. UINT CharNumber; // [esp+14h] [ebp-154h]
  59336. Packets::LCRetCharList *pRetListMsg; // [esp+18h] [ebp-150h]
  59337. Packets::LCRetDeleteChar *pMsg; // [esp+20h] [ebp-148h]
  59338. PlayerID_t PlayerID; // [esp+26h] [ebp-142h]
  59339. int (**uTime)(...); // [esp+28h] [ebp-140h]
  59340. ASKDELETECHAR_RESULT Result; // [esp+2Ch] [ebp-13Ch]
  59341. DBCharList CharListObject; // [esp+30h] [ebp-138h]
  59342. DBDeleteCharOp DeleteCharOp; // [esp+A0h] [ebp-C8h]
  59343. Packets::LCRetDeleteChar Msg; // [esp+100h] [ebp-68h]
  59344.  
  59345. v2 = ThreadValueManager::GetCurrentThreadID();
  59346. if ( g_pProcessPlayerManager->m_ThreadID == v2 )
  59347. {
  59348. if ( !pPlayer )
  59349. __assert__(
  59350. "./Packets/CLAskDeleteCharHandler.cpp",
  59351. 0x1Au,
  59352. "static UINT Packets::CLAskDeleteCharHandler::Execute(Packets::CLAskDeleteChar*, Player*)",
  59353. "pLoginPlayer");
  59354. v4 = 2;
  59355. if ( pPlayer[2].m_pSocket == (Socket *)308 )
  59356. {
  59357. v7 = pPacket->m_GUID;
  59358. if ( LoginPlayer::IsGUIDOwner((LoginPlayer *const )pPlayer, pPacket->m_GUID) )
  59359. {
  59360. uTime = (int (**)(...))TimeManager::CurrentTime((int)g_pTimeManager);
  59361. if ( pPlayer[2]._vptr_Player + 125 <= uTime )
  59362. {
  59363. pPacket->PlayerID = (PlayerID_t)pPlayer[1].m_pSocketInputStream;
  59364. v11 = LoginPlayer::GetAccount((LoginPlayer *const )pPlayer);
  59365. Packets::CLAskDeleteChar::SetAccount(pPacket, v11);
  59366. if ( DBThreadManager::SendPacket(g_pDBThreadManager, &pPacket->0, (PlayerID_t)pPlayer[1].m_pSocketInputStream) )
  59367. {
  59368. v4 = 3;
  59369. pPlayer[2]._vptr_Player = uTime;
  59370. return v4;
  59371. }
  59372. Packet::Packet((int)&Msg);
  59373. Msg._vptr_Packet = (int (**)(...))off_80CEB88;
  59374. Packets::LCRetDeleteChar::SetResult((int)&Msg, 1);
  59375. (*((void (__cdecl **)(Player *, Packets::LCRetDeleteChar *))pPlayer->_vptr_Player + 3))(pPlayer, &Msg);
  59376. }
  59377. else
  59378. {
  59379. Packet::Packet((int)&Msg);
  59380. Msg._vptr_Packet = (int (**)(...))off_80CEB88;
  59381. Packets::LCRetDeleteChar::SetResult((int)&Msg, 2);
  59382. (*((void (__cdecl **)(Player *, Packets::LCRetDeleteChar *))pPlayer->_vptr_Player + 3))(pPlayer, &Msg);
  59383. v8 = LoginPlayer::GetAccount((LoginPlayer *const )pPlayer);
  59384. CacheLog(0, "CLAskDeleteCharHandler::Execute()....database busy,acc=%s,tryguid=%X", v8, v7);
  59385. }
  59386. }
  59387. else
  59388. {
  59389. Packet::Packet((int)&Msg);
  59390. Msg._vptr_Packet = (int (**)(...))off_80CEB88;
  59391. Packets::LCRetDeleteChar::SetResult((int)&Msg, 5);
  59392. (*((void (__cdecl **)(Player *, Packets::LCRetDeleteChar *))pPlayer->_vptr_Player + 3))(pPlayer, &Msg);
  59393. v10 = LoginPlayer::GetAccount((LoginPlayer *const )pPlayer);
  59394. CacheLog(
  59395. 0,
  59396. "CLAskDeleteCharHandler::Execute()....Fails!,code = ASKDELETECHAR_NOT_OWNER,acc=%s,tryguid=%X",
  59397. v10,
  59398. v7);
  59399. }
  59400. Msg._vptr_Packet = (int (**)(...))off_80CEB88;
  59401. Packet::~Packet(&Msg);
  59402. v4 = 2;
  59403. }
  59404. }
  59405. else
  59406. {
  59407. v3 = DBThreadManager::IsPoolTID(g_pDBThreadManager, v2);
  59408. v4 = 2;
  59409. if ( v3 )
  59410. {
  59411. PlayerID = pPacket->PlayerID;
  59412. if ( !pPlayer )
  59413. __assert__(
  59414. "./Packets/CLAskDeleteCharHandler.cpp",
  59415. 0x52u,
  59416. "static UINT Packets::CLAskDeleteCharHandler::Execute(Packets::CLAskDeleteChar*, Player*)",
  59417. "pLoginPlayer");
  59418. pMsg = (Packets::LCRetDeleteChar *)PacketFactoryManager::CreatePacket(g_pPacketFactoryManager, 0xA3u);
  59419. if ( !pMsg )
  59420. __assertex__(
  59421. "./Packets/CLAskDeleteCharHandler.cpp",
  59422. 0x58u,
  59423. "static UINT Packets::CLAskDeleteCharHandler::Execute(Packets::CLAskDeleteChar*, Player*)",
  59424. "FALSE",
  59425. &byte_80DEB58);
  59426. if ( LoginPlayer::GetDBOperating((int)pPlayer) == 1 )
  59427. {
  59428. v12 = Packets::CLAskDeleteChar::GetAccount(pPacket);
  59429. Packets::LCRetDeleteChar::SetAccount(pMsg, v12);
  59430. Packets::LCRetDeleteChar::SetResult((int)pMsg, 1);
  59431. ProcessManager::SendPacket(g_pProcessManager, &pMsg->0, PlayerID, 0);
  59432. v13 = LoginPlayer::GetAccount((LoginPlayer *const )pPlayer);
  59433. CacheLog(0, aClaskdeletecha_3, v13, v14);
  59434. }
  59435. else
  59436. {
  59437. s2 = (char *)Packets::CLAskDeleteChar::GetAccount(pPacket);
  59438. v6 = LoginPlayer::GetAccount((LoginPlayer *const )pPlayer);
  59439. if ( strcmp(v6, s2) )
  59440. {
  59441. Packets::CLAskDeleteChar::GetAccount(pPacket);
  59442. LoginPlayer::GetAccount((LoginPlayer *const )pPlayer);
  59443. CacheLog(0, "ERROR: CLAskDeleteChar DBOperation Errors,acc = %s,Packet acc = %s");
  59444. PacketFactoryManager::RemovePacket(g_pPacketFactoryManager, &pMsg->0);
  59445. return 2;
  59446. }
  59447. LoginPlayer::SetDBOperating((int)pPlayer, 1);
  59448. pRetListMsg = (Packets::LCRetCharList *)PacketFactoryManager::CreatePacket(g_pPacketFactoryManager, 0x26Eu);
  59449. if ( !pRetListMsg )
  59450. __assertex__(
  59451. "./Packets/CLAskDeleteCharHandler.cpp",
  59452. 0x74u,
  59453. "static UINT Packets::CLAskDeleteCharHandler::Execute(Packets::CLAskDeleteChar*, Player*)",
  59454. "FALSE",
  59455. &byte_80DDF85);
  59456. CharNumber = LoginPlayer::GetCharNumber((int)pPlayer);
  59457. if ( CharNumber )
  59458. {
  59459. if ( CharNumber == -1 )
  59460. {
  59461. Result = 4;
  59462. }
  59463. else
  59464. {
  59465. v18 = DBThreadManager::GetInterface(g_pDBThreadManager, v2);
  59466. v19 = v18;
  59467. if ( !v18 )
  59468. {
  59469. PacketFactoryManager::RemovePacket(g_pPacketFactoryManager, &pMsg->0);
  59470. PacketFactoryManager::RemovePacket(g_pPacketFactoryManager, &pRetListMsg->0);
  59471. LoginPlayer::SetDBOperating((int)pPlayer, 0);
  59472. return 2;
  59473. }
  59474. DBDeleteCharOp::DBDeleteCharOp(&DeleteCharOp, v18);
  59475. v20 = Packets::CLAskDeleteChar::GetAccount(pPacket);
  59476. DBDeleteCharOp::SetAccount(&DeleteCharOp, v20);
  59477. DBDeleteCharOp::SetCharGuid((int)&DeleteCharOp, pPacket->m_GUID);
  59478. if ( !DBDeleteCharOp::Delete(&DeleteCharOp) )
  59479. {
  59480. v21 = ODBCBase::GetErrorMessage((int)&DeleteCharOp);
  59481. v22 = Packets::CLAskDeleteChar::GetAccount(pPacket);
  59482. CacheLog(0, "DeleteCharOp.Delete()....acc=%s,Get Errors: %s ", v22, v21);
  59483. ODBCBase::GetErrorCode((int)&DeleteCharOp);
  59484. v23 = Packets::CLAskDeleteChar::GetAccount(pPacket);
  59485. Packets::LCRetDeleteChar::SetAccount(pMsg, v23);
  59486. Packets::LCRetDeleteChar::SetResult((int)pMsg, 6);
  59487. ProcessManager::SendPacket(g_pProcessManager, &pMsg->0, PlayerID, 0);
  59488. PacketFactoryManager::RemovePacket(g_pPacketFactoryManager, &pRetListMsg->0);
  59489. LoginPlayer::SetDBOperating((int)pPlayer, 0);
  59490. v24 = pPacket->m_GUID;
  59491. v25 = Packets::CLAskDeleteChar::GetAccount(pPacket);
  59492. CacheLog(
  59493. 0,
  59494. "CLAskDeleteCharHandler::Execute()....Fails! code = ASKDELETECHAR_INTERNAL_ERROR \t\t\t\t guid = %d,acc = %s",
  59495. v24,
  59496. v25);
  59497. return 3;
  59498. }
  59499. DBDeleteCharOp::ParseResult(&DeleteCharOp, &Result);
  59500. DBCharList::DBCharList(&CharListObject, v19);
  59501. v26 = Packets::CLAskDeleteChar::GetAccount(pPacket);
  59502. DBCharList::SetAccount(&CharListObject, v26);
  59503. if ( DBCharList::Load(&CharListObject) )
  59504. {
  59505. DBCharList::ParseResult(&CharListObject, pRetListMsg->CharList);
  59506. v27 = Packets::CLAskDeleteChar::GetAccount(pPacket);
  59507. Packets::LCRetCharList::SetAccount(pRetListMsg, v27);
  59508. Packets::LCRetCharList::SetResult((int)pRetListMsg, 0);
  59509. pRetListMsg->uCharNumber = DBCharList::GetCharNumber((int)&CharListObject);
  59510. if ( DBCharList::GetCharNumber((int)&CharListObject) >= CharNumber )
  59511. {
  59512. if ( DBCharList::GetCharNumber((int)&CharListObject) == CharNumber )
  59513. {
  59514. Result = 6;
  59515. for ( i = 0; LoginPlayer::GetCharNumber((int)pPlayer) > i; ++i )
  59516. {
  59517. if ( (unsigned __int8)i > 4u )
  59518. __assert__(
  59519. "../../Common/Packets/LCRetCharList.h",
  59520. 0x3Cu,
  59521. "DB_CHAR_BASE_INFO* Packets::LCRetCharList::GetCharBaseInfo(UCHAR)",
  59522. "CharIndex<DB_CHAR_NUMBER");
  59523. if ( pRetListMsg->CharList[(unsigned __int8)i].m_GUID == pPacket->m_GUID )
  59524. {
  59525. if ( (unsigned __int8)i > 4u )
  59526. __assert__(
  59527. "../../Common/Packets/LCRetCharList.h",
  59528. 0x3Cu,
  59529. "DB_CHAR_BASE_INFO* Packets::LCRetCharList::GetCharBaseInfo(UCHAR)",
  59530. "CharIndex<DB_CHAR_NUMBER");
  59531. if ( pRetListMsg->CharList[(unsigned __int8)i].m_Level > 0 )
  59532. goto LABEL_37;
  59533. }
  59534. }
  59535. }
  59536. else
  59537. {
  59538. Result = 6;
  59539. }
  59540. }
  59541. else
  59542. {
  59543. LABEL_37:
  59544. Result = 0;
  59545. }
  59546. v28 = DBCharList::GetCharNumber((int)&CharListObject);
  59547. LoginPlayer::SetCharNumber((int)pPlayer, v28);
  59548. for ( i_0 = 0; LoginPlayer::GetCharNumber((int)pPlayer) > i_0; ++i_0 )
  59549. {
  59550. if ( (unsigned __int8)i_0 > 4u )
  59551. __assert__(
  59552. "../../Common/Packets/LCRetCharList.h",
  59553. 0x3Cu,
  59554. "DB_CHAR_BASE_INFO* Packets::LCRetCharList::GetCharBaseInfo(UCHAR)",
  59555. "CharIndex<DB_CHAR_NUMBER");
  59556. LoginPlayer::SetCharGUID((UINT)pPlayer, pRetListMsg->CharList[(unsigned __int8)i_0].m_GUID, i_0);
  59557. }
  59558. }
  59559. else
  59560. {
  59561. v29 = ODBCBase::GetErrorMessage((int)&CharListObject);
  59562. v30 = Packets::CLAskDeleteChar::GetAccount(pPacket);
  59563. CacheLog(0, "CharListObject.Load()....acc=%s,Get Errors: %s ", v30, v29);
  59564. v31 = Packets::CLAskDeleteChar::GetAccount(pPacket);
  59565. Packets::LCRetCharList::SetAccount(pRetListMsg, v31);
  59566. Packets::LCRetCharList::SetResult((int)pRetListMsg, 1);
  59567. pRetListMsg->uCharNumber = DBCharList::GetCharNumber((int)&CharListObject);
  59568. }
  59569. }
  59570. }
  59571. else
  59572. {
  59573. Result = 3;
  59574. }
  59575. v15 = Packets::CLAskDeleteChar::GetAccount(pPacket);
  59576. Packets::LCRetDeleteChar::SetAccount(pMsg, v15);
  59577. Packets::LCRetDeleteChar::SetResult((int)pMsg, Result);
  59578. ProcessManager::SendPacket(g_pProcessManager, &pMsg->0, PlayerID, 0);
  59579. ProcessManager::SendPacket(g_pProcessManager, &pRetListMsg->0, PlayerID, 0);
  59580. LoginPlayer::SetDBOperating((int)pPlayer, 0);
  59581. v16 = pPacket->m_GUID;
  59582. v17 = Packets::CLAskDeleteChar::GetAccount(pPacket);
  59583. CacheLog(0, "CLAskDeleteCharHandler::Execute()....OK!\tguid=%X,acc=%s", v16, v17);
  59584. }
  59585. return 3;
  59586. }
  59587. }
  59588. return v4;
  59589. }
  59590. // 80CEB88: using guessed type _DWORD (__cdecl *off_80CEB88[2])(Packets::LCRetDeleteChar *this);
  59591.  
  59592. //----- (080962A0) --------------------------------------------------------
  59593. void __cdecl _tcf_0_146(void *a1)
  59594. {
  59595. std::ios_base::Init::~Init(&std::__ioinit);
  59596. }
  59597.  
  59598. //----- (080962B0) --------------------------------------------------------
  59599. void `global constructor keyed to'Packets::CLAskDeleteCharHandler::Execute()
  59600. {
  59601. std::ios_base::Init::Init(&std::__ioinit);
  59602. __cxa_atexit(_tcf_0_146, 0, &_dso_handle);
  59603. }
  59604. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  59605.  
  59606. //----- (080962DC) --------------------------------------------------------
  59607. UINT __cdecl Packets::CLAskLoginCodeHandler::Execute(Packets::CLAskLoginCode *pPacket, Player *pPlayer)
  59608. {
  59609. const CHAR *v2; // ST28_4
  59610. signed int v4; // eax
  59611. bool v5; // zf
  59612. const CHAR *v6; // ST28_4
  59613. bool v7; // zf
  59614. signed int v8; // ecx
  59615. SocketOutputStream **v9; // esi
  59616. CreateCode *v10; // edi
  59617. int v11; // ecx
  59618. int v12; // ST24_4
  59619. int v13; // ST20_4
  59620. Packets::LCRetLoginCode rmsg; // [esp+10h] [ebp-268h]
  59621.  
  59622. if ( g_pProcessPlayerManager->m_ThreadID == ThreadValueManager::GetCurrentThreadID() )
  59623. {
  59624. if ( !pPlayer )
  59625. __assert__(
  59626. "./Packets/CLAskLoginCodeHandler.cpp",
  59627. 0x15u,
  59628. "static UINT Packets::CLAskLoginCodeHandler::Execute(Packets::CLAskLoginCode*, Player*)",
  59629. "pLoginPlayer");
  59630. if ( !pPacket )
  59631. __assert__(
  59632. "./Packets/CLAskLoginCodeHandler.cpp",
  59633. 0x16u,
  59634. "static UINT Packets::CLAskLoginCodeHandler::Execute(Packets::CLAskLoginCode*, Player*)",
  59635. "pPacket");
  59636. v4 = pPacket->m_AskType;
  59637. if ( v4 == 1 )
  59638. {
  59639. if ( pPacket == (Packets::CLAskLoginCode *)-14 )
  59640. __assert__(
  59641. "./Packets/CLAskLoginCodeHandler.cpp",
  59642. 0x25u,
  59643. "static UINT Packets::CLAskLoginCodeHandler::Execute(Packets::CLAskLoginCode*, Player*)",
  59644. "pAnswer");
  59645. v7 = &pPacket->m_Answer == 0;
  59646. if ( pPacket == (Packets::CLAskLoginCode *)-14 )
  59647. goto LABEL_30;
  59648. v8 = 8;
  59649. v9 = &pPlayer[31].m_pSocketOutputStream;
  59650. v10 = &pPacket->m_Answer;
  59651. do
  59652. {
  59653. if ( !v8 )
  59654. break;
  59655. v7 = *(_BYTE *)v9 == LOBYTE(v10->code[0]);
  59656. v9 = (SocketOutputStream **)((char *)v9 + 1);
  59657. v10 = (CreateCode *)((char *)v10 + 1);
  59658. --v8;
  59659. }
  59660. while ( v7 );
  59661. if ( v7 )
  59662. {
  59663. Packet::Packet((int)&rmsg);
  59664. rmsg._vptr_Packet = (int (**)(...))off_80CEEE8;
  59665. rmsg.m_RetType = 2;
  59666. memset(rmsg.m_imageBuf, 0, 0x240u);
  59667. rmsg.m_RetType = 1;
  59668. (*((void (__fastcall **)(int))pPlayer->_vptr_Player + 3))(v13);
  59669. pPlayer[31].m_pSocketInputStream = (SocketInputStream *)1;
  59670. }
  59671. else
  59672. {
  59673. LABEL_30:
  59674. Packet::Packet((int)&rmsg);
  59675. rmsg._vptr_Packet = (int (**)(...))off_80CEEE8;
  59676. rmsg.m_RetType = 2;
  59677. memset(rmsg.m_imageBuf, 0, 0x240u);
  59678. rmsg.m_RetType = 0;
  59679. (*((void (__fastcall **)(int, int, Player *, Packets::LCRetLoginCode *))pPlayer->_vptr_Player + 3))(
  59680. v11,
  59681. v12,
  59682. pPlayer,
  59683. &rmsg);
  59684. LoginPlayer::SendLoginCode((LoginPlayer *const )pPlayer);
  59685. }
  59686. rmsg._vptr_Packet = (int (**)(...))off_80CEEE8;
  59687. Packet::~Packet(&rmsg);
  59688. }
  59689. else
  59690. {
  59691. if ( v4 <= 1 )
  59692. v5 = v4 == 0;
  59693. else
  59694. v5 = v4 == 2;
  59695. if ( !v5 )
  59696. __assert__(
  59697. "./Packets/CLAskLoginCodeHandler.cpp",
  59698. 0x3Cu,
  59699. "static UINT Packets::CLAskLoginCodeHandler::Execute(Packets::CLAskLoginCode*, Player*)",
  59700. "FALSE");
  59701. LoginPlayer::SendLoginCode((LoginPlayer *const )pPlayer);
  59702. }
  59703. v6 = LoginPlayer::GetAccount((LoginPlayer *const )pPlayer);
  59704. CacheLog(0, "CLAskLoginCodeHandler::Execute(...)...OK!!! acc=%s", v6);
  59705. }
  59706. else
  59707. {
  59708. if ( !pPlayer )
  59709. __assert__(
  59710. "./Packets/CLAskLoginCodeHandler.cpp",
  59711. 0x45u,
  59712. "static UINT Packets::CLAskLoginCodeHandler::Execute(Packets::CLAskLoginCode*, Player*)",
  59713. "pLoginPlayer");
  59714. v2 = LoginPlayer::GetAccount((LoginPlayer *const )pPlayer);
  59715. CacheLog(0, "ERROR::CLAskLoginCodeHandler::Execute()...Fail, Invalid Thread Handler,acc = %s", v2);
  59716. }
  59717. return 2;
  59718. }
  59719. // 80CEEE8: using guessed type _DWORD (__cdecl *off_80CEEE8[2])(Packets::LCRetLoginCode *this);
  59720.  
  59721. //----- (08096568) --------------------------------------------------------
  59722. void __cdecl _tcf_0_147(void *a1)
  59723. {
  59724. std::ios_base::Init::~Init(&std::__ioinit);
  59725. }
  59726.  
  59727. //----- (08096578) --------------------------------------------------------
  59728. void `global constructor keyed to'Packets::CLAskLoginCodeHandler::Execute()
  59729. {
  59730. std::ios_base::Init::Init(&std::__ioinit);
  59731. __cxa_atexit(_tcf_0_147, 0, &_dso_handle);
  59732. }
  59733. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  59734.  
  59735. //----- (080965A4) --------------------------------------------------------
  59736. UINT __cdecl Packets::CLAskLoginHandler::Execute(Packets::CLAskLogin *pPacket, Player *pPlayer)
  59737. {
  59738. UINT result; // eax
  59739. const char *v3; // eax
  59740. const CHAR *v4; // eax
  59741. UINT v5; // eax
  59742. const CHAR *v6; // eax
  59743. const CHAR *v7; // eax
  59744. int v8; // eax
  59745. const char *v9; // eax
  59746. CHAR *v10; // eax
  59747. signed int v11; // ST20_4
  59748. signed int v12; // ebx
  59749. CHAR *v13; // eax
  59750. signed int v14; // edi
  59751. const char *v15; // eax
  59752. int v16; // ST1C_4
  59753. const CHAR *v17; // eax
  59754. Socket *v18; // edx
  59755. const CHAR *v19; // eax
  59756. const CHAR *v20; // eax
  59757. Packet *v21; // ebx
  59758. const CHAR *v22; // eax
  59759. const CHAR *v23; // eax
  59760. Packets::LBAskAuth *v24; // ebx
  59761. const CHAR *v25; // eax
  59762. const CHAR *v26; // eax
  59763. Player *v27; // edi
  59764. CHAR *v28; // eax
  59765. int v29; // ebx
  59766. CHAR *v30; // ST20_4
  59767. const CHAR *v31; // eax
  59768. unsigned int v32; // edx
  59769. unsigned int v33; // eax
  59770. Packets::LCRetLogin *v34; // [esp-30h] [ebp-148h]
  59771. char *src; // [esp+4h] [ebp-114h]
  59772. char *v36; // [esp+8h] [ebp-110h]
  59773. char *s; // [esp+Ch] [ebp-10Ch]
  59774. char *dest; // [esp+10h] [ebp-108h]
  59775. unsigned int v39; // [esp+14h] [ebp-104h]
  59776. INT nResult; // [esp+1Ch] [ebp-FCh]
  59777. GL_HWIDSTRUCT hwid; // [esp+20h] [ebp-F8h]
  59778. CHAR szHWIDInfo[36]; // [esp+30h] [ebp-E8h]
  59779. Packets::LCRetLogin Msg; // [esp+60h] [ebp-B8h]
  59780. CHAR Account[51]; // [esp+C0h] [ebp-58h]
  59781.  
  59782. if ( ThreadValueManager::GetCurrentThreadID() != g_pLoginPlayerManager->m_ThreadID )
  59783. __assert__(
  59784. "./Packets/CLAskLoginHandler.cpp",
  59785. 0x13u,
  59786. "static UINT Packets::CLAskLoginHandler::Execute(Packets::CLAskLogin*, Player*)",
  59787. "ThreadValueManager::GetCurrentThreadID()== g_pLoginPlayerManager->m_ThreadID");
  59788. if ( !pPlayer )
  59789. __assert__(
  59790. "./Packets/CLAskLoginHandler.cpp",
  59791. 0x17u,
  59792. "static UINT Packets::CLAskLoginHandler::Execute(Packets::CLAskLogin*, Player*)",
  59793. "pLoginPlayer");
  59794. result = 0;
  59795. if ( pPlayer[2].m_pSocket != (Socket *)301 )
  59796. return result;
  59797. if ( !pPacket )
  59798. __assert__(
  59799. "./Packets/CLAskLoginHandler.cpp",
  59800. 0x20u,
  59801. "static UINT Packets::CLAskLoginHandler::Execute(Packets::CLAskLogin*, Player*)",
  59802. "pPacket");
  59803. memset(Account, 0, 0x30u);
  59804. *(_WORD *)&Account[48] = 0;
  59805. Account[50] = 0;
  59806. v3 = Packets::CLAskLogin::GetAccount(pPacket);
  59807. strncpy(Account, v3, 0x32u);
  59808. Account[50] = 0;
  59809. if ( Packets::CLAskLogin::GetVersion((int)pPacket) != 34054 )
  59810. {
  59811. Packet::Packet((int)&Msg);
  59812. Msg._vptr_Packet = (int (**)(...))off_80CED48;
  59813. Msg.mSafeSign.m_Sign = 0;
  59814. memset(Msg.mIP, 0, sizeof(Msg.mIP));
  59815. v4 = Packets::CLAskLogin::GetAccount(pPacket);
  59816. Packets::LCRetLogin::SetAccount(&Msg, v4);
  59817. Packets::LCRetLogin::SetResult((int)&Msg, 2);
  59818. (*((void (__cdecl **)(Player *, Packets::LCRetLogin *))pPlayer->_vptr_Player + 3))(pPlayer, &Msg);
  59819. v5 = Packets::CLAskLogin::GetVersion((int)pPacket);
  59820. CacheLog(
  59821. 0,
  59822. "ERROR:CLAskLoginHandler::Execute()....Version is't compatible,CV= %d,TV=%d,Account = %s ",
  59823. v5,
  59824. 34054,
  59825. Account);
  59826. Msg._vptr_Packet = (int (**)(...))off_80CED48;
  59827. v34 = &Msg;
  59828. LABEL_9:
  59829. Packet::~Packet(v34);
  59830. return 2;
  59831. }
  59832. if ( !Account[0] || !AccNameCheck(Account, 0x33u, g_Config.m_ConfigInfo.m_nLanguage) )
  59833. {
  59834. Packet::Packet((int)&Msg);
  59835. Msg._vptr_Packet = (int (**)(...))off_80CED48;
  59836. Msg.mSafeSign.m_Sign = 0;
  59837. memset(Msg.mIP, 0, sizeof(Msg.mIP));
  59838. v6 = Packets::CLAskLogin::GetAccount(pPacket);
  59839. Packets::LCRetLogin::SetAccount(&Msg, v6);
  59840. Packets::LCRetLogin::SetResult((int)&Msg, 1);
  59841. (*((void (__cdecl **)(Player *, Packets::LCRetLogin *))pPlayer->_vptr_Player + 3))(pPlayer, &Msg);
  59842. v7 = LoginPlayer::GetAccount((LoginPlayer *const )pPlayer);
  59843. CacheLog(0, "ERROR:CLAskLoginHandler::Execute()....Account is empty or invalid ,ver=%d,acc=%s", 34054, v7);
  59844. LABEL_16:
  59845. Msg._vptr_Packet = (int (**)(...))off_80CED48;
  59846. goto LABEL_9;
  59847. }
  59848. memset(szHWIDInfo, 0, sizeof(szHWIDInfo));
  59849. Packets::CLAskLogin::GetHWID(&hwid, pPacket);
  59850. snprintf(szHWIDInfo, 0x24u, "%08X-%08X-%08X-%08X", hwid.dw1, hwid.dw2, hwid.dw3, hwid.dw4);
  59851. CacheLog(21, "A new player has login,acc=%s,HardwareId = %s");
  59852. v8 = Packets::CLAskLogin::GetVersion((int)pPacket);
  59853. LoginPlayer::SetVersion((int)pPlayer, v8);
  59854. pPlayer[2].m_pSocket = (Socket *)302;
  59855. v9 = Packets::CLAskLogin::GetAccount(pPacket);
  59856. LoginPlayer::SetAccount((const CHAR *)pPlayer, v9);
  59857. pPlayer[26].m_pSocket = (Socket *)LODWORD(pPacket->m_fLocalVideoMemory);
  59858. v10 = Packets::CLAskLogin::GetCPUInformation(pPacket);
  59859. v12 = v11;
  59860. LoginPlayer::SetCPUInformation((LoginPlayer *const )pPlayer, v10);
  59861. v13 = Packets::CLAskLogin::GetVideoInformation(pPacket);
  59862. LoginPlayer::SetVideoInformation((LoginPlayer *const )pPlayer, v13);
  59863. pPlayer[26]._vptr_Player = (int (**)(...))LODWORD(pPacket->m_fPhyMemory);
  59864. v14 = 0;
  59865. do
  59866. {
  59867. v15 = 0;
  59868. if ( (unsigned int)v14 <= 2 )
  59869. v15 = pPacket->mAllMiBaoValue[v14];
  59870. strncpy((char *)&pPlayer[28].m_pSocketInputStream + 8 * v14 + 1, v15, 2u);
  59871. v16 = SLOWORD(pPlayer[1].m_pSocketInputStream);
  59872. v17 = Packets::CLAskLogin::GetAccount(pPacket);
  59873. CacheLog(
  59874. 0,
  59875. "MIBAO:CLAskLoginHandler Receive Account=%s PlayerID=%d...idx=%d,[%s]=%s",
  59876. v17,
  59877. v16,
  59878. v14 + 1,
  59879. (char *)&pPlayer[28].m_pSocket + 8 * v14 + 2,
  59880. (char *)&pPlayer[28].m_pSocketInputStream + 8 * v14 + 1,
  59881. v12);
  59882. v12 = ++v14;
  59883. }
  59884. while ( v14 <= 2 );
  59885. v18 = pPlayer->m_pSocket;
  59886. nResult = 23;
  59887. if ( !ReLoginManager::IsAccCanReLogin(g_pReLoginManager, Account, v18->m_Host, &nResult) )
  59888. {
  59889. Packet::Packet((int)&Msg);
  59890. Msg._vptr_Packet = (int (**)(...))off_80CED48;
  59891. Msg.mSafeSign.m_Sign = 0;
  59892. memset(Msg.mIP, 0, sizeof(Msg.mIP));
  59893. v19 = Packets::CLAskLogin::GetAccount(pPacket);
  59894. Packets::LCRetLogin::SetAccount(&Msg, v19);
  59895. Packets::LCRetLogin::SetResult((int)&Msg, nResult);
  59896. (*((void (__cdecl **)(Player *, Packets::LCRetLogin *))pPlayer->_vptr_Player + 3))(pPlayer, &Msg);
  59897. v20 = LoginPlayer::GetAccount((LoginPlayer *const )pPlayer);
  59898. CacheLog(0, "ERROR:CLAskLoginHandler::Execute()....Account IsAccCanReLogin Fail, acc=%s", v20);
  59899. if ( nResult == 28 )
  59900. {
  59901. v21 = PacketFactoryManager::CreatePacket(g_pPacketFactoryManager, 0x1B8u);
  59902. v22 = Packets::CLAskLogin::GetAccount(pPacket);
  59903. Packets::LWNotifyUser::SetAccount((Packets::LWNotifyUser *const )v21, v22);
  59904. *(_DWORD *)&v21[5].m_Index = 2;
  59905. v21[5].m_fromWhere = 0;
  59906. ServerManager::SendPacket(*(ServerManager *const *)&g_pServerManager, v21, 0, 0);
  59907. v23 = Packets::CLAskLogin::GetAccount(pPacket);
  59908. CacheLog(0, "CLAskLoginHandler... Acc = %s send kick request to world!", v23);
  59909. }
  59910. goto LABEL_16;
  59911. }
  59912. v24 = (Packets::LBAskAuth *)PacketFactoryManager::CreatePacket(g_pPacketFactoryManager, 0x17u);
  59913. if ( !v24 )
  59914. __assertex__(
  59915. "./Packets/CLAskLoginHandler.cpp",
  59916. 0x79u,
  59917. "static UINT Packets::CLAskLoginHandler::Execute(Packets::CLAskLogin*, Player*)",
  59918. "FALSE",
  59919. &byte_80DEF48);
  59920. v25 = Packets::CLAskLogin::GetAccount(pPacket);
  59921. Packets::LBAskAuth::SetAccount(v24, v25);
  59922. v26 = Packets::CLAskLogin::GetPassWord(pPacket);
  59923. Packets::LBAskAuth::SetPassWord(v24, v26);
  59924. Packets::LBAskAuth::SetPlayerID((int)v24, (__int16)pPlayer[1].m_pSocketInputStream);
  59925. Packets::LBAskAuth::SetIPAddr(v24, pPlayer->m_pSocket->m_Host);
  59926. dest = (char *)v24->mAllMiBaoValue;
  59927. v39 = 0;
  59928. s = (char *)v24->mAllMiBaoKey;
  59929. v36 = (char *)v24->mAllMiBaoKey;
  59930. v27 = pPlayer;
  59931. src = (char *)&pPlayer[28].m_pSocketInputStream + 1;
  59932. do
  59933. {
  59934. if ( pPlayer[28]._vptr_Player == (int (**)(...))1 )
  59935. {
  59936. v32 = LOBYTE(v27[28].m_pSocket);
  59937. v33 = BYTE1(v27[28].m_pSocket);
  59938. if ( v39 > 2 )
  59939. goto LABEL_28;
  59940. if ( v32 <= 6 && v33 <= 6 )
  59941. snprintf(v36, 3u, "%d%d", v32 + 1, v33 + 1);
  59942. }
  59943. else
  59944. {
  59945. if ( v39 > 2 )
  59946. goto LABEL_28;
  59947. snprintf(s, 3u, "%d%d", 0, 0);
  59948. }
  59949. if ( v39 <= 2 )
  59950. strncpy(dest, src, 2u);
  59951. LABEL_28:
  59952. ++v39;
  59953. v27 = (Player *)((char *)v27 + 8);
  59954. src += 8;
  59955. v36 += 3;
  59956. s += 3;
  59957. dest += 3;
  59958. }
  59959. while ( (signed int)v39 <= 2 );
  59960. v28 = Packets::CLAskLogin::GetMacAddr(pPacket);
  59961. Packets::LBAskAuth::SetMacAddr(v24, v28);
  59962. Packets::LBAskAuth::SetHWIDInfo(v24, szHWIDInfo);
  59963. ServerManager::SendPacket(*(ServerManager *const *)&g_pServerManager, &v24->0, 1, 0);
  59964. v29 = SLOWORD(pPlayer[1].m_pSocketInputStream);
  59965. v30 = Packets::CLAskLogin::GetMacAddr(pPacket);
  59966. v31 = Packets::CLAskLogin::GetAccount(pPacket);
  59967. CacheLog(0, "CLAskLoginHandler::Execute(...) Account:%s PlayerID=%d MAC=%s...OK ", v31, v29, v30);
  59968. return 2;
  59969. }
  59970. // 80CED48: using guessed type _DWORD (__cdecl *off_80CED48[2])(Packets::LCRetLogin *this);
  59971.  
  59972. //----- (08096CE4) --------------------------------------------------------
  59973. void __cdecl _tcf_0_148(void *a1)
  59974. {
  59975. std::ios_base::Init::~Init(&std::__ioinit);
  59976. }
  59977.  
  59978. //----- (08096CF4) --------------------------------------------------------
  59979. void `global constructor keyed to'Packets::CLAskLoginHandler::Execute()
  59980. {
  59981. std::ios_base::Init::Init(&std::__ioinit);
  59982. __cxa_atexit(_tcf_0_148, 0, &_dso_handle);
  59983. }
  59984. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  59985.  
  59986. //----- (08096D20) --------------------------------------------------------
  59987. UINT __cdecl Packets::CLAskRegPassPortHandler::Execute(Packets::CLAskRegPassPort *pPacket, Player *pPlayer)
  59988. {
  59989. int v2; // eax
  59990. UINT v3; // ecx
  59991. const char *v4; // edi
  59992. const char *v5; // eax
  59993. Socket *v6; // ST2C_4
  59994. const CHAR *v7; // eax
  59995. const char *v9; // eax
  59996. const CHAR *v10; // eax
  59997. const CHAR *v11; // eax
  59998. const CHAR *v12; // ST2C_4
  59999. const CHAR *v13; // eax
  60000. const CHAR *v14; // eax
  60001. const CHAR *v15; // eax
  60002. const char *v16; // ebx
  60003. const char *v17; // eax
  60004. const CHAR *v18; // eax
  60005. const CHAR *v19; // eax
  60006. const char *v20; // ebx
  60007. const char *v21; // eax
  60008. const char *v22; // ebx
  60009. const char *v23; // eax
  60010. const CHAR *v24; // eax
  60011. const CHAR *v25; // eax
  60012. const CHAR *v26; // eax
  60013. const CHAR *v27; // eax
  60014. Packets::LBAskRegAuth *v28; // ebx
  60015. __int16 v29; // ax
  60016. const CHAR *v30; // eax
  60017. const CHAR *v31; // eax
  60018. const CHAR *v32; // eax
  60019. int v33; // ST20_4
  60020. CHAR *v34; // ST1C_4
  60021. const CHAR *v35; // eax
  60022. Packets::LCRetLogin Msg; // [esp+10h] [ebp-B8h]
  60023. CHAR Account[51]; // [esp+70h] [ebp-58h]
  60024.  
  60025. v2 = ThreadValueManager::GetCurrentThreadID();
  60026. v3 = 2;
  60027. if ( v2 == g_pLoginPlayerManager->m_ThreadID )
  60028. {
  60029. if ( !pPlayer )
  60030. __assert__(
  60031. "./Packets/CLAskRegPassPortHandler.cpp",
  60032. 0x14u,
  60033. "static UINT Packets::CLAskRegPassPortHandler::Execute(Packets::CLAskRegPassPort*, Player*)",
  60034. "pLoginPlayer");
  60035. v4 = Packets::CLAskRegPassPort::GetAccount(pPacket);
  60036. v5 = LoginPlayer::GetAccount((LoginPlayer *const )pPlayer);
  60037. if ( strcmp(v5, v4) )
  60038. {
  60039. v12 = Packets::CLAskRegPassPort::GetAccount(pPacket);
  60040. v13 = LoginPlayer::GetAccount((LoginPlayer *const )pPlayer);
  60041. CacheLog(0, "ERROR: CLAskRegPassPortHandler Get Guid Errors,acc = %s,Packet acc = %s", v13, v12);
  60042. return 0;
  60043. }
  60044. if ( pPlayer[2].m_pSocket != (Socket *)303 )
  60045. {
  60046. v6 = pPlayer[2].m_pSocket;
  60047. v7 = LoginPlayer::GetAccount((LoginPlayer *const )pPlayer);
  60048. CacheLog(0, "ERROR: CLAskRegPassPortHandler Get acc Status Errors,acc = %s,status = %u", v7, v6);
  60049. return 2;
  60050. }
  60051. if ( !pPacket )
  60052. __assert__(
  60053. "./Packets/CLAskRegPassPortHandler.cpp",
  60054. 0x27u,
  60055. "static UINT Packets::CLAskRegPassPortHandler::Execute(Packets::CLAskRegPassPort*, Player*)",
  60056. "pPacket");
  60057. memset(Account, 0, 0x30u);
  60058. *(_WORD *)&Account[48] = 0;
  60059. Account[50] = 0;
  60060. v9 = Packets::CLAskRegPassPort::GetAccount(pPacket);
  60061. strncpy(Account, v9, 0x32u);
  60062. Account[50] = 0;
  60063. if ( !Account[0] || !AccNameCheck(Account, 0x33u, g_Config.m_ConfigInfo.m_nLanguage) )
  60064. {
  60065. Packet::Packet((int)&Msg);
  60066. Msg._vptr_Packet = (int (**)(...))off_80CED48;
  60067. Msg.mSafeSign.m_Sign = 0;
  60068. memset(Msg.mIP, 0, sizeof(Msg.mIP));
  60069. v10 = Packets::CLAskRegPassPort::GetAccount(pPacket);
  60070. Packets::LCRetLogin::SetAccount(&Msg, v10);
  60071. Packets::LCRetLogin::SetResult((int)&Msg, 12);
  60072. (*((void (__cdecl **)(Player *))pPlayer->_vptr_Player + 3))(pPlayer);
  60073. v11 = LoginPlayer::GetAccount((LoginPlayer *const )pPlayer);
  60074. CacheLog(0, "ERROR:CLAskRegPassPortHandler::Execute()....Account is empty or acc Invalid,acc=%s", v11);
  60075. LABEL_12:
  60076. Msg._vptr_Packet = (int (**)(...))off_80CED48;
  60077. Packet::~Packet(&Msg);
  60078. return 2;
  60079. }
  60080. if ( !*Packets::CLAskRegPassPort::GetSuperPw(pPacket)
  60081. || !*Packets::CLAskRegPassPort::GetConfirmSuperPw(pPacket)
  60082. || (v16 = Packets::CLAskRegPassPort::GetConfirmSuperPw(pPacket),
  60083. v17 = Packets::CLAskRegPassPort::GetSuperPw(pPacket),
  60084. strcmp(v17, v16)) )
  60085. {
  60086. Packet::Packet((int)&Msg);
  60087. Msg._vptr_Packet = (int (**)(...))off_80CED48;
  60088. Msg.mSafeSign.m_Sign = 0;
  60089. memset(Msg.mIP, 0, sizeof(Msg.mIP));
  60090. v14 = Packets::CLAskRegPassPort::GetAccount(pPacket);
  60091. Packets::LCRetLogin::SetAccount(&Msg, v14);
  60092. Packets::LCRetLogin::SetResult((int)&Msg, 12);
  60093. (*((void (__cdecl **)(Player *))pPlayer->_vptr_Player + 3))(pPlayer);
  60094. v15 = LoginPlayer::GetAccount((LoginPlayer *const )pPlayer);
  60095. CacheLog(
  60096. 0,
  60097. "ERROR:CLAskRegPassPortHandler::Execute()....SuperPwd and ConfirmSuperPwd empty or not same,acc=%s",
  60098. v15);
  60099. Msg._vptr_Packet = (int (**)(...))off_80CED48;
  60100. Packet::~Packet(&Msg);
  60101. return 2;
  60102. }
  60103. if ( !*Packets::CLAskRegPassPort::GetPwMd5(pPacket)
  60104. || !*Packets::CLAskRegPassPort::GetConfirmPwMd5(pPacket)
  60105. || (v20 = Packets::CLAskRegPassPort::GetConfirmPwMd5(pPacket),
  60106. v21 = Packets::CLAskRegPassPort::GetPwMd5(pPacket),
  60107. strcmp(v21, v20)) )
  60108. {
  60109. Packet::Packet((int)&Msg);
  60110. Msg._vptr_Packet = (int (**)(...))off_80CED48;
  60111. Msg.mSafeSign.m_Sign = 0;
  60112. memset(Msg.mIP, 0, sizeof(Msg.mIP));
  60113. v18 = Packets::CLAskRegPassPort::GetAccount(pPacket);
  60114. Packets::LCRetLogin::SetAccount(&Msg, v18);
  60115. Packets::LCRetLogin::SetResult((int)&Msg, 12);
  60116. (*((void (__cdecl **)(Player *, Packets::LCRetLogin *))pPlayer->_vptr_Player + 3))(pPlayer, &Msg);
  60117. v19 = LoginPlayer::GetAccount((LoginPlayer *const )pPlayer);
  60118. CacheLog(0, "ERROR:CLAskRegPassPortHandler::Execute()....Pwd and ConfirmPwd empty or not same,acc=%s", v19);
  60119. goto LABEL_12;
  60120. }
  60121. v22 = Packets::CLAskRegPassPort::GetSuperPw(pPacket);
  60122. v23 = Packets::CLAskRegPassPort::GetPwMd5(pPacket);
  60123. if ( !strcmp(v23, v22) )
  60124. {
  60125. Packet::Packet((int)&Msg);
  60126. Msg._vptr_Packet = (int (**)(...))off_80CED48;
  60127. Msg.mSafeSign.m_Sign = 0;
  60128. memset(Msg.mIP, 0, sizeof(Msg.mIP));
  60129. v24 = Packets::CLAskRegPassPort::GetAccount(pPacket);
  60130. Packets::LCRetLogin::SetAccount(&Msg, v24);
  60131. Packets::LCRetLogin::SetResult((int)&Msg, 12);
  60132. (*((void (__cdecl **)(Player *, Packets::LCRetLogin *))pPlayer->_vptr_Player + 3))(pPlayer, &Msg);
  60133. v25 = LoginPlayer::GetAccount((LoginPlayer *const )pPlayer);
  60134. CacheLog(0, "ERROR:CLAskRegPassPortHandler::Execute()....Pwd and SuperPwd is same,acc=%s", v25);
  60135. goto LABEL_12;
  60136. }
  60137. if ( strlen(Packets::CLAskRegPassPort::GetEmail(pPacket)) <= 4 )
  60138. {
  60139. Packet::Packet((int)&Msg);
  60140. Msg._vptr_Packet = (int (**)(...))off_80CED48;
  60141. Msg.mSafeSign.m_Sign = 0;
  60142. memset(Msg.mIP, 0, sizeof(Msg.mIP));
  60143. v26 = Packets::CLAskRegPassPort::GetAccount(pPacket);
  60144. Packets::LCRetLogin::SetAccount(&Msg, v26);
  60145. Packets::LCRetLogin::SetResult((int)&Msg, 12);
  60146. (*((void (__cdecl **)(Player *, Packets::LCRetLogin *))pPlayer->_vptr_Player + 3))(pPlayer, &Msg);
  60147. v27 = LoginPlayer::GetAccount((LoginPlayer *const )pPlayer);
  60148. CacheLog(0, "ERROR:CLAskRegPassPortHandler::Execute()....Email empty or too short,acc=%s", v27);
  60149. goto LABEL_12;
  60150. }
  60151. v28 = (Packets::LBAskRegAuth *)PacketFactoryManager::CreatePacket(g_pPacketFactoryManager, 0xC2u);
  60152. if ( !v28 )
  60153. __assertex__(
  60154. "./Packets/CLAskRegPassPortHandler.cpp",
  60155. 0x6Eu,
  60156. "static UINT Packets::CLAskRegPassPortHandler::Execute(Packets::CLAskRegPassPort*, Player*)",
  60157. "FALSE",
  60158. &byte_80DF289);
  60159. v29 = (__int16)pPlayer[1].m_pSocketInputStream;
  60160. pPlayer[2].m_pSocket = (Socket *)304;
  60161. Packets::LBAskRegAuth::SetPlayerID((int)v28, v29);
  60162. Packets::LBAskRegAuth::SetAccount(v28, Account);
  60163. v30 = Packets::CLAskRegPassPort::GetSuperPw(pPacket);
  60164. Packets::LBAskRegAuth::SetSuperPassWord(v28, v30);
  60165. v31 = Packets::CLAskRegPassPort::GetPwMd5(pPacket);
  60166. Packets::LBAskRegAuth::SetPassWord(v28, v31);
  60167. Packets::LBAskRegAuth::SetIP(v28, pPlayer->m_pSocket->m_Host);
  60168. v32 = Packets::CLAskRegPassPort::GetEmail(pPacket);
  60169. Packets::LBAskRegAuth::SetEmail(v28, v32);
  60170. ServerManager::SendPacket(*(ServerManager *const *)&g_pServerManager, &v28->0, 1, 0);
  60171. v33 = SLOWORD(pPlayer[1].m_pSocketInputStream);
  60172. v34 = pPlayer->m_pSocket->m_Host;
  60173. v35 = Packets::CLAskRegPassPort::GetAccount(pPacket);
  60174. CacheLog(0, "CLAskRegPassPortHandler::Execute(...) Account:%s IP:%s PlayerID=%d...OK ", v35, v34, v33);
  60175. v3 = 2;
  60176. }
  60177. return v3;
  60178. }
  60179. // 80CED48: using guessed type _DWORD (__cdecl *off_80CED48[2])(Packets::LCRetLogin *this);
  60180.  
  60181. //----- (080973C4) --------------------------------------------------------
  60182. void __cdecl _tcf_0_149(void *a1)
  60183. {
  60184. std::ios_base::Init::~Init(&std::__ioinit);
  60185. }
  60186.  
  60187. //----- (080973D4) --------------------------------------------------------
  60188. void `global constructor keyed to'Packets::CLAskRegPassPortHandler::Execute()
  60189. {
  60190. std::ios_base::Init::Init(&std::__ioinit);
  60191. __cxa_atexit(_tcf_0_149, 0, &_dso_handle);
  60192. }
  60193. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  60194.  
  60195. //----- (08097400) --------------------------------------------------------
  60196. UINT __cdecl Packets::CLConnectHandler::Execute(Packets::CLConnect *pPacket, Player *pPlayer)
  60197. {
  60198. signed int v2; // edx
  60199. Socket *v3; // eax
  60200. CHAR *v4; // eax
  60201. UINT v5; // eax
  60202. const char *v6; // edi
  60203. INT v8; // eax
  60204. _SERVER_DATA *v9; // eax
  60205. CHAR (*v10)[3]; // [esp+Ch] [ebp-8Ch]
  60206. char *dest; // [esp+18h] [ebp-80h]
  60207. signed int v12; // [esp+1Ch] [ebp-7Ch]
  60208. Packets::LCRetConnect Msg; // [esp+20h] [ebp-78h]
  60209.  
  60210. if ( ThreadValueManager::GetCurrentThreadID() != g_pLoginPlayerManager->m_ThreadID )
  60211. return 2;
  60212. if ( !pPlayer )
  60213. __assert__(
  60214. "./Packets/CLConnectHandler.cpp",
  60215. 0x16u,
  60216. "static UINT Packets::CLConnectHandler::Execute(Packets::CLConnect*, Player*)",
  60217. "pLoginPlayer");
  60218. LOBYTE(pPlayer[30].m_pSocketInputStream) = pPacket->mNetProvider;
  60219. Packet::Packet((int)&Msg);
  60220. Msg._vptr_Packet = (int (**)(...))off_80CE868;
  60221. v10 = Msg.mAllMiBaoKey;
  60222. v2 = 2;
  60223. do
  60224. {
  60225. *(_WORD *)v10 = 0;
  60226. (*v10)[2] = 0;
  60227. ++v10;
  60228. --v2;
  60229. }
  60230. while ( v2 >= 0 );
  60231. v3 = pPlayer->m_pSocket;
  60232. Msg.Result = 0;
  60233. strncpy(Msg.MyWANIP, v3->m_Host, 0x18u);
  60234. Msg.MyWANIP[23] = 0;
  60235. Msg.MyWANPort = pPlayer->m_pSocket->m_Port;
  60236. if ( g_Config.m_LoginInfo.ProxyConnect == 2 )
  60237. {
  60238. v8 = Player_AtLogin::WhereThisPlayerFrom((const Player_AtLogin *const )pPlayer);
  60239. if ( v8 == -1 || v8 == 2 )
  60240. goto LABEL_7;
  60241. CacheLog(
  60242. 0,
  60243. "ERROR:CLConnectHandler::Execute(...)...Only EDU Proxy Permit!!! IP = %s,Port = %u",
  60244. pPlayer->m_pSocket->m_Host,
  60245. pPlayer->m_pSocket->m_Port);
  60246. }
  60247. else
  60248. {
  60249. if ( g_Config.m_LoginInfo.ProxyConnect != 1 )
  60250. {
  60251. LABEL_7:
  60252. v4 = ProxyTool_GetCorrespondingIP(pPlayer, g_Config.m_LoginInfo.m_LoginID);
  60253. strncpy(Msg.LoginIP, v4, 0x18u);
  60254. Msg.LoginIP[23] = 0;
  60255. v5 = ProxyTool_GetCorrespondingPort(pPlayer, g_Config.m_LoginInfo.m_LoginID);
  60256. LABEL_8:
  60257. Msg.LoginPort = v5;
  60258. if ( pPacket->mMiBao )
  60259. {
  60260. pPlayer[28]._vptr_Player = (int (**)(...))1;
  60261. pPlayer[29].m_pSocketOutputStream = (SocketOutputStream *)TimeManager::CurrentTime((int)g_pTimeManager);
  60262. v12 = 0;
  60263. dest = (char *)Msg.mAllMiBaoKey;
  60264. v6 = (char *)&pPlayer[28].m_pSocket + 2;
  60265. do
  60266. {
  60267. if ( (unsigned int)v12 <= 2 )
  60268. strncpy(dest, v6, 2u);
  60269. ++v12;
  60270. v6 += 8;
  60271. dest += 3;
  60272. }
  60273. while ( v12 <= 2 );
  60274. }
  60275. (*((void (__cdecl **)(Player *, Packets::LCRetConnect *))pPlayer->_vptr_Player + 3))(pPlayer, &Msg);
  60276. CacheLog(0, "CLConnectHandler::Execute(...)...OK,IP = %s,Port = %d", Msg.LoginIP, Msg.LoginPort);
  60277. Msg._vptr_Packet = (int (**)(...))off_80CE868;
  60278. Packet::~Packet(&Msg);
  60279. return 2;
  60280. }
  60281. if ( Player_AtLogin::WhereThisPlayerFrom((const Player_AtLogin *const )pPlayer) == -1 )
  60282. {
  60283. v9 = ServerManager::GetCurrentServerInfo(*(ServerManager *const *)&g_pServerManager);
  60284. strncpy(Msg.LoginIP, v9->m_IP0, 0x18u);
  60285. Msg.LoginIP[23] = 0;
  60286. v5 = ServerManager::GetCurrentServerInfo(*(ServerManager *const *)&g_pServerManager)->m_Port0;
  60287. goto LABEL_8;
  60288. }
  60289. CacheLog(
  60290. 0,
  60291. "ERROR:CLConnectHandler::Execute(...)...Proxy Not Permit!!! IP = %s,Port = %u",
  60292. pPlayer->m_pSocket->m_Host,
  60293. pPlayer->m_pSocket->m_Port);
  60294. }
  60295. Msg._vptr_Packet = (int (**)(...))off_80CE868;
  60296. Packet::~Packet(&Msg);
  60297. return 0;
  60298. }
  60299. // 80CE868: using guessed type _DWORD (__cdecl *off_80CE868[2])(Packets::LCRetConnect *this);
  60300.  
  60301. //----- (080976D8) --------------------------------------------------------
  60302. void __cdecl _tcf_0_150(void *a1)
  60303. {
  60304. std::ios_base::Init::~Init(&std::__ioinit);
  60305. }
  60306.  
  60307. //----- (080976E8) --------------------------------------------------------
  60308. void `global constructor keyed to'Packets::CLConnectHandler::Execute()
  60309. {
  60310. std::ios_base::Init::Init(&std::__ioinit);
  60311. __cxa_atexit(_tcf_0_150, 0, &_dso_handle);
  60312. }
  60313. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  60314.  
  60315. //----- (08097714) --------------------------------------------------------
  60316. UINT __cdecl Packets::KeyExchangeHandler::Execute(Packets::KeyExchange *pPacket, Player *pPlayer)
  60317. {
  60318. if ( !pPlayer )
  60319. __assert__(
  60320. "./Packets/KeyExchangeHandler.cpp",
  60321. 0xAu,
  60322. "static UINT Packets::KeyExchangeHandler::Execute(Packets::KeyExchange*, Player*)",
  60323. "pPlayer");
  60324. if ( !pPacket )
  60325. __assert__(
  60326. "./Packets/KeyExchangeHandler.cpp",
  60327. 0xBu,
  60328. "static UINT Packets::KeyExchangeHandler::Execute(Packets::KeyExchange*, Player*)",
  60329. "pPacket");
  60330. return 2;
  60331. }
  60332.  
  60333. //----- (080977B4) --------------------------------------------------------
  60334. void __cdecl _tcf_0_151(void *a1)
  60335. {
  60336. std::ios_base::Init::~Init(&std::__ioinit);
  60337. }
  60338.  
  60339. //----- (080977C4) --------------------------------------------------------
  60340. void `global constructor keyed to'Packets::KeyExchangeHandler::Execute()
  60341. {
  60342. std::ios_base::Init::Init(&std::__ioinit);
  60343. __cxa_atexit(_tcf_0_151, 0, &_dso_handle);
  60344. }
  60345. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  60346.  
  60347. //----- (080977F0) --------------------------------------------------------
  60348. UINT __cdecl Packets::LBAccCheckHandler::Execute(Packets::LBAccCheck *pPacket, Player *pPlayer)
  60349. {
  60350. return 2;
  60351. }
  60352.  
  60353. //----- (080977FC) --------------------------------------------------------
  60354. void __cdecl _tcf_0_152(void *a1)
  60355. {
  60356. std::ios_base::Init::~Init(&std::__ioinit);
  60357. }
  60358.  
  60359. //----- (0809780C) --------------------------------------------------------
  60360. void `global constructor keyed to'Packets::LBAccCheckHandler::Execute()
  60361. {
  60362. std::ios_base::Init::Init(&std::__ioinit);
  60363. __cxa_atexit(_tcf_0_152, 0, &_dso_handle);
  60364. }
  60365. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  60366.  
  60367. //----- (08097838) --------------------------------------------------------
  60368. UINT __cdecl Packets::LBAskAuthHandler::Execute(Packets::LBAskAuth *pPacket, Player *pPlayer)
  60369. {
  60370. const CHAR *v2; // eax
  60371. Packets::LBAccCheck *v4; // esi
  60372. signed int v5; // ecx
  60373. CHAR (*v6)[3]; // edx
  60374. CHAR *v7; // edi
  60375. const char *v8; // eax
  60376. signed int v9; // eax
  60377. const char *v10; // eax
  60378. signed int v11; // eax
  60379. const char *v12; // eax
  60380. signed int v13; // eax
  60381. unsigned int v14; // esi
  60382. Packets::LBAskAuth *v15; // edi
  60383. const char *v16; // eax
  60384. const char *v17; // edx
  60385. const char *v18; // eax
  60386. const char *v19; // eax
  60387. signed int v20; // eax
  60388. char *v21; // [esp+4h] [ebp-F4h]
  60389. Packets::LBAskAuth *v22; // [esp+8h] [ebp-F0h]
  60390. char *dest; // [esp+Ch] [ebp-ECh]
  60391. Packets::LBAccCheck Msg; // [esp+10h] [ebp-E8h]
  60392.  
  60393. if ( *(_DWORD *)(*(_DWORD *)&g_pServerManager + 7480) != ThreadValueManager::GetCurrentThreadID() )
  60394. __assertex__(
  60395. "./Packets/LBAskAuthHandler.cpp",
  60396. 0x25u,
  60397. "static UINT Packets::LBAskAuthHandler::Execute(Packets::LBAskAuth*, Player*)",
  60398. "FALSE",
  60399. aLbaskauthhandl_0);
  60400. if ( !pPacket )
  60401. __assert__(
  60402. "./Packets/LBAskAuthHandler.cpp",
  60403. 0xFu,
  60404. "static UINT Packets::LBAskAuthHandler::Execute(Packets::LBAskAuth*, Player*)",
  60405. "pPacket");
  60406. if ( !pPlayer )
  60407. __assert__(
  60408. "./Packets/LBAskAuthHandler.cpp",
  60409. 0x11u,
  60410. "static UINT Packets::LBAskAuthHandler::Execute(Packets::LBAskAuth*, Player*)",
  60411. "pBillPlayer");
  60412. BillPacket::BillPacket(&Msg);
  60413. Msg._vptr_BillPacket = (int (**)(...))off_80CD408;
  60414. memset(Msg.mAccount, 0, 0x30u);
  60415. *(_WORD *)&Msg.mAccount[48] = 0;
  60416. Msg.mAccount[50] = 0;
  60417. memset(Msg.mPwMd5, 0, 0x20u);
  60418. Msg.mPwMd5[32] = 0;
  60419. memset(Msg.mIP, 0, sizeof(Msg.mIP));
  60420. v4 = &Msg;
  60421. v5 = 2;
  60422. v6 = Msg.mAllMiBaoValue;
  60423. do
  60424. {
  60425. *(_WORD *)&v4->mAllMiBaoKey[0][0] = 0;
  60426. v4->mAllMiBaoKey[0][2] = 0;
  60427. *(_WORD *)v6 = 0;
  60428. v7 = &(*v6)[2];
  60429. v4 = (Packets::LBAccCheck *)((char *)v4 + 3);
  60430. ++v6;
  60431. --v5;
  60432. *v7 = 0;
  60433. }
  60434. while ( v5 >= 0 );
  60435. memset(Msg.mMacAddr, 0, 0x20u);
  60436. Msg.mMacAddr[32] = 0;
  60437. memset(Msg.mHWIDInfo, 0, sizeof(Msg.mHWIDInfo));
  60438. v8 = Packets::LBAskAuth::GetAccount(pPacket);
  60439. strncpy(Msg.mAccount, v8, 0x32u);
  60440. Msg.mAccount[50] = 0;
  60441. Msg.mAccLength = 0;
  60442. v9 = 0;
  60443. do
  60444. {
  60445. if ( Msg.mAccount[v9] )
  60446. ++Msg.mAccLength;
  60447. ++v9;
  60448. }
  60449. while ( v9 <= 49 );
  60450. v10 = Packets::LBAskAuth::GetPassWord(pPacket);
  60451. strncpy(Msg.mPwMd5, v10, 0x20u);
  60452. Msg.mPwLength = 0;
  60453. v11 = 0;
  60454. do
  60455. {
  60456. if ( Msg.mPwMd5[v11] )
  60457. ++Msg.mPwLength;
  60458. ++v11;
  60459. }
  60460. while ( v11 <= 31 );
  60461. Msg.mUserLevel = 1;
  60462. v12 = Packets::LBAskAuth::GetIPAddr(pPacket);
  60463. strncpy(Msg.mIP, v12, 0xFu);
  60464. Msg.mIPLength = 0;
  60465. v13 = 0;
  60466. do
  60467. {
  60468. if ( Msg.mIP[v13] )
  60469. ++Msg.mIPLength;
  60470. ++v13;
  60471. }
  60472. while ( v13 <= 14 );
  60473. Msg.m_Index = Packets::LBAskAuth::GetPlayerID((int)pPacket);
  60474. dest = (char *)Msg.mAllMiBaoValue;
  60475. v14 = 0;
  60476. v22 = pPacket;
  60477. v21 = (char *)Msg.mAllMiBaoKey;
  60478. v15 = pPacket;
  60479. do
  60480. {
  60481. v16 = 0;
  60482. if ( v14 <= 2 )
  60483. v16 = (const char *)v15->mAllMiBaoKey;
  60484. v17 = 0;
  60485. if ( v14 <= 2 )
  60486. {
  60487. strncpy(v21, v16, 2u);
  60488. v17 = (const char *)v22->mAllMiBaoValue;
  60489. }
  60490. if ( v14 <= 2 )
  60491. strncpy(dest, v17, 2u);
  60492. ++v14;
  60493. v15 = (Packets::LBAskAuth *)((char *)v15 + 3);
  60494. v21 += 3;
  60495. v22 = (Packets::LBAskAuth *)((char *)v22 + 3);
  60496. dest += 3;
  60497. }
  60498. while ( (signed int)v14 <= 2 );
  60499. v18 = Packets::LBAskAuth::GetMacAddr(pPacket);
  60500. strncpy(Msg.mMacAddr, v18, 0x20u);
  60501. Msg.mMacAddr[32] = 0;
  60502. v19 = Packets::LBAskAuth::GetHWIDInfo(pPacket);
  60503. strncpy(Msg.mHWIDInfo, v19, 0x23u);
  60504. Msg.mHWIDLength = 0;
  60505. v20 = 0;
  60506. do
  60507. {
  60508. if ( Msg.mHWIDInfo[v20] )
  60509. ++Msg.mHWIDLength;
  60510. ++v20;
  60511. }
  60512. while ( v20 <= 34 );
  60513. (*((void (__cdecl **)(Player *, Packets::LBAccCheck *))pPlayer->_vptr_Player + 29))(pPlayer, &Msg);
  60514. Msg._vptr_BillPacket = (int (**)(...))off_80CD408;
  60515. BillPacket::~BillPacket(&Msg);
  60516. v2 = Packets::LBAskAuth::GetAccount(pPacket);
  60517. CacheLog(0, "LBAskAuthHandler::Execute() Acc=%s....OK", v2);
  60518. return 2;
  60519. }
  60520. // 80CD408: using guessed type _DWORD (__cdecl *off_80CD408[2])(Packets::LBAccCheck *this);
  60521.  
  60522. //----- (08097BB0) --------------------------------------------------------
  60523. void __cdecl _tcf_0_153(void *a1)
  60524. {
  60525. std::ios_base::Init::~Init(&std::__ioinit);
  60526. }
  60527.  
  60528. //----- (08097BC0) --------------------------------------------------------
  60529. void `global constructor keyed to'Packets::LBAskAuthHandler::Execute()
  60530. {
  60531. std::ios_base::Init::Init(&std::__ioinit);
  60532. __cxa_atexit(_tcf_0_153, 0, &_dso_handle);
  60533. }
  60534. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  60535.  
  60536. //----- (08097BEC) --------------------------------------------------------
  60537. UINT __cdecl Packets::LBAskRegAuthHandler::Execute(Packets::LBAskRegAuth *pPacket, Player *pPlayer)
  60538. {
  60539. const CHAR *v2; // ST1C_4
  60540. const CHAR *v3; // eax
  60541. const char *v5; // eax
  60542. signed int v6; // eax
  60543. const char *v7; // eax
  60544. signed int v8; // eax
  60545. const char *v9; // eax
  60546. signed int v10; // eax
  60547. const char *v11; // eax
  60548. signed int v12; // eax
  60549. const char *v13; // eax
  60550. signed int v14; // eax
  60551. Packets::LBRegPassPort Msg; // [esp+0h] [ebp-218h]
  60552.  
  60553. if ( *(_DWORD *)(*(_DWORD *)&g_pServerManager + 7480) != ThreadValueManager::GetCurrentThreadID() )
  60554. __assertex__(
  60555. "./Packets/LBAskRegAuthHandler.cpp",
  60556. 0x1Fu,
  60557. "static UINT Packets::LBAskRegAuthHandler::Execute(Packets::LBAskRegAuth*, Player*)",
  60558. "FALSE",
  60559. aLbaskregauthha_0);
  60560. if ( !pPacket )
  60561. __assert__(
  60562. "./Packets/LBAskRegAuthHandler.cpp",
  60563. 0xFu,
  60564. "static UINT Packets::LBAskRegAuthHandler::Execute(Packets::LBAskRegAuth*, Player*)",
  60565. "pPacket");
  60566. if ( !pPlayer )
  60567. __assert__(
  60568. "./Packets/LBAskRegAuthHandler.cpp",
  60569. 0x11u,
  60570. "static UINT Packets::LBAskRegAuthHandler::Execute(Packets::LBAskRegAuth*, Player*)",
  60571. "pBillPlayer");
  60572. BillPacket::BillPacket(&Msg);
  60573. Msg._vptr_BillPacket = (int (**)(...))off_80CE3E8;
  60574. memset(Msg.mAccount, 0, 0x30u);
  60575. *(_WORD *)&Msg.mAccount[48] = 0;
  60576. Msg.mAccount[50] = 0;
  60577. memset(Msg.mSuperPw, 0, 0x20u);
  60578. Msg.mSuperPw[32] = 0;
  60579. memset(Msg.mPwMd5, 0, 0x20u);
  60580. Msg.mPwMd5[32] = 0;
  60581. memset(Msg.mIP, 0, sizeof(Msg.mIP));
  60582. memset(Msg.mEmail, 0, 0x100u);
  60583. memset(Msg.mOtherInfo1, 0, 0x20u);
  60584. Msg.mOtherInfo1[32] = 0;
  60585. memset(Msg.mOtherInfo2, 0, 0x20u);
  60586. Msg.mOtherInfo2[32] = 0;
  60587. memset(Msg.mOtherInfo3, 0, 0x20u);
  60588. Msg.mOtherInfo3[32] = 0;
  60589. Msg.mEmailLength = 0;
  60590. Msg.mIPLength = 0;
  60591. Msg.mPwLength = 0;
  60592. Msg.mSuperPwLength = 0;
  60593. Msg.mAccLength = 0;
  60594. Msg.mOtherInfo3Length = 0;
  60595. Msg.mOtherInfo2Length = 0;
  60596. Msg.mOtherInfo1Length = 0;
  60597. v5 = Packets::LBAskRegAuth::GetAccount(pPacket);
  60598. strncpy(Msg.mAccount, v5, 0x32u);
  60599. Msg.mAccount[50] = 0;
  60600. Msg.mAccLength = 0;
  60601. v6 = 0;
  60602. do
  60603. {
  60604. if ( Msg.mAccount[v6] )
  60605. ++Msg.mAccLength;
  60606. ++v6;
  60607. }
  60608. while ( v6 <= 49 );
  60609. v7 = Packets::LBAskRegAuth::GetSuperPassWord(pPacket);
  60610. strncpy(Msg.mSuperPw, v7, 0x20u);
  60611. Msg.mSuperPwLength = 0;
  60612. v8 = 0;
  60613. do
  60614. {
  60615. if ( Msg.mSuperPw[v8] )
  60616. ++Msg.mSuperPwLength;
  60617. ++v8;
  60618. }
  60619. while ( v8 <= 31 );
  60620. v9 = Packets::LBAskRegAuth::GetPassWord(pPacket);
  60621. strncpy(Msg.mPwMd5, v9, 0x20u);
  60622. Msg.mPwLength = 0;
  60623. v10 = 0;
  60624. do
  60625. {
  60626. if ( Msg.mPwMd5[v10] )
  60627. ++Msg.mPwLength;
  60628. ++v10;
  60629. }
  60630. while ( v10 <= 31 );
  60631. Msg.m_Index = Packets::LBAskRegAuth::GetPlayerID((int)pPacket);
  60632. v11 = Packets::LBAskRegAuth::GetIP(pPacket);
  60633. strncpy(Msg.mIP, v11, 0xFu);
  60634. Msg.mIPLength = 0;
  60635. v12 = 0;
  60636. do
  60637. {
  60638. if ( Msg.mIP[v12] )
  60639. ++Msg.mIPLength;
  60640. ++v12;
  60641. }
  60642. while ( v12 <= 14 );
  60643. v13 = Packets::LBAskRegAuth::GetEmail(pPacket);
  60644. strncpy(Msg.mEmail, v13, 0xFFu);
  60645. Msg.mEmailLength = 0;
  60646. v14 = 0;
  60647. do
  60648. {
  60649. if ( Msg.mEmail[v14] )
  60650. ++Msg.mEmailLength;
  60651. ++v14;
  60652. }
  60653. while ( v14 <= 254 );
  60654. (*((void (__cdecl **)(Player *, Packets::LBRegPassPort *))pPlayer->_vptr_Player + 29))(pPlayer, &Msg);
  60655. Msg._vptr_BillPacket = (int (**)(...))off_80CE3E8;
  60656. BillPacket::~BillPacket(&Msg);
  60657. v2 = Packets::LBAskRegAuth::GetIP(pPacket);
  60658. v3 = Packets::LBAskRegAuth::GetAccount(pPacket);
  60659. CacheLog(0, "LBAskRegAuthHandler::Execute() Acc=%s IP=%s....OK", v3, v2, Msg._vptr_BillPacket);
  60660. return 2;
  60661. }
  60662. // 80CE3E8: using guessed type _DWORD (__cdecl *off_80CE3E8[2])(Packets::LBRegPassPort *this);
  60663.  
  60664. //----- (08097F58) --------------------------------------------------------
  60665. void __cdecl _tcf_0_154(void *a1)
  60666. {
  60667. std::ios_base::Init::~Init(&std::__ioinit);
  60668. }
  60669.  
  60670. //----- (08097F68) --------------------------------------------------------
  60671. void `global constructor keyed to'Packets::LBAskRegAuthHandler::Execute()
  60672. {
  60673. std::ios_base::Init::Init(&std::__ioinit);
  60674. __cxa_atexit(_tcf_0_154, 0, &_dso_handle);
  60675. }
  60676. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  60677.  
  60678. //----- (08097F94) --------------------------------------------------------
  60679. UINT __cdecl Packets::LBBillingEndHandler::Execute(Packets::LBBillingEnd *pPacket, Player *pPlayer)
  60680. {
  60681. return 2;
  60682. }
  60683.  
  60684. //----- (08097FA0) --------------------------------------------------------
  60685. void __cdecl _tcf_0_155(void *a1)
  60686. {
  60687. std::ios_base::Init::~Init(&std::__ioinit);
  60688. }
  60689.  
  60690. //----- (08097FB0) --------------------------------------------------------
  60691. void `global constructor keyed to'Packets::LBBillingEndHandler::Execute()
  60692. {
  60693. std::ios_base::Init::Init(&std::__ioinit);
  60694. __cxa_atexit(_tcf_0_155, 0, &_dso_handle);
  60695. }
  60696. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  60697.  
  60698. //----- (08097FDC) --------------------------------------------------------
  60699. UINT __cdecl Packets::LBBillingKeepHandler::Execute(Packets::LBBillingKeep *pPacket, Player *pPlayer)
  60700. {
  60701. return 2;
  60702. }
  60703.  
  60704. //----- (08097FE8) --------------------------------------------------------
  60705. void __cdecl _tcf_0_156(void *a1)
  60706. {
  60707. std::ios_base::Init::~Init(&std::__ioinit);
  60708. }
  60709.  
  60710. //----- (08097FF8) --------------------------------------------------------
  60711. void `global constructor keyed to'Packets::LBBillingKeepHandler::Execute()
  60712. {
  60713. std::ios_base::Init::Init(&std::__ioinit);
  60714. __cxa_atexit(_tcf_0_156, 0, &_dso_handle);
  60715. }
  60716. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  60717.  
  60718. //----- (08098024) --------------------------------------------------------
  60719. UINT __cdecl Packets::LBBillingStartHandler::Execute(Packets::LBBillingStart *pPacket, Player *pPlayer)
  60720. {
  60721. return 2;
  60722. }
  60723.  
  60724. //----- (08098030) --------------------------------------------------------
  60725. void __cdecl _tcf_0_157(void *a1)
  60726. {
  60727. std::ios_base::Init::~Init(&std::__ioinit);
  60728. }
  60729.  
  60730. //----- (08098040) --------------------------------------------------------
  60731. void `global constructor keyed to'Packets::LBBillingStartHandler::Execute()
  60732. {
  60733. std::ios_base::Init::Init(&std::__ioinit);
  60734. __cxa_atexit(_tcf_0_157, 0, &_dso_handle);
  60735. }
  60736. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  60737.  
  60738. //----- (0809806C) --------------------------------------------------------
  60739. UINT __cdecl Packets::LBConnectHandler::Execute(Packets::LBConnect *pPacket, Player *pPlayer)
  60740. {
  60741. return 2;
  60742. }
  60743.  
  60744. //----- (08098078) --------------------------------------------------------
  60745. void __cdecl _tcf_0_158(void *a1)
  60746. {
  60747. std::ios_base::Init::~Init(&std::__ioinit);
  60748. }
  60749.  
  60750. //----- (08098088) --------------------------------------------------------
  60751. void `global constructor keyed to'Packets::LBConnectHandler::Execute()
  60752. {
  60753. std::ios_base::Init::Init(&std::__ioinit);
  60754. __cxa_atexit(_tcf_0_158, 0, &_dso_handle);
  60755. }
  60756. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  60757.  
  60758. //----- (080980B4) --------------------------------------------------------
  60759. UINT __cdecl Packets::LBKeepLiveHandler::Execute(Packets::LBKeepLive *pPacket, Player *pPlayer)
  60760. {
  60761. return 2;
  60762. }
  60763.  
  60764. //----- (080980C0) --------------------------------------------------------
  60765. void __cdecl _tcf_0_159(void *a1)
  60766. {
  60767. std::ios_base::Init::~Init(&std::__ioinit);
  60768. }
  60769.  
  60770. //----- (080980D0) --------------------------------------------------------
  60771. void `global constructor keyed to'Packets::LBKeepLiveHandler::Execute()
  60772. {
  60773. std::ios_base::Init::Init(&std::__ioinit);
  60774. __cxa_atexit(_tcf_0_159, 0, &_dso_handle);
  60775. }
  60776. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  60777.  
  60778. //----- (080980FC) --------------------------------------------------------
  60779. UINT __cdecl Packets::LBKickAllHandler::Execute(Packets::LBKickAll *pPacket, Player *pPlayer)
  60780. {
  60781. return 2;
  60782. }
  60783.  
  60784. //----- (08098108) --------------------------------------------------------
  60785. void __cdecl _tcf_0_160(void *a1)
  60786. {
  60787. std::ios_base::Init::~Init(&std::__ioinit);
  60788. }
  60789.  
  60790. //----- (08098118) --------------------------------------------------------
  60791. void `global constructor keyed to'Packets::LBKickAllHandler::Execute()
  60792. {
  60793. std::ios_base::Init::Init(&std::__ioinit);
  60794. __cxa_atexit(_tcf_0_160, 0, &_dso_handle);
  60795. }
  60796. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  60797.  
  60798. //----- (08098144) --------------------------------------------------------
  60799. UINT __cdecl Packets::LBRegPassPortHandler::Execute(Packets::LBRegPassPort *pPacket, Player *pPlayer)
  60800. {
  60801. return 2;
  60802. }
  60803.  
  60804. //----- (08098150) --------------------------------------------------------
  60805. void __cdecl _tcf_0_161(void *a1)
  60806. {
  60807. std::ios_base::Init::~Init(&std::__ioinit);
  60808. }
  60809.  
  60810. //----- (08098160) --------------------------------------------------------
  60811. void `global constructor keyed to'Packets::LBRegPassPortHandler::Execute()
  60812. {
  60813. std::ios_base::Init::Init(&std::__ioinit);
  60814. __cxa_atexit(_tcf_0_161, 0, &_dso_handle);
  60815. }
  60816. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  60817.  
  60818. //----- (0809818C) --------------------------------------------------------
  60819. UINT __cdecl Packets::LCRetCharListHandler::Execute(Packets::LCRetCharList *pPacket, Player *pPlayer)
  60820. {
  60821. const char *v3; // edi
  60822. const char *v4; // eax
  60823. const CHAR *v5; // ST28_4
  60824. const CHAR *v6; // ST24_4
  60825. int v7; // [esp-8h] [ebp-20h]
  60826. int v8; // [esp-4h] [ebp-1Ch]
  60827.  
  60828. if ( ThreadValueManager::GetCurrentThreadID() != g_pProcessPlayerManager->m_ThreadID )
  60829. __assertex__(
  60830. "./Packets/LCRetCharListHandler.cpp",
  60831. 0x1Fu,
  60832. "static UINT Packets::LCRetCharListHandler::Execute(Packets::LCRetCharList*, Player*)",
  60833. "FALSE",
  60834. aLcretcharlisth_1);
  60835. if ( !pPlayer )
  60836. __assert__(
  60837. "./Packets/LCRetCharListHandler.cpp",
  60838. 0xFu,
  60839. "static UINT Packets::LCRetCharListHandler::Execute(Packets::LCRetCharList*, Player*)",
  60840. "FALSE");
  60841. v3 = Packets::LCRetCharList::GetAccount(pPacket);
  60842. v4 = LoginPlayer::GetAccount((LoginPlayer *const )pPlayer);
  60843. if ( !strcmp(v4, v3) )
  60844. {
  60845. (*((void (__cdecl **)(Player *, Packets::LCRetCharList *))pPlayer->_vptr_Player + 3))(pPlayer, pPacket);
  60846. CacheLog(0, "LCRetCharListHandler::Execute() ....OK", v7, v8);
  60847. }
  60848. else
  60849. {
  60850. v5 = LoginPlayer::GetAccount((LoginPlayer *const )pPlayer);
  60851. v6 = Packets::LCRetCharList::GetAccount(pPacket);
  60852. CacheLog(0, "LCRetCharListHandler::Execute() ....Fails,packacc=%s,acc=%s", v6, v5);
  60853. }
  60854. return 2;
  60855. }
  60856.  
  60857. //----- (080982B4) --------------------------------------------------------
  60858. void __cdecl _tcf_0_162(void *a1)
  60859. {
  60860. std::ios_base::Init::~Init(&std::__ioinit);
  60861. }
  60862.  
  60863. //----- (080982C4) --------------------------------------------------------
  60864. void `global constructor keyed to'Packets::LCRetCharListHandler::Execute()
  60865. {
  60866. std::ios_base::Init::Init(&std::__ioinit);
  60867. __cxa_atexit(_tcf_0_162, 0, &_dso_handle);
  60868. }
  60869. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  60870.  
  60871. //----- (080982F0) --------------------------------------------------------
  60872. UINT __cdecl Packets::LCRetCharLoginHandler::Execute(Packets::LCRetCharLogin *pPacket, Player *pPlayer)
  60873. {
  60874. const CHAR *v2; // eax
  60875.  
  60876. if ( ThreadValueManager::GetCurrentThreadID() != g_pProcessPlayerManager->m_ThreadID )
  60877. __assertex__(
  60878. "./Packets/LCRetCharLoginHandler.cpp",
  60879. 0x18u,
  60880. "static UINT Packets::LCRetCharLoginHandler::Execute(Packets::LCRetCharLogin*, Player*)",
  60881. "FALSE",
  60882. aLcretcharlogin_0);
  60883. if ( !pPlayer )
  60884. __assert__(
  60885. "./Packets/LCRetCharLoginHandler.cpp",
  60886. 0xFu,
  60887. "static UINT Packets::LCRetCharLoginHandler::Execute(Packets::LCRetCharLogin*, Player*)",
  60888. "FALSE");
  60889. (*((void (__cdecl **)(Player *, Packets::LCRetCharLogin *))pPlayer->_vptr_Player + 3))(pPlayer, pPacket);
  60890. v2 = LoginPlayer::GetAccount((LoginPlayer *const )pPlayer);
  60891. CacheLog(0, "LCRetCharLoginHandler::Execute() ....OK,acc=%s", v2);
  60892. return 2;
  60893. }
  60894.  
  60895. //----- (080983D0) --------------------------------------------------------
  60896. void __cdecl _tcf_0_163(void *a1)
  60897. {
  60898. std::ios_base::Init::~Init(&std::__ioinit);
  60899. }
  60900.  
  60901. //----- (080983E0) --------------------------------------------------------
  60902. void `global constructor keyed to'Packets::LCRetCharLoginHandler::Execute()
  60903. {
  60904. std::ios_base::Init::Init(&std::__ioinit);
  60905. __cxa_atexit(_tcf_0_163, 0, &_dso_handle);
  60906. }
  60907. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  60908.  
  60909. //----- (0809840C) --------------------------------------------------------
  60910. UINT __cdecl Packets::LCRetConnectHandler::Execute(Packets::LCRetConnect *pPacket, Player *pPlayer)
  60911. {
  60912. return 2;
  60913. }
  60914.  
  60915. //----- (08098418) --------------------------------------------------------
  60916. void __cdecl _tcf_0_164(void *a1)
  60917. {
  60918. std::ios_base::Init::~Init(&std::__ioinit);
  60919. }
  60920.  
  60921. //----- (08098428) --------------------------------------------------------
  60922. void `global constructor keyed to'Packets::LCRetConnectHandler::Execute()
  60923. {
  60924. std::ios_base::Init::Init(&std::__ioinit);
  60925. __cxa_atexit(_tcf_0_164, 0, &_dso_handle);
  60926. }
  60927. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  60928.  
  60929. //----- (08098454) --------------------------------------------------------
  60930. UINT __cdecl Packets::LCRetCreateCharHandler::Execute(Packets::LCRetCreateChar *pPacket, Player *pPlayer)
  60931. {
  60932. int v2; // ebx
  60933. const char *v3; // esi
  60934. const char *v4; // eax
  60935. const CHAR *v5; // ST28_4
  60936. const char *v6; // ebx
  60937. const char *v7; // eax
  60938. const CHAR *v8; // ST28_4
  60939. const CHAR *v10; // eax
  60940. const CHAR *v11; // eax
  60941. FULLUSERDATA_0 *v12; // edx
  60942. int i8; // eax
  60943. const CHAR *v14; // eax
  60944. const CHAR *v15; // eax
  60945. int v16; // ecx
  60946. int v17; // ST24_4
  60947. const CHAR *v18; // eax
  60948. FULLUSERDATA_0 *i9; // eax
  60949. FULLUSERDATA_0 *v20; // edx
  60950. int i2; // eax
  60951. FULLUSERDATA_0 *i10; // eax
  60952. FULLUSERDATA_0 *i11; // eax
  60953. FULLUSERDATA_0 *i12; // eax
  60954. FULLUSERDATA_0 *i13; // eax
  60955. FULLUSERDATA_0 *i3; // eax
  60956. FULLUSERDATA_0 *v27; // edx
  60957. int jj; // eax
  60958. FULLUSERDATA_0 *i4; // eax
  60959. FULLUSERDATA_0 *kk; // eax
  60960. const CHAR *v31; // eax
  60961. const CHAR *v32; // eax
  60962. int v33; // eax
  60963. const CHAR *v34; // eax
  60964. const CHAR *v35; // eax
  60965. FULLUSERDATA_0 *v36; // edx
  60966. int j; // eax
  60967. FULLUSERDATA_0 *k; // eax
  60968. FULLUSERDATA_0 *i5; // eax
  60969. FULLUSERDATA_0 *ll; // eax
  60970. FULLUSERDATA_0 *l; // eax
  60971. FULLUSERDATA_0 *i6; // eax
  60972. FULLUSERDATA_0 *mm; // eax
  60973. FULLUSERDATA_0 *m; // eax
  60974. FULLUSERDATA_0 *i7; // eax
  60975. FULLUSERDATA_0 *nn; // eax
  60976. FULLUSERDATA_0 *n; // eax
  60977. FULLUSERDATA_0 *i1; // eax
  60978. FULLUSERDATA_0 *ii; // eax
  60979. signed int i; // [esp+0h] [ebp-C748h]
  60980. Packets::LCRetCharList *pRetListMsg; // [esp+4h] [ebp-C744h]
  60981. Packets::LCRetCreateChar *pMsg; // [esp+8h] [ebp-C740h]
  60982. int Result; // [esp+Ch] [ebp-C73Ch]
  60983. UINT CharNumber; // [esp+10h] [ebp-C738h]
  60984. ODBCInterface *pInterface; // [esp+14h] [ebp-C734h]
  60985. PlayerID_t PlayerID; // [esp+1Ah] [ebp-C72Eh]
  60986. int PlayerCharGUID; // [esp+1Ch] [ebp-C72Ch]
  60987. DBCharList CharListObject; // [esp+20h] [ebp-C728h]
  60988. DBCharFullData CharFullDataObject; // [esp+90h] [ebp-C6B8h]
  60989. FULLUSERDATA_0 UserData; // [esp+C0h] [ebp-C688h]
  60990. Packets::LCRetCreateChar Msg; // [esp+C6E0h] [ebp-68h]
  60991.  
  60992. v2 = ThreadValueManager::GetCurrentThreadID();
  60993. if ( g_pProcessPlayerManager->m_ThreadID == v2 )
  60994. {
  60995. if ( !pPlayer )
  60996. __assert__(
  60997. "./Packets/LCRetCreateCharHandler.cpp",
  60998. 0x1Du,
  60999. "static UINT Packets::LCRetCreateCharHandler::Execute(Packets::LCRetCreateChar*, Player*)",
  61000. "FALSE");
  61001. v6 = Packets::LCRetCreateChar::GetAccount(pPacket);
  61002. v7 = LoginPlayer::GetAccount((LoginPlayer *const )pPlayer);
  61003. if ( strcmp(v7, v6) )
  61004. goto LABEL_5;
  61005. if ( Packets::LCRetCreateChar::GetResult((int)pPacket) == 7 )
  61006. {
  61007. if ( pPlayer[2].m_pSocket != (Socket *)308 )
  61008. {
  61009. v8 = LoginPlayer::GetAccount((LoginPlayer *const )pPlayer);
  61010. CacheLog(0, "LCRetCreateCharHandler::Execute() ....Fail,acc=%s not in PS_LOGIN_NORMAL", v8);
  61011. return 2;
  61012. }
  61013. if ( DBThreadManager::SendPacket(g_pDBThreadManager, &pPacket->0, (PlayerID_t)pPlayer[1].m_pSocketInputStream) )
  61014. {
  61015. pPlayer[2]._vptr_Player = (int (**)(...))TimeManager::CurrentTime((int)g_pTimeManager);
  61016. return 3;
  61017. }
  61018. Packet::Packet((int)&Msg);
  61019. Msg._vptr_Packet = (int (**)(...))off_80CE9C8;
  61020. Msg.guid = -1;
  61021. v15 = Packets::LCRetCreateChar::GetAccount(pPacket);
  61022. Packets::LCRetCreateChar::SetAccount(&Msg, v15);
  61023. Packets::LCRetCreateChar::SetResult((int)&Msg, 1);
  61024. (*((void (__fastcall **)(int, int, Player *, Packets::LCRetCreateChar *))pPlayer->_vptr_Player + 3))(
  61025. v16,
  61026. v17,
  61027. pPlayer,
  61028. &Msg);
  61029. v18 = Packets::LCRetCreateChar::GetAccount(pPacket);
  61030. CacheLog(0, "LCRetCreateCharHandler....Fails!, code = ASKCREATECHAR_SERVER_BUSY,acc=%s", v18);
  61031. Msg._vptr_Packet = (int (**)(...))off_80CE9C8;
  61032. Packet::~Packet(&Msg);
  61033. }
  61034. else
  61035. {
  61036. (*((void (__cdecl **)(Player *, Packets::LCRetCreateChar *))pPlayer->_vptr_Player + 3))(pPlayer, pPacket);
  61037. v14 = LoginPlayer::GetAccount((LoginPlayer *const )pPlayer);
  61038. CacheLog(0, "LCRetCreateCharHandler::Execute() ....OK,acc=%s", v14);
  61039. }
  61040. return 2;
  61041. }
  61042. if ( !DBThreadManager::IsPoolTID(g_pDBThreadManager, v2) )
  61043. __assertex__(
  61044. "./Packets/LCRetCreateCharHandler.cpp",
  61045. 0xD8u,
  61046. "static UINT Packets::LCRetCreateCharHandler::Execute(Packets::LCRetCreateChar*, Player*)",
  61047. "FALSE",
  61048. aLcretcreatecha_7);
  61049. if ( !pPlayer )
  61050. __assert__(
  61051. "./Packets/LCRetCreateCharHandler.cpp",
  61052. 0x4Fu,
  61053. "static UINT Packets::LCRetCreateCharHandler::Execute(Packets::LCRetCreateChar*, Player*)",
  61054. "pLoginPlayer");
  61055. PlayerID = (PlayerID_t)pPlayer[1].m_pSocketInputStream;
  61056. v3 = Packets::LCRetCreateChar::GetAccount(pPacket);
  61057. v4 = LoginPlayer::GetAccount((LoginPlayer *const )pPlayer);
  61058. if ( strcmp(v4, v3) )
  61059. {
  61060. LABEL_5:
  61061. v5 = LoginPlayer::GetAccount((LoginPlayer *const )pPlayer);
  61062. CacheLog(0, "LCRetCreateCharHandler::Execute() ....OK,acc=%s,packacc not same", v5);
  61063. return 2;
  61064. }
  61065. if ( Packets::LCRetCreateChar::GetResult((int)pPacket) != 7 )
  61066. return 2;
  61067. LoginPlayer::SetDBOperating((int)pPlayer, 1);
  61068. PlayerCharGUID = pPacket->guid;
  61069. if ( PlayerCharGUID == -1 )
  61070. __assert__(
  61071. "./Packets/LCRetCreateCharHandler.cpp",
  61072. 0x60u,
  61073. "static UINT Packets::LCRetCreateCharHandler::Execute(Packets::LCRetCreateChar*, Player*)",
  61074. "PlayerCharGUID!=INVALID_ID");
  61075. pInterface = DBThreadManager::GetInterface(g_pDBThreadManager, v2);
  61076. if ( pInterface )
  61077. {
  61078. CharNumber = LoginPlayer::GetCharNumber((int)pPlayer);
  61079. Result = 6;
  61080. pMsg = (Packets::LCRetCreateChar *)PacketFactoryManager::CreatePacket(g_pPacketFactoryManager, 0x1E1u);
  61081. if ( !pMsg )
  61082. __assertex__(
  61083. "./Packets/LCRetCreateCharHandler.cpp",
  61084. 0x6Fu,
  61085. "static UINT Packets::LCRetCreateCharHandler::Execute(Packets::LCRetCreateChar*, Player*)",
  61086. "FALSE",
  61087. &byte_80DE6FA);
  61088. v10 = Packets::LCRetCreateChar::GetAccount(pPacket);
  61089. Packets::LCRetCreateChar::SetAccount(pMsg, v10);
  61090. pRetListMsg = (Packets::LCRetCharList *)PacketFactoryManager::CreatePacket(g_pPacketFactoryManager, 0x26Eu);
  61091. if ( !pRetListMsg )
  61092. __assertex__(
  61093. "./Packets/LCRetCreateCharHandler.cpp",
  61094. 0x76u,
  61095. "static UINT Packets::LCRetCreateCharHandler::Execute(Packets::LCRetCreateChar*, Player*)",
  61096. "FALSE",
  61097. &byte_80DDF85);
  61098. FULLUSERDATA::FULLUSERDATA(&UserData);
  61099. DBCharFullData::DBCharFullData(&CharFullDataObject, pInterface);
  61100. DBCharFullData::SetCharGuid((int)&CharFullDataObject, PlayerCharGUID);
  61101. if ( DBCharFullData::Load(&CharFullDataObject) )
  61102. {
  61103. DBCharFullData::ParseResult(&CharFullDataObject, &UserData);
  61104. CharConfig::InitCharAttr((FULLUSERDATA *)&UserData);
  61105. if ( DBCharFullData::Save(&CharFullDataObject, &UserData) )
  61106. {
  61107. if ( DBCharFullData::ParseResult(&CharFullDataObject, &UserData) )
  61108. {
  61109. DBCharList::DBCharList(&CharListObject, pInterface);
  61110. v31 = Packets::LCRetCreateChar::GetAccount(pPacket);
  61111. DBCharList::SetAccount(&CharListObject, v31);
  61112. if ( DBCharList::Load(&CharListObject) )
  61113. {
  61114. DBCharList::ParseResult(&CharListObject, pRetListMsg->CharList);
  61115. v32 = Packets::LCRetCreateChar::GetAccount(pPacket);
  61116. Packets::LCRetCharList::SetAccount(pRetListMsg, v32);
  61117. Packets::LCRetCharList::SetResult((int)pRetListMsg, 0);
  61118. pRetListMsg->uCharNumber = DBCharList::GetCharNumber((int)&CharListObject);
  61119. if ( DBCharList::GetCharNumber((int)&CharListObject) > CharNumber )
  61120. {
  61121. Result = 0;
  61122. pPlayer[30].m_pSocketOutputStream = 0;
  61123. }
  61124. v33 = DBCharList::GetCharNumber((int)&CharListObject);
  61125. LoginPlayer::SetCharNumber((int)pPlayer, v33);
  61126. for ( i = 0; LoginPlayer::GetCharNumber((int)pPlayer) > i; ++i )
  61127. {
  61128. if ( (unsigned __int8)i > 4u )
  61129. __assert__(
  61130. "../../Common/Packets/LCRetCharList.h",
  61131. 0x3Cu,
  61132. "DB_CHAR_BASE_INFO* Packets::LCRetCharList::GetCharBaseInfo(UCHAR)",
  61133. "CharIndex<DB_CHAR_NUMBER");
  61134. LoginPlayer::SetCharGUID((UINT)pPlayer, pRetListMsg->CharList[(unsigned __int8)i].m_GUID, i);
  61135. }
  61136. }
  61137. else
  61138. {
  61139. v34 = Packets::LCRetCreateChar::GetAccount(pPacket);
  61140. Packets::LCRetCharList::SetAccount(pRetListMsg, v34);
  61141. Packets::LCRetCharList::SetResult((int)pRetListMsg, 1);
  61142. pRetListMsg->uCharNumber = DBCharList::GetCharNumber((int)&CharListObject);
  61143. }
  61144. Packets::LCRetCreateChar::SetResult((int)pMsg, Result);
  61145. ProcessManager::SendPacket(g_pProcessManager, &pMsg->0, PlayerID, 0);
  61146. ProcessManager::SendPacket(g_pProcessManager, &pRetListMsg->0, PlayerID, 0);
  61147. LoginPlayer::SetDBOperating((int)pPlayer, 0);
  61148. v35 = Packets::LCRetCreateChar::GetAccount(pPacket);
  61149. CacheLog(
  61150. 0,
  61151. "LCRetCreateCharHandler::Execute()....OK! \t\t\t\t\t\t\t\t\tAccount = %s CharGuid = %X CharName = %s",
  61152. v35,
  61153. PlayerCharGUID,
  61154. UserData.m_Human.m_Name);
  61155. v36 = (FULLUSERDATA_0 *)((char *)&UserData + 44262);
  61156. while ( &UserData.m_PetList != (_PET_DB_LIST_LOAD *)v36 )
  61157. {
  61158. v36 = (FULLUSERDATA_0 *)((char *)v36 - 399);
  61159. if ( v36 != (FULLUSERDATA_0 *)-211 )
  61160. {
  61161. for ( j = (int)&v36->m_Human.m_Titles.m_szShangDian[31];
  61162. &v36->m_Human.m_Titles.m_szJieBai[3] != (CHAR *)j;
  61163. j -= 12 )
  61164. {
  61165. ;
  61166. }
  61167. }
  61168. }
  61169. if ( &UserData != (FULLUSERDATA_0 *)-33963 )
  61170. {
  61171. for ( k = (FULLUSERDATA_0 *)((char *)&UserData + 35483);
  61172. UserData.m_Impact.m_aImpacts != (_OWN_IMPACT *)k;
  61173. k = (FULLUSERDATA_0 *)((char *)k - 76) )
  61174. {
  61175. ;
  61176. }
  61177. }
  61178. if ( &UserData != (FULLUSERDATA_0 *)-33513 )
  61179. {
  61180. for ( l = (FULLUSERDATA_0 *)((char *)&UserData + 33897);
  61181. &UserData.m_Cooldown != (_COOLDOWN_DB_LOAD_FOR_HUMAN *)l;
  61182. l = (FULLUSERDATA_0 *)((char *)l - 12) )
  61183. {
  61184. ;
  61185. }
  61186. }
  61187. if ( &UserData != (FULLUSERDATA_0 *)-1409 )
  61188. {
  61189. for ( m = (FULLUSERDATA_0 *)((char *)&UserData + 1457);
  61190. &UserData.m_Human.m_PvpInfo.m_oPersonalEnemyList != (PersonalEnemyList_T *)m;
  61191. m = (FULLUSERDATA_0 *)((char *)m - 8) )
  61192. {
  61193. ;
  61194. }
  61195. }
  61196. if ( &UserData.m_Human.m_PvpInfo != (_PVPInfo *)-347 )
  61197. {
  61198. for ( n = (FULLUSERDATA_0 *)((char *)&UserData + 1409);
  61199. &UserData.m_Human.m_PvpInfo.m_oPersonalDuelList != (PersonalDuelList_T *)n;
  61200. n = (FULLUSERDATA_0 *)((char *)n - 8) )
  61201. {
  61202. ;
  61203. }
  61204. }
  61205. if ( &UserData != (FULLUSERDATA_0 *)-1289 )
  61206. {
  61207. for ( ii = (FULLUSERDATA_0 *)((char *)&UserData + 1369);
  61208. &UserData.m_Human.m_PvpInfo.m_oFightBackList != (FightBackList_T *)ii;
  61209. ii = (FULLUSERDATA_0 *)((char *)ii - 8) )
  61210. {
  61211. ;
  61212. }
  61213. }
  61214. }
  61215. else
  61216. {
  61217. Packets::LCRetCreateChar::SetResult((int)pMsg, 6);
  61218. ProcessManager::SendPacket(g_pProcessManager, &pMsg->0, PlayerID, 0);
  61219. Packets::LCRetCreateChar::GetAccount(pPacket);
  61220. CacheLog(0, "LCRetCreateCharHandler::Execute() ...ParseResult....Fails!,acc=%s,guid=%X");
  61221. PacketFactoryManager::RemovePacket(g_pPacketFactoryManager, &pRetListMsg->0);
  61222. LoginPlayer::SetDBOperating((int)pPlayer, 0);
  61223. v27 = (FULLUSERDATA_0 *)((char *)&UserData + 44262);
  61224. while ( &UserData.m_PetList != (_PET_DB_LIST_LOAD *)v27 )
  61225. {
  61226. v27 = (FULLUSERDATA_0 *)((char *)v27 - 399);
  61227. if ( v27 != (FULLUSERDATA_0 *)-211 )
  61228. {
  61229. for ( jj = (int)&v27->m_Human.m_Titles.m_szShangDian[31];
  61230. &v27->m_Human.m_Titles.m_szJieBai[3] != (CHAR *)jj;
  61231. jj -= 12 )
  61232. {
  61233. ;
  61234. }
  61235. }
  61236. }
  61237. if ( &UserData != (FULLUSERDATA_0 *)-33963 )
  61238. {
  61239. for ( kk = (FULLUSERDATA_0 *)((char *)&UserData + 35483);
  61240. UserData.m_Impact.m_aImpacts != (_OWN_IMPACT *)kk;
  61241. kk = (FULLUSERDATA_0 *)((char *)kk - 76) )
  61242. {
  61243. ;
  61244. }
  61245. }
  61246. if ( &UserData != (FULLUSERDATA_0 *)-33513 )
  61247. {
  61248. for ( ll = (FULLUSERDATA_0 *)((char *)&UserData + 33897);
  61249. &UserData.m_Cooldown != (_COOLDOWN_DB_LOAD_FOR_HUMAN *)ll;
  61250. ll = (FULLUSERDATA_0 *)((char *)ll - 12) )
  61251. {
  61252. ;
  61253. }
  61254. }
  61255. if ( &UserData != (FULLUSERDATA_0 *)-1409 )
  61256. {
  61257. for ( mm = (FULLUSERDATA_0 *)((char *)&UserData + 1457);
  61258. &UserData.m_Human.m_PvpInfo.m_oPersonalEnemyList != (PersonalEnemyList_T *)mm;
  61259. mm = (FULLUSERDATA_0 *)((char *)mm - 8) )
  61260. {
  61261. ;
  61262. }
  61263. }
  61264. if ( &UserData.m_Human.m_PvpInfo != (_PVPInfo *)-347 )
  61265. {
  61266. for ( nn = (FULLUSERDATA_0 *)((char *)&UserData + 1409);
  61267. &UserData.m_Human.m_PvpInfo.m_oPersonalDuelList != (PersonalDuelList_T *)nn;
  61268. nn = (FULLUSERDATA_0 *)((char *)nn - 8) )
  61269. {
  61270. ;
  61271. }
  61272. }
  61273. if ( &UserData != (FULLUSERDATA_0 *)-1289 )
  61274. {
  61275. for ( i1 = (FULLUSERDATA_0 *)((char *)&UserData + 1369);
  61276. &UserData.m_Human.m_PvpInfo.m_oFightBackList != (FightBackList_T *)i1;
  61277. i1 = (FULLUSERDATA_0 *)((char *)i1 - 8) )
  61278. {
  61279. ;
  61280. }
  61281. }
  61282. }
  61283. }
  61284. else
  61285. {
  61286. Packets::LCRetCreateChar::SetResult((int)pMsg, 6);
  61287. ProcessManager::SendPacket(g_pProcessManager, &pMsg->0, PlayerID, 0);
  61288. Packets::LCRetCreateChar::GetAccount(pPacket);
  61289. CacheLog(0, "LCRetCreateCharHandler::Execute() ...Save()....Fails!,acc = %s,guid = %X");
  61290. PacketFactoryManager::RemovePacket(g_pPacketFactoryManager, &pRetListMsg->0);
  61291. LoginPlayer::SetDBOperating((int)pPlayer, 0);
  61292. v20 = (FULLUSERDATA_0 *)((char *)&UserData + 44262);
  61293. while ( &UserData.m_PetList != (_PET_DB_LIST_LOAD *)v20 )
  61294. {
  61295. v20 = (FULLUSERDATA_0 *)((char *)v20 - 399);
  61296. if ( v20 != (FULLUSERDATA_0 *)-211 )
  61297. {
  61298. for ( i2 = (int)&v20->m_Human.m_Titles.m_szShangDian[31];
  61299. &v20->m_Human.m_Titles.m_szJieBai[3] != (CHAR *)i2;
  61300. i2 -= 12 )
  61301. {
  61302. ;
  61303. }
  61304. }
  61305. }
  61306. if ( &UserData != (FULLUSERDATA_0 *)-33963 )
  61307. {
  61308. for ( i3 = (FULLUSERDATA_0 *)((char *)&UserData + 35483);
  61309. UserData.m_Impact.m_aImpacts != (_OWN_IMPACT *)i3;
  61310. i3 = (FULLUSERDATA_0 *)((char *)i3 - 76) )
  61311. {
  61312. ;
  61313. }
  61314. }
  61315. if ( &UserData != (FULLUSERDATA_0 *)-33513 )
  61316. {
  61317. for ( i4 = (FULLUSERDATA_0 *)((char *)&UserData + 33897);
  61318. &UserData.m_Cooldown != (_COOLDOWN_DB_LOAD_FOR_HUMAN *)i4;
  61319. i4 = (FULLUSERDATA_0 *)((char *)i4 - 12) )
  61320. {
  61321. ;
  61322. }
  61323. }
  61324. if ( &UserData != (FULLUSERDATA_0 *)-1409 )
  61325. {
  61326. for ( i5 = (FULLUSERDATA_0 *)((char *)&UserData + 1457);
  61327. &UserData.m_Human.m_PvpInfo.m_oPersonalEnemyList != (PersonalEnemyList_T *)i5;
  61328. i5 = (FULLUSERDATA_0 *)((char *)i5 - 8) )
  61329. {
  61330. ;
  61331. }
  61332. }
  61333. if ( &UserData.m_Human.m_PvpInfo != (_PVPInfo *)-347 )
  61334. {
  61335. for ( i6 = (FULLUSERDATA_0 *)((char *)&UserData + 1409);
  61336. &UserData.m_Human.m_PvpInfo.m_oPersonalDuelList != (PersonalDuelList_T *)i6;
  61337. i6 = (FULLUSERDATA_0 *)((char *)i6 - 8) )
  61338. {
  61339. ;
  61340. }
  61341. }
  61342. if ( &UserData != (FULLUSERDATA_0 *)-1289 )
  61343. {
  61344. for ( i7 = (FULLUSERDATA_0 *)((char *)&UserData + 1369);
  61345. &UserData.m_Human.m_PvpInfo.m_oFightBackList != (FightBackList_T *)i7;
  61346. i7 = (FULLUSERDATA_0 *)((char *)i7 - 8) )
  61347. {
  61348. ;
  61349. }
  61350. }
  61351. }
  61352. }
  61353. else
  61354. {
  61355. Packets::LCRetCreateChar::SetResult((int)pMsg, 6);
  61356. ProcessManager::SendPacket(g_pProcessManager, &pMsg->0, PlayerID, 0);
  61357. PacketFactoryManager::RemovePacket(g_pPacketFactoryManager, &pRetListMsg->0);
  61358. LoginPlayer::SetDBOperating((int)pPlayer, 0);
  61359. v11 = Packets::LCRetCreateChar::GetAccount(pPacket);
  61360. CacheLog(0, "LCRetCreateCharHandler::Execute() ...Load()....Fails!,acc = %s,guid=%X", v11, PlayerCharGUID);
  61361. v12 = (FULLUSERDATA_0 *)((char *)&UserData + 44262);
  61362. while ( &UserData.m_PetList != (_PET_DB_LIST_LOAD *)v12 )
  61363. {
  61364. v12 = (FULLUSERDATA_0 *)((char *)v12 - 399);
  61365. if ( v12 != (FULLUSERDATA_0 *)-211 )
  61366. {
  61367. for ( i8 = (int)&v12->m_Human.m_Titles.m_szShangDian[31];
  61368. &v12->m_Human.m_Titles.m_szJieBai[3] != (CHAR *)i8;
  61369. i8 -= 12 )
  61370. {
  61371. ;
  61372. }
  61373. }
  61374. }
  61375. if ( &UserData != (FULLUSERDATA_0 *)-33963 )
  61376. {
  61377. for ( i9 = (FULLUSERDATA_0 *)((char *)&UserData + 35483);
  61378. UserData.m_Impact.m_aImpacts != (_OWN_IMPACT *)i9;
  61379. i9 = (FULLUSERDATA_0 *)((char *)i9 - 76) )
  61380. {
  61381. ;
  61382. }
  61383. }
  61384. if ( &UserData != (FULLUSERDATA_0 *)-33513 )
  61385. {
  61386. for ( i10 = (FULLUSERDATA_0 *)((char *)&UserData + 33897);
  61387. &UserData.m_Cooldown != (_COOLDOWN_DB_LOAD_FOR_HUMAN *)i10;
  61388. i10 = (FULLUSERDATA_0 *)((char *)i10 - 12) )
  61389. {
  61390. ;
  61391. }
  61392. }
  61393. if ( &UserData != (FULLUSERDATA_0 *)-1409 )
  61394. {
  61395. for ( i11 = (FULLUSERDATA_0 *)((char *)&UserData + 1457);
  61396. &UserData.m_Human.m_PvpInfo.m_oPersonalEnemyList != (PersonalEnemyList_T *)i11;
  61397. i11 = (FULLUSERDATA_0 *)((char *)i11 - 8) )
  61398. {
  61399. ;
  61400. }
  61401. }
  61402. if ( &UserData.m_Human.m_PvpInfo != (_PVPInfo *)-347 )
  61403. {
  61404. for ( i12 = (FULLUSERDATA_0 *)((char *)&UserData + 1409);
  61405. &UserData.m_Human.m_PvpInfo.m_oPersonalDuelList != (PersonalDuelList_T *)i12;
  61406. i12 = (FULLUSERDATA_0 *)((char *)i12 - 8) )
  61407. {
  61408. ;
  61409. }
  61410. }
  61411. if ( &UserData != (FULLUSERDATA_0 *)-1289 )
  61412. {
  61413. for ( i13 = (FULLUSERDATA_0 *)((char *)&UserData + 1369);
  61414. &UserData.m_Human.m_PvpInfo.m_oFightBackList != (FightBackList_T *)i13;
  61415. i13 = (FULLUSERDATA_0 *)((char *)i13 - 8) )
  61416. {
  61417. ;
  61418. }
  61419. }
  61420. }
  61421. return 2;
  61422. }
  61423. LoginPlayer::SetDBOperating((int)pPlayer, 0);
  61424. return 2;
  61425. }
  61426. // 80CE9C8: using guessed type _DWORD (__cdecl *off_80CE9C8[2])(Packets::LCRetCreateChar *this);
  61427.  
  61428. //----- (08098FD8) --------------------------------------------------------
  61429. void __cdecl _tcf_0_165(void *a1)
  61430. {
  61431. std::ios_base::Init::~Init(&std::__ioinit);
  61432. }
  61433.  
  61434. //----- (08098FE8) --------------------------------------------------------
  61435. void `global constructor keyed to'Packets::LCRetCreateCharHandler::Execute()
  61436. {
  61437. std::ios_base::Init::Init(&std::__ioinit);
  61438. __cxa_atexit(_tcf_0_165, 0, &_dso_handle);
  61439. }
  61440. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  61441.  
  61442. //----- (08099014) --------------------------------------------------------
  61443. UINT __cdecl Packets::LCRetCreateCodeHandler::Execute(Packets::LCRetCreateCode *pPacket, Player *pPlayer)
  61444. {
  61445. return 2;
  61446. }
  61447.  
  61448. //----- (08099020) --------------------------------------------------------
  61449. void __cdecl _tcf_0_166(void *a1)
  61450. {
  61451. std::ios_base::Init::~Init(&std::__ioinit);
  61452. }
  61453.  
  61454. //----- (08099030) --------------------------------------------------------
  61455. void `global constructor keyed to'Packets::LCRetCreateCodeHandler::Execute()
  61456. {
  61457. std::ios_base::Init::Init(&std::__ioinit);
  61458. __cxa_atexit(_tcf_0_166, 0, &_dso_handle);
  61459. }
  61460. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  61461.  
  61462. //----- (0809905C) --------------------------------------------------------
  61463. UINT __cdecl Packets::LCRetDeleteCharHandler::Execute(Packets::LCRetDeleteChar *pPacket, Player *pPlayer)
  61464. {
  61465. const char *v2; // edi
  61466. const char *v3; // eax
  61467. const CHAR *v4; // ST2C_4
  61468. const CHAR *v5; // eax
  61469. const CHAR *v7; // eax
  61470.  
  61471. if ( ThreadValueManager::GetCurrentThreadID() != g_pProcessPlayerManager->m_ThreadID )
  61472. __assertex__(
  61473. "./Packets/LCRetDeleteCharHandler.cpp",
  61474. 0x21u,
  61475. "static UINT Packets::LCRetDeleteCharHandler::Execute(Packets::LCRetDeleteChar*, Player*)",
  61476. "FALSE",
  61477. aLcretdeletecha_1);
  61478. if ( !pPlayer )
  61479. __assert__(
  61480. "./Packets/LCRetDeleteCharHandler.cpp",
  61481. 0x10u,
  61482. "static UINT Packets::LCRetDeleteCharHandler::Execute(Packets::LCRetDeleteChar*, Player*)",
  61483. "FALSE");
  61484. v2 = Packets::LCRetDeleteChar::GetAccount(pPacket);
  61485. v3 = LoginPlayer::GetAccount((LoginPlayer *const )pPlayer);
  61486. if ( !strcmp(v3, v2) )
  61487. {
  61488. (*((void (__cdecl **)(Player *, Packets::LCRetDeleteChar *))pPlayer->_vptr_Player + 3))(pPlayer, pPacket);
  61489. v7 = LoginPlayer::GetAccount((LoginPlayer *const )pPlayer);
  61490. CacheLog(0, "LCRetDeleteCharHandler::Execute() ....OK acc=%s", v7);
  61491. }
  61492. else
  61493. {
  61494. v4 = Packets::LCRetDeleteChar::GetAccount(pPacket);
  61495. v5 = LoginPlayer::GetAccount((LoginPlayer *const )pPlayer);
  61496. CacheLog(0, "LCRetDeleteCharHandler::Execute() ....OK acc=%s,packacc=%s", v5, v4);
  61497. }
  61498. return 2;
  61499. }
  61500.  
  61501. //----- (0809919C) --------------------------------------------------------
  61502. void __cdecl _tcf_0_167(void *a1)
  61503. {
  61504. std::ios_base::Init::~Init(&std::__ioinit);
  61505. }
  61506.  
  61507. //----- (080991AC) --------------------------------------------------------
  61508. void `global constructor keyed to'Packets::LCRetDeleteCharHandler::Execute()
  61509. {
  61510. std::ios_base::Init::Init(&std::__ioinit);
  61511. __cxa_atexit(_tcf_0_167, 0, &_dso_handle);
  61512. }
  61513. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  61514.  
  61515. //----- (080991D8) --------------------------------------------------------
  61516. UINT __cdecl Packets::LCRetLoginCodeHandler::Execute(Packets::LCRetLoginCode *pPacket, Player *pPlayer)
  61517. {
  61518. return 2;
  61519. }
  61520.  
  61521. //----- (080991E4) --------------------------------------------------------
  61522. void __cdecl _tcf_0_168(void *a1)
  61523. {
  61524. std::ios_base::Init::~Init(&std::__ioinit);
  61525. }
  61526.  
  61527. //----- (080991F4) --------------------------------------------------------
  61528. void `global constructor keyed to'Packets::LCRetLoginCodeHandler::Execute()
  61529. {
  61530. std::ios_base::Init::Init(&std::__ioinit);
  61531. __cxa_atexit(_tcf_0_168, 0, &_dso_handle);
  61532. }
  61533. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  61534.  
  61535. //----- (08099220) --------------------------------------------------------
  61536. UINT __cdecl Packets::LCRetLoginHandler::Execute(Packets::LCRetLogin *pPacket, Player *pPlayer)
  61537. {
  61538. return 2;
  61539. }
  61540.  
  61541. //----- (0809922C) --------------------------------------------------------
  61542. void __cdecl _tcf_0_169(void *a1)
  61543. {
  61544. std::ios_base::Init::~Init(&std::__ioinit);
  61545. }
  61546.  
  61547. //----- (0809923C) --------------------------------------------------------
  61548. void `global constructor keyed to'Packets::LCRetLoginHandler::Execute()
  61549. {
  61550. std::ios_base::Init::Init(&std::__ioinit);
  61551. __cxa_atexit(_tcf_0_169, 0, &_dso_handle);
  61552. }
  61553. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  61554.  
  61555. //----- (08099268) --------------------------------------------------------
  61556. UINT __cdecl Packets::LCStatusHandler::Execute(Packets::LCStatus *pPacket, Player *pPlayer)
  61557. {
  61558. return 2;
  61559. }
  61560.  
  61561. //----- (08099274) --------------------------------------------------------
  61562. void __cdecl _tcf_0_170(void *a1)
  61563. {
  61564. std::ios_base::Init::~Init(&std::__ioinit);
  61565. }
  61566.  
  61567. //----- (08099284) --------------------------------------------------------
  61568. void `global constructor keyed to'Packets::LCStatusHandler::Execute()
  61569. {
  61570. std::ios_base::Init::Init(&std::__ioinit);
  61571. __cxa_atexit(_tcf_0_170, 0, &_dso_handle);
  61572. }
  61573. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  61574.  
  61575. //----- (080992B0) --------------------------------------------------------
  61576. UINT __cdecl Packets::LWAskCharLoginHandler::Execute(Packets::LWAskCharLogin *pPacket, Player *pPlayer)
  61577. {
  61578. if ( *(_DWORD *)(*(_DWORD *)&g_pServerManager + 7480) != ThreadValueManager::GetCurrentThreadID() )
  61579. __assertex__(
  61580. "./Packets/LWAskCharLoginHandler.cpp",
  61581. 0x1Au,
  61582. "static UINT Packets::LWAskCharLoginHandler::Execute(Packets::LWAskCharLogin*, Player*)",
  61583. "FALSE",
  61584. aLwaskcharlogin_0);
  61585. if ( !pPacket )
  61586. __assert__(
  61587. "./Packets/LWAskCharLoginHandler.cpp",
  61588. 0x10u,
  61589. "static UINT Packets::LWAskCharLoginHandler::Execute(Packets::LWAskCharLogin*, Player*)",
  61590. "pPacket");
  61591. if ( !pPlayer )
  61592. __assert__(
  61593. "./Packets/LWAskCharLoginHandler.cpp",
  61594. 0x14u,
  61595. "static UINT Packets::LWAskCharLoginHandler::Execute(Packets::LWAskCharLogin*, Player*)",
  61596. "pServerPlayer");
  61597. (*((void (__cdecl **)(Player *, Packets::LWAskCharLogin *))pPlayer->_vptr_Player + 3))(pPlayer, pPacket);
  61598. CacheLog(0, "LWAskCharLoginHandler::Execute() ....OK");
  61599. return 2;
  61600. }
  61601.  
  61602. //----- (080993AC) --------------------------------------------------------
  61603. void __cdecl _tcf_0_171(void *a1)
  61604. {
  61605. std::ios_base::Init::~Init(&std::__ioinit);
  61606. }
  61607.  
  61608. //----- (080993BC) --------------------------------------------------------
  61609. void `global constructor keyed to'Packets::LWAskCharLoginHandler::Execute()
  61610. {
  61611. std::ios_base::Init::Init(&std::__ioinit);
  61612. __cxa_atexit(_tcf_0_171, 0, &_dso_handle);
  61613. }
  61614. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  61615.  
  61616. //----- (080993E8) --------------------------------------------------------
  61617. #error "80994A4: positive sp value has been found (funcsize=50)"
  61618.  
  61619. //----- (080994F8) --------------------------------------------------------
  61620. void __cdecl _tcf_0_172(void *a1)
  61621. {
  61622. std::ios_base::Init::~Init(&std::__ioinit);
  61623. }
  61624.  
  61625. //----- (08099508) --------------------------------------------------------
  61626. void `global constructor keyed to'Packets::LWNotifyUserHandler::Execute()
  61627. {
  61628. std::ios_base::Init::Init(&std::__ioinit);
  61629. __cxa_atexit(_tcf_0_172, 0, &_dso_handle);
  61630. }
  61631. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  61632.  
  61633. //----- (08099534) --------------------------------------------------------
  61634. UINT __cdecl Packets::LWRetBillingEndHandler::Execute(Packets::LWRetBillingEnd *pPacket, Player *pPlayer)
  61635. {
  61636. return 2;
  61637. }
  61638.  
  61639. //----- (08099540) --------------------------------------------------------
  61640. void __cdecl _tcf_0_173(void *a1)
  61641. {
  61642. std::ios_base::Init::~Init(&std::__ioinit);
  61643. }
  61644.  
  61645. //----- (08099550) --------------------------------------------------------
  61646. void `global constructor keyed to'Packets::LWRetBillingEndHandler::Execute()
  61647. {
  61648. std::ios_base::Init::Init(&std::__ioinit);
  61649. __cxa_atexit(_tcf_0_173, 0, &_dso_handle);
  61650. }
  61651. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  61652.  
  61653. //----- (0809957C) --------------------------------------------------------
  61654. UINT __cdecl Packets::LWRetBillingKeepHandler::Execute(Packets::LWRetBillingKeep *pPacket, Player *pPlayer)
  61655. {
  61656. return 2;
  61657. }
  61658.  
  61659. //----- (08099588) --------------------------------------------------------
  61660. void __cdecl _tcf_0_174(void *a1)
  61661. {
  61662. std::ios_base::Init::~Init(&std::__ioinit);
  61663. }
  61664.  
  61665. //----- (08099598) --------------------------------------------------------
  61666. void `global constructor keyed to'Packets::LWRetBillingKeepHandler::Execute()
  61667. {
  61668. std::ios_base::Init::Init(&std::__ioinit);
  61669. __cxa_atexit(_tcf_0_174, 0, &_dso_handle);
  61670. }
  61671. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  61672.  
  61673. //----- (080995C4) --------------------------------------------------------
  61674. UINT __cdecl Packets::LWRetBillingStartHandler::Execute(Packets::LWRetBillingStart *pPacket, Player *pPlayer)
  61675. {
  61676. return 2;
  61677. }
  61678.  
  61679. //----- (080995D0) --------------------------------------------------------
  61680. void __cdecl _tcf_0_175(void *a1)
  61681. {
  61682. std::ios_base::Init::~Init(&std::__ioinit);
  61683. }
  61684.  
  61685. //----- (080995E0) --------------------------------------------------------
  61686. void `global constructor keyed to'Packets::LWRetBillingStartHandler::Execute()
  61687. {
  61688. std::ios_base::Init::Init(&std::__ioinit);
  61689. __cxa_atexit(_tcf_0_175, 0, &_dso_handle);
  61690. }
  61691. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  61692.  
  61693. //----- (0809960C) --------------------------------------------------------
  61694. UINT __cdecl Packets::SSConnectHandler::Execute(Packets::SSConnect *pPacket, Player *pPlayer)
  61695. {
  61696. CacheLog(0, "SSConnectHandler::Execute(...) ServerID:%d ...OK ", pPacket->m_ServerID);
  61697. return 2;
  61698. }
  61699.  
  61700. //----- (0809967C) --------------------------------------------------------
  61701. void __cdecl _tcf_0_176(void *a1)
  61702. {
  61703. std::ios_base::Init::~Init(&std::__ioinit);
  61704. }
  61705.  
  61706. //----- (0809968C) --------------------------------------------------------
  61707. void `global constructor keyed to'Packets::SSConnectHandler::Execute()
  61708. {
  61709. std::ios_base::Init::Init(&std::__ioinit);
  61710. __cxa_atexit(_tcf_0_176, 0, &_dso_handle);
  61711. }
  61712. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  61713.  
  61714. //----- (080996B8) --------------------------------------------------------
  61715. UINT __cdecl Packets::SSScenePlayerCountHandler::Execute(Packets::SSScenePlayerCount *pPacket, Player *pPlayer)
  61716. {
  61717. int v2; // edx
  61718. int v3; // ecx
  61719. signed int v5; // edi
  61720. unsigned int i; // ebx
  61721. INT v7; // edi
  61722. INT v8; // ebx
  61723. const CHAR *v9; // [esp-Ch] [ebp-24h]
  61724. INT v10; // [esp-8h] [ebp-20h]
  61725. int v11; // [esp-4h] [ebp-1Ch]
  61726. SceneID_t sceneid; // [esp+Ah] [ebp-Eh]
  61727.  
  61728. v2 = ThreadValueManager::GetCurrentThreadID();
  61729. if ( *(_DWORD *)(*(_DWORD *)&g_pServerManager + 7480) != v2 )
  61730. {
  61731. if ( g_pProcessPlayerManager->m_ThreadID != v2 )
  61732. __assertex__(
  61733. "./Packets/SSScenePlayerCountHandler.cpp",
  61734. 0x40u,
  61735. "static UINT Packets::SSScenePlayerCountHandler::Execute(Packets::SSScenePlayerCount*, Player*)",
  61736. "FALSE",
  61737. aSssceneplayerc_2);
  61738. if ( !pPacket )
  61739. __assert__(
  61740. "./Packets/SSScenePlayerCountHandler.cpp",
  61741. 0x34u,
  61742. "static UINT Packets::SSScenePlayerCountHandler::Execute(Packets::SSScenePlayerCount*, Player*)",
  61743. "pPacket");
  61744. if ( !pPacket->m_nChangeCount )
  61745. return 2;
  61746. g_WorldPlayerCounter1.m_WorldPlayerCount = pPacket->m_nTotalPlayerCount;
  61747. v11 = v2;
  61748. v10 = g_WorldPlayerCounter1.m_WorldPlayerCount;
  61749. v9 = "SSScenePlayerCountHandler::Execute()....OK,WorldPlayerCount1 = %d";
  61750. goto LABEL_9;
  61751. }
  61752. if ( !pPacket )
  61753. __assert__(
  61754. "./Packets/SSScenePlayerCountHandler.cpp",
  61755. 0x10u,
  61756. "static UINT Packets::SSScenePlayerCountHandler::Execute(Packets::SSScenePlayerCount*, Player*)",
  61757. "pPacket");
  61758. v5 = pPacket->m_nChangeCount;
  61759. if ( !pPacket->m_nChangeCount )
  61760. {
  61761. v7 = pPacket->m_PlayerPoolSize;
  61762. v8 = pPacket->m_ServerID;
  61763. ServerManager::SetServerPlayerPoolSize(*(int *)&g_pServerManager, pPacket->m_ServerID, pPacket->m_PlayerPoolSize);
  61764. v11 = v7;
  61765. v10 = v8;
  61766. v9 = "SSScenePlayerCountHandler ServerID=%d PlayerPoolSize=%d OK ";
  61767. LABEL_9:
  61768. CacheLog(0, v9, v10, v11);
  61769. return 2;
  61770. }
  61771. g_WorldPlayerCounter.m_WorldPlayerCount = pPacket->m_nTotalPlayerCount;
  61772. g_pWorldPlayerQueue->m_SendCount = 0;
  61773. for ( i = 0; (signed int)i < v5; ++i )
  61774. {
  61775. if ( i > 0x3FF )
  61776. __assert__(
  61777. "../../Common/Packets/SSScenePlayerCount.h",
  61778. 0x31u,
  61779. "SceneID_t Packets::SSScenePlayerCount::GetChangeSceneID(INT)",
  61780. "FALSE");
  61781. sceneid = pPacket->m_aChangeSceneID[i];
  61782. if ( i > 0x3FF )
  61783. __assert__(
  61784. "../../Common/Packets/SSScenePlayerCount.h",
  61785. 0x39u,
  61786. "SHORT Packets::SSScenePlayerCount::GetChangeScenePlayerCount(INT)",
  61787. "FALSE");
  61788. v3 = pPacket->m_aChangeScenePlayerCount[i];
  61789. if ( (unsigned __int16)sceneid <= 0x3FFu )
  61790. *(_DWORD *)(*(_DWORD *)&g_pServerManager + 4 * sceneid + 3260) = v3;
  61791. }
  61792. CacheLog(
  61793. 0,
  61794. "SSScenePlayerCountHandler::Execute()....OK,WorldPlayerCount = %d",
  61795. g_WorldPlayerCounter.m_WorldPlayerCount,
  61796. v3);
  61797. ProcessManager::SendPacket(g_pProcessManager, &pPacket->0, -1, 0);
  61798. return 3;
  61799. }
  61800.  
  61801. //----- (080998E0) --------------------------------------------------------
  61802. void __cdecl _tcf_0_177(void *a1)
  61803. {
  61804. std::ios_base::Init::~Init(&std::__ioinit);
  61805. }
  61806.  
  61807. //----- (080998F0) --------------------------------------------------------
  61808. void `global constructor keyed to'Packets::SSScenePlayerCountHandler::Execute()
  61809. {
  61810. std::ios_base::Init::Init(&std::__ioinit);
  61811. __cxa_atexit(_tcf_0_177, 0, &_dso_handle);
  61812. }
  61813. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  61814.  
  61815. //----- (0809991C) --------------------------------------------------------
  61816. UINT __cdecl Packets::WLBillingEndHandler::Execute(Packets::WLBillingEnd *pPacket, Player *pPlayer)
  61817. {
  61818. Player *v2; // eax
  61819. Player *v3; // edi
  61820. signed int v5; // eax
  61821. Packets::LBBillingEnd Msg; // [esp+10h] [ebp-68h]
  61822.  
  61823. if ( *(_DWORD *)(*(_DWORD *)&g_pServerManager + 7480) != ThreadValueManager::GetCurrentThreadID() )
  61824. __assert__(
  61825. "./Packets/WLBillingEndHandler.cpp",
  61826. 0x28u,
  61827. "static UINT Packets::WLBillingEndHandler::Execute(Packets::WLBillingEnd*, Player*)",
  61828. "FALSE");
  61829. if ( !pPacket )
  61830. __assert__(
  61831. "./Packets/WLBillingEndHandler.cpp",
  61832. 0x10u,
  61833. "static UINT Packets::WLBillingEndHandler::Execute(Packets::WLBillingEnd*, Player*)",
  61834. "pPacket");
  61835. v2 = ServerManager::GetServerPlayer(*(ServerManager *const *)&g_pServerManager, 1);
  61836. v3 = v2;
  61837. if ( !v2 || !(*((int (__cdecl **)(Player *))v2->_vptr_Player + 25))(v2) )
  61838. __assert__(
  61839. "./Packets/WLBillingEndHandler.cpp",
  61840. 0x21u,
  61841. "static UINT Packets::WLBillingEndHandler::Execute(Packets::WLBillingEnd*, Player*)",
  61842. "FALSE");
  61843. BillPacket::BillPacket(&Msg);
  61844. Msg._vptr_BillPacket = (int (**)(...))off_80CDAE8;
  61845. strncpy(Msg.mAccount, pPacket->mAccount, 0x32u);
  61846. Msg.mAccLength = 0;
  61847. v5 = 0;
  61848. do
  61849. {
  61850. if ( Msg.mAccount[v5] )
  61851. ++Msg.mAccLength;
  61852. ++v5;
  61853. }
  61854. while ( v5 <= 49 );
  61855. Msg.mCharLevel = pPacket->mCharLevel;
  61856. Msg.mStartTime = pPacket->mStartTime;
  61857. Msg.mEndTime = pPacket->mEndTime;
  61858. (*((void (__cdecl **)(Player *, Packets::LBBillingEnd *))v3->_vptr_Player + 29))(v3, &Msg);
  61859. CacheLog(
  61860. 0,
  61861. "WLBillingEndHandler::Execute ...OK acc=%s,charlvl=%d,st=%d",
  61862. pPacket->mAccount,
  61863. pPacket->mCharLevel,
  61864. pPacket->mStartTime);
  61865. Msg._vptr_BillPacket = (int (**)(...))off_80CDAE8;
  61866. BillPacket::~BillPacket(&Msg);
  61867. return 2;
  61868. }
  61869. // 80CDAE8: using guessed type _DWORD (__cdecl *off_80CDAE8[2])(Packets::LBBillingEnd *this);
  61870.  
  61871. //----- (08099AC8) --------------------------------------------------------
  61872. void __cdecl _tcf_0_178(void *a1)
  61873. {
  61874. std::ios_base::Init::~Init(&std::__ioinit);
  61875. }
  61876.  
  61877. //----- (08099AD8) --------------------------------------------------------
  61878. void `global constructor keyed to'Packets::WLBillingEndHandler::Execute()
  61879. {
  61880. std::ios_base::Init::Init(&std::__ioinit);
  61881. __cxa_atexit(_tcf_0_178, 0, &_dso_handle);
  61882. }
  61883. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  61884.  
  61885. //----- (08099B04) --------------------------------------------------------
  61886. UINT __cdecl Packets::WLBillingKeepHandler::Execute(Packets::WLBillingKeep *pPacket, Player *pPlayer)
  61887. {
  61888. Player *v2; // eax
  61889. Player *v3; // edi
  61890. signed int v5; // eax
  61891. UINT v6; // ST14_4
  61892. Packets::LBBillingKeep Msg; // [esp+10h] [ebp-68h]
  61893.  
  61894. if ( *(_DWORD *)(*(_DWORD *)&g_pServerManager + 7480) != ThreadValueManager::GetCurrentThreadID() )
  61895. __assert__(
  61896. "./Packets/WLBillingKeepHandler.cpp",
  61897. 0x2Au,
  61898. "static UINT Packets::WLBillingKeepHandler::Execute(Packets::WLBillingKeep*, Player*)",
  61899. "FALSE");
  61900. if ( !pPacket )
  61901. __assert__(
  61902. "./Packets/WLBillingKeepHandler.cpp",
  61903. 0x11u,
  61904. "static UINT Packets::WLBillingKeepHandler::Execute(Packets::WLBillingKeep*, Player*)",
  61905. "pPacket");
  61906. v2 = ServerManager::GetServerPlayer(*(ServerManager *const *)&g_pServerManager, 1);
  61907. v3 = v2;
  61908. if ( !v2 || !(*((int (__cdecl **)(Player *))v2->_vptr_Player + 25))(v2) )
  61909. __assert__(
  61910. "./Packets/WLBillingKeepHandler.cpp",
  61911. 0x23u,
  61912. "static UINT Packets::WLBillingKeepHandler::Execute(Packets::WLBillingKeep*, Player*)",
  61913. "FALSE");
  61914. BillPacket::BillPacket(&Msg);
  61915. Msg._vptr_BillPacket = (int (**)(...))off_80CDC68;
  61916. strncpy(Msg.mAccount, pPacket->mAccount, 0x32u);
  61917. Msg.mAccLength = 0;
  61918. v5 = 0;
  61919. do
  61920. {
  61921. if ( Msg.mAccount[v5] )
  61922. ++Msg.mAccLength;
  61923. ++v5;
  61924. }
  61925. while ( v5 <= 49 );
  61926. Msg.mCharLevel = pPacket->mCharLevel;
  61927. Msg.mStartTime = pPacket->mStartTime;
  61928. Msg.mEndTime = pPacket->mEndTime;
  61929. (*((void (__cdecl **)(Player *, Packets::LBBillingKeep *))v3->_vptr_Player + 29))(v3, &Msg);
  61930. v6 = pPacket->mEndTime;
  61931. CacheLog(
  61932. 0,
  61933. "WLBillingKeepHandler::Execute ...OK acc=%s,charlvl=%d,st=%d,et=%d",
  61934. pPacket->mAccount,
  61935. pPacket->mCharLevel,
  61936. pPacket->mStartTime);
  61937. Msg._vptr_BillPacket = (int (**)(...))off_80CDC68;
  61938. BillPacket::~BillPacket(&Msg);
  61939. return 2;
  61940. }
  61941. // 80CDC68: using guessed type _DWORD (__cdecl *off_80CDC68[2])(Packets::LBBillingKeep *this);
  61942.  
  61943. //----- (08099CB4) --------------------------------------------------------
  61944. void __cdecl _tcf_0_179(void *a1)
  61945. {
  61946. std::ios_base::Init::~Init(&std::__ioinit);
  61947. }
  61948.  
  61949. //----- (08099CC4) --------------------------------------------------------
  61950. void `global constructor keyed to'Packets::WLBillingKeepHandler::Execute()
  61951. {
  61952. std::ios_base::Init::Init(&std::__ioinit);
  61953. __cxa_atexit(_tcf_0_179, 0, &_dso_handle);
  61954. }
  61955. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  61956.  
  61957. //----- (08099CF0) --------------------------------------------------------
  61958. UINT __cdecl Packets::WLBillingKickHandler::Execute(Packets::WLBillingKick *pPacket, Player *pPlayer)
  61959. {
  61960. Player *v2; // eax
  61961. Player *v3; // esi
  61962. signed int v5; // eax
  61963. Packets::LBKickAll Msg; // [esp+10h] [ebp-A8h]
  61964.  
  61965. if ( *(_DWORD *)(*(_DWORD *)&g_pServerManager + 7480) != ThreadValueManager::GetCurrentThreadID() )
  61966. __assert__(
  61967. "./Packets/WLBillingKickHandler.cpp",
  61968. 0x27u,
  61969. "static UINT Packets::WLBillingKickHandler::Execute(Packets::WLBillingKick*, Player*)",
  61970. "FALSE");
  61971. if ( !pPacket )
  61972. __assert__(
  61973. "./Packets/WLBillingKickHandler.cpp",
  61974. 0x10u,
  61975. "static UINT Packets::WLBillingKickHandler::Execute(Packets::WLBillingKick*, Player*)",
  61976. "pPacket");
  61977. v2 = ServerManager::GetServerPlayer(*(ServerManager *const *)&g_pServerManager, 1);
  61978. v3 = v2;
  61979. if ( !v2 || !(*((int (__cdecl **)(Player *))v2->_vptr_Player + 25))(v2) )
  61980. __assert__(
  61981. "./Packets/WLBillingKickHandler.cpp",
  61982. 0x20u,
  61983. "static UINT Packets::WLBillingKickHandler::Execute(Packets::WLBillingKick*, Player*)",
  61984. "FALSE");
  61985. BillPacket::BillPacket(&Msg);
  61986. Msg.mReasonLength = 0;
  61987. Msg._vptr_BillPacket = (int (**)(...))off_80CE268;
  61988. memset(Msg.mReason, 0, sizeof(Msg.mReason));
  61989. Msg.mExtInfo1Length = 0;
  61990. memset(Msg.mExtInfo1, 0, sizeof(Msg.mExtInfo1));
  61991. Msg.mExtInfo2Length = 0;
  61992. memset(Msg.mExtInfo2, 0, sizeof(Msg.mExtInfo2));
  61993. Msg.mExtInfo3Length = 0;
  61994. memset(Msg.mExtInfo3, 0, sizeof(Msg.mExtInfo3));
  61995. Msg.mZoneID = g_Config.m_WorldInfo.m_ZoneID;
  61996. Msg.mWorldID = pPacket->mWorldID;
  61997. strncpy(Msg.mReason, "Login StartUpKick", 0x20u);
  61998. Msg.mReasonLength = 0;
  61999. v5 = 0;
  62000. do
  62001. {
  62002. if ( Msg.mReason[v5] )
  62003. ++Msg.mReasonLength;
  62004. ++v5;
  62005. }
  62006. while ( v5 <= 31 );
  62007. (*((void (__cdecl **)(Player *, Packets::LBKickAll *))v3->_vptr_Player + 29))(v3, &Msg);
  62008. CacheLog(0, "WLBillingKickHandler::Execute ...OK WorldID=%d", pPacket->mWorldID);
  62009. Msg._vptr_BillPacket = (int (**)(...))off_80CE268;
  62010. BillPacket::~BillPacket(&Msg);
  62011. return 2;
  62012. }
  62013. // 80CE268: using guessed type _DWORD (__cdecl *off_80CE268[2])(Packets::LBKickAll *this);
  62014.  
  62015. //----- (08099F00) --------------------------------------------------------
  62016. void __cdecl _tcf_0_180(void *a1)
  62017. {
  62018. std::ios_base::Init::~Init(&std::__ioinit);
  62019. }
  62020.  
  62021. //----- (08099F10) --------------------------------------------------------
  62022. void `global constructor keyed to'Packets::WLBillingKickHandler::Execute()
  62023. {
  62024. std::ios_base::Init::Init(&std::__ioinit);
  62025. __cxa_atexit(_tcf_0_180, 0, &_dso_handle);
  62026. }
  62027. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  62028.  
  62029. //----- (08099F3C) --------------------------------------------------------
  62030. UINT __cdecl Packets::WLBillingStartHandler::Execute(Packets::WLBillingStart *pPacket, Player *pPlayer)
  62031. {
  62032. Player *v2; // eax
  62033. Player *v3; // edi
  62034. signed int v5; // eax
  62035. signed int v6; // eax
  62036. UINT v7; // ST18_4
  62037. int v8; // ST14_4
  62038. Packets::LBBillingStart Msg; // [esp+10h] [ebp-98h]
  62039.  
  62040. if ( *(_DWORD *)(*(_DWORD *)&g_pServerManager + 7480) != ThreadValueManager::GetCurrentThreadID() )
  62041. __assert__(
  62042. "./Packets/WLBillingStartHandler.cpp",
  62043. 0x2Fu,
  62044. "static UINT Packets::WLBillingStartHandler::Execute(Packets::WLBillingStart*, Player*)",
  62045. "FALSE");
  62046. if ( !pPacket )
  62047. __assert__(
  62048. "./Packets/WLBillingStartHandler.cpp",
  62049. 0x12u,
  62050. "static UINT Packets::WLBillingStartHandler::Execute(Packets::WLBillingStart*, Player*)",
  62051. "pPacket");
  62052. v2 = ServerManager::GetServerPlayer(*(ServerManager *const *)&g_pServerManager, 1);
  62053. v3 = v2;
  62054. if ( !v2 || !(*((int (__cdecl **)(Player *))v2->_vptr_Player + 25))(v2) )
  62055. __assert__(
  62056. "./Packets/WLBillingStartHandler.cpp",
  62057. 0x28u,
  62058. "static UINT Packets::WLBillingStartHandler::Execute(Packets::WLBillingStart*, Player*)",
  62059. "FALSE");
  62060. BillPacket::BillPacket(&Msg);
  62061. Msg._vptr_BillPacket = (int (**)(...))off_80CDDE8;
  62062. strncpy(Msg.mAccount, pPacket->mAccount, 0x32u);
  62063. Msg.mAccLength = 0;
  62064. v5 = 0;
  62065. do
  62066. {
  62067. if ( Msg.mAccount[v5] )
  62068. ++Msg.mAccLength;
  62069. ++v5;
  62070. }
  62071. while ( v5 <= 49 );
  62072. strncpy(Msg.mCharName, pPacket->mCharName, 0x32u);
  62073. Msg.mCharLength = 0;
  62074. v6 = 0;
  62075. do
  62076. {
  62077. if ( Msg.mCharName[v6] )
  62078. ++Msg.mCharLength;
  62079. ++v6;
  62080. }
  62081. while ( v6 <= 49 );
  62082. Msg.mCharGUID = pPacket->mCharGUID;
  62083. Msg.mCharLevel = pPacket->mCharLevel;
  62084. Msg.mStartTime = pPacket->mStartTime;
  62085. Msg.m_Index = pPacket->mPlayerID;
  62086. (*((void (__cdecl **)(Player *, Packets::LBBillingStart *))v3->_vptr_Player + 29))(v3, &Msg);
  62087. v7 = pPacket->mStartTime;
  62088. v8 = pPacket->mCharLevel;
  62089. CacheLog(
  62090. 0,
  62091. "WLBillingStartHandler::Execute ...OK acc=%s,charname=%s,charguid=%X,charlvl=%d,st=%d",
  62092. pPacket->mAccount,
  62093. pPacket->mCharName,
  62094. pPacket->mCharGUID);
  62095. Msg._vptr_BillPacket = (int (**)(...))off_80CDDE8;
  62096. BillPacket::~BillPacket(&Msg);
  62097. return 2;
  62098. }
  62099. // 80CDDE8: using guessed type _DWORD (__cdecl *off_80CDDE8[2])(Packets::LBBillingStart *this);
  62100.  
  62101. //----- (0809A14C) --------------------------------------------------------
  62102. void __cdecl _tcf_0_181(void *a1)
  62103. {
  62104. std::ios_base::Init::~Init(&std::__ioinit);
  62105. }
  62106.  
  62107. //----- (0809A15C) --------------------------------------------------------
  62108. void `global constructor keyed to'Packets::WLBillingStartHandler::Execute()
  62109. {
  62110. std::ios_base::Init::Init(&std::__ioinit);
  62111. __cxa_atexit(_tcf_0_181, 0, &_dso_handle);
  62112. }
  62113. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  62114.  
  62115. //----- (0809A188) --------------------------------------------------------
  62116. UINT __cdecl Packets::WLNotifyUserHandler::Execute(Packets::WLNotifyUser *pPacket, Player *pPlayer)
  62117. {
  62118. int v2; // edx
  62119. LoginPlayerManager *v3; // eax
  62120. UINT v4; // ecx
  62121. LoginPlayer *v6; // edi
  62122. Packets::WORLD_NOTIFY_STATUS v7; // eax
  62123. const CHAR *v8; // eax
  62124. const CHAR *v9; // eax
  62125. Packets::LWNotifyUser *v10; // ST3C_4
  62126. const CHAR *v11; // eax
  62127. Packet *v12; // edi
  62128. int (**v13)(...); // eax
  62129. Packets::LCStatus Msg; // [esp+10h] [ebp-38h]
  62130.  
  62131. v2 = ThreadValueManager::GetCurrentThreadID();
  62132. if ( *(_DWORD *)(*(_DWORD *)&g_pServerManager + 7480) == v2 )
  62133. {
  62134. ProcessManager::SendPacket(g_pProcessManager, &pPacket->0, -1, 0);
  62135. return 3;
  62136. }
  62137. if ( g_pProcessPlayerManager->m_ThreadID == v2 )
  62138. {
  62139. if ( !pPacket )
  62140. __assert__(
  62141. "./Packets/WLNotifyUserHandler.cpp",
  62142. 0x1Cu,
  62143. "static UINT Packets::WLNotifyUserHandler::Execute(Packets::WLNotifyUser*, Player*)",
  62144. "pPacket");
  62145. if ( pPlayer )
  62146. __assert__(
  62147. "./Packets/WLNotifyUserHandler.cpp",
  62148. 0x1Du,
  62149. "static UINT Packets::WLNotifyUserHandler::Execute(Packets::WLNotifyUser*, Player*)",
  62150. aNull);
  62151. v6 = (LoginPlayer *)ProcessPlayerManager::FindAccName(g_pProcessPlayerManager, pPacket->m_AccName);
  62152. if ( v6 )
  62153. {
  62154. v7 = pPacket->m_NotifyStatus;
  62155. if ( v7 == WNOTIFY_NONE )
  62156. __assert__(
  62157. "./Packets/WLNotifyUserHandler.cpp",
  62158. 0x30u,
  62159. "static UINT Packets::WLNotifyUserHandler::Execute(Packets::WLNotifyUser*, Player*)",
  62160. "pPacket->GetNotifyStatus() != WNOTIFY_NONE");
  62161. if ( v6->m_Status == 311 && v7 == 1 )
  62162. {
  62163. if ( LoginPlayer::GetUserKey((int)v6) == pPacket->m_uKey )
  62164. {
  62165. v6->m_Status = 308;
  62166. (*((void (__cdecl **)(LoginPlayer *))v6->_vptr_Player + 27))(v6);
  62167. Packet::Packet((int)&Msg);
  62168. Msg._vptr_Packet = (int (**)(...))off_80CF048;
  62169. v13 = v6->_vptr_Player;
  62170. Msg.ClientStatus = 1;
  62171. ((void (__cdecl *)(LoginPlayer *, Packets::LCStatus *))v13[3])(v6, &Msg);
  62172. CacheLog(
  62173. 0,
  62174. "WLNotifyUserHandler::Execute()....acc=%s status=%d ask status Success",
  62175. pPacket->m_AccName,
  62176. pPacket->m_NotifyStatus);
  62177. Msg._vptr_Packet = (int (**)(...))off_80CF048;
  62178. Packet::~Packet(&Msg);
  62179. }
  62180. else
  62181. {
  62182. CacheLog(
  62183. 0,
  62184. "WLNotifyUserHandler::Execute()....acc=%s status=%d ukey diff ignore ask result",
  62185. pPacket->m_AccName,
  62186. pPacket->m_NotifyStatus);
  62187. }
  62188. return 2;
  62189. }
  62190. if ( v7 != 2 )
  62191. {
  62192. if ( v7 != 3 )
  62193. return 2;
  62194. ProcessPlayerManager::RemovePlayer(g_pProcessPlayerManager, &v6->0);
  62195. CacheLog(
  62196. 0,
  62197. "WLNotifyUserHandler::Execute()....acc=%s status=%d kick not found in world",
  62198. pPacket->m_AccName,
  62199. pPacket->m_NotifyStatus);
  62200. return 2;
  62201. }
  62202. v10 = (Packets::LWNotifyUser *)PacketFactoryManager::CreatePacket(g_pPacketFactoryManager, 0x1B8u);
  62203. v11 = LoginPlayer::GetAccount(v6);
  62204. Packets::LWNotifyUser::SetAccount(v10, v11);
  62205. v10->m_NotifyStatus = 3;
  62206. v10->m_uKey = LoginPlayer::GetUserKey((int)v6);
  62207. ServerManager::SendPacket(*(ServerManager *const *)&g_pServerManager, &v10->0, 0, 0);
  62208. ProcessPlayerManager::RemovePlayer(g_pProcessPlayerManager, &v6->0);
  62209. CacheLog(
  62210. 0,
  62211. "WLNotifyUserHandler::Execute()....acc=%s status=%d kick order receive from world",
  62212. pPacket->m_AccName,
  62213. pPacket->m_NotifyStatus);
  62214. }
  62215. else
  62216. {
  62217. v12 = PacketFactoryManager::CreatePacket(g_pPacketFactoryManager, 0x1B8u);
  62218. Packets::LWNotifyUser::SetAccount((Packets::LWNotifyUser *const )v12, pPacket->m_AccName);
  62219. *(_DWORD *)&v12[5].m_Index = 4;
  62220. ServerManager::SendPacket(*(ServerManager *const *)&g_pServerManager, v12, 0, 0);
  62221. CacheLog(
  62222. 0,
  62223. "WLNotifyUserHandler::Execute()....acc=%s status=%d Can't find User",
  62224. pPacket->m_AccName,
  62225. pPacket->m_NotifyStatus);
  62226. }
  62227. LoginPlayerManager::SendPacket(g_pLoginPlayerManager, &pPacket->0, -1, 0);
  62228. return 3;
  62229. }
  62230. v3 = g_pLoginPlayerManager;
  62231. v4 = 2;
  62232. if ( g_pLoginPlayerManager->m_ThreadID == v2 )
  62233. {
  62234. if ( !pPacket )
  62235. __assert__(
  62236. "./Packets/WLNotifyUserHandler.cpp",
  62237. 0x75u,
  62238. "static UINT Packets::WLNotifyUserHandler::Execute(Packets::WLNotifyUser*, Player*)",
  62239. "pPacket");
  62240. if ( pPlayer )
  62241. __assert__(
  62242. "./Packets/WLNotifyUserHandler.cpp",
  62243. 0x76u,
  62244. "static UINT Packets::WLNotifyUserHandler::Execute(Packets::WLNotifyUser*, Player*)",
  62245. aNull);
  62246. if ( pPacket->m_NotifyStatus == 2 )
  62247. {
  62248. v8 = Packets::WLNotifyUser::GetHost(pPacket);
  62249. ReLoginManager::StopAccReLogin(g_pReLoginManager, pPacket->m_AccName, v8);
  62250. v9 = Packets::WLNotifyUser::GetHost(pPacket);
  62251. CacheLog(
  62252. 0,
  62253. "WLNotifyUserHandler::Execute()....g_pReLoginManager->StopAccReLogin acc=%s ip=%s",
  62254. pPacket->m_AccName,
  62255. v9);
  62256. }
  62257. CacheLog(0, "WLNotifyUserHandler::Execute()....OK acc=%s in g_pLoginPlayerManager", pPacket->m_AccName, v3);
  62258. return 2;
  62259. }
  62260. return v4;
  62261. }
  62262. // 80CF048: using guessed type _DWORD (__cdecl *off_80CF048[2])(Packets::LCStatus *this);
  62263.  
  62264. //----- (0809A540) --------------------------------------------------------
  62265. void __cdecl _tcf_0_182(void *a1)
  62266. {
  62267. std::ios_base::Init::~Init(&std::__ioinit);
  62268. }
  62269.  
  62270. //----- (0809A550) --------------------------------------------------------
  62271. void `global constructor keyed to'Packets::WLNotifyUserHandler::Execute()
  62272. {
  62273. std::ios_base::Init::Init(&std::__ioinit);
  62274. __cxa_atexit(_tcf_0_182, 0, &_dso_handle);
  62275. }
  62276. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  62277.  
  62278. //----- (0809A57C) --------------------------------------------------------
  62279. UINT __cdecl Packets::WLRetCharLoginHandler::Execute(Packets::WLRetCharLogin *pPacket, Player *pPlayer)
  62280. {
  62281. int v2; // edi
  62282. ODBCInterface *v3; // eax
  62283. ODBCInterface *v4; // ebx
  62284. bool v5; // zf
  62285. UINT result; // eax
  62286. Packet *v7; // eax
  62287. const CHAR *v8; // ST28_4
  62288. int v9; // ST2C_4
  62289. PlayerID_t v10; // ax
  62290. LoginPlayer *v11; // esi
  62291. const char *v12; // edi
  62292. const char *v13; // eax
  62293. ASKCHARLOGIN_RESULT v14; // eax
  62294. int (**v15)(...); // eax
  62295. ASKCHARLOGIN_RESULT v16; // ST20_4
  62296. GUID_t v17; // ST1C_4
  62297. const CHAR *v18; // eax
  62298. const CHAR *v19; // ST2C_4
  62299. const CHAR *v20; // ST28_4
  62300. int (**v21)(...); // eax
  62301. GUID_t v22; // ST2C_4
  62302. const CHAR *v23; // eax
  62303. int v24; // edi
  62304. UINT v25; // eax
  62305. ASKCHARLOGIN_RESULT v26; // eax
  62306. ID_t v27; // dx
  62307. int v28; // edi
  62308. CHAR *v29; // eax
  62309. UINT v30; // eax
  62310. UINT v31; // ST28_4
  62311. GUID_t v32; // ST20_4
  62312. int v33; // ST1C_4
  62313. const CHAR *v34; // eax
  62314. int (**v35)(...); // eax
  62315. GUID_t v36; // ST2C_4
  62316. const CHAR *v37; // eax
  62317. int (**v38)(...); // eax
  62318. GUID_t v39; // ST2C_4
  62319. const CHAR *v40; // eax
  62320. CHAR *v41; // eax
  62321. GUID_t v42; // ST2C_4
  62322. const CHAR *v43; // ST28_4
  62323. GUID_t v44; // ST2C_4
  62324. const CHAR *v45; // ST28_4
  62325. GUID_t v46; // ST2C_4
  62326. const CHAR *v47; // ST28_4
  62327. GUID_t v48; // ST2C_4
  62328. const CHAR *v49; // ST28_4
  62329. GUID_t v50; // ST2C_4
  62330. const CHAR *v51; // ST28_4
  62331. ODBCInterface *v52; // ST24_4
  62332. FILE *v53; // ebx
  62333. int v54; // edi
  62334. INT v55; // ST24_4
  62335. UINT v56; // ST20_4
  62336. const CHAR *v57; // eax
  62337. INT v58; // ST24_4
  62338. UINT v59; // ST20_4
  62339. const CHAR *v60; // eax
  62340. UINT v61; // edi
  62341. UINT v62; // ST20_4
  62342. const CHAR *v63; // eax
  62343. Packet *v64; // ebx
  62344. const CHAR *v65; // eax
  62345. INT v66; // eax
  62346. UINT v67; // ST28_4
  62347. INT v68; // ST24_4
  62348. INT v69; // ST20_4
  62349. const CHAR *v70; // eax
  62350. unsigned __int16 v71; // ax
  62351. const CHAR *v72; // eax
  62352. INT v73; // ST2C_4
  62353. const CHAR *v74; // eax
  62354. SceneID_t v75; // ax
  62355. SceneID_t v76; // ax
  62356. INT v77; // eax
  62357. INT v78; // ST20_4
  62358. const CHAR *v79; // eax
  62359. FILE *v80; // eax
  62360. const CHAR *v81; // eax
  62361. UINT v82; // ST20_4
  62362. const CHAR *v83; // eax
  62363. CHAR *v84; // ST2C_4
  62364. const CHAR *v85; // eax
  62365. Packet *v86; // eax
  62366. FULLUSERDATA *pResult; // [esp+0h] [ebp-1D8h]
  62367. Packets::LWAskCharLogin *pMsg; // [esp+8h] [ebp-1D0h]
  62368. int PlayerCharGUID; // [esp+Ch] [ebp-1CCh]
  62369. PlayerID_t PlayerID; // [esp+12h] [ebp-1C6h]
  62370. unsigned int uTime; // [esp+18h] [ebp-1C0h]
  62371. CHAR filename[260]; // [esp+20h] [ebp-1B8h]
  62372. DBCharExtradbVersion dbVersionObject; // [esp+130h] [ebp-A8h]
  62373. DBCharFullData CharFullDataObject; // [esp+150h] [ebp-88h]
  62374. Packets::LCRetCharLogin Msg; // [esp+180h] [ebp-58h]
  62375.  
  62376. v2 = ThreadValueManager::GetCurrentThreadID();
  62377. if ( !pPacket )
  62378. __assert__(
  62379. "./Packets/WLRetCharLoginHandler.cpp",
  62380. 0x1Eu,
  62381. "static UINT Packets::WLRetCharLoginHandler::Execute(Packets::WLRetCharLogin*, Player*)",
  62382. "pPacket");
  62383. if ( *(_DWORD *)(*(_DWORD *)&g_pServerManager + 7480) == v2 )
  62384. {
  62385. ProcessManager::SendPacket(g_pProcessManager, &pPacket->0, pPacket->PlayerID, 0);
  62386. return 3;
  62387. }
  62388. if ( g_pProcessPlayerManager->m_ThreadID == v2 )
  62389. {
  62390. v10 = pPacket->PlayerID;
  62391. if ( v10 == -1 || v10 > 3071 || v10 < 0 || (v11 = &g_pPlayerPool->m_pPlayer[v10]) == 0 )
  62392. __assert__(
  62393. "./Packets/WLRetCharLoginHandler.cpp",
  62394. 0x2Du,
  62395. "static UINT Packets::WLRetCharLoginHandler::Execute(Packets::WLRetCharLogin*, Player*)",
  62396. "pLoginPlayer");
  62397. v12 = Packets::WLRetCharLogin::GetAccount(pPacket);
  62398. v13 = LoginPlayer::GetAccount(v11);
  62399. if ( strcmp(v13, v12) )
  62400. {
  62401. v19 = Packets::WLRetCharLogin::GetAccount(pPacket);
  62402. v20 = Packets::WLRetCharLogin::GetAccount(pPacket);
  62403. CacheLog(0, "WLRetCharLoginHandler::Execute()....acc error,acc=%s,packacc=%s", v20, v19);
  62404. return 2;
  62405. }
  62406. if ( pPacket->HoldStatus == 1 )
  62407. {
  62408. Packet::Packet((int)&Msg);
  62409. Msg._vptr_Packet = (int (**)(...))off_80CE708;
  62410. memset(Msg.ServerIP, 0, sizeof(Msg.ServerIP));
  62411. v26 = pPacket->Result;
  62412. Msg.ServerPort = 0;
  62413. Msg.ZoneID = 0;
  62414. Msg.Result = v26;
  62415. switch ( v26 )
  62416. {
  62417. case 6:
  62418. (*((void (__cdecl **)(LoginPlayer *, Packets::LCRetCharLogin *))v11->_vptr_Player + 3))(v11, &Msg);
  62419. v46 = pPacket->PlayerGUID;
  62420. v47 = Packets::WLRetCharLogin::GetAccount(pPacket);
  62421. CacheLog(
  62422. 0,
  62423. "WLRetCharLoginHandler::Execute()....User is Online ,Server is CrashDown\t\t\t\t Account = %s,GUID = %d",
  62424. v47,
  62425. v46);
  62426. break;
  62427. case 9:
  62428. (*((void (__cdecl **)(LoginPlayer *, Packets::LCRetCharLogin *))v11->_vptr_Player + 3))(v11, &Msg);
  62429. v44 = pPacket->PlayerGUID;
  62430. v45 = Packets::WLRetCharLogin::GetAccount(pPacket);
  62431. CacheLog(
  62432. 0,
  62433. "WLRetCharLoginHandler::Execute()....User Online ,No Point\t\t\t\t\t\t\t\t\t\t\t Account = %s,GUID = %d",
  62434. v45,
  62435. v44);
  62436. break;
  62437. case 10:
  62438. (*((void (__cdecl **)(LoginPlayer *, Packets::LCRetCharLogin *))v11->_vptr_Player + 3))(v11, &Msg);
  62439. v42 = pPacket->PlayerGUID;
  62440. v43 = Packets::WLRetCharLogin::GetAccount(pPacket);
  62441. CacheLog(
  62442. 0,
  62443. "WLRetCharLoginHandler::Execute()....User Online ,End Time\t\t\t\t\t\t\t\t\t\t\t Account = %s,GUID = %d",
  62444. v43,
  62445. v42);
  62446. break;
  62447. case 8:
  62448. (*((void (__cdecl **)(LoginPlayer *, Packets::LCRetCharLogin *))v11->_vptr_Player + 3))(v11, &Msg);
  62449. v48 = pPacket->PlayerGUID;
  62450. v49 = Packets::WLRetCharLogin::GetAccount(pPacket);
  62451. CacheLog(
  62452. 0,
  62453. "WLRetCharLoginHandler::Execute()....User Online ,Kicking \t\t\t\t\t\t\t\t\t\t\t Account = %s,GUID = %d",
  62454. v49,
  62455. v48);
  62456. break;
  62457. case 11:
  62458. (*((void (__cdecl **)(LoginPlayer *, Packets::LCRetCharLogin *))v11->_vptr_Player + 3))(v11, &Msg);
  62459. v50 = pPacket->PlayerGUID;
  62460. v51 = Packets::WLRetCharLogin::GetAccount(pPacket);
  62461. CacheLog(
  62462. 0,
  62463. "WLRetCharLoginHandler::Execute()....User Online ,Not Login Before \t\t\t\t\t\t\t\t\t\t Account = %s,GUID = %d",
  62464. v51,
  62465. v50);
  62466. break;
  62467. default:
  62468. v27 = pPacket->ServerID;
  62469. if ( (unsigned int)(g_Config.m_LoginInfo.ProxyConnect - 1) > 1 )
  62470. {
  62471. v28 = v27;
  62472. v41 = ProxyTool_GetCorrespondingIP(&v11->0, v27);
  62473. strncpy(Msg.ServerIP, v41, 0x18u);
  62474. Msg.ServerIP[23] = 0;
  62475. v30 = ProxyTool_GetCorrespondingPort(&v11->0, v28);
  62476. }
  62477. else
  62478. {
  62479. v28 = v27;
  62480. v29 = ProxyTool_GetIPByNetProvider(v11, v27);
  62481. strncpy(Msg.ServerIP, v29, 0x18u);
  62482. Msg.ServerIP[23] = 0;
  62483. v30 = ProxyTool_GetPortByNetProvider(v11, v28);
  62484. }
  62485. Msg.ServerPort = v30;
  62486. Msg.Key = LoginPlayer::GetUserKey((int)v11);
  62487. Msg.WorldID = g_Config.m_WorldInfo.m_WorldID;
  62488. Msg.ZoneID = g_Config.m_WorldInfo.m_ZoneID;
  62489. (*((void (__cdecl **)(LoginPlayer *, Packets::LCRetCharLogin *))v11->_vptr_Player + 3))(v11, &Msg);
  62490. v11->m_Status = 309;
  62491. v31 = Msg.ServerPort;
  62492. v32 = pPacket->PlayerGUID;
  62493. v33 = v11->m_ProxyType;
  62494. v34 = Packets::WLRetCharLogin::GetAccount(pPacket);
  62495. CacheLog(
  62496. 0,
  62497. "WLRetCharLoginHandler::Execute()...Online ,Acc=%s,ProxyType=%d,GUID=%X,IP=%s,Port=%d,SID=%d",
  62498. v34,
  62499. v33,
  62500. v32,
  62501. Msg.ServerIP,
  62502. v31,
  62503. v28);
  62504. break;
  62505. }
  62506. }
  62507. else if ( pPacket->Result == 15 )
  62508. {
  62509. Packet::Packet((int)&Msg);
  62510. Msg._vptr_Packet = (int (**)(...))off_80CE708;
  62511. memset(Msg.ServerIP, 0, sizeof(Msg.ServerIP));
  62512. Msg.Result = pPacket->Result;
  62513. v21 = v11->_vptr_Player;
  62514. Msg.ServerPort = 0;
  62515. Msg.ZoneID = 0;
  62516. ((void (__cdecl *)(LoginPlayer *, Packets::LCRetCharLogin *))v21[3])(v11, &Msg);
  62517. v22 = pPacket->PlayerGUID;
  62518. v23 = Packets::WLRetCharLogin::GetAccount(pPacket);
  62519. CacheLog(
  62520. 0,
  62521. "WLRetCharLoginHandler::Execute()....User Online ,Kicking \t\t\t\t\t\t\t\t\t\tAccount = %s,GUID = %d",
  62522. v23,
  62523. v22);
  62524. }
  62525. else
  62526. {
  62527. uTime = TimeManager::CurrentTime((int)g_pTimeManager);
  62528. if ( v11->m_LastDBOpTime + 500 > uTime )
  62529. {
  62530. Packet::Packet((int)&Msg);
  62531. Msg._vptr_Packet = (int (**)(...))off_80CE708;
  62532. memset(Msg.ServerIP, 0, sizeof(Msg.ServerIP));
  62533. v35 = v11->_vptr_Player;
  62534. Msg.ServerPort = 0;
  62535. Msg.ZoneID = 0;
  62536. Msg.Result = 4;
  62537. ((void (__cdecl *)(LoginPlayer *, Packets::LCRetCharLogin *))v35[3])(v11, &Msg);
  62538. v36 = pPacket->PlayerGUID;
  62539. v37 = Packets::WLRetCharLogin::GetAccount(pPacket);
  62540. CacheLog(0, "WLRetCharLoginHandler::Execute()....User Need Load From DB Account = %s,GUID = %X", v37, v36);
  62541. }
  62542. else
  62543. {
  62544. v14 = pPacket->Result;
  62545. if ( v14 != 1 && v14 != 6 )
  62546. {
  62547. if ( DBThreadManager::SendPacket(g_pDBThreadManager, &pPacket->0, v11->m_PID) )
  62548. {
  62549. v11->m_LastDBOpTime = uTime;
  62550. (*((void (__cdecl **)(LoginPlayer *))v11->_vptr_Player + 27))(v11);
  62551. return 3;
  62552. }
  62553. Packet::Packet((int)&Msg);
  62554. Msg._vptr_Packet = (int (**)(...))off_80CE708;
  62555. memset(Msg.ServerIP, 0, sizeof(Msg.ServerIP));
  62556. v38 = v11->_vptr_Player;
  62557. Msg.ServerPort = 0;
  62558. Msg.ZoneID = 0;
  62559. Msg.Result = 2;
  62560. ((void (__cdecl *)(LoginPlayer *, Packets::LCRetCharLogin *))v38[3])(v11, &Msg);
  62561. v11->m_LastDBOpTime = uTime;
  62562. v39 = pPacket->PlayerGUID;
  62563. v40 = Packets::WLRetCharLogin::GetAccount(pPacket);
  62564. CacheLog(0, "WLRetCharLoginHandler::Execute()....Server Busy Account = %s,GUID = %X", v40, v39);
  62565. Msg._vptr_Packet = (int (**)(...))off_80CE708;
  62566. Packet::~Packet(&Msg);
  62567. return 2;
  62568. }
  62569. Packet::Packet((int)&Msg);
  62570. Msg._vptr_Packet = (int (**)(...))off_80CE708;
  62571. memset(Msg.ServerIP, 0, sizeof(Msg.ServerIP));
  62572. Msg.Result = pPacket->Result;
  62573. v15 = v11->_vptr_Player;
  62574. Msg.ServerPort = 0;
  62575. Msg.ZoneID = 0;
  62576. v15[3]();
  62577. v16 = pPacket->Result;
  62578. v17 = pPacket->PlayerGUID;
  62579. v18 = Packets::WLRetCharLogin::GetAccount(pPacket);
  62580. CacheLog(
  62581. 0,
  62582. "WLRetCharLoginHandler::Execute()....User Can't Login Account = %s,GUID = %X ,Result = %d",
  62583. v18,
  62584. v17,
  62585. v16);
  62586. }
  62587. }
  62588. Msg._vptr_Packet = (int (**)(...))off_80CE708;
  62589. Packet::~Packet(&Msg);
  62590. return 2;
  62591. }
  62592. if ( !DBThreadManager::IsPoolTID(g_pDBThreadManager, v2) )
  62593. __assertex__(
  62594. "./Packets/WLRetCharLoginHandler.cpp",
  62595. 0x1FDu,
  62596. "static UINT Packets::WLRetCharLoginHandler::Execute(Packets::WLRetCharLogin*, Player*)",
  62597. "FALSE",
  62598. aWlretcharlogin_15);
  62599. PlayerID = pPacket->PlayerID;
  62600. PlayerCharGUID = pPacket->PlayerGUID;
  62601. if ( !pPlayer )
  62602. __assert__(
  62603. "./Packets/WLRetCharLoginHandler.cpp",
  62604. 0xCEu,
  62605. "static UINT Packets::WLRetCharLoginHandler::Execute(Packets::WLRetCharLogin*, Player*)",
  62606. "pLoginPlayer");
  62607. v3 = DBThreadManager::GetInterface(g_pDBThreadManager, v2);
  62608. v4 = v3;
  62609. v5 = v3 == 0;
  62610. result = 2;
  62611. if ( !v5 )
  62612. {
  62613. if ( LoginPlayer::GetDBOperating((int)pPlayer) == 1 || !v4->mConnected )
  62614. {
  62615. v7 = PacketFactoryManager::CreatePacket(g_pPacketFactoryManager, 0x15Au);
  62616. if ( !v7 )
  62617. __assertex__(
  62618. "./Packets/WLRetCharLoginHandler.cpp",
  62619. 0xDCu,
  62620. "static UINT Packets::WLRetCharLoginHandler::Execute(Packets::WLRetCharLogin*, Player*)",
  62621. "FALSE",
  62622. &byte_80E15CD);
  62623. v7[1]._vptr_Packet = (int (**)(...))2;
  62624. ProcessManager::SendPacket(g_pProcessManager, v7, PlayerID, 0);
  62625. v8 = LoginPlayer::GetAccount((LoginPlayer *const )pPlayer);
  62626. CacheLog(0, aWlretcharlogin_14, v8, v9);
  62627. return 2;
  62628. }
  62629. LoginPlayer::SetDBOperating((int)pPlayer, 1);
  62630. DBCharFullData::DBCharFullData(&CharFullDataObject, v4);
  62631. DBCharFullData::SetCharGuid((int)&CharFullDataObject, PlayerCharGUID);
  62632. v24 = DBCharFullData::Load(&CharFullDataObject);
  62633. v25 = ODBCBase::GetResultCount((int)&CharFullDataObject);
  62634. if ( v24 )
  62635. {
  62636. if ( !v25 )
  62637. __assert__(
  62638. "./Packets/WLRetCharLoginHandler.cpp",
  62639. 0x104u,
  62640. "static UINT Packets::WLRetCharLoginHandler::Execute(Packets::WLRetCharLogin*, Player*)",
  62641. "FALSE");
  62642. pMsg = (Packets::LWAskCharLogin *)PacketFactoryManager::CreatePacket(g_pPacketFactoryManager, 0x6Bu);
  62643. if ( !pMsg )
  62644. __assertex__(
  62645. "./Packets/WLRetCharLoginHandler.cpp",
  62646. 0x112u,
  62647. "static UINT Packets::WLRetCharLoginHandler::Execute(Packets::WLRetCharLogin*, Player*)",
  62648. "FALSE",
  62649. &byte_80E160D);
  62650. pResult = &pMsg->UserData;
  62651. DBCharFullData::ParseResult(&CharFullDataObject, &pMsg->UserData);
  62652. v52 = v4;
  62653. v53 = (FILE *)&dbVersionObject;
  62654. DBCharExtradbVersion::DBCharExtradbVersion(&dbVersionObject, v52);
  62655. DBCharExtradbVersion::SetCharGuid((int)&dbVersionObject, PlayerCharGUID);
  62656. v54 = DBCharExtradbVersion::Load(&dbVersionObject);
  62657. if ( !v54 )
  62658. LABEL_63:
  62659. __assert__(
  62660. "./Packets/WLRetCharLoginHandler.cpp",
  62661. 0x134u,
  62662. "static UINT Packets::WLRetCharLoginHandler::Execute(Packets::WLRetCharLogin*, Player*)",
  62663. "FALSE");
  62664. DBCharExtradbVersion::ParseResult(&dbVersionObject, pResult);
  62665. if ( pMsg == (Packets::LWAskCharLogin *)-100 )
  62666. __assert__(
  62667. "./Packets/WLRetCharLoginHandler.cpp",
  62668. 0x121u,
  62669. "static UINT Packets::WLRetCharLoginHandler::Execute(Packets::WLRetCharLogin*, Player*)",
  62670. "pMsg->GetUserData()");
  62671. if ( pMsg->UserData.m_Human.m_DBVersion != DBCharExtradbVersion::GetdbVersion((int)&dbVersionObject) )
  62672. {
  62673. v55 = DBCharExtradbVersion::GetdbVersion((int)&dbVersionObject);
  62674. v56 = pMsg->UserData.m_Human.m_DBVersion;
  62675. v57 = LoginPlayer::GetAccount((LoginPlayer *const )pPlayer);
  62676. CacheLog(
  62677. 0,
  62678. "ERROR:DBCharExtradbVersion acc=%s,charguid=%X ,odbv=%d,cdbv=%d load fulluser from db ",
  62679. v57,
  62680. PlayerCharGUID,
  62681. v56,
  62682. v55);
  62683. v54 = 0;
  62684. }
  62685. if ( DBCharExtradbVersion::GetdbVersion((int)&dbVersionObject) == -2 )
  62686. {
  62687. v58 = DBCharExtradbVersion::GetdbVersion((int)&dbVersionObject);
  62688. v59 = pMsg->UserData.m_Human.m_DBVersion;
  62689. v60 = LoginPlayer::GetAccount((LoginPlayer *const )pPlayer);
  62690. CacheLog(
  62691. 0,
  62692. "CAUTION:DBCharExtradbVersion acc=%s,charguid=%X ,odbv=%d,cdbv=%d load fulluser from db BUT PASS",
  62693. v60,
  62694. PlayerCharGUID,
  62695. v59,
  62696. v58);
  62697. }
  62698. else if ( !v54 )
  62699. {
  62700. goto LABEL_63;
  62701. }
  62702. v61 = FullDataCrc(pResult, 0);
  62703. if ( DBCharFullData::GetCRC((int)&CharFullDataObject) == v61 )
  62704. {
  62705. v82 = DBCharFullData::GetCRC((int)&CharFullDataObject);
  62706. v83 = LoginPlayer::GetAccount((LoginPlayer *const )pPlayer);
  62707. DiskLog(
  62708. "./Log/Crc32",
  62709. "WLRetCharLoginHandler:acc=%s,charguid=%X ,DbCrc=%d,BinCrc=%d load fulluser from db ",
  62710. v83,
  62711. PlayerCharGUID,
  62712. v82,
  62713. v61);
  62714. }
  62715. else if ( DBCharFullData::GetCRC((int)&CharFullDataObject) )
  62716. {
  62717. v62 = PlayerCharGUID + DBCharFullData::GetCRC((int)&CharFullDataObject);
  62718. v63 = LoginPlayer::GetAccount((LoginPlayer *const )pPlayer);
  62719. DiskLog(
  62720. "./Log/Crc32",
  62721. "ERROR:acc=%s,charguid=%X ,DbCrc=%d,BinCrc=%d load fulluser from db ",
  62722. v63,
  62723. PlayerCharGUID,
  62724. v62,
  62725. v61 + PlayerCharGUID);
  62726. v64 = PacketFactoryManager::CreatePacket(g_pPacketFactoryManager, 0x1B8u);
  62727. if ( v64 )
  62728. {
  62729. v65 = LoginPlayer::GetAccount((LoginPlayer *const )pPlayer);
  62730. Packets::LWNotifyUser::SetAccount((Packets::LWNotifyUser *const )v64, v65);
  62731. *(_DWORD *)&v64[5].m_Index = 5;
  62732. v64[6]._vptr_Packet = (int (**)(...))PlayerCharGUID;
  62733. *(_DWORD *)&v64[6].m_Index = DBCharFullData::GetCRC((int)&CharFullDataObject);
  62734. v64[6].m_fromWhere = v61;
  62735. v64[5].m_fromWhere = pMsg->UserData.m_Human.m_LastLoginTime;
  62736. ServerManager::SendPacket(*(ServerManager *const *)&g_pServerManager, v64, 0, 0);
  62737. }
  62738. v53 = (FILE *)filename;
  62739. memset(filename, 0, 0x104u);
  62740. sprintf(
  62741. filename,
  62742. "./errUsr/%Xl_%u.%.4d-%.2d-%.2d-%.2d-%.2d-%.2d.usr",
  62743. PlayerCharGUID,
  62744. v61,
  62745. g_pTimeManager->m_TM.tm_year + 1900,
  62746. g_pTimeManager->m_TM.tm_mon + 1,
  62747. g_pTimeManager->m_TM.tm_mday,
  62748. g_pTimeManager->m_TM.tm_hour,
  62749. g_pTimeManager->m_TM.tm_min,
  62750. g_pTimeManager->m_TM.tm_sec);
  62751. if ( filename[0] )
  62752. {
  62753. v80 = fopen(filename, "wb");
  62754. v53 = v80;
  62755. if ( v80 )
  62756. {
  62757. fwrite(pResult, 0x6B9u, 1u, v80);
  62758. fwrite(&pMsg->UserData.m_Equip, 0xD12u, 1u, v53);
  62759. fwrite(&pMsg->UserData.m_Bag, 0x44D4u, 1u, v53);
  62760. fwrite(&pMsg->UserData.m_Bank, 0x2949u, 1u, v53);
  62761. fwrite(&pMsg->UserData.m_Skill, 0x101u, 1u, v53);
  62762. fwrite(&pMsg->UserData.m_Cooldown, 0x180u, 1u, v53);
  62763. fwrite(&pMsg->UserData.m_XinFa, 0x41u, 1u, v53);
  62764. fwrite(&pMsg->UserData.m_Impact, 0x5F1u, 1u, v53);
  62765. fwrite(&pMsg->UserData.m_Ability, 0x300u, 1u, v53);
  62766. fwrite(&pMsg->UserData.m_Mission, 0xD35u, 1u, v53);
  62767. fwrite(&pMsg->UserData.m_Setting, 0x280u, 1u, v53);
  62768. fwrite(&pMsg->UserData.m_PetList, 0xF96u, 1u, v53);
  62769. fwrite(&pMsg->UserData.m_Relation, 0x170Bu, 1u, v53);
  62770. fwrite(&pMsg->UserData.m_PrivateInfo, 0x1B0u, 1u, v53);
  62771. fwrite(&pMsg->UserData.m_bIsPasswdUnlock, 4u, 1u, v53);
  62772. fwrite(&pMsg->UserData.m_DRideData, 8u, 1u, v53);
  62773. fclose(v53);
  62774. }
  62775. }
  62776. }
  62777. else
  62778. {
  62779. v81 = LoginPlayer::GetAccount((LoginPlayer *const )pPlayer);
  62780. DiskLog("./Log/Crc32", "INIT:acc=%s,charguid=%X Should init crc by ShareMemory", v81, PlayerCharGUID);
  62781. }
  62782. if ( pMsg->UserData.m_Setting.m_aSetting[69].m_SettingType == 1 )
  62783. v66 = FullDataMagicInt2((FULLUSERDATA_0 *)pResult);
  62784. else
  62785. v66 = FullDataMagicInt1((FULLUSERDATA_0 *)pResult);
  62786. v67 = pMsg->UserData.m_Human.m_LastLogoutTime;
  62787. v68 = v66;
  62788. v69 = pMsg->UserData.m_Setting.m_aSetting[69].m_SettingData;
  62789. v70 = LoginPlayer::GetAccount((LoginPlayer *const )pPlayer);
  62790. CacheLog(
  62791. 0,
  62792. "WLRetCharLoginHandler:acc=%s,charguid=%X ,nMagicIntSave=%d,nMagicIntNow=%d,nLogouttime=%u MagicInt Check OK",
  62793. v70,
  62794. PlayerCharGUID,
  62795. v69,
  62796. v68,
  62797. v67,
  62798. v53);
  62799. if ( !pMsg->UserData.m_Human.m_LastLoginTime )
  62800. {
  62801. v75 = LoginPlayer::GetChooseSceneID((int)pPlayer);
  62802. if ( DBChooseSceneTable::isValidSceneID(&g_DBSceneTable, v75, 0) )
  62803. {
  62804. pMsg->UserData.m_Human.m_StartScene = LoginPlayer::GetChooseSceneID((int)pPlayer);
  62805. v76 = LoginPlayer::GetChooseSceneID((int)pPlayer);
  62806. DBChooseSceneTable::GetPosBySceneID(&g_DBSceneTable, v76, 0, &pMsg->UserData.m_Human.m_Position);
  62807. }
  62808. }
  62809. pMsg->UserData.m_Human.m_LastConnectServerTime = pMsg->UserData.m_Human.m_LastLoginTime;
  62810. if ( g_Config.m_ConfigInfo.m_nLanguage == 1 )
  62811. {
  62812. pMsg->UserData.m_Human.m_ActualAge = pPlayer[30]._vptr_Player < (int (**)(...))1 ? 20 : 1;
  62813. pMsg->UserData.m_Human.m_FatigueInfo.m_uTotalOnlineTime = (UINT)pPlayer[30].m_pSocket;
  62814. }
  62815. pMsg->UserData.m_Human.m_LastLoginTime = TimeManager::CurrentDate(g_pTimeManager);
  62816. pMsg->UserData.m_AccountSafeSign.m_Sign = (INT)pPlayer[33].m_pSocket;
  62817. v71 = LoginPlayer::GetIsPilferedAccount((int)pPlayer);
  62818. v5 = pMsg->UserData.m_Human.m_IPRegion == -1;
  62819. pMsg->UserData.m_IsPilfered = v71;
  62820. if ( v5 )
  62821. {
  62822. v77 = IPRegionTable::FindIPRegion(g_pIPRegionTable, pPlayer->m_pSocket->m_Host);
  62823. pMsg->UserData.m_Human.m_IPRegion = v77;
  62824. v78 = v77;
  62825. v79 = LoginPlayer::GetAccount((LoginPlayer *const )pPlayer);
  62826. CacheLog(0, "WLRetCharLoginHandler::Execute()....acc=%s,GUID=%X,Set IPRegion=%d", v79, PlayerCharGUID, v78);
  62827. }
  62828. pMsg->AskStatus = 1;
  62829. v72 = LoginPlayer::GetAccount((LoginPlayer *const )pPlayer);
  62830. Packets::LWAskCharLogin::SetAccount(pMsg, v72);
  62831. Packets::LWAskCharLogin::SetHost(pMsg, pPlayer->m_pSocket->m_Host);
  62832. pMsg->PlayerID = PlayerID;
  62833. pMsg->PlayerGUID = PlayerCharGUID;
  62834. pMsg->uKey = LoginPlayer::GetUserKey((int)pPlayer);
  62835. LoginPlayer::SetDBOperating((int)pPlayer, 0);
  62836. v73 = pMsg->UserData.m_AccountSafeSign.m_Sign;
  62837. v74 = LoginPlayer::GetAccount((LoginPlayer *const )pPlayer);
  62838. CacheLog(0, "WLRetCharLoginHandler::Execute()....OK!,acc=%s, AccountSafeSign=%d", v74, v73);
  62839. ServerManager::SendPacket(*(ServerManager *const *)&g_pServerManager, &pMsg->0, 0, 0);
  62840. return 2;
  62841. }
  62842. v84 = ODBCBase::GetErrorMessage((int)&CharFullDataObject);
  62843. v85 = LoginPlayer::GetAccount((LoginPlayer *const )pPlayer);
  62844. CacheLog(0, "CharFullDataObject.Load()....acc = %s Get Errors: %s", v85, v84);
  62845. v86 = PacketFactoryManager::CreatePacket(g_pPacketFactoryManager, 0x15Au);
  62846. if ( !v86 )
  62847. __assertex__(
  62848. "./Packets/WLRetCharLoginHandler.cpp",
  62849. 0xF9u,
  62850. "static UINT Packets::WLRetCharLoginHandler::Execute(Packets::WLRetCharLogin*, Player*)",
  62851. "FALSE",
  62852. &byte_80E15CD);
  62853. v86[1]._vptr_Packet = (int (**)(...))3;
  62854. ProcessManager::SendPacket(g_pProcessManager, v86, PlayerID, 0);
  62855. LoginPlayer::SetDBOperating((int)pPlayer, 0);
  62856. result = 2;
  62857. }
  62858. return result;
  62859. }
  62860. // 8049B18: using guessed type int __stdcall __cxa_end_catch(_DWORD);
  62861. // 80CE708: using guessed type _DWORD (__cdecl *off_80CE708[2])(Packets::LCRetCharLogin *this);
  62862.  
  62863. //----- (0809B730) --------------------------------------------------------
  62864. void __cdecl _tcf_0_183(void *a1)
  62865. {
  62866. std::ios_base::Init::~Init(&std::__ioinit);
  62867. }
  62868.  
  62869. //----- (0809B740) --------------------------------------------------------
  62870. void `global constructor keyed to'Packets::WLRetCharLoginHandler::Execute()
  62871. {
  62872. std::ios_base::Init::Init(&std::__ioinit);
  62873. __cxa_atexit(_tcf_0_183, 0, &_dso_handle);
  62874. }
  62875. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  62876.  
  62877. //----- (0809B76C) --------------------------------------------------------
  62878. UINT __cdecl Packets::BLRetAskBuyHandler::Execute(Packets::BLRetAskBuy *pPacket, Player *pPlayer)
  62879. {
  62880. _BUY_DATA *v2; // ebx
  62881. const char *v3; // edi
  62882. USHORT v4; // dx
  62883. BYTE v5; // bl
  62884. UINT v6; // ecx
  62885. unsigned int v7; // ebx
  62886. char *v8; // eax
  62887. _RETBUY_DATA *v9; // eax
  62888. _RETBUY_DATA *v10; // edx
  62889. int v11; // eax
  62890. Player *v12; // eax
  62891. int v13; // ST14_4
  62892. unsigned int v15; // ebx
  62893. int v16; // eax
  62894. _RETBUY_DATA *v17; // edx
  62895. int v18; // eax
  62896. signed int v19; // [esp+Ch] [ebp-44Ch]
  62897. Packets::BLRetAskBuy *v20; // [esp+18h] [ebp-440h]
  62898. Packets::BLRetAskBuy *v21; // [esp+1Ch] [ebp-43Ch]
  62899. _RETBUY_DATA *v22; // [esp+20h] [ebp-438h]
  62900. Packets::LWRetPrize Msg; // [esp+30h] [ebp-428h]
  62901.  
  62902. if ( *(_DWORD *)(*(_DWORD *)&g_pServerManager + 7480) != ThreadValueManager::GetCurrentThreadID() )
  62903. __assert__(
  62904. "./Packets/BLRetAskBuyHandler.cpp",
  62905. 0xFu,
  62906. "static UINT Packets::BLRetAskBuyHandler::Execute(Packets::BLRetAskBuy*, Player*)",
  62907. "FALSE");
  62908. if ( !pPlayer )
  62909. __assert__(
  62910. "./Packets/BLRetAskBuyHandler.cpp",
  62911. 0x12u,
  62912. "static UINT Packets::BLRetAskBuyHandler::Execute(Packets::BLRetAskBuy*, Player*)",
  62913. "pPlayer");
  62914. if ( (*((int (__cdecl **)(Player *))pPlayer->_vptr_Player + 25))(pPlayer) )
  62915. {
  62916. if ( !pPacket )
  62917. __assert__(
  62918. "./Packets/BLRetAskBuyHandler.cpp",
  62919. 0x18u,
  62920. "static UINT Packets::BLRetAskBuyHandler::Execute(Packets::BLRetAskBuy*, Player*)",
  62921. "pPacket");
  62922. Packet::Packet((int)&Msg);
  62923. Msg._vptr_Packet = (int (**)(...))off_80D11A8;
  62924. v2 = Msg.mPrize;
  62925. v19 = 29;
  62926. do
  62927. {
  62928. memset(v2, 0, 0x14u);
  62929. --v19;
  62930. v2->m_BuyPoint = 0;
  62931. v2->m_BuyInt = 0;
  62932. v2->m_BuyNumber = 0;
  62933. ++v2;
  62934. }
  62935. while ( v19 != -1 );
  62936. Msg.mPrizeUserID = -1;
  62937. memset(Msg.mAccName, 0, 0x30u);
  62938. *(_WORD *)&Msg.mAccName[48] = 0;
  62939. Msg.mAccName[50] = 0;
  62940. Msg.mPrizeResult = 3;
  62941. Msg.mRetType = 0;
  62942. Msg.mPrizeNum = 0;
  62943. Msg.mLeftPoint = 0;
  62944. memset(Msg.mPrize, 0, 0x3C0u);
  62945. v3 = pPacket->mAccount;
  62946. if ( pPacket == (Packets::BLRetAskBuy *)-8 )
  62947. __assert__(
  62948. "../../Common/Packets/LWRetPrize.h",
  62949. 0x8Cu,
  62950. "void Packets::LWRetPrize::SetAccName(const CHAR*)",
  62951. "pAccName");
  62952. strncpy(Msg.mAccName, v3, 0x32u);
  62953. Msg.mAccName[50] = 0;
  62954. v4 = pPacket->m_Index;
  62955. Msg.mPrizeUserID = pPacket->m_Index;
  62956. v5 = pPacket->mBuyResult;
  62957. Msg.mPrizeResult = pPacket->mBuyResult;
  62958. v6 = pPacket->mLeftPoint;
  62959. if ( pPacket->mLeftPoint <= 0 )
  62960. v6 = 0;
  62961. Msg.mLeftPoint = v6;
  62962. Msg.mRetType = 3;
  62963. CacheLog(0, "BLRetAskBuy...Acc=%s PUID=%d,Result = %d,LeftPoint=%u", v3, v4, v5, v6);
  62964. if ( pPacket->mBuyResult )
  62965. {
  62966. if ( pPacket->mBuyResult == 1 )
  62967. {
  62968. v15 = 0;
  62969. if ( pPacket->mGoodsNum )
  62970. {
  62971. v21 = pPacket;
  62972. v20 = pPacket;
  62973. do
  62974. {
  62975. v16 = 0;
  62976. if ( v15 <= 0x1D )
  62977. v16 = (int)v20->mGoods;
  62978. v17 = 0;
  62979. v18 = *(unsigned __int16 *)(v16 + 4);
  62980. if ( v15 <= 0x1D )
  62981. v17 = v21->mGoods;
  62982. CacheLog(0, "BLRetAskBuy...AlreadyBuy Acc=%s (%u:%u) Drop", v3, v17->m_BuyInt, v18);
  62983. ++v15;
  62984. v20 = (Packets::BLRetAskBuy *)((char *)v20 + 8);
  62985. v21 = (Packets::BLRetAskBuy *)((char *)v21 + 8);
  62986. }
  62987. while ( pPacket->mGoodsNum > (signed int)v15 );
  62988. }
  62989. }
  62990. }
  62991. else
  62992. {
  62993. v7 = 0;
  62994. if ( pPacket->mGoodsNum )
  62995. {
  62996. do
  62997. {
  62998. v22 = 0;
  62999. if ( v7 <= 0x1D )
  63000. v22 = &pPacket->mGoods[v7];
  63001. if ( Msg.mRetType != 3 )
  63002. __assert__(
  63003. "../../Common/Packets/LWRetPrize.h",
  63004. 0xBCu,
  63005. "void Packets::LWRetPrize::AddPrize(_RETBUY_DATA*)",
  63006. "mRetType == ASK_BUY");
  63007. if ( Msg.mPrizeNum > 0x1Du )
  63008. __assert__(
  63009. "../../Common/Packets/LWRetPrize.h",
  63010. 0xBDu,
  63011. "void Packets::LWRetPrize::AddPrize(_RETBUY_DATA*)",
  63012. "mPrizeNum<MAX_PRIZE_NUMBER");
  63013. if ( !v22 )
  63014. __assert__(
  63015. "../../Common/Packets/LWRetPrize.h",
  63016. 0xBEu,
  63017. "void Packets::LWRetPrize::AddPrize(_RETBUY_DATA*)",
  63018. "pData");
  63019. v8 = (char *)&Msg + 32 * Msg.mPrizeNum;
  63020. *((_DWORD *)v8 + 25) = v22->m_BuyInt;
  63021. *((_DWORD *)v8 + 26) = v22->m_BuyNumber;
  63022. ++Msg.mPrizeNum;
  63023. v9 = 0;
  63024. if ( v7 <= 0x1D )
  63025. v9 = &pPacket->mGoods[v7];
  63026. v10 = 0;
  63027. v11 = v9->m_BuyNumber;
  63028. if ( v7 <= 0x1D )
  63029. v10 = &pPacket->mGoods[v7];
  63030. CacheLog(0, "BLRetAskBuy...Buy Acc=%s (%u:%u)", v3, v10->m_BuyInt, v11);
  63031. ++v7;
  63032. }
  63033. while ( pPacket->mGoodsNum > (signed int)v7 );
  63034. }
  63035. }
  63036. v12 = ServerManager::GetServerPlayer(*(ServerManager *const *)&g_pServerManager, 0);
  63037. if ( v12 )
  63038. (*((void (__cdecl **)(Player *, Packets::LWRetPrize *))v12->_vptr_Player + 3))(v12, &Msg);
  63039. v13 = pPacket->mBuyResult;
  63040. CacheLog(
  63041. 0,
  63042. "BLRetAskBuy::Execute()...OK Acc=%s BuySerial=%s PUID=%d,Result = %d",
  63043. v3,
  63044. pPacket->mBuySerial,
  63045. pPacket->m_Index);
  63046. Msg._vptr_Packet = (int (**)(...))off_80D11A8;
  63047. Packet::~Packet(&Msg);
  63048. }
  63049. return 2;
  63050. }
  63051. // 80D11A8: using guessed type _DWORD (__cdecl *off_80D11A8[2])(Packets::LWRetPrize *this);
  63052.  
  63053. //----- (0809BBEC) --------------------------------------------------------
  63054. void __cdecl _tcf_0_184(void *a1)
  63055. {
  63056. std::ios_base::Init::~Init(&std::__ioinit);
  63057. }
  63058.  
  63059. //----- (0809BBFC) --------------------------------------------------------
  63060. void `global constructor keyed to'Packets::BLRetAskBuyHandler::Execute()
  63061. {
  63062. std::ios_base::Init::Init(&std::__ioinit);
  63063. __cxa_atexit(_tcf_0_184, 0, &_dso_handle);
  63064. }
  63065. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  63066.  
  63067. //----- (0809BC28) --------------------------------------------------------
  63068. UINT __cdecl Packets::BLRetAskPointHandler::Execute(Packets::BLRetAskPoint *pPacket, Player *pPlayer)
  63069. {
  63070. int v2; // ecx
  63071. CHAR *v3; // edi
  63072. const char *v4; // ebx
  63073. int v5; // edx
  63074. UINT v6; // ST10_4
  63075. Player *v7; // eax
  63076. signed int v9; // [esp+8h] [ebp-440h]
  63077. _BUY_DATA *v10; // [esp+Ch] [ebp-43Ch]
  63078. Packets::LWRetPrize Msg; // [esp+20h] [ebp-428h]
  63079.  
  63080. if ( *(_DWORD *)(*(_DWORD *)&g_pServerManager + 7480) != ThreadValueManager::GetCurrentThreadID() )
  63081. __assert__(
  63082. "./Packets/BLRetAskPointHandler.cpp",
  63083. 0xFu,
  63084. "static UINT Packets::BLRetAskPointHandler::Execute(Packets::BLRetAskPoint*, Player*)",
  63085. "FALSE");
  63086. if ( !pPlayer )
  63087. __assert__(
  63088. "./Packets/BLRetAskPointHandler.cpp",
  63089. 0x12u,
  63090. "static UINT Packets::BLRetAskPointHandler::Execute(Packets::BLRetAskPoint*, Player*)",
  63091. "pPlayer");
  63092. if ( (*((int (__cdecl **)(Player *))pPlayer->_vptr_Player + 25))(pPlayer) )
  63093. {
  63094. if ( !pPacket )
  63095. __assert__(
  63096. "./Packets/BLRetAskPointHandler.cpp",
  63097. 0x18u,
  63098. "static UINT Packets::BLRetAskPointHandler::Execute(Packets::BLRetAskPoint*, Player*)",
  63099. "pPacket");
  63100. Packet::Packet((int)&Msg);
  63101. Msg._vptr_Packet = (int (**)(...))off_80D11A8;
  63102. v10 = Msg.mPrize;
  63103. v9 = 29;
  63104. do
  63105. {
  63106. memset(v10, 0, 0x14u);
  63107. v2 = 0;
  63108. --v9;
  63109. v10->m_BuyPoint = 0;
  63110. v10->m_BuyInt = 0;
  63111. v10->m_BuyNumber = 0;
  63112. ++v10;
  63113. }
  63114. while ( v9 != -1 );
  63115. LOBYTE(v2) = 12;
  63116. Msg.mPrizeUserID = -1;
  63117. memset(Msg.mAccName, 0, 4 * v2);
  63118. v3 = &Msg.mAccName[4 * v2];
  63119. *(_WORD *)v3 = 0;
  63120. v3[2] = 0;
  63121. Msg.mPrizeResult = 3;
  63122. Msg.mRetType = 0;
  63123. Msg.mPrizeNum = 0;
  63124. Msg.mLeftPoint = 0;
  63125. memset(Msg.mPrize, 0, 0x3C0u);
  63126. v4 = pPacket->mAccount;
  63127. if ( pPacket == (Packets::BLRetAskPoint *)-8 )
  63128. __assert__(
  63129. "../../Common/Packets/LWRetPrize.h",
  63130. 0x8Cu,
  63131. "void Packets::LWRetPrize::SetAccName(const CHAR*)",
  63132. "pAccName");
  63133. strncpy(Msg.mAccName, v4, 0x32u);
  63134. Msg.mAccName[50] = 0;
  63135. v5 = pPacket->m_Index;
  63136. Msg.mPrizeResult = 0;
  63137. Msg.mRetType = 2;
  63138. v6 = pPacket->mPoint;
  63139. Msg.mPrizeUserID = v5;
  63140. Msg.mLeftPoint = v6;
  63141. CacheLog(0, "BLRetAskPoint...Acc=%s PUID=%d,LeftPoint = %d", v4, v5, v6);
  63142. v7 = ServerManager::GetServerPlayer(*(ServerManager *const *)&g_pServerManager, 0);
  63143. if ( v7 )
  63144. (*((void (__cdecl **)(Player *, Packets::LWRetPrize *))v7->_vptr_Player + 3))(v7, &Msg);
  63145. CacheLog(0, "BLRetAskPoint::Execute()...OK Acc=%s PUID=%d,LeftPoint = %d", v4, pPacket->m_Index, pPacket->mPoint);
  63146. Msg._vptr_Packet = (int (**)(...))off_80D11A8;
  63147. Packet::~Packet(&Msg);
  63148. }
  63149. return 2;
  63150. }
  63151. // 80D11A8: using guessed type _DWORD (__cdecl *off_80D11A8[2])(Packets::LWRetPrize *this);
  63152.  
  63153. //----- (0809BEE8) --------------------------------------------------------
  63154. void __cdecl _tcf_0_185(void *a1)
  63155. {
  63156. std::ios_base::Init::~Init(&std::__ioinit);
  63157. }
  63158.  
  63159. //----- (0809BEF8) --------------------------------------------------------
  63160. void `global constructor keyed to'Packets::BLRetAskPointHandler::Execute()
  63161. {
  63162. std::ios_base::Init::Init(&std::__ioinit);
  63163. __cxa_atexit(_tcf_0_185, 0, &_dso_handle);
  63164. }
  63165. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  63166.  
  63167. //----- (0809BF24) --------------------------------------------------------
  63168. UINT __cdecl Packets::BLRetPrizeHandler::Execute(Packets::BLRetPrize *pPacket, Player *pPlayer)
  63169. {
  63170. _BUY_DATA *v2; // esi
  63171. USHORT v3; // si
  63172. int v4; // eax
  63173. int v5; // edx
  63174. int v6; // eax
  63175. Player *v7; // eax
  63176. int v8; // ST14_4
  63177. Packets::BLRetPrize *v10; // esi
  63178. Packets::BLRetPrize *v11; // edi
  63179. int v12; // eax
  63180. int v13; // edx
  63181. int v14; // eax
  63182. signed int v15; // [esp+Ch] [ebp-45Ch]
  63183. Packets::BLRetPrize *v16; // [esp+10h] [ebp-458h]
  63184. Packets::BLRetPrize *v17; // [esp+14h] [ebp-454h]
  63185. Packets::BLRetPrize *v18; // [esp+18h] [ebp-450h]
  63186. char *src; // [esp+1Ch] [ebp-44Ch]
  63187. unsigned int i_0; // [esp+20h] [ebp-448h]
  63188. unsigned __int8 *v21; // [esp+2Ch] [ebp-43Ch]
  63189. unsigned int i; // [esp+30h] [ebp-438h]
  63190. Packets::LWRetPrize Msg; // [esp+40h] [ebp-428h]
  63191.  
  63192. if ( *(_DWORD *)(*(_DWORD *)&g_pServerManager + 7480) != ThreadValueManager::GetCurrentThreadID() )
  63193. __assert__(
  63194. "./Packets/BLRetPrizeHandler.cpp",
  63195. 0xFu,
  63196. "static UINT Packets::BLRetPrizeHandler::Execute(Packets::BLRetPrize*, Player*)",
  63197. "FALSE");
  63198. if ( !pPlayer )
  63199. __assert__(
  63200. "./Packets/BLRetPrizeHandler.cpp",
  63201. 0x12u,
  63202. "static UINT Packets::BLRetPrizeHandler::Execute(Packets::BLRetPrize*, Player*)",
  63203. "pPlayer");
  63204. if ( (*((int (__cdecl **)(Player *))pPlayer->_vptr_Player + 25))(pPlayer) )
  63205. {
  63206. if ( !pPacket )
  63207. __assert__(
  63208. "./Packets/BLRetPrizeHandler.cpp",
  63209. 0x18u,
  63210. "static UINT Packets::BLRetPrizeHandler::Execute(Packets::BLRetPrize*, Player*)",
  63211. "pPacket");
  63212. Packet::Packet((int)&Msg);
  63213. Msg._vptr_Packet = (int (**)(...))off_80D11A8;
  63214. v2 = Msg.mPrize;
  63215. v15 = 29;
  63216. do
  63217. {
  63218. memset(v2, 0, 0x14u);
  63219. --v15;
  63220. v2->m_BuyPoint = 0;
  63221. v2->m_BuyInt = 0;
  63222. v2->m_BuyNumber = 0;
  63223. ++v2;
  63224. }
  63225. while ( v15 != -1 );
  63226. Msg.mPrizeUserID = -1;
  63227. memset(Msg.mAccName, 0, 0x30u);
  63228. *(_WORD *)&Msg.mAccName[48] = 0;
  63229. Msg.mAccName[50] = 0;
  63230. Msg.mPrizeResult = 3;
  63231. Msg.mRetType = 0;
  63232. Msg.mPrizeNum = 0;
  63233. Msg.mLeftPoint = 0;
  63234. memset(Msg.mPrize, 0, 0x3C0u);
  63235. src = pPacket->mAccount;
  63236. if ( pPacket == (Packets::BLRetPrize *)-8 )
  63237. __assert__(
  63238. "../../Common/Packets/LWRetPrize.h",
  63239. 0x8Cu,
  63240. "void Packets::LWRetPrize::SetAccName(const CHAR*)",
  63241. "pAccName");
  63242. strncpy(Msg.mAccName, src, 0x32u);
  63243. Msg.mAccName[50] = 0;
  63244. Msg.mPrizeUserID = pPacket->m_Index;
  63245. Msg.mPrizeResult = pPacket->mPrizeResult;
  63246. Msg.mRetType = 1;
  63247. if ( Msg.mPrizeResult )
  63248. {
  63249. if ( Msg.mPrizeResult == 2 )
  63250. {
  63251. i_0 = 0;
  63252. if ( pPacket->mPrizeNum )
  63253. {
  63254. v10 = pPacket;
  63255. v11 = pPacket;
  63256. do
  63257. {
  63258. v12 = 0;
  63259. if ( i_0 <= 0x1D )
  63260. v12 = (int)v11->mPrize;
  63261. v13 = 0;
  63262. v14 = *(unsigned __int8 *)(v12 + 20);
  63263. if ( i_0 <= 0x1D )
  63264. v13 = (int)v10->mPrize;
  63265. CacheLog(0, "BLRetPrize...AlreadyGetPrize Acc=%s price=%s,num=%d Drop", src, v13, v14);
  63266. ++i_0;
  63267. v11 = (Packets::BLRetPrize *)((char *)v11 + 21);
  63268. v10 = (Packets::BLRetPrize *)((char *)v10 + 21);
  63269. }
  63270. while ( pPacket->mPrizeNum > (signed int)i_0 );
  63271. }
  63272. }
  63273. }
  63274. else
  63275. {
  63276. i = 0;
  63277. if ( pPacket->mPrizeNum )
  63278. {
  63279. v18 = pPacket;
  63280. v17 = pPacket;
  63281. v16 = pPacket;
  63282. do
  63283. {
  63284. v21 = 0;
  63285. if ( i <= 0x1D )
  63286. v21 = (unsigned __int8 *)v16->mPrize;
  63287. if ( Msg.mRetType != 1 && Msg.mRetType != 5 && Msg.mRetType != 4 && Msg.mRetType != 6 && Msg.mRetType != 7 )
  63288. __assert__(
  63289. "../../Common/Packets/LWRetPrize.h",
  63290. 0xC8u,
  63291. "void Packets::LWRetPrize::AddPrize(_PRIZE_DATA*)",
  63292. "mRetType == ASK_PRIZE || mRetType == ASK_NEWUSER_CARD || mRetType == ASK_NEWPRIZE || mRetType == ASK_NEWCH"
  63293. "ECKPRIZE || mRetType == ASK_CARDCHECKPRIZE");
  63294. if ( Msg.mPrizeNum > 0x1Du )
  63295. __assert__(
  63296. "../../Common/Packets/LWRetPrize.h",
  63297. 0xC9u,
  63298. "void Packets::LWRetPrize::AddPrize(_PRIZE_DATA*)",
  63299. "mPrizeNum<MAX_PRIZE_NUMBER");
  63300. if ( !v21 )
  63301. __assert__(
  63302. "../../Common/Packets/LWRetPrize.h",
  63303. 0xCAu,
  63304. "void Packets::LWRetPrize::AddPrize(_PRIZE_DATA*)",
  63305. "pData");
  63306. qmemcpy(&Msg.mPrize[Msg.mPrizeNum], v21, 0x14u);
  63307. Msg.mPrize[Msg.mPrizeNum].m_BuyString[19] = 0;
  63308. v3 = Msg.mPrizeNum;
  63309. Msg.mPrize[Msg.mPrizeNum].m_BuyNumber = v21[20];
  63310. Msg.mPrizeNum = v3 + 1;
  63311. v4 = 0;
  63312. if ( i <= 0x1D )
  63313. v4 = (int)v17->mPrize;
  63314. v5 = 0;
  63315. v6 = *(unsigned __int8 *)(v4 + 20);
  63316. if ( i <= 0x1D )
  63317. v5 = (int)v18->mPrize;
  63318. CacheLog(0, "BLRetPrize...GetPrize Acc=%s price=%s,num=%d", src, v5, v6);
  63319. ++i;
  63320. v16 = (Packets::BLRetPrize *)((char *)v16 + 21);
  63321. v17 = (Packets::BLRetPrize *)((char *)v17 + 21);
  63322. v18 = (Packets::BLRetPrize *)((char *)v18 + 21);
  63323. }
  63324. while ( pPacket->mPrizeNum > (signed int)i );
  63325. }
  63326. }
  63327. v7 = ServerManager::GetServerPlayer(*(ServerManager *const *)&g_pServerManager, 0);
  63328. if ( v7 )
  63329. (*((void (__cdecl **)(Player *, Packets::LWRetPrize *))v7->_vptr_Player + 3))(v7, &Msg);
  63330. v8 = pPacket->mPrizeResult;
  63331. CacheLog(
  63332. 0,
  63333. "BLRetPrize::Execute()...OK Acc=%s PrizeSerial=%s PUID=%d,Result = %d",
  63334. src,
  63335. pPacket->mPrizeSerial,
  63336. pPacket->m_Index);
  63337. Msg._vptr_Packet = (int (**)(...))off_80D11A8;
  63338. Packet::~Packet(&Msg);
  63339. }
  63340. return 2;
  63341. }
  63342. // 80D11A8: using guessed type _DWORD (__cdecl *off_80D11A8[2])(Packets::LWRetPrize *this);
  63343.  
  63344. //----- (0809C408) --------------------------------------------------------
  63345. void __cdecl _tcf_0_186(void *a1)
  63346. {
  63347. std::ios_base::Init::~Init(&std::__ioinit);
  63348. }
  63349.  
  63350. //----- (0809C418) --------------------------------------------------------
  63351. void `global constructor keyed to'Packets::BLRetPrizeHandler::Execute()
  63352. {
  63353. std::ios_base::Init::Init(&std::__ioinit);
  63354. __cxa_atexit(_tcf_0_186, 0, &_dso_handle);
  63355. }
  63356. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  63357.  
  63358. //----- (0809C444) --------------------------------------------------------
  63359. UINT __cdecl Packets::LBAskBuyHandler::Execute(Packets::LBAskBuy *pPacket, Player *pPlayer)
  63360. {
  63361. return 2;
  63362. }
  63363.  
  63364. //----- (0809C450) --------------------------------------------------------
  63365. void __cdecl _tcf_0_187(void *a1)
  63366. {
  63367. std::ios_base::Init::~Init(&std::__ioinit);
  63368. }
  63369.  
  63370. //----- (0809C460) --------------------------------------------------------
  63371. void `global constructor keyed to'Packets::LBAskBuyHandler::Execute()
  63372. {
  63373. std::ios_base::Init::Init(&std::__ioinit);
  63374. __cxa_atexit(_tcf_0_187, 0, &_dso_handle);
  63375. }
  63376. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  63377.  
  63378. //----- (0809C48C) --------------------------------------------------------
  63379. UINT __cdecl Packets::LBAskPointHandler::Execute(Packets::LBAskPoint *pPacket, Player *pPlayer)
  63380. {
  63381. return 2;
  63382. }
  63383.  
  63384. //----- (0809C498) --------------------------------------------------------
  63385. void __cdecl _tcf_0_188(void *a1)
  63386. {
  63387. std::ios_base::Init::~Init(&std::__ioinit);
  63388. }
  63389.  
  63390. //----- (0809C4A8) --------------------------------------------------------
  63391. void `global constructor keyed to'Packets::LBAskPointHandler::Execute()
  63392. {
  63393. std::ios_base::Init::Init(&std::__ioinit);
  63394. __cxa_atexit(_tcf_0_188, 0, &_dso_handle);
  63395. }
  63396. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  63397.  
  63398. //----- (0809C4D4) --------------------------------------------------------
  63399. UINT __cdecl Packets::LBLAskNewUserCardHandler::Execute(Packets::LBLAskNewUserCard *pPacket, Player *pPlayer)
  63400. {
  63401. _BUY_DATA *v2; // esi
  63402. USHORT v3; // si
  63403. int v4; // eax
  63404. int v5; // edx
  63405. int v6; // eax
  63406. Player *v7; // eax
  63407. Packets::LBLAskNewUserCard *v9; // esi
  63408. Packets::LBLAskNewUserCard *v10; // edi
  63409. int v11; // eax
  63410. int v12; // edx
  63411. int v13; // eax
  63412. signed int v14; // [esp+Ch] [ebp-45Ch]
  63413. Packets::LBLAskNewUserCard *v15; // [esp+10h] [ebp-458h]
  63414. Packets::LBLAskNewUserCard *v16; // [esp+14h] [ebp-454h]
  63415. Packets::LBLAskNewUserCard *v17; // [esp+18h] [ebp-450h]
  63416. char *src; // [esp+1Ch] [ebp-44Ch]
  63417. unsigned int i_0; // [esp+20h] [ebp-448h]
  63418. unsigned __int8 *v20; // [esp+2Ch] [ebp-43Ch]
  63419. unsigned int i; // [esp+30h] [ebp-438h]
  63420. Packets::LWRetPrize Msg; // [esp+40h] [ebp-428h]
  63421.  
  63422. if ( *(_DWORD *)(*(_DWORD *)&g_pServerManager + 7480) != ThreadValueManager::GetCurrentThreadID() )
  63423. __assert__(
  63424. "./Packets/LBLAskNewUserCardHandler.cpp",
  63425. 0xFu,
  63426. "static UINT Packets::LBLAskNewUserCardHandler::Execute(Packets::LBLAskNewUserCard*, Player*)",
  63427. "FALSE");
  63428. if ( !pPlayer )
  63429. __assert__(
  63430. "./Packets/LBLAskNewUserCardHandler.cpp",
  63431. 0x12u,
  63432. "static UINT Packets::LBLAskNewUserCardHandler::Execute(Packets::LBLAskNewUserCard*, Player*)",
  63433. "pPlayer");
  63434. if ( pPacket->mType != 1 )
  63435. __assert__(
  63436. "./Packets/LBLAskNewUserCardHandler.cpp",
  63437. 0x13u,
  63438. "static UINT Packets::LBLAskNewUserCardHandler::Execute(Packets::LBLAskNewUserCard*, Player*)",
  63439. "pPacket->GetType() == LBLAskNewUserCard::BL_NEWUSERCARD");
  63440. if ( (*((int (__cdecl **)(Player *))pPlayer->_vptr_Player + 25))(pPlayer) )
  63441. {
  63442. if ( !pPacket )
  63443. __assert__(
  63444. "./Packets/LBLAskNewUserCardHandler.cpp",
  63445. 0x1Au,
  63446. "static UINT Packets::LBLAskNewUserCardHandler::Execute(Packets::LBLAskNewUserCard*, Player*)",
  63447. "pPacket");
  63448. Packet::Packet((int)&Msg);
  63449. Msg._vptr_Packet = (int (**)(...))off_80D11A8;
  63450. v2 = Msg.mPrize;
  63451. v14 = 29;
  63452. do
  63453. {
  63454. memset(v2, 0, 0x14u);
  63455. --v14;
  63456. v2->m_BuyPoint = 0;
  63457. v2->m_BuyInt = 0;
  63458. v2->m_BuyNumber = 0;
  63459. ++v2;
  63460. }
  63461. while ( v14 != -1 );
  63462. Msg.mPrizeUserID = -1;
  63463. memset(Msg.mAccName, 0, 0x30u);
  63464. *(_WORD *)&Msg.mAccName[48] = 0;
  63465. Msg.mAccName[50] = 0;
  63466. Msg.mPrizeResult = 3;
  63467. Msg.mRetType = 0;
  63468. Msg.mPrizeNum = 0;
  63469. Msg.mLeftPoint = 0;
  63470. memset(Msg.mPrize, 0, 0x3C0u);
  63471. src = pPacket->mAccount;
  63472. if ( pPacket == (Packets::LBLAskNewUserCard *)-31 )
  63473. __assert__(
  63474. "../../Common/Packets/LWRetPrize.h",
  63475. 0x8Cu,
  63476. "void Packets::LWRetPrize::SetAccName(const CHAR*)",
  63477. "pAccName");
  63478. strncpy(Msg.mAccName, src, 0x32u);
  63479. Msg.mAccName[50] = 0;
  63480. Msg.mPrizeUserID = pPacket->m_Index;
  63481. Msg.mPrizeResult = pPacket->mPrizeResult;
  63482. Msg.mRetType = 5;
  63483. if ( Msg.mPrizeResult )
  63484. {
  63485. if ( Msg.mPrizeResult == 2 )
  63486. {
  63487. i_0 = 0;
  63488. if ( pPacket->mPrizeNum )
  63489. {
  63490. v9 = pPacket;
  63491. v10 = pPacket;
  63492. do
  63493. {
  63494. v11 = 0;
  63495. if ( i_0 <= 0x1D )
  63496. v11 = (int)v10->mPrize;
  63497. v12 = 0;
  63498. v13 = *(unsigned __int8 *)(v11 + 20);
  63499. if ( i_0 <= 0x1D )
  63500. v12 = (int)v9->mPrize;
  63501. CacheLog(0, "LBLAskNewUserCard...AlreadyGetPrize Acc=%s price=%s,num=%d Drop", src, v12, v13);
  63502. ++i_0;
  63503. v10 = (Packets::LBLAskNewUserCard *)((char *)v10 + 21);
  63504. v9 = (Packets::LBLAskNewUserCard *)((char *)v9 + 21);
  63505. }
  63506. while ( pPacket->mPrizeNum > (signed int)i_0 );
  63507. }
  63508. }
  63509. }
  63510. else
  63511. {
  63512. i = 0;
  63513. if ( pPacket->mPrizeNum )
  63514. {
  63515. v17 = pPacket;
  63516. v16 = pPacket;
  63517. v15 = pPacket;
  63518. do
  63519. {
  63520. v20 = 0;
  63521. if ( i <= 0x1D )
  63522. v20 = (unsigned __int8 *)v15->mPrize;
  63523. if ( Msg.mRetType != 1 && Msg.mRetType != 5 && Msg.mRetType != 4 && Msg.mRetType != 6 && Msg.mRetType != 7 )
  63524. __assert__(
  63525. "../../Common/Packets/LWRetPrize.h",
  63526. 0xC8u,
  63527. "void Packets::LWRetPrize::AddPrize(_PRIZE_DATA*)",
  63528. "mRetType == ASK_PRIZE || mRetType == ASK_NEWUSER_CARD || mRetType == ASK_NEWPRIZE || mRetType == ASK_NEWCH"
  63529. "ECKPRIZE || mRetType == ASK_CARDCHECKPRIZE");
  63530. if ( Msg.mPrizeNum > 0x1Du )
  63531. __assert__(
  63532. "../../Common/Packets/LWRetPrize.h",
  63533. 0xC9u,
  63534. "void Packets::LWRetPrize::AddPrize(_PRIZE_DATA*)",
  63535. "mPrizeNum<MAX_PRIZE_NUMBER");
  63536. if ( !v20 )
  63537. __assert__(
  63538. "../../Common/Packets/LWRetPrize.h",
  63539. 0xCAu,
  63540. "void Packets::LWRetPrize::AddPrize(_PRIZE_DATA*)",
  63541. "pData");
  63542. qmemcpy(&Msg.mPrize[Msg.mPrizeNum], v20, 0x14u);
  63543. Msg.mPrize[Msg.mPrizeNum].m_BuyString[19] = 0;
  63544. v3 = Msg.mPrizeNum;
  63545. Msg.mPrize[Msg.mPrizeNum].m_BuyNumber = v20[20];
  63546. Msg.mPrizeNum = v3 + 1;
  63547. v4 = 0;
  63548. if ( i <= 0x1D )
  63549. v4 = (int)v16->mPrize;
  63550. v5 = 0;
  63551. v6 = *(unsigned __int8 *)(v4 + 20);
  63552. if ( i <= 0x1D )
  63553. v5 = (int)v17->mPrize;
  63554. CacheLog(0, "LBLAskNewUserCard...GetPrize Acc=%s price=%s,num=%d", src, v5, v6);
  63555. ++i;
  63556. v15 = (Packets::LBLAskNewUserCard *)((char *)v15 + 21);
  63557. v16 = (Packets::LBLAskNewUserCard *)((char *)v16 + 21);
  63558. v17 = (Packets::LBLAskNewUserCard *)((char *)v17 + 21);
  63559. }
  63560. while ( pPacket->mPrizeNum > (signed int)i );
  63561. }
  63562. }
  63563. v7 = ServerManager::GetServerPlayer(*(ServerManager *const *)&g_pServerManager, 0);
  63564. if ( v7 )
  63565. (*((void (__cdecl **)(Player *, Packets::LWRetPrize *))v7->_vptr_Player + 3))(v7, &Msg);
  63566. CacheLog(
  63567. 0,
  63568. "LBLAskNewUserCard::Execute()...OK Acc=%s PUID=%d,Result = %d",
  63569. src,
  63570. pPacket->m_Index,
  63571. pPacket->mPrizeResult);
  63572. Msg._vptr_Packet = (int (**)(...))off_80D11A8;
  63573. Packet::~Packet(&Msg);
  63574. }
  63575. return 2;
  63576. }
  63577. // 80D11A8: using guessed type _DWORD (__cdecl *off_80D11A8[2])(Packets::LWRetPrize *this);
  63578.  
  63579. //----- (0809C9F0) --------------------------------------------------------
  63580. void __cdecl _tcf_0_189(void *a1)
  63581. {
  63582. std::ios_base::Init::~Init(&std::__ioinit);
  63583. }
  63584.  
  63585. //----- (0809CA00) --------------------------------------------------------
  63586. void `global constructor keyed to'Packets::LBLAskNewUserCardHandler::Execute()
  63587. {
  63588. std::ios_base::Init::Init(&std::__ioinit);
  63589. __cxa_atexit(_tcf_0_189, 0, &_dso_handle);
  63590. }
  63591. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  63592.  
  63593. //----- (0809CA2C) --------------------------------------------------------
  63594. UINT __cdecl Packets::LBLCardCheckPrizeHandler::Execute(Packets::LBLCardCheckPrize *pPacket, Player *pPlayer)
  63595. {
  63596. _BUY_DATA *v2; // esi
  63597. USHORT v3; // si
  63598. int v4; // eax
  63599. int v5; // edx
  63600. int v6; // eax
  63601. Player *v7; // eax
  63602. Packets::LBLCardCheckPrize *v9; // esi
  63603. Packets::LBLCardCheckPrize *v10; // edi
  63604. int v11; // eax
  63605. int v12; // edx
  63606. int v13; // eax
  63607. signed int v14; // [esp+Ch] [ebp-45Ch]
  63608. Packets::LBLCardCheckPrize *v15; // [esp+10h] [ebp-458h]
  63609. Packets::LBLCardCheckPrize *v16; // [esp+14h] [ebp-454h]
  63610. Packets::LBLCardCheckPrize *v17; // [esp+18h] [ebp-450h]
  63611. char *src; // [esp+1Ch] [ebp-44Ch]
  63612. unsigned int i_0; // [esp+20h] [ebp-448h]
  63613. unsigned __int8 *v20; // [esp+2Ch] [ebp-43Ch]
  63614. unsigned int i; // [esp+30h] [ebp-438h]
  63615. Packets::LWRetPrize Msg; // [esp+40h] [ebp-428h]
  63616.  
  63617. if ( *(_DWORD *)(*(_DWORD *)&g_pServerManager + 7480) != ThreadValueManager::GetCurrentThreadID() )
  63618. __assert__(
  63619. "./Packets/LBLCardCheckPrizeHandler.cpp",
  63620. 0xFu,
  63621. "static UINT Packets::LBLCardCheckPrizeHandler::Execute(Packets::LBLCardCheckPrize*, Player*)",
  63622. "FALSE");
  63623. if ( !pPlayer )
  63624. __assert__(
  63625. "./Packets/LBLCardCheckPrizeHandler.cpp",
  63626. 0x12u,
  63627. "static UINT Packets::LBLCardCheckPrizeHandler::Execute(Packets::LBLCardCheckPrize*, Player*)",
  63628. "pPlayer");
  63629. if ( pPacket->mType != 1 )
  63630. __assert__(
  63631. "./Packets/LBLCardCheckPrizeHandler.cpp",
  63632. 0x13u,
  63633. "static UINT Packets::LBLCardCheckPrizeHandler::Execute(Packets::LBLCardCheckPrize*, Player*)",
  63634. "pPacket->GetType() == LBLCardCheckPrize::BL_CARDCHECKPRIZE");
  63635. if ( (*((int (__cdecl **)(Player *))pPlayer->_vptr_Player + 25))(pPlayer) )
  63636. {
  63637. if ( !pPacket )
  63638. __assert__(
  63639. "./Packets/LBLCardCheckPrizeHandler.cpp",
  63640. 0x1Au,
  63641. "static UINT Packets::LBLCardCheckPrizeHandler::Execute(Packets::LBLCardCheckPrize*, Player*)",
  63642. "pPacket");
  63643. Packet::Packet((int)&Msg);
  63644. Msg._vptr_Packet = (int (**)(...))off_80D11A8;
  63645. v2 = Msg.mPrize;
  63646. v14 = 29;
  63647. do
  63648. {
  63649. memset(v2, 0, 0x14u);
  63650. --v14;
  63651. v2->m_BuyPoint = 0;
  63652. v2->m_BuyInt = 0;
  63653. v2->m_BuyNumber = 0;
  63654. ++v2;
  63655. }
  63656. while ( v14 != -1 );
  63657. Msg.mPrizeUserID = -1;
  63658. memset(Msg.mAccName, 0, 0x30u);
  63659. *(_WORD *)&Msg.mAccName[48] = 0;
  63660. Msg.mAccName[50] = 0;
  63661. Msg.mPrizeResult = 3;
  63662. Msg.mRetType = 0;
  63663. Msg.mPrizeNum = 0;
  63664. Msg.mLeftPoint = 0;
  63665. memset(Msg.mPrize, 0, 0x3C0u);
  63666. src = pPacket->mAccount;
  63667. if ( pPacket == (Packets::LBLCardCheckPrize *)-31 )
  63668. __assert__(
  63669. "../../Common/Packets/LWRetPrize.h",
  63670. 0x8Cu,
  63671. "void Packets::LWRetPrize::SetAccName(const CHAR*)",
  63672. "pAccName");
  63673. strncpy(Msg.mAccName, src, 0x32u);
  63674. Msg.mAccName[50] = 0;
  63675. Msg.mPrizeUserID = pPacket->m_Index;
  63676. Msg.mPrizeResult = pPacket->mPrizeResult;
  63677. Msg.mRetType = 7;
  63678. if ( Msg.mPrizeResult )
  63679. {
  63680. if ( Msg.mPrizeResult == 2 )
  63681. {
  63682. i_0 = 0;
  63683. if ( pPacket->mPrizeNum )
  63684. {
  63685. v9 = pPacket;
  63686. v10 = pPacket;
  63687. do
  63688. {
  63689. v11 = 0;
  63690. if ( i_0 <= 0x1D )
  63691. v11 = (int)v10->mPrize;
  63692. v12 = 0;
  63693. v13 = *(unsigned __int8 *)(v11 + 20);
  63694. if ( i_0 <= 0x1D )
  63695. v12 = (int)v9->mPrize;
  63696. CacheLog(0, "LBLCardCheckPrize...AlreadyGetPrize Acc=%s price=%s,num=%d Drop", src, v12, v13);
  63697. ++i_0;
  63698. v10 = (Packets::LBLCardCheckPrize *)((char *)v10 + 21);
  63699. v9 = (Packets::LBLCardCheckPrize *)((char *)v9 + 21);
  63700. }
  63701. while ( pPacket->mPrizeNum > (signed int)i_0 );
  63702. }
  63703. }
  63704. }
  63705. else
  63706. {
  63707. i = 0;
  63708. if ( pPacket->mPrizeNum )
  63709. {
  63710. v17 = pPacket;
  63711. v16 = pPacket;
  63712. v15 = pPacket;
  63713. do
  63714. {
  63715. v20 = 0;
  63716. if ( i <= 0x1D )
  63717. v20 = (unsigned __int8 *)v15->mPrize;
  63718. if ( Msg.mRetType != 1 && Msg.mRetType != 5 && Msg.mRetType != 4 && Msg.mRetType != 6 && Msg.mRetType != 7 )
  63719. __assert__(
  63720. "../../Common/Packets/LWRetPrize.h",
  63721. 0xC8u,
  63722. "void Packets::LWRetPrize::AddPrize(_PRIZE_DATA*)",
  63723. "mRetType == ASK_PRIZE || mRetType == ASK_NEWUSER_CARD || mRetType == ASK_NEWPRIZE || mRetType == ASK_NEWCH"
  63724. "ECKPRIZE || mRetType == ASK_CARDCHECKPRIZE");
  63725. if ( Msg.mPrizeNum > 0x1Du )
  63726. __assert__(
  63727. "../../Common/Packets/LWRetPrize.h",
  63728. 0xC9u,
  63729. "void Packets::LWRetPrize::AddPrize(_PRIZE_DATA*)",
  63730. "mPrizeNum<MAX_PRIZE_NUMBER");
  63731. if ( !v20 )
  63732. __assert__(
  63733. "../../Common/Packets/LWRetPrize.h",
  63734. 0xCAu,
  63735. "void Packets::LWRetPrize::AddPrize(_PRIZE_DATA*)",
  63736. "pData");
  63737. qmemcpy(&Msg.mPrize[Msg.mPrizeNum], v20, 0x14u);
  63738. Msg.mPrize[Msg.mPrizeNum].m_BuyString[19] = 0;
  63739. v3 = Msg.mPrizeNum;
  63740. Msg.mPrize[Msg.mPrizeNum].m_BuyNumber = v20[20];
  63741. Msg.mPrizeNum = v3 + 1;
  63742. v4 = 0;
  63743. if ( i <= 0x1D )
  63744. v4 = (int)v16->mPrize;
  63745. v5 = 0;
  63746. v6 = *(unsigned __int8 *)(v4 + 20);
  63747. if ( i <= 0x1D )
  63748. v5 = (int)v17->mPrize;
  63749. CacheLog(0, "LBLCardCheckPrize...GetPrize Acc=%s price=%s,num=%d", src, v5, v6);
  63750. ++i;
  63751. v15 = (Packets::LBLCardCheckPrize *)((char *)v15 + 21);
  63752. v16 = (Packets::LBLCardCheckPrize *)((char *)v16 + 21);
  63753. v17 = (Packets::LBLCardCheckPrize *)((char *)v17 + 21);
  63754. }
  63755. while ( pPacket->mPrizeNum > (signed int)i );
  63756. }
  63757. }
  63758. v7 = ServerManager::GetServerPlayer(*(ServerManager *const *)&g_pServerManager, 0);
  63759. if ( v7 )
  63760. (*((void (__cdecl **)(Player *, Packets::LWRetPrize *))v7->_vptr_Player + 3))(v7, &Msg);
  63761. CacheLog(
  63762. 0,
  63763. "LBLCardCheckPrize::Execute()...OK Acc=%s PUID=%d,Result = %d",
  63764. src,
  63765. pPacket->m_Index,
  63766. pPacket->mPrizeResult);
  63767. Msg._vptr_Packet = (int (**)(...))off_80D11A8;
  63768. Packet::~Packet(&Msg);
  63769. }
  63770. return 2;
  63771. }
  63772. // 80D11A8: using guessed type _DWORD (__cdecl *off_80D11A8[2])(Packets::LWRetPrize *this);
  63773.  
  63774. //----- (0809CF48) --------------------------------------------------------
  63775. void __cdecl _tcf_0_190(void *a1)
  63776. {
  63777. std::ios_base::Init::~Init(&std::__ioinit);
  63778. }
  63779.  
  63780. //----- (0809CF58) --------------------------------------------------------
  63781. void `global constructor keyed to'Packets::LBLCardCheckPrizeHandler::Execute()
  63782. {
  63783. std::ios_base::Init::Init(&std::__ioinit);
  63784. __cxa_atexit(_tcf_0_190, 0, &_dso_handle);
  63785. }
  63786. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  63787.  
  63788. //----- (0809CF84) --------------------------------------------------------
  63789. UINT __cdecl Packets::LBLNewCheckPrizeHandler::Execute(Packets::LBLNewCheckPrize *pPacket, Player *pPlayer)
  63790. {
  63791. _BUY_DATA *v2; // esi
  63792. USHORT v3; // si
  63793. Player *v4; // eax
  63794. signed int v6; // [esp+Ch] [ebp-45Ch]
  63795. Packets::LBLNewCheckPrize *v7; // [esp+1Ch] [ebp-44Ch]
  63796. char *src; // [esp+20h] [ebp-448h]
  63797. unsigned __int8 *v9; // [esp+2Ch] [ebp-43Ch]
  63798. INT i; // [esp+30h] [ebp-438h]
  63799. Packets::LWRetPrize Msg; // [esp+40h] [ebp-428h]
  63800.  
  63801. if ( *(_DWORD *)(*(_DWORD *)&g_pServerManager + 7480) != ThreadValueManager::GetCurrentThreadID() )
  63802. __assert__(
  63803. "./Packets/LBLNewCheckPrizeHandler.cpp",
  63804. 0xFu,
  63805. "static UINT Packets::LBLNewCheckPrizeHandler::Execute(Packets::LBLNewCheckPrize*, Player*)",
  63806. "FALSE");
  63807. if ( !pPlayer )
  63808. __assert__(
  63809. "./Packets/LBLNewCheckPrizeHandler.cpp",
  63810. 0x12u,
  63811. "static UINT Packets::LBLNewCheckPrizeHandler::Execute(Packets::LBLNewCheckPrize*, Player*)",
  63812. "pPlayer");
  63813. if ( pPacket->mType != 1 )
  63814. __assert__(
  63815. "./Packets/LBLNewCheckPrizeHandler.cpp",
  63816. 0x13u,
  63817. "static UINT Packets::LBLNewCheckPrizeHandler::Execute(Packets::LBLNewCheckPrize*, Player*)",
  63818. "pPacket->GetType() == LBLNewCheckPrize::BL_CHECK_PRIZE");
  63819. if ( (*((int (__cdecl **)(Player *))pPlayer->_vptr_Player + 25))(pPlayer) )
  63820. {
  63821. if ( !pPacket )
  63822. __assert__(
  63823. "./Packets/LBLNewCheckPrizeHandler.cpp",
  63824. 0x1Au,
  63825. "static UINT Packets::LBLNewCheckPrizeHandler::Execute(Packets::LBLNewCheckPrize*, Player*)",
  63826. "pPacket");
  63827. Packet::Packet((int)&Msg);
  63828. Msg._vptr_Packet = (int (**)(...))off_80D11A8;
  63829. v2 = Msg.mPrize;
  63830. v6 = 29;
  63831. do
  63832. {
  63833. memset(v2, 0, 0x14u);
  63834. --v6;
  63835. v2->m_BuyPoint = 0;
  63836. v2->m_BuyInt = 0;
  63837. v2->m_BuyNumber = 0;
  63838. ++v2;
  63839. }
  63840. while ( v6 != -1 );
  63841. Msg.mPrizeUserID = -1;
  63842. memset(Msg.mAccName, 0, 0x30u);
  63843. *(_WORD *)&Msg.mAccName[48] = 0;
  63844. Msg.mAccName[50] = 0;
  63845. Msg.mPrizeResult = 3;
  63846. Msg.mRetType = 0;
  63847. Msg.mPrizeNum = 0;
  63848. Msg.mLeftPoint = 0;
  63849. memset(Msg.mPrize, 0, 0x3C0u);
  63850. src = pPacket->mAccount;
  63851. if ( pPacket == (Packets::LBLNewCheckPrize *)-9 )
  63852. __assert__(
  63853. "../../Common/Packets/LWRetPrize.h",
  63854. 0x8Cu,
  63855. "void Packets::LWRetPrize::SetAccName(const CHAR*)",
  63856. "pAccName");
  63857. strncpy(Msg.mAccName, src, 0x32u);
  63858. Msg.mAccName[50] = 0;
  63859. Msg.mPrizeUserID = pPacket->m_Index;
  63860. Msg.mPrizeResult = pPacket->mPrizeResult;
  63861. Msg.mRetType = 6;
  63862. if ( !Msg.mPrizeResult )
  63863. {
  63864. i = 0;
  63865. if ( pPacket->mPrizeNum )
  63866. {
  63867. v7 = pPacket;
  63868. do
  63869. {
  63870. v9 = 0;
  63871. if ( (unsigned int)i <= 0x1D )
  63872. v9 = (unsigned __int8 *)v7->mPrize;
  63873. if ( Msg.mRetType != 1 && Msg.mRetType != 5 && Msg.mRetType != 4 && Msg.mRetType != 6 && Msg.mRetType != 7 )
  63874. __assert__(
  63875. "../../Common/Packets/LWRetPrize.h",
  63876. 0xC8u,
  63877. "void Packets::LWRetPrize::AddPrize(_PRIZE_DATA*)",
  63878. "mRetType == ASK_PRIZE || mRetType == ASK_NEWUSER_CARD || mRetType == ASK_NEWPRIZE || mRetType == ASK_NEWCH"
  63879. "ECKPRIZE || mRetType == ASK_CARDCHECKPRIZE");
  63880. if ( Msg.mPrizeNum > 0x1Du )
  63881. __assert__(
  63882. "../../Common/Packets/LWRetPrize.h",
  63883. 0xC9u,
  63884. "void Packets::LWRetPrize::AddPrize(_PRIZE_DATA*)",
  63885. "mPrizeNum<MAX_PRIZE_NUMBER");
  63886. if ( !v9 )
  63887. __assert__(
  63888. "../../Common/Packets/LWRetPrize.h",
  63889. 0xCAu,
  63890. "void Packets::LWRetPrize::AddPrize(_PRIZE_DATA*)",
  63891. "pData");
  63892. qmemcpy(&Msg.mPrize[Msg.mPrizeNum], v9, 0x14u);
  63893. Msg.mPrize[Msg.mPrizeNum].m_BuyString[19] = 0;
  63894. v3 = Msg.mPrizeNum;
  63895. Msg.mPrize[Msg.mPrizeNum].m_BuyNumber = v9[20];
  63896. ++i;
  63897. v7 = (Packets::LBLNewCheckPrize *)((char *)v7 + 21);
  63898. Msg.mPrizeNum = v3 + 1;
  63899. }
  63900. while ( pPacket->mPrizeNum > i );
  63901. }
  63902. }
  63903. v4 = ServerManager::GetServerPlayer(*(ServerManager *const *)&g_pServerManager, 0);
  63904. if ( v4 )
  63905. (*((void (__cdecl **)(Player *, Packets::LWRetPrize *))v4->_vptr_Player + 3))(v4, &Msg);
  63906. CacheLog(
  63907. 0,
  63908. "LBLNewCheckPrize::Execute()...OK Acc=%s PUID=%d,Result = %d",
  63909. src,
  63910. pPacket->m_Index,
  63911. pPacket->mPrizeResult);
  63912. Msg._vptr_Packet = (int (**)(...))off_80D11A8;
  63913. Packet::~Packet(&Msg);
  63914. }
  63915. return 2;
  63916. }
  63917. // 80D11A8: using guessed type _DWORD (__cdecl *off_80D11A8[2])(Packets::LWRetPrize *this);
  63918.  
  63919. //----- (0809D36C) --------------------------------------------------------
  63920. void __cdecl _tcf_0_191(void *a1)
  63921. {
  63922. std::ios_base::Init::~Init(&std::__ioinit);
  63923. }
  63924.  
  63925. //----- (0809D37C) --------------------------------------------------------
  63926. void `global constructor keyed to'Packets::LBLNewCheckPrizeHandler::Execute()
  63927. {
  63928. std::ios_base::Init::Init(&std::__ioinit);
  63929. __cxa_atexit(_tcf_0_191, 0, &_dso_handle);
  63930. }
  63931. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  63932.  
  63933. //----- (0809D3A8) --------------------------------------------------------
  63934. UINT __cdecl Packets::LBLNewPrizeHandler::Execute(Packets::LBLNewPrize *pPacket, Player *pPlayer)
  63935. {
  63936. _BUY_DATA *v2; // esi
  63937. USHORT v3; // si
  63938. int v4; // eax
  63939. int v5; // edx
  63940. int v6; // eax
  63941. Player *v7; // eax
  63942. Packets::LBLNewPrize *v9; // esi
  63943. Packets::LBLNewPrize *v10; // edi
  63944. int v11; // eax
  63945. int v12; // edx
  63946. int v13; // eax
  63947. signed int v14; // [esp+Ch] [ebp-45Ch]
  63948. Packets::LBLNewPrize *v15; // [esp+10h] [ebp-458h]
  63949. Packets::LBLNewPrize *v16; // [esp+14h] [ebp-454h]
  63950. Packets::LBLNewPrize *v17; // [esp+18h] [ebp-450h]
  63951. char *src; // [esp+1Ch] [ebp-44Ch]
  63952. unsigned int i_0; // [esp+20h] [ebp-448h]
  63953. unsigned __int8 *v20; // [esp+2Ch] [ebp-43Ch]
  63954. unsigned int i; // [esp+30h] [ebp-438h]
  63955. Packets::LWRetPrize Msg; // [esp+40h] [ebp-428h]
  63956.  
  63957. if ( *(_DWORD *)(*(_DWORD *)&g_pServerManager + 7480) != ThreadValueManager::GetCurrentThreadID() )
  63958. __assert__(
  63959. "./Packets/LBLNewPrizeHandler.cpp",
  63960. 0xFu,
  63961. "static UINT Packets::LBLNewPrizeHandler::Execute(Packets::LBLNewPrize*, Player*)",
  63962. "FALSE");
  63963. if ( !pPlayer )
  63964. __assert__(
  63965. "./Packets/LBLNewPrizeHandler.cpp",
  63966. 0x12u,
  63967. "static UINT Packets::LBLNewPrizeHandler::Execute(Packets::LBLNewPrize*, Player*)",
  63968. "pPlayer");
  63969. if ( pPacket->mType != 1 )
  63970. __assert__(
  63971. "./Packets/LBLNewPrizeHandler.cpp",
  63972. 0x13u,
  63973. "static UINT Packets::LBLNewPrizeHandler::Execute(Packets::LBLNewPrize*, Player*)",
  63974. "pPacket->GetType() == LBLNewPrize::BL_NEW_PRIZE");
  63975. if ( (*((int (__cdecl **)(Player *))pPlayer->_vptr_Player + 25))(pPlayer) )
  63976. {
  63977. if ( !pPacket )
  63978. __assert__(
  63979. "./Packets/LBLNewPrizeHandler.cpp",
  63980. 0x1Au,
  63981. "static UINT Packets::LBLNewPrizeHandler::Execute(Packets::LBLNewPrize*, Player*)",
  63982. "pPacket");
  63983. Packet::Packet((int)&Msg);
  63984. Msg._vptr_Packet = (int (**)(...))off_80D11A8;
  63985. v2 = Msg.mPrize;
  63986. v14 = 29;
  63987. do
  63988. {
  63989. memset(v2, 0, 0x14u);
  63990. --v14;
  63991. v2->m_BuyPoint = 0;
  63992. v2->m_BuyInt = 0;
  63993. v2->m_BuyNumber = 0;
  63994. ++v2;
  63995. }
  63996. while ( v14 != -1 );
  63997. Msg.mPrizeUserID = -1;
  63998. memset(Msg.mAccName, 0, 0x30u);
  63999. *(_WORD *)&Msg.mAccName[48] = 0;
  64000. Msg.mAccName[50] = 0;
  64001. Msg.mPrizeResult = 3;
  64002. Msg.mRetType = 0;
  64003. Msg.mPrizeNum = 0;
  64004. Msg.mLeftPoint = 0;
  64005. memset(Msg.mPrize, 0, 0x3C0u);
  64006. src = pPacket->mAccount;
  64007. if ( pPacket == (Packets::LBLNewPrize *)-9 )
  64008. __assert__(
  64009. "../../Common/Packets/LWRetPrize.h",
  64010. 0x8Cu,
  64011. "void Packets::LWRetPrize::SetAccName(const CHAR*)",
  64012. "pAccName");
  64013. strncpy(Msg.mAccName, src, 0x32u);
  64014. Msg.mAccName[50] = 0;
  64015. Msg.mPrizeUserID = pPacket->m_Index;
  64016. Msg.mPrizeResult = pPacket->mPrizeResult;
  64017. Msg.mRetType = 4;
  64018. if ( Msg.mPrizeResult )
  64019. {
  64020. if ( Msg.mPrizeResult == 2 )
  64021. {
  64022. i_0 = 0;
  64023. if ( pPacket->mPrizeNum )
  64024. {
  64025. v9 = pPacket;
  64026. v10 = pPacket;
  64027. do
  64028. {
  64029. v11 = 0;
  64030. if ( i_0 <= 0x1D )
  64031. v11 = (int)v10->mPrize;
  64032. v12 = 0;
  64033. v13 = *(unsigned __int8 *)(v11 + 20);
  64034. if ( i_0 <= 0x1D )
  64035. v12 = (int)v9->mPrize;
  64036. CacheLog(0, "LBLNewPrize...AlreadyGetPrize Acc=%s price=%s,num=%d Drop", src, v12, v13);
  64037. ++i_0;
  64038. v10 = (Packets::LBLNewPrize *)((char *)v10 + 21);
  64039. v9 = (Packets::LBLNewPrize *)((char *)v9 + 21);
  64040. }
  64041. while ( pPacket->mPrizeNum > (signed int)i_0 );
  64042. }
  64043. }
  64044. }
  64045. else
  64046. {
  64047. i = 0;
  64048. if ( pPacket->mPrizeNum )
  64049. {
  64050. v17 = pPacket;
  64051. v16 = pPacket;
  64052. v15 = pPacket;
  64053. do
  64054. {
  64055. v20 = 0;
  64056. if ( i <= 0x1D )
  64057. v20 = (unsigned __int8 *)v15->mPrize;
  64058. if ( Msg.mRetType != 1 && Msg.mRetType != 5 && Msg.mRetType != 4 && Msg.mRetType != 6 && Msg.mRetType != 7 )
  64059. __assert__(
  64060. "../../Common/Packets/LWRetPrize.h",
  64061. 0xC8u,
  64062. "void Packets::LWRetPrize::AddPrize(_PRIZE_DATA*)",
  64063. "mRetType == ASK_PRIZE || mRetType == ASK_NEWUSER_CARD || mRetType == ASK_NEWPRIZE || mRetType == ASK_NEWCH"
  64064. "ECKPRIZE || mRetType == ASK_CARDCHECKPRIZE");
  64065. if ( Msg.mPrizeNum > 0x1Du )
  64066. __assert__(
  64067. "../../Common/Packets/LWRetPrize.h",
  64068. 0xC9u,
  64069. "void Packets::LWRetPrize::AddPrize(_PRIZE_DATA*)",
  64070. "mPrizeNum<MAX_PRIZE_NUMBER");
  64071. if ( !v20 )
  64072. __assert__(
  64073. "../../Common/Packets/LWRetPrize.h",
  64074. 0xCAu,
  64075. "void Packets::LWRetPrize::AddPrize(_PRIZE_DATA*)",
  64076. "pData");
  64077. qmemcpy(&Msg.mPrize[Msg.mPrizeNum], v20, 0x14u);
  64078. Msg.mPrize[Msg.mPrizeNum].m_BuyString[19] = 0;
  64079. v3 = Msg.mPrizeNum;
  64080. Msg.mPrize[Msg.mPrizeNum].m_BuyNumber = v20[20];
  64081. Msg.mPrizeNum = v3 + 1;
  64082. v4 = 0;
  64083. if ( i <= 0x1D )
  64084. v4 = (int)v16->mPrize;
  64085. v5 = 0;
  64086. v6 = *(unsigned __int8 *)(v4 + 20);
  64087. if ( i <= 0x1D )
  64088. v5 = (int)v17->mPrize;
  64089. CacheLog(0, "LBLNewPrize...GetPrize Acc=%s price=%s,num=%d", src, v5, v6);
  64090. ++i;
  64091. v15 = (Packets::LBLNewPrize *)((char *)v15 + 21);
  64092. v16 = (Packets::LBLNewPrize *)((char *)v16 + 21);
  64093. v17 = (Packets::LBLNewPrize *)((char *)v17 + 21);
  64094. }
  64095. while ( pPacket->mPrizeNum > (signed int)i );
  64096. }
  64097. }
  64098. v7 = ServerManager::GetServerPlayer(*(ServerManager *const *)&g_pServerManager, 0);
  64099. if ( v7 )
  64100. (*((void (__cdecl **)(Player *, Packets::LWRetPrize *))v7->_vptr_Player + 3))(v7, &Msg);
  64101. CacheLog(0, "LBLNewPrize::Execute()...OK Acc=%s PUID=%d,Result = %d", src, pPacket->m_Index, pPacket->mPrizeResult);
  64102. Msg._vptr_Packet = (int (**)(...))off_80D11A8;
  64103. Packet::~Packet(&Msg);
  64104. }
  64105. return 2;
  64106. }
  64107. // 80D11A8: using guessed type _DWORD (__cdecl *off_80D11A8[2])(Packets::LWRetPrize *this);
  64108.  
  64109. //----- (0809D8C4) --------------------------------------------------------
  64110. void __cdecl _tcf_0_192(void *a1)
  64111. {
  64112. std::ios_base::Init::~Init(&std::__ioinit);
  64113. }
  64114.  
  64115. //----- (0809D8D4) --------------------------------------------------------
  64116. void `global constructor keyed to'Packets::LBLNewPrizeHandler::Execute()
  64117. {
  64118. std::ios_base::Init::Init(&std::__ioinit);
  64119. __cxa_atexit(_tcf_0_192, 0, &_dso_handle);
  64120. }
  64121. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  64122.  
  64123. //----- (0809D900) --------------------------------------------------------
  64124. UINT __cdecl Packets::LBPrizeHandler::Execute(Packets::LBPrize *pPacket, Player *pPlayer)
  64125. {
  64126. return 2;
  64127. }
  64128.  
  64129. //----- (0809D90C) --------------------------------------------------------
  64130. void __cdecl _tcf_0_193(void *a1)
  64131. {
  64132. std::ios_base::Init::~Init(&std::__ioinit);
  64133. }
  64134.  
  64135. //----- (0809D91C) --------------------------------------------------------
  64136. void `global constructor keyed to'Packets::LBPrizeHandler::Execute()
  64137. {
  64138. std::ios_base::Init::Init(&std::__ioinit);
  64139. __cxa_atexit(_tcf_0_193, 0, &_dso_handle);
  64140. }
  64141. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  64142.  
  64143. //----- (0809D948) --------------------------------------------------------
  64144. UINT __cdecl Packets::LWRetPrizeHandler::Execute(Packets::LWRetPrize *pPacket, Player *pPlayer)
  64145. {
  64146. return 2;
  64147. }
  64148.  
  64149. //----- (0809D954) --------------------------------------------------------
  64150. void __cdecl _tcf_0_194(void *a1)
  64151. {
  64152. std::ios_base::Init::~Init(&std::__ioinit);
  64153. }
  64154.  
  64155. //----- (0809D964) --------------------------------------------------------
  64156. void `global constructor keyed to'Packets::LWRetPrizeHandler::Execute()
  64157. {
  64158. std::ios_base::Init::Init(&std::__ioinit);
  64159. __cxa_atexit(_tcf_0_194, 0, &_dso_handle);
  64160. }
  64161. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  64162.  
  64163. //----- (0809D990) --------------------------------------------------------
  64164. UINT __cdecl Packets::WLAskPrizeHandler::Execute(Packets::WLAskPrize *pPacket, Player *pPlayer)
  64165. {
  64166. _BUY_DATA *v2; // ebx
  64167. Player *v3; // eax
  64168. CHAR *v4; // ecx
  64169. _SERVER_DATA *v6; // eax
  64170. BYTE v7; // al
  64171. signed int v8; // edx
  64172. signed int v9; // eax
  64173. signed int v10; // eax
  64174. CHAR *v11; // ebx
  64175. signed int v12; // eax
  64176. signed int v13; // eax
  64177. int v14; // ST24_4
  64178. _DWORD *v15; // edi
  64179. signed int v16; // edx
  64180. signed int v17; // eax
  64181. signed int v18; // eax
  64182. signed int v19; // eax
  64183. int v20; // ST24_4
  64184. signed int v21; // edx
  64185. signed int v22; // eax
  64186. signed int v23; // eax
  64187. signed int v24; // eax
  64188. int v25; // ST24_4
  64189. _DWORD *v26; // eax
  64190. signed int v27; // edx
  64191. signed int v28; // eax
  64192. signed int v29; // eax
  64193. signed int v30; // eax
  64194. signed int v31; // eax
  64195. int v32; // ST24_4
  64196. signed int v33; // eax
  64197. signed int v34; // eax
  64198. signed int v35; // eax
  64199. int v36; // ST24_4
  64200. signed int v37; // eax
  64201. signed int v38; // eax
  64202. signed int v39; // eax
  64203. UINT v40; // ST24_4
  64204. signed int v41; // eax
  64205. signed int v42; // eax
  64206. signed int v43; // eax
  64207. int v44; // ST24_4
  64208. signed int v45; // [esp+Ch] [ebp-12BCh]
  64209. _PRIZE_DATA *v46; // [esp+Ch] [ebp-12BCh]
  64210. _PRIZE_DATA *v47; // [esp+Ch] [ebp-12BCh]
  64211. _PRIZE_DATA *v48; // [esp+Ch] [ebp-12BCh]
  64212. _PRIZE_DATA *v49; // [esp+Ch] [ebp-12BCh]
  64213. CHAR *v50; // [esp+14h] [ebp-12B4h]
  64214. char *src; // [esp+18h] [ebp-12B0h]
  64215. char *srca; // [esp+18h] [ebp-12B0h]
  64216. BillingPlayer *pBillPlayer; // [esp+CCh] [ebp-11FCh]
  64217. ServerPlayer *pServerPlayer; // [esp+DCh] [ebp-11ECh]
  64218. Packets::LBLCardCheckPrize Msg; // [esp+E0h] [ebp-11E8h]
  64219. Packets::LBLNewCheckPrize Msg_0; // [esp+3E0h] [ebp-EE8h]
  64220. Packets::LBLNewPrize Msg_1; // [esp+6D0h] [ebp-BF8h]
  64221. Packets::LBLAskNewUserCard Msg_2; // [esp+9E0h] [ebp-8E8h]
  64222. Packets::LBAskBuy Msg_4; // [esp+CF0h] [ebp-5D8h]
  64223. Packets::LBAskPoint Msg_3; // [esp+D80h] [ebp-548h]
  64224. Packets::LBPrize Msg_5; // [esp+DF0h] [ebp-4D8h]
  64225. CHAR szSerialKey[22]; // [esp+E80h] [ebp-448h]
  64226. Packets::LWRetPrize retMsg; // [esp+EA0h] [ebp-428h]
  64227.  
  64228. if ( *(_DWORD *)(*(_DWORD *)&g_pServerManager + 7480) != ThreadValueManager::GetCurrentThreadID() )
  64229. __assert__(
  64230. "./Packets/WLAskPrizeHandler.cpp",
  64231. 0xCBu,
  64232. "static UINT Packets::WLAskPrizeHandler::Execute(Packets::WLAskPrize*, Player*)",
  64233. "FALSE");
  64234. if ( !pPacket )
  64235. __assert__(
  64236. "./Packets/WLAskPrizeHandler.cpp",
  64237. 0x19u,
  64238. "static UINT Packets::WLAskPrizeHandler::Execute(Packets::WLAskPrize*, Player*)",
  64239. "pPacket");
  64240. if ( ServerManager::IsBillingServerActive(*(ServerManager *const *)&g_pServerManager) )
  64241. {
  64242. v3 = ServerManager::GetServerPlayer(*(ServerManager *const *)&g_pServerManager, 1);
  64243. pBillPlayer = (BillingPlayer *)v3;
  64244. if ( !v3 || !(*((int (__cdecl **)(Player *))v3->_vptr_Player + 25))(v3) )
  64245. __assert__(
  64246. "./Packets/WLAskPrizeHandler.cpp",
  64247. 0xC4u,
  64248. "static UINT Packets::WLAskPrizeHandler::Execute(Packets::WLAskPrize*, Player*)",
  64249. "FALSE");
  64250. memset(szSerialKey, 0, 0x14u);
  64251. *(_WORD *)&szSerialKey[20] = 0;
  64252. v6 = ServerManager::GetCurrentServerInfo(*(ServerManager *const *)&g_pServerManager);
  64253. GetSerialKey(szSerialKey, g_Config.m_WorldInfo.m_ZoneID, g_Config.m_WorldInfo.m_WorldID, v6->m_ServerID);
  64254. v7 = pPacket->m_askType;
  64255. if ( v7 == 1 )
  64256. {
  64257. BillPacket::BillPacket(&Msg_5);
  64258. Msg_5._vptr_BillPacket = (int (**)(...))off_80D1048;
  64259. memset(Msg_5.mAccount, 0, 0x30u);
  64260. *(_WORD *)&Msg_5.mAccount[48] = 0;
  64261. Msg_5.mAccount[50] = 0;
  64262. memset(Msg_5.mIP, 0, sizeof(Msg_5.mIP));
  64263. memset(Msg_5.mCharName, 0, 0x1Cu);
  64264. *(_WORD *)&Msg_5.mCharName[28] = 0;
  64265. Msg_5.mCharName[30] = 0;
  64266. memset(Msg_5.mPrizeSerial, 0, 0x14u);
  64267. *(_WORD *)&Msg_5.mPrizeSerial[20] = 0;
  64268. srca = pPacket->m_AccName;
  64269. Msg_5.mCharNameLength = 0;
  64270. Msg_5.mIPLength = 0;
  64271. Msg_5.mAccLength = 0;
  64272. Msg_5.mPrizeType = 0;
  64273. Msg_5.mLevel = 1;
  64274. strncpy(Msg_5.mAccount, pPacket->m_AccName, 0x32u);
  64275. Msg_5.mAccount[50] = 0;
  64276. Msg_5.mAccLength = 0;
  64277. v41 = 0;
  64278. do
  64279. {
  64280. if ( Msg_5.mAccount[v41] )
  64281. ++Msg_5.mAccLength;
  64282. ++v41;
  64283. }
  64284. while ( v41 <= 49 );
  64285. v50 = pPacket->m_CharName;
  64286. strncpy(Msg_5.mCharName, pPacket->m_CharName, 0x1Eu);
  64287. Msg_5.mCharName[30] = 0;
  64288. Msg_5.mCharNameLength = 0;
  64289. v42 = 0;
  64290. do
  64291. {
  64292. if ( Msg_5.mCharName[v42] )
  64293. ++Msg_5.mCharNameLength;
  64294. ++v42;
  64295. }
  64296. while ( v42 <= 29 );
  64297. v11 = pPacket->m_Host;
  64298. strncpy(Msg_5.mIP, pPacket->m_Host, 0xFu);
  64299. Msg_5.mIPLength = 0;
  64300. v43 = 0;
  64301. do
  64302. {
  64303. if ( Msg_5.mIP[v43] )
  64304. ++Msg_5.mIPLength;
  64305. ++v43;
  64306. }
  64307. while ( v43 <= 14 );
  64308. strncpy(Msg_5.mPrizeSerial, szSerialKey, 0x15u);
  64309. Msg_5.mPrizeSerial[21] = 0;
  64310. Msg_5.mPrizeType = pPacket->m_GoodsType;
  64311. Msg_5.m_Index = pPacket->m_PrizeUserID;
  64312. (*((void (__cdecl **)(BillingPlayer *, Packets::LBPrize *))pBillPlayer->_vptr_Player + 29))(pBillPlayer, &Msg_5);
  64313. v44 = pPacket->m_PrizeUserID;
  64314. CacheLog(0, "WLAskPrizeHandler...AskPrize acc=%s,char=%s,ip=%s,PUID=%d,key=%s", srca, v50, pPacket->m_Host);
  64315. Msg_5._vptr_BillPacket = (int (**)(...))off_80D1048;
  64316. v15 = &Msg_5;
  64317. goto LABEL_140;
  64318. }
  64319. if ( v7 == 2 )
  64320. {
  64321. BillPacket::BillPacket(&Msg_3);
  64322. Msg_3._vptr_BillPacket = (int (**)(...))off_80D0868;
  64323. memset(Msg_3.mAccount, 0, 0x30u);
  64324. *(_WORD *)&Msg_3.mAccount[48] = 0;
  64325. Msg_3.mAccount[50] = 0;
  64326. memset(Msg_3.mIP, 0, sizeof(Msg_3.mIP));
  64327. memset(Msg_3.mCharName, 0, 0x1Cu);
  64328. *(_WORD *)&Msg_3.mCharName[28] = 0;
  64329. Msg_3.mCharName[30] = 0;
  64330. Msg_3.mCharNameLength = 0;
  64331. Msg_3.mIPLength = 0;
  64332. Msg_3.mAccLength = 0;
  64333. srca = pPacket->m_AccName;
  64334. strncpy(Msg_3.mAccount, pPacket->m_AccName, 0x32u);
  64335. Msg_3.mAccount[50] = 0;
  64336. Msg_3.mAccLength = 0;
  64337. v33 = 0;
  64338. do
  64339. {
  64340. if ( Msg_3.mAccount[v33] )
  64341. ++Msg_3.mAccLength;
  64342. ++v33;
  64343. }
  64344. while ( v33 <= 49 );
  64345. v50 = pPacket->m_CharName;
  64346. strncpy(Msg_3.mCharName, pPacket->m_CharName, 0x1Eu);
  64347. Msg_3.mCharName[30] = 0;
  64348. Msg_3.mCharNameLength = 0;
  64349. v34 = 0;
  64350. do
  64351. {
  64352. if ( Msg_3.mCharName[v34] )
  64353. ++Msg_3.mCharNameLength;
  64354. ++v34;
  64355. }
  64356. while ( v34 <= 29 );
  64357. v11 = pPacket->m_Host;
  64358. strncpy(Msg_3.mIP, pPacket->m_Host, 0xFu);
  64359. Msg_3.mIPLength = 0;
  64360. v35 = 0;
  64361. do
  64362. {
  64363. if ( Msg_3.mIP[v35] )
  64364. ++Msg_3.mIPLength;
  64365. ++v35;
  64366. }
  64367. while ( v35 <= 14 );
  64368. Msg_3.m_Index = pPacket->m_PrizeUserID;
  64369. (*((void (__cdecl **)(BillingPlayer *, Packets::LBAskPoint *))pBillPlayer->_vptr_Player + 29))(
  64370. pBillPlayer,
  64371. &Msg_3);
  64372. v36 = pPacket->m_PrizeUserID;
  64373. CacheLog(0, "WLAskPrizeHandler...AskPoint acc=%s,char=%s,ip=%s,PUID=%d", srca, v50, pPacket->m_Host);
  64374. Msg_3._vptr_BillPacket = (int (**)(...))off_80D0868;
  64375. v26 = &Msg_3;
  64376. }
  64377. else
  64378. {
  64379. if ( v7 == 3 )
  64380. {
  64381. BillPacket::BillPacket(&Msg_4);
  64382. Msg_4._vptr_BillPacket = (int (**)(...))off_80D0708;
  64383. memset(Msg_4.mAccount, 0, 0x30u);
  64384. *(_WORD *)&Msg_4.mAccount[48] = 0;
  64385. Msg_4.mAccount[50] = 0;
  64386. memset(Msg_4.mIP, 0, sizeof(Msg_4.mIP));
  64387. memset(Msg_4.mCharName, 0, 0x1Cu);
  64388. *(_WORD *)&Msg_4.mCharName[28] = 0;
  64389. Msg_4.mCharName[30] = 0;
  64390. memset(Msg_4.mPrizeSerial, 0, 0x14u);
  64391. *(_WORD *)&Msg_4.mPrizeSerial[20] = 0;
  64392. srca = pPacket->m_AccName;
  64393. Msg_4.mCharNameLength = 0;
  64394. Msg_4.mIPLength = 0;
  64395. Msg_4.mAccLength = 0;
  64396. Msg_4.mGoodsTypeNum = 1;
  64397. Msg_4.mCostPoint = 0;
  64398. Msg_4.mGoodsType = 0;
  64399. Msg_4.mGoodsNumber = 0;
  64400. strncpy(Msg_4.mAccount, pPacket->m_AccName, 0x32u);
  64401. Msg_4.mAccount[50] = 0;
  64402. Msg_4.mAccLength = 0;
  64403. v37 = 0;
  64404. do
  64405. {
  64406. if ( Msg_4.mAccount[v37] )
  64407. ++Msg_4.mAccLength;
  64408. ++v37;
  64409. }
  64410. while ( v37 <= 49 );
  64411. v50 = pPacket->m_CharName;
  64412. strncpy(Msg_4.mCharName, pPacket->m_CharName, 0x1Eu);
  64413. Msg_4.mCharName[30] = 0;
  64414. Msg_4.mCharNameLength = 0;
  64415. v38 = 0;
  64416. do
  64417. {
  64418. if ( Msg_4.mCharName[v38] )
  64419. ++Msg_4.mCharNameLength;
  64420. ++v38;
  64421. }
  64422. while ( v38 <= 29 );
  64423. v11 = pPacket->m_Host;
  64424. strncpy(Msg_4.mIP, pPacket->m_Host, 0xFu);
  64425. Msg_4.mIPLength = 0;
  64426. v39 = 0;
  64427. do
  64428. {
  64429. if ( Msg_4.mIP[v39] )
  64430. ++Msg_4.mIPLength;
  64431. ++v39;
  64432. }
  64433. while ( v39 <= 14 );
  64434. strncpy(Msg_4.mPrizeSerial, szSerialKey, 0x15u);
  64435. Msg_4.mPrizeSerial[21] = 0;
  64436. Msg_4.mGoodsType = pPacket->m_GoodsType;
  64437. Msg_4.mGoodsNumber = pPacket->m_GoodsNumber;
  64438. Msg_4.mCostPoint = pPacket->m_CostPoint;
  64439. Msg_4.m_Index = pPacket->m_PrizeUserID;
  64440. (*((void (__cdecl **)(BillingPlayer *))pBillPlayer->_vptr_Player + 29))(pBillPlayer);
  64441. v40 = pPacket->m_CostPoint;
  64442. CacheLog(
  64443. 0,
  64444. "WLAskPrizeHandler...AskBuy acc=%s,char=%s,ip=%s,PUID=%d,key=%s,(%u:%u:%u)",
  64445. srca,
  64446. v50,
  64447. pPacket->m_Host,
  64448. pPacket->m_PrizeUserID,
  64449. szSerialKey,
  64450. pPacket->m_GoodsType,
  64451. pPacket->m_GoodsNumber);
  64452. Msg_4._vptr_BillPacket = (int (**)(...))off_80D0708;
  64453. BillPacket::~BillPacket(&Msg_4);
  64454. goto LABEL_113;
  64455. }
  64456. if ( v7 == 5 )
  64457. {
  64458. BillPacket::BillPacket(&Msg_2);
  64459. Msg_2._vptr_BillPacket = (int (**)(...))off_80D09E8;
  64460. v49 = Msg_2.mPrize;
  64461. v27 = 29;
  64462. do
  64463. {
  64464. memset(v49, 0, 0x14u);
  64465. --v27;
  64466. v49->m_PrizeNum = 0;
  64467. ++v49;
  64468. }
  64469. while ( v27 != -1 );
  64470. memset(Msg_2.mAccount, 0, 0x30u);
  64471. *(_WORD *)&Msg_2.mAccount[48] = 0;
  64472. Msg_2.mAccount[50] = 0;
  64473. memset(Msg_2.mIP, 0, sizeof(Msg_2.mIP));
  64474. memset(Msg_2.mCharName, 0, 0x1Cu);
  64475. *(_WORD *)&Msg_2.mCharName[28] = 0;
  64476. Msg_2.mCharName[30] = 0;
  64477. memset(Msg_2.mNewuserCard, 0, 0x14u);
  64478. Msg_2.mNewuserCard[20] = 0;
  64479. memset(Msg_2.mPrize, 0, 0x276u);
  64480. srca = pPacket->m_AccName;
  64481. Msg_2.mCharNameLength = 0;
  64482. Msg_2.mIPLength = 0;
  64483. Msg_2.mAccLength = 0;
  64484. Msg_2.mCardLength = 0;
  64485. Msg_2.mPrizeResult = 0;
  64486. Msg_2.mAccLevel = 1;
  64487. Msg_2.mAccGuid = -1;
  64488. Msg_2.mType = 0;
  64489. strncpy(Msg_2.mAccount, pPacket->m_AccName, 0x32u);
  64490. Msg_2.mAccount[50] = 0;
  64491. Msg_2.mAccLength = 0;
  64492. v28 = 0;
  64493. do
  64494. {
  64495. if ( Msg_2.mAccount[v28] )
  64496. ++Msg_2.mAccLength;
  64497. ++v28;
  64498. }
  64499. while ( v28 <= 49 );
  64500. v50 = pPacket->m_CharName;
  64501. strncpy(Msg_2.mCharName, pPacket->m_CharName, 0x1Eu);
  64502. Msg_2.mCharName[30] = 0;
  64503. Msg_2.mCharNameLength = 0;
  64504. v29 = 0;
  64505. do
  64506. {
  64507. if ( Msg_2.mCharName[v29] )
  64508. ++Msg_2.mCharNameLength;
  64509. ++v29;
  64510. }
  64511. while ( v29 <= 29 );
  64512. v11 = pPacket->m_Host;
  64513. strncpy(Msg_2.mIP, pPacket->m_Host, 0xFu);
  64514. Msg_2.mIPLength = 0;
  64515. v30 = 0;
  64516. do
  64517. {
  64518. if ( Msg_2.mIP[v30] )
  64519. ++Msg_2.mIPLength;
  64520. ++v30;
  64521. }
  64522. while ( v30 <= 14 );
  64523. strncpy(Msg_2.mNewuserCard, pPacket->m_NewUserCard, 0x14u);
  64524. Msg_2.mNewuserCard[20] = 0;
  64525. Msg_2.mCardLength = 0;
  64526. v31 = 0;
  64527. do
  64528. {
  64529. if ( Msg_2.mNewuserCard[v31] )
  64530. ++Msg_2.mCardLength;
  64531. ++v31;
  64532. }
  64533. while ( v31 <= 20 );
  64534. Msg_2.m_Index = pPacket->m_PrizeUserID;
  64535. Msg_2.mAccGuid = pPacket->m_GUID;
  64536. Msg_2.mAccLevel = pPacket->m_usAccLevel;
  64537. (*((void (__cdecl **)(BillingPlayer *, Packets::LBLAskNewUserCard *))pBillPlayer->_vptr_Player + 29))(
  64538. pBillPlayer,
  64539. &Msg_2);
  64540. v32 = pPacket->m_PrizeUserID;
  64541. CacheLog(
  64542. 0,
  64543. "WLAskPrizeHandler...ASK_NEWUSER_CARD acc=%s,char=%s,ip=%s,PUID=%d,card=%s",
  64544. srca,
  64545. v50,
  64546. pPacket->m_Host);
  64547. v15 = &Msg_2;
  64548. Msg_2._vptr_BillPacket = (int (**)(...))off_80D09E8;
  64549. goto LABEL_140;
  64550. }
  64551. if ( v7 != 4 )
  64552. {
  64553. if ( v7 == 6 )
  64554. {
  64555. BillPacket::BillPacket(&Msg_0);
  64556. Msg_0._vptr_BillPacket = (int (**)(...))off_80D0D28;
  64557. v47 = Msg_0.mPrize;
  64558. v16 = 29;
  64559. do
  64560. {
  64561. memset(v47, 0, 0x14u);
  64562. --v16;
  64563. v47->m_PrizeNum = 0;
  64564. ++v47;
  64565. }
  64566. while ( v16 != -1 );
  64567. Msg_0.mType = 1;
  64568. memset(Msg_0.mAccount, 0, 0x30u);
  64569. *(_WORD *)&Msg_0.mAccount[48] = 0;
  64570. Msg_0.mAccount[50] = 0;
  64571. memset(Msg_0.mIP, 0, sizeof(Msg_0.mIP));
  64572. memset(Msg_0.mCharName, 0, 0x1Cu);
  64573. *(_WORD *)&Msg_0.mCharName[28] = 0;
  64574. Msg_0.mCharName[30] = 0;
  64575. Msg_0.mCharNameLength = 0;
  64576. Msg_0.mIPLength = 0;
  64577. Msg_0.mAccLength = 0;
  64578. memset(Msg_0.mPrize, 0, 0x276u);
  64579. Msg_0.mPrizeResult = 0;
  64580. Msg_0.mPrizeNum = 0;
  64581. Msg_0.mType = 0;
  64582. srca = pPacket->m_AccName;
  64583. strncpy(Msg_0.mAccount, pPacket->m_AccName, 0x32u);
  64584. Msg_0.mAccount[50] = 0;
  64585. Msg_0.mAccLength = 0;
  64586. v17 = 0;
  64587. do
  64588. {
  64589. if ( Msg_0.mAccount[v17] )
  64590. ++Msg_0.mAccLength;
  64591. ++v17;
  64592. }
  64593. while ( v17 <= 49 );
  64594. v50 = pPacket->m_CharName;
  64595. strncpy(Msg_0.mCharName, pPacket->m_CharName, 0x1Eu);
  64596. Msg_0.mCharName[30] = 0;
  64597. Msg_0.mCharNameLength = 0;
  64598. v18 = 0;
  64599. do
  64600. {
  64601. if ( Msg_0.mCharName[v18] )
  64602. ++Msg_0.mCharNameLength;
  64603. ++v18;
  64604. }
  64605. while ( v18 <= 29 );
  64606. v11 = pPacket->m_Host;
  64607. strncpy(Msg_0.mIP, pPacket->m_Host, 0xFu);
  64608. Msg_0.mIPLength = 0;
  64609. v19 = 0;
  64610. do
  64611. {
  64612. if ( Msg_0.mIP[v19] )
  64613. ++Msg_0.mIPLength;
  64614. ++v19;
  64615. }
  64616. while ( v19 <= 14 );
  64617. Msg_0.m_Index = pPacket->m_PrizeUserID;
  64618. (*((void (__cdecl **)(BillingPlayer *, Packets::LBLNewCheckPrize *))pBillPlayer->_vptr_Player + 29))(
  64619. pBillPlayer,
  64620. &Msg_0);
  64621. v20 = pPacket->m_PrizeUserID;
  64622. CacheLog(0, "WLAskPrizeHandler...ASK_NEWCHECKPRIZE acc=%s,char=%s,ip=%s,PUID=%d", srca, v50, pPacket->m_Host);
  64623. v15 = &Msg_0;
  64624. Msg_0._vptr_BillPacket = (int (**)(...))off_80D0D28;
  64625. }
  64626. else
  64627. {
  64628. if ( v7 != 7 )
  64629. __assert__(
  64630. "./Packets/WLAskPrizeHandler.cpp",
  64631. 0xBCu,
  64632. "static UINT Packets::WLAskPrizeHandler::Execute(Packets::WLAskPrize*, Player*)",
  64633. "FALSE");
  64634. BillPacket::BillPacket(&Msg);
  64635. v46 = Msg.mPrize;
  64636. Msg._vptr_BillPacket = (int (**)(...))off_80D0B88;
  64637. v8 = 29;
  64638. do
  64639. {
  64640. memset(v46, 0, 0x14u);
  64641. --v8;
  64642. v46->m_PrizeNum = 0;
  64643. ++v46;
  64644. }
  64645. while ( v8 != -1 );
  64646. memset(Msg.mAccount, 0, 0x30u);
  64647. *(_WORD *)&Msg.mAccount[48] = 0;
  64648. Msg.mAccount[50] = 0;
  64649. memset(Msg.mIP, 0, sizeof(Msg.mIP));
  64650. memset(Msg.mCharName, 0, 0x1Cu);
  64651. *(_WORD *)&Msg.mCharName[28] = 0;
  64652. Msg.mCharName[30] = 0;
  64653. memset(Msg.mNewuserCard, 0, 0x14u);
  64654. Msg.mNewuserCard[20] = 0;
  64655. memset(Msg.mPrize, 0, 0x276u);
  64656. srca = pPacket->m_AccName;
  64657. Msg.mCharNameLength = 0;
  64658. Msg.mIPLength = 0;
  64659. Msg.mAccLength = 0;
  64660. Msg.mCardLength = 0;
  64661. Msg.mPrizeResult = 0;
  64662. Msg.mType = 0;
  64663. strncpy(Msg.mAccount, pPacket->m_AccName, 0x32u);
  64664. Msg.mAccount[50] = 0;
  64665. Msg.mAccLength = 0;
  64666. v9 = 0;
  64667. do
  64668. {
  64669. if ( Msg.mAccount[v9] )
  64670. ++Msg.mAccLength;
  64671. ++v9;
  64672. }
  64673. while ( v9 <= 49 );
  64674. v50 = pPacket->m_CharName;
  64675. strncpy(Msg.mCharName, pPacket->m_CharName, 0x1Eu);
  64676. Msg.mCharName[30] = 0;
  64677. Msg.mCharNameLength = 0;
  64678. v10 = 0;
  64679. do
  64680. {
  64681. if ( Msg.mCharName[v10] )
  64682. ++Msg.mCharNameLength;
  64683. ++v10;
  64684. }
  64685. while ( v10 <= 29 );
  64686. v11 = pPacket->m_Host;
  64687. strncpy(Msg.mIP, pPacket->m_Host, 0xFu);
  64688. Msg.mIPLength = 0;
  64689. v12 = 0;
  64690. do
  64691. {
  64692. if ( Msg.mIP[v12] )
  64693. ++Msg.mIPLength;
  64694. ++v12;
  64695. }
  64696. while ( v12 <= 14 );
  64697. strncpy(Msg.mNewuserCard, pPacket->m_NewUserCard, 0x14u);
  64698. Msg.mNewuserCard[20] = 0;
  64699. Msg.mCardLength = 0;
  64700. v13 = 0;
  64701. do
  64702. {
  64703. if ( Msg.mNewuserCard[v13] )
  64704. ++Msg.mCardLength;
  64705. ++v13;
  64706. }
  64707. while ( v13 <= 20 );
  64708. Msg.m_Index = pPacket->m_PrizeUserID;
  64709. (*((void (__cdecl **)(BillingPlayer *, Packets::LBLCardCheckPrize *))pBillPlayer->_vptr_Player + 29))(
  64710. pBillPlayer,
  64711. &Msg);
  64712. v14 = pPacket->m_PrizeUserID;
  64713. CacheLog(
  64714. 0,
  64715. "WLAskPrizeHandler...ASK_CARDCHECKPRIZE acc=%s,char=%s,ip=%s,PUID=%d,card=%s",
  64716. srca,
  64717. v50,
  64718. pPacket->m_Host);
  64719. v15 = &Msg;
  64720. Msg._vptr_BillPacket = (int (**)(...))off_80D0B88;
  64721. }
  64722. LABEL_140:
  64723. BillPacket::~BillPacket(v15);
  64724. goto LABEL_113;
  64725. }
  64726. BillPacket::BillPacket(&Msg_1);
  64727. v48 = Msg_1.mPrize;
  64728. Msg_1._vptr_BillPacket = (int (**)(...))off_80D0EC8;
  64729. v21 = 29;
  64730. do
  64731. {
  64732. memset(v48, 0, 0x14u);
  64733. --v21;
  64734. v48->m_PrizeNum = 0;
  64735. ++v48;
  64736. }
  64737. while ( v21 != -1 );
  64738. Msg_1.mType = 1;
  64739. memset(Msg_1.mAccount, 0, 0x30u);
  64740. *(_WORD *)&Msg_1.mAccount[48] = 0;
  64741. Msg_1.mAccount[50] = 0;
  64742. memset(Msg_1.mIP, 0, sizeof(Msg_1.mIP));
  64743. memset(Msg_1.mCharName, 0, 0x1Cu);
  64744. *(_WORD *)&Msg_1.mCharName[28] = 0;
  64745. Msg_1.mCharName[30] = 0;
  64746. memset(Msg_1.mPrizeSerial, 0, 0x14u);
  64747. *(_WORD *)&Msg_1.mPrizeSerial[20] = 0;
  64748. Msg_1.mCharNameLength = 0;
  64749. Msg_1.mIPLength = 0;
  64750. Msg_1.mAccLength = 0;
  64751. memset(Msg_1.mPrize, 0, 0x276u);
  64752. srca = pPacket->m_AccName;
  64753. Msg_1.mPrizeResult = 0;
  64754. Msg_1.mPrizeNum = 0;
  64755. Msg_1.mAccGuid = -1;
  64756. Msg_1.mAccLevel = 1;
  64757. Msg_1.mType = 0;
  64758. strncpy(Msg_1.mAccount, pPacket->m_AccName, 0x32u);
  64759. Msg_1.mAccount[50] = 0;
  64760. Msg_1.mAccLength = 0;
  64761. v22 = 0;
  64762. do
  64763. {
  64764. if ( Msg_1.mAccount[v22] )
  64765. ++Msg_1.mAccLength;
  64766. ++v22;
  64767. }
  64768. while ( v22 <= 49 );
  64769. v50 = pPacket->m_CharName;
  64770. strncpy(Msg_1.mCharName, pPacket->m_CharName, 0x1Eu);
  64771. Msg_1.mCharName[30] = 0;
  64772. Msg_1.mCharNameLength = 0;
  64773. v23 = 0;
  64774. do
  64775. {
  64776. if ( Msg_1.mCharName[v23] )
  64777. ++Msg_1.mCharNameLength;
  64778. ++v23;
  64779. }
  64780. while ( v23 <= 29 );
  64781. v11 = pPacket->m_Host;
  64782. strncpy(Msg_1.mIP, pPacket->m_Host, 0xFu);
  64783. Msg_1.mIPLength = 0;
  64784. v24 = 0;
  64785. do
  64786. {
  64787. if ( Msg_1.mIP[v24] )
  64788. ++Msg_1.mIPLength;
  64789. ++v24;
  64790. }
  64791. while ( v24 <= 14 );
  64792. strncpy(Msg_1.mPrizeSerial, szSerialKey, 0x15u);
  64793. Msg_1.mPrizeSerial[21] = 0;
  64794. Msg_1.mAccLevel = pPacket->m_usAccLevel;
  64795. Msg_1.mAccGuid = pPacket->m_GUID;
  64796. Msg_1.m_Index = pPacket->m_PrizeUserID;
  64797. (*((void (__cdecl **)(BillingPlayer *, Packets::LBLNewPrize *))pBillPlayer->_vptr_Player + 29))(
  64798. pBillPlayer,
  64799. &Msg_1);
  64800. v25 = pPacket->m_PrizeUserID;
  64801. CacheLog(0, "WLAskPrizeHandler...ASK_NEWPRIZE acc=%s,char=%s,ip=%s,PUID=%d key=%s", srca, v50, pPacket->m_Host);
  64802. v26 = &Msg_1;
  64803. Msg_1._vptr_BillPacket = (int (**)(...))off_80D0EC8;
  64804. }
  64805. BillPacket::~BillPacket(v26);
  64806. LABEL_113:
  64807. CacheLog(0, "WLAskPrizeHandler::Execute ...OK acc=%s,char=%s,ip=%s,PUID=%d", srca, v50, v11, pPacket->m_PrizeUserID);
  64808. return 2;
  64809. }
  64810. pServerPlayer = (ServerPlayer *)ServerManager::GetServerPlayer(*(ServerManager *const *)&g_pServerManager, 0);
  64811. if ( pServerPlayer )
  64812. {
  64813. Packet::Packet((int)&retMsg);
  64814. retMsg._vptr_Packet = (int (**)(...))off_80D11A8;
  64815. v2 = retMsg.mPrize;
  64816. v45 = 29;
  64817. do
  64818. {
  64819. memset(v2, 0, 0x14u);
  64820. --v45;
  64821. v2->m_BuyPoint = 0;
  64822. v2->m_BuyInt = 0;
  64823. v2->m_BuyNumber = 0;
  64824. ++v2;
  64825. }
  64826. while ( v45 != -1 );
  64827. retMsg.mPrizeUserID = -1;
  64828. memset(retMsg.mAccName, 0, 0x30u);
  64829. *(_WORD *)&retMsg.mAccName[48] = 0;
  64830. retMsg.mAccName[50] = 0;
  64831. retMsg.mPrizeResult = 3;
  64832. retMsg.mRetType = 0;
  64833. retMsg.mPrizeNum = 0;
  64834. retMsg.mLeftPoint = 0;
  64835. memset(retMsg.mPrize, 0, 0x3C0u);
  64836. if ( (unsigned __int8)(pPacket->m_askType - 1) > 6u )
  64837. __assert__(
  64838. "../../Common/Packets/LWRetPrize.h",
  64839. 0xAEu,
  64840. "void Packets::LWRetPrize::SetRetType(BYTE)",
  64841. "ty > ASK_INVALID && ty < ASK_NUMBER");
  64842. retMsg.mRetType = pPacket->m_askType;
  64843. src = pPacket->m_AccName;
  64844. if ( pPacket == (Packets::WLAskPrize *)-14 )
  64845. __assert__(
  64846. "../../Common/Packets/LWRetPrize.h",
  64847. 0x8Cu,
  64848. "void Packets::LWRetPrize::SetAccName(const CHAR*)",
  64849. "pAccName");
  64850. strncpy(retMsg.mAccName, src, 0x32u);
  64851. retMsg.mAccName[50] = 0;
  64852. retMsg.mPrizeUserID = pPacket->m_PrizeUserID;
  64853. switch ( retMsg.mRetType )
  64854. {
  64855. case 3u:
  64856. retMsg.mPrizeResult = 9;
  64857. break;
  64858. default:
  64859. retMsg.mPrizeResult = 3;
  64860. break;
  64861. }
  64862. (*((void (__cdecl **)(ServerPlayer *, Packets::LWRetPrize *))pServerPlayer->_vptr_Player + 3))(
  64863. pServerPlayer,
  64864. &retMsg);
  64865. retMsg._vptr_Packet = (int (**)(...))off_80D11A8;
  64866. Packet::~Packet(&retMsg);
  64867. }
  64868. else
  64869. {
  64870. v4 = pPacket->m_AccName;
  64871. src = pPacket->m_AccName;
  64872. }
  64873. CacheLog(
  64874. 0,
  64875. "ERROR:WLAskPrizeHandler...AskType=%d acc=%s,char=%s,ip=%s,PUID=%d BillingPlayer is Down!!",
  64876. pPacket->m_askType,
  64877. src,
  64878. pPacket->m_CharName,
  64879. pPacket->m_Host,
  64880. pPacket->m_PrizeUserID,
  64881. v4);
  64882. return 2;
  64883. }
  64884. // 80D0708: using guessed type _DWORD (__cdecl *off_80D0708[2])(Packets::LBAskBuy *this);
  64885. // 80D0868: using guessed type _DWORD (__cdecl *off_80D0868[2])(Packets::LBAskPoint *this);
  64886. // 80D09E8: using guessed type _DWORD (__cdecl *off_80D09E8[2])(Packets::LBLAskNewUserCard *this);
  64887. // 80D0B88: using guessed type _DWORD (__cdecl *off_80D0B88[2])(Packets::LBLCardCheckPrize *this);
  64888. // 80D0D28: using guessed type _DWORD (__cdecl *off_80D0D28[2])(Packets::LBLNewCheckPrize *this);
  64889. // 80D0EC8: using guessed type _DWORD (__cdecl *off_80D0EC8[2])(Packets::LBLNewPrize *this);
  64890. // 80D1048: using guessed type _DWORD (__cdecl *off_80D1048[2])(Packets::LBPrize *this);
  64891. // 80D11A8: using guessed type _DWORD (__cdecl *off_80D11A8[2])(Packets::LWRetPrize *this);
  64892.  
  64893. //----- (0809EDC0) --------------------------------------------------------
  64894. void __cdecl _tcf_0_195(void *a1)
  64895. {
  64896. std::ios_base::Init::~Init(&std::__ioinit);
  64897. }
  64898.  
  64899. //----- (0809EDD0) --------------------------------------------------------
  64900. void `global constructor keyed to'Packets::WLAskPrizeHandler::Execute()
  64901. {
  64902. std::ios_base::Init::Init(&std::__ioinit);
  64903. __cxa_atexit(_tcf_0_195, 0, &_dso_handle);
  64904. }
  64905. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  64906.  
  64907. //----- (0809EDFC) --------------------------------------------------------
  64908. UINT __cdecl Packets::GWLWGCostLogHandler::Execute(Packets::GWLWGCostLog *pPacket, Player *pPlayer)
  64909. {
  64910. Player *v3; // eax
  64911. Player *v4; // esi
  64912. ID_t v5; // ax
  64913. Packets::LBLCostLog Msg; // [esp+0h] [ebp-1C8h]
  64914.  
  64915. if ( *(_DWORD *)(*(_DWORD *)&g_pServerManager + 7480) != ThreadValueManager::GetCurrentThreadID() )
  64916. __assert__(
  64917. "./Packets/GWLWGCostLogHandler.cpp",
  64918. 0x31u,
  64919. "static UINT Packets::GWLWGCostLogHandler::Execute(Packets::GWLWGCostLog*, Player*)",
  64920. "FALSE");
  64921. if ( !pPacket )
  64922. __assert__(
  64923. "./Packets/GWLWGCostLogHandler.cpp",
  64924. 0xEu,
  64925. "static UINT Packets::GWLWGCostLogHandler::Execute(Packets::GWLWGCostLog*, Player*)",
  64926. "pPacket");
  64927. if ( pPacket->m_nType == 1 )
  64928. {
  64929. v3 = ServerManager::GetServerPlayer(*(ServerManager *const *)&g_pServerManager, 1);
  64930. v4 = v3;
  64931. if ( !v3 || !(*((int (__cdecl **)(Player *))v3->_vptr_Player + 25))(v3) )
  64932. __assert__(
  64933. "./Packets/GWLWGCostLogHandler.cpp",
  64934. 0x23u,
  64935. "static UINT Packets::GWLWGCostLogHandler::Execute(Packets::GWLWGCostLog*, Player*)",
  64936. "FALSE");
  64937. BillPacket::BillPacket(&Msg);
  64938. Msg._vptr_BillPacket = (int (**)(...))off_80D1948;
  64939. memset(Msg.mAccount, 0, 0x30u);
  64940. *(_WORD *)&Msg.mAccount[48] = 0;
  64941. Msg.mAccount[50] = 0;
  64942. memset(Msg.mIP, 0, sizeof(Msg.mIP));
  64943. memset(Msg.mCharName, 0, 0x1Cu);
  64944. *(_WORD *)&Msg.mCharName[28] = 0;
  64945. Msg.mCharName[30] = 0;
  64946. memset(Msg.mSerial, 0, 0x14u);
  64947. *(_WORD *)&Msg.mSerial[20] = 0;
  64948. memset(Msg.mOtherInfo, 0, 0x100u);
  64949. Msg.mOtherLength = 0;
  64950. Msg.mCharNameLength = 0;
  64951. Msg.mIPLength = 0;
  64952. Msg.mAccLength = 0;
  64953. Msg.mUserLevel = 0;
  64954. Msg.mType = 1;
  64955. Msg.mResult = 0;
  64956. Msg.mZoneID = g_Config.m_WorldInfo.m_ZoneID;
  64957. v5 = pPacket->m_LogPos;
  64958. Msg.mWorldId = 0;
  64959. Msg.mServerId = 0;
  64960. Msg.mSceneId = 0;
  64961. Msg.mUserGUID = -1;
  64962. Msg.mCostTime = 0;
  64963. Msg.mYuanBao = 0;
  64964. Msg.m_Index = v5;
  64965. Packets::LBLCostLog::SetCostInfo(&Msg, &pPacket->m_LogInfo);
  64966. (*((void (__cdecl **)(Player *, Packets::LBLCostLog *))v4->_vptr_Player + 29))(v4, &Msg);
  64967. CacheLog(0, "GWLWGCostLogHandler::Execute ...Send to Billing OK key=%s", &pPacket->m_LogInfo);
  64968. Msg._vptr_BillPacket = (int (**)(...))off_80D1948;
  64969. BillPacket::~BillPacket(&Msg);
  64970. }
  64971. else
  64972. {
  64973. CacheLog(0, "ERROR:GWLWGCostLogHandler::Execute()...Invalid Type Find!");
  64974. }
  64975. return 2;
  64976. }
  64977. // 80D1948: using guessed type _DWORD (__cdecl *off_80D1948[2])(Packets::LBLCostLog *this);
  64978.  
  64979. //----- (0809F06C) --------------------------------------------------------
  64980. void __cdecl _tcf_0_196(void *a1)
  64981. {
  64982. std::ios_base::Init::~Init(&std::__ioinit);
  64983. }
  64984.  
  64985. //----- (0809F07C) --------------------------------------------------------
  64986. void `global constructor keyed to'Packets::GWLWGCostLogHandler::Execute()
  64987. {
  64988. std::ios_base::Init::Init(&std::__ioinit);
  64989. __cxa_atexit(_tcf_0_196, 0, &_dso_handle);
  64990. }
  64991. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  64992.  
  64993. //----- (0809F0A8) --------------------------------------------------------
  64994. UINT __cdecl Packets::LBLCostLogHandler::Execute(Packets::LBLCostLog *pPacket, Player *pPlayer)
  64995. {
  64996. Player *v2; // eax
  64997. Packets::GWLWGCostLog costMsg; // [esp+0h] [ebp-1E8h]
  64998.  
  64999. if ( *(_DWORD *)(*(_DWORD *)&g_pServerManager + 7480) != ThreadValueManager::GetCurrentThreadID() )
  65000. __assert__(
  65001. "./Packets/LBLCostLogHandler.cpp",
  65002. 0xFu,
  65003. "static UINT Packets::LBLCostLogHandler::Execute(Packets::LBLCostLog*, Player*)",
  65004. "FALSE");
  65005. if ( !pPlayer )
  65006. __assert__(
  65007. "./Packets/LBLCostLogHandler.cpp",
  65008. 0x12u,
  65009. "static UINT Packets::LBLCostLogHandler::Execute(Packets::LBLCostLog*, Player*)",
  65010. "pPlayer");
  65011. if ( pPacket->mType != 1 )
  65012. __assert__(
  65013. "./Packets/LBLCostLogHandler.cpp",
  65014. 0x13u,
  65015. "static UINT Packets::LBLCostLogHandler::Execute(Packets::LBLCostLog*, Player*)",
  65016. "pPacket->GetType() == LBLCostLog::BL_COST_LOG");
  65017. if ( (*((int (__cdecl **)(Player *))pPlayer->_vptr_Player + 25))(pPlayer) )
  65018. {
  65019. if ( !pPacket )
  65020. __assert__(
  65021. "./Packets/LBLCostLogHandler.cpp",
  65022. 0x1Au,
  65023. "static UINT Packets::LBLCostLogHandler::Execute(Packets::LBLCostLog*, Player*)",
  65024. "pPacket");
  65025. Packet::Packet((int)&costMsg);
  65026. costMsg._vptr_Packet = (int (**)(...))off_80D17E8;
  65027. memset(&costMsg.m_LogInfo, 0, 0x1A0u);
  65028. costMsg.m_LogInfo.m_UserGUID = -1;
  65029. memset(costMsg.m_SerialKey, 0, 0x14u);
  65030. *(_WORD *)&costMsg.m_SerialKey[20] = 0;
  65031. costMsg.m_nType = 2;
  65032. costMsg.m_LogPos = pPacket->m_Index;
  65033. costMsg.m_nResult = pPacket->mResult;
  65034. if ( pPacket == (Packets::LBLCostLog *)-8 )
  65035. __assert__(
  65036. "../../Common/Packets/GWLWGCostLog.h",
  65037. 0x4Fu,
  65038. "void Packets::GWLWGCostLog::SetBillingRetKey(const CHAR*)",
  65039. "pSerial");
  65040. strncpy(costMsg.m_SerialKey, pPacket->mSerial, 0x15u);
  65041. costMsg.m_SerialKey[21] = 0;
  65042. v2 = ServerManager::GetServerPlayer(*(ServerManager *const *)&g_pServerManager, 0);
  65043. if ( v2 )
  65044. (*((void (__cdecl **)(Player *, Packets::GWLWGCostLog *))v2->_vptr_Player + 3))(v2, &costMsg);
  65045. CacheLog(
  65046. 0,
  65047. "LBLCostLog::Execute()...OK POS=%d Result=%d key=%s",
  65048. pPacket->m_Index,
  65049. pPacket->mResult,
  65050. pPacket->mSerial);
  65051. costMsg._vptr_Packet = (int (**)(...))off_80D17E8;
  65052. Packet::~Packet(&costMsg);
  65053. }
  65054. return 2;
  65055. }
  65056. // 80D17E8: using guessed type _DWORD (__cdecl *off_80D17E8[2])(Packets::GWLWGCostLog *this);
  65057.  
  65058. //----- (0809F2E4) --------------------------------------------------------
  65059. void __cdecl _tcf_0_197(void *a1)
  65060. {
  65061. std::ios_base::Init::~Init(&std::__ioinit);
  65062. }
  65063.  
  65064. //----- (0809F2F4) --------------------------------------------------------
  65065. void `global constructor keyed to'Packets::LBLCostLogHandler::Execute()
  65066. {
  65067. std::ios_base::Init::Init(&std::__ioinit);
  65068. __cxa_atexit(_tcf_0_197, 0, &_dso_handle);
  65069. }
  65070. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  65071.  
  65072. //----- (0809F320) --------------------------------------------------------
  65073. UINT __cdecl Packets::LBLAskMigHandler::Execute(Packets::LBLAskMig *pPacket, Player *pPlayer)
  65074. {
  65075. _BUY_DATA *v2; // ebx
  65076. Player *v3; // eax
  65077. signed int v5; // [esp+Ch] [ebp-43Ch]
  65078. Packets::LWRetPrize Msg; // [esp+20h] [ebp-428h]
  65079.  
  65080. if ( *(_DWORD *)(*(_DWORD *)&g_pServerManager + 7480) != ThreadValueManager::GetCurrentThreadID() )
  65081. __assert__(
  65082. "./Packets/LBLAskMigHandler.cpp",
  65083. 0xFu,
  65084. "static UINT Packets::LBLAskMigHandler::Execute(Packets::LBLAskMig*, Player*)",
  65085. "FALSE");
  65086. if ( !pPlayer )
  65087. __assert__(
  65088. "./Packets/LBLAskMigHandler.cpp",
  65089. 0x12u,
  65090. "static UINT Packets::LBLAskMigHandler::Execute(Packets::LBLAskMig*, Player*)",
  65091. "pPlayer");
  65092. if ( pPacket->mType != 1 )
  65093. __assert__(
  65094. "./Packets/LBLAskMigHandler.cpp",
  65095. 0x13u,
  65096. "static UINT Packets::LBLAskMigHandler::Execute(Packets::LBLAskMig*, Player*)",
  65097. "pPacket->GetType() == LBLAskMig::BL_ASKMIG");
  65098. if ( (*((int (__cdecl **)(Player *))pPlayer->_vptr_Player + 25))(pPlayer) )
  65099. {
  65100. if ( !pPacket )
  65101. __assert__(
  65102. "./Packets/LBLAskMigHandler.cpp",
  65103. 0x1Au,
  65104. "static UINT Packets::LBLAskMigHandler::Execute(Packets::LBLAskMig*, Player*)",
  65105. "pPacket");
  65106. Packet::Packet((int)&Msg);
  65107. Msg._vptr_Packet = (int (**)(...))off_80D11A8;
  65108. v2 = Msg.mPrize;
  65109. v5 = 29;
  65110. do
  65111. {
  65112. memset(v2, 0, 0x14u);
  65113. --v5;
  65114. v2->m_BuyPoint = 0;
  65115. v2->m_BuyInt = 0;
  65116. v2->m_BuyNumber = 0;
  65117. ++v2;
  65118. }
  65119. while ( v5 != -1 );
  65120. Msg.mPrizeUserID = -1;
  65121. memset(Msg.mAccName, 0, 0x30u);
  65122. *(_WORD *)&Msg.mAccName[48] = 0;
  65123. Msg.mAccName[50] = 0;
  65124. Msg.mPrizeResult = 3;
  65125. Msg.mRetType = 0;
  65126. Msg.mPrizeNum = 0;
  65127. Msg.mLeftPoint = 0;
  65128. memset(Msg.mPrize, 0, 0x3C0u);
  65129. v3 = ServerManager::GetServerPlayer(*(ServerManager *const *)&g_pServerManager, 0);
  65130. if ( v3 )
  65131. (*((void (__cdecl **)(Player *, Packets::LWRetPrize *))v3->_vptr_Player + 3))(v3, &Msg);
  65132. CacheLog(
  65133. 0,
  65134. "LBLAskMig::Execute()...OK Acc=%s PUID=%d,Result = %d",
  65135. pPacket->mAccount,
  65136. pPacket->m_Index,
  65137. pPacket->mMigResult);
  65138. Msg._vptr_Packet = (int (**)(...))off_80D11A8;
  65139. Packet::~Packet(&Msg);
  65140. }
  65141. return 2;
  65142. }
  65143. // 80D11A8: using guessed type _DWORD (__cdecl *off_80D11A8[2])(Packets::LWRetPrize *this);
  65144.  
  65145. //----- (0809F57C) --------------------------------------------------------
  65146. void __cdecl _tcf_0_198(void *a1)
  65147. {
  65148. std::ios_base::Init::~Init(&std::__ioinit);
  65149. }
  65150.  
  65151. //----- (0809F58C) --------------------------------------------------------
  65152. void `global constructor keyed to'Packets::LBLAskMigHandler::Execute()
  65153. {
  65154. std::ios_base::Init::Init(&std::__ioinit);
  65155. __cxa_atexit(_tcf_0_198, 0, &_dso_handle);
  65156. }
  65157. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  65158.  
  65159. //----- (0809F5B8) --------------------------------------------------------
  65160. UINT __cdecl Packets::LWChangeNameHandler::Execute(Packets::LWChangeName *pPacket, Player *pPlayer)
  65161. {
  65162. if ( *(_DWORD *)(*(_DWORD *)&g_pServerManager + 7480) != ThreadValueManager::GetCurrentThreadID() )
  65163. __assertex__(
  65164. "./Packets/LWChangeNameHandler.cpp",
  65165. 0x1Au,
  65166. "static UINT Packets::LWChangeNameHandler::Execute(Packets::LWChangeName*, Player*)",
  65167. "FALSE",
  65168. aLwchangenameha_0);
  65169. if ( !pPacket )
  65170. __assert__(
  65171. "./Packets/LWChangeNameHandler.cpp",
  65172. 0x10u,
  65173. "static UINT Packets::LWChangeNameHandler::Execute(Packets::LWChangeName*, Player*)",
  65174. "pPacket");
  65175. if ( !pPlayer )
  65176. __assert__(
  65177. "./Packets/LWChangeNameHandler.cpp",
  65178. 0x14u,
  65179. "static UINT Packets::LWChangeNameHandler::Execute(Packets::LWChangeName*, Player*)",
  65180. "pServerPlayer");
  65181. (*((void (__cdecl **)(Player *, Packets::LWChangeName *))pPlayer->_vptr_Player + 3))(pPlayer, pPacket);
  65182. CacheLog(0, "LWChangeNameHandler::Execute() ....OK");
  65183. return 2;
  65184. }
  65185.  
  65186. //----- (0809F6B4) --------------------------------------------------------
  65187. void __cdecl _tcf_0_199(void *a1)
  65188. {
  65189. std::ios_base::Init::~Init(&std::__ioinit);
  65190. }
  65191.  
  65192. //----- (0809F6C4) --------------------------------------------------------
  65193. void `global constructor keyed to'Packets::LWChangeNameHandler::Execute()
  65194. {
  65195. std::ios_base::Init::Init(&std::__ioinit);
  65196. __cxa_atexit(_tcf_0_199, 0, &_dso_handle);
  65197. }
  65198. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  65199.  
  65200. //----- (0809F6F0) --------------------------------------------------------
  65201. UINT __cdecl Packets::WLChangeNameHandler::Execute(Packets::WLChangeName *pPacket, Player *pPlayer)
  65202. {
  65203. int v2; // ebx
  65204. ODBCInterface *v3; // esi
  65205. Packet *v4; // eax
  65206. Packets::SChgNamePacketUnit *v5; // ebx
  65207. Packet *v6; // eax
  65208. Packet *v7; // esi
  65209. Packets::SChgNamePacketUnit *v8; // ebx
  65210. INT v9; // ST24_4
  65211. int (**v10)(...); // eax
  65212. GUID_t v12; // edi
  65213. CHAR *v13; // eax
  65214. CHAR *pName; // [esp+10h] [ebp-108h]
  65215. Packets::LWChangeName *pMsg; // [esp+1Ch] [ebp-FCh]
  65216. DBImmigration ImmigrationInfo; // [esp+20h] [ebp-F8h]
  65217. Packets::LWChangeName Msg; // [esp+A0h] [ebp-78h]
  65218.  
  65219. v2 = ThreadValueManager::GetCurrentThreadID();
  65220. if ( *(_DWORD *)(*(_DWORD *)&g_pServerManager + 7480) == v2 )
  65221. {
  65222. if ( !pPacket )
  65223. __assert__(
  65224. "./Packets/WLChangeNameHandler.cpp",
  65225. 0x14u,
  65226. "static UINT Packets::WLChangeNameHandler::Execute(Packets::WLChangeName*, Player*)",
  65227. "pPacket");
  65228. if ( !pPlayer )
  65229. __assert__(
  65230. "./Packets/WLChangeNameHandler.cpp",
  65231. 0x16u,
  65232. "static UINT Packets::WLChangeNameHandler::Execute(Packets::WLChangeName*, Player*)",
  65233. "pServerPlayer");
  65234. v6 = PacketFactoryManager::CreatePacket(g_pPacketFactoryManager, 0x97u);
  65235. v7 = v6;
  65236. if ( v6 )
  65237. {
  65238. v8 = (Packets::SChgNamePacketUnit *)&v6[1];
  65239. *(_DWORD *)&v6[1].m_Index = pPacket->m_sPacketUnit.m_UserGuid;
  65240. Packets::SChgNamePacketUnit::SetUserOldName(
  65241. (Packets::SChgNamePacketUnit *const )&v6[1],
  65242. pPacket->m_sPacketUnit.m_opType,
  65243. pPacket->m_sPacketUnit.m_UserOldName);
  65244. Packets::SChgNamePacketUnit::SetUserNewName(
  65245. v8,
  65246. pPacket->m_sPacketUnit.m_opType,
  65247. pPacket->m_sPacketUnit.m_UserNewName);
  65248. v8->m_reType = pPacket->m_sPacketUnit.m_reType;
  65249. if ( !DBThreadManager::SendPacket(g_pDBThreadManager, v7, -1) )
  65250. {
  65251. PacketFactoryManager::RemovePacket(g_pPacketFactoryManager, v7);
  65252. Packet::Packet((int)&Msg);
  65253. Msg._vptr_Packet = (int (**)(...))off_80D1CE8;
  65254. Packets::SChgNamePacketUnit::SChgNamePacketUnit(&Msg.m_sPacketUnit.m_opType);
  65255. v9 = pPacket->m_sPacketUnit.m_opType;
  65256. Msg.m_sPacketUnit.m_UserGuid = pPacket->m_sPacketUnit.m_UserGuid;
  65257. Packets::SChgNamePacketUnit::SetUserOldName(&Msg.m_sPacketUnit, v9, pPacket->m_sPacketUnit.m_UserOldName);
  65258. Packets::SChgNamePacketUnit::SetUserNewName(
  65259. &Msg.m_sPacketUnit,
  65260. pPacket->m_sPacketUnit.m_opType,
  65261. pPacket->m_sPacketUnit.m_UserNewName);
  65262. v10 = pPlayer->_vptr_Player;
  65263. Msg.m_sPacketUnit.m_reType = 2;
  65264. ((void (__cdecl *)(Player *, Packets::LWChangeName *))v10[3])(pPlayer, &Msg);
  65265. CacheLog(0, "WLChangeNameHandler::Execute()....Server Busy GUID = %X", pPacket->m_sPacketUnit.m_UserGuid);
  65266. Msg._vptr_Packet = (int (**)(...))off_80D1CE8;
  65267. Packet::~Packet(&Msg);
  65268. }
  65269. }
  65270. }
  65271. else
  65272. {
  65273. if ( !DBThreadManager::IsPoolTID(g_pDBThreadManager, v2) )
  65274. __assert__(
  65275. "./Packets/WLChangeNameHandler.cpp",
  65276. 0x7Cu,
  65277. "static UINT Packets::WLChangeNameHandler::Execute(Packets::WLChangeName*, Player*)",
  65278. "FALSE");
  65279. if ( pPlayer )
  65280. __assert__(
  65281. "./Packets/WLChangeNameHandler.cpp",
  65282. 0x35u,
  65283. "static UINT Packets::WLChangeNameHandler::Execute(Packets::WLChangeName*, Player*)",
  65284. aNull);
  65285. v3 = DBThreadManager::GetInterface(g_pDBThreadManager, v2);
  65286. if ( v3 )
  65287. {
  65288. v4 = PacketFactoryManager::CreatePacket(g_pPacketFactoryManager, 0x1CBu);
  65289. pMsg = (Packets::LWChangeName *)v4;
  65290. if ( v4 )
  65291. {
  65292. v5 = (Packets::SChgNamePacketUnit *)&v4[1];
  65293. *(_DWORD *)&v4[1].m_Index = pPacket->m_sPacketUnit.m_UserGuid;
  65294. Packets::SChgNamePacketUnit::SetUserOldName(
  65295. (Packets::SChgNamePacketUnit *const )&v4[1],
  65296. pPacket->m_sPacketUnit.m_opType,
  65297. pPacket->m_sPacketUnit.m_UserOldName);
  65298. pName = pPacket->m_sPacketUnit.m_UserNewName;
  65299. Packets::SChgNamePacketUnit::SetUserNewName(
  65300. v5,
  65301. pPacket->m_sPacketUnit.m_opType,
  65302. pPacket->m_sPacketUnit.m_UserNewName);
  65303. v5->m_reType = pPacket->m_sPacketUnit.m_reType;
  65304. DBImmigration::DBImmigration(&ImmigrationInfo, v3);
  65305. DBImmigration::SetCharGuid((int)&ImmigrationInfo, pPacket->m_sPacketUnit.m_UserGuid);
  65306. DBImmigration::SetCharName(&ImmigrationInfo, pPacket->m_sPacketUnit.m_UserNewName);
  65307. if ( !DBImmigration::IsCharNameOK(&ImmigrationInfo) )
  65308. {
  65309. CacheLog(
  65310. 0,
  65311. "WLChangeNameHandler::Execute...ImmigrationInfo.IsCharNameOK()...GUID = %X Name=%s CHGNAME_RE_REPEATED",
  65312. pPacket->m_sPacketUnit.m_UserGuid,
  65313. pName);
  65314. v5->m_reType = 4;
  65315. LABEL_9:
  65316. ServerManager::SendPacket(*(ServerManager *const *)&g_pServerManager, &pMsg->0, 0, 0);
  65317. return 2;
  65318. }
  65319. if ( !DBImmigration::UpdateNewCharName(&ImmigrationInfo) )
  65320. {
  65321. v12 = pPacket->m_sPacketUnit.m_UserGuid;
  65322. v13 = ODBCBase::GetErrorMessage((int)&ImmigrationInfo);
  65323. CacheLog(
  65324. 0,
  65325. "WLChangeNameHandler::Execute...ImmigrationInfo.UpdateNewCharName()...GUID = %X Get Errors: %s",
  65326. v12,
  65327. v13);
  65328. v5->m_reType = 3;
  65329. goto LABEL_9;
  65330. }
  65331. v5->m_reType = 0;
  65332. ServerManager::SendPacket(*(ServerManager *const *)&g_pServerManager, &pMsg->0, 0, 0);
  65333. CacheLog(
  65334. 0,
  65335. "WLChangeNameHandler::Execute...GUID=%X OldName=%s NewName=%s OK!",
  65336. pPacket->m_sPacketUnit.m_UserGuid,
  65337. pPacket->m_sPacketUnit.m_UserOldName,
  65338. pName);
  65339. }
  65340. }
  65341. }
  65342. return 2;
  65343. }
  65344. // 80D1CE8: using guessed type _DWORD (__cdecl *off_80D1CE8[2])(Packets::LWChangeName *this);
  65345.  
  65346. //----- (0809FAFC) --------------------------------------------------------
  65347. void __cdecl _tcf_0_200(void *a1)
  65348. {
  65349. std::ios_base::Init::~Init(&std::__ioinit);
  65350. }
  65351.  
  65352. //----- (0809FB0C) --------------------------------------------------------
  65353. void `global constructor keyed to'Packets::WLChangeNameHandler::Execute()
  65354. {
  65355. std::ios_base::Init::Init(&std::__ioinit);
  65356. __cxa_atexit(_tcf_0_200, 0, &_dso_handle);
  65357. }
  65358. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  65359.  
  65360. //----- (0809FB38) --------------------------------------------------------
  65361. UINT __cdecl Packets::CLRegNewLicenseHandler::Execute(Packets::CLRegNewLicense *pPacket, Player *pPlayer)
  65362. {
  65363. int v2; // eax
  65364. UINT v3; // ecx
  65365. const char *v4; // eax
  65366. Socket *v5; // ST2C_4
  65367. const CHAR *v6; // eax
  65368. const CHAR *v8; // eax
  65369. Packets::LBAskRegLicense *v9; // edi
  65370. __int16 v10; // ax
  65371. char *s2; // [esp+Ch] [ebp-5Ch]
  65372. CHAR Account[51]; // [esp+10h] [ebp-58h]
  65373.  
  65374. v2 = ThreadValueManager::GetCurrentThreadID();
  65375. v3 = 2;
  65376. if ( v2 == g_pLoginPlayerManager->m_ThreadID )
  65377. {
  65378. if ( !pPlayer )
  65379. __assert__(
  65380. "./Packets/CLRegNewLicenseHandler.cpp",
  65381. 0x14u,
  65382. "static UINT Packets::CLRegNewLicenseHandler::Execute(Packets::CLRegNewLicense*, Player*)",
  65383. "pLoginPlayer");
  65384. if ( !pPacket )
  65385. __assert__(
  65386. "./Packets/CLRegNewLicenseHandler.cpp",
  65387. 0x15u,
  65388. "static UINT Packets::CLRegNewLicenseHandler::Execute(Packets::CLRegNewLicense*, Player*)",
  65389. "pPacket");
  65390. s2 = pPacket->szAccount;
  65391. v4 = LoginPlayer::GetAccount((LoginPlayer *const )pPlayer);
  65392. if ( !strcmp(v4, pPacket->szAccount) )
  65393. {
  65394. if ( pPlayer[2].m_pSocket == (Socket *)313 )
  65395. {
  65396. memset(Account, 0, 0x30u);
  65397. *(_WORD *)&Account[48] = 0;
  65398. Account[50] = 0;
  65399. strncpy(Account, s2, 0x32u);
  65400. Account[50] = 0;
  65401. v9 = (Packets::LBAskRegLicense *)PacketFactoryManager::CreatePacket(g_pPacketFactoryManager, 0x11Au);
  65402. if ( !v9 )
  65403. __assertex__(
  65404. "./Packets/CLRegNewLicenseHandler.cpp",
  65405. 0x30u,
  65406. "static UINT Packets::CLRegNewLicenseHandler::Execute(Packets::CLRegNewLicense*, Player*)",
  65407. "FALSE",
  65408. &byte_80E3180);
  65409. v10 = (__int16)pPlayer[1].m_pSocketInputStream;
  65410. pPlayer[2].m_pSocket = (Socket *)314;
  65411. Packets::LBAskRegLicense::SetPlayerID((int)v9, v10);
  65412. Packets::LBAskRegLicense::SetAccount(v9, Account);
  65413. Packets::LBAskRegLicense::SetUserAnswer((int)v9, pPacket->m_UserAnswer);
  65414. Packets::LBAskRegLicense::SetIPAddr(v9, pPlayer->m_pSocket->m_Host);
  65415. ServerManager::SendPacket(*(ServerManager *const *)&g_pServerManager, &v9->0, 1, 0);
  65416. CacheLog(
  65417. 0,
  65418. "CLRegNewLicenseHandler::Execute(...) Account:%s IP:%s PlayerID=%d...OK ",
  65419. s2,
  65420. pPlayer->m_pSocket->m_Host,
  65421. SLOWORD(pPlayer[1].m_pSocketInputStream));
  65422. v3 = 2;
  65423. }
  65424. else
  65425. {
  65426. v5 = pPlayer[2].m_pSocket;
  65427. v6 = LoginPlayer::GetAccount((LoginPlayer *const )pPlayer);
  65428. CacheLog(0, "ERROR: CLRegNewLicenseHandler Get acc Status Errors,acc = %s,status = %u", v6, v5);
  65429. v3 = 2;
  65430. }
  65431. }
  65432. else
  65433. {
  65434. v8 = LoginPlayer::GetAccount((LoginPlayer *const )pPlayer);
  65435. CacheLog(0, "ERROR: CLRegNewLicenseHandler Get Guid Errors,acc = %s,Packet acc = %s", v8, s2);
  65436. v3 = 0;
  65437. }
  65438. }
  65439. return v3;
  65440. }
  65441.  
  65442. //----- (0809FD4C) --------------------------------------------------------
  65443. void __cdecl _tcf_0_201(void *a1)
  65444. {
  65445. std::ios_base::Init::~Init(&std::__ioinit);
  65446. }
  65447.  
  65448. //----- (0809FD5C) --------------------------------------------------------
  65449. void `global constructor keyed to'Packets::CLRegNewLicenseHandler::Execute()
  65450. {
  65451. std::ios_base::Init::Init(&std::__ioinit);
  65452. __cxa_atexit(_tcf_0_201, 0, &_dso_handle);
  65453. }
  65454. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  65455.  
  65456. //----- (0809FD88) --------------------------------------------------------
  65457. UINT __cdecl Packets::LBAskRegLicenseHandler::Execute(Packets::LBAskRegLicense *pPacket, Player *pPlayer)
  65458. {
  65459. const CHAR *v2; // eax
  65460. const char *v4; // eax
  65461. signed int v5; // eax
  65462. const char *v6; // eax
  65463. signed int v7; // eax
  65464. Packets::LBLRegNewLicense Msg; // [esp+0h] [ebp-68h]
  65465.  
  65466. if ( *(_DWORD *)(*(_DWORD *)&g_pServerManager + 7480) != ThreadValueManager::GetCurrentThreadID() )
  65467. __assertex__(
  65468. "./Packets/LBAskRegLicenseHandler.cpp",
  65469. 0x1Eu,
  65470. "static UINT Packets::LBAskRegLicenseHandler::Execute(Packets::LBAskRegLicense*, Player*)",
  65471. "FALSE",
  65472. aLbaskreglicens_0);
  65473. if ( !pPacket )
  65474. __assert__(
  65475. "./Packets/LBAskRegLicenseHandler.cpp",
  65476. 0xFu,
  65477. "static UINT Packets::LBAskRegLicenseHandler::Execute(Packets::LBAskRegLicense*, Player*)",
  65478. "pPacket");
  65479. if ( !pPlayer )
  65480. __assert__(
  65481. "./Packets/LBAskRegLicenseHandler.cpp",
  65482. 0x11u,
  65483. "static UINT Packets::LBAskRegLicenseHandler::Execute(Packets::LBAskRegLicense*, Player*)",
  65484. "pBillPlayer");
  65485. BillPacket::BillPacket(&Msg);
  65486. Msg._vptr_BillPacket = (int (**)(...))off_80D2628;
  65487. memset(Msg.mAccount, 0, 0x30u);
  65488. *(_WORD *)&Msg.mAccount[48] = 0;
  65489. Msg.mAccount[50] = 0;
  65490. Msg.mAccLength = 0;
  65491. Msg.mRegLicense = 89;
  65492. Msg.mIPLength = 0;
  65493. memset(Msg.mIP, 0, sizeof(Msg.mIP));
  65494. Msg.mType = 0;
  65495. v4 = Packets::LBAskRegLicense::GetAccount(pPacket);
  65496. strncpy(Msg.mAccount, v4, 0x32u);
  65497. Msg.mAccount[50] = 0;
  65498. Msg.mAccLength = 0;
  65499. v5 = 0;
  65500. do
  65501. {
  65502. if ( Msg.mAccount[v5] )
  65503. ++Msg.mAccLength;
  65504. ++v5;
  65505. }
  65506. while ( v5 <= 49 );
  65507. Msg.m_Index = Packets::LBAskRegLicense::GetPlayerID((int)pPacket);
  65508. Msg.mRegLicense = (unsigned __int8)Packets::LBAskRegLicense::GetUserAnswer((int)pPacket) < 1u ? 78 : 89;
  65509. v6 = Packets::LBAskRegLicense::GetIPAddr(pPacket);
  65510. strncpy(Msg.mIP, v6, 0xFu);
  65511. Msg.mIPLength = 0;
  65512. v7 = 0;
  65513. do
  65514. {
  65515. if ( Msg.mIP[v7] )
  65516. ++Msg.mIPLength;
  65517. ++v7;
  65518. }
  65519. while ( v7 <= 14 );
  65520. (*((void (__cdecl **)(Player *, Packets::LBLRegNewLicense *))pPlayer->_vptr_Player + 29))(pPlayer, &Msg);
  65521. Msg._vptr_BillPacket = (int (**)(...))off_80D2628;
  65522. BillPacket::~BillPacket(&Msg);
  65523. v2 = Packets::LBAskRegLicense::GetAccount(pPacket);
  65524. CacheLog(0, "LBAskRegLicenseHandler::Execute() Acc=%s....OK", v2);
  65525. return 2;
  65526. }
  65527. // 80D2628: using guessed type _DWORD (__cdecl *off_80D2628[2])(Packets::LBLRegNewLicense *this);
  65528.  
  65529. //----- (0809FF8C) --------------------------------------------------------
  65530. void __cdecl _tcf_0_202(void *a1)
  65531. {
  65532. std::ios_base::Init::~Init(&std::__ioinit);
  65533. }
  65534.  
  65535. //----- (0809FF9C) --------------------------------------------------------
  65536. void `global constructor keyed to'Packets::LBAskRegLicenseHandler::Execute()
  65537. {
  65538. std::ios_base::Init::Init(&std::__ioinit);
  65539. __cxa_atexit(_tcf_0_202, 0, &_dso_handle);
  65540. }
  65541. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  65542.  
  65543. //----- (0809FFC8) --------------------------------------------------------
  65544. UINT __cdecl Packets::LBLRegNewLicenseHandler::Execute(Packets::LBLRegNewLicense *pPacket, Player *pPlayer)
  65545. {
  65546. signed __int16 v2; // ax
  65547. int v3; // ebx
  65548. LoginPlayer *v4; // eax
  65549. Packets::BLRetAuth *v6; // edi
  65550. CHAR *v7; // [esp+8h] [ebp-10h]
  65551.  
  65552. if ( *(_DWORD *)(*(_DWORD *)&g_pServerManager + 7480) != ThreadValueManager::GetCurrentThreadID() )
  65553. __assert__(
  65554. "./Packets/LBLRegNewLicenseHandler.cpp",
  65555. 0x1Bu,
  65556. "static UINT Packets::LBLRegNewLicenseHandler::Execute(Packets::LBLRegNewLicense*, Player*)",
  65557. "FALSE");
  65558. if ( !pPlayer )
  65559. __assert__(
  65560. "./Packets/LBLRegNewLicenseHandler.cpp",
  65561. 0x1Eu,
  65562. "static UINT Packets::LBLRegNewLicenseHandler::Execute(Packets::LBLRegNewLicense*, Player*)",
  65563. "pPlayer");
  65564. if ( pPacket->mType != 1 )
  65565. __assert__(
  65566. "./Packets/LBLRegNewLicenseHandler.cpp",
  65567. 0x1Fu,
  65568. "static UINT Packets::LBLRegNewLicenseHandler::Execute(Packets::LBLRegNewLicense*, Player*)",
  65569. "pPacket->GetType() == LBLRegNewLicense::BL_REGLICENSE");
  65570. if ( !(*((int (__cdecl **)(Player *))pPlayer->_vptr_Player + 25))(pPlayer) )
  65571. return 2;
  65572. if ( !pPacket )
  65573. __assert__(
  65574. "./Packets/LBLRegNewLicenseHandler.cpp",
  65575. 0x26u,
  65576. "static UINT Packets::LBLRegNewLicenseHandler::Execute(Packets::LBLRegNewLicense*, Player*)",
  65577. "pPacket");
  65578. v2 = pPacket->m_Index;
  65579. if ( v2 == -1 || v2 > 3071 || v2 < 0 || (v3 = v2, (v4 = &g_pPlayerPool->m_pPlayer[v2]) == 0) )
  65580. __assert__(
  65581. "./Packets/LBLRegNewLicenseHandler.cpp",
  65582. 0x2Du,
  65583. "static UINT Packets::LBLRegNewLicenseHandler::Execute(Packets::LBLRegNewLicense*, Player*)",
  65584. "FALSE");
  65585. if ( v4->m_Status != 314 )
  65586. {
  65587. CacheLog(0, "LBLRegNewLicenseHandler::Execute() Acc = %s PlayerID=%d... Wrong logic!", pPacket->mAccount, v3);
  65588. return 2;
  65589. }
  65590. v4->m_Status = 302;
  65591. v6 = (Packets::BLRetAuth *)PacketFactoryManager::CreatePacket(g_pPacketFactoryManager, 0x61u);
  65592. if ( !v6 )
  65593. __assert__(
  65594. "./Packets/LBLRegNewLicenseHandler.cpp",
  65595. 0x3Bu,
  65596. "static UINT Packets::LBLRegNewLicenseHandler::Execute(Packets::LBLRegNewLicense*, Player*)",
  65597. "pMsg");
  65598. v7 = pPacket->mAccount;
  65599. Packets::BLRetAuth::SetAccount(v6, pPacket->mAccount);
  65600. if ( pPacket->mRegLicense == 1 )
  65601. {
  65602. Packets::BLRetAuth::SetResult((int)v6, 25);
  65603. LoginPlayerManager::SendPacket(g_pLoginPlayerManager, &v6->0, v3, 0);
  65604. CacheLog(0, "LBLRegNewLicenseHandler... Acc = %s Reg New License Success!", v7);
  65605. }
  65606. else
  65607. {
  65608. Packets::BLRetAuth::SetResult((int)v6, 22);
  65609. LoginPlayerManager::SendPacket(g_pLoginPlayerManager, &v6->0, v3, 0);
  65610. CacheLog(0, "LBLRegNewLicenseHandler... Acc = %s Reg New License Fail!", v7);
  65611. }
  65612. CacheLog(0, "LBLRegNewLicense::Execute()...OK POS=%d ServerResult=%d", pPacket->m_Index, pPacket->mRegLicense);
  65613. return 2;
  65614. }
  65615.  
  65616. //----- (080A021C) --------------------------------------------------------
  65617. void __cdecl _tcf_0_203(void *a1)
  65618. {
  65619. std::ios_base::Init::~Init(&std::__ioinit);
  65620. }
  65621.  
  65622. //----- (080A022C) --------------------------------------------------------
  65623. void `global constructor keyed to'Packets::LBLRegNewLicenseHandler::Execute()
  65624. {
  65625. std::ios_base::Init::Init(&std::__ioinit);
  65626. __cxa_atexit(_tcf_0_203, 0, &_dso_handle);
  65627. }
  65628. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  65629.  
  65630. //----- (080A0258) --------------------------------------------------------
  65631. UINT __cdecl Packets::CLRegSafeSignHandler::Execute(Packets::CLRegSafeSign *pPacket, Player *pPlayer)
  65632. {
  65633. int v2; // eax
  65634. UINT v3; // ecx
  65635. const char *v4; // eax
  65636. Socket *v5; // ST2C_4
  65637. const CHAR *v6; // eax
  65638. const CHAR *v8; // eax
  65639. Packets::BLRetAuth *pMsg; // [esp+8h] [ebp-10h]
  65640.  
  65641. v2 = ThreadValueManager::GetCurrentThreadID();
  65642. v3 = 2;
  65643. if ( v2 == g_pLoginPlayerManager->m_ThreadID )
  65644. {
  65645. if ( !pPlayer )
  65646. __assert__(
  65647. "./Packets/CLRegSafeSignHandler.cpp",
  65648. 0x12u,
  65649. "static UINT Packets::CLRegSafeSignHandler::Execute(Packets::CLRegSafeSign*, Player*)",
  65650. "pLoginPlayer");
  65651. if ( !pPacket )
  65652. __assert__(
  65653. "./Packets/CLRegSafeSignHandler.cpp",
  65654. 0x13u,
  65655. "static UINT Packets::CLRegSafeSignHandler::Execute(Packets::CLRegSafeSign*, Player*)",
  65656. "pPacket");
  65657. v4 = LoginPlayer::GetAccount((LoginPlayer *const )pPlayer);
  65658. if ( !strcmp(v4, pPacket->szAccount) )
  65659. {
  65660. if ( pPlayer[2].m_pSocket == (Socket *)315 )
  65661. {
  65662. pPlayer[2].m_pSocket = (Socket *)302;
  65663. pMsg = (Packets::BLRetAuth *)PacketFactoryManager::CreatePacket(g_pPacketFactoryManager, 0x61u);
  65664. if ( !pMsg )
  65665. __assert__(
  65666. "./Packets/CLRegSafeSignHandler.cpp",
  65667. 0x29u,
  65668. "static UINT Packets::CLRegSafeSignHandler::Execute(Packets::CLRegSafeSign*, Player*)",
  65669. "pMsg");
  65670. Packets::BLRetAuth::SetAccount(pMsg, pPacket->szAccount);
  65671. if ( pPacket->m_UserAnswer )
  65672. {
  65673. Packets::BLRetAuth::SetResult((int)pMsg, 22);
  65674. LoginPlayerManager::SendPacket(
  65675. g_pLoginPlayerManager,
  65676. &pMsg->0,
  65677. (PlayerID_t)pPlayer[1].m_pSocketInputStream,
  65678. 0);
  65679. CacheLog(0, "CLRegSafeSignHandler... Acc = %s NotifySafeSign Fail!", pPacket->szAccount);
  65680. }
  65681. else
  65682. {
  65683. Packets::BLRetAuth::SetResult((int)pMsg, 26);
  65684. LoginPlayerManager::SendPacket(
  65685. g_pLoginPlayerManager,
  65686. &pMsg->0,
  65687. (PlayerID_t)pPlayer[1].m_pSocketInputStream,
  65688. 0);
  65689. CacheLog(0, "CLRegSafeSignHandler... Acc = %s NotifySafeSign Success!", pPacket->szAccount);
  65690. }
  65691. CacheLog(
  65692. 0,
  65693. "CLRegSafeSignHandler::Execute(...) Account:%s IP:%s PlayerID=%d...OK ",
  65694. pPacket->szAccount,
  65695. pPlayer->m_pSocket->m_Host,
  65696. SLOWORD(pPlayer[1].m_pSocketInputStream));
  65697. v3 = 2;
  65698. }
  65699. else
  65700. {
  65701. v5 = pPlayer[2].m_pSocket;
  65702. v6 = LoginPlayer::GetAccount((LoginPlayer *const )pPlayer);
  65703. CacheLog(0, "ERROR: CLRegSafeSignHandler Get acc Status Errors,acc = %s,status = %u", v6, v5);
  65704. v3 = 2;
  65705. }
  65706. }
  65707. else
  65708. {
  65709. v8 = LoginPlayer::GetAccount((LoginPlayer *const )pPlayer);
  65710. CacheLog(0, "ERROR: CLRegSafeSignHandler Get Guid Errors,acc = %s,Packet acc = %s", v8, pPacket->szAccount);
  65711. v3 = 0;
  65712. }
  65713. }
  65714. return v3;
  65715. }
  65716.  
  65717. //----- (080A046C) --------------------------------------------------------
  65718. void __cdecl _tcf_0_204(void *a1)
  65719. {
  65720. std::ios_base::Init::~Init(&std::__ioinit);
  65721. }
  65722.  
  65723. //----- (080A047C) --------------------------------------------------------
  65724. void `global constructor keyed to'Packets::CLRegSafeSignHandler::Execute()
  65725. {
  65726. std::ios_base::Init::Init(&std::__ioinit);
  65727. __cxa_atexit(_tcf_0_204, 0, &_dso_handle);
  65728. }
  65729. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  65730.  
  65731. //----- (080A04A8) --------------------------------------------------------
  65732. UINT __cdecl Packets::LBLOperateAccHandler::Execute(Packets::LBLOperateAcc *pPacket, Player *pPlayer)
  65733. {
  65734. Player *v2; // eax
  65735. int v3; // ST14_4
  65736. ID_t nControlID; // [esp+16h] [ebp-72h]
  65737. UINT nSocket; // [esp+18h] [ebp-70h]
  65738. INT nOperate; // [esp+1Ch] [ebp-6Ch]
  65739. Packets::LWOperateAccResult oaMsg; // [esp+20h] [ebp-68h]
  65740.  
  65741. if ( *(_DWORD *)(*(_DWORD *)&g_pServerManager + 7480) != ThreadValueManager::GetCurrentThreadID() )
  65742. __assert__(
  65743. "./Packets/LBLOperateAccHandler.cpp",
  65744. 0xFu,
  65745. "static UINT Packets::LBLOperateAccHandler::Execute(Packets::LBLOperateAcc*, Player*)",
  65746. "FALSE");
  65747. if ( !pPlayer )
  65748. __assert__(
  65749. "./Packets/LBLOperateAccHandler.cpp",
  65750. 0x12u,
  65751. "static UINT Packets::LBLOperateAccHandler::Execute(Packets::LBLOperateAcc*, Player*)",
  65752. "pPlayer");
  65753. if ( pPacket->mType != 1 )
  65754. __assert__(
  65755. "./Packets/LBLOperateAccHandler.cpp",
  65756. 0x13u,
  65757. "static UINT Packets::LBLOperateAccHandler::Execute(Packets::LBLOperateAcc*, Player*)",
  65758. "pPacket->GetType() == LBLOperateAcc::BL_OPERATEACC");
  65759. if ( (*((int (__cdecl **)(Player *))pPlayer->_vptr_Player + 25))(pPlayer) )
  65760. {
  65761. if ( !pPacket )
  65762. __assert__(
  65763. "./Packets/LBLOperateAccHandler.cpp",
  65764. 0x1Au,
  65765. "static UINT Packets::LBLOperateAccHandler::Execute(Packets::LBLOperateAcc*, Player*)",
  65766. "pPacket");
  65767. sscanf(pPacket->mSerial, "%d:%u:%d", &nControlID, &nSocket, &nOperate);
  65768. Packet::Packet((int)&oaMsg);
  65769. oaMsg.m_ControlID = nControlID;
  65770. oaMsg.m_Operate = nOperate;
  65771. oaMsg.m_Socket = nSocket;
  65772. oaMsg.m_Result = 0;
  65773. oaMsg.m_WorldID = 0;
  65774. oaMsg._vptr_Packet = (int (**)(...))off_80D2AA8;
  65775. qmemcpy(oaMsg.szAccounts, pPacket->mAccount, sizeof(oaMsg.szAccounts));
  65776. oaMsg.m_Result = pPacket->mFengTingResult;
  65777. oaMsg.m_WorldID = g_Config.m_WorldInfo.m_WorldID;
  65778. v2 = ServerManager::GetServerPlayer(*(ServerManager *const *)&g_pServerManager, 0);
  65779. if ( v2 )
  65780. (*((void (__cdecl **)(Player *, Packets::LWOperateAccResult *))v2->_vptr_Player + 3))(v2, &oaMsg);
  65781. v3 = pPacket->mFengTingResult;
  65782. CacheLog(
  65783. 0,
  65784. "LBLOperateAcc::Execute()...OK uid=%s,acc=%s,op=%d,rt=%d",
  65785. pPacket->mSerial,
  65786. pPacket->mAccount,
  65787. nOperate);
  65788. oaMsg._vptr_Packet = (int (**)(...))off_80D2AA8;
  65789. Packet::~Packet(&oaMsg);
  65790. }
  65791. return 2;
  65792. }
  65793. // 80D2AA8: using guessed type _DWORD (__cdecl *off_80D2AA8[2])(Packets::LWOperateAccResult *this);
  65794.  
  65795. //----- (080A06B8) --------------------------------------------------------
  65796. void __cdecl _tcf_0_205(void *a1)
  65797. {
  65798. std::ios_base::Init::~Init(&std::__ioinit);
  65799. }
  65800.  
  65801. //----- (080A06C8) --------------------------------------------------------
  65802. void `global constructor keyed to'Packets::LBLOperateAccHandler::Execute()
  65803. {
  65804. std::ios_base::Init::Init(&std::__ioinit);
  65805. __cxa_atexit(_tcf_0_205, 0, &_dso_handle);
  65806. }
  65807. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  65808.  
  65809. //----- (080A06F4) --------------------------------------------------------
  65810. UINT __cdecl Packets::LWOperateAccResultHandler::Execute(Packets::LWOperateAccResult *pPacket, Player *pPlayer)
  65811. {
  65812. return 2;
  65813. }
  65814.  
  65815. //----- (080A0700) --------------------------------------------------------
  65816. void __cdecl _tcf_0_206(void *a1)
  65817. {
  65818. std::ios_base::Init::~Init(&std::__ioinit);
  65819. }
  65820.  
  65821. //----- (080A0710) --------------------------------------------------------
  65822. void `global constructor keyed to'Packets::LWOperateAccResultHandler::Execute()
  65823. {
  65824. std::ios_base::Init::Init(&std::__ioinit);
  65825. __cxa_atexit(_tcf_0_206, 0, &_dso_handle);
  65826. }
  65827. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  65828.  
  65829. //----- (080A073C) --------------------------------------------------------
  65830. UINT __cdecl Packets::WLOperateAccHandler::Execute(Packets::WLOperateAcc *pPacket, Player *pPlayer)
  65831. {
  65832. Player *v2; // eax
  65833. signed int v4; // eax
  65834. signed int v5; // eax
  65835. signed int v6; // eax
  65836. signed int v7; // eax
  65837. signed int v8; // eax
  65838. INT v9; // eax
  65839. signed int v10; // eax
  65840. BillingPlayer *pBillPlayer; // [esp+1Ch] [ebp-12Ch]
  65841. Packets::LBLOperateAcc Msg; // [esp+20h] [ebp-128h]
  65842. CHAR szSerial[21]; // [esp+110h] [ebp-38h]
  65843.  
  65844. if ( *(_DWORD *)(*(_DWORD *)&g_pServerManager + 7480) == ThreadValueManager::GetCurrentThreadID() )
  65845. {
  65846. if ( !pPacket )
  65847. __assert__(
  65848. "./Packets/WLOperateAccHandler.cpp",
  65849. 0xFu,
  65850. "static UINT Packets::WLOperateAccHandler::Execute(Packets::WLOperateAcc*, Player*)",
  65851. "pPacket");
  65852. v2 = ServerManager::GetServerPlayer(*(ServerManager *const *)&g_pServerManager, 1);
  65853. pBillPlayer = (BillingPlayer *)v2;
  65854. if ( !v2 || !(*((int (__cdecl **)(Player *))v2->_vptr_Player + 25))(v2) )
  65855. __assert__(
  65856. "./Packets/WLOperateAccHandler.cpp",
  65857. 0x34u,
  65858. "static UINT Packets::WLOperateAccHandler::Execute(Packets::WLOperateAcc*, Player*)",
  65859. "FALSE");
  65860. memset(szSerial, 0, 0x14u);
  65861. szSerial[20] = 0;
  65862. snprintf(szSerial, 0x15u, "%d:%u:%d", pPacket->m_ControlID, pPacket->m_Socket, pPacket->m_Operate);
  65863. BillPacket::BillPacket(&Msg);
  65864. Msg._vptr_BillPacket = (int (**)(...))off_80D2928;
  65865. Msg.mSerialLength = 0;
  65866. memset(Msg.mSerial, 0, 0x14u);
  65867. Msg.mSerial[20] = 0;
  65868. Msg.mAccLength = 0;
  65869. memset(Msg.mAccount, 0, 0x30u);
  65870. *(_WORD *)&Msg.mAccount[48] = 0;
  65871. Msg.mAccount[50] = 0;
  65872. Msg.mCharNameLength = 0;
  65873. memset(Msg.mCharName, 0, 0x30u);
  65874. *(_WORD *)&Msg.mCharName[48] = 0;
  65875. Msg.mCharName[50] = 0;
  65876. Msg.mIPLength = 0;
  65877. memset(Msg.mIP, 0, sizeof(Msg.mIP));
  65878. Msg.mAccLevel = 1;
  65879. Msg.mFengTing = 89;
  65880. Msg.mReasonLength = 0;
  65881. memset(Msg.mReason, 0, 0x20u);
  65882. Msg.mReason[32] = 0;
  65883. Msg.mGMAccLength = 0;
  65884. memset(Msg.mGMAccount, 0, 0x28u);
  65885. Msg.mGMAccount[40] = 0;
  65886. Msg.mAccGuid = -1;
  65887. Msg.mType = 0;
  65888. strncpy(Msg.mSerial, szSerial, 0x14u);
  65889. Msg.mSerialLength = 0;
  65890. v4 = 0;
  65891. do
  65892. {
  65893. if ( Msg.mSerial[v4] )
  65894. ++Msg.mSerialLength;
  65895. ++v4;
  65896. }
  65897. while ( v4 <= 19 );
  65898. strncpy(Msg.mAccount, pPacket->szAccounts, 0x32u);
  65899. Msg.mAccount[50] = 0;
  65900. Msg.mAccLength = 0;
  65901. v5 = 0;
  65902. do
  65903. {
  65904. if ( Msg.mAccount[v5] )
  65905. ++Msg.mAccLength;
  65906. ++v5;
  65907. }
  65908. while ( v5 <= 49 );
  65909. strncpy(Msg.mCharName, pPacket->szCharName, 0x32u);
  65910. Msg.mCharName[50] = 0;
  65911. Msg.mCharNameLength = 0;
  65912. v6 = 0;
  65913. do
  65914. {
  65915. if ( Msg.mCharName[v6] )
  65916. ++Msg.mCharNameLength;
  65917. ++v6;
  65918. }
  65919. while ( v6 <= 49 );
  65920. strncpy(Msg.mGMAccount, pPacket->szUser, 0x28u);
  65921. Msg.mGMAccount[40] = 0;
  65922. Msg.mGMAccLength = 0;
  65923. v7 = 0;
  65924. do
  65925. {
  65926. if ( Msg.mGMAccount[v7] )
  65927. ++Msg.mGMAccLength;
  65928. ++v7;
  65929. }
  65930. while ( v7 <= 39 );
  65931. strncpy(Msg.mIP, g_Config.m_ServerInfo.m_World.m_IP, 0xFu);
  65932. Msg.mIPLength = 0;
  65933. v8 = 0;
  65934. do
  65935. {
  65936. if ( Msg.mIP[v8] )
  65937. ++Msg.mIPLength;
  65938. ++v8;
  65939. }
  65940. while ( v8 <= 14 );
  65941. Msg.mAccLevel = pPacket->m_usAccLevel;
  65942. Msg.mAccGuid = pPacket->m_uGuid;
  65943. v9 = pPacket->m_Operate;
  65944. if ( v9 == 101 )
  65945. {
  65946. Msg.mFengTing = 78;
  65947. }
  65948. else if ( v9 == 102 )
  65949. {
  65950. Msg.mFengTing = 89;
  65951. }
  65952. strncpy(Msg.mReason, pPacket->szReason, 0x20u);
  65953. Msg.mReasonLength = 0;
  65954. v10 = 0;
  65955. do
  65956. {
  65957. if ( Msg.mReason[v10] )
  65958. ++Msg.mReasonLength;
  65959. ++v10;
  65960. }
  65961. while ( v10 <= 31 );
  65962. (*((void (__cdecl **)(BillingPlayer *, Packets::LBLOperateAcc *))pBillPlayer->_vptr_Player + 29))(pBillPlayer, &Msg);
  65963. CacheLog(
  65964. 0,
  65965. "WLOperateAccHandler::Execute ...Send to Billing OK! uid=%s,acc=%s,op=%d",
  65966. szSerial,
  65967. pPacket->szAccounts,
  65968. pPacket->m_Operate);
  65969. Msg._vptr_BillPacket = (int (**)(...))off_80D2928;
  65970. BillPacket::~BillPacket(&Msg);
  65971. }
  65972. return 2;
  65973. }
  65974. // 80D2928: using guessed type _DWORD (__cdecl *off_80D2928[2])(Packets::LBLOperateAcc *this);
  65975.  
  65976. //----- (080A0AF8) --------------------------------------------------------
  65977. void __cdecl _tcf_0_207(void *a1)
  65978. {
  65979. std::ios_base::Init::~Init(&std::__ioinit);
  65980. }
  65981.  
  65982. //----- (080A0B08) --------------------------------------------------------
  65983. void `global constructor keyed to'Packets::WLOperateAccHandler::Execute()
  65984. {
  65985. std::ios_base::Init::Init(&std::__ioinit);
  65986. __cxa_atexit(_tcf_0_207, 0, &_dso_handle);
  65987. }
  65988. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  65989.  
  65990. //----- (080A0B34) --------------------------------------------------------
  65991. void __cdecl CharConfig::~CharConfig(CharConfig *const this)
  65992. {
  65993. FULLUSERDATA *v1; // ecx
  65994. int i; // eax
  65995. FULLUSERDATA *j; // eax
  65996. FULLUSERDATA *k; // eax
  65997. char *v5; // ecx
  65998. FULLUSERDATA *l; // eax
  65999. FULLUSERDATA *m; // eax
  66000. FULLUSERDATA *n; // eax
  66001.  
  66002. if ( CharConfig::pUserData )
  66003. {
  66004. if ( CharConfig::pUserData != (FULLUSERDATA *)-40272 )
  66005. {
  66006. v1 = (FULLUSERDATA *)((char *)CharConfig::pUserData + 44262);
  66007. while ( &CharConfig::pUserData->m_PetList != (_PET_DB_LIST_LOAD *)v1 )
  66008. {
  66009. v1 = (FULLUSERDATA *)((char *)v1 - 399);
  66010. if ( v1 != (FULLUSERDATA *)-211 )
  66011. {
  66012. for ( i = (int)&v1->m_Human.m_Titles.m_szShangDian[31]; &v1->m_Human.m_Titles.m_szJieBai[3] != (CHAR *)i; i -= 12 )
  66013. ;
  66014. }
  66015. }
  66016. }
  66017. if ( CharConfig::pUserData != (FULLUSERDATA *)-33963 )
  66018. {
  66019. for ( j = (FULLUSERDATA *)((char *)CharConfig::pUserData + 35483);
  66020. CharConfig::pUserData->m_Impact.m_aImpacts != (_OWN_IMPACT *)j;
  66021. j = (FULLUSERDATA *)((char *)j - 76) )
  66022. {
  66023. ;
  66024. }
  66025. }
  66026. if ( CharConfig::pUserData != (FULLUSERDATA *)-33513 )
  66027. {
  66028. for ( k = (FULLUSERDATA *)((char *)CharConfig::pUserData + 33897);
  66029. &CharConfig::pUserData->m_Cooldown != (_COOLDOWN_DB_LOAD_FOR_HUMAN *)k;
  66030. k = (FULLUSERDATA *)((char *)k - 12) )
  66031. {
  66032. ;
  66033. }
  66034. }
  66035. v5 = (char *)&CharConfig::pUserData->m_Human.m_PvpInfo;
  66036. if ( CharConfig::pUserData != (FULLUSERDATA *)-1409 )
  66037. {
  66038. for ( l = (FULLUSERDATA *)((char *)CharConfig::pUserData + 1457);
  66039. &CharConfig::pUserData->m_Human.m_PvpInfo.m_oPersonalEnemyList != (PersonalEnemyList_T *)l;
  66040. l = (FULLUSERDATA *)((char *)l - 8) )
  66041. {
  66042. ;
  66043. }
  66044. }
  66045. if ( v5 != (char *)-347 )
  66046. {
  66047. for ( m = (FULLUSERDATA *)((char *)CharConfig::pUserData + 1409);
  66048. &CharConfig::pUserData->m_Human.m_PvpInfo.m_oPersonalDuelList != (PersonalDuelList_T *)m;
  66049. m = (FULLUSERDATA *)((char *)m - 8) )
  66050. {
  66051. ;
  66052. }
  66053. }
  66054. if ( v5 != (char *)-267 )
  66055. {
  66056. for ( n = (FULLUSERDATA *)((char *)CharConfig::pUserData + 1369);
  66057. &CharConfig::pUserData->m_Human.m_PvpInfo.m_oFightBackList != (FightBackList_T *)n;
  66058. n = (FULLUSERDATA *)((char *)n - 8) )
  66059. {
  66060. ;
  66061. }
  66062. }
  66063. operator delete((IPRegionTable *const )CharConfig::pUserData);
  66064. CharConfig::pUserData = 0;
  66065. }
  66066. }
  66067.  
  66068. //----- (080A0C24) --------------------------------------------------------
  66069. void __cdecl CharConfig::~CharConfig(CharConfig *const this)
  66070. {
  66071. FULLUSERDATA *v1; // ecx
  66072. int i; // eax
  66073. FULLUSERDATA *j; // eax
  66074. FULLUSERDATA *k; // eax
  66075. char *v5; // ecx
  66076. FULLUSERDATA *l; // eax
  66077. FULLUSERDATA *m; // eax
  66078. FULLUSERDATA *n; // eax
  66079.  
  66080. if ( CharConfig::pUserData )
  66081. {
  66082. if ( CharConfig::pUserData != (FULLUSERDATA *)-40272 )
  66083. {
  66084. v1 = (FULLUSERDATA *)((char *)CharConfig::pUserData + 44262);
  66085. while ( &CharConfig::pUserData->m_PetList != (_PET_DB_LIST_LOAD *)v1 )
  66086. {
  66087. v1 = (FULLUSERDATA *)((char *)v1 - 399);
  66088. if ( v1 != (FULLUSERDATA *)-211 )
  66089. {
  66090. for ( i = (int)&v1->m_Human.m_Titles.m_szShangDian[31]; &v1->m_Human.m_Titles.m_szJieBai[3] != (CHAR *)i; i -= 12 )
  66091. ;
  66092. }
  66093. }
  66094. }
  66095. if ( CharConfig::pUserData != (FULLUSERDATA *)-33963 )
  66096. {
  66097. for ( j = (FULLUSERDATA *)((char *)CharConfig::pUserData + 35483);
  66098. CharConfig::pUserData->m_Impact.m_aImpacts != (_OWN_IMPACT *)j;
  66099. j = (FULLUSERDATA *)((char *)j - 76) )
  66100. {
  66101. ;
  66102. }
  66103. }
  66104. if ( CharConfig::pUserData != (FULLUSERDATA *)-33513 )
  66105. {
  66106. for ( k = (FULLUSERDATA *)((char *)CharConfig::pUserData + 33897);
  66107. &CharConfig::pUserData->m_Cooldown != (_COOLDOWN_DB_LOAD_FOR_HUMAN *)k;
  66108. k = (FULLUSERDATA *)((char *)k - 12) )
  66109. {
  66110. ;
  66111. }
  66112. }
  66113. v5 = (char *)&CharConfig::pUserData->m_Human.m_PvpInfo;
  66114. if ( CharConfig::pUserData != (FULLUSERDATA *)-1409 )
  66115. {
  66116. for ( l = (FULLUSERDATA *)((char *)CharConfig::pUserData + 1457);
  66117. &CharConfig::pUserData->m_Human.m_PvpInfo.m_oPersonalEnemyList != (PersonalEnemyList_T *)l;
  66118. l = (FULLUSERDATA *)((char *)l - 8) )
  66119. {
  66120. ;
  66121. }
  66122. }
  66123. if ( v5 != (char *)-347 )
  66124. {
  66125. for ( m = (FULLUSERDATA *)((char *)CharConfig::pUserData + 1409);
  66126. &CharConfig::pUserData->m_Human.m_PvpInfo.m_oPersonalDuelList != (PersonalDuelList_T *)m;
  66127. m = (FULLUSERDATA *)((char *)m - 8) )
  66128. {
  66129. ;
  66130. }
  66131. }
  66132. if ( v5 != (char *)-267 )
  66133. {
  66134. for ( n = (FULLUSERDATA *)((char *)CharConfig::pUserData + 1369);
  66135. &CharConfig::pUserData->m_Human.m_PvpInfo.m_oFightBackList != (FightBackList_T *)n;
  66136. n = (FULLUSERDATA *)((char *)n - 8) )
  66137. {
  66138. ;
  66139. }
  66140. }
  66141. operator delete((IPRegionTable *const )CharConfig::pUserData);
  66142. CharConfig::pUserData = 0;
  66143. }
  66144. }
  66145.  
  66146. //----- (080A0D14) --------------------------------------------------------
  66147. CFG_CHOOSE_SCENE *__cdecl DBChooseSceneTable::GetSceneInfo(CHAR_TYPE ctype, CHAR_TYPE ctypea)
  66148. {
  66149. if ( (signed int)ctypea > 0 )
  66150. __assert__(
  66151. "./DB/CharConfig.cpp",
  66152. 0x28Au,
  66153. "CFG_CHOOSE_SCENE* DBChooseSceneTable::GetSceneInfo(CHAR_TYPE)",
  66154. "ctype<CT_NUMBER");
  66155. return (CFG_CHOOSE_SCENE *)(ctype + 104 * ctypea);
  66156. }
  66157.  
  66158. //----- (080A0D98) --------------------------------------------------------
  66159. BOOL __cdecl CharConfig::GetCharChooseScene(DB_CHOOSE_SCENE *pInfo, CHAR_TYPE ctype)
  66160. {
  66161. CFG_CHOOSE_SCENE *v2; // eax
  66162.  
  66163. if ( pInfo )
  66164. {
  66165. v2 = DBChooseSceneTable::GetSceneInfo((CHAR_TYPE)&g_DBSceneTable, ctype);
  66166. if ( v2 )
  66167. {
  66168. pInfo->mSceneCount = v2->mSceneCount;
  66169. qmemcpy(pInfo->mSceneID, v2->mSceneID, sizeof(pInfo->mSceneID));
  66170. }
  66171. }
  66172. return 1;
  66173. }
  66174.  
  66175. //----- (080A0E28) --------------------------------------------------------
  66176. void __cdecl DBChooseSceneTable::DBChooseSceneTable(DBChooseSceneTable *const this)
  66177. {
  66178. DBChooseSceneTable *v1; // ebx
  66179. signed int v2; // edi
  66180. WORLD_POS *v3; // eax
  66181. signed int v4; // edx
  66182. INT v5; // ebx
  66183. INT i; // [esp+24h] [ebp-DD4h]
  66184. INT nValue; // [esp+28h] [ebp-DD0h]
  66185. char szErr[1024]; // [esp+30h] [ebp-DC8h]
  66186. char szTmp[32]; // [esp+430h] [ebp-9C8h]
  66187. char szTmp2[32]; // [esp+450h] [ebp-9A8h]
  66188. char szTmp1[32]; // [esp+470h] [ebp-988h]
  66189. char szTmp0[32]; // [esp+490h] [ebp-968h]
  66190. IniFile ini; // [esp+4B0h] [ebp-948h]
  66191.  
  66192. v1 = this;
  66193. v2 = 9;
  66194. do
  66195. {
  66196. v3 = v1->mSceneTable[0].mPos;
  66197. v4 = 9;
  66198. do
  66199. {
  66200. --v4;
  66201. v3->m_fX = 0.0;
  66202. v3->m_fZ = 0.0;
  66203. ++v3;
  66204. }
  66205. while ( v4 != -1 );
  66206. --v2;
  66207. memset(v1, 0, 0x68u);
  66208. v1 = (DBChooseSceneTable *)((char *)v1 + 104);
  66209. }
  66210. while ( v2 != -1 );
  66211. IniFile::IniFile((const CHAR *)&ini, "./Config/DefaultChar.ini");
  66212. if ( IniFile::ReadInt(&ini, "startscene", "scenecount", &nValue) != 1 )
  66213. {
  66214. snprintf(
  66215. szErr,
  66216. 0x400u,
  66217. "[CharConfig::CharConfig]: Read ini failed!! section:%s; key:.%s",
  66218. "startscene",
  66219. "scenecount");
  66220. __assertex__("./DB/CharConfig.cpp", 0x281u, "DBChooseSceneTable::DBChooseSceneTable()", "FALSE", szErr);
  66221. }
  66222. v5 = nValue;
  66223. if ( nValue > 10 )
  66224. v5 = 10;
  66225. i = 0;
  66226. for ( g_DBSceneTable.mSceneTable[0].mSceneCount = v5; i < v5; ++i )
  66227. {
  66228. memset(szTmp0, 0, sizeof(szTmp0));
  66229. memset(szTmp1, 0, sizeof(szTmp1));
  66230. memset(szTmp2, 0, sizeof(szTmp2));
  66231. memset(szTmp, 0, sizeof(szTmp));
  66232. sprintf(szTmp0, "scene%d", i);
  66233. sprintf(szTmp1, "pos_x%d", i);
  66234. sprintf(szTmp2, "pos_z%d", i);
  66235. if ( IniFile::ReadInt(&ini, "startscene", szTmp0, &nValue) != 1 )
  66236. {
  66237. snprintf(szErr, 0x400u, "[CharConfig::CharConfig]: Read ini failed!! section:%s; key:.%s", "startscene", szTmp0);
  66238. __assertex__("./DB/CharConfig.cpp", 0x262u, "DBChooseSceneTable::DBChooseSceneTable()", "FALSE", szErr);
  66239. }
  66240. g_DBSceneTable.mSceneTable[0].mSceneID[i] = nValue;
  66241. if ( IniFile::ReadText(&ini, "startscene", szTmp1, szTmp, 32) != 1 )
  66242. {
  66243. snprintf(szErr, 0x400u, "[CharConfig::CharConfig]: Read ini failed!! section:%s; key:.%s", "startscene", szTmp1);
  66244. __assertex__("./DB/CharConfig.cpp", 0x26Du, "DBChooseSceneTable::DBChooseSceneTable()", "FALSE", szErr);
  66245. }
  66246. g_DBSceneTable.mSceneTable[0].mPos[i].m_fX = __strtod_internal(szTmp, 0, 0);
  66247. if ( IniFile::ReadText(&ini, "startscene", szTmp2, szTmp, 32) != 1 )
  66248. {
  66249. snprintf(szErr, 0x400u, "[CharConfig::CharConfig]: Read ini failed!! section:%s; key:.%s", "startscene", szTmp2);
  66250. __assertex__("./DB/CharConfig.cpp", 0x279u, "DBChooseSceneTable::DBChooseSceneTable()", "FALSE", szErr);
  66251. }
  66252. g_DBSceneTable.mSceneTable[0].mPos[i].m_fZ = __strtod_internal(szTmp, 0, 0);
  66253. }
  66254. IniFile::~IniFile(&ini);
  66255. }
  66256.  
  66257. //----- (080A11C4) --------------------------------------------------------
  66258. void __cdecl DBChooseSceneTable::DBChooseSceneTable(DBChooseSceneTable *const this)
  66259. {
  66260. DBChooseSceneTable *v1; // ebx
  66261. signed int v2; // edi
  66262. WORLD_POS *v3; // eax
  66263. signed int v4; // edx
  66264. INT v5; // ebx
  66265. INT i; // [esp+24h] [ebp-DD4h]
  66266. INT nValue; // [esp+28h] [ebp-DD0h]
  66267. char szErr[1024]; // [esp+30h] [ebp-DC8h]
  66268. char szTmp[32]; // [esp+430h] [ebp-9C8h]
  66269. char szTmp2[32]; // [esp+450h] [ebp-9A8h]
  66270. char szTmp1[32]; // [esp+470h] [ebp-988h]
  66271. char szTmp0[32]; // [esp+490h] [ebp-968h]
  66272. IniFile ini; // [esp+4B0h] [ebp-948h]
  66273.  
  66274. v1 = this;
  66275. v2 = 9;
  66276. do
  66277. {
  66278. v3 = v1->mSceneTable[0].mPos;
  66279. v4 = 9;
  66280. do
  66281. {
  66282. --v4;
  66283. v3->m_fX = 0.0;
  66284. v3->m_fZ = 0.0;
  66285. ++v3;
  66286. }
  66287. while ( v4 != -1 );
  66288. --v2;
  66289. memset(v1, 0, 0x68u);
  66290. v1 = (DBChooseSceneTable *)((char *)v1 + 104);
  66291. }
  66292. while ( v2 != -1 );
  66293. IniFile::IniFile((const CHAR *)&ini, "./Config/DefaultChar.ini");
  66294. if ( IniFile::ReadInt(&ini, "startscene", "scenecount", &nValue) != 1 )
  66295. {
  66296. snprintf(
  66297. szErr,
  66298. 0x400u,
  66299. "[CharConfig::CharConfig]: Read ini failed!! section:%s; key:.%s",
  66300. "startscene",
  66301. "scenecount");
  66302. __assertex__("./DB/CharConfig.cpp", 0x281u, "DBChooseSceneTable::DBChooseSceneTable()", "FALSE", szErr);
  66303. }
  66304. v5 = nValue;
  66305. if ( nValue > 10 )
  66306. v5 = 10;
  66307. i = 0;
  66308. for ( g_DBSceneTable.mSceneTable[0].mSceneCount = v5; i < v5; ++i )
  66309. {
  66310. memset(szTmp0, 0, sizeof(szTmp0));
  66311. memset(szTmp1, 0, sizeof(szTmp1));
  66312. memset(szTmp2, 0, sizeof(szTmp2));
  66313. memset(szTmp, 0, sizeof(szTmp));
  66314. sprintf(szTmp0, "scene%d", i);
  66315. sprintf(szTmp1, "pos_x%d", i);
  66316. sprintf(szTmp2, "pos_z%d", i);
  66317. if ( IniFile::ReadInt(&ini, "startscene", szTmp0, &nValue) != 1 )
  66318. {
  66319. snprintf(szErr, 0x400u, "[CharConfig::CharConfig]: Read ini failed!! section:%s; key:.%s", "startscene", szTmp0);
  66320. __assertex__("./DB/CharConfig.cpp", 0x262u, "DBChooseSceneTable::DBChooseSceneTable()", "FALSE", szErr);
  66321. }
  66322. g_DBSceneTable.mSceneTable[0].mSceneID[i] = nValue;
  66323. if ( IniFile::ReadText(&ini, "startscene", szTmp1, szTmp, 32) != 1 )
  66324. {
  66325. snprintf(szErr, 0x400u, "[CharConfig::CharConfig]: Read ini failed!! section:%s; key:.%s", "startscene", szTmp1);
  66326. __assertex__("./DB/CharConfig.cpp", 0x26Du, "DBChooseSceneTable::DBChooseSceneTable()", "FALSE", szErr);
  66327. }
  66328. g_DBSceneTable.mSceneTable[0].mPos[i].m_fX = __strtod_internal(szTmp, 0, 0);
  66329. if ( IniFile::ReadText(&ini, "startscene", szTmp2, szTmp, 32) != 1 )
  66330. {
  66331. snprintf(szErr, 0x400u, "[CharConfig::CharConfig]: Read ini failed!! section:%s; key:.%s", "startscene", szTmp2);
  66332. __assertex__("./DB/CharConfig.cpp", 0x279u, "DBChooseSceneTable::DBChooseSceneTable()", "FALSE", szErr);
  66333. }
  66334. g_DBSceneTable.mSceneTable[0].mPos[i].m_fZ = __strtod_internal(szTmp, 0, 0);
  66335. }
  66336. IniFile::~IniFile(&ini);
  66337. }
  66338.  
  66339. //----- (080A1560) --------------------------------------------------------
  66340. BOOL __cdecl DBChooseSceneTable::GetPosBySceneID(DBChooseSceneTable *const this, SceneID_t sid, CHAR_TYPE ctype, WORLD_POS *const pos)
  66341. {
  66342. CFG_CHOOSE_SCENE *v4; // ecx
  66343. int v5; // edx
  66344. int v7; // eax
  66345. FLOAT v8; // edx
  66346.  
  66347. if ( (signed int)ctype > 0 )
  66348. __assert__(
  66349. "./DB/CharConfig.cpp",
  66350. 0x298u,
  66351. "BOOL DBChooseSceneTable::GetPosBySceneID(SceneID_t, CHAR_TYPE, WORLD_POS&)",
  66352. "ctype<CT_NUMBER");
  66353. v4 = &this->mSceneTable[ctype];
  66354. v5 = 0;
  66355. if ( v4->mSceneCount <= 0 )
  66356. return 0;
  66357. while ( v4->mSceneID[v5] != sid )
  66358. {
  66359. if ( v4->mSceneCount <= ++v5 )
  66360. return 0;
  66361. }
  66362. v7 = (int)v4 + 8 * v5;
  66363. v8 = *(float *)(v7 + 24);
  66364. pos->m_fZ = *(FLOAT *)(v7 + 28);
  66365. pos->m_fX = v8;
  66366. return 1;
  66367. }
  66368.  
  66369. //----- (080A1628) --------------------------------------------------------
  66370. BOOL __cdecl DBChooseSceneTable::isValidSceneID(DBChooseSceneTable *const this, SceneID_t sid, CHAR_TYPE ctype)
  66371. {
  66372. CFG_CHOOSE_SCENE *v3; // esi
  66373. int v4; // edx
  66374.  
  66375. if ( (signed int)ctype > 0 )
  66376. __assert__(
  66377. "./DB/CharConfig.cpp",
  66378. 0x2B1u,
  66379. "BOOL DBChooseSceneTable::isValidSceneID(SceneID_t, CHAR_TYPE)",
  66380. "ctype<CT_NUMBER");
  66381. v3 = &this->mSceneTable[ctype];
  66382. v4 = 0;
  66383. if ( v3->mSceneCount <= 0 )
  66384. return 0;
  66385. while ( v3->mSceneID[v4] != sid )
  66386. {
  66387. if ( v3->mSceneCount <= ++v4 )
  66388. return 0;
  66389. }
  66390. return 1;
  66391. }
  66392.  
  66393. //----- (080A16DC) --------------------------------------------------------
  66394. BOOL __cdecl CharConfig::InitCharAttr(FULLUSERDATA *pData)
  66395. {
  66396. _COOLDOWN_DB_LOAD_FOR_HUMAN *v1; // eax
  66397. signed int v2; // edx
  66398. _SETTING_DB_LOAD *v3; // eax
  66399. signed int v4; // edx
  66400. CHAR *v5; // edi
  66401. BOOL result; // eax
  66402. INT DefEquip; // [esp+1Ch] [ebp-8Ch]
  66403. BYTE FaceModel; // [esp+21h] [ebp-87h]
  66404. BYTE HairModel; // [esp+22h] [ebp-86h]
  66405. BYTE FaceColor; // [esp+23h] [ebp-85h]
  66406. UINT HairColor; // [esp+24h] [ebp-84h]
  66407. UINT CreateDate; // [esp+28h] [ebp-80h]
  66408. BOOL Sex; // [esp+2Ch] [ebp-7Ch]
  66409. GUID_t GUID; // [esp+30h] [ebp-78h]
  66410. INT PortraitID; // [esp+34h] [ebp-74h]
  66411. CHAR Title[34]; // [esp+40h] [ebp-68h]
  66412. CHAR Name[30]; // [esp+70h] [ebp-38h]
  66413.  
  66414. if ( !pData )
  66415. __assert__("./DB/CharConfig.cpp", 0x1FEu, "static BOOL CharConfig::InitCharAttr(FULLUSERDATA*)", "pData");
  66416. if ( !CharConfig::pUserData )
  66417. __assert__("./DB/CharConfig.cpp", 0x1FFu, "static BOOL CharConfig::InitCharAttr(FULLUSERDATA*)", "pUserData");
  66418. PortraitID = pData->m_Human.m_PortraitID;
  66419. strncpy(Name, pData->m_Human.m_Name, 0x1Eu);
  66420. strncpy(Title, pData->m_Human.m_Title, 0x22u);
  66421. GUID = pData->m_Human.m_GUID;
  66422. Sex = pData->m_Human.m_Sex;
  66423. CreateDate = pData->m_Human.m_CreateDate;
  66424. HairColor = pData->m_Human.m_HairColor;
  66425. FaceColor = pData->m_Human.m_FaceColor;
  66426. HairModel = pData->m_Human.m_HairModel;
  66427. FaceModel = pData->m_Human.m_FaceModel;
  66428. DefEquip = pData->m_Human.m_DefEquip;
  66429. _HUMAN_DB_LOAD::CleanUp(&pData->m_Human);
  66430. _EQUIP_DB_LOAD::CleanUp(&pData->m_Equip);
  66431. _BAG_DB_LOAD::CleanUp(&pData->m_Bag);
  66432. _BANK_DB_LOAD::CleanUp((char *)&pData->m_Bank);
  66433. _SKILL_DB_LOAD::CleanUp(&pData->m_Skill);
  66434. v1 = &pData->m_Cooldown;
  66435. v2 = 31;
  66436. do
  66437. {
  66438. v1->m_aCooldown[0].m_nID = -1;
  66439. v1->m_aCooldown[0].m_nCooldown = 0;
  66440. v1->m_aCooldown[0].m_nCooldownElapsed = 0;
  66441. v1 = (_COOLDOWN_DB_LOAD_FOR_HUMAN *)((char *)v1 + 12);
  66442. --v2;
  66443. }
  66444. while ( v2 >= 0 );
  66445. _XINFA_DB_LOAD::CleanUp(&pData->m_XinFa);
  66446. _IMPACT_DB_LOAD::CleanUp(&pData->m_Impact.m_Count);
  66447. _ABILITY_DB_LOAD::CleanUp(pData->m_Ability.m_aPrescr);
  66448. _MISSION_DB_LOAD::CleanUp(&pData->m_Mission);
  66449. v3 = &pData->m_Setting;
  66450. v4 = 127;
  66451. do
  66452. {
  66453. v3->m_aSetting[0].m_SettingType = 0;
  66454. v3->m_aSetting[0].m_SettingData = 0;
  66455. v3 = (_SETTING_DB_LOAD *)((char *)v3 + 5);
  66456. --v4;
  66457. }
  66458. while ( v4 >= 0 );
  66459. _PET_DB_LIST_LOAD::CleanUp(&pData->m_PetList);
  66460. _RELATION_DB_LOAD::CleanUp(&pData->m_Relation);
  66461. memset(&pData->m_PrivateInfo, 0, 0x1B0u);
  66462. pData->m_PrivateInfo.m_CharGUID = -1;
  66463. pData->m_bIsPasswdUnlock = 0;
  66464. pData->m_DRideData.m_bDRideMountOwner = 0;
  66465. pData->m_DRideData.m_uDRideTargetGUID = -1;
  66466. memset(pData->m_AccName, 0, 0x30u);
  66467. v5 = &pData->m_AccName[48];
  66468. *(_WORD *)v5 = 0;
  66469. v5[2] = 0;
  66470. pData->m_macValue.m_uHigh = 0;
  66471. pData->m_macValue.m_uLow = 0;
  66472. pData->m_uVERecoverTime = 0;
  66473. pData->m_nLeftPilferLockTime = 0;
  66474. pData->m_bPilferLockTimeStart = 0;
  66475. pData->m_uPrevHeartBeatANSITime = 0;
  66476. memset(pData->m_LoginHost, 0, 0x18u);
  66477. pData->m_LoginHost[24] = 0;
  66478. pData->m_AccountSafeSign.m_Sign = 0;
  66479. pData->m_IsPilfered = 0;
  66480. memcpy(pData, CharConfig::pUserData, 0xC619u);
  66481. pData->m_Human.m_PortraitID = PortraitID;
  66482. strncpy(pData->m_Human.m_Name, Name, 0x1Eu);
  66483. strncpy(Title, pData->m_Human.m_Title, 0x22u);
  66484. pData->m_Human.m_Sex = Sex;
  66485. pData->m_Human.m_HairColor = HairColor;
  66486. pData->m_Human.m_GUID = GUID;
  66487. pData->m_Human.m_FaceColor = FaceColor;
  66488. pData->m_Human.m_HairModel = HairModel;
  66489. pData->m_Human.m_FaceModel = FaceModel;
  66490. pData->m_Human.m_CreateDate = CreateDate;
  66491. result = 1;
  66492. pData->m_Human.m_DefEquip = DefEquip;
  66493. return result;
  66494. }
  66495.  
  66496. //----- (080A1A34) --------------------------------------------------------
  66497. void __cdecl CharConfig::CharConfig(CharConfig *const this)
  66498. {
  66499. int v1; // esi
  66500. int v2; // eax
  66501. signed int v3; // edx
  66502. int v4; // eax
  66503. signed int v5; // edx
  66504. int v6; // edi
  66505. FULLUSERDATA *v7; // ebx
  66506. BYTE v8; // dl
  66507. signed int v9; // esi
  66508. FULLUSERDATA *v10; // ebx
  66509. BYTE v11; // dl
  66510. FULLUSERDATA *v12; // ebx
  66511. signed int v13; // esi
  66512. INT v14; // edx
  66513. INT v15; // ebx
  66514. INT i; // esi
  66515. int v17; // esi
  66516. bool j; // sf
  66517. unsigned __int8 v19; // of
  66518. INT v20; // edi
  66519. INT v21; // esi
  66520. INT v22; // ebx
  66521. INT iData; // ST30_4
  66522. INT v24; // edx
  66523. FULLUSERDATA *v25; // ebx
  66524. FULLUSERDATA *v26; // ebx
  66525. FULLUSERDATA *v27; // ebx
  66526. BYTE iType; // [esp+20h] [ebp-EB4h]
  66527. INT nTableNum; // [esp+24h] [ebp-EB0h]
  66528. INT iSkillAbility; // [esp+28h] [ebp-EACh]
  66529. INT iSkillAbilitya; // [esp+28h] [ebp-EACh]
  66530. INT nValue; // [esp+30h] [ebp-EA4h]
  66531. int v33; // [esp+34h] [ebp-EA0h]
  66532. int v34; // [esp+38h] [ebp-E9Ch]
  66533. char szTmp2[32]; // [esp+3Ch] [ebp-E98h]
  66534. char szExp[64]; // [esp+5Ch] [ebp-E78h]
  66535. char szLevel[64]; // [esp+9Ch] [ebp-E38h]
  66536. char szAbility[64]; // [esp+DCh] [ebp-DF8h]
  66537. char szTmp0[32]; // [esp+11Ch] [ebp-DB8h]
  66538. char szTmp1[32]; // [esp+13Ch] [ebp-D98h]
  66539. char szErr[1024]; // [esp+16Ch] [ebp-D68h]
  66540. char szTmp[32]; // [esp+56Ch] [ebp-968h]
  66541. IniFile ini; // [esp+58Ch] [ebp-948h]
  66542.  
  66543. v1 = operator new(0xC619u);
  66544. FULLUSERDATA::FULLUSERDATA((FULLUSERDATA_0 *const )v1);
  66545. CharConfig::pUserData = (FULLUSERDATA *)v1;
  66546. if ( !v1 )
  66547. __assertex__(
  66548. "./DB/CharConfig.cpp",
  66549. 0x11u,
  66550. "CharConfig::CharConfig()",
  66551. "FALSE",
  66552. "[CharConfig::CharConfig]: alloc memory for FULLUSERDATA failed!!");
  66553. _HUMAN_DB_LOAD::CleanUp((_HUMAN_DB_LOAD *const )v1);
  66554. _EQUIP_DB_LOAD::CleanUp((_WORD *)(v1 + 29910));
  66555. _BAG_DB_LOAD::CleanUp((_DWORD *)(v1 + 12290));
  66556. _BANK_DB_LOAD::CleanUp((char *)(v1 + 1721));
  66557. _SKILL_DB_LOAD::CleanUp((_SKILL_DB_LOAD *const )(v1 + 33256));
  66558. v2 = v1 + 33513;
  66559. v3 = 31;
  66560. do
  66561. {
  66562. *(_WORD *)v2 = -1;
  66563. *(_DWORD *)(v2 + 4) = 0;
  66564. *(_DWORD *)(v2 + 8) = 0;
  66565. v2 += 12;
  66566. --v3;
  66567. }
  66568. while ( v3 >= 0 );
  66569. _XINFA_DB_LOAD::CleanUp((_XINFA_DB_LOAD *const )(v1 + 33897));
  66570. _IMPACT_DB_LOAD::CleanUp((_BYTE *)(v1 + 33962));
  66571. _ABILITY_DB_LOAD::CleanUp((char *)(v1 + 35483));
  66572. _MISSION_DB_LOAD::CleanUp((_MISSION_DB_LOAD *const )(v1 + 36251));
  66573. v4 = v1 + 39632;
  66574. v5 = 127;
  66575. do
  66576. {
  66577. *(_BYTE *)v4 = 0;
  66578. *(_DWORD *)(v4 + 1) = 0;
  66579. v4 += 5;
  66580. --v5;
  66581. }
  66582. while ( v5 >= 0 );
  66583. _PET_DB_LIST_LOAD::CleanUp((_PET_DB_LIST_LOAD *const )(v1 + 40272));
  66584. _RELATION_DB_LOAD::CleanUp((_RELATION_DB_LOAD *const )(v1 + 44262));
  66585. memset((void *)(v1 + 50161), 0, 0x1B0u);
  66586. *(_DWORD *)(v1 + 50162) = -1;
  66587. *(_DWORD *)(v1 + 50593) = 0;
  66588. *(_DWORD *)(v1 + 50597) = 0;
  66589. *(_DWORD *)(v1 + 50601) = -1;
  66590. memset((void *)(v1 + 50605), 0, 0x30u);
  66591. v6 = v1 + 50653;
  66592. *(_WORD *)v6 = 0;
  66593. *(_BYTE *)(v6 + 2) = 0;
  66594. v33 = 0;
  66595. v34 = 0;
  66596. *(_DWORD *)(v1 + 50656) = 0;
  66597. *(_DWORD *)(v1 + 50660) = 0;
  66598. *(_DWORD *)(v1 + 50664) = 0;
  66599. *(_DWORD *)(v1 + 50668) = 0;
  66600. *(_DWORD *)(v1 + 50672) = 0;
  66601. *(_DWORD *)(v1 + 50676) = 0;
  66602. memset((void *)(v1 + 50680), 0, 0x18u);
  66603. *(_BYTE *)(v1 + 50704) = 0;
  66604. *(_DWORD *)(v1 + 50705) = 0;
  66605. *(_DWORD *)(v1 + 50709) = 0;
  66606. IniFile::IniFile((const CHAR *)&ini, "./Config/DefaultChar.ini");
  66607. if ( IniFile::ReadInt(&ini, "baseinfo", "scene", &nValue) != 1 )
  66608. {
  66609. snprintf(szErr, 0x400u, "[CharConfig::CharConfig]: Read ini failed!! section:%s; key:.%s", "baseinfo", 135150222);
  66610. __assertex__("./DB/CharConfig.cpp", 0x22u, "CharConfig::CharConfig()", "FALSE", szErr);
  66611. }
  66612. CharConfig::pUserData->m_Human.m_StartScene = nValue;
  66613. if ( IniFile::ReadText(&ini, "baseinfo", "pos_x", szTmp, 32) != 1 )
  66614. {
  66615. snprintf(szErr, 0x400u, "[CharConfig::CharConfig]: Read ini failed!! section:%s; key:.%s", "baseinfo", "pos_x");
  66616. __assertex__("./DB/CharConfig.cpp", 0x2Du, "CharConfig::CharConfig()", "FALSE", szErr);
  66617. }
  66618. v27 = CharConfig::pUserData;
  66619. v27->m_Human.m_Position.m_fX = __strtod_internal(szTmp, 0, 0);
  66620. if ( IniFile::ReadText(&ini, "baseinfo", "pos_z", szTmp, 32) != 1 )
  66621. {
  66622. snprintf(szErr, 0x400u, "[CharConfig::CharConfig]: Read ini failed!! section:%s; key:.%s", "baseinfo", "pos_z");
  66623. __assertex__("./DB/CharConfig.cpp", 0x38u, "CharConfig::CharConfig()", "FALSE", szErr);
  66624. }
  66625. v26 = CharConfig::pUserData;
  66626. v26->m_Human.m_Position.m_fZ = __strtod_internal(szTmp, 0, 0);
  66627. if ( IniFile::ReadInt(&ini, "baseinfo", "hp", &nValue) != 1 )
  66628. {
  66629. snprintf(szErr, 0x400u, "[CharConfig::CharConfig]: Read ini failed!! section:%s; key:.%s", "baseinfo", "hp");
  66630. __assertex__("./DB/CharConfig.cpp", 0x43u, "CharConfig::CharConfig()", "FALSE", szErr);
  66631. }
  66632. CharConfig::pUserData->m_Human.m_HP = nValue;
  66633. if ( IniFile::ReadInt(&ini, "baseinfo", "mp", &nValue) != 1 )
  66634. {
  66635. snprintf(szErr, 0x400u, "[CharConfig::CharConfig]: Read ini failed!! section:%s; key:.%s", "baseinfo", 135013046);
  66636. __assertex__("./DB/CharConfig.cpp", 0x4Eu, "CharConfig::CharConfig()", "FALSE", szErr);
  66637. }
  66638. CharConfig::pUserData->m_Human.m_MP = nValue;
  66639. if ( IniFile::ReadInt(&ini, "baseinfo", "level", &nValue) != 1 )
  66640. {
  66641. snprintf(szErr, 0x400u, "[CharConfig::CharConfig]: Read ini failed!! section:%s; key:.%s", "baseinfo", "level");
  66642. __assertex__("./DB/CharConfig.cpp", 0x59u, "CharConfig::CharConfig()", "FALSE", szErr);
  66643. }
  66644. v7 = CharConfig::pUserData;
  66645. CharConfig::pUserData->m_Human.m_Level = nValue;
  66646. v7->m_Human.m_HairColor = 0;
  66647. if ( IniFile::ReadInt(&ini, "baseinfo", "vigor", &nValue) != 1 )
  66648. {
  66649. snprintf(szErr, 0x400u, "[CharConfig::CharConfig]: Read ini failed!! section:%s; key:.%s", "baseinfo", "vigor");
  66650. __assertex__("./DB/CharConfig.cpp", 0x65u, "CharConfig::CharConfig()", "FALSE", szErr);
  66651. }
  66652. CharConfig::pUserData->m_Human.m_Vigor = nValue;
  66653. if ( IniFile::ReadInt(&ini, "baseinfo", aMax, &nValue) != 1 )
  66654. {
  66655. snprintf(szErr, 0x400u, "[CharConfig::CharConfig]: Read ini failed!! section:%s; key:.%s", "baseinfo", aMax);
  66656. __assertex__("./DB/CharConfig.cpp", 0x70u, "CharConfig::CharConfig()", "FALSE", szErr);
  66657. }
  66658. CharConfig::pUserData->m_Human.m_MaxVigor = nValue;
  66659. if ( IniFile::ReadInt(&ini, "baseinfo", "vigor_regenerate", &nValue) != 1 )
  66660. {
  66661. snprintf(
  66662. szErr,
  66663. 0x400u,
  66664. "[CharConfig::CharConfig]: Read ini failed!! section:%s; key:.%s",
  66665. "baseinfo",
  66666. "vigor_regenerate");
  66667. __assertex__("./DB/CharConfig.cpp", 0x7Bu, "CharConfig::CharConfig()", "FALSE", szErr);
  66668. }
  66669. CharConfig::pUserData->m_Human.m_VigorRegeneRate = nValue;
  66670. if ( IniFile::ReadInt(&ini, "baseinfo", "energy", &nValue) != 1 )
  66671. {
  66672. snprintf(szErr, 0x400u, "[CharConfig::CharConfig]: Read ini failed!! section:%s; key:.%s", "baseinfo", "energy");
  66673. __assertex__("./DB/CharConfig.cpp", 0x86u, "CharConfig::CharConfig()", "FALSE", szErr);
  66674. }
  66675. CharConfig::pUserData->m_Human.m_Energy = nValue;
  66676. if ( IniFile::ReadInt(&ini, "baseinfo", aMax_0, &nValue) != 1 )
  66677. {
  66678. snprintf(szErr, 0x400u, "[CharConfig::CharConfig]: Read ini failed!! section:%s; key:.%s", "baseinfo", aMax_0);
  66679. __assertex__("./DB/CharConfig.cpp", 0x91u, "CharConfig::CharConfig()", "FALSE", szErr);
  66680. }
  66681. CharConfig::pUserData->m_Human.m_MaxEnergy = nValue;
  66682. if ( IniFile::ReadInt(&ini, "baseinfo", "energy_regenerate", &nValue) != 1 )
  66683. {
  66684. snprintf(
  66685. szErr,
  66686. 0x400u,
  66687. "[CharConfig::CharConfig]: Read ini failed!! section:%s; key:.%s",
  66688. "baseinfo",
  66689. "energy_regenerate");
  66690. __assertex__("./DB/CharConfig.cpp", 0x9Cu, "CharConfig::CharConfig()", "FALSE", szErr);
  66691. }
  66692. CharConfig::pUserData->m_Human.m_EnergyRegeneRate = nValue;
  66693. if ( IniFile::ReadInt(&ini, "baseinfo", "exp", &nValue) != 1 )
  66694. {
  66695. snprintf(szErr, 0x400u, "[CharConfig::CharConfig]: Read ini failed!! section:%s; key:.%s", "baseinfo", "exp");
  66696. __assertex__("./DB/CharConfig.cpp", 0xA7u, "CharConfig::CharConfig()", "FALSE", szErr);
  66697. }
  66698. CharConfig::pUserData->m_Human.m_Exp = nValue;
  66699. if ( IniFile::ReadInt(&ini, "baseinfo", "menpai", &nValue) != 1 )
  66700. {
  66701. snprintf(szErr, 0x400u, "[CharConfig::CharConfig]: Read ini failed!! section:%s; key:.%s", "baseinfo", "menpai");
  66702. __assertex__("./DB/CharConfig.cpp", 0xBFu, "CharConfig::CharConfig()", "FALSE", szErr);
  66703. }
  66704. CharConfig::pUserData->m_Human.m_MenPai = nValue;
  66705. if ( IniFile::ReadInt(&ini, "baseinfo", "money", &nValue) != 1 )
  66706. {
  66707. snprintf(szErr, 0x400u, "[CharConfig::CharConfig]: Read ini failed!! section:%s; key:.%s", "baseinfo", "money");
  66708. __assertex__("./DB/CharConfig.cpp", 0xCAu, "CharConfig::CharConfig()", "FALSE", szErr);
  66709. }
  66710. CharConfig::pUserData->m_Human.m_Money = nValue;
  66711. if ( IniFile::ReadInt(&ini, "attribute", "str", &nValue) != 1 )
  66712. {
  66713. snprintf(szErr, 0x400u, "[CharConfig::CharConfig]: Read ini failed!! section:%s; key:.%s", "attribute", "str");
  66714. __assertex__("./DB/CharConfig.cpp", 0xD8u, "CharConfig::CharConfig()", "FALSE", szErr);
  66715. }
  66716. CharConfig::pUserData->m_Human.m_BaseAttrLevel1.m_pAttr[0] = nValue;
  66717. if ( IniFile::ReadInt(&ini, "attribute", "spr", &nValue) != 1 )
  66718. {
  66719. snprintf(szErr, 0x400u, "[CharConfig::CharConfig]: Read ini failed!! section:%s; key:.%s", "attribute", "spr");
  66720. __assertex__("./DB/CharConfig.cpp", 0xE3u, "CharConfig::CharConfig()", "FALSE", szErr);
  66721. }
  66722. CharConfig::pUserData->m_Human.m_BaseAttrLevel1.m_pAttr[1] = nValue;
  66723. if ( IniFile::ReadInt(&ini, "attribute", "con", &nValue) != 1 )
  66724. {
  66725. snprintf(szErr, 0x400u, "[CharConfig::CharConfig]: Read ini failed!! section:%s; key:.%s", "attribute", "con");
  66726. __assertex__("./DB/CharConfig.cpp", 0xEEu, "CharConfig::CharConfig()", "FALSE", szErr);
  66727. }
  66728. CharConfig::pUserData->m_Human.m_BaseAttrLevel1.m_pAttr[2] = nValue;
  66729. if ( IniFile::ReadInt(&ini, "attribute", "int", &nValue) != 1 )
  66730. {
  66731. snprintf(szErr, 0x400u, "[CharConfig::CharConfig]: Read ini failed!! section:%s; key:.%s", "attribute", 135013499);
  66732. __assertex__("./DB/CharConfig.cpp", 0xF9u, "CharConfig::CharConfig()", "FALSE", szErr);
  66733. }
  66734. CharConfig::pUserData->m_Human.m_BaseAttrLevel1.m_pAttr[3] = nValue;
  66735. if ( IniFile::ReadInt(&ini, "attribute", "dex", &nValue) != 1 )
  66736. {
  66737. snprintf(szErr, 0x400u, "[CharConfig::CharConfig]: Read ini failed!! section:%s; key:.%s", "attribute", 135050305);
  66738. __assertex__("./DB/CharConfig.cpp", 0x104u, "CharConfig::CharConfig()", "FALSE", szErr);
  66739. }
  66740. CharConfig::pUserData->m_Human.m_BaseAttrLevel1.m_pAttr[4] = nValue;
  66741. if ( IniFile::ReadInt(&ini, "skill", "number", &nValue) != 1 )
  66742. {
  66743. snprintf(szErr, 0x400u, "[CharConfig::CharConfig]: Read ini failed!! section:%s; key:.%s", "skill", 135016406);
  66744. __assertex__("./DB/CharConfig.cpp", 0x126u, "CharConfig::CharConfig()", "FALSE", szErr);
  66745. }
  66746. v8 = nValue;
  66747. if ( nValue > 128 )
  66748. {
  66749. nValue = 128;
  66750. v8 = -128;
  66751. }
  66752. CharConfig::pUserData->m_Skill.m_Count = v8;
  66753. v9 = 0;
  66754. if ( CharConfig::pUserData->m_Skill.m_Count )
  66755. {
  66756. do
  66757. {
  66758. memset(szTmp1, 0, sizeof(szTmp1));
  66759. sprintf(szTmp1, "id%d", v9, 0);
  66760. if ( IniFile::ReadInt(&ini, "skill", szTmp1, &nValue) != 1 )
  66761. {
  66762. snprintf(szErr, 0x400u, "[CharConfig::CharConfig]: Read ini failed!! section:%s; key:.%s", "skill", szTmp1);
  66763. __assertex__("./DB/CharConfig.cpp", 0x11Eu, "CharConfig::CharConfig()", "FALSE", szErr);
  66764. }
  66765. v10 = CharConfig::pUserData;
  66766. CharConfig::pUserData->m_Skill.m_aSkill[v9++].m_nSkillID = nValue;
  66767. }
  66768. while ( v10->m_Skill.m_Count > v9 );
  66769. }
  66770. if ( IniFile::ReadInt(&ini, "xinfa", "number", &nValue) != 1 )
  66771. {
  66772. snprintf(szErr, 0x400u, "[CharConfig::CharConfig]: Read ini failed!! section:%s; key:.%s", "skill", 135016406);
  66773. __assertex__("./DB/CharConfig.cpp", 0x153u, "CharConfig::CharConfig()", "FALSE", szErr);
  66774. }
  66775. v11 = nValue;
  66776. if ( nValue > 16 )
  66777. {
  66778. nValue = 16;
  66779. v11 = 16;
  66780. }
  66781. CharConfig::pUserData->m_XinFa.m_Count = v11;
  66782. v12 = CharConfig::pUserData;
  66783. v13 = 0;
  66784. if ( CharConfig::pUserData->m_XinFa.m_Count )
  66785. {
  66786. do
  66787. {
  66788. memset(szTmp1, 0, sizeof(szTmp1));
  66789. memset(szTmp0, 0, sizeof(szTmp0));
  66790. sprintf(szTmp1, "id%d", v13, szTmp1);
  66791. if ( IniFile::ReadInt(&ini, "xinfa", szTmp1, &nValue) != 1 )
  66792. {
  66793. snprintf(szErr, 0x400u, "[CharConfig::CharConfig]: Read ini failed!! section:%s; key:.%s", "xinfa", szTmp1);
  66794. __assertex__("./DB/CharConfig.cpp", 0x13Fu, "CharConfig::CharConfig()", "FALSE", szErr);
  66795. }
  66796. CharConfig::pUserData->m_XinFa.m_aXinFa[v13].m_nXinFaID = nValue;
  66797. sprintf(szTmp0, "level%d", v13, v12);
  66798. if ( IniFile::ReadInt(&ini, "xinfa", szTmp0, &nValue) != 1 )
  66799. {
  66800. snprintf(szErr, 0x400u, "[CharConfig::CharConfig]: Read ini failed!! section:%s; key:.%s", "xinfa", szTmp0);
  66801. __assertex__("./DB/CharConfig.cpp", 0x14Bu, "CharConfig::CharConfig()", "FALSE", szErr);
  66802. }
  66803. CharConfig::pUserData->m_XinFa.m_aXinFa[v13].m_nLevel = nValue;
  66804. v12 = CharConfig::pUserData;
  66805. ++v13;
  66806. }
  66807. while ( CharConfig::pUserData->m_XinFa.m_Count > v13 );
  66808. }
  66809. strncpy(v12->m_Relation.m_szMood, &byte_80E3B2E, 0x20u);
  66810. CharConfig::pUserData->m_Relation.m_szMood[31] = 0;
  66811. if ( IniFile::ReadInt(&ini, "ability", "count", &nValue) != 1 )
  66812. {
  66813. snprintf(szErr, 0x400u, "[CharConfig::CharConfig]: Read ini failed!! section:%s; key:.%s", "ability", 135051092);
  66814. __assertex__("./DB/CharConfig.cpp", 0x18Eu, "CharConfig::CharConfig()", "FALSE", szErr);
  66815. }
  66816. v15 = nValue;
  66817. for ( i = 0; i < v15; ++i )
  66818. {
  66819. memset(szAbility, 0, sizeof(szAbility));
  66820. sprintf(szAbility, "abilityskill%d", i, v14);
  66821. if ( IniFile::ReadInt(&ini, "ability", szAbility, 0) != 1 )
  66822. {
  66823. snprintf(szErr, 0x400u, "[CharConfig::CharConfig]: Read ini failed!! section:%s; key:.%s", "ability", szAbility);
  66824. __assertex__("./DB/CharConfig.cpp", 0x16Cu, "CharConfig::CharConfig()", "FALSE", szErr);
  66825. }
  66826. memset(szLevel, 0, sizeof(szLevel));
  66827. memset(szExp, 0, sizeof(szExp));
  66828. sprintf(szLevel, "level%d", i);
  66829. sprintf(szExp, "exp%d", i);
  66830. if ( IniFile::ReadInt(&ini, "ability", szLevel, &nValue) != 1 )
  66831. {
  66832. snprintf(szErr, 0x400u, "[CharConfig::CharConfig]: Read ini failed!! section:%s; key:.%s", "ability", szLevel);
  66833. __assertex__("./DB/CharConfig.cpp", 0x17Bu, "CharConfig::CharConfig()", "FALSE", szErr);
  66834. }
  66835. CharConfig::pUserData->m_Ability.m_aABility[iSkillAbility].m_Level = nValue;
  66836. if ( IniFile::ReadInt(&ini, "ability", szExp, &nValue) != 1 )
  66837. {
  66838. snprintf(szErr, 0x400u, "[CharConfig::CharConfig]: Read ini failed!! section:%s; key:.%s", "ability", szExp);
  66839. __assertex__("./DB/CharConfig.cpp", 0x186u, "CharConfig::CharConfig()", "FALSE", szErr);
  66840. }
  66841. v14 = nValue;
  66842. CharConfig::pUserData->m_Ability.m_aABility[iSkillAbilitya].m_Exp = nValue;
  66843. }
  66844. if ( IniFile::ReadInt(&ini, "table", "number", &nValue) != 1 )
  66845. {
  66846. snprintf(szErr, 0x400u, "[CharConfig::CharConfig]: Read ini failed!! section:%s; key:.%s", "table", 135016406);
  66847. __assertex__("./DB/CharConfig.cpp", 0x1AFu, "CharConfig::CharConfig()", "FALSE", szErr);
  66848. }
  66849. v17 = 0;
  66850. v19 = __OFSUB__(0, nValue);
  66851. for ( j = -nValue < 0; j ^ v19; j = v17 - nTableNum < 0 )
  66852. {
  66853. memset(szTmp, 0, sizeof(szTmp));
  66854. sprintf(szTmp, "peifang%d", v17, 0);
  66855. if ( IniFile::ReadInt(&ini, "table", szTmp, &nValue) != 1 )
  66856. {
  66857. snprintf(szErr, 0x400u, "[CharConfig::CharConfig]: Read ini failed!! section:%s; key:.%s", "table", szTmp);
  66858. __assertex__("./DB/CharConfig.cpp", 0x1A6u, "CharConfig::CharConfig()", "FALSE", szErr);
  66859. }
  66860. CharConfig::pUserData->m_Ability.m_aPrescr[nValue / 8] |= 1 << nValue % 8;
  66861. v19 = __OFSUB__(++v17, nTableNum);
  66862. }
  66863. if ( IniFile::ReadInt(&ini, "setting", "count", &nValue) != 1 )
  66864. {
  66865. snprintf(szErr, 0x400u, "[CharConfig::CharConfig]: Read ini failed!! section:%s; key:.%s", "setting", 135051092);
  66866. __assertex__("./DB/CharConfig.cpp", 0x1EAu, "CharConfig::CharConfig()", "FALSE", szErr);
  66867. }
  66868. v20 = nValue;
  66869. v21 = 0;
  66870. if ( nValue <= 0 )
  66871. {
  66872. v25 = CharConfig::pUserData;
  66873. }
  66874. else
  66875. {
  66876. do
  66877. {
  66878. sprintf(szTmp0, "settingindex%d", v21);
  66879. sprintf(szTmp1, "settingtype%d", v21);
  66880. sprintf(szTmp2, "settingdata%d", v21);
  66881. if ( IniFile::ReadInt(&ini, "setting", szTmp0, &nValue) != 1 )
  66882. {
  66883. snprintf(szErr, 0x400u, "[CharConfig::CharConfig]: Read ini failed!! section:%s; key:.%s", "setting", szTmp0);
  66884. __assertex__("./DB/CharConfig.cpp", 0x1C8u, "CharConfig::CharConfig()", "FALSE", szErr);
  66885. }
  66886. v22 = nValue;
  66887. if ( IniFile::ReadInt(&ini, 0, szTmp1, &nValue) != 1 )
  66888. {
  66889. snprintf(szErr, 0x400u, "[CharConfig::CharConfig]: Read ini failed!! section:%s; key:.%s", "setting", szTmp1);
  66890. __assertex__("./DB/CharConfig.cpp", 0x1D4u, "CharConfig::CharConfig()", "FALSE", szErr);
  66891. }
  66892. if ( IniFile::ReadInt(&ini, "setting", szTmp2, &nValue) != 1 )
  66893. {
  66894. snprintf(szErr, 0x400u, "[CharConfig::CharConfig]: Read ini failed!! section:%s; key:.%s", "setting", szTmp2);
  66895. __assertex__("./DB/CharConfig.cpp", 0x1E0u, "CharConfig::CharConfig()", "FALSE", szErr);
  66896. }
  66897. iData = nValue;
  66898. v24 = v22;
  66899. CharConfig::pUserData->m_Setting.m_aSetting[v22].m_SettingType = iType;
  66900. ++v21;
  66901. v25 = CharConfig::pUserData;
  66902. CharConfig::pUserData->m_Setting.m_aSetting[v24].m_SettingData = iData;
  66903. }
  66904. while ( v21 < v20 );
  66905. }
  66906. v25->m_bIsPasswdUnlock = 0;
  66907. strncpy(v25->m_PrivateInfo.m_LuckWord, &byte_80E3B91, 0xFFu);
  66908. CharConfig::pUserData->m_PrivateInfo.m_LuckWord[254] = 0;
  66909. IniFile::~IniFile(&ini);
  66910. }
  66911.  
  66912. //----- (080A3198) --------------------------------------------------------
  66913. void __cdecl CharConfig::CharConfig(CharConfig *const this)
  66914. {
  66915. int v1; // esi
  66916. int v2; // eax
  66917. signed int v3; // edx
  66918. int v4; // eax
  66919. signed int v5; // edx
  66920. int v6; // edi
  66921. FULLUSERDATA *v7; // ebx
  66922. BYTE v8; // dl
  66923. signed int v9; // esi
  66924. FULLUSERDATA *v10; // ebx
  66925. BYTE v11; // dl
  66926. FULLUSERDATA *v12; // ebx
  66927. signed int v13; // esi
  66928. FULLUSERDATA *v14; // eax
  66929. INT v15; // ebx
  66930. INT i; // esi
  66931. int v17; // esi
  66932. bool j; // sf
  66933. unsigned __int8 v19; // of
  66934. INT v20; // edi
  66935. INT v21; // esi
  66936. INT v22; // ebx
  66937. INT iData; // ST30_4
  66938. INT v24; // edx
  66939. FULLUSERDATA *v25; // ebx
  66940. FULLUSERDATA *v26; // ebx
  66941. FULLUSERDATA *v27; // ebx
  66942. BYTE iType; // [esp+20h] [ebp-EB4h]
  66943. INT nTableNum; // [esp+24h] [ebp-EB0h]
  66944. INT iSkillAbility; // [esp+28h] [ebp-EACh]
  66945. INT iSkillAbilitya; // [esp+28h] [ebp-EACh]
  66946. INT nValue; // [esp+30h] [ebp-EA4h]
  66947. int v33; // [esp+34h] [ebp-EA0h]
  66948. int v34; // [esp+38h] [ebp-E9Ch]
  66949. char szTmp2[32]; // [esp+3Ch] [ebp-E98h]
  66950. char szExp[64]; // [esp+5Ch] [ebp-E78h]
  66951. char szLevel[64]; // [esp+9Ch] [ebp-E38h]
  66952. char szAbility[64]; // [esp+DCh] [ebp-DF8h]
  66953. char szTmp0[32]; // [esp+11Ch] [ebp-DB8h]
  66954. char szTmp1[32]; // [esp+13Ch] [ebp-D98h]
  66955. char szErr[1024]; // [esp+16Ch] [ebp-D68h]
  66956. char szTmp[32]; // [esp+56Ch] [ebp-968h]
  66957. IniFile ini; // [esp+58Ch] [ebp-948h]
  66958.  
  66959. v1 = operator new(0xC619u);
  66960. FULLUSERDATA::FULLUSERDATA((FULLUSERDATA_0 *const )v1);
  66961. CharConfig::pUserData = (FULLUSERDATA *)v1;
  66962. if ( !v1 )
  66963. __assertex__(
  66964. "./DB/CharConfig.cpp",
  66965. 0x11u,
  66966. "CharConfig::CharConfig()",
  66967. "FALSE",
  66968. "[CharConfig::CharConfig]: alloc memory for FULLUSERDATA failed!!");
  66969. _HUMAN_DB_LOAD::CleanUp((_HUMAN_DB_LOAD *const )v1);
  66970. _EQUIP_DB_LOAD::CleanUp((_WORD *)(v1 + 29910));
  66971. _BAG_DB_LOAD::CleanUp((_DWORD *)(v1 + 12290));
  66972. _BANK_DB_LOAD::CleanUp((char *)(v1 + 1721));
  66973. _SKILL_DB_LOAD::CleanUp((_SKILL_DB_LOAD *const )(v1 + 33256));
  66974. v2 = v1 + 33513;
  66975. v3 = 31;
  66976. do
  66977. {
  66978. *(_WORD *)v2 = -1;
  66979. *(_DWORD *)(v2 + 4) = 0;
  66980. *(_DWORD *)(v2 + 8) = 0;
  66981. v2 += 12;
  66982. --v3;
  66983. }
  66984. while ( v3 >= 0 );
  66985. _XINFA_DB_LOAD::CleanUp((_XINFA_DB_LOAD *const )(v1 + 33897));
  66986. _IMPACT_DB_LOAD::CleanUp((_BYTE *)(v1 + 33962));
  66987. _ABILITY_DB_LOAD::CleanUp((char *)(v1 + 35483));
  66988. _MISSION_DB_LOAD::CleanUp((_MISSION_DB_LOAD *const )(v1 + 36251));
  66989. v4 = v1 + 39632;
  66990. v5 = 127;
  66991. do
  66992. {
  66993. *(_BYTE *)v4 = 0;
  66994. *(_DWORD *)(v4 + 1) = 0;
  66995. v4 += 5;
  66996. --v5;
  66997. }
  66998. while ( v5 >= 0 );
  66999. _PET_DB_LIST_LOAD::CleanUp((_PET_DB_LIST_LOAD *const )(v1 + 40272));
  67000. _RELATION_DB_LOAD::CleanUp((_RELATION_DB_LOAD *const )(v1 + 44262));
  67001. memset((void *)(v1 + 50161), 0, 0x1B0u);
  67002. *(_DWORD *)(v1 + 50162) = -1;
  67003. *(_DWORD *)(v1 + 50593) = 0;
  67004. *(_DWORD *)(v1 + 50597) = 0;
  67005. *(_DWORD *)(v1 + 50601) = -1;
  67006. memset((void *)(v1 + 50605), 0, 0x30u);
  67007. v6 = v1 + 50653;
  67008. *(_WORD *)v6 = 0;
  67009. *(_BYTE *)(v6 + 2) = 0;
  67010. v33 = 0;
  67011. v34 = 0;
  67012. *(_DWORD *)(v1 + 50656) = 0;
  67013. *(_DWORD *)(v1 + 50660) = 0;
  67014. *(_DWORD *)(v1 + 50664) = 0;
  67015. *(_DWORD *)(v1 + 50668) = 0;
  67016. *(_DWORD *)(v1 + 50672) = 0;
  67017. *(_DWORD *)(v1 + 50676) = 0;
  67018. memset((void *)(v1 + 50680), 0, 0x18u);
  67019. *(_BYTE *)(v1 + 50704) = 0;
  67020. *(_DWORD *)(v1 + 50705) = 0;
  67021. *(_DWORD *)(v1 + 50709) = 0;
  67022. IniFile::IniFile((const CHAR *)&ini, "./Config/DefaultChar.ini");
  67023. if ( IniFile::ReadInt(&ini, "baseinfo", "scene", &nValue) != 1 )
  67024. {
  67025. snprintf(szErr, 0x400u, "[CharConfig::CharConfig]: Read ini failed!! section:%s; key:.%s", "baseinfo", 135150222);
  67026. __assertex__("./DB/CharConfig.cpp", 0x22u, "CharConfig::CharConfig()", "FALSE", szErr);
  67027. }
  67028. CharConfig::pUserData->m_Human.m_StartScene = nValue;
  67029. if ( IniFile::ReadText(&ini, "baseinfo", "pos_x", szTmp, 32) != 1 )
  67030. {
  67031. snprintf(szErr, 0x400u, "[CharConfig::CharConfig]: Read ini failed!! section:%s; key:.%s", "baseinfo", "pos_x");
  67032. __assertex__("./DB/CharConfig.cpp", 0x2Du, "CharConfig::CharConfig()", "FALSE", szErr);
  67033. }
  67034. v27 = CharConfig::pUserData;
  67035. v27->m_Human.m_Position.m_fX = __strtod_internal(szTmp, 0, 0);
  67036. if ( IniFile::ReadText(&ini, "baseinfo", "pos_z", szTmp, 32) != 1 )
  67037. {
  67038. snprintf(szErr, 0x400u, "[CharConfig::CharConfig]: Read ini failed!! section:%s; key:.%s", "baseinfo", "pos_z");
  67039. __assertex__("./DB/CharConfig.cpp", 0x38u, "CharConfig::CharConfig()", "FALSE", szErr);
  67040. }
  67041. v26 = CharConfig::pUserData;
  67042. v26->m_Human.m_Position.m_fZ = __strtod_internal(szTmp, 0, 0);
  67043. if ( IniFile::ReadInt(&ini, "baseinfo", "hp", &nValue) != 1 )
  67044. {
  67045. snprintf(szErr, 0x400u, "[CharConfig::CharConfig]: Read ini failed!! section:%s; key:.%s", "baseinfo", "hp");
  67046. __assertex__("./DB/CharConfig.cpp", 0x43u, "CharConfig::CharConfig()", "FALSE", szErr);
  67047. }
  67048. CharConfig::pUserData->m_Human.m_HP = nValue;
  67049. if ( IniFile::ReadInt(&ini, "baseinfo", "mp", &nValue) != 1 )
  67050. {
  67051. snprintf(szErr, 0x400u, "[CharConfig::CharConfig]: Read ini failed!! section:%s; key:.%s", "baseinfo", 135013046);
  67052. __assertex__("./DB/CharConfig.cpp", 0x4Eu, "CharConfig::CharConfig()", "FALSE", szErr);
  67053. }
  67054. CharConfig::pUserData->m_Human.m_MP = nValue;
  67055. if ( IniFile::ReadInt(&ini, "baseinfo", "level", &nValue) != 1 )
  67056. {
  67057. snprintf(szErr, 0x400u, "[CharConfig::CharConfig]: Read ini failed!! section:%s; key:.%s", "baseinfo", "level");
  67058. __assertex__("./DB/CharConfig.cpp", 0x59u, "CharConfig::CharConfig()", "FALSE", szErr);
  67059. }
  67060. v7 = CharConfig::pUserData;
  67061. CharConfig::pUserData->m_Human.m_Level = nValue;
  67062. v7->m_Human.m_HairColor = 0;
  67063. if ( IniFile::ReadInt(&ini, "baseinfo", "vigor", &nValue) != 1 )
  67064. {
  67065. snprintf(szErr, 0x400u, "[CharConfig::CharConfig]: Read ini failed!! section:%s; key:.%s", "baseinfo", "vigor");
  67066. __assertex__("./DB/CharConfig.cpp", 0x65u, "CharConfig::CharConfig()", "FALSE", szErr);
  67067. }
  67068. CharConfig::pUserData->m_Human.m_Vigor = nValue;
  67069. if ( IniFile::ReadInt(&ini, "baseinfo", aMax, &nValue) != 1 )
  67070. {
  67071. snprintf(szErr, 0x400u, "[CharConfig::CharConfig]: Read ini failed!! section:%s; key:.%s", "baseinfo", aMax);
  67072. __assertex__("./DB/CharConfig.cpp", 0x70u, "CharConfig::CharConfig()", "FALSE", szErr);
  67073. }
  67074. CharConfig::pUserData->m_Human.m_MaxVigor = nValue;
  67075. if ( IniFile::ReadInt(&ini, "baseinfo", "vigor_regenerate", &nValue) != 1 )
  67076. {
  67077. snprintf(
  67078. szErr,
  67079. 0x400u,
  67080. "[CharConfig::CharConfig]: Read ini failed!! section:%s; key:.%s",
  67081. "baseinfo",
  67082. "vigor_regenerate");
  67083. __assertex__("./DB/CharConfig.cpp", 0x7Bu, "CharConfig::CharConfig()", "FALSE", szErr);
  67084. }
  67085. CharConfig::pUserData->m_Human.m_VigorRegeneRate = nValue;
  67086. if ( IniFile::ReadInt(&ini, "baseinfo", "energy", &nValue) != 1 )
  67087. {
  67088. snprintf(szErr, 0x400u, "[CharConfig::CharConfig]: Read ini failed!! section:%s; key:.%s", "baseinfo", "energy");
  67089. __assertex__("./DB/CharConfig.cpp", 0x86u, "CharConfig::CharConfig()", "FALSE", szErr);
  67090. }
  67091. CharConfig::pUserData->m_Human.m_Energy = nValue;
  67092. if ( IniFile::ReadInt(&ini, "baseinfo", aMax_0, &nValue) != 1 )
  67093. {
  67094. snprintf(szErr, 0x400u, "[CharConfig::CharConfig]: Read ini failed!! section:%s; key:.%s", "baseinfo", aMax_0);
  67095. __assertex__("./DB/CharConfig.cpp", 0x91u, "CharConfig::CharConfig()", "FALSE", szErr);
  67096. }
  67097. CharConfig::pUserData->m_Human.m_MaxEnergy = nValue;
  67098. if ( IniFile::ReadInt(&ini, "baseinfo", "energy_regenerate", &nValue) != 1 )
  67099. {
  67100. snprintf(
  67101. szErr,
  67102. 0x400u,
  67103. "[CharConfig::CharConfig]: Read ini failed!! section:%s; key:.%s",
  67104. "baseinfo",
  67105. "energy_regenerate");
  67106. __assertex__("./DB/CharConfig.cpp", 0x9Cu, "CharConfig::CharConfig()", "FALSE", szErr);
  67107. }
  67108. CharConfig::pUserData->m_Human.m_EnergyRegeneRate = nValue;
  67109. if ( IniFile::ReadInt(&ini, "baseinfo", "exp", &nValue) != 1 )
  67110. {
  67111. snprintf(szErr, 0x400u, "[CharConfig::CharConfig]: Read ini failed!! section:%s; key:.%s", "baseinfo", "exp");
  67112. __assertex__("./DB/CharConfig.cpp", 0xA7u, "CharConfig::CharConfig()", "FALSE", szErr);
  67113. }
  67114. CharConfig::pUserData->m_Human.m_Exp = nValue;
  67115. if ( IniFile::ReadInt(&ini, "baseinfo", "menpai", &nValue) != 1 )
  67116. {
  67117. snprintf(szErr, 0x400u, "[CharConfig::CharConfig]: Read ini failed!! section:%s; key:.%s", "baseinfo", "menpai");
  67118. __assertex__("./DB/CharConfig.cpp", 0xBFu, "CharConfig::CharConfig()", "FALSE", szErr);
  67119. }
  67120. CharConfig::pUserData->m_Human.m_MenPai = nValue;
  67121. if ( IniFile::ReadInt(&ini, "baseinfo", "money", &nValue) != 1 )
  67122. {
  67123. snprintf(szErr, 0x400u, "[CharConfig::CharConfig]: Read ini failed!! section:%s; key:.%s", "baseinfo", "money");
  67124. __assertex__("./DB/CharConfig.cpp", 0xCAu, "CharConfig::CharConfig()", "FALSE", szErr);
  67125. }
  67126. CharConfig::pUserData->m_Human.m_Money = nValue;
  67127. if ( IniFile::ReadInt(&ini, "attribute", "str", &nValue) != 1 )
  67128. {
  67129. snprintf(szErr, 0x400u, "[CharConfig::CharConfig]: Read ini failed!! section:%s; key:.%s", "attribute", "str");
  67130. __assertex__("./DB/CharConfig.cpp", 0xD8u, "CharConfig::CharConfig()", "FALSE", szErr);
  67131. }
  67132. CharConfig::pUserData->m_Human.m_BaseAttrLevel1.m_pAttr[0] = nValue;
  67133. if ( IniFile::ReadInt(&ini, "attribute", "spr", &nValue) != 1 )
  67134. {
  67135. snprintf(szErr, 0x400u, "[CharConfig::CharConfig]: Read ini failed!! section:%s; key:.%s", "attribute", "spr");
  67136. __assertex__("./DB/CharConfig.cpp", 0xE3u, "CharConfig::CharConfig()", "FALSE", szErr);
  67137. }
  67138. CharConfig::pUserData->m_Human.m_BaseAttrLevel1.m_pAttr[1] = nValue;
  67139. if ( IniFile::ReadInt(&ini, "attribute", "con", &nValue) != 1 )
  67140. {
  67141. snprintf(szErr, 0x400u, "[CharConfig::CharConfig]: Read ini failed!! section:%s; key:.%s", "attribute", "con");
  67142. __assertex__("./DB/CharConfig.cpp", 0xEEu, "CharConfig::CharConfig()", "FALSE", szErr);
  67143. }
  67144. CharConfig::pUserData->m_Human.m_BaseAttrLevel1.m_pAttr[2] = nValue;
  67145. if ( IniFile::ReadInt(&ini, "attribute", "int", &nValue) != 1 )
  67146. {
  67147. snprintf(szErr, 0x400u, "[CharConfig::CharConfig]: Read ini failed!! section:%s; key:.%s", "attribute", 135013499);
  67148. __assertex__("./DB/CharConfig.cpp", 0xF9u, "CharConfig::CharConfig()", "FALSE", szErr);
  67149. }
  67150. CharConfig::pUserData->m_Human.m_BaseAttrLevel1.m_pAttr[3] = nValue;
  67151. if ( IniFile::ReadInt(&ini, "attribute", "dex", &nValue) != 1 )
  67152. {
  67153. snprintf(szErr, 0x400u, "[CharConfig::CharConfig]: Read ini failed!! section:%s; key:.%s", "attribute", 135050305);
  67154. __assertex__("./DB/CharConfig.cpp", 0x104u, "CharConfig::CharConfig()", "FALSE", szErr);
  67155. }
  67156. CharConfig::pUserData->m_Human.m_BaseAttrLevel1.m_pAttr[4] = nValue;
  67157. if ( IniFile::ReadInt(&ini, "skill", "number", &nValue) != 1 )
  67158. {
  67159. snprintf(szErr, 0x400u, "[CharConfig::CharConfig]: Read ini failed!! section:%s; key:.%s", "skill", 135016406);
  67160. __assertex__("./DB/CharConfig.cpp", 0x126u, "CharConfig::CharConfig()", "FALSE", szErr);
  67161. }
  67162. v8 = nValue;
  67163. if ( nValue > 128 )
  67164. {
  67165. nValue = 128;
  67166. v8 = -128;
  67167. }
  67168. CharConfig::pUserData->m_Skill.m_Count = v8;
  67169. v9 = 0;
  67170. if ( CharConfig::pUserData->m_Skill.m_Count )
  67171. {
  67172. do
  67173. {
  67174. memset(szTmp1, 0, sizeof(szTmp1));
  67175. sprintf(szTmp1, "id%d", v9, 0);
  67176. if ( IniFile::ReadInt(&ini, "skill", szTmp1, &nValue) != 1 )
  67177. {
  67178. snprintf(szErr, 0x400u, "[CharConfig::CharConfig]: Read ini failed!! section:%s; key:.%s", "skill", szTmp1);
  67179. __assertex__("./DB/CharConfig.cpp", 0x11Eu, "CharConfig::CharConfig()", "FALSE", szErr);
  67180. }
  67181. v10 = CharConfig::pUserData;
  67182. CharConfig::pUserData->m_Skill.m_aSkill[v9++].m_nSkillID = nValue;
  67183. }
  67184. while ( v10->m_Skill.m_Count > v9 );
  67185. }
  67186. if ( IniFile::ReadInt(&ini, "xinfa", "number", &nValue) != 1 )
  67187. {
  67188. snprintf(szErr, 0x400u, "[CharConfig::CharConfig]: Read ini failed!! section:%s; key:.%s", "skill", 135016406);
  67189. __assertex__("./DB/CharConfig.cpp", 0x153u, "CharConfig::CharConfig()", "FALSE", szErr);
  67190. }
  67191. v11 = nValue;
  67192. if ( nValue > 16 )
  67193. {
  67194. nValue = 16;
  67195. v11 = 16;
  67196. }
  67197. CharConfig::pUserData->m_XinFa.m_Count = v11;
  67198. v12 = CharConfig::pUserData;
  67199. v13 = 0;
  67200. if ( CharConfig::pUserData->m_XinFa.m_Count )
  67201. {
  67202. do
  67203. {
  67204. memset(szTmp1, 0, sizeof(szTmp1));
  67205. memset(szTmp0, 0, sizeof(szTmp0));
  67206. sprintf(szTmp1, "id%d", v13, 0);
  67207. if ( IniFile::ReadInt(&ini, "xinfa", szTmp1, &nValue) != 1 )
  67208. {
  67209. snprintf(szErr, 0x400u, "[CharConfig::CharConfig]: Read ini failed!! section:%s; key:.%s", "xinfa", szTmp1);
  67210. __assertex__("./DB/CharConfig.cpp", 0x13Fu, "CharConfig::CharConfig()", "FALSE", szErr);
  67211. }
  67212. v14 = CharConfig::pUserData;
  67213. CharConfig::pUserData->m_XinFa.m_aXinFa[v13].m_nXinFaID = nValue;
  67214. sprintf(szTmp0, "level%d", v13, v14);
  67215. if ( IniFile::ReadInt(&ini, "xinfa", szTmp0, &nValue) != 1 )
  67216. {
  67217. snprintf(szErr, 0x400u, "[CharConfig::CharConfig]: Read ini failed!! section:%s; key:.%s", "xinfa", szTmp0);
  67218. __assertex__("./DB/CharConfig.cpp", 0x14Bu, "CharConfig::CharConfig()", "FALSE", szErr);
  67219. }
  67220. CharConfig::pUserData->m_XinFa.m_aXinFa[v13].m_nLevel = nValue;
  67221. v12 = CharConfig::pUserData;
  67222. ++v13;
  67223. }
  67224. while ( CharConfig::pUserData->m_XinFa.m_Count > v13 );
  67225. }
  67226. strncpy(v12->m_Relation.m_szMood, &byte_80E3B2E, 0x20u);
  67227. CharConfig::pUserData->m_Relation.m_szMood[31] = 0;
  67228. if ( IniFile::ReadInt(&ini, "ability", "count", &nValue) != 1 )
  67229. {
  67230. snprintf(szErr, 0x400u, "[CharConfig::CharConfig]: Read ini failed!! section:%s; key:.%s", "ability", 135051092);
  67231. __assertex__("./DB/CharConfig.cpp", 0x18Eu, "CharConfig::CharConfig()", "FALSE", szErr);
  67232. }
  67233. v15 = nValue;
  67234. for ( i = 0; i < v15; ++i )
  67235. {
  67236. memset(szAbility, 0, sizeof(szAbility));
  67237. sprintf(szAbility, "abilityskill%d", i, 0);
  67238. if ( IniFile::ReadInt(&ini, "ability", szAbility, 0) != 1 )
  67239. {
  67240. snprintf(szErr, 0x400u, "[CharConfig::CharConfig]: Read ini failed!! section:%s; key:.%s", "ability", szAbility);
  67241. __assertex__("./DB/CharConfig.cpp", 0x16Cu, "CharConfig::CharConfig()", "FALSE", szErr);
  67242. }
  67243. memset(szLevel, 0, sizeof(szLevel));
  67244. memset(szExp, 0, sizeof(szExp));
  67245. sprintf(szLevel, "level%d", i);
  67246. sprintf(szExp, "exp%d", i);
  67247. if ( IniFile::ReadInt(&ini, "ability", szLevel, &nValue) != 1 )
  67248. {
  67249. snprintf(szErr, 0x400u, "[CharConfig::CharConfig]: Read ini failed!! section:%s; key:.%s", "ability", szLevel);
  67250. __assertex__("./DB/CharConfig.cpp", 0x17Bu, "CharConfig::CharConfig()", "FALSE", szErr);
  67251. }
  67252. CharConfig::pUserData->m_Ability.m_aABility[iSkillAbility].m_Level = nValue;
  67253. if ( IniFile::ReadInt(&ini, "ability", szExp, &nValue) != 1 )
  67254. {
  67255. snprintf(szErr, 0x400u, "[CharConfig::CharConfig]: Read ini failed!! section:%s; key:.%s", "ability", szExp);
  67256. __assertex__("./DB/CharConfig.cpp", 0x186u, "CharConfig::CharConfig()", "FALSE", szErr);
  67257. }
  67258. CharConfig::pUserData->m_Ability.m_aABility[iSkillAbilitya].m_Exp = nValue;
  67259. }
  67260. if ( IniFile::ReadInt(&ini, "table", "number", &nValue) != 1 )
  67261. {
  67262. snprintf(szErr, 0x400u, "[CharConfig::CharConfig]: Read ini failed!! section:%s; key:.%s", "table", 135016406);
  67263. __assertex__("./DB/CharConfig.cpp", 0x1AFu, "CharConfig::CharConfig()", "FALSE", szErr);
  67264. }
  67265. v17 = 0;
  67266. v19 = __OFSUB__(0, nValue);
  67267. for ( j = -nValue < 0; j ^ v19; j = v17 - nTableNum < 0 )
  67268. {
  67269. memset(szTmp, 0, sizeof(szTmp));
  67270. sprintf(szTmp, "peifang%d", v17, &ini);
  67271. if ( IniFile::ReadInt(&ini, "table", szTmp, &nValue) != 1 )
  67272. {
  67273. snprintf(szErr, 0x400u, "[CharConfig::CharConfig]: Read ini failed!! section:%s; key:.%s", "table", szTmp);
  67274. __assertex__("./DB/CharConfig.cpp", 0x1A6u, "CharConfig::CharConfig()", "FALSE", szErr);
  67275. }
  67276. CharConfig::pUserData->m_Ability.m_aPrescr[nValue / 8] |= 1 << nValue % 8;
  67277. v19 = __OFSUB__(++v17, nTableNum);
  67278. }
  67279. if ( IniFile::ReadInt(&ini, "setting", "count", &nValue) != 1 )
  67280. {
  67281. snprintf(szErr, 0x400u, "[CharConfig::CharConfig]: Read ini failed!! section:%s; key:.%s", "setting", 135051092);
  67282. __assertex__("./DB/CharConfig.cpp", 0x1EAu, "CharConfig::CharConfig()", "FALSE", szErr);
  67283. }
  67284. v20 = nValue;
  67285. v21 = 0;
  67286. if ( nValue <= 0 )
  67287. {
  67288. v25 = CharConfig::pUserData;
  67289. }
  67290. else
  67291. {
  67292. do
  67293. {
  67294. sprintf(szTmp0, "settingindex%d", v21);
  67295. sprintf(szTmp1, "settingtype%d", v21);
  67296. sprintf(szTmp2, "settingdata%d", v21);
  67297. if ( IniFile::ReadInt(&ini, "setting", szTmp0, &nValue) != 1 )
  67298. {
  67299. snprintf(szErr, 0x400u, "[CharConfig::CharConfig]: Read ini failed!! section:%s; key:.%s", "setting", szTmp0);
  67300. __assertex__("./DB/CharConfig.cpp", 0x1C8u, "CharConfig::CharConfig()", "FALSE", szErr);
  67301. }
  67302. v22 = nValue;
  67303. if ( IniFile::ReadInt(&ini, 0, szTmp1, &nValue) != 1 )
  67304. {
  67305. snprintf(szErr, 0x400u, "[CharConfig::CharConfig]: Read ini failed!! section:%s; key:.%s", "setting", szTmp1);
  67306. __assertex__("./DB/CharConfig.cpp", 0x1D4u, "CharConfig::CharConfig()", "FALSE", szErr);
  67307. }
  67308. if ( IniFile::ReadInt(&ini, "setting", szTmp2, &nValue) != 1 )
  67309. {
  67310. snprintf(szErr, 0x400u, "[CharConfig::CharConfig]: Read ini failed!! section:%s; key:.%s", "setting", szTmp2);
  67311. __assertex__("./DB/CharConfig.cpp", 0x1E0u, "CharConfig::CharConfig()", "FALSE", szErr);
  67312. }
  67313. iData = nValue;
  67314. v24 = v22;
  67315. CharConfig::pUserData->m_Setting.m_aSetting[v22].m_SettingType = iType;
  67316. ++v21;
  67317. v25 = CharConfig::pUserData;
  67318. CharConfig::pUserData->m_Setting.m_aSetting[v24].m_SettingData = iData;
  67319. }
  67320. while ( v21 < v20 );
  67321. }
  67322. v25->m_bIsPasswdUnlock = 0;
  67323. strncpy(v25->m_PrivateInfo.m_LuckWord, &byte_80E3B91, 0xFFu);
  67324. CharConfig::pUserData->m_PrivateInfo.m_LuckWord[254] = 0;
  67325. IniFile::~IniFile(&ini);
  67326. }
  67327.  
  67328. //----- (080A48FC) --------------------------------------------------------
  67329. void __cdecl _tcf_0_208(void *a1)
  67330. {
  67331. std::ios_base::Init::~Init(&std::__ioinit);
  67332. }
  67333.  
  67334. //----- (080A490C) --------------------------------------------------------
  67335. void __cdecl _tcf_1_4(void *a1)
  67336. {
  67337. CharConfig::~CharConfig(&g_CharConfig);
  67338. }
  67339.  
  67340. //----- (080A491C) --------------------------------------------------------
  67341. void `global constructor keyed to'CharConfig::pUserData()
  67342. {
  67343. std::ios_base::Init::Init(&std::__ioinit);
  67344. __cxa_atexit(_tcf_0_208, 0, &_dso_handle);
  67345. CharConfig::CharConfig(&g_CharConfig);
  67346. __cxa_atexit(_tcf_1_4, 0, &_dso_handle);
  67347. DBChooseSceneTable::DBChooseSceneTable(&g_DBSceneTable);
  67348. }
  67349. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  67350.  
  67351. //----- (080A4974) --------------------------------------------------------
  67352. void __cdecl DBLogicManager::DBLogicManager(DBLogicManager *const this)
  67353. {
  67354. ASYNC_PACKET *v1; // eax
  67355. ASYNC_PACKET *v2; // edx
  67356. signed int v3; // ecx
  67357.  
  67358. pthread_mutex_init(&this->m_Lock.m_Mutex, 0);
  67359. pthread_mutex_lock(&this->m_Lock.m_Mutex);
  67360. this->m_QueSize = 100;
  67361. v1 = (ASYNC_PACKET *)(operator new[](0x4B4u) + 4);
  67362. v2 = v1;
  67363. v3 = 99;
  67364. v1[-1].m_Flag = 100;
  67365. while ( v3 != -1 )
  67366. {
  67367. v2->m_pPacket = 0;
  67368. v2->m_PlayerID = -1;
  67369. v2->m_Flag = 0;
  67370. --v3;
  67371. ++v2;
  67372. }
  67373. this->m_PacketQue = v1;
  67374. if ( !v1 )
  67375. __assertex__(
  67376. "./DB/DBLogicManager.cpp",
  67377. 0xDu,
  67378. "DBLogicManager::DBLogicManager()",
  67379. "m_PacketQue",
  67380. "[DBLogicManager::DBLogicManager]:Allocate memory failed!!");
  67381. this->m_Head = 0;
  67382. this->m_Tail = 0;
  67383. if ( this != (DBLogicManager *const )-4 )
  67384. pthread_mutex_unlock(&this->m_Lock.m_Mutex);
  67385. }
  67386.  
  67387. //----- (080A4AB8) --------------------------------------------------------
  67388. void __cdecl DBLogicManager::DBLogicManager(DBLogicManager *const this)
  67389. {
  67390. ASYNC_PACKET *v1; // eax
  67391. ASYNC_PACKET *v2; // edx
  67392. signed int v3; // ecx
  67393.  
  67394. pthread_mutex_init(&this->m_Lock.m_Mutex, 0);
  67395. pthread_mutex_lock(&this->m_Lock.m_Mutex);
  67396. this->m_QueSize = 100;
  67397. v1 = (ASYNC_PACKET *)(operator new[](0x4B4u) + 4);
  67398. v2 = v1;
  67399. v3 = 99;
  67400. v1[-1].m_Flag = 100;
  67401. while ( v3 != -1 )
  67402. {
  67403. v2->m_pPacket = 0;
  67404. v2->m_PlayerID = -1;
  67405. v2->m_Flag = 0;
  67406. --v3;
  67407. ++v2;
  67408. }
  67409. this->m_PacketQue = v1;
  67410. if ( !v1 )
  67411. __assertex__(
  67412. "./DB/DBLogicManager.cpp",
  67413. 0xDu,
  67414. "DBLogicManager::DBLogicManager()",
  67415. "m_PacketQue",
  67416. "[DBLogicManager::DBLogicManager]:Allocate memory failed!!");
  67417. this->m_Head = 0;
  67418. this->m_Tail = 0;
  67419. if ( this != (DBLogicManager *const )-4 )
  67420. pthread_mutex_unlock(&this->m_Lock.m_Mutex);
  67421. }
  67422.  
  67423. //----- (080A4BFC) --------------------------------------------------------
  67424. void __cdecl DBLogicManager::~DBLogicManager(DBLogicManager *const this)
  67425. {
  67426. ASYNC_PACKET *v1; // ecx
  67427. ASYNC_PACKET *i; // ebx
  67428.  
  67429. pthread_mutex_lock(&this->m_Lock.m_Mutex);
  67430. v1 = this->m_PacketQue;
  67431. if ( v1 )
  67432. {
  67433. for ( i = &v1[v1[-1].m_Flag]; v1 != i; i->m_Flag = 0 )
  67434. {
  67435. --i;
  67436. if ( i->m_pPacket )
  67437. {
  67438. (*((void (__cdecl **)(Packet *))i->m_pPacket->_vptr_Packet + 1))(i->m_pPacket);
  67439. v1 = this->m_PacketQue;
  67440. i->m_pPacket = 0;
  67441. }
  67442. i->m_PlayerID = -1;
  67443. }
  67444. operator delete[](&v1[-1].m_Flag);
  67445. this->m_PacketQue = 0;
  67446. }
  67447. if ( this != (DBLogicManager *const )-4 )
  67448. pthread_mutex_unlock(&this->m_Lock.m_Mutex);
  67449. pthread_mutex_destroy(&this->m_Lock.m_Mutex);
  67450. }
  67451.  
  67452. //----- (080A4CC1) --------------------------------------------------------
  67453. void __noreturn sub_80A4CC1()
  67454. {
  67455. __cxa_begin_catch();
  67456. __assertspecial__(
  67457. "./DB/DBLogicManager.cpp",
  67458. 0x1Au,
  67459. "DBLogicManager::~DBLogicManager()",
  67460. "FALSE",
  67461. "DBLogicManager::~DBLogicManager()");
  67462. }
  67463.  
  67464. //----- (080A4CF1) --------------------------------------------------------
  67465. void __usercall __noreturn sub_80A4CF1(pthread_mutex_t *a1@<eax>, int a2@<ebp>)
  67466. {
  67467. pthread_mutex_unlock(a1);
  67468. *(_DWORD *)(a2 - 40) = 0;
  67469. sub_80A4CC1();
  67470. }
  67471.  
  67472. //----- (080A4D08) --------------------------------------------------------
  67473. void __noreturn sub_80A4D08()
  67474. {
  67475. pthread_mutex_t *v0; // [esp+0h] [ebp-10h]
  67476.  
  67477. pthread_mutex_destroy(v0);
  67478. _Unwind_Resume();
  67479. }
  67480.  
  67481. //----- (080A4D24) --------------------------------------------------------
  67482. void __cdecl DBLogicManager::~DBLogicManager(DBLogicManager *const this)
  67483. {
  67484. ASYNC_PACKET *v1; // ecx
  67485. ASYNC_PACKET *i; // ebx
  67486.  
  67487. pthread_mutex_lock(&this->m_Lock.m_Mutex);
  67488. v1 = this->m_PacketQue;
  67489. if ( v1 )
  67490. {
  67491. for ( i = &v1[v1[-1].m_Flag]; v1 != i; i->m_Flag = 0 )
  67492. {
  67493. --i;
  67494. if ( i->m_pPacket )
  67495. {
  67496. (*((void (__cdecl **)(Packet *))i->m_pPacket->_vptr_Packet + 1))(i->m_pPacket);
  67497. v1 = this->m_PacketQue;
  67498. i->m_pPacket = 0;
  67499. }
  67500. i->m_PlayerID = -1;
  67501. }
  67502. operator delete[](&v1[-1].m_Flag);
  67503. this->m_PacketQue = 0;
  67504. }
  67505. if ( this != (DBLogicManager *const )-4 )
  67506. pthread_mutex_unlock(&this->m_Lock.m_Mutex);
  67507. pthread_mutex_destroy(&this->m_Lock.m_Mutex);
  67508. }
  67509.  
  67510. //----- (080A4DE9) --------------------------------------------------------
  67511. void __noreturn sub_80A4DE9()
  67512. {
  67513. __cxa_begin_catch();
  67514. __assertspecial__(
  67515. "./DB/DBLogicManager.cpp",
  67516. 0x1Au,
  67517. "DBLogicManager::~DBLogicManager()",
  67518. "FALSE",
  67519. "DBLogicManager::~DBLogicManager()");
  67520. }
  67521.  
  67522. //----- (080A4E19) --------------------------------------------------------
  67523. void __usercall __noreturn sub_80A4E19(pthread_mutex_t *a1@<eax>, int a2@<ebp>)
  67524. {
  67525. pthread_mutex_unlock(a1);
  67526. *(_DWORD *)(a2 - 40) = 0;
  67527. sub_80A4DE9();
  67528. }
  67529.  
  67530. //----- (080A4E30) --------------------------------------------------------
  67531. void __noreturn sub_80A4E30()
  67532. {
  67533. pthread_mutex_t *v0; // [esp+0h] [ebp-10h]
  67534.  
  67535. pthread_mutex_destroy(v0);
  67536. _Unwind_Resume();
  67537. }
  67538.  
  67539. //----- (080A4E4C) --------------------------------------------------------
  67540. BOOL __cdecl DBLogicManager::RecvPacket(DBLogicManager *const this, Packet **const pPacket, PlayerID_t *const PlayerID, UINT *const Flag)
  67541. {
  67542. ASYNC_PACKET *v4; // ebx
  67543. UINT v5; // ecx
  67544. Packet *v6; // edx
  67545. UINT v8; // eax
  67546. UINT v9; // eax
  67547. pthread_mutex_t *v10; // eax
  67548.  
  67549. pthread_mutex_lock(&this->m_Lock.m_Mutex);
  67550. v4 = this->m_PacketQue;
  67551. v5 = this->m_Head;
  67552. v6 = v4[v5].m_pPacket;
  67553. if ( v6 )
  67554. {
  67555. *pPacket = v6;
  67556. *PlayerID = v4[v5].m_PlayerID;
  67557. *Flag = v4[v5].m_Flag;
  67558. v8 = this->m_Head;
  67559. v4[v8].m_Flag = 0;
  67560. v4[v8].m_pPacket = 0;
  67561. v4[v8].m_PlayerID = -1;
  67562. v9 = this->m_Head + 1;
  67563. if ( v9 >= this->m_QueSize )
  67564. {
  67565. v10 = &this->m_Lock.m_Mutex;
  67566. this->m_Head = 0;
  67567. if ( this == (DBLogicManager *const )-4 )
  67568. return 1;
  67569. }
  67570. else
  67571. {
  67572. this->m_Head = v9;
  67573. v10 = &this->m_Lock.m_Mutex;
  67574. if ( this == (DBLogicManager *const )-4 )
  67575. return 1;
  67576. }
  67577. pthread_mutex_unlock(v10);
  67578. return 1;
  67579. }
  67580. if ( this != (DBLogicManager *const )-4 )
  67581. pthread_mutex_unlock(&this->m_Lock.m_Mutex);
  67582. return 0;
  67583. }
  67584.  
  67585. //----- (080A4F2C) --------------------------------------------------------
  67586. BOOL __cdecl DBLogicManager::MovePacket(DBLogicManager *const this, PlayerID_t PlayerID)
  67587. {
  67588. UINT v2; // ebx
  67589. UINT v3; // edi
  67590. UINT v4; // ecx
  67591. ASYNC_PACKET *v5; // esi
  67592. int v6; // edx
  67593.  
  67594. pthread_mutex_lock(&this->m_Lock.m_Mutex);
  67595. v2 = this->m_QueSize;
  67596. v3 = 0;
  67597. v4 = this->m_Head;
  67598. if ( v2 )
  67599. {
  67600. v5 = this->m_PacketQue;
  67601. do
  67602. {
  67603. v6 = v4;
  67604. if ( !v5[v4].m_pPacket )
  67605. break;
  67606. if ( v5[v6].m_PlayerID == PlayerID )
  67607. {
  67608. v5[v6].m_Flag = 1;
  67609. v2 = this->m_QueSize;
  67610. }
  67611. if ( v2 <= ++v4 )
  67612. v4 = 0;
  67613. ++v3;
  67614. }
  67615. while ( v2 > v3 );
  67616. }
  67617. if ( this != (DBLogicManager *const )-4 )
  67618. pthread_mutex_unlock(&this->m_Lock.m_Mutex);
  67619. return 1;
  67620. }
  67621.  
  67622. //----- (080A4FDC) --------------------------------------------------------
  67623. #error "80A5157: positive sp value has been found (funcsize=113)"
  67624.  
  67625. //----- (080A51D4) --------------------------------------------------------
  67626. BOOL __cdecl DBLogicManager::HeartBeat(DBLogicManager *const this, UINT uTime)
  67627. {
  67628. return DBLogicManager::ProcessCacheCommands(this);
  67629. }
  67630.  
  67631. //----- (080A5230) --------------------------------------------------------
  67632. BOOL __cdecl DBLogicManager::SendPacket(DBLogicManager *const this, Packet *pPacket, PlayerID_t PlayerID, UINT Flag)
  67633. {
  67634. ASYNC_PACKET *v4; // ecx
  67635. UINT v5; // edx
  67636. UINT v7; // eax
  67637. bool v8; // cf
  67638. pthread_mutex_t *v9; // eax
  67639.  
  67640. pthread_mutex_lock(&this->m_Lock.m_Mutex);
  67641. v4 = this->m_PacketQue;
  67642. v5 = this->m_Tail;
  67643. if ( !v4[v5].m_pPacket )
  67644. {
  67645. v4[v5].m_pPacket = pPacket;
  67646. v4[v5].m_Flag = Flag;
  67647. v7 = this->m_Tail + 1;
  67648. v8 = v7 < this->m_QueSize;
  67649. v4[v5].m_PlayerID = PlayerID;
  67650. if ( v8 )
  67651. {
  67652. this->m_Tail = v7;
  67653. v9 = &this->m_Lock.m_Mutex;
  67654. if ( this == (DBLogicManager *const )-4 )
  67655. return 1;
  67656. }
  67657. else
  67658. {
  67659. v9 = &this->m_Lock.m_Mutex;
  67660. this->m_Tail = 0;
  67661. if ( this == (DBLogicManager *const )-4 )
  67662. return 1;
  67663. }
  67664. pthread_mutex_unlock(v9);
  67665. return 1;
  67666. }
  67667. if ( this != (DBLogicManager *const )-4 )
  67668. pthread_mutex_unlock(&this->m_Lock.m_Mutex);
  67669. return 0;
  67670. }
  67671.  
  67672. //----- (080A52E8) --------------------------------------------------------
  67673. void __cdecl _tcf_0_209(void *a1)
  67674. {
  67675. std::ios_base::Init::~Init(&std::__ioinit);
  67676. }
  67677.  
  67678. //----- (080A52F8) --------------------------------------------------------
  67679. void __cdecl _tcf_1_5(void *a1)
  67680. {
  67681. DBLogicManager::~DBLogicManager(&g_DBLogicManager);
  67682. }
  67683.  
  67684. //----- (080A5308) --------------------------------------------------------
  67685. void `global constructor keyed to'g_DBLogicManager()
  67686. {
  67687. std::ios_base::Init::Init(&std::__ioinit);
  67688. __cxa_atexit(_tcf_0_209, 0, &_dso_handle);
  67689. DBLogicManager::DBLogicManager(&g_DBLogicManager);
  67690. __cxa_atexit(_tcf_1_5, 0, &_dso_handle);
  67691. }
  67692. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  67693.  
  67694. //----- (080A5354) --------------------------------------------------------
  67695. int __cdecl DBThread::IsConnected(int a2)
  67696. {
  67697. return **(_DWORD **)(a2 + 48);
  67698. }
  67699.  
  67700. //----- (080A5364) --------------------------------------------------------
  67701. void __cdecl DBThread::DBThread(DBThread *const this)
  67702. {
  67703. ODBCInterface *v1; // ebx
  67704.  
  67705. Thread::Thread(this);
  67706. this->_vptr_Thread = (int (**)(...))&off_80E3E58;
  67707. pthread_mutex_init(&this->m_Lock.m_Mutex, 0);
  67708. this->m_Input.m_pPacket = 0;
  67709. this->m_Input.m_PlayerID = -1;
  67710. pthread_mutex_lock(&this->m_Lock.m_Mutex);
  67711. this->m_Active = 1;
  67712. v1 = (ODBCInterface *)operator new(0x71098u);
  67713. ODBCInterface::ODBCInterface((int)v1);
  67714. this->mCharDBInterface = v1;
  67715. if ( this != (DBThread *const )-16 )
  67716. pthread_mutex_unlock(&this->m_Lock.m_Mutex);
  67717. }
  67718. // 80E3E58: using guessed type _DWORD (__cdecl *off_80E3E58)(DBThread *this);
  67719.  
  67720. //----- (080A543C) --------------------------------------------------------
  67721. void __cdecl DBThread::DBThread(DBThread *const this)
  67722. {
  67723. ODBCInterface *v1; // ebx
  67724.  
  67725. Thread::Thread(this);
  67726. this->_vptr_Thread = (int (**)(...))&off_80E3E58;
  67727. pthread_mutex_init(&this->m_Lock.m_Mutex, 0);
  67728. this->m_Input.m_pPacket = 0;
  67729. this->m_Input.m_PlayerID = -1;
  67730. pthread_mutex_lock(&this->m_Lock.m_Mutex);
  67731. this->m_Active = 1;
  67732. v1 = (ODBCInterface *)operator new(0x71098u);
  67733. ODBCInterface::ODBCInterface((int)v1);
  67734. this->mCharDBInterface = v1;
  67735. if ( this != (DBThread *const )-16 )
  67736. pthread_mutex_unlock(&this->m_Lock.m_Mutex);
  67737. }
  67738. // 80E3E58: using guessed type _DWORD (__cdecl *off_80E3E58)(DBThread *this);
  67739.  
  67740. //----- (080A5514) --------------------------------------------------------
  67741. void __cdecl DBThread::~DBThread(DBThread *const this)
  67742. {
  67743. pthread_mutex_t *v1; // esi
  67744. IPRegionTable *v2; // ebx
  67745. pthread_mutex_t *v3; // eax
  67746.  
  67747. v1 = &this->m_Lock.m_Mutex;
  67748. this->_vptr_Thread = (int (**)(...))&off_80E3E58;
  67749. pthread_mutex_lock(&this->m_Lock.m_Mutex);
  67750. v2 = (IPRegionTable *)this->mCharDBInterface;
  67751. if ( v2 )
  67752. {
  67753. ODBCInterface::~ODBCInterface(this->mCharDBInterface);
  67754. operator delete(v2);
  67755. v3 = &this->m_Lock.m_Mutex;
  67756. this->mCharDBInterface = 0;
  67757. if ( this == (DBThread *const )-16 )
  67758. goto LABEL_3;
  67759. }
  67760. else
  67761. {
  67762. v3 = &this->m_Lock.m_Mutex;
  67763. if ( this == (DBThread *const )-16 )
  67764. {
  67765. LABEL_3:
  67766. pthread_mutex_destroy(v1);
  67767. Thread::~Thread(this);
  67768. return;
  67769. }
  67770. }
  67771. pthread_mutex_unlock(v3);
  67772. pthread_mutex_destroy(v1);
  67773. Thread::~Thread(this);
  67774. }
  67775. // 80E3E58: using guessed type _DWORD (__cdecl *off_80E3E58)(DBThread *this);
  67776.  
  67777. //----- (080A55EC) --------------------------------------------------------
  67778. void __cdecl DBThread::~DBThread(DBThread *const this)
  67779. {
  67780. pthread_mutex_t *v1; // esi
  67781. IPRegionTable *v2; // ebx
  67782. pthread_mutex_t *v3; // eax
  67783.  
  67784. v1 = &this->m_Lock.m_Mutex;
  67785. this->_vptr_Thread = (int (**)(...))&off_80E3E58;
  67786. pthread_mutex_lock(&this->m_Lock.m_Mutex);
  67787. v2 = (IPRegionTable *)this->mCharDBInterface;
  67788. if ( v2 )
  67789. {
  67790. ODBCInterface::~ODBCInterface(this->mCharDBInterface);
  67791. operator delete(v2);
  67792. v3 = &this->m_Lock.m_Mutex;
  67793. this->mCharDBInterface = 0;
  67794. if ( this == (DBThread *const )-16 )
  67795. goto LABEL_3;
  67796. }
  67797. else
  67798. {
  67799. v3 = &this->m_Lock.m_Mutex;
  67800. if ( this == (DBThread *const )-16 )
  67801. {
  67802. LABEL_3:
  67803. pthread_mutex_destroy(v1);
  67804. Thread::~Thread(this);
  67805. return;
  67806. }
  67807. }
  67808. pthread_mutex_unlock(v3);
  67809. pthread_mutex_destroy(v1);
  67810. Thread::~Thread(this);
  67811. }
  67812. // 80E3E58: using guessed type _DWORD (__cdecl *off_80E3E58)(DBThread *this);
  67813.  
  67814. //----- (080A56C4) --------------------------------------------------------
  67815. void __cdecl DBThread::~DBThread(DBThread *const this)
  67816. {
  67817. pthread_mutex_t *v1; // esi
  67818. IPRegionTable *v2; // ebx
  67819. pthread_mutex_t *v3; // eax
  67820.  
  67821. v1 = &this->m_Lock.m_Mutex;
  67822. this->_vptr_Thread = (int (**)(...))&off_80E3E58;
  67823. pthread_mutex_lock(&this->m_Lock.m_Mutex);
  67824. v2 = (IPRegionTable *)this->mCharDBInterface;
  67825. if ( v2 )
  67826. {
  67827. ODBCInterface::~ODBCInterface(this->mCharDBInterface);
  67828. operator delete(v2);
  67829. v3 = &this->m_Lock.m_Mutex;
  67830. this->mCharDBInterface = 0;
  67831. if ( this == (DBThread *const )-16 )
  67832. goto LABEL_3;
  67833. }
  67834. else
  67835. {
  67836. v3 = &this->m_Lock.m_Mutex;
  67837. if ( this == (DBThread *const )-16 )
  67838. {
  67839. LABEL_3:
  67840. pthread_mutex_destroy(v1);
  67841. Thread::~Thread(this);
  67842. operator delete((IPRegionTable *const )this);
  67843. return;
  67844. }
  67845. }
  67846. pthread_mutex_unlock(v3);
  67847. pthread_mutex_destroy(v1);
  67848. Thread::~Thread(this);
  67849. operator delete((IPRegionTable *const )this);
  67850. }
  67851. // 80E3E58: using guessed type _DWORD (__cdecl *off_80E3E58)(DBThread *this);
  67852.  
  67853. //----- (080A57AC) --------------------------------------------------------
  67854. int __cdecl DBThread::Init(DBThread *const this)
  67855. {
  67856. int v1; // edx
  67857. ODBCInterface *v2; // eax
  67858. CHAR Password[256]; // [esp+4h] [ebp-1D8h]
  67859. CHAR User[32]; // [esp+104h] [ebp-D8h]
  67860. CHAR Database[128]; // [esp+124h] [ebp-B8h]
  67861. CHAR Host[30]; // [esp+1A4h] [ebp-38h]
  67862.  
  67863. strncpy(Host, g_Config.m_LoginInfo.m_DBIP, 0x1Eu);
  67864. Host[29] = 0;
  67865. strncpy(Database, g_Config.m_LoginInfo.m_DBName, 0x80u);
  67866. Database[127] = 0;
  67867. strncpy(User, g_Config.m_LoginInfo.m_DBUser, 0x20u);
  67868. User[31] = 0;
  67869. if ( g_Config.m_LoginInfo.CryptPwd <= 0 )
  67870. {
  67871. strncpy(Password, g_Config.m_LoginInfo.m_DBPassword, 0x100u);
  67872. Password[255] = 0;
  67873. }
  67874. else
  67875. {
  67876. memset(Password, 0, 0x100u);
  67877. Seraph::string2pwd(g_Config.m_LoginInfo.m_DBPassword, Password);
  67878. }
  67879. if ( !this->mCharDBInterface )
  67880. __assert__("./DB/DBThread.cpp", 0x33u, "int DBThread::Init()", "mCharDBInterface");
  67881. *(_DWORD *)&Password[12] = Password;
  67882. *(_DWORD *)&Password[8] = User;
  67883. *(_DWORD *)&Password[4] = Database;
  67884. ODBCInterface::Connect(this->mCharDBInterface, Database, User, Password);
  67885. v2 = this->mCharDBInterface;
  67886. if ( v2->mConnected )
  67887. return v2->mConnected;
  67888. *(_DWORD *)&Password[12] = v1;
  67889. *(_DWORD *)&Password[8] = (char *)v2 + 462744;
  67890. CacheLog(0, "DBThread:mCharDBInterface->Connect()... Get Errors: %s ", v2->mErrorMsg, v1);
  67891. return this->mCharDBInterface->mConnected;
  67892. }
  67893.  
  67894. //----- (080A5914) --------------------------------------------------------
  67895. ODBCInterface *__cdecl DBThread::GetInterface(int a2)
  67896. {
  67897. return *(ODBCInterface **)(a2 + 48);
  67898. }
  67899.  
  67900. //----- (080A5920) --------------------------------------------------------
  67901. int __cdecl DBThread::RecvPacket(DBThread *const this, Packet **const pPacket, PlayerID_t *const PlayerID)
  67902. {
  67903. Packet *v3; // edx
  67904. int result; // eax
  67905. pthread_mutex_t *autolock; // [esp+Ch] [ebp-18h]
  67906.  
  67907. autolock = &this->m_Lock.m_Mutex;
  67908. pthread_mutex_lock(&this->m_Lock.m_Mutex);
  67909. v3 = this->m_Input.m_pPacket;
  67910. if ( v3 )
  67911. {
  67912. *pPacket = v3;
  67913. *PlayerID = this->m_Input.m_PlayerID;
  67914. this->m_Input.m_pPacket = 0;
  67915. this->m_Input.m_PlayerID = -1;
  67916. if ( this != (DBThread *const )-16 )
  67917. pthread_mutex_unlock(autolock);
  67918. result = 1;
  67919. }
  67920. else
  67921. {
  67922. if ( this != (DBThread *const )-16 )
  67923. pthread_mutex_unlock(autolock);
  67924. result = 0;
  67925. }
  67926. return result;
  67927. }
  67928.  
  67929. //----- (080A59B4) --------------------------------------------------------
  67930. int __cdecl DBThread::ProcessCacheCommand(DBThread *const this)
  67931. {
  67932. int (**v1)(...); // edx
  67933. Packet *pPacket; // [esp+Ch] [ebp-10h]
  67934. PlayerID_t PlayerID; // [esp+12h] [ebp-Ah]
  67935.  
  67936. pPacket = 0;
  67937. if ( DBThread::RecvPacket(this, &pPacket, &PlayerID) )
  67938. {
  67939. if ( PlayerID != -1 && PlayerID <= 3071 && PlayerID >= 0 && &g_pPlayerPool->m_pPlayer[PlayerID] )
  67940. v1 = pPacket->_vptr_Packet;
  67941. else
  67942. v1 = pPacket->_vptr_Packet;
  67943. v1[4]();
  67944. PacketFactoryManager::RemovePacket(g_pPacketFactoryManager, pPacket);
  67945. }
  67946. return 1;
  67947. }
  67948. // 8049B18: using guessed type int __stdcall __cxa_end_catch(_DWORD);
  67949.  
  67950. //----- (080A5A84) --------------------------------------------------------
  67951. #error "80A5B56: positive sp value has been found (funcsize=57)"
  67952.  
  67953. //----- (080A5BE0) --------------------------------------------------------
  67954. int __cdecl DBThread::SendPacket(DBThread *const this, Packet *pPacket, PlayerID_t pID)
  67955. {
  67956. int result; // eax
  67957. pthread_mutex_t *autolock; // [esp+Ch] [ebp-18h]
  67958.  
  67959. autolock = &this->m_Lock.m_Mutex;
  67960. pthread_mutex_lock(&this->m_Lock.m_Mutex);
  67961. if ( this->m_Input.m_pPacket )
  67962. {
  67963. if ( this != (DBThread *const )-16 )
  67964. pthread_mutex_unlock(autolock);
  67965. result = 0;
  67966. }
  67967. else
  67968. {
  67969. this->m_Input.m_pPacket = pPacket;
  67970. this->m_Input.m_PlayerID = pID;
  67971. if ( this != (DBThread *const )-16 )
  67972. pthread_mutex_unlock(autolock);
  67973. result = 1;
  67974. }
  67975. return result;
  67976. }
  67977.  
  67978. //----- (080A5C68) --------------------------------------------------------
  67979. void __cdecl _tcf_0_210(void *a1)
  67980. {
  67981. std::ios_base::Init::~Init(&std::__ioinit);
  67982. }
  67983.  
  67984. //----- (080A5C78) --------------------------------------------------------
  67985. void `global constructor keyed to'DBThread::DBThread()
  67986. {
  67987. std::ios_base::Init::Init(&std::__ioinit);
  67988. __cxa_atexit(_tcf_0_210, 0, &_dso_handle);
  67989. }
  67990. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  67991.  
  67992. //----- (080A5CA4) --------------------------------------------------------
  67993. void __cdecl DBThread::stop(int a2)
  67994. {
  67995. *(_DWORD *)(a2 + 12) = 0;
  67996. }
  67997.  
  67998. //----- (080A5CB4) --------------------------------------------------------
  67999. #error "80A5CF7: positive sp value has been found (funcsize=26)"
  68000.  
  68001. //----- (080A5D74) --------------------------------------------------------
  68002. #error "80A5DB7: positive sp value has been found (funcsize=26)"
  68003.  
  68004. //----- (080A5E34) --------------------------------------------------------
  68005. void __cdecl DBThreadManager::~DBThreadManager(DBThreadManager *const this)
  68006. {
  68007. UINT v1; // eax
  68008. UINT v2; // ebx
  68009. DBThread *v3; // edx
  68010.  
  68011. v1 = this->mDBThreadCount;
  68012. v2 = 0;
  68013. if ( v1 )
  68014. {
  68015. do
  68016. {
  68017. v3 = this->mpDBThread[v2];
  68018. if ( v3 )
  68019. {
  68020. (*((void (__cdecl **)(DBThread *))v3->_vptr_Thread + 1))(this->mpDBThread[v2]);
  68021. this->mpDBThread[v2] = 0;
  68022. v1 = this->mDBThreadCount;
  68023. }
  68024. ++v2;
  68025. }
  68026. while ( v1 > v2 );
  68027. }
  68028. }
  68029.  
  68030. //----- (080A5EC8) --------------------------------------------------------
  68031. void __cdecl DBThreadManager::~DBThreadManager(DBThreadManager *const this)
  68032. {
  68033. UINT v1; // eax
  68034. UINT v2; // ebx
  68035. DBThread *v3; // edx
  68036.  
  68037. v1 = this->mDBThreadCount;
  68038. v2 = 0;
  68039. if ( v1 )
  68040. {
  68041. do
  68042. {
  68043. v3 = this->mpDBThread[v2];
  68044. if ( v3 )
  68045. {
  68046. (*((void (__cdecl **)(DBThread *))v3->_vptr_Thread + 1))(this->mpDBThread[v2]);
  68047. this->mpDBThread[v2] = 0;
  68048. v1 = this->mDBThreadCount;
  68049. }
  68050. ++v2;
  68051. }
  68052. while ( v1 > v2 );
  68053. }
  68054. }
  68055.  
  68056. //----- (080A5F5C) --------------------------------------------------------
  68057. BOOL __cdecl DBThreadManager::Init(DBThreadManager *const this)
  68058. {
  68059. UINT v1; // edx
  68060. UINT v2; // ebx
  68061.  
  68062. if ( g_SingleDBConnection == 1 )
  68063. this->mDBThreadCount = 3;
  68064. v1 = this->mDBThreadCount;
  68065. v2 = 0;
  68066. if ( v1 )
  68067. {
  68068. do
  68069. {
  68070. if ( this->mpDBThread[v2] )
  68071. {
  68072. DBThread::Init(this->mpDBThread[v2]);
  68073. v1 = this->mDBThreadCount;
  68074. }
  68075. ++v2;
  68076. }
  68077. while ( v1 > v2 );
  68078. }
  68079. return 1;
  68080. }
  68081.  
  68082. //----- (080A6000) --------------------------------------------------------
  68083. BOOL __cdecl DBThreadManager::Start(DBThreadManager *const this)
  68084. {
  68085. UINT v1; // edx
  68086. UINT v2; // ebx
  68087.  
  68088. v1 = this->mDBThreadCount;
  68089. v2 = 0;
  68090. if ( v1 )
  68091. {
  68092. do
  68093. {
  68094. if ( this->mpDBThread[v2] )
  68095. {
  68096. Thread::start(&this->mpDBThread[v2]->0);
  68097. v1 = this->mDBThreadCount;
  68098. }
  68099. ++v2;
  68100. }
  68101. while ( v1 > v2 );
  68102. }
  68103. return 1;
  68104. }
  68105.  
  68106. //----- (080A6090) --------------------------------------------------------
  68107. BOOL __cdecl DBThreadManager::Stop(DBThreadManager *const this)
  68108. {
  68109. UINT v1; // eax
  68110. UINT v2; // ebx
  68111. DBThread *v3; // edx
  68112.  
  68113. v1 = this->mDBThreadCount;
  68114. v2 = 0;
  68115. if ( v1 )
  68116. {
  68117. do
  68118. {
  68119. v3 = this->mpDBThread[v2];
  68120. if ( v3 )
  68121. {
  68122. (*((void (__cdecl **)(DBThread *))v3->_vptr_Thread + 2))(this->mpDBThread[v2]);
  68123. v1 = this->mDBThreadCount;
  68124. }
  68125. ++v2;
  68126. }
  68127. while ( v1 > v2 );
  68128. }
  68129. return 1;
  68130. }
  68131.  
  68132. //----- (080A6120) --------------------------------------------------------
  68133. BOOL __cdecl DBThreadManager::IsPoolTID(DBThreadManager *const this, TID tid)
  68134. {
  68135. UINT v2; // ecx
  68136. int v3; // edx
  68137. DBThread *v4; // eax
  68138.  
  68139. v2 = this->mDBThreadCount;
  68140. v3 = 0;
  68141. if ( !v2 )
  68142. return 0;
  68143. while ( 1 )
  68144. {
  68145. v4 = this->mpDBThread[v3];
  68146. if ( v4 )
  68147. {
  68148. if ( v4->m_TID == tid )
  68149. break;
  68150. }
  68151. if ( v2 <= ++v3 )
  68152. return 0;
  68153. }
  68154. return 1;
  68155. }
  68156.  
  68157. //----- (080A6158) --------------------------------------------------------
  68158. BOOL __cdecl DBThreadManager::SendPacket(DBThreadManager *const this, Packet *pPacket, PlayerID_t pID)
  68159. {
  68160. UINT v3; // edx
  68161. int v4; // ebx
  68162. DBThread *v5; // eax
  68163. bool v6; // cf
  68164. bool v7; // zf
  68165.  
  68166. v3 = this->mDBThreadCount;
  68167. v4 = 0;
  68168. if ( !v3 )
  68169. return 0;
  68170. while ( 1 )
  68171. {
  68172. v5 = this->mpDBThread[v4];
  68173. if ( v5 )
  68174. break;
  68175. v6 = v3 < ++v4;
  68176. v7 = v3 == v4;
  68177. LABEL_4:
  68178. if ( v6 || v7 )
  68179. return 0;
  68180. }
  68181. if ( !v5->m_Active
  68182. || !DBThread::IsConnected((int)this->mpDBThread[v4])
  68183. || !DBThread::SendPacket(this->mpDBThread[v4], pPacket, pID) )
  68184. {
  68185. v3 = this->mDBThreadCount;
  68186. v6 = v3 < ++v4;
  68187. v7 = v3 == v4;
  68188. goto LABEL_4;
  68189. }
  68190. return 1;
  68191. }
  68192.  
  68193. //----- (080A6218) --------------------------------------------------------
  68194. ODBCInterface *__cdecl DBThreadManager::GetInterface(DBThreadManager *const this, TID tid)
  68195. {
  68196. UINT v2; // edx
  68197. int v3; // ebx
  68198. DBThread *v4; // eax
  68199. bool v5; // cf
  68200. bool v6; // zf
  68201.  
  68202. v2 = this->mDBThreadCount;
  68203. v3 = 0;
  68204. if ( !v2 )
  68205. return 0;
  68206. while ( 1 )
  68207. {
  68208. v4 = this->mpDBThread[v3];
  68209. if ( v4 )
  68210. break;
  68211. v5 = v2 < ++v3;
  68212. v6 = v2 == v3;
  68213. LABEL_4:
  68214. if ( v5 || v6 )
  68215. return 0;
  68216. }
  68217. if ( !v4->m_Active || !DBThread::IsConnected((int)this->mpDBThread[v3]) || this->mpDBThread[v3]->m_TID != tid )
  68218. {
  68219. v2 = this->mDBThreadCount;
  68220. v5 = v2 < ++v3;
  68221. v6 = v2 == v3;
  68222. goto LABEL_4;
  68223. }
  68224. return DBThread::GetInterface((int)this->mpDBThread[v3]);
  68225. }
  68226.  
  68227. //----- (080A62C8) --------------------------------------------------------
  68228. BOOL __cdecl DBThreadManager::CheckWorldIDZoneID(DBThreadManager *const this, ID_t nConfigWorldID, ID_t nConfigZoneID)
  68229. {
  68230. BOOL result; // eax
  68231. UINT v4; // edx
  68232. int v5; // ebx
  68233. DBThread *v6; // eax
  68234. bool v7; // cf
  68235. bool v8; // zf
  68236. ODBCInterface *pInterface; // [esp+0h] [ebp-48h]
  68237. INT nZoneID; // [esp+8h] [ebp-40h]
  68238. INT nWorldID; // [esp+Ch] [ebp-3Ch]
  68239. DBGeneralSet GSetObject; // [esp+10h] [ebp-38h]
  68240.  
  68241. result = 1;
  68242. if ( !g_IgnoreWorldIDZoneIDCheck )
  68243. {
  68244. v4 = this->mDBThreadCount;
  68245. v5 = 0;
  68246. nWorldID = -1;
  68247. nZoneID = -1;
  68248. if ( v4 )
  68249. {
  68250. do
  68251. {
  68252. v6 = this->mpDBThread[v5];
  68253. if ( v6 )
  68254. {
  68255. if ( v6->m_Active && DBThread::IsConnected((int)this->mpDBThread[v5]) )
  68256. {
  68257. pInterface = DBThread::GetInterface((int)this->mpDBThread[v5]);
  68258. if ( !pInterface )
  68259. __assert__(
  68260. "./DB/DBThreadManager.cpp",
  68261. 0xB7u,
  68262. "int DBThreadManager::CheckWorldIDZoneID(ID_t, ID_t)",
  68263. "pInterface");
  68264. DBGeneralSet::DBGeneralSet(&GSetObject, pInterface);
  68265. DBGeneralSet::GetValue(&GSetObject, GSET_T_WORLDID, &nWorldID);
  68266. DBGeneralSet::GetValue(&GSetObject, GSET_T_ZONEID, &nZoneID);
  68267. if ( nConfigWorldID != nWorldID || nConfigZoneID != nZoneID )
  68268. return 0;
  68269. }
  68270. v4 = this->mDBThreadCount;
  68271. v7 = v4 < ++v5;
  68272. v8 = v4 == v5;
  68273. }
  68274. else
  68275. {
  68276. v7 = v4 < ++v5;
  68277. v8 = v4 == v5;
  68278. }
  68279. }
  68280. while ( !v7 && !v8 );
  68281. }
  68282. result = 1;
  68283. }
  68284. return result;
  68285. }
  68286. // 8049B18: using guessed type int __stdcall __cxa_end_catch(_DWORD);
  68287.  
  68288. //----- (080A642C) --------------------------------------------------------
  68289. void __cdecl _tcf_0_211(void *a1)
  68290. {
  68291. std::ios_base::Init::~Init(&std::__ioinit);
  68292. }
  68293.  
  68294. //----- (080A643C) --------------------------------------------------------
  68295. void `global constructor keyed to'g_pDBThreadManager()
  68296. {
  68297. std::ios_base::Init::Init(&std::__ioinit);
  68298. __cxa_atexit(_tcf_0_211, 0, &_dso_handle);
  68299. }
  68300. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  68301.  
  68302. //----- (080A6468) --------------------------------------------------------
  68303. int __cdecl LoginDBManager::Init(LoginDBManager *const this)
  68304. {
  68305. int v1; // edx
  68306. ODBCInterface *v2; // eax
  68307. CHAR Password[256]; // [esp+4h] [ebp-1D8h]
  68308. CHAR User[32]; // [esp+104h] [ebp-D8h]
  68309. CHAR Database[128]; // [esp+124h] [ebp-B8h]
  68310. CHAR Host[30]; // [esp+1A4h] [ebp-38h]
  68311.  
  68312. strncpy(Host, g_Config.m_LoginInfo.m_DBIP, 0x1Eu);
  68313. Host[29] = 0;
  68314. strncpy(Database, g_Config.m_LoginInfo.m_DBName, 0x80u);
  68315. Database[127] = 0;
  68316. strncpy(User, g_Config.m_LoginInfo.m_DBUser, 0x20u);
  68317. User[31] = 0;
  68318. if ( g_Config.m_LoginInfo.CryptPwd <= 0 )
  68319. {
  68320. strncpy(Password, g_Config.m_LoginInfo.m_DBPassword, 0x100u);
  68321. Password[255] = 0;
  68322. }
  68323. else
  68324. {
  68325. memset(Password, 0, 0x100u);
  68326. Seraph::string2pwd(g_Config.m_LoginInfo.m_DBPassword, Password);
  68327. }
  68328. if ( !this->mCharDBInterface )
  68329. __assert__("./DB/LoginDBManager.cpp", 0x28u, "virtual int LoginDBManager::Init()", "mCharDBInterface");
  68330. *(_DWORD *)&Password[12] = Password;
  68331. *(_DWORD *)&Password[8] = User;
  68332. *(_DWORD *)&Password[4] = Database;
  68333. ODBCInterface::Connect(this->mCharDBInterface, Database, User, Password);
  68334. v2 = this->mCharDBInterface;
  68335. if ( !v2->mConnected )
  68336. {
  68337. *(_DWORD *)&Password[12] = v1;
  68338. *(_DWORD *)&Password[8] = (char *)v2 + 462744;
  68339. CacheLog(0, "mCharDBInterface->Connect()... Get Errors: %s ", v2->mErrorMsg, v1);
  68340. }
  68341. return 1;
  68342. }
  68343.  
  68344. //----- (080A65D4) --------------------------------------------------------
  68345. void __cdecl LoginDBManager::run(LoginDBManager *const this)
  68346. {
  68347. UINT v1; // esi
  68348. int v2; // ecx
  68349. int v3; // eax
  68350. int v4; // edx
  68351. int v5; // [esp+4h] [ebp-10h]
  68352. int v6; // [esp+8h] [ebp-Ch]
  68353.  
  68354. puts("run db Thread \r");
  68355. v1 = TimeManager::CurrentTime((int)g_pTimeManager);
  68356. g_DBLogicManager.m_ThreadID = this->m_TID;
  68357. while ( this->m_Active )
  68358. {
  68359. MySleep(100);
  68360. if ( this->mCharDBInterface->mConnected )
  68361. goto LABEL_9;
  68362. MySleep(5000);
  68363. if ( g_DBConnectThread )
  68364. {
  68365. CacheLog(0, "LoginDBManager g_DBConnectThread = 0 IGNORE reconnect database,TID=%d", this->m_TID, v2);
  68366. }
  68367. else
  68368. {
  68369. g_DBConnectThread = this->m_TID;
  68370. v3 = ODBCInterface::Connect(this->mCharDBInterface);
  68371. g_DBConnectThread = 0;
  68372. if ( v3 )
  68373. CacheLog(0, "Reconnect database", v5, v6);
  68374. else
  68375. CacheLog(0, "mCharDBInterface->Connect() Get Errors: %s", this->mCharDBInterface->mErrorMsg, v4);
  68376. LABEL_9:
  68377. DBLogicManager::HeartBeat(&g_DBLogicManager, v1);
  68378. }
  68379. }
  68380. puts("end db Thread \r");
  68381. }
  68382.  
  68383. //----- (080A670C) --------------------------------------------------------
  68384. void __cdecl _tcf_0_212(void *a1)
  68385. {
  68386. std::ios_base::Init::~Init(&std::__ioinit);
  68387. }
  68388.  
  68389. //----- (080A671C) --------------------------------------------------------
  68390. void `global constructor keyed to'g_pDBManager()
  68391. {
  68392. std::ios_base::Init::Init(&std::__ioinit);
  68393. __cxa_atexit(_tcf_0_212, 0, &_dso_handle);
  68394. }
  68395. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  68396.  
  68397. //----- (080A6748) --------------------------------------------------------
  68398. void __cdecl LoginDBManager::~LoginDBManager(DBManager *a2)
  68399. {
  68400. a2->_vptr_Thread = (int (**)(...))off_80E4268;
  68401. DBManager::~DBManager(a2);
  68402. }
  68403. // 80E4268: using guessed type _DWORD (__cdecl *off_80E4268[2])(LoginDBManager *this);
  68404.  
  68405. //----- (080A6764) --------------------------------------------------------
  68406. void __cdecl LoginDBManager::~LoginDBManager(DBManager *a2)
  68407. {
  68408. a2->_vptr_Thread = (int (**)(...))off_80E4268;
  68409. DBManager::~DBManager(a2);
  68410. operator delete((IPRegionTable *const )a2);
  68411. }
  68412. // 80E4268: using guessed type _DWORD (__cdecl *off_80E4268[2])(LoginDBManager *this);
  68413.  
  68414. //----- (080A678C) --------------------------------------------------------
  68415. void __cdecl ProcessManager::ProcessManager(ProcessManager *const this)
  68416. {
  68417. ProcessPlayerManager *v1; // ebx
  68418. ASYNC_PACKET *v2; // eax
  68419. ASYNC_PACKET *v3; // edx
  68420. signed int v4; // ecx
  68421.  
  68422. Thread::Thread(this);
  68423. this->_vptr_Thread = (int (**)(...))&off_80E43B8;
  68424. pthread_mutex_init(&this->m_Lock.m_Mutex, 0);
  68425. this->m_Active = 1;
  68426. v1 = (ProcessPlayerManager *)operator new(0x1798u);
  68427. ProcessPlayerManager::ProcessPlayerManager(v1);
  68428. g_pProcessPlayerManager = v1;
  68429. if ( !v1 )
  68430. __assert__("./Process/ProcessManager.cpp", 0x18u, "ProcessManager::ProcessManager()", "g_pProcessPlayerManager");
  68431. v2 = (ASYNC_PACKET *)(operator new[](0x3004u) + 4);
  68432. v2[-1].m_Flag = 1024;
  68433. v3 = v2;
  68434. v4 = 1023;
  68435. do
  68436. {
  68437. --v4;
  68438. v3->m_pPacket = 0;
  68439. v3->m_PlayerID = -1;
  68440. v3->m_Flag = 0;
  68441. ++v3;
  68442. }
  68443. while ( v4 != -1 );
  68444. this->m_PacketQue = v2;
  68445. if ( !v2 )
  68446. __assert__("./Process/ProcessManager.cpp", 0x1Bu, "ProcessManager::ProcessManager()", "m_PacketQue");
  68447. this->m_QueSize = 1024;
  68448. this->m_Head = 0;
  68449. this->m_Tail = 0;
  68450. this->m_CurrentTime = 0;
  68451. this->m_LogTurnTime = 0;
  68452. }
  68453. // 80E43B8: using guessed type _DWORD (__cdecl *off_80E43B8)(ProcessManager *this);
  68454.  
  68455. //----- (080A68FC) --------------------------------------------------------
  68456. void __cdecl ProcessManager::ProcessManager(ProcessManager *const this)
  68457. {
  68458. ProcessPlayerManager *v1; // ebx
  68459. ASYNC_PACKET *v2; // eax
  68460. ASYNC_PACKET *v3; // edx
  68461. signed int v4; // ecx
  68462.  
  68463. Thread::Thread(this);
  68464. this->_vptr_Thread = (int (**)(...))&off_80E43B8;
  68465. pthread_mutex_init(&this->m_Lock.m_Mutex, 0);
  68466. this->m_Active = 1;
  68467. v1 = (ProcessPlayerManager *)operator new(0x1798u);
  68468. ProcessPlayerManager::ProcessPlayerManager(v1);
  68469. g_pProcessPlayerManager = v1;
  68470. if ( !v1 )
  68471. __assert__("./Process/ProcessManager.cpp", 0x18u, "ProcessManager::ProcessManager()", "g_pProcessPlayerManager");
  68472. v2 = (ASYNC_PACKET *)(operator new[](0x3004u) + 4);
  68473. v2[-1].m_Flag = 1024;
  68474. v3 = v2;
  68475. v4 = 1023;
  68476. do
  68477. {
  68478. --v4;
  68479. v3->m_pPacket = 0;
  68480. v3->m_PlayerID = -1;
  68481. v3->m_Flag = 0;
  68482. ++v3;
  68483. }
  68484. while ( v4 != -1 );
  68485. this->m_PacketQue = v2;
  68486. if ( !v2 )
  68487. __assert__("./Process/ProcessManager.cpp", 0x1Bu, "ProcessManager::ProcessManager()", "m_PacketQue");
  68488. this->m_QueSize = 1024;
  68489. this->m_Head = 0;
  68490. this->m_Tail = 0;
  68491. this->m_CurrentTime = 0;
  68492. this->m_LogTurnTime = 0;
  68493. }
  68494. // 80E43B8: using guessed type _DWORD (__cdecl *off_80E43B8)(ProcessManager *this);
  68495.  
  68496. //----- (080A6A6C) --------------------------------------------------------
  68497. void __cdecl ProcessManager::~ProcessManager(ProcessManager *const this)
  68498. {
  68499. ProcessPlayerManager *v1; // ebx
  68500. bool v2; // zf
  68501. ASYNC_PACKET *v3; // ecx
  68502. ASYNC_PACKET *i; // ebx
  68503.  
  68504. v1 = g_pProcessPlayerManager;
  68505. v2 = g_pProcessPlayerManager == 0;
  68506. this->_vptr_Thread = (int (**)(...))&off_80E43B8;
  68507. if ( !v2 )
  68508. {
  68509. ProcessPlayerManager::~ProcessPlayerManager(v1);
  68510. operator delete((IPRegionTable *const )v1);
  68511. g_pProcessPlayerManager = 0;
  68512. }
  68513. v3 = this->m_PacketQue;
  68514. if ( v3 )
  68515. {
  68516. for ( i = &v3[v3[-1].m_Flag]; v3 != i; i->m_Flag = 0 )
  68517. {
  68518. --i;
  68519. if ( i->m_pPacket )
  68520. {
  68521. (*((void (__cdecl **)(Packet *))i->m_pPacket->_vptr_Packet + 1))(i->m_pPacket);
  68522. v3 = this->m_PacketQue;
  68523. i->m_pPacket = 0;
  68524. }
  68525. i->m_PlayerID = -1;
  68526. }
  68527. operator delete[](&v3[-1].m_Flag);
  68528. this->m_PacketQue = 0;
  68529. }
  68530. pthread_mutex_destroy(&this->m_Lock.m_Mutex);
  68531. Thread::~Thread(this);
  68532. }
  68533. // 80E43B8: using guessed type _DWORD (__cdecl *off_80E43B8)(ProcessManager *this);
  68534.  
  68535. //----- (080A6B72) --------------------------------------------------------
  68536. void __usercall __noreturn sub_80A6B72(int a1@<esi>)
  68537. {
  68538. pthread_mutex_destroy((pthread_mutex_t *)(a1 + 40));
  68539. Thread::~Thread((_DWORD *)a1);
  68540. _Unwind_Resume();
  68541. }
  68542.  
  68543. //----- (080A6B9C) --------------------------------------------------------
  68544. void __cdecl ProcessManager::~ProcessManager(ProcessManager *const this)
  68545. {
  68546. ProcessPlayerManager *v1; // ebx
  68547. bool v2; // zf
  68548. ASYNC_PACKET *v3; // ecx
  68549. ASYNC_PACKET *i; // ebx
  68550.  
  68551. v1 = g_pProcessPlayerManager;
  68552. v2 = g_pProcessPlayerManager == 0;
  68553. this->_vptr_Thread = (int (**)(...))&off_80E43B8;
  68554. if ( !v2 )
  68555. {
  68556. ProcessPlayerManager::~ProcessPlayerManager(v1);
  68557. operator delete((IPRegionTable *const )v1);
  68558. g_pProcessPlayerManager = 0;
  68559. }
  68560. v3 = this->m_PacketQue;
  68561. if ( v3 )
  68562. {
  68563. for ( i = &v3[v3[-1].m_Flag]; v3 != i; i->m_Flag = 0 )
  68564. {
  68565. --i;
  68566. if ( i->m_pPacket )
  68567. {
  68568. (*((void (__cdecl **)(Packet *))i->m_pPacket->_vptr_Packet + 1))(i->m_pPacket);
  68569. v3 = this->m_PacketQue;
  68570. i->m_pPacket = 0;
  68571. }
  68572. i->m_PlayerID = -1;
  68573. }
  68574. operator delete[](&v3[-1].m_Flag);
  68575. this->m_PacketQue = 0;
  68576. }
  68577. pthread_mutex_destroy(&this->m_Lock.m_Mutex);
  68578. Thread::~Thread(this);
  68579. }
  68580. // 80E43B8: using guessed type _DWORD (__cdecl *off_80E43B8)(ProcessManager *this);
  68581.  
  68582. //----- (080A6CA2) --------------------------------------------------------
  68583. void __usercall __noreturn sub_80A6CA2(int a1@<esi>)
  68584. {
  68585. pthread_mutex_destroy((pthread_mutex_t *)(a1 + 40));
  68586. Thread::~Thread((_DWORD *)a1);
  68587. _Unwind_Resume();
  68588. }
  68589.  
  68590. //----- (080A6CCC) --------------------------------------------------------
  68591. void __cdecl ProcessManager::~ProcessManager(ProcessManager *const this)
  68592. {
  68593. ProcessPlayerManager *v1; // ebx
  68594. bool v2; // zf
  68595. ASYNC_PACKET *v3; // ecx
  68596. ASYNC_PACKET *i; // ebx
  68597.  
  68598. v1 = g_pProcessPlayerManager;
  68599. v2 = g_pProcessPlayerManager == 0;
  68600. this->_vptr_Thread = (int (**)(...))&off_80E43B8;
  68601. if ( !v2 )
  68602. {
  68603. ProcessPlayerManager::~ProcessPlayerManager(v1);
  68604. operator delete((IPRegionTable *const )v1);
  68605. g_pProcessPlayerManager = 0;
  68606. }
  68607. v3 = this->m_PacketQue;
  68608. if ( v3 )
  68609. {
  68610. for ( i = &v3[v3[-1].m_Flag]; v3 != i; i->m_Flag = 0 )
  68611. {
  68612. --i;
  68613. if ( i->m_pPacket )
  68614. {
  68615. (*((void (__cdecl **)(Packet *))i->m_pPacket->_vptr_Packet + 1))(i->m_pPacket);
  68616. v3 = this->m_PacketQue;
  68617. i->m_pPacket = 0;
  68618. }
  68619. i->m_PlayerID = -1;
  68620. }
  68621. operator delete[](&v3[-1].m_Flag);
  68622. this->m_PacketQue = 0;
  68623. }
  68624. pthread_mutex_destroy(&this->m_Lock.m_Mutex);
  68625. Thread::~Thread(this);
  68626. operator delete((IPRegionTable *const )this);
  68627. }
  68628. // 80E43B8: using guessed type _DWORD (__cdecl *off_80E43B8)(ProcessManager *this);
  68629.  
  68630. //----- (080A6DE5) --------------------------------------------------------
  68631. void __usercall __noreturn sub_80A6DE5(int a1@<esi>)
  68632. {
  68633. pthread_mutex_destroy((pthread_mutex_t *)(a1 + 40));
  68634. Thread::~Thread((_DWORD *)a1);
  68635. _Unwind_Resume();
  68636. }
  68637.  
  68638. //----- (080A6E10) --------------------------------------------------------
  68639. BOOL __cdecl ProcessManager::Init(int a2)
  68640. {
  68641. *(_DWORD *)(a2 + 20) = g_Config.m_ConfigInfo.m_DisconnectTime;
  68642. return 1;
  68643. }
  68644.  
  68645. //----- (080A6E28) --------------------------------------------------------
  68646. void __cdecl ProcessManager::Quit(ProcessManager *const this)
  68647. {
  68648. ;
  68649. }
  68650.  
  68651. //----- (080A6E30) --------------------------------------------------------
  68652. BOOL __cdecl ProcessManager::RecvPacket(ProcessManager *const this, Packet **const pPacket, PlayerID_t *const PlayerID, UINT *const Flag)
  68653. {
  68654. ASYNC_PACKET *v4; // ebx
  68655. UINT v5; // ecx
  68656. Packet *v6; // edx
  68657. UINT v8; // eax
  68658. UINT v9; // eax
  68659. pthread_mutex_t *v10; // eax
  68660.  
  68661. pthread_mutex_lock(&this->m_Lock.m_Mutex);
  68662. v4 = this->m_PacketQue;
  68663. v5 = this->m_Head;
  68664. v6 = v4[v5].m_pPacket;
  68665. if ( v6 )
  68666. {
  68667. *pPacket = v6;
  68668. *PlayerID = v4[v5].m_PlayerID;
  68669. *Flag = v4[v5].m_Flag;
  68670. v8 = this->m_Head;
  68671. v4[v8].m_Flag = 0;
  68672. v4[v8].m_pPacket = 0;
  68673. v4[v8].m_PlayerID = -1;
  68674. v9 = this->m_Head + 1;
  68675. if ( v9 >= this->m_QueSize )
  68676. {
  68677. v10 = &this->m_Lock.m_Mutex;
  68678. this->m_Head = 0;
  68679. if ( this == (ProcessManager *const )-40 )
  68680. return 1;
  68681. }
  68682. else
  68683. {
  68684. this->m_Head = v9;
  68685. v10 = &this->m_Lock.m_Mutex;
  68686. if ( this == (ProcessManager *const )-40 )
  68687. return 1;
  68688. }
  68689. pthread_mutex_unlock(v10);
  68690. return 1;
  68691. }
  68692. if ( this != (ProcessManager *const )-40 )
  68693. pthread_mutex_unlock(&this->m_Lock.m_Mutex);
  68694. return 0;
  68695. }
  68696.  
  68697. //----- (080A6F10) --------------------------------------------------------
  68698. BOOL __cdecl ProcessManager::MovePacket(ProcessManager *const this, PlayerID_t PlayerID)
  68699. {
  68700. UINT v2; // ebx
  68701. UINT v3; // edi
  68702. UINT v4; // ecx
  68703. ASYNC_PACKET *v5; // esi
  68704. int v6; // edx
  68705.  
  68706. pthread_mutex_lock(&this->m_Lock.m_Mutex);
  68707. v2 = this->m_QueSize;
  68708. v3 = 0;
  68709. v4 = this->m_Head;
  68710. if ( v2 )
  68711. {
  68712. v5 = this->m_PacketQue;
  68713. do
  68714. {
  68715. v6 = v4;
  68716. if ( !v5[v4].m_pPacket )
  68717. break;
  68718. if ( v5[v6].m_PlayerID == PlayerID )
  68719. {
  68720. v5[v6].m_Flag = 1;
  68721. v2 = this->m_QueSize;
  68722. }
  68723. if ( v2 <= ++v4 )
  68724. v4 = 0;
  68725. ++v3;
  68726. }
  68727. while ( v2 > v3 );
  68728. }
  68729. if ( this != (ProcessManager *const )-40 )
  68730. pthread_mutex_unlock(&this->m_Lock.m_Mutex);
  68731. return 1;
  68732. }
  68733.  
  68734. //----- (080A6FC0) --------------------------------------------------------
  68735. #error "80A716C: positive sp value has been found (funcsize=124)"
  68736.  
  68737. //----- (080A7204) --------------------------------------------------------
  68738. #error "80A732F: positive sp value has been found (funcsize=89)"
  68739.  
  68740. //----- (080A73C0) --------------------------------------------------------
  68741. BOOL __cdecl ProcessManager::SendPacket(ProcessManager *const this, Packet *pPacket, PlayerID_t PlayerID, UINT Flag)
  68742. {
  68743. UINT v4; // edx
  68744. ASYNC_PACKET *v5; // ecx
  68745. int v6; // eax
  68746. UINT v7; // eax
  68747. pthread_mutex_t *v8; // eax
  68748.  
  68749. pthread_mutex_lock(&this->m_Lock.m_Mutex);
  68750. v4 = this->m_Tail;
  68751. v5 = this->m_PacketQue;
  68752. if ( v5[v4].m_pPacket )
  68753. {
  68754. if ( !ProcessManager::ResizeCache(this) )
  68755. __assert__(
  68756. "./Process/ProcessManager.cpp",
  68757. 0x192u,
  68758. "BOOL ProcessManager::SendPacket(Packet*, PlayerID_t, UINT)",
  68759. "ret");
  68760. v4 = this->m_Tail;
  68761. v5 = this->m_PacketQue;
  68762. }
  68763. v6 = v4;
  68764. v5[v6].m_pPacket = pPacket;
  68765. v5[v6].m_Flag = Flag;
  68766. v5[v6].m_PlayerID = PlayerID;
  68767. v7 = this->m_Tail + 1;
  68768. if ( v7 >= this->m_QueSize )
  68769. {
  68770. v8 = &this->m_Lock.m_Mutex;
  68771. this->m_Tail = 0;
  68772. if ( this == (ProcessManager *const )-40 )
  68773. return 1;
  68774. LABEL_6:
  68775. pthread_mutex_unlock(v8);
  68776. return 1;
  68777. }
  68778. this->m_Tail = v7;
  68779. v8 = &this->m_Lock.m_Mutex;
  68780. if ( this != (ProcessManager *const )-40 )
  68781. goto LABEL_6;
  68782. return 1;
  68783. }
  68784.  
  68785. //----- (080A74E8) --------------------------------------------------------
  68786. BOOL __cdecl ProcessManager::MoveQueuePlayer(ProcessManager *const this)
  68787. {
  68788. int v1; // ebx
  68789. UINT v2; // eax
  68790. LoginPlayer *v3; // esi
  68791. const char *v4; // eax
  68792. Packets::LWNotifyUser *v5; // ST28_4
  68793. const CHAR *v6; // eax
  68794. PlayerID_t PlayerID; // [esp+Eh] [ebp-5Ah]
  68795. CHAR PlayerName[51]; // [esp+10h] [ebp-58h]
  68796.  
  68797. v1 = g_WorldPlayerCounter1.m_MaxWorldUserCount - g_WorldPlayerCounter1.m_WorldPlayerCount;
  68798. if ( g_WorldPlayerCounter1.m_MaxWorldUserCount - g_WorldPlayerCounter1.m_WorldPlayerCount <= 0 )
  68799. v1 = 0;
  68800. while ( 1 )
  68801. {
  68802. v2 = g_pProcessPlayerManager->m_NormalPlayers;
  68803. if ( v2 > 0xFF
  68804. || (signed int)(v2 + 100) >= v1
  68805. || !TurnPlayerQueue::GetOutPlayer(g_pProcessPlayerQueue, &PlayerID, PlayerName) )
  68806. {
  68807. break;
  68808. }
  68809. if ( PlayerID == -1 || PlayerID > 3071 || PlayerID < 0 || (v3 = &g_pPlayerPool->m_pPlayer[PlayerID]) == 0 )
  68810. __assert__("./Process/ProcessManager.cpp", 0x1B8u, "BOOL ProcessManager::MoveQueuePlayer()", "pLoginPlayer");
  68811. v4 = LoginPlayer::GetAccount(&g_pPlayerPool->m_pPlayer[PlayerID]);
  68812. if ( !strcmp(v4, PlayerName) && v3->m_Status == 307 )
  68813. {
  68814. v3->m_Status = 311;
  68815. (*((void (__cdecl **)(LoginPlayer *))v3->_vptr_Player + 27))(v3);
  68816. LoginPlayer::SetQueuePos((int)v3, 0);
  68817. ++g_pProcessPlayerManager->m_NormalPlayers;
  68818. v5 = (Packets::LWNotifyUser *)PacketFactoryManager::CreatePacket(g_pPacketFactoryManager, 0x1B8u);
  68819. v6 = LoginPlayer::GetAccount(v3);
  68820. Packets::LWNotifyUser::SetAccount(v5, v6);
  68821. v5->m_NotifyStatus = 1;
  68822. v5->m_uKey = LoginPlayer::GetUserKey((int)v3);
  68823. ServerManager::SendPacket(*(ServerManager *const *)&g_pServerManager, &v5->0, 0, 0);
  68824. }
  68825. }
  68826. return 1;
  68827. }
  68828.  
  68829. //----- (080A76B8) --------------------------------------------------------
  68830. BOOL __cdecl ProcessManager::ResetQueuePos(ProcessManager *const this)
  68831. {
  68832. TurnPlayerQueue::SortQueuePos(g_pProcessPlayerQueue);
  68833. return 1;
  68834. }
  68835.  
  68836. //----- (080A771C) --------------------------------------------------------
  68837. BOOL __cdecl ProcessManager::DoTick(ProcessManager *const this, UINT uTime)
  68838. {
  68839. INT v2; // eax
  68840. UINT v4; // ecx
  68841. UINT v5; // edx
  68842. UINT v6; // eax
  68843.  
  68844. if ( !ProcessPlayerManager::Select(g_pProcessPlayerManager) )
  68845. __assert__("./Process/ProcessManager.cpp", 0x6Du, "BOOL ProcessManager::DoTick(UINT)", "ret");
  68846. if ( !ProcessPlayerManager::ProcessExceptions(g_pProcessPlayerManager) )
  68847. __assert__("./Process/ProcessManager.cpp", 0x70u, "BOOL ProcessManager::DoTick(UINT)", "ret");
  68848. if ( !ProcessPlayerManager::ProcessInputs(g_pProcessPlayerManager) )
  68849. __assert__("./Process/ProcessManager.cpp", 0x73u, "BOOL ProcessManager::DoTick(UINT)", "ret");
  68850. if ( !ProcessPlayerManager::ProcessOutputs(g_pProcessPlayerManager) )
  68851. __assert__("./Process/ProcessManager.cpp", 0x76u, "BOOL ProcessManager::DoTick(UINT)", "ret");
  68852. if ( !ProcessPlayerManager::ProcessCommands(g_pProcessPlayerManager) )
  68853. __assert__("./Process/ProcessManager.cpp", 0x81u, "BOOL ProcessManager::DoTick(UINT)", "ret");
  68854. ProcessManager::ProcessCacheCommands(this);
  68855. ProcessManager::ResetQueuePos(this);
  68856. if ( !((int (__cdecl *)(ProcessPlayerManager *, UINT))*g_pProcessPlayerManager->_vptr_PlayerManager)(
  68857. g_pProcessPlayerManager,
  68858. uTime) )
  68859. __assertex__(
  68860. "./Process/ProcessManager.cpp",
  68861. 0x9Fu,
  68862. "BOOL ProcessManager::DoTick(UINT)",
  68863. "ret",
  68864. "g_pProcessPlayerManager->HeartBeat(uTime) get errors");
  68865. if ( !ProcessManager::MoveQueuePlayer(this) )
  68866. __assertex__(
  68867. "./Process/ProcessManager.cpp",
  68868. 0xABu,
  68869. "BOOL ProcessManager::DoTick(UINT)",
  68870. "ret",
  68871. "MoveQueuePlayer() get errors");
  68872. v2 = this->m_LogTurnTime - (uTime - this->m_CurrentTime);
  68873. this->m_LogTurnTime = v2;
  68874. if ( v2 < 0 )
  68875. {
  68876. v4 = g_pProcessPlayerQueue->m_Head;
  68877. v5 = g_pProcessPlayerQueue->m_Tail;
  68878. if ( v4 > v5 )
  68879. {
  68880. v4 -= v5;
  68881. v6 = g_pProcessPlayerQueue->m_Size;
  68882. }
  68883. else
  68884. {
  68885. v6 = g_pProcessPlayerQueue->m_Tail;
  68886. }
  68887. CacheLog(
  68888. 0,
  68889. "ProcessManager::DoTick TurnPlayer Number:%u ValidNum:%u InvalidNum:%u",
  68890. v6 - v4,
  68891. g_pProcessPlayerQueue->m_ValidCount,
  68892. g_pProcessPlayerQueue->m_InvalidCount);
  68893. this->m_LogTurnTime = g_Config.m_ConfigInfo.m_DisconnectTime;
  68894. this->m_CurrentTime = uTime;
  68895. }
  68896. else
  68897. {
  68898. this->m_CurrentTime = uTime;
  68899. }
  68900. return 1;
  68901. }
  68902. // 8049B18: using guessed type int __stdcall __cxa_end_catch(_DWORD);
  68903.  
  68904. //----- (080A7A1C) --------------------------------------------------------
  68905. #error "80A7A55: positive sp value has been found (funcsize=18)"
  68906.  
  68907. //----- (080A7AB4) --------------------------------------------------------
  68908. void __cdecl _tcf_0_213(void *a1)
  68909. {
  68910. std::ios_base::Init::~Init(&std::__ioinit);
  68911. }
  68912.  
  68913. //----- (080A7AC4) --------------------------------------------------------
  68914. void `global constructor keyed to'g_pProcessManager()
  68915. {
  68916. std::ios_base::Init::Init(&std::__ioinit);
  68917. __cxa_atexit(_tcf_0_213, 0, &_dso_handle);
  68918. }
  68919. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  68920.  
  68921. //----- (080A7AF0) --------------------------------------------------------
  68922. void __cdecl ProcessManager::stop(int a2)
  68923. {
  68924. *(_DWORD *)(a2 + 12) = 0;
  68925. }
  68926.  
  68927. //----- (080A7B00) --------------------------------------------------------
  68928. void __cdecl ProcessPlayerManager::ProcessPlayerManager(ProcessPlayerManager *const this)
  68929. {
  68930. PlayerManager::PlayerManager(&this->0);
  68931. this->_vptr_PlayerManager = (int (**)(...))&off_80E4780;
  68932. StrTable::StrTable(&this->m_AccTable.m_pTable);
  68933. memset(&this->m_ReadFDs[1], 0, sizeof(this->m_ReadFDs[1]));
  68934. memset(&this->m_WriteFDs[1], 0, sizeof(this->m_WriteFDs[1]));
  68935. memset(&this->m_ExceptFDs[1], 0, sizeof(this->m_ExceptFDs[1]));
  68936. memset(this->m_ReadFDs, 0, 0x200u);
  68937. memset(this->m_WriteFDs, 0, 0x200u);
  68938. memset(this->m_ExceptFDs, 0, 0x200u);
  68939. this->m_Timeout[1].tv_sec = 0;
  68940. this->m_Timeout[1].tv_usec = 100;
  68941. this->m_Timeout[0].tv_sec = 0;
  68942. this->m_Timeout[0].tv_usec = 100;
  68943. this->m_MaxFD = -1;
  68944. this->m_MinFD = -1;
  68945. this->m_nFDSize = 0;
  68946. this->m_NormalPlayers = 0;
  68947. StrTable::InitTable(&this->m_AccTable, 0x401u, 0x32u);
  68948. }
  68949. // 80E4780: using guessed type _DWORD (__cdecl *off_80E4780)(ProcessPlayerManager *this, UINT uTime);
  68950.  
  68951. //----- (080A7C48) --------------------------------------------------------
  68952. void __cdecl ProcessPlayerManager::ProcessPlayerManager(ProcessPlayerManager *const this)
  68953. {
  68954. PlayerManager::PlayerManager(&this->0);
  68955. this->_vptr_PlayerManager = (int (**)(...))&off_80E4780;
  68956. StrTable::StrTable(&this->m_AccTable.m_pTable);
  68957. memset(&this->m_ReadFDs[1], 0, sizeof(this->m_ReadFDs[1]));
  68958. memset(&this->m_WriteFDs[1], 0, sizeof(this->m_WriteFDs[1]));
  68959. memset(&this->m_ExceptFDs[1], 0, sizeof(this->m_ExceptFDs[1]));
  68960. memset(this->m_ReadFDs, 0, 0x200u);
  68961. memset(this->m_WriteFDs, 0, 0x200u);
  68962. memset(this->m_ExceptFDs, 0, 0x200u);
  68963. this->m_Timeout[1].tv_sec = 0;
  68964. this->m_Timeout[1].tv_usec = 100;
  68965. this->m_Timeout[0].tv_sec = 0;
  68966. this->m_Timeout[0].tv_usec = 100;
  68967. this->m_MaxFD = -1;
  68968. this->m_MinFD = -1;
  68969. this->m_nFDSize = 0;
  68970. this->m_NormalPlayers = 0;
  68971. StrTable::InitTable(&this->m_AccTable, 0x401u, 0x32u);
  68972. }
  68973. // 80E4780: using guessed type _DWORD (__cdecl *off_80E4780)(ProcessPlayerManager *this, UINT uTime);
  68974.  
  68975. //----- (080A7D90) --------------------------------------------------------
  68976. void __cdecl ProcessPlayerManager::~ProcessPlayerManager(ProcessPlayerManager *const this)
  68977. {
  68978. this->_vptr_PlayerManager = (int (**)(...))&off_80E4780;
  68979. StrTable::~StrTable(&this->m_AccTable);
  68980. PlayerManager::~PlayerManager(&this->0);
  68981. }
  68982. // 80E4780: using guessed type _DWORD (__cdecl *off_80E4780)(ProcessPlayerManager *this, UINT uTime);
  68983.  
  68984. //----- (080A7DD4) --------------------------------------------------------
  68985. void __cdecl ProcessPlayerManager::~ProcessPlayerManager(ProcessPlayerManager *const this)
  68986. {
  68987. this->_vptr_PlayerManager = (int (**)(...))&off_80E4780;
  68988. StrTable::~StrTable(&this->m_AccTable);
  68989. PlayerManager::~PlayerManager(&this->0);
  68990. }
  68991. // 80E4780: using guessed type _DWORD (__cdecl *off_80E4780)(ProcessPlayerManager *this, UINT uTime);
  68992.  
  68993. //----- (080A7E18) --------------------------------------------------------
  68994. #error "80A7F1E: positive sp value has been found (funcsize=71)"
  68995.  
  68996. //----- (080A7FE4) --------------------------------------------------------
  68997. BOOL __cdecl ProcessPlayerManager::DelPlayerSocket(ProcessPlayerManager *const this, SOCKET fd)
  68998. {
  68999. SOCKET v2; // ecx
  69000. BOOL result; // eax
  69001. SOCKET v4; // ebx
  69002. int v5; // ecx
  69003. unsigned int v6; // edx
  69004. INT v7; // eax
  69005. PlayerID_t v8; // ax
  69006. LoginPlayer *v9; // eax
  69007. SOCKET v10; // eax
  69008. PlayerID_t v11; // ax
  69009. LoginPlayer *v12; // eax
  69010. SOCKET v13; // eax
  69011. UINT i_0; // [esp+4h] [ebp-24h]
  69012. UINT nPlayerCount_0; // [esp+8h] [ebp-20h]
  69013. SOCKET s_0; // [esp+Ch] [ebp-1Ch]
  69014. UINT i; // [esp+10h] [ebp-18h]
  69015. UINT nPlayerCount; // [esp+14h] [ebp-14h]
  69016. SOCKET s; // [esp+18h] [ebp-10h]
  69017.  
  69018. v2 = this->m_MinFD;
  69019. result = 0;
  69020. if ( v2 == -1 )
  69021. return result;
  69022. v4 = this->m_MaxFD;
  69023. if ( v4 == -1 )
  69024. return result;
  69025. if ( fd == -1 )
  69026. return result;
  69027. result = 0;
  69028. if ( !_bittest((const signed __int32 *)this->m_ReadFDs + ((unsigned int)fd >> 5), fd & 0x1F) )
  69029. return result;
  69030. if ( v2 == fd )
  69031. {
  69032. i = 0;
  69033. s = this->m_MaxFD;
  69034. nPlayerCount = this->m_nPlayers;
  69035. if ( nPlayerCount > 0 )
  69036. {
  69037. do
  69038. {
  69039. v8 = this->m_pPlayers[i];
  69040. if ( v8 != -1 )
  69041. {
  69042. if ( v8 > 3071 || v8 < 0 || (v9 = &g_pPlayerPool->m_pPlayer[v8]) == 0 )
  69043. __assert__(
  69044. "./Process/ProcessPlayerManager.cpp",
  69045. 0x1FEu,
  69046. "BOOL ProcessPlayerManager::DelPlayerSocket(SOCKET)",
  69047. "pPlayer");
  69048. v10 = Socket::getSOCKET((int)v9->m_pSocket);
  69049. if ( v10 != fd && v10 != -1 && v10 < s )
  69050. s = v10;
  69051. }
  69052. ++i;
  69053. }
  69054. while ( i < nPlayerCount );
  69055. v2 = this->m_MinFD;
  69056. v4 = this->m_MaxFD;
  69057. }
  69058. if ( v2 != v4 )
  69059. {
  69060. this->m_MinFD = s;
  69061. goto LABEL_7;
  69062. }
  69063. LABEL_51:
  69064. this->m_MaxFD = -1;
  69065. this->m_MinFD = -1;
  69066. goto LABEL_7;
  69067. }
  69068. if ( v4 == fd )
  69069. {
  69070. i_0 = 0;
  69071. s_0 = this->m_MinFD;
  69072. nPlayerCount_0 = this->m_nPlayers;
  69073. if ( nPlayerCount_0 > 0 )
  69074. {
  69075. do
  69076. {
  69077. v11 = this->m_pPlayers[i_0];
  69078. if ( v11 != -1 )
  69079. {
  69080. if ( v11 > 3071 || v11 < 0 || (v12 = &g_pPlayerPool->m_pPlayer[v11]) == 0 )
  69081. __assert__(
  69082. "./Process/ProcessPlayerManager.cpp",
  69083. 0x222u,
  69084. "BOOL ProcessPlayerManager::DelPlayerSocket(SOCKET)",
  69085. "pPlayer");
  69086. v13 = Socket::getSOCKET((int)v12->m_pSocket);
  69087. if ( v13 != fd && v13 != -1 && v13 > s_0 )
  69088. s_0 = v13;
  69089. }
  69090. ++i_0;
  69091. }
  69092. while ( i_0 < nPlayerCount_0 );
  69093. v2 = this->m_MinFD;
  69094. v4 = this->m_MaxFD;
  69095. }
  69096. if ( v4 != v2 )
  69097. {
  69098. this->m_MaxFD = s_0;
  69099. goto LABEL_7;
  69100. }
  69101. goto LABEL_51;
  69102. }
  69103. LABEL_7:
  69104. v5 = fd & 0x1F;
  69105. v6 = (unsigned int)fd >> 5;
  69106. if ( _bittest((const signed __int32 *)this->m_ReadFDs + ((unsigned int)fd >> 5), v5) )
  69107. _bittestandreset((signed __int32 *)this->m_ReadFDs + v6, v5);
  69108. if ( _bittest(&this->m_ReadFDs[1].fds_bits[v6], v5) )
  69109. _bittestandreset(&this->m_ReadFDs[1].fds_bits[v6], v5);
  69110. if ( _bittest((const signed __int32 *)this->m_WriteFDs + v6, v5) )
  69111. _bittestandreset((signed __int32 *)this->m_WriteFDs + v6, v5);
  69112. if ( _bittest(&this->m_WriteFDs[1].fds_bits[v6], v5) )
  69113. _bittestandreset(&this->m_WriteFDs[1].fds_bits[v6], v5);
  69114. if ( _bittest((const signed __int32 *)this->m_ExceptFDs + v6, v5) )
  69115. _bittestandreset((signed __int32 *)this->m_ExceptFDs + v6, v5);
  69116. if ( _bittest(&this->m_ExceptFDs[1].fds_bits[v6], v5) )
  69117. _bittestandreset(&this->m_ExceptFDs[1].fds_bits[v6], v5);
  69118. v7 = this->m_nFDSize - 1;
  69119. this->m_nFDSize = v7;
  69120. if ( v7 < 0 )
  69121. __assert__(
  69122. "./Process/ProcessPlayerManager.cpp",
  69123. 0x245u,
  69124. "BOOL ProcessPlayerManager::DelPlayerSocket(SOCKET)",
  69125. "m_nFDSize>=0");
  69126. return 1;
  69127. }
  69128.  
  69129. //----- (080A8300) --------------------------------------------------------
  69130. BOOL __cdecl ProcessPlayerManager::AddPlayerSocket(ProcessPlayerManager *const this, SOCKET fd)
  69131. {
  69132. BOOL result; // eax
  69133. SOCKET v3; // edx
  69134. SOCKET v4; // eax
  69135. SOCKET v5; // edx
  69136. unsigned int v6; // eax
  69137. int v7; // eax
  69138.  
  69139. if ( fd == -1 )
  69140. __assert__(
  69141. "./Process/ProcessPlayerManager.cpp",
  69142. 0x1C2u,
  69143. "BOOL ProcessPlayerManager::AddPlayerSocket(SOCKET)",
  69144. "fd!=INVALID_SOCKET");
  69145. result = 0;
  69146. if ( !_bittest((const signed __int32 *)this->m_ReadFDs + ((unsigned int)fd >> 5), fd & 0x1F) )
  69147. {
  69148. v3 = this->m_MinFD;
  69149. v4 = fd;
  69150. if ( v3 != -1 )
  69151. {
  69152. v4 = this->m_MinFD;
  69153. if ( v3 > fd )
  69154. v4 = fd;
  69155. }
  69156. v5 = this->m_MaxFD;
  69157. this->m_MinFD = v4;
  69158. v6 = fd;
  69159. if ( v5 != -1 )
  69160. {
  69161. v6 = v5;
  69162. if ( v5 < fd )
  69163. v6 = fd;
  69164. }
  69165. this->m_MaxFD = v6;
  69166. if ( v6 > 0xFFF )
  69167. __assert__(
  69168. "./Process/ProcessPlayerManager.cpp",
  69169. 0x1C8u,
  69170. "BOOL ProcessPlayerManager::AddPlayerSocket(SOCKET)",
  69171. "m_MaxFD<FD_SETSIZE && m_MaxFD>=0");
  69172. v7 = fd & 0x1F;
  69173. _bittestandset((signed __int32 *)this->m_ReadFDs + ((unsigned int)fd >> 5), v7);
  69174. _bittestandset((signed __int32 *)this->m_WriteFDs + ((unsigned int)fd >> 5), v7);
  69175. _bittestandset((signed __int32 *)this->m_ExceptFDs + ((unsigned int)fd >> 5), v7);
  69176. result = 1;
  69177. ++this->m_nFDSize;
  69178. }
  69179. return result;
  69180. }
  69181.  
  69182. //----- (080A8430) --------------------------------------------------------
  69183. Player *__cdecl ProcessPlayerManager::FindAccName(ProcessPlayerManager *const this, const CHAR *szAccount)
  69184. {
  69185. return (Player *)StrTable::Get(&this->m_AccTable, szAccount);
  69186. }
  69187.  
  69188. //----- (080A8498) --------------------------------------------------------
  69189. BOOL __cdecl ProcessPlayerManager::AddPlayer(ProcessPlayerManager *const this, Player *pPlayer)
  69190. {
  69191. SOCKET v3; // eax
  69192. const CHAR *v4; // eax
  69193. const CHAR *v5; // eax
  69194. const CHAR *v6; // [esp-Ch] [ebp-14h]
  69195. const CHAR *v7; // [esp-8h] [ebp-10h]
  69196.  
  69197. if ( this->m_nFDSize > 1455 )
  69198. {
  69199. v6 = "ERROR:ProcessPlayerManager::AddPlayer...m_nFDSize>=MAX_PLAYER";
  69200. LABEL_3:
  69201. CacheLog(0, v6, v7);
  69202. return 0;
  69203. }
  69204. if ( !PlayerManager::AddPlayer(&this->0, (Player_AtLogin *)pPlayer, 0x400u) )
  69205. {
  69206. v6 = "ERROR:ProcessPlayerManager::AddPlayer...FALSE==PlayerManager::AddPlayer";
  69207. goto LABEL_3;
  69208. }
  69209. v3 = Socket::getSOCKET((int)pPlayer->m_pSocket);
  69210. ProcessPlayerManager::AddPlayerSocket(this, v3);
  69211. v4 = LoginPlayer::GetAccount((LoginPlayer *const )pPlayer);
  69212. if ( ProcessPlayerManager::FindAccName(this, v4) )
  69213. {
  69214. v7 = LoginPlayer::GetAccount((LoginPlayer *const )pPlayer);
  69215. v6 = "ERROR:ProcessPlayerManager::AddPlayer...acc=%s already in m_AccTable";
  69216. goto LABEL_3;
  69217. }
  69218. v5 = LoginPlayer::GetAccount((LoginPlayer *const )pPlayer);
  69219. StrTable::Add(&this->m_AccTable, v5, &this->m_AccTable);
  69220. return 1;
  69221. }
  69222.  
  69223. //----- (080A85A0) --------------------------------------------------------
  69224. BOOL __cdecl ProcessPlayerManager::DelPlayer(ProcessPlayerManager *const this, PlayerID_t pid)
  69225. {
  69226. if ( pid == -1 )
  69227. __assert__(
  69228. "./Process/ProcessPlayerManager.cpp",
  69229. 0x1DEu,
  69230. "BOOL ProcessPlayerManager::DelPlayer(PlayerID_t)",
  69231. "pid!=INVALID_ID");
  69232. PlayerManager::RemovePlayer(&this->0, pid);
  69233. return 1;
  69234. }
  69235.  
  69236. //----- (080A8630) --------------------------------------------------------
  69237. BOOL __cdecl ProcessPlayerManager::RemovePlayer(ProcessPlayerManager *const this, Player *pPlayer)
  69238. {
  69239. SOCKET v2; // eax
  69240. SOCKET v3; // ebx
  69241. Socket *v4; // eax
  69242. const CHAR *v5; // eax
  69243. UINT v7; // eax
  69244. const CHAR *pAccountName; // [esp+4h] [ebp-14h]
  69245. BOOL ret; // [esp+8h] [ebp-10h]
  69246.  
  69247. if ( !pPlayer )
  69248. __assert__(
  69249. "./Process/ProcessPlayerManager.cpp",
  69250. 0x155u,
  69251. "BOOL ProcessPlayerManager::RemovePlayer(Player*)",
  69252. "pPlayer");
  69253. pAccountName = LoginPlayer::GetAccount((LoginPlayer *const )pPlayer);
  69254. v2 = Socket::getSOCKET((int)pPlayer->m_pSocket);
  69255. v3 = v2;
  69256. if ( v2 != -1 )
  69257. {
  69258. ProcessPlayerManager::DelPlayerSocket(this, v2);
  69259. (*((void (__cdecl **)(Player *))pPlayer->_vptr_Player + 4))(pPlayer);
  69260. CacheLog(0, "ProcessPlayerManager::RemovePlayer Disconnect(SOCKET=%d)...OK", v3);
  69261. }
  69262. v4 = pPlayer[2].m_pSocket;
  69263. if ( v4 == (Socket *)308 || v4 == (Socket *)309 || v4 == (Socket *)311 || v4 == (Socket *)312 || v4 == (Socket *)310 )
  69264. {
  69265. v7 = this->m_NormalPlayers;
  69266. if ( v7 )
  69267. this->m_NormalPlayers = v7 - 1;
  69268. }
  69269. ret = ProcessPlayerManager::DelPlayer(this, (PlayerID_t)pPlayer[1].m_pSocketInputStream);
  69270. if ( !ret )
  69271. __assert__("./Process/ProcessPlayerManager.cpp", 0x17Bu, "BOOL ProcessPlayerManager::RemovePlayer(Player*)", "ret");
  69272. v5 = LoginPlayer::GetAccount((LoginPlayer *const )pPlayer);
  69273. if ( StrTable::Get(&this->m_AccTable, v5) == pPlayer )
  69274. StrTable::Remove(&this->m_AccTable, pAccountName);
  69275. LoginPlayer::FreeOwn((LoginPlayer *const )pPlayer);
  69276. CacheLog(0, "ProcessPlayerManager::Real RemovePlayer(AccountName =%s)...OK", pAccountName);
  69277. return ret;
  69278. }
  69279. // 8049B18: using guessed type int __stdcall __cxa_end_catch(_DWORD);
  69280.  
  69281. //----- (080A8808) --------------------------------------------------------
  69282. BOOL __cdecl ProcessPlayerManager::ProcessCommands(ProcessPlayerManager *const this)
  69283. {
  69284. int v1; // edi
  69285. PlayerID_t v2; // ax
  69286. bool v3; // cf
  69287. BOOL result; // eax
  69288. Socket *v5; // [esp+4h] [ebp-14h]
  69289. UINT nPlayerCount; // [esp+8h] [ebp-10h]
  69290.  
  69291. if ( this->m_MinFD != -1 || (result = 1, this->m_MaxFD != -1) )
  69292. {
  69293. v1 = 0;
  69294. nPlayerCount = this->m_nPlayers;
  69295. if ( this->m_nPlayers <= 0 )
  69296. return 1;
  69297. while ( 1 )
  69298. {
  69299. v2 = this->m_pPlayers[v1];
  69300. if ( v2 != -1 )
  69301. {
  69302. if ( v2 > 3071 || v2 < 0 || (v5 = (Socket *)&g_pPlayerPool->m_pPlayer[v2]) == 0 )
  69303. __assert__(
  69304. "./Process/ProcessPlayerManager.cpp",
  69305. 0x129u,
  69306. "BOOL ProcessPlayerManager::ProcessCommands()",
  69307. "pPlayer");
  69308. if ( !*(_DWORD *)&v5->m_SockAddr.sin_zero[4] )
  69309. {
  69310. if ( Socket::getSOCKET(v5->m_SocketID) == -1 )
  69311. __assert__(
  69312. "./Process/ProcessPlayerManager.cpp",
  69313. 0x12Fu,
  69314. "BOOL ProcessPlayerManager::ProcessCommands()",
  69315. "s!=INVALID_SOCKET");
  69316. if ( Socket::isSockError(v5->m_SocketID) )
  69317. {
  69318. ProcessPlayerManager::RemovePlayer(this, (Player *)v5);
  69319. LABEL_16:
  69320. v3 = ++v1 < nPlayerCount;
  69321. goto LABEL_7;
  69322. }
  69323. if ( !(*((int (__cdecl **)(Socket *, _DWORD))v5->_vptr_Socket + 21))(v5, 0) )
  69324. {
  69325. ProcessPlayerManager::RemovePlayer(this, (Player *)v5);
  69326. goto LABEL_16;
  69327. }
  69328. }
  69329. }
  69330. v3 = ++v1 < nPlayerCount;
  69331. LABEL_7:
  69332. if ( !v3 )
  69333. return 1;
  69334. }
  69335. }
  69336. return result;
  69337. }
  69338. // 8049B18: using guessed type int __stdcall __cxa_end_catch(_DWORD);
  69339.  
  69340. //----- (080A89DC) --------------------------------------------------------
  69341. BOOL __cdecl ProcessPlayerManager::ProcessExceptions(ProcessPlayerManager *const this)
  69342. {
  69343. int v1; // ebx
  69344. PlayerID_t v2; // ax
  69345. bool v3; // cf
  69346. BOOL result; // eax
  69347. unsigned int v5; // eax
  69348. Socket *v6; // [esp+4h] [ebp-14h]
  69349. UINT nPlayerCount; // [esp+8h] [ebp-10h]
  69350.  
  69351. if ( this->m_MinFD != -1 || (result = 1, this->m_MaxFD != -1) )
  69352. {
  69353. v1 = 0;
  69354. nPlayerCount = this->m_nPlayers;
  69355. if ( this->m_nPlayers > 0 )
  69356. {
  69357. do
  69358. {
  69359. v2 = this->m_pPlayers[v1];
  69360. if ( v2 == -1 )
  69361. goto LABEL_20;
  69362. if ( v2 > 3071 || v2 < 0 || (v6 = (Socket *)&g_pPlayerPool->m_pPlayer[v2]) == 0 )
  69363. __assert__(
  69364. "./Process/ProcessPlayerManager.cpp",
  69365. 0xFFu,
  69366. "BOOL ProcessPlayerManager::ProcessExceptions()",
  69367. "pPlayer");
  69368. if ( *(_DWORD *)&v6->m_SockAddr.sin_zero[4] )
  69369. goto LABEL_20;
  69370. v5 = Socket::getSOCKET(v6->m_SocketID);
  69371. if ( v5 == -1 )
  69372. __assert__(
  69373. "./Process/ProcessPlayerManager.cpp",
  69374. 0x105u,
  69375. "BOOL ProcessPlayerManager::ProcessExceptions()",
  69376. "s!=INVALID_SOCKET");
  69377. if ( !_bittest(&this->m_ExceptFDs[1].fds_bits[v5 >> 5], v5 & 0x1F) )
  69378. {
  69379. LABEL_20:
  69380. v3 = ++v1 < nPlayerCount;
  69381. }
  69382. else
  69383. {
  69384. ProcessPlayerManager::RemovePlayer(this, (Player *)v6);
  69385. v3 = ++v1 < nPlayerCount;
  69386. }
  69387. }
  69388. while ( v3 );
  69389. }
  69390. result = 1;
  69391. }
  69392. return result;
  69393. }
  69394.  
  69395. //----- (080A8B54) --------------------------------------------------------
  69396. #error "80A8CCD: positive sp value has been found (funcsize=103)"
  69397.  
  69398. //----- (080A8D48) --------------------------------------------------------
  69399. #error "80A8EE1: positive sp value has been found (funcsize=111)"
  69400.  
  69401. //----- (080A8F94) --------------------------------------------------------
  69402. BOOL __cdecl ProcessPlayerManager::HeartBeat(ProcessPlayerManager *const this, UINT uTime)
  69403. {
  69404. UINT v2; // esi
  69405. PlayerID_t v3; // ax
  69406. LoginPlayer *v4; // ebx
  69407. UINT nPlayerCount; // [esp+8h] [ebp-10h]
  69408.  
  69409. v2 = 0;
  69410. for ( nPlayerCount = this->m_nPlayers; v2 < nPlayerCount; ++v2 )
  69411. {
  69412. v3 = this->m_pPlayers[v2];
  69413. if ( v3 != -1 )
  69414. {
  69415. if ( v3 > 3071 || v3 < 0 || (v4 = &g_pPlayerPool->m_pPlayer[v3]) == 0 )
  69416. __assert__(
  69417. "./Process/ProcessPlayerManager.cpp",
  69418. 0x25Eu,
  69419. "virtual BOOL ProcessPlayerManager::HeartBeat(UINT)",
  69420. "FALSE");
  69421. if ( !(*((int (__cdecl **)(LoginPlayer *, UINT))v4->_vptr_Player + 22))(v4, uTime)
  69422. && !ProcessPlayerManager::RemovePlayer(this, &v4->0) )
  69423. {
  69424. __assert__(
  69425. "./Process/ProcessPlayerManager.cpp",
  69426. 0x265u,
  69427. "virtual BOOL ProcessPlayerManager::HeartBeat(UINT)",
  69428. "ret");
  69429. }
  69430. }
  69431. }
  69432. return 1;
  69433. }
  69434.  
  69435. //----- (080A90B4) --------------------------------------------------------
  69436. void __cdecl ProcessPlayerManager::RemoveAllPlayer(ProcessPlayerManager *const this)
  69437. {
  69438. UINT v1; // edi
  69439. UINT v2; // esi
  69440. PlayerID_t v3; // ax
  69441. LoginPlayer *v4; // eax
  69442.  
  69443. v1 = this->m_nPlayers;
  69444. v2 = 0;
  69445. while ( v2 < v1 )
  69446. {
  69447. v3 = this->m_pPlayers[0];
  69448. if ( v3 == -1 )
  69449. break;
  69450. if ( v3 <= 3071 && v3 >= 0 )
  69451. {
  69452. v4 = &g_pPlayerPool->m_pPlayer[v3];
  69453. if ( v4 )
  69454. continue;
  69455. }
  69456. __assert__("./Process/ProcessPlayerManager.cpp", 0x27Eu, "void ProcessPlayerManager::RemoveAllPlayer()", "FALSE");
  69457. ProcessPlayerManager::RemovePlayer(this, &v4->0);
  69458. ++v2;
  69459. }
  69460. }
  69461.  
  69462. //----- (080A9188) --------------------------------------------------------
  69463. void __cdecl _tcf_0_214(void *a1)
  69464. {
  69465. std::ios_base::Init::~Init(&std::__ioinit);
  69466. }
  69467.  
  69468. //----- (080A9198) --------------------------------------------------------
  69469. void `global constructor keyed to'g_pProcessPlayerManager()
  69470. {
  69471. std::ios_base::Init::Init(&std::__ioinit);
  69472. __cxa_atexit(_tcf_0_214, 0, &_dso_handle);
  69473. }
  69474. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  69475.  
  69476. //----- (080A91C4) --------------------------------------------------------
  69477. const char *__cdecl DBC::DBCFile::_GetLineFromMemory(char *pStringBuf, int nBufSize, const char *pMemory, const char *pDeadEnd)
  69478. {
  69479. const char *result; // eax
  69480. char *v5; // ecx
  69481. char v6; // dl
  69482. int v7; // ebx
  69483. char v8; // dl
  69484. char v9; // dl
  69485.  
  69486. result = pMemory;
  69487. v5 = pStringBuf;
  69488. if ( pMemory >= pDeadEnd )
  69489. return 0;
  69490. v6 = *pMemory;
  69491. if ( !*pMemory )
  69492. return 0;
  69493. if ( nBufSize > 1 && v6 != 13 && v6 != 10 )
  69494. {
  69495. v7 = 1;
  69496. do
  69497. {
  69498. ++result;
  69499. ++v7;
  69500. *v5++ = v6;
  69501. if ( result >= pDeadEnd )
  69502. break;
  69503. if ( v7 >= nBufSize )
  69504. break;
  69505. v6 = *result;
  69506. if ( !*result )
  69507. break;
  69508. }
  69509. while ( v6 != 13 && v6 != 10 );
  69510. }
  69511. *v5 = 0;
  69512. if ( result < pDeadEnd )
  69513. {
  69514. v8 = *result;
  69515. if ( *result )
  69516. {
  69517. if ( v8 == 13 || v8 == 10 )
  69518. {
  69519. do
  69520. {
  69521. if ( ++result >= pDeadEnd )
  69522. break;
  69523. v9 = *result;
  69524. if ( !*result )
  69525. break;
  69526. }
  69527. while ( v9 == 13 || v9 == 10 );
  69528. }
  69529. }
  69530. }
  69531. return result;
  69532. }
  69533.  
  69534. //----- (080A9258) --------------------------------------------------------
  69535. const DBC::DBCFile::FIELD *__cdecl DBC::DBCFile::Search_First_Column_Equ(const DBC::DBCFile *const this, int nColumnNum, const DBC::DBCFile::FIELD *const value)
  69536. {
  69537. int v3; // edx
  69538. DBC::DBCFile::FIELD_TYPE v4; // edi
  69539. int v5; // esi
  69540. bool v6; // al
  69541. const DBC::DBCFile::FIELD *v7; // eax
  69542.  
  69543. if ( nColumnNum >= 0 )
  69544. {
  69545. v3 = this->m_nFieldsNum;
  69546. if ( v3 > nColumnNum )
  69547. {
  69548. v4 = this->m_theType._M_impl._M_start[nColumnNum];
  69549. v5 = 0;
  69550. if ( this->m_nRecordsNum > 0 )
  69551. {
  69552. while ( 1 )
  69553. {
  69554. v7 = &this->m_vDataBuf._M_impl._M_start[v5 * v3 + nColumnNum];
  69555. if ( v4 )
  69556. {
  69557. if ( v4 == 1 )
  69558. v6 = DBC::DBCFile::_FieldEqu<(DBC::DBCFile::FIELD_TYPE)1>(v7, value);
  69559. else
  69560. v6 = DBC::DBCFile::_FieldEqu<(DBC::DBCFile::FIELD_TYPE)2>(v7, value);
  69561. if ( v6 )
  69562. return &this->m_vDataBuf._M_impl._M_start[v5 * this->m_nFieldsNum];
  69563. }
  69564. else if ( (unsigned __int8)DBC::DBCFile::_FieldEqu<(DBC::DBCFile::FIELD_TYPE)0>(v7, value) )
  69565. {
  69566. return &this->m_vDataBuf._M_impl._M_start[v5 * this->m_nFieldsNum];
  69567. }
  69568. if ( this->m_nRecordsNum <= ++v5 )
  69569. return 0;
  69570. v3 = this->m_nFieldsNum;
  69571. }
  69572. }
  69573. }
  69574. }
  69575. return 0;
  69576. }
  69577.  
  69578. //----- (080A9308) --------------------------------------------------------
  69579. const DBC::DBCFile::FIELD *__cdecl DBC::DBCFile::Search_Posistion(const DBC::DBCFile *const this, int nRecordLine, int nColumNum)
  69580. {
  69581. int v3; // ebx
  69582. DBC::DBCFile::FIELD *v4; // edx
  69583. int v5; // eax
  69584. const DBC::DBCFile::FIELD *v6; // edx
  69585. char szTemp[260]; // [esp+0h] [ebp-118h]
  69586.  
  69587. v3 = nColumNum + nRecordLine * this->m_nFieldsNum;
  69588. if ( v3 < 0
  69589. || (v4 = this->m_vDataBuf._M_impl._M_start,
  69590. v5 = (_DWORD)((char *)this->m_vDataBuf._M_impl._M_finish - (char *)v4) >> 2,
  69591. v6 = &v4[v3],
  69592. v5 <= nColumNum) )
  69593. {
  69594. snprintf(szTemp, 0x104u, "DBC:Invalid search request[rec=%d, col=%d]", nRecordLine, nColumNum);
  69595. __assertex__(
  69596. "libDBC.cpp",
  69597. 0x222u,
  69598. "virtual const DBC::DBCFile::FIELD* DBC::DBCFile::Search_Posistion(int, int) const",
  69599. "FALSE",
  69600. szTemp);
  69601. }
  69602. return v6;
  69603. }
  69604.  
  69605. //----- (080A9380) --------------------------------------------------------
  69606. const DBC::DBCFile::FIELD *__cdecl DBC::DBCFile::Search_Index_EQU(const DBC::DBCFile *const this, int iIndex)
  69607. {
  69608. __gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> > *i; // edx
  69609. const DBC::DBCFile::FIELD *result; // eax
  69610.  
  69611. for ( i = this->m_hashIndex._M_ht._M_buckets._M_impl._M_start[iIndex
  69612. % (unsigned int)((_DWORD)((char *)this->m_hashIndex._M_ht._M_buckets._M_impl._M_finish
  69613. - (char *)this->m_hashIndex._M_ht._M_buckets._M_impl._M_start) >> 2)];
  69614. i && i->_M_val.first != iIndex;
  69615. i = i->_M_next )
  69616. {
  69617. ;
  69618. }
  69619. result = 0;
  69620. if ( i )
  69621. result = i->_M_val.second;
  69622. return result;
  69623. }
  69624.  
  69625. //----- (080A93E8) --------------------------------------------------------
  69626. void __cdecl DBC::DBCFile::~DBCFile(DBC::DBCFile *const this)
  69627. {
  69628. char *v1; // eax
  69629. IPRegionTable *const *v2; // ecx
  69630. DBC::DBCFile::FIELD *i; // eax
  69631. IPRegionTable *const *v4; // ecx
  69632. DBC::DBCFile::FIELD_TYPE *j; // eax
  69633.  
  69634. v1 = this->m_pStringBuf;
  69635. this->_vptr_DBCFile = (int (**)(...))&off_80E4DB0;
  69636. if ( v1 )
  69637. operator delete[](v1);
  69638. this->m_pStringBuf = 0;
  69639. __gnu_cxx::hashtable<std::pair<int const,DBC::DBCFile::FIELD *>,int,__gnu_cxx::hash<int>,std::_Select1st<std::pair<int const,DBC::DBCFile::FIELD *>>,std::equal_to<int>,std::allocator<DBC::DBCFile::FIELD *>>::clear(&this->m_hashIndex._M_ht);
  69640. if ( this->m_hashIndex._M_ht._M_buckets._M_impl._M_start )
  69641. operator delete((IPRegionTable *const )this->m_hashIndex._M_ht._M_buckets._M_impl._M_start);
  69642. v2 = (IPRegionTable *const *)&this->m_vDataBuf;
  69643. for ( i = this->m_vDataBuf._M_impl._M_start; i != this->m_vDataBuf._M_impl._M_finish; ++i )
  69644. ;
  69645. if ( *v2 )
  69646. operator delete(*v2);
  69647. v4 = (IPRegionTable *const *)&this->m_theType;
  69648. for ( j = this->m_theType._M_impl._M_start; j != this->m_theType._M_impl._M_finish; ++j )
  69649. ;
  69650. if ( *v4 )
  69651. operator delete(*v4);
  69652. operator delete((IPRegionTable *const )this);
  69653. }
  69654. // 80E4DB0: using guessed type _DWORD (__cdecl *off_80E4DB0)(DBC::DBCFile *this, int iIndex);
  69655.  
  69656. //----- (080A9494) --------------------------------------------------------
  69657. void __cdecl DBC::DBCFile::~DBCFile(DBC::DBCFile *const this)
  69658. {
  69659. char *v1; // eax
  69660. IPRegionTable *const *v2; // ecx
  69661. DBC::DBCFile::FIELD *i; // eax
  69662. IPRegionTable *const *v4; // ecx
  69663. DBC::DBCFile::FIELD_TYPE *j; // eax
  69664.  
  69665. v1 = this->m_pStringBuf;
  69666. this->_vptr_DBCFile = (int (**)(...))&off_80E4DB0;
  69667. if ( v1 )
  69668. operator delete[](v1);
  69669. this->m_pStringBuf = 0;
  69670. __gnu_cxx::hashtable<std::pair<int const,DBC::DBCFile::FIELD *>,int,__gnu_cxx::hash<int>,std::_Select1st<std::pair<int const,DBC::DBCFile::FIELD *>>,std::equal_to<int>,std::allocator<DBC::DBCFile::FIELD *>>::clear(&this->m_hashIndex._M_ht);
  69671. if ( this->m_hashIndex._M_ht._M_buckets._M_impl._M_start )
  69672. operator delete((IPRegionTable *const )this->m_hashIndex._M_ht._M_buckets._M_impl._M_start);
  69673. v2 = (IPRegionTable *const *)&this->m_vDataBuf;
  69674. for ( i = this->m_vDataBuf._M_impl._M_start; i != this->m_vDataBuf._M_impl._M_finish; ++i )
  69675. ;
  69676. if ( *v2 )
  69677. operator delete(*v2);
  69678. v4 = (IPRegionTable *const *)&this->m_theType;
  69679. for ( j = this->m_theType._M_impl._M_start; j != this->m_theType._M_impl._M_finish; ++j )
  69680. ;
  69681. if ( *v4 )
  69682. operator delete(*v4);
  69683. }
  69684. // 80E4DB0: using guessed type _DWORD (__cdecl *off_80E4DB0)(DBC::DBCFile *this, int iIndex);
  69685.  
  69686. //----- (080A9534) --------------------------------------------------------
  69687. void __cdecl DBC::DBCFile::~DBCFile(DBC::DBCFile *const this)
  69688. {
  69689. char *v1; // eax
  69690. IPRegionTable *const *v2; // ecx
  69691. DBC::DBCFile::FIELD *i; // eax
  69692. IPRegionTable *const *v4; // ecx
  69693. DBC::DBCFile::FIELD_TYPE *j; // eax
  69694.  
  69695. v1 = this->m_pStringBuf;
  69696. this->_vptr_DBCFile = (int (**)(...))&off_80E4DB0;
  69697. if ( v1 )
  69698. operator delete[](v1);
  69699. this->m_pStringBuf = 0;
  69700. __gnu_cxx::hashtable<std::pair<int const,DBC::DBCFile::FIELD *>,int,__gnu_cxx::hash<int>,std::_Select1st<std::pair<int const,DBC::DBCFile::FIELD *>>,std::equal_to<int>,std::allocator<DBC::DBCFile::FIELD *>>::clear(&this->m_hashIndex._M_ht);
  69701. if ( this->m_hashIndex._M_ht._M_buckets._M_impl._M_start )
  69702. operator delete((IPRegionTable *const )this->m_hashIndex._M_ht._M_buckets._M_impl._M_start);
  69703. v2 = (IPRegionTable *const *)&this->m_vDataBuf;
  69704. for ( i = this->m_vDataBuf._M_impl._M_start; i != this->m_vDataBuf._M_impl._M_finish; ++i )
  69705. ;
  69706. if ( *v2 )
  69707. operator delete(*v2);
  69708. v4 = (IPRegionTable *const *)&this->m_theType;
  69709. for ( j = this->m_theType._M_impl._M_start; j != this->m_theType._M_impl._M_finish; ++j )
  69710. ;
  69711. if ( *v4 )
  69712. operator delete(*v4);
  69713. }
  69714. // 80E4DB0: using guessed type _DWORD (__cdecl *off_80E4DB0)(DBC::DBCFile *this, int iIndex);
  69715.  
  69716. //----- (080A95D4) --------------------------------------------------------
  69717. void __cdecl DBC::DBCFile::CreateIndex(DBC::DBCFile *const this, int nColum, const char *szFileName)
  69718. {
  69719. DBC::DBCFile::FIELD *v3; // esi
  69720. __gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> > *j; // eax
  69721. bool v5; // zf
  69722. bool v6; // sf
  69723. unsigned __int8 v7; // of
  69724. int v8; // ST14_4
  69725. int i; // [esp+20h] [ebp-188h]
  69726. std::pair<const int,DBC::DBCFile::FIELD*> __obj; // [esp+38h] [ebp-170h]
  69727. int v11; // [esp+40h] [ebp-168h]
  69728. __gnu_cxx::hash_map<int,DBC::DBCFile::FIELD*,__gnu_cxx::hash<int>,std::equal_to<int>,std::allocator<DBC::DBCFile::FIELD*> > *v12; // [esp+44h] [ebp-164h]
  69729. __gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> > *v13; // [esp+48h] [ebp-160h]
  69730. __gnu_cxx::hash_map<int,DBC::DBCFile::FIELD*,__gnu_cxx::hash<int>,std::equal_to<int>,std::allocator<DBC::DBCFile::FIELD*> > *v14; // [esp+4Ch] [ebp-15Ch]
  69731. std::pair<__gnu_cxx::_Hashtable_iterator<std::pair<const int,DBC::DBCFile::FIELD*>,int,__gnu_cxx::hash<int>,std::_Select1st<std::pair<const int,DBC::DBCFile::FIELD*> >,std::equal_to<int>,std::allocator<DBC::DBCFile::FIELD*> >,bool> v15; // [esp+50h] [ebp-158h]
  69732. __gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> > *v16; // [esp+60h] [ebp-148h]
  69733. __gnu_cxx::hashtable<std::pair<const int,DBC::DBCFile::FIELD*>,int,__gnu_cxx::hash<int>,std::_Select1st<std::pair<const int,DBC::DBCFile::FIELD*> >,std::equal_to<int>,std::allocator<DBC::DBCFile::FIELD*> > *v17; // [esp+64h] [ebp-144h]
  69734. bool v18; // [esp+68h] [ebp-140h]
  69735. __gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> > *v19; // [esp+70h] [ebp-138h]
  69736. __gnu_cxx::hashtable<std::pair<const int,DBC::DBCFile::FIELD*>,int,__gnu_cxx::hash<int>,std::_Select1st<std::pair<const int,DBC::DBCFile::FIELD*> >,std::equal_to<int>,std::allocator<DBC::DBCFile::FIELD*> > *v20; // [esp+74h] [ebp-134h]
  69737. bool v21; // [esp+78h] [ebp-130h]
  69738. char szTemp[260]; // [esp+80h] [ebp-128h]
  69739.  
  69740. if ( nColum >= 0 && this->m_nFieldsNum > nColum && this->m_nIndexColum != nColum )
  69741. {
  69742. __gnu_cxx::hashtable<std::pair<int const,DBC::DBCFile::FIELD *>,int,__gnu_cxx::hash<int>,std::_Select1st<std::pair<int const,DBC::DBCFile::FIELD *>>,std::equal_to<int>,std::allocator<DBC::DBCFile::FIELD *>>::clear(&this->m_hashIndex._M_ht);
  69743. i = 0;
  69744. if ( this->m_nRecordsNum > 0 )
  69745. {
  69746. do
  69747. {
  69748. v3 = &this->m_vDataBuf._M_impl._M_start[this->m_nFieldsNum * i];
  69749. for ( j = this->m_hashIndex._M_ht._M_buckets._M_impl._M_start[v3->iValue
  69750. % (unsigned int)((_DWORD)((char *)this->m_hashIndex._M_ht._M_buckets._M_impl._M_finish
  69751. - (char *)this->m_hashIndex._M_ht._M_buckets._M_impl._M_start) >> 2)];
  69752. j;
  69753. j = j->_M_next )
  69754. {
  69755. if ( j->_M_val.first == v3->iValue )
  69756. break;
  69757. }
  69758. v11 = 0;
  69759. v13 = j;
  69760. v14 = &this->m_hashIndex;
  69761. v12 = &this->m_hashIndex;
  69762. if ( j )
  69763. {
  69764. v8 = v3->iValue;
  69765. snprintf(szTemp, 0x104u, "[%s]Multi index at line %d(SAME:value=%d)", szFileName, i + 1);
  69766. __assertex__("libDBC.cpp", 0x207u, "void DBC::DBCFile::CreateIndex(int, const char*)", "FALSE", szTemp);
  69767. }
  69768. __obj.first = v3->iValue;
  69769. __obj.second = v3;
  69770. __gnu_cxx::hashtable<std::pair<int const,DBC::DBCFile::FIELD *>,int,__gnu_cxx::hash<int>,std::_Select1st<std::pair<int const,DBC::DBCFile::FIELD *>>,std::equal_to<int>,std::allocator<DBC::DBCFile::FIELD *>>::resize(
  69771. &this->m_hashIndex._M_ht,
  69772. this->m_hashIndex._M_ht._M_num_elements + 1);
  69773. __gnu_cxx::hashtable<std::pair<int const,DBC::DBCFile::FIELD *>,int,__gnu_cxx::hash<int>,std::_Select1st<std::pair<int const,DBC::DBCFile::FIELD *>>,std::equal_to<int>,std::allocator<DBC::DBCFile::FIELD *>>::insert_unique_noresize(
  69774. &v15,
  69775. &this->m_hashIndex._M_ht,
  69776. &__obj);
  69777. ++i;
  69778. v17 = v15.first._M_ht;
  69779. v18 = v15.second;
  69780. v20 = v15.first._M_ht;
  69781. v21 = v15.second;
  69782. v7 = __OFSUB__(this->m_nRecordsNum, i);
  69783. v5 = this->m_nRecordsNum == i;
  69784. v6 = this->m_nRecordsNum - i < 0;
  69785. v16 = v15.first._M_cur;
  69786. v19 = v15.first._M_cur;
  69787. }
  69788. while ( !((unsigned __int8)(v6 ^ v7) | v5) );
  69789. }
  69790. }
  69791. }
  69792.  
  69793. //----- (080A97C4) --------------------------------------------------------
  69794. int __cdecl DBC::DBCFile::_ConvertStringToVector(const char *strStringSource, std::vector<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > > *const vRet, const char *szKey, bool bOneOfKey, bool bIgnoreEmpty)
  69795. {
  69796. int v5; // ecx
  69797. bool v6; // dl
  69798. char *v7; // edi
  69799. int result; // eax
  69800. unsigned int v9; // eax
  69801. unsigned int v10; // esi
  69802. char *v11; // eax
  69803. unsigned int v12; // eax
  69804. signed int v13; // ecx
  69805. const char *v14; // edi
  69806. bool v15; // zf
  69807. int v16; // edi
  69808. string *v17; // eax
  69809. char *v18; // ebx
  69810. int v19; // esi
  69811. int v20; // ebx
  69812. unsigned int nLeft; // [esp+8h] [ebp-70h]
  69813. int v22; // [esp+10h] [ebp-68h]
  69814. string strItem; // [esp+20h] [ebp-58h]
  69815. char v24; // [esp+30h] [ebp-48h]
  69816. string strSrc; // [esp+40h] [ebp-38h]
  69817. __gnu_cxx::__normal_iterator<std::basic_string<char,std::char_traits<char>,std::allocator<char> >*,std::vector<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > > > v26; // [esp+5Ch] [ebp-1Ch]
  69818.  
  69819. std::vector<std::string,std::allocator<std::string>>::erase(
  69820. &v26,
  69821. vRet,
  69822. (__gnu_cxx::__normal_iterator<std::basic_string<char,std::char_traits<char>,std::allocator<char> >*,std::vector<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > > >)vRet->_M_impl._M_start,
  69823. (__gnu_cxx::__normal_iterator<std::basic_string<char,std::char_traits<char>,std::allocator<char> >*,std::vector<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > > >)vRet->_M_impl._M_finish);
  69824. std::string::string(&strSrc, strStringSource, &v24);
  69825. v5 = *((_DWORD *)strSrc._M_dataplus._M_p - 3);
  69826. v6 = v5 == 0;
  69827. v7 = strSrc._M_dataplus._M_p - 12;
  69828. if ( v5 )
  69829. {
  69830. nLeft = 0;
  69831. if ( bOneOfKey )
  69832. {
  69833. v13 = -1;
  69834. v14 = szKey;
  69835. do
  69836. {
  69837. if ( !v13 )
  69838. break;
  69839. v15 = *v14++ == v6;
  69840. --v13;
  69841. }
  69842. while ( !v15 );
  69843. v9 = std::string::find_first_of((std::string *)&strSrc, szKey, 0, ~v13 - 1);
  69844. }
  69845. else
  69846. {
  69847. v9 = std::string::find((std::string *)&strSrc, szKey, 0, strlen(szKey));
  69848. }
  69849. v10 = v9;
  69850. if ( v9 == -1 )
  69851. {
  69852. v11 = strSrc._M_dataplus._M_p;
  69853. v10 = *((_DWORD *)strSrc._M_dataplus._M_p - 3);
  69854. }
  69855. else
  69856. {
  69857. v11 = strSrc._M_dataplus._M_p;
  69858. }
  69859. strItem._M_dataplus._M_p = (char *)&unk_810FC6C;
  69860. while ( 1 )
  69861. {
  69862. if ( v10 > nLeft || !bIgnoreEmpty )
  69863. {
  69864. if ( *((_DWORD *)v11 - 3) < nLeft )
  69865. std::__throw_out_of_range("basic_string::substr");
  69866. std::string::string((std::string *)&v22, (const std::string *)&strSrc, nLeft, v10 - nLeft);
  69867. std::string::assign((std::string *)&strItem, (const std::string *)&v22);
  69868. v16 = v22 - 12;
  69869. if ( &std::string::_Rep::_S_empty_rep_storage != (_UNKNOWN *)(v22 - 12)
  69870. && __gnu_cxx::__exchange_and_add((volatile int *)(v22 - 4), -1) <= 0 )
  69871. {
  69872. std::string::_Rep::_M_destroy(v16, &v24);
  69873. }
  69874. v17 = vRet->_M_impl._M_finish;
  69875. if ( v17 == vRet->_M_impl._M_end_of_storage )
  69876. {
  69877. std::vector<std::string,std::allocator<std::string>>::_M_insert_aux(
  69878. vRet,
  69879. (__gnu_cxx::__normal_iterator<std::basic_string<char,std::char_traits<char>,std::allocator<char> >*,std::vector<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > > >)v17,
  69880. &strItem);
  69881. v11 = strSrc._M_dataplus._M_p;
  69882. }
  69883. else
  69884. {
  69885. if ( v17 )
  69886. {
  69887. std::string::string((std::string *)v17, (const std::string *)&strItem);
  69888. v17 = vRet->_M_impl._M_finish;
  69889. }
  69890. vRet->_M_impl._M_finish = v17 + 1;
  69891. v11 = strSrc._M_dataplus._M_p;
  69892. }
  69893. }
  69894. if ( *((_DWORD *)v11 - 3) == v10 )
  69895. break;
  69896. if ( bOneOfKey )
  69897. {
  69898. nLeft = v10 + 1;
  69899. v12 = std::string::find_first_of((std::string *)&strSrc, szKey, v10 + 1, strlen(szKey));
  69900. }
  69901. else
  69902. {
  69903. nLeft = strlen(szKey) + v10;
  69904. v12 = std::string::find((std::string *)&strSrc, szKey, nLeft, strlen(szKey));
  69905. }
  69906. v10 = v12;
  69907. if ( v12 == -1 )
  69908. {
  69909. v11 = strSrc._M_dataplus._M_p;
  69910. v10 = *((_DWORD *)strSrc._M_dataplus._M_p - 3);
  69911. }
  69912. else
  69913. {
  69914. v11 = strSrc._M_dataplus._M_p;
  69915. }
  69916. }
  69917. v18 = strItem._M_dataplus._M_p - 12;
  69918. v19 = (_DWORD)((char *)vRet->_M_impl._M_finish - (char *)vRet->_M_impl._M_start) >> 2;
  69919. if ( &std::string::_Rep::_S_empty_rep_storage != (_UNKNOWN *)(strItem._M_dataplus._M_p - 12) )
  69920. {
  69921. if ( __gnu_cxx::__exchange_and_add((volatile int *)strItem._M_dataplus._M_p - 1, -1) <= 0 )
  69922. std::string::_Rep::_M_destroy(v18, &v24);
  69923. v11 = strSrc._M_dataplus._M_p;
  69924. }
  69925. v20 = (int)(v11 - 12);
  69926. if ( &std::string::_Rep::_S_empty_rep_storage == (_UNKNOWN *)(v11 - 12)
  69927. || __gnu_cxx::__exchange_and_add((volatile int *)v11 - 1, -1) > 0 )
  69928. {
  69929. result = v19;
  69930. }
  69931. else
  69932. {
  69933. std::string::_Rep::_M_destroy(v20, &v24);
  69934. result = v19;
  69935. }
  69936. }
  69937. else
  69938. {
  69939. if ( v7 != (char *)&std::string::_Rep::_S_empty_rep_storage
  69940. && __gnu_cxx::__exchange_and_add((volatile int *)strSrc._M_dataplus._M_p - 1, -1) <= 0 )
  69941. {
  69942. std::string::_Rep::_M_destroy(v7, &v24);
  69943. }
  69944. result = 0;
  69945. }
  69946. return result;
  69947. }
  69948. // 8049E18: using guessed type int __cdecl std::string::_Rep::_M_destroy(_DWORD, _DWORD);
  69949. // 8049EC8: using guessed type int __cdecl std::string::string(_DWORD, _DWORD, _DWORD);
  69950.  
  69951. //----- (080A9BA4) --------------------------------------------------------
  69952. bool __cdecl DBC::DBCFile::OpenFromMemoryImpl_Text(DBC::DBCFile *const this, const char *pMemory, const char *pDeadEnd, const char *szFileName, int nColumToRead)
  69953. {
  69954. const char *v5; // esi
  69955. string *v6; // edi
  69956. bool v7; // zf
  69957. string *v8; // ebx
  69958. DBC::DBCFile::FIELD_TYPE *i; // eax
  69959. string *v10; // esi
  69960. string *j; // ebx
  69961. int v13; // edi
  69962. int v14; // ebx
  69963. const char *v15; // esi
  69964. string *v16; // eax
  69965. int v17; // edx
  69966. int v18; // ebx
  69967. int v19; // edi
  69968. int v20; // ebx
  69969. DBC::DBCFile::FIELD_TYPE v21; // eax
  69970. DBC::DBCFile::FIELD *v22; // edx
  69971. std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int> *v23; // edi
  69972. std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int> *v24; // ebx
  69973. char *v25; // esi
  69974. int v26; // eax
  69975. int v27; // ecx
  69976. DBC::DBCFile::FIELD *v28; // eax
  69977. char *v29; // eax
  69978. std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int> *v30; // edi
  69979. std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int> *v31; // ebx
  69980. char *v32; // esi
  69981. char *v33; // esi
  69982. int m; // edi
  69983. char *v35; // esi
  69984. int v36; // esi
  69985. std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int> *v37; // ebx
  69986. char *v38; // ebx
  69987. int v39; // ebx
  69988. char *v40; // ebx
  69989. char *v41; // ebx
  69990. int v42; // ebx
  69991. int v43; // ecx
  69992. std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int> *v44; // edi
  69993. std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int> *v45; // ebx
  69994. char *v46; // esi
  69995. DBC::DBCFile::FIELD_TYPE *n; // eax
  69996. string *v48; // esi
  69997. string *ii; // ebx
  69998. DBC::DBCFile::FIELD_TYPE *jj; // eax
  69999. string *v51; // esi
  70000. string *kk; // ebx
  70001. DBC::DBCFile::FIELD_TYPE *k; // eax
  70002. string *v54; // esi
  70003. string *l; // ebx
  70004. int v56; // [esp+20h] [ebp-168h]
  70005. int nStringBufSize; // [esp+24h] [ebp-164h]
  70006. int nFieldsNum; // [esp+28h] [ebp-160h]
  70007. int nRecordsNum; // [esp+2Ch] [ebp-15Ch]
  70008. char *strStringSource; // [esp+30h] [ebp-158h]
  70009. std::pair<std::_Rb_tree_iterator<std::pair<const std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int> >,bool> v61; // [esp+38h] [ebp-150h]
  70010. std::_Rb_tree_iterator<std::pair<const std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int> > v62; // [esp+40h] [ebp-148h]
  70011. DBC::DBCFile::FIELD newField; // [esp+44h] [ebp-144h]
  70012. DBC::DBCFile::FIELD_TYPE v64; // [esp+48h] [ebp-140h]
  70013. char __x; // [esp+4Fh] [ebp-139h]
  70014. std::pair<const std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int> __v; // [esp+50h] [ebp-138h]
  70015. std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int> v67; // [esp+60h] [ebp-128h]
  70016. string v68; // [esp+80h] [ebp-108h]
  70017. std::map<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::allocator<std::pair<const std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int> > > mapStringBuf; // [esp+B0h] [ebp-D8h]
  70018. std::vector<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int>,std::allocator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int> > > vStringBuf; // [esp+E0h] [ebp-A8h]
  70019. std::vector<DBC::DBCFile::FIELD_TYPE,std::allocator<DBC::DBCFile::FIELD_TYPE> > vFieldsType; // [esp+110h] [ebp-78h]
  70020. std::vector<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > > vRet; // [esp+130h] [ebp-58h]
  70021. char v73; // [esp+150h] [ebp-38h]
  70022. std::vector<char,std::allocator<char> > vLineBuf; // [esp+160h] [ebp-28h]
  70023.  
  70024. vLineBuf._M_impl._M_start = 0;
  70025. vLineBuf._M_impl._M_finish = 0;
  70026. vLineBuf._M_impl._M_end_of_storage = 0;
  70027. __x = 0;
  70028. std::vector<char,std::allocator<char>>::_M_fill_insert(&vLineBuf, 0, 0x10000u, &__x);
  70029. strStringSource = vLineBuf._M_impl._M_start;
  70030. v5 = DBC::DBCFile::_GetLineFromMemory(vLineBuf._M_impl._M_start, 0x10000, pMemory, pDeadEnd);
  70031. if ( !v5 )
  70032. goto LABEL_17;
  70033. vRet._M_impl._M_start = 0;
  70034. vRet._M_impl._M_finish = 0;
  70035. vRet._M_impl._M_end_of_storage = 0;
  70036. DBC::DBCFile::_ConvertStringToVector(strStringSource, &vRet, "\t", 1, 1);
  70037. v6 = vRet._M_impl._M_finish;
  70038. v7 = vRet._M_impl._M_start == vRet._M_impl._M_finish;
  70039. if ( vRet._M_impl._M_start == vRet._M_impl._M_finish )
  70040. {
  70041. v8 = vRet._M_impl._M_start;
  70042. while ( !v7 )
  70043. {
  70044. std::string::~string((std::string *)v8);
  70045. ++v8;
  70046. v7 = v8 == v6;
  70047. }
  70048. goto LABEL_15;
  70049. }
  70050. nFieldsNum = (_DWORD)((char *)vRet._M_impl._M_finish - (char *)vRet._M_impl._M_start) >> 2;
  70051. nRecordsNum = 0;
  70052. if ( nColumToRead > 0 && nFieldsNum > nColumToRead )
  70053. nFieldsNum = nColumToRead;
  70054. vFieldsType._M_impl._M_start = 0;
  70055. vFieldsType._M_impl._M_finish = 0;
  70056. vFieldsType._M_impl._M_end_of_storage = 0;
  70057. v64 = 0;
  70058. std::vector<DBC::DBCFile::FIELD_TYPE,std::allocator<DBC::DBCFile::FIELD_TYPE>>::_M_fill_insert(
  70059. &vFieldsType,
  70060. 0,
  70061. nFieldsNum,
  70062. &v64);
  70063. v13 = 0;
  70064. while ( 1 )
  70065. {
  70066. while ( 1 )
  70067. {
  70068. if ( v13 >= nFieldsNum )
  70069. {
  70070. LABEL_28:
  70071. vStringBuf._M_impl._M_start = 0;
  70072. vStringBuf._M_impl._M_finish = 0;
  70073. vStringBuf._M_impl._M_end_of_storage = 0;
  70074. mapStringBuf._M_t._M_impl._M_node_count = 0;
  70075. mapStringBuf._M_t._M_impl._M_header._M_color = 0;
  70076. mapStringBuf._M_t._M_impl._M_header._M_parent = 0;
  70077. mapStringBuf._M_t._M_impl._M_header._M_left = &mapStringBuf._M_t._M_impl._M_header;
  70078. mapStringBuf._M_t._M_impl._M_header._M_right = &mapStringBuf._M_t._M_impl._M_header;
  70079. v15 = DBC::DBCFile::_GetLineFromMemory(strStringSource, 0x10000, v5, pDeadEnd);
  70080. nStringBufSize = 0;
  70081. if ( !v15 )
  70082. {
  70083. std::_Rb_tree<std::string,std::pair<std::string const,int>,std::_Select1st<std::pair<std::string const,int>>,std::less<std::string>,std::allocator<std::pair<std::string const,int>>>::_M_erase(
  70084. &mapStringBuf._M_t,
  70085. (std::_Rb_tree_node<std::pair<const std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int> > *)mapStringBuf._M_t._M_impl._M_header._M_parent);
  70086. v23 = vStringBuf._M_impl._M_finish;
  70087. v24 = vStringBuf._M_impl._M_start;
  70088. while ( v24 != v23 )
  70089. {
  70090. v25 = v24->first._M_dataplus._M_p - 12;
  70091. if ( v25 == (char *)&std::string::_Rep::_S_empty_rep_storage
  70092. || __gnu_cxx::__exchange_and_add((volatile int *)v24->first._M_dataplus._M_p - 1, -1) > 0 )
  70093. {
  70094. ++v24;
  70095. }
  70096. else
  70097. {
  70098. std::string::_Rep::_M_destroy(v25, &v73);
  70099. ++v24;
  70100. }
  70101. }
  70102. if ( vStringBuf._M_impl._M_start )
  70103. operator delete((IPRegionTable *const )vStringBuf._M_impl._M_start);
  70104. for ( i = vFieldsType._M_impl._M_start; i != vFieldsType._M_impl._M_finish; ++i )
  70105. ;
  70106. if ( vFieldsType._M_impl._M_start )
  70107. operator delete((IPRegionTable *const )vFieldsType._M_impl._M_start);
  70108. v10 = vRet._M_impl._M_finish;
  70109. for ( j = vRet._M_impl._M_start; j != v10; ++j )
  70110. std::string::~string((std::string *)j);
  70111. goto LABEL_15;
  70112. }
  70113. while ( 1 )
  70114. {
  70115. while ( 1 )
  70116. {
  70117. v15 = DBC::DBCFile::_GetLineFromMemory(strStringSource, 0x10000, v15, pDeadEnd);
  70118. if ( !v15 )
  70119. {
  70120. this->m_nRecordsNum = nRecordsNum;
  70121. this->m_nFieldsNum = nFieldsNum;
  70122. this->m_nStringBufSize = nStringBufSize + 1;
  70123. v29 = (char *)operator new[](nStringBufSize + 1);
  70124. this->m_pStringBuf = v29;
  70125. if ( !v29 )
  70126. {
  70127. std::_Rb_tree<std::string,std::pair<std::string const,int>,std::_Select1st<std::pair<std::string const,int>>,std::less<std::string>,std::allocator<std::pair<std::string const,int>>>::_M_erase(
  70128. &mapStringBuf._M_t,
  70129. (std::_Rb_tree_node<std::pair<const std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int> > *)mapStringBuf._M_t._M_impl._M_header._M_parent);
  70130. v30 = vStringBuf._M_impl._M_finish;
  70131. v31 = vStringBuf._M_impl._M_start;
  70132. while ( v31 != v30 )
  70133. {
  70134. v32 = v31->first._M_dataplus._M_p - 12;
  70135. if ( v32 == (char *)&std::string::_Rep::_S_empty_rep_storage
  70136. || __gnu_cxx::__exchange_and_add((volatile int *)v31->first._M_dataplus._M_p - 1, -1) > 0 )
  70137. {
  70138. ++v31;
  70139. }
  70140. else
  70141. {
  70142. std::string::_Rep::_M_destroy(v32, &v73);
  70143. ++v31;
  70144. }
  70145. }
  70146. if ( vStringBuf._M_impl._M_start )
  70147. operator delete((IPRegionTable *const )vStringBuf._M_impl._M_start);
  70148. for ( k = vFieldsType._M_impl._M_start; k != vFieldsType._M_impl._M_finish; ++k )
  70149. ;
  70150. if ( vFieldsType._M_impl._M_start )
  70151. operator delete((IPRegionTable *const )vFieldsType._M_impl._M_start);
  70152. v54 = vRet._M_impl._M_finish;
  70153. for ( l = vRet._M_impl._M_start; l != v54; ++l )
  70154. std::string::~string((std::string *)l);
  70155. goto LABEL_15;
  70156. }
  70157. std::vector<DBC::DBCFile::FIELD_TYPE,std::allocator<DBC::DBCFile::FIELD_TYPE>>::operator=(
  70158. &this->m_theType,
  70159. &vFieldsType);
  70160. *this->m_pStringBuf = 0;
  70161. v33 = this->m_pStringBuf + 1;
  70162. for ( m = 0;
  70163. (_DWORD)((char *)vStringBuf._M_impl._M_finish - (char *)vStringBuf._M_impl._M_start) >> 3 > m;
  70164. ++m )
  70165. {
  70166. memcpy(
  70167. v33,
  70168. vStringBuf._M_impl._M_start[m].first._M_dataplus._M_p,
  70169. *((_DWORD *)vStringBuf._M_impl._M_start[m].first._M_dataplus._M_p - 3));
  70170. v35 = &v33[*((_DWORD *)vStringBuf._M_impl._M_start[m].first._M_dataplus._M_p - 3)];
  70171. *v35 = 0;
  70172. v33 = v35 + 1;
  70173. }
  70174. v36 = 0;
  70175. while ( v36 < nFieldsNum )
  70176. {
  70177. if ( vFieldsType._M_impl._M_start[v36] != 2 || (v42 = 0, nRecordsNum <= 0) )
  70178. {
  70179. ++v36;
  70180. }
  70181. else
  70182. {
  70183. v43 = v36;
  70184. do
  70185. {
  70186. this->m_vDataBuf._M_impl._M_start[v43].iValue += (int)this->m_pStringBuf;
  70187. ++v42;
  70188. v43 += nFieldsNum;
  70189. }
  70190. while ( v42 < nRecordsNum );
  70191. ++v36;
  70192. }
  70193. }
  70194. DBC::DBCFile::CreateIndex(this, 0, szFileName);
  70195. std::_Rb_tree<std::string,std::pair<std::string const,int>,std::_Select1st<std::pair<std::string const,int>>,std::less<std::string>,std::allocator<std::pair<std::string const,int>>>::_M_erase(
  70196. &mapStringBuf._M_t,
  70197. (std::_Rb_tree_node<std::pair<const std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int> > *)mapStringBuf._M_t._M_impl._M_header._M_parent);
  70198. v44 = vStringBuf._M_impl._M_finish;
  70199. v45 = vStringBuf._M_impl._M_start;
  70200. while ( v45 != v44 )
  70201. {
  70202. v46 = v45->first._M_dataplus._M_p - 12;
  70203. if ( v46 == (char *)&std::string::_Rep::_S_empty_rep_storage
  70204. || __gnu_cxx::__exchange_and_add((volatile int *)v45->first._M_dataplus._M_p - 1, -1) > 0 )
  70205. {
  70206. ++v45;
  70207. }
  70208. else
  70209. {
  70210. std::string::_Rep::_M_destroy(v46, &v73);
  70211. ++v45;
  70212. }
  70213. }
  70214. if ( vStringBuf._M_impl._M_start )
  70215. operator delete((IPRegionTable *const )vStringBuf._M_impl._M_start);
  70216. for ( n = vFieldsType._M_impl._M_start; n != vFieldsType._M_impl._M_finish; ++n )
  70217. ;
  70218. if ( vFieldsType._M_impl._M_start )
  70219. operator delete((IPRegionTable *const )vFieldsType._M_impl._M_start);
  70220. v48 = vRet._M_impl._M_finish;
  70221. for ( ii = vRet._M_impl._M_start; ii != v48; ++ii )
  70222. std::string::~string((std::string *)ii);
  70223. if ( vRet._M_impl._M_start )
  70224. operator delete((IPRegionTable *const )vRet._M_impl._M_start);
  70225. if ( vLineBuf._M_impl._M_start )
  70226. operator delete((IPRegionTable *const )vLineBuf._M_impl._M_start);
  70227. return 1;
  70228. }
  70229. if ( *strStringSource != 35 )
  70230. {
  70231. DBC::DBCFile::_ConvertStringToVector(strStringSource, &vRet, "\t", 1, 0);
  70232. v16 = vRet._M_impl._M_start;
  70233. if ( vRet._M_impl._M_start != vRet._M_impl._M_finish )
  70234. {
  70235. v17 = (_DWORD)((char *)vRet._M_impl._M_finish - (char *)vRet._M_impl._M_start) >> 2;
  70236. if ( v17 != nFieldsNum && v17 < nFieldsNum )
  70237. {
  70238. v18 = nFieldsNum - v17;
  70239. v19 = 0;
  70240. if ( nFieldsNum - v17 > 0 )
  70241. {
  70242. do
  70243. {
  70244. std::string::string(&v68, 135155723, &v73);
  70245. if ( vRet._M_impl._M_finish == vRet._M_impl._M_end_of_storage )
  70246. {
  70247. std::vector<std::string,std::allocator<std::string>>::_M_insert_aux(
  70248. &vRet,
  70249. (__gnu_cxx::__normal_iterator<std::basic_string<char,std::char_traits<char>,std::allocator<char> >*,std::vector<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > > >)vRet._M_impl._M_finish,
  70250. &v68);
  70251. }
  70252. else
  70253. {
  70254. if ( vRet._M_impl._M_finish )
  70255. std::string::string((std::string *)vRet._M_impl._M_finish, (const std::string *)&v68);
  70256. ++vRet._M_impl._M_finish;
  70257. }
  70258. std::string::~string((std::string *)&v68);
  70259. ++v19;
  70260. }
  70261. while ( v19 < v18 );
  70262. v16 = vRet._M_impl._M_start;
  70263. }
  70264. }
  70265. if ( *((_DWORD *)v16->_M_dataplus._M_p - 3) )
  70266. break;
  70267. }
  70268. }
  70269. }
  70270. v56 = 0;
  70271. if ( nFieldsNum > 0 )
  70272. break;
  70273. LABEL_47:
  70274. ++nRecordsNum;
  70275. }
  70276. while ( 1 )
  70277. {
  70278. v20 = v56;
  70279. v21 = vFieldsType._M_impl._M_start[v56];
  70280. if ( v21 == 1 )
  70281. break;
  70282. if ( (signed int)v21 <= 1 )
  70283. {
  70284. if ( v21 == T_INT )
  70285. {
  70286. v26 = __strtol_internal(vRet._M_impl._M_start[v20]._M_dataplus._M_p, 0, 10, 0);
  70287. v27 = v26;
  70288. SLODWORD(newField.fValue) = v26;
  70289. v28 = this->m_vDataBuf._M_impl._M_finish;
  70290. if ( v28 == this->m_vDataBuf._M_impl._M_end_of_storage )
  70291. {
  70292. std::vector<DBC::DBCFile::FIELD,std::allocator<DBC::DBCFile::FIELD>>::_M_insert_aux(
  70293. &this->m_vDataBuf,
  70294. (__gnu_cxx::__normal_iterator<DBC::DBCFile::FIELD*,std::vector<DBC::DBCFile::FIELD,std::allocator<DBC::DBCFile::FIELD> > >)this->m_vDataBuf._M_impl._M_finish,
  70295. &newField);
  70296. }
  70297. else
  70298. {
  70299. if ( v28 )
  70300. v28->iValue = v27;
  70301. this->m_vDataBuf._M_impl._M_finish = v28 + 1;
  70302. }
  70303. }
  70304. goto LABEL_46;
  70305. }
  70306. if ( v21 == 2 )
  70307. {
  70308. if ( *((_DWORD *)vRet._M_impl._M_start[v20]._M_dataplus._M_p - 3) )
  70309. {
  70310. std::_Rb_tree<std::string,std::pair<std::string const,int>,std::_Select1st<std::pair<std::string const,int>>,std::less<std::string>,std::allocator<std::pair<std::string const,int>>>::find(
  70311. &v62,
  70312. &mapStringBuf._M_t,
  70313. &vRet._M_impl._M_start[v20]);
  70314. if ( v62._M_node == &mapStringBuf._M_t._M_impl._M_header )
  70315. {
  70316. std::string::string((std::string *)&v68, (const std::string *)&vRet._M_impl._M_start[v20]);
  70317. std::string::string((std::string *)&v67, (const std::string *)&v68);
  70318. v37 = vStringBuf._M_impl._M_finish;
  70319. v67.second = nStringBufSize;
  70320. if ( vStringBuf._M_impl._M_finish == vStringBuf._M_impl._M_end_of_storage )
  70321. {
  70322. std::vector<std::pair<std::string,int>,std::allocator<std::pair<std::string,int>>>::_M_insert_aux(
  70323. &vStringBuf,
  70324. (__gnu_cxx::__normal_iterator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int>*,std::vector<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int>,std::allocator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int> > > >)vStringBuf._M_impl._M_finish,
  70325. &v67);
  70326. }
  70327. else
  70328. {
  70329. if ( vStringBuf._M_impl._M_finish )
  70330. {
  70331. std::string::string((std::string *)vStringBuf._M_impl._M_finish, (const std::string *)&v67);
  70332. v37->second = v67.second;
  70333. }
  70334. ++vStringBuf._M_impl._M_finish;
  70335. }
  70336. v38 = v67.first._M_dataplus._M_p - 12;
  70337. if ( &std::string::_Rep::_S_empty_rep_storage != (_UNKNOWN *)(v67.first._M_dataplus._M_p - 12)
  70338. && __gnu_cxx::__exchange_and_add((volatile int *)v67.first._M_dataplus._M_p - 1, -1) <= 0 )
  70339. {
  70340. std::string::_Rep::_M_destroy(v38, &v73);
  70341. }
  70342. std::string::~string((std::string *)&v68);
  70343. std::string::string((std::string *)&v68, (const std::string *)&vRet._M_impl._M_start[v56]);
  70344. v39 = ((_DWORD)((char *)vStringBuf._M_impl._M_finish - (char *)vStringBuf._M_impl._M_start) >> 3) - 1;
  70345. std::string::string((std::string *)&v67, (const std::string *)&v68);
  70346. v67.second = v39;
  70347. std::string::string((std::string *)&__v, (const std::string *)&v67);
  70348. __v.second = v67.second;
  70349. std::_Rb_tree<std::string,std::pair<std::string const,int>,std::_Select1st<std::pair<std::string const,int>>,std::less<std::string>,std::allocator<std::pair<std::string const,int>>>::insert_unique(
  70350. &v61,
  70351. &mapStringBuf._M_t,
  70352. &__v);
  70353. v40 = __v.first._M_dataplus._M_p - 12;
  70354. if ( &std::string::_Rep::_S_empty_rep_storage != (_UNKNOWN *)(__v.first._M_dataplus._M_p - 12)
  70355. && __gnu_cxx::__exchange_and_add((volatile int *)__v.first._M_dataplus._M_p - 1, -1) <= 0 )
  70356. {
  70357. std::string::_Rep::_M_destroy(v40, &v73);
  70358. }
  70359. v41 = v67.first._M_dataplus._M_p - 12;
  70360. if ( &std::string::_Rep::_S_empty_rep_storage != (_UNKNOWN *)(v67.first._M_dataplus._M_p - 12)
  70361. && __gnu_cxx::__exchange_and_add((volatile int *)v67.first._M_dataplus._M_p - 1, -1) <= 0 )
  70362. {
  70363. std::string::_Rep::_M_destroy(v41, &v73);
  70364. }
  70365. std::string::~string((std::string *)&v68);
  70366. newField.iValue = nStringBufSize + 1;
  70367. nStringBufSize += strlen(vRet._M_impl._M_start[v56]._M_dataplus._M_p) + 1;
  70368. }
  70369. else
  70370. {
  70371. newField.iValue = vStringBuf._M_impl._M_start[(_DWORD)v62._M_node[1]._M_parent].second + 1;
  70372. }
  70373. }
  70374. else
  70375. {
  70376. newField.fValue = 0.0;
  70377. }
  70378. goto LABEL_52;
  70379. }
  70380. LABEL_46:
  70381. if ( ++v56 >= nFieldsNum )
  70382. goto LABEL_47;
  70383. }
  70384. newField.fValue = __strtod_internal(vRet._M_impl._M_start[v20]._M_dataplus._M_p, 0, 0);
  70385. LABEL_52:
  70386. v22 = this->m_vDataBuf._M_impl._M_finish;
  70387. if ( v22 == this->m_vDataBuf._M_impl._M_end_of_storage )
  70388. {
  70389. std::vector<DBC::DBCFile::FIELD,std::allocator<DBC::DBCFile::FIELD>>::_M_insert_aux(
  70390. &this->m_vDataBuf,
  70391. (__gnu_cxx::__normal_iterator<DBC::DBCFile::FIELD*,std::vector<DBC::DBCFile::FIELD,std::allocator<DBC::DBCFile::FIELD> > >)this->m_vDataBuf._M_impl._M_finish,
  70392. &newField);
  70393. }
  70394. else
  70395. {
  70396. if ( v22 )
  70397. LODWORD(v22->fValue) = newField;
  70398. this->m_vDataBuf._M_impl._M_finish = v22 + 1;
  70399. }
  70400. goto LABEL_46;
  70401. }
  70402. while ( 1 )
  70403. {
  70404. v14 = v13;
  70405. if ( std::string::compare((std::string *)&vRet._M_impl._M_start[v13], "INT") )
  70406. break;
  70407. ++v13;
  70408. vFieldsType._M_impl._M_start[v14] = 0;
  70409. if ( v13 >= nFieldsNum )
  70410. goto LABEL_28;
  70411. }
  70412. if ( std::string::compare((std::string *)&vRet._M_impl._M_start[v14], "FLOAT") )
  70413. break;
  70414. ++v13;
  70415. vFieldsType._M_impl._M_start[v14] = 1;
  70416. }
  70417. if ( std::string::compare((std::string *)&vRet._M_impl._M_start[v14], "STRING") )
  70418. break;
  70419. ++v13;
  70420. vFieldsType._M_impl._M_start[v14] = 2;
  70421. }
  70422. for ( jj = vFieldsType._M_impl._M_start; jj != vFieldsType._M_impl._M_finish; ++jj )
  70423. ;
  70424. if ( vFieldsType._M_impl._M_start )
  70425. operator delete((IPRegionTable *const )vFieldsType._M_impl._M_start);
  70426. v51 = vRet._M_impl._M_finish;
  70427. for ( kk = vRet._M_impl._M_start; kk != v51; ++kk )
  70428. std::string::~string((std::string *)kk);
  70429. LABEL_15:
  70430. if ( vRet._M_impl._M_start )
  70431. operator delete((IPRegionTable *const )vRet._M_impl._M_start);
  70432. LABEL_17:
  70433. if ( vLineBuf._M_impl._M_start )
  70434. operator delete((IPRegionTable *const )vLineBuf._M_impl._M_start);
  70435. return 0;
  70436. }
  70437. // 8049E18: using guessed type int __cdecl std::string::_Rep::_M_destroy(_DWORD, _DWORD);
  70438. // 8049EC8: using guessed type int __cdecl std::string::string(_DWORD, _DWORD, _DWORD);
  70439.  
  70440. //----- (080AA8F4) --------------------------------------------------------
  70441. void __usercall sub_80AA8F4(int a1@<eax>, int a2@<ebx>, int a3@<ebp>)
  70442. {
  70443. JUMPOUT(__gnu_cxx::__exchange_and_add((volatile int *)(a1 - 4), -1), 0, &loc_80AA87B);
  70444. std::string::_Rep::_M_destroy(a2, a3 - 56);
  70445. JUMPOUT(&loc_80AA87B);
  70446. }
  70447. // 8049E18: using guessed type int __cdecl std::string::_Rep::_M_destroy(_DWORD, _DWORD);
  70448.  
  70449. //----- (080AA924) --------------------------------------------------------
  70450. bool __cdecl DBC::DBCFile::OpenFromMemoryImpl_Binary(DBC::DBCFile *const this, const char *pMemory, const char *pDeadEnd, const char *szFileName, int nColumToRead)
  70451. {
  70452. int v5; // edx
  70453. int v6; // ecx
  70454. int v7; // ebx
  70455. const char *v9; // edi
  70456. int v10; // eax
  70457. int v11; // edx
  70458. char *v12; // eax
  70459. int v13; // edx
  70460. std::vector<DBC::DBCFile::FIELD_TYPE,std::allocator<DBC::DBCFile::FIELD_TYPE> > *v14; // esi
  70461. const char *v15; // edi
  70462. unsigned int v16; // ecx
  70463. DBC::DBCFile::FIELD_TYPE *v17; // ebx
  70464. unsigned int v18; // eax
  70465. int v19; // edx
  70466. int v20; // esi
  70467. int v21; // ebx
  70468. DBC::DBCFile::FIELD_TYPE *v22; // eax
  70469. unsigned int v23; // ecx
  70470. DBC::DBCFile::FIELD *v24; // eax
  70471. unsigned int v25; // edx
  70472. int i; // ebx
  70473. int v27; // edx
  70474. int v28; // ebx
  70475. bool v29; // zf
  70476. bool v30; // sf
  70477. unsigned __int8 v31; // of
  70478. int v32; // ecx
  70479. DBC::DBCFile::FIELD *v33; // eax
  70480. DBC::DBCFile::FIELD_TYPE v34; // [esp+Ch] [ebp-8Ch]
  70481. unsigned int *v35; // [esp+2Ch] [ebp-6Ch]
  70482. bool v36; // [esp+34h] [ebp-64h]
  70483. DBC::DBCFile::FIELD v37; // [esp+38h] [ebp-60h]
  70484. DBC::DBCFile::FIELD_TYPE v38; // [esp+3Ch] [ebp-5Ch]
  70485. unsigned int __x; // [esp+40h] [ebp-58h]
  70486. __gnu_cxx::__normal_iterator<DBC::DBCFile::FIELD*,std::vector<DBC::DBCFile::FIELD,std::allocator<DBC::DBCFile::FIELD> > > v40; // [esp+44h] [ebp-54h]
  70487. __gnu_cxx::__normal_iterator<DBC::DBCFile::FIELD_TYPE*,std::vector<DBC::DBCFile::FIELD_TYPE,std::allocator<DBC::DBCFile::FIELD_TYPE> > > v41; // [esp+48h] [ebp-50h]
  70488. std::vector<unsigned int,std::allocator<unsigned int> > vFieldType; // [esp+60h] [ebp-38h]
  70489. DBC::DBCFile::FILE_HEAD theHead; // [esp+70h] [ebp-28h]
  70490.  
  70491. theHead.m_Identify = *(_DWORD *)pMemory;
  70492. v5 = *((_DWORD *)pMemory + 1);
  70493. theHead.m_nFieldsNum = *((_DWORD *)pMemory + 1);
  70494. v6 = *((_DWORD *)pMemory + 2);
  70495. theHead.m_nRecordsNum = *((_DWORD *)pMemory + 2);
  70496. v7 = *((_DWORD *)pMemory + 3);
  70497. theHead.m_nStringBlockSize = *((_DWORD *)pMemory + 3);
  70498. v36 = 0;
  70499. if ( theHead.m_Identify == -574895104 && v7 + 4 * (v5 + v5 * v6) + 16 <= (unsigned int)(pDeadEnd - pMemory) )
  70500. {
  70501. this->m_nRecordsNum = v6;
  70502. v9 = pMemory + 16;
  70503. v10 = theHead.m_nStringBlockSize;
  70504. v11 = theHead.m_nFieldsNum;
  70505. this->m_nStringBufSize = theHead.m_nStringBlockSize;
  70506. if ( nColumToRead <= 0 )
  70507. {
  70508. this->m_nFieldsNum = v11;
  70509. }
  70510. else if ( v11 <= nColumToRead )
  70511. {
  70512. this->m_nFieldsNum = v11;
  70513. }
  70514. else
  70515. {
  70516. this->m_nFieldsNum = nColumToRead;
  70517. v10 = theHead.m_nStringBlockSize;
  70518. }
  70519. v12 = (char *)operator new[](v10);
  70520. this->m_pStringBuf = v12;
  70521. v36 = 0;
  70522. if ( v12 )
  70523. {
  70524. v13 = this->m_nFieldsNum;
  70525. vFieldType._M_impl._M_start = 0;
  70526. vFieldType._M_impl._M_finish = 0;
  70527. vFieldType._M_impl._M_end_of_storage = 0;
  70528. __x = 0;
  70529. std::vector<unsigned int,std::allocator<unsigned int>>::_M_fill_insert(&vFieldType, 0, v13, &__x);
  70530. memcpy(vFieldType._M_impl._M_start, v9, 4 * this->m_nFieldsNum);
  70531. v14 = &this->m_theType;
  70532. v15 = &v9[4 * theHead.m_nFieldsNum];
  70533. v16 = this->m_nFieldsNum;
  70534. v17 = this->m_theType._M_impl._M_start;
  70535. v18 = (_DWORD)((char *)this->m_theType._M_impl._M_finish - (char *)v17) >> 2;
  70536. v38 = 0;
  70537. if ( v18 <= v16 )
  70538. std::vector<DBC::DBCFile::FIELD_TYPE,std::allocator<DBC::DBCFile::FIELD_TYPE>>::_M_fill_insert(
  70539. v14,
  70540. (__gnu_cxx::__normal_iterator<DBC::DBCFile::FIELD_TYPE*,std::vector<DBC::DBCFile::FIELD_TYPE,std::allocator<DBC::DBCFile::FIELD_TYPE> > >)this->m_theType._M_impl._M_finish,
  70541. v16 - v18,
  70542. &v38);
  70543. else
  70544. std::vector<DBC::DBCFile::FIELD_TYPE,std::allocator<DBC::DBCFile::FIELD_TYPE>>::erase(
  70545. &v41,
  70546. v14,
  70547. (__gnu_cxx::__normal_iterator<DBC::DBCFile::FIELD_TYPE*,std::vector<DBC::DBCFile::FIELD_TYPE,std::allocator<DBC::DBCFile::FIELD_TYPE> > >)&v17[v16],
  70548. (__gnu_cxx::__normal_iterator<DBC::DBCFile::FIELD_TYPE*,std::vector<DBC::DBCFile::FIELD_TYPE,std::allocator<DBC::DBCFile::FIELD_TYPE> > >)this->m_theType._M_impl._M_finish);
  70549. v19 = this->m_nFieldsNum;
  70550. v20 = 0;
  70551. if ( v19 <= 0 )
  70552. {
  70553. LABEL_14:
  70554. v23 = v19 * theHead.m_nRecordsNum;
  70555. v24 = this->m_vDataBuf._M_impl._M_start;
  70556. v25 = (_DWORD)((char *)this->m_vDataBuf._M_impl._M_finish - (char *)v24) >> 2;
  70557. if ( v25 <= v23 )
  70558. std::vector<DBC::DBCFile::FIELD,std::allocator<DBC::DBCFile::FIELD>>::_M_fill_insert(
  70559. &this->m_vDataBuf,
  70560. (__gnu_cxx::__normal_iterator<DBC::DBCFile::FIELD*,std::vector<DBC::DBCFile::FIELD,std::allocator<DBC::DBCFile::FIELD> > >)this->m_vDataBuf._M_impl._M_finish,
  70561. v23 - v25,
  70562. &v37);
  70563. else
  70564. std::vector<DBC::DBCFile::FIELD,std::allocator<DBC::DBCFile::FIELD>>::erase(
  70565. &v40,
  70566. &this->m_vDataBuf,
  70567. (__gnu_cxx::__normal_iterator<DBC::DBCFile::FIELD*,std::vector<DBC::DBCFile::FIELD,std::allocator<DBC::DBCFile::FIELD> > >)&v24[v23],
  70568. (__gnu_cxx::__normal_iterator<DBC::DBCFile::FIELD*,std::vector<DBC::DBCFile::FIELD,std::allocator<DBC::DBCFile::FIELD> > >)this->m_vDataBuf._M_impl._M_finish);
  70569. for ( i = 0; this->m_nRecordsNum > i; v15 += 4 * theHead.m_nFieldsNum )
  70570. memcpy(&this->m_vDataBuf._M_impl._M_start[i++ * this->m_nFieldsNum], v15, 4 * this->m_nFieldsNum);
  70571. memcpy(this->m_pStringBuf, v15, this->m_nStringBufSize);
  70572. this->m_pStringBuf[this->m_nStringBufSize - 1] = 0;
  70573. v27 = this->m_nFieldsNum;
  70574. v28 = 0;
  70575. v31 = 0;
  70576. v29 = v27 == 0;
  70577. v30 = v27 < 0;
  70578. while ( !((unsigned __int8)(v30 ^ v31) | v29) )
  70579. {
  70580. if ( vFieldType._M_impl._M_start[v28] == 2 && (v32 = 0, this->m_nRecordsNum > 0) )
  70581. {
  70582. while ( 1 )
  70583. {
  70584. v33 = &this->m_vDataBuf._M_impl._M_start[v32 * v27 + v28];
  70585. v33->iValue += (int)this->m_pStringBuf;
  70586. if ( this->m_nRecordsNum <= ++v32 )
  70587. break;
  70588. v27 = this->m_nFieldsNum;
  70589. }
  70590. v27 = this->m_nFieldsNum;
  70591. v31 = __OFSUB__(v27, ++v28);
  70592. v29 = v27 == v28;
  70593. v30 = v27 - v28 < 0;
  70594. }
  70595. else
  70596. {
  70597. v31 = __OFSUB__(v27, ++v28);
  70598. v29 = v27 == v28;
  70599. v30 = v27 - v28 < 0;
  70600. }
  70601. }
  70602. DBC::DBCFile::CreateIndex(this, 0, szFileName);
  70603. if ( vFieldType._M_impl._M_start )
  70604. operator delete((IPRegionTable *const )vFieldType._M_impl._M_start);
  70605. v36 = 1;
  70606. }
  70607. else
  70608. {
  70609. v35 = vFieldType._M_impl._M_start;
  70610. v21 = 0;
  70611. while ( 1 )
  70612. {
  70613. v34 = v35[v21];
  70614. if ( v35[v21] > 2 )
  70615. break;
  70616. ++v20;
  70617. v22 = &this->m_theType._M_impl._M_start[v21];
  70618. ++v21;
  70619. *v22 = v34;
  70620. if ( v19 <= v20 )
  70621. goto LABEL_14;
  70622. }
  70623. if ( this->m_pStringBuf )
  70624. {
  70625. operator delete[](this->m_pStringBuf);
  70626. v35 = vFieldType._M_impl._M_start;
  70627. }
  70628. if ( v35 )
  70629. operator delete((IPRegionTable *const )v35);
  70630. v36 = 0;
  70631. }
  70632. }
  70633. }
  70634. return v36;
  70635. }
  70636.  
  70637. //----- (080AAC64) --------------------------------------------------------
  70638. bool __cdecl DBC::DBCFile::OpenFromMemory(DBC::DBCFile *const this, const char *pMemory, const char *pDeadEnd, const char *szFileName, int nColumToRead)
  70639. {
  70640. bool result; // al
  70641. bool v6; // al
  70642. bool v7; // bl
  70643. int v8; // edx
  70644. int v9; // [esp+8h] [ebp-20h]
  70645. char *deencryptMem; // [esp+Ch] [ebp-1Ch]
  70646. unsigned int memorySize; // [esp+10h] [ebp-18h]
  70647. const char *memory; // [esp+14h] [ebp-14h]
  70648. int outSize; // [esp+18h] [ebp-10h]
  70649.  
  70650. if ( !pMemory || !pDeadEnd )
  70651. __assert_fail(
  70652. "pMemory && pDeadEnd",
  70653. "libDBC.cpp",
  70654. 0x92u,
  70655. "bool DBC::DBCFile::OpenFromMemory(const char*, const char*, const char*, int)");
  70656. if ( !this->m_bNeedDecrypt || !DBC::DBCFile::s_funcIsEncryptMemory || !DBC::DBCFile::s_funcPlatformDecrypMemoryFunc )
  70657. {
  70658. if ( (unsigned int)(pDeadEnd - pMemory) > 0xF && *(_DWORD *)pMemory == -574895104 )
  70659. result = DBC::DBCFile::OpenFromMemoryImpl_Binary(this, pMemory, pDeadEnd, szFileName, nColumToRead);
  70660. else
  70661. result = DBC::DBCFile::OpenFromMemoryImpl_Text(this, pMemory, pDeadEnd, szFileName, nColumToRead);
  70662. return result;
  70663. }
  70664. memorySize = pDeadEnd - pMemory;
  70665. memory = pMemory;
  70666. deencryptMem = 0;
  70667. v9 = pDeadEnd - pMemory - 1;
  70668. if ( !DBC::DBCFile::s_funcIsEncryptMemory(pMemory, v9) )
  70669. goto LABEL_11;
  70670. deencryptMem = (char *)operator new[](memorySize + 32);
  70671. outSize = memorySize + 32;
  70672. if ( DBC::DBCFile::s_funcPlatformDecrypMemoryFunc(this->m_szCharDecrypeKey, pMemory, v9, deencryptMem, &outSize) )
  70673. {
  70674. v8 = outSize;
  70675. memory = deencryptMem;
  70676. deencryptMem[outSize] = 0;
  70677. memorySize = v8 + 1;
  70678. LABEL_11:
  70679. if ( memorySize > 0xF && *(_DWORD *)memory == -574895104 )
  70680. v6 = DBC::DBCFile::OpenFromMemoryImpl_Binary(this, memory, &memory[memorySize], szFileName, nColumToRead);
  70681. else
  70682. v6 = DBC::DBCFile::OpenFromMemoryImpl_Text(this, memory, &memory[memorySize], szFileName, nColumToRead);
  70683. v7 = v6;
  70684. if ( deencryptMem )
  70685. operator delete[](deencryptMem);
  70686. return v7;
  70687. }
  70688. if ( deencryptMem )
  70689. operator delete[](deencryptMem);
  70690. return 0;
  70691. }
  70692.  
  70693. //----- (080AADF8) --------------------------------------------------------
  70694. bool __cdecl DBC::DBCFile::OpenFromTXT(DBC::DBCFile *const this, const char *szFileName, int nColumToRead)
  70695. {
  70696. FILE *v3; // edi
  70697. bool result; // al
  70698. int v5; // ebx
  70699. void *v6; // esi
  70700. bool v7; // bl
  70701.  
  70702. if ( !szFileName )
  70703. __assert_fail("szFileName", "libDBC.cpp", 0x1E0u, "bool DBC::DBCFile::OpenFromTXT(const char*, int)");
  70704. v3 = fopen(szFileName, "rb");
  70705. result = 0;
  70706. if ( v3 )
  70707. {
  70708. fseek(v3, 0, 2);
  70709. v5 = ftell(v3);
  70710. fseek(v3, 0, 0);
  70711. v6 = (void *)operator new[](v5 + 1);
  70712. fread(v6, 1u, v5, v3);
  70713. *((_BYTE *)v6 + v5) = 0;
  70714. fclose(v3);
  70715. v7 = DBC::DBCFile::OpenFromMemory(this, (const char *)v6, (const char *)v6 + v5 + 1, szFileName, nColumToRead);
  70716. if ( v6 )
  70717. operator delete[](v6);
  70718. result = v7;
  70719. }
  70720. return result;
  70721. }
  70722.  
  70723. //----- (080AAEC0) --------------------------------------------------------
  70724. void __cdecl DBC::DBCFile::DBCFile(DBC::DBCFile *const this, unsigned int id, bool needDecrypt, const char *encryptKey)
  70725. {
  70726. std::vector<DBC::DBCFile::FIELD,std::allocator<DBC::DBCFile::FIELD> > *v4; // eax
  70727. std::vector<__gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> >*,std::allocator<__gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> >*> > *v5; // eax
  70728. std::vector<DBC::DBCFile::FIELD_TYPE,std::allocator<DBC::DBCFile::FIELD_TYPE> > *v6; // edx
  70729. const unsigned int *v7; // eax
  70730. size_t v8; // ebx
  70731. __gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> > **v9; // ST04_4
  70732. __gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> > *__x; // [esp+1Ch] [ebp-60h]
  70733. unsigned int __val; // [esp+20h] [ebp-5Ch]
  70734.  
  70735. v4 = &this->m_vDataBuf;
  70736. v4->_M_impl._M_finish = 0;
  70737. v4->_M_impl._M_end_of_storage = 0;
  70738. v5 = &this->m_hashIndex._M_ht._M_buckets;
  70739. v5->_M_impl._M_finish = 0;
  70740. v5->_M_impl._M_end_of_storage = 0;
  70741. v6 = &this->m_theType;
  70742. this->_vptr_DBCFile = (int (**)(...))&off_80E4DB0;
  70743. this->m_theType._M_impl._M_start = 0;
  70744. v6->_M_impl._M_finish = 0;
  70745. v6->_M_impl._M_end_of_storage = 0;
  70746. this->m_vDataBuf._M_impl._M_start = 0;
  70747. this->m_hashIndex._M_ht._M_buckets._M_impl._M_start = 0;
  70748. this->m_hashIndex._M_ht._M_num_elements = 0;
  70749. __val = 100;
  70750. v7 = std::lower_bound<unsigned long const*,unsigned long>(__gnu_cxx::__stl_prime_list, &_last, &__val);
  70751. if ( v7 == &_last )
  70752. v8 = __gnu_cxx::__stl_prime_list[27];
  70753. else
  70754. v8 = *v7;
  70755. std::vector<__gnu_cxx::_Hashtable_node<std::pair<int const,DBC::DBCFile::FIELD *>> *,std::allocator<__gnu_cxx::_Hashtable_node<std::pair<int const,DBC::DBCFile::FIELD *>> *>>::reserve(
  70756. &this->m_hashIndex._M_ht._M_buckets,
  70757. v8);
  70758. v9 = this->m_hashIndex._M_ht._M_buckets._M_impl._M_finish;
  70759. __x = 0;
  70760. std::vector<__gnu_cxx::_Hashtable_node<std::pair<int const,DBC::DBCFile::FIELD *>> *,std::allocator<__gnu_cxx::_Hashtable_node<std::pair<int const,DBC::DBCFile::FIELD *>> *>>::_M_fill_insert(
  70761. &this->m_hashIndex._M_ht._M_buckets,
  70762. (__gnu_cxx::__normal_iterator<__gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> >**,std::vector<__gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> >*,std::allocator<__gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> >*> > >)v9,
  70763. v8,
  70764. &__x);
  70765. this->m_hashIndex._M_ht._M_num_elements = 0;
  70766. this->m_szCharDecrypeKey[0] = 0;
  70767. this->m_ID = id;
  70768. this->m_pStringBuf = 0;
  70769. this->m_nIndexColum = -1;
  70770. this->m_nRecordsNum = 0;
  70771. this->m_nFieldsNum = 0;
  70772. this->m_bNeedDecrypt = needDecrypt;
  70773. if ( encryptKey )
  70774. snprintf(this->m_szCharDecrypeKey, 0x20u, "%s", encryptKey);
  70775. }
  70776. // 80E4DB0: using guessed type _DWORD (__cdecl *off_80E4DB0)(DBC::DBCFile *this, int iIndex);
  70777.  
  70778. //----- (080AB058) --------------------------------------------------------
  70779. void __cdecl DBC::DBCFile::DBCFile(DBC::DBCFile *const this, unsigned int id, bool needDecrypt, const char *encryptKey)
  70780. {
  70781. std::vector<DBC::DBCFile::FIELD,std::allocator<DBC::DBCFile::FIELD> > *v4; // eax
  70782. std::vector<__gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> >*,std::allocator<__gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> >*> > *v5; // eax
  70783. std::vector<DBC::DBCFile::FIELD_TYPE,std::allocator<DBC::DBCFile::FIELD_TYPE> > *v6; // edx
  70784. const unsigned int *v7; // eax
  70785. size_t v8; // ebx
  70786. __gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> > **v9; // ST04_4
  70787. __gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> > *__x; // [esp+1Ch] [ebp-60h]
  70788. unsigned int __val; // [esp+20h] [ebp-5Ch]
  70789.  
  70790. v4 = &this->m_vDataBuf;
  70791. v4->_M_impl._M_finish = 0;
  70792. v4->_M_impl._M_end_of_storage = 0;
  70793. v5 = &this->m_hashIndex._M_ht._M_buckets;
  70794. v5->_M_impl._M_finish = 0;
  70795. v5->_M_impl._M_end_of_storage = 0;
  70796. v6 = &this->m_theType;
  70797. this->_vptr_DBCFile = (int (**)(...))&off_80E4DB0;
  70798. this->m_theType._M_impl._M_start = 0;
  70799. v6->_M_impl._M_finish = 0;
  70800. v6->_M_impl._M_end_of_storage = 0;
  70801. this->m_vDataBuf._M_impl._M_start = 0;
  70802. this->m_hashIndex._M_ht._M_buckets._M_impl._M_start = 0;
  70803. this->m_hashIndex._M_ht._M_num_elements = 0;
  70804. __val = 100;
  70805. v7 = std::lower_bound<unsigned long const*,unsigned long>(__gnu_cxx::__stl_prime_list, &_last, &__val);
  70806. if ( v7 == &_last )
  70807. v8 = __gnu_cxx::__stl_prime_list[27];
  70808. else
  70809. v8 = *v7;
  70810. std::vector<__gnu_cxx::_Hashtable_node<std::pair<int const,DBC::DBCFile::FIELD *>> *,std::allocator<__gnu_cxx::_Hashtable_node<std::pair<int const,DBC::DBCFile::FIELD *>> *>>::reserve(
  70811. &this->m_hashIndex._M_ht._M_buckets,
  70812. v8);
  70813. v9 = this->m_hashIndex._M_ht._M_buckets._M_impl._M_finish;
  70814. __x = 0;
  70815. std::vector<__gnu_cxx::_Hashtable_node<std::pair<int const,DBC::DBCFile::FIELD *>> *,std::allocator<__gnu_cxx::_Hashtable_node<std::pair<int const,DBC::DBCFile::FIELD *>> *>>::_M_fill_insert(
  70816. &this->m_hashIndex._M_ht._M_buckets,
  70817. (__gnu_cxx::__normal_iterator<__gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> >**,std::vector<__gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> >*,std::allocator<__gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> >*> > >)v9,
  70818. v8,
  70819. &__x);
  70820. this->m_hashIndex._M_ht._M_num_elements = 0;
  70821. this->m_szCharDecrypeKey[0] = 0;
  70822. this->m_ID = id;
  70823. this->m_pStringBuf = 0;
  70824. this->m_nIndexColum = -1;
  70825. this->m_nRecordsNum = 0;
  70826. this->m_nFieldsNum = 0;
  70827. this->m_bNeedDecrypt = needDecrypt;
  70828. if ( encryptKey )
  70829. snprintf(this->m_szCharDecrypeKey, 0x20u, "%s", encryptKey);
  70830. }
  70831. // 80E4DB0: using guessed type _DWORD (__cdecl *off_80E4DB0)(DBC::DBCFile *this, int iIndex);
  70832.  
  70833. //----- (080AB1F0) --------------------------------------------------------
  70834. void __cdecl _tcf_0_215(void *a1)
  70835. {
  70836. std::ios_base::Init::~Init(&std::__ioinit);
  70837. }
  70838.  
  70839. //----- (080AB200) --------------------------------------------------------
  70840. void `global constructor keyed to'DBC::DBCFile::s_funcIsEncryptMemory()
  70841. {
  70842. std::ios_base::Init::Init(&std::__ioinit);
  70843. __cxa_atexit(_tcf_0_215, 0, &_dso_handle);
  70844. }
  70845. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  70846.  
  70847. //----- (080AB22C) --------------------------------------------------------
  70848. BOOL __cdecl DBC::DBCFile::_FieldEqu<(DBC::DBCFile::FIELD_TYPE)0>(const DBC::DBCFile::FIELD *const a, const DBC::DBCFile::FIELD *const b)
  70849. {
  70850. return a->iValue == b->iValue;
  70851. }
  70852.  
  70853. //----- (080AB244) --------------------------------------------------------
  70854. BOOL __cdecl DBC::DBCFile::_FieldEqu<(DBC::DBCFile::FIELD_TYPE)1>(const DBC::DBCFile::FIELD *const a, const DBC::DBCFile::FIELD *const b)
  70855. {
  70856. __int16 v2; // fps
  70857. long double v3; // fst6
  70858. long double v4; // fst7
  70859. bool v5; // c0
  70860. char v6; // c2
  70861. bool v7; // c3
  70862.  
  70863. v3 = *(float *)&a->iValue;
  70864. v4 = *(float *)&b->iValue;
  70865. v5 = v3 < v4;
  70866. v6 = 0;
  70867. v7 = v3 == v4;
  70868. return (HIBYTE(v2) & 0x45) == 64;
  70869. }
  70870.  
  70871. //----- (080AB268) --------------------------------------------------------
  70872. BOOL __cdecl DBC::DBCFile::_FieldEqu<(DBC::DBCFile::FIELD_TYPE)2>(const DBC::DBCFile::FIELD *const a, const DBC::DBCFile::FIELD *const b)
  70873. {
  70874. return strcmp((const char *)a->iValue, (const char *)b->iValue) == 0;
  70875. }
  70876.  
  70877. //----- (080AB28C) --------------------------------------------------------
  70878. const unsigned int *__cdecl std::lower_bound<unsigned long const*,unsigned long>(const unsigned int *__first, const unsigned int *__last, const unsigned int *const __val)
  70879. {
  70880. const unsigned int *v3; // ebx
  70881. int v4; // edx
  70882. int v5; // eax
  70883. const unsigned int *v6; // ecx
  70884.  
  70885. v3 = __first;
  70886. v4 = __last - __first;
  70887. if ( v4 > 0 )
  70888. {
  70889. do
  70890. {
  70891. while ( 1 )
  70892. {
  70893. v5 = v4 >> 1;
  70894. v6 = &v3[v4 >> 1];
  70895. if ( *v6 >= *__val )
  70896. break;
  70897. v4 = v4 - v5 - 1;
  70898. v3 = v6 + 1;
  70899. if ( v4 <= 0 )
  70900. return v3;
  70901. }
  70902. v4 >>= 1;
  70903. }
  70904. while ( v5 > 0 );
  70905. }
  70906. return v3;
  70907. }
  70908.  
  70909. //----- (080AB2CC) --------------------------------------------------------
  70910. void __cdecl __gnu_cxx::hashtable<std::pair<int const,DBC::DBCFile::FIELD *>,int,__gnu_cxx::hash<int>,std::_Select1st<std::pair<int const,DBC::DBCFile::FIELD *>>,std::equal_to<int>,std::allocator<DBC::DBCFile::FIELD *>>::clear(__gnu_cxx::hashtable<std::pair<const int,DBC::DBCFile::FIELD*>,int,__gnu_cxx::hash<int>,std::_Select1st<std::pair<const int,DBC::DBCFile::FIELD*> >,std::equal_to<int>,std::allocator<DBC::DBCFile::FIELD*> > *const this)
  70911. {
  70912. unsigned int v1; // esi
  70913. __gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> > **v2; // edx
  70914. IPRegionTable *v3; // eax
  70915. int (**v4)(...); // ebx
  70916. int v5; // eax
  70917.  
  70918. v1 = 0;
  70919. v2 = this->_M_buckets._M_impl._M_start;
  70920. if ( (_DWORD)((char *)this->_M_buckets._M_impl._M_finish - (char *)v2) >> 2 )
  70921. {
  70922. do
  70923. {
  70924. v3 = (IPRegionTable *)v2[v1];
  70925. if ( v3 )
  70926. {
  70927. do
  70928. {
  70929. v4 = v3->_vptr_IPRegionTable;
  70930. operator delete(v3);
  70931. v3 = (IPRegionTable *)v4;
  70932. }
  70933. while ( v4 );
  70934. v2 = this->_M_buckets._M_impl._M_start;
  70935. }
  70936. v5 = (char *)this->_M_buckets._M_impl._M_finish - (char *)v2;
  70937. v2[v1++] = 0;
  70938. }
  70939. while ( v5 >> 2 > v1 );
  70940. }
  70941. this->_M_num_elements = 0;
  70942. }
  70943.  
  70944. //----- (080AB338) --------------------------------------------------------
  70945. void __cdecl std::fill<__gnu_cxx::__normal_iterator<DBC::DBCFile::FIELD_TYPE *,std::vector<DBC::DBCFile::FIELD_TYPE,std::allocator<DBC::DBCFile::FIELD_TYPE>>>,DBC::DBCFile::FIELD_TYPE>(__gnu_cxx::__normal_iterator<DBC::DBCFile::FIELD_TYPE*,std::vector<DBC::DBCFile::FIELD_TYPE,std::allocator<DBC::DBCFile::FIELD_TYPE> > > __first, __gnu_cxx::__normal_iterator<DBC::DBCFile::FIELD_TYPE*,std::vector<DBC::DBCFile::FIELD_TYPE,std::allocator<DBC::DBCFile::FIELD_TYPE> > > __last, const DBC::DBCFile::FIELD_TYPE *const __value)
  70946. {
  70947. DBC::DBCFile::FIELD_TYPE *v3; // edx
  70948. DBC::DBCFile::FIELD_TYPE *v4; // eax
  70949.  
  70950. if ( __first._M_current != __last._M_current )
  70951. {
  70952. v3 = __first._M_current + 1;
  70953. do
  70954. {
  70955. *(v3 - 1) = *__value;
  70956. v4 = v3;
  70957. ++v3;
  70958. }
  70959. while ( v4 != __last._M_current );
  70960. }
  70961. }
  70962.  
  70963. //----- (080AB360) --------------------------------------------------------
  70964. void __cdecl std::fill<__gnu_cxx::__normal_iterator<char *,std::vector<char,std::allocator<char>>>,char>(__gnu_cxx::__normal_iterator<char*,std::vector<char,std::allocator<char> > > __first, __gnu_cxx::__normal_iterator<char*,std::vector<char,std::allocator<char> > > __last, const char *const __value)
  70965. {
  70966. char *i; // edx
  70967.  
  70968. for ( i = __first._M_current; i != __last._M_current; i = __first._M_current )
  70969. {
  70970. *i = *__value;
  70971. ++__first._M_current;
  70972. }
  70973. }
  70974.  
  70975. //----- (080AB384) --------------------------------------------------------
  70976. void __cdecl std::_Rb_tree<std::string,std::pair<std::string const,int>,std::_Select1st<std::pair<std::string const,int>>,std::less<std::string>,std::allocator<std::pair<std::string const,int>>>::_M_erase(std::_Rb_tree<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::pair<const std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int>,std::_Select1st<std::pair<const std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int> >,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::allocator<std::pair<const std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int> > > *const this, std::_Rb_tree_node<std::pair<const std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int> > *__x)
  70977. {
  70978. std::_Rb_tree_node<std::pair<const std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int> > *i; // ebx
  70979. char *v3; // eax
  70980. int v4; // esi
  70981. std::_Rb_tree_node<std::pair<const std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int> > *v5; // edi
  70982. char v6; // [esp+10h] [ebp-28h]
  70983.  
  70984. for ( i = __x; i; i = v5 )
  70985. {
  70986. std::_Rb_tree<std::string,std::pair<std::string const,int>,std::_Select1st<std::pair<std::string const,int>>,std::less<std::string>,std::allocator<std::pair<std::string const,int>>>::_M_erase(
  70987. this,
  70988. (std::_Rb_tree_node<std::pair<const std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int> > *)i->_M_right);
  70989. v3 = i->_M_value_field.first._M_dataplus._M_p;
  70990. v4 = (int)(v3 - 12);
  70991. v5 = (std::_Rb_tree_node<std::pair<const std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int> > *)i->_M_left;
  70992. if ( &std::string::_Rep::_S_empty_rep_storage != (_UNKNOWN *)(v3 - 12)
  70993. && __gnu_cxx::__exchange_and_add((volatile int *)v3 - 1, -1) <= 0 )
  70994. {
  70995. std::string::_Rep::_M_destroy(v4, &v6);
  70996. }
  70997. operator delete((IPRegionTable *const )i);
  70998. }
  70999. }
  71000. // 8049E18: using guessed type int __cdecl std::string::_Rep::_M_destroy(_DWORD, _DWORD);
  71001.  
  71002. //----- (080AB408) --------------------------------------------------------
  71003. void __cdecl std::fill<__gnu_cxx::__normal_iterator<DBC::DBCFile::FIELD *,std::vector<DBC::DBCFile::FIELD,std::allocator<DBC::DBCFile::FIELD>>>,DBC::DBCFile::FIELD>(__gnu_cxx::__normal_iterator<DBC::DBCFile::FIELD*,std::vector<DBC::DBCFile::FIELD,std::allocator<DBC::DBCFile::FIELD> > > __first, __gnu_cxx::__normal_iterator<DBC::DBCFile::FIELD*,std::vector<DBC::DBCFile::FIELD,std::allocator<DBC::DBCFile::FIELD> > > __last, const DBC::DBCFile::FIELD *const __value)
  71004. {
  71005. DBC::DBCFile::FIELD *v3; // edx
  71006. DBC::DBCFile::FIELD *v4; // eax
  71007.  
  71008. if ( __first._M_current != __last._M_current )
  71009. {
  71010. v3 = __first._M_current + 1;
  71011. do
  71012. {
  71013. v3[-1].fValue = __value->fValue;
  71014. v4 = v3;
  71015. ++v3;
  71016. }
  71017. while ( v4 != __last._M_current );
  71018. }
  71019. }
  71020.  
  71021. //----- (080AB430) --------------------------------------------------------
  71022. void __cdecl std::fill<__gnu_cxx::__normal_iterator<unsigned int *,std::vector<unsigned int,std::allocator<unsigned int>>>,unsigned int>(__gnu_cxx::__normal_iterator<unsigned int*,std::vector<unsigned int,std::allocator<unsigned int> > > __first, __gnu_cxx::__normal_iterator<unsigned int*,std::vector<unsigned int,std::allocator<unsigned int> > > __last, const unsigned int *const __value)
  71023. {
  71024. unsigned int *v3; // edx
  71025. unsigned int *v4; // eax
  71026.  
  71027. if ( __first._M_current != __last._M_current )
  71028. {
  71029. v3 = __first._M_current + 1;
  71030. do
  71031. {
  71032. *(v3 - 1) = *__value;
  71033. v4 = v3;
  71034. ++v3;
  71035. }
  71036. while ( v4 != __last._M_current );
  71037. }
  71038. }
  71039.  
  71040. //----- (080AB458) --------------------------------------------------------
  71041. DBC::DBCFile::FIELD_TYPE *__cdecl std::__uninitialized_fill_n_aux<DBC::DBCFile::FIELD_TYPE *,unsigned int,DBC::DBCFile::FIELD_TYPE>(DBC::DBCFile::FIELD_TYPE *__first, unsigned int __n, const DBC::DBCFile::FIELD_TYPE *const __x, __false_type a4)
  71042. {
  71043. unsigned int v4; // ecx
  71044. DBC::DBCFile::FIELD_TYPE *i; // edx
  71045.  
  71046. v4 = __n;
  71047. for ( i = __first; v4; --v4 )
  71048. {
  71049. if ( i )
  71050. *i = *__x;
  71051. ++i;
  71052. }
  71053. return i;
  71054. }
  71055.  
  71056. //----- (080AB480) --------------------------------------------------------
  71057. __gnu_cxx::__normal_iterator<DBC::DBCFile::FIELD_TYPE*,std::vector<DBC::DBCFile::FIELD_TYPE,std::allocator<DBC::DBCFile::FIELD_TYPE> > > *__userpurge std::__uninitialized_fill_n_aux<__gnu_cxx::__normal_iterator<DBC::DBCFile::FIELD_TYPE *,std::vector<DBC::DBCFile::FIELD_TYPE,std::allocator<DBC::DBCFile::FIELD_TYPE>>>,unsigned int,DBC::DBCFile::FIELD_TYPE>@<eax>(__gnu_cxx::__normal_iterator<DBC::DBCFile::FIELD_TYPE*,std::vector<DBC::DBCFile::FIELD_TYPE,std::allocator<DBC::DBCFile::FIELD_TYPE> > > *retstr, __gnu_cxx::__normal_iterator<DBC::DBCFile::FIELD_TYPE*,std::vector<DBC::DBCFile::FIELD_TYPE,std::allocator<DBC::DBCFile::FIELD_TYPE> > > __first, unsigned int __n, const DBC::DBCFile::FIELD_TYPE *const __x, __false_type a5)
  71058. {
  71059. unsigned int v5; // ecx
  71060. DBC::DBCFile::FIELD_TYPE *v6; // edx
  71061. DBC::DBCFile::FIELD_TYPE *v7; // eax
  71062.  
  71063. v5 = __n;
  71064. retstr->_M_current = __first._M_current;
  71065. if ( __n )
  71066. {
  71067. v6 = __first._M_current;
  71068. do
  71069. {
  71070. if ( v6 )
  71071. *v6 = *__x;
  71072. v7 = v6 + 1;
  71073. --v5;
  71074. ++v6;
  71075. }
  71076. while ( v5 );
  71077. retstr->_M_current = v7;
  71078. }
  71079. return retstr;
  71080. }
  71081.  
  71082. //----- (080AB4B8) --------------------------------------------------------
  71083. DBC::DBCFile::FIELD *__cdecl std::__uninitialized_fill_n_aux<DBC::DBCFile::FIELD *,unsigned int,DBC::DBCFile::FIELD>(DBC::DBCFile::FIELD *__first, unsigned int __n, const DBC::DBCFile::FIELD *const __x, __false_type a4)
  71084. {
  71085. unsigned int v4; // ecx
  71086. DBC::DBCFile::FIELD *i; // edx
  71087.  
  71088. v4 = __n;
  71089. for ( i = __first; v4; --v4 )
  71090. {
  71091. if ( i )
  71092. i->fValue = __x->fValue;
  71093. ++i;
  71094. }
  71095. return i;
  71096. }
  71097.  
  71098. //----- (080AB4E0) --------------------------------------------------------
  71099. __gnu_cxx::__normal_iterator<DBC::DBCFile::FIELD*,std::vector<DBC::DBCFile::FIELD,std::allocator<DBC::DBCFile::FIELD> > > *__userpurge std::__uninitialized_fill_n_aux<__gnu_cxx::__normal_iterator<DBC::DBCFile::FIELD *,std::vector<DBC::DBCFile::FIELD,std::allocator<DBC::DBCFile::FIELD>>>,unsigned int,DBC::DBCFile::FIELD>@<eax>(__gnu_cxx::__normal_iterator<DBC::DBCFile::FIELD*,std::vector<DBC::DBCFile::FIELD,std::allocator<DBC::DBCFile::FIELD> > > *retstr, __gnu_cxx::__normal_iterator<DBC::DBCFile::FIELD*,std::vector<DBC::DBCFile::FIELD,std::allocator<DBC::DBCFile::FIELD> > > __first, unsigned int __n, const DBC::DBCFile::FIELD *const __x, __false_type a5)
  71100. {
  71101. unsigned int v5; // ecx
  71102. DBC::DBCFile::FIELD *v6; // edx
  71103. DBC::DBCFile::FIELD *v7; // eax
  71104.  
  71105. v5 = __n;
  71106. retstr->_M_current = __first._M_current;
  71107. if ( __n )
  71108. {
  71109. v6 = __first._M_current;
  71110. do
  71111. {
  71112. if ( v6 )
  71113. v6->fValue = __x->fValue;
  71114. v7 = v6 + 1;
  71115. --v5;
  71116. ++v6;
  71117. }
  71118. while ( v5 );
  71119. retstr->_M_current = v7;
  71120. }
  71121. return retstr;
  71122. }
  71123.  
  71124. //----- (080AB518) --------------------------------------------------------
  71125. __gnu_cxx::__normal_iterator<char*,std::vector<char,std::allocator<char> > > *__userpurge std::fill_n<__gnu_cxx::__normal_iterator<char *,std::vector<char,std::allocator<char>>>,unsigned int,char>@<eax>(__gnu_cxx::__normal_iterator<char*,std::vector<char,std::allocator<char> > > *retstr, __gnu_cxx::__normal_iterator<char*,std::vector<char,std::allocator<char> > > __first, unsigned int __n, const char *const __value)
  71126. {
  71127. unsigned int v4; // edx
  71128. char *v5; // ecx
  71129. bool i; // zf
  71130.  
  71131. v4 = __n;
  71132. v5 = __first._M_current;
  71133. for ( i = __n == 0; !i; i = v4 == 0 )
  71134. {
  71135. *v5++ = *__value;
  71136. --v4;
  71137. }
  71138. retstr->_M_current = v5;
  71139. return retstr;
  71140. }
  71141.  
  71142. //----- (080AB544) --------------------------------------------------------
  71143. std::_Rb_tree_iterator<std::pair<const std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int> > *__userpurge std::_Rb_tree<std::string,std::pair<std::string const,int>,std::_Select1st<std::pair<std::string const,int>>,std::less<std::string>,std::allocator<std::pair<std::string const,int>>>::find@<eax>(std::_Rb_tree_iterator<std::pair<const std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int> > *retstr, std::_Rb_tree<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::pair<const std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int>,std::_Select1st<std::pair<const std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int> >,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::allocator<std::pair<const std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int> > > *const this, const string *const __k)
  71144. {
  71145. std::_Rb_tree_node_base *v3; // ebx
  71146. unsigned int v4; // eax
  71147. int *v5; // eax
  71148. _BYTE *v6; // esi
  71149. bool v7; // cf
  71150. bool v8; // zf
  71151. int v9; // ecx
  71152. char *v10; // edi
  71153. int v11; // eax
  71154. unsigned int v12; // eax
  71155. std::_Rb_tree_node_base *v13; // ebx
  71156. int *v14; // eax
  71157. std::_Rb_tree_node_base *v15; // edi
  71158. bool v16; // cf
  71159. bool v17; // zf
  71160. int v18; // ecx
  71161. char *v19; // esi
  71162. int v20; // eax
  71163. std::_Rb_tree_node_base *v21; // edx
  71164. std::_Rb_tree_iterator<std::pair<const std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int> > *result; // eax
  71165. unsigned int v23; // [esp+4h] [ebp-44h]
  71166. char *v24; // [esp+8h] [ebp-40h]
  71167. char *v25; // [esp+8h] [ebp-40h]
  71168. unsigned int v26; // [esp+1Ch] [ebp-2Ch]
  71169. unsigned int v27; // [esp+20h] [ebp-28h]
  71170. std::_Rb_tree<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::pair<const std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int>,std::_Select1st<std::pair<const std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int> >,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::allocator<std::pair<const std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int> > > *__y; // [esp+24h] [ebp-24h]
  71171. std::_Rb_tree_node_base *v29; // [esp+2Ch] [ebp-1Ch]
  71172. int v30; // [esp+30h] [ebp-18h]
  71173. unsigned int v31; // [esp+34h] [ebp-14h]
  71174. unsigned int v32; // [esp+38h] [ebp-10h]
  71175.  
  71176. v3 = this->_M_impl._M_header._M_parent;
  71177. __y = (std::_Rb_tree<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::pair<const std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int>,std::_Select1st<std::pair<const std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int> >,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::allocator<std::pair<const std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int> > > *const )((char *)this + 4);
  71178. if ( v3 )
  71179. {
  71180. v24 = __k->_M_dataplus._M_p;
  71181. v26 = *((_DWORD *)__k->_M_dataplus._M_p - 3);
  71182. do
  71183. {
  71184. while ( 1 )
  71185. {
  71186. v4 = *(_DWORD *)(v3[1]._M_color - 12);
  71187. v27 = v4;
  71188. v31 = v26;
  71189. v7 = v26 < v4;
  71190. v32 = v4;
  71191. v5 = (int *)&v31;
  71192. if ( !v7 )
  71193. v5 = (int *)&v32;
  71194. v6 = (_BYTE *)v3[1]._M_color;
  71195. v7 = 0;
  71196. v8 = 1;
  71197. v9 = *v5;
  71198. v10 = v24;
  71199. do
  71200. {
  71201. if ( !v9 )
  71202. break;
  71203. v7 = *v6 < (unsigned __int8)*v10;
  71204. v8 = *v6++ == *v10++;
  71205. --v9;
  71206. }
  71207. while ( v8 );
  71208. v11 = (char)((!v7 && !v8) - v7);
  71209. if ( (!v7 && !v8) == v7 )
  71210. v11 = v27 - v26;
  71211. if ( v11 < 0 )
  71212. break;
  71213. __y = (std::_Rb_tree<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::pair<const std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int>,std::_Select1st<std::pair<const std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int> >,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::allocator<std::pair<const std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int> > > *)v3;
  71214. v3 = v3->_M_left;
  71215. if ( !v3 )
  71216. goto LABEL_13;
  71217. }
  71218. v3 = v3->_M_right;
  71219. }
  71220. while ( v3 );
  71221. }
  71222. LABEL_13:
  71223. if ( __y == (std::_Rb_tree<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::pair<const std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int>,std::_Select1st<std::pair<const std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int> >,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::allocator<std::pair<const std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int> > > *)&this->_M_impl._M_header )
  71224. goto LABEL_26;
  71225. v12 = *((_DWORD *)__k->_M_dataplus._M_p - 3);
  71226. v25 = __k->_M_dataplus._M_p;
  71227. v23 = v12;
  71228. v30 = *((_DWORD *)__k->_M_dataplus._M_p - 3);
  71229. v13 = __y->_M_impl._M_header._M_right[-1]._M_parent;
  71230. v7 = (unsigned int)v13 < v12;
  71231. v29 = __y->_M_impl._M_header._M_right[-1]._M_parent;
  71232. v14 = (int *)&v29;
  71233. if ( !v7 )
  71234. v14 = &v30;
  71235. v15 = __y->_M_impl._M_header._M_right;
  71236. v16 = 0;
  71237. v17 = 1;
  71238. v18 = *v14;
  71239. v19 = v25;
  71240. do
  71241. {
  71242. if ( !v18 )
  71243. break;
  71244. v16 = (unsigned __int8)*v19 < LOBYTE(v15->_M_color);
  71245. v17 = *v19++ == LOBYTE(v15->_M_color);
  71246. v15 = (std::_Rb_tree_node_base *)((char *)v15 + 1);
  71247. --v18;
  71248. }
  71249. while ( v17 );
  71250. v20 = (char)((!v16 && !v17) - v16);
  71251. if ( (!v16 && !v17) == v16 )
  71252. v20 = v23 - (_DWORD)v13;
  71253. v21 = (std::_Rb_tree_node_base *)__y;
  71254. if ( v20 < 0 )
  71255. LABEL_26:
  71256. v21 = &this->_M_impl._M_header;
  71257. result = retstr;
  71258. retstr->_M_node = v21;
  71259. return result;
  71260. }
  71261.  
  71262. //----- (080AB64C) --------------------------------------------------------
  71263. std::_Rb_tree_iterator<std::pair<const std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int> > *__userpurge std::_Rb_tree<std::string,std::pair<std::string const,int>,std::_Select1st<std::pair<std::string const,int>>,std::less<std::string>,std::allocator<std::pair<std::string const,int>>>::_M_insert@<eax>(std::_Rb_tree_iterator<std::pair<const std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int> > *retstr, std::_Rb_tree<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::pair<const std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int>,std::_Select1st<std::pair<const std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int> >,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::allocator<std::pair<const std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int> > > *const this, std::_Rb_tree_node_base *__x, std::_Rb_tree_node_base *__p, const std::pair<const std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int> *const __v)
  71264. {
  71265. std::_Rb_tree_node_base *v5; // eax
  71266. int v6; // esi
  71267. std::_Rb_tree_node_base *v7; // ebx
  71268. char *v9; // edx
  71269. unsigned int v10; // eax
  71270. unsigned int *v11; // eax
  71271. _BYTE *v12; // edi
  71272. bool v13; // cf
  71273. bool v14; // zf
  71274. char *v15; // esi
  71275. unsigned int v16; // ecx
  71276. int v17; // eax
  71277. unsigned int v18; // [esp+18h] [ebp-2Ch]
  71278. bool v19; // [esp+2Bh] [ebp-19h]
  71279. int v20; // [esp+30h] [ebp-14h]
  71280. unsigned int v21; // [esp+34h] [ebp-10h]
  71281.  
  71282. v5 = (std::_Rb_tree_node_base *)operator new(0x18u);
  71283. v6 = (int)&v5[1];
  71284. v7 = v5;
  71285. if ( v5 != (std::_Rb_tree_node_base *)-16 )
  71286. {
  71287. std::string::string((std::string *)&v5[1], (const std::string *)__v);
  71288. *(_DWORD *)(v6 + 4) = __v->second;
  71289. }
  71290. v19 = 0;
  71291. if ( __x || &this->_M_impl._M_header == __p )
  71292. goto LABEL_18;
  71293. v9 = __v->first._M_dataplus._M_p;
  71294. v21 = *((_DWORD *)__v->first._M_dataplus._M_p - 3);
  71295. v10 = *(_DWORD *)(__p[1]._M_color - 12);
  71296. v18 = v10;
  71297. v13 = v10 < v21;
  71298. v20 = *(_DWORD *)(__p[1]._M_color - 12);
  71299. v11 = (unsigned int *)&v20;
  71300. if ( !v13 )
  71301. v11 = &v21;
  71302. v12 = (_BYTE *)__p[1]._M_color;
  71303. v13 = 0;
  71304. v14 = 1;
  71305. v15 = v9;
  71306. v16 = *v11;
  71307. do
  71308. {
  71309. if ( !v16 )
  71310. break;
  71311. v13 = (unsigned __int8)*v15 < *v12;
  71312. v14 = *v15++ == *v12++;
  71313. --v16;
  71314. }
  71315. while ( v14 );
  71316. v17 = (char)((!v13 && !v14) - v13);
  71317. if ( (!v13 && !v14) == v13 )
  71318. v17 = v21 - v18;
  71319. if ( v17 < 0 )
  71320. LABEL_18:
  71321. v19 = 1;
  71322. std::_Rb_tree_insert_and_rebalance(v19, v7, __p, &this->_M_impl._M_header);
  71323. ++this->_M_impl._M_node_count;
  71324. retstr->_M_node = v7;
  71325. return retstr;
  71326. }
  71327.  
  71328. //----- (080AB75C) --------------------------------------------------------
  71329. std::pair<std::_Rb_tree_iterator<std::pair<const std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int> >,bool> *__userpurge std::_Rb_tree<std::string,std::pair<std::string const,int>,std::_Select1st<std::pair<std::string const,int>>,std::less<std::string>,std::allocator<std::pair<std::string const,int>>>::insert_unique@<eax>(std::pair<std::_Rb_tree_iterator<std::pair<const std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int> >,bool> *retstr, std::_Rb_tree<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::pair<const std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int>,std::_Select1st<std::pair<const std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int> >,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::allocator<std::pair<const std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int> > > *const this, const std::pair<const std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int> *const __v)
  71330. {
  71331. unsigned int v3; // eax
  71332. unsigned int v4; // ebx
  71333. int *v5; // eax
  71334. bool v6; // cf
  71335. bool v7; // zf
  71336. char *v8; // edi
  71337. int v9; // ecx
  71338. char *v10; // esi
  71339. unsigned int v11; // eax
  71340. std::_Rb_tree_node<std::pair<const std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int> > *v12; // ebx
  71341. std::_Rb_tree_node_base *v13; // eax
  71342. unsigned int v15; // eax
  71343. unsigned int v16; // edi
  71344. int *v17; // eax
  71345. char *v18; // esi
  71346. bool v19; // cf
  71347. bool v20; // zf
  71348. int v21; // ecx
  71349. char *v22; // edi
  71350. int v23; // eax
  71351. unsigned int v24; // [esp+0h] [ebp-58h]
  71352. char *v25; // [esp+4h] [ebp-54h]
  71353. char *v26; // [esp+4h] [ebp-54h]
  71354. unsigned int v27; // [esp+8h] [ebp-50h]
  71355. unsigned int v28; // [esp+20h] [ebp-38h]
  71356. std::_Rb_tree_node<std::pair<const std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int> > *__y; // [esp+24h] [ebp-34h]
  71357. std::_Rb_tree_node<std::pair<const std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int> > *__x; // [esp+28h] [ebp-30h]
  71358. std::_Rb_tree_iterator<std::pair<const std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int> > v31; // [esp+34h] [ebp-24h]
  71359. unsigned int v32; // [esp+38h] [ebp-20h]
  71360. int v33; // [esp+3Ch] [ebp-1Ch]
  71361. std::_Rb_tree_iterator<std::pair<const std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int> > v34; // [esp+40h] [ebp-18h]
  71362. unsigned int v35; // [esp+44h] [ebp-14h]
  71363. unsigned int v36; // [esp+48h] [ebp-10h]
  71364.  
  71365. __y = (std::_Rb_tree_node<std::pair<const std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int> > *)&this->_M_impl._M_header;
  71366. __x = (std::_Rb_tree_node<std::pair<const std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int> > *)this->_M_impl._M_header._M_parent;
  71367. LOBYTE(v3) = 1;
  71368. if ( __x )
  71369. {
  71370. v25 = __v->first._M_dataplus._M_p;
  71371. v28 = *((_DWORD *)__v->first._M_dataplus._M_p - 3);
  71372. do
  71373. {
  71374. while ( 1 )
  71375. {
  71376. v4 = *((_DWORD *)__x->_M_value_field.first._M_dataplus._M_p - 3);
  71377. __y = __x;
  71378. v36 = v28;
  71379. v35 = v4;
  71380. v5 = (int *)&v35;
  71381. if ( v4 >= v28 )
  71382. v5 = (int *)&v36;
  71383. v6 = 0;
  71384. v7 = 1;
  71385. v8 = __x->_M_value_field.first._M_dataplus._M_p;
  71386. v9 = *v5;
  71387. v10 = v25;
  71388. do
  71389. {
  71390. if ( !v9 )
  71391. break;
  71392. v6 = (unsigned __int8)*v10 < (unsigned __int8)*v8;
  71393. v7 = *v10++ == *v8++;
  71394. --v9;
  71395. }
  71396. while ( v7 );
  71397. v11 = (char)((!v6 && !v7) - v6);
  71398. if ( (!v6 && !v7) == v6 )
  71399. v11 = v28 - v4;
  71400. v3 = v11 >> 31;
  71401. if ( !(_BYTE)v3 )
  71402. break;
  71403. __x = (std::_Rb_tree_node<std::pair<const std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int> > *)__x->_M_left;
  71404. if ( !__x )
  71405. goto LABEL_13;
  71406. }
  71407. __x = (std::_Rb_tree_node<std::pair<const std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int> > *)__x->_M_right;
  71408. }
  71409. while ( __x );
  71410. }
  71411. LABEL_13:
  71412. v12 = __y;
  71413. if ( (_BYTE)v3 )
  71414. {
  71415. if ( __y == (std::_Rb_tree_node<std::pair<const std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int> > *)this->_M_impl._M_header._M_left )
  71416. {
  71417. std::_Rb_tree<std::string,std::pair<std::string const,int>,std::_Select1st<std::pair<std::string const,int>>,std::less<std::string>,std::allocator<std::pair<std::string const,int>>>::_M_insert(
  71418. &v34,
  71419. this,
  71420. &__x->0,
  71421. &__y->0,
  71422. __v);
  71423. v13 = v34._M_node;
  71424. LABEL_16:
  71425. retstr->first._M_node = v13;
  71426. retstr->second = 1;
  71427. return retstr;
  71428. }
  71429. v12 = (std::_Rb_tree_node<std::pair<const std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int> > *)std::_Rb_tree_decrement(&__y->0);
  71430. }
  71431. v15 = *((_DWORD *)v12->_M_value_field.first._M_dataplus._M_p - 3);
  71432. v24 = v15;
  71433. v16 = *((_DWORD *)__v->first._M_dataplus._M_p - 3);
  71434. v26 = __v->first._M_dataplus._M_p;
  71435. v6 = v16 < v15;
  71436. v33 = *((_DWORD *)v12->_M_value_field.first._M_dataplus._M_p - 3);
  71437. v27 = v16;
  71438. v32 = v16;
  71439. v17 = (int *)&v32;
  71440. if ( !v6 )
  71441. v17 = &v33;
  71442. v18 = v12->_M_value_field.first._M_dataplus._M_p;
  71443. v19 = 0;
  71444. v20 = 1;
  71445. v21 = *v17;
  71446. v22 = v26;
  71447. do
  71448. {
  71449. if ( !v21 )
  71450. break;
  71451. v19 = (unsigned __int8)*v18 < (unsigned __int8)*v22;
  71452. v20 = *v18++ == *v22++;
  71453. --v21;
  71454. }
  71455. while ( v20 );
  71456. v23 = (char)((!v19 && !v20) - v19);
  71457. if ( (!v19 && !v20) == v19 )
  71458. v23 = v24 - v27;
  71459. if ( v23 < 0 )
  71460. {
  71461. std::_Rb_tree<std::string,std::pair<std::string const,int>,std::_Select1st<std::pair<std::string const,int>>,std::less<std::string>,std::allocator<std::pair<std::string const,int>>>::_M_insert(
  71462. &v31,
  71463. this,
  71464. &__x->0,
  71465. &__y->0,
  71466. __v);
  71467. v13 = v31._M_node;
  71468. goto LABEL_16;
  71469. }
  71470. retstr->first._M_node = &v12->0;
  71471. retstr->second = 0;
  71472. return retstr;
  71473. }
  71474.  
  71475. //----- (080AB8EC) --------------------------------------------------------
  71476. std::vector<DBC::DBCFile::FIELD_TYPE,std::allocator<DBC::DBCFile::FIELD_TYPE> > *__cdecl std::vector<DBC::DBCFile::FIELD_TYPE,std::allocator<DBC::DBCFile::FIELD_TYPE>>::operator=(std::vector<DBC::DBCFile::FIELD_TYPE,std::allocator<DBC::DBCFile::FIELD_TYPE> > *const this, const std::vector<DBC::DBCFile::FIELD_TYPE,std::allocator<DBC::DBCFile::FIELD_TYPE> > *const __x)
  71477. {
  71478. DBC::DBCFile::FIELD_TYPE *v2; // edx
  71479. DBC::DBCFile::FIELD_TYPE *v3; // esi
  71480. unsigned int v4; // edx
  71481. DBC::DBCFile::FIELD_TYPE *v5; // eax
  71482. unsigned int v6; // eax
  71483. DBC::DBCFile::FIELD_TYPE *v7; // ebx
  71484. DBC::DBCFile::FIELD_TYPE *v8; // ecx
  71485. int v9; // eax
  71486. int v10; // edx
  71487. DBC::DBCFile::FIELD_TYPE *v12; // ebx
  71488. DBC::DBCFile::FIELD_TYPE *v13; // ecx
  71489. signed int j; // edx
  71490. DBC::DBCFile::FIELD_TYPE *v15; // eax
  71491. DBC::DBCFile::FIELD_TYPE *v16; // ecx
  71492. unsigned int v17; // ebx
  71493. DBC::DBCFile::FIELD_TYPE *v18; // eax
  71494. DBC::DBCFile::FIELD_TYPE *v19; // ecx
  71495. DBC::DBCFile::FIELD_TYPE *v20; // ebx
  71496. DBC::DBCFile::FIELD_TYPE *v21; // edx
  71497. DBC::DBCFile::FIELD_TYPE *v22; // eax
  71498. bool i; // zf
  71499. DBC::DBCFile::FIELD_TYPE *v24; // [esp+8h] [ebp-30h]
  71500. DBC::DBCFile::FIELD_TYPE *v25; // [esp+Ch] [ebp-2Ch]
  71501. DBC::DBCFile::FIELD_TYPE *v26; // [esp+10h] [ebp-28h]
  71502. DBC::DBCFile::FIELD_TYPE *v27; // [esp+14h] [ebp-24h]
  71503. unsigned int v28; // [esp+18h] [ebp-20h]
  71504.  
  71505. if ( __x == this )
  71506. return this;
  71507. v2 = __x->_M_impl._M_finish;
  71508. v26 = v2;
  71509. v25 = __x->_M_impl._M_start;
  71510. v3 = this->_M_impl._M_start;
  71511. v4 = v2 - __x->_M_impl._M_start;
  71512. v28 = v4;
  71513. if ( (_DWORD)((char *)this->_M_impl._M_end_of_storage - (char *)this->_M_impl._M_start) >> 2 < v4 )
  71514. {
  71515. v27 = (DBC::DBCFile::FIELD_TYPE *)operator new(4 * v4);
  71516. v18 = v25;
  71517. v19 = v27;
  71518. v20 = v25;
  71519. if ( v25 != v26 )
  71520. {
  71521. do
  71522. {
  71523. if ( v19 )
  71524. *v19 = *v18;
  71525. ++v19;
  71526. i = v20 + 1 == v26;
  71527. ++v20;
  71528. v18 = v20;
  71529. }
  71530. while ( !i );
  71531. }
  71532. v21 = this->_M_impl._M_finish;
  71533. v22 = this->_M_impl._M_start;
  71534. for ( i = this->_M_impl._M_start == v21; !i; i = v22 == v21 )
  71535. ++v22;
  71536. if ( this->_M_impl._M_start )
  71537. operator delete((IPRegionTable *const )this->_M_impl._M_start);
  71538. v3 = v27;
  71539. this->_M_impl._M_start = v27;
  71540. this->_M_impl._M_end_of_storage = &v27[v28];
  71541. }
  71542. else
  71543. {
  71544. v5 = this->_M_impl._M_finish;
  71545. v24 = v5;
  71546. v6 = v5 - v3;
  71547. if ( v6 < v4 )
  71548. {
  71549. v12 = __x->_M_impl._M_start;
  71550. v13 = this->_M_impl._M_start;
  71551. for ( j = v6; j > 0; --j )
  71552. {
  71553. *v13 = *v12;
  71554. ++v12;
  71555. ++v13;
  71556. }
  71557. v15 = (DBC::DBCFile::FIELD_TYPE *)((char *)v25 + (((char *)v24 - (char *)v3) & 0xFFFFFFFC));
  71558. v16 = v24;
  71559. v17 = (unsigned int)v25 + (((char *)v24 - (char *)v3) & 0xFFFFFFFC);
  71560. if ( v15 != v26 )
  71561. {
  71562. do
  71563. {
  71564. if ( v16 )
  71565. *v16 = *v15;
  71566. ++v16;
  71567. i = v17 + 4 == (_DWORD)v26;
  71568. v17 += 4;
  71569. v15 = (DBC::DBCFile::FIELD_TYPE *)v17;
  71570. }
  71571. while ( !i );
  71572. }
  71573. }
  71574. else
  71575. {
  71576. v7 = __x->_M_impl._M_start;
  71577. v8 = this->_M_impl._M_start;
  71578. while ( (signed int)v4 > 0 )
  71579. {
  71580. *v8 = *v7;
  71581. ++v7;
  71582. ++v8;
  71583. --v4;
  71584. }
  71585. if ( v8 != v24 )
  71586. {
  71587. v9 = (int)(v8 + 1);
  71588. do
  71589. {
  71590. v10 = v9;
  71591. v9 += 4;
  71592. }
  71593. while ( (DBC::DBCFile::FIELD_TYPE *)v10 != v24 );
  71594. this->_M_impl._M_finish = &v3[v28];
  71595. return this;
  71596. }
  71597. }
  71598. }
  71599. this->_M_impl._M_finish = &v3[v28];
  71600. return this;
  71601. }
  71602.  
  71603. //----- (080ABA5C) --------------------------------------------------------
  71604. std::pair<__gnu_cxx::_Hashtable_iterator<std::pair<const int,DBC::DBCFile::FIELD*>,int,__gnu_cxx::hash<int>,std::_Select1st<std::pair<const int,DBC::DBCFile::FIELD*> >,std::equal_to<int>,std::allocator<DBC::DBCFile::FIELD*> >,bool> *__userpurge __gnu_cxx::hashtable<std::pair<int const,DBC::DBCFile::FIELD *>,int,__gnu_cxx::hash<int>,std::_Select1st<std::pair<int const,DBC::DBCFile::FIELD *>>,std::equal_to<int>,std::allocator<DBC::DBCFile::FIELD *>>::insert_unique_noresize@<eax>(std::pair<__gnu_cxx::_Hashtable_iterator<std::pair<const int,DBC::DBCFile::FIELD*>,int,__gnu_cxx::hash<int>,std::_Select1st<std::pair<const int,DBC::DBCFile::FIELD*> >,std::equal_to<int>,std::allocator<DBC::DBCFile::FIELD*> >,bool> *retstr, __gnu_cxx::hashtable<std::pair<const int,DBC::DBCFile::FIELD*>,int,__gnu_cxx::hash<int>,std::_Select1st<std::pair<const int,DBC::DBCFile::FIELD*> >,std::equal_to<int>,std::allocator<DBC::DBCFile::FIELD*> > *const this, const std::pair<const int,DBC::DBCFile::FIELD*> *const __obj)
  71605. {
  71606. unsigned int v3; // ST1C_4
  71607. __gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> > *v4; // ebx
  71608. __gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> > *v5; // eax
  71609. bool v6; // zf
  71610. __gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> > *v7; // eax
  71611. __gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> > **v8; // edx
  71612. unsigned int v10; // [esp+10h] [ebp-28h]
  71613.  
  71614. v3 = (_DWORD)((char *)this->_M_buckets._M_impl._M_finish - (char *)this->_M_buckets._M_impl._M_start) >> 2;
  71615. v4 = this->_M_buckets._M_impl._M_start[__obj->first % v3];
  71616. v5 = v4;
  71617. v6 = v4 == 0;
  71618. v10 = __obj->first % v3;
  71619. while ( 1 )
  71620. {
  71621. if ( v6 )
  71622. {
  71623. v7 = (__gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> > *)operator new(0xCu);
  71624. v8 = &this->_M_buckets._M_impl._M_start[v10];
  71625. v7->_M_next = v4;
  71626. *v8 = v7;
  71627. v7->_M_val = *__obj;
  71628. retstr->first._M_cur = v7;
  71629. ++this->_M_num_elements;
  71630. retstr->first._M_ht = this;
  71631. retstr->second = 1;
  71632. return retstr;
  71633. }
  71634. if ( v5->_M_val.first == __obj->first )
  71635. break;
  71636. v5 = v5->_M_next;
  71637. v6 = v5 == 0;
  71638. }
  71639. retstr->first._M_ht = this;
  71640. retstr->first._M_cur = v5;
  71641. retstr->second = 0;
  71642. return retstr;
  71643. }
  71644.  
  71645. //----- (080ABB10) --------------------------------------------------------
  71646. __gnu_cxx::__normal_iterator<std::basic_string<char,std::char_traits<char>,std::allocator<char> >*,std::vector<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > > > *__userpurge std::vector<std::string,std::allocator<std::string>>::erase@<eax>(__gnu_cxx::__normal_iterator<std::basic_string<char,std::char_traits<char>,std::allocator<char> >*,std::vector<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > > > *retstr, std::vector<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > > *const this, __gnu_cxx::__normal_iterator<std::basic_string<char,std::char_traits<char>,std::allocator<char> >*,std::vector<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > > > __first, __gnu_cxx::__normal_iterator<std::basic_string<char,std::char_traits<char>,std::allocator<char> >*,std::vector<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > > > __last)
  71647. {
  71648. string *v4; // esi
  71649. int v5; // ebx
  71650. string *v6; // edi
  71651. std::string *v7; // eax
  71652. __gnu_cxx::__normal_iterator<std::basic_string<char,std::char_traits<char>,std::allocator<char> >*,std::vector<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > > > *result; // eax
  71653. string *v9; // [esp+Ch] [ebp-1Ch]
  71654. string *v10; // [esp+14h] [ebp-14h]
  71655.  
  71656. v4 = __last._M_current;
  71657. v5 = (_DWORD)((char *)this->_M_impl._M_finish - (char *)__last._M_current) >> 2;
  71658. v9 = this->_M_impl._M_finish;
  71659. v6 = __first._M_current;
  71660. if ( v5 > 0 )
  71661. {
  71662. do
  71663. {
  71664. --v5;
  71665. std::string::assign((std::string *)v6, (const std::string *)v4);
  71666. ++v4;
  71667. ++v6;
  71668. }
  71669. while ( v5 > 0 );
  71670. v9 = this->_M_impl._M_finish;
  71671. }
  71672. v7 = (std::string *)v6;
  71673. v10 = v6;
  71674. if ( v6 != v9 )
  71675. {
  71676. do
  71677. {
  71678. std::string::~string(v7);
  71679. v7 = (std::string *)&v10[1];
  71680. ++v10;
  71681. }
  71682. while ( v10 != v9 );
  71683. v9 = this->_M_impl._M_finish;
  71684. }
  71685. this->_M_impl._M_finish = (string *)((char *)v9
  71686. - (((char *)__last._M_current - (char *)__first._M_current) & 0xFFFFFFFC));
  71687. result = retstr;
  71688. retstr->_M_current = __first._M_current;
  71689. return result;
  71690. }
  71691.  
  71692. //----- (080ABBBC) --------------------------------------------------------
  71693. void __cdecl std::fill<__gnu_cxx::__normal_iterator<__gnu_cxx::_Hashtable_node<std::pair<int const,DBC::DBCFile::FIELD *>> **,std::vector<__gnu_cxx::_Hashtable_node<std::pair<int const,DBC::DBCFile::FIELD *>> *,std::allocator<__gnu_cxx::_Hashtable_node<std::pair<int const,DBC::DBCFile::FIELD *>> *>>>,__gnu_cxx::_Hashtable_node<std::pair<int const,DBC::DBCFile::FIELD *>> *>(__gnu_cxx::__normal_iterator<__gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> >**,std::vector<__gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> >*,std::allocator<__gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> >*> > > __first, __gnu_cxx::__normal_iterator<__gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> >**,std::vector<__gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> >*,std::allocator<__gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> >*> > > __last, __gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> > *const *const __value)
  71694. {
  71695. __gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> > **v3; // edx
  71696. __gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> > **v4; // eax
  71697.  
  71698. if ( __first._M_current != __last._M_current )
  71699. {
  71700. v3 = __first._M_current + 1;
  71701. do
  71702. {
  71703. *(v3 - 1) = *__value;
  71704. v4 = v3;
  71705. ++v3;
  71706. }
  71707. while ( v4 != __last._M_current );
  71708. }
  71709. }
  71710.  
  71711. //----- (080ABBE4) --------------------------------------------------------
  71712. unsigned int *__cdecl std::fill_n<unsigned int *,unsigned int,unsigned int>(unsigned int *__first, unsigned int __n, const unsigned int *const __value)
  71713. {
  71714. unsigned int v3; // edx
  71715. unsigned int *v4; // ecx
  71716. bool i; // zf
  71717.  
  71718. v3 = __n;
  71719. v4 = __first;
  71720. for ( i = __n == 0; !i; i = v3 == 0 )
  71721. {
  71722. *v4 = *__value;
  71723. ++v4;
  71724. --v3;
  71725. }
  71726. return v4;
  71727. }
  71728.  
  71729. //----- (080ABC08) --------------------------------------------------------
  71730. __gnu_cxx::__normal_iterator<unsigned int*,std::vector<unsigned int,std::allocator<unsigned int> > > *__userpurge std::fill_n<__gnu_cxx::__normal_iterator<unsigned int *,std::vector<unsigned int,std::allocator<unsigned int>>>,unsigned int,unsigned int>@<eax>(__gnu_cxx::__normal_iterator<unsigned int*,std::vector<unsigned int,std::allocator<unsigned int> > > *retstr, __gnu_cxx::__normal_iterator<unsigned int*,std::vector<unsigned int,std::allocator<unsigned int> > > __first, unsigned int __n, const unsigned int *const __value)
  71731. {
  71732. unsigned int v4; // edx
  71733. unsigned int *v5; // ecx
  71734. bool i; // zf
  71735.  
  71736. v4 = __n;
  71737. v5 = __first._M_current;
  71738. for ( i = __n == 0; !i; i = v4 == 0 )
  71739. {
  71740. *v5 = *__value;
  71741. ++v5;
  71742. --v4;
  71743. }
  71744. retstr->_M_current = v5;
  71745. return retstr;
  71746. }
  71747.  
  71748. //----- (080ABC34) --------------------------------------------------------
  71749. __gnu_cxx::__normal_iterator<char*,std::vector<char,std::allocator<char> > > *__userpurge std::vector<char,std::allocator<char>>::erase@<eax>(__gnu_cxx::__normal_iterator<char*,std::vector<char,std::allocator<char> > > *retstr, std::vector<char,std::allocator<char> > *const this, __gnu_cxx::__normal_iterator<char*,std::vector<char,std::allocator<char> > > __first, __gnu_cxx::__normal_iterator<char*,std::vector<char,std::allocator<char> > > __last)
  71750. {
  71751. memmove(__first._M_current, __last._M_current, this->_M_impl._M_finish - __last._M_current);
  71752. this->_M_impl._M_finish -= __last._M_current - __first._M_current;
  71753. retstr->_M_current = __first._M_current;
  71754. return retstr;
  71755. }
  71756.  
  71757. //----- (080ABC70) --------------------------------------------------------
  71758. __gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> > **__cdecl std::fill_n<__gnu_cxx::_Hashtable_node<std::pair<int const,DBC::DBCFile::FIELD *>> **,unsigned int,__gnu_cxx::_Hashtable_node<std::pair<int const,DBC::DBCFile::FIELD *>> *>(__gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> > **__first, unsigned int __n, __gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> > *const *const __value)
  71759. {
  71760. unsigned int v3; // edx
  71761. __gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> > **v4; // ecx
  71762. bool i; // zf
  71763.  
  71764. v3 = __n;
  71765. v4 = __first;
  71766. for ( i = __n == 0; !i; i = v3 == 0 )
  71767. {
  71768. *v4 = *__value;
  71769. ++v4;
  71770. --v3;
  71771. }
  71772. return v4;
  71773. }
  71774.  
  71775. //----- (080ABC94) --------------------------------------------------------
  71776. void __cdecl __gnu_cxx::hashtable<std::pair<int const,DBC::DBCFile::FIELD *>,int,__gnu_cxx::hash<int>,std::_Select1st<std::pair<int const,DBC::DBCFile::FIELD *>>,std::equal_to<int>,std::allocator<DBC::DBCFile::FIELD *>>::resize(__gnu_cxx::hashtable<std::pair<const int,DBC::DBCFile::FIELD*>,int,__gnu_cxx::hash<int>,std::_Select1st<std::pair<const int,DBC::DBCFile::FIELD*> >,std::equal_to<int>,std::allocator<DBC::DBCFile::FIELD*> > *const this, size_t __num_elements_hint)
  71777. {
  71778. size_t v2; // edi
  71779. unsigned int *v3; // eax
  71780. __gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> > **v4; // eax
  71781. __gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> > **v5; // esi
  71782. __gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> > *v6; // ebx
  71783. int v7; // edx
  71784. __gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> > **v8; // ecx
  71785. __gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> > **v9; // edx
  71786. __gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> > **v10; // edx
  71787. __gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> > **v11; // edx
  71788. __gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> > **v12; // [esp+0h] [ebp-58h]
  71789. __gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> > **v13; // [esp+4h] [ebp-54h]
  71790. int v14; // [esp+8h] [ebp-50h]
  71791. size_t __bucket; // [esp+Ch] [ebp-4Ch]
  71792. unsigned int __n; // [esp+10h] [ebp-48h]
  71793. __gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> > *__value; // [esp+18h] [ebp-40h]
  71794. unsigned int __val; // [esp+1Ch] [ebp-3Ch]
  71795. std::vector<__gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> >*,std::allocator<__gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> >*> > __tmp; // [esp+30h] [ebp-28h]
  71796.  
  71797. v2 = (_DWORD)((char *)this->_M_buckets._M_impl._M_finish - (char *)this->_M_buckets._M_impl._M_start) >> 2;
  71798. if ( __num_elements_hint > v2 )
  71799. {
  71800. __val = __num_elements_hint;
  71801. v3 = (unsigned int *)std::lower_bound<unsigned long const*,unsigned long>(
  71802. __gnu_cxx::__stl_prime_list,
  71803. &_last,
  71804. &__val);
  71805. __n = v3 == &_last ? __gnu_cxx::__stl_prime_list[27] : *v3;
  71806. if ( __n > v2 )
  71807. {
  71808. __value = 0;
  71809. __tmp._M_impl._M_start = 0;
  71810. __tmp._M_impl._M_finish = 0;
  71811. __tmp._M_impl._M_end_of_storage = 0;
  71812. v4 = (__gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> > **)operator new(4 * __n);
  71813. __tmp._M_impl._M_end_of_storage = &v4[__n];
  71814. __tmp._M_impl._M_start = v4;
  71815. __tmp._M_impl._M_finish = v4;
  71816. __tmp._M_impl._M_finish = std::fill_n<__gnu_cxx::_Hashtable_node<std::pair<int const,DBC::DBCFile::FIELD *>> **,unsigned int,__gnu_cxx::_Hashtable_node<std::pair<int const,DBC::DBCFile::FIELD *>> *>(
  71817. v4,
  71818. __n,
  71819. &__value);
  71820. __bucket = 0;
  71821. v5 = this->_M_buckets._M_impl._M_start;
  71822. v13 = __tmp._M_impl._M_start;
  71823. while ( __bucket < v2 )
  71824. {
  71825. v6 = v5[__bucket];
  71826. if ( v6 )
  71827. {
  71828. v14 = __bucket;
  71829. v12 = this->_M_buckets._M_impl._M_start;
  71830. do
  71831. {
  71832. v7 = v6->_M_val.first % __n;
  71833. v8 = &v5[v14];
  71834. *v8 = v6->_M_next;
  71835. v9 = &v13[v7];
  71836. v6->_M_next = *v9;
  71837. *v9 = v6;
  71838. v6 = v5[v14];
  71839. v5 = v12;
  71840. }
  71841. while ( *v8 );
  71842. }
  71843. ++__bucket;
  71844. }
  71845. this->_M_buckets._M_impl._M_start = v13;
  71846. __tmp._M_impl._M_start = v5;
  71847. v10 = this->_M_buckets._M_impl._M_finish;
  71848. this->_M_buckets._M_impl._M_finish = __tmp._M_impl._M_finish;
  71849. __tmp._M_impl._M_finish = v10;
  71850. v11 = this->_M_buckets._M_impl._M_end_of_storage;
  71851. this->_M_buckets._M_impl._M_end_of_storage = __tmp._M_impl._M_end_of_storage;
  71852. __tmp._M_impl._M_end_of_storage = v11;
  71853. if ( __tmp._M_impl._M_start )
  71854. operator delete((IPRegionTable *const )__tmp._M_impl._M_start);
  71855. }
  71856. }
  71857. }
  71858.  
  71859. //----- (080ABDF8) --------------------------------------------------------
  71860. void __cdecl std::vector<std::string,std::allocator<std::string>>::_M_insert_aux(std::vector<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > > *const this, __gnu_cxx::__normal_iterator<std::basic_string<char,std::char_traits<char>,std::allocator<char> >*,std::vector<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > > > __position, const string *const __x)
  71861. {
  71862. string *v3; // esi
  71863. string *v4; // eax
  71864. const std::string *v5; // esi
  71865. signed int v6; // ebx
  71866. std::string *k; // edi
  71867. char *v8; // ebx
  71868. signed int v9; // eax
  71869. string *v10; // eax
  71870. string *v11; // ebx
  71871. std::string *v12; // esi
  71872. string *i; // eax
  71873. __gnu_cxx::__normal_iterator<std::basic_string<char,std::char_traits<char>,std::allocator<char> >*,std::vector<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > > > __new_finish; // ST18_4
  71874. string *v15; // ebx
  71875. string *v16; // esi
  71876. string *v17; // eax
  71877. string *j; // ebx
  71878. std::string *__cur; // [esp+0h] [ebp-58h]
  71879. string *v20; // [esp+Ch] [ebp-4Ch]
  71880. size_t __len; // [esp+10h] [ebp-48h]
  71881. char v22; // [esp+20h] [ebp-38h]
  71882. string __x_copy; // [esp+30h] [ebp-28h]
  71883.  
  71884. v3 = this->_M_impl._M_finish;
  71885. if ( v3 == this->_M_impl._M_end_of_storage )
  71886. {
  71887. v9 = v3 - this->_M_impl._M_start;
  71888. __len = 1;
  71889. if ( v9 )
  71890. __len = 2 * v9;
  71891. v10 = (string *)operator new(4 * __len);
  71892. v11 = this->_M_impl._M_start;
  71893. v20 = v10;
  71894. v12 = (std::string *)v10;
  71895. for ( i = this->_M_impl._M_start; i != __position._M_current; v11 = i )
  71896. {
  71897. if ( v12 )
  71898. std::string::string(v12, (const std::string *)i);
  71899. i = v11 + 1;
  71900. v12 = (std::string *)((char *)v12 + 4);
  71901. }
  71902. if ( v12 )
  71903. std::string::string(v12, (const std::string *)__x);
  71904. __new_finish._M_current = (string *)((char *)v12 + 4);
  71905. v15 = __position._M_current;
  71906. v16 = this->_M_impl._M_finish;
  71907. __cur = (std::string *)__new_finish._M_current;
  71908. v17 = __position._M_current;
  71909. if ( __position._M_current != v16 )
  71910. {
  71911. do
  71912. {
  71913. if ( __cur )
  71914. std::string::string(__cur, (const std::string *)v17);
  71915. v17 = v15 + 1;
  71916. __cur = (std::string *)((char *)__cur + 4);
  71917. ++v15;
  71918. }
  71919. while ( v15 != v16 );
  71920. v16 = this->_M_impl._M_finish;
  71921. }
  71922. for ( j = this->_M_impl._M_start; j != v16; ++j )
  71923. std::string::~string((std::string *)j);
  71924. if ( this->_M_impl._M_start )
  71925. operator delete((IPRegionTable *const )this->_M_impl._M_start);
  71926. this->_M_impl._M_start = v20;
  71927. this->_M_impl._M_finish = (string *)__cur;
  71928. this->_M_impl._M_end_of_storage = &v20[__len];
  71929. }
  71930. else
  71931. {
  71932. if ( v3 )
  71933. {
  71934. std::string::string((std::string *)v3, (const std::string *)&v3[-1]);
  71935. v3 = this->_M_impl._M_finish;
  71936. }
  71937. this->_M_impl._M_finish = v3 + 1;
  71938. std::string::string((std::string *)&__x_copy, (const std::string *)__x);
  71939. v4 = this->_M_impl._M_finish;
  71940. v5 = (const std::string *)&v4[-2];
  71941. v6 = &v4[-2] - __position._M_current;
  71942. for ( k = (std::string *)&v4[-1]; v6 > 0; --v6 )
  71943. {
  71944. v5 = (const std::string *)((char *)v5 - 4);
  71945. k = (std::string *)((char *)k - 4);
  71946. std::string::assign(k, v5);
  71947. }
  71948. std::string::assign((std::string *)__position._M_current, (const std::string *)&__x_copy);
  71949. v8 = __x_copy._M_dataplus._M_p - 12;
  71950. if ( __x_copy._M_dataplus._M_p - 12 != (char *)&std::string::_Rep::_S_empty_rep_storage
  71951. && __gnu_cxx::__exchange_and_add((volatile int *)__x_copy._M_dataplus._M_p - 1, -1) <= 0 )
  71952. {
  71953. std::string::_Rep::_M_destroy(v8, &v22);
  71954. }
  71955. }
  71956. }
  71957. // 8049E18: using guessed type int __cdecl std::string::_Rep::_M_destroy(_DWORD, _DWORD);
  71958.  
  71959. //----- (080AC108) --------------------------------------------------------
  71960. __gnu_cxx::__normal_iterator<__gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> >**,std::vector<__gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> >*,std::allocator<__gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> >*> > > *__userpurge std::fill_n<__gnu_cxx::__normal_iterator<__gnu_cxx::_Hashtable_node<std::pair<int const,DBC::DBCFile::FIELD *>> **,std::vector<__gnu_cxx::_Hashtable_node<std::pair<int const,DBC::DBCFile::FIELD *>> *,std::allocator<__gnu_cxx::_Hashtable_node<std::pair<int const,DBC::DBCFile::FIELD *>> *>>>,unsigned int,__gnu_cxx::_Hashtable_node<std::pair<int const,DBC::DBCFile::FIELD *>> *>@<eax>(__gnu_cxx::__normal_iterator<__gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> >**,std::vector<__gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> >*,std::allocator<__gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> >*> > > *retstr, __gnu_cxx::__normal_iterator<__gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> >**,std::vector<__gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> >*,std::allocator<__gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> >*> > > __first, unsigned int __n, __gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> > *const *const __value)
  71961. {
  71962. unsigned int v4; // edx
  71963. __gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> > **v5; // ecx
  71964. bool i; // zf
  71965.  
  71966. v4 = __n;
  71967. v5 = __first._M_current;
  71968. for ( i = __n == 0; !i; i = v4 == 0 )
  71969. {
  71970. *v5 = *__value;
  71971. ++v5;
  71972. --v4;
  71973. }
  71974. retstr->_M_current = v5;
  71975. return retstr;
  71976. }
  71977.  
  71978. //----- (080AC134) --------------------------------------------------------
  71979. __gnu_cxx::__normal_iterator<unsigned int*,std::vector<unsigned int,std::allocator<unsigned int> > > *__userpurge std::vector<unsigned int,std::allocator<unsigned int>>::erase@<eax>(__gnu_cxx::__normal_iterator<unsigned int*,std::vector<unsigned int,std::allocator<unsigned int> > > *retstr, std::vector<unsigned int,std::allocator<unsigned int> > *const this, __gnu_cxx::__normal_iterator<unsigned int*,std::vector<unsigned int,std::allocator<unsigned int> > > __first, __gnu_cxx::__normal_iterator<unsigned int*,std::vector<unsigned int,std::allocator<unsigned int> > > __last)
  71980. {
  71981. memmove(__first._M_current, __last._M_current, (char *)this->_M_impl._M_finish - (char *)__last._M_current);
  71982. this->_M_impl._M_finish = (unsigned int *)((char *)this->_M_impl._M_finish
  71983. - (((char *)__last._M_current - (char *)__first._M_current) & 0xFFFFFFFC));
  71984. retstr->_M_current = __first._M_current;
  71985. return retstr;
  71986. }
  71987.  
  71988. //----- (080AC174) --------------------------------------------------------
  71989. __gnu_cxx::__normal_iterator<DBC::DBCFile::FIELD_TYPE*,std::vector<DBC::DBCFile::FIELD_TYPE,std::allocator<DBC::DBCFile::FIELD_TYPE> > > *__userpurge std::vector<DBC::DBCFile::FIELD_TYPE,std::allocator<DBC::DBCFile::FIELD_TYPE>>::erase@<eax>(__gnu_cxx::__normal_iterator<DBC::DBCFile::FIELD_TYPE*,std::vector<DBC::DBCFile::FIELD_TYPE,std::allocator<DBC::DBCFile::FIELD_TYPE> > > *retstr, std::vector<DBC::DBCFile::FIELD_TYPE,std::allocator<DBC::DBCFile::FIELD_TYPE> > *const this, __gnu_cxx::__normal_iterator<DBC::DBCFile::FIELD_TYPE*,std::vector<DBC::DBCFile::FIELD_TYPE,std::allocator<DBC::DBCFile::FIELD_TYPE> > > __first, __gnu_cxx::__normal_iterator<DBC::DBCFile::FIELD_TYPE*,std::vector<DBC::DBCFile::FIELD_TYPE,std::allocator<DBC::DBCFile::FIELD_TYPE> > > __last)
  71990. {
  71991. DBC::DBCFile::FIELD_TYPE *v4; // esi
  71992. DBC::DBCFile::FIELD_TYPE *v5; // ebx
  71993. DBC::DBCFile::FIELD_TYPE *v6; // ecx
  71994. int i; // edx
  71995. int v8; // eax
  71996. DBC::DBCFile::FIELD_TYPE *v9; // edx
  71997. __gnu_cxx::__normal_iterator<DBC::DBCFile::FIELD_TYPE*,std::vector<DBC::DBCFile::FIELD_TYPE,std::allocator<DBC::DBCFile::FIELD_TYPE> > > *result; // eax
  71998.  
  71999. v4 = this->_M_impl._M_finish;
  72000. v5 = __last._M_current;
  72001. v6 = __first._M_current;
  72002. for ( i = (_DWORD)((char *)this->_M_impl._M_finish - (char *)__last._M_current) >> 2; i > 0; --i )
  72003. {
  72004. *v6 = *v5;
  72005. ++v5;
  72006. ++v6;
  72007. }
  72008. if ( v6 != v4 )
  72009. {
  72010. v8 = (int)(v6 + 1);
  72011. do
  72012. {
  72013. v9 = (DBC::DBCFile::FIELD_TYPE *)v8;
  72014. v8 += 4;
  72015. }
  72016. while ( v9 != v4 );
  72017. }
  72018. this->_M_impl._M_finish = (DBC::DBCFile::FIELD_TYPE *)((char *)v4
  72019. - (((char *)__last._M_current - (char *)__first._M_current) & 0xFFFFFFFC));
  72020. result = retstr;
  72021. retstr->_M_current = __first._M_current;
  72022. return result;
  72023. }
  72024.  
  72025. //----- (080AC1E4) --------------------------------------------------------
  72026. __gnu_cxx::__normal_iterator<DBC::DBCFile::FIELD*,std::vector<DBC::DBCFile::FIELD,std::allocator<DBC::DBCFile::FIELD> > > *__userpurge std::vector<DBC::DBCFile::FIELD,std::allocator<DBC::DBCFile::FIELD>>::erase@<eax>(__gnu_cxx::__normal_iterator<DBC::DBCFile::FIELD*,std::vector<DBC::DBCFile::FIELD,std::allocator<DBC::DBCFile::FIELD> > > *retstr, std::vector<DBC::DBCFile::FIELD,std::allocator<DBC::DBCFile::FIELD> > *const this, __gnu_cxx::__normal_iterator<DBC::DBCFile::FIELD*,std::vector<DBC::DBCFile::FIELD,std::allocator<DBC::DBCFile::FIELD> > > __first, __gnu_cxx::__normal_iterator<DBC::DBCFile::FIELD*,std::vector<DBC::DBCFile::FIELD,std::allocator<DBC::DBCFile::FIELD> > > __last)
  72027. {
  72028. DBC::DBCFile::FIELD *v4; // esi
  72029. DBC::DBCFile::FIELD *v5; // ebx
  72030. DBC::DBCFile::FIELD *v6; // ecx
  72031. int i; // edx
  72032. int v8; // eax
  72033. DBC::DBCFile::FIELD *v9; // edx
  72034. __gnu_cxx::__normal_iterator<DBC::DBCFile::FIELD*,std::vector<DBC::DBCFile::FIELD,std::allocator<DBC::DBCFile::FIELD> > > *result; // eax
  72035.  
  72036. v4 = this->_M_impl._M_finish;
  72037. v5 = __last._M_current;
  72038. v6 = __first._M_current;
  72039. for ( i = (_DWORD)((char *)this->_M_impl._M_finish - (char *)__last._M_current) >> 2; i > 0; --i )
  72040. {
  72041. v6->fValue = v5->fValue;
  72042. ++v5;
  72043. ++v6;
  72044. }
  72045. if ( v6 != v4 )
  72046. {
  72047. v8 = (int)&v6[1];
  72048. do
  72049. {
  72050. v9 = (DBC::DBCFile::FIELD *)v8;
  72051. v8 += 4;
  72052. }
  72053. while ( v9 != v4 );
  72054. }
  72055. this->_M_impl._M_finish = (DBC::DBCFile::FIELD *)((char *)v4
  72056. - (((char *)__last._M_current - (char *)__first._M_current) & 0xFFFFFFFC));
  72057. result = retstr;
  72058. retstr->_M_current = __first._M_current;
  72059. return result;
  72060. }
  72061.  
  72062. //----- (080AC254) --------------------------------------------------------
  72063. void __cdecl std::vector<char,std::allocator<char>>::_M_fill_insert(std::vector<char,std::allocator<char> > *const this, __gnu_cxx::__normal_iterator<char*,std::vector<char,std::allocator<char> > > __position, size_t __n, const char *const __x)
  72064. {
  72065. char *v4; // ecx
  72066. char *v5; // esi
  72067. unsigned __int8 v6; // al
  72068. unsigned int v7; // ebx
  72069. char *v8; // ecx
  72070. _DWORD *v9; // ecx
  72071. int v10; // ebx
  72072. size_t v11; // ebx
  72073. char *v12; // esi
  72074. char *v13; // ebx
  72075. size_t v14; // edx
  72076. char *dest; // [esp+4h] [ebp-24h]
  72077. unsigned int __len; // [esp+8h] [ebp-20h]
  72078. const char *__x_0; // [esp+Ch] [ebp-1Ch]
  72079. __gnu_cxx::__normal_iterator<char*,std::vector<char,std::allocator<char> > > v18; // [esp+10h] [ebp-18h]
  72080. const size_t __old_size; // [esp+14h] [ebp-14h]
  72081. char __x_copy; // [esp+1Bh] [ebp-Dh]
  72082.  
  72083. __x_0 = __x;
  72084. if ( __n )
  72085. {
  72086. v4 = this->_M_impl._M_finish;
  72087. v5 = this->_M_impl._M_finish;
  72088. if ( this->_M_impl._M_end_of_storage - v4 < __n )
  72089. {
  72090. __old_size = v4 - this->_M_impl._M_start;
  72091. v9 = &__n;
  72092. if ( __old_size >= __n )
  72093. v9 = &__old_size;
  72094. __len = *v9 + __old_size;
  72095. dest = (char *)operator new(__len);
  72096. v10 = __position._M_current - this->_M_impl._M_start;
  72097. memmove(dest, this->_M_impl._M_start, __position._M_current - this->_M_impl._M_start);
  72098. std::fill_n<__gnu_cxx::__normal_iterator<char *,std::vector<char,std::allocator<char>>>,unsigned int,char>(
  72099. &v18,
  72100. (__gnu_cxx::__normal_iterator<char*,std::vector<char,std::allocator<char> > >)&dest[v10],
  72101. __n,
  72102. __x_0);
  72103. v11 = this->_M_impl._M_finish - __position._M_current;
  72104. v12 = v18._M_current;
  72105. memmove(v18._M_current, __position._M_current, v11);
  72106. v13 = &v12[v11];
  72107. if ( this->_M_impl._M_start )
  72108. operator delete((IPRegionTable *const )this->_M_impl._M_start);
  72109. this->_M_impl._M_start = dest;
  72110. this->_M_impl._M_finish = v13;
  72111. this->_M_impl._M_end_of_storage = &dest[__len];
  72112. }
  72113. else
  72114. {
  72115. v6 = *__x;
  72116. v7 = v4 - __position._M_current;
  72117. __x_copy = *__x;
  72118. if ( v4 - __position._M_current > __n )
  72119. {
  72120. memmove(v4, &v4[-__n], __n);
  72121. v14 = (size_t)&v5[-__n];
  72122. this->_M_impl._M_finish += __n;
  72123. memmove(
  72124. &v5[-(v14 - (unsigned int)__position._M_current)],
  72125. __position._M_current,
  72126. v14 - (unsigned int)__position._M_current);
  72127. std::fill<__gnu_cxx::__normal_iterator<char *,std::vector<char,std::allocator<char>>>,char>(
  72128. __position,
  72129. (__gnu_cxx::__normal_iterator<char*,std::vector<char,std::allocator<char> > >)&__position._M_current[__n],
  72130. &__x_copy);
  72131. }
  72132. else
  72133. {
  72134. memset(v4, v6, __n - v7);
  72135. v8 = &this->_M_impl._M_finish[__n - v7];
  72136. this->_M_impl._M_finish = v8;
  72137. memmove(v8, __position._M_current, v5 - __position._M_current);
  72138. this->_M_impl._M_finish += v7;
  72139. std::fill<__gnu_cxx::__normal_iterator<char *,std::vector<char,std::allocator<char>>>,char>(
  72140. __position,
  72141. (__gnu_cxx::__normal_iterator<char*,std::vector<char,std::allocator<char> > >)v5,
  72142. &__x_copy);
  72143. }
  72144. }
  72145. }
  72146. }
  72147.  
  72148. //----- (080AC3B0) --------------------------------------------------------
  72149. void __cdecl std::vector<DBC::DBCFile::FIELD,std::allocator<DBC::DBCFile::FIELD>>::_M_insert_aux(std::vector<DBC::DBCFile::FIELD,std::allocator<DBC::DBCFile::FIELD> > *const this, __gnu_cxx::__normal_iterator<DBC::DBCFile::FIELD*,std::vector<DBC::DBCFile::FIELD,std::allocator<DBC::DBCFile::FIELD> > > __position, const DBC::DBCFile::FIELD *const __x)
  72150. {
  72151. DBC::DBCFile::FIELD *v3; // ecx
  72152. DBC::DBCFile::FIELD *v4; // eax
  72153. char *v5; // ecx
  72154. int v6; // esi
  72155. int *v7; // ebx
  72156. signed int i; // edx
  72157. signed int v9; // eax
  72158. DBC::DBCFile::FIELD *v10; // eax
  72159. IPRegionTable *v11; // edi
  72160. DBC::DBCFile::FIELD *v12; // ebx
  72161. DBC::DBCFile::FIELD *v13; // ecx
  72162. DBC::DBCFile::FIELD *v14; // eax
  72163. bool v15; // zf
  72164. DBC::DBCFile::FIELD *v16; // ecx
  72165. DBC::DBCFile::FIELD *v17; // ebx
  72166. DBC::DBCFile::FIELD *v18; // eax
  72167. DBC::DBCFile::FIELD *v19; // esi
  72168. int v20; // eax
  72169. DBC::DBCFile::FIELD *v21; // edx
  72170. DBC::DBCFile::FIELD *v22; // [esp+0h] [ebp-28h]
  72171. size_t __len; // [esp+4h] [ebp-24h]
  72172.  
  72173. v3 = this->_M_impl._M_finish;
  72174. if ( v3 == this->_M_impl._M_end_of_storage )
  72175. {
  72176. v9 = v3 - this->_M_impl._M_start;
  72177. __len = 1;
  72178. if ( v9 )
  72179. __len = 2 * v9;
  72180. v10 = (DBC::DBCFile::FIELD *)operator new(4 * __len);
  72181. v11 = (IPRegionTable *)this->_M_impl._M_start;
  72182. v22 = v10;
  72183. v12 = v10;
  72184. v13 = this->_M_impl._M_start;
  72185. v14 = this->_M_impl._M_start;
  72186. if ( this->_M_impl._M_start != __position._M_current )
  72187. {
  72188. do
  72189. {
  72190. if ( v12 )
  72191. v12->fValue = v14->fValue;
  72192. ++v12;
  72193. v15 = &v13[1] == __position._M_current;
  72194. ++v13;
  72195. v14 = v13;
  72196. }
  72197. while ( !v15 );
  72198. }
  72199. if ( v12 )
  72200. v12->fValue = __x->fValue;
  72201. v16 = this->_M_impl._M_finish;
  72202. v17 = v12 + 1;
  72203. v18 = __position._M_current;
  72204. v19 = __position._M_current;
  72205. if ( __position._M_current != v16 )
  72206. {
  72207. do
  72208. {
  72209. if ( v17 )
  72210. v17->fValue = v18->fValue;
  72211. ++v17;
  72212. v15 = &v19[1] == v16;
  72213. ++v19;
  72214. v18 = v19;
  72215. }
  72216. while ( !v15 );
  72217. }
  72218. if ( v11 != (IPRegionTable *)v16 )
  72219. {
  72220. v20 = (int)&v11->m_MaxRegionCount;
  72221. do
  72222. {
  72223. v21 = (DBC::DBCFile::FIELD *)v20;
  72224. v20 += 4;
  72225. }
  72226. while ( v21 != v16 );
  72227. }
  72228. if ( v11 )
  72229. operator delete(v11);
  72230. this->_M_impl._M_start = v22;
  72231. this->_M_impl._M_finish = v17;
  72232. this->_M_impl._M_end_of_storage = &v22[__len];
  72233. }
  72234. else
  72235. {
  72236. if ( v3 )
  72237. LODWORD(v3->fValue) = v3[-1];
  72238. v4 = v3;
  72239. this->_M_impl._M_finish = v3 + 1;
  72240. v5 = (char *)&v3[-1];
  72241. v6 = __x->iValue;
  72242. v7 = (int *)v4;
  72243. for ( i = (v5 - (char *)__position._M_current) >> 2; i > 0; --i )
  72244. {
  72245. v5 -= 4;
  72246. --v7;
  72247. *v7 = *(_DWORD *)v5;
  72248. }
  72249. __position._M_current->iValue = v6;
  72250. }
  72251. }
  72252.  
  72253. //----- (080AC4FC) --------------------------------------------------------
  72254. void __cdecl std::vector<DBC::DBCFile::FIELD,std::allocator<DBC::DBCFile::FIELD>>::_M_fill_insert(std::vector<DBC::DBCFile::FIELD,std::allocator<DBC::DBCFile::FIELD> > *const this, __gnu_cxx::__normal_iterator<DBC::DBCFile::FIELD*,std::vector<DBC::DBCFile::FIELD,std::allocator<DBC::DBCFile::FIELD> > > __position, size_t __n, const DBC::DBCFile::FIELD *const __x)
  72255. {
  72256. size_t v4; // esi
  72257. DBC::DBCFile::FIELD *v5; // ebx
  72258. unsigned int v6; // edi
  72259. DBC::DBCFile::FIELD *v7; // ecx
  72260. int *v8; // edx
  72261. char *v9; // ecx
  72262. signed int v10; // edx
  72263. int *v11; // ebx
  72264. _DWORD *v12; // edx
  72265. DBC::DBCFile::FIELD *v13; // edi
  72266. DBC::DBCFile::FIELD *v14; // eax
  72267. int *v15; // ecx
  72268. DBC::DBCFile::FIELD *v16; // ebx
  72269. int v17; // edx
  72270. DBC::DBCFile::FIELD *v18; // ebx
  72271. DBC::DBCFile::FIELD *v19; // esi
  72272. DBC::DBCFile::FIELD *v20; // eax
  72273. DBC::DBCFile::FIELD *v21; // ecx
  72274. DBC::DBCFile::FIELD *v22; // eax
  72275. bool i; // zf
  72276. DBC::DBCFile::FIELD *v24; // esi
  72277. DBC::DBCFile::FIELD *v25; // eax
  72278. int *v26; // ecx
  72279. DBC::DBCFile::FIELD *v27; // ebx
  72280. DBC::DBCFile::FIELD *v28; // edx
  72281. size_t __len; // [esp+0h] [ebp-38h]
  72282. DBC::DBCFile::FIELD *v30; // [esp+4h] [ebp-34h]
  72283. const DBC::DBCFile::FIELD *__x_0; // [esp+8h] [ebp-30h]
  72284. __gnu_cxx::__normal_iterator<DBC::DBCFile::FIELD*,std::vector<DBC::DBCFile::FIELD,std::allocator<DBC::DBCFile::FIELD> > > v32; // [esp+14h] [ebp-24h]
  72285. DBC::DBCFile::FIELD *v33; // [esp+18h] [ebp-20h]
  72286. const size_t __old_size; // [esp+1Ch] [ebp-1Ch]
  72287. DBC::DBCFile::FIELD *v35; // [esp+20h] [ebp-18h]
  72288. DBC::DBCFile::FIELD __x_copy; // [esp+24h] [ebp-14h]
  72289. int *v37; // [esp+28h] [ebp-10h]
  72290.  
  72291. v4 = __n;
  72292. __x_0 = __x;
  72293. if ( __n )
  72294. {
  72295. v5 = this->_M_impl._M_finish;
  72296. v30 = this->_M_impl._M_finish;
  72297. if ( (_DWORD)((char *)this->_M_impl._M_end_of_storage - (char *)v5) >> 2 < __n )
  72298. {
  72299. __old_size = v5 - this->_M_impl._M_start;
  72300. v12 = &__n;
  72301. if ( __old_size >= __n )
  72302. v12 = &__old_size;
  72303. __len = *v12 + __old_size;
  72304. v13 = (DBC::DBCFile::FIELD *)operator new(4 * __len);
  72305. v14 = this->_M_impl._M_start;
  72306. i = this->_M_impl._M_start == __position._M_current;
  72307. v33 = v14;
  72308. v15 = (int *)v13;
  72309. v16 = v14;
  72310. if ( !i )
  72311. {
  72312. do
  72313. {
  72314. if ( v15 )
  72315. *v15 = v14->iValue;
  72316. v17 = (int)&v16[1];
  72317. ++v15;
  72318. i = &v16[1] == __position._M_current;
  72319. v16 = (DBC::DBCFile::FIELD *)v17;
  72320. v14 = (DBC::DBCFile::FIELD *)v17;
  72321. }
  72322. while ( !i );
  72323. v33 = (DBC::DBCFile::FIELD *)v17;
  72324. }
  72325. std::__uninitialized_fill_n_aux<__gnu_cxx::__normal_iterator<DBC::DBCFile::FIELD *,std::vector<DBC::DBCFile::FIELD,std::allocator<DBC::DBCFile::FIELD>>>,unsigned int,DBC::DBCFile::FIELD>(
  72326. &v32,
  72327. (__gnu_cxx::__normal_iterator<DBC::DBCFile::FIELD*,std::vector<DBC::DBCFile::FIELD,std::allocator<DBC::DBCFile::FIELD> > >)v15,
  72328. __n,
  72329. __x_0,
  72330. 0);
  72331. v18 = this->_M_impl._M_finish;
  72332. v19 = v32._M_current;
  72333. v20 = __position._M_current;
  72334. v21 = __position._M_current;
  72335. if ( __position._M_current != v18 )
  72336. {
  72337. do
  72338. {
  72339. if ( v19 )
  72340. v19->fValue = v20->fValue;
  72341. ++v19;
  72342. i = &v21[1] == v18;
  72343. ++v21;
  72344. v20 = v21;
  72345. }
  72346. while ( !i );
  72347. }
  72348. v22 = this->_M_impl._M_start;
  72349. for ( i = this->_M_impl._M_start == v18; !i; i = v22 == v18 )
  72350. ++v22;
  72351. if ( this->_M_impl._M_start )
  72352. operator delete((IPRegionTable *const )this->_M_impl._M_start);
  72353. this->_M_impl._M_start = v13;
  72354. this->_M_impl._M_finish = v19;
  72355. this->_M_impl._M_end_of_storage = &v13[__len];
  72356. }
  72357. else
  72358. {
  72359. v6 = v5 - __position._M_current;
  72360. __x_copy.fValue = __x->fValue;
  72361. if ( v6 <= __n )
  72362. {
  72363. std::__uninitialized_fill_n_aux<DBC::DBCFile::FIELD *,unsigned int,DBC::DBCFile::FIELD>(
  72364. v5,
  72365. __n - v6,
  72366. &__x_copy,
  72367. 0);
  72368. v24 = &this->_M_impl._M_finish[__n - v6];
  72369. this->_M_impl._M_finish = v24;
  72370. v25 = __position._M_current;
  72371. v35 = __position._M_current;
  72372. v26 = (int *)v24;
  72373. v27 = __position._M_current;
  72374. if ( __position._M_current != v30 )
  72375. {
  72376. do
  72377. {
  72378. if ( v26 )
  72379. *v26 = v25->iValue;
  72380. v28 = v27 + 1;
  72381. ++v26;
  72382. i = &v27[1] == v30;
  72383. v27 = v28;
  72384. v25 = v28;
  72385. }
  72386. while ( !i );
  72387. v35 = v28;
  72388. }
  72389. this->_M_impl._M_finish = &v24[v6];
  72390. std::fill<__gnu_cxx::__normal_iterator<DBC::DBCFile::FIELD *,std::vector<DBC::DBCFile::FIELD,std::allocator<DBC::DBCFile::FIELD>>>,DBC::DBCFile::FIELD>(
  72391. __position,
  72392. (__gnu_cxx::__normal_iterator<DBC::DBCFile::FIELD*,std::vector<DBC::DBCFile::FIELD,std::allocator<DBC::DBCFile::FIELD> > >)v30,
  72393. &__x_copy);
  72394. }
  72395. else
  72396. {
  72397. v7 = &v5[-__n];
  72398. v8 = (int *)v5;
  72399. if ( v7 != v5 )
  72400. {
  72401. do
  72402. {
  72403. if ( v8 )
  72404. *v8 = v7->iValue;
  72405. ++v7;
  72406. ++v8;
  72407. }
  72408. while ( v7 != v5 );
  72409. v4 = __n;
  72410. }
  72411. v9 = (char *)&v30[-v4];
  72412. this->_M_impl._M_finish = &v5[v4];
  72413. v10 = (v9 - (char *)__position._M_current) >> 2;
  72414. v11 = (int *)v30;
  72415. if ( v10 > 0 )
  72416. {
  72417. do
  72418. {
  72419. v9 -= 4;
  72420. --v10;
  72421. --v11;
  72422. *v11 = *(_DWORD *)v9;
  72423. }
  72424. while ( v10 > 0 );
  72425. v4 = __n;
  72426. }
  72427. v37 = v11;
  72428. std::fill<__gnu_cxx::__normal_iterator<DBC::DBCFile::FIELD *,std::vector<DBC::DBCFile::FIELD,std::allocator<DBC::DBCFile::FIELD>>>,DBC::DBCFile::FIELD>(
  72429. __position,
  72430. (__gnu_cxx::__normal_iterator<DBC::DBCFile::FIELD*,std::vector<DBC::DBCFile::FIELD,std::allocator<DBC::DBCFile::FIELD> > >)&__position._M_current[v4],
  72431. &__x_copy);
  72432. }
  72433. }
  72434. }
  72435. }
  72436.  
  72437. //----- (080AC728) --------------------------------------------------------
  72438. void __cdecl std::vector<std::pair<std::string,int>,std::allocator<std::pair<std::string,int>>>::_M_insert_aux(std::vector<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int>,std::allocator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int> > > *const this, __gnu_cxx::__normal_iterator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int>*,std::vector<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int>,std::allocator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int> > > > __position, const std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int> *const __x)
  72439. {
  72440. std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int> *v3; // ebx
  72441. std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int> *v4; // eax
  72442. std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int> *v5; // ebx
  72443. signed int v6; // edi
  72444. std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int> *j; // esi
  72445. char *v8; // ebx
  72446. signed int v9; // eax
  72447. std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int> *v10; // ebx
  72448. std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int> *v11; // edi
  72449. std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int> *i; // esi
  72450. std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int> *v13; // esi
  72451. std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int> *v14; // ebx
  72452. std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int> *v15; // edi
  72453. bool v16; // zf
  72454. std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int> *v17; // esi
  72455. char *v18; // edi
  72456. std::string *__cur; // [esp+0h] [ebp-58h]
  72457. std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int> *v20; // [esp+Ch] [ebp-4Ch]
  72458. size_t __len; // [esp+10h] [ebp-48h]
  72459. char v22; // [esp+20h] [ebp-38h]
  72460. std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int> __x_copy; // [esp+30h] [ebp-28h]
  72461.  
  72462. v3 = this->_M_impl._M_finish;
  72463. if ( v3 == this->_M_impl._M_end_of_storage )
  72464. {
  72465. v9 = v3 - this->_M_impl._M_start;
  72466. __len = 1;
  72467. if ( v9 )
  72468. __len = 2 * v9;
  72469. v20 = (std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int> *)operator new(8 * __len);
  72470. v10 = this->_M_impl._M_start;
  72471. v11 = v20;
  72472. for ( i = this->_M_impl._M_start; v10 != __position._M_current; i = v10 )
  72473. {
  72474. if ( v11 )
  72475. {
  72476. std::string::string((std::string *)v11, (const std::string *)i);
  72477. v11->second = i->second;
  72478. }
  72479. ++v11;
  72480. ++v10;
  72481. }
  72482. if ( v11 )
  72483. {
  72484. std::string::string((std::string *)v11, (const std::string *)__x);
  72485. v11->second = __x->second;
  72486. }
  72487. v13 = __position._M_current;
  72488. v14 = this->_M_impl._M_finish;
  72489. __cur = (std::string *)&v11[1];
  72490. v15 = __position._M_current;
  72491. if ( __position._M_current != v14 )
  72492. {
  72493. do
  72494. {
  72495. if ( __cur )
  72496. {
  72497. std::string::string(__cur, (const std::string *)v15);
  72498. *((_DWORD *)__cur + 1) = v15->second;
  72499. }
  72500. __cur = (std::string *)((char *)__cur + 8);
  72501. v16 = &v13[1] == v14;
  72502. ++v13;
  72503. v15 = v13;
  72504. }
  72505. while ( !v16 );
  72506. v14 = this->_M_impl._M_finish;
  72507. }
  72508. v17 = this->_M_impl._M_start;
  72509. while ( v17 != v14 )
  72510. {
  72511. v18 = v17->first._M_dataplus._M_p - 12;
  72512. if ( v18 == (char *)&std::string::_Rep::_S_empty_rep_storage
  72513. || __gnu_cxx::__exchange_and_add((volatile int *)v17->first._M_dataplus._M_p - 1, -1) > 0 )
  72514. {
  72515. ++v17;
  72516. }
  72517. else
  72518. {
  72519. std::string::_Rep::_M_destroy(v18, &v22);
  72520. ++v17;
  72521. }
  72522. }
  72523. if ( this->_M_impl._M_start )
  72524. operator delete((IPRegionTable *const )this->_M_impl._M_start);
  72525. this->_M_impl._M_finish = (std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,int> *)__cur;
  72526. this->_M_impl._M_start = v20;
  72527. this->_M_impl._M_end_of_storage = &v20[__len];
  72528. }
  72529. else
  72530. {
  72531. if ( v3 )
  72532. {
  72533. std::string::string((std::string *)v3, (const std::string *)&v3[-1]);
  72534. v3->second = v3[-1].second;
  72535. v3 = this->_M_impl._M_finish;
  72536. }
  72537. this->_M_impl._M_finish = v3 + 1;
  72538. std::string::string((std::string *)&__x_copy, (const std::string *)__x);
  72539. __x_copy.second = __x->second;
  72540. v4 = this->_M_impl._M_finish;
  72541. v5 = v4 - 2;
  72542. v6 = &v4[-2] - __position._M_current;
  72543. for ( j = v4 - 1; v6 > 0; --v6 )
  72544. {
  72545. --v5;
  72546. --j;
  72547. std::string::assign((std::string *)j, (const std::string *)v5);
  72548. j->second = v5->second;
  72549. }
  72550. std::string::assign((std::string *)__position._M_current, (const std::string *)&__x_copy);
  72551. __position._M_current->second = __x_copy.second;
  72552. v8 = __x_copy.first._M_dataplus._M_p - 12;
  72553. if ( __x_copy.first._M_dataplus._M_p - 12 != (char *)&std::string::_Rep::_S_empty_rep_storage
  72554. && __gnu_cxx::__exchange_and_add((volatile int *)__x_copy.first._M_dataplus._M_p - 1, -1) <= 0 )
  72555. {
  72556. std::string::_Rep::_M_destroy(v8, &v22);
  72557. }
  72558. }
  72559. }
  72560. // 8049E18: using guessed type int __cdecl std::string::_Rep::_M_destroy(_DWORD, _DWORD);
  72561.  
  72562. //----- (080ACB48) --------------------------------------------------------
  72563. void __cdecl std::vector<unsigned int,std::allocator<unsigned int>>::_M_fill_insert(std::vector<unsigned int,std::allocator<unsigned int> > *const this, __gnu_cxx::__normal_iterator<unsigned int*,std::vector<unsigned int,std::allocator<unsigned int> > > __position, size_t __n, const unsigned int *const __x)
  72564. {
  72565. const unsigned int *v4; // esi
  72566. unsigned int *v5; // ecx
  72567. unsigned int v6; // esi
  72568. unsigned int *v7; // ecx
  72569. _DWORD *v8; // ecx
  72570. int v9; // ebx
  72571. size_t v10; // ebx
  72572. unsigned int *v11; // esi
  72573. unsigned int *v12; // ebx
  72574. size_t v13; // edx
  72575. unsigned int v14; // [esp+4h] [ebp-24h]
  72576. char *dest; // [esp+8h] [ebp-20h]
  72577. unsigned int *__last; // [esp+Ch] [ebp-1Ch]
  72578. __gnu_cxx::__normal_iterator<unsigned int*,std::vector<unsigned int,std::allocator<unsigned int> > > v17; // [esp+10h] [ebp-18h]
  72579. const size_t __old_size; // [esp+14h] [ebp-14h]
  72580. unsigned int __x_copy; // [esp+18h] [ebp-10h]
  72581.  
  72582. v4 = __x;
  72583. if ( __n )
  72584. {
  72585. v5 = this->_M_impl._M_finish;
  72586. __last = this->_M_impl._M_finish;
  72587. if ( (_DWORD)((char *)this->_M_impl._M_end_of_storage - (char *)v5) >> 2 < __n )
  72588. {
  72589. __old_size = v5 - this->_M_impl._M_start;
  72590. v8 = &__n;
  72591. if ( __old_size >= __n )
  72592. v8 = &__old_size;
  72593. v14 = 4 * (*v8 + __old_size);
  72594. dest = (char *)operator new(v14);
  72595. v9 = (char *)__position._M_current - (char *)this->_M_impl._M_start;
  72596. memmove(dest, this->_M_impl._M_start, (char *)__position._M_current - (char *)this->_M_impl._M_start);
  72597. std::fill_n<__gnu_cxx::__normal_iterator<unsigned int *,std::vector<unsigned int,std::allocator<unsigned int>>>,unsigned int,unsigned int>(
  72598. &v17,
  72599. (__gnu_cxx::__normal_iterator<unsigned int*,std::vector<unsigned int,std::allocator<unsigned int> > >)&dest[v9],
  72600. __n,
  72601. v4);
  72602. v10 = (char *)this->_M_impl._M_finish - (char *)__position._M_current;
  72603. v11 = v17._M_current;
  72604. memmove(v17._M_current, __position._M_current, v10);
  72605. v12 = (unsigned int *)((char *)v11 + v10);
  72606. if ( this->_M_impl._M_start )
  72607. operator delete((IPRegionTable *const )this->_M_impl._M_start);
  72608. this->_M_impl._M_start = (unsigned int *)dest;
  72609. this->_M_impl._M_finish = v12;
  72610. this->_M_impl._M_end_of_storage = (unsigned int *)&dest[v14];
  72611. }
  72612. else
  72613. {
  72614. v6 = v5 - __position._M_current;
  72615. __x_copy = *__x;
  72616. if ( v6 > __n )
  72617. {
  72618. memmove(v5, &v5[-__n], 4 * __n);
  72619. v13 = (size_t)&__last[-__n];
  72620. this->_M_impl._M_finish += __n;
  72621. memmove(
  72622. (char *)__last - ((v13 - (unsigned int)__position._M_current) & 0xFFFFFFFC),
  72623. __position._M_current,
  72624. (v13 - (unsigned int)__position._M_current) & 0xFFFFFFFC);
  72625. std::fill<__gnu_cxx::__normal_iterator<unsigned int *,std::vector<unsigned int,std::allocator<unsigned int>>>,unsigned int>(
  72626. __position,
  72627. (__gnu_cxx::__normal_iterator<unsigned int*,std::vector<unsigned int,std::allocator<unsigned int> > >)&__position._M_current[__n],
  72628. &__x_copy);
  72629. }
  72630. else
  72631. {
  72632. std::fill_n<unsigned int *,unsigned int,unsigned int>(v5, __n - v6, &__x_copy);
  72633. v7 = &this->_M_impl._M_finish[__n - v6];
  72634. this->_M_impl._M_finish = v7;
  72635. memmove(v7, __position._M_current, (char *)__last - (char *)__position._M_current);
  72636. this->_M_impl._M_finish += v6;
  72637. std::fill<__gnu_cxx::__normal_iterator<unsigned int *,std::vector<unsigned int,std::allocator<unsigned int>>>,unsigned int>(
  72638. __position,
  72639. (__gnu_cxx::__normal_iterator<unsigned int*,std::vector<unsigned int,std::allocator<unsigned int> > >)__last,
  72640. &__x_copy);
  72641. }
  72642. }
  72643. }
  72644. }
  72645.  
  72646. //----- (080ACCCC) --------------------------------------------------------
  72647. void __cdecl std::vector<DBC::DBCFile::FIELD_TYPE,std::allocator<DBC::DBCFile::FIELD_TYPE>>::_M_fill_insert(std::vector<DBC::DBCFile::FIELD_TYPE,std::allocator<DBC::DBCFile::FIELD_TYPE> > *const this, __gnu_cxx::__normal_iterator<DBC::DBCFile::FIELD_TYPE*,std::vector<DBC::DBCFile::FIELD_TYPE,std::allocator<DBC::DBCFile::FIELD_TYPE> > > __position, size_t __n, const DBC::DBCFile::FIELD_TYPE *const __x)
  72648. {
  72649. size_t v4; // esi
  72650. DBC::DBCFile::FIELD_TYPE *v5; // ebx
  72651. unsigned int v6; // edi
  72652. DBC::DBCFile::FIELD_TYPE *v7; // ecx
  72653. DBC::DBCFile::FIELD_TYPE *v8; // edx
  72654. char *v9; // ecx
  72655. DBC::DBCFile::FIELD_TYPE *v10; // ebx
  72656. signed int j; // edx
  72657. _DWORD *v12; // edx
  72658. DBC::DBCFile::FIELD_TYPE *v13; // edi
  72659. DBC::DBCFile::FIELD_TYPE *v14; // eax
  72660. DBC::DBCFile::FIELD_TYPE *v15; // ecx
  72661. DBC::DBCFile::FIELD_TYPE *v16; // ebx
  72662. int v17; // edx
  72663. DBC::DBCFile::FIELD_TYPE *v18; // ebx
  72664. DBC::DBCFile::FIELD_TYPE *v19; // esi
  72665. DBC::DBCFile::FIELD_TYPE *v20; // eax
  72666. DBC::DBCFile::FIELD_TYPE *v21; // ecx
  72667. DBC::DBCFile::FIELD_TYPE *v22; // eax
  72668. bool i; // zf
  72669. DBC::DBCFile::FIELD_TYPE *v24; // esi
  72670. DBC::DBCFile::FIELD_TYPE *v25; // eax
  72671. DBC::DBCFile::FIELD_TYPE *v26; // ecx
  72672. DBC::DBCFile::FIELD_TYPE *v27; // ebx
  72673. DBC::DBCFile::FIELD_TYPE *v28; // edx
  72674. size_t __len; // [esp+0h] [ebp-38h]
  72675. DBC::DBCFile::FIELD_TYPE *v30; // [esp+4h] [ebp-34h]
  72676. const DBC::DBCFile::FIELD_TYPE *__x_0; // [esp+8h] [ebp-30h]
  72677. __gnu_cxx::__normal_iterator<DBC::DBCFile::FIELD_TYPE*,std::vector<DBC::DBCFile::FIELD_TYPE,std::allocator<DBC::DBCFile::FIELD_TYPE> > > v32; // [esp+14h] [ebp-24h]
  72678. DBC::DBCFile::FIELD_TYPE *v33; // [esp+18h] [ebp-20h]
  72679. const size_t __old_size; // [esp+1Ch] [ebp-1Ch]
  72680. DBC::DBCFile::FIELD_TYPE *v35; // [esp+20h] [ebp-18h]
  72681. DBC::DBCFile::FIELD_TYPE __x_copy; // [esp+24h] [ebp-14h]
  72682. DBC::DBCFile::FIELD_TYPE *v37; // [esp+28h] [ebp-10h]
  72683.  
  72684. v4 = __n;
  72685. __x_0 = __x;
  72686. if ( __n )
  72687. {
  72688. v5 = this->_M_impl._M_finish;
  72689. v30 = this->_M_impl._M_finish;
  72690. if ( (_DWORD)((char *)this->_M_impl._M_end_of_storage - (char *)v5) >> 2 < __n )
  72691. {
  72692. __old_size = v5 - this->_M_impl._M_start;
  72693. v12 = &__n;
  72694. if ( __old_size >= __n )
  72695. v12 = &__old_size;
  72696. __len = *v12 + __old_size;
  72697. v13 = (DBC::DBCFile::FIELD_TYPE *)operator new(4 * __len);
  72698. v14 = this->_M_impl._M_start;
  72699. i = this->_M_impl._M_start == __position._M_current;
  72700. v33 = v14;
  72701. v15 = v13;
  72702. v16 = v14;
  72703. if ( !i )
  72704. {
  72705. do
  72706. {
  72707. if ( v15 )
  72708. *v15 = *v14;
  72709. v17 = (int)(v16 + 1);
  72710. ++v15;
  72711. i = v16 + 1 == __position._M_current;
  72712. v16 = (DBC::DBCFile::FIELD_TYPE *)v17;
  72713. v14 = (DBC::DBCFile::FIELD_TYPE *)v17;
  72714. }
  72715. while ( !i );
  72716. v33 = (DBC::DBCFile::FIELD_TYPE *)v17;
  72717. }
  72718. std::__uninitialized_fill_n_aux<__gnu_cxx::__normal_iterator<DBC::DBCFile::FIELD_TYPE *,std::vector<DBC::DBCFile::FIELD_TYPE,std::allocator<DBC::DBCFile::FIELD_TYPE>>>,unsigned int,DBC::DBCFile::FIELD_TYPE>(
  72719. &v32,
  72720. (__gnu_cxx::__normal_iterator<DBC::DBCFile::FIELD_TYPE*,std::vector<DBC::DBCFile::FIELD_TYPE,std::allocator<DBC::DBCFile::FIELD_TYPE> > >)v15,
  72721. __n,
  72722. __x_0,
  72723. 0);
  72724. v18 = this->_M_impl._M_finish;
  72725. v19 = v32._M_current;
  72726. v20 = __position._M_current;
  72727. v21 = __position._M_current;
  72728. if ( __position._M_current != v18 )
  72729. {
  72730. do
  72731. {
  72732. if ( v19 )
  72733. *v19 = *v20;
  72734. ++v19;
  72735. i = v21 + 1 == v18;
  72736. ++v21;
  72737. v20 = v21;
  72738. }
  72739. while ( !i );
  72740. }
  72741. v22 = this->_M_impl._M_start;
  72742. for ( i = this->_M_impl._M_start == v18; !i; i = v22 == v18 )
  72743. ++v22;
  72744. if ( this->_M_impl._M_start )
  72745. operator delete((IPRegionTable *const )this->_M_impl._M_start);
  72746. this->_M_impl._M_start = v13;
  72747. this->_M_impl._M_finish = v19;
  72748. this->_M_impl._M_end_of_storage = &v13[__len];
  72749. }
  72750. else
  72751. {
  72752. v6 = v5 - __position._M_current;
  72753. __x_copy = *__x;
  72754. if ( v6 <= __n )
  72755. {
  72756. std::__uninitialized_fill_n_aux<DBC::DBCFile::FIELD_TYPE *,unsigned int,DBC::DBCFile::FIELD_TYPE>(
  72757. v5,
  72758. __n - v6,
  72759. &__x_copy,
  72760. 0);
  72761. v24 = &this->_M_impl._M_finish[__n - v6];
  72762. this->_M_impl._M_finish = v24;
  72763. v25 = __position._M_current;
  72764. v35 = __position._M_current;
  72765. v26 = v24;
  72766. v27 = __position._M_current;
  72767. if ( __position._M_current != v30 )
  72768. {
  72769. do
  72770. {
  72771. if ( v26 )
  72772. *v26 = *v25;
  72773. v28 = v27 + 1;
  72774. ++v26;
  72775. i = v27 + 1 == v30;
  72776. v27 = v28;
  72777. v25 = v28;
  72778. }
  72779. while ( !i );
  72780. v35 = v28;
  72781. }
  72782. this->_M_impl._M_finish = &v24[v6];
  72783. std::fill<__gnu_cxx::__normal_iterator<DBC::DBCFile::FIELD_TYPE *,std::vector<DBC::DBCFile::FIELD_TYPE,std::allocator<DBC::DBCFile::FIELD_TYPE>>>,DBC::DBCFile::FIELD_TYPE>(
  72784. __position,
  72785. (__gnu_cxx::__normal_iterator<DBC::DBCFile::FIELD_TYPE*,std::vector<DBC::DBCFile::FIELD_TYPE,std::allocator<DBC::DBCFile::FIELD_TYPE> > >)v30,
  72786. &__x_copy);
  72787. }
  72788. else
  72789. {
  72790. v7 = &v5[-__n];
  72791. v8 = v5;
  72792. while ( v7 != v5 )
  72793. {
  72794. if ( v8 )
  72795. *v8 = *v7;
  72796. ++v7;
  72797. ++v8;
  72798. }
  72799. v9 = (char *)&v30[-v4];
  72800. this->_M_impl._M_finish = &v5[v4];
  72801. v10 = v30;
  72802. for ( j = (v9 - (char *)__position._M_current) >> 2; j > 0; --j )
  72803. {
  72804. v9 -= 4;
  72805. --v10;
  72806. *v10 = *(DBC::DBCFile::FIELD_TYPE *)v9;
  72807. }
  72808. v37 = v10;
  72809. std::fill<__gnu_cxx::__normal_iterator<DBC::DBCFile::FIELD_TYPE *,std::vector<DBC::DBCFile::FIELD_TYPE,std::allocator<DBC::DBCFile::FIELD_TYPE>>>,DBC::DBCFile::FIELD_TYPE>(
  72810. __position,
  72811. (__gnu_cxx::__normal_iterator<DBC::DBCFile::FIELD_TYPE*,std::vector<DBC::DBCFile::FIELD_TYPE,std::allocator<DBC::DBCFile::FIELD_TYPE> > >)&__position._M_current[v4],
  72812. &__x_copy);
  72813. }
  72814. }
  72815. }
  72816. }
  72817.  
  72818. //----- (080ACEEC) --------------------------------------------------------
  72819. void __cdecl std::vector<__gnu_cxx::_Hashtable_node<std::pair<int const,DBC::DBCFile::FIELD *>> *,std::allocator<__gnu_cxx::_Hashtable_node<std::pair<int const,DBC::DBCFile::FIELD *>> *>>::reserve(std::vector<__gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> >*,std::allocator<__gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> >*> > *const this, size_t __n)
  72820. {
  72821. __gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> > **v2; // esi
  72822. signed int v3; // ebx
  72823. char *v4; // edi
  72824. signed int v5; // [esp+4h] [ebp-14h]
  72825.  
  72826. if ( __n > 0x3FFFFFFF )
  72827. std::__throw_length_error("vector::reserve");
  72828. v2 = this->_M_impl._M_start;
  72829. if ( (_DWORD)((char *)this->_M_impl._M_end_of_storage - (char *)this->_M_impl._M_start) >> 2 < __n )
  72830. {
  72831. v3 = (char *)this->_M_impl._M_finish - (char *)v2;
  72832. v5 = v3 >> 2;
  72833. v4 = (char *)operator new(4 * __n);
  72834. memmove(v4, v2, v3);
  72835. if ( this->_M_impl._M_start )
  72836. operator delete((IPRegionTable *const )this->_M_impl._M_start);
  72837. this->_M_impl._M_start = (__gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> > **)v4;
  72838. this->_M_impl._M_finish = (__gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> > **)&v4[4 * v5];
  72839. this->_M_impl._M_end_of_storage = (__gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> > **)&v4[4 * __n];
  72840. }
  72841. }
  72842.  
  72843. //----- (080ACFAC) --------------------------------------------------------
  72844. void __cdecl std::vector<__gnu_cxx::_Hashtable_node<std::pair<int const,DBC::DBCFile::FIELD *>> *,std::allocator<__gnu_cxx::_Hashtable_node<std::pair<int const,DBC::DBCFile::FIELD *>> *>>::_M_fill_insert(std::vector<__gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> >*,std::allocator<__gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> >*> > *const this, __gnu_cxx::__normal_iterator<__gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> >**,std::vector<__gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> >*,std::allocator<__gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> >*> > > __position, size_t __n, __gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> > *const *const __x)
  72845. {
  72846. __gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> > *const *v4; // esi
  72847. __gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> > **v5; // ecx
  72848. unsigned int v6; // esi
  72849. __gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> > **v7; // ecx
  72850. _DWORD *v8; // ecx
  72851. int v9; // ebx
  72852. size_t v10; // ebx
  72853. __gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> > **v11; // esi
  72854. __gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> > **v12; // ebx
  72855. size_t v13; // edx
  72856. unsigned int v14; // [esp+4h] [ebp-24h]
  72857. char *dest; // [esp+8h] [ebp-20h]
  72858. __gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> > **__last; // [esp+Ch] [ebp-1Ch]
  72859. __gnu_cxx::__normal_iterator<__gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> >**,std::vector<__gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> >*,std::allocator<__gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> >*> > > v17; // [esp+10h] [ebp-18h]
  72860. const size_t __old_size; // [esp+14h] [ebp-14h]
  72861. __gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> > *__x_copy; // [esp+18h] [ebp-10h]
  72862.  
  72863. v4 = __x;
  72864. if ( __n )
  72865. {
  72866. v5 = this->_M_impl._M_finish;
  72867. __last = this->_M_impl._M_finish;
  72868. if ( (_DWORD)((char *)this->_M_impl._M_end_of_storage - (char *)v5) >> 2 < __n )
  72869. {
  72870. __old_size = v5 - this->_M_impl._M_start;
  72871. v8 = &__n;
  72872. if ( __old_size >= __n )
  72873. v8 = &__old_size;
  72874. v14 = 4 * (*v8 + __old_size);
  72875. dest = (char *)operator new(v14);
  72876. v9 = (char *)__position._M_current - (char *)this->_M_impl._M_start;
  72877. memmove(dest, this->_M_impl._M_start, (char *)__position._M_current - (char *)this->_M_impl._M_start);
  72878. std::fill_n<__gnu_cxx::__normal_iterator<__gnu_cxx::_Hashtable_node<std::pair<int const,DBC::DBCFile::FIELD *>> **,std::vector<__gnu_cxx::_Hashtable_node<std::pair<int const,DBC::DBCFile::FIELD *>> *,std::allocator<__gnu_cxx::_Hashtable_node<std::pair<int const,DBC::DBCFile::FIELD *>> *>>>,unsigned int,__gnu_cxx::_Hashtable_node<std::pair<int const,DBC::DBCFile::FIELD *>> *>(
  72879. &v17,
  72880. (__gnu_cxx::__normal_iterator<__gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> >**,std::vector<__gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> >*,std::allocator<__gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> >*> > >)&dest[v9],
  72881. __n,
  72882. v4);
  72883. v10 = (char *)this->_M_impl._M_finish - (char *)__position._M_current;
  72884. v11 = v17._M_current;
  72885. memmove(v17._M_current, __position._M_current, v10);
  72886. v12 = (__gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> > **)((char *)v11 + v10);
  72887. if ( this->_M_impl._M_start )
  72888. operator delete((IPRegionTable *const )this->_M_impl._M_start);
  72889. this->_M_impl._M_start = (__gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> > **)dest;
  72890. this->_M_impl._M_finish = v12;
  72891. this->_M_impl._M_end_of_storage = (__gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> > **)&dest[v14];
  72892. }
  72893. else
  72894. {
  72895. v6 = v5 - __position._M_current;
  72896. __x_copy = *__x;
  72897. if ( v6 > __n )
  72898. {
  72899. memmove(v5, &v5[-__n], 4 * __n);
  72900. v13 = (size_t)&__last[-__n];
  72901. this->_M_impl._M_finish += __n;
  72902. memmove(
  72903. (char *)__last - ((v13 - (unsigned int)__position._M_current) & 0xFFFFFFFC),
  72904. __position._M_current,
  72905. (v13 - (unsigned int)__position._M_current) & 0xFFFFFFFC);
  72906. std::fill<__gnu_cxx::__normal_iterator<__gnu_cxx::_Hashtable_node<std::pair<int const,DBC::DBCFile::FIELD *>> **,std::vector<__gnu_cxx::_Hashtable_node<std::pair<int const,DBC::DBCFile::FIELD *>> *,std::allocator<__gnu_cxx::_Hashtable_node<std::pair<int const,DBC::DBCFile::FIELD *>> *>>>,__gnu_cxx::_Hashtable_node<std::pair<int const,DBC::DBCFile::FIELD *>> *>(
  72907. __position,
  72908. (__gnu_cxx::__normal_iterator<__gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> >**,std::vector<__gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> >*,std::allocator<__gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> >*> > >)&__position._M_current[__n],
  72909. &__x_copy);
  72910. }
  72911. else
  72912. {
  72913. std::fill_n<__gnu_cxx::_Hashtable_node<std::pair<int const,DBC::DBCFile::FIELD *>> **,unsigned int,__gnu_cxx::_Hashtable_node<std::pair<int const,DBC::DBCFile::FIELD *>> *>(
  72914. v5,
  72915. __n - v6,
  72916. &__x_copy);
  72917. v7 = &this->_M_impl._M_finish[__n - v6];
  72918. this->_M_impl._M_finish = v7;
  72919. memmove(v7, __position._M_current, (char *)__last - (char *)__position._M_current);
  72920. this->_M_impl._M_finish += v6;
  72921. std::fill<__gnu_cxx::__normal_iterator<__gnu_cxx::_Hashtable_node<std::pair<int const,DBC::DBCFile::FIELD *>> **,std::vector<__gnu_cxx::_Hashtable_node<std::pair<int const,DBC::DBCFile::FIELD *>> *,std::allocator<__gnu_cxx::_Hashtable_node<std::pair<int const,DBC::DBCFile::FIELD *>> *>>>,__gnu_cxx::_Hashtable_node<std::pair<int const,DBC::DBCFile::FIELD *>> *>(
  72922. __position,
  72923. (__gnu_cxx::__normal_iterator<__gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> >**,std::vector<__gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> >*,std::allocator<__gnu_cxx::_Hashtable_node<std::pair<const int,DBC::DBCFile::FIELD*> >*> > >)__last,
  72924. &__x_copy);
  72925. }
  72926. }
  72927. }
  72928. }
  72929.  
  72930. //----- (080AD130) --------------------------------------------------------
  72931. void __cdecl BillPacket::BillPacket(_DWORD *a2)
  72932. {
  72933. *a2 = off_80E5068;
  72934. }
  72935. // 80E5068: using guessed type _DWORD (__cdecl *off_80E5068[2])(BillPacket *this);
  72936.  
  72937. //----- (080AD140) --------------------------------------------------------
  72938. void __cdecl BillPacket::BillPacket(_DWORD *a2)
  72939. {
  72940. *a2 = off_80E5068;
  72941. }
  72942. // 80E5068: using guessed type _DWORD (__cdecl *off_80E5068[2])(BillPacket *this);
  72943.  
  72944. //----- (080AD150) --------------------------------------------------------
  72945. void __cdecl BillPacket::~BillPacket(_DWORD *a2)
  72946. {
  72947. *a2 = off_80E5068;
  72948. }
  72949. // 80E5068: using guessed type _DWORD (__cdecl *off_80E5068[2])(BillPacket *this);
  72950.  
  72951. //----- (080AD160) --------------------------------------------------------
  72952. void __cdecl BillPacket::~BillPacket(_DWORD *a2)
  72953. {
  72954. *a2 = off_80E5068;
  72955. }
  72956. // 80E5068: using guessed type _DWORD (__cdecl *off_80E5068[2])(BillPacket *this);
  72957.  
  72958. //----- (080AD170) --------------------------------------------------------
  72959. void __cdecl BillPacket::~BillPacket(IPRegionTable *const a2)
  72960. {
  72961. a2->_vptr_IPRegionTable = (int (**)(...))off_80E5068;
  72962. operator delete(a2);
  72963. }
  72964. // 80E5068: using guessed type _DWORD (__cdecl *off_80E5068[2])(BillPacket *this);
  72965.  
  72966. //----- (080AD184) --------------------------------------------------------
  72967. void __cdecl _tcf_0_216(void *a1)
  72968. {
  72969. std::ios_base::Init::~Init(&std::__ioinit);
  72970. }
  72971.  
  72972. //----- (080AD194) --------------------------------------------------------
  72973. void `global constructor keyed to'BillPacket::BillPacket()
  72974. {
  72975. std::ios_base::Init::Init(&std::__ioinit);
  72976. __cxa_atexit(_tcf_0_216, 0, &_dso_handle);
  72977. }
  72978. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  72979.  
  72980. //----- (080AD1C0) --------------------------------------------------------
  72981. void __cdecl BillPacketFactoryManager::BillPacketFactoryManager(BillPacketFactoryManager *const this, USHORT nPacketCounts)
  72982. {
  72983. BillPacketFactory **v2; // eax
  72984. UINT *v3; // eax
  72985. int v4; // ebx
  72986. int v5; // edx
  72987. BillPacketFactory **v6; // ecx
  72988. UINT *v7; // eax
  72989.  
  72990. this->_vptr_BillPacketFactoryManager = (int (**)(...))&off_80E50A8;
  72991. pthread_mutex_init(&this->m_Lock.m_Mutex, 0);
  72992. this->m_Factories = 0;
  72993. this->m_Size = nPacketCounts;
  72994. if ( !nPacketCounts )
  72995. __assert__(
  72996. "src/LibNet_BillingPacketFactoryManager.cpp",
  72997. 0xBu,
  72998. "BillPacketFactoryManager::BillPacketFactoryManager(USHORT)",
  72999. "m_Size>0");
  73000. v2 = (BillPacketFactory **)operator new[](4 * this->m_Size);
  73001. this->m_Factories = v2;
  73002. if ( !v2 )
  73003. __assert__(
  73004. "src/LibNet_BillingPacketFactoryManager.cpp",
  73005. 0xEu,
  73006. "BillPacketFactoryManager::BillPacketFactoryManager(USHORT)",
  73007. "m_Factories");
  73008. v3 = (UINT *)operator new[](4 * this->m_Size);
  73009. this->m_pPacketAllocCount = v3;
  73010. if ( !v3 )
  73011. __assert__(
  73012. "src/LibNet_BillingPacketFactoryManager.cpp",
  73013. 0x10u,
  73014. "BillPacketFactoryManager::BillPacketFactoryManager(USHORT)",
  73015. "m_pPacketAllocCount");
  73016. v4 = this->m_Size;
  73017. v5 = 0;
  73018. if ( v4 > 0 )
  73019. {
  73020. v6 = this->m_Factories;
  73021. v7 = this->m_pPacketAllocCount;
  73022. do
  73023. {
  73024. v6[v5] = 0;
  73025. v7[v5++] = 0;
  73026. }
  73027. while ( v4 > v5 );
  73028. }
  73029. }
  73030. // 80E50A8: using guessed type void *off_80E50A8;
  73031.  
  73032. //----- (080AD2C0) --------------------------------------------------------
  73033. void __cdecl BillPacketFactoryManager::BillPacketFactoryManager(BillPacketFactoryManager *const this, USHORT nPacketCounts)
  73034. {
  73035. BillPacketFactory **v2; // eax
  73036. UINT *v3; // eax
  73037. int v4; // ebx
  73038. int v5; // edx
  73039. BillPacketFactory **v6; // ecx
  73040. UINT *v7; // eax
  73041.  
  73042. this->_vptr_BillPacketFactoryManager = (int (**)(...))&off_80E50A8;
  73043. pthread_mutex_init(&this->m_Lock.m_Mutex, 0);
  73044. this->m_Factories = 0;
  73045. this->m_Size = nPacketCounts;
  73046. if ( !nPacketCounts )
  73047. __assert__(
  73048. "src/LibNet_BillingPacketFactoryManager.cpp",
  73049. 0xBu,
  73050. "BillPacketFactoryManager::BillPacketFactoryManager(USHORT)",
  73051. "m_Size>0");
  73052. v2 = (BillPacketFactory **)operator new[](4 * this->m_Size);
  73053. this->m_Factories = v2;
  73054. if ( !v2 )
  73055. __assert__(
  73056. "src/LibNet_BillingPacketFactoryManager.cpp",
  73057. 0xEu,
  73058. "BillPacketFactoryManager::BillPacketFactoryManager(USHORT)",
  73059. "m_Factories");
  73060. v3 = (UINT *)operator new[](4 * this->m_Size);
  73061. this->m_pPacketAllocCount = v3;
  73062. if ( !v3 )
  73063. __assert__(
  73064. "src/LibNet_BillingPacketFactoryManager.cpp",
  73065. 0x10u,
  73066. "BillPacketFactoryManager::BillPacketFactoryManager(USHORT)",
  73067. "m_pPacketAllocCount");
  73068. v4 = this->m_Size;
  73069. v5 = 0;
  73070. if ( v4 > 0 )
  73071. {
  73072. v6 = this->m_Factories;
  73073. v7 = this->m_pPacketAllocCount;
  73074. do
  73075. {
  73076. v6[v5] = 0;
  73077. v7[v5++] = 0;
  73078. }
  73079. while ( v4 > v5 );
  73080. }
  73081. }
  73082. // 80E50A8: using guessed type void *off_80E50A8;
  73083.  
  73084. //----- (080AD3C0) --------------------------------------------------------
  73085. void __cdecl BillPacketFactoryManager::~BillPacketFactoryManager(BillPacketFactoryManager *const this)
  73086. {
  73087. BillPacketFactory **v1; // ecx
  73088. USHORT v2; // bx
  73089. signed int v3; // esi
  73090. BillPacketFactory *v4; // edx
  73091.  
  73092. v1 = this->m_Factories;
  73093. this->_vptr_BillPacketFactoryManager = (int (**)(...))&off_80E50A8;
  73094. if ( !v1 )
  73095. __assert__(
  73096. "src/LibNet_BillingPacketFactoryManager.cpp",
  73097. 0x1Bu,
  73098. "virtual BillPacketFactoryManager::~BillPacketFactoryManager()",
  73099. "m_Factories!=NULL");
  73100. v2 = this->m_Size;
  73101. v3 = 0;
  73102. if ( v2 )
  73103. {
  73104. do
  73105. {
  73106. v4 = v1[v3];
  73107. if ( v4 )
  73108. {
  73109. (*((void (__cdecl **)(BillPacketFactory *))v4->_vptr_BillPacketFactory + 1))(v1[v3]);
  73110. v1 = this->m_Factories;
  73111. v2 = this->m_Size;
  73112. v1[v3] = 0;
  73113. }
  73114. ++v3;
  73115. }
  73116. while ( v2 > v3 );
  73117. }
  73118. if ( v1 )
  73119. {
  73120. operator delete[](v1);
  73121. this->m_Factories = 0;
  73122. }
  73123. if ( this->m_pPacketAllocCount )
  73124. {
  73125. operator delete[](this->m_pPacketAllocCount);
  73126. this->m_pPacketAllocCount = 0;
  73127. }
  73128. pthread_mutex_destroy(&this->m_Lock.m_Mutex);
  73129. }
  73130. // 80E50A8: using guessed type void *off_80E50A8;
  73131.  
  73132. //----- (080AD4B0) --------------------------------------------------------
  73133. void __cdecl BillPacketFactoryManager::~BillPacketFactoryManager(BillPacketFactoryManager *const this)
  73134. {
  73135. BillPacketFactory **v1; // ecx
  73136. USHORT v2; // bx
  73137. signed int v3; // esi
  73138. BillPacketFactory *v4; // edx
  73139.  
  73140. v1 = this->m_Factories;
  73141. this->_vptr_BillPacketFactoryManager = (int (**)(...))&off_80E50A8;
  73142. if ( !v1 )
  73143. __assert__(
  73144. "src/LibNet_BillingPacketFactoryManager.cpp",
  73145. 0x1Bu,
  73146. "virtual BillPacketFactoryManager::~BillPacketFactoryManager()",
  73147. "m_Factories!=NULL");
  73148. v2 = this->m_Size;
  73149. v3 = 0;
  73150. if ( v2 )
  73151. {
  73152. do
  73153. {
  73154. v4 = v1[v3];
  73155. if ( v4 )
  73156. {
  73157. (*((void (__cdecl **)(BillPacketFactory *))v4->_vptr_BillPacketFactory + 1))(v1[v3]);
  73158. v1 = this->m_Factories;
  73159. v2 = this->m_Size;
  73160. v1[v3] = 0;
  73161. }
  73162. ++v3;
  73163. }
  73164. while ( v2 > v3 );
  73165. }
  73166. if ( v1 )
  73167. {
  73168. operator delete[](v1);
  73169. this->m_Factories = 0;
  73170. }
  73171. if ( this->m_pPacketAllocCount )
  73172. {
  73173. operator delete[](this->m_pPacketAllocCount);
  73174. this->m_pPacketAllocCount = 0;
  73175. }
  73176. pthread_mutex_destroy(&this->m_Lock.m_Mutex);
  73177. }
  73178. // 80E50A8: using guessed type void *off_80E50A8;
  73179.  
  73180. //----- (080AD5A0) --------------------------------------------------------
  73181. void __cdecl BillPacketFactoryManager::~BillPacketFactoryManager(BillPacketFactoryManager *const this)
  73182. {
  73183. BillPacketFactory **v1; // ecx
  73184. USHORT v2; // bx
  73185. signed int v3; // esi
  73186. BillPacketFactory *v4; // edx
  73187.  
  73188. v1 = this->m_Factories;
  73189. this->_vptr_BillPacketFactoryManager = (int (**)(...))&off_80E50A8;
  73190. if ( !v1 )
  73191. __assert__(
  73192. "src/LibNet_BillingPacketFactoryManager.cpp",
  73193. 0x1Bu,
  73194. "virtual BillPacketFactoryManager::~BillPacketFactoryManager()",
  73195. "m_Factories!=NULL");
  73196. v2 = this->m_Size;
  73197. v3 = 0;
  73198. if ( v2 )
  73199. {
  73200. do
  73201. {
  73202. v4 = v1[v3];
  73203. if ( v4 )
  73204. {
  73205. (*((void (__cdecl **)(BillPacketFactory *))v4->_vptr_BillPacketFactory + 1))(v1[v3]);
  73206. v1 = this->m_Factories;
  73207. v2 = this->m_Size;
  73208. v1[v3] = 0;
  73209. }
  73210. ++v3;
  73211. }
  73212. while ( v2 > v3 );
  73213. }
  73214. if ( v1 )
  73215. {
  73216. operator delete[](v1);
  73217. this->m_Factories = 0;
  73218. }
  73219. if ( this->m_pPacketAllocCount )
  73220. {
  73221. operator delete[](this->m_pPacketAllocCount);
  73222. this->m_pPacketAllocCount = 0;
  73223. }
  73224. pthread_mutex_destroy(&this->m_Lock.m_Mutex);
  73225. operator delete((IPRegionTable *const )this);
  73226. }
  73227. // 80E50A8: using guessed type void *off_80E50A8;
  73228.  
  73229. //----- (080AD6A0) --------------------------------------------------------
  73230. void __cdecl BillPacketFactoryManager::AddFactory(BillPacketFactoryManager *const this, BillPacketFactory *pFactory)
  73231. {
  73232. if ( this->m_Factories[(*((unsigned __int8 (__cdecl **)(BillPacketFactory *))pFactory->_vptr_BillPacketFactory + 3))(pFactory)] )
  73233. __assert__(
  73234. "src/LibNet_BillingPacketFactoryManager.cpp",
  73235. 0x2Bu,
  73236. "void BillPacketFactoryManager::AddFactory(BillPacketFactory*)",
  73237. "FALSE");
  73238. this->m_Factories[(*((unsigned __int8 (__cdecl **)(BillPacketFactory *))pFactory->_vptr_BillPacketFactory + 3))(pFactory)] = pFactory;
  73239. }
  73240.  
  73241. //----- (080AD700) --------------------------------------------------------
  73242. BillPacket *__cdecl BillPacketFactoryManager::CreatePacket(BillPacketFactoryManager *const this, BPacketID_t packetID)
  73243. {
  73244. BillPacket *v2; // edi
  73245.  
  73246. if ( packetID >= (unsigned int)this->m_Size || !this->m_Factories[packetID] )
  73247. __assert__(
  73248. "src/LibNet_BillingPacketFactoryManager.cpp",
  73249. 0x36u,
  73250. "BillPacket* BillPacketFactoryManager::CreatePacket(BPacketID_t)",
  73251. "FALSE");
  73252. pthread_mutex_lock(&this->m_Lock.m_Mutex);
  73253. v2 = (BillPacket *)(*((int (__cdecl **)(BillPacketFactory *))this->m_Factories[packetID]->_vptr_BillPacketFactory + 2))(this->m_Factories[packetID]);
  73254. ++this->m_pPacketAllocCount[packetID];
  73255. pthread_mutex_unlock(&this->m_Lock.m_Mutex);
  73256. if ( !v2 )
  73257. __assert__(
  73258. "src/LibNet_BillingPacketFactoryManager.cpp",
  73259. 0x47u,
  73260. "BillPacket* BillPacketFactoryManager::CreatePacket(BPacketID_t)",
  73261. "pPacket");
  73262. return v2;
  73263. }
  73264. // 8049B18: using guessed type int __stdcall __cxa_end_catch(_DWORD);
  73265.  
  73266. //----- (080AD7D0) --------------------------------------------------------
  73267. UINT __cdecl BillPacketFactoryManager::GetPacketMaxSize(BillPacketFactoryManager *const this, BPacketID_t packetID)
  73268. {
  73269. int v2; // ecx
  73270. int v3; // ST1C_4
  73271. UINT v4; // ebx
  73272. char buff[256]; // [esp+0h] [ebp-118h]
  73273.  
  73274. if ( packetID >= (unsigned int)this->m_Size || !this->m_Factories[packetID] )
  73275. {
  73276. v3 = v2;
  73277. memset(buff, 0, 0x100u);
  73278. sprintf(buff, "Warning:Packet of PacketID= %d has not been registered in BillPacketFactoryManager", packetID, v3);
  73279. __assertex__(
  73280. "src/LibNet_BillingPacketFactoryManager.cpp",
  73281. 0x51u,
  73282. "UINT BillPacketFactoryManager::GetPacketMaxSize(BPacketID_t)",
  73283. "FALSE",
  73284. buff);
  73285. }
  73286. pthread_mutex_lock(&this->m_Lock.m_Mutex);
  73287. v4 = (*((int (__cdecl **)(BillPacketFactory *))this->m_Factories[packetID]->_vptr_BillPacketFactory + 4))(this->m_Factories[packetID]);
  73288. pthread_mutex_unlock(&this->m_Lock.m_Mutex);
  73289. return v4;
  73290. }
  73291.  
  73292. //----- (080AD874) --------------------------------------------------------
  73293. #error "80AD904: call analysis failed (funcsize=61)"
  73294.  
  73295. //----- (080AD940) --------------------------------------------------------
  73296. void __cdecl _tcf_0_217(void *a1)
  73297. {
  73298. std::ios_base::Init::~Init(&std::__ioinit);
  73299. }
  73300.  
  73301. //----- (080AD950) --------------------------------------------------------
  73302. void `global constructor keyed to'BillPacketFactoryManager::BillPacketFactoryManager()
  73303. {
  73304. std::ios_base::Init::Init(&std::__ioinit);
  73305. __cxa_atexit(_tcf_0_217, 0, &_dso_handle);
  73306. }
  73307. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  73308.  
  73309. //----- (080AD97C) --------------------------------------------------------
  73310. void __cdecl SocketBillingInputStream::SocketBillingInputStream(Socket *sock, UINT BufferLen, UINT MaxBufferLen, UINT MaxBufferLena)
  73311. {
  73312. SocketInputStream::SocketInputStream(
  73313. (SocketInputStream *const )sock,
  73314. (Socket *)BufferLen,
  73315. MaxBufferLen,
  73316. MaxBufferLena);
  73317. sock->_vptr_Socket = (int (**)(...))&off_80E5320;
  73318. }
  73319. // 80E5320: using guessed type _DWORD (__cdecl *off_80E5320)(SocketBillingInputStream *this);
  73320.  
  73321. //----- (080AD9A4) --------------------------------------------------------
  73322. void __cdecl SocketBillingInputStream::SocketBillingInputStream(Socket *sock, UINT BufferLen, UINT MaxBufferLen, UINT MaxBufferLena)
  73323. {
  73324. SocketInputStream::SocketInputStream(
  73325. (SocketInputStream *const )sock,
  73326. (Socket *)BufferLen,
  73327. MaxBufferLen,
  73328. MaxBufferLena);
  73329. sock->_vptr_Socket = (int (**)(...))&off_80E5320;
  73330. }
  73331. // 80E5320: using guessed type _DWORD (__cdecl *off_80E5320)(SocketBillingInputStream *this);
  73332.  
  73333. //----- (080AD9CC) --------------------------------------------------------
  73334. BOOL __cdecl SocketBillingInputStream::ReadPacket(SocketBillingInputStream *const this, BillPacket *pPacket)
  73335. {
  73336. BOOL v2; // eax
  73337. BOOL v3; // edx
  73338. int v5; // eax
  73339.  
  73340. v2 = SocketInputStream::Skip(&this->0, 7u);
  73341. v3 = 0;
  73342. if ( v2 )
  73343. {
  73344. v5 = (*((int (__cdecl **)(BillPacket *, SocketBillingInputStream *const ))pPacket->_vptr_BillPacket + 2))(
  73345. pPacket,
  73346. this);
  73347. v3 = 0;
  73348. if ( v5 )
  73349. {
  73350. SocketInputStream::Skip(&this->0, 2u);
  73351. v3 = 1;
  73352. }
  73353. }
  73354. return v3;
  73355. }
  73356.  
  73357. //----- (080ADA1C) --------------------------------------------------------
  73358. void __cdecl _tcf_0_218(void *a1)
  73359. {
  73360. std::ios_base::Init::~Init(&std::__ioinit);
  73361. }
  73362.  
  73363. //----- (080ADA2C) --------------------------------------------------------
  73364. void `global constructor keyed to'SocketBillingInputStream::SocketBillingInputStream()
  73365. {
  73366. std::ios_base::Init::Init(&std::__ioinit);
  73367. __cxa_atexit(_tcf_0_218, 0, &_dso_handle);
  73368. }
  73369. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  73370.  
  73371. //----- (080ADA58) --------------------------------------------------------
  73372. void __cdecl SocketBillingInputStream::~SocketBillingInputStream(SocketInputStream *a2)
  73373. {
  73374. a2->_vptr_SocketInputStream = (int (**)(...))&off_80E5320;
  73375. SocketInputStream::~SocketInputStream(a2);
  73376. }
  73377. // 80E5320: using guessed type _DWORD (__cdecl *off_80E5320)(SocketBillingInputStream *this);
  73378.  
  73379. //----- (080ADA74) --------------------------------------------------------
  73380. void __cdecl SocketBillingInputStream::~SocketBillingInputStream(SocketInputStream *a2)
  73381. {
  73382. a2->_vptr_SocketInputStream = (int (**)(...))&off_80E5320;
  73383. SocketInputStream::~SocketInputStream(a2);
  73384. operator delete((IPRegionTable *const )a2);
  73385. }
  73386. // 80E5320: using guessed type _DWORD (__cdecl *off_80E5320)(SocketBillingInputStream *this);
  73387.  
  73388. //----- (080ADA9C) --------------------------------------------------------
  73389. void __cdecl SocketBillingOutputStream::SocketBillingOutputStream(Socket *sock, UINT BufferSize, UINT MaxBufferSize, UINT MaxBufferSizea)
  73390. {
  73391. SocketOutputStream::SocketOutputStream(
  73392. (SocketOutputStream *const )sock,
  73393. (Socket *)BufferSize,
  73394. MaxBufferSize,
  73395. MaxBufferSizea);
  73396. sock->_vptr_Socket = (int (**)(...))&off_80E5358;
  73397. }
  73398. // 80E5358: using guessed type _DWORD (__cdecl *off_80E5358)(SocketBillingOutputStream *this);
  73399.  
  73400. //----- (080ADAC4) --------------------------------------------------------
  73401. void __cdecl SocketBillingOutputStream::SocketBillingOutputStream(Socket *sock, UINT BufferSize, UINT MaxBufferSize, UINT MaxBufferSizea)
  73402. {
  73403. SocketOutputStream::SocketOutputStream(
  73404. (SocketOutputStream *const )sock,
  73405. (Socket *)BufferSize,
  73406. MaxBufferSize,
  73407. MaxBufferSizea);
  73408. sock->_vptr_Socket = (int (**)(...))&off_80E5358;
  73409. }
  73410. // 80E5358: using guessed type _DWORD (__cdecl *off_80E5358)(SocketBillingOutputStream *this);
  73411.  
  73412. //----- (080ADAEC) --------------------------------------------------------
  73413. BOOL __cdecl SocketBillingOutputStream::WritePacket(SocketOutputStream *a3, int a4)
  73414. {
  73415. int v4; // ebx
  73416. USHORT nTail; // [esp+Ah] [ebp-12h]
  73417. USHORT PacketIndex; // [esp+Ch] [ebp-10h]
  73418. BYTE bPacketID; // [esp+Fh] [ebp-Dh]
  73419. USHORT packetSize; // [esp+10h] [ebp-Ch]
  73420. USHORT nHead; // [esp+12h] [ebp-Ah]
  73421.  
  73422. v4 = a4;
  73423. nHead = 21930;
  73424. SocketOutputStream::Write(a3, (const CHAR *)&nHead, 2u);
  73425. packetSize = __ROR2__((*(int (__cdecl **)(int))(*(_DWORD *)v4 + 24))(v4) + 3, 8);
  73426. SocketOutputStream::Write(a3, (const CHAR *)&packetSize, 2u);
  73427. bPacketID = (*(int (__cdecl **)(int))(*(_DWORD *)v4 + 20))(v4);
  73428. SocketOutputStream::Write(a3, (const CHAR *)&bPacketID, 1u);
  73429. PacketIndex = __ROR2__(*(_WORD *)(a4 + 4), 8);
  73430. SocketOutputStream::Write(a3, (const CHAR *)&PacketIndex, 2u);
  73431. (*(void (__cdecl **)(int, SocketOutputStream *))(*(_DWORD *)v4 + 12))(v4, a3);
  73432. nTail = -21931;
  73433. SocketOutputStream::Write(a3, (const CHAR *)&nTail, 2u);
  73434. return 1;
  73435. }
  73436.  
  73437. //----- (080ADB94) --------------------------------------------------------
  73438. void __cdecl _tcf_0_219(void *a1)
  73439. {
  73440. std::ios_base::Init::~Init(&std::__ioinit);
  73441. }
  73442.  
  73443. //----- (080ADBA4) --------------------------------------------------------
  73444. void `global constructor keyed to'SocketBillingOutputStream::SocketBillingOutputStream()
  73445. {
  73446. std::ios_base::Init::Init(&std::__ioinit);
  73447. __cxa_atexit(_tcf_0_219, 0, &_dso_handle);
  73448. }
  73449. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  73450.  
  73451. //----- (080ADBD0) --------------------------------------------------------
  73452. void __cdecl SocketBillingOutputStream::~SocketBillingOutputStream(SocketOutputStream *a2)
  73453. {
  73454. a2->_vptr_SocketOutputStream = (int (**)(...))&off_80E5358;
  73455. SocketOutputStream::~SocketOutputStream(a2);
  73456. }
  73457. // 80E5358: using guessed type _DWORD (__cdecl *off_80E5358)(SocketBillingOutputStream *this);
  73458.  
  73459. //----- (080ADBEC) --------------------------------------------------------
  73460. void __cdecl SocketBillingOutputStream::~SocketBillingOutputStream(SocketOutputStream *a2)
  73461. {
  73462. a2->_vptr_SocketOutputStream = (int (**)(...))&off_80E5358;
  73463. SocketOutputStream::~SocketOutputStream(a2);
  73464. operator delete((IPRegionTable *const )a2);
  73465. }
  73466. // 80E5358: using guessed type _DWORD (__cdecl *off_80E5358)(SocketBillingOutputStream *this);
  73467.  
  73468. //----- (080ADC14) --------------------------------------------------------
  73469. void __cdecl Packet::Packet(int a2)
  73470. {
  73471. *(_DWORD *)a2 = off_80E53A8;
  73472. *(_BYTE *)(a2 + 4) = 0;
  73473. *(_BYTE *)(a2 + 5) = 0;
  73474. *(_DWORD *)(a2 + 8) = 0;
  73475. }
  73476. // 80E53A8: using guessed type _DWORD (__cdecl *off_80E53A8[2])(Packet *this);
  73477.  
  73478. //----- (080ADC34) --------------------------------------------------------
  73479. void __cdecl Packet::Packet(int a2)
  73480. {
  73481. *(_DWORD *)a2 = off_80E53A8;
  73482. *(_BYTE *)(a2 + 4) = 0;
  73483. *(_BYTE *)(a2 + 5) = 0;
  73484. *(_DWORD *)(a2 + 8) = 0;
  73485. }
  73486. // 80E53A8: using guessed type _DWORD (__cdecl *off_80E53A8[2])(Packet *this);
  73487.  
  73488. //----- (080ADC54) --------------------------------------------------------
  73489. void __cdecl Packet::~Packet(_DWORD *a2)
  73490. {
  73491. *a2 = off_80E53A8;
  73492. }
  73493. // 80E53A8: using guessed type _DWORD (__cdecl *off_80E53A8[2])(Packet *this);
  73494.  
  73495. //----- (080ADC64) --------------------------------------------------------
  73496. void __cdecl Packet::~Packet(_DWORD *a2)
  73497. {
  73498. *a2 = off_80E53A8;
  73499. }
  73500. // 80E53A8: using guessed type _DWORD (__cdecl *off_80E53A8[2])(Packet *this);
  73501.  
  73502. //----- (080ADC74) --------------------------------------------------------
  73503. void __cdecl Packet::~Packet(IPRegionTable *const a2)
  73504. {
  73505. a2->_vptr_IPRegionTable = (int (**)(...))off_80E53A8;
  73506. operator delete(a2);
  73507. }
  73508. // 80E53A8: using guessed type _DWORD (__cdecl *off_80E53A8[2])(Packet *this);
  73509.  
  73510. //----- (080ADC88) --------------------------------------------------------
  73511. void __cdecl _tcf_0_220(void *a1)
  73512. {
  73513. std::ios_base::Init::~Init(&std::__ioinit);
  73514. }
  73515.  
  73516. //----- (080ADC98) --------------------------------------------------------
  73517. void `global constructor keyed to'Packet::Packet()
  73518. {
  73519. std::ios_base::Init::Init(&std::__ioinit);
  73520. __cxa_atexit(_tcf_0_220, 0, &_dso_handle);
  73521. }
  73522. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  73523.  
  73524. //----- (080ADCC4) --------------------------------------------------------
  73525. void __cdecl PacketFactoryManager::PacketFactoryManager(PacketFactoryManager *const this, USHORT nPacketCounts, BOOL bAutoLock)
  73526. {
  73527. UINT *v3; // eax
  73528. int v4; // ebx
  73529. int v5; // edx
  73530. PacketFactory **v6; // ecx
  73531. MyLock *v7; // ebx
  73532.  
  73533. this->m_Size = nPacketCounts;
  73534. this->_vptr_PacketFactoryManager = (int (**)(...))&off_80E53E8;
  73535. this->m_Factories = 0;
  73536. this->m_Factories = (PacketFactory **)operator new[](4 * nPacketCounts);
  73537. v3 = (UINT *)operator new[](4 * this->m_Size);
  73538. v4 = this->m_Size;
  73539. v5 = 0;
  73540. this->m_pPacketAllocCount = v3;
  73541. if ( v4 > 0 )
  73542. {
  73543. v6 = this->m_Factories;
  73544. do
  73545. {
  73546. v6[v5] = 0;
  73547. v3[v5++] = 0;
  73548. }
  73549. while ( v4 > v5 );
  73550. }
  73551. if ( bAutoLock )
  73552. {
  73553. v7 = (MyLock *)operator new(0x18u);
  73554. pthread_mutex_init(&v7->m_Mutex, 0);
  73555. this->m_Lock = v7;
  73556. }
  73557. }
  73558. // 80E53E8: using guessed type void *off_80E53E8;
  73559.  
  73560. //----- (080ADD5C) --------------------------------------------------------
  73561. void __cdecl PacketFactoryManager::PacketFactoryManager(PacketFactoryManager *const this, USHORT nPacketCounts, BOOL bAutoLock)
  73562. {
  73563. UINT *v3; // eax
  73564. int v4; // ebx
  73565. int v5; // edx
  73566. PacketFactory **v6; // ecx
  73567. MyLock *v7; // ebx
  73568.  
  73569. this->m_Size = nPacketCounts;
  73570. this->_vptr_PacketFactoryManager = (int (**)(...))&off_80E53E8;
  73571. this->m_Factories = 0;
  73572. this->m_Factories = (PacketFactory **)operator new[](4 * nPacketCounts);
  73573. v3 = (UINT *)operator new[](4 * this->m_Size);
  73574. v4 = this->m_Size;
  73575. v5 = 0;
  73576. this->m_pPacketAllocCount = v3;
  73577. if ( v4 > 0 )
  73578. {
  73579. v6 = this->m_Factories;
  73580. do
  73581. {
  73582. v6[v5] = 0;
  73583. v3[v5++] = 0;
  73584. }
  73585. while ( v4 > v5 );
  73586. }
  73587. if ( bAutoLock )
  73588. {
  73589. v7 = (MyLock *)operator new(0x18u);
  73590. pthread_mutex_init(&v7->m_Mutex, 0);
  73591. this->m_Lock = v7;
  73592. }
  73593. }
  73594. // 80E53E8: using guessed type void *off_80E53E8;
  73595.  
  73596. //----- (080ADDF4) --------------------------------------------------------
  73597. void __cdecl PacketFactoryManager::~PacketFactoryManager(PacketFactoryManager *const this)
  73598. {
  73599. MyLock *v1; // eax
  73600. USHORT v2; // cx
  73601. signed int v3; // esi
  73602. PacketFactory **v4; // ebx
  73603. PacketFactory *v5; // edx
  73604. UINT *v6; // eax
  73605. pthread_mutex_t *autolock; // [esp+0h] [ebp-28h]
  73606.  
  73607. v1 = this->m_Lock;
  73608. this->_vptr_PacketFactoryManager = (int (**)(...))&off_80E53E8;
  73609. autolock = &v1->m_Mutex;
  73610. if ( v1 )
  73611. pthread_mutex_lock(&v1->m_Mutex);
  73612. v2 = this->m_Size;
  73613. v3 = 0;
  73614. if ( v2 )
  73615. {
  73616. v4 = this->m_Factories;
  73617. do
  73618. {
  73619. v5 = v4[v3];
  73620. if ( v5 )
  73621. {
  73622. (*((void (__cdecl **)(PacketFactory *))v5->_vptr_PacketFactory + 1))(v4[v3]);
  73623. v4 = this->m_Factories;
  73624. v2 = this->m_Size;
  73625. v4[v3] = 0;
  73626. }
  73627. ++v3;
  73628. }
  73629. while ( v2 > v3 );
  73630. }
  73631. else
  73632. {
  73633. v4 = this->m_Factories;
  73634. }
  73635. if ( v4 )
  73636. {
  73637. operator delete[](v4);
  73638. v6 = this->m_pPacketAllocCount;
  73639. this->m_Factories = 0;
  73640. if ( !v6 )
  73641. goto LABEL_10;
  73642. }
  73643. else
  73644. {
  73645. v6 = this->m_pPacketAllocCount;
  73646. if ( !v6 )
  73647. goto LABEL_10;
  73648. }
  73649. operator delete[](v6);
  73650. this->m_pPacketAllocCount = 0;
  73651. LABEL_10:
  73652. if ( autolock )
  73653. pthread_mutex_unlock(autolock);
  73654. }
  73655. // 80E53E8: using guessed type void *off_80E53E8;
  73656.  
  73657. //----- (080ADEDF) --------------------------------------------------------
  73658. void __usercall sub_80ADEDF(pthread_mutex_t *a1@<eax>, int a2@<ebp>)
  73659. {
  73660. pthread_mutex_unlock(a1);
  73661. *(_DWORD *)(a2 - 40) = 0;
  73662. JUMPOUT(&loc_80ADE81);
  73663. }
  73664.  
  73665. //----- (080ADEF4) --------------------------------------------------------
  73666. void __cdecl PacketFactoryManager::~PacketFactoryManager(PacketFactoryManager *const this)
  73667. {
  73668. MyLock *v1; // eax
  73669. USHORT v2; // cx
  73670. signed int v3; // esi
  73671. PacketFactory **v4; // ebx
  73672. PacketFactory *v5; // edx
  73673. UINT *v6; // eax
  73674. pthread_mutex_t *autolock; // [esp+0h] [ebp-28h]
  73675.  
  73676. v1 = this->m_Lock;
  73677. this->_vptr_PacketFactoryManager = (int (**)(...))&off_80E53E8;
  73678. autolock = &v1->m_Mutex;
  73679. if ( v1 )
  73680. pthread_mutex_lock(&v1->m_Mutex);
  73681. v2 = this->m_Size;
  73682. v3 = 0;
  73683. if ( v2 )
  73684. {
  73685. v4 = this->m_Factories;
  73686. do
  73687. {
  73688. v5 = v4[v3];
  73689. if ( v5 )
  73690. {
  73691. (*((void (__cdecl **)(PacketFactory *))v5->_vptr_PacketFactory + 1))(v4[v3]);
  73692. v4 = this->m_Factories;
  73693. v2 = this->m_Size;
  73694. v4[v3] = 0;
  73695. }
  73696. ++v3;
  73697. }
  73698. while ( v2 > v3 );
  73699. }
  73700. else
  73701. {
  73702. v4 = this->m_Factories;
  73703. }
  73704. if ( v4 )
  73705. {
  73706. operator delete[](v4);
  73707. v6 = this->m_pPacketAllocCount;
  73708. this->m_Factories = 0;
  73709. if ( !v6 )
  73710. goto LABEL_10;
  73711. }
  73712. else
  73713. {
  73714. v6 = this->m_pPacketAllocCount;
  73715. if ( !v6 )
  73716. goto LABEL_10;
  73717. }
  73718. operator delete[](v6);
  73719. this->m_pPacketAllocCount = 0;
  73720. LABEL_10:
  73721. if ( autolock )
  73722. pthread_mutex_unlock(autolock);
  73723. }
  73724. // 80E53E8: using guessed type void *off_80E53E8;
  73725.  
  73726. //----- (080ADFDF) --------------------------------------------------------
  73727. void __usercall sub_80ADFDF(pthread_mutex_t *a1@<eax>, int a2@<ebp>)
  73728. {
  73729. pthread_mutex_unlock(a1);
  73730. *(_DWORD *)(a2 - 40) = 0;
  73731. JUMPOUT(&loc_80ADF81);
  73732. }
  73733.  
  73734. //----- (080ADFF4) --------------------------------------------------------
  73735. void __cdecl PacketFactoryManager::~PacketFactoryManager(PacketFactoryManager *const this)
  73736. {
  73737. MyLock *v1; // eax
  73738. USHORT v2; // cx
  73739. signed int v3; // esi
  73740. PacketFactory **v4; // ebx
  73741. PacketFactory *v5; // edx
  73742. UINT *v6; // eax
  73743. pthread_mutex_t *autolock; // [esp+0h] [ebp-28h]
  73744.  
  73745. v1 = this->m_Lock;
  73746. this->_vptr_PacketFactoryManager = (int (**)(...))&off_80E53E8;
  73747. autolock = &v1->m_Mutex;
  73748. if ( v1 )
  73749. pthread_mutex_lock(&v1->m_Mutex);
  73750. v2 = this->m_Size;
  73751. v3 = 0;
  73752. if ( v2 )
  73753. {
  73754. v4 = this->m_Factories;
  73755. do
  73756. {
  73757. v5 = v4[v3];
  73758. if ( v5 )
  73759. {
  73760. (*((void (__cdecl **)(PacketFactory *))v5->_vptr_PacketFactory + 1))(v4[v3]);
  73761. v4 = this->m_Factories;
  73762. v2 = this->m_Size;
  73763. v4[v3] = 0;
  73764. }
  73765. ++v3;
  73766. }
  73767. while ( v2 > v3 );
  73768. }
  73769. else
  73770. {
  73771. v4 = this->m_Factories;
  73772. }
  73773. if ( v4 )
  73774. {
  73775. operator delete[](v4);
  73776. v6 = this->m_pPacketAllocCount;
  73777. this->m_Factories = 0;
  73778. if ( !v6 )
  73779. goto LABEL_10;
  73780. }
  73781. else
  73782. {
  73783. v6 = this->m_pPacketAllocCount;
  73784. if ( !v6 )
  73785. goto LABEL_10;
  73786. }
  73787. operator delete[](v6);
  73788. this->m_pPacketAllocCount = 0;
  73789. LABEL_10:
  73790. if ( autolock )
  73791. pthread_mutex_unlock(autolock);
  73792. operator delete((IPRegionTable *const )this);
  73793. }
  73794. // 80E53E8: using guessed type void *off_80E53E8;
  73795.  
  73796. //----- (080AE0FF) --------------------------------------------------------
  73797. void __usercall sub_80AE0FF(pthread_mutex_t *a1@<eax>, int a2@<ebp>)
  73798. {
  73799. pthread_mutex_unlock(a1);
  73800. *(_DWORD *)(a2 - 40) = 0;
  73801. JUMPOUT(&loc_80AE091);
  73802. }
  73803.  
  73804. //----- (080AE118) --------------------------------------------------------
  73805. void __cdecl PacketFactoryManager::AddFactory(PacketFactoryManager *const this, PacketFactory *pFactory)
  73806. {
  73807. if ( !this->m_Factories[(*((unsigned __int16 (__cdecl **)(PacketFactory *))pFactory->_vptr_PacketFactory + 3))(pFactory)] )
  73808. this->m_Factories[(*((unsigned __int16 (__cdecl **)(PacketFactory *))pFactory->_vptr_PacketFactory + 3))(pFactory)] = pFactory;
  73809. }
  73810.  
  73811. //----- (080AE160) --------------------------------------------------------
  73812. Packet *__cdecl PacketFactoryManager::CreatePacket(PacketFactoryManager *const this, PacketID_t packetID)
  73813. {
  73814. PacketFactory *v2; // edx
  73815. Packet *result; // eax
  73816. Packet *v4; // ebx
  73817. UINT *v5; // eax
  73818. CHAR **v6; // eax
  73819. UINT *v7; // [esp-4h] [ebp-13Ch]
  73820. CHAR szErr[260]; // [esp+0h] [ebp-138h]
  73821. AutoLock_T autolock; // [esp+110h] [ebp-28h]
  73822.  
  73823. autolock.m_pLock = this->m_Lock;
  73824. if ( autolock.m_pLock )
  73825. pthread_mutex_lock(&autolock.m_pLock->m_Mutex);
  73826. if ( this->m_Size > packetID && (v2 = this->m_Factories[packetID]) != 0 )
  73827. {
  73828. v4 = (Packet *)(*((int (__cdecl **)(PacketFactory *))v2->_vptr_PacketFactory + 2))(v2);
  73829. v5 = this->m_pPacketAllocCount;
  73830. ++v5[packetID];
  73831. if ( !v4 )
  73832. {
  73833. v7 = v5;
  73834. memset(szErr, 0, 0x104u);
  73835. snprintf(szErr, 0x104u, "[PacketFactoryManager::CreatePacket] create packet(%d) failed!!", packetID);
  73836. szErr[259] = 0;
  73837. v6 = (CHAR **)__cxa_allocate_exception(4);
  73838. *v6 = szErr;
  73839. __cxa_throw(v6, &`typeinfo for'char *, 0, v7);
  73840. }
  73841. if ( autolock.m_pLock )
  73842. {
  73843. pthread_mutex_unlock(&autolock.m_pLock->m_Mutex);
  73844. result = v4;
  73845. autolock.m_pLock = 0;
  73846. }
  73847. else
  73848. {
  73849. result = v4;
  73850. }
  73851. }
  73852. else
  73853. {
  73854. if ( autolock.m_pLock )
  73855. {
  73856. pthread_mutex_unlock(&autolock.m_pLock->m_Mutex);
  73857. autolock.m_pLock = 0;
  73858. }
  73859. result = 0;
  73860. }
  73861. return result;
  73862. }
  73863. // 8049B18: using guessed type int __stdcall __cxa_end_catch(_DWORD);
  73864. // 8049DA8: using guessed type int __cdecl __cxa_allocate_exception(_DWORD);
  73865. // 804A1C8: using guessed type int __stdcall __cxa_throw(_DWORD, _DWORD, _DWORD, _DWORD);
  73866.  
  73867. //----- (080AE274) --------------------------------------------------------
  73868. void __usercall sub_80AE274(pthread_mutex_t *a1@<eax>, int a2@<ebp>)
  73869. {
  73870. pthread_mutex_unlock(a1);
  73871. *(_DWORD *)(a2 - 40) = 0;
  73872. JUMPOUT(&loc_80AE251);
  73873. }
  73874.  
  73875. //----- (080AE28C) --------------------------------------------------------
  73876. UINT __cdecl PacketFactoryManager::GetPacketMaxSize(PacketFactoryManager *const this, PacketID_t packetID)
  73877. {
  73878. _DWORD *v2; // eax
  73879. int v3; // edx
  73880. char **v4; // eax
  73881. UINT v5; // ebx
  73882. int v7; // [esp-Ch] [ebp-144h]
  73883. int v8; // [esp-8h] [ebp-140h]
  73884. int v9; // [esp-4h] [ebp-13Ch]
  73885. _DWORD *v10; // [esp-4h] [ebp-13Ch]
  73886. char buff[260]; // [esp+0h] [ebp-138h]
  73887. AutoLock_T autolock; // [esp+110h] [ebp-28h]
  73888.  
  73889. autolock.m_pLock = this->m_Lock;
  73890. v2 = autolock.m_pLock;
  73891. if ( autolock.m_pLock )
  73892. v2 = (_DWORD *)pthread_mutex_lock(&autolock.m_pLock->m_Mutex);
  73893. if ( this->m_Size <= packetID || (v2 = this->m_Factories, (v3 = v2[packetID]) == 0) )
  73894. {
  73895. v10 = v2;
  73896. memset(buff, 0, 0x104u);
  73897. snprintf(buff, 0x104u, "Warning:Packet of PacketID= %d has not been registered in PacketFactoryManager", packetID);
  73898. v4 = (char **)__cxa_allocate_exception(4);
  73899. *v4 = buff;
  73900. __cxa_throw(v4, &`typeinfo for'char *, 0, v10);
  73901. }
  73902. v5 = (*(int (__stdcall **)(int, int, int, int))(*(_DWORD *)v3 + 16))(v3, v7, v8, v9);
  73903. if ( autolock.m_pLock )
  73904. {
  73905. pthread_mutex_unlock(&autolock.m_pLock->m_Mutex);
  73906. autolock.m_pLock = 0;
  73907. }
  73908. return v5;
  73909. }
  73910. // 8049DA8: using guessed type int __cdecl __cxa_allocate_exception(_DWORD);
  73911. // 804A1C8: using guessed type int __stdcall __cxa_throw(_DWORD, _DWORD, _DWORD, _DWORD);
  73912.  
  73913. //----- (080AE364) --------------------------------------------------------
  73914. void __cdecl PacketFactoryManager::RemovePacket(PacketFactoryManager *const this, Packet *pPacket)
  73915. {
  73916. MyLock *v2; // eax
  73917. USHORT v3; // ax
  73918. int v4; // edi
  73919. MyLock *autolock; // [esp+0h] [ebp-28h]
  73920.  
  73921. v2 = this->m_Lock;
  73922. autolock = this->m_Lock;
  73923. if ( v2 )
  73924. pthread_mutex_lock(&v2->m_Mutex);
  73925. if ( pPacket )
  73926. {
  73927. v3 = (*((int (__cdecl **)(Packet *))pPacket->_vptr_Packet + 5))(pPacket);
  73928. v4 = v3;
  73929. if ( this->m_Size > v3 )
  73930. {
  73931. (*((void (__cdecl **)(Packet *))pPacket->_vptr_Packet + 1))(pPacket);
  73932. --this->m_pPacketAllocCount[v4];
  73933. }
  73934. }
  73935. if ( autolock )
  73936. pthread_mutex_unlock(&autolock->m_Mutex);
  73937. }
  73938. // 8049B18: using guessed type int __stdcall __cxa_end_catch(_DWORD);
  73939.  
  73940. //----- (080AE3F7) --------------------------------------------------------
  73941. void __usercall sub_80AE3F7(pthread_mutex_t *a1@<eax>, int a2@<ebp>)
  73942. {
  73943. pthread_mutex_unlock(a1);
  73944. *(_DWORD *)(a2 - 40) = 0;
  73945. JUMPOUT(&loc_80AE3BD);
  73946. }
  73947.  
  73948. //----- (080AE420) --------------------------------------------------------
  73949. UINT __cdecl PacketFactoryManager::GetPacketAllocCount(const PacketFactoryManager *const this, PacketID_t packetID)
  73950. {
  73951. UINT v2; // ecx
  73952.  
  73953. v2 = 0;
  73954. if ( packetID < (unsigned int)this->m_Size )
  73955. v2 = this->m_pPacketAllocCount[packetID];
  73956. return v2;
  73957. }
  73958.  
  73959. //----- (080AE440) --------------------------------------------------------
  73960. void __cdecl _tcf_0_221(void *a1)
  73961. {
  73962. std::ios_base::Init::~Init(&std::__ioinit);
  73963. }
  73964.  
  73965. //----- (080AE450) --------------------------------------------------------
  73966. void `global constructor keyed to'PacketFactoryManager::PacketFactoryManager()
  73967. {
  73968. std::ios_base::Init::Init(&std::__ioinit);
  73969. __cxa_atexit(_tcf_0_221, 0, &_dso_handle);
  73970. }
  73971. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  73972.  
  73973. //----- (080AE47C) --------------------------------------------------------
  73974. void __cdecl Player::Player(Player *const this, UINT inputBufSize, UINT inputBufMaxSize, UINT outBufSize, UINT outBufMaxSize)
  73975. {
  73976. Socket *v5; // ebx
  73977. SocketInputStream *v6; // ebx
  73978. SocketOutputStream *v7; // ebx
  73979.  
  73980. this->_vptr_Player = (int (**)(...))off_80E54C8;
  73981. v5 = (Socket *)operator new(0x34u);
  73982. Socket::Socket(v5);
  73983. this->m_pSocket = v5;
  73984. if ( !v5 )
  73985. __assert__("src/LibNet_ServerPlayer.cpp", 0xDu, "Player::Player(UINT, UINT, UINT, UINT)", "m_pSocket");
  73986. v6 = (SocketInputStream *)operator new(0x1Cu);
  73987. SocketInputStream::SocketInputStream(v6, this->m_pSocket, inputBufSize, inputBufMaxSize);
  73988. this->m_pSocketInputStream = v6;
  73989. if ( !v6 )
  73990. __assert__("src/LibNet_ServerPlayer.cpp", 0x11u, "Player::Player(UINT, UINT, UINT, UINT)", "m_pSocketInputStream");
  73991. v7 = (SocketOutputStream *)operator new(0x1Cu);
  73992. SocketOutputStream::SocketOutputStream(v7, this->m_pSocket, outBufSize, outBufMaxSize);
  73993. this->m_pSocketOutputStream = v7;
  73994. if ( !v7 )
  73995. __assert__("src/LibNet_ServerPlayer.cpp", 0x15u, "Player::Player(UINT, UINT, UINT, UINT)", "m_pSocketOutputStream");
  73996. }
  73997. // 80E54C8: using guessed type _DWORD (__cdecl *off_80E54C8[2])(Player *this, UINT *const socketRet);
  73998.  
  73999. //----- (080AE590) --------------------------------------------------------
  74000. void __cdecl Player::Player(Player *const this, UINT inputBufSize, UINT inputBufMaxSize, UINT outBufSize, UINT outBufMaxSize)
  74001. {
  74002. Socket *v5; // ebx
  74003. SocketInputStream *v6; // ebx
  74004. SocketOutputStream *v7; // ebx
  74005.  
  74006. this->_vptr_Player = (int (**)(...))off_80E54C8;
  74007. v5 = (Socket *)operator new(0x34u);
  74008. Socket::Socket(v5);
  74009. this->m_pSocket = v5;
  74010. if ( !v5 )
  74011. __assert__("src/LibNet_ServerPlayer.cpp", 0xDu, "Player::Player(UINT, UINT, UINT, UINT)", "m_pSocket");
  74012. v6 = (SocketInputStream *)operator new(0x1Cu);
  74013. SocketInputStream::SocketInputStream(v6, this->m_pSocket, inputBufSize, inputBufMaxSize);
  74014. this->m_pSocketInputStream = v6;
  74015. if ( !v6 )
  74016. __assert__("src/LibNet_ServerPlayer.cpp", 0x11u, "Player::Player(UINT, UINT, UINT, UINT)", "m_pSocketInputStream");
  74017. v7 = (SocketOutputStream *)operator new(0x1Cu);
  74018. SocketOutputStream::SocketOutputStream(v7, this->m_pSocket, outBufSize, outBufMaxSize);
  74019. this->m_pSocketOutputStream = v7;
  74020. if ( !v7 )
  74021. __assert__("src/LibNet_ServerPlayer.cpp", 0x15u, "Player::Player(UINT, UINT, UINT, UINT)", "m_pSocketOutputStream");
  74022. }
  74023. // 80E54C8: using guessed type _DWORD (__cdecl *off_80E54C8[2])(Player *this, UINT *const socketRet);
  74024.  
  74025. //----- (080AE6A4) --------------------------------------------------------
  74026. void __cdecl Player::~Player(Player *const this)
  74027. {
  74028. SocketInputStream *v1; // edx
  74029. SocketOutputStream *v2; // edx
  74030. Socket *v3; // edx
  74031.  
  74032. v1 = this->m_pSocketInputStream;
  74033. this->_vptr_Player = (int (**)(...))off_80E54C8;
  74034. if ( v1 )
  74035. {
  74036. (*((void (__cdecl **)(SocketInputStream *))v1->_vptr_SocketInputStream + 1))(v1);
  74037. this->m_pSocketInputStream = 0;
  74038. }
  74039. v2 = this->m_pSocketOutputStream;
  74040. if ( v2 )
  74041. {
  74042. (*((void (__cdecl **)(SocketOutputStream *))v2->_vptr_SocketOutputStream + 1))(this->m_pSocketOutputStream);
  74043. this->m_pSocketOutputStream = 0;
  74044. }
  74045. v3 = this->m_pSocket;
  74046. if ( v3 )
  74047. {
  74048. (*((void (__cdecl **)(Socket *))v3->_vptr_Socket + 1))(this->m_pSocket);
  74049. this->m_pSocket = 0;
  74050. }
  74051. }
  74052. // 80E54C8: using guessed type _DWORD (__cdecl *off_80E54C8[2])(Player *this, UINT *const socketRet);
  74053.  
  74054. //----- (080AE714) --------------------------------------------------------
  74055. void __cdecl Player::~Player(Player *const this)
  74056. {
  74057. SocketInputStream *v1; // edx
  74058. SocketOutputStream *v2; // edx
  74059. Socket *v3; // edx
  74060.  
  74061. v1 = this->m_pSocketInputStream;
  74062. this->_vptr_Player = (int (**)(...))off_80E54C8;
  74063. if ( v1 )
  74064. {
  74065. (*((void (__cdecl **)(SocketInputStream *))v1->_vptr_SocketInputStream + 1))(v1);
  74066. this->m_pSocketInputStream = 0;
  74067. }
  74068. v2 = this->m_pSocketOutputStream;
  74069. if ( v2 )
  74070. {
  74071. (*((void (__cdecl **)(SocketOutputStream *))v2->_vptr_SocketOutputStream + 1))(this->m_pSocketOutputStream);
  74072. this->m_pSocketOutputStream = 0;
  74073. }
  74074. v3 = this->m_pSocket;
  74075. if ( v3 )
  74076. {
  74077. (*((void (__cdecl **)(Socket *))v3->_vptr_Socket + 1))(this->m_pSocket);
  74078. this->m_pSocket = 0;
  74079. }
  74080. }
  74081. // 80E54C8: using guessed type _DWORD (__cdecl *off_80E54C8[2])(Player *this, UINT *const socketRet);
  74082.  
  74083. //----- (080AE784) --------------------------------------------------------
  74084. void __cdecl Player::~Player(Player *const this)
  74085. {
  74086. SocketInputStream *v1; // edx
  74087. SocketOutputStream *v2; // edx
  74088. Socket *v3; // edx
  74089.  
  74090. v1 = this->m_pSocketInputStream;
  74091. this->_vptr_Player = (int (**)(...))off_80E54C8;
  74092. if ( !v1 )
  74093. {
  74094. v2 = this->m_pSocketOutputStream;
  74095. if ( !v2 )
  74096. goto LABEL_3;
  74097. LABEL_6:
  74098. (*((void (__cdecl **)(SocketOutputStream *))v2->_vptr_SocketOutputStream + 1))(v2);
  74099. v3 = this->m_pSocket;
  74100. this->m_pSocketOutputStream = 0;
  74101. if ( !v3 )
  74102. goto LABEL_4;
  74103. goto LABEL_7;
  74104. }
  74105. (*((void (__cdecl **)(SocketInputStream *))v1->_vptr_SocketInputStream + 1))(v1);
  74106. v2 = this->m_pSocketOutputStream;
  74107. this->m_pSocketInputStream = 0;
  74108. if ( v2 )
  74109. goto LABEL_6;
  74110. LABEL_3:
  74111. v3 = this->m_pSocket;
  74112. if ( !v3 )
  74113. {
  74114. LABEL_4:
  74115. operator delete((IPRegionTable *const )this);
  74116. return;
  74117. }
  74118. LABEL_7:
  74119. (*((void (__cdecl **)(Socket *))v3->_vptr_Socket + 1))(v3);
  74120. this->m_pSocket = 0;
  74121. operator delete((IPRegionTable *const )this);
  74122. }
  74123. // 80E54C8: using guessed type _DWORD (__cdecl *off_80E54C8[2])(Player *this, UINT *const socketRet);
  74124.  
  74125. //----- (080AE80C) --------------------------------------------------------
  74126. #error "80AE832: positive sp value has been found (funcsize=15)"
  74127.  
  74128. //----- (080AE848) --------------------------------------------------------
  74129. #error "80AE86C: positive sp value has been found (funcsize=14)"
  74130.  
  74131. //----- (080AE8A8) --------------------------------------------------------
  74132. BOOL __cdecl Player::IsValid(const Player *const this)
  74133. {
  74134. BOOL v1; // edx
  74135. BOOL v3; // eax
  74136.  
  74137. if ( !this->m_pSocket )
  74138. return 0;
  74139. v3 = Socket::isValid((int)this->m_pSocket);
  74140. v1 = 1;
  74141. if ( !v3 )
  74142. v1 = 0;
  74143. return v1;
  74144. }
  74145.  
  74146. //----- (080AE8DC) --------------------------------------------------------
  74147. void __cdecl Player::Disconnect(Player *const this)
  74148. {
  74149. Socket::close(this->m_pSocket);
  74150. }
  74151. // 8049B18: using guessed type int __stdcall __cxa_end_catch(_DWORD);
  74152.  
  74153. //----- (080AE908) --------------------------------------------------------
  74154. BOOL __cdecl Player::ProcessCommand(Player *const this, PacketID_t nMaxPacketID, PacketFactoryManager *pPacketFactoryManager, INT maxPacketsCountsPertick, PACKET_FROM_WHERE fromWhere)
  74155. {
  74156. INT v5; // eax
  74157. unsigned int v6; // ebx
  74158. int v7; // edi
  74159. Packet *v8; // eax
  74160. UINT v9; // eax
  74161. BOOL v10; // eax
  74162. int v12; // eax
  74163. int v13; // [esp-8h] [ebp-450h]
  74164. int v14; // [esp-8h] [ebp-450h]
  74165. INT v15; // [esp-4h] [ebp-44Ch]
  74166. UINT v16; // [esp-4h] [ebp-44Ch]
  74167. BOOL bNeedRemove; // [esp+4h] [ebp-444h]
  74168. Packet *pPacket; // [esp+8h] [ebp-440h]
  74169. UINT maxPacketSize; // [esp+Ch] [ebp-43Ch]
  74170. INT nPacketsCounts; // [esp+10h] [ebp-438h]
  74171. UINT debugBufferLength; // [esp+14h] [ebp-434h]
  74172. UINT packetIndex; // [esp+18h] [ebp-430h]
  74173. CHAR debugBuffer[1024]; // [esp+20h] [ebp-428h]
  74174. CHAR header[6]; // [esp+420h] [ebp-28h]
  74175.  
  74176. nPacketsCounts = 0;
  74177. while ( 1 )
  74178. {
  74179. v5 = maxPacketsCountsPertick;
  74180. if ( maxPacketsCountsPertick > 0 )
  74181. {
  74182. v5 = nPacketsCounts++;
  74183. if ( v5 > maxPacketsCountsPertick )
  74184. return 1;
  74185. }
  74186. v15 = v5;
  74187. if ( !SocketInputStream::Peek(this->m_pSocketInputStream, header, 6u) )
  74188. return 1;
  74189. v6 = *(_DWORD *)&header[2] & 0xFFFFFF;
  74190. packetIndex = (unsigned __int8)header[5];
  74191. v7 = *(unsigned __int16 *)header;
  74192. if ( nMaxPacketID <= *(_WORD *)header )
  74193. {
  74194. (*((void (__stdcall **)(Player *const , _DWORD, int, INT))this->_vptr_Player + 5))(
  74195. this,
  74196. *(unsigned __int16 *)header,
  74197. v13,
  74198. v15);
  74199. return 0;
  74200. }
  74201. if ( SocketInputStream::Length(this->m_pSocketInputStream) < v6 + 6 )
  74202. return 1;
  74203. maxPacketSize = PacketFactoryManager::GetPacketMaxSize(pPacketFactoryManager, v7);
  74204. if ( v6 > maxPacketSize )
  74205. {
  74206. (*((void (__stdcall **)(Player *const , int, unsigned int, UINT))this->_vptr_Player + 6))(
  74207. this,
  74208. v7,
  74209. v6,
  74210. maxPacketSize);
  74211. return 0;
  74212. }
  74213. v8 = PacketFactoryManager::CreatePacket(pPacketFactoryManager, v7);
  74214. pPacket = v8;
  74215. if ( !v8 )
  74216. {
  74217. (*((void (__stdcall **)(Player *const , int, unsigned int, UINT))this->_vptr_Player + 7))(
  74218. this,
  74219. v7,
  74220. v6,
  74221. maxPacketSize);
  74222. return 0;
  74223. }
  74224. v8->m_Index = packetIndex;
  74225. v9 = SocketInputStream::Length(this->m_pSocketInputStream);
  74226. debugBufferLength = v9;
  74227. if ( v9 > 0x400 )
  74228. debugBufferLength = 1024;
  74229. v16 = v9;
  74230. SocketInputStream::Peek(this->m_pSocketInputStream, debugBuffer, debugBufferLength);
  74231. v10 = SocketInputStream::ReadPacket(this->m_pSocketInputStream, pPacket);
  74232. if ( !v10 )
  74233. {
  74234. PacketFactoryManager::RemovePacket(pPacketFactoryManager, pPacket);
  74235. (*((void (__stdcall **)(Player *const , int, unsigned int, UINT, CHAR *, UINT, int, UINT))this->_vptr_Player + 8))(
  74236. this,
  74237. v7,
  74238. v6,
  74239. maxPacketSize,
  74240. debugBuffer,
  74241. debugBufferLength,
  74242. v14,
  74243. v16);
  74244. return 0;
  74245. }
  74246. bNeedRemove = 1;
  74247. if ( !(*((int (__cdecl **)(Player *const , UINT, int, unsigned int, UINT, CHAR *, UINT, BOOL))this->_vptr_Player + 9))(
  74248. this,
  74249. packetIndex,
  74250. v7,
  74251. v6,
  74252. maxPacketSize,
  74253. debugBuffer,
  74254. debugBufferLength,
  74255. v10)
  74256. || (pPacket->m_fromWhere = fromWhere,
  74257. (v12 = (*((int (__cdecl **)(Packet *, Player *const ))pPacket->_vptr_Packet + 4))(pPacket, this)) == 0) )
  74258. {
  74259. (*((void (__cdecl **)(Player *const , int, CHAR *, UINT))this->_vptr_Player + 11))(
  74260. this,
  74261. v7,
  74262. debugBuffer,
  74263. debugBufferLength);
  74264. if ( pPacket )
  74265. PacketFactoryManager::RemovePacket(pPacketFactoryManager, pPacket);
  74266. return 0;
  74267. }
  74268. if ( v12 == 1 )
  74269. break;
  74270. switch ( v12 )
  74271. {
  74272. case 2:
  74273. (*((void (__cdecl **)(Player *const , int, CHAR *, UINT))this->_vptr_Player + 13))(
  74274. this,
  74275. v7,
  74276. debugBuffer,
  74277. debugBufferLength);
  74278. break;
  74279. case 3:
  74280. (*((void (__cdecl **)(Player *const , int, CHAR *, UINT))this->_vptr_Player + 14))(
  74281. this,
  74282. v7,
  74283. debugBuffer,
  74284. debugBufferLength);
  74285. bNeedRemove = 0;
  74286. break;
  74287. case 4:
  74288. (*((void (__stdcall **)(Player *const , int, CHAR *, UINT))this->_vptr_Player + 15))(
  74289. this,
  74290. v7,
  74291. debugBuffer,
  74292. debugBufferLength);
  74293. return 0;
  74294. default:
  74295. (*((void (__cdecl **)(Player *const , int, CHAR *, UINT))this->_vptr_Player + 16))(
  74296. this,
  74297. v7,
  74298. debugBuffer,
  74299. debugBufferLength);
  74300. break;
  74301. }
  74302. if ( pPacket && bNeedRemove )
  74303. PacketFactoryManager::RemovePacket(pPacketFactoryManager, pPacket);
  74304. }
  74305. (*((void (__cdecl **)(Player *const , int, CHAR *, UINT))this->_vptr_Player + 12))(
  74306. this,
  74307. v7,
  74308. debugBuffer,
  74309. debugBufferLength);
  74310. if ( pPacket )
  74311. PacketFactoryManager::RemovePacket(pPacketFactoryManager, pPacket);
  74312. return 1;
  74313. }
  74314. // 8049B18: using guessed type int __stdcall __cxa_end_catch(_DWORD);
  74315.  
  74316. //----- (080AED6C) --------------------------------------------------------
  74317. void __cdecl _tcf_0_222(void *a1)
  74318. {
  74319. std::ios_base::Init::~Init(&std::__ioinit);
  74320. }
  74321.  
  74322. //----- (080AED7C) --------------------------------------------------------
  74323. void `global constructor keyed to'Player::Player()
  74324. {
  74325. std::ios_base::Init::Init(&std::__ioinit);
  74326. __cxa_atexit(_tcf_0_222, 0, &_dso_handle);
  74327. }
  74328. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  74329.  
  74330. //----- (080AEDA8) --------------------------------------------------------
  74331. void __cdecl ServerSocket::ServerSocket(ServerSocket *const this, UINT port, UINT backlog)
  74332. {
  74333. Socket *v3; // esi
  74334. _DWORD *v4; // eax
  74335. int v5; // [esp+8h] [ebp-Ch]
  74336.  
  74337. v3 = (Socket *)operator new(0x34u);
  74338. Socket::Socket(v3);
  74339. this->m_Socket = v3;
  74340. if ( !v3
  74341. || !Socket::create((int)v3)
  74342. || !Socket::setReuseAddr((BOOL)this->m_Socket, 1)
  74343. || !Socket::bind((int)this->m_Socket, port)
  74344. || !Socket::listen((INT)this->m_Socket, backlog) )
  74345. {
  74346. v4 = (_DWORD *)__cxa_allocate_exception(4);
  74347. *v4 = 1;
  74348. __cxa_throw(v4, &`typeinfo for'int, 0, v5);
  74349. }
  74350. }
  74351. // 8049DA8: using guessed type int __cdecl __cxa_allocate_exception(_DWORD);
  74352. // 804A1C8: using guessed type int __stdcall __cxa_throw(_DWORD, _DWORD, _DWORD, _DWORD);
  74353.  
  74354. //----- (080AEE54) --------------------------------------------------------
  74355. void __cdecl ServerSocket::ServerSocket(ServerSocket *const this, UINT port, UINT backlog)
  74356. {
  74357. Socket *v3; // esi
  74358. _DWORD *v4; // eax
  74359. int v5; // [esp+8h] [ebp-Ch]
  74360.  
  74361. v3 = (Socket *)operator new(0x34u);
  74362. Socket::Socket(v3);
  74363. this->m_Socket = v3;
  74364. if ( !v3
  74365. || !Socket::create((int)v3)
  74366. || !Socket::setReuseAddr((BOOL)this->m_Socket, 1)
  74367. || !Socket::bind((int)this->m_Socket, port)
  74368. || !Socket::listen((INT)this->m_Socket, backlog) )
  74369. {
  74370. v4 = (_DWORD *)__cxa_allocate_exception(4);
  74371. *v4 = 1;
  74372. __cxa_throw(v4, &`typeinfo for'int, 0, v5);
  74373. }
  74374. }
  74375. // 8049DA8: using guessed type int __cdecl __cxa_allocate_exception(_DWORD);
  74376. // 804A1C8: using guessed type int __stdcall __cxa_throw(_DWORD, _DWORD, _DWORD, _DWORD);
  74377.  
  74378. //----- (080AEF00) --------------------------------------------------------
  74379. void __cdecl ServerSocket::~ServerSocket(ServerSocket *const this)
  74380. {
  74381. if ( this->m_Socket )
  74382. {
  74383. Socket::close(this->m_Socket);
  74384. if ( this->m_Socket )
  74385. (*((void (__cdecl **)(Socket *))this->m_Socket->_vptr_Socket + 1))(this->m_Socket);
  74386. this->m_Socket = 0;
  74387. }
  74388. }
  74389.  
  74390. //----- (080AEF40) --------------------------------------------------------
  74391. void __cdecl ServerSocket::~ServerSocket(ServerSocket *const this)
  74392. {
  74393. if ( this->m_Socket )
  74394. {
  74395. Socket::close(this->m_Socket);
  74396. if ( this->m_Socket )
  74397. (*((void (__cdecl **)(Socket *))this->m_Socket->_vptr_Socket + 1))(this->m_Socket);
  74398. this->m_Socket = 0;
  74399. }
  74400. }
  74401.  
  74402. //----- (080AEF80) --------------------------------------------------------
  74403. void __cdecl ServerSocket::close(ServerSocket *const this)
  74404. {
  74405. if ( this->m_Socket )
  74406. Socket::close(this->m_Socket);
  74407. }
  74408.  
  74409. //----- (080AEF9C) --------------------------------------------------------
  74410. BOOL __cdecl ServerSocket::accept(ServerSocket *const this, Socket *socket)
  74411. {
  74412. SOCKET v2; // eax
  74413. BOOL v3; // edx
  74414. char *v4; // eax
  74415. UINT addrlen; // [esp+Ch] [ebp-8h]
  74416.  
  74417. addrlen = 16;
  74418. Socket::close(socket);
  74419. v2 = Socket::accept(this->m_Socket, (sockaddr *)&socket->m_SockAddr, &addrlen);
  74420. socket->m_SocketID = v2;
  74421. v3 = 0;
  74422. if ( v2 != -1 )
  74423. {
  74424. socket->m_Port = (unsigned __int16)__ROR2__(socket->m_SockAddr.sin_port, 8);
  74425. v4 = inet_ntoa(socket->m_SockAddr.sin_addr);
  74426. strncpy(socket->m_Host, v4, 0x17u);
  74427. v3 = 1;
  74428. }
  74429. return v3;
  74430. }
  74431.  
  74432. //----- (080AF008) --------------------------------------------------------
  74433. void __cdecl _tcf_0_223(void *a1)
  74434. {
  74435. std::ios_base::Init::~Init(&std::__ioinit);
  74436. }
  74437.  
  74438. //----- (080AF018) --------------------------------------------------------
  74439. void `global constructor keyed to'ServerSocket::ServerSocket()
  74440. {
  74441. std::ios_base::Init::Init(&std::__ioinit);
  74442. __cxa_atexit(_tcf_0_223, 0, &_dso_handle);
  74443. }
  74444. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  74445.  
  74446. //----- (080AF044) --------------------------------------------------------
  74447. void __cdecl Socket::Socket(_DWORD *a2)
  74448. {
  74449. *a2 = off_80E5590;
  74450. a2[1] = -1;
  74451. memset(a2 + 2, 0, 0x10u);
  74452. memset(a2 + 6, 0, 0x18u);
  74453. a2[12] = 0;
  74454. }
  74455. // 80E5590: using guessed type _DWORD (__cdecl *off_80E5590[2])(Socket *this);
  74456.  
  74457. //----- (080AF07C) --------------------------------------------------------
  74458. void __cdecl Socket::Socket(_DWORD *a2)
  74459. {
  74460. *a2 = off_80E5590;
  74461. a2[1] = -1;
  74462. memset(a2 + 2, 0, 0x10u);
  74463. memset(a2 + 6, 0, 0x18u);
  74464. a2[12] = 0;
  74465. }
  74466. // 80E5590: using guessed type _DWORD (__cdecl *off_80E5590[2])(Socket *this);
  74467.  
  74468. //----- (080AF0B4) --------------------------------------------------------
  74469. BOOL __cdecl Socket::isValid(int a2)
  74470. {
  74471. return *(_DWORD *)(a2 + 4) != -1;
  74472. }
  74473.  
  74474. //----- (080AF0C8) --------------------------------------------------------
  74475. BOOL __cdecl Socket::create(int a2)
  74476. {
  74477. *(_DWORD *)(a2 + 4) = SocketAPI::socket_ex(2, 1, 0);
  74478. memset((void *)(a2 + 8), 0, 0x10u);
  74479. *(_WORD *)(a2 + 8) = 2;
  74480. return Socket::isValid(a2) != 0;
  74481. }
  74482.  
  74483. //----- (080AF10C) --------------------------------------------------------
  74484. void __cdecl Socket::Socket(const CHAR *host, const char *hosta, int a5)
  74485. {
  74486. *(_DWORD *)host = off_80E5590;
  74487. strncpy((char *)host + 24, hosta, 0x17u);
  74488. *((_DWORD *)host + 12) = a5;
  74489. Socket::create((int)host);
  74490. }
  74491. // 80E5590: using guessed type _DWORD (__cdecl *off_80E5590[2])(Socket *this);
  74492.  
  74493. //----- (080AF140) --------------------------------------------------------
  74494. void __cdecl Socket::Socket(const CHAR *host, const char *hosta, int a5)
  74495. {
  74496. *(_DWORD *)host = off_80E5590;
  74497. strncpy((char *)host + 24, hosta, 0x17u);
  74498. *((_DWORD *)host + 12) = a5;
  74499. Socket::create((int)host);
  74500. }
  74501. // 80E5590: using guessed type _DWORD (__cdecl *off_80E5590[2])(Socket *this);
  74502.  
  74503. //----- (080AF174) --------------------------------------------------------
  74504. BOOL __cdecl Socket::connect(int a2)
  74505. {
  74506. int v2; // ebx
  74507.  
  74508. v2 = a2;
  74509. *(_DWORD *)(a2 + 12) = inet_addr((const char *)(a2 + 24));
  74510. *(_WORD *)(v2 + 10) = __ROR2__(*(_WORD *)(v2 + 48), 8);
  74511. return SocketAPI::connect_ex(*(_DWORD *)(v2 + 4), (const sockaddr *)(v2 + 8), 0x10u) != 0;
  74512. }
  74513.  
  74514. //----- (080AF1B8) --------------------------------------------------------
  74515. BOOL __cdecl Socket::connect(const CHAR *host, const char *hosta, int a5)
  74516. {
  74517. strncpy((char *)host + 24, hosta, 0x17u);
  74518. *((_DWORD *)host + 12) = a5;
  74519. return Socket::connect((int)host);
  74520. }
  74521.  
  74522. //----- (080AF1E8) --------------------------------------------------------
  74523. UINT __cdecl Socket::send(Socket *const this, const void *buf, UINT len, UINT flags)
  74524. {
  74525. return SocketAPI::send_ex(this->m_SocketID, buf, len, flags);
  74526. }
  74527.  
  74528. //----- (080AF1FC) --------------------------------------------------------
  74529. UINT __cdecl Socket::receive(Socket *const this, void *buf, UINT len, UINT flags)
  74530. {
  74531. return SocketAPI::recv_ex(this->m_SocketID, buf, len, flags);
  74532. }
  74533.  
  74534. //----- (080AF210) --------------------------------------------------------
  74535. UINT __cdecl Socket::available(int a2)
  74536. {
  74537. return SocketAPI::availablesocket_ex(*(_DWORD *)(a2 + 4));
  74538. }
  74539.  
  74540. //----- (080AF224) --------------------------------------------------------
  74541. int __cdecl Socket::getLinger(int a2)
  74542. {
  74543. SOCKET v2; // ST00_4
  74544. linger ling; // [esp+14h] [ebp-10h]
  74545. UINT len; // [esp+20h] [ebp-4h]
  74546.  
  74547. v2 = *(_DWORD *)(a2 + 4);
  74548. len = 8;
  74549. SocketAPI::getsockopt_ex(v2, 1, 13, &ling, &len);
  74550. return ling.l_linger;
  74551. }
  74552.  
  74553. //----- (080AF250) --------------------------------------------------------
  74554. SOCKET __cdecl Socket::accept(Socket *const this, sockaddr *addr, UINT *addrlen)
  74555. {
  74556. return SocketAPI::accept_ex(this->m_SocketID, addr, addrlen);
  74557. }
  74558.  
  74559. //----- (080AF264) --------------------------------------------------------
  74560. BOOL __cdecl Socket::setLinger(int a3, int a4)
  74561. {
  74562. linger ling; // [esp+Ch] [ebp-8h]
  74563.  
  74564. ling.l_onoff = a4 != 0;
  74565. ling.l_linger = a4;
  74566. return SocketAPI::setsockopt_ex(*(_DWORD *)(a3 + 4), 1, 13, &ling, 8u);
  74567. }
  74568.  
  74569. //----- (080AF294) --------------------------------------------------------
  74570. BOOL __cdecl Socket::isNonBlocking(int a2)
  74571. {
  74572. return SocketAPI::getsocketnonblocking_ex(*(_DWORD *)(a2 + 4));
  74573. }
  74574.  
  74575. //----- (080AF2A8) --------------------------------------------------------
  74576. BOOL __cdecl Socket::setNonBlocking(BOOL on, BOOL ona)
  74577. {
  74578. return SocketAPI::setsocketnonblocking_ex(*(_DWORD *)(on + 4), ona);
  74579. }
  74580.  
  74581. //----- (080AF2BC) --------------------------------------------------------
  74582. UINT __cdecl Socket::getReceiveBufferSize(int a2)
  74583. {
  74584. SOCKET v2; // ST00_4
  74585. UINT ReceiveBufferSize; // [esp+Ch] [ebp-8h]
  74586. UINT size; // [esp+10h] [ebp-4h]
  74587.  
  74588. v2 = *(_DWORD *)(a2 + 4);
  74589. size = 4;
  74590. SocketAPI::getsockopt_ex(v2, 1, 8, &ReceiveBufferSize, &size);
  74591. return ReceiveBufferSize;
  74592. }
  74593.  
  74594. //----- (080AF2E8) --------------------------------------------------------
  74595. BOOL __cdecl Socket::setReceiveBufferSize(UINT size)
  74596. {
  74597. va_list sizea; // [esp+20h] [ebp+Ch]
  74598.  
  74599. va_start(sizea, size);
  74600. return SocketAPI::setsockopt_ex(*(_DWORD *)(size + 4), 1, 8, sizea, 4u);
  74601. }
  74602.  
  74603. //----- (080AF308) --------------------------------------------------------
  74604. UINT __cdecl Socket::getSendBufferSize(int a2)
  74605. {
  74606. SOCKET v2; // ST00_4
  74607. UINT SendBufferSize; // [esp+Ch] [ebp-8h]
  74608. UINT size; // [esp+10h] [ebp-4h]
  74609.  
  74610. v2 = *(_DWORD *)(a2 + 4);
  74611. size = 4;
  74612. SocketAPI::getsockopt_ex(v2, 1, 7, &SendBufferSize, &size);
  74613. return SendBufferSize;
  74614. }
  74615.  
  74616. //----- (080AF334) --------------------------------------------------------
  74617. BOOL __cdecl Socket::setSendBufferSize(UINT size)
  74618. {
  74619. va_list sizea; // [esp+20h] [ebp+Ch]
  74620.  
  74621. va_start(sizea, size);
  74622. return SocketAPI::setsockopt_ex(*(_DWORD *)(size + 4), 1, 7, sizea, 4u);
  74623. }
  74624.  
  74625. //----- (080AF354) --------------------------------------------------------
  74626. UINT __cdecl Socket::getPort(int a2)
  74627. {
  74628. return *(_DWORD *)(a2 + 48);
  74629. }
  74630.  
  74631. //----- (080AF360) --------------------------------------------------------
  74632. UINT __cdecl Socket::getHostIP(int a2)
  74633. {
  74634. return *(_DWORD *)(a2 + 12);
  74635. }
  74636.  
  74637. //----- (080AF36C) --------------------------------------------------------
  74638. SOCKET __cdecl Socket::getSOCKET(int a2)
  74639. {
  74640. return *(_DWORD *)(a2 + 4);
  74641. }
  74642.  
  74643. //----- (080AF378) --------------------------------------------------------
  74644. BOOL __cdecl Socket::isSockError(int a2)
  74645. {
  74646. SOCKET v2; // ST00_4
  74647. INT error; // [esp+Ch] [ebp-8h]
  74648. UINT len; // [esp+10h] [ebp-4h]
  74649.  
  74650. v2 = *(_DWORD *)(a2 + 4);
  74651. len = 4;
  74652. return SocketAPI::getsockopt_ex2(v2, 1, 4, &error, &len) != 0;
  74653. }
  74654.  
  74655. //----- (080AF3AC) --------------------------------------------------------
  74656. UINT __cdecl Socket::getSockError(const Socket *const this)
  74657. {
  74658. return Socket::isSockError((int)this);
  74659. }
  74660.  
  74661. //----- (080AF3B8) --------------------------------------------------------
  74662. void __cdecl Socket::close(Socket *const this)
  74663. {
  74664. if ( Socket::isValid((int)this) && !Socket::isSockError((int)this) )
  74665. SocketAPI::closesocket_ex(this->m_SocketID);
  74666. this->m_SocketID = -1;
  74667. memset(&this->m_SockAddr, 0, sizeof(this->m_SockAddr));
  74668. memset(this->m_Host, 0, sizeof(this->m_Host));
  74669. this->m_Port = 0;
  74670. }
  74671. // 8049B18: using guessed type int __stdcall __cxa_end_catch(_DWORD);
  74672.  
  74673. //----- (080AF428) --------------------------------------------------------
  74674. BOOL __cdecl Socket::reconnect(Socket *a4, char *src, UINT a6)
  74675. {
  74676. Socket::close(a4);
  74677. strncpy(a4->m_Host, src, 0x17u);
  74678. a4->m_Port = a6;
  74679. Socket::create((int)a4);
  74680. return Socket::connect((int)a4);
  74681. }
  74682.  
  74683. //----- (080AF46C) --------------------------------------------------------
  74684. void __cdecl Socket::~Socket(Socket *a2)
  74685. {
  74686. a2->_vptr_Socket = (int (**)(...))off_80E5590;
  74687. Socket::close(a2);
  74688. operator delete((IPRegionTable *const )a2);
  74689. }
  74690. // 80E5590: using guessed type _DWORD (__cdecl *off_80E5590[2])(Socket *this);
  74691.  
  74692. //----- (080AF494) --------------------------------------------------------
  74693. void __cdecl Socket::~Socket(Socket *a2)
  74694. {
  74695. a2->_vptr_Socket = (int (**)(...))off_80E5590;
  74696. Socket::close(a2);
  74697. }
  74698. // 80E5590: using guessed type _DWORD (__cdecl *off_80E5590[2])(Socket *this);
  74699.  
  74700. //----- (080AF4B0) --------------------------------------------------------
  74701. void __cdecl Socket::~Socket(Socket *a2)
  74702. {
  74703. a2->_vptr_Socket = (int (**)(...))off_80E5590;
  74704. Socket::close(a2);
  74705. }
  74706. // 80E5590: using guessed type _DWORD (__cdecl *off_80E5590[2])(Socket *this);
  74707.  
  74708. //----- (080AF4CC) --------------------------------------------------------
  74709. BOOL __cdecl Socket::bind(int a2)
  74710. {
  74711. __int16 v2; // ax
  74712.  
  74713. v2 = *(_WORD *)(a2 + 48);
  74714. *(_DWORD *)(a2 + 12) = 0;
  74715. *(_WORD *)(a2 + 10) = __ROR2__(v2, 8);
  74716. return SocketAPI::bind_ex(*(_DWORD *)(a2 + 4), (const sockaddr *)(a2 + 8), 0x10u) != 0;
  74717. }
  74718.  
  74719. //----- (080AF504) --------------------------------------------------------
  74720. BOOL __cdecl Socket::bind(int a3, int a4)
  74721. {
  74722. *(_DWORD *)(a3 + 48) = a4;
  74723. *(_DWORD *)(a3 + 12) = 0;
  74724. *(_WORD *)(a3 + 10) = __ROR2__(a4, 8);
  74725. return SocketAPI::bind_ex(*(_DWORD *)(a3 + 4), (const sockaddr *)(a3 + 8), 0x10u) != 0;
  74726. }
  74727.  
  74728. //----- (080AF540) --------------------------------------------------------
  74729. BOOL __cdecl Socket::listen(INT backlog, UINT backloga)
  74730. {
  74731. return SocketAPI::listen_ex(*(_DWORD *)(backlog + 4), backloga);
  74732. }
  74733.  
  74734. //----- (080AF554) --------------------------------------------------------
  74735. BOOL __cdecl Socket::isReuseAddr(int a2)
  74736. {
  74737. SOCKET v2; // ST00_4
  74738. INT reuse; // [esp+Ch] [ebp-8h]
  74739. UINT len; // [esp+10h] [ebp-4h]
  74740.  
  74741. v2 = *(_DWORD *)(a2 + 4);
  74742. len = 4;
  74743. SocketAPI::getsockopt_ex(v2, 1, 2, &reuse, &len);
  74744. return reuse == 1;
  74745. }
  74746.  
  74747. //----- (080AF588) --------------------------------------------------------
  74748. BOOL __cdecl Socket::setReuseAddr(BOOL on, BOOL ona)
  74749. {
  74750. INT opt; // [esp+10h] [ebp-4h]
  74751.  
  74752. opt = ona == 1;
  74753. return SocketAPI::setsockopt_ex(*(_DWORD *)(on + 4), 1, 2, &opt, 4u);
  74754. }
  74755.  
  74756. //----- (080AF5B4) --------------------------------------------------------
  74757. void __cdecl _tcf_0_224(void *a1)
  74758. {
  74759. std::ios_base::Init::~Init(&std::__ioinit);
  74760. }
  74761.  
  74762. //----- (080AF5C4) --------------------------------------------------------
  74763. void `global constructor keyed to'Socket::Socket()
  74764. {
  74765. std::ios_base::Init::Init(&std::__ioinit);
  74766. __cxa_atexit(_tcf_0_224, 0, &_dso_handle);
  74767. }
  74768. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  74769.  
  74770. //----- (080AF5F0) --------------------------------------------------------
  74771. SOCKET __cdecl SocketAPI::socket_ex(INT domain, INT type, INT protocol)
  74772. {
  74773. return socket(domain, type, protocol);
  74774. }
  74775.  
  74776. //----- (080AF60C) --------------------------------------------------------
  74777. BOOL __cdecl SocketAPI::bind_ex(SOCKET s, const sockaddr *addr, UINT addrlen)
  74778. {
  74779. return bind(s, addr, addrlen) != -1;
  74780. }
  74781.  
  74782. //----- (080AF62C) --------------------------------------------------------
  74783. BOOL __cdecl SocketAPI::connect_ex(SOCKET s, const sockaddr *addr, UINT addrlen)
  74784. {
  74785. return connect(s, addr, addrlen) != -1;
  74786. }
  74787.  
  74788. //----- (080AF64C) --------------------------------------------------------
  74789. BOOL __cdecl SocketAPI::listen_ex(SOCKET s, UINT backlog)
  74790. {
  74791. return listen(s, backlog) != -1;
  74792. }
  74793.  
  74794. //----- (080AF66C) --------------------------------------------------------
  74795. SOCKET __cdecl SocketAPI::accept_ex(SOCKET s, sockaddr *addr, UINT *addrlen)
  74796. {
  74797. SOCKET result; // eax
  74798. SOCKET v4; // ebx
  74799. int v5; // eax
  74800. int v6; // ST0C_4
  74801. int *v7; // eax
  74802.  
  74803. result = accept(s, addr, addrlen);
  74804. v4 = result;
  74805. if ( result == -1 )
  74806. {
  74807. v5 = *__errno_location();
  74808. if ( v5 == 71 )
  74809. {
  74810. strncpy(gSocketError, "EPROTO", 0x104u);
  74811. goto LABEL_8;
  74812. }
  74813. if ( v5 > 71 )
  74814. {
  74815. if ( v5 == 95 )
  74816. {
  74817. strncpy(gSocketError, "EOPNOTSUPP", 0x104u);
  74818. goto LABEL_8;
  74819. }
  74820. if ( v5 > 95 )
  74821. {
  74822. if ( v5 == 103 )
  74823. {
  74824. strncpy(gSocketError, "ECONNABORTED", 0x104u);
  74825. goto LABEL_8;
  74826. }
  74827. if ( v5 == 104 )
  74828. {
  74829. strncpy(gSocketError, "ECONNRESET", 0x104u);
  74830. goto LABEL_8;
  74831. }
  74832. }
  74833. else if ( v5 == 88 )
  74834. {
  74835. strncpy(gSocketError, "ENOTSOCK", 0x104u);
  74836. goto LABEL_8;
  74837. }
  74838. }
  74839. else
  74840. {
  74841. if ( v5 == 9 )
  74842. {
  74843. strncpy(gSocketError, "EBADF", 0x104u);
  74844. goto LABEL_8;
  74845. }
  74846. if ( v5 > 9 )
  74847. {
  74848. if ( v5 == 11 )
  74849. {
  74850. strncpy(gSocketError, "EWOULDBLOCK", 0x104u);
  74851. goto LABEL_8;
  74852. }
  74853. if ( v5 == 14 )
  74854. {
  74855. strncpy(gSocketError, "EFAULT", 0x104u);
  74856. goto LABEL_8;
  74857. }
  74858. }
  74859. else if ( v5 == 4 )
  74860. {
  74861. strncpy(gSocketError, "EINTR", 0x104u);
  74862. goto LABEL_8;
  74863. }
  74864. }
  74865. v6 = v5;
  74866. memset(gSocketError, 0, 0x104u);
  74867. v7 = __errno_location();
  74868. sprintf(gSocketError, "gSocketError: %d", *v7, v6);
  74869. LABEL_8:
  74870. result = v4;
  74871. }
  74872. return result;
  74873. }
  74874.  
  74875. //----- (080AF7A0) --------------------------------------------------------
  74876. BOOL __cdecl SocketAPI::getsockopt_ex(SOCKET s, INT level, INT optname, void *optval, UINT *optlen)
  74877. {
  74878. return getsockopt(s, level, optname, optval, optlen) != -1;
  74879. }
  74880.  
  74881. //----- (080AF7C8) --------------------------------------------------------
  74882. UINT __cdecl SocketAPI::getsockopt_ex2(SOCKET s, INT level, INT optname, void *optval, UINT *optlen)
  74883. {
  74884. int v5; // eax
  74885. UINT v6; // edx
  74886. int v8; // eax
  74887. bool v9; // zf
  74888.  
  74889. v5 = getsockopt(s, level, optname, optval, optlen);
  74890. v6 = 0;
  74891. if ( v5 != -1 )
  74892. return v6;
  74893. v8 = *__errno_location();
  74894. v6 = 4;
  74895. if ( v8 == 14 )
  74896. return v6;
  74897. if ( v8 <= 14 )
  74898. {
  74899. LOBYTE(v6) = 1;
  74900. v9 = v8 == 9;
  74901. }
  74902. else
  74903. {
  74904. v6 = 2;
  74905. if ( v8 == 88 )
  74906. return v6;
  74907. LOBYTE(v6) = 3;
  74908. v9 = v8 == 92;
  74909. }
  74910. if ( v9 )
  74911. return v6;
  74912. return 5;
  74913. }
  74914.  
  74915. //----- (080AF828) --------------------------------------------------------
  74916. BOOL __cdecl SocketAPI::setsockopt_ex(SOCKET s, INT level, INT optname, const void *optval, UINT optlen)
  74917. {
  74918. return setsockopt(s, level, optname, optval, optlen) != -1;
  74919. }
  74920.  
  74921. //----- (080AF850) --------------------------------------------------------
  74922. UINT __cdecl SocketAPI::send_ex(SOCKET s, const void *buf, UINT len, UINT flags)
  74923. {
  74924. ssize_t v4; // ebx
  74925. UINT v5; // edx
  74926. int *v7; // eax
  74927.  
  74928. v4 = send(s, buf, len, flags);
  74929. if ( v4 != -1 || (v7 = __errno_location(), v5 = -100, *v7 != 11) )
  74930. v5 = v4;
  74931. return v5;
  74932. }
  74933. // 8049B18: using guessed type int __stdcall __cxa_end_catch(_DWORD);
  74934.  
  74935. //----- (080AF8A4) --------------------------------------------------------
  74936. UINT __cdecl SocketAPI::sendto_ex(SOCKET s, const void *buf, INT len, UINT flags, const sockaddr *to, INT tolen)
  74937. {
  74938. ssize_t v6; // ebx
  74939. UINT v7; // edx
  74940. int *v9; // eax
  74941.  
  74942. v6 = sendto(s, buf, len, flags, to, tolen);
  74943. if ( v6 != -1 || (v9 = __errno_location(), v7 = 0, *v9 != 11) )
  74944. v7 = v6;
  74945. return v7;
  74946. }
  74947.  
  74948. //----- (080AF8E8) --------------------------------------------------------
  74949. UINT __cdecl SocketAPI::recv_ex(SOCKET s, void *buf, UINT len, UINT flags)
  74950. {
  74951. ssize_t v4; // ebx
  74952. UINT v5; // edx
  74953. int *v7; // eax
  74954.  
  74955. v4 = recv(s, buf, len, flags);
  74956. if ( v4 != -1 || (v7 = __errno_location(), v5 = -100, *v7 != 11) )
  74957. v5 = v4;
  74958. return v5;
  74959. }
  74960.  
  74961. //----- (080AF928) --------------------------------------------------------
  74962. UINT __cdecl SocketAPI::recvfrom_ex(SOCKET s, void *buf, INT len, UINT flags, sockaddr *from, UINT *fromlen)
  74963. {
  74964. ssize_t v6; // ebx
  74965. UINT v7; // edx
  74966. int *v9; // eax
  74967.  
  74968. v6 = recvfrom(s, buf, len, flags, from, fromlen);
  74969. if ( v6 != -1 || (v9 = __errno_location(), v7 = -100, *v9 != 11) )
  74970. v7 = v6;
  74971. return v7;
  74972. }
  74973.  
  74974. //----- (080AF970) --------------------------------------------------------
  74975. BOOL __cdecl SocketAPI::closesocket_ex(SOCKET s)
  74976. {
  74977. FileAPI::close_ex(s);
  74978. return 1;
  74979. }
  74980.  
  74981. //----- (080AF988) --------------------------------------------------------
  74982. BOOL __cdecl SocketAPI::ioctlsocket_ex(SOCKET s, LONG cmd, ULONG *argp)
  74983. {
  74984. return 1;
  74985. }
  74986.  
  74987. //----- (080AF994) --------------------------------------------------------
  74988. BOOL __cdecl SocketAPI::getsocketnonblocking_ex(SOCKET s)
  74989. {
  74990. return FileAPI::getfilenonblocking_ex(s);
  74991. }
  74992.  
  74993. //----- (080AF9A0) --------------------------------------------------------
  74994. BOOL __cdecl SocketAPI::setsocketnonblocking_ex(SOCKET s, BOOL on)
  74995. {
  74996. FileAPI::setfilenonblocking_ex(s, on);
  74997. return 1;
  74998. }
  74999.  
  75000. //----- (080AF9B8) --------------------------------------------------------
  75001. UINT __cdecl SocketAPI::availablesocket_ex(SOCKET s)
  75002. {
  75003. return FileAPI::availablefile_ex(s);
  75004. }
  75005.  
  75006. //----- (080AF9C4) --------------------------------------------------------
  75007. BOOL __cdecl SocketAPI::shutdown_ex(SOCKET s, UINT how)
  75008. {
  75009. return shutdown(s, how) >= 0;
  75010. }
  75011.  
  75012. //----- (080AF9E0) --------------------------------------------------------
  75013. INT __cdecl SocketAPI::select_ex(INT maxfdp1, fd_set *readset, fd_set *writeset, fd_set *exceptset, timeval *timeout)
  75014. {
  75015. return select(maxfdp1, readset, writeset, exceptset, timeout);
  75016. }
  75017. // 8049B18: using guessed type int __stdcall __cxa_end_catch(_DWORD);
  75018.  
  75019. //----- (080AFA20) --------------------------------------------------------
  75020. void __cdecl _tcf_0_225(void *a1)
  75021. {
  75022. std::ios_base::Init::~Init(&std::__ioinit);
  75023. }
  75024.  
  75025. //----- (080AFA30) --------------------------------------------------------
  75026. void `global constructor keyed to'gSocketError()
  75027. {
  75028. std::ios_base::Init::Init(&std::__ioinit);
  75029. __cxa_atexit(_tcf_0_225, 0, &_dso_handle);
  75030. }
  75031. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  75032.  
  75033. //----- (080AFA5C) --------------------------------------------------------
  75034. UINT __cdecl SocketInputStream::Length(const SocketInputStream *const this)
  75035. {
  75036. UINT v1; // edx
  75037. UINT v2; // ecx
  75038.  
  75039. v1 = this->m_Head;
  75040. v2 = this->m_Tail;
  75041. if ( v1 < v2 )
  75042. return v2 - v1;
  75043. if ( v1 <= v2 )
  75044. return 0;
  75045. return v2 + this->m_BufferLen - v1;
  75046. }
  75047.  
  75048. //----- (080AFA84) --------------------------------------------------------
  75049. void __cdecl SocketInputStream::SocketInputStream(SocketInputStream *const this, Socket *sock, UINT BufferLen, UINT MaxBufferLen)
  75050. {
  75051. CHAR *v4; // eax
  75052.  
  75053. this->m_pSocket = sock;
  75054. this->m_BufferLen = BufferLen;
  75055. this->_vptr_SocketInputStream = (int (**)(...))off_80E5618;
  75056. this->m_MaxBufferLen = MaxBufferLen;
  75057. this->m_Head = 0;
  75058. this->m_Tail = 0;
  75059. v4 = (CHAR *)operator new[](BufferLen);
  75060. this->m_Buffer = v4;
  75061. memset(v4, 0, this->m_BufferLen);
  75062. }
  75063. // 80E5618: using guessed type _DWORD (__cdecl *off_80E5618[2])(SocketInputStream *this);
  75064.  
  75065. //----- (080AFADC) --------------------------------------------------------
  75066. void __cdecl SocketInputStream::SocketInputStream(SocketInputStream *const this, Socket *sock, UINT BufferLen, UINT MaxBufferLen)
  75067. {
  75068. CHAR *v4; // eax
  75069.  
  75070. this->m_pSocket = sock;
  75071. this->m_BufferLen = BufferLen;
  75072. this->_vptr_SocketInputStream = (int (**)(...))off_80E5618;
  75073. this->m_MaxBufferLen = MaxBufferLen;
  75074. this->m_Head = 0;
  75075. this->m_Tail = 0;
  75076. v4 = (CHAR *)operator new[](BufferLen);
  75077. this->m_Buffer = v4;
  75078. memset(v4, 0, this->m_BufferLen);
  75079. }
  75080. // 80E5618: using guessed type _DWORD (__cdecl *off_80E5618[2])(SocketInputStream *this);
  75081.  
  75082. //----- (080AFB34) --------------------------------------------------------
  75083. void __cdecl SocketInputStream::~SocketInputStream(SocketInputStream *const this)
  75084. {
  75085. CHAR *v1; // eax
  75086.  
  75087. v1 = this->m_Buffer;
  75088. this->_vptr_SocketInputStream = (int (**)(...))off_80E5618;
  75089. if ( v1 )
  75090. {
  75091. operator delete[](v1);
  75092. this->m_Buffer = 0;
  75093. }
  75094. }
  75095. // 80E5618: using guessed type _DWORD (__cdecl *off_80E5618[2])(SocketInputStream *this);
  75096.  
  75097. //----- (080AFB68) --------------------------------------------------------
  75098. void __cdecl SocketInputStream::~SocketInputStream(SocketInputStream *const this)
  75099. {
  75100. CHAR *v1; // eax
  75101.  
  75102. v1 = this->m_Buffer;
  75103. this->_vptr_SocketInputStream = (int (**)(...))off_80E5618;
  75104. if ( v1 )
  75105. {
  75106. operator delete[](v1);
  75107. this->m_Buffer = 0;
  75108. }
  75109. }
  75110. // 80E5618: using guessed type _DWORD (__cdecl *off_80E5618[2])(SocketInputStream *this);
  75111.  
  75112. //----- (080AFB9C) --------------------------------------------------------
  75113. void __cdecl SocketInputStream::~SocketInputStream(SocketInputStream *const this)
  75114. {
  75115. CHAR *v1; // eax
  75116.  
  75117. v1 = this->m_Buffer;
  75118. this->_vptr_SocketInputStream = (int (**)(...))off_80E5618;
  75119. if ( v1 )
  75120. {
  75121. operator delete[](v1);
  75122. this->m_Buffer = 0;
  75123. }
  75124. operator delete((IPRegionTable *const )this);
  75125. }
  75126. // 80E5618: using guessed type _DWORD (__cdecl *off_80E5618[2])(SocketInputStream *this);
  75127.  
  75128. //----- (080AFBE0) --------------------------------------------------------
  75129. UINT __cdecl SocketInputStream::Read(SocketInputStream *const this, CHAR *buf, UINT len)
  75130. {
  75131. UINT v3; // edx
  75132. UINT v4; // eax
  75133. UINT v5; // eax
  75134. size_t v6; // esi
  75135.  
  75136. v3 = 0;
  75137. if ( len )
  75138. {
  75139. v4 = SocketInputStream::Length(this);
  75140. v3 = 0;
  75141. if ( v4 >= len )
  75142. {
  75143. v5 = this->m_Head;
  75144. if ( v5 >= this->m_Tail && (v6 = this->m_BufferLen - v5, len > v6) )
  75145. {
  75146. memcpy(buf, &this->m_Buffer[v5], v6);
  75147. memcpy(&buf[v6], this->m_Buffer, len - v6);
  75148. }
  75149. else
  75150. {
  75151. memcpy(buf, &this->m_Buffer[v5], len);
  75152. }
  75153. this->m_Head = (len + this->m_Head) % this->m_BufferLen;
  75154. v3 = len;
  75155. }
  75156. }
  75157. return v3;
  75158. }
  75159.  
  75160. //----- (080AFC60) --------------------------------------------------------
  75161. BOOL __cdecl SocketInputStream::Peek(SocketInputStream *const this, CHAR *buf, UINT len)
  75162. {
  75163. BOOL v3; // edx
  75164. UINT v4; // eax
  75165. UINT v5; // eax
  75166. size_t v6; // esi
  75167.  
  75168. v3 = 0;
  75169. if ( len )
  75170. {
  75171. v4 = SocketInputStream::Length(this);
  75172. v3 = 0;
  75173. if ( v4 >= len )
  75174. {
  75175. v5 = this->m_Head;
  75176. if ( v5 >= this->m_Tail && (v6 = this->m_BufferLen - v5, len > v6) )
  75177. {
  75178. memcpy(buf, &this->m_Buffer[v5], v6);
  75179. memcpy(&buf[v6], this->m_Buffer, len - v6);
  75180. }
  75181. else
  75182. {
  75183. memcpy(buf, &this->m_Buffer[v5], len);
  75184. }
  75185. v3 = 1;
  75186. }
  75187. }
  75188. return v3;
  75189. }
  75190.  
  75191. //----- (080AFCD8) --------------------------------------------------------
  75192. BOOL __cdecl SocketInputStream::Skip(SocketInputStream *const this, UINT len)
  75193. {
  75194. BOOL v2; // edx
  75195. UINT v3; // eax
  75196.  
  75197. v2 = 0;
  75198. if ( len )
  75199. {
  75200. v3 = SocketInputStream::Length(this);
  75201. v2 = 0;
  75202. if ( v3 >= len )
  75203. {
  75204. this->m_Head = (this->m_Head + len) % this->m_BufferLen;
  75205. v2 = 1;
  75206. }
  75207. }
  75208. return v2;
  75209. }
  75210.  
  75211. //----- (080AFD14) --------------------------------------------------------
  75212. BOOL __cdecl SocketInputStream::ReadPacket(SocketInputStream *const this, Packet *pPacket)
  75213. {
  75214. BOOL result; // eax
  75215. int v3; // [esp-4h] [ebp-Ch]
  75216.  
  75217. if ( SocketInputStream::Skip(this, 6u) )
  75218. result = (*((int (__fastcall **)(_DWORD, int, Packet *, SocketInputStream *const ))pPacket->_vptr_Packet + 2))(
  75219. *((_DWORD *)pPacket->_vptr_Packet + 2),
  75220. v3,
  75221. pPacket,
  75222. this);
  75223. else
  75224. result = 0;
  75225. return result;
  75226. }
  75227.  
  75228. //----- (080AFD4C) --------------------------------------------------------
  75229. void __cdecl SocketInputStream::Initsize(SocketInputStream *const this, UINT BufferSize)
  75230. {
  75231. CHAR *v2; // eax
  75232. unsigned int v3; // esi
  75233. CHAR *v4; // eax
  75234.  
  75235. v2 = this->m_Buffer;
  75236. v3 = BufferSize;
  75237. this->m_Head = 0;
  75238. this->m_Tail = 0;
  75239. if ( v2 )
  75240. {
  75241. operator delete[](v2);
  75242. this->m_Buffer = 0;
  75243. }
  75244. if ( this->m_MaxBufferLen < BufferSize )
  75245. v3 = this->m_MaxBufferLen;
  75246. v4 = (CHAR *)operator new[](v3);
  75247. this->m_BufferLen = v3;
  75248. this->m_Buffer = v4;
  75249. memset(v4, 0, v3);
  75250. }
  75251.  
  75252. //----- (080AFDB0) --------------------------------------------------------
  75253. BOOL __cdecl SocketInputStream::Resize(SocketInputStream *const this, INT size)
  75254. {
  75255. signed int v2; // ebx
  75256. unsigned int v3; // edi
  75257. CHAR *v4; // ebx
  75258. UINT v5; // edx
  75259. UINT v6; // eax
  75260. bool v7; // cf
  75261. bool v8; // zf
  75262. CHAR *v9; // eax
  75263. BOOL result; // eax
  75264. UINT len; // [esp+8h] [ebp-10h]
  75265.  
  75266. v2 = size;
  75267. if ( size < (signed int)(this->m_BufferLen >> 1) )
  75268. v2 = this->m_BufferLen >> 1;
  75269. v3 = this->m_BufferLen + v2;
  75270. len = SocketInputStream::Length(this);
  75271. if ( v2 >= 0 )
  75272. {
  75273. v4 = (CHAR *)operator new[](v3);
  75274. v5 = this->m_Head;
  75275. v6 = this->m_Tail;
  75276. v7 = v5 < v6;
  75277. v8 = v5 == v6;
  75278. if ( v5 >= v6 )
  75279. {
  75280. LABEL_5:
  75281. if ( v7 || v8 )
  75282. {
  75283. v9 = this->m_Buffer;
  75284. if ( !v9 )
  75285. {
  75286. LABEL_7:
  75287. this->m_Tail = len;
  75288. this->m_Buffer = v4;
  75289. this->m_BufferLen = v3;
  75290. this->m_Head = 0;
  75291. return 1;
  75292. }
  75293. LABEL_13:
  75294. operator delete[](v9);
  75295. goto LABEL_7;
  75296. }
  75297. memcpy(v4, &this->m_Buffer[v5], this->m_BufferLen - v5);
  75298. memcpy(&v4[this->m_BufferLen - this->m_Head], this->m_Buffer, this->m_Tail);
  75299. LABEL_12:
  75300. v9 = this->m_Buffer;
  75301. if ( !v9 )
  75302. goto LABEL_7;
  75303. goto LABEL_13;
  75304. }
  75305. LABEL_11:
  75306. memcpy(v4, &this->m_Buffer[v5], v6 - v5);
  75307. goto LABEL_12;
  75308. }
  75309. result = 0;
  75310. if ( v3 >= len )
  75311. {
  75312. v4 = (CHAR *)operator new[](v3);
  75313. v5 = this->m_Head;
  75314. v6 = this->m_Tail;
  75315. v7 = v5 < v6;
  75316. v8 = v5 == v6;
  75317. if ( v5 >= v6 )
  75318. goto LABEL_5;
  75319. goto LABEL_11;
  75320. }
  75321. return result;
  75322. }
  75323.  
  75324. //----- (080AFE90) --------------------------------------------------------
  75325. UINT __cdecl SocketInputStream::Fill(SocketInputStream *const this)
  75326. {
  75327. UINT v1; // edi
  75328. UINT v2; // edx
  75329. UINT v3; // eax
  75330. UINT v4; // edx
  75331. UINT v5; // ecx
  75332. UINT v6; // esi
  75333. int v8; // eax
  75334. UINT v9; // ecx
  75335. int v10; // esi
  75336. UINT v11; // eax
  75337. UINT v12; // esi
  75338. BOOL v13; // eax
  75339. UINT v14; // eax
  75340. UINT v15; // ecx
  75341. UINT v16; // eax
  75342. UINT v17; // esi
  75343. UINT v18; // eax
  75344. UINT v19; // ecx
  75345. UINT v20; // esi
  75346. UINT v21; // eax
  75347. UINT v22; // esi
  75348. BOOL v23; // eax
  75349. UINT v24; // eax
  75350. UINT v25; // eax
  75351. UINT v26; // eax
  75352. UINT v27; // esi
  75353. BOOL v28; // eax
  75354. UINT v29; // eax
  75355. UINT v30; // eax
  75356.  
  75357. v1 = 0;
  75358. v2 = 0;
  75359. if ( !this->m_pSocket )
  75360. return v2;
  75361. v3 = this->m_Head;
  75362. v4 = this->m_Tail;
  75363. if ( v3 > v4 )
  75364. {
  75365. v8 = v3 - v4;
  75366. v9 = 0;
  75367. v10 = v8 - 1;
  75368. if ( v8 != 1 )
  75369. {
  75370. v16 = Socket::receive(this->m_pSocket, &this->m_Buffer[v4], v8 - 1, 0);
  75371. v2 = 0;
  75372. v9 = v16;
  75373. if ( v16 == -100 )
  75374. return v2;
  75375. v2 = -14;
  75376. if ( v16 == -1 )
  75377. return v2;
  75378. LOBYTE(v2) = -15;
  75379. if ( !v16 )
  75380. return v2;
  75381. this->m_Tail += v16;
  75382. v1 = v16;
  75383. }
  75384. if ( v9 == v10 )
  75385. {
  75386. v11 = Socket::available((int)this->m_pSocket);
  75387. v12 = v11;
  75388. if ( v11 )
  75389. {
  75390. if ( v11 + this->m_BufferLen + 1 > this->m_MaxBufferLen )
  75391. {
  75392. SocketInputStream::Initsize(this, 0x10000u);
  75393. return -16;
  75394. }
  75395. v13 = SocketInputStream::Resize(this, v11 + 1);
  75396. v2 = 0;
  75397. if ( v13 )
  75398. {
  75399. v14 = Socket::receive(this->m_pSocket, &this->m_Buffer[this->m_Tail], v12, 0);
  75400. v2 = 0;
  75401. v15 = v14;
  75402. if ( v14 != -100 )
  75403. {
  75404. v2 = -17;
  75405. if ( v14 != -1 )
  75406. {
  75407. LOBYTE(v2) = -18;
  75408. goto LABEL_16;
  75409. }
  75410. }
  75411. }
  75412. return v2;
  75413. }
  75414. }
  75415. return v1;
  75416. }
  75417. if ( !v3 )
  75418. {
  75419. v5 = 0;
  75420. v6 = this->m_BufferLen + ~v4;
  75421. if ( v6 )
  75422. {
  75423. v25 = Socket::receive(this->m_pSocket, &this->m_Buffer[v4], v6, 0);
  75424. v2 = 0;
  75425. v5 = v25;
  75426. if ( v25 == -100 )
  75427. return v2;
  75428. v2 = -2;
  75429. if ( v25 == -1 )
  75430. return v2;
  75431. LOBYTE(v2) = -3;
  75432. if ( !v25 )
  75433. return v2;
  75434. this->m_Tail += v25;
  75435. v1 = v25;
  75436. }
  75437. if ( v5 == v6 )
  75438. {
  75439. v26 = Socket::available((int)this->m_pSocket);
  75440. v27 = v26;
  75441. if ( v26 )
  75442. {
  75443. if ( v26 + this->m_BufferLen + 1 > this->m_MaxBufferLen )
  75444. {
  75445. SocketInputStream::Initsize(this, 0x10000u);
  75446. return -4;
  75447. }
  75448. v28 = SocketInputStream::Resize(this, v26 + 1);
  75449. v2 = 0;
  75450. if ( v28 )
  75451. {
  75452. v29 = Socket::receive(this->m_pSocket, &this->m_Buffer[this->m_Tail], v27, 0);
  75453. v2 = 0;
  75454. v15 = v29;
  75455. if ( v29 != -100 )
  75456. {
  75457. v2 = -5;
  75458. if ( v29 != -1 )
  75459. {
  75460. LOBYTE(v2) = -6;
  75461. LABEL_16:
  75462. if ( v15 )
  75463. {
  75464. this->m_Tail += v15;
  75465. v2 = v15 + v1;
  75466. }
  75467. return v2;
  75468. }
  75469. }
  75470. }
  75471. return v2;
  75472. }
  75473. }
  75474. return v1;
  75475. }
  75476. v17 = this->m_BufferLen - v4;
  75477. v18 = Socket::receive(this->m_pSocket, &this->m_Buffer[v4], v17, 0);
  75478. v2 = 0;
  75479. if ( v18 == -100 )
  75480. return v2;
  75481. v2 = -7;
  75482. if ( v18 == -1 )
  75483. return v2;
  75484. LOBYTE(v2) = -8;
  75485. if ( !v18 )
  75486. return v2;
  75487. this->m_Tail = (v18 + this->m_Tail) % this->m_BufferLen;
  75488. v1 = v18;
  75489. if ( v18 != v17 )
  75490. return v1;
  75491. v19 = 0;
  75492. v20 = this->m_Head - 1;
  75493. if ( this->m_Head != 1 )
  75494. {
  75495. v30 = Socket::receive(this->m_pSocket, this->m_Buffer, v20, 0);
  75496. v2 = 0;
  75497. v19 = v30;
  75498. if ( v30 == -100 )
  75499. return v2;
  75500. v2 = -9;
  75501. if ( v30 == -1 )
  75502. return v2;
  75503. LOBYTE(v2) = -10;
  75504. if ( !v30 )
  75505. return v2;
  75506. this->m_Tail += v30;
  75507. v1 += v30;
  75508. }
  75509. if ( v19 != v20 )
  75510. return v1;
  75511. v21 = Socket::available((int)this->m_pSocket);
  75512. v22 = v21;
  75513. if ( !v21 )
  75514. return v1;
  75515. if ( v21 + this->m_BufferLen + 1 > this->m_MaxBufferLen )
  75516. {
  75517. SocketInputStream::Initsize(this, 0x10000u);
  75518. return -11;
  75519. }
  75520. v23 = SocketInputStream::Resize(this, v21 + 1);
  75521. v2 = 0;
  75522. if ( v23 )
  75523. {
  75524. v24 = Socket::receive(this->m_pSocket, &this->m_Buffer[this->m_Tail], v22, 0);
  75525. v2 = 0;
  75526. v15 = v24;
  75527. if ( v24 != -100 )
  75528. {
  75529. v2 = -12;
  75530. if ( v24 != -1 )
  75531. {
  75532. LOBYTE(v2) = -13;
  75533. goto LABEL_16;
  75534. }
  75535. }
  75536. }
  75537. return v2;
  75538. }
  75539.  
  75540. //----- (080B01C4) --------------------------------------------------------
  75541. void __cdecl SocketInputStream::CleanUp(int a2)
  75542. {
  75543. *(_DWORD *)(a2 + 20) = 0;
  75544. *(_DWORD *)(a2 + 24) = 0;
  75545. }
  75546.  
  75547. //----- (080B01DC) --------------------------------------------------------
  75548. UINT __cdecl SocketInputStream::Write(SocketInputStream *const this, const CHAR *buf, UINT len)
  75549. {
  75550. UINT v3; // ecx
  75551. UINT v4; // edx
  75552. UINT v5; // ebx
  75553. UINT v6; // ebx
  75554. UINT v7; // edx
  75555. BOOL v9; // eax
  75556.  
  75557. v3 = this->m_Head;
  75558. v4 = this->m_Tail;
  75559. if ( v3 <= v4 )
  75560. {
  75561. v5 = this->m_BufferLen - v4 + v3 - 1;
  75562. if ( len < v5 )
  75563. goto LABEL_3;
  75564. LABEL_10:
  75565. v9 = SocketInputStream::Resize(this, len - v5 + 1);
  75566. v7 = 0;
  75567. if ( !v9 )
  75568. return v7;
  75569. v3 = this->m_Head;
  75570. v4 = this->m_Tail;
  75571. if ( v3 > v4 )
  75572. goto LABEL_12;
  75573. goto LABEL_4;
  75574. }
  75575. v5 = v3 - v4 - 1;
  75576. if ( len >= v5 )
  75577. goto LABEL_10;
  75578. LABEL_3:
  75579. if ( v3 > v4 )
  75580. {
  75581. LABEL_12:
  75582. memcpy(&this->m_Buffer[v4], buf, len);
  75583. goto LABEL_7;
  75584. }
  75585. LABEL_4:
  75586. if ( !v3 )
  75587. goto LABEL_12;
  75588. v6 = this->m_BufferLen - v4;
  75589. if ( len <= v6 )
  75590. goto LABEL_12;
  75591. memcpy(&this->m_Buffer[v4], buf, v6);
  75592. memcpy(this->m_Buffer, &buf[v6], len - v6);
  75593. LABEL_7:
  75594. this->m_Tail = (len + this->m_Tail) % this->m_BufferLen;
  75595. return len;
  75596. }
  75597.  
  75598. //----- (080B0298) --------------------------------------------------------
  75599. void __cdecl _tcf_0_226(void *a1)
  75600. {
  75601. std::ios_base::Init::~Init(&std::__ioinit);
  75602. }
  75603.  
  75604. //----- (080B02A8) --------------------------------------------------------
  75605. void `global constructor keyed to'SocketInputStream::SocketInputStream()
  75606. {
  75607. std::ios_base::Init::Init(&std::__ioinit);
  75608. __cxa_atexit(_tcf_0_226, 0, &_dso_handle);
  75609. }
  75610. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  75611.  
  75612. //----- (080B02D4) --------------------------------------------------------
  75613. UINT __cdecl SocketOutputStream::Length(const SocketOutputStream *const this)
  75614. {
  75615. UINT v1; // edx
  75616. UINT v2; // ecx
  75617.  
  75618. v1 = this->m_Head;
  75619. v2 = this->m_Tail;
  75620. if ( v1 < v2 )
  75621. return v2 - v1;
  75622. if ( v1 <= v2 )
  75623. return 0;
  75624. return v2 + this->m_BufferLen - v1;
  75625. }
  75626.  
  75627. //----- (080B02FC) --------------------------------------------------------
  75628. void __cdecl SocketOutputStream::SocketOutputStream(SocketOutputStream *const this, Socket *sock, UINT BufferLen, UINT MaxBufferLen)
  75629. {
  75630. CHAR *v4; // eax
  75631.  
  75632. this->m_pSocket = sock;
  75633. this->m_BufferLen = BufferLen;
  75634. this->_vptr_SocketOutputStream = (int (**)(...))off_80E5648;
  75635. this->m_MaxBufferLen = MaxBufferLen;
  75636. this->m_Head = 0;
  75637. this->m_Tail = 0;
  75638. v4 = (CHAR *)operator new[](BufferLen);
  75639. this->m_Buffer = v4;
  75640. memset(v4, 0, this->m_BufferLen);
  75641. }
  75642. // 80E5648: using guessed type _DWORD (__cdecl *off_80E5648[2])(SocketOutputStream *this);
  75643.  
  75644. //----- (080B0354) --------------------------------------------------------
  75645. void __cdecl SocketOutputStream::SocketOutputStream(SocketOutputStream *const this, Socket *sock, UINT BufferLen, UINT MaxBufferLen)
  75646. {
  75647. CHAR *v4; // eax
  75648.  
  75649. this->m_pSocket = sock;
  75650. this->m_BufferLen = BufferLen;
  75651. this->_vptr_SocketOutputStream = (int (**)(...))off_80E5648;
  75652. this->m_MaxBufferLen = MaxBufferLen;
  75653. this->m_Head = 0;
  75654. this->m_Tail = 0;
  75655. v4 = (CHAR *)operator new[](BufferLen);
  75656. this->m_Buffer = v4;
  75657. memset(v4, 0, this->m_BufferLen);
  75658. }
  75659. // 80E5648: using guessed type _DWORD (__cdecl *off_80E5648[2])(SocketOutputStream *this);
  75660.  
  75661. //----- (080B03AC) --------------------------------------------------------
  75662. void __cdecl SocketOutputStream::~SocketOutputStream(SocketOutputStream *const this)
  75663. {
  75664. CHAR *v1; // eax
  75665.  
  75666. v1 = this->m_Buffer;
  75667. this->_vptr_SocketOutputStream = (int (**)(...))off_80E5648;
  75668. if ( v1 )
  75669. {
  75670. operator delete[](v1);
  75671. this->m_Buffer = 0;
  75672. }
  75673. }
  75674. // 80E5648: using guessed type _DWORD (__cdecl *off_80E5648[2])(SocketOutputStream *this);
  75675.  
  75676. //----- (080B03E0) --------------------------------------------------------
  75677. void __cdecl SocketOutputStream::~SocketOutputStream(SocketOutputStream *const this)
  75678. {
  75679. CHAR *v1; // eax
  75680.  
  75681. v1 = this->m_Buffer;
  75682. this->_vptr_SocketOutputStream = (int (**)(...))off_80E5648;
  75683. if ( v1 )
  75684. {
  75685. operator delete[](v1);
  75686. this->m_Buffer = 0;
  75687. }
  75688. }
  75689. // 80E5648: using guessed type _DWORD (__cdecl *off_80E5648[2])(SocketOutputStream *this);
  75690.  
  75691. //----- (080B0414) --------------------------------------------------------
  75692. void __cdecl SocketOutputStream::~SocketOutputStream(SocketOutputStream *const this)
  75693. {
  75694. CHAR *v1; // eax
  75695.  
  75696. v1 = this->m_Buffer;
  75697. this->_vptr_SocketOutputStream = (int (**)(...))off_80E5648;
  75698. if ( v1 )
  75699. {
  75700. operator delete[](v1);
  75701. this->m_Buffer = 0;
  75702. }
  75703. operator delete((IPRegionTable *const )this);
  75704. }
  75705. // 80E5648: using guessed type _DWORD (__cdecl *off_80E5648[2])(SocketOutputStream *this);
  75706.  
  75707. //----- (080B0458) --------------------------------------------------------
  75708. BOOL __cdecl SocketOutputStream::Resize(SocketOutputStream *const this, INT size)
  75709. {
  75710. signed int v2; // ebx
  75711. unsigned int v3; // edi
  75712. char *v4; // ebx
  75713. BOOL result; // eax
  75714. UINT v6; // edx
  75715. UINT v7; // eax
  75716. CHAR *v8; // eax
  75717. UINT len; // [esp+8h] [ebp-10h]
  75718.  
  75719. v2 = size;
  75720. if ( size < (signed int)(this->m_BufferLen >> 1) )
  75721. v2 = this->m_BufferLen >> 1;
  75722. v3 = this->m_BufferLen + v2;
  75723. len = SocketOutputStream::Length(this);
  75724. if ( v2 >= 0 || (result = 0, v3 >= len) )
  75725. {
  75726. v4 = (char *)operator new[](v3);
  75727. result = 0;
  75728. if ( v4 )
  75729. {
  75730. v6 = this->m_Head;
  75731. v7 = this->m_Tail;
  75732. if ( v6 < v7 )
  75733. {
  75734. memcpy(v4, &this->m_Buffer[v6], v7 - v6);
  75735. }
  75736. else
  75737. {
  75738. if ( v6 <= v7 )
  75739. {
  75740. v8 = this->m_Buffer;
  75741. if ( !v8 )
  75742. {
  75743. LABEL_8:
  75744. this->m_Tail = len;
  75745. this->m_Buffer = v4;
  75746. this->m_BufferLen = v3;
  75747. this->m_Head = 0;
  75748. return 1;
  75749. }
  75750. LABEL_14:
  75751. operator delete[](v8);
  75752. goto LABEL_8;
  75753. }
  75754. memcpy(v4, &this->m_Buffer[v6], this->m_BufferLen - v6);
  75755. memcpy(&v4[this->m_BufferLen - this->m_Head], this->m_Buffer, this->m_Tail);
  75756. }
  75757. v8 = this->m_Buffer;
  75758. if ( !v8 )
  75759. goto LABEL_8;
  75760. goto LABEL_14;
  75761. }
  75762. }
  75763. return result;
  75764. }
  75765.  
  75766. //----- (080B052C) --------------------------------------------------------
  75767. UINT __cdecl SocketOutputStream::Write(SocketOutputStream *const this, const CHAR *buf, UINT len)
  75768. {
  75769. UINT v3; // ecx
  75770. UINT v4; // edx
  75771. UINT v5; // ebx
  75772. UINT v6; // ebx
  75773. UINT v7; // edx
  75774. BOOL v9; // eax
  75775.  
  75776. v3 = this->m_Head;
  75777. v4 = this->m_Tail;
  75778. if ( v3 <= v4 )
  75779. {
  75780. v5 = this->m_BufferLen - v4 + v3 - 1;
  75781. if ( len < v5 )
  75782. goto LABEL_3;
  75783. LABEL_10:
  75784. v9 = SocketOutputStream::Resize(this, len - v5 + 1);
  75785. v7 = 0;
  75786. if ( !v9 )
  75787. return v7;
  75788. v3 = this->m_Head;
  75789. v4 = this->m_Tail;
  75790. if ( v3 > v4 )
  75791. goto LABEL_12;
  75792. goto LABEL_4;
  75793. }
  75794. v5 = v3 - v4 - 1;
  75795. if ( len >= v5 )
  75796. goto LABEL_10;
  75797. LABEL_3:
  75798. if ( v3 > v4 )
  75799. {
  75800. LABEL_12:
  75801. memcpy(&this->m_Buffer[v4], buf, len);
  75802. goto LABEL_7;
  75803. }
  75804. LABEL_4:
  75805. if ( !v3 )
  75806. goto LABEL_12;
  75807. v6 = this->m_BufferLen - v4;
  75808. if ( len <= v6 )
  75809. goto LABEL_12;
  75810. memcpy(&this->m_Buffer[v4], buf, v6);
  75811. memcpy(this->m_Buffer, &buf[v6], len - v6);
  75812. LABEL_7:
  75813. this->m_Tail = (len + this->m_Tail) % this->m_BufferLen;
  75814. return len;
  75815. }
  75816.  
  75817. //----- (080B05E8) --------------------------------------------------------
  75818. BOOL __cdecl SocketOutputStream::WritePacket(SocketOutputStream *a3, unsigned __int8 *a4)
  75819. {
  75820. unsigned __int8 *v4; // ebx
  75821. int v5; // ecx
  75822. int v6; // ST04_4
  75823. UINT packetUINT; // [esp+14h] [ebp-10h]
  75824. PacketID_t packetID; // [esp+1Ah] [ebp-Ah]
  75825.  
  75826. v4 = a4;
  75827. packetID = (*(int (__cdecl **)(unsigned __int8 *))(*(_DWORD *)a4 + 20))(a4);
  75828. SocketOutputStream::Write(a3, (const CHAR *)&packetID, 2u);
  75829. packetUINT = (*(int (__cdecl **)(unsigned __int8 *))(*(_DWORD *)v4 + 24))(v4) + (v4[4] << 24);
  75830. SocketOutputStream::Write(a3, (const CHAR *)&packetUINT, 4u);
  75831. return (*(int (__fastcall **)(int, int, unsigned __int8 *, SocketOutputStream *))(*(_DWORD *)v4 + 12))(v5, v6, v4, a3);
  75832. }
  75833.  
  75834. //----- (080B0644) --------------------------------------------------------
  75835. void __cdecl SocketOutputStream::Initsize(SocketOutputStream *const this, UINT BufferLen)
  75836. {
  75837. CHAR *v2; // eax
  75838. unsigned int v3; // esi
  75839. CHAR *v4; // eax
  75840.  
  75841. v2 = this->m_Buffer;
  75842. v3 = BufferLen;
  75843. this->m_Head = 0;
  75844. this->m_Tail = 0;
  75845. if ( v2 )
  75846. {
  75847. operator delete[](v2);
  75848. this->m_Buffer = 0;
  75849. }
  75850. if ( this->m_MaxBufferLen < BufferLen )
  75851. v3 = this->m_MaxBufferLen;
  75852. v4 = (CHAR *)operator new[](v3);
  75853. this->m_BufferLen = v3;
  75854. this->m_Buffer = v4;
  75855. memset(v4, 0, v3);
  75856. }
  75857.  
  75858. //----- (080B06A8) --------------------------------------------------------
  75859. UINT __cdecl SocketOutputStream::Flush(SocketOutputStream *const this)
  75860. {
  75861. UINT result; // eax
  75862. UINT v2; // ecx
  75863. UINT v3; // eax
  75864. UINT v4; // edx
  75865. UINT v5; // esi
  75866. UINT v6; // eax
  75867. UINT v7; // edi
  75868. UINT v8; // esi
  75869. UINT i; // eax
  75870. UINT v10; // edi
  75871. UINT v11; // eax
  75872. UINT j; // esi
  75873. UINT v13; // eax
  75874. UINT nFlushed; // [esp+8h] [ebp-10h]
  75875.  
  75876. result = 0;
  75877. if ( this->m_pSocket )
  75878. {
  75879. v2 = this->m_BufferLen;
  75880. nFlushed = 0;
  75881. if ( v2 > this->m_MaxBufferLen )
  75882. {
  75883. SocketOutputStream::Initsize(this, 0x2000u);
  75884. return -2;
  75885. }
  75886. v3 = this->m_Head;
  75887. v4 = this->m_Tail;
  75888. if ( v3 >= v4 )
  75889. {
  75890. if ( v3 > v4 )
  75891. {
  75892. v8 = v2 - v3;
  75893. if ( v2 != v3 )
  75894. {
  75895. for ( i = Socket::send(this->m_pSocket, &this->m_Buffer[v3], v2 - v3, 0x4000u);
  75896. ;
  75897. i = Socket::send(this->m_pSocket, &this->m_Buffer[v11], v8, 0x4000u) )
  75898. {
  75899. v10 = i;
  75900. if ( i == -100 )
  75901. break;
  75902. if ( i == -1 )
  75903. return -4;
  75904. if ( !i )
  75905. return 0;
  75906. nFlushed += i;
  75907. v11 = i + this->m_Head;
  75908. v8 -= v10;
  75909. if ( !v8 )
  75910. {
  75911. v4 = this->m_Tail;
  75912. goto LABEL_21;
  75913. }
  75914. this->m_Head = v11;
  75915. }
  75916. return 0;
  75917. }
  75918. LABEL_21:
  75919. this->m_Head = 0;
  75920. for ( j = v4; j; j -= v13 )
  75921. {
  75922. v13 = Socket::send(this->m_pSocket, &this->m_Buffer[this->m_Head], j, 0x4000u);
  75923. switch ( v13 )
  75924. {
  75925. case 0xFFFFFF9C:
  75926. return 0;
  75927. case 0xFFFFFFFF:
  75928. return -5;
  75929. case 0u:
  75930. return 0;
  75931. }
  75932. nFlushed += v13;
  75933. this->m_Head += v13;
  75934. }
  75935. }
  75936. }
  75937. else
  75938. {
  75939. v5 = v4 - v3;
  75940. if ( v4 != v3 )
  75941. {
  75942. do
  75943. {
  75944. v6 = Socket::send(this->m_pSocket, &this->m_Buffer[v3], v5, 0x4000u);
  75945. v7 = v6;
  75946. switch ( v6 )
  75947. {
  75948. case 0xFFFFFF9C:
  75949. return 0;
  75950. case 0xFFFFFFFF:
  75951. return -3;
  75952. case 0u:
  75953. return 0;
  75954. }
  75955. nFlushed += v6;
  75956. v3 = v6 + this->m_Head;
  75957. this->m_Head = v3;
  75958. v5 -= v7;
  75959. }
  75960. while ( v5 );
  75961. }
  75962. }
  75963. this->m_Tail = 0;
  75964. this->m_Head = 0;
  75965. result = nFlushed;
  75966. }
  75967. return result;
  75968. }
  75969. // 8049B18: using guessed type int __stdcall __cxa_end_catch(_DWORD);
  75970.  
  75971. //----- (080B0858) --------------------------------------------------------
  75972. void __cdecl SocketOutputStream::CleanUp(int a2)
  75973. {
  75974. *(_DWORD *)(a2 + 20) = 0;
  75975. *(_DWORD *)(a2 + 24) = 0;
  75976. }
  75977.  
  75978. //----- (080B0870) --------------------------------------------------------
  75979. void __cdecl _tcf_0_227(void *a1)
  75980. {
  75981. std::ios_base::Init::~Init(&std::__ioinit);
  75982. }
  75983.  
  75984. //----- (080B0880) --------------------------------------------------------
  75985. void `global constructor keyed to'SocketOutputStream::SocketOutputStream()
  75986. {
  75987. std::ios_base::Init::Init(&std::__ioinit);
  75988. __cxa_atexit(_tcf_0_227, 0, &_dso_handle);
  75989. }
  75990. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  75991.  
  75992. //----- (080B08AC) --------------------------------------------------------
  75993. void __cdecl _tcf_0_228(void *a1)
  75994. {
  75995. pthread_mutex_destroy(&__show__(char const*)::llock.m_Mutex);
  75996. }
  75997.  
  75998. //----- (080B08BC) --------------------------------------------------------
  75999. void __cdecl __noreturn __show__(const CHAR *szTemp)
  76000. {
  76001. struct tm *v1; // ebx
  76002. FILE *v2; // eax
  76003. FILE *v3; // ebx
  76004. _DWORD *v4; // eax
  76005. int v5; // [esp+4h] [ebp-1DCh]
  76006. time_t tSetTime; // [esp+24h] [ebp-1BCh]
  76007. AutoLock_T autolock; // [esp+28h] [ebp-1B8h]
  76008. CHAR szFileName[260]; // [esp+38h] [ebp-1A8h]
  76009. CHAR szTime[128]; // [esp+148h] [ebp-98h]
  76010.  
  76011. printf("Assert:%s", szTemp);
  76012. time(&tSetTime);
  76013. v1 = localtime(&tSetTime);
  76014. memset(szTime, 0, 0x80u);
  76015. sprintf(
  76016. szTime,
  76017. " t=(%d-%d-%d %d:%d:%d)",
  76018. v1->tm_year + 1900,
  76019. v1->tm_mon + 1,
  76020. v1->tm_mday,
  76021. v1->tm_hour,
  76022. v1->tm_min,
  76023. v1->tm_sec);
  76024. memset(szFileName, 0, 0x104u);
  76025. sprintf(
  76026. szFileName,
  76027. "./Log/assert_%.4d-%.2d-%.2d.log",
  76028. g_LogFileNameFix / 0x2710,
  76029. g_LogFileNameFix % 0x2710 / 0x64,
  76030. g_LogFileNameFix % 0x64);
  76031. if ( !(_BYTE)`guard variable for'__show__(char const*)::llock
  76032. && __cxa_guard_acquire(&`guard variable for'__show__(char const*)::llock) )
  76033. {
  76034. pthread_mutex_init(&__show__(char const*)::llock.m_Mutex, 0);
  76035. __cxa_guard_release(&`guard variable for'__show__(char const*)::llock);
  76036. __cxa_atexit(_tcf_0_228, 0, &_dso_handle);
  76037. }
  76038. autolock.m_pLock = &__show__(char const*)::llock;
  76039. pthread_mutex_lock(&__show__(char const*)::llock.m_Mutex);
  76040. v2 = fopen(szFileName, "a");
  76041. v3 = v2;
  76042. if ( v2 )
  76043. {
  76044. fwrite(szTemp, 1u, strlen(szTemp), v2);
  76045. fwrite(szTime, 1u, strlen(szTime), v3);
  76046. fwrite("\n", 1u, 1u, v3);
  76047. fclose(v3);
  76048. }
  76049. if ( autolock.m_pLock )
  76050. {
  76051. pthread_mutex_unlock(&autolock.m_pLock->m_Mutex);
  76052. autolock.m_pLock = 0;
  76053. }
  76054. v4 = (_DWORD *)__cxa_allocate_exception(4);
  76055. *v4 = 1;
  76056. __cxa_throw(v4, &`typeinfo for'int, 0, v5);
  76057. }
  76058. // 8049B08: using guessed type int __cdecl __cxa_guard_acquire(_DWORD);
  76059. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  76060. // 8049DA8: using guessed type int __cdecl __cxa_allocate_exception(_DWORD);
  76061. // 8049DE8: using guessed type int __cdecl __cxa_guard_release(_DWORD);
  76062. // 804A1C8: using guessed type int __stdcall __cxa_throw(_DWORD, _DWORD, _DWORD, _DWORD);
  76063.  
  76064. //----- (080B0AF0) --------------------------------------------------------
  76065. void __cdecl __messagebox__(const CHAR *msg)
  76066. {
  76067. ;
  76068. }
  76069.  
  76070. //----- (080B0AF8) --------------------------------------------------------
  76071. void __cdecl __noreturn __assert__(const CHAR *file, UINT line, const CHAR *func, const CHAR *expr)
  76072. {
  76073. CHAR szTemp[1024]; // [esp+4h] [ebp-408h]
  76074.  
  76075. memset(szTemp, 0, 0x400u);
  76076. snprintf(szTemp, 0x400u, "\n[%s][%d][%s][%s]", file, line);
  76077. szTemp[1023] = 0;
  76078. __show__(szTemp);
  76079. }
  76080.  
  76081. //----- (080B0B48) --------------------------------------------------------
  76082. void __cdecl __noreturn __assertex__(const CHAR *file, UINT line, const CHAR *func, const CHAR *expr, const CHAR *msg)
  76083. {
  76084. CHAR szTemp[1024]; // [esp+4h] [ebp-408h]
  76085.  
  76086. memset(szTemp, 0, 0x400u);
  76087. snprintf(szTemp, 0x400u, "\n[%s][%d][%s][%s]\n[%s]", file, line, func, expr, msg);
  76088. szTemp[1023] = 0;
  76089. __show__(szTemp);
  76090. }
  76091.  
  76092. //----- (080B0B98) --------------------------------------------------------
  76093. void __cdecl __noreturn __assertspecial__(const CHAR *file, UINT line, const CHAR *func, const CHAR *expr, const CHAR *msg)
  76094. {
  76095. CHAR szTemp[1024]; // [esp+4h] [ebp-408h]
  76096.  
  76097. memset(szTemp, 0, 0x400u);
  76098. snprintf(szTemp, 0x400u, "Stack:[%s][%d][%s][%s]", file, line);
  76099. szTemp[1023] = 0;
  76100. __show__(szTemp);
  76101. }
  76102.  
  76103. //----- (080B0BE8) --------------------------------------------------------
  76104. void __cdecl _tcf_1_6(void *a1)
  76105. {
  76106. std::ios_base::Init::~Init(&std::__ioinit);
  76107. }
  76108.  
  76109. //----- (080B0BF8) --------------------------------------------------------
  76110. void `global constructor keyed to'g_Command_Assert()
  76111. {
  76112. std::ios_base::Init::Init(&std::__ioinit);
  76113. __cxa_atexit(_tcf_1_6, 0, &_dso_handle);
  76114. }
  76115. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  76116.  
  76117. //----- (080B0C24) --------------------------------------------------------
  76118. INT __cdecl FileAPI::open_ex(const CHAR *filename, INT flags)
  76119. {
  76120. return open(filename, flags);
  76121. }
  76122.  
  76123. //----- (080B0C3C) --------------------------------------------------------
  76124. INT __cdecl FileAPI::open_ex(const CHAR *filename, INT flags, INT mode)
  76125. {
  76126. return open(filename, flags, mode);
  76127. }
  76128.  
  76129. //----- (080B0C58) --------------------------------------------------------
  76130. UINT __cdecl FileAPI::read_ex(INT fd, void *buf, UINT len)
  76131. {
  76132. return read(fd, buf, len);
  76133. }
  76134.  
  76135. //----- (080B0C74) --------------------------------------------------------
  76136. UINT __cdecl FileAPI::write_ex(INT fd, const void *buf, UINT len)
  76137. {
  76138. return write(fd, buf, len);
  76139. }
  76140.  
  76141. //----- (080B0C90) --------------------------------------------------------
  76142. void __cdecl FileAPI::close_ex(INT fd)
  76143. {
  76144. close(fd);
  76145. }
  76146.  
  76147. //----- (080B0CA4) --------------------------------------------------------
  76148. INT __cdecl FileAPI::fcntl_ex(INT fd, INT cmd)
  76149. {
  76150. return fcntl(fd, cmd);
  76151. }
  76152.  
  76153. //----- (080B0CBC) --------------------------------------------------------
  76154. INT __cdecl FileAPI::fcntl_ex(INT fd, INT cmd, LONG arg)
  76155. {
  76156. return fcntl(fd, cmd, arg);
  76157. }
  76158.  
  76159. //----- (080B0CD8) --------------------------------------------------------
  76160. BOOL __cdecl FileAPI::getfilenonblocking_ex(INT fd)
  76161. {
  76162. BOOL result; // eax
  76163.  
  76164. result = FileAPI::fcntl_ex(fd, 3, 0);
  76165. BYTE1(result) |= 8u;
  76166. return result;
  76167. }
  76168.  
  76169. //----- (080B0CF0) --------------------------------------------------------
  76170. void __cdecl FileAPI::setfilenonblocking_ex(INT fd, BOOL on)
  76171. {
  76172. INT v2; // eax
  76173.  
  76174. v2 = FileAPI::fcntl_ex(fd, 3, 0);
  76175. if ( on )
  76176. BYTE1(v2) |= 8u;
  76177. else
  76178. BYTE1(v2) &= 0xF7u;
  76179. FileAPI::fcntl_ex(fd, 4, v2);
  76180. }
  76181.  
  76182. //----- (080B0D34) --------------------------------------------------------
  76183. void __cdecl FileAPI::ioctl_ex(INT fd, INT request, void *argp)
  76184. {
  76185. ioctl(fd, request, argp);
  76186. }
  76187.  
  76188. //----- (080B0D50) --------------------------------------------------------
  76189. void __cdecl FileAPI::setfilenonblocking_ex2(INT fd, BOOL on)
  76190. {
  76191. ULONG arg; // [esp+8h] [ebp-4h]
  76192.  
  76193. arg = on == 1;
  76194. FileAPI::ioctl_ex(fd, 21537, &arg);
  76195. }
  76196.  
  76197. //----- (080B0D78) --------------------------------------------------------
  76198. UINT __cdecl FileAPI::availablefile_ex(INT fd)
  76199. {
  76200. UINT arg; // [esp+8h] [ebp-4h]
  76201.  
  76202. arg = 0;
  76203. FileAPI::ioctl_ex(fd, 21531, &arg);
  76204. return arg;
  76205. }
  76206.  
  76207. //----- (080B0D9C) --------------------------------------------------------
  76208. INT __cdecl FileAPI::dup_ex(INT fd)
  76209. {
  76210. return dup(fd);
  76211. }
  76212.  
  76213. //----- (080B0DB0) --------------------------------------------------------
  76214. LONG __cdecl FileAPI::lseek_ex(INT fd, LONG offset, INT whence)
  76215. {
  76216. return lseek(fd, offset, whence);
  76217. }
  76218.  
  76219. //----- (080B0DCC) --------------------------------------------------------
  76220. LONG __cdecl FileAPI::tell_ex(INT fd)
  76221. {
  76222. ;
  76223. }
  76224.  
  76225. //----- (080B0DD4) --------------------------------------------------------
  76226. void __cdecl _tcf_0_229(void *a1)
  76227. {
  76228. std::ios_base::Init::~Init(&std::__ioinit);
  76229. }
  76230.  
  76231. //----- (080B0DE4) --------------------------------------------------------
  76232. void `global constructor keyed to'FileAPI::open_ex()
  76233. {
  76234. std::ios_base::Init::Init(&std::__ioinit);
  76235. __cxa_atexit(_tcf_0_229, 0, &_dso_handle);
  76236. }
  76237. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  76238.  
  76239. //----- (080B0E10) --------------------------------------------------------
  76240. void __cdecl IniFile::IniFile(_DWORD *a2)
  76241. {
  76242. *a2 = off_80E56F8;
  76243. a2[66] = 0;
  76244. a2[67] = 0;
  76245. a2[68] = 0;
  76246. a2[69] = 0;
  76247. }
  76248. // 80E56F8: using guessed type _DWORD (__cdecl *off_80E56F8[2])(IniFile *this);
  76249.  
  76250. //----- (080B0E48) --------------------------------------------------------
  76251. void __cdecl IniFile::IniFile(_DWORD *a2)
  76252. {
  76253. *a2 = off_80E56F8;
  76254. a2[66] = 0;
  76255. a2[67] = 0;
  76256. a2[68] = 0;
  76257. a2[69] = 0;
  76258. }
  76259. // 80E56F8: using guessed type _DWORD (__cdecl *off_80E56F8[2])(IniFile *this);
  76260.  
  76261. //----- (080B0E80) --------------------------------------------------------
  76262. void __cdecl IniFile::~IniFile(IniFile *const this)
  76263. {
  76264. int v1; // edx
  76265.  
  76266. v1 = this->m_lDataLen;
  76267. this->_vptr_IniFile = (int (**)(...))off_80E56F8;
  76268. if ( v1 )
  76269. {
  76270. if ( this->m_strData )
  76271. {
  76272. operator delete[](this->m_strData);
  76273. this->m_strData = 0;
  76274. }
  76275. this->m_lDataLen = 0;
  76276. }
  76277. if ( this->IndexNum )
  76278. {
  76279. if ( this->IndexList )
  76280. {
  76281. operator delete[](this->IndexList);
  76282. this->IndexList = 0;
  76283. }
  76284. this->IndexNum = 0;
  76285. }
  76286. }
  76287. // 80E56F8: using guessed type _DWORD (__cdecl *off_80E56F8[2])(IniFile *this);
  76288.  
  76289. //----- (080B0F18) --------------------------------------------------------
  76290. void __cdecl IniFile::~IniFile(IniFile *const this)
  76291. {
  76292. int v1; // eax
  76293.  
  76294. v1 = this->m_lDataLen;
  76295. this->_vptr_IniFile = (int (**)(...))off_80E56F8;
  76296. if ( v1 )
  76297. {
  76298. if ( this->m_strData )
  76299. {
  76300. operator delete[](this->m_strData);
  76301. this->m_strData = 0;
  76302. }
  76303. this->m_lDataLen = 0;
  76304. }
  76305. if ( this->IndexNum )
  76306. {
  76307. if ( this->IndexList )
  76308. {
  76309. operator delete[](this->IndexList);
  76310. this->IndexList = 0;
  76311. }
  76312. this->IndexNum = 0;
  76313. }
  76314. }
  76315. // 80E56F8: using guessed type _DWORD (__cdecl *off_80E56F8[2])(IniFile *this);
  76316.  
  76317. //----- (080B0FB0) --------------------------------------------------------
  76318. void __cdecl IniFile::~IniFile(IniFile *const this)
  76319. {
  76320. int v1; // eax
  76321.  
  76322. v1 = this->m_lDataLen;
  76323. this->_vptr_IniFile = (int (**)(...))off_80E56F8;
  76324. if ( v1 )
  76325. {
  76326. if ( this->m_strData )
  76327. {
  76328. operator delete[](this->m_strData);
  76329. this->m_strData = 0;
  76330. }
  76331. this->m_lDataLen = 0;
  76332. }
  76333. if ( this->IndexNum )
  76334. {
  76335. if ( this->IndexList )
  76336. {
  76337. operator delete[](this->IndexList);
  76338. this->IndexList = 0;
  76339. }
  76340. this->IndexNum = 0;
  76341. }
  76342. operator delete((IPRegionTable *const )this);
  76343. }
  76344. // 80E56F8: using guessed type _DWORD (__cdecl *off_80E56F8[2])(IniFile *this);
  76345.  
  76346. //----- (080B1050) --------------------------------------------------------
  76347. void __cdecl IniFile::InitIndex(IniFile *const this)
  76348. {
  76349. int v1; // esi
  76350. int v2; // edx
  76351. CHAR *v3; // ebx
  76352. INT v4; // eax
  76353. INT *v5; // eax
  76354. int v6; // esi
  76355. int v7; // edx
  76356. CHAR *v8; // ebx
  76357. int v9; // ecx
  76358. INT n; // [esp+8h] [ebp-10h]
  76359.  
  76360. v1 = this->m_lDataLen;
  76361. v2 = 0;
  76362. this->IndexNum = 0;
  76363. if ( v1 > 0 )
  76364. {
  76365. v3 = this->m_strData;
  76366. do
  76367. {
  76368. while ( v3[v2] != 91 || v2 && v3[v2 - 1] != 10 )
  76369. {
  76370. if ( v1 <= ++v2 )
  76371. goto LABEL_8;
  76372. }
  76373. ++v2;
  76374. ++this->IndexNum;
  76375. }
  76376. while ( v1 > v2 );
  76377. }
  76378. LABEL_8:
  76379. if ( this->IndexList )
  76380. {
  76381. operator delete[](this->IndexList);
  76382. this->IndexList = 0;
  76383. }
  76384. v4 = this->IndexNum;
  76385. if ( v4 > 0 )
  76386. {
  76387. v5 = (INT *)operator new[](4 * v4);
  76388. this->IndexList = v5;
  76389. if ( !v5 )
  76390. __assertex__(
  76391. "src/FB_IniFile.cpp",
  76392. 0xE1u,
  76393. "void IniFile::InitIndex()",
  76394. "FALSE",
  76395. "[IniFile::InitIndex]: alloc memory failed!!");
  76396. memset(this->IndexList, -1, 4 * this->IndexNum);
  76397. }
  76398. v6 = this->m_lDataLen;
  76399. v7 = 0;
  76400. n = 0;
  76401. if ( v6 > 0 )
  76402. {
  76403. v8 = this->m_strData;
  76404. do
  76405. {
  76406. v9 = v7 + 1;
  76407. if ( v8[v7] == 91 && (!v7 || v8[v7 - 1] == 10) )
  76408. {
  76409. v9 = v7 + 1;
  76410. this->IndexList[n++] = v7 + 1;
  76411. }
  76412. v7 = v9;
  76413. }
  76414. while ( v6 > v9 );
  76415. }
  76416. }
  76417.  
  76418. //----- (080B1184) --------------------------------------------------------
  76419. BOOL __cdecl IniFile::Open(IniFile *const this, const CHAR *filename, const CHAR *encryptKey)
  76420. {
  76421. FILE *v3; // eax
  76422. FILE *v4; // ebx
  76423. int v5; // eax
  76424. CHAR *v6; // eax
  76425. FILE *v7; // eax
  76426. FILE *v8; // ebx
  76427. void *v9; // edi
  76428. CHAR *v10; // eax
  76429. int v11; // eax
  76430. int outSize; // [esp+Ch] [ebp-10h]
  76431.  
  76432. strncpy(this->m_strFileName, filename, 0x103u);
  76433. if ( this->m_strData )
  76434. {
  76435. operator delete[](this->m_strData);
  76436. this->m_strData = 0;
  76437. }
  76438. v3 = fopen(filename, "rb");
  76439. v4 = v3;
  76440. if ( v3 )
  76441. {
  76442. fseek(v3, 0, 2);
  76443. this->m_lDataLen = ftell(v4);
  76444. fclose(v4);
  76445. v5 = this->m_lDataLen;
  76446. if ( v5 > 0 )
  76447. {
  76448. LABEL_5:
  76449. v6 = (CHAR *)operator new[](v5);
  76450. this->m_strData = v6;
  76451. if ( !v6 )
  76452. __assertex__(
  76453. "src/FB_IniFile.cpp",
  76454. 0x49u,
  76455. "BOOL IniFile::Open(const CHAR*, const CHAR*)",
  76456. "FALSE",
  76457. "[IniFile::Open]: alloc memory failed!!");
  76458. memset(v6, 0, this->m_lDataLen);
  76459. v7 = fopen(filename, "rb");
  76460. v8 = v7;
  76461. if ( !v7 )
  76462. __assertex__("src/FB_IniFile.cpp", 0x50u, "BOOL IniFile::Open(const CHAR*, const CHAR*)", "fp!=NULL", filename);
  76463. fread(this->m_strData, this->m_lDataLen, 1u, v7);
  76464. if ( Cyclone::IsEncrptMemory(this->m_strData, this->m_lDataLen) )
  76465. {
  76466. v9 = (void *)operator new[](this->m_lDataLen + 32);
  76467. outSize = this->m_lDataLen + 32;
  76468. if ( !Cyclone::PlatformDecrypMemory(encryptKey, this->m_strData, this->m_lDataLen, (char *)v9, &outSize) )
  76469. {
  76470. if ( v9 )
  76471. operator delete[](v9);
  76472. __assertex__(
  76473. "src/FB_IniFile.cpp",
  76474. 0x5Bu,
  76475. "BOOL IniFile::Open(const CHAR*, const CHAR*)",
  76476. "FALSE",
  76477. "[IniFile::Open]: Decrypt memory failed!!");
  76478. }
  76479. if ( this->m_strData )
  76480. operator delete[](this->m_strData);
  76481. v11 = outSize;
  76482. this->m_strData = (CHAR *)v9;
  76483. this->m_lDataLen = v11;
  76484. }
  76485. fclose(v8);
  76486. IniFile::InitIndex(this);
  76487. return 1;
  76488. }
  76489. }
  76490. else
  76491. {
  76492. this->m_lDataLen = -1;
  76493. v5 = this->m_lDataLen;
  76494. if ( v5 > 0 )
  76495. goto LABEL_5;
  76496. }
  76497. this->m_lDataLen = 1;
  76498. v10 = (CHAR *)operator new[](1u);
  76499. this->m_strData = v10;
  76500. if ( !v10 )
  76501. __assertex__(
  76502. "src/FB_IniFile.cpp",
  76503. 0x71u,
  76504. "BOOL IniFile::Open(const CHAR*, const CHAR*)",
  76505. "FALSE",
  76506. "[IniFile::Open]: alloc memory failed!!");
  76507. memset(v10, 0, this->m_lDataLen);
  76508. IniFile::InitIndex(this);
  76509. return 0;
  76510. }
  76511.  
  76512. //----- (080B1408) --------------------------------------------------------
  76513. void __cdecl IniFile::IniFile(const CHAR *filename, const CHAR *filenamea)
  76514. {
  76515. *(_DWORD *)filename = off_80E56F8;
  76516. *((_DWORD *)filename + 66) = 0;
  76517. *((_DWORD *)filename + 67) = 0;
  76518. *((_DWORD *)filename + 68) = 0;
  76519. *((_DWORD *)filename + 69) = 0;
  76520. memset((void *)(filename + 4), 0, 0x104u);
  76521. memset((void *)(filename + 292), 0, 0x400u);
  76522. memset((void *)(filename + 1316), 0, 0x400u);
  76523. IniFile::Open((IniFile *const )filename, filenamea, "<EMPTY>");
  76524. }
  76525. // 80E56F8: using guessed type _DWORD (__cdecl *off_80E56F8[2])(IniFile *this);
  76526.  
  76527. //----- (080B1494) --------------------------------------------------------
  76528. void __cdecl IniFile::IniFile(const CHAR *filename, const CHAR *filenamea)
  76529. {
  76530. *(_DWORD *)filename = off_80E56F8;
  76531. *((_DWORD *)filename + 66) = 0;
  76532. *((_DWORD *)filename + 67) = 0;
  76533. *((_DWORD *)filename + 68) = 0;
  76534. *((_DWORD *)filename + 69) = 0;
  76535. memset((void *)(filename + 4), 0, 0x104u);
  76536. memset((void *)(filename + 292), 0, 0x400u);
  76537. memset((void *)(filename + 1316), 0, 0x400u);
  76538. IniFile::Open((IniFile *const )filename, filenamea, "<EMPTY>");
  76539. }
  76540. // 80E56F8: using guessed type _DWORD (__cdecl *off_80E56F8[2])(IniFile *this);
  76541.  
  76542. //----- (080B1520) --------------------------------------------------------
  76543. void __cdecl IniFile::Close(IniFile *const this)
  76544. {
  76545. if ( this->m_lDataLen )
  76546. {
  76547. if ( this->m_strData )
  76548. {
  76549. operator delete[](this->m_strData);
  76550. this->m_strData = 0;
  76551. }
  76552. this->m_lDataLen = 0;
  76553. }
  76554. if ( this->IndexNum )
  76555. {
  76556. if ( this->IndexList )
  76557. {
  76558. operator delete[](this->IndexList);
  76559. this->IndexList = 0;
  76560. }
  76561. this->IndexNum = 0;
  76562. }
  76563. }
  76564.  
  76565. //----- (080B15B4) --------------------------------------------------------
  76566. BOOL __cdecl IniFile::Save(IniFile *const this, CHAR *filename)
  76567. {
  76568. CHAR *v2; // eax
  76569. FILE *v3; // ebx
  76570. BOOL result; // eax
  76571.  
  76572. v2 = filename;
  76573. if ( !filename )
  76574. v2 = this->m_strFileName;
  76575. v3 = fopen(v2, "wb");
  76576. result = 0;
  76577. if ( v3 )
  76578. {
  76579. fwrite(this->m_strData, this->m_lDataLen, 1u, v3);
  76580. fclose(v3);
  76581. result = 1;
  76582. }
  76583. return result;
  76584. }
  76585.  
  76586. //----- (080B160C) --------------------------------------------------------
  76587. CHAR *__cdecl IniFile::GetData(int a2)
  76588. {
  76589. return *(CHAR **)(a2 + 268);
  76590. }
  76591.  
  76592. //----- (080B161C) --------------------------------------------------------
  76593. INT __cdecl IniFile::GetLines(IniFile *const this, INT cur)
  76594. {
  76595. INT v2; // edx
  76596. INT i; // ecx
  76597.  
  76598. v2 = 0;
  76599. for ( i = 1; v2 < cur; ++i )
  76600. {
  76601. while ( this->m_strData[v2] != 10 )
  76602. {
  76603. if ( ++v2 >= cur )
  76604. return i;
  76605. }
  76606. ++v2;
  76607. }
  76608. return i;
  76609. }
  76610.  
  76611. //----- (080B1658) --------------------------------------------------------
  76612. INT __cdecl IniFile::GetLines(IniFile *const this)
  76613. {
  76614. int v1; // eax
  76615. int v2; // ebx
  76616. int i; // edx
  76617.  
  76618. v1 = this->m_lDataLen;
  76619. v2 = 0;
  76620. for ( i = 0; v1 > i; ++v2 )
  76621. {
  76622. while ( this->m_strData[i] != 10 )
  76623. {
  76624. if ( v1 <= ++i )
  76625. return v2 + 1;
  76626. }
  76627. ++i;
  76628. }
  76629. return v2 + 1;
  76630. }
  76631.  
  76632. //----- (080B1694) --------------------------------------------------------
  76633. INT __cdecl IniFile::GotoNextLine(IniFile *const this, INT p)
  76634. {
  76635. INT result; // eax
  76636. int v3; // ecx
  76637.  
  76638. result = -1;
  76639. if ( p >= 0 )
  76640. {
  76641. v3 = this->m_lDataLen;
  76642. result = p;
  76643. if ( v3 > p )
  76644. {
  76645. while ( this->m_strData[result] != 10 )
  76646. {
  76647. if ( v3 <= ++result )
  76648. return result;
  76649. }
  76650. ++result;
  76651. }
  76652. }
  76653. return result;
  76654. }
  76655.  
  76656. //----- (080B16D0) --------------------------------------------------------
  76657. BOOL __cdecl IniFile::ReadText(IniFile *const this, INT p, CHAR *pBuffer, INT nBufferSize)
  76658. {
  76659. INT v4; // esi
  76660. int v5; // eax
  76661. int v6; // ebx
  76662. BOOL v7; // edx
  76663. CHAR v8; // dl
  76664. signed int v10; // ecx
  76665. int v11; // eax
  76666. INT i; // [esp+0h] [ebp-18h]
  76667. int nSize; // [esp+4h] [ebp-14h]
  76668.  
  76669. v4 = p;
  76670. v5 = IniFile::GotoNextLine(this, p) - p;
  76671. v6 = 0;
  76672. v7 = 0;
  76673. if ( v5 != -2 )
  76674. {
  76675. memset(pBuffer, 0, nBufferSize);
  76676. nSize = this->m_lDataLen - p;
  76677. if ( nSize >= nBufferSize )
  76678. nSize = nBufferSize;
  76679. i = 0;
  76680. if ( nSize <= 0 )
  76681. {
  76682. LABEL_10:
  76683. pBuffer[nBufferSize - 1] = 0;
  76684. }
  76685. else
  76686. {
  76687. while ( 1 )
  76688. {
  76689. v8 = this->m_strData[v4];
  76690. if ( v8 == 59 || v8 == 13 || v8 == 9 || v8 == 93 )
  76691. {
  76692. v10 = 0;
  76693. if ( v8 != 93 )
  76694. break;
  76695. v11 = 0;
  76696. if ( v6 <= 0 )
  76697. break;
  76698. do
  76699. {
  76700. while ( pBuffer[v11] >= 0 || ++v11 != v6 )
  76701. {
  76702. if ( ++v11 >= v6 )
  76703. goto LABEL_20;
  76704. }
  76705. ++v11;
  76706. v10 = 1;
  76707. }
  76708. while ( v11 < v6 );
  76709. LABEL_20:
  76710. if ( !v10 )
  76711. break;
  76712. }
  76713. pBuffer[v6] = v8;
  76714. ++v4;
  76715. ++v6;
  76716. if ( ++i >= nSize )
  76717. goto LABEL_10;
  76718. }
  76719. pBuffer[nBufferSize - 1] = 0;
  76720. }
  76721. v7 = 1;
  76722. }
  76723. return v7;
  76724. }
  76725.  
  76726. //----- (080B17B8) --------------------------------------------------------
  76727. INT __cdecl IniFile::FindIndex(IniFile *const this, CHAR *string)
  76728. {
  76729. int v2; // ebx
  76730. CHAR szBuffer[256]; // [esp+0h] [ebp-118h]
  76731.  
  76732. v2 = 0;
  76733. if ( this->IndexNum <= 0 )
  76734. return -1;
  76735. while ( IniFile::ReadText(this, this->IndexList[v2], szBuffer, 256) != 1 || strncmp(string, szBuffer, 0x100u) )
  76736. {
  76737. if ( this->IndexNum <= ++v2 )
  76738. return -1;
  76739. }
  76740. return this->IndexList[v2];
  76741. }
  76742.  
  76743. //----- (080B1838) --------------------------------------------------------
  76744. BOOL __cdecl IniFile::ReadDataName(IniFile *const this, INT *const p, CHAR *szBuffer, INT nBufferSize)
  76745. {
  76746. int v4; // edx
  76747. int v5; // ebx
  76748. CHAR v6; // al
  76749.  
  76750. memset(szBuffer, 0, nBufferSize);
  76751. v4 = *p;
  76752. v5 = 0;
  76753. if ( this->m_lDataLen <= *p )
  76754. return 1;
  76755. while ( 1 )
  76756. {
  76757. v6 = this->m_strData[v4];
  76758. if ( v6 == 13 || v6 == 61 || v6 == 59 )
  76759. break;
  76760. szBuffer[v5] = v6;
  76761. ++v4;
  76762. ++v5;
  76763. if ( this->m_lDataLen <= v4 )
  76764. return 1;
  76765. }
  76766. *p = v4 + 1;
  76767. szBuffer[nBufferSize - 1] = 0;
  76768. return 1;
  76769. }
  76770.  
  76771. //----- (080B18B8) --------------------------------------------------------
  76772. INT __cdecl IniFile::FindData(IniFile *const this, INT index, CHAR *string)
  76773. {
  76774. INT v3; // ebx
  76775. INT p; // [esp+Ch] [ebp-11Ch]
  76776. CHAR szName[256]; // [esp+10h] [ebp-118h]
  76777.  
  76778. v3 = index;
  76779. p = index;
  76780. while ( 1 )
  76781. {
  76782. p = IniFile::GotoNextLine(this, v3);
  76783. if ( p == -1 )
  76784. break;
  76785. if ( !IniFile::ReadDataName(this, &p, szName, 256) )
  76786. break;
  76787. v3 = p;
  76788. if ( this->m_lDataLen <= p || szName[0] == 91 )
  76789. break;
  76790. if ( !strncmp(string, szName, 0x100u) )
  76791. return v3;
  76792. }
  76793. return -1;
  76794. }
  76795.  
  76796. //----- (080B194C) --------------------------------------------------------
  76797. BOOL __cdecl IniFile::AddIndex(IniFile *const this, CHAR *index)
  76798. {
  76799. INT v2; // ebx
  76800. BOOL result; // eax
  76801. size_t v4; // edi
  76802. CHAR *v5; // eax
  76803. CHAR *v6; // ebx
  76804. int v7; // eax
  76805. CHAR str[256]; // [esp+4h] [ebp-118h]
  76806.  
  76807. memset(str, 0, 0x100u);
  76808. v2 = IniFile::FindIndex(this, index);
  76809. result = 0;
  76810. if ( v2 == -1 )
  76811. {
  76812. snprintf(str, 0x100u, "\r\n[%s]", index);
  76813. str[255] = 0;
  76814. v4 = strlen(str);
  76815. v5 = (CHAR *)operator new[](v4 + this->m_lDataLen);
  76816. v6 = v5;
  76817. if ( !v5 )
  76818. __assertex__(
  76819. "src/FB_IniFile.cpp",
  76820. 0x1A5u,
  76821. "BOOL IniFile::AddIndex(CHAR*)",
  76822. "FALSE",
  76823. "[IniFile::AddIndex]: alloc failed!!");
  76824. memcpy(v5, this->m_strData, this->m_lDataLen);
  76825. memcpy(&v6[this->m_lDataLen], str, v4);
  76826. if ( this->m_strData )
  76827. operator delete[](this->m_strData);
  76828. v7 = v4 + this->m_lDataLen;
  76829. this->m_strData = v6;
  76830. this->m_lDataLen = v7;
  76831. v6[v7 - 1] = 0;
  76832. IniFile::InitIndex(this);
  76833. result = 1;
  76834. }
  76835. return result;
  76836. }
  76837.  
  76838. //----- (080B1A78) --------------------------------------------------------
  76839. BOOL __cdecl IniFile::AddData(IniFile *const this, INT p, CHAR *name, CHAR *string)
  76840. {
  76841. INT v4; // esi
  76842. BOOL result; // eax
  76843. char *v6; // edi
  76844. int v7; // eax
  76845. INT nLength; // [esp+Ch] [ebp-120h]
  76846. CHAR str[256]; // [esp+14h] [ebp-118h]
  76847.  
  76848. memset(str, 0, 0x100u);
  76849. snprintf(str, 0x100u, "%s=%s", name, string);
  76850. str[255] = 0;
  76851. nLength = strlen(str);
  76852. v4 = IniFile::GotoNextLine(this, p);
  76853. result = 0;
  76854. if ( v4 != -1 )
  76855. {
  76856. v6 = (char *)operator new[](this->m_lDataLen + nLength);
  76857. memset(v6, 0, this->m_lDataLen + nLength);
  76858. if ( !v6 )
  76859. __assertex__(
  76860. "src/FB_IniFile.cpp",
  76861. 0x1CEu,
  76862. "BOOL IniFile::AddData(INT, CHAR*, CHAR*)",
  76863. "FALSE",
  76864. "[IniFile::AddData]: alloc failed!!");
  76865. memcpy(v6, this->m_strData, v4);
  76866. memcpy(&v6[v4], str, nLength);
  76867. memcpy(&v6[v4 + nLength], &this->m_strData[v4], this->m_lDataLen - v4);
  76868. v7 = this->m_lDataLen + nLength;
  76869. this->m_lDataLen = v7;
  76870. v6[v7 - 1] = 0;
  76871. if ( this->m_strData )
  76872. operator delete[](this->m_strData);
  76873. this->m_strData = v6;
  76874. result = 1;
  76875. }
  76876. return result;
  76877. }
  76878.  
  76879. //----- (080B1C10) --------------------------------------------------------
  76880. BOOL __cdecl IniFile::ModityData(IniFile *const this, INT p, CHAR *name, CHAR *string)
  76881. {
  76882. INT v4; // ebx
  76883. unsigned int v6; // kr04_4
  76884. unsigned int v7; // kr08_4
  76885. char *v8; // edi
  76886. char *v9; // ebx
  76887. int v10; // eax
  76888. INT newlen; // [esp+Ch] [ebp-120h]
  76889. INT p_0; // [esp+10h] [ebp-11Ch]
  76890. CHAR szBuffer[256]; // [esp+14h] [ebp-118h]
  76891.  
  76892. v4 = IniFile::FindData(this, p, name);
  76893. if ( !IniFile::ReadText(this, v4, szBuffer, 256) )
  76894. return 0;
  76895. v6 = strlen(szBuffer) + 1;
  76896. p_0 = v6 + v4 - 1;
  76897. v7 = strlen(string) + 1;
  76898. newlen = v7 - 1;
  76899. v8 = (char *)operator new[](this->m_lDataLen + v7 - v6);
  76900. memset(v8, 0, this->m_lDataLen + v7 - v6);
  76901. if ( !v8 )
  76902. __assertex__(
  76903. "src/FB_IniFile.cpp",
  76904. 0x1F1u,
  76905. "BOOL IniFile::ModityData(INT, CHAR*, CHAR*)",
  76906. "FALSE",
  76907. "[IniFile::ModifyData]: alloc failed!!");
  76908. memcpy(v8, this->m_strData, v4);
  76909. v9 = &v8[v4];
  76910. memcpy(v9, string, newlen);
  76911. memcpy(&v9[newlen], &this->m_strData[p_0], this->m_lDataLen - p_0);
  76912. v10 = this->m_lDataLen + v7 - v6;
  76913. this->m_lDataLen = v10;
  76914. v8[v10 - 1] = 0;
  76915. if ( this->m_strData )
  76916. operator delete[](this->m_strData);
  76917. this->m_strData = v8;
  76918. return 1;
  76919. }
  76920.  
  76921. //----- (080B1D98) --------------------------------------------------------
  76922. INT __cdecl IniFile::GotoLastLine(IniFile *const this, CHAR *index)
  76923. {
  76924. INT v2; // eax
  76925. int v3; // edx
  76926. INT result; // eax
  76927. CHAR v5; // al
  76928.  
  76929. v2 = IniFile::FindIndex(this, index);
  76930. v3 = IniFile::GotoNextLine(this, v2);
  76931. result = 0;
  76932. if ( v3 != -1 )
  76933. {
  76934. do
  76935. {
  76936. v5 = this->m_strData[v3];
  76937. if ( v5 == 13 )
  76938. break;
  76939. if ( v5 == -1 )
  76940. break;
  76941. if ( v5 == -3 )
  76942. break;
  76943. if ( v5 == 32 )
  76944. break;
  76945. if ( v5 == 47 )
  76946. break;
  76947. if ( v5 == 9 )
  76948. break;
  76949. if ( v5 == 10 )
  76950. break;
  76951. v3 = IniFile::GotoNextLine(this, v3);
  76952. }
  76953. while ( this->m_lDataLen > v3 );
  76954. result = v3;
  76955. }
  76956. return result;
  76957. }
  76958.  
  76959. //----- (080B1E00) --------------------------------------------------------
  76960. BOOL __cdecl IniFile::ReadText(IniFile *const this, CHAR *index, CHAR *name, CHAR *str, INT size)
  76961. {
  76962. INT v5; // eax
  76963. BOOL v6; // edx
  76964. INT v7; // eax
  76965. CHAR szTmp[512]; // [esp+4h] [ebp-218h]
  76966.  
  76967. *str = 0;
  76968. memset(szTmp, 0, 0x200u);
  76969. snprintf(szTmp, 0x200u, "[%s][%s][%s]", this->m_strFileName, index, name);
  76970. v5 = IniFile::FindIndex(this, index);
  76971. v6 = 0;
  76972. if ( v5 != -1 )
  76973. {
  76974. v7 = IniFile::FindData(this, v5, name);
  76975. v6 = 0;
  76976. if ( v7 != -1 )
  76977. v6 = IniFile::ReadText(this, v7, str, size) != 0;
  76978. }
  76979. return v6;
  76980. }
  76981.  
  76982. //----- (080B1E94) --------------------------------------------------------
  76983. BOOL __cdecl IniFile::ReadText(IniFile *const this, CHAR *index, INT lines, CHAR *str, INT size)
  76984. {
  76985. INT v5; // ebx
  76986. BOOL result; // eax
  76987. INT v7; // ebx
  76988. INT v8; // esi
  76989. int v9; // eax
  76990. CHAR *v10; // eax
  76991. CHAR szTmp[512]; // [esp+4h] [ebp-218h]
  76992.  
  76993. *str = 0;
  76994. memset(szTmp, 0, 0x200u);
  76995. snprintf(szTmp, 0x200u, "[%s][%s][%d]", this->m_strFileName, index, lines);
  76996. v5 = IniFile::FindIndex(this, index);
  76997. result = 0;
  76998. if ( v5 != -1 )
  76999. {
  77000. v7 = IniFile::GotoNextLine(this, v5);
  77001. result = 0;
  77002. if ( v7 != -1 )
  77003. {
  77004. v8 = 0;
  77005. if ( lines <= 0 )
  77006. {
  77007. v9 = this->m_lDataLen;
  77008. LABEL_9:
  77009. if ( v9 >= v7 )
  77010. {
  77011. v10 = this->m_strData;
  77012. while ( 1 )
  77013. {
  77014. if ( v10[v7] == 61 )
  77015. {
  77016. if ( IniFile::ReadText(this, ++v7, str, size) == 1 )
  77017. return 1;
  77018. v10 = this->m_strData;
  77019. }
  77020. if ( v10[v7] != 13 && this->m_lDataLen >= ++v7 )
  77021. continue;
  77022. return 0;
  77023. }
  77024. }
  77025. }
  77026. else
  77027. {
  77028. v9 = this->m_lDataLen;
  77029. while ( 1 )
  77030. {
  77031. while ( v9 <= v7 )
  77032. {
  77033. if ( ++v8 >= lines )
  77034. goto LABEL_9;
  77035. }
  77036. v7 = IniFile::GotoNextLine(this, v7);
  77037. if ( v7 == -1 )
  77038. break;
  77039. ++v8;
  77040. v9 = this->m_lDataLen;
  77041. if ( v8 >= lines )
  77042. goto LABEL_9;
  77043. }
  77044. }
  77045. return 0;
  77046. }
  77047. }
  77048. return result;
  77049. }
  77050.  
  77051. //----- (080B1F98) --------------------------------------------------------
  77052. BOOL __cdecl IniFile::ReadInt(IniFile *const this, CHAR *index, CHAR *name, int *a5)
  77053. {
  77054. INT v5; // eax
  77055. signed int v6; // edx
  77056. INT v7; // eax
  77057. BOOL v8; // eax
  77058. CHAR szBuffer[256]; // [esp+4h] [ebp-318h]
  77059. CHAR szTmp[512]; // [esp+104h] [ebp-218h]
  77060.  
  77061. memset(szTmp, 0, 0x200u);
  77062. snprintf(szTmp, 0x200u, "[%s][%s][%s]", this->m_strFileName, index, name);
  77063. v5 = IniFile::FindIndex(this, index);
  77064. v6 = 0;
  77065. if ( v5 != -1 )
  77066. {
  77067. v7 = IniFile::FindData(this, v5, name);
  77068. v6 = 0;
  77069. if ( v7 != -1 )
  77070. {
  77071. v8 = IniFile::ReadText(this, v7, szBuffer, 256);
  77072. v6 = 0;
  77073. if ( v8 )
  77074. {
  77075. *a5 = __strtol_internal(szBuffer, 0, 10, 0);
  77076. v6 = 1;
  77077. }
  77078. }
  77079. }
  77080. return v6;
  77081. }
  77082.  
  77083. //----- (080B2044) --------------------------------------------------------
  77084. BOOL __cdecl IniFile::ReadInt(IniFile *const this, CHAR *index, INT lines, int *a5)
  77085. {
  77086. INT v5; // ebx
  77087. BOOL result; // eax
  77088. INT v7; // ebx
  77089. INT v8; // esi
  77090. int v9; // eax
  77091. CHAR *v10; // eax
  77092. CHAR szBuffer[256]; // [esp+4h] [ebp-318h]
  77093. CHAR szTmp[512]; // [esp+104h] [ebp-218h]
  77094.  
  77095. memset(szTmp, 0, 0x200u);
  77096. snprintf(szTmp, 0x200u, "[%s][%s][%d]", this->m_strFileName, index, lines);
  77097. v5 = IniFile::FindIndex(this, index);
  77098. result = 0;
  77099. if ( v5 != -1 )
  77100. {
  77101. v7 = IniFile::GotoNextLine(this, v5);
  77102. result = 0;
  77103. if ( v7 != -1 )
  77104. {
  77105. v8 = 0;
  77106. if ( lines <= 0 )
  77107. {
  77108. v9 = this->m_lDataLen;
  77109. LABEL_9:
  77110. if ( v9 > v7 )
  77111. {
  77112. v10 = this->m_strData;
  77113. while ( 1 )
  77114. {
  77115. if ( v10[v7] == 61 )
  77116. {
  77117. if ( IniFile::ReadText(this, ++v7, szBuffer, 256) == 1 )
  77118. {
  77119. *a5 = __strtol_internal(szBuffer, 0, 10, 0);
  77120. return 1;
  77121. }
  77122. v10 = this->m_strData;
  77123. }
  77124. if ( v10[v7] != 13 && this->m_lDataLen > ++v7 )
  77125. continue;
  77126. return 0;
  77127. }
  77128. }
  77129. }
  77130. else
  77131. {
  77132. v9 = this->m_lDataLen;
  77133. while ( 1 )
  77134. {
  77135. while ( v9 <= v7 )
  77136. {
  77137. if ( ++v8 >= lines )
  77138. goto LABEL_9;
  77139. }
  77140. v7 = IniFile::GotoNextLine(this, v7);
  77141. if ( v7 == -1 )
  77142. break;
  77143. ++v8;
  77144. v9 = this->m_lDataLen;
  77145. if ( v8 >= lines )
  77146. goto LABEL_9;
  77147. }
  77148. }
  77149. return 0;
  77150. }
  77151. }
  77152. return result;
  77153. }
  77154.  
  77155. //----- (080B2168) --------------------------------------------------------
  77156. BOOL __cdecl IniFile::ReadFloat(IniFile *const this, CHAR *index, CHAR *name, float *a5)
  77157. {
  77158. INT v5; // eax
  77159. signed int v6; // edx
  77160. INT v7; // eax
  77161. BOOL v8; // eax
  77162. long double v10; // fst7
  77163. CHAR szBuffer[256]; // [esp+14h] [ebp-318h]
  77164. CHAR szTmp[512]; // [esp+114h] [ebp-218h]
  77165.  
  77166. memset(szTmp, 0, 0x200u);
  77167. snprintf(szTmp, 0x200u, "[%s][%s][%s]", this->m_strFileName, index, name);
  77168. v5 = IniFile::FindIndex(this, index);
  77169. v6 = 0;
  77170. if ( v5 != -1 )
  77171. {
  77172. v7 = IniFile::FindData(this, v5, name);
  77173. v6 = 0;
  77174. if ( v7 != -1 )
  77175. {
  77176. v8 = IniFile::ReadText(this, v7, szBuffer, 256);
  77177. v6 = 0;
  77178. if ( v8 )
  77179. {
  77180. v10 = __strtod_internal(szBuffer, 0, 0);
  77181. v6 = 1;
  77182. *a5 = v10;
  77183. }
  77184. }
  77185. }
  77186. return v6;
  77187. }
  77188.  
  77189. //----- (080B2210) --------------------------------------------------------
  77190. BOOL __cdecl IniFile::ReadFloat(IniFile *const this, CHAR *index, INT lines, float *a5)
  77191. {
  77192. INT v5; // ebx
  77193. BOOL result; // eax
  77194. INT v7; // ebx
  77195. INT v8; // esi
  77196. int v9; // eax
  77197. CHAR *v10; // eax
  77198. CHAR szBuffer[256]; // [esp+14h] [ebp-318h]
  77199. CHAR szTmp[512]; // [esp+114h] [ebp-218h]
  77200.  
  77201. memset(szTmp, 0, 0x200u);
  77202. snprintf(szTmp, 0x200u, "[%s][%s][%d]", this->m_strFileName, index, lines);
  77203. v5 = IniFile::FindIndex(this, index);
  77204. result = 0;
  77205. if ( v5 != -1 )
  77206. {
  77207. v7 = IniFile::GotoNextLine(this, v5);
  77208. result = 0;
  77209. if ( v7 != -1 )
  77210. {
  77211. v8 = 0;
  77212. if ( lines <= 0 )
  77213. {
  77214. v9 = this->m_lDataLen;
  77215. LABEL_9:
  77216. if ( v9 > v7 )
  77217. {
  77218. v10 = this->m_strData;
  77219. while ( 1 )
  77220. {
  77221. if ( v10[v7] == 61 )
  77222. {
  77223. if ( IniFile::ReadText(this, ++v7, szBuffer, 256) == 1 )
  77224. {
  77225. *a5 = __strtod_internal(szBuffer, 0, 0);
  77226. return 1;
  77227. }
  77228. v10 = this->m_strData;
  77229. }
  77230. if ( v10[v7] != 13 && this->m_lDataLen > ++v7 )
  77231. continue;
  77232. return 0;
  77233. }
  77234. }
  77235. }
  77236. else
  77237. {
  77238. v9 = this->m_lDataLen;
  77239. while ( 1 )
  77240. {
  77241. while ( v9 <= v7 )
  77242. {
  77243. if ( ++v8 >= lines )
  77244. goto LABEL_9;
  77245. }
  77246. v7 = IniFile::GotoNextLine(this, v7);
  77247. if ( v7 == -1 )
  77248. break;
  77249. ++v8;
  77250. v9 = this->m_lDataLen;
  77251. if ( v8 >= lines )
  77252. goto LABEL_9;
  77253. }
  77254. }
  77255. return 0;
  77256. }
  77257. }
  77258. return result;
  77259. }
  77260.  
  77261. //----- (080B2338) --------------------------------------------------------
  77262. BOOL __cdecl IniFile::ReadCaption(IniFile *const this, CHAR *index, INT lines, CHAR *str, INT size)
  77263. {
  77264. INT v5; // eax
  77265. BOOL v6; // edx
  77266. int v7; // eax
  77267. int v8; // ebx
  77268. BOOL v9; // eax
  77269. INT n; // [esp+10h] [ebp-21Ch]
  77270. CHAR szTmp[512]; // [esp+14h] [ebp-218h]
  77271.  
  77272. memset(szTmp, 0, 0x200u);
  77273. snprintf(szTmp, 0x200u, "[%s][%s][%d]", this->m_strFileName, index, lines);
  77274. v5 = IniFile::FindIndex(this, index);
  77275. v6 = 0;
  77276. n = v5;
  77277. if ( v5 != -1 )
  77278. {
  77279. v7 = IniFile::GotoNextLine(this, v5);
  77280. v6 = 0;
  77281. n = v7;
  77282. if ( v7 != -1 )
  77283. {
  77284. v8 = 0;
  77285. if ( lines <= 0 )
  77286. {
  77287. LABEL_6:
  77288. v9 = IniFile::ReadDataName(this, &n, str, size);
  77289. v6 = 0;
  77290. if ( v9 )
  77291. v6 = 1;
  77292. }
  77293. else
  77294. {
  77295. while ( 1 )
  77296. {
  77297. if ( this->m_lDataLen > v7 )
  77298. {
  77299. v7 = IniFile::GotoNextLine(this, v7);
  77300. n = v7;
  77301. if ( v7 == -1 )
  77302. break;
  77303. }
  77304. if ( ++v8 >= lines )
  77305. goto LABEL_6;
  77306. }
  77307. v6 = 0;
  77308. }
  77309. }
  77310. }
  77311. return v6;
  77312. }
  77313.  
  77314. //----- (080B2404) --------------------------------------------------------
  77315. BOOL __cdecl IniFile::Write(IniFile *const this, CHAR *index, CHAR *name, CHAR *string)
  77316. {
  77317. INT v4; // eax
  77318. INT v5; // ebx
  77319. BOOL v6; // eax
  77320. BOOL v7; // edx
  77321. INT v9; // eax
  77322. INT v10; // eax
  77323. BOOL v11; // eax
  77324.  
  77325. v4 = IniFile::FindIndex(this, index);
  77326. v5 = v4;
  77327. if ( v4 != -1 )
  77328. {
  77329. if ( IniFile::FindData(this, v4, name) == -1 )
  77330. {
  77331. v9 = IniFile::GotoLastLine(this, index);
  77332. v7 = 0;
  77333. if ( v9 == -1 )
  77334. return v7;
  77335. v6 = IniFile::AddData(this, v9, name, string);
  77336. }
  77337. else
  77338. {
  77339. v6 = IniFile::ModityData(this, v5, name, string);
  77340. }
  77341. return v6 == 1;
  77342. }
  77343. if ( IniFile::AddIndex(this, index) == 1 )
  77344. {
  77345. v10 = IniFile::GotoLastLine(this, index);
  77346. v7 = 0;
  77347. if ( v10 == -1 )
  77348. return v7;
  77349. v11 = IniFile::AddData(this, v10, name, string);
  77350. v7 = 1;
  77351. if ( v11 == 1 )
  77352. return v7;
  77353. }
  77354. return 0;
  77355. }
  77356.  
  77357. //----- (080B24C8) --------------------------------------------------------
  77358. BOOL __cdecl IniFile::Write(IniFile *const this, CHAR *index, CHAR *name, INT num)
  77359. {
  77360. INT v4; // eax
  77361. INT v5; // ebx
  77362. BOOL v6; // edx
  77363. INT v8; // eax
  77364. BOOL v9; // eax
  77365. INT v10; // eax
  77366. BOOL v11; // eax
  77367. CHAR string[32]; // [esp+0h] [ebp-38h]
  77368.  
  77369. snprintf(string, 0x20u, "%d", num);
  77370. v4 = IniFile::FindIndex(this, index);
  77371. v5 = v4;
  77372. if ( v4 != -1 )
  77373. {
  77374. if ( IniFile::FindData(this, v4, name) != -1
  77375. || (v8 = IniFile::GotoLastLine(this, index), v6 = 0, v5 = v8, v8 != -1)
  77376. && (v9 = IniFile::AddData(this, v8, name, string), v6 = 1, v9 != 1) )
  77377. {
  77378. v6 = IniFile::ModityData(this, v5, name, string) == 1;
  77379. }
  77380. return v6;
  77381. }
  77382. if ( IniFile::AddIndex(this, index) == 1 )
  77383. {
  77384. v10 = IniFile::GotoLastLine(this, index);
  77385. v6 = 0;
  77386. if ( v10 == -1 )
  77387. return v6;
  77388. v11 = IniFile::AddData(this, v10, name, string);
  77389. v6 = 1;
  77390. if ( v11 == 1 )
  77391. return v6;
  77392. }
  77393. return 0;
  77394. }
  77395.  
  77396. //----- (080B25B8) --------------------------------------------------------
  77397. INT __cdecl IniFile::GetContinueDataNum(IniFile *const this, CHAR *index)
  77398. {
  77399. INT v2; // edx
  77400. INT v3; // esi
  77401. INT result; // eax
  77402. int v5; // edx
  77403. CHAR v6; // al
  77404.  
  77405. v2 = IniFile::FindIndex(this, index);
  77406. v3 = 0;
  77407. result = 0;
  77408. if ( v2 != -1 )
  77409. {
  77410. v5 = IniFile::GotoNextLine(this, v2);
  77411. result = 0;
  77412. if ( v5 != -1 )
  77413. {
  77414. do
  77415. {
  77416. v6 = this->m_strData[v5];
  77417. if ( v6 == 13 )
  77418. break;
  77419. if ( v6 == -1 )
  77420. break;
  77421. if ( v6 == -3 )
  77422. break;
  77423. if ( v6 == 32 )
  77424. break;
  77425. if ( v6 == 47 )
  77426. break;
  77427. if ( v6 == 9 )
  77428. break;
  77429. if ( v6 == 10 )
  77430. break;
  77431. v5 = IniFile::GotoNextLine(this, v5);
  77432. ++v3;
  77433. }
  77434. while ( this->m_lDataLen > v5 );
  77435. result = v3;
  77436. }
  77437. }
  77438. return result;
  77439. }
  77440.  
  77441. //----- (080B2630) --------------------------------------------------------
  77442. INT __cdecl IniFile::FindOneLine(IniFile *const this, INT p)
  77443. {
  77444. int v2; // esi
  77445. INT result; // eax
  77446. int v4; // ebx
  77447. int v5; // eax
  77448. int v6; // edx
  77449.  
  77450. v2 = 0;
  77451. result = -1;
  77452. if ( p )
  77453. {
  77454. result = 0;
  77455. if ( p != 1 )
  77456. {
  77457. v4 = this->m_lDataLen;
  77458. v5 = 0;
  77459. if ( v4 <= 0 )
  77460. return -1;
  77461. v6 = p - 1;
  77462. while ( 1 )
  77463. {
  77464. if ( this->m_strData[v5] == 10 )
  77465. {
  77466. if ( v6 == ++v2 )
  77467. return v5 + 1;
  77468. }
  77469. else if ( v6 == v2 )
  77470. {
  77471. return v5 + 1;
  77472. }
  77473. if ( v4 <= ++v5 )
  77474. return -1;
  77475. }
  77476. }
  77477. }
  77478. return result;
  77479. }
  77480.  
  77481. //----- (080B268C) --------------------------------------------------------
  77482. BOOL __cdecl IniFile::ReadOneLine(IniFile *const this, INT p, CHAR *szBuffer, INT nBufferSize)
  77483. {
  77484. INT v4; // esi
  77485. BOOL result; // eax
  77486. int v6; // ebx
  77487. INT v7; // ecx
  77488. CHAR *v8; // eax
  77489. CHAR v9; // dl
  77490. int v10; // ebx
  77491.  
  77492. v4 = IniFile::FindOneLine(this, p);
  77493. memset(szBuffer, 0, nBufferSize);
  77494. result = 0;
  77495. if ( v4 != -1 )
  77496. {
  77497. v6 = this->m_lDataLen;
  77498. v7 = v4;
  77499. if ( v6 <= v4 )
  77500. {
  77501. LABEL_7:
  77502. result = 0;
  77503. }
  77504. else
  77505. {
  77506. v8 = this->m_strData;
  77507. while ( 1 )
  77508. {
  77509. v9 = v8[v7];
  77510. if ( v9 == 10 || !v9 )
  77511. break;
  77512. if ( v6 <= ++v7 )
  77513. goto LABEL_7;
  77514. }
  77515. v10 = v7 - v4;
  77516. strncpy(szBuffer, &v8[v4], v7 - v4);
  77517. szBuffer[v10] = 0;
  77518. result = 1;
  77519. }
  77520. }
  77521. return result;
  77522. }
  77523.  
  77524. //----- (080B2710) --------------------------------------------------------
  77525. INT __cdecl IniFile::ReturnLineNum(IniFile *const this, CHAR *string)
  77526. {
  77527. INT v2; // eax
  77528. INT v3; // edx
  77529. INT v4; // ebx
  77530.  
  77531. v2 = IniFile::FindIndex(this, string);
  77532. v3 = -1;
  77533. if ( v2 != -1 )
  77534. {
  77535. v4 = 0;
  77536. if ( v2 )
  77537. {
  77538. v3 = 0;
  77539. if ( v2 != 1 )
  77540. {
  77541. if ( v2 > 0 )
  77542. {
  77543. do
  77544. {
  77545. while ( this->m_strData[v3] != 10 )
  77546. {
  77547. if ( ++v3 >= v2 )
  77548. goto LABEL_9;
  77549. }
  77550. ++v3;
  77551. ++v4;
  77552. }
  77553. while ( v3 < v2 );
  77554. }
  77555. LABEL_9:
  77556. v3 = v4;
  77557. }
  77558. }
  77559. }
  77560. return v3;
  77561. }
  77562.  
  77563. //----- (080B276C) --------------------------------------------------------
  77564. void __cdecl _tcf_0_230(void *a1)
  77565. {
  77566. std::ios_base::Init::~Init(&std::__ioinit);
  77567. }
  77568.  
  77569. //----- (080B277C) --------------------------------------------------------
  77570. void `global constructor keyed to'IniFile::IniFile()
  77571. {
  77572. std::ios_base::Init::Init(&std::__ioinit);
  77573. __cxa_atexit(_tcf_0_230, 0, &_dso_handle);
  77574. }
  77575. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  77576.  
  77577. //----- (080B27A8) --------------------------------------------------------
  77578. void __cdecl Thread::Thread(_DWORD *a2)
  77579. {
  77580. *a2 = off_80E5948;
  77581. a2[1] = 0;
  77582. a2[2] = 0;
  77583. }
  77584. // 80E5948: using guessed type _DWORD (__cdecl *off_80E5948[4])(Thread *this);
  77585.  
  77586. //----- (080B27C4) --------------------------------------------------------
  77587. void __cdecl Thread::Thread(_DWORD *a2)
  77588. {
  77589. *a2 = off_80E5948;
  77590. a2[1] = 0;
  77591. a2[2] = 0;
  77592. }
  77593. // 80E5948: using guessed type _DWORD (__cdecl *off_80E5948[4])(Thread *this);
  77594.  
  77595. //----- (080B27E0) --------------------------------------------------------
  77596. void __cdecl Thread::~Thread(_DWORD *a2)
  77597. {
  77598. *a2 = off_80E5948;
  77599. }
  77600. // 80E5948: using guessed type _DWORD (__cdecl *off_80E5948[4])(Thread *this);
  77601.  
  77602. //----- (080B27F0) --------------------------------------------------------
  77603. void __cdecl Thread::~Thread(_DWORD *a2)
  77604. {
  77605. *a2 = off_80E5948;
  77606. }
  77607. // 80E5948: using guessed type _DWORD (__cdecl *off_80E5948[4])(Thread *this);
  77608.  
  77609. //----- (080B2800) --------------------------------------------------------
  77610. void __cdecl Thread::~Thread(IPRegionTable *const a2)
  77611. {
  77612. a2->_vptr_IPRegionTable = (int (**)(...))off_80E5948;
  77613. operator delete(a2);
  77614. }
  77615. // 80E5948: using guessed type _DWORD (__cdecl *off_80E5948[4])(Thread *this);
  77616.  
  77617. //----- (080B2814) --------------------------------------------------------
  77618. void __cdecl Thread::start(Thread *const this)
  77619. {
  77620. if ( this->m_Status == READY )
  77621. pthread_create(&this->m_TID, 0, Thread::MyThreadProcess, this);
  77622. }
  77623.  
  77624. //----- (080B283C) --------------------------------------------------------
  77625. void __cdecl Thread::stop(Thread *const this)
  77626. {
  77627. ;
  77628. }
  77629.  
  77630. //----- (080B2844) --------------------------------------------------------
  77631. void __cdecl Thread::exit(Thread *const this, void *retval)
  77632. {
  77633. pthread_exit(retval);
  77634. }
  77635. // 8049B18: using guessed type int __stdcall __cxa_end_catch(_DWORD);
  77636.  
  77637. //----- (080B2868) --------------------------------------------------------
  77638. void __cdecl _tcf_0_231(void *a1)
  77639. {
  77640. pthread_mutex_destroy(&Thread::MyThreadProcess(void *)::s_thread_lock.m_Mutex);
  77641. }
  77642.  
  77643. //----- (080B2878) --------------------------------------------------------
  77644. void *__cdecl Thread::MyThreadProcess(void *derivedThread)
  77645. {
  77646. int v1; // eax
  77647.  
  77648. if ( !(_BYTE)`guard variable for'Thread::MyThreadProcess(void *)::s_thread_lock
  77649. && __cxa_guard_acquire(&`guard variable for'Thread::MyThreadProcess(void *)::s_thread_lock) )
  77650. {
  77651. pthread_mutex_init(&Thread::MyThreadProcess(void *)::s_thread_lock.m_Mutex, 0);
  77652. __cxa_guard_release(&`guard variable for'Thread::MyThreadProcess(void *)::s_thread_lock);
  77653. __cxa_atexit(_tcf_0_231, 0, &_dso_handle);
  77654. }
  77655. if ( !derivedThread )
  77656. return 0;
  77657. pthread_mutex_lock(&Thread::MyThreadProcess(void *)::s_thread_lock.m_Mutex);
  77658. ++Thread::s_CreateThreadCount;
  77659. if ( &Thread::MyThreadProcess(void *)::s_thread_lock )
  77660. pthread_mutex_unlock(&Thread::MyThreadProcess(void *)::s_thread_lock.m_Mutex);
  77661. v1 = *(_DWORD *)derivedThread;
  77662. *((_DWORD *)derivedThread + 2) = 1;
  77663. (*(void (__cdecl **)(void *))(v1 + 12))(derivedThread);
  77664. *((_DWORD *)derivedThread + 2) = 3;
  77665. pthread_mutex_lock(&Thread::MyThreadProcess(void *)::s_thread_lock.m_Mutex);
  77666. ++Thread::s_QuitThreadCount;
  77667. if ( !&Thread::MyThreadProcess(void *)::s_thread_lock )
  77668. return 0;
  77669. pthread_mutex_unlock(&Thread::MyThreadProcess(void *)::s_thread_lock.m_Mutex);
  77670. return 0;
  77671. }
  77672. // 8049B08: using guessed type int __cdecl __cxa_guard_acquire(_DWORD);
  77673. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  77674. // 8049DE8: using guessed type int __cdecl __cxa_guard_release(_DWORD);
  77675.  
  77676. //----- (080B297C) --------------------------------------------------------
  77677. void __cdecl Thread::run(Thread *const this)
  77678. {
  77679. ;
  77680. }
  77681.  
  77682. //----- (080B2984) --------------------------------------------------------
  77683. void __cdecl _tcf_1_7(void *a1)
  77684. {
  77685. std::ios_base::Init::~Init(&std::__ioinit);
  77686. }
  77687.  
  77688. //----- (080B2994) --------------------------------------------------------
  77689. void `global constructor keyed to'Thread::s_CreateThreadCount()
  77690. {
  77691. std::ios_base::Init::Init(&std::__ioinit);
  77692. __cxa_atexit(_tcf_1_7, 0, &_dso_handle);
  77693. }
  77694. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  77695.  
  77696. //----- (080B29C0) --------------------------------------------------------
  77697. void __cdecl ThreadValueManager::ThreadValueManager(ThreadValueManager *const this)
  77698. {
  77699. signed int v1; // eax
  77700.  
  77701. pthread_mutex_init(&this->m_Lock.m_Mutex, 0);
  77702. v1 = 0;
  77703. do
  77704. {
  77705. this->m_ThreadID[v1] = 0;
  77706. this->m_ThreadIDValue[v1++] = 0;
  77707. }
  77708. while ( v1 <= 2047 );
  77709. }
  77710.  
  77711. //----- (080B2A00) --------------------------------------------------------
  77712. void __cdecl ThreadValueManager::ThreadValueManager(ThreadValueManager *const this)
  77713. {
  77714. signed int v1; // eax
  77715.  
  77716. pthread_mutex_init(&this->m_Lock.m_Mutex, 0);
  77717. v1 = 0;
  77718. do
  77719. {
  77720. this->m_ThreadID[v1] = 0;
  77721. this->m_ThreadIDValue[v1++] = 0;
  77722. }
  77723. while ( v1 <= 2047 );
  77724. }
  77725.  
  77726. //----- (080B2A40) --------------------------------------------------------
  77727. void __cdecl ThreadValueManager::~ThreadValueManager(ThreadValueManager *const this)
  77728. {
  77729. pthread_mutex_destroy(&this->m_Lock.m_Mutex);
  77730. }
  77731.  
  77732. //----- (080B2A5C) --------------------------------------------------------
  77733. void __cdecl ThreadValueManager::~ThreadValueManager(ThreadValueManager *const this)
  77734. {
  77735. pthread_mutex_destroy(&this->m_Lock.m_Mutex);
  77736. }
  77737.  
  77738. //----- (080B2A78) --------------------------------------------------------
  77739. void __cdecl ThreadValueManager::AddThread(ThreadValueManager *const this, TID tid)
  77740. {
  77741. pthread_mutex_t *v2; // edi
  77742. int v3; // edx
  77743. TID v4; // eax
  77744.  
  77745. v2 = &this->m_Lock.m_Mutex;
  77746. pthread_mutex_lock(&this->m_Lock.m_Mutex);
  77747. v3 = 0;
  77748. while ( 1 )
  77749. {
  77750. v4 = this->m_ThreadID[v3];
  77751. if ( v4 == tid )
  77752. {
  77753. LABEL_5:
  77754. pthread_mutex_unlock(v2);
  77755. return;
  77756. }
  77757. if ( !v4 )
  77758. break;
  77759. if ( ++v3 > 2047 )
  77760. goto LABEL_5;
  77761. }
  77762. this->m_ThreadID[v3] = tid;
  77763. pthread_mutex_unlock(v2);
  77764. }
  77765.  
  77766. //----- (080B2AD4) --------------------------------------------------------
  77767. void __cdecl ThreadValueManager::SetThreadValue(ThreadValueManager *const this, TID tid, INT nValue)
  77768. {
  77769. signed int v3; // edx
  77770. TID v4; // eax
  77771.  
  77772. v3 = 0;
  77773. do
  77774. {
  77775. v4 = this->m_ThreadID[v3];
  77776. if ( !v4 )
  77777. break;
  77778. if ( v4 == tid )
  77779. this->m_ThreadIDValue[v3] = nValue;
  77780. ++v3;
  77781. }
  77782. while ( v3 <= 2047 );
  77783. }
  77784.  
  77785. //----- (080B2B0C) --------------------------------------------------------
  77786. INT __cdecl ThreadValueManager::GetThreadValue(ThreadValueManager *const this, TID tid)
  77787. {
  77788. int v2; // eax
  77789. TID v3; // edx
  77790.  
  77791. v2 = 0;
  77792. while ( 1 )
  77793. {
  77794. v3 = this->m_ThreadID[v2];
  77795. if ( !v3 )
  77796. return 0;
  77797. if ( v3 == tid )
  77798. break;
  77799. if ( ++v2 > 2047 )
  77800. return 0;
  77801. }
  77802. return this->m_ThreadIDValue[v2];
  77803. }
  77804.  
  77805. //----- (080B2B40) --------------------------------------------------------
  77806. TID ThreadValueManager::GetCurrentTrueThreadID()
  77807. {
  77808. return pthread_self();
  77809. }
  77810.  
  77811. //----- (080B2B4C) --------------------------------------------------------
  77812. void __cdecl _tcf_0_232(void *a1)
  77813. {
  77814. ThreadValueManager::~ThreadValueManager(&ThreadValueManager::getSingleton(void)::sThreadValue);
  77815. }
  77816.  
  77817. //----- (080B2B5C) --------------------------------------------------------
  77818. ThreadValueManager *ThreadValueManager::getSingleton()
  77819. {
  77820. if ( !(_BYTE)`guard variable for'ThreadValueManager::getSingleton(void)::sThreadValue
  77821. && __cxa_guard_acquire(&`guard variable for'ThreadValueManager::getSingleton(void)::sThreadValue) )
  77822. {
  77823. ThreadValueManager::ThreadValueManager(&ThreadValueManager::getSingleton(void)::sThreadValue);
  77824. __cxa_guard_release(&`guard variable for'ThreadValueManager::getSingleton(void)::sThreadValue);
  77825. __cxa_atexit(_tcf_0_232, 0, &_dso_handle);
  77826. }
  77827. return &ThreadValueManager::getSingleton(void)::sThreadValue;
  77828. }
  77829. // 8049B08: using guessed type int __cdecl __cxa_guard_acquire(_DWORD);
  77830. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  77831. // 8049DE8: using guessed type int __cdecl __cxa_guard_release(_DWORD);
  77832.  
  77833. //----- (080B2BBC) --------------------------------------------------------
  77834. int ThreadValueManager::GetCurrentThreadID()
  77835. {
  77836. TID v0; // eax
  77837. TID v1; // ST0C_4
  77838. TID v2; // ebx
  77839. ThreadValueManager *v3; // eax
  77840.  
  77841. v0 = ThreadValueManager::GetCurrentTrueThreadID();
  77842. v1 = v0;
  77843. v2 = v0;
  77844. v3 = ThreadValueManager::getSingleton();
  77845. return ThreadValueManager::GetThreadValue(v3, v1) + v2;
  77846. }
  77847.  
  77848. //----- (080B2BE4) --------------------------------------------------------
  77849. void __cdecl _tcf_1_8(void *a1)
  77850. {
  77851. std::ios_base::Init::~Init(&std::__ioinit);
  77852. }
  77853.  
  77854. //----- (080B2BF4) --------------------------------------------------------
  77855. void `global constructor keyed to'ThreadValueManager::ThreadValueManager()
  77856. {
  77857. std::ios_base::Init::Init(&std::__ioinit);
  77858. __cxa_atexit(_tcf_1_8, 0, &_dso_handle);
  77859. }
  77860. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  77861.  
  77862. //----- (080B2C20) --------------------------------------------------------
  77863. void __cdecl TimeManager::TimeManager(int a2)
  77864. {
  77865. *(_DWORD *)(a2 + 4) = 0;
  77866. }
  77867.  
  77868. //----- (080B2C30) --------------------------------------------------------
  77869. void __cdecl TimeManager::TimeManager(int a2)
  77870. {
  77871. *(_DWORD *)(a2 + 4) = 0;
  77872. }
  77873.  
  77874. //----- (080B2C40) --------------------------------------------------------
  77875. void __cdecl TimeManager::~TimeManager(TimeManager *const this)
  77876. {
  77877. ;
  77878. }
  77879.  
  77880. //----- (080B2C48) --------------------------------------------------------
  77881. void __cdecl TimeManager::~TimeManager(TimeManager *const this)
  77882. {
  77883. ;
  77884. }
  77885.  
  77886. //----- (080B2C50) --------------------------------------------------------
  77887. UINT __cdecl TimeManager::CurrentTime(int a2)
  77888. {
  77889. UINT result; // eax
  77890.  
  77891. gettimeofday((struct timeval *)(a2 + 68), (__timezone_ptr_t)(a2 + 76));
  77892. result = (signed __int64)(1000.0 * (long double)*(signed int *)(a2 + 68)
  77893. + (long double)*(signed int *)(a2 + 72) / 1000.0
  77894. - ((long double)*(signed int *)(a2 + 64) / 1000.0
  77895. + 1000.0 * (long double)*(signed int *)(a2 + 60)));
  77896. *(_DWORD *)(a2 + 4) = result;
  77897. return result;
  77898. }
  77899.  
  77900. //----- (080B2CAC) --------------------------------------------------------
  77901. UINT __fastcall TimeManager::Time2Day(TimeManager *const this)
  77902. {
  77903. _DWORD *v2; // [esp+8h] [ebp+8h]
  77904.  
  77905. return v2[6] + 100 * (v2[7] + 100 * (v2[8] + 1900) + 1);
  77906. }
  77907.  
  77908. //----- (080B2CD8) --------------------------------------------------------
  77909. void __cdecl TimeManager::SetTime(int a2)
  77910. {
  77911. time((time_t *)(a2 + 8));
  77912. qmemcpy((void *)(a2 + 12), localtime((const time_t *)(a2 + 8)), 0x2Cu);
  77913. }
  77914.  
  77915. //----- (080B2D0C) --------------------------------------------------------
  77916. time_t __cdecl TimeManager::GetANSITime(int a2)
  77917. {
  77918. TimeManager::SetTime(a2);
  77919. return *(_DWORD *)(a2 + 8);
  77920. }
  77921.  
  77922. //----- (080B2D24) --------------------------------------------------------
  77923. int __cdecl TimeManager::Time2DWORD(_DWORD *a2)
  77924. {
  77925. TimeManager::SetTime((int)a2);
  77926. return a2[4] + 100 * (a2[5] + 100 * (a2[6] + 100 * (a2[7] + 100 * (a2[8] - 100) + 1)));
  77927. }
  77928.  
  77929. //----- (080B2D74) --------------------------------------------------------
  77930. void __cdecl TimeManager::ConvertTU(TimeManager *const this, tm *TM, UINT *const Date)
  77931. {
  77932. UINT v3; // edx
  77933. UINT v4; // edx
  77934. UINT v5; // edx
  77935. UINT v6; // edx
  77936. UINT v7; // edx
  77937.  
  77938. if ( !TM )
  77939. __assert__("src/FB_TimeManager.cpp", 0xD8u, "void TimeManager::ConvertTU(tm*, UINT&)", "TM");
  77940. *Date = 0;
  77941. v3 = 16 * (TM->tm_year % 100 & 0x3F);
  77942. *Date = v3;
  77943. v4 = 32 * ((TM->tm_mon & 0xF) + v3);
  77944. *Date = v4;
  77945. v5 = 32 * ((TM->tm_mday & 0x1F) + v4);
  77946. *Date = v5;
  77947. v6 = ((TM->tm_hour & 0x1F) + v5) << 6;
  77948. *Date = v6;
  77949. v7 = ((TM->tm_min & 0x3F) + v6) << 6;
  77950. *Date = v7;
  77951. *Date = (TM->tm_sec & 0x3F) + v7;
  77952. }
  77953.  
  77954. //----- (080B2E00) --------------------------------------------------------
  77955. UINT __cdecl TimeManager::CurrentDate(TimeManager *a2)
  77956. {
  77957. UINT Date; // [esp+Ch] [ebp-8h]
  77958.  
  77959. TimeManager::SetTime((int)a2);
  77960. TimeManager::ConvertTU(a2, &a2->m_TM, &Date);
  77961. return Date;
  77962. }
  77963.  
  77964. //----- (080B2E2C) --------------------------------------------------------
  77965. BOOL __cdecl TimeManager::Init(TimeManager *a2)
  77966. {
  77967. TimeManager *const v2; // ecx
  77968.  
  77969. a2->m_StartTime = 0;
  77970. a2->m_CurrentTime = 0;
  77971. gettimeofday(&a2->_tstart, &a2->tz);
  77972. TimeManager::SetTime((int)a2);
  77973. g_LogFileNameFix = TimeManager::Time2Day(v2);
  77974. g_LogFileNameFix_Last = TimeManager::CurrentDate(a2);
  77975. return 1;
  77976. }
  77977.  
  77978. //----- (080B2E7C) --------------------------------------------------------
  77979. void __cdecl TimeManager::DWORD2Time(TimeManager *const this, UINT Date, tm *TM)
  77980. {
  77981. if ( !TM )
  77982. __assert__("src/FB_TimeManager.cpp", 0x7Cu, "void TimeManager::DWORD2Time(UINT, tm*)", "TM");
  77983. memset(TM, 0, sizeof(tm));
  77984. TM->tm_year = Date / 0x5F5E100 + 100;
  77985. TM->tm_mon = Date % 0x5F5E100 / 0xF4240 - 1;
  77986. TM->tm_mday = Date % 0xF4240 / 0x2710;
  77987. TM->tm_hour = Date % 0x2710 / 0x64;
  77988. TM->tm_min = Date % 0x64;
  77989. }
  77990.  
  77991. //----- (080B2F90) --------------------------------------------------------
  77992. UINT __cdecl TimeManager::DiffDWORDTime(TimeManager *const this, UINT Date1, UINT Date2)
  77993. {
  77994. time_t v3; // ebx
  77995. time_t v4; // eax
  77996. UINT result; // eax
  77997. tm S_D2; // [esp+14h] [ebp-78h]
  77998. tm S_D1; // [esp+44h] [ebp-48h]
  77999.  
  78000. TimeManager::DWORD2Time(this, Date1, &S_D1);
  78001. TimeManager::DWORD2Time(this, Date2, &S_D2);
  78002. v3 = mktime(&S_D1);
  78003. v4 = mktime(&S_D2);
  78004. result = (signed int)(difftime(v4, v3) / 60.0);
  78005. if ( (result & 0x80000000) != 0 )
  78006. result = -result;
  78007. return result;
  78008. }
  78009.  
  78010. //----- (080B3010) --------------------------------------------------------
  78011. INT __cdecl TimeManager::IsDiffDay(TimeManager *const this, time_t uPrevANSITime, time_t uNextANSITime)
  78012. {
  78013. tm tCurTm; // [esp+Ch] [ebp-78h]
  78014. tm tPrevTm; // [esp+3Ch] [ebp-48h]
  78015.  
  78016. qmemcpy(&tPrevTm, localtime(&uPrevANSITime), sizeof(tPrevTm));
  78017. qmemcpy(&tCurTm, localtime(&uNextANSITime), sizeof(tCurTm));
  78018. return tCurTm.tm_yday - tPrevTm.tm_yday;
  78019. }
  78020.  
  78021. //----- (080B3058) --------------------------------------------------------
  78022. INT __cdecl TimeManager::DiffDayCount(TimeManager *const this, time_t uPrevANSITime, time_t uNextANSITime)
  78023. {
  78024. return (signed int)(difftime(uNextANSITime, uPrevANSITime) / 86400.0);
  78025. }
  78026.  
  78027. //----- (080B3090) --------------------------------------------------------
  78028. void __cdecl TimeManager::ConvertUT(TimeManager *const this, UINT Date, tm *TM)
  78029. {
  78030. if ( !TM )
  78031. __assert__("src/FB_TimeManager.cpp", 0xCBu, "void TimeManager::ConvertUT(UINT, tm*)", "TM");
  78032. memset(TM, 0, sizeof(tm));
  78033. TM->tm_year = (Date >> 26) + 100;
  78034. TM->tm_mon = (Date >> 22) & 0xF;
  78035. TM->tm_mday = (Date >> 17) & 0x1F;
  78036. TM->tm_hour = (Date >> 12) & 0x1F;
  78037. TM->tm_min = (Date >> 6) & 0x3F;
  78038. TM->tm_sec = Date & 0x3F;
  78039. }
  78040.  
  78041. //----- (080B3114) --------------------------------------------------------
  78042. UINT __cdecl TimeManager::DiffTime(TimeManager *const this, UINT Date1, UINT Date2)
  78043. {
  78044. time_t v3; // ebx
  78045. time_t v4; // eax
  78046. signed int v5; // eax
  78047. int v6; // eax
  78048. tm S_D2; // [esp+14h] [ebp-78h]
  78049. tm S_D1; // [esp+44h] [ebp-48h]
  78050.  
  78051. TimeManager::ConvertUT(this, Date1, &S_D1);
  78052. TimeManager::ConvertUT(this, Date2, &S_D2);
  78053. v3 = mktime(&S_D1);
  78054. v4 = mktime(&S_D2);
  78055. v5 = (signed int)difftime(v4, v3);
  78056. if ( v5 < 0 )
  78057. v6 = -125 * v5;
  78058. else
  78059. v6 = 125 * v5;
  78060. return 8 * v6;
  78061. }
  78062.  
  78063. //----- (080B31A8) --------------------------------------------------------
  78064. UINT __cdecl TimeManager::GetDayTime(TimeManager *const this)
  78065. {
  78066. struct tm *v1; // eax
  78067.  
  78068. v1 = localtime(&this->m_SetTime);
  78069. return v1->tm_yday + 1000 * v1->tm_year - 100000;
  78070. }
  78071.  
  78072. //----- (080B31D4) --------------------------------------------------------
  78073. int __cdecl TimeManager::GetHourTime(int a2)
  78074. {
  78075. struct tm *v2; // eax
  78076.  
  78077. v2 = localtime((const time_t *)(a2 + 8));
  78078. return v2->tm_min / 15 + 4 * (v2->tm_hour + 25 * ((*(_DWORD *)(a2 + 8) - 1167580800) / 86400));
  78079. }
  78080.  
  78081. //----- (080B3230) --------------------------------------------------------
  78082. UINT __cdecl TimeManager::GetQuarterTime(TimeManager *const this)
  78083. {
  78084. struct tm *v1; // eax
  78085. time_t m_SetTime; // [esp+Ch] [ebp-8h]
  78086.  
  78087. time(&m_SetTime);
  78088. v1 = localtime(&m_SetTime);
  78089. return v1->tm_min / 15 + 4 * (v1->tm_hour + 25 * (v1->tm_yday + 1000 * (v1->tm_year - 100)));
  78090. }
  78091.  
  78092. //----- (080B3288) --------------------------------------------------------
  78093. UINT __cdecl TimeManager::GetWeekTime(TimeManager *const this)
  78094. {
  78095. struct tm *v1; // eax
  78096. UINT v2; // ebx
  78097. int v3; // edx
  78098. int v4; // eax
  78099.  
  78100. v1 = localtime(&this->m_SetTime);
  78101. v2 = 1000 * v1->tm_year - 100000;
  78102. v3 = v1->tm_yday;
  78103. v4 = v1->tm_wday;
  78104. if ( v3 > v4 )
  78105. {
  78106. _FST7 = (long double)((v3 - v4) / 7);
  78107. __asm { frndint }
  78108. v2 += (signed __int64)(double)_FST7;
  78109. }
  78110. return v2;
  78111. }
  78112.  
  78113. //----- (080B331C) --------------------------------------------------------
  78114. void __cdecl _tcf_0_233(void *a1)
  78115. {
  78116. std::ios_base::Init::~Init(&std::__ioinit);
  78117. }
  78118.  
  78119. //----- (080B332C) --------------------------------------------------------
  78120. void `global constructor keyed to'g_pTimeManager()
  78121. {
  78122. std::ios_base::Init::Init(&std::__ioinit);
  78123. __cxa_atexit(_tcf_0_233, 0, &_dso_handle);
  78124. }
  78125. // 8049C68: using guessed type int __cdecl __cxa_atexit(_DWORD, _DWORD, _DWORD);
  78126.  
  78127. //----- (080B3358) --------------------------------------------------------
  78128. int __cdecl Cyclone::FileHead2CRC(const unsigned __int8 *szData, int nDataLen)
  78129. {
  78130. int v2; // edx
  78131. int v3; // eax
  78132. int i; // ecx
  78133.  
  78134. v2 = 0;
  78135. if ( szData )
  78136. {
  78137. v3 = -1;
  78138. if ( nDataLen >= 0 )
  78139. {
  78140. for ( i = 0; i < nDataLen; ++i )
  78141. v3 = Cyclone::g_encryptCrc32Table[(unsigned __int8)(szData[i] ^ v3)] ^ (v3 >> 8);
  78142. v2 = v3;
  78143. }
  78144. }
  78145. return v2;
  78146. }
  78147.  
  78148. //----- (080B339C) --------------------------------------------------------
  78149. encrypt_fret __cdecl Cyclone::IsEncrptMemory(const char *pIn, int nDataSize)
  78150. {
  78151. encrypt_fret result; // eax
  78152. int v3; // ebx
  78153.  
  78154. if ( !pIn )
  78155. __assert_fail(
  78156. "pIn",
  78157. "src/DES/MyEncrypt.cpp",
  78158. 0x106u,
  78159. "Cyclone::encrypt_fret Cyclone::IsEncrptMemory(const char*, int)");
  78160. result = 0;
  78161. if ( nDataSize > 256 )
  78162. {
  78163. if ( *(_DWORD *)pIn != -505228846 || *((_DWORD *)pIn + 1) != -1044205134 )
  78164. {
  78165. result = 0;
  78166. }
  78167. else
  78168. {
  78169. v3 = *((_DWORD *)pIn + 63);
  78170. result = Cyclone::FileHead2CRC((const unsigned __int8 *)pIn, 252) == v3;
  78171. }
  78172. }
  78173. return result;
  78174. }
  78175.  
  78176. //----- (080B3408) --------------------------------------------------------
  78177. bool __cdecl Cyclone::DecryptData(char *chMask, E_Encrypt_Type eType, const char *pInBuf, int nInSize, char *pOutBuf, int *const nOutSize)
  78178. {
  78179. int v6; // edx
  78180. char i; // cl
  78181. char v8; // al
  78182. signed int v10; // edx
  78183. char j; // cl
  78184. char v12; // al
  78185. int v13; // [esp+8h] [ebp-1E0h]
  78186. AESclass Aes; // [esp+10h] [ebp-1D8h]
  78187. char szTemp[48]; // [esp+1A0h] [ebp-48h]
  78188. const char *pInBufa; // [esp+1F8h] [ebp+10h]
  78189. int nInSizea; // [esp+1FCh] [ebp+14h]
  78190.  
  78191. if ( !chMask || !pInBuf || nInSize < 0 || !pOutBuf || (v13 = *nOutSize, *nOutSize < nInSize) )
  78192. __assert_fail(
  78193. "0",
  78194. "src/DES/MyEncrypt.cpp",
  78195. 0x1D0u,
  78196. "bool Cyclone::DecryptData(char*, E_Encrypt_Type, const char*, int, char*, int&)");
  78197. if ( *(_DWORD *)chMask <= 0 )
  78198. __assert_fail(
  78199. "nPos > 0",
  78200. "src/DES/MyEncrypt.cpp",
  78201. 0x1D9u,
  78202. "bool Cyclone::DecryptData(char*, E_Encrypt_Type, const char*, int, char*, int&)");
  78203. if ( *((_DWORD *)chMask + 1) <= 0 )
  78204. __assert_fail(
  78205. "nLen > 0",
  78206. "src/DES/MyEncrypt.cpp",
  78207. 0x1DAu,
  78208. "bool Cyclone::DecryptData(char*, E_Encrypt_Type, const char*, int, char*, int&)");
  78209. strncpy(chMask, (const char *)((*(_DWORD *)chMask & 0x1F) + 135325152), *((_DWORD *)chMask + 1) & 0x1F);
  78210. if ( eType )
  78211. {
  78212. *nOutSize = 0;
  78213. v6 = 0;
  78214. for ( i = 1; v6 < nInSize; i ^= 1u )
  78215. {
  78216. if ( v6 >= v13 )
  78217. break;
  78218. v8 = i ? *chMask : chMask[1];
  78219. pOutBuf[v6] = pInBuf[v6] ^ v8;
  78220. ++*nOutSize;
  78221. ++v6;
  78222. }
  78223. return 1;
  78224. }
  78225. if ( Cyclone::IsEncrptMemory(pInBuf, nInSize) )
  78226. {
  78227. if ( nInSize <= 279 )
  78228. __assert_fail(
  78229. "0",
  78230. "src/DES/MyEncrypt.cpp",
  78231. 0x1EDu,
  78232. "bool Cyclone::DecryptData(char*, E_Encrypt_Type, const char*, int, char*, int&)");
  78233. pInBufa = pInBuf + 256;
  78234. nInSizea = nInSize - 256;
  78235. memset(szTemp, 0, sizeof(szTemp));
  78236. Aes.cx[0].n_blk = 24;
  78237. Aes.cx[0].n_rnd = 0;
  78238. aes_dec_key((const unsigned __int8 *)chMask, 0x18u, Aes.cx);
  78239. aes_dec_blk((const unsigned __int8 *)pInBufa, (unsigned __int8 *)szTemp, Aes.cx);
  78240. qmemcpy(pOutBuf, szTemp, 0x18u);
  78241. v10 = 24;
  78242. *nOutSize = 24;
  78243. for ( j = 1; v10 < nInSizea; ++v10 )
  78244. {
  78245. if ( v10 >= v13 )
  78246. break;
  78247. v12 = j ? *chMask : chMask[1];
  78248. pOutBuf[v10] = pInBufa[v10] ^ v12;
  78249. ++*nOutSize;
  78250. j ^= 1u;
  78251. }
  78252. return 1;
  78253. }
  78254. *nOutSize = nInSize;
  78255. memcpy(pOutBuf, pInBuf, nInSize);
  78256. return 0;
  78257. }
  78258.  
  78259. //----- (080B3628) --------------------------------------------------------
  78260. encrypt_fret __cdecl Cyclone::PlatformDecrypMemory(const char *szKey, const char *pIn, int nInSize, char *pOut, int *const nOutSize)
  78261. {
  78262. char szEncrypt[32]; // [esp+0h] [ebp-38h]
  78263.  
  78264. if ( !szKey )
  78265. __assert_fail(
  78266. "szKey",
  78267. "src/DES/MyEncrypt.cpp",
  78268. 0x13Du,
  78269. "Cyclone::encrypt_fret Cyclone::PlatformDecrypMemory(const char*, const char*, int, char*, int&)");
  78270. if ( !pIn )
  78271. __assert_fail(
  78272. "pIn",
  78273. "src/DES/MyEncrypt.cpp",
  78274. 0x13Eu,
  78275. "Cyclone::encrypt_fret Cyclone::PlatformDecrypMemory(const char*, const char*, int, char*, int&)");
  78276. if ( !pOut )
  78277. __assert_fail(
  78278. "pOut",
  78279. "src/DES/MyEncrypt.cpp",
  78280. 0x13Fu,
  78281. "Cyclone::encrypt_fret Cyclone::PlatformDecrypMemory(const char*, const char*, int, char*, int&)");
  78282. if ( *nOutSize <= nInSize )
  78283. __assert_fail(
  78284. "nOutSize > (nInSize)",
  78285. "src/DES/MyEncrypt.cpp",
  78286. 0x140u,
  78287. "Cyclone::encrypt_fret Cyclone::PlatformDecrypMemory(const char*, const char*, int, char*, int&)");
  78288. memset(szEncrypt, 0, sizeof(szEncrypt));
  78289. strncpy(szEncrypt, &Cyclone::g_szRanKey[2], 0x10u);
  78290. *(_DWORD *)szEncrypt = 2;
  78291. *(_DWORD *)&szEncrypt[4] = 16;
  78292. return Cyclone::DecryptData(szEncrypt, 0, pIn, nInSize, pOut, nOutSize) != 0;
  78293. }
  78294.  
  78295. //----- (080B3714) --------------------------------------------------------
  78296. encrypt_fret __cdecl Cyclone::PlatformDecryptFile(const char *szKey, const char *szSourceFileName, const char *szObjectFileName)
  78297. {
  78298. FILE *v3; // esi
  78299. encrypt_fret result; // eax
  78300. int v5; // ebx
  78301. void *v6; // edi
  78302. FILE *v7; // esi
  78303. char *pObject; // [esp+4h] [ebp-14h]
  78304. int nObjectSize; // [esp+8h] [ebp-10h]
  78305.  
  78306. if ( !szKey )
  78307. __assert_fail(
  78308. "szKey",
  78309. "src/DES/MyEncrypt.cpp",
  78310. 0xCDu,
  78311. "Cyclone::encrypt_fret Cyclone::PlatformDecryptFile(const char*, const char*, const char*)");
  78312. if ( !szSourceFileName )
  78313. __assert_fail(
  78314. "szSourceFileName",
  78315. "src/DES/MyEncrypt.cpp",
  78316. 0xCEu,
  78317. "Cyclone::encrypt_fret Cyclone::PlatformDecryptFile(const char*, const char*, const char*)");
  78318. if ( !szObjectFileName )
  78319. __assert_fail(
  78320. "szObjectFileName",
  78321. "src/DES/MyEncrypt.cpp",
  78322. 0xCFu,
  78323. "Cyclone::encrypt_fret Cyclone::PlatformDecryptFile(const char*, const char*, const char*)");
  78324. v3 = fopen(szSourceFileName, "rb");
  78325. result = 0;
  78326. if ( v3 )
  78327. {
  78328. fseek(v3, 0, 2);
  78329. v5 = ftell(v3);
  78330. fseek(v3, 0, 0);
  78331. v6 = (void *)operator new[](v5 + 1);
  78332. fread(v6, 1u, v5, v3);
  78333. *((_BYTE *)v6 + v5) = 0;
  78334. fclose(v3);
  78335. nObjectSize = v5 + 24;
  78336. pObject = (char *)operator new[](v5 + 24);
  78337. Cyclone::PlatformDecrypMemory(szKey, (const char *)v6, v5, pObject, &nObjectSize);
  78338. if ( v6 )
  78339. operator delete[](v6);
  78340. v7 = fopen(szObjectFileName, "wb");
  78341. if ( !v7 )
  78342. goto LABEL_10;
  78343. pObject[nObjectSize] = 0;
  78344. pObject[nObjectSize + 1] = 0;
  78345. if ( fwrite(pObject, nObjectSize, 1u, v7) != 1 )
  78346. {
  78347. fclose(v7);
  78348. LABEL_10:
  78349. if ( pObject )
  78350. operator delete[](pObject);
  78351. return 0;
  78352. }
  78353. fclose(v7);
  78354. if ( pObject )
  78355. operator delete[](pObject);
  78356. result = 1;
  78357. }
  78358. return result;
  78359. }
  78360.  
  78361. //----- (080B38C0) --------------------------------------------------------
  78362. bool __cdecl Cyclone::EncryptData(char *chMask, E_Encrypt_Type eType, const char *pInBuf, int nInSize, char *pOutBuf, int *const nOutSize)
  78363. {
  78364. char v6; // cl
  78365. int j; // edx
  78366. char v8; // al
  78367. char v9; // cl
  78368. int i; // edx
  78369. char v11; // al
  78370. int v13; // [esp+14h] [ebp-1E4h]
  78371. int v14; // [esp+18h] [ebp-1E0h]
  78372. AESclass Aes; // [esp+20h] [ebp-1D8h]
  78373. char szTemp[48]; // [esp+1B0h] [ebp-48h]
  78374. char *pOutBufa; // [esp+210h] [ebp+18h]
  78375.  
  78376. if ( !chMask || !pInBuf || nInSize < 0 || !pOutBuf || *nOutSize < nInSize )
  78377. __assert_fail(
  78378. "0",
  78379. "src/DES/MyEncrypt.cpp",
  78380. 0x163u,
  78381. "bool Cyclone::EncryptData(char*, E_Encrypt_Type, const char*, int, char*, int&)");
  78382. if ( *nOutSize < nInSize + 256 )
  78383. __assert_fail(
  78384. "nOutSize >= nInSize + FILE_HEAD_FLAG_LEN",
  78385. "src/DES/MyEncrypt.cpp",
  78386. 0x167u,
  78387. "bool Cyclone::EncryptData(char*, E_Encrypt_Type, const char*, int, char*, int&)");
  78388. if ( *(_DWORD *)chMask <= 0 )
  78389. __assert_fail(
  78390. "nPos > 0",
  78391. "src/DES/MyEncrypt.cpp",
  78392. 0x16Du,
  78393. "bool Cyclone::EncryptData(char*, E_Encrypt_Type, const char*, int, char*, int&)");
  78394. if ( *((_DWORD *)chMask + 1) <= 0 )
  78395. __assert_fail(
  78396. "nLen > 0",
  78397. "src/DES/MyEncrypt.cpp",
  78398. 0x16Eu,
  78399. "bool Cyclone::EncryptData(char*, E_Encrypt_Type, const char*, int, char*, int&)");
  78400. v14 = *(_DWORD *)chMask & 0x1F;
  78401. v13 = *((_DWORD *)chMask + 1) & 0x1F;
  78402. strncpy(chMask, (const char *)(v14 + 135325152), v13);
  78403. if ( eType )
  78404. {
  78405. *nOutSize = 0;
  78406. v9 = 1;
  78407. for ( i = 0; i < nInSize; ++i )
  78408. {
  78409. if ( v9 )
  78410. v11 = pInBuf[i] ^ *chMask;
  78411. else
  78412. v11 = pInBuf[i] ^ chMask[1];
  78413. pOutBuf[i] = v11;
  78414. v9 ^= 1u;
  78415. ++*nOutSize;
  78416. }
  78417. }
  78418. else
  78419. {
  78420. if ( nInSize <= 23 )
  78421. __assert_fail(
  78422. "0",
  78423. "src/DES/MyEncrypt.cpp",
  78424. 0x179u,
  78425. "bool Cyclone::EncryptData(char*, E_Encrypt_Type, const char*, int, char*, int&)");
  78426. *((_DWORD *)pOutBuf + 3) = v14;
  78427. *(_DWORD *)pOutBuf = -505228846;
  78428. *((_DWORD *)pOutBuf + 1) = -1044205134;
  78429. *((_DWORD *)pOutBuf + 2) = 1;
  78430. *((_DWORD *)pOutBuf + 4) = v13;
  78431. *nOutSize = 256;
  78432. *((_DWORD *)pOutBuf + 63) = Cyclone::FileHead2CRC((const unsigned __int8 *)pOutBuf, 252);
  78433. pOutBufa = pOutBuf + 256;
  78434. memset(szTemp, 0, sizeof(szTemp));
  78435. Aes.cx[0].n_blk = 24;
  78436. Aes.cx[0].n_rnd = 0;
  78437. aes_enc_key((const unsigned __int8 *)chMask, 0x18u, Aes.cx);
  78438. aes_enc_blk((const unsigned __int8 *)pInBuf, (unsigned __int8 *)szTemp, Aes.cx);
  78439. qmemcpy(pOutBufa, szTemp, 0x18u);
  78440. *nOutSize += 24;
  78441. v6 = 1;
  78442. for ( j = 24; j < nInSize; ++j )
  78443. {
  78444. if ( v6 )
  78445. v8 = pInBuf[j] ^ *chMask;
  78446. else
  78447. v8 = pInBuf[j] ^ chMask[1];
  78448. pOutBufa[j] = v8;
  78449. v6 ^= 1u;
  78450. ++*nOutSize;
  78451. }
  78452. }
  78453. return 1;
  78454. }
  78455.  
  78456. //----- (080B3B1C) --------------------------------------------------------
  78457. encrypt_fret __cdecl Cyclone::PlatformEncrptMemory(const char *szKey, const char *pIn, int nInSize, char *pOut, int *const nOutSize)
  78458. {
  78459. char szEncrypt[32]; // [esp+0h] [ebp-38h]
  78460.  
  78461. if ( !szKey )
  78462. __assert_fail(
  78463. "szKey",
  78464. "src/DES/MyEncrypt.cpp",
  78465. 0x124u,
  78466. "Cyclone::encrypt_fret Cyclone::PlatformEncrptMemory(const char*, const char*, int, char*, int&)");
  78467. if ( !pIn )
  78468. __assert_fail(
  78469. "pIn",
  78470. "src/DES/MyEncrypt.cpp",
  78471. 0x125u,
  78472. "Cyclone::encrypt_fret Cyclone::PlatformEncrptMemory(const char*, const char*, int, char*, int&)");
  78473. if ( !pOut )
  78474. __assert_fail(
  78475. "pOut",
  78476. "src/DES/MyEncrypt.cpp",
  78477. 0x126u,
  78478. "Cyclone::encrypt_fret Cyclone::PlatformEncrptMemory(const char*, const char*, int, char*, int&)");
  78479. if ( *nOutSize <= nInSize + 24 )
  78480. __assert_fail(
  78481. "nOutSize > (nInSize + 24)",
  78482. "src/DES/MyEncrypt.cpp",
  78483. 0x127u,
  78484. "Cyclone::encrypt_fret Cyclone::PlatformEncrptMemory(const char*, const char*, int, char*, int&)");
  78485. memset(szEncrypt, 0, sizeof(szEncrypt));
  78486. strncpy(szEncrypt, &Cyclone::g_szRanKey[2], 0x10u);
  78487. *(_DWORD *)szEncrypt = 2;
  78488. *(_DWORD *)&szEncrypt[4] = 16;
  78489. return Cyclone::EncryptData(szEncrypt, 0, pIn, nInSize, pOut, nOutSize) != 0;
  78490. }
  78491.  
  78492. //----- (080B3C0C) --------------------------------------------------------
  78493. encrypt_fret __cdecl Cyclone::PlatformEncrptFile(const char *szKey, const char *szSourceFileName, const char *szObjectFileName)
  78494. {
  78495. FILE *v3; // esi
  78496. encrypt_fret result; // eax
  78497. int v5; // ebx
  78498. void *v6; // edi
  78499. FILE *v7; // esi
  78500. char *pObject; // [esp+4h] [ebp-14h]
  78501. int nObjectSize; // [esp+8h] [ebp-10h]
  78502.  
  78503. if ( !szKey )
  78504. __assert_fail(
  78505. "szKey",
  78506. "src/DES/MyEncrypt.cpp",
  78507. 0x85u,
  78508. "Cyclone::encrypt_fret Cyclone::PlatformEncrptFile(const char*, const char*, const char*)");
  78509. if ( !szSourceFileName )
  78510. __assert_fail(
  78511. "szSourceFileName",
  78512. "src/DES/MyEncrypt.cpp",
  78513. 0x86u,
  78514. "Cyclone::encrypt_fret Cyclone::PlatformEncrptFile(const char*, const char*, const char*)");
  78515. if ( !szObjectFileName )
  78516. __assert_fail(
  78517. "szObjectFileName",
  78518. "src/DES/MyEncrypt.cpp",
  78519. 0x87u,
  78520. "Cyclone::encrypt_fret Cyclone::PlatformEncrptFile(const char*, const char*, const char*)");
  78521. v3 = fopen(szSourceFileName, "rb");
  78522. result = 0;
  78523. if ( v3 )
  78524. {
  78525. fseek(v3, 0, 2);
  78526. v5 = ftell(v3);
  78527. fseek(v3, 0, 0);
  78528. v6 = (void *)operator new[](v5 + 1);
  78529. fread(v6, 1u, v5, v3);
  78530. *((_BYTE *)v6 + v5) = 0;
  78531. fclose(v3);
  78532. nObjectSize = v5 + 280;
  78533. pObject = (char *)operator new[](v5 + 280);
  78534. Cyclone::PlatformEncrptMemory(szKey, (const char *)v6, v5, pObject, &nObjectSize);
  78535. if ( v6 )
  78536. operator delete[](v6);
  78537. v7 = fopen(szObjectFileName, "wb");
  78538. if ( !v7 )
  78539. goto LABEL_10;
  78540. pObject[nObjectSize] = 0;
  78541. pObject[nObjectSize + 1] = 0;
  78542. if ( fwrite(pObject, nObjectSize, 1u, v7) != 1 )
  78543. {
  78544. fclose(v7);
  78545. LABEL_10:
  78546. if ( pObject )
  78547. operator delete[](pObject);
  78548. return 0;
  78549. }
  78550. fclose(v7);
  78551. if ( pObject )
  78552. operator delete[](pObject);
  78553. result = 1;
  78554. }
  78555. return result;
  78556. }
  78557.  
  78558. //----- (080B3DBC) --------------------------------------------------------
  78559. aes_fret __cdecl aes_enc_blk(const unsigned __int8 *in_blk, unsigned __int8 *out_blk, const aes_ctx *cx_0)
  78560. {
  78561. aes_fret result; // ax
  78562. uint32_t v4; // ebx
  78563. uint32_t v5; // esi
  78564. uint32_t v6; // ecx
  78565. uint32_t v7; // ebx
  78566. uint32_t v8; // ST28_4
  78567. uint32_t v9; // ST24_4
  78568. uint32_t v10; // ST20_4
  78569. unsigned __int8 v11; // al
  78570. uint32_t v12; // esi
  78571. unsigned __int8 v13; // al
  78572. uint32_t v14; // ecx
  78573. uint32_t v15; // ebx
  78574. uint32_t v16; // edi
  78575. uint32_t v17; // ebx
  78576. uint32_t v18; // esi
  78577. uint32_t v19; // ecx
  78578. uint32_t v20; // ebx
  78579. uint32_t v21; // edi
  78580. uint32_t v22; // ebx
  78581. uint32_t v23; // esi
  78582. uint32_t v24; // ecx
  78583. uint32_t v25; // ebx
  78584. uint32_t v26; // ST70_4
  78585. uint32_t v27; // ST74_4
  78586. uint32_t v28; // ST78_4
  78587. uint32_t v29; // ST7C_4
  78588. uint32_t v30; // edi
  78589. uint32_t v31; // ebx
  78590. uint32_t v32; // ST28_4
  78591. uint32_t v33; // ST24_4
  78592. uint32_t v34; // ST20_4
  78593. uint32_t v35; // esi
  78594. uint32_t v36; // ecx
  78595. uint32_t v37; // ebx
  78596. uint32_t v38; // ST70_4
  78597. uint32_t v39; // ST74_4
  78598. uint32_t v40; // ST78_4
  78599. uint32_t v41; // ST7C_4
  78600. uint32_t v42; // edi
  78601. uint32_t v43; // ebx
  78602. uint32_t v44; // ST28_4
  78603. uint32_t v45; // ST24_4
  78604. uint32_t v46; // ST20_4
  78605. uint32_t v47; // esi
  78606. uint32_t v48; // ecx
  78607. uint32_t v49; // ebx
  78608. uint32_t v50; // ST70_4
  78609. uint32_t v51; // ST74_4
  78610. uint32_t v52; // ST78_4
  78611. uint32_t v53; // ST7C_4
  78612. uint32_t v54; // edi
  78613. uint32_t v55; // ebx
  78614. uint32_t v56; // ST28_4
  78615. uint32_t v57; // ST24_4
  78616. uint32_t v58; // ST20_4
  78617. uint32_t v59; // esi
  78618. uint32_t v60; // ecx
  78619. uint32_t v61; // ebx
  78620. uint32_t v62; // ST70_4
  78621. uint32_t v63; // ST74_4
  78622. uint32_t v64; // ST78_4
  78623. uint32_t v65; // ST7C_4
  78624. uint32_t v66; // edi
  78625. uint32_t v67; // ebx
  78626. uint32_t v68; // ST28_4
  78627. uint32_t v69; // ST24_4
  78628. uint32_t v70; // ST20_4
  78629. uint32_t v71; // esi
  78630. uint32_t v72; // ecx
  78631. uint32_t v73; // ebx
  78632. uint32_t v74; // ST70_4
  78633. uint32_t v75; // ST74_4
  78634. uint32_t v76; // ST78_4
  78635. uint32_t v77; // ST7C_4
  78636. uint32_t v78; // ST80_4
  78637. uint32_t v79; // ST84_4
  78638. uint32_t v80; // [esp+10h] [ebp-98h]
  78639. uint32_t v81; // [esp+10h] [ebp-98h]
  78640. uint32_t v82; // [esp+14h] [ebp-94h]
  78641. uint32_t v83; // [esp+14h] [ebp-94h]
  78642. uint32_t v84; // [esp+18h] [ebp-90h]
  78643. uint32_t v85; // [esp+18h] [ebp-90h]
  78644. uint32_t v86; // [esp+1Ch] [ebp-8Ch]
  78645. uint32_t v87; // [esp+1Ch] [ebp-8Ch]
  78646. uint32_t v88; // [esp+20h] [ebp-88h]
  78647. uint32_t v89; // [esp+20h] [ebp-88h]
  78648. uint32_t v90; // [esp+20h] [ebp-88h]
  78649. uint32_t v91; // [esp+24h] [ebp-84h]
  78650. uint32_t v92; // [esp+24h] [ebp-84h]
  78651. uint32_t v93; // [esp+24h] [ebp-84h]
  78652. uint32_t v94; // [esp+28h] [ebp-80h]
  78653. uint32_t v95; // [esp+28h] [ebp-80h]
  78654. uint32_t v96; // [esp+28h] [ebp-80h]
  78655. const uint32_t *kp; // [esp+4Ch] [ebp-5Ch]
  78656. uint32_t b0; // [esp+50h] [ebp-58h]
  78657. uint32_t b0_4; // [esp+54h] [ebp-54h]
  78658. uint32_t b0_8; // [esp+58h] [ebp-50h]
  78659. uint32_t b0_12; // [esp+5Ch] [ebp-4Ch]
  78660. uint32_t b0_16; // [esp+60h] [ebp-48h]
  78661. uint32_t b0_20; // [esp+64h] [ebp-44h]
  78662. uint32_t b1; // [esp+70h] [ebp-38h]
  78663. uint32_t b1_4; // [esp+74h] [ebp-34h]
  78664. uint32_t b1_8; // [esp+78h] [ebp-30h]
  78665. uint32_t b1_12; // [esp+7Ch] [ebp-2Ch]
  78666. uint32_t b1_16; // [esp+80h] [ebp-28h]
  78667. uint32_t b1_20; // [esp+84h] [ebp-24h]
  78668.  
  78669. result = 0;
  78670. if ( !(cx_0->n_blk & 1) )
  78671. return result;
  78672. v4 = cx_0->n_rnd;
  78673. if ( v4 & 1 )
  78674. {
  78675. b1 = cx_0->k_sch[0] ^ (*in_blk | (in_blk[1] << 8) | (in_blk[2] << 16) | (in_blk[3] << 24));
  78676. if ( v4 & 1 )
  78677. {
  78678. LABEL_4:
  78679. b1_4 = cx_0->k_sch[1] ^ (in_blk[4] | (in_blk[5] << 8) | (in_blk[6] << 16) | (in_blk[7] << 24));
  78680. if ( v4 & 1 )
  78681. goto LABEL_5;
  78682. goto LABEL_15;
  78683. }
  78684. }
  78685. else
  78686. {
  78687. b0 = cx_0->k_sch[0] ^ (*in_blk | (in_blk[1] << 8) | (in_blk[2] << 16) | (in_blk[3] << 24));
  78688. if ( v4 & 1 )
  78689. goto LABEL_4;
  78690. }
  78691. b0_4 = cx_0->k_sch[1] ^ (in_blk[4] | (in_blk[5] << 8) | (in_blk[6] << 16) | (in_blk[7] << 24));
  78692. if ( v4 & 1 )
  78693. {
  78694. LABEL_5:
  78695. b1_8 = cx_0->k_sch[2] ^ (in_blk[8] | (in_blk[9] << 8) | (in_blk[10] << 16) | (in_blk[11] << 24));
  78696. if ( v4 & 1 )
  78697. goto LABEL_6;
  78698. goto LABEL_16;
  78699. }
  78700. LABEL_15:
  78701. b0_8 = cx_0->k_sch[2] ^ (in_blk[8] | (in_blk[9] << 8) | (in_blk[10] << 16) | (in_blk[11] << 24));
  78702. if ( v4 & 1 )
  78703. {
  78704. LABEL_6:
  78705. b1_12 = cx_0->k_sch[3] ^ (in_blk[12] | (in_blk[13] << 8) | (in_blk[14] << 16) | (in_blk[15] << 24));
  78706. if ( v4 & 1 )
  78707. goto LABEL_7;
  78708. LABEL_17:
  78709. b0_16 = cx_0->k_sch[4] ^ (in_blk[16] | (in_blk[17] << 8) | (in_blk[18] << 16) | (in_blk[19] << 24));
  78710. if ( v4 & 1 )
  78711. goto LABEL_8;
  78712. LABEL_18:
  78713. b0_20 = cx_0->k_sch[5] ^ (in_blk[20] | (in_blk[21] << 8) | (in_blk[22] << 16) | (in_blk[23] << 24));
  78714. goto LABEL_9;
  78715. }
  78716. LABEL_16:
  78717. b0_12 = cx_0->k_sch[3] ^ (in_blk[12] | (in_blk[13] << 8) | (in_blk[14] << 16) | (in_blk[15] << 24));
  78718. if ( !(v4 & 1) )
  78719. goto LABEL_17;
  78720. LABEL_7:
  78721. b1_16 = cx_0->k_sch[4] ^ (in_blk[16] | (in_blk[17] << 8) | (in_blk[18] << 16) | (in_blk[19] << 24));
  78722. if ( !(v4 & 1) )
  78723. goto LABEL_18;
  78724. LABEL_8:
  78725. b1_20 = cx_0->k_sch[5] ^ (in_blk[20] | (in_blk[21] << 8) | (in_blk[22] << 16) | (in_blk[23] << 24));
  78726. LABEL_9:
  78727. kp = &cx_0->k_sch[6 * v4 - 54];
  78728. switch ( v4 )
  78729. {
  78730. case 0xAu:
  78731. v96 = b0;
  78732. v93 = b0_4;
  78733. v23 = b0_12;
  78734. v24 = b0_16;
  78735. v25 = b0_20;
  78736. v90 = b0_8;
  78737. goto LABEL_23;
  78738. case 0xBu:
  78739. v83 = b1_8;
  78740. v21 = b1_16;
  78741. v22 = b1_20;
  78742. v87 = b1;
  78743. v85 = b1_4;
  78744. v81 = b1_12;
  78745. goto LABEL_22;
  78746. case 0xCu:
  78747. v95 = b0;
  78748. v92 = b0_4;
  78749. v18 = b0_12;
  78750. v19 = b0_16;
  78751. v20 = b0_20;
  78752. v89 = b0_8;
  78753. goto LABEL_21;
  78754. case 0xDu:
  78755. v82 = b1_8;
  78756. v16 = b1_16;
  78757. v17 = b1_20;
  78758. v86 = b1;
  78759. v84 = b1_4;
  78760. v80 = b1_12;
  78761. goto LABEL_20;
  78762. case 0xEu:
  78763. v86 = cx_0->k_sch[6 * v4 - 78] ^ ft_tab[3][b0_12 >> 24] ^ ft_tab[2][BYTE2(b0_8)] ^ ft_tab[0][(unsigned __int8)b0] ^ ft_tab[1][BYTE1(b0_4)];
  78764. v84 = cx_0->k_sch[6 * v4 - 77] ^ ft_tab[3][b0_16 >> 24] ^ ft_tab[2][BYTE2(b0_12)] ^ ft_tab[0][(unsigned __int8)b0_4] ^ ft_tab[1][BYTE1(b0_8)];
  78765. v82 = cx_0->k_sch[6 * v4 - 76] ^ ft_tab[3][b0_20 >> 24] ^ ft_tab[2][BYTE2(b0_16)] ^ ft_tab[0][(unsigned __int8)b0_8] ^ ft_tab[1][BYTE1(b0_12)];
  78766. v80 = cx_0->k_sch[6 * v4 - 75] ^ ft_tab[3][b0 >> 24] ^ ft_tab[2][BYTE2(b0_20)] ^ ft_tab[0][(unsigned __int8)b0_12] ^ ft_tab[1][BYTE1(b0_16)];
  78767. v16 = cx_0->k_sch[6 * v4 - 74] ^ ft_tab[3][b0_4 >> 24] ^ ft_tab[2][BYTE2(b0)] ^ ft_tab[0][(unsigned __int8)b0_16] ^ ft_tab[1][BYTE1(b0_20)];
  78768. v17 = cx_0->k_sch[6 * v4 - 73] ^ ft_tab[3][b0_8 >> 24] ^ ft_tab[2][(b0_4 >> 16) & 0xFF] ^ ft_tab[0][(unsigned __int8)b0_20] ^ ft_tab[1][BYTE1(b0)];
  78769. LABEL_20:
  78770. v95 = *(kp - 18) ^ ft_tab[3][v80 >> 24] ^ ft_tab[2][BYTE2(v82)] ^ ft_tab[0][(unsigned __int8)v86] ^ ft_tab[1][BYTE1(v84)];
  78771. v92 = *(kp - 17) ^ ft_tab[3][v16 >> 24] ^ ft_tab[2][BYTE2(v80)] ^ ft_tab[0][(unsigned __int8)v84] ^ ft_tab[1][BYTE1(v82)];
  78772. v89 = *(kp - 16) ^ ft_tab[3][v17 >> 24] ^ ft_tab[2][BYTE2(v16)] ^ ft_tab[0][(unsigned __int8)v82] ^ ft_tab[1][BYTE1(v80)];
  78773. v18 = *(kp - 15) ^ ft_tab[3][v86 >> 24] ^ ft_tab[2][BYTE2(v17)] ^ ft_tab[0][(unsigned __int8)v80] ^ ft_tab[1][BYTE1(v16)];
  78774. v19 = *(kp - 14) ^ ft_tab[3][v84 >> 24] ^ ft_tab[2][BYTE2(v86)] ^ ft_tab[0][(unsigned __int8)v16] ^ ft_tab[1][BYTE1(v17)];
  78775. v20 = *(kp - 13) ^ ft_tab[3][v82 >> 24] ^ ft_tab[2][BYTE2(v84)] ^ ft_tab[0][(unsigned __int8)v17] ^ ft_tab[1][BYTE1(v86)];
  78776. LABEL_21:
  78777. v87 = *(kp - 12) ^ ft_tab[3][v18 >> 24] ^ ft_tab[2][BYTE2(v89)] ^ ft_tab[0][(unsigned __int8)v95] ^ ft_tab[1][BYTE1(v92)];
  78778. v85 = *(kp - 11) ^ ft_tab[3][v19 >> 24] ^ ft_tab[2][BYTE2(v18)] ^ ft_tab[0][(unsigned __int8)v92] ^ ft_tab[1][BYTE1(v89)];
  78779. v83 = *(kp - 10) ^ ft_tab[3][v20 >> 24] ^ ft_tab[2][BYTE2(v19)] ^ ft_tab[0][(unsigned __int8)v89] ^ ft_tab[1][BYTE1(v18)];
  78780. v81 = *(kp - 9) ^ ft_tab[3][v95 >> 24] ^ ft_tab[2][BYTE2(v20)] ^ ft_tab[0][(unsigned __int8)v18] ^ ft_tab[1][BYTE1(v19)];
  78781. v21 = *(kp - 8) ^ ft_tab[3][v92 >> 24] ^ ft_tab[2][BYTE2(v95)] ^ ft_tab[0][(unsigned __int8)v19] ^ ft_tab[1][BYTE1(v20)];
  78782. v22 = *(kp - 7) ^ ft_tab[3][v89 >> 24] ^ ft_tab[2][BYTE2(v92)] ^ ft_tab[0][(unsigned __int8)v20] ^ ft_tab[1][BYTE1(v95)];
  78783. LABEL_22:
  78784. v96 = *(kp - 6) ^ ft_tab[3][v81 >> 24] ^ ft_tab[2][BYTE2(v83)] ^ ft_tab[0][(unsigned __int8)v87] ^ ft_tab[1][BYTE1(v85)];
  78785. v93 = *(kp - 5) ^ ft_tab[3][v21 >> 24] ^ ft_tab[2][BYTE2(v81)] ^ ft_tab[0][(unsigned __int8)v85] ^ ft_tab[1][BYTE1(v83)];
  78786. v90 = *(kp - 4) ^ ft_tab[3][v22 >> 24] ^ ft_tab[2][BYTE2(v21)] ^ ft_tab[0][(unsigned __int8)v83] ^ ft_tab[1][BYTE1(v81)];
  78787. v23 = *(kp - 3) ^ ft_tab[3][v87 >> 24] ^ ft_tab[2][BYTE2(v22)] ^ ft_tab[0][(unsigned __int8)v81] ^ ft_tab[1][BYTE1(v21)];
  78788. v24 = *(kp - 2) ^ ft_tab[3][v85 >> 24] ^ ft_tab[2][BYTE2(v87)] ^ ft_tab[0][(unsigned __int8)v21] ^ ft_tab[1][BYTE1(v22)];
  78789. v25 = *(kp - 1) ^ ft_tab[3][v83 >> 24] ^ ft_tab[2][BYTE2(v85)] ^ ft_tab[0][(unsigned __int8)v22] ^ ft_tab[1][BYTE1(v87)];
  78790. LABEL_23:
  78791. v26 = *kp ^ ft_tab[3][v23 >> 24] ^ ft_tab[2][BYTE2(v90)] ^ ft_tab[0][(unsigned __int8)v96] ^ ft_tab[1][BYTE1(v93)];
  78792. v27 = kp[1] ^ ft_tab[3][v24 >> 24] ^ ft_tab[2][BYTE2(v23)] ^ ft_tab[0][(unsigned __int8)v93] ^ ft_tab[1][BYTE1(v90)];
  78793. v28 = kp[2] ^ ft_tab[3][v25 >> 24] ^ ft_tab[2][BYTE2(v24)] ^ ft_tab[0][(unsigned __int8)v90] ^ ft_tab[1][BYTE1(v23)];
  78794. v29 = kp[3] ^ ft_tab[3][v96 >> 24] ^ ft_tab[2][BYTE2(v25)] ^ ft_tab[0][(unsigned __int8)v23] ^ ft_tab[1][BYTE1(v24)];
  78795. v30 = kp[4] ^ ft_tab[3][v93 >> 24] ^ ft_tab[2][BYTE2(v96)] ^ ft_tab[0][(unsigned __int8)v24] ^ ft_tab[1][BYTE1(v25)];
  78796. v31 = kp[5] ^ ft_tab[3][v90 >> 24] ^ ft_tab[2][BYTE2(v93)] ^ ft_tab[0][(unsigned __int8)v25] ^ ft_tab[1][BYTE1(v96)];
  78797. v32 = kp[6] ^ ft_tab[3][v29 >> 24] ^ ft_tab[2][BYTE2(v28)] ^ ft_tab[0][(unsigned __int8)v26] ^ ft_tab[1][BYTE1(v27)];
  78798. v33 = kp[7] ^ ft_tab[3][v30 >> 24] ^ ft_tab[2][BYTE2(v29)] ^ ft_tab[0][(unsigned __int8)v27] ^ ft_tab[1][BYTE1(v28)];
  78799. v34 = kp[8] ^ ft_tab[3][v31 >> 24] ^ ft_tab[2][BYTE2(v30)] ^ ft_tab[0][(unsigned __int8)v28] ^ ft_tab[1][BYTE1(v29)];
  78800. v35 = kp[9] ^ ft_tab[3][v26 >> 24] ^ ft_tab[2][BYTE2(v31)] ^ ft_tab[0][(unsigned __int8)v29] ^ ft_tab[1][BYTE1(v30)];
  78801. v36 = kp[10] ^ ft_tab[3][v27 >> 24] ^ ft_tab[2][BYTE2(v26)] ^ ft_tab[0][(unsigned __int8)v30] ^ ft_tab[1][BYTE1(v31)];
  78802. v37 = kp[11] ^ ft_tab[3][v28 >> 24] ^ ft_tab[2][BYTE2(v27)] ^ ft_tab[0][(unsigned __int8)v31] ^ ft_tab[1][BYTE1(v26)];
  78803. v38 = kp[12] ^ ft_tab[3][v35 >> 24] ^ ft_tab[2][BYTE2(v34)] ^ ft_tab[0][(unsigned __int8)v32] ^ ft_tab[1][BYTE1(v33)];
  78804. v39 = kp[13] ^ ft_tab[3][v36 >> 24] ^ ft_tab[2][BYTE2(v35)] ^ ft_tab[0][(unsigned __int8)v33] ^ ft_tab[1][BYTE1(v34)];
  78805. v40 = kp[14] ^ ft_tab[3][v37 >> 24] ^ ft_tab[2][BYTE2(v36)] ^ ft_tab[0][(unsigned __int8)v34] ^ ft_tab[1][BYTE1(v35)];
  78806. v41 = kp[15] ^ ft_tab[3][v32 >> 24] ^ ft_tab[2][BYTE2(v37)] ^ ft_tab[0][(unsigned __int8)v35] ^ ft_tab[1][BYTE1(v36)];
  78807. v42 = kp[16] ^ ft_tab[3][v33 >> 24] ^ ft_tab[2][BYTE2(v32)] ^ ft_tab[0][(unsigned __int8)v36] ^ ft_tab[1][BYTE1(v37)];
  78808. v43 = kp[17] ^ ft_tab[3][v34 >> 24] ^ ft_tab[2][BYTE2(v33)] ^ ft_tab[0][(unsigned __int8)v37] ^ ft_tab[1][BYTE1(v32)];
  78809. v44 = kp[18] ^ ft_tab[3][v41 >> 24] ^ ft_tab[2][BYTE2(v40)] ^ ft_tab[0][(unsigned __int8)v38] ^ ft_tab[1][BYTE1(v39)];
  78810. v45 = kp[19] ^ ft_tab[3][v42 >> 24] ^ ft_tab[2][BYTE2(v41)] ^ ft_tab[0][(unsigned __int8)v39] ^ ft_tab[1][BYTE1(v40)];
  78811. v46 = kp[20] ^ ft_tab[3][v43 >> 24] ^ ft_tab[2][BYTE2(v42)] ^ ft_tab[0][(unsigned __int8)v40] ^ ft_tab[1][BYTE1(v41)];
  78812. v47 = kp[21] ^ ft_tab[3][v38 >> 24] ^ ft_tab[2][BYTE2(v43)] ^ ft_tab[0][(unsigned __int8)v41] ^ ft_tab[1][BYTE1(v42)];
  78813. v48 = kp[22] ^ ft_tab[3][v39 >> 24] ^ ft_tab[2][BYTE2(v38)] ^ ft_tab[0][(unsigned __int8)v42] ^ ft_tab[1][BYTE1(v43)];
  78814. v49 = kp[23] ^ ft_tab[3][v40 >> 24] ^ ft_tab[2][BYTE2(v39)] ^ ft_tab[0][(unsigned __int8)v43] ^ ft_tab[1][BYTE1(v38)];
  78815. v50 = kp[24] ^ ft_tab[3][v47 >> 24] ^ ft_tab[2][BYTE2(v46)] ^ ft_tab[0][(unsigned __int8)v44] ^ ft_tab[1][BYTE1(v45)];
  78816. v51 = kp[25] ^ ft_tab[3][v48 >> 24] ^ ft_tab[2][BYTE2(v47)] ^ ft_tab[0][(unsigned __int8)v45] ^ ft_tab[1][BYTE1(v46)];
  78817. v52 = kp[26] ^ ft_tab[3][v49 >> 24] ^ ft_tab[2][BYTE2(v48)] ^ ft_tab[0][(unsigned __int8)v46] ^ ft_tab[1][BYTE1(v47)];
  78818. v53 = kp[27] ^ ft_tab[3][v44 >> 24] ^ ft_tab[2][BYTE2(v49)] ^ ft_tab[0][(unsigned __int8)v47] ^ ft_tab[1][BYTE1(v48)];
  78819. v54 = kp[28] ^ ft_tab[3][v45 >> 24] ^ ft_tab[2][BYTE2(v44)] ^ ft_tab[0][(unsigned __int8)v48] ^ ft_tab[1][BYTE1(v49)];
  78820. v55 = kp[29] ^ ft_tab[3][v46 >> 24] ^ ft_tab[2][BYTE2(v45)] ^ ft_tab[0][(unsigned __int8)v49] ^ ft_tab[1][BYTE1(v44)];
  78821. v56 = kp[30] ^ ft_tab[3][v53 >> 24] ^ ft_tab[2][BYTE2(v52)] ^ ft_tab[0][(unsigned __int8)v50] ^ ft_tab[1][BYTE1(v51)];
  78822. v57 = kp[31] ^ ft_tab[3][v54 >> 24] ^ ft_tab[2][BYTE2(v53)] ^ ft_tab[0][(unsigned __int8)v51] ^ ft_tab[1][BYTE1(v52)];
  78823. v58 = kp[32] ^ ft_tab[3][v55 >> 24] ^ ft_tab[2][BYTE2(v54)] ^ ft_tab[0][(unsigned __int8)v52] ^ ft_tab[1][BYTE1(v53)];
  78824. v59 = kp[33] ^ ft_tab[3][v50 >> 24] ^ ft_tab[2][BYTE2(v55)] ^ ft_tab[0][(unsigned __int8)v53] ^ ft_tab[1][BYTE1(v54)];
  78825. v60 = kp[34] ^ ft_tab[3][v51 >> 24] ^ ft_tab[2][BYTE2(v50)] ^ ft_tab[0][(unsigned __int8)v54] ^ ft_tab[1][BYTE1(v55)];
  78826. v61 = kp[35] ^ ft_tab[3][v52 >> 24] ^ ft_tab[2][BYTE2(v51)] ^ ft_tab[0][(unsigned __int8)v55] ^ ft_tab[1][BYTE1(v50)];
  78827. v62 = kp[36] ^ ft_tab[3][v59 >> 24] ^ ft_tab[2][BYTE2(v58)] ^ ft_tab[0][(unsigned __int8)v56] ^ ft_tab[1][BYTE1(v57)];
  78828. v63 = kp[37] ^ ft_tab[3][v60 >> 24] ^ ft_tab[2][BYTE2(v59)] ^ ft_tab[0][(unsigned __int8)v57] ^ ft_tab[1][BYTE1(v58)];
  78829. v64 = kp[38] ^ ft_tab[3][v61 >> 24] ^ ft_tab[2][BYTE2(v60)] ^ ft_tab[0][(unsigned __int8)v58] ^ ft_tab[1][BYTE1(v59)];
  78830. v65 = kp[39] ^ ft_tab[3][v56 >> 24] ^ ft_tab[2][BYTE2(v61)] ^ ft_tab[0][(unsigned __int8)v59] ^ ft_tab[1][BYTE1(v60)];
  78831. v66 = kp[40] ^ ft_tab[3][v57 >> 24] ^ ft_tab[2][BYTE2(v56)] ^ ft_tab[0][(unsigned __int8)v60] ^ ft_tab[1][BYTE1(v61)];
  78832. v67 = kp[41] ^ ft_tab[3][v58 >> 24] ^ ft_tab[2][BYTE2(v57)] ^ ft_tab[0][(unsigned __int8)v61] ^ ft_tab[1][BYTE1(v56)];
  78833. v68 = kp[42] ^ ft_tab[3][v65 >> 24] ^ ft_tab[2][BYTE2(v64)] ^ ft_tab[0][(unsigned __int8)v62] ^ ft_tab[1][BYTE1(v63)];
  78834. v69 = kp[43] ^ ft_tab[3][v66 >> 24] ^ ft_tab[2][BYTE2(v65)] ^ ft_tab[0][(unsigned __int8)v63] ^ ft_tab[1][BYTE1(v64)];
  78835. v70 = kp[44] ^ ft_tab[3][v67 >> 24] ^ ft_tab[2][BYTE2(v66)] ^ ft_tab[0][(unsigned __int8)v64] ^ ft_tab[1][BYTE1(v65)];
  78836. v71 = kp[45] ^ ft_tab[3][v62 >> 24] ^ ft_tab[2][BYTE2(v67)] ^ ft_tab[0][(unsigned __int8)v65] ^ ft_tab[1][BYTE1(v66)];
  78837. v72 = kp[46] ^ ft_tab[3][v63 >> 24] ^ ft_tab[2][BYTE2(v62)] ^ ft_tab[0][(unsigned __int8)v66] ^ ft_tab[1][BYTE1(v67)];
  78838. v73 = kp[47] ^ ft_tab[3][v64 >> 24] ^ ft_tab[2][BYTE2(v63)] ^ ft_tab[0][(unsigned __int8)v67] ^ ft_tab[1][BYTE1(v62)];
  78839. v74 = kp[48] ^ ft_tab[3][v71 >> 24] ^ ft_tab[2][BYTE2(v70)] ^ ft_tab[0][(unsigned __int8)v68] ^ ft_tab[1][BYTE1(v69)];
  78840. v75 = kp[49] ^ ft_tab[3][v72 >> 24] ^ ft_tab[2][BYTE2(v71)] ^ ft_tab[0][(unsigned __int8)v69] ^ ft_tab[1][BYTE1(v70)];
  78841. v76 = kp[50] ^ ft_tab[3][v73 >> 24] ^ ft_tab[2][BYTE2(v72)] ^ ft_tab[0][(unsigned __int8)v70] ^ ft_tab[1][BYTE1(v71)];
  78842. v77 = kp[51] ^ ft_tab[3][v68 >> 24] ^ ft_tab[2][BYTE2(v73)] ^ ft_tab[0][(unsigned __int8)v71] ^ ft_tab[1][BYTE1(v72)];
  78843. v78 = kp[52] ^ ft_tab[3][v69 >> 24] ^ ft_tab[2][BYTE2(v68)] ^ ft_tab[0][(unsigned __int8)v72] ^ ft_tab[1][BYTE1(v73)];
  78844. v79 = kp[53] ^ ft_tab[3][v70 >> 24] ^ ft_tab[2][BYTE2(v69)] ^ ft_tab[0][(unsigned __int8)v73] ^ ft_tab[1][BYTE1(v68)];
  78845. v94 = kp[54] ^ fl_tab[3][v77 >> 24] ^ fl_tab[2][BYTE2(v76)] ^ fl_tab[0][(unsigned __int8)v74] ^ fl_tab[1][BYTE1(v75)];
  78846. v91 = kp[55] ^ fl_tab[3][v78 >> 24] ^ fl_tab[2][BYTE2(v77)] ^ fl_tab[0][(unsigned __int8)v75] ^ fl_tab[1][BYTE1(v76)];
  78847. v88 = kp[56] ^ fl_tab[3][v79 >> 24] ^ fl_tab[2][BYTE2(v78)] ^ fl_tab[0][(unsigned __int8)v76] ^ fl_tab[1][BYTE1(v77)];
  78848. v5 = kp[57] ^ fl_tab[3][v74 >> 24] ^ fl_tab[2][BYTE2(v79)] ^ fl_tab[0][(unsigned __int8)v77] ^ fl_tab[1][BYTE1(v78)];
  78849. v6 = kp[58] ^ fl_tab[3][v75 >> 24] ^ fl_tab[2][BYTE2(v74)] ^ fl_tab[0][(unsigned __int8)v78] ^ fl_tab[1][BYTE1(v79)];
  78850. v7 = kp[59] ^ fl_tab[3][v76 >> 24] ^ fl_tab[2][BYTE2(v75)] ^ fl_tab[0][(unsigned __int8)v79] ^ fl_tab[1][BYTE1(v74)];
  78851. break;
  78852. default:
  78853. v91 = b0_4;
  78854. v88 = b0_8;
  78855. v94 = b0;
  78856. v5 = b0_12;
  78857. v6 = b0_16;
  78858. v7 = b0_20;
  78859. break;
  78860. }
  78861. *out_blk = v94;
  78862. v8 = v94 >> 8;
  78863. out_blk[1] = v8;
  78864. *((_WORD *)out_blk + 1) = v8 >> 8;
  78865. out_blk[4] = v91;
  78866. v9 = v91 >> 8;
  78867. out_blk[5] = v9;
  78868. *((_WORD *)out_blk + 3) = v9 >> 8;
  78869. out_blk[8] = v88;
  78870. v10 = v88 >> 8;
  78871. out_blk[9] = v10;
  78872. *((_WORD *)out_blk + 5) = v10 >> 8;
  78873. v11 = v5;
  78874. v12 = v5 >> 8;
  78875. out_blk[12] = v11;
  78876. out_blk[16] = v6;
  78877. v13 = v12;
  78878. v14 = v6 >> 8;
  78879. v12 >>= 8;
  78880. out_blk[20] = v7;
  78881. v15 = v7 >> 8;
  78882. out_blk[13] = v13;
  78883. out_blk[17] = v14;
  78884. v14 >>= 8;
  78885. out_blk[21] = v15;
  78886. v15 >>= 8;
  78887. out_blk[14] = v12;
  78888. out_blk[18] = v14;
  78889. out_blk[22] = v15;
  78890. out_blk[15] = BYTE1(v12);
  78891. out_blk[19] = BYTE1(v14);
  78892. out_blk[23] = BYTE1(v15);
  78893. return 1;
  78894. }
  78895.  
  78896. //----- (080B5DCC) --------------------------------------------------------
  78897. aes_fret __cdecl aes_dec_blk(const unsigned __int8 *in_blk, unsigned __int8 *out_blk, const aes_ctx *cx_0)
  78898. {
  78899. uint32_t v3; // ebx
  78900. aes_fret result; // ax
  78901. uint32_t v5; // esi
  78902. uint32_t v6; // edi
  78903. uint32_t v7; // ecx
  78904. uint32_t v8; // ebx
  78905. unsigned __int8 v9; // al
  78906. uint32_t v10; // esi
  78907. unsigned __int8 v11; // al
  78908. uint32_t v12; // edi
  78909. unsigned __int8 v13; // al
  78910. uint32_t v14; // ecx
  78911. uint32_t v15; // ST1C_4
  78912. uint32_t v16; // ST18_4
  78913. uint32_t v17; // ebx
  78914. uint32_t v18; // ebx
  78915. uint32_t v19; // esi
  78916. uint32_t v20; // edi
  78917. uint32_t v21; // ST14_4
  78918. uint32_t v22; // ecx
  78919. uint32_t v23; // ST10_4
  78920. uint32_t v24; // ST0C_4
  78921. uint32_t v25; // ebx
  78922. uint32_t v26; // esi
  78923. uint32_t v27; // edi
  78924. uint32_t v28; // ecx
  78925. uint32_t v29; // ebx
  78926. uint32_t v30; // esi
  78927. uint32_t v31; // edi
  78928. uint32_t v32; // ST14_4
  78929. uint32_t v33; // ecx
  78930. uint32_t v34; // ST10_4
  78931. uint32_t v35; // ST0C_4
  78932. uint32_t v36; // ebx
  78933. uint32_t v37; // ST1C0_4
  78934. uint32_t v38; // ST1C4_4
  78935. uint32_t v39; // esi
  78936. uint32_t v40; // ST1C8_4
  78937. uint32_t v41; // edi
  78938. uint32_t v42; // ST1CC_4
  78939. uint32_t v43; // ecx
  78940. uint32_t v44; // ST1D0_4
  78941. uint32_t v45; // ebx
  78942. uint32_t v46; // esi
  78943. uint32_t v47; // edi
  78944. uint32_t v48; // ecx
  78945. uint32_t v49; // ST1C_4
  78946. uint32_t v50; // ST18_4
  78947. uint32_t v51; // ebx
  78948. uint32_t v52; // ST1C0_4
  78949. uint32_t v53; // ST1C4_4
  78950. uint32_t v54; // ST1C8_4
  78951. uint32_t v55; // ST1CC_4
  78952. uint32_t v56; // ST1D0_4
  78953. uint32_t v57; // ebx
  78954. uint32_t v58; // esi
  78955. uint32_t v59; // edi
  78956. uint32_t v60; // ecx
  78957. uint32_t v61; // ST1C_4
  78958. uint32_t v62; // ST18_4
  78959. uint32_t v63; // ebx
  78960. uint32_t v64; // ST1C0_4
  78961. uint32_t v65; // ST1C4_4
  78962. uint32_t v66; // ST1C8_4
  78963. uint32_t v67; // ST1CC_4
  78964. uint32_t v68; // ST1D0_4
  78965. uint32_t v69; // ebx
  78966. uint32_t v70; // esi
  78967. uint32_t v71; // edi
  78968. uint32_t v72; // ecx
  78969. uint32_t v73; // ST1C_4
  78970. uint32_t v74; // ST18_4
  78971. uint32_t v75; // ebx
  78972. uint32_t v76; // ST1C0_4
  78973. uint32_t v77; // ST1C4_4
  78974. uint32_t v78; // ST1C8_4
  78975. uint32_t v79; // ST1CC_4
  78976. uint32_t v80; // ST1D0_4
  78977. uint32_t v81; // ebx
  78978. uint32_t v82; // esi
  78979. uint32_t v83; // edi
  78980. uint32_t v84; // ecx
  78981. uint32_t v85; // ST1C_4
  78982. uint32_t v86; // ST18_4
  78983. uint32_t v87; // ebx
  78984. uint32_t v88; // ST1C0_4
  78985. uint32_t v89; // ST1C4_4
  78986. uint32_t v90; // ST1C8_4
  78987. uint32_t v91; // ST1CC_4
  78988. uint32_t v92; // ST1D0_4
  78989. uint32_t v93; // ST38_4
  78990. uint32_t v94; // [esp+4h] [ebp-1F4h]
  78991. uint32_t v95; // [esp+4h] [ebp-1F4h]
  78992. uint32_t v96; // [esp+8h] [ebp-1F0h]
  78993. uint32_t v97; // [esp+8h] [ebp-1F0h]
  78994. uint32_t v98; // [esp+Ch] [ebp-1ECh]
  78995. uint32_t v99; // [esp+Ch] [ebp-1ECh]
  78996. uint32_t v100; // [esp+10h] [ebp-1E8h]
  78997. uint32_t v101; // [esp+10h] [ebp-1E8h]
  78998. uint32_t v102; // [esp+14h] [ebp-1E4h]
  78999. uint32_t v103; // [esp+14h] [ebp-1E4h]
  79000. uint32_t v104; // [esp+18h] [ebp-1E0h]
  79001. uint32_t v105; // [esp+18h] [ebp-1E0h]
  79002. uint32_t v106; // [esp+18h] [ebp-1E0h]
  79003. uint32_t v107; // [esp+1Ch] [ebp-1DCh]
  79004. uint32_t v108; // [esp+1Ch] [ebp-1DCh]
  79005. uint32_t v109; // [esp+1Ch] [ebp-1DCh]
  79006. const uint32_t *kp; // [esp+19Ch] [ebp-5Ch]
  79007. unsigned int b0; // [esp+1A0h] [ebp-58h]
  79008. unsigned int b0_4; // [esp+1A4h] [ebp-54h]
  79009. unsigned int b0_8; // [esp+1A8h] [ebp-50h]
  79010. unsigned int b0_12; // [esp+1ACh] [ebp-4Ch]
  79011. unsigned int b0_16; // [esp+1B0h] [ebp-48h]
  79012. unsigned int b0_20; // [esp+1B4h] [ebp-44h]
  79013. int b1; // [esp+1C0h] [ebp-38h]
  79014. int b1_4; // [esp+1C4h] [ebp-34h]
  79015. int b1_8; // [esp+1C8h] [ebp-30h]
  79016. int b1_12; // [esp+1CCh] [ebp-2Ch]
  79017. int b1_16; // [esp+1D0h] [ebp-28h]
  79018. int b1_20; // [esp+1D4h] [ebp-24h]
  79019.  
  79020. v3 = cx_0->n_rnd;
  79021. kp = &cx_0->k_sch[6 * v3];
  79022. result = 0;
  79023. if ( !(cx_0->n_blk & 2) )
  79024. return result;
  79025. if ( v3 & 1 )
  79026. {
  79027. b1 = *kp ^ (*in_blk | (in_blk[1] << 8) | (in_blk[2] << 16) | (in_blk[3] << 24));
  79028. if ( v3 & 1 )
  79029. {
  79030. LABEL_4:
  79031. b1_4 = kp[1] ^ (in_blk[4] | (in_blk[5] << 8) | (in_blk[6] << 16) | (in_blk[7] << 24));
  79032. if ( v3 & 1 )
  79033. goto LABEL_5;
  79034. goto LABEL_15;
  79035. }
  79036. }
  79037. else
  79038. {
  79039. b0 = *kp ^ (*in_blk | (in_blk[1] << 8) | (in_blk[2] << 16) | (in_blk[3] << 24));
  79040. if ( v3 & 1 )
  79041. goto LABEL_4;
  79042. }
  79043. b0_4 = kp[1] ^ (in_blk[4] | (in_blk[5] << 8) | (in_blk[6] << 16) | (in_blk[7] << 24));
  79044. if ( v3 & 1 )
  79045. {
  79046. LABEL_5:
  79047. b1_8 = kp[2] ^ (in_blk[8] | (in_blk[9] << 8) | (in_blk[10] << 16) | (in_blk[11] << 24));
  79048. if ( v3 & 1 )
  79049. goto LABEL_6;
  79050. goto LABEL_16;
  79051. }
  79052. LABEL_15:
  79053. b0_8 = kp[2] ^ (in_blk[8] | (in_blk[9] << 8) | (in_blk[10] << 16) | (in_blk[11] << 24));
  79054. if ( v3 & 1 )
  79055. {
  79056. LABEL_6:
  79057. b1_12 = kp[3] ^ (in_blk[12] | (in_blk[13] << 8) | (in_blk[14] << 16) | (in_blk[15] << 24));
  79058. if ( v3 & 1 )
  79059. goto LABEL_7;
  79060. LABEL_17:
  79061. b0_16 = kp[4] ^ (in_blk[16] | (in_blk[17] << 8) | (in_blk[18] << 16) | (in_blk[19] << 24));
  79062. if ( v3 & 1 )
  79063. goto LABEL_8;
  79064. LABEL_18:
  79065. b0_20 = kp[5] ^ (in_blk[20] | (in_blk[21] << 8) | (in_blk[22] << 16) | (in_blk[23] << 24));
  79066. goto LABEL_9;
  79067. }
  79068. LABEL_16:
  79069. b0_12 = kp[3] ^ (in_blk[12] | (in_blk[13] << 8) | (in_blk[14] << 16) | (in_blk[15] << 24));
  79070. if ( !(v3 & 1) )
  79071. goto LABEL_17;
  79072. LABEL_7:
  79073. b1_16 = kp[4] ^ (in_blk[16] | (in_blk[17] << 8) | (in_blk[18] << 16) | (in_blk[19] << 24));
  79074. if ( !(v3 & 1) )
  79075. goto LABEL_18;
  79076. LABEL_8:
  79077. b1_20 = kp[5] ^ (in_blk[20] | (in_blk[21] << 8) | (in_blk[22] << 16) | (in_blk[23] << 24));
  79078. LABEL_9:
  79079. switch ( v3 )
  79080. {
  79081. case 0xAu:
  79082. v106 = b0_16;
  79083. v30 = b0;
  79084. v31 = b0_4;
  79085. v33 = b0_8;
  79086. v36 = b0_20;
  79087. v109 = b0_12;
  79088. goto LABEL_23;
  79089. case 0xBu:
  79090. v103 = b1;
  79091. v95 = b1_16;
  79092. v29 = b1_20;
  79093. v101 = b1_4;
  79094. v99 = b1_8;
  79095. v97 = b1_12;
  79096. goto LABEL_22;
  79097. case 0xCu:
  79098. v105 = b0_16;
  79099. v19 = b0;
  79100. v20 = b0_4;
  79101. v22 = b0_8;
  79102. v25 = b0_20;
  79103. v108 = b0_12;
  79104. goto LABEL_21;
  79105. case 0xDu:
  79106. v102 = b1;
  79107. v100 = b1_4;
  79108. v18 = b1_20;
  79109. v98 = b1_8;
  79110. v96 = b1_12;
  79111. v94 = b1_16;
  79112. goto LABEL_20;
  79113. case 0xEu:
  79114. v102 = cx_0->k_sch[78] ^ it_tab[3][b0_12 >> 24] ^ it_tab[2][BYTE2(b0_16)] ^ it_tab[0][(unsigned __int8)b0] ^ it_tab[1][BYTE1(b0_20)];
  79115. v100 = cx_0->k_sch[79] ^ it_tab[3][b0_16 >> 24] ^ it_tab[2][BYTE2(b0_20)] ^ it_tab[0][(unsigned __int8)b0_4] ^ it_tab[1][BYTE1(b0)];
  79116. v98 = cx_0->k_sch[80] ^ it_tab[3][b0_20 >> 24] ^ it_tab[2][BYTE2(b0)] ^ it_tab[0][(unsigned __int8)b0_8] ^ it_tab[1][BYTE1(b0_4)];
  79117. v96 = cx_0->k_sch[81] ^ it_tab[3][b0 >> 24] ^ it_tab[2][BYTE2(b0_4)] ^ it_tab[0][(unsigned __int8)b0_12] ^ it_tab[1][BYTE1(b0_8)];
  79118. v94 = cx_0->k_sch[82] ^ it_tab[3][b0_4 >> 24] ^ it_tab[2][BYTE2(b0_8)] ^ it_tab[0][(unsigned __int8)b0_16] ^ it_tab[1][BYTE1(b0_12)];
  79119. v18 = cx_0->k_sch[83] ^ it_tab[3][b0_8 >> 24] ^ it_tab[2][BYTE2(b0_12)] ^ it_tab[0][(unsigned __int8)b0_20] ^ it_tab[1][BYTE1(b0_16)];
  79120. LABEL_20:
  79121. v19 = cx_0->k_sch[72] ^ it_tab[3][v96 >> 24] ^ it_tab[2][BYTE2(v94)] ^ it_tab[0][(unsigned __int8)v102] ^ it_tab[1][BYTE1(v18)];
  79122. v20 = cx_0->k_sch[73] ^ it_tab[3][v94 >> 24] ^ it_tab[2][BYTE2(v18)] ^ it_tab[0][(unsigned __int8)v100] ^ it_tab[1][BYTE1(v102)];
  79123. v21 = v102 >> 16;
  79124. v22 = cx_0->k_sch[74] ^ it_tab[3][v18 >> 24] ^ it_tab[2][(unsigned __int8)v21] ^ it_tab[0][(unsigned __int8)v98] ^ it_tab[1][BYTE1(v100)];
  79125. v23 = v100 >> 16;
  79126. v108 = cx_0->k_sch[75] ^ it_tab[3][v21 >> 8] ^ it_tab[2][(unsigned __int8)v23] ^ it_tab[0][(unsigned __int8)v96] ^ it_tab[1][BYTE1(v98)];
  79127. v24 = v98 >> 16;
  79128. v105 = cx_0->k_sch[76] ^ it_tab[3][v23 >> 8] ^ it_tab[2][(unsigned __int8)v24] ^ it_tab[0][(unsigned __int8)v94] ^ it_tab[1][BYTE1(v96)];
  79129. v25 = cx_0->k_sch[77] ^ it_tab[3][v24 >> 8] ^ it_tab[2][BYTE2(v96)] ^ it_tab[0][(unsigned __int8)v18] ^ it_tab[1][BYTE1(v94)];
  79130. LABEL_21:
  79131. v103 = cx_0->k_sch[66] ^ it_tab[3][v108 >> 24] ^ it_tab[2][BYTE2(v105)] ^ it_tab[0][(unsigned __int8)v19] ^ it_tab[1][BYTE1(v25)];
  79132. v101 = cx_0->k_sch[67] ^ it_tab[3][v105 >> 24] ^ it_tab[2][BYTE2(v25)] ^ it_tab[0][(unsigned __int8)v20] ^ it_tab[1][BYTE1(v19)];
  79133. v26 = v19 >> 16;
  79134. v99 = cx_0->k_sch[68] ^ it_tab[3][v25 >> 24] ^ it_tab[2][(unsigned __int8)v26] ^ it_tab[0][(unsigned __int8)v22] ^ it_tab[1][BYTE1(v20)];
  79135. v27 = v20 >> 16;
  79136. v97 = cx_0->k_sch[69] ^ it_tab[3][v26 >> 8] ^ it_tab[2][(unsigned __int8)v27] ^ it_tab[0][(unsigned __int8)v108] ^ it_tab[1][BYTE1(v22)];
  79137. v28 = v22 >> 16;
  79138. v95 = cx_0->k_sch[70] ^ it_tab[3][v27 >> 8] ^ it_tab[2][(unsigned __int8)v28] ^ it_tab[0][(unsigned __int8)v105] ^ it_tab[1][BYTE1(v108)];
  79139. v29 = cx_0->k_sch[71] ^ it_tab[3][v28 >> 8] ^ it_tab[2][BYTE2(v108)] ^ it_tab[0][(unsigned __int8)v25] ^ it_tab[1][BYTE1(v105)];
  79140. LABEL_22:
  79141. v30 = cx_0->k_sch[60] ^ it_tab[3][v97 >> 24] ^ it_tab[2][BYTE2(v95)] ^ it_tab[0][(unsigned __int8)v103] ^ it_tab[1][BYTE1(v29)];
  79142. v31 = cx_0->k_sch[61] ^ it_tab[3][v95 >> 24] ^ it_tab[2][BYTE2(v29)] ^ it_tab[0][(unsigned __int8)v101] ^ it_tab[1][BYTE1(v103)];
  79143. v32 = v103 >> 16;
  79144. v33 = cx_0->k_sch[62] ^ it_tab[3][v29 >> 24] ^ it_tab[2][(unsigned __int8)v32] ^ it_tab[0][(unsigned __int8)v99] ^ it_tab[1][BYTE1(v101)];
  79145. v34 = v101 >> 16;
  79146. v109 = cx_0->k_sch[63] ^ it_tab[3][v32 >> 8] ^ it_tab[2][(unsigned __int8)v34] ^ it_tab[0][(unsigned __int8)v97] ^ it_tab[1][BYTE1(v99)];
  79147. v35 = v99 >> 16;
  79148. v106 = cx_0->k_sch[64] ^ it_tab[3][v34 >> 8] ^ it_tab[2][(unsigned __int8)v35] ^ it_tab[0][(unsigned __int8)v95] ^ it_tab[1][BYTE1(v97)];
  79149. v36 = cx_0->k_sch[65] ^ it_tab[3][v35 >> 8] ^ it_tab[2][BYTE2(v97)] ^ it_tab[0][(unsigned __int8)v29] ^ it_tab[1][BYTE1(v95)];
  79150. LABEL_23:
  79151. v37 = cx_0->k_sch[54] ^ it_tab[3][v109 >> 24] ^ it_tab[2][BYTE2(v106)] ^ it_tab[0][(unsigned __int8)v30] ^ it_tab[1][BYTE1(v36)];
  79152. v38 = cx_0->k_sch[55] ^ it_tab[3][v106 >> 24] ^ it_tab[2][BYTE2(v36)] ^ it_tab[0][(unsigned __int8)v31] ^ it_tab[1][BYTE1(v30)];
  79153. v39 = v30 >> 16;
  79154. v40 = cx_0->k_sch[56] ^ it_tab[3][v36 >> 24] ^ it_tab[2][(unsigned __int8)v39] ^ it_tab[0][(unsigned __int8)v33] ^ it_tab[1][BYTE1(v31)];
  79155. v41 = v31 >> 16;
  79156. v42 = cx_0->k_sch[57] ^ it_tab[3][v39 >> 8] ^ it_tab[2][(unsigned __int8)v41] ^ it_tab[0][(unsigned __int8)v109] ^ it_tab[1][BYTE1(v33)];
  79157. v43 = v33 >> 16;
  79158. v44 = cx_0->k_sch[58] ^ it_tab[3][v41 >> 8] ^ it_tab[2][(unsigned __int8)v43] ^ it_tab[0][(unsigned __int8)v106] ^ it_tab[1][BYTE1(v109)];
  79159. v45 = cx_0->k_sch[59] ^ it_tab[3][v43 >> 8] ^ it_tab[2][BYTE2(v109)] ^ it_tab[0][(unsigned __int8)v36] ^ it_tab[1][BYTE1(v106)];
  79160. v46 = cx_0->k_sch[48] ^ it_tab[3][v42 >> 24] ^ it_tab[2][BYTE2(v44)] ^ it_tab[0][(unsigned __int8)v37] ^ it_tab[1][BYTE1(v45)];
  79161. v47 = cx_0->k_sch[49] ^ it_tab[3][v44 >> 24] ^ it_tab[2][BYTE2(v45)] ^ it_tab[0][(unsigned __int8)v38] ^ it_tab[1][BYTE1(v37)];
  79162. v48 = cx_0->k_sch[50] ^ it_tab[3][v45 >> 24] ^ it_tab[2][BYTE2(v37)] ^ it_tab[0][(unsigned __int8)v40] ^ it_tab[1][BYTE1(v38)];
  79163. v49 = cx_0->k_sch[51] ^ it_tab[3][v37 >> 24] ^ it_tab[2][BYTE2(v38)] ^ it_tab[0][(unsigned __int8)v42] ^ it_tab[1][BYTE1(v40)];
  79164. v50 = cx_0->k_sch[52] ^ it_tab[3][v38 >> 24] ^ it_tab[2][BYTE2(v40)] ^ it_tab[0][(unsigned __int8)v44] ^ it_tab[1][BYTE1(v42)];
  79165. v51 = cx_0->k_sch[53] ^ it_tab[3][v40 >> 24] ^ it_tab[2][BYTE2(v42)] ^ it_tab[0][(unsigned __int8)v45] ^ it_tab[1][BYTE1(v44)];
  79166. v52 = cx_0->k_sch[42] ^ it_tab[3][v49 >> 24] ^ it_tab[2][BYTE2(v50)] ^ it_tab[0][(unsigned __int8)v46] ^ it_tab[1][BYTE1(v51)];
  79167. v53 = cx_0->k_sch[43] ^ it_tab[3][v50 >> 24] ^ it_tab[2][BYTE2(v51)] ^ it_tab[0][(unsigned __int8)v47] ^ it_tab[1][BYTE1(v46)];
  79168. v46 >>= 16;
  79169. v54 = cx_0->k_sch[44] ^ it_tab[3][v51 >> 24] ^ it_tab[2][(unsigned __int8)v46] ^ it_tab[0][(unsigned __int8)v48] ^ it_tab[1][BYTE1(v47)];
  79170. v47 >>= 16;
  79171. v55 = cx_0->k_sch[45] ^ it_tab[3][v46 >> 8] ^ it_tab[2][(unsigned __int8)v47] ^ it_tab[0][(unsigned __int8)v49] ^ it_tab[1][BYTE1(v48)];
  79172. v48 >>= 16;
  79173. v56 = cx_0->k_sch[46] ^ it_tab[3][v47 >> 8] ^ it_tab[2][(unsigned __int8)v48] ^ it_tab[0][(unsigned __int8)v50] ^ it_tab[1][BYTE1(v49)];
  79174. v57 = cx_0->k_sch[47] ^ it_tab[3][v48 >> 8] ^ it_tab[2][BYTE2(v49)] ^ it_tab[0][(unsigned __int8)v51] ^ it_tab[1][BYTE1(v50)];
  79175. v58 = cx_0->k_sch[36] ^ it_tab[3][v55 >> 24] ^ it_tab[2][BYTE2(v56)] ^ it_tab[0][(unsigned __int8)v52] ^ it_tab[1][BYTE1(v57)];
  79176. v59 = cx_0->k_sch[37] ^ it_tab[3][v56 >> 24] ^ it_tab[2][BYTE2(v57)] ^ it_tab[0][(unsigned __int8)v53] ^ it_tab[1][BYTE1(v52)];
  79177. v60 = cx_0->k_sch[38] ^ it_tab[3][v57 >> 24] ^ it_tab[2][BYTE2(v52)] ^ it_tab[0][(unsigned __int8)v54] ^ it_tab[1][BYTE1(v53)];
  79178. v61 = cx_0->k_sch[39] ^ it_tab[3][v52 >> 24] ^ it_tab[2][BYTE2(v53)] ^ it_tab[0][(unsigned __int8)v55] ^ it_tab[1][BYTE1(v54)];
  79179. v62 = cx_0->k_sch[40] ^ it_tab[3][v53 >> 24] ^ it_tab[2][BYTE2(v54)] ^ it_tab[0][(unsigned __int8)v56] ^ it_tab[1][BYTE1(v55)];
  79180. v63 = cx_0->k_sch[41] ^ it_tab[3][v54 >> 24] ^ it_tab[2][BYTE2(v55)] ^ it_tab[0][(unsigned __int8)v57] ^ it_tab[1][BYTE1(v56)];
  79181. v64 = cx_0->k_sch[30] ^ it_tab[3][v61 >> 24] ^ it_tab[2][BYTE2(v62)] ^ it_tab[0][(unsigned __int8)v58] ^ it_tab[1][BYTE1(v63)];
  79182. v65 = cx_0->k_sch[31] ^ it_tab[3][v62 >> 24] ^ it_tab[2][BYTE2(v63)] ^ it_tab[0][(unsigned __int8)v59] ^ it_tab[1][BYTE1(v58)];
  79183. v58 >>= 16;
  79184. v66 = cx_0->k_sch[32] ^ it_tab[3][v63 >> 24] ^ it_tab[2][(unsigned __int8)v58] ^ it_tab[0][(unsigned __int8)v60] ^ it_tab[1][BYTE1(v59)];
  79185. v59 >>= 16;
  79186. v67 = cx_0->k_sch[33] ^ it_tab[3][v58 >> 8] ^ it_tab[2][(unsigned __int8)v59] ^ it_tab[0][(unsigned __int8)v61] ^ it_tab[1][BYTE1(v60)];
  79187. v60 >>= 16;
  79188. v68 = cx_0->k_sch[34] ^ it_tab[3][v59 >> 8] ^ it_tab[2][(unsigned __int8)v60] ^ it_tab[0][(unsigned __int8)v62] ^ it_tab[1][BYTE1(v61)];
  79189. v69 = cx_0->k_sch[35] ^ it_tab[3][v60 >> 8] ^ it_tab[2][BYTE2(v61)] ^ it_tab[0][(unsigned __int8)v63] ^ it_tab[1][BYTE1(v62)];
  79190. v70 = cx_0->k_sch[24] ^ it_tab[3][v67 >> 24] ^ it_tab[2][BYTE2(v68)] ^ it_tab[0][(unsigned __int8)v64] ^ it_tab[1][BYTE1(v69)];
  79191. v71 = cx_0->k_sch[25] ^ it_tab[3][v68 >> 24] ^ it_tab[2][BYTE2(v69)] ^ it_tab[0][(unsigned __int8)v65] ^ it_tab[1][BYTE1(v64)];
  79192. v72 = cx_0->k_sch[26] ^ it_tab[3][v69 >> 24] ^ it_tab[2][BYTE2(v64)] ^ it_tab[0][(unsigned __int8)v66] ^ it_tab[1][BYTE1(v65)];
  79193. v73 = cx_0->k_sch[27] ^ it_tab[3][v64 >> 24] ^ it_tab[2][BYTE2(v65)] ^ it_tab[0][(unsigned __int8)v67] ^ it_tab[1][BYTE1(v66)];
  79194. v74 = cx_0->k_sch[28] ^ it_tab[3][v65 >> 24] ^ it_tab[2][BYTE2(v66)] ^ it_tab[0][(unsigned __int8)v68] ^ it_tab[1][BYTE1(v67)];
  79195. v75 = cx_0->k_sch[29] ^ it_tab[3][v66 >> 24] ^ it_tab[2][BYTE2(v67)] ^ it_tab[0][(unsigned __int8)v69] ^ it_tab[1][BYTE1(v68)];
  79196. v76 = cx_0->k_sch[18] ^ it_tab[3][v73 >> 24] ^ it_tab[2][BYTE2(v74)] ^ it_tab[0][(unsigned __int8)v70] ^ it_tab[1][BYTE1(v75)];
  79197. v77 = cx_0->k_sch[19] ^ it_tab[3][v74 >> 24] ^ it_tab[2][BYTE2(v75)] ^ it_tab[0][(unsigned __int8)v71] ^ it_tab[1][BYTE1(v70)];
  79198. v70 >>= 16;
  79199. v78 = cx_0->k_sch[20] ^ it_tab[3][v75 >> 24] ^ it_tab[2][(unsigned __int8)v70] ^ it_tab[0][(unsigned __int8)v72] ^ it_tab[1][BYTE1(v71)];
  79200. v71 >>= 16;
  79201. v79 = cx_0->k_sch[21] ^ it_tab[3][v70 >> 8] ^ it_tab[2][(unsigned __int8)v71] ^ it_tab[0][(unsigned __int8)v73] ^ it_tab[1][BYTE1(v72)];
  79202. v72 >>= 16;
  79203. v80 = cx_0->k_sch[22] ^ it_tab[3][v71 >> 8] ^ it_tab[2][(unsigned __int8)v72] ^ it_tab[0][(unsigned __int8)v74] ^ it_tab[1][BYTE1(v73)];
  79204. v81 = cx_0->k_sch[23] ^ it_tab[3][v72 >> 8] ^ it_tab[2][BYTE2(v73)] ^ it_tab[0][(unsigned __int8)v75] ^ it_tab[1][BYTE1(v74)];
  79205. v82 = cx_0->k_sch[12] ^ it_tab[3][v79 >> 24] ^ it_tab[2][BYTE2(v80)] ^ it_tab[0][(unsigned __int8)v76] ^ it_tab[1][BYTE1(v81)];
  79206. v83 = cx_0->k_sch[13] ^ it_tab[3][v80 >> 24] ^ it_tab[2][BYTE2(v81)] ^ it_tab[0][(unsigned __int8)v77] ^ it_tab[1][BYTE1(v76)];
  79207. v84 = cx_0->k_sch[14] ^ it_tab[3][v81 >> 24] ^ it_tab[2][BYTE2(v76)] ^ it_tab[0][(unsigned __int8)v78] ^ it_tab[1][BYTE1(v77)];
  79208. v85 = cx_0->k_sch[15] ^ it_tab[3][v76 >> 24] ^ it_tab[2][BYTE2(v77)] ^ it_tab[0][(unsigned __int8)v79] ^ it_tab[1][BYTE1(v78)];
  79209. v86 = cx_0->k_sch[16] ^ it_tab[3][v77 >> 24] ^ it_tab[2][BYTE2(v78)] ^ it_tab[0][(unsigned __int8)v80] ^ it_tab[1][BYTE1(v79)];
  79210. v87 = cx_0->k_sch[17] ^ it_tab[3][v78 >> 24] ^ it_tab[2][BYTE2(v79)] ^ it_tab[0][(unsigned __int8)v81] ^ it_tab[1][BYTE1(v80)];
  79211. v88 = cx_0->k_sch[6] ^ it_tab[3][v85 >> 24] ^ it_tab[2][BYTE2(v86)] ^ it_tab[0][(unsigned __int8)v82] ^ it_tab[1][BYTE1(v87)];
  79212. v89 = cx_0->k_sch[7] ^ it_tab[3][v86 >> 24] ^ it_tab[2][BYTE2(v87)] ^ it_tab[0][(unsigned __int8)v83] ^ it_tab[1][BYTE1(v82)];
  79213. v82 >>= 16;
  79214. v90 = cx_0->k_sch[8] ^ it_tab[3][v87 >> 24] ^ it_tab[2][(unsigned __int8)v82] ^ it_tab[0][(unsigned __int8)v84] ^ it_tab[1][BYTE1(v83)];
  79215. v83 >>= 16;
  79216. v91 = cx_0->k_sch[9] ^ it_tab[3][v82 >> 8] ^ it_tab[2][(unsigned __int8)v83] ^ it_tab[0][(unsigned __int8)v85] ^ it_tab[1][BYTE1(v84)];
  79217. v84 >>= 16;
  79218. v92 = cx_0->k_sch[10] ^ it_tab[3][v83 >> 8] ^ it_tab[2][(unsigned __int8)v84] ^ it_tab[0][(unsigned __int8)v86] ^ it_tab[1][BYTE1(v85)];
  79219. v93 = cx_0->k_sch[11] ^ it_tab[3][v84 >> 8] ^ it_tab[2][BYTE2(v85)] ^ it_tab[0][(unsigned __int8)v87] ^ it_tab[1][BYTE1(v86)];
  79220. v5 = cx_0->k_sch[0] ^ il_tab[3][v91 >> 24] ^ il_tab[2][BYTE2(v92)] ^ il_tab[0][(unsigned __int8)v88] ^ il_tab[1][BYTE1(v93)];
  79221. v6 = cx_0->k_sch[1] ^ il_tab[3][v92 >> 24] ^ il_tab[2][BYTE2(v93)] ^ il_tab[0][(unsigned __int8)v89] ^ il_tab[1][BYTE1(v88)];
  79222. v7 = cx_0->k_sch[2] ^ il_tab[3][v93 >> 24] ^ il_tab[2][BYTE2(v88)] ^ il_tab[0][(unsigned __int8)v90] ^ il_tab[1][BYTE1(v89)];
  79223. v107 = cx_0->k_sch[3] ^ il_tab[3][v88 >> 24] ^ il_tab[2][BYTE2(v89)] ^ il_tab[0][(unsigned __int8)v91] ^ il_tab[1][BYTE1(v90)];
  79224. v104 = cx_0->k_sch[4] ^ il_tab[3][v89 >> 24] ^ il_tab[2][BYTE2(v90)] ^ il_tab[0][(unsigned __int8)v92] ^ il_tab[1][BYTE1(v91)];
  79225. v8 = cx_0->k_sch[5] ^ il_tab[3][v90 >> 24] ^ il_tab[2][BYTE2(v91)] ^ il_tab[0][(unsigned __int8)v93] ^ il_tab[1][BYTE1(v92)];
  79226. break;
  79227. default:
  79228. v104 = b0_16;
  79229. v5 = b0;
  79230. v6 = b0_4;
  79231. v7 = b0_8;
  79232. v107 = b0_12;
  79233. v8 = b0_20;
  79234. break;
  79235. }
  79236. v9 = v5;
  79237. v10 = v5 >> 8;
  79238. *out_blk = v9;
  79239. out_blk[1] = v10;
  79240. *((_WORD *)out_blk + 1) = v10 >> 8;
  79241. v11 = v6;
  79242. v12 = v6 >> 8;
  79243. out_blk[4] = v11;
  79244. out_blk[8] = v7;
  79245. v13 = v12;
  79246. v14 = v7 >> 8;
  79247. v12 >>= 8;
  79248. out_blk[5] = v13;
  79249. out_blk[9] = v14;
  79250. v14 >>= 8;
  79251. out_blk[6] = v12;
  79252. out_blk[10] = v14;
  79253. out_blk[7] = BYTE1(v12);
  79254. out_blk[11] = BYTE1(v14);
  79255. out_blk[12] = v107;
  79256. v15 = v107 >> 8;
  79257. out_blk[13] = v15;
  79258. *((_WORD *)out_blk + 7) = v15 >> 8;
  79259. out_blk[16] = v104;
  79260. v16 = v104 >> 8;
  79261. out_blk[17] = v16;
  79262. v16 >>= 8;
  79263. out_blk[18] = v16;
  79264. out_blk[20] = v8;
  79265. v17 = v8 >> 8;
  79266. out_blk[21] = v17;
  79267. v17 >>= 8;
  79268. out_blk[22] = v17;
  79269. out_blk[19] = BYTE1(v16);
  79270. out_blk[23] = BYTE1(v17);
  79271. return 1;
  79272. }
  79273.  
  79274. //----- (080B8330) --------------------------------------------------------
  79275. aes_fret __cdecl aes_enc_key(const unsigned __int8 *in_key, unsigned int klen, aes_ctx *cx_0)
  79276. {
  79277. unsigned int v3; // eax
  79278. aes_ctx *v4; // esi
  79279. unsigned int v5; // ebx
  79280. unsigned int v6; // eax
  79281. uint32_t v7; // eax
  79282. bool j; // cf
  79283. aes_fret result; // ax
  79284. unsigned int v10; // edi
  79285. bool v11; // cf
  79286. aes_ctx *v12; // ecx
  79287. aes_ctx *v13; // ecx
  79288. aes_ctx *v14; // ecx
  79289. unsigned int v15; // [esp+4h] [ebp-2Ch]
  79290. unsigned int v; // [esp+8h] [ebp-28h]
  79291. int va; // [esp+8h] [ebp-28h]
  79292. int u; // [esp+Ch] [ebp-24h]
  79293. int ua; // [esp+Ch] [ebp-24h]
  79294. unsigned int ub; // [esp+Ch] [ebp-24h]
  79295. int t; // [esp+10h] [ebp-20h]
  79296. int ta; // [esp+10h] [ebp-20h]
  79297. unsigned int tb; // [esp+10h] [ebp-20h]
  79298. int tc; // [esp+10h] [ebp-20h]
  79299. int r; // [esp+14h] [ebp-1Ch]
  79300. int q; // [esp+18h] [ebp-18h]
  79301. int p; // [esp+1Ch] [ebp-14h]
  79302. uint32_t i; // [esp+20h] [ebp-10h]
  79303. uint32_t ia; // [esp+20h] [ebp-10h]
  79304. uint32_t ib; // [esp+20h] [ebp-10h]
  79305. uint32_t ic; // [esp+20h] [ebp-10h]
  79306. uint32_t id; // [esp+20h] [ebp-10h]
  79307.  
  79308. v3 = klen >> 2;
  79309. v4 = cx_0;
  79310. cx_0->n_blk = 25;
  79311. if ( klen >> 2 < 6 )
  79312. v3 = 6;
  79313. cx_0->n_rnd = v3 + 6;
  79314. p = *in_key | (in_key[1] << 8) | (in_key[2] << 16) | (in_key[3] << 24);
  79315. cx_0->k_sch[0] = p;
  79316. q = in_key[4] | (in_key[5] << 8) | (in_key[6] << 16) | (in_key[7] << 24);
  79317. cx_0->k_sch[1] = q;
  79318. r = in_key[8] | (in_key[9] << 8) | (in_key[10] << 16) | (in_key[11] << 24);
  79319. cx_0->k_sch[2] = r;
  79320. v5 = in_key[12] | (in_key[13] << 8) | (in_key[14] << 16) | (in_key[15] << 24);
  79321. v6 = klen >> 2;
  79322. cx_0->k_sch[3] = v5;
  79323. if ( klen >> 2 < 6 )
  79324. v6 = 6;
  79325. v7 = v6 + 6;
  79326. cx_0->n_rnd = v7;
  79327. v15 = (6 * v7 + 5) / (klen >> 2);
  79328. switch ( klen >> 2 )
  79329. {
  79330. case 4u:
  79331. ib = 0;
  79332. if ( v15 > 0 )
  79333. {
  79334. v12 = cx_0;
  79335. do
  79336. {
  79337. p ^= rcon_tab[ib] ^ fl_tab[3][(unsigned __int8)v5] ^ fl_tab[2][v5 >> 24] ^ fl_tab[0][BYTE1(v5)] ^ fl_tab[1][BYTE2(v5)];
  79338. q ^= p;
  79339. r ^= q;
  79340. v5 ^= r;
  79341. v12->k_sch[4] = p;
  79342. v12->k_sch[5] = q;
  79343. ++ib;
  79344. v12->k_sch[6] = r;
  79345. v12->k_sch[7] = v5;
  79346. v12 = (aes_ctx *)((char *)v12 + 16);
  79347. }
  79348. while ( ib < v15 );
  79349. }
  79350. goto LABEL_9;
  79351. case 5u:
  79352. tb = in_key[16] | (in_key[17] << 8) | (in_key[18] << 16) | (in_key[19] << 24);
  79353. ic = 0;
  79354. cx_0->k_sch[4] = tb;
  79355. if ( v15 > 0 )
  79356. {
  79357. v13 = cx_0;
  79358. do
  79359. {
  79360. p ^= rcon_tab[ic] ^ fl_tab[3][(unsigned __int8)tb] ^ fl_tab[2][tb >> 24] ^ fl_tab[0][BYTE1(tb)] ^ fl_tab[1][BYTE2(tb)];
  79361. q ^= p;
  79362. r ^= q;
  79363. v5 ^= r;
  79364. tb ^= v5;
  79365. v13->k_sch[5] = p;
  79366. v13->k_sch[6] = q;
  79367. v13->k_sch[7] = r;
  79368. ++ic;
  79369. v13->k_sch[8] = v5;
  79370. v13->k_sch[9] = tb;
  79371. v13 = (aes_ctx *)((char *)v13 + 20);
  79372. }
  79373. while ( ic < v15 );
  79374. }
  79375. goto LABEL_9;
  79376. case 6u:
  79377. tc = in_key[16] | (in_key[17] << 8) | (in_key[18] << 16) | (in_key[19] << 24);
  79378. cx_0->k_sch[4] = tc;
  79379. ub = in_key[20] | (in_key[21] << 8) | (in_key[22] << 16) | (in_key[23] << 24);
  79380. id = 0;
  79381. cx_0->k_sch[5] = ub;
  79382. if ( v15 > 0 )
  79383. {
  79384. v14 = cx_0;
  79385. do
  79386. {
  79387. p ^= rcon_tab[id] ^ fl_tab[3][(unsigned __int8)ub] ^ fl_tab[2][ub >> 24] ^ fl_tab[0][BYTE1(ub)] ^ fl_tab[1][BYTE2(ub)];
  79388. q ^= p;
  79389. r ^= q;
  79390. v5 ^= r;
  79391. tc ^= v5;
  79392. ub ^= tc;
  79393. v14->k_sch[6] = p;
  79394. v14->k_sch[7] = q;
  79395. v14->k_sch[8] = r;
  79396. v14->k_sch[10] = tc;
  79397. v14->k_sch[9] = v5;
  79398. v14->k_sch[11] = ub;
  79399. ++id;
  79400. v14 = (aes_ctx *)((char *)v14 + 24);
  79401. }
  79402. while ( id < v15 );
  79403. }
  79404. goto LABEL_9;
  79405. case 7u:
  79406. t = in_key[16] | (in_key[17] << 8) | (in_key[18] << 16) | (in_key[19] << 24);
  79407. cx_0->k_sch[4] = t;
  79408. u = in_key[20] | (in_key[21] << 8) | (in_key[22] << 16) | (in_key[23] << 24);
  79409. cx_0->k_sch[5] = u;
  79410. v = in_key[24] | (in_key[25] << 8) | (in_key[26] << 16) | (in_key[27] << 24);
  79411. cx_0->k_sch[6] = v;
  79412. i = 0;
  79413. for ( j = v15 > 0; j; j = i < v15 )
  79414. {
  79415. p ^= rcon_tab[i] ^ fl_tab[3][(unsigned __int8)v] ^ fl_tab[2][v >> 24] ^ fl_tab[0][BYTE1(v)] ^ fl_tab[1][BYTE2(v)];
  79416. q ^= p;
  79417. r ^= q;
  79418. v5 ^= r;
  79419. t ^= fl_tab[3][v5 >> 24] ^ fl_tab[2][BYTE2(v5)] ^ fl_tab[0][(unsigned __int8)v5] ^ fl_tab[1][BYTE1(v5)];
  79420. u ^= t;
  79421. v ^= u;
  79422. v4->k_sch[7] = p;
  79423. v4->k_sch[8] = q;
  79424. v4->k_sch[9] = r;
  79425. v4->k_sch[11] = t;
  79426. ++i;
  79427. v4->k_sch[10] = v5;
  79428. v4->k_sch[12] = u;
  79429. v4->k_sch[13] = v;
  79430. v4 = (aes_ctx *)((char *)v4 + 28);
  79431. }
  79432. goto LABEL_9;
  79433. case 8u:
  79434. ta = in_key[16] | (in_key[17] << 8) | (in_key[18] << 16) | (in_key[19] << 24);
  79435. cx_0->k_sch[4] = ta;
  79436. ua = in_key[20] | (in_key[21] << 8) | (in_key[22] << 16) | (in_key[23] << 24);
  79437. cx_0->k_sch[5] = ua;
  79438. va = in_key[24] | (in_key[25] << 8) | (in_key[26] << 16) | (in_key[27] << 24);
  79439. cx_0->k_sch[6] = va;
  79440. ia = 0;
  79441. v10 = in_key[28] | (in_key[29] << 8) | (in_key[30] << 16) | (in_key[31] << 24);
  79442. v11 = v15 > 0;
  79443. cx_0->k_sch[7] = v10;
  79444. while ( v11 )
  79445. {
  79446. p ^= rcon_tab[ia] ^ fl_tab[3][(unsigned __int8)v10] ^ fl_tab[2][v10 >> 24] ^ fl_tab[0][BYTE1(v10)] ^ fl_tab[1][BYTE2(v10)];
  79447. q ^= p;
  79448. r ^= q;
  79449. v5 ^= r;
  79450. ta ^= fl_tab[3][v5 >> 24] ^ fl_tab[2][BYTE2(v5)] ^ fl_tab[0][(unsigned __int8)v5] ^ fl_tab[1][BYTE1(v5)];
  79451. ua ^= ta;
  79452. va ^= ua;
  79453. v10 ^= va;
  79454. v4->k_sch[8] = p;
  79455. v4->k_sch[9] = q;
  79456. v4->k_sch[10] = r;
  79457. v4->k_sch[12] = ta;
  79458. ++ia;
  79459. v4->k_sch[11] = v5;
  79460. v4->k_sch[13] = ua;
  79461. v4->k_sch[14] = va;
  79462. v4->k_sch[15] = v10;
  79463. v4 = (aes_ctx *)((char *)v4 + 32);
  79464. v11 = ia < v15;
  79465. }
  79466. result = 1;
  79467. break;
  79468. default:
  79469. LABEL_9:
  79470. result = 1;
  79471. break;
  79472. }
  79473. return result;
  79474. }
  79475.  
  79476. //----- (080B8980) --------------------------------------------------------
  79477. aes_fret __cdecl aes_dec_key(const unsigned __int8 *in_key, unsigned int klen, aes_ctx *cx_0)
  79478. {
  79479. unsigned int v3; // eax
  79480. unsigned int v4; // edi
  79481. unsigned int v5; // eax
  79482. uint32_t v6; // eax
  79483. int v7; // edx
  79484. int v8; // ebx
  79485. unsigned int v9; // ebx
  79486. aes_ctx *v10; // esi
  79487. unsigned int i; // ebx
  79488. uint32_t v12; // edx
  79489. int v14; // ebx
  79490. int v15; // ebx
  79491. unsigned int v16; // ebx
  79492. aes_ctx *v17; // esi
  79493. unsigned int v18; // ebx
  79494. aes_ctx *v19; // ecx
  79495. int v20; // edx
  79496. unsigned int v21; // ebx
  79497. aes_ctx *v22; // ecx
  79498. int v23; // edx
  79499. unsigned int v24; // ebx
  79500. aes_ctx *v25; // ecx
  79501. unsigned int v26; // [esp+4h] [ebp-30h]
  79502. uint32_t w; // [esp+Ch] [ebp-28h]
  79503. uint32_t v; // [esp+10h] [ebp-24h]
  79504. int va; // [esp+10h] [ebp-24h]
  79505. int u; // [esp+14h] [ebp-20h]
  79506. int ua; // [esp+14h] [ebp-20h]
  79507. unsigned int ub; // [esp+14h] [ebp-20h]
  79508. uint32_t t; // [esp+18h] [ebp-1Ch]
  79509. uint32_t ta; // [esp+18h] [ebp-1Ch]
  79510. uint32_t tb; // [esp+18h] [ebp-1Ch]
  79511. uint32_t tc; // [esp+18h] [ebp-1Ch]
  79512. int r; // [esp+1Ch] [ebp-18h]
  79513. int q; // [esp+20h] [ebp-14h]
  79514. int p; // [esp+24h] [ebp-10h]
  79515.  
  79516. cx_0->n_blk = 26;
  79517. v3 = klen >> 2;
  79518. if ( klen >> 2 < 6 )
  79519. v3 = 6;
  79520. cx_0->n_rnd = v3 + 6;
  79521. p = *in_key | (in_key[1] << 8) | (in_key[2] << 16) | (in_key[3] << 24);
  79522. cx_0->k_sch[0] = p;
  79523. q = in_key[4] | (in_key[5] << 8) | (in_key[6] << 16) | (in_key[7] << 24);
  79524. cx_0->k_sch[1] = q;
  79525. r = in_key[8] | (in_key[9] << 8) | (in_key[10] << 16) | (in_key[11] << 24);
  79526. cx_0->k_sch[2] = r;
  79527. v4 = in_key[12] | (in_key[13] << 8) | (in_key[14] << 16) | (in_key[15] << 24);
  79528. v5 = klen >> 2;
  79529. cx_0->k_sch[3] = v4;
  79530. if ( klen >> 2 < 6 )
  79531. v5 = 6;
  79532. v6 = v5 + 6;
  79533. cx_0->n_rnd = v6;
  79534. v26 = (6 * v6 + 5) / (klen >> 2);
  79535. switch ( klen >> 2 )
  79536. {
  79537. case 4u:
  79538. v18 = 0;
  79539. if ( v26 > 0 )
  79540. {
  79541. v19 = cx_0;
  79542. do
  79543. {
  79544. p ^= rcon_tab[v18] ^ fl_tab[3][(unsigned __int8)v4] ^ fl_tab[2][v4 >> 24] ^ fl_tab[0][BYTE1(v4)] ^ fl_tab[1][BYTE2(v4)];
  79545. q ^= p;
  79546. r ^= q;
  79547. v4 ^= r;
  79548. v19->k_sch[4] = p;
  79549. ++v18;
  79550. v19->k_sch[5] = q;
  79551. v19->k_sch[6] = r;
  79552. v19->k_sch[7] = v4;
  79553. v19 = (aes_ctx *)((char *)v19 + 16);
  79554. }
  79555. while ( v18 < v26 );
  79556. }
  79557. break;
  79558. case 5u:
  79559. v20 = in_key[16] | (in_key[17] << 8) | (in_key[18] << 16) | (in_key[19] << 24);
  79560. cx_0->k_sch[4] = v20;
  79561. v21 = 0;
  79562. tb = v20;
  79563. if ( v26 > 0 )
  79564. {
  79565. v22 = cx_0;
  79566. do
  79567. {
  79568. p ^= rcon_tab[v21] ^ fl_tab[3][(unsigned __int8)tb] ^ fl_tab[2][tb >> 24] ^ fl_tab[0][BYTE1(tb)] ^ fl_tab[1][BYTE2(tb)];
  79569. q ^= p;
  79570. r ^= q;
  79571. v4 ^= r;
  79572. tb ^= v4;
  79573. v22->k_sch[5] = p;
  79574. v22->k_sch[6] = q;
  79575. ++v21;
  79576. v22->k_sch[7] = r;
  79577. v22->k_sch[8] = v4;
  79578. v22->k_sch[9] = tb;
  79579. v22 = (aes_ctx *)((char *)v22 + 20);
  79580. }
  79581. while ( v21 < v26 );
  79582. }
  79583. break;
  79584. case 6u:
  79585. v23 = in_key[16] | (in_key[17] << 8) | (in_key[18] << 16) | (in_key[19] << 24);
  79586. cx_0->k_sch[4] = v23;
  79587. tc = v23;
  79588. ub = in_key[20] | (in_key[21] << 8) | (in_key[22] << 16) | (in_key[23] << 24);
  79589. cx_0->k_sch[5] = ub;
  79590. v24 = 0;
  79591. if ( v26 > 0 )
  79592. {
  79593. v25 = cx_0;
  79594. do
  79595. {
  79596. p ^= rcon_tab[v24] ^ fl_tab[3][(unsigned __int8)ub] ^ fl_tab[2][ub >> 24] ^ fl_tab[0][BYTE1(ub)] ^ fl_tab[1][BYTE2(ub)];
  79597. q ^= p;
  79598. r ^= q;
  79599. v4 ^= r;
  79600. tc ^= v4;
  79601. ub ^= tc;
  79602. v25->k_sch[6] = p;
  79603. v25->k_sch[7] = q;
  79604. v25->k_sch[8] = r;
  79605. ++v24;
  79606. v25->k_sch[9] = v4;
  79607. v25->k_sch[10] = tc;
  79608. v25->k_sch[11] = ub;
  79609. v25 = (aes_ctx *)((char *)v25 + 24);
  79610. }
  79611. while ( v24 < v26 );
  79612. }
  79613. break;
  79614. case 7u:
  79615. v7 = in_key[16] | (in_key[17] << 8) | (in_key[18] << 16) | (in_key[19] << 24);
  79616. cx_0->k_sch[4] = v7;
  79617. t = v7;
  79618. u = in_key[20] | (in_key[21] << 8) | (in_key[22] << 16) | (in_key[23] << 24);
  79619. cx_0->k_sch[5] = u;
  79620. v8 = in_key[24] | (in_key[25] << 8) | (in_key[26] << 16) | (in_key[27] << 24);
  79621. v = v8;
  79622. cx_0->k_sch[6] = v8;
  79623. v9 = 0;
  79624. if ( v26 > 0 )
  79625. {
  79626. v10 = cx_0;
  79627. do
  79628. {
  79629. p ^= rcon_tab[v9] ^ fl_tab[3][(unsigned __int8)v] ^ fl_tab[2][v >> 24] ^ fl_tab[0][BYTE1(v)] ^ fl_tab[1][BYTE2(v)];
  79630. q ^= p;
  79631. r ^= q;
  79632. v4 ^= r;
  79633. t ^= fl_tab[3][v4 >> 24] ^ fl_tab[2][BYTE2(v4)] ^ fl_tab[0][(unsigned __int8)v4] ^ fl_tab[1][BYTE1(v4)];
  79634. u ^= t;
  79635. v ^= u;
  79636. v10->k_sch[7] = p;
  79637. v10->k_sch[8] = q;
  79638. v10->k_sch[9] = r;
  79639. v10->k_sch[11] = t;
  79640. ++v9;
  79641. v10->k_sch[10] = v4;
  79642. v10->k_sch[12] = u;
  79643. v10->k_sch[13] = v;
  79644. v10 = (aes_ctx *)((char *)v10 + 28);
  79645. }
  79646. while ( v9 < v26 );
  79647. }
  79648. break;
  79649. case 8u:
  79650. v14 = in_key[16] | (in_key[17] << 8) | (in_key[18] << 16) | (in_key[19] << 24);
  79651. cx_0->k_sch[4] = v14;
  79652. ta = v14;
  79653. ua = in_key[20] | (in_key[21] << 8) | (in_key[22] << 16) | (in_key[23] << 24);
  79654. cx_0->k_sch[5] = ua;
  79655. va = in_key[24] | (in_key[25] << 8) | (in_key[26] << 16) | (in_key[27] << 24);
  79656. cx_0->k_sch[6] = va;
  79657. v15 = in_key[28] | (in_key[29] << 8) | (in_key[30] << 16) | (in_key[31] << 24);
  79658. w = v15;
  79659. cx_0->k_sch[7] = v15;
  79660. v16 = 0;
  79661. if ( v26 > 0 )
  79662. {
  79663. v17 = cx_0;
  79664. do
  79665. {
  79666. p ^= rcon_tab[v16] ^ fl_tab[3][(unsigned __int8)w] ^ fl_tab[2][w >> 24] ^ fl_tab[0][BYTE1(w)] ^ fl_tab[1][BYTE2(w)];
  79667. q ^= p;
  79668. r ^= q;
  79669. v4 ^= r;
  79670. ta ^= fl_tab[3][v4 >> 24] ^ fl_tab[2][BYTE2(v4)] ^ fl_tab[0][(unsigned __int8)v4] ^ fl_tab[1][BYTE1(v4)];
  79671. ua ^= ta;
  79672. va ^= ua;
  79673. w ^= va;
  79674. v17->k_sch[8] = p;
  79675. v17->k_sch[9] = q;
  79676. v17->k_sch[10] = r;
  79677. v17->k_sch[12] = ta;
  79678. v17->k_sch[13] = ua;
  79679. ++v16;
  79680. v17->k_sch[11] = v4;
  79681. v17->k_sch[14] = va;
  79682. v17->k_sch[15] = w;
  79683. v17 = (aes_ctx *)((char *)v17 + 32);
  79684. }
  79685. while ( v16 < v26 );
  79686. }
  79687. break;
  79688. default:
  79689. break;
  79690. }
  79691. for ( i = 6; 6 * v6 > i; ++i )
  79692. {
  79693. v12 = cx_0->k_sch[i];
  79694. cx_0->k_sch[i] = im_tab[3][cx_0->k_sch[i] >> 24] ^ im_tab[2][(unsigned __int8)(cx_0->k_sch[i] >> 16)] ^ im_tab[0][(unsigned __int8)cx_0->k_sch[i]] ^ im_tab[1][BYTE1(v12)];
  79695. }
  79696. return 1;
  79697. }
  79698.  
  79699. //----- (080B9014) --------------------------------------------------------
  79700. void __cdecl CAPTCHA::FontFile::FontFile(CAPTCHA::FontFile *const this)
  79701. {
  79702. this->m_pGlyphBuf = 0;
  79703. this->m_pGlyphBufLength = 0;
  79704. memset(this, 0, 0x20u);
  79705. memset(this->m_allCode, 0, 0x80000u);
  79706. }
  79707.  
  79708. //----- (080B905C) --------------------------------------------------------
  79709. void __cdecl CAPTCHA::FontFile::FontFile(CAPTCHA::FontFile *const this)
  79710. {
  79711. this->m_pGlyphBuf = 0;
  79712. this->m_pGlyphBufLength = 0;
  79713. memset(this, 0, 0x20u);
  79714. memset(this->m_allCode, 0, 0x80000u);
  79715. }
  79716.  
  79717. //----- (080B90A4) --------------------------------------------------------
  79718. void __cdecl CAPTCHA::FontFile::release(CAPTCHA::FontFile *const this)
  79719. {
  79720. if ( this->m_pGlyphBuf )
  79721. {
  79722. operator delete[](this->m_pGlyphBuf);
  79723. this->m_pGlyphBuf = 0;
  79724. }
  79725. this->m_pGlyphBufLength = 0;
  79726. memset(this, 0, 0x20u);
  79727. memset(this->m_allCode, 0, 0x80000u);
  79728. }
  79729.  
  79730. //----- (080B90FC) --------------------------------------------------------
  79731. void __cdecl CAPTCHA::FontFile::~FontFile(CAPTCHA::FontFile *const this)
  79732. {
  79733. CAPTCHA::FontFile::release(this);
  79734. }
  79735.  
  79736. //----- (080B9108) --------------------------------------------------------
  79737. void __cdecl CAPTCHA::FontFile::~FontFile(CAPTCHA::FontFile *const this)
  79738. {
  79739. CAPTCHA::FontFile::release(this);
  79740. }
  79741.  
  79742. //----- (080B9114) --------------------------------------------------------
  79743. void __cdecl CAPTCHA::FontFile::createEmptyFile(CAPTCHA::FontFile *const this)
  79744. {
  79745. signed int v1; // eax
  79746.  
  79747. CAPTCHA::FontFile::release(this);
  79748. this->m_fileHead.dwMagicCode = 1179664707;
  79749. this->m_fileHead.nGlyphSize = 32;
  79750. this->m_fileHead.nPixelBits = 1;
  79751. this->m_fileHead.nGlyphBytes = 128;
  79752. v1 = 0;
  79753. do
  79754. {
  79755. this->m_allCode[v1].wCode = v1;
  79756. ++v1;
  79757. }
  79758. while ( v1 <= 0xFFFF );
  79759. }
  79760.  
  79761. //----- (080B9158) --------------------------------------------------------
  79762. unsigned __int16 __cdecl CAPTCHA::FontFile::getCodeFromIndex(const CAPTCHA::FontFile *const this, int index)
  79763. {
  79764. int v2; // ebx
  79765. const CAPTCHA::FontFile *v3; // eax
  79766. signed int v4; // ecx
  79767. unsigned __int16 *v5; // edx
  79768.  
  79769. v2 = index;
  79770. v3 = this;
  79771. if ( index < 0 || this->m_fileHead.nCodeCounts <= index )
  79772. return 0;
  79773. v4 = 0;
  79774. v5 = &this->m_allCode[0].nGlyphCounts;
  79775. while ( !*v5 )
  79776. {
  79777. LABEL_4:
  79778. ++v4;
  79779. v3 = (const CAPTCHA::FontFile *)((char *)v3 + 8);
  79780. v5 += 4;
  79781. if ( v4 > 0xFFFF )
  79782. return 0;
  79783. }
  79784. if ( v2 > 0 )
  79785. {
  79786. --v2;
  79787. goto LABEL_4;
  79788. }
  79789. return v3->m_allCode[0].wCode;
  79790. }
  79791.  
  79792. //----- (080B919C) --------------------------------------------------------
  79793. void __cdecl CAPTCHA::FontFile::_increseGlyphBuf(CAPTCHA::FontFile *const this)
  79794. {
  79795. int v1; // edx
  79796. int v2; // edi
  79797. void *v3; // esi
  79798. int v4; // eax
  79799.  
  79800. v1 = this->m_pGlyphBufLength;
  79801. if ( v1 < this->m_fileHead.nGlyphBytes * (this->m_fileHead.nGlyphCounts + 1) )
  79802. {
  79803. v2 = 2 * v1;
  79804. if ( !(2 * v1) )
  79805. v2 = 1024;
  79806. v3 = (void *)operator new[](v2);
  79807. memset(v3, 0, v2);
  79808. v4 = this->m_pGlyphBufLength;
  79809. if ( v4 > 0 )
  79810. memcpy(v3, this->m_pGlyphBuf, v4);
  79811. if ( this->m_pGlyphBuf )
  79812. operator delete[](this->m_pGlyphBuf);
  79813. this->m_pGlyphBuf = (unsigned __int8 *)v3;
  79814. this->m_pGlyphBufLength = v2;
  79815. }
  79816. }
  79817.  
  79818. //----- (080B922C) --------------------------------------------------------
  79819. void __cdecl CAPTCHA::FontFile::insertGlyph_rgb(CAPTCHA::FontFile *const this, unsigned __int16 code, const unsigned __int8 *pBitbuf, unsigned int lPitch)
  79820. {
  79821. ;
  79822. }
  79823.  
  79824. //----- (080B9234) --------------------------------------------------------
  79825. bool __cdecl CAPTCHA::FontFile::saveToFile(CAPTCHA::FontFile *const this, const char *szFileName)
  79826. {
  79827. FILE *v2; // edi
  79828. bool result; // al
  79829. int v4; // eax
  79830. CAPTCHA::FontFile::FONT_FILE_CODE *v5; // ebx
  79831. signed int v6; // esi
  79832.  
  79833. v2 = fopen(szFileName, "wb");
  79834. result = 0;
  79835. if ( v2 )
  79836. {
  79837. v4 = 8 * this->m_fileHead.nCodeCounts + 32;
  79838. this->m_fileHead.nCodeOffset = 32;
  79839. this->m_fileHead.nGlyphOffset = v4;
  79840. fwrite(this, 0x20u, 1u, v2);
  79841. v5 = this->m_allCode;
  79842. v6 = 0xFFFF;
  79843. do
  79844. {
  79845. while ( !v5->nGlyphCounts )
  79846. {
  79847. ++v5;
  79848. if ( --v6 < 0 )
  79849. goto LABEL_6;
  79850. }
  79851. fwrite(v5, 8u, 1u, v2);
  79852. ++v5;
  79853. --v6;
  79854. }
  79855. while ( v6 >= 0 );
  79856. LABEL_6:
  79857. fwrite(this->m_pGlyphBuf, 1u, this->m_fileHead.nGlyphCounts * this->m_fileHead.nGlyphBytes, v2);
  79858. fclose(v2);
  79859. result = 1;
  79860. }
  79861. return result;
  79862. }
  79863.  
  79864. //----- (080B92E0) --------------------------------------------------------
  79865. bool __cdecl CAPTCHA::FontFile::openFromFile(CAPTCHA::FontFile *const this, const char *szFileName)
  79866. {
  79867. signed int v2; // eax
  79868. FILE *v3; // edi
  79869. bool result; // al
  79870. unsigned __int16 *v5; // esi
  79871. int i; // ecx
  79872. int v7; // eax
  79873. int v8; // eax
  79874.  
  79875. CAPTCHA::FontFile::release(this);
  79876. v2 = 0;
  79877. do
  79878. {
  79879. this->m_allCode[v2].wCode = v2;
  79880. ++v2;
  79881. }
  79882. while ( v2 <= 0xFFFF );
  79883. v3 = fopen(szFileName, "rb");
  79884. result = 0;
  79885. if ( v3 )
  79886. {
  79887. fread(this, 0x20u, 1u, v3);
  79888. if ( this->m_fileHead.dwMagicCode == 1179664707 )
  79889. {
  79890. v5 = (unsigned __int16 *)operator new[](8 * this->m_fileHead.nCodeCounts);
  79891. fseek(v3, this->m_fileHead.nCodeOffset, 0);
  79892. fread(v5, 8u, this->m_fileHead.nCodeCounts, v3);
  79893. for ( i = 0; this->m_fileHead.nCodeCounts > i; ++i )
  79894. {
  79895. v7 = v5[4 * i];
  79896. *(_DWORD *)&this->m_allCode[v7].wCode = *(_DWORD *)&v5[4 * i];
  79897. this->m_allCode[v7].nGlyphIndex = *(_DWORD *)&v5[4 * i + 2];
  79898. }
  79899. if ( v5 )
  79900. operator delete[](v5);
  79901. v8 = this->m_fileHead.nGlyphCounts * this->m_fileHead.nGlyphBytes;
  79902. this->m_pGlyphBufLength = v8;
  79903. this->m_pGlyphBuf = (unsigned __int8 *)operator new[](v8);
  79904. fseek(v3, this->m_fileHead.nGlyphOffset, 0);
  79905. fread(this->m_pGlyphBuf, 1u, this->m_pGlyphBufLength, v3);
  79906. fclose(v3);
  79907. result = 1;
  79908. }
  79909. else
  79910. {
  79911. fclose(v3);
  79912. result = 0;
  79913. }
  79914. }
  79915. return result;
  79916. }
  79917.  
  79918. //----- (080B9400) --------------------------------------------------------
  79919. unsigned __int8 *__cdecl CAPTCHA::FontFile::getCodeGlyph(const CAPTCHA::FontFile *const this, unsigned __int16 code)
  79920. {
  79921. unsigned __int16 v2; // dx
  79922. unsigned __int8 *result; // eax
  79923. int v4; // esi
  79924.  
  79925. v2 = this->m_allCode[code].nGlyphCounts;
  79926. result = 0;
  79927. if ( v2 )
  79928. {
  79929. v4 = this->m_allCode[code].nGlyphIndex;
  79930. if ( v2 > 1u )
  79931. v4 += rand() % this->m_allCode[code].nGlyphCounts;
  79932. result = &this->m_pGlyphBuf[v4 * this->m_fileHead.nGlyphBytes];
  79933. }
  79934. return result;
  79935. }
  79936.  
  79937. //----- (080B9450) --------------------------------------------------------
  79938. void __cdecl CAPTCHA::Generator::Generator(_DWORD *a2)
  79939. {
  79940. *a2 = 0;
  79941. }
  79942.  
  79943. //----- (080B9460) --------------------------------------------------------
  79944. void __cdecl CAPTCHA::Generator::Generator(_DWORD *a2)
  79945. {
  79946. *a2 = 0;
  79947. }
  79948.  
  79949. //----- (080B9470) --------------------------------------------------------
  79950. void __cdecl CAPTCHA::Generator::~Generator(CAPTCHA::Generator *const this)
  79951. {
  79952. ;
  79953. }
  79954.  
  79955. //----- (080B9478) --------------------------------------------------------
  79956. void __cdecl CAPTCHA::Generator::~Generator(CAPTCHA::Generator *const this)
  79957. {
  79958. ;
  79959. }
  79960.  
  79961. //----- (080B9480) --------------------------------------------------------
  79962. signed int __cdecl CAPTCHA::Generator::setFontFile(const CAPTCHA::FontFile *pFontFile, const CAPTCHA::FontFile *pFontFilea)
  79963. {
  79964. signed int result; // eax
  79965.  
  79966. result = 0;
  79967. if ( pFontFilea )
  79968. {
  79969. if ( pFontFilea->m_fileHead.nCodeCounts )
  79970. {
  79971. pFontFile->m_fileHead.dwMagicCode = (unsigned int)pFontFilea;
  79972. result = 1;
  79973. }
  79974. }
  79975. return result;
  79976. }
  79977.  
  79978. //----- (080B94A0) --------------------------------------------------------
  79979. void __cdecl CAPTCHA::Generator::_adjustBlankInAnswer(CAPTCHA::Generator *const this, unsigned __int16 *answer)
  79980. {
  79981. signed int v2; // eax
  79982. signed int i; // edx
  79983.  
  79984. v2 = 0;
  79985. while ( answer[v2] != 32 )
  79986. {
  79987. if ( ++v2 > 2 )
  79988. return;
  79989. }
  79990. for ( i = v2; i <= 3; ++i )
  79991. answer[i] = answer[i + 1];
  79992. answer[3] = 32;
  79993. }
  79994.  
  79995. //----- (080B94D4) --------------------------------------------------------
  79996. void __cdecl CAPTCHA::Generator::_setPixel(CAPTCHA::Generator *const this, int x, int y, bool is_dot, CAPTCHA::CAPTCHA_DATA *const captchaData)
  79997. {
  79998. char *v5; // esi
  79999. unsigned int v6; // ecx
  80000.  
  80001. if ( (unsigned int)x <= 0x7F && y >= 0 && y <= 35 )
  80002. {
  80003. v5 = (char *)captchaData + 16 * y + 4 * (x >> 5);
  80004. v6 = ((unsigned int)(1 << (31 - x % 32)) >> 24) | (((1 << (31 - x % 32)) & 0xFF0000u) >> 8) | (((1 << (31 - x % 32)) & 0xFF00) << 8) | (1 << (31 - x % 32) << 24);
  80005. if ( is_dot )
  80006. *((_DWORD *)v5 + 8) |= v6;
  80007. else
  80008. *((_DWORD *)v5 + 8) &= ~v6;
  80009. }
  80010. }
  80011.  
  80012. //----- (080B955C) --------------------------------------------------------
  80013. void __cdecl CAPTCHA::Generator::_generatorAnswer(CAPTCHA::Generator *const this, CAPTCHA::CAPTCHA_DATA *const captchaData, bool withBlank)
  80014. {
  80015. int v3; // esi
  80016. signed int v4; // edi
  80017. signed int v5; // ebx
  80018. int v6; // edx
  80019. int v7; // eax
  80020. char v8; // cl
  80021. signed int v9; // ebx
  80022. char *v10; // esi
  80023. int answerIndex[16]; // [esp+10h] [ebp-58h]
  80024. char v12; // [esp+50h] [ebp-18h]
  80025.  
  80026. v3 = this->m_pFontFile->m_fileHead.nCodeCounts;
  80027. memset(answerIndex, 0, sizeof(answerIndex));
  80028. v4 = 0;
  80029. do
  80030. {
  80031. v5 = 0;
  80032. do
  80033. {
  80034. v6 = rand() % v3;
  80035. v7 = 0;
  80036. v8 = 0;
  80037. if ( v4 > 0 )
  80038. {
  80039. while ( answerIndex[v7] != v6 )
  80040. {
  80041. if ( ++v7 >= v4 )
  80042. goto LABEL_6;
  80043. }
  80044. v8 = 1;
  80045. }
  80046. LABEL_6:
  80047. ++v5;
  80048. }
  80049. while ( v8 && v5 <= 999 );
  80050. answerIndex[v4++] = v6;
  80051. }
  80052. while ( v4 <= 15 );
  80053. v9 = 0;
  80054. v10 = &v12;
  80055. do
  80056. {
  80057. captchaData->wAnswer0[v9] = CAPTCHA::FontFile::getCodeFromIndex(this->m_pFontFile, *((_DWORD *)v10 - 16));
  80058. captchaData->wAnswer1[v9] = CAPTCHA::FontFile::getCodeFromIndex(this->m_pFontFile, *((_DWORD *)v10 - 15));
  80059. captchaData->wAnswer2[v9] = CAPTCHA::FontFile::getCodeFromIndex(this->m_pFontFile, *((_DWORD *)v10 - 14));
  80060. captchaData->wAnswer3[v9++] = CAPTCHA::FontFile::getCodeFromIndex(this->m_pFontFile, *((_DWORD *)v10 - 13));
  80061. v10 += 16;
  80062. }
  80063. while ( v9 <= 3 );
  80064. if ( withBlank )
  80065. {
  80066. captchaData->wAnswer0[rand() % 4] = 32;
  80067. captchaData->wAnswer1[rand() % 4] = 32;
  80068. captchaData->wAnswer2[rand() % 4] = 32;
  80069. captchaData->wAnswer3[rand() % 4] = 32;
  80070. }
  80071. }
  80072.  
  80073. //----- (080B96C8) --------------------------------------------------------
  80074. bool __cdecl CAPTCHA::Generator::generatorImage(CAPTCHA::Generator *const this, CAPTCHA::CAPTCHA_DATA *const captchaData, bool addMask, bool addNoise, bool withBlank)
  80075. {
  80076. bool result; // al
  80077. unsigned int v6; // ST10_4
  80078. int v7; // eax
  80079. unsigned __int16 v8; // ax
  80080. int v9; // eax
  80081. signed int v10; // edx
  80082. int v11; // edi
  80083. unsigned int v12; // esi
  80084. signed int v13; // ebx
  80085. int v14; // edi
  80086. int v15; // ebx
  80087. int v16; // esi
  80088. int v17; // [esp+Ch] [ebp-28Ch]
  80089. int v18; // [esp+10h] [ebp-288h]
  80090. unsigned int v19; // [esp+14h] [ebp-284h]
  80091. int i; // [esp+18h] [ebp-280h]
  80092. unsigned __int8 *pTarget; // [esp+1Ch] [ebp-27Ch]
  80093. unsigned __int8 *pCodeGlyph; // [esp+20h] [ebp-278h]
  80094. int iCode; // [esp+24h] [ebp-274h]
  80095. int offsetX; // [esp+28h] [ebp-270h]
  80096. unsigned __int16 rightAnswer[4]; // [esp+38h] [ebp-260h]
  80097. unsigned __int8 maskTempBuf[576]; // [esp+40h] [ebp-258h]
  80098.  
  80099. result = 0;
  80100. if ( !this->m_pFontFile )
  80101. return result;
  80102. memset(captchaData, 0, 0x264u);
  80103. CAPTCHA::Generator::_generatorAnswer(this, captchaData, withBlank);
  80104. v6 = CAPTCHA::Generator::generatorImage(CAPTCHA::CAPTCHA_DATA &,bool,bool,bool)::s_totalCounts++;
  80105. srand(v6);
  80106. v7 = rand() % 4;
  80107. captchaData->nCorrectAnswer = v7;
  80108. *(_DWORD *)rightAnswer = 0;
  80109. *(_DWORD *)&rightAnswer[2] = 0;
  80110. switch ( v7 )
  80111. {
  80112. case 0:
  80113. *(_DWORD *)rightAnswer = *(_DWORD *)captchaData->wAnswer0;
  80114. v9 = *(_DWORD *)&captchaData->wAnswer0[2];
  80115. LABEL_17:
  80116. *(_DWORD *)&rightAnswer[2] = v9;
  80117. break;
  80118. case 1:
  80119. *(_DWORD *)rightAnswer = *(_DWORD *)captchaData->wAnswer1;
  80120. v9 = *(_DWORD *)&captchaData->wAnswer1[2];
  80121. goto LABEL_17;
  80122. case 2:
  80123. *(_DWORD *)rightAnswer = *(_DWORD *)captchaData->wAnswer2;
  80124. v9 = *(_DWORD *)&captchaData->wAnswer2[2];
  80125. goto LABEL_17;
  80126. case 3:
  80127. *(_DWORD *)rightAnswer = *(_DWORD *)captchaData->wAnswer3;
  80128. v9 = *(_DWORD *)&captchaData->wAnswer3[2];
  80129. goto LABEL_17;
  80130. }
  80131. offsetX = 0;
  80132. iCode = 0;
  80133. v17 = 0;
  80134. do
  80135. {
  80136. v8 = rightAnswer[iCode];
  80137. if ( v8 == 32 )
  80138. goto LABEL_8;
  80139. pCodeGlyph = CAPTCHA::FontFile::getCodeGlyph(this->m_pFontFile, v8);
  80140. if ( pCodeGlyph )
  80141. {
  80142. pTarget = &captchaData->imageBuf[offsetX / 8];
  80143. v11 = 0;
  80144. v19 = rand() % 20 - 10;
  80145. v18 = rand() % 20 + v17 - 10;
  80146. do
  80147. {
  80148. if ( v19 > 0x1F )
  80149. {
  80150. memset(pTarget, 0, 4u);
  80151. }
  80152. else
  80153. {
  80154. v12 = (*(_DWORD *)&pCodeGlyph[4 * v19] >> 24) | ((*(_DWORD *)&pCodeGlyph[4 * v19] & 0xFF0000u) >> 8) | ((*(_DWORD *)&pCodeGlyph[4 * v19] & 0xFF00) << 8) | (*(_DWORD *)&pCodeGlyph[4 * v19] << 24);
  80155. v13 = 0;
  80156. do
  80157. {
  80158. if ( (1 << (31 - v13)) & v12 )
  80159. CAPTCHA::Generator::_setPixel(this, v13 + v18, v11, 1, captchaData);
  80160. ++v13;
  80161. }
  80162. while ( v13 <= 31 );
  80163. }
  80164. ++v11;
  80165. ++v19;
  80166. pTarget += 16;
  80167. }
  80168. while ( v11 <= 35 );
  80169. LABEL_8:
  80170. offsetX += 32;
  80171. }
  80172. ++iCode;
  80173. v17 += 32;
  80174. }
  80175. while ( iCode <= 3 );
  80176. if ( withBlank )
  80177. {
  80178. CAPTCHA::Generator::_adjustBlankInAnswer(this, captchaData->wAnswer0);
  80179. CAPTCHA::Generator::_adjustBlankInAnswer(this, captchaData->wAnswer1);
  80180. CAPTCHA::Generator::_adjustBlankInAnswer(this, captchaData->wAnswer2);
  80181. CAPTCHA::Generator::_adjustBlankInAnswer(this, captchaData->wAnswer3);
  80182. }
  80183. if ( addNoise )
  80184. {
  80185. v14 = rand() % 100 + 60;
  80186. for ( i = 0; i < v14; ++i )
  80187. {
  80188. v15 = rand() % 128;
  80189. v16 = rand() % 36;
  80190. CAPTCHA::Generator::_setPixel(this, v15, v16, 1, captchaData);
  80191. if ( !(rand() & 3) )
  80192. CAPTCHA::Generator::_setPixel(this, v15 + 1, v16, 1, captchaData);
  80193. if ( !(rand() & 3) )
  80194. CAPTCHA::Generator::_setPixel(this, v15, v16 + 1, 1, captchaData);
  80195. if ( !(rand() & 3) )
  80196. CAPTCHA::Generator::_setPixel(this, v15 + 1, v16 + 1, 1, captchaData);
  80197. }
  80198. }
  80199. if ( !addMask )
  80200. return 1;
  80201. memset(maskTempBuf, 0, 0x240u);
  80202. CAPTCHA::Mask::generateRandomMask(maskTempBuf);
  80203. v10 = 0;
  80204. do
  80205. {
  80206. captchaData->imageBuf[v10] ^= ~maskTempBuf[v10];
  80207. ++v10;
  80208. }
  80209. while ( v10 <= 575 );
  80210. return 1;
  80211. }
  80212.  
  80213. //----- (080B9B68) --------------------------------------------------------
  80214. void __cdecl CAPTCHA::Mask::generateRandomMask(unsigned __int8 *pBitBuf)
  80215. {
  80216. signed int v1; // esi
  80217. char v2; // dl
  80218. bool v3; // bl
  80219. char v4; // al
  80220. char v5; // al
  80221. char v6; // al
  80222. unsigned __int8 *v7; // ebx
  80223. int v8; // edx
  80224. unsigned __int8 *v9; // ecx
  80225. int v10; // edi
  80226. char v11; // si
  80227. bool v12; // zf
  80228. bool v13; // sf
  80229. unsigned __int8 v14; // of
  80230. int v15; // eax
  80231. unsigned __int8 *v16; // esi
  80232. char *v17; // edx
  80233. int v18; // ebx
  80234. signed int v19; // eax
  80235. unsigned __int8 *v20; // esi
  80236. char *v21; // ebx
  80237. signed int v22; // edi
  80238. size_t v23; // ecx
  80239. int v24; // eax
  80240. unsigned __int8 *v25; // esi
  80241. unsigned __int8 *v26; // ebx
  80242. signed int v27; // ecx
  80243. signed int v28; // edx
  80244. int v29; // eax
  80245. int v30; // eax
  80246. int v31; // [esp+Ch] [ebp-12D0h]
  80247. int p; // [esp+10h] [ebp-12CCh]
  80248. int v33; // [esp+20h] [ebp-12BCh]
  80249. int randOffsetY; // [esp+28h] [ebp-12B4h]
  80250. int randOffsetX; // [esp+2Ch] [ebp-12B0h]
  80251. int n; // [esp+30h] [ebp-12ACh]
  80252. signed int v37; // [esp+34h] [ebp-12A8h]
  80253. signed int v38; // [esp+38h] [ebp-12A4h]
  80254. int randLength; // [esp+3Ch] [ebp-12A0h]
  80255. bool dic; // [esp+43h] [ebp-1299h]
  80256. char yBuf[128]; // [esp+44h] [ebp-1298h]
  80257. unsigned __int8 tempBuf[4608]; // [esp+C4h] [ebp-1218h]
  80258. char v43[24]; // [esp+12C4h] [ebp-18h]
  80259.  
  80260. memset(tempBuf, 0, 0x1200u);
  80261. memset(tempBuf, 0, 0x1200u);
  80262. memset(yBuf, 0, 0x80u);
  80263. yBuf[0] = rand() % 24 + 6;
  80264. v1 = 1;
  80265. do
  80266. {
  80267. v2 = *(&dic + v1);
  80268. do
  80269. {
  80270. v3 = v2 <= 17;
  80271. if ( rand() % 100 > 30 )
  80272. {
  80273. v2 = *(&dic + v1);
  80274. v4 = *(&dic + v1);
  80275. if ( v3 )
  80276. {
  80277. LABEL_5:
  80278. yBuf[v1] = v4 + 1;
  80279. v5 = yBuf[v1];
  80280. if ( v5 <= 5 )
  80281. goto LABEL_6;
  80282. goto LABEL_51;
  80283. }
  80284. }
  80285. else
  80286. {
  80287. v2 = *(&dic + v1);
  80288. v4 = *(&dic + v1);
  80289. if ( !v3 )
  80290. goto LABEL_5;
  80291. }
  80292. yBuf[v1] = v4 - 1;
  80293. v5 = yBuf[v1];
  80294. if ( v5 <= 5 )
  80295. {
  80296. LABEL_6:
  80297. yBuf[v1] = 5;
  80298. v5 = 5;
  80299. continue;
  80300. }
  80301. LABEL_51:
  80302. if ( v5 > 30 )
  80303. {
  80304. v5 = 31;
  80305. yBuf[v1] = 31;
  80306. }
  80307. }
  80308. while ( (unsigned __int8)(v5 - 6) > 0x18u );
  80309. ++v1;
  80310. }
  80311. while ( v1 <= 127 );
  80312. v6 = rand();
  80313. dic = (v6 & 1) == 0;
  80314. if ( v6 & 1 )
  80315. randLength = (36 - yBuf[0]) / 2;
  80316. else
  80317. randLength = yBuf[0] / 2;
  80318. v38 = 0;
  80319. do
  80320. {
  80321. v7 = &tempBuf[v38];
  80322. v8 = 0;
  80323. v9 = &tempBuf[v38];
  80324. do
  80325. {
  80326. while ( (unsigned int)(v38 - 5) > 0x76 )
  80327. {
  80328. ++v8;
  80329. *v9 = -1;
  80330. v7 += 128;
  80331. v9 += 128;
  80332. if ( v8 > 35 )
  80333. goto LABEL_21;
  80334. }
  80335. if ( dic )
  80336. {
  80337. v10 = yBuf[v38];
  80338. if ( v10 - randLength < v8 )
  80339. {
  80340. v11 = 0;
  80341. v14 = __OFSUB__(v10, v8);
  80342. v12 = v10 == v8;
  80343. v13 = v10 - v8 < 0;
  80344. goto LABEL_18;
  80345. }
  80346. }
  80347. else
  80348. {
  80349. v29 = yBuf[v38];
  80350. if ( v29 < v8 )
  80351. {
  80352. v30 = randLength + v29;
  80353. v11 = 0;
  80354. v14 = __OFSUB__(v30, v8);
  80355. v12 = v30 == v8;
  80356. v13 = v30 - v8 < 0;
  80357. LABEL_18:
  80358. if ( !((unsigned __int8)(v13 ^ v14) | v12) )
  80359. goto LABEL_20;
  80360. goto LABEL_19;
  80361. }
  80362. }
  80363. LABEL_19:
  80364. v11 = -1;
  80365. LABEL_20:
  80366. ++v8;
  80367. *v7 = v11;
  80368. v9 += 128;
  80369. v7 += 128;
  80370. }
  80371. while ( v8 <= 35 );
  80372. LABEL_21:
  80373. v15 = rand() % 4;
  80374. v13 = v15 + randLength - 19 < 0;
  80375. randLength = v15 + randLength - 1;
  80376. if ( !((unsigned __int8)(v13 ^ __OFSUB__(randLength, 18)) | (randLength == 18)) )
  80377. randLength = 18;
  80378. ++v38;
  80379. }
  80380. while ( v38 <= 127 );
  80381. v16 = pBitBuf;
  80382. v37 = 0;
  80383. v33 = 0;
  80384. do
  80385. {
  80386. *(_DWORD *)v16 = -1;
  80387. *((_DWORD *)v16 + 1) = -1;
  80388. *((_DWORD *)v16 + 2) = -1;
  80389. *((_DWORD *)v16 + 3) = -1;
  80390. p = 0;
  80391. v17 = &v43[v33];
  80392. do
  80393. {
  80394. v18 = 0;
  80395. v19 = 0;
  80396. do
  80397. {
  80398. if ( v17[v19 - 4608] )
  80399. v18 |= 1 << (7 - v19);
  80400. ++v19;
  80401. }
  80402. while ( v19 <= 7 );
  80403. v16[p] = v18;
  80404. v17 += 8;
  80405. ++p;
  80406. }
  80407. while ( p <= 15 );
  80408. ++v37;
  80409. v33 += 128;
  80410. v16 += 16;
  80411. }
  80412. while ( v37 <= 35 );
  80413. n = 0;
  80414. do
  80415. {
  80416. randOffsetX = rand() % 10 - 5;
  80417. v20 = tempBuf;
  80418. v21 = CAPTCHA::g_staticMask;
  80419. v22 = 0;
  80420. randOffsetY = rand() % 10 - 5;
  80421. do
  80422. {
  80423. while ( 1 )
  80424. {
  80425. *(_DWORD *)v20 = -1;
  80426. *((_DWORD *)v20 + 1) = -1;
  80427. *((_DWORD *)v20 + 2) = -1;
  80428. *((_DWORD *)v20 + 3) = -1;
  80429. if ( (unsigned int)(v22 + randOffsetY) <= 0x23 )
  80430. break;
  80431. ++v22;
  80432. v20 += 16;
  80433. v21 += 16;
  80434. if ( v22 > 35 )
  80435. goto LABEL_43;
  80436. }
  80437. v31 = randOffsetX;
  80438. if ( randOffsetX < 0 )
  80439. v31 = 0;
  80440. if ( randOffsetX <= 0 )
  80441. v23 = randOffsetX + 16;
  80442. else
  80443. v23 = 16 - randOffsetX;
  80444. v24 = randOffsetX;
  80445. if ( randOffsetX > 0 )
  80446. v24 = 0;
  80447. ++v22;
  80448. memcpy(&v20[v31], &v21[-v24], v23);
  80449. v20 += 16;
  80450. v21 += 16;
  80451. }
  80452. while ( v22 <= 35 );
  80453. LABEL_43:
  80454. v25 = pBitBuf;
  80455. v26 = tempBuf;
  80456. v27 = 0;
  80457. do
  80458. {
  80459. v28 = 0;
  80460. do
  80461. {
  80462. v25[v28] &= v26[v28];
  80463. ++v28;
  80464. }
  80465. while ( v28 <= 15 );
  80466. ++v27;
  80467. v25 += 16;
  80468. v26 += 16;
  80469. }
  80470. while ( v27 <= 35 );
  80471. ++n;
  80472. }
  80473. while ( n <= 1 );
  80474. }
  80475. // 80B9B68: using guessed type char var_18[24];
  80476.  
  80477. //----- (080B9FB4) --------------------------------------------------------
  80478. void __cdecl Seraph::Encrypt_1_S(char *memory, int len)
  80479. {
  80480. unsigned int v2; // ST18_4
  80481. int v3; // edx
  80482. int i; // ecx
  80483. int v5; // ebx
  80484. int key; // [esp+8h] [ebp-10h]
  80485.  
  80486. v2 = rand() << 16;
  80487. key = (unsigned __int16)rand() | v2;
  80488. v3 = key;
  80489. for ( i = 0; i < len; ++i )
  80490. {
  80491. v3 = 214013 * v3 + 2531011;
  80492. memory[i] ^= (unsigned __int8)(BYTE2(v3) + 2) ^ 0x26;
  80493. }
  80494. v5 = (*(_DWORD *)memory & 3) + 4;
  80495. if ( len > v5 )
  80496. memmove(&memory[v5 + 4], &memory[v5], len - v5);
  80497. *(_DWORD *)&memory[v5] = key;
  80498. }
  80499.  
  80500. //----- (080BA050) --------------------------------------------------------
  80501. void __cdecl Seraph::Encrypt_2_S(char *memory, int len)
  80502. {
  80503. int v2; // eax
  80504. int v3; // ebx
  80505. int v4; // esi
  80506. int v5; // ecx
  80507. char v6; // al
  80508. int v7; // [esp+0h] [ebp-10h]
  80509.  
  80510. v2 = *(_DWORD *)memory & 3;
  80511. v3 = 0;
  80512. v4 = v2 + 4;
  80513. v5 = *(_DWORD *)&memory[v2 + 4];
  80514. if ( len > 0 )
  80515. {
  80516. v7 = v2 + 8;
  80517. while ( 1 )
  80518. {
  80519. if ( v3 >= v4 && v7 > v3 )
  80520. goto LABEL_4;
  80521. v6 = memory[v3] ^ (((unsigned int)(193777 * v5 + 5781023) >> 16) - 1) ^ 0xCE;
  80522. v5 = 193777 * v5 + 5781023;
  80523. if ( v3 >= v4 )
  80524. {
  80525. memory[v3 - 4] = v6;
  80526. LABEL_4:
  80527. if ( ++v3 >= len )
  80528. return;
  80529. }
  80530. else
  80531. {
  80532. memory[v3++] = v6;
  80533. if ( v3 >= len )
  80534. return;
  80535. }
  80536. }
  80537. }
  80538. }
  80539.  
  80540. //----- (080BA0CC) --------------------------------------------------------
  80541. void __cdecl Seraph::StringEncrypt::StringEncrypt(int a2)
  80542. {
  80543. *(_DWORD *)a2 = off_80EAE60;
  80544. *(_BYTE *)(a2 + 4) = 0;
  80545. }
  80546. // 80EAE60: using guessed type _DWORD (__cdecl *off_80EAE60[2])(Seraph::StringEncrypt *this);
  80547.  
  80548. //----- (080BA0E0) --------------------------------------------------------
  80549. void __cdecl Seraph::StringEncrypt::StringEncrypt(int a2)
  80550. {
  80551. *(_DWORD *)a2 = off_80EAE60;
  80552. *(_BYTE *)(a2 + 4) = 0;
  80553. }
  80554. // 80EAE60: using guessed type _DWORD (__cdecl *off_80EAE60[2])(Seraph::StringEncrypt *this);
  80555.  
  80556. //----- (080BA0F4) --------------------------------------------------------
  80557. void __cdecl Seraph::StringEncrypt::~StringEncrypt(_DWORD *a2)
  80558. {
  80559. *a2 = off_80EAE60;
  80560. }
  80561. // 80EAE60: using guessed type _DWORD (__cdecl *off_80EAE60[2])(Seraph::StringEncrypt *this);
  80562.  
  80563. //----- (080BA104) --------------------------------------------------------
  80564. void __cdecl Seraph::StringEncrypt::~StringEncrypt(_DWORD *a2)
  80565. {
  80566. *a2 = off_80EAE60;
  80567. }
  80568. // 80EAE60: using guessed type _DWORD (__cdecl *off_80EAE60[2])(Seraph::StringEncrypt *this);
  80569.  
  80570. //----- (080BA114) --------------------------------------------------------
  80571. void __cdecl Seraph::StringEncrypt::~StringEncrypt(IPRegionTable *const a2)
  80572. {
  80573. a2->_vptr_IPRegionTable = (int (**)(...))off_80EAE60;
  80574. operator delete(a2);
  80575. }
  80576. // 80EAE60: using guessed type _DWORD (__cdecl *off_80EAE60[2])(Seraph::StringEncrypt *this);
  80577.  
  80578. //----- (080BA128) --------------------------------------------------------
  80579. void __cdecl Seraph::StringEncrypt::MakeKey(Seraph::StringEncrypt *const this, const char *key, const char *chain, int keylength, int blockSize)
  80580. {
  80581. int v5; // ecx
  80582. int v6; // edx
  80583. int v7; // eax
  80584. int v8; // edi
  80585. int i; // esi
  80586. int v10; // eax
  80587. int j; // edi
  80588. int k; // esi
  80589. int v13; // eax
  80590. int v14; // edi
  80591. int *v15; // esi
  80592. const char *v16; // ebx
  80593. int v17; // eax
  80594. unsigned __int8 *v18; // ebx
  80595. int v19; // edx
  80596. int v20; // eax
  80597. int *v21; // ecx
  80598. int v22; // eax
  80599. int v23; // esi
  80600. int v24; // ebx
  80601. int v25; // edi
  80602. int v26; // ecx
  80603. int v27; // ebx
  80604. signed int v28; // edi
  80605. int v29; // esi
  80606. signed int v30; // edx
  80607. int v31; // eax
  80608. int v32; // esi
  80609. bool l; // sf
  80610. unsigned __int8 v34; // of
  80611. int v35; // ebx
  80612. int v36; // edi
  80613. int v37; // ecx
  80614. int v38; // esi
  80615. int v39; // edi
  80616. int v40; // ecx
  80617. int v41; // ebx
  80618. int v42; // eax
  80619. int v43; // edx
  80620. int v44; // eax
  80621. bool v45; // al
  80622. signed int v46; // edi
  80623. int v47; // esi
  80624. signed int v48; // edx
  80625. int v49; // eax
  80626. int v50; // ebx
  80627. signed int v51; // esi
  80628. signed int v52; // edi
  80629. signed int v53; // edx
  80630. int v54; // eax
  80631. _DWORD *v55; // eax
  80632. int v56; // [esp+Ch] [ebp-2Ch]
  80633. int v57; // [esp+Ch] [ebp-2Ch]
  80634. int r; // [esp+10h] [ebp-28h]
  80635. int rconpointer; // [esp+14h] [ebp-24h]
  80636. int t; // [esp+18h] [ebp-20h]
  80637. int KC; // [esp+1Ch] [ebp-1Ch]
  80638. int ROUND_KEY_COUNT; // [esp+20h] [ebp-18h]
  80639. int BC; // [esp+24h] [ebp-14h]
  80640.  
  80641. if ( !key )
  80642. {
  80643. v55 = (_DWORD *)__cxa_allocate_exception(4);
  80644. *v55 = 1;
  80645. goto LABEL_55;
  80646. }
  80647. if ( keylength != 16 && keylength != 24 && keylength != 32 )
  80648. {
  80649. v55 = (_DWORD *)__cxa_allocate_exception(4);
  80650. *v55 = 2;
  80651. goto LABEL_55;
  80652. }
  80653. if ( blockSize != 16 && blockSize != 24 && blockSize != 32 )
  80654. {
  80655. v55 = (_DWORD *)__cxa_allocate_exception(4);
  80656. *v55 = 3;
  80657. LABEL_55:
  80658. __cxa_throw(v55, &`typeinfo for'int, 0, v56);
  80659. }
  80660. this->m_keylength = keylength;
  80661. this->m_blockSize = blockSize;
  80662. memcpy(this->m_chain0, chain, blockSize);
  80663. memcpy(this->m_chain, chain, this->m_blockSize);
  80664. v5 = this->m_keylength;
  80665. if ( v5 == 16 )
  80666. {
  80667. v43 = this->m_blockSize;
  80668. v44 = 10;
  80669. if ( v43 == 16 )
  80670. goto LABEL_46;
  80671. v45 = v43 != 24;
  80672. LABEL_45:
  80673. v44 = 2 * v45 + 12;
  80674. LABEL_46:
  80675. this->m_iROUNDS = v44;
  80676. v7 = v43;
  80677. if ( v43 >= 0 )
  80678. goto LABEL_11;
  80679. LABEL_47:
  80680. v7 += 3;
  80681. goto LABEL_11;
  80682. }
  80683. if ( v5 == 24 )
  80684. {
  80685. v43 = this->m_blockSize;
  80686. v45 = v43 == 32;
  80687. goto LABEL_45;
  80688. }
  80689. v6 = this->m_blockSize;
  80690. this->m_iROUNDS = 14;
  80691. v7 = v6;
  80692. if ( v6 < 0 )
  80693. goto LABEL_47;
  80694. LABEL_11:
  80695. v8 = 0;
  80696. BC = v7 >> 2;
  80697. v57 = this->m_iROUNDS;
  80698. if ( v57 >= 0 )
  80699. {
  80700. do
  80701. {
  80702. for ( i = 0; i < BC; this->m_Ke[0][v10] = 0 )
  80703. v10 = 8 * v8 + i++;
  80704. ++v8;
  80705. }
  80706. while ( v57 >= v8 );
  80707. for ( j = 0; v57 >= j; ++j )
  80708. {
  80709. for ( k = 0; k < BC; this->m_Kd[0][v13] = 0 )
  80710. v13 = 8 * j + k++;
  80711. }
  80712. }
  80713. ROUND_KEY_COUNT = BC * (v57 + 1);
  80714. v14 = 0;
  80715. v15 = this->tk;
  80716. KC = v5 / 4;
  80717. v16 = key;
  80718. if ( v5 / 4 > 0 )
  80719. {
  80720. do
  80721. {
  80722. v17 = *(unsigned __int8 *)v16 << 24;
  80723. *v15 = v17;
  80724. v18 = (unsigned __int8 *)(v16 + 1);
  80725. v19 = v17 | (*v18 << 16);
  80726. *v15 = v19;
  80727. v20 = v19 | (*++v18 << 8);
  80728. *v15 = v20;
  80729. ++v18;
  80730. ++v14;
  80731. v21 = v15;
  80732. v22 = *v18 | v20;
  80733. ++v15;
  80734. v16 = (const char *)(v18 + 1);
  80735. *v21 = v22;
  80736. }
  80737. while ( v14 < KC );
  80738. v57 = this->m_iROUNDS;
  80739. }
  80740. v23 = 0;
  80741. for ( t = 0; v23 < KC && t < ROUND_KEY_COUNT; this->m_Kd[0][v24 + 8 * (v57 - v25)] = v26 )
  80742. {
  80743. v24 = t % BC;
  80744. v25 = t / BC;
  80745. v26 = this->tk[v23];
  80746. this->m_Ke[0][t % BC + 8 * (t / BC)] = v26;
  80747. ++v23;
  80748. ++t;
  80749. }
  80750. rconpointer = 0;
  80751. LABEL_27:
  80752. while ( t < ROUND_KEY_COUNT )
  80753. {
  80754. v27 = *(_DWORD *)&this->m_chain[4 * KC + 28];
  80755. this->tk[0] ^= ((unsigned __int8)Seraph::StringEncrypt::sm_rcon[rconpointer++] << 24) ^ (unsigned __int8)Seraph::StringEncrypt::sm_S[*(_DWORD *)&this->m_chain[4 * KC + 28] >> 24] ^ ((unsigned __int8)Seraph::StringEncrypt::sm_S[(unsigned __int8)*(_DWORD *)&this->m_chain[4 * KC + 28]] << 8) ^ ((unsigned __int8)Seraph::StringEncrypt::sm_S[BYTE1(v27)] << 16) ^ ((unsigned __int8)Seraph::StringEncrypt::sm_S[(unsigned __int8)this->m_chain[4 * KC + 30]] << 24);
  80756. if ( KC == 8 )
  80757. {
  80758. v46 = 1;
  80759. v47 = 0;
  80760. do
  80761. {
  80762. v48 = v46;
  80763. v49 = this->tk[v47];
  80764. ++v46;
  80765. ++v47;
  80766. this->tk[v48] ^= v49;
  80767. }
  80768. while ( v46 < 4 );
  80769. v50 = this->tk[3];
  80770. this->tk[4] ^= ((unsigned __int8)Seraph::StringEncrypt::sm_S[(unsigned int)this->tk[3] >> 24] << 24) ^ ((unsigned __int8)Seraph::StringEncrypt::sm_S[(this->tk[3] >> 16) & 0xFF] << 16) ^ ((unsigned __int8)Seraph::StringEncrypt::sm_S[BYTE1(v50)] << 8) ^ (unsigned __int8)Seraph::StringEncrypt::sm_S[(unsigned __int8)this->tk[3]];
  80771. v51 = 4;
  80772. v52 = 5;
  80773. do
  80774. {
  80775. v53 = v52;
  80776. v54 = this->tk[v51];
  80777. ++v52;
  80778. ++v51;
  80779. this->tk[v53] ^= v54;
  80780. }
  80781. while ( v52 < 8 );
  80782. }
  80783. else
  80784. {
  80785. v28 = 1;
  80786. v29 = 0;
  80787. while ( v28 < KC )
  80788. {
  80789. v30 = v28;
  80790. v31 = this->tk[v29];
  80791. ++v28;
  80792. ++v29;
  80793. this->tk[v30] ^= v31;
  80794. }
  80795. }
  80796. v32 = 0;
  80797. if ( KC > 0 )
  80798. {
  80799. v34 = __OFSUB__(t, ROUND_KEY_COUNT);
  80800. for ( l = t - ROUND_KEY_COUNT < 0; l ^ v34; l = t - ROUND_KEY_COUNT < 0 )
  80801. {
  80802. v35 = t % BC;
  80803. v36 = t / BC;
  80804. v37 = this->tk[v32];
  80805. this->m_Ke[0][t % BC + 8 * (t / BC)] = v37;
  80806. ++v32;
  80807. ++t;
  80808. this->m_Kd[0][v35 + 8 * (v57 - v36)] = v37;
  80809. if ( v32 >= KC )
  80810. goto LABEL_27;
  80811. v34 = __OFSUB__(t, ROUND_KEY_COUNT);
  80812. }
  80813. break;
  80814. }
  80815. }
  80816. for ( r = 1; v57 > r; ++r )
  80817. {
  80818. v38 = 0;
  80819. if ( BC > 0 )
  80820. {
  80821. v39 = 8 * r;
  80822. do
  80823. {
  80824. v40 = v39 + v38;
  80825. v41 = this->m_Kd[0][v39 + v38];
  80826. v42 = Seraph::StringEncrypt::sm_U3[BYTE1(v41)] ^ Seraph::StringEncrypt::sm_U1[(unsigned int)this->m_Kd[0][v39 + v38] >> 24] ^ Seraph::StringEncrypt::sm_U2[(this->m_Kd[0][v39 + v38] >> 16) & 0xFF];
  80827. ++v38;
  80828. this->m_Kd[0][v40] = Seraph::StringEncrypt::sm_U4[(unsigned __int8)v41] ^ v42;
  80829. }
  80830. while ( v38 < BC );
  80831. }
  80832. }
  80833. this->m_bKeyInit = 1;
  80834. }
  80835. // 8049DA8: using guessed type int __cdecl __cxa_allocate_exception(_DWORD);
  80836. // 804A1C8: using guessed type int __stdcall __cxa_throw(_DWORD, _DWORD, _DWORD, _DWORD);
  80837.  
  80838. //----- (080BA5E0) --------------------------------------------------------
  80839. void __cdecl Seraph::StringEncrypt::DefDecryptBlock(Seraph::StringEncrypt *const this, const char *in, char *result)
  80840. {
  80841. unsigned int v3; // edi
  80842. int v4; // ebx
  80843. int v5; // ecx
  80844. int v6; // edx
  80845. int v7; // edi
  80846. int v8; // ST14_4
  80847. int v9; // ebx
  80848. int v10; // ebx
  80849. int v11; // ebx
  80850. int v12; // ebx
  80851. _DWORD *v13; // eax
  80852. int v14; // [esp-4h] [ebp-2Ch]
  80853. int *v15; // [esp+0h] [ebp-28h]
  80854. int v16; // [esp+4h] [ebp-24h]
  80855. int r; // [esp+8h] [ebp-20h]
  80856. unsigned int t2; // [esp+Ch] [ebp-1Ch]
  80857. int t1; // [esp+10h] [ebp-18h]
  80858. int t0; // [esp+14h] [ebp-14h]
  80859.  
  80860. if ( !this->m_bKeyInit )
  80861. {
  80862. v13 = (_DWORD *)__cxa_allocate_exception(4);
  80863. *v13 = 1;
  80864. __cxa_throw(v13, &`typeinfo for'int, 0, v14);
  80865. }
  80866. t0 = this->m_Kd[0][0] ^ _byteswap_ulong(*(_DWORD *)in);
  80867. t1 = this->m_Kd[0][1] ^ _byteswap_ulong(*((_DWORD *)in + 1));
  80868. t2 = this->m_Kd[0][2] ^ _byteswap_ulong(*((_DWORD *)in + 2));
  80869. v3 = this->m_Kd[0][3] ^ _byteswap_ulong(*((_DWORD *)in + 3));
  80870. v16 = this->m_iROUNDS;
  80871. r = 1;
  80872. if ( v16 > 1 )
  80873. {
  80874. v15 = &this->m_Ke[0][6];
  80875. do
  80876. {
  80877. v4 = Seraph::StringEncrypt::sm_T8[(unsigned __int8)t1] ^ Seraph::StringEncrypt::sm_T7[BYTE1(t2)] ^ Seraph::StringEncrypt::sm_T5[(unsigned int)t0 >> 24] ^ Seraph::StringEncrypt::sm_T6[((signed int)v3 >> 16) & 0xFF];
  80878. v5 = Seraph::StringEncrypt::sm_T8[(unsigned __int8)t2] ^ Seraph::StringEncrypt::sm_T7[BYTE1(v3)] ^ Seraph::StringEncrypt::sm_T5[(unsigned int)t1 >> 24] ^ Seraph::StringEncrypt::sm_T6[(t0 >> 16) & 0xFF];
  80879. v6 = Seraph::StringEncrypt::sm_T8[(unsigned __int8)v3] ^ Seraph::StringEncrypt::sm_T7[BYTE1(t0)] ^ Seraph::StringEncrypt::sm_T5[t2 >> 24] ^ Seraph::StringEncrypt::sm_T6[(t1 >> 16) & 0xFF];
  80880. v7 = Seraph::StringEncrypt::sm_T8[(unsigned __int8)t0] ^ Seraph::StringEncrypt::sm_T7[BYTE1(t1)] ^ Seraph::StringEncrypt::sm_T6[BYTE2(t2)] ^ Seraph::StringEncrypt::sm_T5[v3 >> 24];
  80881. t0 = v15[122] ^ v4;
  80882. t1 = v15[123] ^ v5;
  80883. ++r;
  80884. t2 = v15[124] ^ v6;
  80885. v3 = v15[125] ^ v7;
  80886. v15 += 8;
  80887. }
  80888. while ( v16 > r );
  80889. }
  80890. v8 = v16;
  80891. v9 = this->m_Kd[v8][0];
  80892. *result = Seraph::StringEncrypt::sm_Si[(unsigned int)t0 >> 24] ^ ((unsigned int)this->m_Kd[v8][0] >> 24);
  80893. result[1] = BYTE2(v9) ^ Seraph::StringEncrypt::sm_Si[((signed int)v3 >> 16) & 0xFF];
  80894. result[2] = Seraph::StringEncrypt::sm_Si[BYTE1(t2)] ^ BYTE1(v9);
  80895. result[3] = v9 ^ Seraph::StringEncrypt::sm_Si[(unsigned __int8)t1];
  80896. v10 = this->m_Kd[v8][1];
  80897. result[4] = Seraph::StringEncrypt::sm_Si[(unsigned int)t1 >> 24] ^ ((unsigned int)this->m_Kd[v8][1] >> 24);
  80898. result[5] = BYTE2(v10) ^ Seraph::StringEncrypt::sm_Si[(t0 >> 16) & 0xFF];
  80899. result[6] = Seraph::StringEncrypt::sm_Si[BYTE1(v3)] ^ BYTE1(v10);
  80900. result[7] = v10 ^ Seraph::StringEncrypt::sm_Si[(unsigned __int8)t2];
  80901. v11 = this->m_Kd[v8][2];
  80902. result[8] = Seraph::StringEncrypt::sm_Si[t2 >> 24] ^ ((unsigned int)this->m_Kd[v8][2] >> 24);
  80903. result[9] = BYTE2(v11) ^ Seraph::StringEncrypt::sm_Si[(t1 >> 16) & 0xFF];
  80904. result[10] = Seraph::StringEncrypt::sm_Si[BYTE1(t0)] ^ BYTE1(v11);
  80905. result[11] = v11 ^ Seraph::StringEncrypt::sm_Si[(unsigned __int8)v3];
  80906. v12 = this->m_Kd[v8][3];
  80907. result[12] = Seraph::StringEncrypt::sm_Si[v3 >> 24] ^ ((unsigned int)this->m_Kd[v8][3] >> 24);
  80908. result[13] = Seraph::StringEncrypt::sm_Si[BYTE2(t2)] ^ BYTE2(v12);
  80909. result[14] = Seraph::StringEncrypt::sm_Si[BYTE1(t1)] ^ BYTE1(v12);
  80910. result[15] = v12 ^ Seraph::StringEncrypt::sm_Si[(unsigned __int8)t0];
  80911. }
  80912. // 8049DA8: using guessed type int __cdecl __cxa_allocate_exception(_DWORD);
  80913. // 804A1C8: using guessed type int __stdcall __cxa_throw(_DWORD, _DWORD, _DWORD, _DWORD);
  80914.  
  80915. //----- (080BA98C) --------------------------------------------------------
  80916. void __cdecl Seraph::StringEncrypt::DecryptBlock(Seraph::StringEncrypt *const this, const char *in, char *result)
  80917. {
  80918. const char *v3; // esi
  80919. int v4; // eax
  80920. int v5; // ebx
  80921. int v6; // eax
  80922. _DWORD *v7; // eax
  80923. int v8; // edi
  80924. int *v9; // ecx
  80925. int v10; // edx
  80926. unsigned __int8 *v11; // esi
  80927. int v12; // eax
  80928. int v13; // edx
  80929. int v14; // eax
  80930. int v15; // eax
  80931. int v16; // edi
  80932. int *v17; // esi
  80933. int v18; // ST1C_4
  80934. int v19; // edi
  80935. int v20; // esi
  80936. int v21; // ecx
  80937. int v22; // esi
  80938. char v23; // al
  80939. _DWORD *v24; // eax
  80940. int v25; // [esp-4h] [ebp-4Ch]
  80941. int r; // [esp+20h] [ebp-28h]
  80942. int *pi; // [esp+24h] [ebp-24h]
  80943. int s3; // [esp+28h] [ebp-20h]
  80944. int s2; // [esp+2Ch] [ebp-1Ch]
  80945. int s1; // [esp+30h] [ebp-18h]
  80946.  
  80947. v3 = in;
  80948. if ( !this->m_bKeyInit )
  80949. {
  80950. v24 = (_DWORD *)__cxa_allocate_exception(4);
  80951. *v24 = 1;
  80952. __cxa_throw(v24, &`typeinfo for'int, 0, v25);
  80953. }
  80954. v4 = this->m_blockSize;
  80955. if ( v4 == 16 )
  80956. {
  80957. Seraph::StringEncrypt::DefDecryptBlock(this, in, result);
  80958. }
  80959. else
  80960. {
  80961. v5 = v4 / 4;
  80962. v6 = 0;
  80963. if ( v5 != 4 )
  80964. v6 = (v5 != 6) + 1;
  80965. v7 = (_DWORD *)(32 * v6);
  80966. s3 = v7[33795007];
  80967. v8 = 0;
  80968. s1 = v7[33795003];
  80969. s2 = v7[33795005];
  80970. pi = this->t;
  80971. while ( v8 < v5 )
  80972. {
  80973. v9 = pi;
  80974. v10 = *(unsigned __int8 *)v3 << 24;
  80975. *pi = v10;
  80976. v11 = (unsigned __int8 *)(v3 + 1);
  80977. v12 = v10 | (*v11 << 16);
  80978. *pi = v12;
  80979. v13 = v12 | (*++v11 << 8);
  80980. *pi = v13;
  80981. ++v11;
  80982. ++pi;
  80983. v14 = v13 | *v11;
  80984. *v9 = v14;
  80985. v3 = (const char *)(v11 + 1);
  80986. *v9 = this->m_Kd[0][v8++] ^ v14;
  80987. }
  80988. v15 = this->m_iROUNDS;
  80989. for ( r = 1; v15 > r; v15 = this->m_iROUNDS )
  80990. {
  80991. v16 = 0;
  80992. if ( v5 > 0 )
  80993. {
  80994. v17 = this->a;
  80995. do
  80996. {
  80997. v18 = v17[8 * r - 147] ^ Seraph::StringEncrypt::sm_T8[LOBYTE(this->t[(v16 + s3) % v5])] ^ Seraph::StringEncrypt::sm_T7[BYTE1(this->t[(v16 + s2) % v5])] ^ Seraph::StringEncrypt::sm_T5[*((unsigned __int8 *)v17 + 35)] ^ Seraph::StringEncrypt::sm_T6[BYTE2(this->t[(v16 + s1) % v5])];
  80998. ++v16;
  80999. *v17 = v18;
  81000. ++v17;
  81001. }
  81002. while ( v16 < v5 );
  81003. }
  81004. qmemcpy(this->t, this->a, 4 * ((unsigned int)(4 * v5) >> 2));
  81005. ++r;
  81006. }
  81007. v19 = 0;
  81008. v20 = 0;
  81009. if ( v5 > 0 )
  81010. {
  81011. while ( 1 )
  81012. {
  81013. v21 = this->m_Kd[0][v19 + 8 * v15];
  81014. result[v20] = Seraph::StringEncrypt::sm_Si[HIBYTE(this->t[v19])] ^ ((unsigned int)this->m_Kd[0][v19 + 8 * v15] >> 24);
  81015. v22 = v20 + 1;
  81016. result[v22++] = Seraph::StringEncrypt::sm_Si[BYTE2(this->t[(v19 + s1) % v5])] ^ BYTE2(v21);
  81017. result[v22] = Seraph::StringEncrypt::sm_Si[BYTE1(this->t[(v19 + s2) % v5])] ^ BYTE1(v21);
  81018. v23 = Seraph::StringEncrypt::sm_Si[LOBYTE(this->t[(v19 + s3) % v5])];
  81019. ++v22;
  81020. ++v19;
  81021. result[v22] = v21 ^ v23;
  81022. v20 = v22 + 1;
  81023. if ( v19 >= v5 )
  81024. break;
  81025. v15 = this->m_iROUNDS;
  81026. }
  81027. }
  81028. }
  81029. }
  81030. // 8049DA8: using guessed type int __cdecl __cxa_allocate_exception(_DWORD);
  81031. // 804A1C8: using guessed type int __stdcall __cxa_throw(_DWORD, _DWORD, _DWORD, _DWORD);
  81032.  
  81033. //----- (080BAC44) --------------------------------------------------------
  81034. void __cdecl Seraph::Hex2Char(const char *szHex, unsigned __int8 *const rch)
  81035. {
  81036. int v2; // edx
  81037. signed int v3; // ecx
  81038. int v4; // eax
  81039.  
  81040. v3 = 0;
  81041. *rch = 0;
  81042. while ( 1 )
  81043. {
  81044. LOBYTE(v2) = szHex[v3];
  81045. if ( (unsigned __int8)(v2 - 48) > 9u )
  81046. break;
  81047. v4 = v2 + 16 * *rch - 48;
  81048. LABEL_4:
  81049. ++v3;
  81050. *rch = v4;
  81051. if ( v3 > 1 )
  81052. return;
  81053. }
  81054. if ( (unsigned __int8)(v2 - 65) <= 5u )
  81055. {
  81056. v4 = v2 + 16 * *rch - 55;
  81057. goto LABEL_4;
  81058. }
  81059. }
  81060.  
  81061. //----- (080BAC88) --------------------------------------------------------
  81062. void __cdecl Seraph::HexStr2CharStr(const char *pszHexStr, unsigned __int8 *pucCharStr, int iSize)
  81063. {
  81064. int v3; // ecx
  81065. int v4; // esi
  81066. const char *v5; // ebx
  81067. int v6; // [esp-2h] [ebp-10h]
  81068.  
  81069. v4 = 0;
  81070. v6 = v3;
  81071. if ( iSize > 0 )
  81072. {
  81073. v5 = pszHexStr;
  81074. do
  81075. {
  81076. Seraph::Hex2Char(v5, (unsigned __int8 *const )&v6 + 3);
  81077. pucCharStr[v4++] = HIBYTE(v6);
  81078. v5 += 2;
  81079. }
  81080. while ( v4 < iSize );
  81081. }
  81082. }
  81083.  
  81084. //----- (080BACC0) --------------------------------------------------------
  81085. void __cdecl Seraph::string2pwd(const char *pIn, char *pOut)
  81086. {
  81087. char buf[17]; // [esp+0h] [ebp-4B8h]
  81088. Seraph::StringEncrypt oRijndael; // [esp+20h] [ebp-498h]
  81089.  
  81090. Seraph::StringEncrypt::StringEncrypt((int)&oRijndael);
  81091. Seraph::StringEncrypt::MakeKey(&oRijndael, "myningningbaobei", Seraph::StringEncrypt::sm_chain0, 16, 16);
  81092. memset(buf, 0, 0x10u);
  81093. buf[16] = 0;
  81094. Seraph::HexStr2CharStr(pIn, (unsigned __int8 *)buf, 16);
  81095. memset(pOut, 0, 0x10u);
  81096. pOut[16] = 0;
  81097. Seraph::StringEncrypt::DecryptBlock(&oRijndael, buf, pOut);
  81098. Seraph::StringEncrypt::~StringEncrypt(&oRijndael);
  81099. }
  81100.  
  81101. //----- (080BAD78) --------------------------------------------------------
  81102. unsigned int __cdecl Seraph::CRC_Get(unsigned int nc, unsigned int ne, unsigned int nca, int a7, unsigned int nea)
  81103. {
  81104. unsigned int v8; // ebx
  81105.  
  81106. v8 = 3 * ne + 2 * nc + 5 * a7 + 4 * nca + 6 * nea;
  81107. return (v8 + 1170870856) ^ (nea + v8 + 9 - 1143017044) ^ (a7 + v8 + 9 + 2003195307) ^ (nca + v8 + 9 - 46978591) ^ (ne + v8 + 9 + 846266141) ^ (v8 + 9 + nc);
  81108. }
  81109.  
  81110. //----- (080BADE0) --------------------------------------------------------
  81111. void __cdecl Seraph::doMotherCheck(unsigned int uRunTime, char *szCheckValue)
  81112. {
  81113. bool v2; // zf
  81114. _DWORD *v3; // eax
  81115. int v4; // [esp-4h] [ebp-Ch]
  81116.  
  81117. if ( !Seraph::doMotherCheck(unsigned int,char *)::nStatus )
  81118. {
  81119. Seraph::doMotherCheck(unsigned int,char *)::nStatus = 1;
  81120. if ( uRunTime > 0x493E0 || *(_DWORD *)szCheckValue != 11 )
  81121. goto LABEL_13;
  81122. v2 = *((_DWORD *)szCheckValue + 5) == *((_DWORD *)szCheckValue + 4)
  81123. - 7703
  81124. + *((_DWORD *)szCheckValue + 3)
  81125. - 10602
  81126. + *((_DWORD *)szCheckValue + 1)
  81127. + *((_DWORD *)szCheckValue + 2)
  81128. - 1234567
  81129. - 20061195;
  81130. LABEL_5:
  81131. if ( v2 )
  81132. return;
  81133. LABEL_13:
  81134. v3 = (_DWORD *)__cxa_allocate_exception(4);
  81135. *v3 = 1;
  81136. __cxa_throw(v3, &`typeinfo for'int, 0, v4);
  81137. }
  81138. if ( Seraph::doMotherCheck(unsigned int,char *)::nStatus == 1 )
  81139. {
  81140. Seraph::doMotherCheck(unsigned int,char *)::nStatus = 2;
  81141. if ( *((_DWORD *)szCheckValue + 6) < uRunTime )
  81142. {
  81143. v2 = *((_DWORD *)szCheckValue + 7) == 51;
  81144. goto LABEL_5;
  81145. }
  81146. }
  81147. else if ( Seraph::doMotherCheck(unsigned int,char *)::nStatus == 2 )
  81148. {
  81149. Seraph::doMotherCheck(unsigned int,char *)::nStatus = 3;
  81150. if ( *((_DWORD *)szCheckValue + 8) < uRunTime )
  81151. {
  81152. v2 = *((_DWORD *)szCheckValue + 9) == 20061202;
  81153. goto LABEL_5;
  81154. }
  81155. }
  81156. }
  81157. // 8049DA8: using guessed type int __cdecl __cxa_allocate_exception(_DWORD);
  81158. // 804A1C8: using guessed type int __stdcall __cxa_throw(_DWORD, _DWORD, _DWORD, _DWORD);
  81159.  
  81160. //----- (080BAE9C) --------------------------------------------------------
  81161. void __fastcall _libc_csu_init(int a1, int a2)
  81162. {
  81163. init_proc(a1, a2);
  81164. }
  81165.  
  81166. //----- (080BAEF0) --------------------------------------------------------
  81167. void _libc_csu_fini(void)
  81168. {
  81169. signed int i; // esi
  81170.  
  81171. for ( i = -1; i != -1; --i )
  81172. ((void (*)(void))_CTOR_LIST__[i])();
  81173. term_proc();
  81174. }
  81175. // 810D000: using guessed type int _CTOR_LIST__[];
  81176.  
  81177. //----- (080BAF34) --------------------------------------------------------
  81178. int __fastcall _do_global_ctors_aux(int a1, int a2)
  81179. {
  81180. void (__cdecl **v2)(); // ebx
  81181. void (__cdecl *i)(); // eax
  81182. int v5; // [esp-4h] [ebp-8h]
  81183.  
  81184. v5 = a2;
  81185. v2 = (void (__cdecl **)())&off_810D3AC;
  81186. for ( i = (void (__cdecl *)())off_810D3AC; i != (void (__cdecl *)())-1; i = *v2 )
  81187. {
  81188. --v2;
  81189. i();
  81190. }
  81191. return v5;
  81192. }
  81193. // 810D3AC: using guessed type int (*off_810D3AC)();
  81194.  
  81195. //----- (080BAF58) --------------------------------------------------------
  81196. void term_proc()
  81197. {
  81198. _do_global_dtors_aux();
  81199. }
  81200.  
  81201. #error "There were 80 decompilation failure(s) on 3073 function(s)"
Add Comment
Please, Sign In to add comment