void _init(void) { call_gmon_start(); frame_dummy(); __do_global_ctors_aux(); return; } void FUN_0804a82c(void) { (*(code *)(undefined *)0x0)(); return; } // std::filebuf::~filebuf() void __thiscall std::filebuf::~filebuf(filebuf *this) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked // std::istream::peek() void std::istream::peek(void) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked int pthread_cond_wait(pthread_cond_t *__cond,pthread_mutex_t *__mutex) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked int pthread_detach(pthread_t __th) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked int pthread_attr_init(pthread_attr_t *__attr) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked int sigfillset(sigset_t *__set) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked int usleep(__useconds_t __useconds) { do { // WARNING: Do nothing block with infinite loop } while( true ); } void __divdi3(void) { do { // WARNING: Do nothing block with infinite loop } while( true ); } void __cxa_allocate_exception(void) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked int rename(char *__old,char *__new) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked int sigaction(int __sig,sigaction *__act,sigaction *__oact) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked char * strchr(char *__s,int __c) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked // std::istream::get() void std::istream::get(void) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked int ungetc(int __c,FILE *__stream) { do { // WARNING: Do nothing block with infinite loop } while( true ); } void __cxa_pure_virtual(void) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // std::filebuf::filebuf() void __thiscall std::filebuf::filebuf(filebuf *this) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked __pid_t getpid(void) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked // std::string::_Rep::_M_dispose(std::allocator const&) void std::string::_Rep::_M_dispose(allocator *param_1) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked int pthread_attr_setstacksize(pthread_attr_t *__attr,size_t __stacksize) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // std::ios_base::~ios_base() void __thiscall std::ios_base::~ios_base(ios_base *this) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked int isprint(int param_1) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // std::ostream::TEMPNAMEPLACEHOLDERVALUE(long) void __thiscall std::ostream::operator<<(ostream *this,long param_1) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked ssize_t write(int __fd,void *__buf,size_t __n) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked int poll(pollfd *__fds,nfds_t __nfds,int __timeout) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked tm * localtime(time_t *__timer) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked int strcmp(char *__s1,char *__s2) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked int close(int __fd) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // std::istream::~istream() void __thiscall std::istream::~istream(istream *this) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked int fprintf(FILE *__stream,char *__format,...) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked __pid_t fork(void) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked char * getenv(char *__name) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked __mode_t umask(__mode_t __mask) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked int pthread_create(pthread_t *__newthread,pthread_attr_t *__attr,__start_routine *__start_routine, void *__arg) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked int unlink(char *__name) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked int sigblock(int __mask) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked // std::terminate() void std::terminate(void) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked int vsnprintf(char *__s,size_t __maxlen,char *__format,__gnuc_va_list __arg) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked char * strerror(int __errnum) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked int pthread_cancel(pthread_t __th) { do { // WARNING: Do nothing block with infinite loop } while( true ); } void __cxa_call_unexpected(void) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // std::ios::clear(std::_Ios_Iostate) void std::ios::clear(void) { do { // WARNING: Do nothing block with infinite loop } while( true ); } void __cxa_atexit(void) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked // operator delete(void*) void operator_delete(void *param_1) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked int * __errno_location(void) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked long ftell(FILE *__stream) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked int accept(int __fd,sockaddr *__addr,socklen_t *__addr_len) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked int pthread_attr_setstack(pthread_attr_t *__attr,void *__stackaddr,size_t __stacksize) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked char * inet_ntoa(in_addr __in) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // std::ios_base::ios_base() void __thiscall std::ios_base::ios_base(ios_base *this) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked int puts(char *__s) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked int listen(int __fd,int __n) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // std::istream::TEMPNAMEPLACEHOLDERVALUE(int&) void __thiscall std::istream::operator>>(istream *this,int *param_1) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked void * malloc(size_t __size) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked int sched_yield(void) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked __pid_t setsid(void) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked int pthread_mutex_init(pthread_mutex_t *__mutex,pthread_mutexattr_t *__mutexattr) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked size_t strftime(char *__s,size_t __maxsize,char *__format,tm *__tp) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked int pthread_mutex_destroy(pthread_mutex_t *__mutex) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked int pipe(int *__pipedes) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked size_t fread(void *__ptr,size_t __size,size_t __n,FILE *__stream) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked void * memmove(void *__dest,void *__src,size_t __n) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked int setitimer(__itimer_which_t __which,itimerval *__new,itimerval *__old) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // std::ostream::~ostream() void __thiscall std::ostream::~ostream(ostream *this) { do { // WARNING: Do nothing block with infinite loop } while( true ); } void __cxa_rethrow(void) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // std::__basic_file::~__basic_file() void __thiscall std::__basic_file::~__basic_file(__basic_file *this) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked int shmget(key_t __key,size_t __size,int __shmflg) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked void abort(void) { do { // WARNING: Do nothing block with infinite loop } while( true ); } void __cxa_throw(void) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked // std::filebuf::open(char const*, std::_Ios_Openmode) int std::filebuf::open(char *__file,int __oflag,...) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked int __xstat(int __ver,char *__filename,stat *__stat_buf) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked int setsockopt(int __fd,int __level,int __optname,void *__optval,socklen_t __optlen) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked long sysconf(int __name) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked int execv(char *__path,char **__argv) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked int getpeername(int __fd,sockaddr *__addr,socklen_t *__len) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked int fseek(FILE *__stream,long __off,int __whence) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked __pid_t waitpid(__pid_t __pid,int *__stat_loc,int __options) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked time_t time(time_t *__timer) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked int __sigpause(int __sig_or_mask,int __is_sig) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked int pthread_mutex_lock(pthread_mutex_t *__mutex) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked int execlp(char *__file,char *__arg,...) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // std::streambuf::~streambuf() void __thiscall std::streambuf::~streambuf(streambuf *this) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked int chdir(char *__path) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // std::locale::~locale() void __thiscall std::locale::~locale(locale *this) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked // std::filebuf::close() int std::filebuf::close(int __fd) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked char * strstr(char *__haystack,char *__needle) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked size_t strlen(char *__s) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked uint sleep(uint __seconds) { do { // WARNING: Do nothing block with infinite loop } while( true ); } void __cxa_end_catch(void) { do { // WARNING: Do nothing block with infinite loop } while( true ); } void __strtol_internal(void) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked int rand_r(uint *__seed) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked // std::__throw_logic_error(char const*) void std::__throw_logic_error(char *param_1) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked int pthread_cond_signal(pthread_cond_t *__cond) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // std::ios::~ios() void __thiscall std::ios::~ios(ios *this) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // std::bad_alloc::~bad_alloc() void __thiscall std::bad_alloc::~bad_alloc(bad_alloc *this) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked int sigprocmask(int __how,sigset_t *__set,sigset_t *__oset) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked in_addr_t inet_addr(char *__cp) { do { // WARNING: Do nothing block with infinite loop } while( true ); } void __gxx_personality_v0(void) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked int pthread_cond_init(pthread_cond_t *__cond,pthread_condattr_t *__cond_attr) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked int shmdt(void *__shmaddr) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked // std::string::_Rep::_S_create(unsigned int, std::allocator const&) void std::string::_Rep::_S_create(uint param_1,allocator *param_2) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked int putc(int __c,FILE *__stream) { do { // WARNING: Do nothing block with infinite loop } while( true ); } void __libc_start_main(void) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked // std::string::reserve(unsigned int) void std::string::reserve(uint param_1) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // std::istream::istream(std::streambuf*) void __thiscall std::istream::istream(istream *this,streambuf *param_1) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked int dup2(int __fd,int __fd2) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked char * strcat(char *__dest,char *__src) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked int pthread_attr_destroy(pthread_attr_t *__attr) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked int printf(char *__format,...) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked int bind(int __fd,sockaddr *__addr,socklen_t __len) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked int fcntl(int __fd,int __cmd,...) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked void * memcpy(void *__dest,void *__src,size_t __n) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked // std::__throw_length_error(char const*) void std::__throw_length_error(char *param_1) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked int fclose(FILE *__stream) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked char * ctime(time_t *__timer) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked int gethostbyname_r(char *__name,hostent *__result_buf,char *__buf,size_t __buflen, hostent **__result,int *__h_errnop) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked int shmctl(int __shmid,int __cmd,shmid_ds *__buf) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // std::ostream::TEMPNAMEPLACEHOLDERVALUE(unsigned long) void __thiscall std::ostream::operator<<(ostream *this,ulong param_1) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked int closedir(DIR *__dirp) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked void srand(uint __seed) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked DIR * opendir(char *__name) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked int snprintf(char *__s,size_t __maxlen,char *__format,...) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked int sigemptyset(sigset_t *__set) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // std::stringbuf::stringbuf(std::string const&, std::_Ios_Openmode) void __thiscall std::stringbuf::stringbuf(void) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked int pthread_join(pthread_t __th,void **__thread_return) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked void pthread_exit(void *__retval) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked void exit(int __status) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked int sscanf(char *__s,char *__format,...) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked void free(void *__ptr) { do { // WARNING: Do nothing block with infinite loop } while( true ); } void __cxa_begin_catch(void) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked void * memset(void *__s,int __c,size_t __n) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked int connect(int __fd,sockaddr *__addr,socklen_t __len) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked int pthread_cond_destroy(pthread_cond_t *__cond) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked char * strncpy(char *__dest,char *__src,size_t __n) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked // std::__default_alloc_template::deallocate(void*, unsigned int) void std::__default_alloc_template::deallocate(void *param_1,uint param_2) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked FILE * fopen(char *__filename,char *__modes) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked int sigwait(sigset_t *__set,int *__sig) { do { // WARNING: Do nothing block with infinite loop } while( true ); } void _Unwind_Resume(void) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked // std::istream::get(char*, int, char) void std::istream::get(char *param_1,int param_2,char param_3) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked int pthread_mutex_unlock(pthread_mutex_t *__mutex) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked // operator new[](unsigned int) void * operator_new__(uint param_1) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked int kill(__pid_t __pid,int __sig) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked int getc(FILE *__stream) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked // operator delete[](void*) void operator_delete__(void *param_1) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked int sprintf(char *__s,char *__format,...) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked // std::ios::init(std::streambuf*) int std::ios::init(EVP_PKEY_CTX *ctx) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked size_t fwrite(void *__ptr,size_t __size,size_t __n,FILE *__s) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // std::ostream::ostream(std::streambuf*) void __thiscall std::ostream::ostream(ostream *this,streambuf *param_1) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked int socket(int __domain,int __type,int __protocol) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked dirent * readdir(DIR *__dirp) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked // std::string::_M_mutate(unsigned int, unsigned int, unsigned int) void std::string::_M_mutate(uint param_1,uint param_2,uint param_3) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked int rand(void) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked ssize_t read(int __fd,void *__buf,size_t __nbytes) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked // operator new(unsigned int) void * operator_new(uint param_1) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked uint alarm(uint __seconds) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked void * shmat(int __shmid,void *__shmaddr,int __shmflg) { do { // WARNING: Do nothing block with infinite loop } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked char * strcpy(char *__dest,char *__src) { do { // WARNING: Do nothing block with infinite loop } while( true ); } void processEntry _start(undefined4 param_1,undefined4 param_2) { undefined1 auStack_4 [4]; __libc_start_main(main,param_2,&stack0x00000004,__libc_csu_init,__libc_csu_fini,param_1, auStack_4); do { // WARNING: Do nothing block with infinite loop } while( true ); } void call_gmon_start(void) { __gmon_start__(); return; } void __do_global_dtors_aux(void) { code *pcVar1; if (completed_1 == '\0') { completed_1 = 0; pcVar1 = *(code **)p_0; while (pcVar1 != (code *)0x0) { p_0 = p_0 + 4; (*pcVar1)(); pcVar1 = *(code **)p_0; } completed_1 = '\x01'; } return; } // WARNING: Removing unreachable block (ram,0x0804b29c) void frame_dummy(void) { return; } void __static_initialization_and_destruction_0(int __initialize_p,int __priority) { if ((__priority == 0xffff) && (__initialize_p == 1)) { NONE.ObjectID = 0; } return; } // WARNING: Unknown calling convention -- yet parameter storage is locked void _GLOBAL__I_BeADaemon(void) { __static_initialization_and_destruction_0(1,0xffff); return; } void SetPrintFunction(TPrintFunction *Function) { PrintFunction = Function; return; } void SetErrorFunction(TErrorFunction *Function) { ErrorFunction = Function; return; } void SilentHandler(int param_1,char *param_2) { return; } void SilentHandler(char *param_1) { return; } void LogfileHandler(int param_1,char *Text) { FILE *__stream; int iVar1; FILE *f; if (StandardLogfile[0] != '\0') { __stream = fopen(StandardLogfile,"at"); if (__stream != (FILE *)0x0) { fprintf(__stream,"%s",Text); iVar1 = fclose(__stream); if (iVar1 != 0) { __errno_location(); error(&DAT_080eeb60); return; } } } return; } void LogfileHandler(char *Text) { FILE *__stream; int iVar1; int *piVar2; FILE *f; if (StandardLogfile[0] != '\0') { __stream = fopen(StandardLogfile,"at"); if (__stream != (FILE *)0x0) { fprintf(__stream,"%s",Text); iVar1 = fclose(__stream); if (iVar1 != 0) { piVar2 = __errno_location(); error(&DAT_080eeb60,*piVar2); } } } return; } // WARNING: Unknown calling convention -- yet parameter storage is locked void print(void) { int in_stack_00000004; char *in_stack_00000008; char local_40c [4]; char s [1024]; vsnprintf(local_40c,0x400,in_stack_00000008,&stack0x0000000c); if (PrintFunction == (TPrintFunction *)0x0) { printf("%s",local_40c); } else { (*PrintFunction)(in_stack_00000004,local_40c); } return; } int val(char c) { int iVar1; if ((byte)(c - 0x30U) < 10) { iVar1 = c + -0x30; } else if ((byte)(c + 0xbfU) < 6) { iVar1 = c + -0x37; } else if ((byte)(c + 0x9fU) < 6) { iVar1 = c + -0x57; } else { iVar1 = 0; } return iVar1; } // WARNING: Unknown calling convention -- yet parameter storage is locked long random(void) { int iVar1; int iVar2; int range; int in_stack_00000004; int in_stack_00000008; iVar1 = (in_stack_00000008 - in_stack_00000004) + 1; if (0 < iVar1) { iVar2 = rand(); in_stack_00000004 = iVar2 % iVar1 + in_stack_00000004; } return in_stack_00000004; } bool FileExists(char *FileName) { int *piVar1; int iVar2; bool bVar3; undefined1 local_6c [4]; stat Buffer; piVar1 = __errno_location(); *piVar1 = 0; iVar2 = __xstat(3,FileName,(stat *)local_6c); bVar3 = true; if (iVar2 != 0) { if (*piVar1 != 2) { error("FileExists: Unerwarteter Fehlercode %d.\n",*piVar1); } bVar3 = false; } return bVar3; } void TreatAllFiles(char *Directory,char *Extension,TFileHandlerFunction *Function) { uint *__dest; dirent *DirectoryEntry; DIR *__dirp; dirent *pdVar1; char *pcVar2; size_t sVar3; int iVar4; uint uVar5; uint uVar6; uint *puVar7; uint *puVar8; DIR *WorkingDirectory; bool bVar9; char local_105c [4]; char Name [64]; char FileName [4096]; __dirp = opendir(Directory); if (__dirp != (DIR *)0x0) { while (pdVar1 = readdir(__dirp), pdVar1 != (dirent *)0x0) { __dest = (uint *)(Name + 0x3c); strcpy((char *)__dest,pdVar1->d_name); puVar8 = __dest; do { puVar7 = puVar8; uVar5 = *puVar7 + 0xfefefeff & ~*puVar7; uVar6 = uVar5 & 0x80808080; puVar8 = puVar7 + 1; } while (uVar6 == 0); bVar9 = (uVar5 & 0x8080) == 0; if (bVar9) { uVar6 = uVar6 >> 0x10; } if (bVar9) { puVar8 = (uint *)((int)puVar7 + 6); } pcVar2 = (char *)strlen(Extension); puVar7 = __dest; if (pcVar2 < (char *)((int)puVar8 + ((-3 - (uint)CARRY1((byte)uVar6,(byte)uVar6)) - (int)__dest))) { do { puVar8 = puVar7; uVar5 = *puVar8 + 0xfefefeff & ~*puVar8; uVar6 = uVar5 & 0x80808080; puVar7 = puVar8 + 1; } while (uVar6 == 0); bVar9 = (uVar5 & 0x8080) == 0; if (bVar9) { uVar6 = uVar6 >> 0x10; } puVar7 = (uint *)((int)puVar8 + 6); if (!bVar9) { puVar7 = puVar8 + 1; } sVar3 = strlen(Extension); iVar4 = strcmp((char *)((int)puVar7 + ((-3 - (uint)CARRY1((byte)uVar6,(byte)uVar6)) - sVar3)), Extension); if (iVar4 == 0) { local_105c[0] = '\0'; local_105c[1] = '\0'; local_105c[2] = '\0'; local_105c[3] = '\0'; Name[0] = '\0'; Name[1] = '\0'; Name[2] = '\0'; Name[3] = '\0'; Name[4] = '\0'; Name[5] = '\0'; Name[6] = '\0'; Name[7] = '\0'; Name[0xc] = '\0'; Name[0xd] = '\0'; Name[0xe] = '\0'; Name[0xf] = '\0'; Name[0x10] = '\0'; Name[0x11] = '\0'; Name[0x12] = '\0'; Name[0x13] = '\0'; Name[0x14] = '\0'; Name[0x15] = '\0'; Name[0x16] = '\0'; Name[0x17] = '\0'; Name[0x18] = '\0'; Name[0x19] = '\0'; Name[0x1a] = '\0'; Name[0x1b] = '\0'; Name[0x1c] = '\0'; Name[0x1d] = '\0'; Name[0x1e] = '\0'; Name[0x1f] = '\0'; Name[8] = '\0'; Name[9] = '\0'; Name[10] = '\0'; Name[0xb] = '\0'; Name[0x20] = '\0'; Name[0x21] = '\0'; Name[0x22] = '\0'; Name[0x23] = '\0'; Name[0x24] = '\0'; Name[0x25] = '\0'; Name[0x26] = '\0'; Name[0x27] = '\0'; Name[0x28] = '\0'; Name[0x29] = '\0'; Name[0x2a] = '\0'; Name[0x2b] = '\0'; Name[0x30] = '\0'; Name[0x31] = '\0'; Name[0x32] = '\0'; Name[0x33] = '\0'; Name[0x34] = '\0'; Name[0x35] = '\0'; Name[0x36] = '\0'; Name[0x37] = '\0'; Name[0x2c] = '\0'; Name[0x2d] = '\0'; Name[0x2e] = '\0'; Name[0x2f] = '\0'; Name[0x38] = '\0'; Name[0x39] = '\0'; Name[0x3a] = '\0'; Name[0x3b] = '\0'; puVar8 = __dest; do { puVar7 = puVar8; uVar5 = *puVar7 + 0xfefefeff & ~*puVar7; uVar6 = uVar5 & 0x80808080; puVar8 = puVar7 + 1; } while (uVar6 == 0); bVar9 = (uVar5 & 0x8080) == 0; if (bVar9) { uVar6 = uVar6 >> 0x10; } if (bVar9) { puVar8 = (uint *)((int)puVar7 + 6); } sVar3 = strlen(Extension); strncpy(local_105c,(char *)__dest, (size_t)((int)puVar8 + (((-3 - (uint)CARRY1((byte)uVar6,(byte)uVar6)) - (int)__dest) - sVar3))); (*Function)(Directory,local_105c,Extension); } } } closedir(__dirp); } return; } void SendMail(char *Address,char *Subject,char *Text) { uint *puVar1; int iVar2; size_t sVar3; int iVar4; __pid_t _Var5; int *piVar6; uint *puVar7; uint *puVar8; uint uVar9; uint uVar10; char_0_ *Content; bool bVar11; int iStack_b0; uint auStack_94 [4]; undefined4 local_84; int inode [2]; stat StatBuffer; iStack_b0 = 0x804e4b9; sVar3 = strlen(Text); iVar2 = -(sVar3 + 0x7df & 0xfffffff0); *(undefined1 *)((int)auStack_94 + iVar2) = 0; puVar1 = (uint *)((int)auStack_94 + iVar2); puVar8 = puVar1; do { puVar7 = puVar8; uVar9 = *puVar7 + 0xfefefeff & ~*puVar7; uVar10 = uVar9 & 0x80808080; puVar8 = puVar7 + 1; } while (uVar10 == 0); bVar11 = (uVar9 & 0x8080) == 0; if (bVar11) { uVar10 = uVar10 >> 0x10; } if (bVar11) { puVar8 = (uint *)((int)puVar7 + 6); } *(char **)(&stack0xffffff58 + iVar2) = "From: %s\n"; *(uint *)((int)auStack_94 + iVar2 + -0x18) = (int)puVar8 + (-3 - (uint)CARRY1((byte)uVar10,(byte)uVar10)); *(char **)(&stack0xffffff5c + iVar2) = SendMail::sender; *(undefined4 *)((int)&iStack_b0 + iVar2) = 0x804e519; sprintf(*(char **)((int)auStack_94 + iVar2 + -0x18),*(char **)(&stack0xffffff58 + iVar2)); puVar8 = puVar1; do { puVar7 = puVar8; uVar9 = *puVar7 + 0xfefefeff & ~*puVar7; uVar10 = uVar9 & 0x80808080; puVar8 = puVar7 + 1; } while (uVar10 == 0); bVar11 = (uVar9 & 0x8080) == 0; if (bVar11) { uVar10 = uVar10 >> 0x10; } if (bVar11) { puVar8 = (uint *)((int)puVar7 + 6); } *(char **)(&stack0xffffff58 + iVar2) = "To: %s\n"; *(uint *)((int)auStack_94 + iVar2 + -0x18) = (int)puVar8 + (-3 - (uint)CARRY1((byte)uVar10,(byte)uVar10)); *(char **)(&stack0xffffff5c + iVar2) = Address; *(undefined4 *)((int)&iStack_b0 + iVar2) = 0x804e567; sprintf(*(char **)((int)auStack_94 + iVar2 + -0x18),*(char **)(&stack0xffffff58 + iVar2)); puVar8 = puVar1; do { puVar7 = puVar8; uVar9 = *puVar7 + 0xfefefeff & ~*puVar7; uVar10 = uVar9 & 0x80808080; puVar8 = puVar7 + 1; } while (uVar10 == 0); bVar11 = (uVar9 & 0x8080) == 0; if (bVar11) { uVar10 = uVar10 >> 0x10; } if (bVar11) { puVar8 = (uint *)((int)puVar7 + 6); } *(char **)(&stack0xffffff58 + iVar2) = "Subject: %s\n"; *(uint *)((int)auStack_94 + iVar2 + -0x18) = (int)puVar8 + (-3 - (uint)CARRY1((byte)uVar10,(byte)uVar10)); *(char **)(&stack0xffffff5c + iVar2) = Subject; *(undefined4 *)((int)&iStack_b0 + iVar2) = 0x804e5b7; sprintf(*(char **)((int)auStack_94 + iVar2 + -0x18),*(char **)(&stack0xffffff58 + iVar2)); puVar8 = puVar1; do { puVar7 = puVar8; uVar9 = *puVar7 + 0xfefefeff & ~*puVar7; uVar10 = uVar9 & 0x80808080; puVar8 = puVar7 + 1; } while (uVar10 == 0); bVar11 = (uVar9 & 0x8080) == 0; if (bVar11) { uVar10 = uVar10 >> 0x10; } if (bVar11) { puVar8 = (uint *)((int)puVar7 + 6); } *(char **)(&stack0xffffff58 + iVar2) = "Reply-To: %s\n"; *(uint *)((int)auStack_94 + iVar2 + -0x18) = (int)puVar8 + (-3 - (uint)CARRY1((byte)uVar10,(byte)uVar10)); *(char **)(&stack0xffffff5c + iVar2) = SendMail::replyto; *(undefined4 *)((int)&iStack_b0 + iVar2) = 0x804e609; sprintf(*(char **)((int)auStack_94 + iVar2 + -0x18),*(char **)(&stack0xffffff58 + iVar2)); puVar8 = puVar1; do { puVar7 = puVar8; uVar9 = *puVar7 + 0xfefefeff & ~*puVar7; uVar10 = uVar9 & 0x80808080; puVar8 = puVar7 + 1; } while (uVar10 == 0); bVar11 = (uVar9 & 0x8080) == 0; if (bVar11) { uVar10 = uVar10 >> 0x10; } if (bVar11) { puVar8 = (uint *)((int)puVar7 + 6); } *(char **)(&stack0xffffff58 + iVar2) = "X-Mailer: %s\n"; *(uint *)((int)auStack_94 + iVar2 + -0x18) = (int)puVar8 + (-3 - (uint)CARRY1((byte)uVar10,(byte)uVar10)); *(char **)(&stack0xffffff5c + iVar2) = SendMail::xmailer; *(undefined4 *)((int)&iStack_b0 + iVar2) = 0x804e659; sprintf(*(char **)((int)auStack_94 + iVar2 + -0x18),*(char **)(&stack0xffffff58 + iVar2)); puVar8 = puVar1; do { puVar7 = puVar8; uVar9 = *puVar7 + 0xfefefeff & ~*puVar7; uVar10 = uVar9 & 0x80808080; puVar8 = puVar7 + 1; } while (uVar10 == 0); *(char **)(&stack0xffffff58 + iVar2) = "Content-Type: text/plain; charset=\"iso-8859-1\"\n"; bVar11 = (uVar9 & 0x8080) == 0; if (bVar11) { uVar10 = uVar10 >> 0x10; } if (bVar11) { puVar8 = (uint *)((int)puVar7 + 6); } *(uint *)((int)auStack_94 + iVar2 + -0x18) = (int)puVar8 + (-3 - (uint)CARRY1((byte)uVar10,(byte)uVar10)); *(undefined4 *)((int)&iStack_b0 + iVar2) = 0x804e6a0; sprintf(*(char **)((int)auStack_94 + iVar2 + -0x18),*(char **)(&stack0xffffff58 + iVar2)); puVar8 = puVar1; do { puVar7 = puVar8; uVar9 = *puVar7 + 0xfefefeff & ~*puVar7; uVar10 = uVar9 & 0x80808080; puVar8 = puVar7 + 1; } while (uVar10 == 0); *(char **)(&stack0xffffff58 + iVar2) = "\n"; bVar11 = (uVar9 & 0x8080) == 0; if (bVar11) { uVar10 = uVar10 >> 0x10; } if (bVar11) { puVar8 = (uint *)((int)puVar7 + 6); } *(uint *)((int)auStack_94 + iVar2 + -0x18) = (int)puVar8 + (-3 - (uint)CARRY1((byte)uVar10,(byte)uVar10)); *(undefined4 *)((int)&iStack_b0 + iVar2) = 0x804e6f0; sprintf(*(char **)((int)auStack_94 + iVar2 + -0x18),*(char **)(&stack0xffffff58 + iVar2)); puVar8 = puVar1; do { puVar7 = puVar8; uVar9 = *puVar7 + 0xfefefeff & ~*puVar7; uVar10 = uVar9 & 0x80808080; puVar8 = puVar7 + 1; } while (uVar10 == 0); *(char **)(&stack0xffffff5c + iVar2) = Text; *(char **)(&stack0xffffff58 + iVar2) = "%s\n"; bVar11 = (uVar9 & 0x8080) == 0; if (bVar11) { uVar10 = uVar10 >> 0x10; } if (bVar11) { puVar8 = (uint *)((int)puVar7 + 6); } *(uint *)((int)auStack_94 + iVar2 + -0x18) = (int)puVar8 + (-3 - (uint)CARRY1((byte)uVar10,(byte)uVar10)); *(undefined4 *)((int)&iStack_b0 + iVar2) = 0x804e744; sprintf(*(char **)((int)auStack_94 + iVar2 + -0x18),*(char **)(&stack0xffffff58 + iVar2)); *(undefined4 *)((int)auStack_94 + iVar2 + -0x18) = 3; *(int **)(&stack0xffffff5c + iVar2) = inode + 1; *(char **)(&stack0xffffff58 + iVar2) = SendMail::mailer; *(undefined4 *)((int)&iStack_b0 + iVar2) = 0x804e761; iVar4 = __xstat(*(int *)((int)auStack_94 + iVar2 + -0x18),*(char **)(&stack0xffffff58 + iVar2), *(stat **)(&stack0xffffff5c + iVar2)); if (iVar4 == 0) { *(undefined4 **)((int)auStack_94 + iVar2 + -0x18) = &local_84; *(undefined4 *)((int)&iStack_b0 + iVar2) = 0x804e78f; iVar4 = pipe(*(int **)((int)auStack_94 + iVar2 + -0x18)); if (iVar4 == 0) { *(undefined4 *)((int)&iStack_b0 + iVar2) = 0x804e7a6; _Var5 = fork(); if (-1 < _Var5) { puVar8 = puVar1; if (_Var5 == 0) { *(undefined4 *)(&stack0xffffff58 + iVar2) = 0; *(undefined4 *)((int)auStack_94 + iVar2 + -0x18) = local_84; *(undefined4 *)((int)&iStack_b0 + iVar2) = 0x804e86a; dup2(*(int *)((int)auStack_94 + iVar2 + -0x18), *(int *)(&stack0xffffff58 + iVar2)); *(undefined4 *)((int)auStack_94 + iVar2 + -0x18) = local_84; *(undefined4 *)((int)&iStack_b0 + iVar2) = 0x804e875; iVar4 = close(*(int *)((int)auStack_94 + iVar2 + -0x18)); if (iVar4 < 0) { *(undefined4 *)((int)&iStack_b0 + iVar2) = 0x804e8e8; piVar6 = __errno_location(); iVar4 = *piVar6; *(undefined **)((int)auStack_94 + iVar2 + -0x18) = &DAT_080eefa0; *(int *)(&stack0xffffff58 + iVar2) = iVar4; *(undefined4 *)((int)&iStack_b0 + iVar2) = 0x804e8fa; error(*(char **)((int)auStack_94 + iVar2 + -0x18)); } *(int *)((int)auStack_94 + iVar2 + -0x18) = inode[0]; *(undefined4 *)((int)&iStack_b0 + iVar2) = 0x804e884; iVar4 = close(*(int *)((int)auStack_94 + iVar2 + -0x18)); if (iVar4 < 0) { *(undefined4 *)((int)&iStack_b0 + iVar2) = 0x804e8cf; piVar6 = __errno_location(); iVar4 = *piVar6; *(undefined **)((int)auStack_94 + iVar2 + -0x18) = &DAT_080eef60; *(int *)(&stack0xffffff58 + iVar2) = iVar4; *(undefined4 *)((int)&iStack_b0 + iVar2) = 0x804e8e1; error(*(char **)((int)auStack_94 + iVar2 + -0x18)); } *(undefined4 *)(&stack0xffffff68 + iVar2) = 0; *(char **)(&stack0xffffff64 + iVar2) = Address; *(undefined **)(&stack0xffffff5c + iVar2) = &DAT_080eeb56; *(char **)(&stack0xffffff60 + iVar2) = SendMail::envelope; *(char **)(&stack0xffffff58 + iVar2) = SendMail::mailer; *(char **)((int)auStack_94 + iVar2 + -0x18) = SendMail::mailer; *(undefined4 *)((int)&iStack_b0 + iVar2) = 0x804e8be; execlp(*(char **)((int)auStack_94 + iVar2 + -0x18), *(char **)(&stack0xffffff58 + iVar2)); *(undefined4 *)((int)auStack_94 + iVar2 + -0x18) = 0; // WARNING: Subroutine does not return *(undefined4 *)((int)&iStack_b0 + iVar2) = 0x804e8ca; exit(*(int *)((int)auStack_94 + iVar2 + -0x18)); } do { puVar7 = puVar8; uVar9 = *puVar7 + 0xfefefeff & ~*puVar7; uVar10 = uVar9 & 0x80808080; puVar8 = puVar7 + 1; } while (uVar10 == 0); *(uint **)(&stack0xffffff58 + iVar2) = puVar1; bVar11 = (uVar9 & 0x8080) == 0; if (bVar11) { uVar10 = uVar10 >> 0x10; } if (bVar11) { puVar8 = (uint *)((int)puVar7 + 6); } *(uint *)(&stack0xffffff5c + iVar2) = (int)puVar8 + ((-3 - (uint)CARRY1((byte)uVar10,(byte)uVar10)) - (int)puVar1); *(int *)((int)auStack_94 + iVar2 + -0x18) = inode[0]; *(undefined4 *)((int)&iStack_b0 + iVar2) = 0x804e805; write(*(int *)((int)auStack_94 + iVar2 + -0x18),*(void **)(&stack0xffffff58 + iVar2) ,*(size_t *)(&stack0xffffff5c + iVar2)); *(undefined4 *)((int)auStack_94 + iVar2 + -0x18) = local_84; *(undefined4 *)((int)&iStack_b0 + iVar2) = 0x804e810; iVar4 = close(*(int *)((int)auStack_94 + iVar2 + -0x18)); if (iVar4 < 0) { *(undefined4 *)((int)&iStack_b0 + iVar2) = 0x804e843; piVar6 = __errno_location(); iVar4 = *piVar6; *(undefined **)((int)auStack_94 + iVar2 + -0x18) = &DAT_080eef20; *(int *)(&stack0xffffff58 + iVar2) = iVar4; *(undefined4 *)((int)&iStack_b0 + iVar2) = 0x804e855; error(*(char **)((int)auStack_94 + iVar2 + -0x18)); } *(int *)((int)auStack_94 + iVar2 + -0x18) = inode[0]; *(undefined4 *)((int)&iStack_b0 + iVar2) = 0x804e81f; iVar4 = close(*(int *)((int)auStack_94 + iVar2 + -0x18)); if (-1 < iVar4) { return; } *(undefined4 *)((int)&iStack_b0 + iVar2) = 0x804e82c; piVar6 = __errno_location(); iVar4 = *piVar6; *(undefined **)((int)auStack_94 + iVar2 + -0x18) = &DAT_080eeee0; *(int *)(&stack0xffffff58 + iVar2) = iVar4; goto LAB_0804e775; } *(undefined **)((int)auStack_94 + iVar2 + -0x18) = &DAT_080eefe0; } else { *(char **)((int)auStack_94 + iVar2 + -0x18) = "SendMail: Kann Pipe nicht anlegen.\n"; } *(undefined4 *)((int)&iStack_b0 + iVar2) = 0x804e79f; error(*(char **)((int)auStack_94 + iVar2 + -0x18)); } else { *(undefined **)((int)auStack_94 + iVar2 + -0x18) = &DAT_080eee60; *(char **)(&stack0xffffff58 + iVar2) = SendMail::mailer; LAB_0804e775: *(undefined4 *)((int)&iStack_b0 + iVar2) = 0x804e77a; error(*(char **)((int)auStack_94 + iVar2 + -0x18)); } return; } // WARNING: Variable defined which should be unmapped: status // WARNING: Unknown calling convention -- yet parameter storage is locked void RemoveZombie(void) { int local_8; int status; waitpid(-1,&local_8,3); return; } ulong PackAbsoluteCoordinate(int x,int y,int z) { return (x + -0x6000) * 0x40000 + (y + -0x6000) * 0x10 + z; } ulong PackRelativeCoordinate(int dx,int dy,int dz) { return (dx + 0x2000) * 0x40000 + (dy + 0x2000) * 0x10 + dz + 8; } // WARNING: Unknown calling convention -- yet parameter storage is locked void UnpackAbsoluteCoordinate(void) { uint in_stack_00000004; int *in_stack_00000008; int *in_stack_0000000c; uint *in_stack_00000010; *in_stack_00000008 = (in_stack_00000004 >> 0x12) + 0x6000; *in_stack_0000000c = (in_stack_00000004 >> 4 & 0x3fff) + 0x6000; *in_stack_00000010 = in_stack_00000004 & 0xf; return; } // WARNING: Unknown calling convention -- yet parameter storage is locked void UnpackRelativeCoordinate(void) { uint in_stack_00000004; int *in_stack_00000008; int *in_stack_0000000c; int *in_stack_00000010; *in_stack_00000008 = (in_stack_00000004 >> 0x12) - 0x2000; *in_stack_0000000c = (in_stack_00000004 >> 4 & 0x3fff) - 0x2000; *in_stack_00000010 = (in_stack_00000004 & 0xf) - 8; return; } void __static_initialization_and_destruction_0(int __initialize_p,int __priority) { if ((__priority == 0xffff) && (__initialize_p == 1)) { StaticStringTable.firstNode = (listnode<> *)0x0; StaticStringTable.lastNode = (listnode<> *)0x0; __cxa_atexit(__tcf_0,0,&__dso_handle); DynamicStringTable.firstNode = (listnode<> *)0x0; DynamicStringTable.lastNode = (listnode<> *)0x0; __cxa_atexit(__tcf_1,0,&__dso_handle); } return; } void __tcf_0(void *param_1) { listnode<> *plVar1; listnode<> *plVar2; listnode<> *plVar3; if (StaticStringTable.firstNode != (listnode<> *)0x0) { do { plVar2 = StaticStringTable.firstNode; if (StaticStringTable.firstNode == (listnode<> *)0x0) { error("list::remove: node ist NULL.\n"); } else { plVar3 = (StaticStringTable.firstNode)->prev; if (plVar3 == (listnode<> *)0x0) { plVar3 = (StaticStringTable.firstNode)->prev; StaticStringTable.firstNode = (StaticStringTable.firstNode)->next; } else { plVar3->next = (StaticStringTable.firstNode)->next; } plVar1 = plVar2->next; if (plVar1 != (listnode<> *)0x0) { plVar1->prev = plVar3; plVar3 = StaticStringTable.lastNode; } StaticStringTable.lastNode = plVar3; operator_delete(plVar2); } } while (StaticStringTable.firstNode != (listnode<> *)0x0); } return; } void __tcf_1(void *param_1) { listnode<> *plVar1; listnode<> *plVar2; listnode<> *plVar3; if (DynamicStringTable.firstNode != (listnode<> *)0x0) { do { plVar2 = DynamicStringTable.firstNode; if (DynamicStringTable.firstNode == (listnode<> *)0x0) { error("list::remove: node ist NULL.\n"); } else { plVar3 = (DynamicStringTable.firstNode)->prev; if (plVar3 == (listnode<> *)0x0) { plVar3 = (DynamicStringTable.firstNode)->prev; DynamicStringTable.firstNode = (DynamicStringTable.firstNode)->next; } else { plVar3->next = (DynamicStringTable.firstNode)->next; } plVar1 = plVar2->next; if (plVar1 != (listnode<> *)0x0) { plVar1->prev = plVar3; plVar3 = DynamicStringTable.lastNode; } DynamicStringTable.lastNode = plVar3; operator_delete(plVar2); } } while (DynamicStringTable.firstNode != (listnode<> *)0x0); } return; } // WARNING: Unknown calling convention -- yet parameter storage is locked void _GLOBAL__I_StaticStringTable(void) { __static_initialization_and_destruction_0(1,0xffff); return; } void __static_initialization_and_destruction_0(int __initialize_p,int __priority) { bool bVar1; if ((__priority == 0xffff) && (__initialize_p == 1)) { ObjectTypes.initialized = false; ObjectTypes.max = 5000; ObjectTypes.space = 0x1389; ObjectTypes.min = 0; ObjectTypes.start = 0; ObjectTypes.block = 1000; ObjectTypes.entry = (TObjectType *)operator_new__(0x19f1f4); __cxa_atexit(__tcf_0,0,&__dso_handle); bVar1 = false; if ((ObjectTypes.min < 1) && ((uint)ObjectTypes.max < 0x80000000)) { bVar1 = true; } if (!bVar1) { error(&DAT_080f0a80,0); } bVar1 = false; SpecialObjects[0].TypeID = 0; if ((ObjectTypes.min < 1) && ((uint)ObjectTypes.max < 0x80000000)) { bVar1 = true; } if (!bVar1) { error(&DAT_080f0a80,0); } bVar1 = false; SpecialObjects[1].TypeID = 0; if ((ObjectTypes.min < 1) && ((uint)ObjectTypes.max < 0x80000000)) { bVar1 = true; } if (!bVar1) { error(&DAT_080f0a80,0); } bVar1 = false; SpecialObjects[2].TypeID = 0; if ((ObjectTypes.min < 1) && ((uint)ObjectTypes.max < 0x80000000)) { bVar1 = true; } if (!bVar1) { error(&DAT_080f0a80,0); } bVar1 = false; SpecialObjects[3].TypeID = 0; if ((ObjectTypes.min < 1) && ((uint)ObjectTypes.max < 0x80000000)) { bVar1 = true; } if (!bVar1) { error(&DAT_080f0a80,0); } bVar1 = false; SpecialObjects[4].TypeID = 0; if ((ObjectTypes.min < 1) && ((uint)ObjectTypes.max < 0x80000000)) { bVar1 = true; } if (!bVar1) { error(&DAT_080f0a80,0); } SpecialObjects[5].TypeID = 0; bVar1 = false; if ((ObjectTypes.min < 1) && ((uint)ObjectTypes.max < 0x80000000)) { bVar1 = true; } if (!bVar1) { error(&DAT_080f0a80,0); } bVar1 = false; SpecialObjects[6].TypeID = 0; if ((ObjectTypes.min < 1) && ((uint)ObjectTypes.max < 0x80000000)) { bVar1 = true; } if (!bVar1) { error(&DAT_080f0a80,0); } bVar1 = false; SpecialObjects[7].TypeID = 0; if ((ObjectTypes.min < 1) && ((uint)ObjectTypes.max < 0x80000000)) { bVar1 = true; } if (!bVar1) { error(&DAT_080f0a80,0); } SpecialObjects[8].TypeID = 0; bVar1 = false; if ((ObjectTypes.min < 1) && ((uint)ObjectTypes.max < 0x80000000)) { bVar1 = true; } if (!bVar1) { error(&DAT_080f0a80,0); } bVar1 = false; SpecialObjects[9].TypeID = 0; if ((ObjectTypes.min < 1) && ((uint)ObjectTypes.max < 0x80000000)) { bVar1 = true; } if (!bVar1) { error(&DAT_080f0a80,0); } SpecialObjects[10].TypeID = 0; bVar1 = false; if ((ObjectTypes.min < 1) && ((uint)ObjectTypes.max < 0x80000000)) { bVar1 = true; } if (!bVar1) { error(&DAT_080f0a80,0); } bVar1 = false; SpecialObjects[0xb].TypeID = 0; if ((ObjectTypes.min < 1) && ((uint)ObjectTypes.max < 0x80000000)) { bVar1 = true; } if (!bVar1) { error(&DAT_080f0a80,0); } SpecialObjects[0xc].TypeID = 0; bVar1 = false; if ((ObjectTypes.min < 1) && ((uint)ObjectTypes.max < 0x80000000)) { bVar1 = true; } if (!bVar1) { error(&DAT_080f0a80,0); } bVar1 = false; SpecialObjects[0xd].TypeID = 0; if ((ObjectTypes.min < 1) && ((uint)ObjectTypes.max < 0x80000000)) { bVar1 = true; } if (!bVar1) { error(&DAT_080f0a80,0); } bVar1 = false; SpecialObjects[0xe].TypeID = 0; if ((ObjectTypes.min < 1) && ((uint)ObjectTypes.max < 0x80000000)) { bVar1 = true; } if (!bVar1) { error(&DAT_080f0a80,0); } bVar1 = false; SpecialObjects[0xf].TypeID = 0; if ((ObjectTypes.min < 1) && ((uint)ObjectTypes.max < 0x80000000)) { bVar1 = true; } if (!bVar1) { error(&DAT_080f0a80,0); } SpecialObjects[0x10].TypeID = 0; bVar1 = false; if ((ObjectTypes.min < 1) && ((uint)ObjectTypes.max < 0x80000000)) { bVar1 = true; } if (!bVar1) { error(&DAT_080f0a80,0); } bVar1 = false; SpecialObjects[0x11].TypeID = 0; if ((ObjectTypes.min < 1) && ((uint)ObjectTypes.max < 0x80000000)) { bVar1 = true; } if (!bVar1) { error(&DAT_080f0a80,0); } SpecialObjects[0x12].TypeID = 0; bVar1 = false; if ((ObjectTypes.min < 1) && ((uint)ObjectTypes.max < 0x80000000)) { bVar1 = true; } if (!bVar1) { error(&DAT_080f0a80,0); } bVar1 = false; SpecialObjects[0x13].TypeID = 0; if ((ObjectTypes.min < 1) && ((uint)ObjectTypes.max < 0x80000000)) { bVar1 = true; } if (!bVar1) { error(&DAT_080f0a80,0); } SpecialObjects[0x14].TypeID = 0; bVar1 = false; if ((ObjectTypes.min < 1) && ((uint)ObjectTypes.max < 0x80000000)) { bVar1 = true; } if (!bVar1) { error(&DAT_080f0a80,0); } bVar1 = false; SpecialObjects[0x15].TypeID = 0; if ((ObjectTypes.min < 1) && ((uint)ObjectTypes.max < 0x80000000)) { bVar1 = true; } if (!bVar1) { error(&DAT_080f0a80,0); } bVar1 = false; SpecialObjects[0x16].TypeID = 0; if ((ObjectTypes.min < 1) && ((uint)ObjectTypes.max < 0x80000000)) { bVar1 = true; } if (!bVar1) { error(&DAT_080f0a80,0); } bVar1 = false; SpecialObjects[0x17].TypeID = 0; if ((ObjectTypes.min < 1) && ((uint)ObjectTypes.max < 0x80000000)) { bVar1 = true; } if (!bVar1) { error(&DAT_080f0a80,0); } SpecialObjects[0x18].TypeID = 0; bVar1 = false; if ((ObjectTypes.min < 1) && ((uint)ObjectTypes.max < 0x80000000)) { bVar1 = true; } if (!bVar1) { error(&DAT_080f0a80,0); } bVar1 = false; SpecialObjects[0x19].TypeID = 0; if ((ObjectTypes.min < 1) && ((uint)ObjectTypes.max < 0x80000000)) { bVar1 = true; } if (!bVar1) { error(&DAT_080f0a80,0); } SpecialObjects[0x1a].TypeID = 0; bVar1 = false; if ((ObjectTypes.min < 1) && ((uint)ObjectTypes.max < 0x80000000)) { bVar1 = true; } if (!bVar1) { error(&DAT_080f0a80,0); } bVar1 = false; SpecialObjects[0x1b].TypeID = 0; if ((ObjectTypes.min < 1) && ((uint)ObjectTypes.max < 0x80000000)) { bVar1 = true; } if (!bVar1) { error(&DAT_080f0a80,0); } SpecialObjects[0x1c].TypeID = 0; bVar1 = false; if ((ObjectTypes.min < 1) && ((uint)ObjectTypes.max < 0x80000000)) { bVar1 = true; } if (!bVar1) { error(&DAT_080f0a80,0); } bVar1 = false; SpecialObjects[0x1d].TypeID = 0; if ((ObjectTypes.min < 1) && ((uint)ObjectTypes.max < 0x80000000)) { bVar1 = true; } if (!bVar1) { error(&DAT_080f0a80,0); } bVar1 = false; SpecialObjects[0x1e].TypeID = 0; if ((ObjectTypes.min < 1) && ((uint)ObjectTypes.max < 0x80000000)) { bVar1 = true; } if (!bVar1) { error(&DAT_080f0a80,0); } bVar1 = false; SpecialObjects[0x1f].TypeID = 0; if ((ObjectTypes.min < 1) && ((uint)ObjectTypes.max < 0x80000000)) { bVar1 = true; } if (!bVar1) { error(&DAT_080f0a80,0); } SpecialObjects[0x20].TypeID = 0; bVar1 = false; if ((ObjectTypes.min < 1) && ((uint)ObjectTypes.max < 0x80000000)) { bVar1 = true; } if (!bVar1) { error(&DAT_080f0a80,0); } bVar1 = false; SpecialObjects[0x21].TypeID = 0; if ((ObjectTypes.min < 1) && ((uint)ObjectTypes.max < 0x80000000)) { bVar1 = true; } if (!bVar1) { error(&DAT_080f0a80,0); } SpecialObjects[0x22].TypeID = 0; bVar1 = false; if ((ObjectTypes.min < 1) && ((uint)ObjectTypes.max < 0x80000000)) { bVar1 = true; } if (!bVar1) { error(&DAT_080f0a80,0); } bVar1 = false; SpecialObjects[0x23].TypeID = 0; if ((ObjectTypes.min < 1) && ((uint)ObjectTypes.max < 0x80000000)) { bVar1 = true; } if (!bVar1) { error(&DAT_080f0a80,0); } SpecialObjects[0x24].TypeID = 0; bVar1 = false; if ((ObjectTypes.min < 1) && ((uint)ObjectTypes.max < 0x80000000)) { bVar1 = true; } if (!bVar1) { error(&DAT_080f0a80,0); } bVar1 = false; SpecialObjects[0x25].TypeID = 0; if ((ObjectTypes.min < 1) && ((uint)ObjectTypes.max < 0x80000000)) { bVar1 = true; } if (!bVar1) { error(&DAT_080f0a80,0); } bVar1 = false; SpecialObjects[0x26].TypeID = 0; if ((ObjectTypes.min < 1) && ((uint)ObjectTypes.max < 0x80000000)) { bVar1 = true; } if (!bVar1) { error(&DAT_080f0a80,0); } bVar1 = false; SpecialObjects[0x27].TypeID = 0; if ((ObjectTypes.min < 1) && ((uint)ObjectTypes.max < 0x80000000)) { bVar1 = true; } if (!bVar1) { error(&DAT_080f0a80,0); } SpecialObjects[0x28].TypeID = 0; bVar1 = false; if ((ObjectTypes.min < 1) && ((uint)ObjectTypes.max < 0x80000000)) { bVar1 = true; } if (!bVar1) { error(&DAT_080f0a80,0); } bVar1 = false; SpecialObjects[0x29].TypeID = 0; if ((ObjectTypes.min < 1) && ((uint)ObjectTypes.max < 0x80000000)) { bVar1 = true; } if (!bVar1) { error(&DAT_080f0a80,0); } SpecialObjects[0x2a].TypeID = 0; bVar1 = false; if ((ObjectTypes.min < 1) && ((uint)ObjectTypes.max < 0x80000000)) { bVar1 = true; } if (!bVar1) { error(&DAT_080f0a80,0); } bVar1 = false; SpecialObjects[0x2b].TypeID = 0; if ((ObjectTypes.min < 1) && ((uint)ObjectTypes.max < 0x80000000)) { bVar1 = true; } if (!bVar1) { error(&DAT_080f0a80,0); } SpecialObjects[0x2c].TypeID = 0; bVar1 = false; if ((ObjectTypes.min < 1) && ((uint)ObjectTypes.max < 0x80000000)) { bVar1 = true; } if (!bVar1) { error(&DAT_080f0a80,0); } bVar1 = false; SpecialObjects[0x2d].TypeID = 0; if ((ObjectTypes.min < 1) && ((uint)ObjectTypes.max < 0x80000000)) { bVar1 = true; } if (!bVar1) { error(&DAT_080f0a80,0); } SpecialObjects[0x2e].TypeID = 0; bVar1 = false; if ((ObjectTypes.min < 1) && ((uint)ObjectTypes.max < 0x80000000)) { bVar1 = true; } if (!bVar1) { error(&DAT_080f0a80,0); } bVar1 = false; SpecialObjects[0x2f].TypeID = 0; if ((ObjectTypes.min < 1) && (bVar1 = true, ObjectTypes.max < 0)) { bVar1 = false; } if (!bVar1) { error(&DAT_080f0a80,0); } SpecialObjects[0x30].TypeID = 0; } return; } void __tcf_0(void *param_1) { if (ObjectTypes.entry == (TObjectType *)0x0) { return; } operator_delete__(ObjectTypes.entry); return; } // WARNING: Unknown calling convention -- yet parameter storage is locked void _GLOBAL__I_FlagNames(void) { __static_initialization_and_destruction_0(1,0xffff); return; } void __static_initialization_and_destruction_0(int __initialize_p,int __priority) { if ((__priority == 0xffff) && (__initialize_p == 1)) { NONE.ObjectID = 0; Semaphore::Semaphore(&LogfileMutex,1); __cxa_atexit(__tcf_0,0,&__dso_handle); } return; } void __tcf_0(void *param_1) { int in_stack_00000008; Semaphore::~Semaphore(&LogfileMutex,in_stack_00000008); return; } // WARNING: Unknown calling convention -- yet parameter storage is locked void _GLOBAL__I_IsGameServer(void) { __static_initialization_and_destruction_0(1,0xffff); return; } void __static_initialization_and_destruction_0(int __initialize_p,int __priority) { TCronEntry *pTVar1; int iVar2; if (__priority == 0xffff) { if (__initialize_p == 1) { NONE.ObjectID = 0; CronEntry.initialized = false; CronEntry.init.Obj.ObjectID = 0; CronEntry.min = 0; CronEntry.max = 0x100; CronEntry.start = 0; CronEntry.space = 0x101; CronEntry.block = 0x100; CronEntry.entry = (TCronEntry *)operator_new__(0x1010); iVar2 = 0x100; pTVar1 = CronEntry.entry; do { (pTVar1->Obj).ObjectID = 0; iVar2 = iVar2 + -1; pTVar1 = pTVar1 + 1; } while (iVar2 != -1); __cxa_atexit(__tcf_0,0,&__dso_handle); } if (__initialize_p == 1) { DepotInfo.initialized = false; DepotInfo.max = 4; DepotInfo.space = 5; DepotInfo.min = 0; DepotInfo.start = 0; DepotInfo.block = 5; DepotInfo.entry = (TDepotInfo *)operator_new__(0x78); __cxa_atexit(__tcf_1,0,&__dso_handle); Mark.initialized = false; Mark.space = 5; Mark.min = 0; Mark.max = 4; Mark.start = 0; Mark.block = 5; Mark.entry = (TMark *)operator_new__(0xa0); __cxa_atexit(__tcf_2,0,&__dso_handle); TDynamicWriteBuffer::TDynamicWriteBuffer(&HelpBuffer,0x10000); __cxa_atexit(__tcf_3,0,&__dso_handle); } } return; } void __tcf_0(void *param_1) { if (CronEntry.entry == (TCronEntry *)0x0) { return; } operator_delete__(CronEntry.entry); return; } void __tcf_1(void *param_1) { if (DepotInfo.entry == (TDepotInfo *)0x0) { return; } operator_delete__(DepotInfo.entry); return; } void __tcf_2(void *param_1) { if (Mark.entry == (TMark *)0x0) { return; } operator_delete__(Mark.entry); return; } void __tcf_3(void *param_1) { int in_stack_00000008; TDynamicWriteBuffer::~TDynamicWriteBuffer(&HelpBuffer,in_stack_00000008); return; } // WARNING: Unknown calling convention -- yet parameter storage is locked void _GLOBAL__I_InstanceAttributeNames(void) { __static_initialization_and_destruction_0(1,0xffff); return; } void __static_initialization_and_destruction_0(int __initialize_p,int __priority) { THelpDepot *pTVar1; undefined4 *puVar2; int iVar3; int local_20; THouse *local_1c; if (__priority == 0xffff) { if (__initialize_p == 1) { NONE.ObjectID = 0; HouseArea.initialized = false; HouseArea.max = 99; HouseArea.min = 0; HouseArea.start = 0; HouseArea.space = 100; HouseArea.block = 0x32; HouseArea.entry = (THouseArea *)operator_new__(0x4b0); __cxa_atexit(__tcf_0,0,&__dso_handle); vector<>::vector(&House.init.Subowner,0,4,5); // try { // try from 08060b2c to 08060b30 has its CatchHandler @ 08060c98 vector<>::vector(&House.init.Guest,0,9,10); House.initialized = false; House.min = 0; House.max = 99; House.space = 100; House.start = 0; House.block = 100; // try { // try from 08060b78 to 08060b7c has its CatchHandler @ 08060d52 puVar2 = (undefined4 *)operator_new__(0x141e4); *puVar2 = 100; local_20 = 99; local_1c = (THouse *)(puVar2 + 1); do { // try { // try from 08060bb7 to 08060bbb has its CatchHandler @ 08060d4a vector<>::vector(&local_1c->Subowner,0,4,5); // try { // try from 08060bdf to 08060be3 has its CatchHandler @ 08060cb7 vector<>::vector(&local_1c->Guest,0,9,10); local_20 = local_20 + -1; local_1c = local_1c + 1; } while (local_20 != -1); House.entry = (THouse *)(puVar2 + 1); __cxa_atexit(__tcf_1,0,&__dso_handle); } if (__initialize_p == 1) { HelpDepot.initialized = false; HelpDepot.start = 1; HelpDepot.init.Box.ObjectID = 0; HelpDepot.max = 10; HelpDepot.min = 1; HelpDepot.space = 10; HelpDepot.block = 10; HelpDepot.entry = (THelpDepot *)operator_new__(0x78); iVar3 = 9; pTVar1 = HelpDepot.entry; do { (pTVar1->Box).ObjectID = 0; iVar3 = iVar3 + -1; pTVar1 = pTVar1 + 1; } while (iVar3 != -1); __cxa_atexit(__tcf_2,0,&__dso_handle); } } return; } THouseArea * GetHouseArea(ushort ID) { THouseArea *pTVar1; int i; int i_00; i_00 = 0; if (0 < HouseAreas) { do { pTVar1 = vector::operator()(&HouseArea,i_00); if (pTVar1->ID == ID) { pTVar1 = vector::operator()(&HouseArea,i_00); return pTVar1; } i_00 = i_00 + 1; } while (i_00 < HouseAreas); } error("GetHouseArea: Gebiet mit ID %d nicht gefunden.\n",(uint)ID); return (THouseArea *)0x0; } int CheckAccessRight(char *Rule,TPlayer *pl) { char cVar1; bool bVar2; char *pcVar3; bool local_ec; bool PositiveRule; char local_dc [4]; char Pattern [200]; if (Rule == (char *)0x0) { pcVar3 = "CheckAccessRight: Regel ist NULL.\n"; } else { if (pl != (TPlayer *)0x0) { cVar1 = *Rule; if (cVar1 == '!') { Rule = Rule + 1; } local_ec = cVar1 != '!'; pcVar3 = strchr(Rule,0x40); if (pcVar3 == (char *)0x0) { pcVar3 = (pl->super_TCreature).Name; } else { if (pl->Guild[0] == '\0') { return 0; } if (pl->Rank[0] == '\0') { snprintf(local_dc,200,"@%s",pl->Guild); } else { snprintf(local_dc,200,"%s@%s",pl->Rank,pl->Guild); } pcVar3 = local_dc; } bVar2 = MatchString(Rule,pcVar3); if (!bVar2) { return 0; } return (uint)local_ec * 2 + -1; } pcVar3 = "CheckAccessRight: pl ist NULL.\n"; } error(pcVar3); return 0; } // WARNING: Variable defined which should be unmapped: low THouse * GetHouse(ushort ID) { THouse *pTVar1; int iVar2; int test; int i; int high; int iVar3; int local_14; int low; local_14 = 0; iVar3 = Houses + -1; if (-1 < iVar3) { do { i = (local_14 + iVar3) / 2; pTVar1 = vector::operator()(&House,i); if (pTVar1->ID == ID) { pTVar1 = vector::operator()(&House,i); return pTVar1; } pTVar1 = vector::operator()(&House,i); iVar2 = i + 1; if (ID <= pTVar1->ID) { iVar2 = local_14; } pTVar1 = vector::operator()(&House,i); if (ID < pTVar1->ID) { iVar3 = i + -1; } local_14 = iVar2; } while (iVar2 <= iVar3); } error("GetHouse: Haus mit ID %d nicht gefunden.\n",(uint)ID); return (THouse *)0x0; } bool IsOwner(ushort HouseID,TPlayer *pl) { THouse *pTVar1; THouse *house; pTVar1 = GetHouse(HouseID); if (pTVar1 == (THouse *)0x0) { error("IsOwner: Haus mit ID %d existiert nicht.\n",(uint)HouseID); } else { if (pl != (TPlayer *)0x0) { return pTVar1->OwnerID == (pl->super_TCreature).ID; } error("IsOwner: pl ist NULL.\n"); } return false; } bool IsSubowner(ushort HouseID,TPlayer *pl,int TimeStamp) { THouse *pTVar1; THouseGuest *Rule; int iVar2; THouse *house; int i; pTVar1 = GetHouse(HouseID); if (pTVar1 == (THouse *)0x0) { error("IsSubowner: Haus mit ID %d existiert nicht.\n",(uint)HouseID); } else if (pl == (TPlayer *)0x0) { error("IsSubowner: pl ist NULL.\n"); } else if ((pTVar1->LastTransition <= TimeStamp) && (i = 0, 0 < pTVar1->Subowners)) { do { Rule = vector<>::operator()(&pTVar1->Subowner,i); iVar2 = CheckAccessRight(Rule->Name,pl); if (iVar2 == -1) { return false; } if (iVar2 == 1) { return true; } i = i + 1; } while (i < pTVar1->Subowners); } return false; } bool IsGuest(ushort HouseID,TPlayer *pl,int TimeStamp) { THouse *pTVar1; THouseGuest *Rule; int iVar2; THouse *house; int i; pTVar1 = GetHouse(HouseID); if (pTVar1 == (THouse *)0x0) { error("IsGuest: Haus mit ID %d existiert nicht.\n",(uint)HouseID); } else if (pl == (TPlayer *)0x0) { error("IsGuest: pl ist NULL.\n"); } else if ((pTVar1->LastTransition <= TimeStamp) && (i = 0, 0 < pTVar1->Guests)) { do { Rule = vector<>::operator()(&pTVar1->Guest,i); iVar2 = CheckAccessRight(Rule->Name,pl); if (iVar2 == -1) { return false; } if (iVar2 == 1) { return true; } i = i + 1; } while (i < pTVar1->Guests); } return false; } bool IsInvited(ushort HouseID,TPlayer *pl,int TimeStamp) { bool bVar1; THouse *pTVar2; THouse *house; bool bVar3; if (pl == (TPlayer *)0x0) { error("IsInvited: pl ist NULL.\n"); bVar1 = false; } else { bVar1 = false; pTVar2 = GetHouse(HouseID); if (pTVar2 == (THouse *)0x0) { error("IsOwner: Haus mit ID %d existiert nicht.\n",(uint)HouseID); bVar3 = false; } else { bVar3 = pTVar2->OwnerID == (pl->super_TCreature).ID; } if (((bVar3) || (bVar3 = IsSubowner(HouseID,pl,TimeStamp), bVar3)) || (bVar3 = IsGuest(HouseID,pl,TimeStamp), bVar3)) { bVar1 = true; } } return bVar1; } char * GetHouseName(ushort HouseID) { THouse *house; THouse *pTVar1; char *pcVar2; pTVar1 = GetHouse(HouseID); if (pTVar1 == (THouse *)0x0) { error("GetHouseName: Haus mit ID %d existiert nicht.\n",(uint)HouseID); pcVar2 = (char *)0x0; } else { pcVar2 = pTVar1->Name; } return pcVar2; } char * GetHouseOwner(ushort HouseID) { THouse *house; THouse *pTVar1; char *pcVar2; pTVar1 = GetHouse(HouseID); if (pTVar1 == (THouse *)0x0) { error("GetHouseOwner: Haus mit ID %d existiert nicht.\n",(uint)HouseID); pcVar2 = (char *)0x0; } else { pcVar2 = pTVar1->OwnerName; } return pcVar2; } void ShowSubownerList(ushort HouseID,TPlayer *pl,char *Buffer) { THouse *pTVar1; THouse *pTVar2; THouseGuest *__src; undefined4 *puVar3; THouse *house_1; int i; THouse *house; bool bVar4; char *Text; // try { // try from 08061299 to 080613e6 has its CatchHandler @ 080613f0 pTVar1 = GetHouse(HouseID); if (pTVar1 == (THouse *)0x0) { error("ShowSubownerList: Haus mit ID %d existiert nicht.\n",(uint)HouseID); } else { if (pl == (TPlayer *)0x0) { Text = "ShowSubownerList: pl ist NULL.\n"; } else { if (Buffer != (char *)0x0) { pTVar2 = GetHouse(HouseID); if (pTVar2 == (THouse *)0x0) { error("IsOwner: Haus mit ID %d existiert nicht.\n",(uint)HouseID); bVar4 = false; } else { bVar4 = pTVar2->OwnerID == (pl->super_TCreature).ID; } if (bVar4) { print(); i = 0; sprintf(Buffer,"# Subowners of %s\n",pTVar1->Name); if (0 < pTVar1->Subowners) { do { __src = vector<>::operator()(&pTVar1->Subowner,i); i = i + 1; strcat(Buffer,__src->Name); strcat(Buffer,"\n"); } while (i < pTVar1->Subowners); } return; } puVar3 = (undefined4 *)__cxa_allocate_exception(4); *puVar3 = 1; goto LAB_0806137f; } Text = "ShowSubownerList: Buffer ist NULL.\n"; } error(Text); } puVar3 = (undefined4 *)__cxa_allocate_exception(4); *puVar3 = 0xffffffff; LAB_0806137f: // WARNING: Subroutine does not return __cxa_throw(puVar3,&RESULT::typeinfo,0); } void ShowGuestList(ushort HouseID,TPlayer *pl,char *Buffer) { THouse *pTVar1; THouse *pTVar2; THouseGuest *__src; undefined4 *puVar3; THouse *house_1; int i; THouse *house; bool bVar4; char *Text; // try { // try from 08061429 to 080615b2 has its CatchHandler @ 080615b5 pTVar1 = GetHouse(HouseID); if (pTVar1 == (THouse *)0x0) { error("ShowGuestList: Haus mit ID %d existiert nicht.\n",(uint)HouseID); } else { if (pl == (TPlayer *)0x0) { Text = "ShowGuestList: pl ist NULL.\n"; } else { if (Buffer != (char *)0x0) { pTVar2 = GetHouse(HouseID); if (pTVar2 == (THouse *)0x0) { error("IsOwner: Haus mit ID %d existiert nicht.\n",(uint)HouseID); bVar4 = false; } else { bVar4 = pTVar2->OwnerID == (pl->super_TCreature).ID; } if (((bVar4) || (bVar4 = IsSubowner(HouseID,pl,0x7fffffff), bVar4)) && (bVar4 = CheckRight((pl->super_TCreature).ID,PREMIUM_ACCOUNT), bVar4)) { print(); i = 0; sprintf(Buffer,"# Guests of %s\n",pTVar1->Name); if (0 < pTVar1->Guests) { do { __src = vector<>::operator()(&pTVar1->Guest,i); i = i + 1; strcat(Buffer,__src->Name); strcat(Buffer,"\n"); } while (i < pTVar1->Guests); } return; } puVar3 = (undefined4 *)__cxa_allocate_exception(4); *puVar3 = 1; goto LAB_0806152d; } Text = "ShowGuestList: Buffer ist NULL.\n"; } error(Text); } puVar3 = (undefined4 *)__cxa_allocate_exception(4); *puVar3 = 0xffffffff; LAB_0806152d: // WARNING: Subroutine does not return __cxa_throw(puVar3,&RESULT::typeinfo,0); } // WARNING: Variable defined which should be unmapped: house void ChangeSubowners(ushort HouseID,TPlayer *pl,char *Buffer) { char cVar1; int l; THouse *pTVar2; THouse *pTVar3; size_t sVar4; char *pcVar5; int iVar6; THouseGuest *__dest; undefined4 *puVar7; THouse *house_1; uint uVar8; bool bVar9; THouse *house; uVar8 = (uint)HouseID; // try { // try from 080615ec to 08061790 has its CatchHandler @ 08061793 pTVar2 = GetHouse(HouseID); if (pTVar2 == (THouse *)0x0) { error("ChangeSubowners: Haus mit ID %d existiert nicht.\n",uVar8); } else { if (pl == (TPlayer *)0x0) { pcVar5 = "ChangeSubowners: pl ist NULL.\n"; } else { if (Buffer != (char *)0x0) { pTVar3 = GetHouse(HouseID); if (pTVar3 == (THouse *)0x0) { error("IsOwner: Haus mit ID %d existiert nicht.\n",uVar8); bVar9 = false; } else { bVar9 = pTVar3->OwnerID == (pl->super_TCreature).ID; } if (bVar9) { Log("houses",&DAT_080f3120,(pl->super_TCreature).Name,uVar8); sVar4 = strlen(Buffer); Buffer[sVar4] = '\n'; Buffer[sVar4 + 1] = '\0'; pTVar2->Subowners = 0; cVar1 = *Buffer; do { if (cVar1 == '\0') { LAB_080616f4: KickGuests(HouseID); return; } pcVar5 = strchr(Buffer,10); if (pcVar5 == (char *)0x0) { error("ChangeSubowners: Kein Newline am Textende.\n"); goto LAB_080616f4; } if ((*Buffer != '#') && (Buffer != pcVar5)) { iVar6 = (int)pcVar5 - (int)Buffer; if (0x3b < iVar6) { iVar6 = 0x3b; } Buffer[iVar6] = '\0'; __dest = vector<>::operator()(&pTVar2->Subowner,pTVar2->Subowners); strcpy(__dest->Name,Buffer); iVar6 = pTVar2->Subowners + 1; pTVar2->Subowners = iVar6; if (9 < iVar6) goto LAB_080616f4; } cVar1 = pcVar5[1]; Buffer = pcVar5 + 1; } while( true ); } puVar7 = (undefined4 *)__cxa_allocate_exception(4); *puVar7 = 1; goto LAB_08061729; } pcVar5 = "ChangeSubowners: Buffer ist NULL.\n"; } error(pcVar5); } puVar7 = (undefined4 *)__cxa_allocate_exception(4); *puVar7 = 0xffffffff; LAB_08061729: // WARNING: Subroutine does not return __cxa_throw(puVar7,&RESULT::typeinfo,0); } // WARNING: Variable defined which should be unmapped: house void ChangeGuests(ushort HouseID,TPlayer *pl,char *Buffer) { char cVar1; int l; THouse *pTVar2; THouse *pTVar3; size_t sVar4; char *pcVar5; int iVar6; THouseGuest *__dest; undefined4 *puVar7; THouse *house_1; uint uVar8; bool bVar9; THouse *house; uVar8 = (uint)HouseID; // try { // try from 080617cc to 080619af has its CatchHandler @ 080619b2 pTVar2 = GetHouse(HouseID); if (pTVar2 == (THouse *)0x0) { error("ChangeGuests: Haus mit ID %d existiert nicht.\n",uVar8); } else { if (pl == (TPlayer *)0x0) { pcVar5 = "ChangeGuests: pl ist NULL.\n"; } else { if (Buffer != (char *)0x0) { pTVar3 = GetHouse(HouseID); if (pTVar3 == (THouse *)0x0) { error("IsOwner: Haus mit ID %d existiert nicht.\n",uVar8); bVar9 = false; } else { bVar9 = pTVar3->OwnerID == (pl->super_TCreature).ID; } if (((bVar9) || (bVar9 = IsSubowner(HouseID,pl,0x7fffffff), bVar9)) && (bVar9 = CheckRight((pl->super_TCreature).ID,PREMIUM_ACCOUNT), bVar9)) { Log("houses",&DAT_080f3240,(pl->super_TCreature).Name,uVar8); sVar4 = strlen(Buffer); Buffer[sVar4] = '\n'; Buffer[sVar4 + 1] = '\0'; pTVar2->Guests = 0; cVar1 = *Buffer; do { if (cVar1 == '\0') { LAB_080618f2: KickGuests(HouseID); return; } pcVar5 = strchr(Buffer,10); if (pcVar5 == (char *)0x0) { error("ChangeGuests: Kein Newline am Textende.\n"); goto LAB_080618f2; } if ((*Buffer != '#') && (Buffer != pcVar5)) { iVar6 = (int)pcVar5 - (int)Buffer; if (0x3b < iVar6) { iVar6 = 0x3b; } Buffer[iVar6] = '\0'; __dest = vector<>::operator()(&pTVar2->Guest,pTVar2->Guests); strcpy(__dest->Name,Buffer); iVar6 = pTVar2->Guests + 1; pTVar2->Guests = iVar6; if (99 < iVar6) goto LAB_080618f2; } cVar1 = pcVar5[1]; Buffer = pcVar5 + 1; } while( true ); } puVar7 = (undefined4 *)__cxa_allocate_exception(4); *puVar7 = 1; goto LAB_08061927; } pcVar5 = "ChangeGuests: Buffer ist NULL.\n"; } error(pcVar5); } puVar7 = (undefined4 *)__cxa_allocate_exception(4); *puVar7 = 0xffffffff; LAB_08061927: // WARNING: Subroutine does not return __cxa_throw(puVar7,&RESULT::typeinfo,0); } // WARNING: Variable defined which should be unmapped: z_local void GetExitPosition(ushort HouseID,int *x,int *y,int *z) { THouse *pTVar1; THouse *house; int *z_local; pTVar1 = GetHouse(HouseID); if (pTVar1 != (THouse *)0x0) { *x = pTVar1->ExitX; *y = pTVar1->ExitY; *z = pTVar1->ExitZ; return; } error("GetExitPosition: Haus mit ID %d existiert nicht.\n"); return; } void KickGuest(ushort HouseID,TPlayer *Guest) { ulong uVar1; bool bVar2; bool bVar3; RESULT r; THouse *pTVar4; ulong uVar5; undefined4 *puVar6; THouse *house; Object local_6c [4]; Object local_5c [4]; Object local_4c [4]; Object local_3c; Object Bed; Object Obj; // try { // try from 08061a5c to 08061bbc has its CatchHandler @ 08061cc7 pTVar4 = GetHouse(HouseID); if (pTVar4 == (THouse *)0x0) { error("KickGuest(houses 1): Haus mit ID %d existiert nicht.\n",(uint)HouseID); } else { if (Guest != (TPlayer *)0x0) { uVar1 = (Guest->super_TCreature).CrObject.ObjectID; local_3c.ObjectID = uVar1; GraphicalEffect(&local_3c,3); GetFirstObject(); while( true ) { bVar2 = false; local_4c[0].ObjectID = NONE.ObjectID; local_5c[0].ObjectID = NONE.ObjectID; if (local_3c.ObjectID != NONE.ObjectID) { Object::getObjectType(local_5c); bVar3 = ObjectType::getFlag((ObjectType *)local_5c,BED); if (!bVar3) { bVar2 = true; } } if (!bVar2) break; Object::getNextObject(local_4c); local_3c.ObjectID = local_4c[0].ObjectID; } bVar2 = false; local_5c[0].ObjectID = NONE.ObjectID; local_4c[0].ObjectID = NONE.ObjectID; if (local_3c.ObjectID != NONE.ObjectID) { // try { // try from 08061bf0 to 08061c81 has its CatchHandler @ 08061cc7 uVar5 = Object::getAttribute(&local_3c,TEXTSTRING); if (uVar5 != 0) { bVar2 = true; } } if (bVar2) { print(); local_4c[0].ObjectID = local_3c.ObjectID; local_6c[0].ObjectID = local_3c.ObjectID; // try { // try from 08061bdb to 08061bdf has its CatchHandler @ 08061c84 UseObjects(0,local_6c,local_4c); } local_6c[0].ObjectID = NONE.ObjectID; GetMapContainer((int)local_5c,pTVar4->ExitX,pTVar4->ExitY); local_4c[0].ObjectID = uVar1; Move(0,local_4c,local_5c,-1,false,local_6c); local_6c[0].ObjectID = uVar1; GraphicalEffect(local_6c,0xb); return; } error("KickGuest(houses 1): Guest ist NULL.\n"); } puVar6 = (undefined4 *)__cxa_allocate_exception(4); *puVar6 = 0xffffffff; // WARNING: Subroutine does not return __cxa_throw(puVar6,&RESULT::typeinfo,0); } // WARNING: Variable defined which should be unmapped: SelfKick void KickGuest(ushort HouseID,TPlayer *Host,TPlayer *Guest) { ushort uVar1; THouse *house; THouse *pTVar2; undefined4 *puVar3; THouse *house_1; uint uVar4; bool bVar5; bool bVar6; char *Text; bool SelfKick; uVar4 = (uint)HouseID; // try { // try from 08061cfc to 08061eaa has its CatchHandler @ 08061eb0 pTVar2 = GetHouse(HouseID); if (pTVar2 == (THouse *)0x0) { error("KickGuest(houses 2): Haus mit ID %d existiert nicht.\n",uVar4); } else { if (Host == (TPlayer *)0x0) { Text = "KickGuest(houses 2): Host ist NULL.\n"; } else { if (Guest != (TPlayer *)0x0) { bVar5 = Host == Guest; uVar1 = GetHouseID((Guest->super_TCreature).posx,(Guest->super_TCreature).posy, (Guest->super_TCreature).posz); if (uVar1 == HouseID) { pTVar2 = GetHouse(HouseID); if (pTVar2 == (THouse *)0x0) { error("IsOwner: Haus mit ID %d existiert nicht.\n",uVar4); bVar6 = false; } else { bVar6 = pTVar2->OwnerID == (Host->super_TCreature).ID; } if ((((bVar6) || (bVar6 = IsSubowner(HouseID,Host,0x7fffffff), bVar6)) || (bVar5)) && ((bVar6 = CheckRight((Guest->super_TCreature).ID,ENTER_HOUSES), !bVar6 || (bVar5)))) { pTVar2 = GetHouse(HouseID); if (pTVar2 == (THouse *)0x0) { error("IsOwner: Haus mit ID %d existiert nicht.\n",uVar4); LAB_08061e13: bVar6 = false; } else { if (Guest == (TPlayer *)0x0) { error("IsOwner: pl ist NULL.\n"); goto LAB_08061e13; } bVar6 = pTVar2->OwnerID == (Guest->super_TCreature).ID; } if ((!bVar6) || (bVar5)) { KickGuest(HouseID,Guest); return; } } } puVar3 = (undefined4 *)__cxa_allocate_exception(4); *puVar3 = 1; goto LAB_08061def; } Text = "KickGuest(houses 2): Guest ist NULL.\n"; } error(Text); } puVar3 = (undefined4 *)__cxa_allocate_exception(4); *puVar3 = 0xffffffff; LAB_08061def: // WARNING: Subroutine does not return __cxa_throw(puVar3,&RESULT::typeinfo,0); } void KickGuests(ushort HouseID) { bool bVar1; ushort uVar2; THouse *pTVar3; ulong CharacterID; TPlayer *pl; undefined4 *puVar4; THouse *house; ulong ID; TPlayer *Guest; undefined1 local_4c [4]; TFindCreatures Search; // try { // try from 08061ee6 to 08061ff6 has its CatchHandler @ 08061ff7 pTVar3 = GetHouse(HouseID); if (pTVar3 != (THouse *)0x0) { TFindCreatures::TFindCreatures ((TFindCreatures *)local_4c,MaxHouseX,MaxHouseY,pTVar3->CenterX,pTVar3->CenterY,1) ; while( true ) { CharacterID = TFindCreatures::getNext((TFindCreatures *)local_4c); if (CharacterID == 0) break; pl = GetPlayer(CharacterID); uVar2 = GetHouseID((pl->super_TCreature).posx,(pl->super_TCreature).posy, (pl->super_TCreature).posz); if (uVar2 == HouseID) { bVar1 = IsInvited(HouseID,pl,0x7fffffff); if (!bVar1) { bVar1 = CheckRight(CharacterID,ENTER_HOUSES); if (!bVar1) { KickGuest(HouseID,pl); } } } } return; } error("KickGuests: Haus mit ID %d existiert nicht.\n",(uint)HouseID); puVar4 = (undefined4 *)__cxa_allocate_exception(4); *puVar4 = 0xffffffff; // WARNING: Subroutine does not return __cxa_throw(puVar4,&RESULT::typeinfo,0); } bool MayOpenDoor(Object *Door,TPlayer *pl) { char cVar1; int iVar2; bool bVar3; ulong Number; size_t sVar4; char *pcVar5; int iVar6; char *Text; undefined4 local_50; char *pcVar7; char acStack_44 [20]; undefined1 *local_30; Object local_2c [7]; local_30 = &stack0xffffffb4; local_50 = 0x806202d; bVar3 = Object::exists(Door); if (bVar3) { if (pl == (TPlayer *)0x0) { pcVar7 = "MayOpenDoor: pl ist NULL.\n"; } else { local_50 = 0x806204f; Object::getObjectType(local_2c); local_50 = 0x8062062; bVar3 = ObjectType::getFlag((ObjectType *)local_2c,NAMEDOOR); if (bVar3) { local_50 = 0x8062072; Object::getObjectType(local_2c); local_50 = 0x8062085; bVar3 = ObjectType::getFlag((ObjectType *)local_2c,TEXT); if (bVar3) { local_50 = 0x80620b4; Number = Object::getAttribute(Door,TEXTSTRING); local_50 = 0x80620bc; pcVar7 = GetDynamicString(Number); if (pcVar7 == (char *)0x0) { return false; } local_50 = 0x80620cc; sVar4 = strlen(pcVar7); iVar2 = -(sVar4 + 0x11 & 0xfffffff0); *(char **)((int)local_2c + iVar2 + -0x1c) = pcVar7; pcVar7 = acStack_44 + iVar2; *(char **)((int)local_2c + iVar2 + -0x20) = pcVar7; *(undefined4 *)((int)&local_50 + iVar2) = 0x80620e6; strcpy(*(char **)((int)local_2c + iVar2 + -0x20), *(char **)((int)local_2c + iVar2 + -0x1c)); acStack_44[sVar4 + iVar2] = '\n'; acStack_44[sVar4 + iVar2 + 1] = '\0'; cVar1 = acStack_44[iVar2]; do { if (cVar1 == '\0') { return false; } *(undefined4 *)((int)local_2c + iVar2 + -0x1c) = 10; *(char **)((int)local_2c + iVar2 + -0x20) = pcVar7; *(undefined4 *)((int)&local_50 + iVar2) = 0x8062110; pcVar5 = strchr(*(char **)((int)local_2c + iVar2 + -0x20), *(int *)((int)local_2c + iVar2 + -0x1c)); if (pcVar5 == (char *)0x0) { *(char **)((int)local_2c + iVar2 + -0x20) = "MayOpenDoor: Kein Newline am Textende.\n"; *(undefined4 *)((int)&local_50 + iVar2) = 0x806215d; error(*(char **)((int)local_2c + iVar2 + -0x20)); return false; } if ((*pcVar7 != '#') && (pcVar7 != pcVar5)) { *pcVar5 = '\0'; *(char **)((int)local_2c + iVar2 + -0x20) = pcVar7; *(TPlayer **)((int)local_2c + iVar2 + -0x1c) = pl; *(undefined4 *)((int)&local_50 + iVar2) = 0x8062131; iVar6 = CheckAccessRight(*(char **)((int)local_2c + iVar2 + -0x20), *(TPlayer **)((int)local_2c + iVar2 + -0x1c)); if (iVar6 == -1) { return false; } if (iVar6 == 1) { return true; } } cVar1 = pcVar5[1]; pcVar7 = pcVar5 + 1; } while( true ); } } pcVar7 = &DAT_080f3580; } } else { pcVar7 = &DAT_080f3600; } local_50 = 0x8062095; error(pcVar7); return false; } void ShowNameDoor(Object *Door,TPlayer *pl,char *Buffer) { bool bVar1; ushort ID; char *Text; THouse *pTVar2; ulong Number; char *pcVar3; undefined4 *puVar4; THouse *house; ushort HouseID; uint uVar5; char *pcVar6; int local_38; int x; int y; int z; // try { // try from 08062198 to 080623b3 has its CatchHandler @ 080623d0 bVar1 = Object::exists(Door); if (bVar1) { if (pl == (TPlayer *)0x0) { pcVar3 = "ShowNameDoor: pl ist NULL.\n"; goto LAB_080623af; } if (Buffer == (char *)0x0) { pcVar3 = "ShowNameDoor: Buffer ist NULL.\n"; goto LAB_080623af; } z = Door->ObjectID; GetObjectCoordinates((Object *)&z,&local_38,&x,&y); ID = GetHouseID(local_38,x,y); uVar5 = (uint)ID; if (ID == 0) { pcVar3 = &DAT_080f36e0; } else { pTVar2 = GetHouse(ID); if (pTVar2 == (THouse *)0x0) { error("IsOwner: Haus mit ID %d existiert nicht.\n",uVar5); bVar1 = false; } else { bVar1 = pTVar2->OwnerID == (pl->super_TCreature).ID; } if (!bVar1) { pcVar3 = (pl->super_TCreature).Name; pcVar6 = "Spieler %s ist nicht Mieter des Hauses %d.\n"; print(); puVar4 = (undefined4 *)__cxa_allocate_exception(4,pcVar6,pcVar3,uVar5); *puVar4 = 1; goto LAB_0806231d; } print(); Object::getObjectType((Object *)&z); bVar1 = ObjectType::getFlag((ObjectType *)&z,TEXT); if (bVar1) { Number = Object::getAttribute(Door,TEXTSTRING); pcVar3 = GetDynamicString(Number); if (pcVar3 == (char *)0x0) { Buffer[0] = '#'; Buffer[1] = ' '; Buffer[2] = 'P'; Buffer[3] = 'l'; Buffer[4] = 'a'; Buffer[5] = 'y'; Buffer[6] = 'e'; Buffer[7] = 'r'; Buffer[8] = 's'; Buffer[9] = ' '; Buffer[10] = 'a'; Buffer[0xb] = 'l'; Buffer[0xc] = 'l'; Buffer[0xd] = 'o'; Buffer[0xe] = 'w'; Buffer[0xf] = 'e'; Buffer[0x10] = 'd'; Buffer[0x11] = ' '; Buffer[0x12] = 't'; Buffer[0x13] = 'o'; Buffer[0x14] = ' '; Buffer[0x15] = 'o'; Buffer[0x16] = 'p'; Buffer[0x17] = 'e'; Buffer[0x18] = 'n'; Buffer[0x19] = ' '; Buffer[0x1a] = 't'; Buffer[0x1b] = 'h'; Buffer[0x1c] = 'i'; Buffer[0x1d] = 's'; Buffer[0x1e] = ' '; Buffer[0x1f] = 'd'; *(uchar **)(Buffer + 0x20) = CommunicationThreadStacks + 0xa750f; Buffer[0x24] = '\0'; } else { strcpy(Buffer,pcVar3); } return; } pcVar3 = &DAT_080f3640; } error(pcVar3,local_38,x,y); } else { pcVar3 = &DAT_080f3760; LAB_080623af: error(pcVar3); } puVar4 = (undefined4 *)__cxa_allocate_exception(4); *puVar4 = 0xffffffff; LAB_0806231d: // WARNING: Subroutine does not return __cxa_throw(puVar4,&RESULT::typeinfo,0); } void ChangeNameDoor(Object *Door,TPlayer *pl,char *Buffer) { bool bVar1; ushort ID; THouse *pTVar2; ulong uVar3; undefined4 *puVar4; THouse *house; ushort HouseID; char *pcVar5; int local_38; int x; int y; int z; // try { // try from 08062408 to 080625ed has its CatchHandler @ 08062605 bVar1 = Object::exists(Door); if (bVar1) { if (pl == (TPlayer *)0x0) { pcVar5 = "ChangeNameDoor: pl ist NULL.\n"; goto LAB_080625e9; } if (Buffer == (char *)0x0) { pcVar5 = "ChangeNameDoor: Buffer ist NULL.\n"; goto LAB_080625e9; } z = Door->ObjectID; GetObjectCoordinates((Object *)&z,&local_38,&x,&y); ID = GetHouseID(local_38,x,y); if (ID == 0) { pcVar5 = &DAT_080f3840; } else { pTVar2 = GetHouse(ID); if (pTVar2 == (THouse *)0x0) { error("IsOwner: Haus mit ID %d existiert nicht.\n",(uint)ID); bVar1 = false; } else { bVar1 = pTVar2->OwnerID == (pl->super_TCreature).ID; } if (!bVar1) { puVar4 = (undefined4 *)__cxa_allocate_exception(4); *puVar4 = 1; goto LAB_08062581; } Object::getObjectType((Object *)&z); bVar1 = ObjectType::getFlag((ObjectType *)&z,TEXT); if (bVar1) { Log("houses",&DAT_080f37a0,(pl->super_TCreature).Name,(uint)ID,local_38,x,y); uVar3 = Object::getAttribute(Door,TEXTSTRING); DeleteDynamicString(uVar3); z = Door->ObjectID; uVar3 = AddDynamicString(Buffer); Change((Object *)&z,TEXTSTRING,uVar3); return; } pcVar5 = &DAT_080f37e0; } error(pcVar5,local_38,x,y); } else { pcVar5 = &DAT_080f38e0; LAB_080625e9: error(pcVar5); } puVar4 = (undefined4 *)__cxa_allocate_exception(4); *puVar4 = 0xffffffff; LAB_08062581: // WARNING: Subroutine does not return __cxa_throw(puVar4,&RESULT::typeinfo,0); } int DeleteCoins(Object *Con,ObjectType *Type,int Amount) { bool bVar1; ulong uVar2; Object local_5c [4]; Object local_4c [4]; ObjectType local_3c [4]; Object local_2c; Object Obj; do { if (Amount == 0) { return 0; } local_3c[0].TypeID = Con->ObjectID; GetFirstContainerObject(&local_2c); if (local_2c.ObjectID == NONE.ObjectID) { return Amount; } while( true ) { local_4c[0].ObjectID = NONE.ObjectID; local_3c[0].TypeID = NONE.ObjectID; Object::getObjectType(local_4c); ObjectType::setTypeID(local_3c,Type->TypeID); if (local_4c[0].ObjectID == local_3c[0].TypeID) break; Object::getObjectType(local_5c); bVar1 = ObjectType::getFlag((ObjectType *)local_5c,CONTAINER); if (bVar1) { ObjectType::setTypeID((ObjectType *)local_5c,Type->TypeID); local_4c[0].ObjectID = local_2c.ObjectID; Amount = DeleteCoins(local_4c,(ObjectType *)local_5c,Amount); if (Amount == 0) { return 0; } } Object::getNextObject(local_4c); local_5c[0].ObjectID = local_4c[0].ObjectID; local_2c.ObjectID = local_5c[0].ObjectID; if (local_4c[0].ObjectID == NONE.ObjectID) { return Amount; } } uVar2 = Object::getAttribute(&local_2c,AMOUNT); if (Amount < (int)uVar2) { local_5c[0].ObjectID = local_2c.ObjectID; uVar2 = Object::getAttribute(&local_2c,AMOUNT); Change(local_5c,AMOUNT,uVar2 - Amount); return 0; } uVar2 = Object::getAttribute(&local_2c,AMOUNT); Amount = Amount - uVar2; local_5c[0].ObjectID = local_2c.ObjectID; DeleteObject(local_5c); } while( true ); } void DeleteMoney(Object *Con,int Amount) { int local_58; int Gold; int Platinum; int Crystal; Object local_3c [4]; ObjectType local_2c [7]; GetSpecialObject((SPECIALMEANING)local_2c); Crystal = Con->ObjectID; GetFirstContainerObject(local_3c); Platinum = CountObjects(local_3c,local_2c,0); GetSpecialObject((SPECIALMEANING)&Crystal); local_2c[0].TypeID = Con->ObjectID; GetFirstContainerObject(local_3c); Gold = CountObjects(local_3c,(ObjectType *)&Crystal,0); GetSpecialObject((SPECIALMEANING)&Crystal); local_2c[0].TypeID = Con->ObjectID; GetFirstContainerObject(local_3c); local_58 = CountObjects(local_3c,(ObjectType *)&Crystal,0); CalculateChange(Amount,&local_58,&Gold,&Platinum); if (0 < local_58) { GetSpecialObject((SPECIALMEANING)&Crystal); local_3c[0] = (Object)Con->ObjectID; DeleteCoins(local_3c,(ObjectType *)&Crystal,local_58); } if (local_58 < 0) { GetSpecialObject((SPECIALMEANING)local_3c); local_2c[0].TypeID = Con->ObjectID; SetObject((Object *)&Crystal,local_2c,(ulong)local_3c); ChangeObject((Object *)&Crystal,AMOUNT,-local_58); } if (0 < Gold) { GetSpecialObject((SPECIALMEANING)&Crystal); local_3c[0] = (Object)Con->ObjectID; DeleteCoins(local_3c,(ObjectType *)&Crystal,Gold); } if (Gold < 0) { GetSpecialObject((SPECIALMEANING)local_3c); local_2c[0].TypeID = Con->ObjectID; SetObject((Object *)&Crystal,local_2c,(ulong)local_3c); ChangeObject((Object *)&Crystal,AMOUNT,-Gold); } if (0 < Platinum) { GetSpecialObject((SPECIALMEANING)&Crystal); local_3c[0] = (Object)Con->ObjectID; DeleteCoins(local_3c,(ObjectType *)&Crystal,Platinum); } return; } // WARNING: Unknown calling convention -- yet parameter storage is locked void CleanField(void) { bool bVar1; ulong uVar2; ulong *in_stack_00000010; Object local_6c; Object Help; Object local_5c; Object Content; Object local_4c; Object Help_1; Object local_3c [4]; Object local_2c; Object Obj; local_2c.ObjectID = NONE.ObjectID; if (*in_stack_00000010 == NONE.ObjectID) { error("CleanField: Depot-Box existiert nicht.\n"); } else { GetFirstObject(); if (local_2c.ObjectID != NONE.ObjectID) { do { local_4c.ObjectID = NONE.ObjectID; local_3c[0].ObjectID = NONE.ObjectID; Object::getObjectType(&local_4c); bVar1 = ObjectType::getFlag((ObjectType *)&local_4c,NAMEDOOR); if (bVar1) { uVar2 = Object::getAttribute(&local_2c,TEXTSTRING); DeleteDynamicString(uVar2); local_4c.ObjectID = local_2c.ObjectID; Change(&local_4c,TEXTSTRING,0); uVar2 = Object::getAttribute(&local_2c,EDITOR); DeleteDynamicString(uVar2); local_4c.ObjectID = local_2c.ObjectID; Change(&local_4c,EDITOR,0); } Object::getObjectType(&local_4c); bVar1 = ObjectType::getFlag((ObjectType *)&local_4c,UNMOVE); if (bVar1) { LAB_08062ae1: Object::getObjectType(&local_5c); bVar1 = ObjectType::getFlag((ObjectType *)&local_5c,CONTAINER); if (bVar1) { local_4c.ObjectID = local_2c.ObjectID; GetFirstContainerObject(&local_5c); local_4c = (Object)NONE.ObjectID; local_3c[0].ObjectID = local_4c.ObjectID; if (local_5c.ObjectID != NONE.ObjectID) { do { local_4c.ObjectID = local_5c.ObjectID; local_3c[0].ObjectID = NONE.ObjectID; Object::getNextObject(&local_6c); local_5c.ObjectID = local_6c.ObjectID; local_6c.ObjectID = *in_stack_00000010; local_3c[0].ObjectID = local_4c.ObjectID; MoveObject(local_3c,&local_6c); local_4c = (Object)NONE.ObjectID; local_3c[0].ObjectID = local_4c.ObjectID; } while (local_5c.ObjectID != NONE.ObjectID); } } Object::getObjectType(&local_6c); bVar1 = ObjectType::getFlag((ObjectType *)&local_6c,UNMOVE); if (bVar1) { Object::getNextObject(&local_5c); local_6c.ObjectID = local_5c.ObjectID; local_2c.ObjectID = local_6c.ObjectID; } else { local_6c.ObjectID = local_2c.ObjectID; Object::getNextObject(&local_4c); local_2c.ObjectID = local_4c.ObjectID; local_5c.ObjectID = local_6c.ObjectID; DeleteObject(&local_5c); } } else { Object::getObjectType(&local_4c); bVar1 = ObjectType::getFlag((ObjectType *)&local_4c,TAKE); if (!bVar1) goto LAB_08062ae1; local_4c.ObjectID = local_2c.ObjectID; Object::getNextObject(&local_5c); local_2c.ObjectID = local_5c.ObjectID; local_5c.ObjectID = *in_stack_00000010; local_3c[0].ObjectID = local_4c.ObjectID; MoveObject(local_3c,&local_5c); } } while (local_2c.ObjectID != NONE.ObjectID); } } return; } void CleanHouse(THouse *house,TPlayerData *PlayerData) { int x_00; bool bVar1; ushort uVar2; int iVar3; int iVar4; int y_1; int y_00; int x_1; int x_01; bool bVar5; char *Text; int local_70; int local_68; int local_60; int z_1; int iStack_58; bool PlayerDataAssigned; int x; int y; int z; undefined1 local_3c [16]; Object local_2c; Object Box; if (house == (THouse *)0x0) { Text = "CleanHouse: house ist NULL.\n"; } else { if (house->OwnerID == 0) { error("CleanHouse: Haus %d hat keinen Besitzer.\n",(uint)house->ID); return; } bVar5 = PlayerData != (TPlayerData *)0x0; if ((bVar5) || (PlayerData = AssignPlayerPoolSlot(house->OwnerID,false), PlayerData != (TPlayerData *)0x0)) { GetStartPosition(&stack0xffffffa8,&x,&y,true); GetSpecialObject((SPECIALMEANING)local_3c); GetMapContainer((int)&z,iStack_58,x); SetObject(&local_2c,(ObjectType *)&z,(ulong)local_3c); z = local_2c.ObjectID; LoadDepot(PlayerData,house->DepotNr,(Object *)&z); local_60 = 0; local_68 = house->CenterX; local_70 = MaxHouseX; do { x_01 = (local_68 - local_70) + -1; if (x_01 <= local_68 + local_70) { iVar3 = house->CenterY; iVar4 = MaxHouseY; do { y_00 = (iVar3 - iVar4) + -1; x_00 = x_01 + 1; if (y_00 <= iVar4 + iVar3) { do { uVar2 = GetHouseID(x_01,y_00,local_60); if (uVar2 == house->ID) { LAB_08062f90: z = local_2c.ObjectID; CleanField(); } else { bVar1 = CoordinateFlag(); if (bVar1) { iVar3 = y_00 + 1; uVar2 = GetHouseID(x_01 + -1,iVar3,local_60); if (((uVar2 == house->ID) || (uVar2 = GetHouseID(x_01,iVar3,local_60), uVar2 == house->ID)) || (uVar2 = GetHouseID(x_00,iVar3,local_60), uVar2 == house->ID)) goto LAB_08062f90; } bVar1 = CoordinateFlag(); if ((bVar1) && (((uVar2 = GetHouseID(x_00,y_00 + -1,local_60), uVar2 == house->ID || (uVar2 = GetHouseID(x_00,y_00,local_60), uVar2 == house->ID )) || (uVar2 = GetHouseID(x_00,y_00 + 1,local_60), uVar2 == house->ID)))) goto LAB_08062f90; } y_00 = y_00 + 1; iVar3 = house->CenterY; } while (y_00 <= MaxHouseY + iVar3); local_68 = house->CenterX; local_70 = MaxHouseX; iVar4 = MaxHouseY; } x_01 = x_00; } while (x_00 <= local_68 + local_70); } local_60 = local_60 + 1; if (0xf < local_60) { z = local_2c.ObjectID; SaveDepot(PlayerData,house->DepotNr,(Object *)&z); z = local_2c.ObjectID; DeleteObject((Object *)&z); if (bVar5) { return; } ReleasePlayerPoolSlot(PlayerData); return; } } while( true ); } Text = &DAT_080f3960; } error(Text); return; } void ClearHouse(THouse *house) { house->OwnerID = 0; house->OwnerName[0] = '\0'; house->Subowners = 0; house->Guests = 0; return; } // WARNING: Unknown calling convention -- yet parameter storage is locked void FinishAuctions(void) { ushort uVar1; int iVar2; int_0_ *piVar3; TPlayerData *pTVar4; time_t tVar5; ulong_0_ *puVar6; int iVar7; THouse *pTVar8; int iVar9; ulong uVar10; uint uVar11; int iVar12; char_0__30_ *CharacterNames; undefined4 local_310; int aiStack_2fc [2]; int_0_ aiStack_2f4 [8]; int_0_ *local_2ec; TPlayerData *local_2e8; TPlayerData *PlayerData; THouse *house; int i; time_t TimeStamp; int_0_ *Bids; ulong_0_ *CharacterIDs; ushort_0_ *HouseIDs; int NumberOfAuctions; int x; int y; int z; ulong local_2ac [4]; undefined1 local_29c [4]; char Welcome [500]; ulong local_9c [4]; undefined1 local_8c [4]; char HelpWorld [60]; ObjectType local_4c [4]; ulong local_3c [4]; Object local_2c; Object Con; // try { // try from 080630d9 to 08063742 has its CatchHandler @ 08063748 local_310 = 0x80630de; GetStartPosition(&NumberOfAuctions,&x,&y,true); local_310 = 0x80630f4; GetSpecialObject((SPECIALMEANING)local_3c); local_310 = 0x8063120; GetMapContainer((int)local_4c,NumberOfAuctions,x); local_310 = 0x806313e; SetObject(&local_2c,local_4c,(ulong)local_3c); local_310 = 0x8063155; Log("houses","Bearbeite beendete Auktionen...\n"); HouseIDs = (ushort_0_ *)Houses; iVar12 = Houses + -1; iVar2 = -(Houses + 0x10 + iVar12 & 0xfffffff0U); uVar11 = iVar12 * 4 + 0x13U & 0xfffffff0; CharacterIDs = aiStack_2f4 + iVar2; Bids = aiStack_2f4 + -uVar11 + iVar2; iVar12 = -(iVar12 * 0x1e + 0x2dU & 0xfffffff0); TimeStamp = (time_t)(aiStack_2f4 + iVar12 + uVar11 * -2 + iVar2); *(int_0_ **)((int)aiStack_2fc + iVar12 + uVar11 * -2 + iVar2 + 4) = aiStack_2f4 + iVar12 + uVar11 * -2 + iVar2; *(int_0_ **)((int)aiStack_2fc + iVar12 + uVar11 * -2 + iVar2) = aiStack_2f4 + iVar12 + -uVar11 + iVar2; *(int_0_ **)(&stack0xfffffd00 + iVar12 + uVar11 * -2 + iVar2) = Bids; puVar6 = CharacterIDs; *(ushort_0_ ***)(&stack0xfffffcf8 + iVar12 + uVar11 * -2 + iVar2) = &HouseIDs; *(ulong_0_ **)(&stack0xfffffcfc + iVar12 + uVar11 * -2 + iVar2) = puVar6; *(TQueryManagerConnection **)(&stack0xfffffcf4 + iVar12 + uVar11 * -2 + iVar2) = QueryManagerConnection; *(undefined4 *)((int)&local_310 + iVar12 + uVar11 * -2 + iVar2) = 0x80631de; iVar7 = TQueryManagerConnection::finishAuctions (*(TQueryManagerConnection **) (&stack0xfffffcf4 + iVar12 + uVar11 * -2 + iVar2), *(int **)(&stack0xfffffcf8 + iVar12 + uVar11 * -2 + iVar2), *(ushort **)(&stack0xfffffcfc + iVar12 + uVar11 * -2 + iVar2), *(ulong **)(&stack0xfffffd00 + iVar12 + uVar11 * -2 + iVar2), *(char (**) [30])((int)aiStack_2fc + iVar12 + uVar11 * -2 + iVar2), *(int **)((int)aiStack_2fc + iVar12 + uVar11 * -2 + iVar2 + 4)); if (iVar7 == 0) { *(char **)(&stack0xfffffcf8 + iVar12 + uVar11 * -2 + iVar2) = WorldName; *(undefined1 **)(&stack0xfffffcf4 + iVar12 + uVar11 * -2 + iVar2) = local_8c; *(undefined4 *)((int)&local_310 + iVar12 + uVar11 * -2 + iVar2) = 0x8063224; AddSlashes(*(char **)(&stack0xfffffcf4 + iVar12 + uVar11 * -2 + iVar2), *(char **)(&stack0xfffffcf8 + iVar12 + uVar11 * -2 + iVar2)); *(undefined4 *)(&stack0xfffffcf4 + iVar12 + uVar11 * -2 + iVar2) = 0; *(undefined4 *)((int)&local_310 + iVar12 + uVar11 * -2 + iVar2) = 0x8063230; i = time(*(time_t **)(&stack0xfffffcf4 + iVar12 + uVar11 * -2 + iVar2)); house = (THouse *)0x0; if (0 < (int)HouseIDs) { local_2ec = aiStack_2f4 + iVar12 + -uVar11 + iVar2; do { tVar5 = TimeStamp; pTVar8 = house; *(undefined4 *)((int)aiStack_2fc + iVar12 + uVar11 * -2 + iVar2) = *(undefined4 *)(TimeStamp + (int)house * 4); *(int_0_ **)(&stack0xfffffd00 + iVar12 + uVar11 * -2 + iVar2) = local_2ec; uVar1 = *(ushort *)(CharacterIDs + (int)pTVar8 * 2); *(char **)(&stack0xfffffcf4 + iVar12 + uVar11 * -2 + iVar2) = "houses"; *(undefined **)(&stack0xfffffcf8 + iVar12 + uVar11 * -2 + iVar2) = &DAT_080f3a60; *(uint *)(&stack0xfffffcfc + iVar12 + uVar11 * -2 + iVar2) = (uint)uVar1; *(undefined4 *)((int)&local_310 + iVar12 + uVar11 * -2 + iVar2) = 0x8063291; Log(*(char **)(&stack0xfffffcf4 + iVar12 + uVar11 * -2 + iVar2), *(char **)(&stack0xfffffcf8 + iVar12 + uVar11 * -2 + iVar2)); pTVar8 = house; *(undefined4 *)((int)aiStack_2fc + iVar12 + uVar11 * -2 + iVar2 + 4) = *(undefined4 *)(tVar5 + (int)house * 4); *(undefined4 *)((int)aiStack_2fc + iVar12 + uVar11 * -2 + iVar2) = *(undefined4 *)(Bids + (int)pTVar8 * 4); uVar1 = *(ushort *)(CharacterIDs + (int)pTVar8 * 2); *(char **)(&stack0xfffffcf4 + iVar12 + uVar11 * -2 + iVar2) = "houses"; *(char **)(&stack0xfffffcf8 + iVar12 + uVar11 * -2 + iVar2) = "bei Reset: INSERT INTO HouseAssignments VALUES (\'%s\',%d,%d,%d);\n"; *(uint *)(&stack0xfffffd00 + iVar12 + uVar11 * -2 + iVar2) = (uint)uVar1; *(undefined1 **)(&stack0xfffffcfc + iVar12 + uVar11 * -2 + iVar2) = local_8c; *(undefined4 *)((int)&local_310 + iVar12 + uVar11 * -2 + iVar2) = 0x80632d7; Log(*(char **)(&stack0xfffffcf4 + iVar12 + uVar11 * -2 + iVar2), *(char **)(&stack0xfffffcf8 + iVar12 + uVar11 * -2 + iVar2)); pTVar8 = house; *(uint *)(&stack0xfffffcf4 + iVar12 + uVar11 * -2 + iVar2) = (uint)*(ushort *)(CharacterIDs + (int)house * 2); *(undefined4 *)((int)&local_310 + iVar12 + uVar11 * -2 + iVar2) = 0x80632ef; PlayerData = (TPlayerData *) GetHouse(*(ushort *)(&stack0xfffffcf4 + iVar12 + uVar11 * -2 + iVar2)); if (PlayerData == (TPlayerData *)0x0) { uVar1 = *(ushort *)(CharacterIDs + (int)pTVar8 * 2); *(char **)(&stack0xfffffcf4 + iVar12 + uVar11 * -2 + iVar2) = "FinishAuctions: Haus mit Nummer %d existiert nicht.\n"; *(uint *)(&stack0xfffffcf8 + iVar12 + uVar11 * -2 + iVar2) = (uint)uVar1; *(undefined4 *)((int)&local_310 + iVar12 + uVar11 * -2 + iVar2) = 0x8063743; error(*(char **)(&stack0xfffffcf4 + iVar12 + uVar11 * -2 + iVar2)); } else if (PlayerData->Cycle[4] == 0) { *(undefined4 *)(&stack0xfffffcf8 + iVar12 + uVar11 * -2 + iVar2) = 0; *(undefined4 *)(&stack0xfffffcf4 + iVar12 + uVar11 * -2 + iVar2) = *(undefined4 *)(Bids + (int)house * 4); *(undefined4 *)((int)&local_310 + iVar12 + uVar11 * -2 + iVar2) = 0x806344f; local_2e8 = AssignPlayerPoolSlot (*(ulong *)(&stack0xfffffcf4 + iVar12 + uVar11 * -2 + iVar2), (bool)(&stack0xfffffcf8)[iVar12 + uVar11 * -2 + iVar2]); if (local_2e8 == (TPlayerData *)0x0) { *(undefined **)(&stack0xfffffcf4 + iVar12 + uVar11 * -2 + iVar2) = &DAT_080f3cc0; *(undefined4 *)((int)&local_310 + iVar12 + uVar11 * -2 + iVar2) = 0x8063724; error(*(char **)(&stack0xfffffcf4 + iVar12 + uVar11 * -2 + iVar2)); } else { local_4c[0].TypeID = local_2c.ObjectID; *(ObjectType **)(&stack0xfffffcfc + iVar12 + uVar11 * -2 + iVar2) = local_4c ; pTVar4 = PlayerData; *(int *)(&stack0xfffffcf8 + iVar12 + uVar11 * -2 + iVar2) = PlayerData->MagicDeltaAct[0x15]; *(TPlayerData **)(&stack0xfffffcf4 + iVar12 + uVar11 * -2 + iVar2) = local_2e8; *(undefined4 *)((int)&local_310 + iVar12 + uVar11 * -2 + iVar2) = 0x8063488; LoadDepot(*(TPlayerData **)(&stack0xfffffcf4 + iVar12 + uVar11 * -2 + iVar2) ,*(int *)(&stack0xfffffcf8 + iVar12 + uVar11 * -2 + iVar2), *(Object **)(&stack0xfffffcfc + iVar12 + uVar11 * -2 + iVar2)); local_3c[0] = local_2c.ObjectID; *(ulong **)(&stack0xfffffcf8 + iVar12 + uVar11 * -2 + iVar2) = local_3c; *(ObjectType **)(&stack0xfffffcf4 + iVar12 + uVar11 * -2 + iVar2) = local_4c ; *(undefined4 *)((int)&local_310 + iVar12 + uVar11 * -2 + iVar2) = 0x806349d; GetFirstContainerObject (*(Object **)(&stack0xfffffcf4 + iVar12 + uVar11 * -2 + iVar2)); *(ObjectType **)(&stack0xfffffcf4 + iVar12 + uVar11 * -2 + iVar2) = local_4c ; *(undefined4 *)((int)&local_310 + iVar12 + uVar11 * -2 + iVar2) = 0x80634ab; iVar7 = CountMoney(*(Object **) (&stack0xfffffcf4 + iVar12 + uVar11 * -2 + iVar2)); if (iVar7 < pTVar4->MagicDeltaAct[0x14] + *(int *)(TimeStamp + (int)house * 4)) { *(undefined **)(&stack0xfffffcf8 + iVar12 + uVar11 * -2 + iVar2) = &DAT_080f3c80; *(char **)(&stack0xfffffcf4 + iVar12 + uVar11 * -2 + iVar2) = "houses"; *(undefined4 *)((int)&local_310 + iVar12 + uVar11 * -2 + iVar2) = 0x80636d0; Log(*(char **)(&stack0xfffffcf4 + iVar12 + uVar11 * -2 + iVar2), *(char **)(&stack0xfffffcf8 + iVar12 + uVar11 * -2 + iVar2)); piVar3 = local_2ec; PlayerData->Cycle[4] = *(int *)(Bids + (int)house * 4); *(int **)(&stack0xfffffcf4 + iVar12 + uVar11 * -2 + iVar2) = PlayerData->Cycle + 5; *(int_0_ **)(&stack0xfffffcf8 + iVar12 + uVar11 * -2 + iVar2) = piVar3; *(undefined4 *)((int)&local_310 + iVar12 + uVar11 * -2 + iVar2) = 0x8063705; strcpy(*(char **)(&stack0xfffffcf4 + iVar12 + uVar11 * -2 + iVar2), *(char **)(&stack0xfffffcf8 + iVar12 + uVar11 * -2 + iVar2)); PlayerData->Cycle[0xe] = 0; } else { *(undefined **)(&stack0xfffffcf8 + iVar12 + uVar11 * -2 + iVar2) = &DAT_080f3b80; *(char **)(&stack0xfffffcf4 + iVar12 + uVar11 * -2 + iVar2) = "houses"; *(undefined4 *)((int)&local_310 + iVar12 + uVar11 * -2 + iVar2) = 0x80634dc; Log(*(char **)(&stack0xfffffcf4 + iVar12 + uVar11 * -2 + iVar2), *(char **)(&stack0xfffffcf8 + iVar12 + uVar11 * -2 + iVar2)); local_9c[0] = local_2c.ObjectID; iVar7 = PlayerData->MagicDeltaAct[0x14]; iVar9 = *(int *)(TimeStamp + (int)house * 4); *(ulong **)(&stack0xfffffcf4 + iVar12 + uVar11 * -2 + iVar2) = local_9c; *(int *)(&stack0xfffffcf8 + iVar12 + uVar11 * -2 + iVar2) = iVar7 + iVar9; *(undefined4 *)((int)&local_310 + iVar12 + uVar11 * -2 + iVar2) = 0x8063514; DeleteMoney(*(Object **) (&stack0xfffffcf4 + iVar12 + uVar11 * -2 + iVar2), *(int *)(&stack0xfffffcf8 + iVar12 + uVar11 * -2 + iVar2)); pTVar4 = PlayerData; *(char **)(&stack0xfffffcfc + iVar12 + uVar11 * -2 + iVar2) = "Welcome!\n\nCongratulations on your choice\nfor house \"%s\".\nThe rent for the first month\nhas already been debited to your\ndepot. The next rent will be\npayable in thirty days.\nHave a good time in your new home!" ; *(undefined1 **)(&stack0xfffffd00 + iVar12 + uVar11 * -2 + iVar2) = (undefined1 *)((int)&pTVar4->CharacterID + 2); *(undefined4 *)(&stack0xfffffcf8 + iVar12 + uVar11 * -2 + iVar2) = 500; *(undefined1 **)(&stack0xfffffcf4 + iVar12 + uVar11 * -2 + iVar2) = local_29c; *(undefined4 *)((int)&local_310 + iVar12 + uVar11 * -2 + iVar2) = 0x806353f; snprintf(*(char **)(&stack0xfffffcf4 + iVar12 + uVar11 * -2 + iVar2), *(size_t *)(&stack0xfffffcf8 + iVar12 + uVar11 * -2 + iVar2), *(char **)(&stack0xfffffcfc + iVar12 + uVar11 * -2 + iVar2)); *(undefined1 **)(&stack0xfffffcf4 + iVar12 + uVar11 * -2 + iVar2) = local_29c; *(undefined4 *)((int)&local_310 + iVar12 + uVar11 * -2 + iVar2) = 0x8063547; uVar10 = AddDynamicString(*(char **)(&stack0xfffffcf4 + iVar12 + uVar11 * -2 + iVar2)); *(undefined4 *)(&stack0xfffffcf8 + iVar12 + uVar11 * -2 + iVar2) = 0x1a; *(ulong **)(&stack0xfffffcf4 + iVar12 + uVar11 * -2 + iVar2) = local_2ac ; *(undefined4 *)((int)&local_310 + iVar12 + uVar11 * -2 + iVar2) = 0x806355f; GetSpecialObject(*(SPECIALMEANING *) (&stack0xfffffcf4 + iVar12 + uVar11 * -2 + iVar2)); z = local_2c.ObjectID; *(undefined4 *)(&stack0xfffffd00 + iVar12 + uVar11 * -2 + iVar2) = 0; *(ulong **)(&stack0xfffffcfc + iVar12 + uVar11 * -2 + iVar2) = local_2ac ; *(int **)(&stack0xfffffcf8 + iVar12 + uVar11 * -2 + iVar2) = &z; *(ulong **)(&stack0xfffffcf4 + iVar12 + uVar11 * -2 + iVar2) = local_9c; *(undefined4 *)((int)&local_310 + iVar12 + uVar11 * -2 + iVar2) = 0x8063595; SetObject(*(Object **)(&stack0xfffffcf4 + iVar12 + uVar11 * -2 + iVar2), *(ObjectType **) (&stack0xfffffcf8 + iVar12 + uVar11 * -2 + iVar2), *(ulong *)(&stack0xfffffcfc + iVar12 + uVar11 * -2 + iVar2)); *(ulong *)(&stack0xfffffcfc + iVar12 + uVar11 * -2 + iVar2) = uVar10; *(undefined4 *)(&stack0xfffffcf8 + iVar12 + uVar11 * -2 + iVar2) = 9; *(ulong **)(&stack0xfffffcf4 + iVar12 + uVar11 * -2 + iVar2) = local_9c; *(undefined4 *)((int)&local_310 + iVar12 + uVar11 * -2 + iVar2) = 0x80635b2; ChangeObject(*(Object **) (&stack0xfffffcf4 + iVar12 + uVar11 * -2 + iVar2), *(INSTANCEATTRIBUTE *) (&stack0xfffffcf8 + iVar12 + uVar11 * -2 + iVar2), *(ulong *)(&stack0xfffffcfc + iVar12 + uVar11 * -2 + iVar2) ); z = local_2c.ObjectID; *(int **)(&stack0xfffffcfc + iVar12 + uVar11 * -2 + iVar2) = &z; pTVar4 = PlayerData; *(int *)(&stack0xfffffcf8 + iVar12 + uVar11 * -2 + iVar2) = PlayerData->MagicDeltaAct[0x15]; *(TPlayerData **)(&stack0xfffffcf4 + iVar12 + uVar11 * -2 + iVar2) = local_2e8; *(undefined4 *)((int)&local_310 + iVar12 + uVar11 * -2 + iVar2) = 0x80635e3; SaveDepot(*(TPlayerData **) (&stack0xfffffcf4 + iVar12 + uVar11 * -2 + iVar2), *(int *)(&stack0xfffffcf8 + iVar12 + uVar11 * -2 + iVar2), *(Object **)(&stack0xfffffcfc + iVar12 + uVar11 * -2 + iVar2)) ; pTVar4->Cycle[4] = *(int *)(Bids + (int)house * 4); *(int_0_ **)(&stack0xfffffcf8 + iVar12 + uVar11 * -2 + iVar2) = local_2ec; *(int **)(&stack0xfffffcf4 + iVar12 + uVar11 * -2 + iVar2) = PlayerData->Cycle + 5; *(undefined4 *)((int)&local_310 + iVar12 + uVar11 * -2 + iVar2) = 0x8063615; strcpy(*(char **)(&stack0xfffffcf4 + iVar12 + uVar11 * -2 + iVar2), *(char **)(&stack0xfffffcf8 + iVar12 + uVar11 * -2 + iVar2)); PlayerData->Cycle[0xd] = i; PlayerData->Cycle[0xe] = i + 0x278d00; } while( true ) { local_2ac[0] = local_2c.ObjectID; *(ulong **)(&stack0xfffffcf8 + iVar12 + uVar11 * -2 + iVar2) = local_2ac ; *(int **)(&stack0xfffffcf4 + iVar12 + uVar11 * -2 + iVar2) = &z; *(undefined4 *)((int)&local_310 + iVar12 + uVar11 * -2 + iVar2) = 0x806365c; GetFirstContainerObject (*(Object **)(&stack0xfffffcf4 + iVar12 + uVar11 * -2 + iVar2) ); local_9c[0] = NONE.ObjectID; local_4c[0].TypeID = NONE.ObjectID; if (z == NONE.ObjectID) break; local_2ac[0] = local_2c.ObjectID; *(ulong **)(&stack0xfffffcf8 + iVar12 + uVar11 * -2 + iVar2) = local_2ac ; *(int **)(&stack0xfffffcf4 + iVar12 + uVar11 * -2 + iVar2) = &z; *(undefined4 *)((int)&local_310 + iVar12 + uVar11 * -2 + iVar2) = 0x8063696; GetFirstContainerObject (*(Object **)(&stack0xfffffcf4 + iVar12 + uVar11 * -2 + iVar2) ); *(int **)(&stack0xfffffcf4 + iVar12 + uVar11 * -2 + iVar2) = &z; *(undefined4 *)((int)&local_310 + iVar12 + uVar11 * -2 + iVar2) = 0x80636a7; DeleteObject(*(Object **) (&stack0xfffffcf4 + iVar12 + uVar11 * -2 + iVar2)); } *(TPlayerData **)(&stack0xfffffcf4 + iVar12 + uVar11 * -2 + iVar2) = local_2e8; *(undefined4 *)((int)&local_310 + iVar12 + uVar11 * -2 + iVar2) = 0x80636b7; ReleasePlayerPoolSlot (*(TPlayerData **) (&stack0xfffffcf4 + iVar12 + uVar11 * -2 + iVar2)); } } else { *(int *)(&stack0xfffffcfc + iVar12 + uVar11 * -2 + iVar2) = PlayerData->Cycle[4] ; uVar1 = *(ushort *)(CharacterIDs + (int)house * 2); *(undefined **)(&stack0xfffffcf4 + iVar12 + uVar11 * -2 + iVar2) = &DAT_080f3b00 ; *(uint *)(&stack0xfffffcf8 + iVar12 + uVar11 * -2 + iVar2) = (uint)uVar1; *(undefined4 *)((int)&local_310 + iVar12 + uVar11 * -2 + iVar2) = 0x8063335; error(*(char **)(&stack0xfffffcf4 + iVar12 + uVar11 * -2 + iVar2)); } house = (THouse *)((int)&house->ID + 1); local_2ec = local_2ec + 0x1e; } while ((int)house < (int)HouseIDs); } iVar7 = 0; if (0 < Houses) { do { *(int *)(&stack0xfffffcf8 + iVar12 + uVar11 * -2 + iVar2) = iVar7; *(vector **)(&stack0xfffffcf4 + iVar12 + uVar11 * -2 + iVar2) = &House; *(undefined4 *)((int)&local_310 + iVar12 + uVar11 * -2 + iVar2) = 0x8063385; pTVar8 = vector::operator() (*(vector **) (&stack0xfffffcf4 + iVar12 + uVar11 * -2 + iVar2), *(int *)(&stack0xfffffcf8 + iVar12 + uVar11 * -2 + iVar2)); if (pTVar8->PaidUntil == 0) { *(int *)(&stack0xfffffcf8 + iVar12 + uVar11 * -2 + iVar2) = iVar7; *(vector **)(&stack0xfffffcf4 + iVar12 + uVar11 * -2 + iVar2) = &House; *(undefined4 *)((int)&local_310 + iVar12 + uVar11 * -2 + iVar2) = 0x80633b0; pTVar8 = vector::operator() (*(vector **) (&stack0xfffffcf4 + iVar12 + uVar11 * -2 + iVar2), *(int *)(&stack0xfffffcf8 + iVar12 + uVar11 * -2 + iVar2)); if (pTVar8->OwnerID != 0) { *(int *)(&stack0xfffffcf8 + iVar12 + uVar11 * -2 + iVar2) = iVar7; *(vector **)(&stack0xfffffcf4 + iVar12 + uVar11 * -2 + iVar2) = &House; *(undefined4 *)((int)&local_310 + iVar12 + uVar11 * -2 + iVar2) = 0x80633ca; pTVar8 = vector::operator() (*(vector **) (&stack0xfffffcf4 + iVar12 + uVar11 * -2 + iVar2), *(int *)(&stack0xfffffcf8 + iVar12 + uVar11 * -2 + iVar2 )); *(undefined4 *)(&stack0xfffffcfc + iVar12 + uVar11 * -2 + iVar2) = 1; *(ulong *)(&stack0xfffffcf8 + iVar12 + uVar11 * -2 + iVar2) = pTVar8->OwnerID; *(TQueryManagerConnection **) (&stack0xfffffcf4 + iVar12 + uVar11 * -2 + iVar2) = QueryManagerConnection; *(undefined4 *)((int)&local_310 + iVar12 + uVar11 * -2 + iVar2) = 0x80633e9; iVar9 = TQueryManagerConnection::excludeFromAuctions (*(TQueryManagerConnection **) (&stack0xfffffcf4 + iVar12 + uVar11 * -2 + iVar2), *(ulong *)(&stack0xfffffcf8 + iVar12 + uVar11 * -2 + iVar2), (bool)(&stack0xfffffcfc)[iVar12 + uVar11 * -2 + iVar2]); if (iVar9 != 0) { *(char **)(&stack0xfffffcf4 + iVar12 + uVar11 * -2 + iVar2) = "FinishAuctions: Kann Ersteigerer nicht verbannen.\n"; *(undefined4 *)((int)&local_310 + iVar12 + uVar11 * -2 + iVar2) = 0x806342d; error(*(char **)(&stack0xfffffcf4 + iVar12 + uVar11 * -2 + iVar2)); } *(int *)(&stack0xfffffcf8 + iVar12 + uVar11 * -2 + iVar2) = iVar7; *(vector **)(&stack0xfffffcf4 + iVar12 + uVar11 * -2 + iVar2) = &House; *(undefined4 *)((int)&local_310 + iVar12 + uVar11 * -2 + iVar2) = 0x80633fd; pTVar8 = vector::operator() (*(vector **) (&stack0xfffffcf4 + iVar12 + uVar11 * -2 + iVar2), *(int *)(&stack0xfffffcf8 + iVar12 + uVar11 * -2 + iVar2 )); pTVar8->OwnerName[0] = '\0'; pTVar8->OwnerID = 0; pTVar8->Subowners = 0; pTVar8->Guests = 0; } } iVar7 = iVar7 + 1; } while (iVar7 < Houses); } z = local_2c.ObjectID; *(int **)(&stack0xfffffcf4 + iVar12 + uVar11 * -2 + iVar2) = &z; } else { *(char **)(&stack0xfffffcf4 + iVar12 + uVar11 * -2 + iVar2) = "FinishAuctions: Kann Versteigerungen nicht ermitteln.\n"; *(undefined4 *)((int)&local_310 + iVar12 + uVar11 * -2 + iVar2) = 0x80631ee; error(*(char **)(&stack0xfffffcf4 + iVar12 + uVar11 * -2 + iVar2)); local_4c[0].TypeID = local_2c.ObjectID; *(ObjectType **)(&stack0xfffffcf4 + iVar12 + uVar11 * -2 + iVar2) = local_4c; } *(undefined4 *)((int)&local_310 + iVar12 + uVar11 * -2 + iVar2) = 0x80631ff; DeleteObject(*(Object **)(&stack0xfffffcf4 + iVar12 + uVar11 * -2 + iVar2)); return; } // WARNING: Unknown calling convention -- yet parameter storage is locked void CollectRents(void) { TPlayerData *pTVar1; ushort uVar2; undefined4 uVar3; int_0_ *piVar4; ulong_0_ *puVar5; int iVar6; ulong uVar7; int iVar8; THouse *pTVar9; THouse *pTVar10; uint uVar11; char *pcVar12; int *piVar13; ObjectType *pOVar14; char_0__30_ *NewOwnerNames; int iVar15; int iVar16; ushort_0_ **ppuVar17; int *piVar18; int NumberOfGuildhouses; int iVar19; undefined4 local_350; uint auStack_33c [3]; int_0_ aiStack_330 [8]; int_0_ *local_328; int *local_324; ushort *local_320; char *local_31c; TPlayerData *local_318; TPlayerData *PlayerData_1; time_t Deadline; ulong_0_ *OwnerIDs; int Crystal; TPlayerData *PlayerData; THouse *house; int i_1; time_t TimeStamp; int_0_ *Prices; ulong_0_ *NewOwnerIDs; ushort_0_ *HouseIDs; int local_2e8; int NumberOfEvictions; int local_2e0; int local_2dc; int NumberOfTransfers; int x; int y; int z; ulong local_2bc [4]; ulong local_2ac [4]; ulong local_29c [4]; undefined1 local_28c [4]; char Warning [500]; undefined1 local_8c [4]; char HelpWorld [60]; ObjectType local_4c [4]; ulong local_3c [4]; Object local_2c; Object Con; // try { // try from 08063799 to 08064aff has its CatchHandler @ 08064b16 local_350 = 0x806379e; GetStartPosition(&NumberOfTransfers,&x,&y,true); local_350 = 0x80637b4; GetSpecialObject((SPECIALMEANING)local_3c); local_350 = 0x80637e0; GetMapContainer((int)local_4c,NumberOfTransfers,x); local_350 = 0x80637fe; SetObject(&local_2c,local_4c,(ulong)local_3c); iVar15 = 0; if (0 < Houses) { do { local_350 = 0x8064b00; pTVar9 = vector::operator()(&House,iVar15); iVar16 = Houses; iVar15 = iVar15 + 1; pTVar9->Help = 0; } while (iVar15 < iVar16); } local_350 = 0x8063823; Log("houses",&DAT_080f3d40); local_2dc = Houses; iVar16 = Houses + -1; iVar15 = -(Houses + 0x10 + iVar16 & 0xfffffff0U); uVar11 = iVar16 * 4 + 0x13U & 0xfffffff0; NewOwnerIDs = aiStack_330 + iVar15; iVar16 = -(iVar16 * 0x1e + 0x2dU & 0xfffffff0); piVar18 = (int *)(aiStack_330 + iVar16 + uVar11 * -2 + iVar15 + -0x1c); Prices = aiStack_330 + -uVar11 + iVar15; TimeStamp = (time_t)(aiStack_330 + iVar16 + uVar11 * -2 + iVar15); *(int_0_ **)((int)auStack_33c + iVar16 + uVar11 * -2 + iVar15 + 4) = aiStack_330 + iVar16 + uVar11 * -2 + iVar15; *(int_0_ **)((int)auStack_33c + iVar16 + uVar11 * -2 + iVar15) = aiStack_330 + iVar16 + -uVar11 + iVar15; *(int_0_ **)(&stack0xfffffcc0 + iVar16 + uVar11 * -2 + iVar15) = Prices; puVar5 = NewOwnerIDs; *(int **)(&stack0xfffffcb8 + iVar16 + uVar11 * -2 + iVar15) = &local_2dc; *(ulong_0_ **)(&stack0xfffffcbc + iVar16 + uVar11 * -2 + iVar15) = puVar5; *(TQueryManagerConnection **)(aiStack_330 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = QueryManagerConnection; *(undefined4 *)((int)&local_350 + iVar16 + uVar11 * -2 + iVar15) = 0x80638ac; iVar6 = TQueryManagerConnection::transferHouses (*(TQueryManagerConnection **) (aiStack_330 + iVar16 + uVar11 * -2 + iVar15 + -0x1c), *(int **)(&stack0xfffffcb8 + iVar16 + uVar11 * -2 + iVar15), *(ushort **)(&stack0xfffffcbc + iVar16 + uVar11 * -2 + iVar15), *(ulong **)(&stack0xfffffcc0 + iVar16 + uVar11 * -2 + iVar15), *(char (**) [30])((int)auStack_33c + iVar16 + uVar11 * -2 + iVar15), *(int **)((int)auStack_33c + iVar16 + uVar11 * -2 + iVar15 + 4)); if (iVar6 != 0) { *(undefined **)(aiStack_330 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = &DAT_080f3d80; *(undefined4 *)((int)&local_350 + iVar16 + uVar11 * -2 + iVar15) = 0x80638bc; error(*(char **)(aiStack_330 + iVar16 + uVar11 * -2 + iVar15 + -0x1c)); pOVar14 = local_4c; local_4c[0].TypeID = local_2c.ObjectID; goto LAB_080638c5; } *(char **)(&stack0xfffffcb8 + iVar16 + uVar11 * -2 + iVar15) = WorldName; *(undefined1 **)(aiStack_330 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = local_8c; *(undefined4 *)((int)&local_350 + iVar16 + uVar11 * -2 + iVar15) = 0x80638f2; AddSlashes(*(char **)(aiStack_330 + iVar16 + uVar11 * -2 + iVar15 + -0x1c), *(char **)(&stack0xfffffcb8 + iVar16 + uVar11 * -2 + iVar15)); *(undefined4 *)(aiStack_330 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = 0; *(undefined4 *)((int)&local_350 + iVar16 + uVar11 * -2 + iVar15) = 0x80638fe; i_1 = time(*(time_t **)(aiStack_330 + iVar16 + uVar11 * -2 + iVar15 + -0x1c)); house = (THouse *)0x0; if (0 < local_2dc) { local_328 = aiStack_330 + iVar16 + -uVar11 + iVar15; local_320 = (ushort *)NewOwnerIDs; local_324 = (int *)Prices; do { *(uint *)(aiStack_330 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = (uint)*local_320; *(undefined4 *)((int)&local_350 + iVar16 + uVar11 * -2 + iVar15) = 0x8063949; PlayerData = (TPlayerData *) GetHouse(*(ushort *)(aiStack_330 + iVar16 + uVar11 * -2 + iVar15 + -0x1c)); if (PlayerData == (TPlayerData *)0x0) { uVar2 = *local_320; *(char **)(aiStack_330 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = "CollectRents: Haus mit Nummer %d existiert nicht.\n"; *(uint *)(&stack0xfffffcb8 + iVar16 + uVar11 * -2 + iVar15) = (uint)uVar2; *(undefined4 *)((int)&local_350 + iVar16 + uVar11 * -2 + iVar15) = 0x8064ae9; error(*(char **)(aiStack_330 + iVar16 + uVar11 * -2 + iVar15 + -0x1c)); } else if ((*local_324 == 0) || (iVar6 = *(int *)(TimeStamp + (int)house * 4), iVar6 < 1)) { LAB_0806489a: *(int *)(&stack0xfffffcc0 + iVar16 + uVar11 * -2 + iVar15) = PlayerData->Cycle[4]; uVar2 = *local_320; *(char **)(aiStack_330 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = "houses"; *(undefined **)(&stack0xfffffcb8 + iVar16 + uVar11 * -2 + iVar15) = &DAT_080f4e1a; *(uint *)(&stack0xfffffcbc + iVar16 + uVar11 * -2 + iVar15) = (uint)uVar2; *(undefined4 *)((int)&local_350 + iVar16 + uVar11 * -2 + iVar15) = 0x80648cb; Log(*(char **)(aiStack_330 + iVar16 + uVar11 * -2 + iVar15 + -0x1c), *(char **)(&stack0xfffffcb8 + iVar16 + uVar11 * -2 + iVar15)); if (*local_324 == 0) { *(undefined4 *)(&stack0xfffffcb8 + iVar16 + uVar11 * -2 + iVar15) = 0; *(TPlayerData **)(aiStack_330 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = PlayerData; *(undefined4 *)((int)&local_350 + iVar16 + uVar11 * -2 + iVar15) = 0x8064a2b; CleanHouse(*(THouse **)(aiStack_330 + iVar16 + uVar11 * -2 + iVar15 + -0x1c), *(TPlayerData **)(&stack0xfffffcb8 + iVar16 + uVar11 * -2 + iVar15)); } PlayerData->Cycle[4] = 0; *(undefined1 *)(PlayerData->Cycle + 5) = 0; PlayerData->MaxCycle[0xc] = 0; PlayerData->Count[10] = 0; PlayerData->Count[0xb] = 1; if (*local_324 != 0) { *(int *)(&stack0xfffffcc0 + iVar16 + uVar11 * -2 + iVar15) = *local_324; uVar2 = *local_320; *(char **)(aiStack_330 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = "houses"; *(undefined **)(&stack0xfffffcb8 + iVar16 + uVar11 * -2 + iVar15) = &DAT_080f4e32; *(uint *)(&stack0xfffffcbc + iVar16 + uVar11 * -2 + iVar15) = (uint)uVar2; *(undefined4 *)((int)&local_350 + iVar16 + uVar11 * -2 + iVar15) = 0x806493c; Log(*(char **)(aiStack_330 + iVar16 + uVar11 * -2 + iVar15 + -0x1c), *(char **)(&stack0xfffffcb8 + iVar16 + uVar11 * -2 + iVar15)); piVar4 = local_328; PlayerData->Cycle[4] = *local_324; PlayerData->Cycle[0xd] = i_1; *(int **)(aiStack_330 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = PlayerData->Cycle + 5; *(int_0_ **)(&stack0xfffffcb8 + iVar16 + uVar11 * -2 + iVar15) = piVar4; *(undefined4 *)((int)&local_350 + iVar16 + uVar11 * -2 + iVar15) = 0x8064976; strcpy(*(char **)(aiStack_330 + iVar16 + uVar11 * -2 + iVar15 + -0x1c), *(char **)(&stack0xfffffcb8 + iVar16 + uVar11 * -2 + iVar15)); if (*local_324 != 0) { uVar2 = *local_320; *(undefined1 **)((int)auStack_33c + iVar16 + uVar11 * -2 + iVar15 + 4) = local_8c; *(uint *)(aiStack_330 + iVar16 + uVar11 * -2 + iVar15 + -4) = (uint)uVar2; *(undefined4 *)((int)auStack_33c + iVar16 + uVar11 * -2 + iVar15) = *(undefined4 *)(TimeStamp + (int)house * 4); *(int *)(&stack0xfffffcc0 + iVar16 + uVar11 * -2 + iVar15) = *local_324; iVar6 = i_1; *(char **)(aiStack_330 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = "houses"; *(char **)(&stack0xfffffcb8 + iVar16 + uVar11 * -2 + iVar15) = "bei Reset: UPDATE HouseOwners SET Termination=%d,NewOwner=%ld,Accepted=1,Price=%d WHERE World=\'%s\' AND HouseID=%d;\n" ; *(int *)(&stack0xfffffcbc + iVar16 + uVar11 * -2 + iVar15) = iVar6; *(undefined4 *)((int)&local_350 + iVar16 + uVar11 * -2 + iVar15) = 0x8064a10 ; Log(*(char **)(aiStack_330 + iVar16 + uVar11 * -2 + iVar15 + -0x1c), *(char **)(&stack0xfffffcb8 + iVar16 + uVar11 * -2 + iVar15)); goto LAB_08063bd9; } } uVar2 = *local_320; *(undefined1 **)(&stack0xfffffcc0 + iVar16 + uVar11 * -2 + iVar15) = local_8c; *(uint *)((int)auStack_33c + iVar16 + uVar11 * -2 + iVar15) = (uint)uVar2; iVar6 = i_1; *(char **)(aiStack_330 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = "houses"; *(char **)(&stack0xfffffcb8 + iVar16 + uVar11 * -2 + iVar15) = "bei Reset: UPDATE HouseOwners SET Termination=%d,NewOwner=null,Accepted=0,Price=0 WHERE World=\'%s\' AND HouseID=%d;\n" ; *(int *)(&stack0xfffffcbc + iVar16 + uVar11 * -2 + iVar15) = iVar6; *(undefined4 *)((int)&local_350 + iVar16 + uVar11 * -2 + iVar15) = 0x80649b7; Log(*(char **)(aiStack_330 + iVar16 + uVar11 * -2 + iVar15 + -0x1c), *(char **)(&stack0xfffffcb8 + iVar16 + uVar11 * -2 + iVar15)); } else { *(int *)((int)auStack_33c + iVar16 + uVar11 * -2 + iVar15) = iVar6; *(int *)(&stack0xfffffcc0 + iVar16 + uVar11 * -2 + iVar15) = *local_324; uVar2 = *local_320; *(char **)(aiStack_330 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = "houses"; *(undefined **)(&stack0xfffffcb8 + iVar16 + uVar11 * -2 + iVar15) = &DAT_080f3dc0; *(uint *)(&stack0xfffffcbc + iVar16 + uVar11 * -2 + iVar15) = (uint)uVar2; *(undefined4 *)((int)&local_350 + iVar16 + uVar11 * -2 + iVar15) = 0x80639af; Log(*(char **)(aiStack_330 + iVar16 + uVar11 * -2 + iVar15 + -0x1c), *(char **)(&stack0xfffffcb8 + iVar16 + uVar11 * -2 + iVar15)); *(undefined4 *)(&stack0xfffffcb8 + iVar16 + uVar11 * -2 + iVar15) = 0; *(int *)(aiStack_330 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = *local_324; *(undefined4 *)((int)&local_350 + iVar16 + uVar11 * -2 + iVar15) = 0x80639c7; Crystal = (int)AssignPlayerPoolSlot (*(ulong *)(aiStack_330 + iVar16 + uVar11 * -2 + iVar15 + -0x1c), (bool)(&stack0xfffffcb8)[iVar16 + uVar11 * -2 + iVar15]); if ((TPlayerData *)Crystal == (TPlayerData *)0x0) { *(undefined **)(aiStack_330 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = &DAT_080f4420; } else { local_4c[0].TypeID = local_2c.ObjectID; *(ObjectType **)(&stack0xfffffcbc + iVar16 + uVar11 * -2 + iVar15) = local_4c; *(int *)(&stack0xfffffcb8 + iVar16 + uVar11 * -2 + iVar15) = PlayerData->MagicDeltaAct[0x15]; *(int *)(aiStack_330 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = Crystal; *(undefined4 *)((int)&local_350 + iVar16 + uVar11 * -2 + iVar15) = 0x8063a00; LoadDepot(*(TPlayerData **)(aiStack_330 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) ,*(int *)(&stack0xfffffcb8 + iVar16 + uVar11 * -2 + iVar15), *(Object **)(&stack0xfffffcbc + iVar16 + uVar11 * -2 + iVar15)); local_3c[0] = local_2c.ObjectID; *(ulong **)(&stack0xfffffcb8 + iVar16 + uVar11 * -2 + iVar15) = local_3c; *(ObjectType **)(aiStack_330 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = local_4c ; *(undefined4 *)((int)&local_350 + iVar16 + uVar11 * -2 + iVar15) = 0x8063a15; GetFirstContainerObject (*(Object **)(aiStack_330 + iVar16 + uVar11 * -2 + iVar15 + -0x1c)); *(ObjectType **)(aiStack_330 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = local_4c ; *(undefined4 *)((int)&local_350 + iVar16 + uVar11 * -2 + iVar15) = 0x8063a23; iVar6 = CountMoney(*(Object **) (aiStack_330 + iVar16 + uVar11 * -2 + iVar15 + -0x1c)); if (iVar6 < *(int *)(TimeStamp + (int)house * 4)) { *(undefined **)(&stack0xfffffcb8 + iVar16 + uVar11 * -2 + iVar15) = &DAT_080f3e00; *(char **)(aiStack_330 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = "houses"; *(undefined4 *)((int)&local_350 + iVar16 + uVar11 * -2 + iVar15) = 0x8063a4c ; Log(*(char **)(aiStack_330 + iVar16 + uVar11 * -2 + iVar15 + -0x1c), *(char **)(&stack0xfffffcb8 + iVar16 + uVar11 * -2 + iVar15)); pTVar1 = PlayerData; *(char **)(&stack0xfffffcbc + iVar16 + uVar11 * -2 + iVar15) = "Warning!\n\nYou have not enough gold to pay\nthe price for house \"%s\".\nTherefore the transfer is cancelled." ; *(undefined1 **)(&stack0xfffffcc0 + iVar16 + uVar11 * -2 + iVar15) = (undefined1 *)((int)&pTVar1->CharacterID + 2); *(undefined4 *)(&stack0xfffffcb8 + iVar16 + uVar11 * -2 + iVar15) = 500; *(undefined1 **)(aiStack_330 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = local_28c; *(undefined4 *)((int)&local_350 + iVar16 + uVar11 * -2 + iVar15) = 0x8063a77 ; snprintf(*(char **)(aiStack_330 + iVar16 + uVar11 * -2 + iVar15 + -0x1c), *(size_t *)(&stack0xfffffcb8 + iVar16 + uVar11 * -2 + iVar15), *(char **)(&stack0xfffffcbc + iVar16 + uVar11 * -2 + iVar15)); *(undefined1 **)(aiStack_330 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = local_28c; *(undefined4 *)((int)&local_350 + iVar16 + uVar11 * -2 + iVar15) = 0x8063a7f ; uVar7 = AddDynamicString(*(char **)(aiStack_330 + iVar16 + uVar11 * -2 + iVar15 + -0x1c)); *(undefined4 *)(&stack0xfffffcb8 + iVar16 + uVar11 * -2 + iVar15) = 0x1a; *(ulong **)(aiStack_330 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = local_2ac ; *(undefined4 *)((int)&local_350 + iVar16 + uVar11 * -2 + iVar15) = 0x8063a97 ; GetSpecialObject(*(SPECIALMEANING *) (aiStack_330 + iVar16 + uVar11 * -2 + iVar15 + -0x1c)); local_2bc[0] = local_2c.ObjectID; *(ulong **)(&stack0xfffffcbc + iVar16 + uVar11 * -2 + iVar15) = local_2ac; *(undefined4 *)(&stack0xfffffcc0 + iVar16 + uVar11 * -2 + iVar15) = 0; *(ulong **)(&stack0xfffffcb8 + iVar16 + uVar11 * -2 + iVar15) = local_2bc; *(ulong **)(aiStack_330 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = local_29c ; *(undefined4 *)((int)&local_350 + iVar16 + uVar11 * -2 + iVar15) = 0x8063acd ; SetObject(*(Object **)(aiStack_330 + iVar16 + uVar11 * -2 + iVar15 + -0x1c), *(ObjectType **)(&stack0xfffffcb8 + iVar16 + uVar11 * -2 + iVar15) ,*(ulong *)(&stack0xfffffcbc + iVar16 + uVar11 * -2 + iVar15)); *(ulong *)(&stack0xfffffcbc + iVar16 + uVar11 * -2 + iVar15) = uVar7; *(undefined4 *)(&stack0xfffffcb8 + iVar16 + uVar11 * -2 + iVar15) = 9; *(ulong **)(aiStack_330 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = local_29c ; *(undefined4 *)((int)&local_350 + iVar16 + uVar11 * -2 + iVar15) = 0x8063aea ; ChangeObject(*(Object **) (aiStack_330 + iVar16 + uVar11 * -2 + iVar15 + -0x1c), *(INSTANCEATTRIBUTE *) (&stack0xfffffcb8 + iVar16 + uVar11 * -2 + iVar15), *(ulong *)(&stack0xfffffcbc + iVar16 + uVar11 * -2 + iVar15)); local_2bc[0] = local_2c.ObjectID; *(ulong **)(&stack0xfffffcbc + iVar16 + uVar11 * -2 + iVar15) = local_2bc; *(int *)(&stack0xfffffcb8 + iVar16 + uVar11 * -2 + iVar15) = PlayerData->MagicDeltaAct[0x15]; *(int *)(aiStack_330 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = Crystal; *(undefined4 *)((int)&local_350 + iVar16 + uVar11 * -2 + iVar15) = 0x8063b1b ; SaveDepot(*(TPlayerData **) (aiStack_330 + iVar16 + uVar11 * -2 + iVar15 + -0x1c), *(int *)(&stack0xfffffcb8 + iVar16 + uVar11 * -2 + iVar15), *(Object **)(&stack0xfffffcbc + iVar16 + uVar11 * -2 + iVar15)); while( true ) { local_2ac[0] = local_2c.ObjectID; *(ulong **)(&stack0xfffffcb8 + iVar16 + uVar11 * -2 + iVar15) = local_2ac; *(ulong **)(aiStack_330 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = local_2bc; *(undefined4 *)((int)&local_350 + iVar16 + uVar11 * -2 + iVar15) = 0x8063b42; GetFirstContainerObject (*(Object **) (aiStack_330 + iVar16 + uVar11 * -2 + iVar15 + -0x1c)); local_29c[0] = NONE.ObjectID; z = NONE.ObjectID; if (local_2bc[0] == NONE.ObjectID) break; local_2bc[0] = local_2c.ObjectID; *(ulong **)(&stack0xfffffcb8 + iVar16 + uVar11 * -2 + iVar15) = local_2bc; *(int **)(aiStack_330 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = &z; *(undefined4 *)((int)&local_350 + iVar16 + uVar11 * -2 + iVar15) = 0x8063b79; GetFirstContainerObject (*(Object **) (aiStack_330 + iVar16 + uVar11 * -2 + iVar15 + -0x1c)); *(int **)(aiStack_330 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = &z; *(undefined4 *)((int)&local_350 + iVar16 + uVar11 * -2 + iVar15) = 0x8063b84; DeleteObject(*(Object **) (aiStack_330 + iVar16 + uVar11 * -2 + iVar15 + -0x1c)); } *(int *)(aiStack_330 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = Crystal; *(undefined4 *)((int)&local_350 + iVar16 + uVar11 * -2 + iVar15) = 0x8063b94 ; ReleasePlayerPoolSlot (*(TPlayerData **) (aiStack_330 + iVar16 + uVar11 * -2 + iVar15 + -0x1c)); uVar2 = *local_320; *(char **)(aiStack_330 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = "houses"; *(undefined1 **)(&stack0xfffffcbc + iVar16 + uVar11 * -2 + iVar15) = local_8c; *(char **)(&stack0xfffffcb8 + iVar16 + uVar11 * -2 + iVar15) = "bei Reset: UPDATE HouseOwners SET Termination=null,NewOwner=null,Accepted=0,Price=null WHERE World=\'%s\' AND HouseID=%d;\n" ; *(uint *)(&stack0xfffffcc0 + iVar16 + uVar11 * -2 + iVar15) = (uint)uVar2; *(undefined4 *)((int)&local_350 + iVar16 + uVar11 * -2 + iVar15) = 0x8063bbf ; Log(*(char **)(aiStack_330 + iVar16 + uVar11 * -2 + iVar15 + -0x1c), *(char **)(&stack0xfffffcb8 + iVar16 + uVar11 * -2 + iVar15)); *(uint *)(&stack0xfffffcb8 + iVar16 + uVar11 * -2 + iVar15) = (uint)*local_320; *(TQueryManagerConnection **) (aiStack_330 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = QueryManagerConnection; *(undefined4 *)((int)&local_350 + iVar16 + uVar11 * -2 + iVar15) = 0x8063bd9 ; TQueryManagerConnection::cancelHouseTransfer (*(TQueryManagerConnection **) (aiStack_330 + iVar16 + uVar11 * -2 + iVar15 + -0x1c), *(ushort *)(&stack0xfffffcb8 + iVar16 + uVar11 * -2 + iVar15)); goto LAB_08063bd9; } z = local_2c.ObjectID; uVar3 = *(undefined4 *)(TimeStamp + (int)house * 4); *(int **)(aiStack_330 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = &z; *(undefined4 *)(&stack0xfffffcb8 + iVar16 + uVar11 * -2 + iVar15) = uVar3; *(undefined4 *)((int)&local_350 + iVar16 + uVar11 * -2 + iVar15) = 0x806456d; DeleteMoney(*(Object **)(aiStack_330 + iVar16 + uVar11 * -2 + iVar15 + -0x1c), *(int *)(&stack0xfffffcb8 + iVar16 + uVar11 * -2 + iVar15)); z = local_2c.ObjectID; *(int **)(&stack0xfffffcbc + iVar16 + uVar11 * -2 + iVar15) = &z; *(int *)(&stack0xfffffcb8 + iVar16 + uVar11 * -2 + iVar15) = PlayerData->MagicDeltaAct[0x15]; *(int *)(aiStack_330 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = Crystal; *(undefined4 *)((int)&local_350 + iVar16 + uVar11 * -2 + iVar15) = 0x8064598; SaveDepot(*(TPlayerData **)(aiStack_330 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) ,*(int *)(&stack0xfffffcb8 + iVar16 + uVar11 * -2 + iVar15), *(Object **)(&stack0xfffffcbc + iVar16 + uVar11 * -2 + iVar15)); while( true ) { local_2bc[0] = local_2c.ObjectID; *(ulong **)(&stack0xfffffcb8 + iVar16 + uVar11 * -2 + iVar15) = local_2bc; *(int **)(aiStack_330 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = &z; *(undefined4 *)((int)&local_350 + iVar16 + uVar11 * -2 + iVar15) = 0x80645b9 ; GetFirstContainerObject (*(Object **)(aiStack_330 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) ); local_2ac[0] = NONE.ObjectID; local_29c[0] = NONE.ObjectID; if (z == NONE.ObjectID) break; local_2bc[0] = local_2c.ObjectID; *(ulong **)(&stack0xfffffcb8 + iVar16 + uVar11 * -2 + iVar15) = local_2bc; *(int **)(aiStack_330 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = &z; *(undefined4 *)((int)&local_350 + iVar16 + uVar11 * -2 + iVar15) = 0x80645f6 ; GetFirstContainerObject (*(Object **)(aiStack_330 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) ); *(int **)(aiStack_330 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = &z; *(undefined4 *)((int)&local_350 + iVar16 + uVar11 * -2 + iVar15) = 0x8064607 ; DeleteObject(*(Object **) (aiStack_330 + iVar16 + uVar11 * -2 + iVar15 + -0x1c)); } *(int *)(aiStack_330 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = Crystal; *(undefined4 *)((int)&local_350 + iVar16 + uVar11 * -2 + iVar15) = 0x8064617; ReleasePlayerPoolSlot (*(TPlayerData **) (aiStack_330 + iVar16 + uVar11 * -2 + iVar15 + -0x1c)); *(undefined4 *)(&stack0xfffffcb8 + iVar16 + uVar11 * -2 + iVar15) = 0; *(int *)(aiStack_330 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = PlayerData->Cycle[4]; *(undefined4 *)((int)&local_350 + iVar16 + uVar11 * -2 + iVar15) = 0x8064633; Crystal = (int)AssignPlayerPoolSlot (*(ulong *)(aiStack_330 + iVar16 + uVar11 * -2 + iVar15 + -0x1c), (bool)(&stack0xfffffcb8) [iVar16 + uVar11 * -2 + iVar15]); if ((TPlayerData *)Crystal != (TPlayerData *)0x0) { z = local_2c.ObjectID; *(int **)(&stack0xfffffcbc + iVar16 + uVar11 * -2 + iVar15) = &z; *(int *)(&stack0xfffffcb8 + iVar16 + uVar11 * -2 + iVar15) = PlayerData->MagicDeltaAct[0x15]; *(int *)(aiStack_330 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = Crystal; *(undefined4 *)((int)&local_350 + iVar16 + uVar11 * -2 + iVar15) = 0x8064672 ; LoadDepot(*(TPlayerData **) (aiStack_330 + iVar16 + uVar11 * -2 + iVar15 + -0x1c), *(int *)(&stack0xfffffcb8 + iVar16 + uVar11 * -2 + iVar15), *(Object **)(&stack0xfffffcbc + iVar16 + uVar11 * -2 + iVar15)); for (iVar6 = *(int *)(TimeStamp + (int)house * 4); 9999 < iVar6; iVar6 = iVar6 + (int)OwnerIDs * -10000) { NumberOfEvictions = 100; local_2e0 = iVar6 / 10000; piVar13 = &NumberOfEvictions; if (iVar6 / 10000 < 0x65) { piVar13 = &local_2e0; } OwnerIDs = (ulong_0_ *)*piVar13; *(undefined4 *)(&stack0xfffffcb8 + iVar16 + uVar11 * -2 + iVar15) = 3; *(ulong **)(aiStack_330 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = local_2bc; *(undefined4 *)((int)&local_350 + iVar16 + uVar11 * -2 + iVar15) = 0x80646e3; GetSpecialObject(*(SPECIALMEANING *) (aiStack_330 + iVar16 + uVar11 * -2 + iVar15 + -0x1c)) ; local_2ac[0] = local_2c.ObjectID; *(undefined4 *)(&stack0xfffffcc0 + iVar16 + uVar11 * -2 + iVar15) = 0; *(ulong **)(&stack0xfffffcbc + iVar16 + uVar11 * -2 + iVar15) = local_2bc; *(ulong **)(&stack0xfffffcb8 + iVar16 + uVar11 * -2 + iVar15) = local_2ac; *(int **)(aiStack_330 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = &z; *(undefined4 *)((int)&local_350 + iVar16 + uVar11 * -2 + iVar15) = 0x8064719; SetObject(*(Object **) (aiStack_330 + iVar16 + uVar11 * -2 + iVar15 + -0x1c), *(ObjectType **) (&stack0xfffffcb8 + iVar16 + uVar11 * -2 + iVar15), *(ulong *)(&stack0xfffffcbc + iVar16 + uVar11 * -2 + iVar15)); puVar5 = OwnerIDs; *(undefined4 *)(&stack0xfffffcb8 + iVar16 + uVar11 * -2 + iVar15) = 2; *(ulong_0_ **)(&stack0xfffffcbc + iVar16 + uVar11 * -2 + iVar15) = puVar5; *(int **)(aiStack_330 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = &z; *(undefined4 *)((int)&local_350 + iVar16 + uVar11 * -2 + iVar15) = 0x806473c; ChangeObject(*(Object **) (aiStack_330 + iVar16 + uVar11 * -2 + iVar15 + -0x1c), *(INSTANCEATTRIBUTE *) (&stack0xfffffcb8 + iVar16 + uVar11 * -2 + iVar15), *(ulong *)(&stack0xfffffcbc + iVar16 + uVar11 * -2 + iVar15 )); } if (99 < iVar6) { *(undefined4 *)(&stack0xfffffcb8 + iVar16 + uVar11 * -2 + iVar15) = 2; *(ulong **)(aiStack_330 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = local_2bc; *(undefined4 *)((int)&local_350 + iVar16 + uVar11 * -2 + iVar15) = 0x8064a46; GetSpecialObject(*(SPECIALMEANING *) (aiStack_330 + iVar16 + uVar11 * -2 + iVar15 + -0x1c)) ; local_2ac[0] = local_2c.ObjectID; *(ulong **)(&stack0xfffffcb8 + iVar16 + uVar11 * -2 + iVar15) = local_2ac; *(undefined4 *)(&stack0xfffffcc0 + iVar16 + uVar11 * -2 + iVar15) = 0; *(ulong **)(&stack0xfffffcbc + iVar16 + uVar11 * -2 + iVar15) = local_2bc; *(int **)(aiStack_330 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = &z; *(undefined4 *)((int)&local_350 + iVar16 + uVar11 * -2 + iVar15) = 0x8064a7c; SetObject(*(Object **) (aiStack_330 + iVar16 + uVar11 * -2 + iVar15 + -0x1c), *(ObjectType **) (&stack0xfffffcb8 + iVar16 + uVar11 * -2 + iVar15), *(ulong *)(&stack0xfffffcbc + iVar16 + uVar11 * -2 + iVar15)); *(undefined4 *)(&stack0xfffffcb8 + iVar16 + uVar11 * -2 + iVar15) = 2; *(int *)(&stack0xfffffcbc + iVar16 + uVar11 * -2 + iVar15) = iVar6 / 100 ; *(int **)(aiStack_330 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = &z; *(undefined4 *)((int)&local_350 + iVar16 + uVar11 * -2 + iVar15) = 0x8064aac; ChangeObject(*(Object **) (aiStack_330 + iVar16 + uVar11 * -2 + iVar15 + -0x1c), *(INSTANCEATTRIBUTE *) (&stack0xfffffcb8 + iVar16 + uVar11 * -2 + iVar15), *(ulong *)(&stack0xfffffcbc + iVar16 + uVar11 * -2 + iVar15 )); } if (0 < iVar6 % 100) { *(undefined4 *)(&stack0xfffffcb8 + iVar16 + uVar11 * -2 + iVar15) = 1; *(ulong **)(aiStack_330 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = local_2bc; *(undefined4 *)((int)&local_350 + iVar16 + uVar11 * -2 + iVar15) = 0x8064797; GetSpecialObject(*(SPECIALMEANING *) (aiStack_330 + iVar16 + uVar11 * -2 + iVar15 + -0x1c)) ; local_2ac[0] = local_2c.ObjectID; *(ulong **)(&stack0xfffffcb8 + iVar16 + uVar11 * -2 + iVar15) = local_2ac; *(undefined4 *)(&stack0xfffffcc0 + iVar16 + uVar11 * -2 + iVar15) = 0; *(ulong **)(&stack0xfffffcbc + iVar16 + uVar11 * -2 + iVar15) = local_2bc; *(int **)(aiStack_330 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = &z; *(undefined4 *)((int)&local_350 + iVar16 + uVar11 * -2 + iVar15) = 0x80647cd; SetObject(*(Object **) (aiStack_330 + iVar16 + uVar11 * -2 + iVar15 + -0x1c), *(ObjectType **) (&stack0xfffffcb8 + iVar16 + uVar11 * -2 + iVar15), *(ulong *)(&stack0xfffffcbc + iVar16 + uVar11 * -2 + iVar15)); *(int *)(&stack0xfffffcbc + iVar16 + uVar11 * -2 + iVar15) = iVar6 % 100 ; *(undefined4 *)(&stack0xfffffcb8 + iVar16 + uVar11 * -2 + iVar15) = 2; *(int **)(aiStack_330 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = &z; *(undefined4 *)((int)&local_350 + iVar16 + uVar11 * -2 + iVar15) = 0x80647ea; ChangeObject(*(Object **) (aiStack_330 + iVar16 + uVar11 * -2 + iVar15 + -0x1c), *(INSTANCEATTRIBUTE *) (&stack0xfffffcb8 + iVar16 + uVar11 * -2 + iVar15), *(ulong *)(&stack0xfffffcbc + iVar16 + uVar11 * -2 + iVar15 )); } z = local_2c.ObjectID; *(int **)(&stack0xfffffcbc + iVar16 + uVar11 * -2 + iVar15) = &z; *(int *)(&stack0xfffffcb8 + iVar16 + uVar11 * -2 + iVar15) = PlayerData->MagicDeltaAct[0x15]; *(int *)(aiStack_330 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = Crystal; *(undefined4 *)((int)&local_350 + iVar16 + uVar11 * -2 + iVar15) = 0x806481b ; SaveDepot(*(TPlayerData **) (aiStack_330 + iVar16 + uVar11 * -2 + iVar15 + -0x1c), *(int *)(&stack0xfffffcb8 + iVar16 + uVar11 * -2 + iVar15), *(Object **)(&stack0xfffffcbc + iVar16 + uVar11 * -2 + iVar15)); while( true ) { local_2bc[0] = local_2c.ObjectID; *(ulong **)(&stack0xfffffcb8 + iVar16 + uVar11 * -2 + iVar15) = local_2bc; *(int **)(aiStack_330 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = &z; *(undefined4 *)((int)&local_350 + iVar16 + uVar11 * -2 + iVar15) = 0x806483c; GetFirstContainerObject (*(Object **) (aiStack_330 + iVar16 + uVar11 * -2 + iVar15 + -0x1c)); local_2ac[0] = NONE.ObjectID; local_29c[0] = NONE.ObjectID; if (z == NONE.ObjectID) break; local_2bc[0] = local_2c.ObjectID; *(ulong **)(&stack0xfffffcb8 + iVar16 + uVar11 * -2 + iVar15) = local_2bc; *(int **)(aiStack_330 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = &z; *(undefined4 *)((int)&local_350 + iVar16 + uVar11 * -2 + iVar15) = 0x8064879; GetFirstContainerObject (*(Object **) (aiStack_330 + iVar16 + uVar11 * -2 + iVar15 + -0x1c)); *(int **)(aiStack_330 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = &z; *(undefined4 *)((int)&local_350 + iVar16 + uVar11 * -2 + iVar15) = 0x806488a; DeleteObject(*(Object **) (aiStack_330 + iVar16 + uVar11 * -2 + iVar15 + -0x1c)); } *(int *)(aiStack_330 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = Crystal; *(undefined4 *)((int)&local_350 + iVar16 + uVar11 * -2 + iVar15) = 0x806489a ; ReleasePlayerPoolSlot (*(TPlayerData **) (aiStack_330 + iVar16 + uVar11 * -2 + iVar15 + -0x1c)); goto LAB_0806489a; } *(undefined **)(aiStack_330 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = &DAT_080f43e0; } *(undefined4 *)((int)&local_350 + iVar16 + uVar11 * -2 + iVar15) = 0x8064abd; error(*(char **)(aiStack_330 + iVar16 + uVar11 * -2 + iVar15 + -0x1c)); } LAB_08063bd9: house = (THouse *)((int)&house->ID + 1); local_320 = local_320 + 1; local_324 = local_324 + 1; local_328 = local_328 + 0x1e; } while ((int)house < local_2dc); } local_2e8 = Houses; iVar6 = -(Houses * 4 + 0xfU & 0xfffffff0); piVar18 = (int *)(aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c); Deadline = (time_t)(aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15); *(int_0_ **)(&stack0xfffffcc0 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15; puVar5 = NewOwnerIDs; *(int **)(&stack0xfffffcb8 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = &local_2e8; *(ulong_0_ **)(&stack0xfffffcbc + iVar6 + iVar16 + uVar11 * -2 + iVar15) = puVar5; *(TQueryManagerConnection **)(aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = QueryManagerConnection; *(undefined4 *)((int)&local_350 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = 0x8063c4c; iVar8 = TQueryManagerConnection::evictFreeAccounts (*(TQueryManagerConnection **) (aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c), *(int **)(&stack0xfffffcb8 + iVar6 + iVar16 + uVar11 * -2 + iVar15), *(ushort **)(&stack0xfffffcbc + iVar6 + iVar16 + uVar11 * -2 + iVar15), *(ulong **)(&stack0xfffffcc0 + iVar6 + iVar16 + uVar11 * -2 + iVar15)); if (iVar8 == 0) { iVar8 = 0; if (0 < local_2e8) { do { *(uint *)(aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = (uint)*(ushort *)(NewOwnerIDs + iVar8 * 2); *(undefined4 *)((int)&local_350 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = 0x8064480 ; pTVar9 = GetHouse(*(ushort *) (aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c)); if (pTVar9 == (THouse *)0x0) { uVar2 = *(ushort *)(NewOwnerIDs + iVar8 * 2); *(char **)(aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = "CollectRents: Haus mit Nummer %d existiert nicht.\n"; *(uint *)(&stack0xfffffcb8 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = (uint)uVar2; *(undefined4 *)((int)&local_350 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = 0x8064535; error(*(char **)(aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c)); } else { uVar2 = *(ushort *)(NewOwnerIDs + iVar8 * 2); *(char **)(aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = "houses"; *(char **)(&stack0xfffffcb8 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = "Account von Haus %d ist nicht mehr bezahlt.\n"; *(uint *)(&stack0xfffffcbc + iVar6 + iVar16 + uVar11 * -2 + iVar15) = (uint)uVar2; *(undefined4 *)((int)&local_350 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = 0x80644ac; Log(*(char **)(aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c), *(char **)(&stack0xfffffcb8 + iVar6 + iVar16 + uVar11 * -2 + iVar15)); if (*(ulong *)(Deadline + iVar8 * 4) == pTVar9->OwnerID) { *(undefined4 *)(&stack0xfffffcb8 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = 0; *(THouse **)(aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = pTVar9; *(undefined4 *)((int)&local_350 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = 0x80644ef; CleanHouse(*(THouse **) (aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c), *(TPlayerData **) (&stack0xfffffcb8 + iVar6 + iVar16 + uVar11 * -2 + iVar15)); pTVar9->OwnerName[0] = '\0'; pTVar9->OwnerID = 0; pTVar9->Subowners = 0; pTVar9->Guests = 0; pTVar9->Help = 1; } else { *(undefined **)(&stack0xfffffcb8 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = &DAT_080f4260; *(char **)(aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = "houses"; *(undefined4 *)((int)&local_350 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = 0x80644d1; Log(*(char **)(aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c), *(char **)(&stack0xfffffcb8 + iVar6 + iVar16 + uVar11 * -2 + iVar15)); } } iVar8 = iVar8 + 1; } while (iVar8 < local_2e8); } local_2e8 = Houses; *(ulong_0_ **)(&stack0xfffffcbc + iVar6 + iVar16 + uVar11 * -2 + iVar15) = NewOwnerIDs; *(int **)(&stack0xfffffcb8 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = &local_2e8; *(TQueryManagerConnection **)(aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = QueryManagerConnection; *(undefined4 *)((int)&local_350 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = 0x8063c8e; iVar8 = TQueryManagerConnection::evictDeletedCharacters (*(TQueryManagerConnection **) (aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c), *(int **)(&stack0xfffffcb8 + iVar6 + iVar16 + uVar11 * -2 + iVar15), *(ushort **)(&stack0xfffffcbc + iVar6 + iVar16 + uVar11 * -2 + iVar15)); if (iVar8 != 0) { *(undefined **)(aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = &DAT_080f41e0; goto LAB_08064464; } iVar8 = 0; if (0 < local_2e8) { do { *(uint *)(aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = (uint)*(ushort *)(NewOwnerIDs + iVar8 * 2); *(undefined4 *)((int)&local_350 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = 0x80643d1 ; pTVar9 = GetHouse(*(ushort *) (aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c)); if (pTVar9 == (THouse *)0x0) { uVar2 = *(ushort *)(NewOwnerIDs + iVar8 * 2); *(char **)(aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = "CollectRents: Haus mit Nummer %d existiert nicht.\n"; *(uint *)(&stack0xfffffcb8 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = (uint)uVar2; *(undefined4 *)((int)&local_350 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = 0x806445b; error(*(char **)(aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c)); } else { uVar2 = *(ushort *)(NewOwnerIDs + iVar8 * 2); *(char **)(aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = "houses"; *(undefined **)(&stack0xfffffcb8 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = &DAT_080f41a0; *(uint *)(&stack0xfffffcbc + iVar6 + iVar16 + uVar11 * -2 + iVar15) = (uint)uVar2; *(undefined4 *)((int)&local_350 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = 0x80643f9; Log(*(char **)(aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c), *(char **)(&stack0xfffffcb8 + iVar6 + iVar16 + uVar11 * -2 + iVar15)); *(undefined4 *)(&stack0xfffffcb8 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = 0; *(THouse **)(aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = pTVar9; *(undefined4 *)((int)&local_350 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = 0x8064409; CleanHouse(*(THouse **) (aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c), *(TPlayerData **) (&stack0xfffffcb8 + iVar6 + iVar16 + uVar11 * -2 + iVar15)); pTVar9->OwnerName[0] = '\0'; pTVar9->OwnerID = 0; pTVar9->Subowners = 0; pTVar9->Guests = 0; pTVar9->Help = 1; } iVar8 = iVar8 + 1; } while (iVar8 < local_2e8); } iVar19 = 0; iVar8 = 0; if (0 < Houses) { do { *(int *)(&stack0xfffffcb8 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = iVar8; *(vector **)(aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = &House; *(undefined4 *)((int)&local_350 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = 0x806434e ; pTVar9 = vector::operator() (*(vector **) (aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c), *(int *)(&stack0xfffffcb8 + iVar6 + iVar16 + uVar11 * -2 + iVar15)); if (pTVar9->GuildHouse != false) { *(int *)(&stack0xfffffcb8 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = iVar8; *(vector **) (aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = &House; *(undefined4 *)((int)&local_350 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = 0x8064376; pTVar9 = vector::operator() (*(vector **) (aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c), *(int *)(&stack0xfffffcb8 + iVar6 + iVar16 + uVar11 * -2 + iVar15)); if (pTVar9->OwnerID != 0) { *(int *)(&stack0xfffffcb8 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = iVar8; *(vector **) (aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = &House; *(undefined4 *)((int)&local_350 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = 0x8064390; pTVar9 = vector::operator() (*(vector **) (aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c), *(int *)(&stack0xfffffcb8 + iVar6 + iVar16 + uVar11 * -2 + iVar15)); *(ushort *)(NewOwnerIDs + iVar19 * 2) = pTVar9->ID; *(int *)(&stack0xfffffcb8 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = iVar8; *(vector **) (aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = &House; *(undefined4 *)((int)&local_350 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = 0x80643ad; pTVar9 = vector::operator() (*(vector **) (aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c), *(int *)(&stack0xfffffcb8 + iVar6 + iVar16 + uVar11 * -2 + iVar15)); *(ulong *)(Deadline + iVar19 * 4) = pTVar9->OwnerID; iVar19 = iVar19 + 1; } } iVar8 = iVar8 + 1; } while (iVar8 < Houses); } if (0 < iVar19) { *(time_t *)((int)auStack_33c + iVar6 + iVar16 + uVar11 * -2 + iVar15) = Deadline; puVar5 = NewOwnerIDs; *(int *)(&stack0xfffffcb8 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = iVar19; *(int **)(&stack0xfffffcbc + iVar6 + iVar16 + uVar11 * -2 + iVar15) = &local_2e8; *(ulong_0_ **)(&stack0xfffffcc0 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = puVar5; *(TQueryManagerConnection **) (aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = QueryManagerConnection; *(undefined4 *)((int)&local_350 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = 0x8063ce8; iVar8 = TQueryManagerConnection::evictExGuildleaders (*(TQueryManagerConnection **) (aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c), *(int *)(&stack0xfffffcb8 + iVar6 + iVar16 + uVar11 * -2 + iVar15), *(int **)(&stack0xfffffcbc + iVar6 + iVar16 + uVar11 * -2 + iVar15), *(ushort **) (&stack0xfffffcc0 + iVar6 + iVar16 + uVar11 * -2 + iVar15), *(ulong **)((int)auStack_33c + iVar6 + iVar16 + uVar11 * -2 + iVar15) ); if (iVar8 != 0) { *(undefined **)(aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = &DAT_080f4160; *(undefined4 *)((int)&local_350 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = 0x8064331 ; error(*(char **)(aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c)); local_2e8 = 0; } iVar8 = 0; if (0 < local_2e8) { do { *(uint *)(aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = (uint)*(ushort *)(NewOwnerIDs + iVar8 * 2); *(undefined4 *)((int)&local_350 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = 0x8064299; pTVar9 = GetHouse(*(ushort *) (aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) ); if (pTVar9 == (THouse *)0x0) { uVar2 = *(ushort *)(NewOwnerIDs + iVar8 * 2); *(char **)(aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = "CollectRents: Haus mit Nummer %d existiert nicht.\n"; *(uint *)(&stack0xfffffcb8 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = (uint)uVar2; *(undefined4 *)((int)&local_350 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = 0x8064323; error(*(char **)(aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c )); } else { uVar2 = *(ushort *)(NewOwnerIDs + iVar8 * 2); *(char **)(aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = "houses"; *(undefined **)(&stack0xfffffcb8 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = &DAT_080f40e0; *(uint *)(&stack0xfffffcbc + iVar6 + iVar16 + uVar11 * -2 + iVar15) = (uint)uVar2; *(undefined4 *)((int)&local_350 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = 0x80642c1; Log(*(char **)(aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c), *(char **)(&stack0xfffffcb8 + iVar6 + iVar16 + uVar11 * -2 + iVar15)); *(undefined4 *)(&stack0xfffffcb8 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = 0; *(THouse **)(aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = pTVar9; *(undefined4 *)((int)&local_350 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = 0x80642d1; CleanHouse(*(THouse **) (aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c), *(TPlayerData **) (&stack0xfffffcb8 + iVar6 + iVar16 + uVar11 * -2 + iVar15)); pTVar9->OwnerName[0] = '\0'; pTVar9->OwnerID = 0; pTVar9->Subowners = 0; pTVar9->Guests = 0; pTVar9->Help = 1; } iVar8 = iVar8 + 1; } while (iVar8 < local_2e8); } } iVar8 = 0; if (0 < Houses) { do { *(int *)(&stack0xfffffcb8 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = iVar8; *(vector **)(aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = &House; *(undefined4 *)((int)&local_350 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = 0x8064223 ; pTVar9 = vector::operator() (*(vector **) (aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c), *(int *)(&stack0xfffffcb8 + iVar6 + iVar16 + uVar11 * -2 + iVar15)); if (pTVar9->Help == 1) { *(int *)(&stack0xfffffcb8 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = iVar8; *(vector **) (aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = &House; *(undefined4 *)((int)&local_350 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = 0x806424a; pTVar9 = vector::operator() (*(vector **) (aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c), *(int *)(&stack0xfffffcb8 + iVar6 + iVar16 + uVar11 * -2 + iVar15)); *(uint *)(&stack0xfffffcb8 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = (uint)pTVar9->ID; *(TQueryManagerConnection **) (aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = QueryManagerConnection; *(undefined4 *)((int)&local_350 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = 0x806425e; iVar19 = TQueryManagerConnection::deleteHouseOwner (*(TQueryManagerConnection **) (aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c), *(ushort *) (&stack0xfffffcb8 + iVar6 + iVar16 + uVar11 * -2 + iVar15)) ; if (iVar19 != 0) { *(int *)(&stack0xfffffcb8 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = iVar8; *(vector **) (aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = &House; *(undefined4 *)((int)&local_350 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = 0x8064272; pTVar9 = vector::operator() (*(vector **) (aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c), *(int *)(&stack0xfffffcb8 + iVar6 + iVar16 + uVar11 * -2 + iVar15)); uVar2 = pTVar9->ID; *(char **)(aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = "CollectRents: Kann Haus %d nicht aus HouseOwners austragen.\n"; *(uint *)(&stack0xfffffcb8 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = (uint)uVar2; *(undefined4 *)((int)&local_350 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = 0x8064285; error(*(char **)(aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c )); } } iVar8 = iVar8 + 1; } while (iVar8 < Houses); } *(char **)(&stack0xfffffcb8 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = "Treibe Mieten ein...\n"; *(char **)(aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = "houses"; *(undefined4 *)((int)&local_350 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = 0x8063d21; Log(*(char **)(aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c), *(char **)(&stack0xfffffcb8 + iVar6 + iVar16 + uVar11 * -2 + iVar15)); iVar8 = 0; if (0 < Houses) { do { *(int *)(&stack0xfffffcb8 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = iVar8; *(vector **)(aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = &House; *(undefined4 *)((int)&local_350 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = 0x8063d3b ; pTVar9 = vector::operator() (*(vector **) (aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c), *(int *)(&stack0xfffffcb8 + iVar6 + iVar16 + uVar11 * -2 + iVar15)); if (pTVar9->OwnerID != 0) { *(int *)(&stack0xfffffcb8 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = iVar8; *(vector **) (aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = &House; *(undefined4 *)((int)&local_350 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = 0x8063d72; pTVar9 = vector::operator() (*(vector **) (aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c), *(int *)(&stack0xfffffcb8 + iVar6 + iVar16 + uVar11 * -2 + iVar15)); if (pTVar9->PaidUntil <= i_1) { *(int *)(&stack0xfffffcb8 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = iVar8; *(vector **) (aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = &House; *(undefined4 *)((int)&local_350 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = 0x8063d90; pTVar9 = vector::operator() (*(vector **) (aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c), *(int *)(&stack0xfffffcb8 + iVar6 + iVar16 + uVar11 * -2 + iVar15)); *(int *)(&stack0xfffffcb8 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = iVar8; *(vector **) (aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = &House; *(undefined4 *)((int)&local_350 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = 0x8063da2; pTVar10 = vector::operator() (*(vector **) (aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c), *(int *)(&stack0xfffffcb8 + iVar6 + iVar16 + uVar11 * -2 + iVar15)); uVar2 = pTVar10->ID; uVar7 = pTVar9->OwnerID; *(char **)(aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = "houses"; *(undefined **)(&stack0xfffffcb8 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = &DAT_080f3f40; *(ulong *)(&stack0xfffffcc0 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = uVar7 ; *(uint *)(&stack0xfffffcbc + iVar6 + iVar16 + uVar11 * -2 + iVar15) = (uint)uVar2; *(undefined4 *)((int)&local_350 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = 0x8063dc7; Log(*(char **)(aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c), *(char **)(&stack0xfffffcb8 + iVar6 + iVar16 + uVar11 * -2 + iVar15)); *(int *)(&stack0xfffffcb8 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = iVar8; *(vector **) (aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = &House; *(undefined4 *)((int)&local_350 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = 0x8063dd7; pTVar9 = vector::operator() (*(vector **) (aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c), *(int *)(&stack0xfffffcb8 + iVar6 + iVar16 + uVar11 * -2 + iVar15)); HouseIDs = (ushort_0_ *)(pTVar9->PaidUntil + 0x93a80); ppuVar17 = (ushort_0_ **)&PaymentExtension; if (PaymentExtension <= (int)HouseIDs) { ppuVar17 = &HouseIDs; } PlayerData_1 = (TPlayerData *)*ppuVar17; *(int *)(&stack0xfffffcb8 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = iVar8; *(vector **) (aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = &House; *(undefined4 *)((int)&local_350 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = 0x8063e14; pTVar9 = vector::operator() (*(vector **) (aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c), *(int *)(&stack0xfffffcb8 + iVar6 + iVar16 + uVar11 * -2 + iVar15)); *(undefined4 *)(&stack0xfffffcb8 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = 0; *(ulong *)(aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = pTVar9->OwnerID; *(undefined4 *)((int)&local_350 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = 0x8063e2a; local_318 = AssignPlayerPoolSlot (*(ulong *)(aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c), (bool)(&stack0xfffffcb8) [iVar6 + iVar16 + uVar11 * -2 + iVar15]); if (local_318 == (TPlayerData *)0x0) { *(undefined **) (aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = &DAT_080f4060; *(undefined4 *)((int)&local_350 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = 0x806420e; error(*(char **)(aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c)); } else { z = local_2c.ObjectID; *(int *)(&stack0xfffffcb8 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = iVar8; *(vector **) (aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = &House; *(undefined4 *)((int)&local_350 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = 0x8063e51; pTVar9 = vector::operator() (*(vector **) (aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c), *(int *)(&stack0xfffffcb8 + iVar6 + iVar16 + uVar11 * -2 + iVar15)); *(int **)(&stack0xfffffcbc + iVar6 + iVar16 + uVar11 * -2 + iVar15) = &z ; *(int *)(&stack0xfffffcb8 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = pTVar9->DepotNr; *(TPlayerData **) (aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = local_318; *(undefined4 *)((int)&local_350 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = 0x8063e73; LoadDepot(*(TPlayerData **) (aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) ,*(int *)(&stack0xfffffcb8 + iVar6 + iVar16 + uVar11 * -2 + iVar15), *(Object **) (&stack0xfffffcbc + iVar6 + iVar16 + uVar11 * -2 + iVar15)); local_2bc[0] = local_2c.ObjectID; *(ulong **)(&stack0xfffffcb8 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = local_2bc; *(int **)(aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = &z; *(undefined4 *)((int)&local_350 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = 0x8063e94; GetFirstContainerObject (*(Object **) (aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c )); *(int **)(aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = &z; *(undefined4 *)((int)&local_350 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = 0x8063ea5; iVar19 = CountMoney(*(Object **) (aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c)); *(int *)(&stack0xfffffcb8 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = iVar8; *(vector **) (aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = &House; *(undefined4 *)((int)&local_350 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = 0x8063eb7; pTVar9 = vector::operator() (*(vector **) (aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c), *(int *)(&stack0xfffffcb8 + iVar6 + iVar16 + uVar11 * -2 + iVar15)); if (iVar19 < (int)pTVar9->Rent) { if (i_1 < (int)PlayerData_1) { *(undefined **) (&stack0xfffffcb8 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = &DAT_080f4dca; *(char **)(aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = "houses"; *(undefined4 *) ((int)&local_350 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = 0x8063ee9; Log(*(char **)(aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c), *(char **)(&stack0xfffffcb8 + iVar6 + iVar16 + uVar11 * -2 + iVar15)); pTVar1 = (TPlayerData *)((int)PlayerData_1 - i_1); PlayerData_1 = pTVar1; *(vector **) (aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = &House; *(int *)(&stack0xfffffcb8 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = iVar8; iVar19 = (int)(pTVar1[-1].Title + 0x18) / 0x15180 + 1; *(undefined4 *) ((int)&local_350 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = 0x8063f29; pTVar9 = vector::operator() (*(vector **) (aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c),*(int *)(&stack0xfffffcb8 + iVar6 + iVar16 + uVar11 * -2 + iVar15)); local_31c = pTVar9->Name; *(int *)(&stack0xfffffcb8 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = iVar8; *(vector **) (aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = &House; *(undefined4 *) ((int)&local_350 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = 0x8063f42; pTVar9 = vector::operator() (*(vector **) (aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c),*(int *)(&stack0xfffffcb8 + iVar6 + iVar16 + uVar11 * -2 + iVar15)); *(int *)((int)auStack_33c + iVar6 + iVar16 + uVar11 * -2 + iVar15 + 4) = iVar19; pcVar12 = ""; if (iVar19 != 1) { pcVar12 = "s"; } *(char **)(aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -4) = pcVar12; *(char **)((int)auStack_33c + iVar6 + iVar16 + uVar11 * -2 + iVar15) = local_31c; uVar7 = pTVar9->Rent; *(undefined1 **) (aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = local_28c; *(char **)(&stack0xfffffcbc + iVar6 + iVar16 + uVar11 * -2 + iVar15) = "Warning!\n\nThe monthly rent of %ld gold\nfor your house \"%s\"\nis payable. Have it available\nwithin %d day%s, or you will\nlose this house." ; *(undefined4 *) (&stack0xfffffcb8 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = 500; *(ulong *)(&stack0xfffffcc0 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = uVar7; *(undefined4 *) ((int)&local_350 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = 0x8063f8c; snprintf(*(char **)(aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c ), *(size_t *) (&stack0xfffffcb8 + iVar6 + iVar16 + uVar11 * -2 + iVar15), *(char **)(&stack0xfffffcbc + iVar6 + iVar16 + uVar11 * -2 + iVar15)); *(undefined1 **) (aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = local_28c; *(undefined4 *) ((int)&local_350 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = 0x8063f94; uVar7 = AddDynamicString(*(char **)(aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c)); *(undefined4 *) (&stack0xfffffcb8 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = 0x1a; *(ulong **) (aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = local_29c; *(undefined4 *) ((int)&local_350 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = 0x8063fac; GetSpecialObject(*(SPECIALMEANING *) (aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) ); local_4c[0].TypeID = local_2c.ObjectID; *(ulong **) (&stack0xfffffcbc + iVar6 + iVar16 + uVar11 * -2 + iVar15) = local_29c; *(undefined4 *) (&stack0xfffffcc0 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = 0; *(ObjectType **) (&stack0xfffffcb8 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = local_4c; *(ulong **) (aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = local_2ac; *(undefined4 *) ((int)&local_350 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = 0x8063fdc; SetObject(*(Object **) (aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c), *(ObjectType **) (&stack0xfffffcb8 + iVar6 + iVar16 + uVar11 * -2 + iVar15), *(ulong *)(&stack0xfffffcbc + iVar6 + iVar16 + uVar11 * -2 + iVar15)); *(ulong *)(&stack0xfffffcbc + iVar6 + iVar16 + uVar11 * -2 + iVar15) = uVar7; *(undefined4 *) (&stack0xfffffcb8 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = 9; *(ulong **) (aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = local_2ac; *(undefined4 *) ((int)&local_350 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = 0x8063ff9; ChangeObject(*(Object **) (aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c), *(INSTANCEATTRIBUTE *) (&stack0xfffffcb8 + iVar6 + iVar16 + uVar11 * -2 + iVar15), *(ulong *)(&stack0xfffffcbc + iVar6 + iVar16 + uVar11 * -2 + iVar15)); local_2ac[0] = local_2c.ObjectID; *(int *)(&stack0xfffffcb8 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = iVar8; *(vector **) (aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = &House; *(undefined4 *) ((int)&local_350 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = 0x8064012; pTVar9 = vector::operator() (*(vector **) (aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c),*(int *)(&stack0xfffffcb8 + iVar6 + iVar16 + uVar11 * -2 + iVar15)); *(ulong **) (&stack0xfffffcbc + iVar6 + iVar16 + uVar11 * -2 + iVar15) = local_2ac; *(int *)(&stack0xfffffcb8 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = pTVar9->DepotNr ; *(TPlayerData **) (aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = local_318; *(undefined4 *) ((int)&local_350 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = 0x8064034; SaveDepot(*(TPlayerData **) (aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c), *(int *)(&stack0xfffffcb8 + iVar6 + iVar16 + uVar11 * -2 + iVar15), *(Object **) (&stack0xfffffcbc + iVar6 + iVar16 + uVar11 * -2 + iVar15)); } else { *(char **)(&stack0xfffffcb8 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = "Mieter wird hinausgeworfen.\n"; *(char **)(aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = "houses"; *(undefined4 *) ((int)&local_350 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = 0x80640cc; Log(*(char **)(aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c), *(char **)(&stack0xfffffcb8 + iVar6 + iVar16 + uVar11 * -2 + iVar15)); *(int *)(&stack0xfffffcb8 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = iVar8; *(vector **) (aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = &House; *(undefined4 *) ((int)&local_350 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = 0x80640dc; pTVar9 = vector::operator() (*(vector **) (aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c),*(int *)(&stack0xfffffcb8 + iVar6 + iVar16 + uVar11 * -2 + iVar15)); *(undefined4 *) (&stack0xfffffcbc + iVar6 + iVar16 + uVar11 * -2 + iVar15) = 0; *(ulong *)(&stack0xfffffcb8 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = pTVar9->OwnerID; *(TQueryManagerConnection **) (aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = QueryManagerConnection; *(undefined4 *) ((int)&local_350 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = 0x80640fb; iVar19 = TQueryManagerConnection::excludeFromAuctions (*(TQueryManagerConnection **) (aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c),*(ulong *)(&stack0xfffffcb8 + iVar6 + iVar16 + uVar11 * -2 + iVar15), (bool)(&stack0xfffffcbc) [iVar6 + iVar16 + uVar11 * -2 + iVar15]); if (iVar19 != 0) { *(char **)(aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = "CollectRents: Kann Mieter nicht verbannen.\n"; *(undefined4 *) ((int)&local_350 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = 0x8064161; error(*(char **)(aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c)); } *(int *)(&stack0xfffffcb8 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = iVar8; *(vector **) (aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = &House; *(undefined4 *) ((int)&local_350 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = 0x806410f; pTVar9 = vector::operator() (*(vector **) (aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c),*(int *)(&stack0xfffffcb8 + iVar6 + iVar16 + uVar11 * -2 + iVar15)); pTVar1 = local_318; *(THouse **) (aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = pTVar9; *(TPlayerData **) (&stack0xfffffcb8 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = pTVar1; *(undefined4 *) ((int)&local_350 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = 0x8064121; CleanHouse(*(THouse **) (aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c), *(TPlayerData **) (&stack0xfffffcb8 + iVar6 + iVar16 + uVar11 * -2 + iVar15)); *(int *)(&stack0xfffffcb8 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = iVar8; *(vector **) (aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = &House; *(undefined4 *) ((int)&local_350 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = 0x8064131; pTVar9 = vector::operator() (*(vector **) (aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c),*(int *)(&stack0xfffffcb8 + iVar6 + iVar16 + uVar11 * -2 + iVar15)); pTVar9->OwnerName[0] = '\0'; pTVar9->OwnerID = 0; pTVar9->Subowners = 0; pTVar9->Guests = 0; } } else { *(undefined **) (&stack0xfffffcb8 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = &DAT_080f4dff; *(char **)(aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = "houses"; *(undefined4 *) ((int)&local_350 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = 0x8064177; Log(*(char **)(aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c), *(char **)(&stack0xfffffcb8 + iVar6 + iVar16 + uVar11 * -2 + iVar15)); *(int *)(&stack0xfffffcb8 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = iVar8; *(vector **) (aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = &House; *(undefined4 *) ((int)&local_350 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = 0x8064187; pTVar9 = vector::operator() (*(vector **) (aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c), *(int *)(&stack0xfffffcb8 + iVar6 + iVar16 + uVar11 * -2 + iVar15)); local_2ac[0] = local_2c.ObjectID; uVar7 = pTVar9->Rent; *(ulong **) (aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = local_2ac; *(ulong *)(&stack0xfffffcb8 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = uVar7; *(undefined4 *) ((int)&local_350 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = 0x80641a8; DeleteMoney(*(Object **) (aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c), *(int *)(&stack0xfffffcb8 + iVar6 + iVar16 + uVar11 * -2 + iVar15)); local_2ac[0] = local_2c.ObjectID; *(int *)(&stack0xfffffcb8 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = iVar8; *(vector **) (aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = &House; *(undefined4 *) ((int)&local_350 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = 0x80641c1; pTVar9 = vector::operator() (*(vector **) (aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c), *(int *)(&stack0xfffffcb8 + iVar6 + iVar16 + uVar11 * -2 + iVar15)); *(ulong **) (&stack0xfffffcbc + iVar6 + iVar16 + uVar11 * -2 + iVar15) = local_2ac; *(int *)(&stack0xfffffcb8 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = pTVar9->DepotNr; *(TPlayerData **) (aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = local_318; *(undefined4 *) ((int)&local_350 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = 0x80641e3; SaveDepot(*(TPlayerData **) (aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c), *(int *)(&stack0xfffffcb8 + iVar6 + iVar16 + uVar11 * -2 + iVar15), *(Object **) (&stack0xfffffcbc + iVar6 + iVar16 + uVar11 * -2 + iVar15 )); *(int *)(&stack0xfffffcb8 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = iVar8; *(vector **) (aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = &House; *(undefined4 *) ((int)&local_350 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = 0x80641f3; pTVar9 = vector::operator() (*(vector **) (aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c), *(int *)(&stack0xfffffcb8 + iVar6 + iVar16 + uVar11 * -2 + iVar15)); pTVar9->PaidUntil = pTVar9->PaidUntil + 0x278d00; } while( true ) { local_2bc[0] = local_2c.ObjectID; *(ulong **) (&stack0xfffffcb8 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = local_2bc; *(int **)(aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = &z; *(undefined4 *) ((int)&local_350 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = 0x8064055; GetFirstContainerObject (*(Object **) (aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c)); local_2ac[0] = NONE.ObjectID; local_29c[0] = NONE.ObjectID; if (z == NONE.ObjectID) break; local_2bc[0] = local_2c.ObjectID; *(ulong **) (&stack0xfffffcb8 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = local_2bc; *(int **)(aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = &z; *(undefined4 *) ((int)&local_350 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = 0x8064092; GetFirstContainerObject (*(Object **) (aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c)); *(int **)(aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = &z; *(undefined4 *) ((int)&local_350 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = 0x80640a3; DeleteObject(*(Object **) (aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c)); } *(TPlayerData **) (aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = local_318; *(undefined4 *)((int)&local_350 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = 0x80640b3; ReleasePlayerPoolSlot (*(TPlayerData **) (aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c )); } } } iVar8 = iVar8 + 1; } while (iVar8 < Houses); } } else { *(char **)(aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c) = "CollectRents: Kann Zahlungsdaten nicht ermitteln.\n"; LAB_08064464: *(undefined4 *)((int)&local_350 + iVar6 + iVar16 + uVar11 * -2 + iVar15) = 0x8064469; error(*(char **)(aiStack_330 + iVar6 + iVar16 + uVar11 * -2 + iVar15 + -0x1c)); } pOVar14 = (ObjectType *)&z; z = local_2c.ObjectID; LAB_080638c5: *piVar18 = (int)pOVar14; piVar18[-1] = 0x80638cd; DeleteObject((Object *)*piVar18); return; } // WARNING: Unknown calling convention -- yet parameter storage is locked void StartAuctions(void) { ushort uVar1; ulong uVar2; int iVar3; int iVar4; char_0__30_ *OwnerNames; int iVar5; THouse *pTVar6; THouse *pTVar7; THouse *pTVar8; int iVar9; int iVar10; THouse *house; int i; undefined4 *puVar11; ushort_0_ *HouseIDs; int_0_ *PaidUntils; uint uVar12; int iVar13; uint uStack_90; int iStack_78; ushort auStack_74 [4]; int local_6c; ulong_0_ *OwnerIDs; int local_64; int NumberOfHouses; int NumberOfAuctions; char HelpWorld [60]; OwnerIDs = &stack0xffffff74; uStack_90 = 0x8064b52; Log("houses","Starte neue Versteigerungen...\n"); iVar13 = 0; if (0 < Houses) { do { iVar9 = iVar13 + 1; uStack_90 = 0x8065101; pTVar6 = vector::operator()(&House,iVar13); pTVar6->Help = 0; iVar13 = iVar9; } while (iVar9 < Houses); } NumberOfHouses = Houses; iVar9 = -(Houses * 2 + 0xfU & 0xfffffff0); puVar11 = (undefined4 *)(&stack0xffffff74 + iVar9); iVar13 = (int)auStack_74 + iVar9; *(int *)(&stack0xffffff7c + iVar9) = iVar13; *(int **)(&stack0xffffff78 + iVar9) = &NumberOfHouses; *(TQueryManagerConnection **)(&stack0xffffff74 + iVar9) = QueryManagerConnection; *(undefined4 *)((int)&uStack_90 + iVar9) = 0x8064b87; iVar5 = TQueryManagerConnection::getAuctions (*(TQueryManagerConnection **)(&stack0xffffff74 + iVar9), *(int **)(&stack0xffffff78 + iVar9),*(ushort **)(&stack0xffffff7c + iVar9)); if (iVar5 == 0) { iVar5 = 0; if (0 < NumberOfHouses) { do { *(uint *)(&stack0xffffff74 + iVar9) = (uint)*(ushort *)(iVar13 + iVar5 * 2); *(undefined4 *)((int)&uStack_90 + iVar9) = 0x80650ad; pTVar6 = GetHouse(*(ushort *)(&stack0xffffff74 + iVar9)); if (pTVar6 == (THouse *)0x0) { uVar1 = *(ushort *)(iVar13 + iVar5 * 2); *(char **)(&stack0xffffff74 + iVar9) = "StartAuctions: Haus mit Nummer %d existiert nicht (1).\n"; *(uint *)(&stack0xffffff78 + iVar9) = (uint)uVar1; *(undefined4 *)((int)&uStack_90 + iVar9) = 0x80650db; error(*(char **)(&stack0xffffff74 + iVar9)); } else { pTVar6->Help = 1; } iVar5 = iVar5 + 1; } while (iVar5 < NumberOfHouses); } *(char **)(&stack0xffffff78 + iVar9) = WorldName; iVar5 = 0; *(int **)(&stack0xffffff74 + iVar9) = &NumberOfAuctions; *(undefined4 *)((int)&uStack_90 + iVar9) = 0x8064baf; AddSlashes(*(char **)(&stack0xffffff74 + iVar9),*(char **)(&stack0xffffff78 + iVar9)); if (0 < Houses) { do { *(int *)(&stack0xffffff78 + iVar9) = iVar5; *(vector **)(&stack0xffffff74 + iVar9) = &House; *(undefined4 *)((int)&uStack_90 + iVar9) = 0x8064fa7; pTVar6 = vector::operator() (*(vector **)(&stack0xffffff74 + iVar9), *(int *)(&stack0xffffff78 + iVar9)); if (pTVar6->OwnerID == 0) { *(int *)(&stack0xffffff78 + iVar9) = iVar5; *(vector **)(&stack0xffffff74 + iVar9) = &House; *(undefined4 *)((int)&uStack_90 + iVar9) = 0x8064fd0; pTVar6 = vector::operator() (*(vector **)(&stack0xffffff74 + iVar9), *(int *)(&stack0xffffff78 + iVar9)); if (pTVar6->Help == 0) { *(int *)(&stack0xffffff78 + iVar9) = iVar5; *(vector **)(&stack0xffffff74 + iVar9) = &House; *(undefined4 *)((int)&uStack_90 + iVar9) = 0x8064fea; pTVar6 = vector::operator() (*(vector **)(&stack0xffffff74 + iVar9), *(int *)(&stack0xffffff78 + iVar9)); if (pTVar6->NoAuction == false) { *(int *)(&stack0xffffff78 + iVar9) = iVar5; *(vector **)(&stack0xffffff74 + iVar9) = &House; *(undefined4 *)((int)&uStack_90 + iVar9) = 0x8065003; pTVar6 = vector::operator() (*(vector **)(&stack0xffffff74 + iVar9), *(int *)(&stack0xffffff78 + iVar9)); uVar1 = pTVar6->ID; *(char **)(&stack0xffffff74 + iVar9) = "houses"; *(char **)(&stack0xffffff78 + iVar9) = "Trage Haus %d zur Versteigerung ein.\n"; *(uint *)(&stack0xffffff7c + iVar9) = (uint)uVar1; *(undefined4 *)((int)&uStack_90 + iVar9) = 0x806501e; Log(*(char **)(&stack0xffffff74 + iVar9), *(char **)(&stack0xffffff78 + iVar9)); *(vector **)(&stack0xffffff74 + iVar9) = &House; *(int *)(&stack0xffffff78 + iVar9) = iVar5; *(undefined4 *)((int)&uStack_90 + iVar9) = 0x806502e; pTVar6 = vector::operator() (*(vector **)(&stack0xffffff74 + iVar9), *(int *)(&stack0xffffff78 + iVar9)); uVar1 = pTVar6->ID; *(char **)(&stack0xffffff74 + iVar9) = "houses"; *(int **)(&stack0xffffff7c + iVar9) = &NumberOfAuctions; *(char **)(&stack0xffffff78 + iVar9) = "bei Reset: DELETE FROM Auctions WHERE World=\'%s\' AND HouseID=%d;\n" ; *(uint *)(&stack0xffffff80 + iVar9) = (uint)uVar1; *(undefined4 *)((int)&uStack_90 + iVar9) = 0x806504d; Log(*(char **)(&stack0xffffff74 + iVar9), *(char **)(&stack0xffffff78 + iVar9)); *(vector **)(&stack0xffffff74 + iVar9) = &House; *(int *)(&stack0xffffff78 + iVar9) = iVar5; *(undefined4 *)((int)&uStack_90 + iVar9) = 0x806505d; pTVar6 = vector::operator() (*(vector **)(&stack0xffffff74 + iVar9), *(int *)(&stack0xffffff78 + iVar9)); *(uint *)(&stack0xffffff78 + iVar9) = (uint)pTVar6->ID; *(TQueryManagerConnection **)(&stack0xffffff74 + iVar9) = QueryManagerConnection; *(undefined4 *)((int)&uStack_90 + iVar9) = 0x8065071; iVar10 = TQueryManagerConnection::startAuction (*(TQueryManagerConnection **) (&stack0xffffff74 + iVar9), *(ushort *)(&stack0xffffff78 + iVar9)); if (iVar10 != 0) { *(int *)(&stack0xffffff78 + iVar9) = iVar5; *(vector **)(&stack0xffffff74 + iVar9) = &House; *(undefined4 *)((int)&uStack_90 + iVar9) = 0x8065089; pTVar6 = vector::operator() (*(vector **)(&stack0xffffff74 + iVar9), *(int *)(&stack0xffffff78 + iVar9)); uVar1 = pTVar6->ID; *(char **)(&stack0xffffff74 + iVar9) = "StartAuctions: Kann Haus %d nicht zur Versteigerung eintragen.\n" ; *(uint *)(&stack0xffffff78 + iVar9) = (uint)uVar1; *(undefined4 *)((int)&uStack_90 + iVar9) = 0x806509c; error(*(char **)(&stack0xffffff74 + iVar9)); } } } } iVar5 = iVar5 + 1; } while (iVar5 < Houses); } iVar5 = 0; if (0 < Houses) { do { *(int *)(&stack0xffffff78 + iVar9) = iVar5; iVar5 = iVar5 + 1; *(vector **)(&stack0xffffff74 + iVar9) = &House; *(undefined4 *)((int)&uStack_90 + iVar9) = 0x8064f83; pTVar6 = vector::operator() (*(vector **)(&stack0xffffff74 + iVar9), *(int *)(&stack0xffffff78 + iVar9)); pTVar6->Help = 0; } while (iVar5 < Houses); } local_64 = Houses; uVar12 = (Houses + -1) * 4 + 0x13U & 0xfffffff0; iVar5 = -uVar12; iVar4 = iVar5 + iVar9 + -0x8c; iVar10 = -((Houses + -1) * 0x1e + 0x2dU & 0xfffffff0); local_6c = (int)auStack_74 + iVar5 + iVar9; iVar3 = -uVar12; puVar11 = (undefined4 *)(&stack0xffffff74 + iVar3 + iVar10 + iVar4 + 0x8c); *(int *)(&stack0xffffff84 + iVar3 + iVar10 + iVar4 + 0x8c) = (int)auStack_74 + iVar10 + iVar5 + iVar9 + -0x8c + 0x8c; iVar9 = (int)auStack_74 + iVar3 + iVar10 + iVar4 + 0x8c; *(int *)(HelpWorld + iVar3 + iVar10 + iVar4 + 0x6c) = iVar9; iVar5 = local_6c; *(int **)(&stack0xffffff78 + iVar3 + iVar10 + iVar4 + 0x8c) = &local_64; *(int *)(&stack0xffffff7c + iVar3 + iVar10 + iVar4 + 0x8c) = iVar13; *(int *)(&stack0xffffff80 + iVar3 + iVar10 + iVar4 + 0x8c) = iVar5; *(TQueryManagerConnection **)(&stack0xffffff74 + iVar3 + iVar10 + iVar4 + 0x8c) = QueryManagerConnection; *(undefined4 *)((int)&uStack_90 + iVar3 + iVar10 + iVar4 + 0x8c) = 0x8064c20; iVar5 = TQueryManagerConnection::getHouseOwners (*(TQueryManagerConnection **) (&stack0xffffff74 + iVar3 + iVar10 + iVar4 + 0x8c), *(int **)(&stack0xffffff78 + iVar3 + iVar10 + iVar4 + 0x8c), *(ushort **)(&stack0xffffff7c + iVar3 + iVar10 + iVar4 + 0x8c), *(ulong **)(&stack0xffffff80 + iVar3 + iVar10 + iVar4 + 0x8c), *(char (**) [30])(&stack0xffffff84 + iVar3 + iVar10 + iVar4 + 0x8c), *(int **)(HelpWorld + iVar3 + iVar10 + iVar4 + 0x6c)); if (iVar5 == 0) { iVar5 = 0; if (0 < local_64) { do { *(uint *)(&stack0xffffff74 + iVar3 + iVar10 + iVar4 + 0x8c) = (uint)*(ushort *)(iVar13 + iVar5 * 2); *(undefined4 *)((int)&uStack_90 + iVar3 + iVar10 + iVar4 + 0x8c) = 0x8064efc; pTVar6 = GetHouse(*(ushort *)(&stack0xffffff74 + iVar3 + iVar10 + iVar4 + 0x8c)) ; if (pTVar6 == (THouse *)0x0) { uVar1 = *(ushort *)(iVar13 + iVar5 * 2); *(char **)(&stack0xffffff74 + iVar3 + iVar10 + iVar4 + 0x8c) = "StartAuctions: Haus mit Nummer %d existiert nicht (2).\n"; *(uint *)(&stack0xffffff78 + iVar3 + iVar10 + iVar4 + 0x8c) = (uint)uVar1; *(undefined4 *)((int)&uStack_90 + iVar3 + iVar10 + iVar4 + 0x8c) = 0x8064f5b ; error(*(char **)(&stack0xffffff74 + iVar3 + iVar10 + iVar4 + 0x8c)); } else { pTVar6->Help = 1; if (pTVar6->OwnerID != *(ulong *)(local_6c + iVar5 * 4)) { pTVar6->Help = 2; } if (pTVar6->PaidUntil != *(int *)(iVar9 + iVar5 * 4)) { pTVar6->Help = 2; } } iVar5 = iVar5 + 1; } while (iVar5 < local_64); } *(char **)(&stack0xffffff78 + iVar3 + iVar10 + iVar4 + 0x8c) = "Aktualisiere Liste der Mieter...\n"; iVar13 = 0; *(char **)(&stack0xffffff74 + iVar3 + iVar10 + iVar4 + 0x8c) = "houses"; *(undefined4 *)((int)&uStack_90 + iVar3 + iVar10 + iVar4 + 0x8c) = 0x8064c49; Log(*(char **)(&stack0xffffff74 + iVar3 + iVar10 + iVar4 + 0x8c), *(char **)(&stack0xffffff78 + iVar3 + iVar10 + iVar4 + 0x8c)); if (Houses < 1) { return; } do { *(int *)(&stack0xffffff78 + iVar3 + iVar10 + iVar4 + 0x8c) = iVar13; *(vector **)(&stack0xffffff74 + iVar3 + iVar10 + iVar4 + 0x8c) = &House; *(undefined4 *)((int)&uStack_90 + iVar3 + iVar10 + iVar4 + 0x8c) = 0x8064c70; pTVar6 = vector::operator() (*(vector **) (&stack0xffffff74 + iVar3 + iVar10 + iVar4 + 0x8c), *(int *)(&stack0xffffff78 + iVar3 + iVar10 + iVar4 + 0x8c)); if (pTVar6->OwnerID == 0) { *(int *)(&stack0xffffff78 + iVar3 + iVar10 + iVar4 + 0x8c) = iVar13; *(vector **)(&stack0xffffff74 + iVar3 + iVar10 + iVar4 + 0x8c) = &House; *(undefined4 *)((int)&uStack_90 + iVar3 + iVar10 + iVar4 + 0x8c) = 0x8064e60; pTVar6 = vector::operator() (*(vector **) (&stack0xffffff74 + iVar3 + iVar10 + iVar4 + 0x8c), *(int *)(&stack0xffffff78 + iVar3 + iVar10 + iVar4 + 0x8c)); if (pTVar6->Help != 0) { *(int *)(&stack0xffffff78 + iVar3 + iVar10 + iVar4 + 0x8c) = iVar13; *(vector **)(&stack0xffffff74 + iVar3 + iVar10 + iVar4 + 0x8c) = &House; *(undefined4 *)((int)&uStack_90 + iVar3 + iVar10 + iVar4 + 0x8c) = 0x8064e7e ; pTVar6 = vector::operator() (*(vector **) (&stack0xffffff74 + iVar3 + iVar10 + iVar4 + 0x8c), *(int *)(&stack0xffffff78 + iVar3 + iVar10 + iVar4 + 0x8c)); uVar1 = pTVar6->ID; *(char **)(&stack0xffffff74 + iVar3 + iVar10 + iVar4 + 0x8c) = "houses"; *(char **)(&stack0xffffff78 + iVar3 + iVar10 + iVar4 + 0x8c) = "Trage nicht mehr vermietetes Haus %d aus.\n"; *(uint *)(&stack0xffffff7c + iVar3 + iVar10 + iVar4 + 0x8c) = (uint)uVar1; *(undefined4 *)((int)&uStack_90 + iVar3 + iVar10 + iVar4 + 0x8c) = 0x8064e99 ; Log(*(char **)(&stack0xffffff74 + iVar3 + iVar10 + iVar4 + 0x8c), *(char **)(&stack0xffffff78 + iVar3 + iVar10 + iVar4 + 0x8c)); *(vector **)(&stack0xffffff74 + iVar3 + iVar10 + iVar4 + 0x8c) = &House; *(int *)(&stack0xffffff78 + iVar3 + iVar10 + iVar4 + 0x8c) = iVar13; *(undefined4 *)((int)&uStack_90 + iVar3 + iVar10 + iVar4 + 0x8c) = 0x8064ea9 ; pTVar6 = vector::operator() (*(vector **) (&stack0xffffff74 + iVar3 + iVar10 + iVar4 + 0x8c), *(int *)(&stack0xffffff78 + iVar3 + iVar10 + iVar4 + 0x8c)); *(uint *)(&stack0xffffff78 + iVar3 + iVar10 + iVar4 + 0x8c) = (uint)pTVar6->ID; *(TQueryManagerConnection **) (&stack0xffffff74 + iVar3 + iVar10 + iVar4 + 0x8c) = QueryManagerConnection ; *(undefined4 *)((int)&uStack_90 + iVar3 + iVar10 + iVar4 + 0x8c) = 0x8064ebd ; iVar9 = TQueryManagerConnection::deleteHouseOwner (*(TQueryManagerConnection **) (&stack0xffffff74 + iVar3 + iVar10 + iVar4 + 0x8c), *(ushort *) (&stack0xffffff78 + iVar3 + iVar10 + iVar4 + 0x8c)); if (iVar9 != 0) { *(int *)(&stack0xffffff78 + iVar3 + iVar10 + iVar4 + 0x8c) = iVar13; *(vector **)(&stack0xffffff74 + iVar3 + iVar10 + iVar4 + 0x8c) = &House; *(undefined4 *)((int)&uStack_90 + iVar3 + iVar10 + iVar4 + 0x8c) = 0x8064ed5; pTVar6 = vector::operator() (*(vector **) (&stack0xffffff74 + iVar3 + iVar10 + iVar4 + 0x8c), *(int *)(&stack0xffffff78 + iVar3 + iVar10 + iVar4 + 0x8c)); uVar1 = pTVar6->ID; *(char **)(&stack0xffffff74 + iVar3 + iVar10 + iVar4 + 0x8c) = "StartAuctions: Kann nicht mehr vermietetes Haus %d nicht austragen.\n" ; *(uint *)(&stack0xffffff78 + iVar3 + iVar10 + iVar4 + 0x8c) = (uint)uVar1; *(undefined4 *)((int)&uStack_90 + iVar3 + iVar10 + iVar4 + 0x8c) = 0x8064ee8; error(*(char **)(&stack0xffffff74 + iVar3 + iVar10 + iVar4 + 0x8c)); } } } *(int *)(&stack0xffffff78 + iVar3 + iVar10 + iVar4 + 0x8c) = iVar13; *(vector **)(&stack0xffffff74 + iVar3 + iVar10 + iVar4 + 0x8c) = &House; *(undefined4 *)((int)&uStack_90 + iVar3 + iVar10 + iVar4 + 0x8c) = 0x8064c8e; pTVar6 = vector::operator() (*(vector **) (&stack0xffffff74 + iVar3 + iVar10 + iVar4 + 0x8c), *(int *)(&stack0xffffff78 + iVar3 + iVar10 + iVar4 + 0x8c)); if (pTVar6->OwnerID != 0) { *(int *)(&stack0xffffff78 + iVar3 + iVar10 + iVar4 + 0x8c) = iVar13; *(vector **)(&stack0xffffff74 + iVar3 + iVar10 + iVar4 + 0x8c) = &House; *(undefined4 *)((int)&uStack_90 + iVar3 + iVar10 + iVar4 + 0x8c) = 0x8064d87; pTVar6 = vector::operator() (*(vector **) (&stack0xffffff74 + iVar3 + iVar10 + iVar4 + 0x8c), *(int *)(&stack0xffffff78 + iVar3 + iVar10 + iVar4 + 0x8c)); if (pTVar6->Help == 0) { *(int *)(&stack0xffffff78 + iVar3 + iVar10 + iVar4 + 0x8c) = iVar13; *(vector **)(&stack0xffffff74 + iVar3 + iVar10 + iVar4 + 0x8c) = &House; *(undefined4 *)((int)&uStack_90 + iVar3 + iVar10 + iVar4 + 0x8c) = 0x8064da5 ; pTVar6 = vector::operator() (*(vector **) (&stack0xffffff74 + iVar3 + iVar10 + iVar4 + 0x8c), *(int *)(&stack0xffffff78 + iVar3 + iVar10 + iVar4 + 0x8c)); uVar1 = pTVar6->ID; *(char **)(&stack0xffffff74 + iVar3 + iVar10 + iVar4 + 0x8c) = "houses"; *(char **)(&stack0xffffff78 + iVar3 + iVar10 + iVar4 + 0x8c) = "Trage vermietetes Haus %d ein.\n"; *(uint *)(&stack0xffffff7c + iVar3 + iVar10 + iVar4 + 0x8c) = (uint)uVar1; *(undefined4 *)((int)&uStack_90 + iVar3 + iVar10 + iVar4 + 0x8c) = 0x8064dc0 ; Log(*(char **)(&stack0xffffff74 + iVar3 + iVar10 + iVar4 + 0x8c), *(char **)(&stack0xffffff78 + iVar3 + iVar10 + iVar4 + 0x8c)); *(vector **)(&stack0xffffff74 + iVar3 + iVar10 + iVar4 + 0x8c) = &House; *(int *)(&stack0xffffff78 + iVar3 + iVar10 + iVar4 + 0x8c) = iVar13; *(undefined4 *)((int)&uStack_90 + iVar3 + iVar10 + iVar4 + 0x8c) = 0x8064dd0 ; pTVar6 = vector::operator() (*(vector **) (&stack0xffffff74 + iVar3 + iVar10 + iVar4 + 0x8c), *(int *)(&stack0xffffff78 + iVar3 + iVar10 + iVar4 + 0x8c)); *(vector **)(&stack0xffffff74 + iVar3 + iVar10 + iVar4 + 0x8c) = &House; *(int *)(&stack0xffffff78 + iVar3 + iVar10 + iVar4 + 0x8c) = iVar13; *(undefined4 *)((int)&uStack_90 + iVar3 + iVar10 + iVar4 + 0x8c) = 0x8064de2 ; pTVar7 = vector::operator() (*(vector **) (&stack0xffffff74 + iVar3 + iVar10 + iVar4 + 0x8c), *(int *)(&stack0xffffff78 + iVar3 + iVar10 + iVar4 + 0x8c)); *(vector **)(&stack0xffffff74 + iVar3 + iVar10 + iVar4 + 0x8c) = &House; *(int *)(&stack0xffffff78 + iVar3 + iVar10 + iVar4 + 0x8c) = iVar13; *(undefined4 *)((int)&uStack_90 + iVar3 + iVar10 + iVar4 + 0x8c) = 0x8064df4 ; pTVar8 = vector::operator() (*(vector **) (&stack0xffffff74 + iVar3 + iVar10 + iVar4 + 0x8c), *(int *)(&stack0xffffff78 + iVar3 + iVar10 + iVar4 + 0x8c)); uVar1 = pTVar8->ID; *(int *)(&stack0xffffff80 + iVar3 + iVar10 + iVar4 + 0x8c) = pTVar6->PaidUntil; uVar2 = pTVar7->OwnerID; *(uint *)(&stack0xffffff78 + iVar3 + iVar10 + iVar4 + 0x8c) = (uint)uVar1; *(ulong *)(&stack0xffffff7c + iVar3 + iVar10 + iVar4 + 0x8c) = uVar2; *(TQueryManagerConnection **) (&stack0xffffff74 + iVar3 + iVar10 + iVar4 + 0x8c) = QueryManagerConnection ; *(undefined4 *)((int)&uStack_90 + iVar3 + iVar10 + iVar4 + 0x8c) = 0x8064e1c ; iVar9 = TQueryManagerConnection::insertHouseOwner (*(TQueryManagerConnection **) (&stack0xffffff74 + iVar3 + iVar10 + iVar4 + 0x8c), *(ushort *) (&stack0xffffff78 + iVar3 + iVar10 + iVar4 + 0x8c), *(ulong *)(&stack0xffffff7c + iVar3 + iVar10 + iVar4 + 0x8c), *(int *)(&stack0xffffff80 + iVar3 + iVar10 + iVar4 + 0x8c )); if (iVar9 != 0) { *(int *)(&stack0xffffff78 + iVar3 + iVar10 + iVar4 + 0x8c) = iVar13; *(vector **)(&stack0xffffff74 + iVar3 + iVar10 + iVar4 + 0x8c) = &House; *(undefined4 *)((int)&uStack_90 + iVar3 + iVar10 + iVar4 + 0x8c) = 0x8064e34; pTVar6 = vector::operator() (*(vector **) (&stack0xffffff74 + iVar3 + iVar10 + iVar4 + 0x8c), *(int *)(&stack0xffffff78 + iVar3 + iVar10 + iVar4 + 0x8c)); uVar1 = pTVar6->ID; *(char **)(&stack0xffffff74 + iVar3 + iVar10 + iVar4 + 0x8c) = "StartAuctions: Kann vermietetes Haus %d nicht eintragen.\n"; *(uint *)(&stack0xffffff78 + iVar3 + iVar10 + iVar4 + 0x8c) = (uint)uVar1; *(undefined4 *)((int)&uStack_90 + iVar3 + iVar10 + iVar4 + 0x8c) = 0x8064e47; error(*(char **)(&stack0xffffff74 + iVar3 + iVar10 + iVar4 + 0x8c)); } } } *(int *)(&stack0xffffff78 + iVar3 + iVar10 + iVar4 + 0x8c) = iVar13; *(vector **)(&stack0xffffff74 + iVar3 + iVar10 + iVar4 + 0x8c) = &House; *(undefined4 *)((int)&uStack_90 + iVar3 + iVar10 + iVar4 + 0x8c) = 0x8064cac; pTVar6 = vector::operator() (*(vector **) (&stack0xffffff74 + iVar3 + iVar10 + iVar4 + 0x8c), *(int *)(&stack0xffffff78 + iVar3 + iVar10 + iVar4 + 0x8c)); if (pTVar6->Help == 2) { *(int *)(&stack0xffffff78 + iVar3 + iVar10 + iVar4 + 0x8c) = iVar13; *(vector **)(&stack0xffffff74 + iVar3 + iVar10 + iVar4 + 0x8c) = &House; *(undefined4 *)((int)&uStack_90 + iVar3 + iVar10 + iVar4 + 0x8c) = 0x8064cd0; pTVar6 = vector::operator() (*(vector **) (&stack0xffffff74 + iVar3 + iVar10 + iVar4 + 0x8c), *(int *)(&stack0xffffff78 + iVar3 + iVar10 + iVar4 + 0x8c)); uVar1 = pTVar6->ID; *(char **)(&stack0xffffff74 + iVar3 + iVar10 + iVar4 + 0x8c) = "houses"; *(char **)(&stack0xffffff78 + iVar3 + iVar10 + iVar4 + 0x8c) = "Aktualisiere vermietetes Haus %d.\n"; *(uint *)(&stack0xffffff7c + iVar3 + iVar10 + iVar4 + 0x8c) = (uint)uVar1; *(undefined4 *)((int)&uStack_90 + iVar3 + iVar10 + iVar4 + 0x8c) = 0x8064ceb; Log(*(char **)(&stack0xffffff74 + iVar3 + iVar10 + iVar4 + 0x8c), *(char **)(&stack0xffffff78 + iVar3 + iVar10 + iVar4 + 0x8c)); *(vector **)(&stack0xffffff74 + iVar3 + iVar10 + iVar4 + 0x8c) = &House; *(int *)(&stack0xffffff78 + iVar3 + iVar10 + iVar4 + 0x8c) = iVar13; *(undefined4 *)((int)&uStack_90 + iVar3 + iVar10 + iVar4 + 0x8c) = 0x8064cfb; pTVar6 = vector::operator() (*(vector **) (&stack0xffffff74 + iVar3 + iVar10 + iVar4 + 0x8c), *(int *)(&stack0xffffff78 + iVar3 + iVar10 + iVar4 + 0x8c)); *(vector **)(&stack0xffffff74 + iVar3 + iVar10 + iVar4 + 0x8c) = &House; *(int *)(&stack0xffffff78 + iVar3 + iVar10 + iVar4 + 0x8c) = iVar13; *(undefined4 *)((int)&uStack_90 + iVar3 + iVar10 + iVar4 + 0x8c) = 0x8064d0d; pTVar7 = vector::operator() (*(vector **) (&stack0xffffff74 + iVar3 + iVar10 + iVar4 + 0x8c), *(int *)(&stack0xffffff78 + iVar3 + iVar10 + iVar4 + 0x8c)); *(vector **)(&stack0xffffff74 + iVar3 + iVar10 + iVar4 + 0x8c) = &House; *(int *)(&stack0xffffff78 + iVar3 + iVar10 + iVar4 + 0x8c) = iVar13; *(undefined4 *)((int)&uStack_90 + iVar3 + iVar10 + iVar4 + 0x8c) = 0x8064d1f; pTVar8 = vector::operator() (*(vector **) (&stack0xffffff74 + iVar3 + iVar10 + iVar4 + 0x8c), *(int *)(&stack0xffffff78 + iVar3 + iVar10 + iVar4 + 0x8c)); uVar1 = pTVar8->ID; *(int *)(&stack0xffffff80 + iVar3 + iVar10 + iVar4 + 0x8c) = pTVar6->PaidUntil; uVar2 = pTVar7->OwnerID; *(uint *)(&stack0xffffff78 + iVar3 + iVar10 + iVar4 + 0x8c) = (uint)uVar1; *(ulong *)(&stack0xffffff7c + iVar3 + iVar10 + iVar4 + 0x8c) = uVar2; *(TQueryManagerConnection **)(&stack0xffffff74 + iVar3 + iVar10 + iVar4 + 0x8c) = QueryManagerConnection; *(undefined4 *)((int)&uStack_90 + iVar3 + iVar10 + iVar4 + 0x8c) = 0x8064d47; iVar9 = TQueryManagerConnection::updateHouseOwner (*(TQueryManagerConnection **) (&stack0xffffff74 + iVar3 + iVar10 + iVar4 + 0x8c), *(ushort *)(&stack0xffffff78 + iVar3 + iVar10 + iVar4 + 0x8c) ,*(ulong *)(&stack0xffffff7c + iVar3 + iVar10 + iVar4 + 0x8c) ,*(int *)(&stack0xffffff80 + iVar3 + iVar10 + iVar4 + 0x8c)); if (iVar9 != 0) { *(int *)(&stack0xffffff78 + iVar3 + iVar10 + iVar4 + 0x8c) = iVar13; *(vector **)(&stack0xffffff74 + iVar3 + iVar10 + iVar4 + 0x8c) = &House; *(undefined4 *)((int)&uStack_90 + iVar3 + iVar10 + iVar4 + 0x8c) = 0x8064d5f ; pTVar6 = vector::operator() (*(vector **) (&stack0xffffff74 + iVar3 + iVar10 + iVar4 + 0x8c), *(int *)(&stack0xffffff78 + iVar3 + iVar10 + iVar4 + 0x8c)); uVar1 = pTVar6->ID; *(char **)(&stack0xffffff74 + iVar3 + iVar10 + iVar4 + 0x8c) = "StartAuctions: Kann Daten des vermieteten Hauses %d nicht aktualisieren.\n" ; *(uint *)(&stack0xffffff78 + iVar3 + iVar10 + iVar4 + 0x8c) = (uint)uVar1; *(undefined4 *)((int)&uStack_90 + iVar3 + iVar10 + iVar4 + 0x8c) = 0x8064d72 ; error(*(char **)(&stack0xffffff74 + iVar3 + iVar10 + iVar4 + 0x8c)); } } iVar13 = iVar13 + 1; } while (iVar13 < Houses); return; } *(undefined **)(&stack0xffffff74 + iVar3 + iVar10 + iVar4 + 0x8c) = &DAT_080f46a0; } else { *(char **)(&stack0xffffff74 + iVar9) = "StartAuctions: Kann laufende Versteigerungen nicht ermitteln.\n"; } puVar11[-1] = 0x8064f69; error((char *)*puVar11); return; } // WARNING: Unknown calling convention -- yet parameter storage is locked void PrepareHouseCleanup(void) { HelpDepots = 0; return; } // WARNING: Unknown calling convention -- yet parameter storage is locked void FinishHouseCleanup(void) { THelpDepot *pTVar1; TPlayerData *PlayerData_00; TPlayerData *PlayerData; int i; int i_00; int iVar2; Object local_2c [7]; if (0 < HelpDepots) { i_00 = 1; do { pTVar1 = vector::operator()(&HelpDepot,i_00); PlayerData_00 = AssignPlayerPoolSlot(pTVar1->CharacterID,false); if (PlayerData_00 == (TPlayerData *)0x0) { error(&DAT_080f4860); return; } pTVar1 = vector::operator()(&HelpDepot,i_00); local_2c[0].ObjectID = (pTVar1->Box).ObjectID; pTVar1 = vector::operator()(&HelpDepot,i_00); SaveDepot(PlayerData_00,pTVar1->DepotNr,local_2c); iVar2 = i_00 + 1; pTVar1 = vector::operator()(&HelpDepot,i_00); local_2c[0].ObjectID = (pTVar1->Box).ObjectID; DeleteObject(local_2c); ReleasePlayerPoolSlot(PlayerData_00); i_00 = iVar2; } while (iVar2 <= HelpDepots); } HelpDepots = 0; return; } void CleanHouseField(int x,int y,int z) { bool bVar1; ushort ID; THouse *pTVar2; THelpDepot *pTVar3; TPlayerData *PlayerData_00; ushort HouseID; int i; int DepotLoaded; int iVar4; THouse *house; TPlayerData *PlayerData; int sx; int sy; int sz; undefined1 local_4c [16]; Object local_3c [4]; ulong local_2c; ID = GetHouseID(x,y,z); if (ID == 0) { bVar1 = CoordinateFlag(); if (bVar1) { iVar4 = y + 1; ID = GetHouseID(x,iVar4,z); if ((ID != 0) || (ID = GetHouseID(x + -1,iVar4,z), ID != 0)) goto LAB_0806526c; ID = GetHouseID(x + 1,iVar4,z); } if (ID == 0) { bVar1 = CoordinateFlag(); if (bVar1) { iVar4 = x + 1; ID = GetHouseID(iVar4,y,z); if ((ID != 0) || (ID = GetHouseID(iVar4,y + -1,z), ID != 0)) goto LAB_0806526c; ID = GetHouseID(iVar4,y + 1,z); } if (ID == 0) { error("CleanHouseField: Kein Haus zu Feld [%d,%d,%d] gefunden.\n",x,y,z); return; } } } LAB_0806526c: pTVar2 = GetHouse(ID); if ((pTVar2 != (THouse *)0x0) && (pTVar2->OwnerID != 0)) { i = 1; iVar4 = -1; if (0 < HelpDepots) { do { pTVar3 = vector::operator()(&HelpDepot,i); if ((pTVar3->CharacterID == pTVar2->OwnerID) && (pTVar3 = vector::operator()(&HelpDepot,i), pTVar3->DepotNr == pTVar2->DepotNr)) { iVar4 = i; } i = i + 1; } while (i <= HelpDepots); } if (iVar4 == -1) { PlayerData_00 = AssignPlayerPoolSlot(pTVar2->OwnerID,false); if (PlayerData_00 == (TPlayerData *)0x0) { error(&DAT_080f48c0); return; } HelpDepots = HelpDepots + 1; pTVar3 = vector::operator()(&HelpDepot,HelpDepots); pTVar3->CharacterID = pTVar2->OwnerID; pTVar3 = vector::operator()(&HelpDepot,HelpDepots); pTVar3->DepotNr = pTVar2->DepotNr; GetStartPosition((int *)&PlayerData,&sx,&sy,true); pTVar3 = vector::operator()(&HelpDepot,HelpDepots); GetSpecialObject((SPECIALMEANING)local_4c); GetMapContainer((int)&sz,(int)PlayerData,sx); SetObject(local_3c,(ObjectType *)&sz,(ulong)local_4c); (pTVar3->Box).ObjectID = local_3c[0].ObjectID; local_2c = local_3c[0].ObjectID; pTVar3 = vector::operator()(&HelpDepot,HelpDepots); sz = (pTVar3->Box).ObjectID; LoadDepot(PlayerData_00,pTVar2->DepotNr,(Object *)&sz); iVar4 = HelpDepots; ReleasePlayerPoolSlot(PlayerData_00); } pTVar3 = vector::operator()(&HelpDepot,iVar4); sz = (pTVar3->Box).ObjectID; CleanField(); } return; } // WARNING: Unknown calling convention -- yet parameter storage is locked void LoadHouseAreas(void) { bool bVar1; THouseArea *pTVar2; int iVar3; char *__s; char *__oflag; undefined1 local_4ffc [4]; TReadScriptFile Script; char local_101c [4]; char FileName [4096]; // try { // try from 080655d1 to 0806562e has its CatchHandler @ 08065780 Log("houses",&DAT_080f4940); __oflag = DATAPATH; __s = local_101c; sprintf(__s,"%s/houseareas.dat"); bVar1 = FileExists(__s); if (bVar1) { TReadScriptFile::TReadScriptFile((TReadScriptFile *)local_4ffc); // try { // try from 08065636 to 08065747 has its CatchHandler @ 08065755 TReadScriptFile::open((TReadScriptFile *)local_4ffc,__s,(int)__oflag); while( true ) { TReadScriptFile::nextToken((TReadScriptFile *)local_4ffc); if (local_4ffc == (undefined1 [4])0x0) break; if (local_4ffc != (undefined1 [4])0x1) { TReadScriptFile::error((TReadScriptFile *)local_4ffc,"Identifier expected"); } TReadScriptFile::readSymbol((TReadScriptFile *)local_4ffc,'='); TReadScriptFile::readSymbol((TReadScriptFile *)local_4ffc,'('); pTVar2 = vector::operator()(&HouseArea,HouseAreas); iVar3 = TReadScriptFile::readNumber((TReadScriptFile *)local_4ffc); pTVar2->ID = (ushort)iVar3; TReadScriptFile::readSymbol((TReadScriptFile *)local_4ffc,','); TReadScriptFile::readString((TReadScriptFile *)local_4ffc); TReadScriptFile::readSymbol((TReadScriptFile *)local_4ffc,','); pTVar2 = vector::operator()(&HouseArea,HouseAreas); iVar3 = TReadScriptFile::readNumber((TReadScriptFile *)local_4ffc); pTVar2->SQMPrice = iVar3; TReadScriptFile::readSymbol((TReadScriptFile *)local_4ffc,','); pTVar2 = vector::operator()(&HouseArea,HouseAreas); iVar3 = TReadScriptFile::readNumber((TReadScriptFile *)local_4ffc); pTVar2->DepotNr = iVar3; __s = (char *)0x29; TReadScriptFile::readSymbol((TReadScriptFile *)local_4ffc,')'); HouseAreas = HouseAreas + 1; } TReadScriptFile::close((TReadScriptFile *)local_4ffc,(int)__s); // try { // try from 0806574b to 0806574f has its CatchHandler @ 08065780 TReadScriptFile::~TReadScriptFile((TReadScriptFile *)local_4ffc,(int)__s); } else { Log("houses",&DAT_080f4980); } return; } // WARNING: Unknown calling convention -- yet parameter storage is locked void LoadHouses(void) { int iVar1; bool bVar2; char cVar3; THouse *pTVar4; int iVar5; THouse *pTVar6; char *pcVar7; THouseArea *pTVar8; undefined4 *puVar9; int *piVar10; int i; int iVar11; uint uVar12; int_0_ *piVar13; int i_1; int iVar14; undefined1 uVar15; undefined4 uStack_5080; char *pcVar16; int local_506c [8]; int_0_ local_504c [4]; int_0_ *local_5048; bool_0_ *Guildhouses; int_0_ *Sizes; int_0_ *Rents; char_0__30_ *Towns; char___0_ *Descriptions; char___0_ *Names; int_0_ *PositionsZ; int_0_ *PositionsY; int_0_ *PositionsX; ushort_0_ *HouseIDs; TQueryManagerConnection *local_501c; THouseArea *local_5018; int local_5014; int RentOffset; int local_500c; int local_5008; int x; int y; int z; TReadScriptFile Script; char local_101c [4]; char FileName [4096]; HouseIDs = &stack0xffffaf84; // try { // try from 080657b7 to 0806582d has its CatchHandler @ 080663c1 uStack_5080 = 0x80657bc; Log("houses",&DAT_080f4e5f); pcVar7 = local_101c; MaxHouseX = 0; Houses = 0; MaxHouseY = 0; pcVar16 = DATAPATH; uStack_5080 = 0x80657f2; sprintf(pcVar7,"%s/houses.dat"); uStack_5080 = 0x80657fa; bVar2 = FileExists(pcVar7); if (bVar2) { uStack_5080 = 0x806582e; TReadScriptFile::TReadScriptFile((TReadScriptFile *)&z); // try { // try from 0806583b to 08066090 has its CatchHandler @ 080663bb uStack_5080 = 0x8065840; TReadScriptFile::open((TReadScriptFile *)&z,pcVar7,(int)pcVar16); while( true ) { uStack_5080 = 0x806584e; TReadScriptFile::nextToken((TReadScriptFile *)&z); if (z == 0) break; if (z != 1) { uStack_5080 = 0x8065875; TReadScriptFile::error((TReadScriptFile *)&z,"Identifier expected"); } uStack_5080 = 0x806588b; TReadScriptFile::readSymbol((TReadScriptFile *)&z,'='); uStack_5080 = 0x80658a0; pTVar4 = vector::operator()(&House,Houses); uStack_5080 = 0x80658b0; iVar5 = TReadScriptFile::readNumber((TReadScriptFile *)&z); pTVar4->ID = (ushort)iVar5; uStack_5080 = 0x80658c8; pTVar4 = vector::operator()(&House,Houses); if (pTVar4->ID == 0) { uStack_5080 = 0x8066056; pTVar4 = vector::operator()(&House,Houses); uVar12 = (uint)pTVar4->ID; uStack_5080 = 0x8066069; error(&DAT_080f4eb7); LAB_08065fc4: uStack_5080 = 0x8065fc9; TReadScriptFile::close((TReadScriptFile *)&z,uVar12); uStack_5080 = 0x8065fd5; puVar9 = (undefined4 *)__cxa_allocate_exception(); *puVar9 = "Cannot load houses"; // WARNING: Subroutine does not return uStack_5080 = 0x8065ff3; __cxa_throw(); } if (0 < Houses) { uStack_5080 = 0x80658eb; pTVar4 = vector::operator()(&House,Houses); uStack_5080 = 0x8065903; pTVar6 = vector::operator()(&House,Houses + -1); if (pTVar4->ID <= pTVar6->ID) { uStack_5080 = 0x8066023; pTVar4 = vector::operator()(&House,Houses); uVar12 = (uint)pTVar4->ID; uStack_5080 = 0x8066036; error("LoadHouses: IDs nicht aufsteigend sortiert (ID=%d).\n"); goto LAB_08065fc4; } } uStack_5080 = 0x806591d; TReadScriptFile::readIdentifier((TReadScriptFile *)&z); uStack_5080 = 0x8065933; TReadScriptFile::readSymbol((TReadScriptFile *)&z,'='); uStack_5080 = 0x8065941; pcVar7 = TReadScriptFile::readString((TReadScriptFile *)&z); uStack_5080 = 0x8065958; pTVar4 = vector::operator()(&House,Houses); uStack_5080 = 0x806596d; strcpy(pTVar4->Name,pcVar7); uStack_5080 = 0x8065975; TReadScriptFile::readIdentifier((TReadScriptFile *)&z); uStack_5080 = 0x8065985; TReadScriptFile::readSymbol((TReadScriptFile *)&z,'='); uStack_5080 = 0x806598d; pcVar7 = TReadScriptFile::readString((TReadScriptFile *)&z); uStack_5080 = 0x80659a4; pTVar4 = vector::operator()(&House,Houses); uStack_5080 = 0x80659b3; strcpy(pTVar4->Description,pcVar7); uStack_5080 = 0x80659bb; TReadScriptFile::readIdentifier((TReadScriptFile *)&z); uStack_5080 = 0x80659cb; TReadScriptFile::readSymbol((TReadScriptFile *)&z,'='); uStack_5080 = 0x80659d3; local_5014 = TReadScriptFile::readNumber((TReadScriptFile *)&z); uStack_5080 = 0x80659e1; TReadScriptFile::readIdentifier((TReadScriptFile *)&z); uStack_5080 = 0x80659f1; TReadScriptFile::readSymbol((TReadScriptFile *)&z,'='); uStack_5080 = 0x80659f9; iVar5 = TReadScriptFile::readNumber((TReadScriptFile *)&z); iVar11 = 0; if (0 < HouseAreas) { do { uStack_5080 = 0x8065a16; pTVar8 = vector::operator()(&HouseArea,iVar11); if (pTVar8->ID == (ushort)iVar5) { uStack_5080 = 0x8066003; local_5018 = vector::operator()(&HouseArea,iVar11); goto LAB_08065a40; } iVar11 = iVar11 + 1; } while (iVar11 < HouseAreas); } uStack_5080 = 0x8065a38; error("GetHouseArea: Gebiet mit ID %d nicht gefunden.\n"); local_5018 = (THouseArea *)0x0; LAB_08065a40: uVar15 = local_5018 == (THouseArea *)0x0; if ((bool)uVar15) { uStack_5080 = 0x8065fa8; pTVar4 = vector::operator()(&House,Houses); uVar12 = (uint)pTVar4->ID; uStack_5080 = 0x8065fbb; error(&DAT_080f4a00); goto LAB_08065fc4; } uStack_5080 = 0x8065a63; pTVar4 = vector::operator()(&House,Houses); pTVar4->DepotNr = local_5018->DepotNr; uStack_5080 = 0x8065a80; TReadScriptFile::readIdentifier((TReadScriptFile *)&z); uStack_5080 = 0x8065a90; TReadScriptFile::readSymbol((TReadScriptFile *)&z,'='); uStack_5080 = 0x8065aa5; pTVar4 = vector::operator()(&House,Houses); uStack_5080 = 0x8065aaf; pcVar7 = TReadScriptFile::readIdentifier((TReadScriptFile *)&z); iVar5 = 5; pcVar16 = "true"; do { if (iVar5 == 0) break; iVar5 = iVar5 + -1; uVar15 = *pcVar7 == *pcVar16; pcVar7 = pcVar7 + 1; pcVar16 = pcVar16 + 1; } while ((bool)uVar15); pTVar4->GuildHouse = (bool)uVar15; uStack_5080 = 0x8065adc; pTVar4 = vector::operator()(&House,Houses); pTVar4->NoAuction = false; uStack_5080 = 0x8065af1; TReadScriptFile::readIdentifier((TReadScriptFile *)&z); uStack_5080 = 0x8065b07; TReadScriptFile::readSymbol((TReadScriptFile *)&z,'='); uStack_5080 = 0x8065b1c; vector::operator()(&House,Houses); uStack_5080 = 0x8065b37; vector::operator()(&House,Houses); uStack_5080 = 0x8065b52; vector::operator()(&House,Houses); uStack_5080 = 0x8065b71; TReadScriptFile::readCoordinate((TReadScriptFile *)&z); uStack_5080 = 0x8065b86; pTVar4 = vector::operator()(&House,Houses); if (pTVar4->ExitX == 0) { uStack_5080 = 0x8065f7b; vector::operator()(&House,Houses); uStack_5080 = 0x8065f8e; error(&DAT_080f49c0); } uStack_5080 = 0x8065ba2; TReadScriptFile::readIdentifier((TReadScriptFile *)&z); uStack_5080 = 0x8065bb2; TReadScriptFile::readSymbol((TReadScriptFile *)&z,'='); uStack_5080 = 0x8065bc7; vector::operator()(&House,Houses); uStack_5080 = 0x8065be2; vector::operator()(&House,Houses); uStack_5080 = 0x8065bfd; vector::operator()(&House,Houses); uStack_5080 = 0x8065c16; TReadScriptFile::readCoordinate((TReadScriptFile *)&z); uStack_5080 = 0x8065c2b; pTVar4 = vector::operator()(&House,Houses); if (pTVar4->CenterX == 0) { uStack_5080 = 0x8065f4e; vector::operator()(&House,Houses); uStack_5080 = 0x8065f61; error(&DAT_080f49c0); } uStack_5080 = 0x8065c47; TReadScriptFile::readIdentifier((TReadScriptFile *)&z); uStack_5080 = 0x8065c5d; TReadScriptFile::readSymbol((TReadScriptFile *)&z,'='); uStack_5080 = 0x8065c6d; TReadScriptFile::readSymbol((TReadScriptFile *)&z,'{'); uStack_5080 = 0x8065c82; pTVar4 = vector::operator()(&House,Houses); pTVar4->Size = 0; while( true ) { uStack_5080 = 0x8065c98; TReadScriptFile::nextToken((TReadScriptFile *)&z); if (z != 6) goto LAB_08065cd2; uStack_5080 = 0x8065caf; cVar3 = TReadScriptFile::getSpecial((TReadScriptFile *)&z); if (cVar3 == '}') break; if (z != 6) goto LAB_08065cd2; uStack_5080 = 0x8065cce; cVar3 = TReadScriptFile::getSpecial((TReadScriptFile *)&z); if (cVar3 != ',') { LAB_08065cd2: uStack_5080 = 0x8065cfe; TReadScriptFile::getCoordinate((TReadScriptFile *)&z); uStack_5080 = 0x8065d13; pTVar4 = vector::operator()(&House,Houses); uStack_5080 = 0x8065d3c; SetHouseID(local_5008,x,y,pTVar4->ID); uStack_5080 = 0x8065d51; pTVar4 = vector::operator()(&House,Houses); pTVar4->Size = pTVar4->Size + 1; uStack_5080 = 0x8065d6c; pTVar4 = vector::operator()(&House,Houses); uVar12 = local_5008 - pTVar4->CenterX; if (0x7fffffff < uVar12) { uVar12 = -uVar12; } if (MaxHouseX < (int)uVar12) { uStack_5080 = 0x8065e12; pTVar4 = vector::operator()(&House,Houses); MaxHouseX = local_5008 - pTVar4->CenterX; if (0x7fffffff < (uint)MaxHouseX) { MaxHouseX = -MaxHouseX; } } uStack_5080 = 0x8065da1; pTVar4 = vector::operator()(&House,Houses); uVar12 = x - pTVar4->CenterY; if (0x7fffffff < uVar12) { uVar12 = -uVar12; } if (MaxHouseY < (int)uVar12) { uStack_5080 = 0x8065dda; pTVar4 = vector::operator()(&House,Houses); MaxHouseY = x - pTVar4->CenterY; if (0x7fffffff < (uint)MaxHouseY) { MaxHouseY = -MaxHouseY; } } } } uStack_5080 = 0x8065e4a; pTVar4 = vector::operator()(&House,Houses); uStack_5080 = 0x8065e61; pTVar6 = vector::operator()(&House,Houses); iVar5 = Houses; pTVar4->Rent = local_5018->SQMPrice * pTVar6->Size + local_5014; uStack_5080 = 0x8065e96; pTVar4 = vector::operator()(&House,iVar5); pTVar4->OwnerID = 0; uStack_5080 = 0x8065eb3; pTVar4 = vector::operator()(&House,Houses); pTVar4->OwnerName[0] = '\0'; uStack_5080 = 0x8065ecf; pTVar4 = vector::operator()(&House,Houses); pTVar4->LastTransition = 0; uStack_5080 = 0x8065eec; pTVar4 = vector::operator()(&House,Houses); pTVar4->PaidUntil = 0; uStack_5080 = 0x8065f09; pTVar4 = vector::operator()(&House,Houses); pTVar4->Subowners = 0; uStack_5080 = 0x8065f26; pcVar7 = (char *)Houses; pTVar4 = vector::operator()(&House,Houses); pTVar4->Guests = 0; Houses = Houses + 1; } uStack_5080 = 0x8066085; TReadScriptFile::close((TReadScriptFile *)&z,(int)pcVar7); uStack_5080 = 0x8066091; local_501c = (TQueryManagerConnection *)operator_new(0x30); local_500c = 0x4000; RentOffset = Houses * 600; piVar10 = &RentOffset; if (Houses * 600 < 0x4001) { piVar10 = &local_500c; } // try { // try from 080660d6 to 080660da has its CatchHandler @ 08066388 uStack_5080 = 0x80660db; TQueryManagerConnection::TQueryManagerConnection(local_501c,*piVar10); QueryManagerConnection = local_501c; iVar5 = Houses + -1; iVar11 = -(Houses + 0x10 + iVar5 & 0xfffffff0U); PositionsX = local_504c + iVar11; uVar12 = iVar5 * 4 + 0x13U & 0xfffffff0; PositionsY = local_504c + (iVar11 - uVar12); PositionsZ = local_504c + uVar12 * -2 + iVar11; Names = local_504c + uVar12 * -3 + iVar11; Descriptions = local_504c + uVar12 * -4 + iVar11; iVar5 = -(iVar5 * 0x1e + 0x2dU & 0xfffffff0); Towns = local_504c + uVar12 * -5 + iVar11; piVar13 = local_504c + iVar5 + uVar12 * -5 + iVar11; Rents = piVar13; Sizes = local_504c + iVar5 + uVar12 * -6 + iVar11; iVar1 = -(Houses + 0xfU & 0xfffffff0); local_5048 = local_504c + iVar1 + iVar5 + uVar12 * -7 + iVar11; iVar14 = 0; Guildhouses = local_504c + iVar5 + uVar12 * -7 + iVar11; if (0 < Houses) { do { *(int *)((int)local_506c + iVar1 + iVar5 + uVar12 * -7 + iVar11 + -0xc) = iVar14; *(vector **)((int)local_506c + iVar1 + iVar5 + uVar12 * -7 + iVar11 + -0x10) = &House; // try { // try from 080661a4 to 0806635c has its CatchHandler @ 080663bb *(undefined4 *)((int)&uStack_5080 + iVar1 + iVar5 + uVar12 * -7 + iVar11) = 0x80661a9; pTVar4 = vector::operator() (*(vector **) ((int)local_506c + iVar1 + iVar5 + uVar12 * -7 + iVar11 + -0x10 ),*(int *)((int)local_506c + iVar1 + iVar5 + uVar12 * -7 + iVar11 + -0xc)); *(ushort *)(PositionsX + iVar14 * 2) = pTVar4->ID; *(int *)((int)local_506c + iVar1 + iVar5 + uVar12 * -7 + iVar11 + -0xc) = iVar14; *(vector **)((int)local_506c + iVar1 + iVar5 + uVar12 * -7 + iVar11 + -0x10) = &House; *(undefined4 *)((int)&uStack_5080 + iVar1 + iVar5 + uVar12 * -7 + iVar11) = 0x80661c6; pTVar4 = vector::operator() (*(vector **) ((int)local_506c + iVar1 + iVar5 + uVar12 * -7 + iVar11 + -0x10 ),*(int *)((int)local_506c + iVar1 + iVar5 + uVar12 * -7 + iVar11 + -0xc)); *(char **)(Descriptions + iVar14 * 4) = pTVar4->Name; *(int *)((int)local_506c + iVar1 + iVar5 + uVar12 * -7 + iVar11 + -0xc) = iVar14; *(vector **)((int)local_506c + iVar1 + iVar5 + uVar12 * -7 + iVar11 + -0x10) = &House; *(undefined4 *)((int)&uStack_5080 + iVar1 + iVar5 + uVar12 * -7 + iVar11) = 0x80661e2; pTVar4 = vector::operator() (*(vector **) ((int)local_506c + iVar1 + iVar5 + uVar12 * -7 + iVar11 + -0x10 ),*(int *)((int)local_506c + iVar1 + iVar5 + uVar12 * -7 + iVar11 + -0xc)); *(ulong *)(Sizes + iVar14 * 4) = pTVar4->Rent; *(int *)((int)local_506c + iVar1 + iVar5 + uVar12 * -7 + iVar11 + -0xc) = iVar14; *(vector **)((int)local_506c + iVar1 + iVar5 + uVar12 * -7 + iVar11 + -0x10) = &House; *(undefined4 *)((int)&uStack_5080 + iVar1 + iVar5 + uVar12 * -7 + iVar11) = 0x8066201; pTVar4 = vector::operator() (*(vector **) ((int)local_506c + iVar1 + iVar5 + uVar12 * -7 + iVar11 + -0x10 ),*(int *)((int)local_506c + iVar1 + iVar5 + uVar12 * -7 + iVar11 + -0xc)); *(char **)(Towns + iVar14 * 4) = pTVar4->Description; *(int *)((int)local_506c + iVar1 + iVar5 + uVar12 * -7 + iVar11 + -0xc) = iVar14; *(vector **)((int)local_506c + iVar1 + iVar5 + uVar12 * -7 + iVar11 + -0x10) = &House; *(undefined4 *)((int)&uStack_5080 + iVar1 + iVar5 + uVar12 * -7 + iVar11) = 0x806621d; pTVar4 = vector::operator() (*(vector **) ((int)local_506c + iVar1 + iVar5 + uVar12 * -7 + iVar11 + -0x10 ),*(int *)((int)local_506c + iVar1 + iVar5 + uVar12 * -7 + iVar11 + -0xc)); *(int *)(Guildhouses + iVar14 * 4) = pTVar4->Size; *(int *)((int)local_506c + iVar1 + iVar5 + uVar12 * -7 + iVar11 + -0xc) = iVar14; *(vector **)((int)local_506c + iVar1 + iVar5 + uVar12 * -7 + iVar11 + -0x10) = &House; *(undefined4 *)((int)&uStack_5080 + iVar1 + iVar5 + uVar12 * -7 + iVar11) = 0x806623c; pTVar4 = vector::operator() (*(vector **) ((int)local_506c + iVar1 + iVar5 + uVar12 * -7 + iVar11 + -0x10 ),*(int *)((int)local_506c + iVar1 + iVar5 + uVar12 * -7 + iVar11 + -0xc)); *(int *)(PositionsY + iVar14 * 4) = pTVar4->CenterX; *(int *)((int)local_506c + iVar1 + iVar5 + uVar12 * -7 + iVar11 + -0xc) = iVar14; *(vector **)((int)local_506c + iVar1 + iVar5 + uVar12 * -7 + iVar11 + -0x10) = &House; *(undefined4 *)((int)&uStack_5080 + iVar1 + iVar5 + uVar12 * -7 + iVar11) = 0x806625b; pTVar4 = vector::operator() (*(vector **) ((int)local_506c + iVar1 + iVar5 + uVar12 * -7 + iVar11 + -0x10 ),*(int *)((int)local_506c + iVar1 + iVar5 + uVar12 * -7 + iVar11 + -0xc)); *(int *)(PositionsZ + iVar14 * 4) = pTVar4->CenterY; *(int *)((int)local_506c + iVar1 + iVar5 + uVar12 * -7 + iVar11 + -0xc) = iVar14; *(vector **)((int)local_506c + iVar1 + iVar5 + uVar12 * -7 + iVar11 + -0x10) = &House; *(undefined4 *)((int)&uStack_5080 + iVar1 + iVar5 + uVar12 * -7 + iVar11) = 0x806627a; pTVar4 = vector::operator() (*(vector **) ((int)local_506c + iVar1 + iVar5 + uVar12 * -7 + iVar11 + -0x10 ),*(int *)((int)local_506c + iVar1 + iVar5 + uVar12 * -7 + iVar11 + -0xc)); *(int *)(Names + iVar14 * 4) = pTVar4->CenterZ; *(int *)((int)local_506c + iVar1 + iVar5 + uVar12 * -7 + iVar11 + -0xc) = iVar14; *(vector **)((int)local_506c + iVar1 + iVar5 + uVar12 * -7 + iVar11 + -0x10) = &House; *(undefined4 *)((int)&uStack_5080 + iVar1 + iVar5 + uVar12 * -7 + iVar11) = 0x8066299; pTVar4 = vector::operator() (*(vector **) ((int)local_506c + iVar1 + iVar5 + uVar12 * -7 + iVar11 + -0x10 ),*(int *)((int)local_506c + iVar1 + iVar5 + uVar12 * -7 + iVar11 + -0xc)); *(int *)((int)local_506c + iVar1 + iVar5 + uVar12 * -7 + iVar11 + -0x10) = pTVar4->DepotNr; *(undefined4 *)((int)&uStack_5080 + iVar1 + iVar5 + uVar12 * -7 + iVar11) = 0x80662a7; pcVar7 = GetDepotName(*(int *)((int)local_506c + iVar1 + iVar5 + uVar12 * -7 + iVar11 + -0x10)); *(char **)((int)local_506c + iVar1 + iVar5 + uVar12 * -7 + iVar11 + -0xc) = pcVar7; *(int_0_ **)((int)local_506c + iVar1 + iVar5 + uVar12 * -7 + iVar11 + -0x10) = piVar13; *(undefined4 *)((int)&uStack_5080 + iVar1 + iVar5 + uVar12 * -7 + iVar11) = 0x80662b3; strcpy(*(char **)((int)local_506c + iVar1 + iVar5 + uVar12 * -7 + iVar11 + -0x10), *(char **)((int)local_506c + iVar1 + iVar5 + uVar12 * -7 + iVar11 + -0xc)); *(vector **)((int)local_506c + iVar1 + iVar5 + uVar12 * -7 + iVar11 + -0x10) = &House; *(int *)((int)local_506c + iVar1 + iVar5 + uVar12 * -7 + iVar11 + -0xc) = iVar14; *(undefined4 *)((int)&uStack_5080 + iVar1 + iVar5 + uVar12 * -7 + iVar11) = 0x80662c3; pTVar4 = vector::operator() (*(vector **) ((int)local_506c + iVar1 + iVar5 + uVar12 * -7 + iVar11 + -0x10 ),*(int *)((int)local_506c + iVar1 + iVar5 + uVar12 * -7 + iVar11 + -0xc)); piVar13 = piVar13 + 0x1e; local_5048[iVar14] = pTVar4->GuildHouse; iVar14 = iVar14 + 1; } while (iVar14 < Houses); } *(int_0_ **)(local_504c + iVar1 + iVar5 + uVar12 * -7 + iVar11 + -4) = local_5048; *(int_0_ **)(local_504c + iVar1 + iVar5 + uVar12 * -7 + iVar11 + -8) = Rents; *(char___0_ **)(local_504c + iVar1 + iVar5 + uVar12 * -7 + iVar11 + -0xc) = Names; *(int_0_ **)((int)local_506c + iVar1 + iVar5 + uVar12 * -7 + iVar11 + 0x10) = PositionsZ; *(int_0_ **)((int)local_506c + iVar1 + iVar5 + uVar12 * -7 + iVar11 + 0xc) = PositionsY; *(bool_0_ **)((int)local_506c + iVar1 + iVar5 + uVar12 * -7 + iVar11 + 8) = Guildhouses; *(char_0__30_ **)((int)local_506c + iVar1 + iVar5 + uVar12 * -7 + iVar11 + 4) = Towns; *(int_0_ **)((int)local_506c + iVar1 + iVar5 + uVar12 * -7 + iVar11) = Sizes; *(char___0_ **)((int)local_506c + iVar1 + iVar5 + uVar12 * -7 + iVar11 + -4) = Descriptions; *(int_0_ **)((int)local_506c + iVar1 + iVar5 + uVar12 * -7 + iVar11 + -8) = PositionsX; *(int *)((int)local_506c + iVar1 + iVar5 + uVar12 * -7 + iVar11 + -0xc) = Houses; *(TQueryManagerConnection **) ((int)local_506c + iVar1 + iVar5 + uVar12 * -7 + iVar11 + -0x10) = QueryManagerConnection; *(undefined4 *)((int)&uStack_5080 + iVar1 + iVar5 + uVar12 * -7 + iVar11) = 0x806635d; iVar14 = TQueryManagerConnection::insertHouses (*(TQueryManagerConnection **) ((int)local_506c + iVar1 + iVar5 + uVar12 * -7 + iVar11 + -0x10), *(int *)((int)local_506c + iVar1 + iVar5 + uVar12 * -7 + iVar11 + -0xc), *(ushort **) ((int)local_506c + iVar1 + iVar5 + uVar12 * -7 + iVar11 + -8), *(char ***)((int)local_506c + iVar1 + iVar5 + uVar12 * -7 + iVar11 + -4) ,*(int **)((int)local_506c + iVar1 + iVar5 + uVar12 * -7 + iVar11), *(char ***)((int)local_506c + iVar1 + iVar5 + uVar12 * -7 + iVar11 + 4), *(int **)((int)local_506c + iVar1 + iVar5 + uVar12 * -7 + iVar11 + 8), *(int **)((int)local_506c + iVar1 + iVar5 + uVar12 * -7 + iVar11 + 0xc), *(int **)((int)local_506c + iVar1 + iVar5 + uVar12 * -7 + iVar11 + 0x10) ,*(int **)(local_504c + iVar1 + iVar5 + uVar12 * -7 + iVar11 + -0xc), *(char (**) [30]) (local_504c + iVar1 + iVar5 + uVar12 * -7 + iVar11 + -8), *(bool **)(local_504c + iVar1 + iVar5 + uVar12 * -7 + iVar11 + -4)); if (iVar14 != 0) { *(undefined **)((int)local_506c + iVar1 + iVar5 + uVar12 * -7 + iVar11 + -0x10) = &DAT_080f4a80; // try { // try from 08066381 to 08066385 has its CatchHandler @ 080663bb *(undefined4 *)((int)&uStack_5080 + iVar1 + iVar5 + uVar12 * -7 + iVar11) = 0x8066386; error(*(char **)((int)local_506c + iVar1 + iVar5 + uVar12 * -7 + iVar11 + -0x10)); } *(int **)((int)local_506c + iVar1 + iVar5 + uVar12 * -7 + iVar11 + -0x10) = &z; // try { // try from 0806636a to 0806636e has its CatchHandler @ 080663c1 *(undefined4 *)((int)&uStack_5080 + iVar1 + iVar5 + uVar12 * -7 + iVar11) = 0x806636f; TReadScriptFile::~TReadScriptFile (*(TReadScriptFile **) ((int)local_506c + iVar1 + iVar5 + uVar12 * -7 + iVar11 + -0x10), *(int *)((int)local_506c + iVar1 + iVar5 + uVar12 * -7 + iVar11 + -0xc)); } else { uStack_5080 = 0x8065812; Log("houses",&DAT_080f4e82); } return; } // WARNING: Unknown calling convention -- yet parameter storage is locked void LoadOwners(void) { ushort uVar1; char_0__30_ *pcVar2; bool bVar3; char cVar4; bool bVar5; int_0_ *PaidUntils; THouse *pTVar6; ulong uVar7; THouseGuest *pTVar8; undefined4 *puVar9; int iVar10; int iVar11; int iVar12; int iVar13; int iVar14; ulong_0_ *OwnerIDs; uint uVar15; int iVar16; undefined4 *puVar17; THouse *house; int iVar18; char *pcVar19; undefined1 uVar20; undefined4 uStack_5080; char *pcVar21; char *pcVar22; int aiStack_5070 [3]; undefined1 auStack_5064 [16]; int local_5054; int z; int y; int x; THouse *house_2; int i_1; char_0__30_ *OwnerNames; ushort_0_ *HouseIDs; char local_5032; char local_5031; bool ClearBeds; int iStack_5030; bool ClearGuests; int NumberOfHouses; ulong local_501c [4]; ulong local_500c; Object Bed; undefined1 local_4ffc [4]; TReadScriptFile Script; char local_101c [4]; char FileName [4096]; HouseIDs = &stack0xffffaf84; puVar17 = (undefined4 *)&stack0xffffaf84; // try { // try from 080663f7 to 0806646d has its CatchHandler @ 08066c00 uStack_5080 = 0x80663fc; Log("houses","Lade Mieterdaten...\n"); local_5031 = '\0'; pcVar21 = local_101c; PaymentExtension = 0; local_5032 = '\0'; pcVar22 = DATAPATH; uStack_5080 = 0x806642f; sprintf(pcVar21,"%s/owners.dat"); uStack_5080 = 0x8066437; bVar3 = FileExists(pcVar21); if (bVar3) { uStack_5080 = 0x806646e; TReadScriptFile::TReadScriptFile((TReadScriptFile *)local_4ffc); // try { // try from 0806647b to 080668c5 has its CatchHandler @ 08066bf6 uStack_5080 = 0x8066480; TReadScriptFile::open((TReadScriptFile *)local_4ffc,pcVar21,(int)pcVar22); while( true ) { uStack_5080 = 0x806648e; TReadScriptFile::nextToken((TReadScriptFile *)local_4ffc); if (local_4ffc == (undefined1 [4])0x0) break; uVar20 = local_4ffc == (undefined1 [4])0x1; if (!(bool)uVar20) { pcVar21 = "Identifier expected"; uStack_5080 = 0x80664af; TReadScriptFile::error((TReadScriptFile *)local_4ffc,"Identifier expected"); } uStack_5080 = 0x80664bd; pcVar22 = TReadScriptFile::getIdentifier((TReadScriptFile *)local_4ffc); iVar11 = 10; pcVar19 = "extension"; do { if (iVar11 == 0) break; iVar11 = iVar11 + -1; uVar20 = *pcVar22 == *pcVar19; pcVar22 = pcVar22 + 1; pcVar19 = pcVar19 + 1; } while ((bool)uVar20); if ((bool)uVar20) { pcVar21 = (char *)0x3d; uStack_5080 = 0x80667f9; TReadScriptFile::readSymbol((TReadScriptFile *)local_4ffc,'='); uStack_5080 = 0x8066807; PaymentExtension = TReadScriptFile::readNumber((TReadScriptFile *)local_4ffc); } else { uStack_5080 = 0x80664e2; pcVar22 = TReadScriptFile::getIdentifier((TReadScriptFile *)local_4ffc); iVar11 = 0xc; pcVar19 = "clearguests"; do { if (iVar11 == 0) break; iVar11 = iVar11 + -1; uVar20 = *pcVar22 == *pcVar19; pcVar22 = pcVar22 + 1; pcVar19 = pcVar19 + 1; } while ((bool)uVar20); if ((bool)uVar20) { local_5031 = '\x01'; } else { uStack_5080 = 0x8066507; pcVar22 = TReadScriptFile::getIdentifier((TReadScriptFile *)local_4ffc); iVar11 = 10; pcVar19 = "clearbeds"; do { if (iVar11 == 0) break; iVar11 = iVar11 + -1; uVar20 = *pcVar22 == *pcVar19; pcVar22 = pcVar22 + 1; pcVar19 = pcVar19 + 1; } while ((bool)uVar20); if ((bool)uVar20) { local_5032 = '\x01'; } else { uStack_5080 = 0x806652c; pcVar21 = TReadScriptFile::getIdentifier((TReadScriptFile *)local_4ffc); iVar11 = 3; pcVar22 = "id"; do { if (iVar11 == 0) break; iVar11 = iVar11 + -1; uVar20 = *pcVar21 == *pcVar22; pcVar21 = pcVar21 + 1; pcVar22 = pcVar22 + 1; } while ((bool)uVar20); if (!(bool)uVar20) { uStack_5080 = 0x80667c6; TReadScriptFile::error ((TReadScriptFile *)local_4ffc,"Unknown identifier"); } uStack_5080 = 0x8066559; TReadScriptFile::readSymbol((TReadScriptFile *)local_4ffc,'='); uStack_5080 = 0x8066567; iVar11 = TReadScriptFile::readNumber((TReadScriptFile *)local_4ffc); uStack_5080 = 0x8066572; pTVar6 = GetHouse((ushort)iVar11); if (pTVar6 == (THouse *)0x0) { uStack_5080 = 0x8066780; error("LoadOwners: Haus zu ID %d existiert nicht."); goto LAB_08066780; } uStack_5080 = 0x806658a; TReadScriptFile::readIdentifier((TReadScriptFile *)local_4ffc); uStack_5080 = 0x80665a0; TReadScriptFile::readSymbol((TReadScriptFile *)local_4ffc,'='); uStack_5080 = 0x80665ae; uVar7 = TReadScriptFile::readNumber((TReadScriptFile *)local_4ffc); pTVar6->OwnerID = uVar7; uStack_5080 = 0x80665bc; TReadScriptFile::readIdentifier((TReadScriptFile *)local_4ffc); uStack_5080 = 0x80665cc; TReadScriptFile::readSymbol((TReadScriptFile *)local_4ffc,'='); uStack_5080 = 0x80665d4; iVar11 = TReadScriptFile::readNumber((TReadScriptFile *)local_4ffc); pTVar6->LastTransition = iVar11; uStack_5080 = 0x80665e2; TReadScriptFile::readIdentifier((TReadScriptFile *)local_4ffc); uStack_5080 = 0x80665f2; TReadScriptFile::readSymbol((TReadScriptFile *)local_4ffc,'='); uStack_5080 = 0x80665fa; iVar11 = TReadScriptFile::readNumber((TReadScriptFile *)local_4ffc); pTVar6->PaidUntil = iVar11; uStack_5080 = 0x8066608; TReadScriptFile::readIdentifier((TReadScriptFile *)local_4ffc); uStack_5080 = 0x8066618; TReadScriptFile::readSymbol((TReadScriptFile *)local_4ffc,'='); uStack_5080 = 0x8066628; TReadScriptFile::readSymbol((TReadScriptFile *)local_4ffc,'{'); while( true ) { uStack_5080 = 0x8066636; TReadScriptFile::nextToken((TReadScriptFile *)local_4ffc); if (local_4ffc != (undefined1 [4])0x6) goto LAB_0806666c; uStack_5080 = 0x806664d; cVar4 = TReadScriptFile::getSpecial((TReadScriptFile *)local_4ffc); if (cVar4 == '}') break; if (local_4ffc != (undefined1 [4])0x6) goto LAB_0806666c; uStack_5080 = 0x8066668; cVar4 = TReadScriptFile::getSpecial((TReadScriptFile *)local_4ffc); if (cVar4 != ',') { LAB_0806666c: uStack_5080 = 0x806667a; pcVar21 = TReadScriptFile::getString((TReadScriptFile *)local_4ffc); uStack_5080 = 0x8066694; pTVar8 = vector<>::operator()(&pTVar6->Guest,pTVar6->Guests); uStack_5080 = 0x80666a0; strcpy(pTVar8->Name,pcVar21); pTVar6->Guests = pTVar6->Guests + 1; } } uStack_5080 = 0x80666b6; TReadScriptFile::readIdentifier((TReadScriptFile *)local_4ffc); uStack_5080 = 0x80666cc; TReadScriptFile::readSymbol((TReadScriptFile *)local_4ffc,'='); pcVar21 = (char *)0x7b; uStack_5080 = 0x80666dc; TReadScriptFile::readSymbol((TReadScriptFile *)local_4ffc,'{'); while( true ) { uStack_5080 = 0x80666ea; TReadScriptFile::nextToken((TReadScriptFile *)local_4ffc); if (local_4ffc != (undefined1 [4])0x6) goto LAB_0806671a; uStack_5080 = 0x8066701; cVar4 = TReadScriptFile::getSpecial((TReadScriptFile *)local_4ffc); if (cVar4 == '}') break; if (local_4ffc != (undefined1 [4])0x6) goto LAB_0806671a; uStack_5080 = 0x8066716; cVar4 = TReadScriptFile::getSpecial((TReadScriptFile *)local_4ffc); if (cVar4 != ',') { LAB_0806671a: uStack_5080 = 0x8066728; pcVar21 = TReadScriptFile::getString((TReadScriptFile *)local_4ffc); uStack_5080 = 0x8066742; pTVar8 = vector<>::operator()(&pTVar6->Subowner,pTVar6->Subowners); uStack_5080 = 0x806674e; strcpy(pTVar8->Name,pcVar21); pTVar6->Subowners = pTVar6->Subowners + 1; } } if (local_5031 != '\0') { pTVar6->Guests = 0; } } } } } uStack_5080 = 0x806681f; TReadScriptFile::close((TReadScriptFile *)local_4ffc,(int)pcVar21); iStack_5030 = Houses; iVar12 = Houses + -1; iVar11 = -(Houses + 0x10 + iVar12 & 0xfffffff0U); uVar15 = iVar12 * 4 + 0x13U & 0xfffffff0; OwnerNames = auStack_5064 + iVar11; iVar12 = -(iVar12 * 0x1e + 0x2dU & 0xfffffff0); puVar17 = (undefined4 *)(auStack_5064 + iVar12 + uVar15 * -2 + iVar11 + -0x18); i_1 = (int)(auStack_5064 + iVar12 + -uVar15 + iVar11); *(undefined1 **)(auStack_5064 + iVar12 + uVar15 * -2 + iVar11 + -4) = auStack_5064 + iVar12 + uVar15 * -2 + iVar11; *(undefined1 **)((int)aiStack_5070 + iVar12 + uVar15 * -2 + iVar11 + 4) = auStack_5064 + iVar12 + -uVar15 + iVar11; *(undefined1 **)((int)aiStack_5070 + iVar12 + uVar15 * -2 + iVar11) = auStack_5064 + -uVar15 + iVar11; pcVar2 = OwnerNames; *(int **)(auStack_5064 + iVar12 + uVar15 * -2 + iVar11 + -0x14) = &stack0xffffafd0; *(char_0__30_ **)(&stack0xffffaf8c + iVar12 + uVar15 * -2 + iVar11) = pcVar2; *(TQueryManagerConnection **)(auStack_5064 + iVar12 + uVar15 * -2 + iVar11 + -0x18) = QueryManagerConnection; *(undefined4 *)((int)&uStack_5080 + iVar12 + uVar15 * -2 + iVar11) = 0x806689c; iVar10 = TQueryManagerConnection::getHouseOwners (*(TQueryManagerConnection **) (auStack_5064 + iVar12 + uVar15 * -2 + iVar11 + -0x18), *(int **)(auStack_5064 + iVar12 + uVar15 * -2 + iVar11 + -0x14), *(ushort **)(&stack0xffffaf8c + iVar12 + uVar15 * -2 + iVar11), *(ulong **)((int)aiStack_5070 + iVar12 + uVar15 * -2 + iVar11), *(char (**) [30])((int)aiStack_5070 + iVar12 + uVar15 * -2 + iVar11 + 4) ,*(int **)(auStack_5064 + iVar12 + uVar15 * -2 + iVar11 + -4)); if (iVar10 != 0) { *(char **)(auStack_5064 + iVar12 + uVar15 * -2 + iVar11 + -0x18) = "LoadOwners: Kann Namen der Mieter nicht ermitteln.\n"; *(undefined4 *)((int)&uStack_5080 + iVar12 + uVar15 * -2 + iVar11) = 0x8066ba3; error(*(char **)(auStack_5064 + iVar12 + uVar15 * -2 + iVar11 + -0x18)); LAB_08066780: *puVar17 = 4; puVar17[-1] = 0x806678c; puVar9 = (undefined4 *)__cxa_allocate_exception(); *puVar9 = "Cannot load owners"; puVar17[2] = 0; puVar17[1] = char_const*::typeinfo; *puVar17 = puVar9; // WARNING: Subroutine does not return puVar17[-1] = &UNK_080667aa; __cxa_throw(); } iVar18 = 0; iVar10 = i_1; if (0 < iStack_5030) { do { *(uint *)(auStack_5064 + iVar12 + uVar15 * -2 + iVar11 + -0x18) = (uint)*(ushort *)(OwnerNames + iVar18 * 2); *(undefined4 *)((int)&uStack_5080 + iVar12 + uVar15 * -2 + iVar11) = 0x80668c6; pTVar6 = GetHouse(*(ushort *)(auStack_5064 + iVar12 + uVar15 * -2 + iVar11 + -0x18)) ; if (pTVar6 == (THouse *)0x0) { uVar1 = *(ushort *)(OwnerNames + iVar18 * 2); *(char **)(auStack_5064 + iVar12 + uVar15 * -2 + iVar11 + -0x18) = "LoadOwners: Haus %d existiert nicht.\n"; *(uint *)(auStack_5064 + iVar12 + uVar15 * -2 + iVar11 + -0x14) = (uint)uVar1; *(undefined4 *)((int)&uStack_5080 + iVar12 + uVar15 * -2 + iVar11) = 0x8066b92; error(*(char **)(auStack_5064 + iVar12 + uVar15 * -2 + iVar11 + -0x18)); } else if (pTVar6->OwnerID != 0) { *(int *)(auStack_5064 + iVar12 + uVar15 * -2 + iVar11 + -0x14) = iVar10; *(char **)(auStack_5064 + iVar12 + uVar15 * -2 + iVar11 + -0x18) = pTVar6->OwnerName; *(undefined4 *)((int)&uStack_5080 + iVar12 + uVar15 * -2 + iVar11) = 0x8066b73; strcpy(*(char **)(auStack_5064 + iVar12 + uVar15 * -2 + iVar11 + -0x18), *(char **)(auStack_5064 + iVar12 + uVar15 * -2 + iVar11 + -0x14)); } iVar18 = iVar18 + 1; iVar10 = iVar10 + 0x1e; } while (iVar18 < iStack_5030); } if (local_5032 != '\0') { *(undefined **)(auStack_5064 + iVar12 + uVar15 * -2 + iVar11 + -0x14) = &DAT_080f4f5b; *(undefined4 *)(auStack_5064 + iVar12 + uVar15 * -2 + iVar11 + -0x18) = 1; // try { // try from 08066919 to 08066a1c has its CatchHandler @ 08066bf6 *(undefined4 *)((int)&uStack_5080 + iVar12 + uVar15 * -2 + iVar11) = 0x806691e; print(); house_2 = (THouse *)0x0; if (0 < Houses) { do { pTVar6 = house_2; *(vector **)(auStack_5064 + iVar12 + uVar15 * -2 + iVar11 + -0x18) = &House; *(THouse **)(auStack_5064 + iVar12 + uVar15 * -2 + iVar11 + -0x14) = pTVar6; *(undefined4 *)((int)&uStack_5080 + iVar12 + uVar15 * -2 + iVar11) = 0x8066946; x = (int)vector::operator() (*(vector **) (auStack_5064 + iVar12 + uVar15 * -2 + iVar11 + -0x18), *(int *)(auStack_5064 + iVar12 + uVar15 * -2 + iVar11 + -0x14)); iVar10 = ((THouse *)x)->CenterX; y = iVar10 - MaxHouseX; if (iVar10 - MaxHouseX <= MaxHouseX + iVar10) { iVar18 = ((THouse *)x)->CenterY; iVar14 = MaxHouseX; iVar16 = MaxHouseY; do { z = iVar18 - iVar16; iVar13 = SectorZMax; if (iVar18 - iVar16 <= iVar16 + iVar18) { do { local_5054 = SectorZMin; if (SectorZMin <= iVar13) { do { *(int *)((int)aiStack_5070 + iVar12 + uVar15 * -2 + iVar11) = local_5054; *(int *)(&stack0xffffaf8c + iVar12 + uVar15 * -2 + iVar11) = z; iVar10 = y; *(ulong **) (auStack_5064 + iVar12 + uVar15 * -2 + iVar11 + -0x18) = &local_500c; *(int *)(auStack_5064 + iVar12 + uVar15 * -2 + iVar11 + -0x14) = iVar10; *(undefined4 *) ((int)&uStack_5080 + iVar12 + uVar15 * -2 + iVar11) = 0x80669d9; GetFirstObject(); while( true ) { bVar3 = false; local_501c[0] = NONE.ObjectID; NumberOfHouses = NONE.ObjectID; if (local_500c != NONE.ObjectID) { *(int **)(auStack_5064 + iVar12 + uVar15 * -2 + iVar11 + -0x18) = &NumberOfHouses; *(ulong **) (auStack_5064 + iVar12 + uVar15 * -2 + iVar11 + -0x14) = &local_500c; *(undefined4 *) ((int)&uStack_5080 + iVar12 + uVar15 * -2 + iVar11) = 0x8066b40; Object::getObjectType (*(Object **) (auStack_5064 + iVar12 + uVar15 * -2 + iVar11 + -0x18)); *(undefined4 *) (auStack_5064 + iVar12 + uVar15 * -2 + iVar11 + -0x14) = 0x14; *(int **)(auStack_5064 + iVar12 + uVar15 * -2 + iVar11 + -0x18) = &NumberOfHouses; *(undefined4 *) ((int)&uStack_5080 + iVar12 + uVar15 * -2 + iVar11) = 0x8066b53; bVar5 = ObjectType::getFlag(*(ObjectType **) (auStack_5064 + iVar12 + uVar15 * -2 + iVar11 + -0x18), *(FLAG *)(auStack_5064 + iVar12 + uVar15 * -2 + iVar11 + -0x14)); if (!bVar5) { bVar3 = true; } } if (!bVar3) break; *(ulong **) (auStack_5064 + iVar12 + uVar15 * -2 + iVar11 + -0x14) = &local_500c; *(ulong **) (auStack_5064 + iVar12 + uVar15 * -2 + iVar11 + -0x18) = local_501c ; *(undefined4 *) ((int)&uStack_5080 + iVar12 + uVar15 * -2 + iVar11) = 0x8066a1d; Object::getNextObject (*(Object **) (auStack_5064 + iVar12 + uVar15 * -2 + iVar11 + -0x18)); local_500c = local_501c[0]; } bVar3 = false; NumberOfHouses = NONE.ObjectID; if (local_500c == NONE.ObjectID) { LAB_08066a4d: bVar3 = true; } else { *(undefined4 *) (auStack_5064 + iVar12 + uVar15 * -2 + iVar11 + -0x14) = 9; *(ulong **) (auStack_5064 + iVar12 + uVar15 * -2 + iVar11 + -0x18) = &local_500c; // try { // try from 08066b1c to 08066ba2 has its CatchHandler @ 08066bf6 *(undefined4 *) ((int)&uStack_5080 + iVar12 + uVar15 * -2 + iVar11) = 0x8066b21; uVar7 = Object::getAttribute (*(Object **) (auStack_5064 + iVar12 + uVar15 * -2 + iVar11 + -0x18),*(INSTANCEATTRIBUTE *) (auStack_5064 + iVar12 + uVar15 * -2 + iVar11 + -0x14) ); if (uVar7 == 0) goto LAB_08066a4d; } if (!bVar3) { NumberOfHouses = local_500c; local_501c[0] = local_500c; *(int **)(&stack0xffffaf8c + iVar12 + uVar15 * -2 + iVar11) = &NumberOfHouses; *(ulong **) (auStack_5064 + iVar12 + uVar15 * -2 + iVar11 + -0x14) = local_501c ; *(undefined4 *) (auStack_5064 + iVar12 + uVar15 * -2 + iVar11 + -0x18) = 0; // try { // try from 08066b01 to 08066b05 has its CatchHandler @ 08066ba8 *(undefined4 *) ((int)&uStack_5080 + iVar12 + uVar15 * -2 + iVar11) = 0x8066b06; UseObjects(*(ulong *)(auStack_5064 + iVar12 + uVar15 * -2 + iVar11 + -0x18), *(Object **) (auStack_5064 + iVar12 + uVar15 * -2 + iVar11 + -0x14), *(Object **) (&stack0xffffaf8c + iVar12 + uVar15 * -2 + iVar11)); } local_5054 = local_5054 + 1; } while (local_5054 <= SectorZMax); iVar18 = *(int *)(x + 0x248); iVar13 = SectorZMax; iVar16 = MaxHouseY; } z = z + 1; } while (z <= iVar16 + iVar18); iVar10 = *(int *)(x + 0x244); iVar14 = MaxHouseX; } y = y + 1; } while (y <= iVar14 + iVar10); } house_2 = (THouse *)((int)&house_2->ID + 1); } while ((int)house_2 < Houses); } } *(undefined1 **)(auStack_5064 + iVar12 + uVar15 * -2 + iVar11 + -0x18) = local_4ffc; // try { // try from 080668fa to 080668fe has its CatchHandler @ 08066c00 *(undefined4 *)((int)&uStack_5080 + iVar12 + uVar15 * -2 + iVar11) = 0x80668ff; TReadScriptFile::~TReadScriptFile (*(TReadScriptFile **)(auStack_5064 + iVar12 + uVar15 * -2 + iVar11 + -0x18), *(int *)(auStack_5064 + iVar12 + uVar15 * -2 + iVar11 + -0x14)); } else { uStack_5080 = 0x806644f; Log("houses","Keine Mieterdaten gefunden.\n"); } return; } // WARNING: Unknown calling convention -- yet parameter storage is locked void SaveOwners(void) { time_t tVar1; THouse *pTVar2; THouseGuest *pTVar3; int i; int j; int iVar4; char *__s; char *pcVar5; undefined1 local_202c [4]; TWriteScriptFile Script; char local_101c [4]; char FileName [4096]; // try { // try from 08066c31 to 08066c61 has its CatchHandler @ 08066f20 Log("houses","Speichere Mieterdaten...\n"); pcVar5 = DATAPATH; __s = local_101c; sprintf(__s,"%s/owners.dat"); TWriteScriptFile::TWriteScriptFile((TWriteScriptFile *)local_202c); // try { // try from 08066c69 to 08066c97 has its CatchHandler @ 08066f06 TWriteScriptFile::open((TWriteScriptFile *)local_202c,__s,(int)pcVar5); tVar1 = time((time_t *)0x0); if (tVar1 < PaymentExtension) { TWriteScriptFile::writeText((TWriteScriptFile *)local_202c,"Extension = "); __s = (char *)PaymentExtension; TWriteScriptFile::writeNumber((TWriteScriptFile *)local_202c,PaymentExtension); TWriteScriptFile::writeLn((TWriteScriptFile *)local_202c); TWriteScriptFile::writeLn((TWriteScriptFile *)local_202c); } pcVar5 = (char *)0x0; if (0 < Houses) { do { __s = pcVar5; // try { // try from 08066cb8 to 08066f00 has its CatchHandler @ 08066f06 pTVar2 = vector::operator()(&House,(int)pcVar5); if (pTVar2->OwnerID != 0) { TWriteScriptFile::writeText((TWriteScriptFile *)local_202c,"ID = "); pTVar2 = vector::operator()(&House,(int)pcVar5); TWriteScriptFile::writeNumber((TWriteScriptFile *)local_202c,(uint)pTVar2->ID); TWriteScriptFile::writeLn((TWriteScriptFile *)local_202c); TWriteScriptFile::writeText((TWriteScriptFile *)local_202c,"Owner = "); pTVar2 = vector::operator()(&House,(int)pcVar5); TWriteScriptFile::writeNumber((TWriteScriptFile *)local_202c,pTVar2->OwnerID); TWriteScriptFile::writeLn((TWriteScriptFile *)local_202c); TWriteScriptFile::writeText((TWriteScriptFile *)local_202c,"LastTransition = "); pTVar2 = vector::operator()(&House,(int)pcVar5); TWriteScriptFile::writeNumber((TWriteScriptFile *)local_202c,pTVar2->LastTransition) ; TWriteScriptFile::writeLn((TWriteScriptFile *)local_202c); TWriteScriptFile::writeText((TWriteScriptFile *)local_202c,"PaidUntil = "); pTVar2 = vector::operator()(&House,(int)pcVar5); TWriteScriptFile::writeNumber((TWriteScriptFile *)local_202c,pTVar2->PaidUntil); TWriteScriptFile::writeLn((TWriteScriptFile *)local_202c); TWriteScriptFile::writeText((TWriteScriptFile *)local_202c,"Guests = {"); for (iVar4 = 0; pTVar2 = vector::operator()(&House,(int)pcVar5), iVar4 < pTVar2->Guests; iVar4 = iVar4 + 1) { if (0 < iVar4) { TWriteScriptFile::writeText((TWriteScriptFile *)local_202c,","); } pTVar2 = vector::operator()(&House,(int)pcVar5); pTVar3 = vector<>::operator()(&pTVar2->Guest,iVar4); TWriteScriptFile::writeString((TWriteScriptFile *)local_202c,pTVar3->Name); } TWriteScriptFile::writeText((TWriteScriptFile *)local_202c,"}"); TWriteScriptFile::writeLn((TWriteScriptFile *)local_202c); TWriteScriptFile::writeText((TWriteScriptFile *)local_202c,"Subowners = {"); for (iVar4 = 0; pTVar2 = vector::operator()(&House,(int)pcVar5), iVar4 < pTVar2->Subowners; iVar4 = iVar4 + 1) { if (0 < iVar4) { TWriteScriptFile::writeText((TWriteScriptFile *)local_202c,","); } pTVar2 = vector::operator()(&House,(int)pcVar5); pTVar3 = vector<>::operator()(&pTVar2->Subowner,iVar4); TWriteScriptFile::writeString((TWriteScriptFile *)local_202c,pTVar3->Name); } __s = "}"; TWriteScriptFile::writeText((TWriteScriptFile *)local_202c,"}"); TWriteScriptFile::writeLn((TWriteScriptFile *)local_202c); TWriteScriptFile::writeLn((TWriteScriptFile *)local_202c); } pcVar5 = pcVar5 + 1; } while ((int)pcVar5 < Houses); } TWriteScriptFile::close((TWriteScriptFile *)local_202c,(int)__s); // try { // try from 08066c9b to 08066c9f has its CatchHandler @ 08066f20 TWriteScriptFile::~TWriteScriptFile((TWriteScriptFile *)local_202c,(int)__s); return; } // WARNING: Unknown calling convention -- yet parameter storage is locked void InitHouses(void) { TQueryManagerConnection *pTVar1; RESULT r; int in_stack_ffffffe8; // try { // try from 08066f43 to 08066f81 has its CatchHandler @ 08066f90 InitLog("houses"); LoadHouseAreas(); LoadHouses(); LoadOwners(); FinishAuctions(); CollectRents(); StartAuctions(); pTVar1 = QueryManagerConnection; if (QueryManagerConnection != (TQueryManagerConnection *)0x0) { TQueryManagerConnection::~TQueryManagerConnection(QueryManagerConnection,in_stack_ffffffe8); operator_delete(pTVar1); } return; } // WARNING: Unknown calling convention -- yet parameter storage is locked void ExitHouses(void) { // try { // try from 08067009 to 0806700d has its CatchHandler @ 08067015 SaveOwners(); return; } void __tcf_0(void *param_1) { if (HouseArea.entry == (THouseArea *)0x0) { return; } operator_delete__(HouseArea.entry); return; } void __tcf_1(void *param_1) { THouseGuest *pTVar1; THouse *pTVar2; THouse *pTVar3; if (House.entry != (THouse *)0x0) { pTVar2 = House.entry + House.entry[-1].Help; while (House.entry != pTVar2) { pTVar3 = pTVar2 + -1; pTVar1 = pTVar2[-1].Guest.entry; if (pTVar1 != (THouseGuest *)0x0) { operator_delete__(pTVar1); } pTVar1 = pTVar2[-1].Subowner.entry; pTVar2 = pTVar3; if (pTVar1 != (THouseGuest *)0x0) { operator_delete__(pTVar1); } } operator_delete__(&House.entry[-1].Help); } if (House.init.Guest.entry != (THouseGuest *)0x0) { operator_delete__(House.init.Guest.entry); } if (House.init.Subowner.entry != (THouseGuest *)0x0) { operator_delete__(House.init.Subowner.entry); return; } return; } void __tcf_2(void *param_1) { if (HelpDepot.entry == (THelpDepot *)0x0) { return; } operator_delete__(HelpDepot.entry); return; } // WARNING: Unknown calling convention -- yet parameter storage is locked void _GLOBAL__I_HouseArea(void) { __static_initialization_and_destruction_0(1,0xffff); return; } void __static_initialization_and_destruction_0(int __initialize_p,int __priority) { if ((__priority == 0xffff) && (__initialize_p == 1)) { NONE.ObjectID = 0; Semaphore::Semaphore(&ProtocolMutex,1); __cxa_atexit(__tcf_0,0,&__dso_handle); Semaphore::Semaphore(&ProtocolBufferEmpty,1000); __cxa_atexit(__tcf_1,0,&__dso_handle); Semaphore::Semaphore(&ProtocolBufferFull,0); __cxa_atexit(__tcf_2,0,&__dso_handle); Semaphore::Semaphore(&OrderBufferEmpty,2000); __cxa_atexit(__tcf_3,0,&__dso_handle); Semaphore::Semaphore(&OrderBufferFull,0); __cxa_atexit(__tcf_4,0,&__dso_handle); } return; } // WARNING: Unknown calling convention -- yet parameter storage is locked void InitProtocol(void) { ProtocolPointerWrite = 0; ProtocolPointerRead = 0; return; } // WARNING: Variable defined which should be unmapped: Text_local void InsertProtocolOrder(char *ProtocolName,char *Text) { int iVar1; char *pcVar2; char *pcVar3; bool bVar4; char *Text_local; if (ProtocolName == (char *)0x0) { ProtocolName = "InsertProtocolOrder: Protokoll-Name nicht angegeben.\n"; } else { if (Text != (char *)0x0) { bVar4 = ProtocolPointerWrite - ProtocolPointerRead == 999; if (999 < ProtocolPointerWrite - ProtocolPointerRead) { iVar1 = 6; pcVar2 = ProtocolName; pcVar3 = "error"; do { if (iVar1 == 0) break; iVar1 = iVar1 + -1; bVar4 = *pcVar2 == *pcVar3; pcVar2 = pcVar2 + 1; pcVar3 = pcVar3 + 1; } while (bVar4); if (!bVar4) { error(&DAT_080f5260); } } Semaphore::down(&ProtocolMutex); Semaphore::down(&ProtocolBufferEmpty); strcpy(ProtocolBuffer[ProtocolPointerWrite % 1000].ProtocolName,ProtocolName); strcpy(ProtocolBuffer[ProtocolPointerWrite % 1000].Text,Text); ProtocolPointerWrite = ProtocolPointerWrite + 1; Semaphore::up(&ProtocolBufferFull); Semaphore::up(&ProtocolMutex); return; } ProtocolName = "InsertProtocolOrder: Text nicht angegeben.\n"; } error(ProtocolName); return; } void GetProtocolOrder(char *ProtocolName,char *Text) { Semaphore::down(&ProtocolBufferFull); strcpy(ProtocolName,ProtocolBuffer[ProtocolPointerRead % 1000].ProtocolName); strcpy(Text,ProtocolBuffer[ProtocolPointerRead % 1000].Text); ProtocolPointerRead = ProtocolPointerRead + 1; Semaphore::up(&ProtocolBufferEmpty); return; } // WARNING: Unknown calling convention -- yet parameter storage is locked void WriteProtocol(void) { FILE *__stream; int iVar1; int *piVar2; FILE *f; undefined4 in_stack_00000008; char local_100c [4]; char FileName [4096]; sprintf(local_100c,"%s/%s.log",LOGPATH); __stream = fopen(local_100c,"at"); if (__stream != (FILE *)0x0) { fprintf(__stream,"%s",in_stack_00000008); iVar1 = fclose(__stream); if (iVar1 != 0) { piVar2 = __errno_location(); error(&DAT_080f5320,*piVar2); } } return; } int ProtocolThreadLoop(void *param_1) { FILE *__stream; int iVar1; int *piVar2; int iVar3; FILE *f; undefined8 local_1144; char local_113c [4]; char FileName [4096]; char Text [256]; char ProtocolName [20]; while( true ) { Semaphore::down(&ProtocolBufferFull); iVar1 = ProtocolPointerRead; iVar3 = ProtocolPointerRead >> 0x1f; strcpy(Text + 0xfc, ProtocolBuffer[ProtocolPointerRead + ((local_1144._4_4_ >> 6) - iVar3) * -1000]. ProtocolName); local_1144 = (longlong)ProtocolPointerRead * 0x10624dd3; strcpy(FileName + 0xffc, ProtocolBuffer [ProtocolPointerRead + ((iVar1 / 1000 + iVar3) - (ProtocolPointerRead >> 0x1f)) * -1000].Text); ProtocolPointerRead = ProtocolPointerRead + 1; Semaphore::up(&ProtocolBufferEmpty); if (Text[0xfc] == '\0') break; sprintf(local_113c,"%s/%s.log",LOGPATH,Text + 0xfc); __stream = fopen(local_113c,"at"); if (__stream != (FILE *)0x0) { fprintf(__stream,"%s",FileName + 0xffc); iVar1 = fclose(__stream); if (iVar1 != 0) { piVar2 = __errno_location(); error(&DAT_080f5320,*piVar2); } } } return 0; } void InitLog(char *ProtocolName) { FILE *__stream; char *pcVar1; FILE *f; time_t local_1020; time_t Time; char FileName [4096]; if (ProtocolName == (char *)0x0) { error("InitLog: Protokoll-Name nicht angegeben.\n"); } else { sprintf((char *)&Time,"%s/%s.log",LOGPATH,ProtocolName); __stream = fopen((char *)&Time,"at"); if (__stream == (FILE *)0x0) { error("InitLog: Kann Protokoll %s nicht anlegen.\n",ProtocolName); } else { time(&local_1020); fprintf(__stream, "-------------------------------------------------------------------------------\n" ); fprintf(__stream,"Tibia - Graphical Multi-User-Dungeon\n"); pcVar1 = ctime(&local_1020); fprintf(__stream,"%s.log - gestartet %s",ProtocolName,pcVar1); fclose(__stream); } } return; } void Log(char *ProtocolName,char *Text,...) { uint *__dest; tm *ptVar1; FILE *__stream; int *piVar2; int iVar3; uint *puVar4; uint *puVar5; uint uVar6; uint uVar7; bool WriteDate; char *pcVar8; char *pcVar9; bool bVar10; bool bVar11; time_t local_1220; time_t Time; char FileName [4096]; char Line [256]; char Output [256]; if ((ProtocolName == (char *)0x0) || (*ProtocolName == '\0')) { error("Log: Protokoll-Name nicht angegeben.\n"); } else { iVar3 = 10; bVar11 = false; bVar10 = true; pcVar8 = ProtocolName; pcVar9 = "bugreport"; do { if (iVar3 == 0) break; iVar3 = iVar3 + -1; bVar10 = *pcVar8 == *pcVar9; pcVar8 = pcVar8 + 1; pcVar9 = pcVar9 + 1; } while (bVar10); if (!bVar10) { iVar3 = 0xd; pcVar8 = ProtocolName; pcVar9 = "client-error"; do { if (iVar3 == 0) break; iVar3 = iVar3 + -1; bVar10 = *pcVar8 == *pcVar9; pcVar8 = pcVar8 + 1; pcVar9 = pcVar9 + 1; } while (bVar10); if (!bVar10) { iVar3 = 5; pcVar8 = ProtocolName; pcVar9 = "load"; do { if (iVar3 == 0) break; iVar3 = iVar3 + -1; bVar10 = *pcVar8 == *pcVar9; pcVar8 = pcVar8 + 1; pcVar9 = pcVar9 + 1; } while (bVar10); if (!bVar10) { bVar11 = true; } } } pcVar8 = Line + 0xfc; vsnprintf(pcVar8,0x100,Text,&stack0x0000000c); if (bVar11) { print(); time(&local_1220); ptVar1 = localtime(&local_1220); snprintf(FileName + 0xffc,0x100,"%02d.%02d.%04d %02d:%02d:%02d (%ld): %s", ptVar1->tm_mday,ptVar1->tm_mon + 1,ptVar1->tm_year + 0x76c,ptVar1->tm_hour, ptVar1->tm_min,ptVar1->tm_sec,RoundNr,pcVar8); } else { strcpy(FileName + 0xffc,pcVar8); } __dest = (uint *)(FileName + 0xffc); Line[0xfa] = '\0'; puVar5 = __dest; if (FileName[0xffc] != '\0') { do { puVar4 = puVar5; uVar6 = *puVar4 + 0xfefefeff & ~*puVar4; uVar7 = uVar6 & 0x80808080; puVar5 = puVar4 + 1; } while (uVar7 == 0); bVar11 = (uVar6 & 0x8080) == 0; if (bVar11) { uVar7 = uVar7 >> 0x10; } if (bVar11) { puVar5 = (uint *)((int)puVar4 + 6); } if (*(char *)((int)puVar5 + (int)(FileName + (-(int)__dest - (uint)CARRY1((byte)uVar7,(byte)uVar7)) + 0xff8)) != '\n') { strcat((char *)__dest,"\n"); } } if (ProtocolThread == 0) { sprintf((char *)&Time,"%s/%s.log",LOGPATH,ProtocolName); __stream = fopen((char *)&Time,"at"); if (__stream != (FILE *)0x0) { fprintf(__stream,"%s",__dest); iVar3 = fclose(__stream); if (iVar3 != 0) { piVar2 = __errno_location(); error(&DAT_080f5320,*piVar2); } } } else { InsertProtocolOrder(ProtocolName,(char *)__dest); } } return; } // WARNING: Unknown calling convention -- yet parameter storage is locked void InitWriterBuffers(void) { OrderPointerWrite = 0; ReplyPointerWrite = 0; OrderPointerRead = 0; ReplyPointerRead = 0; return; } // WARNING: Unknown calling convention -- yet parameter storage is locked int GetOrderBufferSpace(void) { int iVar1; if (WriterThread == 0) { iVar1 = 0x7fffffff; } else { iVar1 = 2000 - (OrderPointerWrite - OrderPointerRead); } return iVar1; } void InsertOrder(TWriterThreadOrderType OrderType,void *Data) { if (WriterThread != 0) { if (1999 < OrderPointerWrite - OrderPointerRead) { error(&DAT_080f5500); } Semaphore::down(&OrderBufferEmpty); OrderBuffer[OrderPointerWrite % 2000].OrderType = OrderType; OrderBuffer[OrderPointerWrite % 2000].Data = Data; OrderPointerWrite = OrderPointerWrite + 1; Semaphore::up(&OrderBufferFull); return; } return; } void GetOrder(TWriterThreadOrderType *OrderType,void **Data) { int iVar1; Semaphore::down(&OrderBufferFull); iVar1 = OrderPointerRead % 2000; *OrderType = OrderBuffer[iVar1].OrderType; OrderPointerRead = OrderPointerRead + 1; *Data = OrderBuffer[iVar1].Data; Semaphore::up(&OrderBufferEmpty); return; } void InsertReply(TWriterThreadReplyType ReplyType,void *Data) { if (ReplyPointerWrite - ReplyPointerRead < 100) { ReplyBuffer[ReplyPointerWrite % 100].ReplyType = ReplyType; ReplyBuffer[ReplyPointerWrite % 100].Data = Data; ReplyPointerWrite = ReplyPointerWrite + 1; return; } error(&DAT_080f5540); return; } void DirectReply(ulong CharacterID,char *Text,...) { ulong *puVar1; TDirectReplyData *Data; char *Text_00; if (CharacterID != 0) { if (Text == (char *)0x0) { Text_00 = "SendDirectReply: Kein Text angegeben.\n"; } else { puVar1 = (ulong *)operator_new(0x68); *puVar1 = CharacterID; vsnprintf((char *)(puVar1 + 1),100,Text,&stack0x0000000c); if (ReplyPointerWrite - ReplyPointerRead < 100) { ReplyBuffer[ReplyPointerWrite % 100].Data = puVar1; ReplyBuffer[ReplyPointerWrite % 100].ReplyType = REPLY_DIRECT; ReplyPointerWrite = ReplyPointerWrite + 1; return; } Text_00 = &DAT_080f5540; } error(Text_00); } return; } void LogoutReply(char *PlayerName) { int Length; size_t sVar1; char *__dest; char *Buffer; sVar1 = strlen(PlayerName); __dest = (char *)operator_new__(sVar1 + 1); strcpy(__dest,PlayerName); if (ReplyPointerWrite - ReplyPointerRead < 100) { ReplyBuffer[ReplyPointerWrite % 100].ReplyType = REPLY_LOGOUT; ReplyBuffer[ReplyPointerWrite % 100].Data = __dest; ReplyPointerWrite = ReplyPointerWrite + 1; return; } error(&DAT_080f5540); return; } // WARNING: Unknown calling convention -- yet parameter storage is locked bool GetReply(void) { bool bVar1; TWriterThreadReplyType *in_stack_00000004; undefined4 *in_stack_00000008; bVar1 = ReplyPointerRead != ReplyPointerWrite; if (bVar1) { *in_stack_00000004 = ReplyBuffer[ReplyPointerRead % 100].ReplyType; *in_stack_00000008 = ReplyBuffer[ReplyPointerRead % 100].Data; ReplyPointerRead = ReplyPointerRead + 1; } return bVar1; } // WARNING: Unknown calling convention -- yet parameter storage is locked void TerminateWriterOrder(void) { if (WriterThread != 0) { if (1999 < OrderPointerWrite - OrderPointerRead) { error(&DAT_080f5500); } Semaphore::down(&OrderBufferEmpty); OrderBuffer[OrderPointerWrite % 2000].OrderType = ORDER_TERMINATE; OrderBuffer[OrderPointerWrite % 2000].Data = (void *)0x0; OrderPointerWrite = OrderPointerWrite + 1; Semaphore::up(&OrderBufferFull); } return; } void LogoutOrder(TPlayer *Player) { int iVar1; byte bVar2; ulong *puVar3; ulong uVar4; TLogoutOrderData *Data; if (Player == (TPlayer *)0x0) { error(&DAT_080f5680); return; } puVar3 = (ulong *)operator_new(0x34); *puVar3 = (Player->super_TCreature).ID; uVar4 = TSkill::Get((Player->super_TCreature).super_TSkillBase.Skills[0]); puVar3[1] = uVar4; bVar2 = TPlayer::GetActiveProfession(Player); puVar3[2] = (uint)bVar2; if (Player->PlayerData == (TPlayerData *)0x0) { error("LogoutOrder: PlayerData ist NULL.\n"); puVar3[3] = 0; } else { puVar3[3] = Player->PlayerData->LastLoginTime; } puVar3[4] = Player->TutorActivities; iVar1 = (Player->super_TCreature).startx; if (iVar1 == 0x7f89) { puVar3[5] = 0x6f7a614b; puVar3[6] = 0x6f6f6472; LAB_080699b2: *(undefined2 *)(puVar3 + 7) = 0x6e; } else { if (iVar1 < 0x7f8a) { if (iVar1 == 0x7e68) { puVar3[5] = 0x6c726143; *(undefined2 *)(puVar3 + 6) = 0x6e69; LAB_0806990d: *(undefined1 *)((int)puVar3 + 0x1a) = 0; goto LAB_08069820; } if (iVar1 < 0x7e69) { if (iVar1 == 0x7d61) { puVar3[5] = 0x6b6f6f52; puVar3[6] = 0x72616167; *(undefined2 *)(puVar3 + 7) = 100; goto LAB_08069820; } } else { if (iVar1 == 0x7e71) { puVar3[5] = 0x69616854; *(undefined2 *)(puVar3 + 6) = 0x73; goto LAB_08069820; } if (iVar1 == 0x7f53) { puVar3[5] = 0x74726f50; puVar3[6] = 0x706f4820; *(undefined2 *)(puVar3 + 7) = 0x65; goto LAB_08069820; } } } else { if (iVar1 == 0x81aa) { puVar3[5] = 0x726b6e41; puVar3[6] = 0x756d6861; goto LAB_080699b2; } if (iVar1 < 0x81ab) { if (iVar1 == 0x7fdc) { puVar3[5] = 0x44276241; puVar3[6] = 0x72646e65; puVar3[7] = 0x6c6569; goto LAB_08069820; } if (iVar1 == 0x80bd) { puVar3[5] = 0x6f6e6556; *(undefined2 *)(puVar3 + 6) = 0x6572; goto LAB_0806990d; } } else { if (iVar1 == 0x81bd) { puVar3[5] = 0x61726144; puVar3[6] = 0x61696873; *(undefined1 *)(puVar3 + 7) = 0; goto LAB_08069820; } if (iVar1 == 0x81c1) { puVar3[5] = 0x6f726445; *(undefined2 *)(puVar3 + 6) = 0x6e; goto LAB_08069820; } } } error("LogoutOrder: Unbekannte Startkoordinate [%d,%d,%d] bei Spieler %s.\n",iVar1, (Player->super_TCreature).starty,(Player->super_TCreature).startz, (Player->super_TCreature).Name); puVar3[5] = 0x6e6b6e55; puVar3[6] = 0x6e776f; } LAB_08069820: if (WriterThread != 0) { if (1999 < OrderPointerWrite - OrderPointerRead) { error(&DAT_080f5500); } Semaphore::down(&OrderBufferEmpty); OrderBuffer[OrderPointerWrite % 2000].OrderType = ORDER_LOGOUT; OrderBuffer[OrderPointerWrite % 2000].Data = puVar3; OrderPointerWrite = OrderPointerWrite + 1; Semaphore::up(&OrderBufferFull); return; } return; } // WARNING: Variable defined which should be unmapped: NumberOfPlayers_local void PlayerlistOrder(int NumberOfPlayers,char *PlayerNames,int *PlayerLevels,int *PlayerProfessions) { int *piVar1; TPlayerlistOrderData *Data; int *PlayerProfessions_local; int NumberOfPlayers_local; if (PlayerNames == (char *)0x0) { NumberOfPlayers = (int)s_PlayerlistOrder__PlayerNames_ist_080f5740; } else if (PlayerLevels == (int *)0x0) { NumberOfPlayers = (int)s_PlayerlistOrder__PlayerLevels_is_080f5700; } else { if (PlayerProfessions != (int *)0x0) { piVar1 = (int *)operator_new(0x10); piVar1[1] = (int)PlayerNames; piVar1[2] = (int)PlayerLevels; *piVar1 = NumberOfPlayers; piVar1[3] = (int)PlayerProfessions; if (WriterThread != 0) { if (1999 < OrderPointerWrite - OrderPointerRead) { error(&DAT_080f5500); } Semaphore::down(&OrderBufferEmpty); OrderBuffer[OrderPointerWrite % 2000].OrderType = ORDER_PLAYERLIST; OrderBuffer[OrderPointerWrite % 2000].Data = piVar1; OrderPointerWrite = OrderPointerWrite + 1; Semaphore::up(&OrderBufferFull); return; } return; } NumberOfPlayers = (int)s_PlayerlistOrder__PlayerProfessio_080f56c0; } error((char *)NumberOfPlayers); return; } // WARNING: Variable defined which should be unmapped: NumberOfRaces_local void KillStatisticsOrder(int NumberOfRaces,char *RaceNames,int *KilledPlayers,int *KilledCreatures) { int *piVar1; TKillStatisticsOrderData *Data; int *KilledCreatures_local; int NumberOfRaces_local; if (RaceNames == (char *)0x0) { NumberOfRaces = (int)s_KillStatisticsOrder__RaceNames_i_080f5800; } else if (KilledPlayers == (int *)0x0) { NumberOfRaces = (int)s_KillStatisticsOrder__KilledPlaye_080f57c0; } else { if (KilledCreatures != (int *)0x0) { piVar1 = (int *)operator_new(0x10); piVar1[1] = (int)RaceNames; piVar1[2] = (int)KilledPlayers; *piVar1 = NumberOfRaces; piVar1[3] = (int)KilledCreatures; if (WriterThread != 0) { if (1999 < OrderPointerWrite - OrderPointerRead) { error(&DAT_080f5500); } Semaphore::down(&OrderBufferEmpty); OrderBuffer[OrderPointerWrite % 2000].OrderType = ORDER_KILLSTATISTICS; OrderBuffer[OrderPointerWrite % 2000].Data = piVar1; OrderPointerWrite = OrderPointerWrite + 1; Semaphore::up(&OrderBufferFull); return; } return; } NumberOfRaces = (int)s_KillStatisticsOrder__KilledCreat_080f5780; } error((char *)NumberOfRaces); return; } // WARNING: Variable defined which should be unmapped: IPAddress_local void PunishmentOrder(TCreature *cr,char *Name,char *IPAddress,int Reason,int Action,char *Comment, int NumberOfStatements,vector<> *ReportedStatements,ulong StatementID, bool IPBanishment) { ulong *puVar1; ulong uVar2; char *__src; TPunishmentOrderData *Data; bool IPBanishment_local; ulong StatementID_local; vector<> *ReportedStatements_local; int NumberOfStatements_local; char *Comment_local; int Action_local; int Reason_local; char *IPAddress_local; if (Name == (char *)0x0) { cr = (TCreature *)s_PunishmentOrder__Name_ist_NULL__080f5880; } else { if (Comment != (char *)0x0) { puVar1 = (ulong *)operator_new(0x130); uVar2 = 0; if (cr != (TCreature *)0x0) { uVar2 = cr->ID; } *puVar1 = uVar2; __src = "automatic"; if (cr != (TCreature *)0x0) { __src = cr->Name; } strcpy((char *)(puVar1 + 1),__src); strcpy((char *)((int)puVar1 + 0x22),Name); if (IPAddress == (char *)0x0) { *(undefined1 *)(puVar1 + 0x10) = 0; } else { strcpy((char *)(puVar1 + 0x10),IPAddress); } puVar1[0x14] = Reason; puVar1[0x15] = Action; strcpy((char *)(puVar1 + 0x16),Comment); puVar1[0x48] = NumberOfStatements; puVar1[0x49] = (ulong)ReportedStatements; puVar1[0x4a] = StatementID; *(bool *)(puVar1 + 0x4b) = IPBanishment; if (WriterThread != 0) { if (1999 < OrderPointerWrite - OrderPointerRead) { error(&DAT_080f5500); } Semaphore::down(&OrderBufferEmpty); OrderBuffer[OrderPointerWrite % 2000].OrderType = ORDER_PUNISHMENT; OrderBuffer[OrderPointerWrite % 2000].Data = puVar1; OrderPointerWrite = OrderPointerWrite + 1; Semaphore::up(&OrderBufferFull); return; } return; } cr = (TCreature *)s_PunishmentOrder__Comment_ist_NUL_080f5840; } error((char *)cr); return; } // WARNING: Variable defined which should be unmapped: OldLevel_local void CharacterDeathOrder(TCreature *cr,int OldLevel,ulong Offender,char *Remark,bool Unjustified) { ulong *puVar1; ulong uVar2; TCharacterDeathOrderData *Data; ulong Offender_local; int OldLevel_local; if (cr == (TCreature *)0x0) { cr = (TCreature *)s_CharacterDeathOrder__cr_ist_NULL_080f5900; } else { if (Remark != (char *)0x0) { puVar1 = (ulong *)operator_new(0x30); *puVar1 = cr->ID; puVar1[1] = OldLevel; puVar1[2] = Offender; strcpy((char *)(puVar1 + 3),Remark); *(bool *)((int)puVar1 + 0x2a) = Unjustified; uVar2 = time((time_t *)0x0); puVar1[0xb] = uVar2; if (WriterThread != 0) { if (1999 < OrderPointerWrite - OrderPointerRead) { error(&DAT_080f5500); } Semaphore::down(&OrderBufferEmpty); OrderBuffer[OrderPointerWrite % 2000].OrderType = ORDER_CHARACTERDEATH; OrderBuffer[OrderPointerWrite % 2000].Data = puVar1; OrderPointerWrite = OrderPointerWrite + 1; Semaphore::up(&OrderBufferFull); return; } return; } cr = (TCreature *)s_CharacterDeathOrder__Remark_ist_N_080f58c0; } error((char *)cr); return; } void AddBuddyOrder(TCreature *cr,ulong Buddy) { _func_int_varargs **pp_Var1; undefined4 *puVar2; TBuddyOrderData *Data; if (cr == (TCreature *)0x0) { cr = (TCreature *)s_AddBuddyOrder__cr_ist_NULL__080f51a0; } else { if (cr->Type == PLAYER) { puVar2 = (undefined4 *)operator_new(8); pp_Var1 = cr[1]._vptr_TCreature; puVar2[1] = Buddy; *puVar2 = pp_Var1; if (WriterThread != 0) { if (1999 < OrderPointerWrite - OrderPointerRead) { error(&DAT_080f5500); } Semaphore::down(&OrderBufferEmpty); OrderBuffer[OrderPointerWrite % 2000].OrderType = ORDER_ADDBUDDY; OrderBuffer[OrderPointerWrite % 2000].Data = puVar2; OrderPointerWrite = OrderPointerWrite + 1; Semaphore::up(&OrderBufferFull); return; } return; } cr = (TCreature *)s_AddBuddyOrder__Kreatur_ist_kein_S_080f5940; } error((char *)cr); return; } void RemoveBuddyOrder(TCreature *cr,ulong Buddy) { _func_int_varargs **pp_Var1; undefined4 *puVar2; TBuddyOrderData *Data; if (cr == (TCreature *)0x0) { cr = (TCreature *)s_RemoveBuddyOrder__cr_ist_NULL__080f59c0; } else { if (cr->Type == PLAYER) { puVar2 = (undefined4 *)operator_new(8); pp_Var1 = cr[1]._vptr_TCreature; puVar2[1] = Buddy; *puVar2 = pp_Var1; if (WriterThread != 0) { if (1999 < OrderPointerWrite - OrderPointerRead) { error(&DAT_080f5500); } Semaphore::down(&OrderBufferEmpty); OrderBuffer[OrderPointerWrite % 2000].OrderType = ORDER_REMOVEBUDDY; OrderBuffer[OrderPointerWrite % 2000].Data = puVar2; OrderPointerWrite = OrderPointerWrite + 1; Semaphore::up(&OrderBufferFull); return; } return; } cr = (TCreature *)s_RemoveBuddyOrder__Kreatur_ist_ke_080f5980; } error((char *)cr); return; } void DecrementIsOnlineOrder(ulong CharacterID) { if (WriterThread != 0) { if (1999 < OrderPointerWrite - OrderPointerRead) { error(&DAT_080f5500); } Semaphore::down(&OrderBufferEmpty); OrderBuffer[OrderPointerWrite % 2000].OrderType = ORDER_DECREMENTISONLINE; OrderBuffer[OrderPointerWrite % 2000].Data = (void *)CharacterID; OrderPointerWrite = OrderPointerWrite + 1; Semaphore::up(&OrderBufferFull); return; } return; } // WARNING: Unknown calling convention -- yet parameter storage is locked void SavePlayerDataOrder(void) { if (WriterThread != 0) { if (1999 < OrderPointerWrite - OrderPointerRead) { error(&DAT_080f5500); } Semaphore::down(&OrderBufferEmpty); OrderBuffer[OrderPointerWrite % 2000].OrderType = ORDER_SAVEPLAYERDATA; OrderBuffer[OrderPointerWrite % 2000].Data = (void *)0x0; OrderPointerWrite = OrderPointerWrite + 1; Semaphore::up(&OrderBufferFull); } return; } // WARNING: Variable defined which should be unmapped: HelpProfession void ProcessLogoutOrder(void *RawData) { int iVar1; undefined4 uVar2; char *Buffer; int iVar3; undefined4 uVar4; undefined4 uVar5; char local_2c [4]; char HelpProfession [30]; if (RawData == (void *)0x0) { error(&DAT_080f5a60); } else { Buffer = local_2c; GetProfessionName(Buffer,*(int *)((int)RawData + 8),false,true); if (0 < *(int *)((int)RawData + 0x10)) { print(); } uVar5 = *(undefined4 *)((int)RawData + 0x10); iVar3 = (int)RawData + 0x14; uVar4 = *(undefined4 *)((int)RawData + 0xc); uVar2 = *(undefined4 *)((int)RawData + 4); iVar1 = TQueryManagerConnection::logoutGame(QueryManagerConnection); if (iVar1 != 0) { // WARNING: Load size is inaccurate error(&DAT_080f5a20,*RawData,uVar2,Buffer,iVar3,uVar4,uVar5); } operator_delete(RawData); } return; } // WARNING: Variable defined which should be unmapped: NewRecord void ProcessPlayerlistOrder(void *RawData) { bool *pbVar1; int iVar2; int iVar3; int iVar4; void *pvVar5; uint uVar6; int i; int iVar7; uint *puVar8; int iVar9; undefined4 uStack_40; char *Text; int local_24; char_0__30_ *Professions; int_0_ *Levels; char___0_ *Names; bool local_11 [4]; bool NewRecord; if (RawData == (void *)0x0) { Text = &DAT_080f5b60; LAB_0806a54b: uStack_40 = 0x806a550; error(Text); } else { // WARNING: Load size is inaccurate iVar9 = *RawData; if (iVar9 < 1) { // WARNING: Load size is inaccurate uStack_40 = 0x806a53c; iVar9 = TQueryManagerConnection::createPlayerlist (QueryManagerConnection,*RawData,(char **)0x0,(int *)0x0, (char (*) [30])0x0,local_11); puVar8 = (uint *)&stack0xffffffc4; if (iVar9 != 0) { Text = "ProcessPlayerlistOrder: Anfrage fehlgeschlagen (1).\n"; goto LAB_0806a54b; } } else { Names = &stack0xffffffc4; uVar6 = (iVar9 + -1) * 4 + 0x13U & 0xfffffff0; iVar3 = uVar6 * -2; Levels = (int_0_ *)((int)&local_24 - uVar6); Professions = (char_0__30_ *)((int)&local_24 + iVar3); iVar7 = 0; iVar2 = -((iVar9 + -1) * 0x1e + 0x2dU & 0xfffffff0); local_24 = (int)&local_24 + iVar2 + iVar3; if (0 < iVar9) { iVar9 = 0; do { *(int *)(Levels + iVar7 * 4) = *(int *)((int)RawData + 4) + iVar9; *(undefined4 *)(Professions + iVar7 * 4) = *(undefined4 *)(*(int *)((int)RawData + 8) + iVar7 * 4); pbVar1 = local_11 + iVar2 + iVar3 + -0x1f; pbVar1[0] = true; pbVar1[1] = false; pbVar1[2] = false; pbVar1[3] = false; *(undefined4 *)(&stack0xffffffcc + iVar2 + iVar3) = 0; iVar4 = iVar7 * 4; iVar7 = iVar7 + 1; *(undefined4 *)(&stack0xffffffc8 + iVar2 + iVar3) = *(undefined4 *)(*(int *)((int)RawData + 0xc) + iVar4); iVar4 = local_24 + iVar9; iVar9 = iVar9 + 0x1e; *(int *)(&stack0xffffffc4 + iVar2 + iVar3) = iVar4; *(undefined4 *)((int)&uStack_40 + iVar2 + iVar3) = 0x806a3e2; GetProfessionName(*(char **)(&stack0xffffffc4 + iVar2 + iVar3), *(int *)(&stack0xffffffc8 + iVar2 + iVar3), (bool)(&stack0xffffffcc)[iVar2 + iVar3], local_11[iVar2 + iVar3 + -0x1f]); // WARNING: Load size is inaccurate } while (iVar7 < *RawData); } *(bool **)(&stack0xffffffd8 + iVar2 + iVar3) = local_11; *(int *)(&stack0xffffffd4 + iVar2 + iVar3) = local_24; *(char_0__30_ **)(local_11 + iVar2 + iVar3 + -0x1f) = Professions; *(int_0_ **)(&stack0xffffffcc + iVar2 + iVar3) = Levels; // WARNING: Load size is inaccurate *(undefined4 *)(&stack0xffffffc8 + iVar2 + iVar3) = *RawData; *(TQueryManagerConnection **)(&stack0xffffffc4 + iVar2 + iVar3) = QueryManagerConnection ; *(undefined4 *)((int)&uStack_40 + iVar2 + iVar3) = 0x806a415; iVar9 = TQueryManagerConnection::createPlayerlist (*(TQueryManagerConnection **)(&stack0xffffffc4 + iVar2 + iVar3), *(int *)(&stack0xffffffc8 + iVar2 + iVar3), *(char ***)(&stack0xffffffcc + iVar2 + iVar3), *(int **)(local_11 + iVar2 + iVar3 + -0x1f), *(char (**) [30])(&stack0xffffffd4 + iVar2 + iVar3), *(bool **)(&stack0xffffffd8 + iVar2 + iVar3)); puVar8 = (uint *)Names; if (iVar9 != 0) { *(char **)(&stack0xffffffc4 + iVar2 + iVar3) = "ProcessPlayerlistOrder: Anfrage fehlgeschlagen (2).\n"; *(undefined4 *)((int)&uStack_40 + iVar2 + iVar3) = 0x806a502; error(*(char **)(&stack0xffffffc4 + iVar2 + iVar3)); return; } } if (local_11[0] != false) { *puVar8 = 100; puVar8[-1] = 0x806a475; pvVar5 = operator_new__(*puVar8); // WARNING: Load size is inaccurate uVar6 = *RawData; puVar8[1] = 100; puVar8[2] = (uint)"New record: %d players are logged in."; *puVar8 = (uint)pvVar5; puVar8[3] = uVar6; puVar8[-1] = 0x806a495; snprintf((char *)*puVar8,puVar8[1],(char *)puVar8[2]); if (ReplyPointerWrite - ReplyPointerRead < 100) { iVar9 = ReplyPointerWrite % 100; ReplyBuffer[iVar9].Data = pvVar5; ReplyPointerWrite = ReplyPointerWrite + 1; ReplyBuffer[iVar9].ReplyType = REPLY_BROADCAST; } else { *puVar8 = (uint)&DAT_080f5540; puVar8[-1] = 0x806a4f1; error((char *)*puVar8); } } if (*(int *)((int)RawData + 4) != 0) { *puVar8 = *(int *)((int)RawData + 4); puVar8[-1] = 0x806a467; operator_delete__((void *)*puVar8); } if (*(int *)((int)RawData + 8) != 0) { *puVar8 = *(int *)((int)RawData + 8); puVar8[-1] = 0x806a45d; operator_delete__((void *)*puVar8); } if (*(int *)((int)RawData + 0xc) != 0) { *puVar8 = *(int *)((int)RawData + 0xc); puVar8[-1] = 0x806a453; operator_delete__((void *)*puVar8); } *puVar8 = (uint)RawData; puVar8[-1] = 0x806a443; operator_delete((void *)*puVar8); } return; } void ProcessKillStatisticsOrder(void *RawData) { int iVar1; int iVar2; int iVar3; int i; int iVar4; int iVar5; uint uVar6; int_0_ *KilledPlayers; int iStack_40; int aiStack_28 [4]; int_0_ *KilledCreatures; char___0_ *RaceNames; RaceNames = &stack0xffffffc4; if (RawData == (void *)0x0) { iStack_40 = 0x806a661; error(&DAT_080f5be0); } else { // WARNING: Load size is inaccurate iVar4 = 0; uVar6 = *RawData * 4 + 0xfU & 0xfffffff0; iVar1 = uVar6 * -3; iVar3 = (int)aiStack_28 + uVar6 * -2; KilledCreatures = (int_0_ *)((int)aiStack_28 - uVar6); aiStack_28[3] = (int)aiStack_28 + iVar1; if (0 < *RawData) { iVar5 = 0; do { iVar2 = *(int *)((int)RawData + 4) + iVar5; iVar5 = iVar5 + 0x1e; *(int *)(KilledCreatures + iVar4 * 4) = iVar2; *(undefined4 *)(iVar3 + iVar4 * 4) = *(undefined4 *)(*(int *)((int)RawData + 8) + iVar4 * 4); *(undefined4 *)(aiStack_28[3] + iVar4 * 4) = *(undefined4 *)(*(int *)((int)RawData + 0xc) + iVar4 * 4); iVar4 = iVar4 + 1; // WARNING: Load size is inaccurate } while (iVar4 < *RawData); } iVar4 = aiStack_28[3]; *(int *)(&stack0xffffffd0 + iVar1) = iVar3; *(int *)(&stack0xffffffd4 + iVar1) = iVar4; *(int_0_ **)(&stack0xffffffcc + iVar1) = KilledCreatures; // WARNING: Load size is inaccurate *(undefined4 *)(&stack0xffffffc8 + iVar1) = *RawData; *(TQueryManagerConnection **)(&stack0xffffffc4 + iVar1) = QueryManagerConnection; *(undefined4 *)((int)&iStack_40 + iVar1) = 0x806a5fd; iVar3 = TQueryManagerConnection::logKilledCreatures (*(TQueryManagerConnection **)(&stack0xffffffc4 + iVar1), *(int *)(&stack0xffffffc8 + iVar1),*(char ***)(&stack0xffffffcc + iVar1), *(int **)(&stack0xffffffd0 + iVar1),*(int **)(&stack0xffffffd4 + iVar1)); if (iVar3 == 0) { if (*(int *)((int)RawData + 4) != 0) { *(int *)(&stack0xffffffc4 + iVar1) = *(int *)((int)RawData + 4); *(undefined4 *)((int)&iStack_40 + iVar1) = 0x806a645; operator_delete__(*(void **)(&stack0xffffffc4 + iVar1)); } if (*(int *)((int)RawData + 8) != 0) { *(int *)(&stack0xffffffc4 + iVar1) = *(int *)((int)RawData + 8); *(undefined4 *)((int)&iStack_40 + iVar1) = 0x806a63b; operator_delete__(*(void **)(&stack0xffffffc4 + iVar1)); } if (*(int *)((int)RawData + 0xc) != 0) { *(int *)(&stack0xffffffc4 + iVar1) = *(int *)((int)RawData + 0xc); *(undefined4 *)((int)&iStack_40 + iVar1) = 0x806a631; operator_delete__(*(void **)(&stack0xffffffc4 + iVar1)); } *(void **)(&stack0xffffffc4 + iVar1) = RawData; *(undefined4 *)((int)&iStack_40 + iVar1) = 0x806a61e; operator_delete(*(void **)(&stack0xffffffc4 + iVar1)); } else { *(char **)(&stack0xffffffc4 + iVar1) = "ProcessKillStatisticsOrder: Anfrage fehlgeschlagen.\n"; *(undefined4 *)((int)&iStack_40 + iVar1) = 0x806a653; error(*(char **)(&stack0xffffffc4 + iVar1)); } } return; } void ProcessPunishmentOrder(void *RawData) { ulong uVar1; int iVar2; int iVar3; int Length; char *pcVar4; int iVar5; size_t sVar6; void *pvVar7; TReportedStatement *pTVar8; char *pcVar9; uint uVar10; int iVar11; int i; int iVar12; int iVar13; ulong *puVar14; char_0__30_ *Channels; char *pcStack_80; char *local_74; char *local_70; char *local_6c; char *local_68; int *local_64 [5]; int aiStack_50 [2]; undefined4 uStack_48; undefined8 local_44; int local_3c; undefined4 local_38; char_0__256_ *Texts; ulong_0_ *CharacterIDs; ulong_0_ *TimeStamps; ulong_0_ *StatementIDs; int local_24; char local_1e; char local_1d; bool ok; char *pcStack_1c; bool FinalWarning; int Days; ulong BanishmentID; if (RawData == (void *)0x0) { pcStack_80 = (char *)0x806b148; error(&DAT_080f60e0); return; } local_1e = '\x01'; Days = 0; if (*(int *)((int)RawData + 0x54) == 0) { pcVar4 = (char *)((int)RawData + 0x22); pcStack_80 = (char *)0x806b091; local_6c = GetBanishmentReason(*(int *)((int)RawData + 0x50)); local_70 = (char *)((int)RawData + 0x40); local_64[0] = &Days; pcStack_80 = (char *)0x806b0be; local_74 = pcVar4; local_68 = (char *)((int)RawData + 0x58); iVar5 = TQueryManagerConnection::setNotation(QueryManagerConnection); if (iVar5 == 1) { pcVar4 = "A player with this name does not exist. Perhaps he/she has been renamed?"; LAB_0806b0d9: // WARNING: Load size is inaccurate pcStack_80 = (char *)0x806b0e3; DirectReply(*RawData,pcVar4); local_1e = '\0'; } else if (iVar5 < 2) { if (iVar5 == 0) { // WARNING: Load size is inaccurate pcStack_80 = (char *)0x806b10a; local_74 = pcVar4; DirectReply(*RawData,"Notation for player %s inserted."); local_74 = (char *)((int)RawData + 4); pcStack_80 = (char *)0x806b12d; local_70 = pcVar4; local_6c = (char *)((int)RawData + 0x58); Log("banish","%s notiert zu %s: %s.\n"); } } else if (iVar5 == 2) { pcVar4 = "You may not report a god or gamemaster."; goto LAB_0806b0d9; } } puVar14 = (ulong *)&stack0xffffff84; if (local_1e == '\0') goto LAB_0806a710; iVar5 = *(int *)((int)RawData + 0x54); if (((iVar5 != 1) && (iVar5 != 3)) && (iVar5 != 5)) goto switchD_0806b000_default; pcVar4 = (char *)((int)RawData + 0x22); pcStack_80 = (char *)0x806afd1; local_6c = GetBanishmentReason(*(int *)((int)RawData + 0x50)); local_68 = (char *)((int)RawData + 0x58); pcStack_80 = (char *)0x806aff7; local_74 = pcVar4; local_70 = (char *)((int)RawData + 0x40); iVar5 = TQueryManagerConnection::setNamelock(QueryManagerConnection); switch(iVar5) { case 0: // WARNING: Load size is inaccurate pcStack_80 = (char *)0x806b01d; local_74 = pcVar4; DirectReply(*RawData,"Player %s reported for renaming."); local_74 = (char *)((int)RawData + 4); pcStack_80 = (char *)0x806b03c; local_70 = pcVar4; Log("banish",&DAT_080f5f80); break; case 1: pcVar4 = "A player with this name does not exist. Perhaps he/she has already been renamed?"; goto LAB_0806b049; case 2: case 4: pcVar4 = "This name has already been approved."; LAB_0806b049: // WARNING: Load size is inaccurate pcStack_80 = (char *)0x806b053; DirectReply(*RawData,pcVar4); local_1e = '\0'; break; case 3: // WARNING: Load size is inaccurate pcStack_80 = (char *)0x806b06e; DirectReply(*RawData,"This player has already been reported."); } switchD_0806b000_default: puVar14 = (ulong *)&stack0xffffff84; if (local_1e == '\0') goto LAB_0806a710; if (*(int *)((int)RawData + 0x54) - 2U < 4) { local_1d = *(int *)((int)RawData + 0x54) - 4U < 2; pcStack_80 = (char *)0x806ad8c; local_6c = GetBanishmentReason(*(int *)((int)RawData + 0x50)); local_64[2] = &Days; local_70 = (char *)((int)RawData + 0x40); local_68 = (char *)((int)RawData + 0x58); pcVar4 = (char *)((int)RawData + 0x22); pcStack_80 = (char *)0x806adc9; local_74 = pcVar4; local_64[0] = (int *)&local_1d; local_64[1] = (int *)&stack0xffffffe4; iVar5 = TQueryManagerConnection::banishAccount(QueryManagerConnection); if (iVar5 == 1) { pcVar4 = "A player with this name does not exist. Perhaps he/she has been renamed?"; LAB_0806ae8b: // WARNING: Load size is inaccurate pcStack_80 = (char *)0x806ae95; DirectReply(*RawData,pcVar4); local_1e = '\0'; } else if (iVar5 < 2) { if (iVar5 == 0) { if (pcStack_1c == (char *)0xffffffff) { // WARNING: Load size is inaccurate pcStack_80 = (char *)0x806afa9; local_74 = pcVar4; DirectReply(*RawData,"Account of player %s banished infinitely."); } else { if (local_1d == '\0') { pcVar9 = "Account of player %s banished for %d days."; } else { pcVar9 = "Account of player %s banished for %d days with final warning."; } local_70 = pcStack_1c; // WARNING: Load size is inaccurate pcStack_80 = (char *)0x806aed6; local_74 = pcVar4; DirectReply(*RawData,pcVar9); } pcStack_80 = (char *)0x806aede; sVar6 = strlen(pcVar4); pcStack_80 = (char *)0x806aee7; pcVar9 = (char *)operator_new__(sVar6 + 1); pcStack_80 = (char *)0x806aef5; strcpy(pcVar9,pcVar4); if (ReplyPointerWrite - ReplyPointerRead < 100) { local_44 = (longlong)ReplyPointerWrite * 0x51eb851f; local_3c = ReplyPointerWrite / 100; ReplyBuffer[ReplyPointerWrite % 100].ReplyType = REPLY_LOGOUT; ReplyBuffer[ReplyPointerWrite % 100].Data = pcVar9; ReplyPointerWrite = ReplyPointerWrite + 1; } else { pcStack_80 = (char *)0x806af7c; error(&DAT_080f5540); } local_74 = (char *)((int)RawData + 4); pcStack_80 = (char *)0x806af6b; local_70 = pcVar4; Log("banish","%s verbannt Account von Spieler %s.\n"); } } else { if (iVar5 == 2) { pcVar4 = "You may not report a god or gamemaster."; goto LAB_0806ae8b; } if (iVar5 == 3) { // WARNING: Load size is inaccurate pcStack_80 = (char *)0x806ae03; local_74 = pcVar4; DirectReply(*RawData,"Player %s has already been banished."); pcStack_80 = (char *)0x806ae0b; sVar6 = strlen(pcVar4); pcStack_80 = (char *)0x806ae14; pcVar9 = (char *)operator_new__(sVar6 + 1); pcStack_80 = (char *)0x806ae22; strcpy(pcVar9,pcVar4); if (ReplyPointerWrite - ReplyPointerRead < 100) { iVar5 = ReplyPointerWrite % 100; ReplyPointerWrite = ReplyPointerWrite + 1; ReplyBuffer[iVar5].ReplyType = REPLY_LOGOUT; ReplyBuffer[iVar5].Data = pcVar9; } else { pcStack_80 = (char *)0x806ae7e; error(&DAT_080f5540); } } } } puVar14 = (ulong *)&stack0xffffff84; if (local_1e == '\0') goto LAB_0806a710; puVar14 = (ulong *)&stack0xffffff84; if (*(int *)((int)RawData + 0x128) == 0) goto LAB_0806a800; StatementIDs = &stack0xffffff84; local_24 = *(int *)((int)RawData + 0x120); if ((local_24 == 0) || (*(int *)((int)RawData + 0x124) == 0)) { pcStack_80 = (char *)0x806a70d; error("ProcessPunishmentOrder: Statements existieren nicht.\n"); puVar14 = (ulong *)&stack0xffffff84; goto LAB_0806a710; } iVar12 = local_24 + -1; uVar10 = iVar12 * 4 + 0x13U & 0xfffffff0; iVar3 = uVar10 * -3; TimeStamps = (ulong_0_ *)((int)&uStack_48 - uVar10); CharacterIDs = (ulong_0_ *)((int)&uStack_48 + uVar10 * -2); Texts = (char_0__256_ *)((int)&uStack_48 + iVar3); iVar2 = -(iVar12 * 0x1e + 0x2dU & 0xfffffff0); iVar5 = (int)&uStack_48 + iVar2 + iVar3; iVar12 = -(iVar12 * 0x100 + 0x100); local_38 = (int)&uStack_48 + iVar12 + iVar2 + iVar3; iVar13 = 0; if (0 < local_24) { do { *(int *)((int)local_64 + iVar12 + iVar2 + iVar3 + -0x14) = iVar13; *(undefined4 *)(&stack0xffffff84 + iVar12 + iVar2 + iVar3) = *(undefined4 *)((int)RawData + 0x124); *(undefined4 *)((int)&pcStack_80 + iVar12 + iVar2 + iVar3) = 0x806a9e2; pTVar8 = vector<>::operator() (*(vector<> **)(&stack0xffffff84 + iVar12 + iVar2 + iVar3), *(int *)((int)local_64 + iVar12 + iVar2 + iVar3 + -0x14)); *(ulong *)(TimeStamps + iVar13 * 4) = pTVar8->StatementID; *(int *)((int)local_64 + iVar12 + iVar2 + iVar3 + -0x14) = iVar13; *(undefined4 *)(&stack0xffffff84 + iVar12 + iVar2 + iVar3) = *(undefined4 *)((int)RawData + 0x124); *(undefined4 *)((int)&pcStack_80 + iVar12 + iVar2 + iVar3) = 0x806a9fc; pTVar8 = vector<>::operator() (*(vector<> **)(&stack0xffffff84 + iVar12 + iVar2 + iVar3), *(int *)((int)local_64 + iVar12 + iVar2 + iVar3 + -0x14)); *(ulong *)(CharacterIDs + iVar13 * 4) = pTVar8->TimeStamp; *(int *)((int)local_64 + iVar12 + iVar2 + iVar3 + -0x14) = iVar13; *(undefined4 *)(&stack0xffffff84 + iVar12 + iVar2 + iVar3) = *(undefined4 *)((int)RawData + 0x124); *(undefined4 *)((int)&pcStack_80 + iVar12 + iVar2 + iVar3) = 0x806aa17; pTVar8 = vector<>::operator() (*(vector<> **)(&stack0xffffff84 + iVar12 + iVar2 + iVar3), *(int *)((int)local_64 + iVar12 + iVar2 + iVar3 + -0x14)); *(ulong *)(Texts + iVar13 * 4) = pTVar8->CharacterID; *(int *)((int)local_64 + iVar12 + iVar2 + iVar3 + -0x14) = iVar13; *(undefined4 *)(&stack0xffffff84 + iVar12 + iVar2 + iVar3) = *(undefined4 *)((int)RawData + 0x124); *(undefined4 *)((int)&pcStack_80 + iVar12 + iVar2 + iVar3) = 0x806aa32; pTVar8 = vector<>::operator() (*(vector<> **)(&stack0xffffff84 + iVar12 + iVar2 + iVar3), *(int *)((int)local_64 + iVar12 + iVar2 + iVar3 + -0x14)); switch(pTVar8->Mode) { default: *(int *)((int)local_64 + iVar12 + iVar2 + iVar3 + -0x14) = iVar13; *(undefined4 *)(&stack0xffffff84 + iVar12 + iVar2 + iVar3) = *(undefined4 *)((int)RawData + 0x124); *(undefined4 *)((int)&pcStack_80 + iVar12 + iVar2 + iVar3) = 0x806aa9c; pTVar8 = vector<>::operator() (*(vector<> **)(&stack0xffffff84 + iVar12 + iVar2 + iVar3), *(int *)((int)local_64 + iVar12 + iVar2 + iVar3 + -0x14)); iVar11 = pTVar8->Mode; *(undefined **)(&stack0xffffff84 + iVar12 + iVar2 + iVar3) = &DAT_080f5dc0; *(int *)((int)local_64 + iVar12 + iVar2 + iVar3 + -0x14) = iVar11; *(undefined4 *)((int)&pcStack_80 + iVar12 + iVar2 + iVar3) = 0x806aaaf; error(*(char **)(&stack0xffffff84 + iVar12 + iVar2 + iVar3)); *(undefined4 *)(iVar5 + iVar13 * 0x1e) = 0x6e6b6e55; *(undefined4 *)((int)&local_44 + iVar13 * 0x1e + iVar2 + iVar3) = 0x6e776f; break; case 1: *(undefined4 *)(iVar5 + iVar13 * 0x1e) = 0x796153; break; case 2: *(undefined4 *)(iVar5 + iVar13 * 0x1e) = 0x73696857; *(undefined4 *)((int)&local_44 + iVar13 * 0x1e + iVar2 + iVar3) = 0x726570; break; case 3: *(undefined4 *)(iVar5 + iVar13 * 0x1e) = 0x6c6c6559; *(undefined1 *)((int)&local_44 + iVar13 * 0x1e + iVar2 + iVar3) = 0; break; case 4: case 0xb: iVar11 = iVar13 * 0x1e; *(undefined4 *)((int)&local_44 + iVar11 + iVar2 + iVar3) = 0x20657461; *(undefined4 *)(iVar5 + iVar11) = 0x76697250; *(undefined4 *)((int)&local_44 + iVar11 + iVar2 + iVar3 + 4) = 0x7373654d; *(undefined4 *)((int)&local_3c + iVar11 + iVar2 + iVar3) = 0x656761; break; case 5: case 10: case 0xc: *(int *)((int)local_64 + iVar12 + iVar2 + iVar3 + -0x14) = iVar13; *(undefined4 *)(&stack0xffffff84 + iVar12 + iVar2 + iVar3) = *(undefined4 *)((int)RawData + 0x124); *(undefined4 *)((int)&pcStack_80 + iVar12 + iVar2 + iVar3) = 0x806ac0a; pTVar8 = vector<>::operator() (*(vector<> **)(&stack0xffffff84 + iVar12 + iVar2 + iVar3), *(int *)((int)local_64 + iVar12 + iVar2 + iVar3 + -0x14)); switch(pTVar8->Channel) { case 0: *(undefined4 *)(iVar5 + iVar13 * 0x1e) = 0x6c697547; *(undefined4 *)((int)&local_44 + iVar13 * 0x1e + iVar2 + iVar3) = 0x68432064; goto LAB_0806ac36; case 1: iVar11 = iVar13 * 0x1e; *(undefined4 *)((int)&local_44 + iVar11 + iVar2 + iVar3) = 0x7473616d; *(undefined4 *)(iVar5 + iVar11) = 0x656d6147; *(undefined4 *)((int)&local_44 + iVar11 + iVar2 + iVar3 + 4) = 0x43207265; *(undefined4 *)((int)&local_3c + iVar11 + iVar2 + iVar3) = 0x6e6e6168; *(undefined2 *)((int)&local_38 + iVar11 + iVar2 + iVar3) = 0x6c65; goto LAB_0806ab34; case 2: *(undefined4 *)(iVar5 + iVar13 * 0x1e) = 0x6f747554; *(undefined4 *)((int)&local_44 + iVar13 * 0x1e + iVar2 + iVar3) = 0x68432072; goto LAB_0806ac36; default: iVar11 = iVar13 * 0x1e; *(undefined4 *)((int)&local_44 + iVar11 + iVar2 + iVar3) = 0x20657461; *(undefined4 *)((int)&local_44 + iVar11 + iVar2 + iVar3 + 4) = 0x74616843; *(undefined4 *)(iVar5 + iVar11) = 0x76697250; *(undefined4 *)((int)&local_3c + iVar11 + iVar2 + iVar3) = 0x61684320; *(undefined4 *)((int)&local_38 + iVar11 + iVar2 + iVar3) = 0x6c656e6e; *(undefined1 *)((int)&Texts + iVar11 + iVar2 + iVar3) = 0; break; case 4: *(undefined4 *)(iVar5 + iVar13 * 0x1e) = 0x656d6147; *(undefined4 *)((int)&local_44 + iVar13 * 0x1e + iVar2 + iVar3) = 0x61684320; goto LAB_0806abbc; case 5: *(undefined4 *)(iVar5 + iVar13 * 0x1e) = 0x64617254; *(undefined4 *)((int)&local_44 + iVar13 * 0x1e + iVar2 + iVar3) = 0x68432065; LAB_0806ac36: *(undefined2 *)((int)&local_3c + iVar13 * 0x1e + iVar2 + iVar3) = 0x6c; *(undefined4 *)((int)&local_44 + iVar13 * 0x1e + iVar2 + iVar3 + 4) = 0x656e6e61 ; break; case 6: iVar11 = iVar13 * 0x1e; *(undefined4 *)(iVar5 + iVar11) = 0x6c616552; *(undefined4 *)((int)&local_44 + iVar11 + iVar2 + iVar3) = 0x6566696c; *(undefined4 *)((int)&local_44 + iVar11 + iVar2 + iVar3 + 4) = 0x61684320; *(undefined2 *)((int)&local_3c + iVar11 + iVar2 + iVar3) = 0x74; break; case 7: iVar11 = iVar13 * 0x1e; *(undefined4 *)(iVar5 + iVar11) = 0x706c6548; *(undefined4 *)((int)&local_44 + iVar11 + iVar2 + iVar3) = 0x61684320; *(undefined4 *)((int)&local_44 + iVar11 + iVar2 + iVar3 + 4) = 0x6c656e6e; *(undefined1 *)((int)&local_3c + iVar11 + iVar2 + iVar3) = 0; } break; case 6: iVar11 = iVar13 * 0x1e; *(undefined4 *)((int)&local_44 + iVar11 + iVar2 + iVar3) = 0x7473616d; *(undefined4 *)(iVar5 + iVar11) = 0x656d6147; *(undefined4 *)((int)&local_44 + iVar11 + iVar2 + iVar3 + 4) = 0x52207265; *(undefined4 *)((int)&local_3c + iVar11 + iVar2 + iVar3) = 0x65757165; *(undefined2 *)((int)&local_38 + iVar11 + iVar2 + iVar3) = 0x7473; LAB_0806ab34: *(undefined1 *)((int)&local_38 + iVar13 * 0x1e + iVar2 + iVar3 + 2) = 0; break; case 7: iVar11 = iVar13 * 0x1e; *(undefined4 *)((int)&local_44 + iVar11 + iVar2 + iVar3) = 0x7473616d; *(undefined4 *)(iVar5 + iVar11) = 0x656d6147; *(undefined4 *)((int)&local_44 + iVar11 + iVar2 + iVar3 + 4) = 0x41207265; *(undefined4 *)((int)&local_3c + iVar11 + iVar2 + iVar3) = 0x6577736e; *(undefined2 *)((int)&local_38 + iVar11 + iVar2 + iVar3) = 0x72; break; case 8: iVar11 = iVar13 * 0x1e; *(undefined4 *)(iVar5 + iVar11) = 0x79616c50; *(undefined4 *)((int)&local_44 + iVar11 + iVar2 + iVar3) = 0x41207265; *(undefined4 *)((int)&local_44 + iVar11 + iVar2 + iVar3 + 4) = 0x6577736e; *(undefined2 *)((int)&local_3c + iVar11 + iVar2 + iVar3) = 0x72; break; case 9: *(undefined4 *)(iVar5 + iVar13 * 0x1e) = 0x616f7242; *(undefined4 *)((int)&local_44 + iVar13 * 0x1e + iVar2 + iVar3) = 0x73616364; LAB_0806abbc: *(undefined2 *)((int)&local_44 + iVar13 * 0x1e + iVar2 + iVar3 + 4) = 0x74; } *(int *)((int)local_64 + iVar12 + iVar2 + iVar3 + -0x14) = iVar13; *(undefined4 *)(&stack0xffffff84 + iVar12 + iVar2 + iVar3) = *(undefined4 *)((int)RawData + 0x124); *(undefined4 *)((int)&pcStack_80 + iVar12 + iVar2 + iVar3) = 0x806aa62; pTVar8 = vector<>::operator() (*(vector<> **)(&stack0xffffff84 + iVar12 + iVar2 + iVar3), *(int *)((int)local_64 + iVar12 + iVar2 + iVar3 + -0x14)); iVar11 = iVar13 * 0x100; *(char **)((int)local_64 + iVar12 + iVar2 + iVar3 + -0x14) = pTVar8->Text; iVar13 = iVar13 + 1; *(int *)(&stack0xffffff84 + iVar12 + iVar2 + iVar3) = iVar11 + local_38; *(undefined4 *)((int)&pcStack_80 + iVar12 + iVar2 + iVar3) = 0x806aa7c; strcpy(*(char **)(&stack0xffffff84 + iVar12 + iVar2 + iVar3), *(char **)((int)local_64 + iVar12 + iVar2 + iVar3 + -0x14)); } while (iVar13 < local_24); } *(undefined4 *)(&stack0xffffff84 + iVar12 + iVar2 + iVar3) = *(undefined4 *)((int)RawData + 0x50); *(undefined4 *)((int)&pcStack_80 + iVar12 + iVar2 + iVar3) = 0x806a785; pcVar4 = GetBanishmentReason(*(int *)(&stack0xffffff84 + iVar12 + iVar2 + iVar3)); iVar13 = local_38; *(int *)((int)aiStack_50 + iVar12 + iVar2 + iVar3) = iVar5; *(int *)((int)aiStack_50 + iVar12 + iVar2 + iVar3 + 4) = iVar13; *(char_0__256_ **)((int)aiStack_50 + iVar12 + iVar2 + iVar3 + -4) = Texts; *(ulong_0_ **)((int)aiStack_50 + iVar12 + iVar2 + iVar3 + -8) = CharacterIDs; *(ulong_0_ **)((int)local_64 + iVar12 + iVar2 + iVar3 + 8) = TimeStamps; *(int *)((int)local_64 + iVar12 + iVar2 + iVar3 + 4) = local_24; *(undefined4 *)((int)local_64 + iVar12 + iVar2 + iVar3) = *(undefined4 *)((int)RawData + 0x128); iVar13 = Days; *(char **)((int)&stack0xffffff90 + iVar12 + iVar2 + iVar3) = pcVar4; *(int *)((int)&stack0xffffff94 + iVar12 + iVar2 + iVar3) = (int)RawData + 0x58; iVar5 = (int)RawData + 0x22; *(int *)((int)&stack0xffffff8c + iVar12 + iVar2 + iVar3) = iVar5; *(int *)((int)&stack0xffffff98 + iVar12 + iVar2 + iVar3) = iVar13; // WARNING: Load size is inaccurate *(undefined4 *)((int)local_64 + iVar12 + iVar2 + iVar3 + -0x14) = *RawData; *(TQueryManagerConnection **)(&stack0xffffff84 + iVar12 + iVar2 + iVar3) = QueryManagerConnection; *(undefined4 *)((int)&pcStack_80 + iVar12 + iVar2 + iVar3) = 0x806a7e2; iVar13 = TQueryManagerConnection::reportStatement (*(TQueryManagerConnection **)(&stack0xffffff84 + iVar12 + iVar2 + iVar3)); if (iVar13 == 1) { if (*(int *)((int)RawData + 0x54) == 6) { *(char **)((int)local_64 + iVar12 + iVar2 + iVar3 + -0x14) = "A player with this name does not exist. Perhaps he/she has been renamed?"; LAB_0806a966: // WARNING: Load size is inaccurate *(undefined4 *)(&stack0xffffff84 + iVar12 + iVar2 + iVar3) = *RawData; *(undefined4 *)((int)&pcStack_80 + iVar12 + iVar2 + iVar3) = 0x806a970; DirectReply(*(ulong *)(&stack0xffffff84 + iVar12 + iVar2 + iVar3), *(char **)((int)local_64 + iVar12 + iVar2 + iVar3 + -0x14)); } LAB_0806a955: local_1e = '\0'; puVar14 = (ulong *)StatementIDs; } else { puVar14 = (ulong *)StatementIDs; if (iVar13 < 2) { if (iVar13 == 0) { if (*(int *)((int)RawData + 0x54) == 6) { *(int *)((int)&stack0xffffff8c + iVar12 + iVar2 + iVar3) = iVar5; *(char **)((int)local_64 + iVar12 + iVar2 + iVar3 + -0x14) = "Statement of %s reported."; // WARNING: Load size is inaccurate *(undefined4 *)(&stack0xffffff84 + iVar12 + iVar2 + iVar3) = *RawData; *(undefined4 *)((int)&pcStack_80 + iVar12 + iVar2 + iVar3) = 0x806a9ba; DirectReply(*(ulong *)(&stack0xffffff84 + iVar12 + iVar2 + iVar3), *(char **)((int)local_64 + iVar12 + iVar2 + iVar3 + -0x14)); } *(int *)((int)&stack0xffffff90 + iVar12 + iVar2 + iVar3) = iVar5; *(int *)((int)&stack0xffffff8c + iVar12 + iVar2 + iVar3) = (int)RawData + 4; *(undefined **)((int)local_64 + iVar12 + iVar2 + iVar3 + -0x14) = &DAT_080f5d80; *(char **)(&stack0xffffff84 + iVar12 + iVar2 + iVar3) = "banish"; *(undefined4 *)((int)&pcStack_80 + iVar12 + iVar2 + iVar3) = 0x806a99f; Log(*(char **)(&stack0xffffff84 + iVar12 + iVar2 + iVar3), *(char **)((int)local_64 + iVar12 + iVar2 + iVar3 + -0x14)); puVar14 = (ulong *)StatementIDs; } } else if (iVar13 == 2) { if (*(int *)((int)RawData + 0x54) == 6) { *(char **)((int)local_64 + iVar12 + iVar2 + iVar3 + -0x14) = "Statement has already been reported."; goto LAB_0806a966; } goto LAB_0806a955; } } LAB_0806a800: if ((local_1e == '\0') || (*(char *)((int)RawData + 300) == '\0')) goto LAB_0806a710; *puVar14 = *(undefined4 *)((int)RawData + 0x50); puVar14[-1] = 0x806a828; pcVar4 = GetBanishmentReason(*puVar14); puVar14[3] = (int)RawData + 0x40; puVar14[5] = (int)RawData + 0x58; uVar1 = (int)RawData + 0x22; puVar14[4] = (ulong)pcVar4; puVar14[2] = uVar1; // WARNING: Load size is inaccurate puVar14[1] = *RawData; *puVar14 = (ulong)QueryManagerConnection; puVar14[-1] = 0x806a84e; iVar5 = TQueryManagerConnection::banishIPAddress((TQueryManagerConnection *)*puVar14); if (iVar5 == 1) { puVar14[1] = (ulong) "A player with this name does not exist. Perhaps he/she has been renamed?"; } else { if (iVar5 < 2) { if (iVar5 == 0) { puVar14[2] = uVar1; puVar14[1] = (ulong)"IP address of %s banished."; // WARNING: Load size is inaccurate *puVar14 = *RawData; puVar14[-1] = 0x806a89a; DirectReply(*puVar14,(char *)puVar14[1]); *puVar14 = uVar1; puVar14[-1] = 0x806a8a2; sVar6 = strlen((char *)*puVar14); *puVar14 = sVar6 + 1; puVar14[-1] = 0x806a8ab; pvVar7 = operator_new__(*puVar14); puVar14[1] = uVar1; *puVar14 = (ulong)pvVar7; puVar14[-1] = 0x806a8b9; strcpy((char *)*puVar14,(char *)puVar14[1]); if (ReplyPointerWrite - ReplyPointerRead < 100) { local_44 = (longlong)ReplyPointerWrite * 0x51eb851f; local_3c = ReplyPointerWrite / 100; ReplyBuffer[ReplyPointerWrite % 100].ReplyType = REPLY_LOGOUT; ReplyBuffer[ReplyPointerWrite % 100].Data = pvVar7; ReplyPointerWrite = ReplyPointerWrite + 1; } else { *puVar14 = (ulong)&DAT_080f5540; puVar14[-1] = 0x806a940; error((char *)*puVar14); } puVar14[3] = uVar1; puVar14[2] = (int)RawData + 4; puVar14[1] = (ulong)"%s sperrt die IP-Adresse von %s.\n"; *puVar14 = (ulong)"banish"; puVar14[-1] = 0x806a92f; Log((char *)*puVar14,(char *)puVar14[1]); } goto LAB_0806a710; } if (iVar5 != 2) goto LAB_0806a710; puVar14[1] = (ulong)"You may not report a god or gamemaster."; } // WARNING: Load size is inaccurate *puVar14 = *RawData; puVar14[-1] = 0x806a877; DirectReply(*puVar14,(char *)puVar14[1]); LAB_0806a710: *puVar14 = (ulong)RawData; puVar14[-1] = 0x806a718; operator_delete((void *)*puVar14); return; } void ProcessCharacterDeathOrder(void *RawData) { int iVar1; if (RawData != (void *)0x0) { // WARNING: Load size is inaccurate iVar1 = TQueryManagerConnection::logCharacterDeath (QueryManagerConnection,*RawData,*(int *)((int)RawData + 4), *(ulong *)((int)RawData + 8),(char *)((int)RawData + 0xc), *(bool *)((int)RawData + 0x2a),*(time_t *)((int)RawData + 0x2c)); if (iVar1 != 0) { error("ProcessCharacterDeathOrder: Protokollierung fehlgeschlagen.\n"); } operator_delete(RawData); return; } error(&DAT_080f6160); return; } void ProcessAddBuddyOrder(void *RawData) { int iVar1; undefined4 uVar2; undefined4 uVar3; if (RawData != (void *)0x0) { uVar3 = *(undefined4 *)((int)RawData + 4); // WARNING: Load size is inaccurate uVar2 = *RawData; iVar1 = TQueryManagerConnection::addBuddy(QueryManagerConnection); if (iVar1 != 0) { error("ProcessAddBuddyOrder: Aufnahme fehlgeschlagen.\n",uVar2,uVar3); } operator_delete(RawData); return; } error(&DAT_080f61e0); return; } void ProcessRemoveBuddyOrder(void *RawData) { int iVar1; undefined4 uVar2; undefined4 uVar3; if (RawData != (void *)0x0) { uVar3 = *(undefined4 *)((int)RawData + 4); // WARNING: Load size is inaccurate uVar2 = *RawData; iVar1 = TQueryManagerConnection::removeBuddy(QueryManagerConnection); if (iVar1 != 0) { error("ProcessRemoveBuddyOrder: Entfernen fehlgeschlagen.\n",uVar2,uVar3); } operator_delete(RawData); return; } error(&DAT_080f6260); return; } void ProcessDecrementIsOnlineOrder(void *RawData) { int iVar1; iVar1 = TQueryManagerConnection::decrementIsOnline(QueryManagerConnection,(ulong)RawData); if (iVar1 == 0) { return; } error("ProcessDecrementIsOnlineOrder: Verringerung fehlgeschlagen.\n"); return; } // WARNING: Variable defined which should be unmapped: HelpProfession int WriterThreadLoop(void *param_1) { TWriterThreadOrderType TVar1; ulong *RawData; int iVar2; char *pcVar3; ulong uVar4; ulong uVar5; ulong uVar6; ulong *puVar7; char local_2c [4]; char HelpProfession [30]; LAB_0806b310: Semaphore::down(&OrderBufferFull); TVar1 = OrderBuffer[OrderPointerRead % 2000].OrderType; RawData = (ulong *)OrderBuffer[OrderPointerRead % 2000].Data; OrderPointerRead = OrderPointerRead + 1; Semaphore::up(&OrderBufferEmpty); switch(TVar1) { case ORDER_TERMINATE: return 0; case ORDER_LOGOUT: if (RawData != (ulong *)0x0) { pcVar3 = local_2c; GetProfessionName(pcVar3,RawData[2],false,true); if (0 < (int)RawData[4]) { print(); } uVar6 = RawData[4]; puVar7 = RawData + 5; uVar4 = RawData[3]; uVar5 = RawData[1]; iVar2 = TQueryManagerConnection::logoutGame(QueryManagerConnection); if (iVar2 != 0) { error(&DAT_080f5a20,*RawData,uVar5,pcVar3,puVar7,uVar4,uVar6); } LAB_0806b403: operator_delete(RawData); goto LAB_0806b310; } pcVar3 = &DAT_080f5a60; break; case ORDER_PLAYERLIST: ProcessPlayerlistOrder(RawData); goto LAB_0806b310; case ORDER_KILLSTATISTICS: ProcessKillStatisticsOrder(RawData); goto LAB_0806b310; case ORDER_PUNISHMENT: ProcessPunishmentOrder(RawData); goto LAB_0806b310; case ORDER_CHARACTERDEATH: if (RawData != (ulong *)0x0) { uVar6 = RawData[1]; uVar4 = *RawData; iVar2 = TQueryManagerConnection::logCharacterDeath (QueryManagerConnection,uVar4,uVar6,RawData[2],(char *)(RawData + 3), *(bool *)((int)RawData + 0x2a),RawData[0xb]); if (iVar2 != 0) { pcVar3 = "ProcessCharacterDeathOrder: Protokollierung fehlgeschlagen.\n"; LAB_0806b4af: error(pcVar3,uVar4,uVar6); } goto LAB_0806b403; } pcVar3 = &DAT_080f6160; break; case ORDER_ADDBUDDY: if (RawData != (ulong *)0x0) { uVar6 = RawData[1]; uVar4 = *RawData; iVar2 = TQueryManagerConnection::addBuddy(QueryManagerConnection); if (iVar2 != 0) { pcVar3 = "ProcessAddBuddyOrder: Aufnahme fehlgeschlagen.\n"; goto LAB_0806b4af; } goto LAB_0806b403; } pcVar3 = &DAT_080f61e0; break; case ORDER_REMOVEBUDDY: if (RawData != (ulong *)0x0) { uVar6 = RawData[1]; uVar4 = *RawData; iVar2 = TQueryManagerConnection::removeBuddy(QueryManagerConnection); if (iVar2 != 0) { pcVar3 = "ProcessRemoveBuddyOrder: Entfernen fehlgeschlagen.\n"; goto LAB_0806b4af; } goto LAB_0806b403; } pcVar3 = &DAT_080f6260; break; case ORDER_DECREMENTISONLINE: iVar2 = TQueryManagerConnection::decrementIsOnline(QueryManagerConnection,(ulong)RawData); if (iVar2 == 0) goto LAB_0806b310; pcVar3 = "ProcessDecrementIsOnlineOrder: Verringerung fehlgeschlagen.\n"; break; case ORDER_SAVEPLAYERDATA: SavePlayerPoolSlots(); goto LAB_0806b310; default: goto switchD_0806b373_default; } error(pcVar3); goto LAB_0806b310; switchD_0806b373_default: error("WriterThreadLoop: Unbekanntes Kommando %d.\n",TVar1); goto LAB_0806b310; } void ProcessBroadcastReply(void *RawData) { if (RawData != (void *)0x0) { BroadcastMessage(0x15,(char *)RawData); operator_delete__(RawData); return; } error(&DAT_080f6320); return; } void ProcessDirectReply(void *RawData) { TPlayer *pl; TPlayer *pTVar1; if (RawData != (void *)0x0) { // WARNING: Load size is inaccurate pTVar1 = GetPlayer(*RawData); if (pTVar1 != (TPlayer *)0x0) { SendMessage((pTVar1->super_TCreature).Connection,0x16,"%s",(int)RawData + 4); } operator_delete(RawData); return; } error(&DAT_080f6360); return; } void ProcessLogoutReply(void *RawData) { TPlayer *this; TPlayer *pl; Object local_1c [4]; if (RawData == (void *)0x0) { error(&DAT_080f63a0); } else { this = GetPlayer((char *)RawData); if (this != (TPlayer *)0x0) { local_1c[0].ObjectID = (this->super_TCreature).CrObject.ObjectID; GraphicalEffect(local_1c,0xf); TCreature::StartLogout(&this->super_TCreature,true,true); } operator_delete__(RawData); } return; } // WARNING: Unknown calling convention -- yet parameter storage is locked void ProcessWriterThreadReplies(void) { TWriterThreadReplyType TVar1; ulong *Text; TPlayer *pl; TPlayer *pTVar2; void *Data; TWriterThreadReplyType ReplyType; char *Text_00; LAB_0806b6c0: do { while( true ) { if (ReplyPointerRead == ReplyPointerWrite) { return; } TVar1 = ReplyBuffer[ReplyPointerRead % 100].ReplyType; Text = (ulong *)ReplyBuffer[ReplyPointerRead % 100].Data; ReplyPointerRead = ReplyPointerRead + 1; if (TVar1 != REPLY_DIRECT) break; if (Text == (ulong *)0x0) { Text_00 = &DAT_080f6360; LAB_0806b762: error(Text_00); } else { pTVar2 = GetPlayer(*Text); if (pTVar2 != (TPlayer *)0x0) { SendMessage((pTVar2->super_TCreature).Connection,0x16,"%s",Text + 1); } operator_delete(Text); } } if ((int)TVar1 < 2) { if (TVar1 == REPLY_BROADCAST) { if (Text == (ulong *)0x0) { Text_00 = &DAT_080f6320; goto LAB_0806b762; } BroadcastMessage(0x15,(char *)Text); operator_delete__(Text); } else { LAB_0806b783: error(&DAT_080f63e0,TVar1); } goto LAB_0806b6c0; } if (TVar1 != REPLY_LOGOUT) goto LAB_0806b783; ProcessLogoutReply(Text); } while( true ); } // WARNING: Variable defined which should be unmapped: NumberOfAffectedPlayers // WARNING: Unknown calling convention -- yet parameter storage is locked void ClearPlayers(void) { int iVar1; int local_8; int NumberOfAffectedPlayers; iVar1 = TQueryManagerConnection::clearIsOnline(QueryManagerConnection,&local_8); if (iVar1 == 0) { if (local_8 != 0) { error("ClearPlayers: %d Spieler waren als eingeloggt markiert.\n",local_8); } } else { error(&DAT_080f6460); } return; } // WARNING: Unknown calling convention -- yet parameter storage is locked void InitWriter(void) { TQueryManagerConnection *this; int iVar1; undefined4 *puVar2; int *piVar3; int local_1c; int NumberOfAffectedPlayers; int local_14; // try { // try from 0806b846 to 0806b84a has its CatchHandler @ 0806b9f0 this = (TQueryManagerConnection *)operator_new(0x30); local_14 = 0x4000; NumberOfAffectedPlayers = MaxPlayers * 0x42 + 2; piVar3 = &NumberOfAffectedPlayers; if (NumberOfAffectedPlayers < 0x4001) { piVar3 = &local_14; } // try { // try from 0806b87f to 0806b883 has its CatchHandler @ 0806b9c0 TQueryManagerConnection::TQueryManagerConnection(this,*piVar3); QueryManagerConnection = this; if (this->Socket < 0) { puVar2 = (undefined4 *)__cxa_allocate_exception(4); *puVar2 = "cannot connect to query manager"; } else { // try { // try from 0806b8a4 to 0806b9a1 has its CatchHandler @ 0806b9f0 iVar1 = TQueryManagerConnection::clearIsOnline(this,&local_1c); if (iVar1 == 0) { if (local_1c != 0) { error("ClearPlayers: %d Spieler waren als eingeloggt markiert.\n",local_1c); } } else { error(&DAT_080f6460); } ProtocolPointerWrite = 0; ProtocolPointerRead = 0; ProtocolThread = StartThread(ProtocolThreadLoop,(void *)0x0,false); if (ProtocolThread == 0) { puVar2 = (undefined4 *)__cxa_allocate_exception(4); *puVar2 = "cannot start protocol thread"; } else { OrderPointerWrite = 0; OrderPointerRead = 0; ReplyPointerWrite = 0; ReplyPointerRead = 0; WriterThread = StartThread(WriterThreadLoop,(void *)0x0,false); if (WriterThread != 0) { return; } puVar2 = (undefined4 *)__cxa_allocate_exception(4); *puVar2 = "cannot start writer thread"; } } // WARNING: Subroutine does not return __cxa_throw(puVar2,char_const*::typeinfo,0); } // WARNING: Unknown calling convention -- yet parameter storage is locked void AbortWriter(void) { if (WriterThread != 0) { WriterThread = 0; pthread_cancel(0); Semaphore::up(&OrderBufferEmpty); } return; } // WARNING: Unknown calling convention -- yet parameter storage is locked void ExitWriter(void) { TQueryManagerConnection *pTVar1; undefined *in_stack_ffffffe8; if (ProtocolThread != 0) { in_stack_ffffffe8 = &DAT_080ef15d; InsertProtocolOrder("",""); JoinThread(ProtocolThread); ProtocolThread = 0; } if (WriterThread != 0) { if (1999 < OrderPointerWrite - OrderPointerRead) { error(&DAT_080f5500); } Semaphore::down(&OrderBufferEmpty); OrderBuffer[OrderPointerWrite % 2000].OrderType = ORDER_TERMINATE; OrderBuffer[OrderPointerWrite % 2000].Data = (void *)0x0; OrderPointerWrite = OrderPointerWrite + 1; Semaphore::up(&OrderBufferFull); JoinThread(WriterThread); WriterThread = 0; } pTVar1 = QueryManagerConnection; if (QueryManagerConnection != (TQueryManagerConnection *)0x0) { TQueryManagerConnection::~TQueryManagerConnection (QueryManagerConnection,(int)in_stack_ffffffe8); operator_delete(pTVar1); } return; } void __tcf_0(void *param_1) { int in_stack_00000008; Semaphore::~Semaphore(&ProtocolMutex,in_stack_00000008); return; } void __tcf_1(void *param_1) { int in_stack_00000008; Semaphore::~Semaphore(&ProtocolBufferEmpty,in_stack_00000008); return; } void __tcf_2(void *param_1) { int in_stack_00000008; Semaphore::~Semaphore(&ProtocolBufferFull,in_stack_00000008); return; } void __tcf_3(void *param_1) { int in_stack_00000008; Semaphore::~Semaphore(&OrderBufferEmpty,in_stack_00000008); return; } void __tcf_4(void *param_1) { int in_stack_00000008; Semaphore::~Semaphore(&OrderBufferFull,in_stack_00000008); return; } // WARNING: Unknown calling convention -- yet parameter storage is locked void _GLOBAL__I__Z12InitProtocolv(void) { __static_initialization_and_destruction_0(1,0xffff); return; } void __static_initialization_and_destruction_0(int __initialize_p,int __priority) { if ((__priority == 0xffff) && (__initialize_p == 1)) { NONE.ObjectID = 0; } return; } // DWARF original prototype: void load(TOutfit * this, TReadScriptFile * Script) void __thiscall TOutfit::load(TOutfit *this,TReadScriptFile *Script) { int iVar1; anon_union_4_2_730cd3ca_for_TOutfit_2 *paVar2; // try { // try from 0806c05d to 0806c0af has its CatchHandler @ 0806c0b7 TReadScriptFile::readSymbol(Script,'('); iVar1 = TReadScriptFile::readNumber(Script); this->OutfitID = iVar1; TReadScriptFile::readSymbol(Script,','); if (this->OutfitID == 0) { iVar1 = TReadScriptFile::readNumber(Script); (this->field_1).ObjectType = (ushort)iVar1; } else { paVar2 = (anon_union_4_2_730cd3ca_for_TOutfit_2 *)TReadScriptFile::readBytesequence(Script); this->field_1 = *paVar2; } TReadScriptFile::readSymbol(Script,')'); return; } // DWARF original prototype: void save(TOutfit * this, TWriteScriptFile * Script) void __thiscall TOutfit::save(TOutfit *this,TWriteScriptFile *Script) { // try { // try from 0806c0ed to 0806c156 has its CatchHandler @ 0806c160 TWriteScriptFile::writeText(Script,"("); TWriteScriptFile::writeNumber(Script,this->OutfitID); TWriteScriptFile::writeText(Script,","); if (this->OutfitID == 0) { TWriteScriptFile::writeNumber(Script,(uint)(this->field_1).ObjectType); } else { TWriteScriptFile::writeBytesequence(Script,(this->field_1).Colors,4); } TWriteScriptFile::writeText(Script,")"); return; } // WARNING: Unknown calling convention -- yet parameter storage is locked void PlayerDataPath(void) { uint in_stack_00000004; char *in_stack_0000000c; sprintf(in_stack_0000000c,"%s/%02ld/%ld.%s",USERPATH,in_stack_00000004 % 100); return; } bool PlayerDataExists(ulong CharacterID) { bool bVar1; char local_100c [4]; char FileName [4096]; sprintf(local_100c,"%s/%02ld/%ld.%s",USERPATH,CharacterID % 100,CharacterID,&DAT_080f6560); bVar1 = FileExists(local_100c); return bVar1; } // WARNING: Removing unreachable block (ram,0x0806d081) // WARNING: Removing unreachable block (ram,0x0806d0da) // WARNING: Removing unreachable block (ram,0x0806d08b) // WARNING: Removing unreachable block (ram,0x0806d095) // WARNING: Removing unreachable block (ram,0x0806d0c7) // WARNING: Removing unreachable block (ram,0x0806d0a0) bool LoadPlayerData(TPlayerData *Slot) { bool bVar1; char cVar2; int SkillNr; int iVar3; uint uVar4; int iVar5; uchar *puVar6; anon_union_4_2_730cd3ca_for_TOutfit_2 *paVar7; int DepotNr; int SkillNr_2; int *piVar8; char *pcVar9; undefined1 uVar10; char *pcVar11; undefined1 auStack_500c [3]; bool FileOk; TReadScriptFile Script; undefined1 local_102c [4]; TDynamicWriteBuffer HelpBuffer; char FileName [4096]; if (Slot == (TPlayerData *)0x0) { pcVar11 = "LoadPlayerData: Slot ist NULL.\n"; } else { uVar4 = Slot->CharacterID; if (uVar4 != 0) { piVar8 = &HelpBuffer.super_TWriteBuffer.Position; pcVar11 = USERPATH; sprintf((char *)piVar8,"%s/%02ld/%ld.%s",USERPATH,uVar4 % 100,uVar4,&DAT_080f6560); bVar1 = FileExists((char *)piVar8); if (!bVar1) { Slot->Race = 1; iVar3 = 0; Slot->Profession = 0; (Slot->OriginalOutfit).OutfitID = 0; (Slot->OriginalOutfit).field_1 = (anon_union_4_2_730cd3ca_for_TOutfit_2)0x0; (Slot->CurrentOutfit).OutfitID = 0; (Slot->CurrentOutfit).field_1 = (anon_union_4_2_730cd3ca_for_TOutfit_2)0x0; Slot->LastLoginTime = 0; Slot->LastLogoutTime = 0; Slot->startx = 0; Slot->starty = 0; Slot->startz = 0; Slot->posx = 0; Slot->posy = 0; Slot->posz = 0; Slot->PlayerkillerEnd = 0; do { Slot->Minimum[iVar3] = -0x80000000; iVar3 = iVar3 + 1; } while (iVar3 < 0x19); puVar6 = Slot->SpellList; for (iVar3 = 0x40; iVar3 != 0; iVar3 = iVar3 + -1) { puVar6[0] = '\0'; puVar6[1] = '\0'; puVar6[2] = '\0'; puVar6[3] = '\0'; puVar6 = puVar6 + 4; } uVar4 = 2000; piVar8 = Slot->QuestValues; if (((uint)piVar8 & 4) != 0) { piVar8 = Slot->QuestValues + 1; uVar4 = 0x7cc; Slot->QuestValues[0] = 0; } for (uVar4 = uVar4 >> 2; uVar4 != 0; uVar4 = uVar4 - 1) { *piVar8 = 0; piVar8 = piVar8 + 1; } Slot->MurderTimestamps[0] = 0; Slot->MurderTimestamps[1] = 0; Slot->MurderTimestamps[2] = 0; Slot->MurderTimestamps[3] = 0; Slot->MurderTimestamps[4] = 0; Slot->MurderTimestamps[5] = 0; Slot->MurderTimestamps[6] = 0; Slot->MurderTimestamps[8] = 0; Slot->MurderTimestamps[9] = 0; Slot->MurderTimestamps[10] = 0; Slot->MurderTimestamps[0xb] = 0; Slot->MurderTimestamps[0xc] = 0; Slot->MurderTimestamps[7] = 0; Slot->MurderTimestamps[0xd] = 0; Slot->MurderTimestamps[0xe] = 0; Slot->MurderTimestamps[0xf] = 0; Slot->MurderTimestamps[0x10] = 0; Slot->InventorySize = 0; iVar3 = 0; Slot->MurderTimestamps[0x11] = 0; Slot->MurderTimestamps[0x12] = 0; Slot->MurderTimestamps[0x13] = 0; Slot->Inventory = (uchar *)0x0; do { Slot->Depot[iVar3] = (uchar *)0x0; Slot->DepotSize[iVar3] = 0; iVar3 = iVar3 + 1; } while (iVar3 < 9); return true; } TDynamicWriteBuffer::TDynamicWriteBuffer((TDynamicWriteBuffer *)local_102c,0x4000); // try { // try from 0806c499 to 0806c49d has its CatchHandler @ 0806d1cf TReadScriptFile::TReadScriptFile((TReadScriptFile *)auStack_500c); // try { // try from 0806c4ab to 0806c5b3 has its CatchHandler @ 0806d1c6 TReadScriptFile::open((TReadScriptFile *)auStack_500c,(char *)piVar8,(int)pcVar11); TReadScriptFile::readIdentifier((TReadScriptFile *)auStack_500c); TReadScriptFile::readSymbol((TReadScriptFile *)auStack_500c,'='); TReadScriptFile::readNumber((TReadScriptFile *)auStack_500c); TReadScriptFile::readIdentifier((TReadScriptFile *)auStack_500c); TReadScriptFile::readSymbol((TReadScriptFile *)auStack_500c,'='); pcVar11 = TReadScriptFile::readString((TReadScriptFile *)auStack_500c); strcpy(Slot->Name,pcVar11); TReadScriptFile::readIdentifier((TReadScriptFile *)auStack_500c); TReadScriptFile::readSymbol((TReadScriptFile *)auStack_500c,'='); iVar3 = TReadScriptFile::readNumber((TReadScriptFile *)auStack_500c); Slot->Race = iVar3; TReadScriptFile::readIdentifier((TReadScriptFile *)auStack_500c); TReadScriptFile::readSymbol((TReadScriptFile *)auStack_500c,'='); iVar3 = TReadScriptFile::readNumber((TReadScriptFile *)auStack_500c); Slot->Profession = iVar3; TReadScriptFile::readIdentifier((TReadScriptFile *)auStack_500c); TReadScriptFile::readSymbol((TReadScriptFile *)auStack_500c,'='); // try { // try from 0806c5c8 to 0806c626 has its CatchHandler @ 0806d12c TReadScriptFile::readSymbol((TReadScriptFile *)auStack_500c,'('); iVar3 = TReadScriptFile::readNumber((TReadScriptFile *)auStack_500c); (Slot->OriginalOutfit).OutfitID = iVar3; TReadScriptFile::readSymbol((TReadScriptFile *)auStack_500c,','); if ((Slot->OriginalOutfit).OutfitID == 0) { iVar3 = TReadScriptFile::readNumber((TReadScriptFile *)auStack_500c); (Slot->OriginalOutfit).field_1.ObjectType = (ushort)iVar3; } else { // try { // try from 0806d10d to 0806d111 has its CatchHandler @ 0806d12c paVar7 = (anon_union_4_2_730cd3ca_for_TOutfit_2 *) TReadScriptFile::readBytesequence((TReadScriptFile *)auStack_500c); (Slot->OriginalOutfit).field_1 = *paVar7; } TReadScriptFile::readSymbol((TReadScriptFile *)auStack_500c,')'); // try { // try from 0806c630 to 0806c64a has its CatchHandler @ 0806d1c6 TReadScriptFile::readIdentifier((TReadScriptFile *)auStack_500c); TReadScriptFile::readSymbol((TReadScriptFile *)auStack_500c,'='); // try { // try from 0806c65f to 0806c6bd has its CatchHandler @ 0806d12c TReadScriptFile::readSymbol((TReadScriptFile *)auStack_500c,'('); iVar3 = TReadScriptFile::readNumber((TReadScriptFile *)auStack_500c); (Slot->CurrentOutfit).OutfitID = iVar3; TReadScriptFile::readSymbol((TReadScriptFile *)auStack_500c,','); if ((Slot->CurrentOutfit).OutfitID == 0) { iVar3 = TReadScriptFile::readNumber((TReadScriptFile *)auStack_500c); (Slot->CurrentOutfit).field_1.ObjectType = (ushort)iVar3; } else { // try { // try from 0806d0f5 to 0806d0f9 has its CatchHandler @ 0806d12c paVar7 = (anon_union_4_2_730cd3ca_for_TOutfit_2 *) TReadScriptFile::readBytesequence((TReadScriptFile *)auStack_500c); (Slot->CurrentOutfit).field_1 = *paVar7; } TReadScriptFile::readSymbol((TReadScriptFile *)auStack_500c,')'); // try { // try from 0806c6c7 to 0806d062 has its CatchHandler @ 0806d1c6 TReadScriptFile::readIdentifier((TReadScriptFile *)auStack_500c); TReadScriptFile::readSymbol((TReadScriptFile *)auStack_500c,'='); iVar3 = TReadScriptFile::readNumber((TReadScriptFile *)auStack_500c); Slot->LastLoginTime = iVar3; TReadScriptFile::readIdentifier((TReadScriptFile *)auStack_500c); TReadScriptFile::readSymbol((TReadScriptFile *)auStack_500c,'='); iVar3 = TReadScriptFile::readNumber((TReadScriptFile *)auStack_500c); Slot->LastLogoutTime = iVar3; TReadScriptFile::readIdentifier((TReadScriptFile *)auStack_500c); TReadScriptFile::readSymbol((TReadScriptFile *)auStack_500c,'='); TReadScriptFile::readCoordinate((TReadScriptFile *)auStack_500c); TReadScriptFile::readIdentifier((TReadScriptFile *)auStack_500c); TReadScriptFile::readSymbol((TReadScriptFile *)auStack_500c,'='); TReadScriptFile::readCoordinate((TReadScriptFile *)auStack_500c); TReadScriptFile::readIdentifier((TReadScriptFile *)auStack_500c); TReadScriptFile::readSymbol((TReadScriptFile *)auStack_500c,'='); iVar3 = TReadScriptFile::readNumber((TReadScriptFile *)auStack_500c); Slot->PlayerkillerEnd = iVar3; iVar3 = 0; do { Slot->Minimum[iVar3] = -0x80000000; iVar3 = iVar3 + 1; uVar10 = iVar3 == 0x18; } while (iVar3 < 0x19); do { TReadScriptFile::readIdentifier((TReadScriptFile *)auStack_500c); pcVar11 = TReadScriptFile::getIdentifier((TReadScriptFile *)auStack_500c); iVar3 = 6; pcVar9 = "skill"; do { if (iVar3 == 0) break; iVar3 = iVar3 + -1; uVar10 = *pcVar11 == *pcVar9; pcVar11 = pcVar11 + 1; pcVar9 = pcVar9 + 1; } while ((bool)uVar10); if (!(bool)uVar10) goto LAB_0806cb0a; TReadScriptFile::readSymbol((TReadScriptFile *)auStack_500c,'='); TReadScriptFile::readSymbol((TReadScriptFile *)auStack_500c,'('); iVar3 = TReadScriptFile::readNumber((TReadScriptFile *)auStack_500c); bVar1 = false; if ((-1 < iVar3) && (iVar3 < 0x19)) { bVar1 = true; } uVar10 = !bVar1; if ((bool)uVar10) { TReadScriptFile::error((TReadScriptFile *)auStack_500c,"illegal skill number"); } TReadScriptFile::readSymbol((TReadScriptFile *)auStack_500c,','); iVar5 = TReadScriptFile::readNumber((TReadScriptFile *)auStack_500c); Slot->Actual[iVar3] = iVar5; TReadScriptFile::readSymbol((TReadScriptFile *)auStack_500c,','); iVar5 = TReadScriptFile::readNumber((TReadScriptFile *)auStack_500c); Slot->Maximum[iVar3] = iVar5; TReadScriptFile::readSymbol((TReadScriptFile *)auStack_500c,','); iVar5 = TReadScriptFile::readNumber((TReadScriptFile *)auStack_500c); Slot->Minimum[iVar3] = iVar5; TReadScriptFile::readSymbol((TReadScriptFile *)auStack_500c,','); iVar5 = TReadScriptFile::readNumber((TReadScriptFile *)auStack_500c); Slot->DeltaAct[iVar3] = iVar5; TReadScriptFile::readSymbol((TReadScriptFile *)auStack_500c,','); iVar5 = TReadScriptFile::readNumber((TReadScriptFile *)auStack_500c); Slot->MagicDeltaAct[iVar3] = iVar5; TReadScriptFile::readSymbol((TReadScriptFile *)auStack_500c,','); iVar5 = TReadScriptFile::readNumber((TReadScriptFile *)auStack_500c); Slot->Cycle[iVar3] = iVar5; TReadScriptFile::readSymbol((TReadScriptFile *)auStack_500c,','); iVar5 = TReadScriptFile::readNumber((TReadScriptFile *)auStack_500c); Slot->MaxCycle[iVar3] = iVar5; TReadScriptFile::readSymbol((TReadScriptFile *)auStack_500c,','); iVar5 = TReadScriptFile::readNumber((TReadScriptFile *)auStack_500c); Slot->Count[iVar3] = iVar5; TReadScriptFile::readSymbol((TReadScriptFile *)auStack_500c,','); iVar5 = TReadScriptFile::readNumber((TReadScriptFile *)auStack_500c); Slot->MaxCount[iVar3] = iVar5; TReadScriptFile::readSymbol((TReadScriptFile *)auStack_500c,','); iVar5 = TReadScriptFile::readNumber((TReadScriptFile *)auStack_500c); Slot->AddLevel[iVar3] = iVar5; TReadScriptFile::readSymbol((TReadScriptFile *)auStack_500c,','); iVar5 = TReadScriptFile::readNumber((TReadScriptFile *)auStack_500c); Slot->Experience[iVar3] = iVar5; TReadScriptFile::readSymbol((TReadScriptFile *)auStack_500c,','); iVar5 = TReadScriptFile::readNumber((TReadScriptFile *)auStack_500c); Slot->FactorPercent[iVar3] = iVar5; TReadScriptFile::readSymbol((TReadScriptFile *)auStack_500c,','); iVar5 = TReadScriptFile::readNumber((TReadScriptFile *)auStack_500c); Slot->NextLevel[iVar3] = iVar5; TReadScriptFile::readSymbol((TReadScriptFile *)auStack_500c,','); iVar5 = TReadScriptFile::readNumber((TReadScriptFile *)auStack_500c); Slot->Delta[iVar3] = iVar5; TReadScriptFile::readSymbol((TReadScriptFile *)auStack_500c,')'); } while( true ); } pcVar11 = &DAT_080f6720; } error(pcVar11); return false; LAB_0806cb0a: TReadScriptFile::readSymbol((TReadScriptFile *)auStack_500c,'='); TReadScriptFile::readSymbol((TReadScriptFile *)auStack_500c,'{'); LAB_0806cb3b: TReadScriptFile::nextToken((TReadScriptFile *)auStack_500c); if (_auStack_500c != SPECIAL) goto LAB_0806cb7f; cVar2 = TReadScriptFile::getSpecial((TReadScriptFile *)auStack_500c); if (cVar2 != '}') goto code_r0x0806cb64; TReadScriptFile::readIdentifier((TReadScriptFile *)auStack_500c); TReadScriptFile::readSymbol((TReadScriptFile *)auStack_500c,'='); TReadScriptFile::readSymbol((TReadScriptFile *)auStack_500c,'{'); while( true ) { TReadScriptFile::nextToken((TReadScriptFile *)auStack_500c); if (_auStack_500c != SPECIAL) goto LAB_0806cc5a; cVar2 = TReadScriptFile::getSpecial((TReadScriptFile *)auStack_500c); if (cVar2 == '}') break; if (_auStack_500c != SPECIAL) goto LAB_0806cc5a; cVar2 = TReadScriptFile::getSpecial((TReadScriptFile *)auStack_500c); if (cVar2 != ',') { if ((_auStack_500c != SPECIAL) || (cVar2 = TReadScriptFile::getSpecial((TReadScriptFile *)auStack_500c), cVar2 != '(')) { LAB_0806cc5a: TReadScriptFile::error((TReadScriptFile *)auStack_500c,"\'(\' expected"); } iVar3 = TReadScriptFile::readNumber((TReadScriptFile *)auStack_500c); bVar1 = false; if ((-1 < iVar3) && (iVar3 < 500)) { bVar1 = true; } if (!bVar1) { TReadScriptFile::error((TReadScriptFile *)auStack_500c,"illegal quest number"); } TReadScriptFile::readSymbol((TReadScriptFile *)auStack_500c,','); iVar5 = TReadScriptFile::readNumber((TReadScriptFile *)auStack_500c); Slot->QuestValues[iVar3] = iVar5; TReadScriptFile::readSymbol((TReadScriptFile *)auStack_500c,')'); } } TReadScriptFile::readIdentifier((TReadScriptFile *)auStack_500c); TReadScriptFile::readSymbol((TReadScriptFile *)auStack_500c,'='); TReadScriptFile::readSymbol((TReadScriptFile *)auStack_500c,'{'); LAB_0806cd45: TReadScriptFile::nextToken((TReadScriptFile *)auStack_500c); if (_auStack_500c != SPECIAL) goto LAB_0806cd89; cVar2 = TReadScriptFile::getSpecial((TReadScriptFile *)auStack_500c); if (cVar2 != '}') goto code_r0x0806cd6e; TReadScriptFile::readIdentifier((TReadScriptFile *)auStack_500c); TReadScriptFile::readSymbol((TReadScriptFile *)auStack_500c,'='); TReadScriptFile::readSymbol((TReadScriptFile *)auStack_500c,'{'); HelpBuffer.super_TWriteBuffer.Size = 0; LAB_0806cdfa: TReadScriptFile::nextToken((TReadScriptFile *)auStack_500c); if (_auStack_500c != SPECIAL) goto LAB_0806ce42; cVar2 = TReadScriptFile::getSpecial((TReadScriptFile *)auStack_500c); if (cVar2 != '}') goto code_r0x0806ce27; TDynamicWriteBuffer::writeByte((TDynamicWriteBuffer *)local_102c,0xff); Slot->InventorySize = HelpBuffer.super_TWriteBuffer.Size; puVar6 = (uchar *)operator_new__(HelpBuffer.super_TWriteBuffer.Size); Slot->Inventory = puVar6; memcpy(puVar6,HelpBuffer.super_TWriteBuffer.super_TWriteStream._vptr_TWriteStream, Slot->InventorySize); TReadScriptFile::readIdentifier((TReadScriptFile *)auStack_500c); TReadScriptFile::readSymbol((TReadScriptFile *)auStack_500c,'='); pcVar11 = (char *)0x7b; TReadScriptFile::readSymbol((TReadScriptFile *)auStack_500c,'{'); iVar3 = 0; do { Slot->Depot[iVar3] = (uchar *)0x0; iVar3 = iVar3 + 1; } while (iVar3 < 9); LAB_0806cf45: TReadScriptFile::nextToken((TReadScriptFile *)auStack_500c); if (_auStack_500c == SPECIAL) goto code_r0x0806cf5c; goto LAB_0806cf8d; code_r0x0806cb64: if ((_auStack_500c != SPECIAL) || (cVar2 = TReadScriptFile::getSpecial((TReadScriptFile *)auStack_500c), cVar2 != ',')) { LAB_0806cb7f: iVar3 = TReadScriptFile::getNumber((TReadScriptFile *)auStack_500c); bVar1 = false; if ((-1 < iVar3) && (iVar3 < 0x100)) { bVar1 = true; } if (!bVar1) { TReadScriptFile::error((TReadScriptFile *)auStack_500c,"illegal spell number"); } Slot->SpellList[iVar3] = '\x01'; } goto LAB_0806cb3b; code_r0x0806cd6e: if ((_auStack_500c != SPECIAL) || (cVar2 = TReadScriptFile::getSpecial((TReadScriptFile *)auStack_500c), cVar2 != ',')) { LAB_0806cd89: iVar3 = 1; do { Slot->MurderTimestamps[iVar3 + -1] = Slot->MurderTimestamps[iVar3]; iVar3 = iVar3 + 1; } while (iVar3 < 0x14); iVar3 = TReadScriptFile::getNumber((TReadScriptFile *)auStack_500c); Slot->MurderTimestamps[0x13] = iVar3; } goto LAB_0806cd45; code_r0x0806ce27: if ((_auStack_500c != SPECIAL) || (cVar2 = TReadScriptFile::getSpecial((TReadScriptFile *)auStack_500c), cVar2 != ',')) { LAB_0806ce42: iVar3 = TReadScriptFile::getNumber((TReadScriptFile *)auStack_500c); TDynamicWriteBuffer::writeByte((TDynamicWriteBuffer *)local_102c,(uchar)iVar3); TReadScriptFile::readIdentifier((TReadScriptFile *)auStack_500c); TReadScriptFile::readSymbol((TReadScriptFile *)auStack_500c,'='); LoadObjects((TReadScriptFile *)auStack_500c,(TWriteStream *)local_102c,false); } goto LAB_0806cdfa; code_r0x0806cf5c: cVar2 = TReadScriptFile::getSpecial((TReadScriptFile *)auStack_500c); if (cVar2 == '}') { TReadScriptFile::nextToken((TReadScriptFile *)auStack_500c); if (_auStack_500c != ENDOFFILE) { pcVar11 = "end of file expected"; TReadScriptFile::error((TReadScriptFile *)auStack_500c,"end of file expected"); } TReadScriptFile::close((TReadScriptFile *)auStack_500c,(int)pcVar11); // try { // try from 0806d073 to 0806d077 has its CatchHandler @ 0806d1cf TReadScriptFile::~TReadScriptFile((TReadScriptFile *)auStack_500c,(int)pcVar11); TDynamicWriteBuffer::~TDynamicWriteBuffer((TDynamicWriteBuffer *)local_102c,(int)pcVar11); return true; } if ((_auStack_500c != SPECIAL) || (cVar2 = TReadScriptFile::getSpecial((TReadScriptFile *)auStack_500c), cVar2 != ',')) { LAB_0806cf8d: iVar3 = TReadScriptFile::getNumber((TReadScriptFile *)auStack_500c); TReadScriptFile::readIdentifier((TReadScriptFile *)auStack_500c); TReadScriptFile::readSymbol((TReadScriptFile *)auStack_500c,'='); HelpBuffer.super_TWriteBuffer.Size = 0; LoadObjects((TReadScriptFile *)auStack_500c,(TWriteStream *)local_102c,false); Slot->DepotSize[iVar3] = HelpBuffer.super_TWriteBuffer.Size; puVar6 = (uchar *)operator_new__(HelpBuffer.super_TWriteBuffer.Size); Slot->Depot[iVar3] = puVar6; pcVar11 = (char *)HelpBuffer.super_TWriteBuffer.super_TWriteStream; memcpy(puVar6,HelpBuffer.super_TWriteBuffer.super_TWriteStream._vptr_TWriteStream, Slot->DepotSize[iVar3]); } goto LAB_0806cf45; } void SavePlayerData(TPlayerData *Slot) { uint uVar1; bool bVar2; bool FirstSpell; byte bVar3; time_t tVar4; int Number; int SpellNr; int *piVar5; int Limitation; int iVar6; char *pcVar7; undefined *__fd; undefined1 local_203c; bool FirstDepot; bool FirstPosition; bool FirstMurder; TReadBuffer Buffer; TWriteScriptFile Script; char local_101c [4]; char FileName [4096]; if (Slot == (TPlayerData *)0x0) { pcVar7 = "SavePlayerData: Slot ist NULL.\n"; } else { uVar1 = Slot->CharacterID; if (uVar1 != 0) { pcVar7 = USERPATH; sprintf(local_101c,"%s/%02ld/%ld.%s",USERPATH,uVar1 % 100,uVar1,&DAT_080f6560); // try { // try from 0806d29e to 0806d2a2 has its CatchHandler @ 0806de36 TWriteScriptFile::TWriteScriptFile((TWriteScriptFile *)&Buffer.Position); // try { // try from 0806d2b6 to 0806d3b6 has its CatchHandler @ 0806de30 TWriteScriptFile::open((TWriteScriptFile *)&Buffer.Position,local_101c,(int)pcVar7); TWriteScriptFile::writeText((TWriteScriptFile *)&Buffer.Position,"ID = "); TWriteScriptFile::writeNumber((TWriteScriptFile *)&Buffer.Position,Slot->CharacterID); TWriteScriptFile::writeLn((TWriteScriptFile *)&Buffer.Position); TWriteScriptFile::writeText((TWriteScriptFile *)&Buffer.Position,"Name = "); TWriteScriptFile::writeString((TWriteScriptFile *)&Buffer.Position,Slot->Name); TWriteScriptFile::writeLn((TWriteScriptFile *)&Buffer.Position); TWriteScriptFile::writeText((TWriteScriptFile *)&Buffer.Position,"Race = "); TWriteScriptFile::writeNumber((TWriteScriptFile *)&Buffer.Position,Slot->Race); TWriteScriptFile::writeLn((TWriteScriptFile *)&Buffer.Position); TWriteScriptFile::writeText((TWriteScriptFile *)&Buffer.Position,"Profession = "); TWriteScriptFile::writeNumber((TWriteScriptFile *)&Buffer.Position,Slot->Profession); TWriteScriptFile::writeLn((TWriteScriptFile *)&Buffer.Position); TWriteScriptFile::writeText((TWriteScriptFile *)&Buffer.Position,"OriginalOutfit = "); // try { // try from 0806d3cb to 0806d431 has its CatchHandler @ 0806ddc3 TWriteScriptFile::writeText((TWriteScriptFile *)&Buffer.Position,"("); TWriteScriptFile::writeNumber ((TWriteScriptFile *)&Buffer.Position,(Slot->OriginalOutfit).OutfitID); TWriteScriptFile::writeText((TWriteScriptFile *)&Buffer.Position,","); if ((Slot->OriginalOutfit).OutfitID == 0) { TWriteScriptFile::writeNumber ((TWriteScriptFile *)&Buffer.Position, (uint)(Slot->OriginalOutfit).field_1.ObjectType); } else { // try { // try from 0806ddad to 0806ddb1 has its CatchHandler @ 0806ddc3 TWriteScriptFile::writeBytesequence ((TWriteScriptFile *)&Buffer.Position, (Slot->OriginalOutfit).field_1.Colors,4); } TWriteScriptFile::writeText((TWriteScriptFile *)&Buffer.Position,")"); // try { // try from 0806d43b to 0806d455 has its CatchHandler @ 0806de30 TWriteScriptFile::writeLn((TWriteScriptFile *)&Buffer.Position); TWriteScriptFile::writeText((TWriteScriptFile *)&Buffer.Position,"CurrentOutfit = "); // try { // try from 0806d46a to 0806d4d0 has its CatchHandler @ 0806ddc3 TWriteScriptFile::writeText((TWriteScriptFile *)&Buffer.Position,"("); TWriteScriptFile::writeNumber ((TWriteScriptFile *)&Buffer.Position,(Slot->CurrentOutfit).OutfitID); TWriteScriptFile::writeText((TWriteScriptFile *)&Buffer.Position,","); if ((Slot->CurrentOutfit).OutfitID == 0) { TWriteScriptFile::writeNumber ((TWriteScriptFile *)&Buffer.Position, (uint)(Slot->CurrentOutfit).field_1.ObjectType); } else { // try { // try from 0806dd8b to 0806dd8f has its CatchHandler @ 0806ddc3 TWriteScriptFile::writeBytesequence ((TWriteScriptFile *)&Buffer.Position,(Slot->CurrentOutfit).field_1.Colors ,4); } TWriteScriptFile::writeText((TWriteScriptFile *)&Buffer.Position,")"); // try { // try from 0806d4da to 0806dd20 has its CatchHandler @ 0806de30 TWriteScriptFile::writeLn((TWriteScriptFile *)&Buffer.Position); TWriteScriptFile::writeText((TWriteScriptFile *)&Buffer.Position,"LastLogin = "); TWriteScriptFile::writeNumber((TWriteScriptFile *)&Buffer.Position,Slot->LastLoginTime); TWriteScriptFile::writeLn((TWriteScriptFile *)&Buffer.Position); TWriteScriptFile::writeText((TWriteScriptFile *)&Buffer.Position,"LastLogout = "); TWriteScriptFile::writeNumber((TWriteScriptFile *)&Buffer.Position,Slot->LastLogoutTime) ; TWriteScriptFile::writeLn((TWriteScriptFile *)&Buffer.Position); TWriteScriptFile::writeText((TWriteScriptFile *)&Buffer.Position,"StartPosition = "); TWriteScriptFile::writeCoordinate ((TWriteScriptFile *)&Buffer.Position,Slot->startx,Slot->starty,Slot->startz); TWriteScriptFile::writeLn((TWriteScriptFile *)&Buffer.Position); TWriteScriptFile::writeText((TWriteScriptFile *)&Buffer.Position,"CurrentPosition = "); TWriteScriptFile::writeCoordinate ((TWriteScriptFile *)&Buffer.Position,Slot->posx,Slot->posy,Slot->posz); TWriteScriptFile::writeLn((TWriteScriptFile *)&Buffer.Position); TWriteScriptFile::writeText((TWriteScriptFile *)&Buffer.Position,"PlayerkillerEnd = "); TWriteScriptFile::writeNumber ((TWriteScriptFile *)&Buffer.Position,Slot->PlayerkillerEnd); TWriteScriptFile::writeLn((TWriteScriptFile *)&Buffer.Position); TWriteScriptFile::writeLn((TWriteScriptFile *)&Buffer.Position); iVar6 = 0; piVar5 = Slot->Delta; do { if (piVar5[-0x113] != -0x80000000) { TWriteScriptFile::writeText((TWriteScriptFile *)&Buffer.Position,"Skill = ("); TWriteScriptFile::writeNumber((TWriteScriptFile *)&Buffer.Position,iVar6); TWriteScriptFile::writeText((TWriteScriptFile *)&Buffer.Position,","); TWriteScriptFile::writeNumber ((TWriteScriptFile *)&Buffer.Position,piVar5[-0x145]); TWriteScriptFile::writeText((TWriteScriptFile *)&Buffer.Position,","); TWriteScriptFile::writeNumber((TWriteScriptFile *)&Buffer.Position,piVar5[-300]) ; TWriteScriptFile::writeText((TWriteScriptFile *)&Buffer.Position,","); TWriteScriptFile::writeNumber ((TWriteScriptFile *)&Buffer.Position,piVar5[-0x113]); TWriteScriptFile::writeText((TWriteScriptFile *)&Buffer.Position,","); TWriteScriptFile::writeNumber ((TWriteScriptFile *)&Buffer.Position,piVar5[-0xfa]); TWriteScriptFile::writeText((TWriteScriptFile *)&Buffer.Position,","); TWriteScriptFile::writeNumber ((TWriteScriptFile *)&Buffer.Position,piVar5[-0xe1]); TWriteScriptFile::writeText((TWriteScriptFile *)&Buffer.Position,","); TWriteScriptFile::writeNumber((TWriteScriptFile *)&Buffer.Position,piVar5[-200]) ; TWriteScriptFile::writeText((TWriteScriptFile *)&Buffer.Position,","); TWriteScriptFile::writeNumber ((TWriteScriptFile *)&Buffer.Position,piVar5[-0xaf]); TWriteScriptFile::writeText((TWriteScriptFile *)&Buffer.Position,","); TWriteScriptFile::writeNumber ((TWriteScriptFile *)&Buffer.Position,piVar5[-0x96]); TWriteScriptFile::writeText((TWriteScriptFile *)&Buffer.Position,","); TWriteScriptFile::writeNumber ((TWriteScriptFile *)&Buffer.Position,piVar5[-0x7d]); TWriteScriptFile::writeText((TWriteScriptFile *)&Buffer.Position,","); TWriteScriptFile::writeNumber((TWriteScriptFile *)&Buffer.Position,piVar5[-100]) ; TWriteScriptFile::writeText((TWriteScriptFile *)&Buffer.Position,","); TWriteScriptFile::writeNumber ((TWriteScriptFile *)&Buffer.Position,piVar5[-0x4b]); TWriteScriptFile::writeText((TWriteScriptFile *)&Buffer.Position,","); TWriteScriptFile::writeNumber ((TWriteScriptFile *)&Buffer.Position,piVar5[-0x32]); TWriteScriptFile::writeText((TWriteScriptFile *)&Buffer.Position,","); TWriteScriptFile::writeNumber ((TWriteScriptFile *)&Buffer.Position,piVar5[-0x19]); TWriteScriptFile::writeText((TWriteScriptFile *)&Buffer.Position,","); TWriteScriptFile::writeNumber((TWriteScriptFile *)&Buffer.Position,*piVar5); TWriteScriptFile::writeText((TWriteScriptFile *)&Buffer.Position,")"); TWriteScriptFile::writeLn((TWriteScriptFile *)&Buffer.Position); } iVar6 = iVar6 + 1; piVar5 = piVar5 + 1; } while (iVar6 < 0x19); TWriteScriptFile::writeLn((TWriteScriptFile *)&Buffer.Position); TWriteScriptFile::writeText((TWriteScriptFile *)&Buffer.Position,"Spells = {"); bVar2 = true; iVar6 = 0; do { if (Slot->SpellList[iVar6] != '\0') { if (!bVar2) { TWriteScriptFile::writeText((TWriteScriptFile *)&Buffer.Position,","); } TWriteScriptFile::writeNumber((TWriteScriptFile *)&Buffer.Position,iVar6); bVar2 = false; } iVar6 = iVar6 + 1; } while (iVar6 < 0x100); TWriteScriptFile::writeText((TWriteScriptFile *)&Buffer.Position,"}"); TWriteScriptFile::writeLn((TWriteScriptFile *)&Buffer.Position); TWriteScriptFile::writeText((TWriteScriptFile *)&Buffer.Position,"QuestValues = {"); bVar2 = true; iVar6 = 0; do { if (Slot->QuestValues[iVar6] != 0) { if (!bVar2) { TWriteScriptFile::writeText((TWriteScriptFile *)&Buffer.Position,","); } TWriteScriptFile::writeText((TWriteScriptFile *)&Buffer.Position,"("); TWriteScriptFile::writeNumber((TWriteScriptFile *)&Buffer.Position,iVar6); TWriteScriptFile::writeText((TWriteScriptFile *)&Buffer.Position,","); TWriteScriptFile::writeNumber ((TWriteScriptFile *)&Buffer.Position,Slot->QuestValues[iVar6]); TWriteScriptFile::writeText((TWriteScriptFile *)&Buffer.Position,")"); bVar2 = false; } iVar6 = iVar6 + 1; } while (iVar6 < 500); TWriteScriptFile::writeText((TWriteScriptFile *)&Buffer.Position,"}"); TWriteScriptFile::writeLn((TWriteScriptFile *)&Buffer.Position); TWriteScriptFile::writeText((TWriteScriptFile *)&Buffer.Position,"Murders = {"); bVar2 = true; iVar6 = 0; tVar4 = time((time_t *)0x0); do { Number = Slot->MurderTimestamps[iVar6]; if (tVar4 + -0x278d00 < Number) { if (!bVar2) { TWriteScriptFile::writeText((TWriteScriptFile *)&Buffer.Position,","); Number = Slot->MurderTimestamps[iVar6]; } TWriteScriptFile::writeNumber((TWriteScriptFile *)&Buffer.Position,Number); bVar2 = false; } iVar6 = iVar6 + 1; } while (iVar6 < 0x14); TWriteScriptFile::writeText((TWriteScriptFile *)&Buffer.Position,"}"); TWriteScriptFile::writeLn((TWriteScriptFile *)&Buffer.Position); TWriteScriptFile::writeLn((TWriteScriptFile *)&Buffer.Position); TWriteScriptFile::writeText((TWriteScriptFile *)&Buffer.Position,"Inventory = {"); if (Slot->Inventory != (uchar *)0x0) { TReadBuffer::TReadBuffer ((TReadBuffer *)&local_203c,Slot->Inventory,Slot->InventorySize); bVar2 = true; while (bVar3 = TReadBuffer::readByte((TReadBuffer *)&local_203c), bVar3 != 0xff) { if (bVar2) { bVar2 = false; } else { TWriteScriptFile::writeText((TWriteScriptFile *)&Buffer.Position,","); TWriteScriptFile::writeLn((TWriteScriptFile *)&Buffer.Position); TWriteScriptFile::writeText ((TWriteScriptFile *)&Buffer.Position," "); } TWriteScriptFile::writeNumber((TWriteScriptFile *)&Buffer.Position,(uint)bVar3); TWriteScriptFile::writeText((TWriteScriptFile *)&Buffer.Position," Content="); SaveObjects((TReadStream *)&local_203c,(TWriteScriptFile *)&Buffer.Position); } } TWriteScriptFile::writeText((TWriteScriptFile *)&Buffer.Position,"}"); TWriteScriptFile::writeLn((TWriteScriptFile *)&Buffer.Position); TWriteScriptFile::writeLn((TWriteScriptFile *)&Buffer.Position); TWriteScriptFile::writeText((TWriteScriptFile *)&Buffer.Position,"Depots = {"); bVar2 = true; iVar6 = 0; do { if (Slot->Depot[iVar6] != (uchar *)0x0) { if (bVar2) { bVar2 = false; } else { // try { // try from 0806dd45 to 0806dd6d has its CatchHandler @ 0806de30 TWriteScriptFile::writeText((TWriteScriptFile *)&Buffer.Position,", "); TWriteScriptFile::writeLn((TWriteScriptFile *)&Buffer.Position); TWriteScriptFile::writeText ((TWriteScriptFile *)&Buffer.Position," "); } TWriteScriptFile::writeNumber((TWriteScriptFile *)&Buffer.Position,iVar6); TWriteScriptFile::writeText((TWriteScriptFile *)&Buffer.Position," Content="); TReadBuffer::TReadBuffer ((TReadBuffer *)&local_203c,Slot->Depot[iVar6],Slot->DepotSize[iVar6]) ; SaveObjects((TReadStream *)&local_203c,(TWriteScriptFile *)&Buffer.Position); } iVar6 = iVar6 + 1; } while (iVar6 < 9); __fd = &DAT_080f2aa0; TWriteScriptFile::writeText((TWriteScriptFile *)&Buffer.Position,"}"); TWriteScriptFile::writeLn((TWriteScriptFile *)&Buffer.Position); TWriteScriptFile::close((TWriteScriptFile *)&Buffer.Position,(int)__fd); // try { // try from 0806dd2a to 0806dd2e has its CatchHandler @ 0806de36 TWriteScriptFile::~TWriteScriptFile((TWriteScriptFile *)&Buffer.Position,(int)__fd); return; } pcVar7 = &DAT_080f6800; } error(pcVar7); return; } void UnlinkPlayerData(ulong CharacterID) { char local_100c [4]; char FileName [4096]; sprintf(local_100c,"%s/%02ld/%ld.%s",USERPATH,CharacterID % 100,CharacterID,&DAT_080f6560); unlink(local_100c); return; } // WARNING: Unknown calling convention -- yet parameter storage is locked void _GLOBAL__I__ZN7TOutfit4loadER15TReadScriptFile(void) { __static_initialization_and_destruction_0(1,0xffff); return; } void __static_initialization_and_destruction_0(int __initialize_p,int __priority) { if ((__priority == 0xffff) && (__initialize_p == 1)) { NONE.ObjectID = 0; } return; } // WARNING: Unknown calling convention -- yet parameter storage is locked void _GLOBAL__I__Z7GetName6Object(void) { __static_initialization_and_destruction_0(1,0xffff); return; } void RandomShuffle(int *Buffer,int Size) { int iVar1; long lVar2; int Exchange; int Help; int Position; int iVar3; if (Buffer == (int *)0x0) { error("RandomShuffle: Buffer ist NULL.\n"); return; } iVar3 = 0; if (0 < Size + -1) { do { lVar2 = random(); if (lVar2 != iVar3) { iVar1 = Buffer[iVar3]; Buffer[iVar3] = Buffer[lVar2]; Buffer[lVar2] = iVar1; } iVar3 = iVar3 + 1; } while (iVar3 < Size + -1); } return; } void __static_initialization_and_destruction_0(int __initialize_p,int __priority) { TMoveUseDatabase *this; int local_14; if (__priority == 0xffff) { if (__initialize_p == 1) { NONE.ObjectID = 0; MoveUseConditions.initialized = false; MoveUseConditions.min = 1; MoveUseConditions.max = 1000; MoveUseConditions.start = 1; MoveUseConditions.space = 1000; MoveUseConditions.block = 1000; MoveUseConditions.entry = (TMoveUseCondition *)operator_new__(28000); __cxa_atexit(__tcf_0,0,&__dso_handle); MoveUseActions.initialized = false; MoveUseActions.min = 1; MoveUseActions.start = 1; MoveUseActions.max = 1000; MoveUseActions.space = 1000; MoveUseActions.block = 1000; MoveUseActions.entry = (TMoveUseAction *)operator_new__(24000); __cxa_atexit(__tcf_1,0,&__dso_handle); local_14 = 4; this = MoveUseDatabases; do { // try { // try from 080722f5 to 080722f9 has its CatchHandler @ 08072413 vector<>::vector(&this->Rules,1,100,100); this->NumberOfRules = 0; this = this + 1; local_14 = local_14 + -1; } while (local_14 != -1); __cxa_atexit(__tcf_2,0,&__dso_handle); } if (__initialize_p == 1) { DelayedMail.initialized = false; DelayedMail.max = 10; DelayedMail.min = 0; DelayedMail.start = 0; DelayedMail.space = 0xb; DelayedMail.block = 10; DelayedMail.entry = (TDelayedMail *)operator_new__(0xb0); __cxa_atexit(__tcf_3,0,&__dso_handle); } } return; } void __tcf_0(void *param_1) { if (MoveUseConditions.entry == (TMoveUseCondition *)0x0) { return; } operator_delete__(MoveUseConditions.entry); return; } void __tcf_1(void *param_1) { if (MoveUseActions.entry == (TMoveUseAction *)0x0) { return; } operator_delete__(MoveUseActions.entry); return; } void __tcf_2(void *param_1) { TMoveUseRule *pTVar1; TMoveUseDatabase *pTVar2; TMoveUseDatabase *pTVar3; pTVar2 = (TMoveUseDatabase *)&DAT_081c0710; while (pTVar2 != MoveUseDatabases) { pTVar3 = pTVar2 + -1; pTVar1 = pTVar2[-1].Rules.entry; pTVar2 = pTVar3; if (pTVar1 != (TMoveUseRule *)0x0) { operator_delete__(pTVar1); } } return; } void __tcf_3(void *param_1) { if (DelayedMail.entry == (TDelayedMail *)0x0) { return; } operator_delete__(DelayedMail.entry); return; } // WARNING: Unknown calling convention -- yet parameter storage is locked void _GLOBAL__I_MoveUseConditions(void) { __static_initialization_and_destruction_0(1,0xffff); return; } void __static_initialization_and_destruction_0(int __initialize_p,int __priority) { if ((__priority == 0xffff) && (__initialize_p == 1)) { NONE.ObjectID = 0; } return; } // WARNING: Unknown calling convention -- yet parameter storage is locked void _GLOBAL__I_SpellSyllable(void) { __static_initialization_and_destruction_0(1,0xffff); return; } // DWARF original prototype: void // ~basic_stringbuf(basic_stringbuf,std::allocator_> * this, int // __in_chrg) void __thiscall basic_stringbuf<>::~basic_stringbuf(basic_stringbuf<> *this,int __in_chrg) { int *piVar1; int iVar2; int iVar3; size_t __size; *(undefined4 *)this = 0x8128a08; iVar3 = *(int *)(this + 0x50); LOCK(); piVar1 = (int *)(iVar3 + -4); iVar2 = *piVar1; *piVar1 = *piVar1 + -1; UNLOCK(); if (iVar2 < 1) { // try { // try from 0808deb4 to 0808deb8 has its CatchHandler @ 0808debb std::__default_alloc_template::deallocate ((void *)(iVar3 + -0xc),*(int *)(iVar3 + -8) + 0xd); } *(undefined4 *)this = 0x81289c8; this[0x10] = (basic_stringbuf<>)0x0; *(undefined4 *)(this + 8) = 0; *(undefined4 *)(this + 0xc) = 0; *(undefined4 *)(this + 0x2c) = 0; std::locale::~locale((locale *)(this + 0x30)); return; } // DWARF original name: _S_construct char * basic_string<>::_S_construct<>(void) { undefined1 uVar1; uint *puVar2; uint *__dest; _Rep *__r; uint __n; void *in_stack_00000004; void *in_stack_00000008; allocator *in_stack_0000000c; __n = (int)in_stack_00000008 - (int)in_stack_00000004; if (in_stack_00000004 == in_stack_00000008) { LOCK(); std::string::_S_empty_rep_storage._8_4_ = std::string::_S_empty_rep_storage._8_4_ + 1; UNLOCK(); __dest = (uint *)(std::string::_S_empty_rep_storage + 0xc); } else { if (in_stack_00000004 == (void *)0x0) { std::__throw_logic_error("attempt to create string with null pointer"); } puVar2 = (uint *)std::string::_Rep::_S_create(__n,in_stack_0000000c); __dest = puVar2 + 3; memcpy(__dest,in_stack_00000004,__n); uVar1 = std::string::_Rep::_S_terminal; *puVar2 = __n; *(undefined1 *)(__n + 0xc + (int)puVar2) = uVar1; } return (char *)__dest; } void __static_initialization_and_destruction_0(int __initialize_p,int __priority) { undefined4 *puVar1; TParty *this; int iVar2; TChannel *this_00; int local_18; if (__priority == 0xffff) { if (__initialize_p == 1) { NONE.ObjectID = 0; TChannel::TChannel(&Channel.init); Channel.max = 0x12; Channel.space = 0x13; Channel.min = 0; Channel.start = 0; Channel.block = 10; Channel.initialized = false; // try { // try from 0808e13b to 0808e13f has its CatchHandler @ 0808e23b puVar1 = (undefined4 *)operator_new__(0x808); *puVar1 = 0x13; local_18 = 0x12; this_00 = (TChannel *)(puVar1 + 1); do { // try { // try from 0808e158 to 0808e15c has its CatchHandler @ 0808e1a5 TChannel::TChannel(this_00); local_18 = local_18 + -1; this_00 = this_00 + 1; } while (local_18 != -1); Channel.entry = (TChannel *)(puVar1 + 1); __cxa_atexit(__tcf_0,0,&__dso_handle); } if (__initialize_p == 1) { Statements.Entry = (TStatement *)operator_new__(0x7000); Statements.Size = 0x400; Statements.Head = -1; Statements.Tail = 0; __cxa_atexit(__tcf_1,0,&__dso_handle); Listeners.Entry = (TListener *)operator_new__(0x2000); Listeners.Size = 0x400; Listeners.Head = -1; Listeners.Tail = 0; __cxa_atexit(__tcf_2,0,&__dso_handle); TParty::TParty(&Party.init); Party.min = 0; Party.max = 100; Party.start = 0; Party.space = 0x65; Party.block = 0x32; Party.initialized = false; // try { // try from 0808e009 to 0808e00d has its CatchHandler @ 0808e2b2 puVar1 = (undefined4 *)operator_new__(0x1e00); *puVar1 = 0x65; iVar2 = 100; this = (TParty *)(puVar1 + 1); do { // try { // try from 0808e021 to 0808e025 has its CatchHandler @ 0808e240 TParty::TParty(this); iVar2 = iVar2 + -1; this = this + 1; } while (iVar2 != -1); Party.entry = (TParty *)(puVar1 + 1); __cxa_atexit(__tcf_3,0,&__dso_handle); } } return; } void __tcf_0(void *param_1) { ulong *puVar1; TChannel *pTVar2; TChannel *pTVar3; if (Channel.entry != (TChannel *)0x0) { pTVar2 = Channel.entry + Channel.entry[-1].InvitedPlayers; while (Channel.entry != pTVar2) { pTVar3 = pTVar2 + -1; puVar1 = pTVar2[-1].InvitedPlayer.entry; if (puVar1 != (ulong *)0x0) { operator_delete__(puVar1); } puVar1 = pTVar2[-1].Subscriber.entry; pTVar2 = pTVar3; if (puVar1 != (ulong *)0x0) { operator_delete__(puVar1); } } operator_delete__(&Channel.entry[-1].InvitedPlayers); } if (Channel.init.InvitedPlayer.entry != (ulong *)0x0) { operator_delete__(Channel.init.InvitedPlayer.entry); } if (Channel.init.Subscriber.entry != (ulong *)0x0) { operator_delete__(Channel.init.Subscriber.entry); return; } return; } void __tcf_1(void *param_1) { if (Statements.Entry == (TStatement *)0x0) { return; } operator_delete__(Statements.Entry); return; } void __tcf_2(void *param_1) { if (Listeners.Entry == (TListener *)0x0) { return; } operator_delete__(Listeners.Entry); return; } void __tcf_3(void *param_1) { ulong *puVar1; TParty *pTVar2; TParty *pTVar3; if (Party.entry != (TParty *)0x0) { pTVar2 = Party.entry + Party.entry[-1].InvitedPlayers; while (Party.entry != pTVar2) { pTVar3 = pTVar2 + -1; puVar1 = pTVar2[-1].InvitedPlayer.entry; if (puVar1 != (ulong *)0x0) { operator_delete__(puVar1); } puVar1 = pTVar2[-1].Member.entry; pTVar2 = pTVar3; if (puVar1 != (ulong *)0x0) { operator_delete__(puVar1); } } operator_delete__(&Party.entry[-1].InvitedPlayers); } if (Party.init.InvitedPlayer.entry != (ulong *)0x0) { operator_delete__(Party.init.InvitedPlayer.entry); } if (Party.init.Member.entry != (ulong *)0x0) { operator_delete__(Party.init.Member.entry); return; } return; } // WARNING: Unknown calling convention -- yet parameter storage is locked void _GLOBAL__I_Channel(void) { __static_initialization_and_destruction_0(1,0xffff); return; } void __static_initialization_and_destruction_0(int __initialize_p,int __priority) { vector<> *pvVar1; priority_queue_entry<> *ppVar2; vector<> *pvVar3; priority_queue_entry<> *ppVar4; int i; int iVar5; TRaceData *this; int local_14; if (__priority == 0xffff) { if (__initialize_p == 1) { NONE.ObjectID = 0; CreatureList.initialized = true; CreatureList.max = 10000; CreatureList.space = 0x2711; CreatureList.block = 1000; CreatureList.start = 0; CreatureList.min = 0; CreatureList.init = (TCreature *)0x0; CreatureList.entry = (TCreature **)operator_new__(0x9c44); iVar5 = 0; if (0 < CreatureList.space) { do { CreatureList.entry[iVar5] = (TCreature *)0x0; iVar5 = iVar5 + 1; } while (iVar5 < CreatureList.space); } __cxa_atexit(__tcf_0,0,&__dso_handle); } if (__initialize_p == 1) { local_14 = 0x1ff; this = RaceData; do { // try { // try from 0809dd7f to 0809dd83 has its CatchHandler @ 0809de53 TRaceData::TRaceData(this); local_14 = local_14 + -1; this = this + 1; } while (local_14 != -1); __cxa_atexit(__tcf_1,0,&__dso_handle); } if (__initialize_p == 1) { pvVar3 = (vector<> *)operator_new(0x24); pvVar3->min = 1; pvVar3->max = 5000; pvVar3->start = 1; pvVar3->space = 5000; pvVar3->block = 1000; pvVar3->initialized = false; // try { // try from 0809dd38 to 0809dd3c has its CatchHandler @ 0809dee5 ppVar4 = (priority_queue_entry<> *)operator_new__(40000); pvVar3->entry = ppVar4; ToDoQueue.Entries = 0; ToDoQueue.Entry = pvVar3; __cxa_atexit(__tcf_2,0,&__dso_handle); pvVar1 = (vector<> *)operator_new(0x24); pvVar1->min = 1; pvVar1->max = 100; pvVar1->start = 1; pvVar1->space = 100; pvVar1->block = 100; pvVar1->initialized = false; // try { // try from 0809dcc6 to 0809dcca has its CatchHandler @ 0809df01 ppVar2 = (priority_queue_entry<> *)operator_new__(800); pvVar1->entry = ppVar2; AttackWaveQueue.Entries = 0; AttackWaveQueue.Entry = pvVar1; __cxa_atexit(__tcf_3,0,&__dso_handle); } } return; } void __tcf_0(void *param_1) { if (CreatureList.entry == (TCreature **)0x0) { return; } operator_delete__(CreatureList.entry); return; } void __tcf_1(void *param_1) { int *piVar1; int *piVar2; ulong *puVar3; puVar3 = &NextCreatureID; piVar1 = KilledCreatures + 0x24; while ((TRaceData *)puVar3 != RaceData) { piVar2 = piVar1 + -0x54; puVar3 = (ulong *)((int)puVar3 + -0x150); if ((void *)piVar1[-0x2d] != (void *)0x0) { operator_delete__((void *)piVar1[-0x2d]); } if ((void *)piVar1[-0x40] != (void *)0x0) { operator_delete__((void *)piVar1[-0x40]); } if ((void *)piVar1[-0x4b] != (void *)0x0) { operator_delete__((void *)piVar1[-0x4b]); } piVar1 = piVar2; if ((void *)*piVar2 != (void *)0x0) { operator_delete__((void *)*piVar2); } } return; } void __tcf_2(void *param_1) { vector<> *pvVar1; pvVar1 = ToDoQueue.Entry; if (ToDoQueue.Entry != (vector<> *)0x0) { if ((ToDoQueue.Entry)->entry != (priority_queue_entry<> *)0x0) { operator_delete__((ToDoQueue.Entry)->entry); } operator_delete(pvVar1); return; } return; } void __tcf_3(void *param_1) { vector<> *pvVar1; pvVar1 = AttackWaveQueue.Entry; if (AttackWaveQueue.Entry != (vector<> *)0x0) { if ((AttackWaveQueue.Entry)->entry != (priority_queue_entry<> *)0x0) { operator_delete__((AttackWaveQueue.Entry)->entry); } operator_delete(pvVar1); return; } return; } // WARNING: Unknown calling convention -- yet parameter storage is locked void _GLOBAL__I_HashList(void) { __static_initialization_and_destruction_0(1,0xffff); return; } void __static_initialization_and_destruction_0(int __initialize_p,int __priority) { int i; int iVar1; if (__priority == 0xffff) { if (__initialize_p == 1) { NONE.ObjectID = 0; PlayerList.initialized = true; PlayerList.max = 100; PlayerList.space = 0x65; PlayerList.block = 10; PlayerList.start = 0; PlayerList.min = 0; PlayerList.init = (TPlayer *)0x0; PlayerList.entry = (TPlayer **)operator_new__(0x194); iVar1 = 0; if (0 < PlayerList.space) { do { PlayerList.entry[iVar1] = (TPlayer *)0x0; iVar1 = iVar1 + 1; } while (iVar1 < PlayerList.space); } __cxa_atexit(__tcf_0,0,&__dso_handle); } if (__initialize_p == 1) { Semaphore::Semaphore(&PlayerMutex,1); __cxa_atexit(__tcf_1,0,&__dso_handle); Semaphore::Semaphore(&PlayerDataPoolMutex,1); __cxa_atexit(__tcf_2,0,&__dso_handle); PlayerIndexInternalNodes.Units = (list<> *)operator_new(8); (PlayerIndexInternalNodes.Units)->firstNode = (listnode<> *)0x0; (PlayerIndexInternalNodes.Units)->lastNode = (listnode<> *)0x0; PlayerIndexInternalNodes.firstFreeItem = (storeitem<> *)0x0; __cxa_atexit(__tcf_3,0,&__dso_handle); PlayerIndexLeafNodes.Units = (list<> *)operator_new(8); (PlayerIndexLeafNodes.Units)->firstNode = (listnode<> *)0x0; (PlayerIndexLeafNodes.Units)->lastNode = (listnode<> *)0x0; PlayerIndexLeafNodes.firstFreeItem = (storeitem<> *)0x0; __cxa_atexit(__tcf_4,0,&__dso_handle); } } return; } void __tcf_0(void *param_1) { if (PlayerList.entry == (TPlayer **)0x0) { return; } operator_delete__(PlayerList.entry); return; } void __tcf_1(void *param_1) { int in_stack_00000008; Semaphore::~Semaphore(&PlayerMutex,in_stack_00000008); return; } void __tcf_2(void *param_1) { int in_stack_00000008; Semaphore::~Semaphore(&PlayerDataPoolMutex,in_stack_00000008); return; } void __tcf_3(void *param_1) { listnode<> *plVar1; list<> *plVar2; listnode<> *plVar3; plVar2 = PlayerIndexInternalNodes.Units; if (PlayerIndexInternalNodes.Units != (list<> *)0x0) { plVar1 = (PlayerIndexInternalNodes.Units)->firstNode; while (plVar1 != (listnode<> *)0x0) { plVar3 = plVar1->prev; if (plVar3 == (listnode<> *)0x0) { plVar2->firstNode = plVar1->next; plVar3 = plVar1->prev; } else { plVar3->next = plVar1->next; } if (plVar1->next == (listnode<> *)0x0) { plVar2->lastNode = plVar3; } else { plVar1->next->prev = plVar3; } operator_delete(plVar1); plVar1 = plVar2->firstNode; } operator_delete(plVar2); return; } return; } void __tcf_4(void *param_1) { listnode<> *plVar1; list<> *plVar2; listnode<> *plVar3; plVar2 = PlayerIndexLeafNodes.Units; if (PlayerIndexLeafNodes.Units != (list<> *)0x0) { plVar1 = (PlayerIndexLeafNodes.Units)->firstNode; while (plVar1 != (listnode<> *)0x0) { plVar3 = plVar1->prev; if (plVar3 == (listnode<> *)0x0) { plVar2->firstNode = plVar1->next; plVar3 = plVar1->prev; } else { plVar3->next = plVar1->next; } if (plVar1->next == (listnode<> *)0x0) { plVar2->lastNode = plVar3; } else { plVar1->next->prev = plVar3; } operator_delete(plVar1); plVar1 = plVar2->firstNode; } operator_delete(plVar2); return; } return; } // WARNING: Unknown calling convention -- yet parameter storage is locked void _GLOBAL__I_PlayerList(void) { __static_initialization_and_destruction_0(1,0xffff); return; } void __static_initialization_and_destruction_0(int __initialize_p,int __priority) { int i; int iVar1; if (__priority == 0xffff) { if (__initialize_p == 1) { NONE.ObjectID = 0; NonplayerList.initialized = true; NonplayerList.max = 10000; NonplayerList.min = 0; NonplayerList.space = 0x2711; NonplayerList.init = (TNonplayer *)0x0; NonplayerList.start = 0; NonplayerList.block = 1000; NonplayerList.entry = (TNonplayer **)operator_new__(0x9c44); iVar1 = 0; if (0 < NonplayerList.space) { do { NonplayerList.entry[iVar1] = (TNonplayer *)0x0; iVar1 = iVar1 + 1; } while (iVar1 < NonplayerList.space); } __cxa_atexit(__tcf_0,0,&__dso_handle); } if (__initialize_p == 1) { Monsterhome.initialized = false; Monsterhome.space = 5000; Monsterhome.min = 1; Monsterhome.max = 5000; Monsterhome.start = 1; Monsterhome.block = 1000; Monsterhome.entry = (TMonsterhome *)operator_new__(180000); __cxa_atexit(__tcf_1,0,&__dso_handle); } } return; } void __tcf_0(void *param_1) { if (NonplayerList.entry == (TNonplayer **)0x0) { return; } operator_delete__(NonplayerList.entry); return; } void __tcf_1(void *param_1) { if (Monsterhome.entry == (TMonsterhome *)0x0) { return; } operator_delete__(Monsterhome.entry); return; } // WARNING: Unknown calling convention -- yet parameter storage is locked void _GLOBAL__I_NonplayerList(void) { __static_initialization_and_destruction_0(1,0xffff); return; } void __static_initialization_and_destruction_0(int __initialize_p,int __priority) { if ((__priority == 0xffff) && (__initialize_p == 1)) { NONE.ObjectID = 0; } return; } // WARNING: Unknown calling convention -- yet parameter storage is locked void _GLOBAL__I__ZN9TShortwayC2EP9TCreatureii(void) { __static_initialization_and_destruction_0(1,0xffff); return; } void __static_initialization_and_destruction_0(int __initialize_p,int __priority) { if ((__priority == 0xffff) && (__initialize_p == 1)) { NONE.ObjectID = 0; } return; } // WARNING: Unknown calling convention -- yet parameter storage is locked void _GLOBAL__I__ZN7TCombatC2Ev(void) { __static_initialization_and_destruction_0(1,0xffff); return; } void __static_initialization_and_destruction_0(int __initialize_p,int __priority) { if ((__priority == 0xffff) && (__initialize_p == 1)) { NONE.ObjectID = 0; } return; } // WARNING: Unknown calling convention -- yet parameter storage is locked void _GLOBAL__I__Z14GetSkillByNamePc(void) { __static_initialization_and_destruction_0(1,0xffff); return; } double __cmath_power(double __x,uint __n) { double dVar1; uint uVar2; double __y; dVar1 = 1.0; if ((__n & 1) != 0) { dVar1 = __x; } for (uVar2 = __n >> 1; uVar2 != 0; uVar2 = uVar2 >> 1) { __x = __x * __x; if ((uVar2 & 1) != 0) { dVar1 = dVar1 * __x; } } return dVar1; } void __static_initialization_and_destruction_0(int __initialize_p,int __priority) { TConnection *pTVar1; int local_14; if (__priority == 0xffff) { if (__initialize_p == 1) { NONE.ObjectID = 0; local_14 = 1099; pTVar1 = Connections; do { // try { // try from 080cac40 to 080cac44 has its CatchHandler @ 080cac8c TXTEASymmetricKey::TXTEASymmetricKey(&pTVar1->SymmetricKey); pTVar1->State = CONNECTION_FREE; pTVar1 = pTVar1 + 1; local_14 = local_14 + -1; } while (local_14 != -1); __cxa_atexit(__tcf_0,0,&__dso_handle); } if (__initialize_p == 1) { Semaphore::Semaphore(&ConnectionMutex,1); __cxa_atexit(__tcf_1,0,&__dso_handle); } } return; } void __tcf_0(void *param_1) { int unaff_EBX; TConnection **ppTVar1; for (ppTVar1 = &FirstSendingConnection; (TConnection *)ppTVar1 != Connections; ppTVar1 = (TConnection **)((int)ppTVar1 + -0x51f8)) { TXTEASymmetricKey::~TXTEASymmetricKey (&((TConnection *)((int)ppTVar1 + -0x51f8))->SymmetricKey,unaff_EBX); } return; } void __tcf_1(void *param_1) { int in_stack_00000008; Semaphore::~Semaphore(&ConnectionMutex,in_stack_00000008); return; } // WARNING: Unknown calling convention -- yet parameter storage is locked void _GLOBAL__I_Connections(void) { __static_initialization_and_destruction_0(1,0xffff); return; } void __static_initialization_and_destruction_0(int __initialize_p,int __priority) { if ((__priority == 0xffff) && (__initialize_p == 1)) { NONE.ObjectID = 0; } return; } // WARNING: Unknown calling convention -- yet parameter storage is locked void _GLOBAL__I__Z13BeginSendDataP11TConnection(void) { __static_initialization_and_destruction_0(1,0xffff); return; } void __static_initialization_and_destruction_0(int __initialize_p,int __priority) { if ((__priority == 0xffff) && (__initialize_p == 1)) { NONE.ObjectID = 0; } return; } // WARNING: Unknown calling convention -- yet parameter storage is locked void _GLOBAL__I__Z14CommandAllowedP11TConnectiont(void) { __static_initialization_and_destruction_0(1,0xffff); return; } void __static_initialization_and_destruction_0(int __initialize_p,int __priority) { if ((__priority == 0xffff) && (__initialize_p == 1)) { NONE.ObjectID = 0; vlong::vlong(&RSA_EXPONENT,0x10001); __cxa_atexit(__tcf_0,0,&__dso_handle); Semaphore::Semaphore(&CommunicationThreadMutex,1); __cxa_atexit(__tcf_1,0,&__dso_handle); TRSAPrivateKey::TRSAPrivateKey(&PrivateKey); __cxa_atexit(__tcf_2,0,&__dso_handle); Semaphore::Semaphore(&RSAMutex,1); __cxa_atexit(__tcf_3,0,&__dso_handle); TQueryManagerConnectionPool::TQueryManagerConnectionPool(&QueryManagerConnectionPool,10); __cxa_atexit(__tcf_4,0,&__dso_handle); Waitinglist.Units = (list<> *)operator_new(8); (Waitinglist.Units)->firstNode = (listnode<> *)0x0; (Waitinglist.Units)->lastNode = (listnode<> *)0x0; Waitinglist.firstFreeItem = (storeitem<> *)0x0; __cxa_atexit(__tcf_5,0,&__dso_handle); } return; } void __tcf_0(void *param_1) { int in_stack_00000008; vlong::~vlong(&RSA_EXPONENT,in_stack_00000008); return; } void __tcf_1(void *param_1) { int in_stack_00000008; Semaphore::~Semaphore(&CommunicationThreadMutex,in_stack_00000008); return; } void __tcf_2(void *param_1) { int in_stack_00000008; TRSAPrivateKey::~TRSAPrivateKey(&PrivateKey,in_stack_00000008); return; } void __tcf_3(void *param_1) { int in_stack_00000008; Semaphore::~Semaphore(&RSAMutex,in_stack_00000008); return; } void __tcf_4(void *param_1) { int in_stack_00000008; int in_stack_fffffff8; Semaphore::~Semaphore(&QueryManagerConnectionPool.QueryManagerConnectionMutex,in_stack_fffffff8) ; Semaphore::~Semaphore(&QueryManagerConnectionPool.FreeQueryManagerConnections,in_stack_00000008) ; return; } void __tcf_5(void *param_1) { listnode<> *plVar1; list<> *plVar2; listnode<> *plVar3; plVar2 = Waitinglist.Units; if (Waitinglist.Units != (list<> *)0x0) { plVar1 = (Waitinglist.Units)->firstNode; while (plVar1 != (listnode<> *)0x0) { plVar3 = plVar1->prev; if (plVar3 == (listnode<> *)0x0) { plVar2->firstNode = plVar1->next; plVar3 = plVar1->prev; } else { plVar3->next = plVar1->next; } if (plVar1->next == (listnode<> *)0x0) { plVar2->lastNode = plVar3; } else { plVar1->next->prev = plVar3; } operator_delete(plVar1); plVar1 = plVar2->firstNode; } operator_delete(plVar2); return; } return; } // WARNING: Unknown calling convention -- yet parameter storage is locked void _GLOBAL__I_TCPSocket(void) { __static_initialization_and_destruction_0(1,0xffff); return; } void __static_initialization_and_destruction_0(int __initialize_p,int __priority) { if ((__priority == 0xffff) && (__initialize_p == 1)) { NONE.ObjectID = 0; Semaphore::Semaphore(&OrderBufferEmpty,200); __cxa_atexit(__tcf_0,0,&__dso_handle); Semaphore::Semaphore(&OrderBufferFull,0); __cxa_atexit(__tcf_1,0,&__dso_handle); TDynamicWriteBuffer::TDynamicWriteBuffer(&HelpBuffer,0x10000); __cxa_atexit(__tcf_2,0,&__dso_handle); } return; } // WARNING: Unknown calling convention -- yet parameter storage is locked void InitReaderBuffers(void) { ReplyPointerWrite = 0; OrderPointerWrite = 0; OrderPointerRead = 0; ReplyPointerRead = 0; return; } void InsertOrder(TReaderThreadOrderType OrderType,int SectorX,int SectorY,int SectorZ, ulong CharacterID) { int iVar1; ulong CharacterID_local; int SectorZ_local; if (199 < OrderPointerWrite - OrderPointerRead) { error(&DAT_0810da40); } Semaphore::down(&OrderBufferEmpty); iVar1 = OrderPointerWrite % 200; OrderBuffer[iVar1].SectorY = SectorY; OrderPointerWrite = OrderPointerWrite + 1; OrderBuffer[iVar1].OrderType = OrderType; OrderBuffer[iVar1].SectorX = SectorX; OrderBuffer[iVar1].SectorZ = SectorZ; OrderBuffer[iVar1].CharacterID = CharacterID; Semaphore::up(&OrderBufferFull); return; } void GetOrder(TReaderThreadOrderType *OrderType,int *SectorX,int *SectorY,int *SectorZ, ulong *CharacterID) { int iVar1; ulong *CharacterID_local; int *SectorZ_local; int *SectorY_local; Semaphore::down(&OrderBufferFull); iVar1 = OrderPointerRead % 200; *OrderType = OrderBuffer[iVar1].OrderType; *SectorX = OrderBuffer[iVar1].SectorX; *SectorY = OrderBuffer[OrderPointerRead % 200].SectorY; *SectorZ = OrderBuffer[OrderPointerRead % 200].SectorZ; iVar1 = OrderPointerRead % 200; OrderPointerRead = OrderPointerRead + 1; *CharacterID = OrderBuffer[iVar1].CharacterID; Semaphore::up(&OrderBufferEmpty); return; } // WARNING: Unknown calling convention -- yet parameter storage is locked void InsertReply(void) { int iVar1; TReaderThreadReplyType in_stack_00000004; int in_stack_00000008; int in_stack_0000000c; int in_stack_00000010; uchar *in_stack_00000014; int in_stack_00000018; iVar1 = ReplyPointerWrite - ReplyPointerRead; while (199 < iVar1) { error("InsertReply (Reader): Puffer ist voll; warte...\n"); DelayThread(5,0); iVar1 = ReplyPointerWrite - ReplyPointerRead; } iVar1 = ReplyPointerWrite % 200; ReplyPointerWrite = ReplyPointerWrite + 1; ReplyBuffer[iVar1].ReplyType = in_stack_00000004; ReplyBuffer[iVar1].SectorX = in_stack_00000008; ReplyBuffer[iVar1].SectorY = in_stack_0000000c; ReplyBuffer[iVar1].SectorZ = in_stack_00000010; ReplyBuffer[iVar1].Data = in_stack_00000014; ReplyBuffer[iVar1].Size = in_stack_00000018; return; } // WARNING: Unknown calling convention -- yet parameter storage is locked bool GetReply(void) { int iVar1; bool bVar2; TReaderThreadReplyType *in_stack_00000004; int *in_stack_00000008; int *in_stack_0000000c; int *in_stack_00000010; undefined4 *in_stack_00000014; int *in_stack_00000018; bVar2 = ReplyPointerRead != ReplyPointerWrite; if (bVar2) { iVar1 = ReplyPointerRead % 200; *in_stack_00000004 = ReplyBuffer[iVar1].ReplyType; *in_stack_00000008 = ReplyBuffer[iVar1].SectorX; *in_stack_0000000c = ReplyBuffer[ReplyPointerRead % 200].SectorY; *in_stack_00000010 = ReplyBuffer[ReplyPointerRead % 200].SectorZ; iVar1 = ReplyPointerRead % 200; *in_stack_00000014 = ReplyBuffer[iVar1].Data; *in_stack_00000018 = ReplyBuffer[iVar1].Size; ReplyPointerRead = ReplyPointerRead + 1; } return bVar2; } // WARNING: Unknown calling convention -- yet parameter storage is locked void TerminateReaderOrder(void) { int iVar1; if (199 < OrderPointerWrite - OrderPointerRead) { error(&DAT_0810da40); } Semaphore::down(&OrderBufferEmpty); iVar1 = OrderPointerWrite % 200; OrderBuffer[iVar1].SectorX = 0; OrderPointerWrite = OrderPointerWrite + 1; OrderBuffer[iVar1].OrderType = ORDER_TERMINATE; OrderBuffer[iVar1].SectorY = 0; OrderBuffer[iVar1].SectorZ = 0; OrderBuffer[iVar1].CharacterID = 0; Semaphore::up(&OrderBufferFull); return; } void LoadSectorOrder(int SectorX,int SectorY,int SectorZ) { int iVar1; if (199 < OrderPointerWrite - OrderPointerRead) { error(&DAT_0810da40); } Semaphore::down(&OrderBufferEmpty); iVar1 = OrderPointerWrite % 200; OrderBuffer[iVar1].SectorX = SectorX; OrderPointerWrite = OrderPointerWrite + 1; OrderBuffer[iVar1].OrderType = ORDER_LOADSECTOR; OrderBuffer[iVar1].SectorY = SectorY; OrderBuffer[iVar1].SectorZ = SectorZ; OrderBuffer[iVar1].CharacterID = 0; Semaphore::up(&OrderBufferFull); return; } void LoadCharacterOrder(ulong CharacterID) { int iVar1; if (199 < OrderPointerWrite - OrderPointerRead) { error(&DAT_0810da40); } Semaphore::down(&OrderBufferEmpty); iVar1 = OrderPointerWrite % 200; OrderPointerWrite = OrderPointerWrite + 1; OrderBuffer[iVar1].OrderType = ORDER_LOADCHARACTER; OrderBuffer[iVar1].SectorX = 0; OrderBuffer[iVar1].SectorY = 0; OrderBuffer[iVar1].CharacterID = CharacterID; OrderBuffer[iVar1].SectorZ = 0; Semaphore::up(&OrderBufferFull); return; } void ProcessLoadSectorOrder(int SectorX,int SectorY,int SectorZ) { byte b; bool bVar1; char cVar2; uchar *Help; byte *pbVar3; uchar *__dest; int iVar4; int iVar5; int DataSize; char *pcVar6; undefined1 uVar7; TDynamicWriteBuffer *__s; char *pcVar8; uchar *Data; bool Refreshable; int yy; int xx; TReadScriptFile Script; undefined1 local_101c [4]; char FileName [4096]; __s = (TDynamicWriteBuffer *)local_101c; pcVar8 = ORIGMAPPATH; sprintf((char *)__s,"%s/%04u-%04u-%02u.sec",ORIGMAPPATH,SectorX,SectorY,SectorZ); bVar1 = FileExists((char *)__s); if (bVar1) { // try { // try from 080df909 to 080df90d has its CatchHandler @ 080dfbf7 TReadScriptFile::TReadScriptFile((TReadScriptFile *)&xx); // try { // try from 080df915 to 080dfb32 has its CatchHandler @ 080dfbc0 TReadScriptFile::open((TReadScriptFile *)&xx,(char *)__s,(int)pcVar8); Data._3_1_ = 0; yy = -1; b = 0xff; HelpBuffer.super_TWriteBuffer.Position = 0; while (TReadScriptFile::nextToken((TReadScriptFile *)&xx), xx != 0) { if ((xx != 6) || (cVar2 = TReadScriptFile::getSpecial((TReadScriptFile *)&xx), cVar2 != ',')) { if (xx == 4) { pbVar3 = TReadScriptFile::getBytesequence((TReadScriptFile *)&xx); yy = (int)*pbVar3; b = pbVar3[1]; __s = (TDynamicWriteBuffer *)0x3a; TReadScriptFile::readSymbol((TReadScriptFile *)&xx,':'); Data._3_1_ = 0; } else if (xx == 1) { uVar7 = yy == -1; if ((bool)uVar7) { pcVar8 = "coordinate expected"; TReadScriptFile::error((TReadScriptFile *)&xx,"coordinate expected"); __s = (TDynamicWriteBuffer *)pcVar8; } pcVar8 = TReadScriptFile::getIdentifier((TReadScriptFile *)&xx); iVar4 = 8; pcVar6 = "refresh"; do { if (iVar4 == 0) break; iVar4 = iVar4 + -1; uVar7 = *pcVar8 == *pcVar6; pcVar8 = pcVar8 + 1; pcVar6 = pcVar6 + 1; } while ((bool)uVar7); if ((bool)uVar7) { Data._3_1_ = 1; } pcVar8 = TReadScriptFile::getIdentifier((TReadScriptFile *)&xx); iVar4 = 8; pcVar6 = "content"; do { if (iVar4 == 0) break; iVar4 = iVar4 + -1; uVar7 = *pcVar8 == *pcVar6; pcVar8 = pcVar8 + 1; pcVar6 = pcVar6 + 1; } while ((bool)uVar7); if ((bool)uVar7) { TReadScriptFile::readSymbol((TReadScriptFile *)&xx,'='); if (Data._3_1_ != 0) { TDynamicWriteBuffer::writeByte(&HelpBuffer,(uchar)yy); TDynamicWriteBuffer::writeByte(&HelpBuffer,b); } __s = &HelpBuffer; LoadObjects((TReadScriptFile *)&xx,(TWriteStream *)&HelpBuffer, (bool)(Data._3_1_ ^ 1)); } } } } TReadScriptFile::close((TReadScriptFile *)&xx,(int)__s); iVar4 = HelpBuffer.super_TWriteBuffer.Position; if (HelpBuffer.super_TWriteBuffer.Position != 0) { __dest = (uchar *)operator_new__(HelpBuffer.super_TWriteBuffer.Position); __s = (TDynamicWriteBuffer *)HelpBuffer.super_TWriteBuffer.Data; memcpy(__dest,HelpBuffer.super_TWriteBuffer.Data,iVar4); iVar5 = ReplyPointerWrite - ReplyPointerRead; while (199 < iVar5) { error("InsertReply (Reader): Puffer ist voll; warte...\n"); __s = (TDynamicWriteBuffer *)0x0; DelayThread(5,0); iVar5 = ReplyPointerWrite - ReplyPointerRead; } iVar5 = ReplyPointerWrite % 200; ReplyBuffer[iVar5].ReplyType = REPLY_SECTORDATA; ReplyPointerWrite = ReplyPointerWrite + 1; ReplyBuffer[iVar5].SectorX = SectorX; ReplyBuffer[iVar5].SectorY = SectorY; ReplyBuffer[iVar5].SectorZ = SectorZ; ReplyBuffer[iVar5].Data = __dest; ReplyBuffer[iVar5].Size = iVar4; } // try { // try from 080dfbb6 to 080dfbba has its CatchHandler @ 080dfbf7 TReadScriptFile::~TReadScriptFile((TReadScriptFile *)&xx,(int)__s); } return; } void ProcessLoadCharacterOrder(ulong CharacterID) { TPlayerData *Slot; __pid_t _Var1; pid_t pVar2; TPlayerData *PlayerData; int iVar3; while( true ) { Slot = AssignPlayerPoolSlot(CharacterID,true); if (Slot == (TPlayerData *)0x0) { error(&DAT_0810db00); return; } _Var1 = getpid(); if (Slot->Locked == _Var1) break; pVar2 = GetGameThreadPID(); if (Slot->Locked == pVar2) { return; } DecreasePlayerPoolSlotSticky(Slot); DelayThread(1,0); } IncreasePlayerPoolSlotSticky(Slot); ReleasePlayerPoolSlot(Slot); iVar3 = ReplyPointerWrite - ReplyPointerRead; while (199 < iVar3) { error("InsertReply (Reader): Puffer ist voll; warte...\n"); DelayThread(5,0); iVar3 = ReplyPointerWrite - ReplyPointerRead; } iVar3 = ReplyPointerWrite % 200; ReplyBuffer[iVar3].ReplyType = REPLY_CHARACTERDATA; ReplyBuffer[iVar3].SectorX = 0; ReplyBuffer[iVar3].SectorY = 0; ReplyBuffer[iVar3].SectorZ = 0; ReplyBuffer[iVar3].Data = (uchar *)0x0; ReplyBuffer[iVar3].Size = CharacterID; ReplyPointerWrite = ReplyPointerWrite + 1; return; } int ReaderThreadLoop(void *param_1) { int SectorX; TReaderThreadOrderType TVar1; int SectorY; int SectorZ; ulong CharacterID; int iVar2; LAB_080dfd60: do { while( true ) { Semaphore::down(&OrderBufferFull); iVar2 = OrderPointerRead % 200; SectorX = OrderBuffer[iVar2].SectorX; TVar1 = OrderBuffer[iVar2].OrderType; OrderPointerRead = OrderPointerRead + 1; SectorY = OrderBuffer[iVar2].SectorY; SectorZ = OrderBuffer[iVar2].SectorZ; CharacterID = OrderBuffer[iVar2].CharacterID; Semaphore::up(&OrderBufferEmpty); if (TVar1 != ORDER_LOADSECTOR) break; ProcessLoadSectorOrder(SectorX,SectorY,SectorZ); } if ((int)TVar1 < 2) { if (TVar1 == ORDER_TERMINATE) { return 0; } } else if (TVar1 == ORDER_LOADCHARACTER) { ProcessLoadCharacterOrder(CharacterID); goto LAB_080dfd60; } error("ReaderThreadLoop: Unbekanntes Kommando %d.\n",TVar1); } while( true ); } // WARNING: Unknown calling convention -- yet parameter storage is locked void ProcessSectorReply(void) { code *in_stack_00000004; void *in_stack_00000014; (*in_stack_00000004)(); if (in_stack_00000014 != (void *)0x0) { operator_delete__(in_stack_00000014); return; } return; } void ProcessCharacterReply(TSendMailsFunction *SendMails,ulong CharacterID) { TPlayerData *Slot; TPlayerData *PlayerData; Slot = AttachPlayerPoolSlot(CharacterID,true); if (Slot != (TPlayerData *)0x0) { (*SendMails)(Slot); DecreasePlayerPoolSlotSticky(Slot); ReleasePlayerPoolSlot(Slot); return; } DecreasePlayerPoolSlotSticky(CharacterID); return; } // WARNING: Variable defined which should be unmapped: SectorX void ProcessReaderThreadReplies(TRefreshSectorFunction *RefreshSector,TSendMailsFunction *SendMails) { TReaderThreadReplyType TVar1; ulong CharacterID; uchar *puVar2; TPlayerData *Slot; uchar *Data; int Size; int iVar3; TReaderThreadReplyType ReplyType; TPlayerData *PlayerData; int SectorZ; int SectorY; int SectorX; while (ReplyPointerRead != ReplyPointerWrite) { iVar3 = ReplyPointerRead % 200; ReplyPointerRead = ReplyPointerRead + 1; TVar1 = ReplyBuffer[iVar3].ReplyType; CharacterID = ReplyBuffer[iVar3].Size; puVar2 = ReplyBuffer[iVar3].Data; if (TVar1 == REPLY_SECTORDATA) { (*RefreshSector)(ReplyBuffer[iVar3].SectorX,ReplyBuffer[iVar3].SectorY, ReplyBuffer[iVar3].SectorZ,puVar2,CharacterID); if (puVar2 != (uchar *)0x0) { operator_delete__(puVar2); } } else if (TVar1 == REPLY_CHARACTERDATA) { Slot = AttachPlayerPoolSlot(CharacterID,true); if (Slot == (TPlayerData *)0x0) { DecreasePlayerPoolSlotSticky(CharacterID); } else { (*SendMails)(Slot); DecreasePlayerPoolSlotSticky(Slot); ReleasePlayerPoolSlot(Slot); } } else { error(&DAT_0810dba0,TVar1); } } return; } // WARNING: Unknown calling convention -- yet parameter storage is locked void InitReader(void) { undefined4 *puVar1; ReplyPointerRead = 0; OrderPointerWrite = 0; OrderPointerRead = 0; ReplyPointerWrite = 0; // try { // try from 080e006c to 080e00a7 has its CatchHandler @ 080e00a8 ReaderThread = StartThread(ReaderThreadLoop,(void *)0x0,false); if (ReaderThread != 0) { return; } puVar1 = (undefined4 *)__cxa_allocate_exception(4); *puVar1 = "cannot start reader thread"; // WARNING: Subroutine does not return __cxa_throw(puVar1,char_const*::typeinfo,0); } // WARNING: Unknown calling convention -- yet parameter storage is locked void ExitReader(void) { int iVar1; if (ReaderThread != 0) { if (199 < OrderPointerWrite - OrderPointerRead) { error(&DAT_0810da40); } Semaphore::down(&OrderBufferEmpty); iVar1 = OrderPointerWrite % 200; OrderBuffer[iVar1].OrderType = ORDER_TERMINATE; OrderBuffer[iVar1].SectorX = 0; OrderPointerWrite = OrderPointerWrite + 1; OrderBuffer[iVar1].SectorY = 0; OrderBuffer[iVar1].SectorZ = 0; OrderBuffer[iVar1].CharacterID = 0; Semaphore::up(&OrderBufferFull); JoinThread(ReaderThread); ReaderThread = 0; } return; } void __tcf_0(void *param_1) { int in_stack_00000008; Semaphore::~Semaphore(&OrderBufferEmpty,in_stack_00000008); return; } void __tcf_1(void *param_1) { int in_stack_00000008; Semaphore::~Semaphore(&OrderBufferFull,in_stack_00000008); return; } void __tcf_2(void *param_1) { int in_stack_00000008; TDynamicWriteBuffer::~TDynamicWriteBuffer(&HelpBuffer,in_stack_00000008); return; } // WARNING: Unknown calling convention -- yet parameter storage is locked void _GLOBAL__I__Z17InitReaderBuffersv(void) { __static_initialization_and_destruction_0(1,0xffff); return; } void __static_initialization_and_destruction_0(int __initialize_p,int __priority) { if ((__priority == 0xffff) && (__initialize_p == 1)) { NONE.ObjectID = 0; } return; } void SetQueryManagerLoginData(int Type,char *Data) { ApplicationType = Type; if (Data == (char *)0x0) { LoginData[0] = '\0'; } else { strncpy(LoginData,Data,0x1e); } return; } // DWARF original prototype: void TQueryManagerConnection(TQueryManagerConnection * this, int // QueryBufferSize) void __thiscall TQueryManagerConnection::TQueryManagerConnection(TQueryManagerConnection *this,int QueryBufferSize) { uint uVar1; uchar *puVar2; uint *puVar3; sockaddr *__addr; socklen_t in_stack_ffffffe0; uint local_1c [4]; local_1c[3] = 0x4000; puVar3 = local_1c + 3; if (0x3fff < QueryBufferSize) { puVar3 = (uint *)&QueryBufferSize; } puVar2 = (uchar *)operator_new__(*puVar3); this->Buffer = puVar2; local_1c[2] = 0x4000; puVar3 = local_1c + 2; if (0x3fff < QueryBufferSize) { puVar3 = (uint *)&QueryBufferSize; } TReadBuffer::TReadBuffer(&this->ReadBuffer,this->Buffer,*puVar3); local_1c[1] = 0x4000; puVar3 = local_1c + 1; if (0x3fff < QueryBufferSize) { puVar3 = (uint *)&QueryBufferSize; } __addr = (sockaddr *)*puVar3; puVar2 = this->Buffer; TWriteBuffer::TWriteBuffer(&this->WriteBuffer,puVar2,(int)__addr); local_1c[0] = 0x4000; puVar3 = local_1c; if (0x3fff < QueryBufferSize) { puVar3 = (uint *)&QueryBufferSize; } uVar1 = *puVar3; this->Socket = -1; this->QueryOk = false; this->BufferSize = uVar1; connect(this,(int)puVar2,__addr,in_stack_ffffffe0); return; } // DWARF original prototype: void TQueryManagerConnection(TQueryManagerConnection * this, int // QueryBufferSize) void __thiscall TQueryManagerConnection::TQueryManagerConnection(TQueryManagerConnection *this,int QueryBufferSize) { uint uVar1; uchar *puVar2; uint *puVar3; sockaddr *__addr; socklen_t in_stack_ffffffe0; uint local_1c [4]; local_1c[3] = 0x4000; puVar3 = local_1c + 3; if (0x3fff < QueryBufferSize) { puVar3 = (uint *)&QueryBufferSize; } puVar2 = (uchar *)operator_new__(*puVar3); this->Buffer = puVar2; local_1c[2] = 0x4000; puVar3 = local_1c + 2; if (0x3fff < QueryBufferSize) { puVar3 = (uint *)&QueryBufferSize; } TReadBuffer::TReadBuffer(&this->ReadBuffer,this->Buffer,*puVar3); local_1c[1] = 0x4000; puVar3 = local_1c + 1; if (0x3fff < QueryBufferSize) { puVar3 = (uint *)&QueryBufferSize; } __addr = (sockaddr *)*puVar3; puVar2 = this->Buffer; TWriteBuffer::TWriteBuffer(&this->WriteBuffer,puVar2,(int)__addr); local_1c[0] = 0x4000; puVar3 = local_1c; if (0x3fff < QueryBufferSize) { puVar3 = (uint *)&QueryBufferSize; } uVar1 = *puVar3; this->Socket = -1; this->QueryOk = false; this->BufferSize = uVar1; connect(this,(int)puVar2,__addr,in_stack_ffffffe0); return; } // DWARF original prototype: void ~TQueryManagerConnection(TQueryManagerConnection * this, int // __in_chrg) void __thiscall TQueryManagerConnection::~TQueryManagerConnection(TQueryManagerConnection *this,int __in_chrg) { int iVar1; int *piVar2; if (-1 < this->Socket) { iVar1 = close(this->Socket); if (iVar1 < 0) { piVar2 = __errno_location(); error(&DAT_0810dc00,*piVar2); } this->Socket = -1; } if (this->Buffer == (uchar *)0x0) { return; } operator_delete__(this->Buffer); return; } // DWARF original prototype: void ~TQueryManagerConnection(TQueryManagerConnection * this, int // __in_chrg) void __thiscall TQueryManagerConnection::~TQueryManagerConnection(TQueryManagerConnection *this,int __in_chrg) { int iVar1; int *piVar2; if (-1 < this->Socket) { iVar1 = close(this->Socket); if (iVar1 < 0) { piVar2 = __errno_location(); error(&DAT_0810dc00,*piVar2); } this->Socket = -1; } if (this->Buffer == (uchar *)0x0) { return; } operator_delete__(this->Buffer); return; } // DWARF original prototype: void connect(TQueryManagerConnection * this) int __thiscall TQueryManagerConnection::connect (TQueryManagerConnection *this,int __fd,sockaddr *__addr,socklen_t __len) { ushort uVar1; int Result; int iVar2; int *piVar3; char *__cp; TWriteBuffer *this_00; int Try; int iVar4; int iVar5; hostent *local_858; hostent *HostEntAddr; int ErrorCode; char local_84c [4]; char Buffer [2048]; hostent HostEnt; undefined1 local_2c [4]; sockaddr_in QueryManagerAddress; iVar4 = 0; if (0 < NumberOfQueryManagers) { do { local_2c._0_2_ = 0; local_2c[2] = '\0'; local_2c[3] = '\0'; QueryManagerAddress.sin_family = 0; QueryManagerAddress.sin_port = 0; QueryManagerAddress.sin_addr.s_addr = 0; QueryManagerAddress.sin_zero[0] = '\0'; QueryManagerAddress.sin_zero[1] = '\0'; QueryManagerAddress.sin_zero[2] = '\0'; QueryManagerAddress.sin_zero[3] = '\0'; QueryManagerAddress._0_4_ = inet_addr(QUERY_MANAGER[iVar4].Host); if (QueryManagerAddress._0_4_ == 0xffffffff) { HostEntAddr = (hostent *)0x0; iVar2 = gethostbyname_r(QUERY_MANAGER[iVar4].Host,(hostent *)(Buffer + 0x7fc), local_84c,0x800,&local_858,(int *)&HostEntAddr); if ((iVar2 == 0) && (local_858 != (hostent *)0x0)) { __cp = inet_ntoa((in_addr)*(in_addr_t *)*local_858->h_addr_list); QueryManagerAddress._0_4_ = inet_addr(__cp); goto LAB_080e0505; } LAB_080e06c8: print(); } else { LAB_080e0505: iVar2 = socket(2,1,0); this->Socket = iVar2; if (iVar2 < 0) goto LAB_080e06c8; uVar1 = (ushort)QUERY_MANAGER[iVar4].Port; iVar5 = 0x10; ErrorCode._2_2_ = uVar1 >> 8 | uVar1 << 8; local_2c._2_2_ = ErrorCode._2_2_; local_2c._0_2_ = 2; iVar2 = ::connect(this->Socket,(sockaddr *)local_2c,0x10); if (iVar2 < 0) { print(); } else { this_00 = &this->WriteBuffer; this->QueryOk = true; (this->WriteBuffer).Position = 0; // try { // try from 080e0595 to 080e05a9 has its CatchHandler @ 080e0754 TWriteBuffer::writeWord(this_00,0); TWriteBuffer::writeByte(this_00,'\0'); // try { // try from 080e05b8 to 080e05bc has its CatchHandler @ 080e0791 TWriteBuffer::writeByte(this_00,(uchar)ApplicationType); // try { // try from 080e05d1 to 080e05d5 has its CatchHandler @ 080e07c1 TWriteStream::writeString (&this_00->super_TWriteStream,QUERY_MANAGER[iVar4].Password); if (ApplicationType == 1) { // try { // try from 080e069d to 080e06a1 has its CatchHandler @ 080e07f1 TWriteStream::writeString(&this_00->super_TWriteStream,LoginData); } iVar5 = executeQuery(this,0x1e,false); if (iVar5 == 0) { return 0; } print(); } if (-1 < this->Socket) { iVar2 = close(this->Socket); if (iVar2 < 0) { piVar3 = __errno_location(); error(&DAT_0810dc00,*piVar3,iVar5); } this->Socket = -1; } } iVar4 = iVar4 + 1; } while (iVar4 < NumberOfQueryManagers); } print(); this->Socket = -1; return (int)this; } // DWARF original prototype: void disconnect(TQueryManagerConnection * this) void __thiscall TQueryManagerConnection::disconnect(TQueryManagerConnection *this) { int iVar1; int *piVar2; if (-1 < this->Socket) { iVar1 = close(this->Socket); if (iVar1 < 0) { piVar2 = __errno_location(); error(&DAT_0810dc00,*piVar2); } this->Socket = -1; } return; } // WARNING: Variable defined which should be unmapped: Chances // DWARF original prototype: int write(TQueryManagerConnection * this, uchar * Buffer, int Size) ssize_t __thiscall TQueryManagerConnection::write(TQueryManagerConnection *this,int __fd,void *__buf,size_t __n) { ssize_t sVar1; int *piVar2; int nwritten; int nleft; void *__n_00; int local_14; int Chances; local_14 = 0x32; __n_00 = __buf; if (0 < (int)__buf) { do { sVar1 = ::write(this->Socket,(void *)__fd,(size_t)__n_00); if (((sVar1 == -1) && (piVar2 = __errno_location(), *piVar2 == 0xb)) && (0 < local_14)) { DelayThread(0,100000); local_14 = local_14 + -1; } else { if (sVar1 < 1) { return sVar1; } __n_00 = (void *)((int)__n_00 - sVar1); __fd = __fd + sVar1; } } while (0 < (int)__n_00); } return (int)__buf - (int)__n_00; } // DWARF original prototype: int read(TQueryManagerConnection * this, uchar * Buffer, int Size, int // Timeout) ssize_t __thiscall TQueryManagerConnection::read(TQueryManagerConnection *this,int __fd,void *__buf,size_t __nbytes) { int iVar1; ssize_t sVar2; int *piVar3; int nread; int nleft; void *__nbytes_00; int local_20; int Chances; pollfd ufds; local_20 = 0x32; __nbytes_00 = __buf; if (0 < (int)__buf) { do { Chances = this->Socket; ufds.fd._0_2_ = 1; ufds.fd._2_2_ = 0; iVar1 = poll((pollfd *)&Chances,1,__nbytes * 1000); if (iVar1 < 1) { return -2; } sVar2 = ::read(this->Socket,(void *)__fd,(size_t)__nbytes_00); if (sVar2 == 0) break; if (sVar2 < 0) { piVar3 = __errno_location(); if (*piVar3 != 4) { if (*piVar3 != 0xb) { return sVar2; } if (__nbytes_00 == __buf) { return sVar2; } if (local_20 == 0) { return sVar2; } local_20 = local_20 + -1; DelayThread(0,100000); } } else { __nbytes_00 = (void *)((int)__nbytes_00 - sVar2); __fd = __fd + sVar2; } } while (0 < (int)__nbytes_00); } return (int)__buf - (int)__nbytes_00; } // DWARF original prototype: void prepareQuery(TQueryManagerConnection * this, int QueryType) void __thiscall TQueryManagerConnection::prepareQuery(TQueryManagerConnection *this,int QueryType) { this->QueryOk = true; (this->WriteBuffer).Position = 0; // try { // try from 080e0a08 to 080e0a1c has its CatchHandler @ 080e0a27 TWriteBuffer::writeWord(&this->WriteBuffer,0); TWriteBuffer::writeByte(&this->WriteBuffer,(uchar)QueryType); return; } // DWARF original prototype: void sendFlag(TQueryManagerConnection * this, bool f) void __thiscall TQueryManagerConnection::sendFlag(TQueryManagerConnection *this,bool f) { TWriteBuffer::writeByte(&this->WriteBuffer,f); return; } // DWARF original prototype: void sendByte(TQueryManagerConnection * this, uchar b) void __thiscall TQueryManagerConnection::sendByte(TQueryManagerConnection *this,uchar b) { // try { // try from 080e0a9d to 080e0aa1 has its CatchHandler @ 080e0ab0 TWriteBuffer::writeByte(&this->WriteBuffer,b); return; } // DWARF original prototype: void sendWord(TQueryManagerConnection * this, ushort w) void __thiscall TQueryManagerConnection::sendWord(TQueryManagerConnection *this,ushort w) { // try { // try from 080e0b0d to 080e0b11 has its CatchHandler @ 080e0b20 TWriteBuffer::writeWord(&this->WriteBuffer,w); return; } // DWARF original prototype: void sendQuad(TQueryManagerConnection * this, ulong q) void __thiscall TQueryManagerConnection::sendQuad(TQueryManagerConnection *this,ulong q) { // try { // try from 080e0b7c to 080e0b80 has its CatchHandler @ 080e0b90 TWriteBuffer::writeQuad(&this->WriteBuffer,q); return; } // DWARF original prototype: void sendString(TQueryManagerConnection * this, char * s) void __thiscall TQueryManagerConnection::sendString(TQueryManagerConnection *this,char *s) { // try { // try from 080e0bec to 080e0bf0 has its CatchHandler @ 080e0c00 TWriteStream::writeString(&(this->WriteBuffer).super_TWriteStream,s); return; } // DWARF original prototype: void sendBytes(TQueryManagerConnection * this, uchar * Buffer, int // Count) void __thiscall TQueryManagerConnection::sendBytes(TQueryManagerConnection *this) { uchar *in_stack_00000008; int in_stack_0000000c; // try { // try from 080e0c63 to 080e0c67 has its CatchHandler @ 080e0c72 TWriteBuffer::writeBytes(&this->WriteBuffer,in_stack_00000008,in_stack_0000000c); return; } // DWARF original prototype: bool getFlag(TQueryManagerConnection * this) bool __thiscall TQueryManagerConnection::getFlag(TQueryManagerConnection *this) { uchar uVar1; // try { // try from 080e0cc2 to 080e0cc6 has its CatchHandler @ 080e0cd8 uVar1 = TReadBuffer::readByte(&this->ReadBuffer); return uVar1 != '\0'; } // DWARF original prototype: uchar getByte(TQueryManagerConnection * this) uchar __thiscall TQueryManagerConnection::getByte(TQueryManagerConnection *this) { uchar uVar1; // try { // try from 080e0d22 to 080e0d26 has its CatchHandler @ 080e0d31 uVar1 = TReadBuffer::readByte(&this->ReadBuffer); return uVar1; } // DWARF original prototype: ushort getWord(TQueryManagerConnection * this) ushort __thiscall TQueryManagerConnection::getWord(TQueryManagerConnection *this) { ushort uVar1; // try { // try from 080e0d82 to 080e0d86 has its CatchHandler @ 080e0d91 uVar1 = TReadBuffer::readWord(&this->ReadBuffer); return uVar1; } // DWARF original prototype: ulong getQuad(TQueryManagerConnection * this) ulong __thiscall TQueryManagerConnection::getQuad(TQueryManagerConnection *this) { ulong uVar1; // try { // try from 080e0de2 to 080e0de6 has its CatchHandler @ 080e0df0 uVar1 = TReadBuffer::readQuad(&this->ReadBuffer); return uVar1; } // DWARF original prototype: void getString(TQueryManagerConnection * this, char * Buffer, int // MaxLength) void __thiscall TQueryManagerConnection::getString(TQueryManagerConnection *this,char *Buffer,int MaxLength) { // try { // try from 080e0e53 to 080e0e57 has its CatchHandler @ 080e0e62 TReadStream::readString(&(this->ReadBuffer).super_TReadStream,Buffer,MaxLength); return; } // DWARF original prototype: void getBytes(TQueryManagerConnection * this, uchar * Buffer, int // Count) void __thiscall TQueryManagerConnection::getBytes(TQueryManagerConnection *this) { uchar *in_stack_00000008; int in_stack_0000000c; // try { // try from 080e0ec0 to 080e0ec4 has its CatchHandler @ 080e0ed0 TReadBuffer::readBytes(&this->ReadBuffer,in_stack_00000008,in_stack_0000000c); return; } // WARNING: Variable defined which should be unmapped: Help // DWARF original prototype: int executeQuery(TQueryManagerConnection * this, int Timeout, bool // AutoReconnect) int __thiscall TQueryManagerConnection::executeQuery(TQueryManagerConnection *this,int Timeout,bool AutoReconnect) { byte bVar1; void *pvVar2; sockaddr *psVar3; ssize_t sVar4; int iVar5; void *pvVar6; int Result; TWriteBuffer *this_00; int Size; int DataSize; sockaddr *__buf; undefined4 uStackY_40; char *Text; uchar *puVar7; socklen_t in_stack_ffffffd0; undefined1 auStack_2c [11]; char local_21; char *pcStack_20; bool SecondChance; char local_19; byte local_18; undefined1 local_17 [2]; bool AutoReconnect_local; uchar Help2 [4]; uchar Help [2]; this_00 = &this->WriteBuffer; local_19 = AutoReconnect; __buf = (sockaddr *)(this->WriteBuffer).Position; (this->WriteBuffer).Position = 0; if ((int)__buf < 0xffff) { // try { // try from 080e1376 to 080e137a has its CatchHandler @ 080e13ed uStackY_40 = 0x80e137b; TWriteBuffer::writeWord(this_00,(short)__buf - 2); } else { if (this->BufferSize < (int)(__buf->sa_data + 2)) { Text = "TQueryManagerConnection::executeQuery: Puffer zu klein.\n"; goto LAB_080e0f4d; } pcStack_20 = __buf[-1].sa_data + 0xc; uStackY_40 = 0x80e0f86; memmove(this->Buffer + 6,this->Buffer + 2,(size_t)pcStack_20); // try { // try from 080e0f91 to 080e0f95 has its CatchHandler @ 080e1380 uStackY_40 = 0x80e0f96; TWriteBuffer::writeWord(this_00,0xffff); // try { // try from 080e0fa0 to 080e0fa4 has its CatchHandler @ 080e13bd uStackY_40 = 0x80e0fa5; TWriteBuffer::writeQuad(this_00,(ulong)pcStack_20); __buf = (sockaddr *)(__buf->sa_data + 2); } local_21 = '\x01'; if (this->QueryOk != false) { do { if (this->Socket < 0) { if (local_19 == '\0') { return 3; } if ((int)__buf < 0x4000) { iVar5 = -((uint)(__buf->sa_data + 0xd) & 0xfffffff0); puVar7 = this->Buffer; *(sockaddr **)(Help2 + iVar5 + -0x20) = __buf; *(uchar **)(&stack0xffffffc8 + iVar5) = puVar7; *(undefined1 **)(&stack0xffffffc4 + iVar5) = auStack_2c + iVar5; *(undefined4 *)((int)&uStackY_40 + iVar5) = 0x80e1335; memcpy(*(void **)(&stack0xffffffc4 + iVar5),*(void **)(&stack0xffffffc8 + iVar5) ,*(size_t *)(Help2 + iVar5 + -0x20)); *(TQueryManagerConnection **)(&stack0xffffffc4 + iVar5) = this; *(undefined4 *)((int)&uStackY_40 + iVar5) = 0x80e1340; connect(*(TQueryManagerConnection **)(&stack0xffffffc4 + iVar5), *(int *)(&stack0xffffffc8 + iVar5),*(sockaddr **)(Help2 + iVar5 + -0x20) ,*(socklen_t *)(&stack0xffffffd0 + iVar5)); puVar7 = this->Buffer; *(undefined1 **)(&stack0xffffffc8 + iVar5) = auStack_2c + iVar5; *(sockaddr **)(Help2 + iVar5 + -0x20) = __buf; *(uchar **)(&stack0xffffffc4 + iVar5) = puVar7; *(undefined4 *)((int)&uStackY_40 + iVar5) = 0x80e1356; memcpy(*(void **)(&stack0xffffffc4 + iVar5),*(void **)(&stack0xffffffc8 + iVar5) ,*(size_t *)(Help2 + iVar5 + -0x20)); } else { uStackY_40 = 0x80e0ff6; pvVar2 = operator_new__((uint)__buf); puVar7 = this->Buffer; uStackY_40 = 0x80e100e; psVar3 = __buf; memcpy(pvVar2,puVar7,(size_t)__buf); uStackY_40 = 0x80e1019; connect(this,(int)puVar7,psVar3,in_stack_ffffffd0); uStackY_40 = 0x80e102f; memcpy(this->Buffer,pvVar2,(size_t)__buf); if (pvVar2 != (void *)0x0) { uStackY_40 = 0x80e103b; operator_delete__(pvVar2); } } if (this->Socket < 0) { return 3; } } uStackY_40 = 0x80e1069; psVar3 = (sockaddr *)write(this,(int)this->Buffer,__buf,in_stack_ffffffd0); if (psVar3 == __buf) { uStackY_40 = 0x80e1092; in_stack_ffffffd0 = Timeout; sVar4 = read(this,(int)(Help2 + 2),(void *)0x2,Timeout); if (sVar4 == 2) { pvVar2 = (void *)((uint)Help2[3] * 0x100 + (uint)Help2[2]); if (pvVar2 == (void *)0xffff) { uStackY_40 = 0x80e1241; sVar4 = read(this,(int)&local_18,(void *)0x4,Timeout); if (sVar4 != 4) { if (this->Socket < 0) { return 3; } uStackY_40 = 0x80e1263; iVar5 = close(this->Socket); if (iVar5 < 0) { uStackY_40 = 0x80e127b; __errno_location(); uStackY_40 = 0x80e128d; error(&DAT_0810dc00); } this->Socket = -1; return 3; } pvVar2 = (void *)((uint)local_18 + (uint)_local_17 * 0x100); } if ((pvVar2 == (void *)0x0) || (this->BufferSize < (int)pvVar2)) { if (-1 < this->Socket) { uStackY_40 = 0x80e114a; iVar5 = close(this->Socket); if (iVar5 < 0) { uStackY_40 = 0x80e115f; __errno_location(); uStackY_40 = 0x80e1171; error(&DAT_0810dc00); } this->Socket = -1; } uStackY_40 = 0x80e113d; error(&DAT_0810e120); return 3; } uStackY_40 = 0x80e1190; pvVar6 = (void *)read(this,(int)this->Buffer,pvVar2,Timeout); if (pvVar6 == pvVar2) { (this->ReadBuffer).Size = (int)pvVar6; (this->ReadBuffer).Position = 0; // try { // try from 080e11f7 to 080e11fb has its CatchHandler @ 080e1415 uStackY_40 = 0x80e11fc; bVar1 = TReadBuffer::readByte(&this->ReadBuffer); if (bVar1 == 3) { uStackY_40 = 0x80e121a; error("TQueryManagerConnection::executeQuery: Anfrage fehlgeschlagen.\n" ); return 3; } return (uint)bVar1; } if (-1 < this->Socket) { uStackY_40 = 0x80e11bb; iVar5 = close(this->Socket); if (iVar5 < 0) { uStackY_40 = 0x80e11d0; __errno_location(); uStackY_40 = 0x80e11e2; error(&DAT_0810dc00); } this->Socket = -1; } Text = "TQueryManagerConnection::executeQuery: Fehler beim Auslesen der Daten.\n"; goto LAB_080e0f4d; } if (-1 < this->Socket) { uStackY_40 = 0x80e10ce; iVar5 = close(this->Socket); if (iVar5 < 0) { uStackY_40 = 0x80e10e3; __errno_location(); uStackY_40 = 0x80e10f5; error(&DAT_0810dc00); } this->Socket = -1; } if (sVar4 == -2) { return 3; } if (local_21 == '\0') { return 3; } } else { if (-1 < this->Socket) { uStackY_40 = 0x80e12e8; iVar5 = close(this->Socket); if (iVar5 < 0) { uStackY_40 = 0x80e12fd; __errno_location(); uStackY_40 = 0x80e130f; error(&DAT_0810dc00); } this->Socket = -1; } if (local_21 == '\0') { Text = "TQueryManagerConnection::executeQuery: Fehler beim Abschicken der Anfrage.\n"; goto LAB_080e0f4d; } } local_21 = '\0'; } while( true ); } Text = "TQueryManagerConnection::executeQuery: Fehler beim Zusammenbauen der Anfrage.\n"; LAB_080e0f4d: uStackY_40 = 0x80e0f52; error(Text); return 3; } // DWARF original prototype: int checkAccountPassword(TQueryManagerConnection * this, ulong // AccountID, char * Password, char * IPAddress) int __thiscall TQueryManagerConnection::checkAccountPassword(TQueryManagerConnection *this) { TWriteBuffer *this_00; bool bVar1; byte bVar2; int iVar3; int FailureCode; int iVar4; uint uVar5; ulong in_stack_00000008; char *in_stack_0000000c; char *in_stack_00000010; this->QueryOk = true; this_00 = &this->WriteBuffer; (this->WriteBuffer).Position = 0; // try { // try from 080e1465 to 080e1479 has its CatchHandler @ 080e1510 TWriteBuffer::writeWord(this_00,0); TWriteBuffer::writeByte(this_00,'\n'); // try { // try from 080e1484 to 080e1488 has its CatchHandler @ 080e1550 TWriteBuffer::writeQuad(this_00,in_stack_00000008); // try { // try from 080e1493 to 080e1497 has its CatchHandler @ 080e1582 TWriteStream::writeString(&this_00->super_TWriteStream,in_stack_0000000c); // try { // try from 080e14a2 to 080e14a6 has its CatchHandler @ 080e15b2 TWriteStream::writeString(&this_00->super_TWriteStream,in_stack_00000010); iVar3 = executeQuery(this,0x1e,true); iVar4 = 0; if (iVar3 != 0) { if (iVar3 == 1) { // try { // try from 080e14dd to 080e14e1 has its CatchHandler @ 080e15e2 bVar2 = TReadBuffer::readByte(&this->ReadBuffer); uVar5 = (uint)bVar2; bVar1 = false; if ((uVar5 != 0) && (uVar5 < 5)) { bVar1 = true; } if (bVar1) { return uVar5; } error(&DAT_0810e2e0,uVar5); } iVar4 = -1; } return iVar4; } // WARNING: Variable defined which should be unmapped: PrivateWorld_local // DWARF original prototype: int loginAdmin(TQueryManagerConnection * this, ulong AccountID, bool // PrivateWorld, int * NumberOfCharacters, char[30] * Characters, char[30] * Worlds, uchar[4] * // IPAddresses, ushort * Ports, ushort * PremiumDaysLeft) int __thiscall TQueryManagerConnection::loginAdmin (TQueryManagerConnection *this,ulong AccountID,bool PrivateWorld,int *NumberOfCharacters, char (*Characters) [30],char (*Worlds) [30],uchar (*IPAddresses) [4],ushort *Ports, ushort *PremiumDaysLeft) { TWriteBuffer *this_00; TReadBuffer *this_01; byte bVar1; ushort uVar2; int iVar3; bool PrivateWorld_local; this_00 = &this->WriteBuffer; this->QueryOk = true; (this->WriteBuffer).Position = 0; // try { // try from 080e163c to 080e1650 has its CatchHandler @ 080e1782 TWriteBuffer::writeWord(this_00,0); TWriteBuffer::writeByte(this_00,'\f'); // try { // try from 080e165b to 080e165f has its CatchHandler @ 080e17c0 TWriteBuffer::writeQuad(this_00,AccountID); TWriteBuffer::writeByte(this_00,PrivateWorld); iVar3 = executeQuery(this,0x1e,true); if (iVar3 == 0) { this_01 = &this->ReadBuffer; // try { // try from 080e16d6 to 080e16da has its CatchHandler @ 080e17f2 bVar1 = TReadBuffer::readByte(this_01); iVar3 = 0; *NumberOfCharacters = (uint)bVar1; if (bVar1 != 0) { do { // try { // try from 080e1720 to 080e1724 has its CatchHandler @ 080e181d TReadStream::readString(&this_01->super_TReadStream,Characters[iVar3],0x1e); // try { // try from 080e1744 to 080e1748 has its CatchHandler @ 080e184f TReadStream::readString(&this_01->super_TReadStream,Worlds[iVar3],0x1e); // try { // try from 080e175e to 080e1762 has its CatchHandler @ 080e1885 TReadBuffer::readBytes(this_01,IPAddresses[iVar3],4); // try { // try from 080e1766 to 080e176a has its CatchHandler @ 080e18b5 uVar2 = TReadBuffer::readWord(this_01); Ports[iVar3] = uVar2; iVar3 = iVar3 + 1; } while (iVar3 < *NumberOfCharacters); } // try { // try from 080e16ef to 080e16f3 has its CatchHandler @ 080e18e7 uVar2 = TReadBuffer::readWord(this_01); *PremiumDaysLeft = uVar2; iVar3 = 0; } else { if (iVar3 == 1) { // try { // try from 080e16a7 to 080e16ab has its CatchHandler @ 080e1919 bVar1 = TReadBuffer::readByte(&this->ReadBuffer); if (bVar1 == 1) { return 1; } error(&DAT_0810e340,(uint)bVar1); } iVar3 = -1; } return iVar3; } // DWARF original prototype: int loadWorldConfig(TQueryManagerConnection * this, int * WorldType, // int * RebootTime, int * IPAddress, int * Port, int * MaxPlayers, int * PremiumPlayerBuffer, int * // MaxNewbies, int * PremiumNewbieBuffer) int __thiscall TQueryManagerConnection::loadWorldConfig(TQueryManagerConnection *this) { TReadBuffer *this_00; byte bVar1; ushort uVar2; int iVar3; uint *in_stack_00000008; int *in_stack_0000000c; int in_stack_00000010; uint *in_stack_00000014; uint *in_stack_00000018; uint *in_stack_0000001c; uint *in_stack_00000020; uint *in_stack_00000024; this->QueryOk = true; (this->WriteBuffer).Position = 0; // try { // try from 080e1975 to 080e1989 has its CatchHandler @ 080e1a56 TWriteBuffer::writeWord(&this->WriteBuffer,0); TWriteBuffer::writeByte(&this->WriteBuffer,'5'); iVar3 = executeQuery(this,0x1e,true); if (iVar3 == 0) { this_00 = &this->ReadBuffer; // try { // try from 080e19b9 to 080e19bd has its CatchHandler @ 080e1a90 bVar1 = TReadBuffer::readByte(this_00); *in_stack_00000008 = (uint)bVar1; // try { // try from 080e19cc to 080e19d0 has its CatchHandler @ 080e1abb bVar1 = TReadBuffer::readByte(this_00); iVar3 = 0; *in_stack_0000000c = (uint)bVar1 * 0x3c; do { // try { // try from 080e19e8 to 080e19ec has its CatchHandler @ 080e1ae6 bVar1 = TReadBuffer::readByte(this_00); *(uint *)(in_stack_00000010 + iVar3 * 4) = (uint)bVar1; iVar3 = iVar3 + 1; } while (iVar3 < 4); // try { // try from 080e1a02 to 080e1a06 has its CatchHandler @ 080e1b14 uVar2 = TReadBuffer::readWord(this_00); *in_stack_00000014 = (uint)uVar2; // try { // try from 080e1a12 to 080e1a16 has its CatchHandler @ 080e1b46 uVar2 = TReadBuffer::readWord(this_00); *in_stack_00000018 = (uint)uVar2; // try { // try from 080e1a22 to 080e1a26 has its CatchHandler @ 080e1b78 uVar2 = TReadBuffer::readWord(this_00); *in_stack_0000001c = (uint)uVar2; // try { // try from 080e1a32 to 080e1a36 has its CatchHandler @ 080e1baa uVar2 = TReadBuffer::readWord(this_00); *in_stack_00000020 = (uint)uVar2; // try { // try from 080e1a42 to 080e1a46 has its CatchHandler @ 080e1bdc uVar2 = TReadBuffer::readWord(this_00); *in_stack_00000024 = (uint)uVar2; iVar3 = 0; } else { iVar3 = -1; } return iVar3; } // DWARF original prototype: int loginGame(TQueryManagerConnection * this, ulong AccountID, char * // PlayerName, char * Password, char * IPAddress, bool PrivateWorld, bool PremiumAccountRequired, // bool GamemasterRequired, ulong * CharacterID, int * Sex, char * Guild, char * Rank, char * Title, // int * NumberOfBuddies, ulong * BuddyIDs, char[30] * BuddyNames, uchar * Rights, bool * // PremiumAccountActivated) int __thiscall TQueryManagerConnection::loginGame (TQueryManagerConnection *this,ulong AccountID,char *PlayerName,char *Password, char *IPAddress,bool PrivateWorld,bool PremiumAccountRequired,bool GamemasterRequired, ulong *CharacterID,int *Sex,char *Guild,char *Rank,char *Title,int *NumberOfBuddies, ulong *BuddyIDs,char (*BuddyNames) [30],uchar *Rights,bool *PremiumAccountActivated) { TWriteBuffer *this_00; byte bVar1; uchar uVar2; int iVar3; ulong uVar4; int iVar5; int iVar6; int FailureCode; uint uVar7; int *piVar8; int i_1; byte *pbVar9; TReadBuffer *this_01; byte *pbVar10; undefined1 uVar11; bool bVar12; undefined1 uVar13; bool bVar14; byte local_60; int Right; uint local_50; int i_2; int NumberOfRights; bool GamemasterRequired_local; bool PremiumAccountRequired_local; int iStack_40; bool PrivateWorld_local; byte local_3c [4]; char RightName [30]; this_00 = &this->WriteBuffer; this->QueryOk = true; (this->WriteBuffer).Position = 0; // try { // try from 080e1c4a to 080e1c5e has its CatchHandler @ 080e2c00 TWriteBuffer::writeWord(this_00,0); TWriteBuffer::writeByte(this_00,'\x14'); // try { // try from 080e1c69 to 080e1c6d has its CatchHandler @ 080e2c40 TWriteBuffer::writeQuad(this_00,AccountID); // try { // try from 080e1c78 to 080e1c7c has its CatchHandler @ 080e2c72 TWriteStream::writeString(&this_00->super_TWriteStream,PlayerName); // try { // try from 080e1c87 to 080e1c8b has its CatchHandler @ 080e2ca2 TWriteStream::writeString(&this_00->super_TWriteStream,Password); // try { // try from 080e1c96 to 080e1c9a has its CatchHandler @ 080e2cd2 TWriteStream::writeString(&this_00->super_TWriteStream,IPAddress); TWriteBuffer::writeByte(this_00,PrivateWorld); TWriteBuffer::writeByte(this_00,PremiumAccountRequired); TWriteBuffer::writeByte(this_00,GamemasterRequired); iVar3 = executeQuery(this,0x78,true); if (iVar3 == 0) { this_01 = &this->ReadBuffer; // try { // try from 080e1d4c to 080e1d50 has its CatchHandler @ 080e2d06 uVar4 = TReadBuffer::readQuad(this_01); *CharacterID = uVar4; // try { // try from 080e1d6d to 080e1d71 has its CatchHandler @ 080e2d38 TReadStream::readString(&this_01->super_TReadStream,PlayerName,0x1e); // try { // try from 080e1d78 to 080e1d7c has its CatchHandler @ 080e2d6e bVar1 = TReadBuffer::readByte(this_01); *Sex = (uint)bVar1; // try { // try from 080e1d9d to 080e1da1 has its CatchHandler @ 080e2da0 TReadStream::readString(&this_01->super_TReadStream,Guild,0x1e); // try { // try from 080e1db7 to 080e1dbb has its CatchHandler @ 080e2dd6 TReadStream::readString(&this_01->super_TReadStream,Rank,0x1e); // try { // try from 080e1dd1 to 080e1dd5 has its CatchHandler @ 080e2e0c TReadStream::readString(&this_01->super_TReadStream,Title,0x1e); // try { // try from 080e1ddc to 080e1de0 has its CatchHandler @ 080e2e42 bVar1 = TReadBuffer::readByte(this_01); *NumberOfBuddies = (uint)bVar1; if (100 < bVar1) { error(&DAT_0810e400,*NumberOfBuddies,PlayerName); } iVar3 = 0; while( true ) { iStack_40 = 100; piVar8 = &stack0xffffffc0; if (*NumberOfBuddies < 0x65) { piVar8 = NumberOfBuddies; } if (*piVar8 <= iVar3) break; // try { // try from 080e1e16 to 080e1e1a has its CatchHandler @ 080e2e74 uVar4 = TReadBuffer::readQuad(this_01); BuddyIDs[iVar3] = uVar4; // try { // try from 080e1e42 to 080e1e46 has its CatchHandler @ 080e2ea6 TReadStream::readString(&this_01->super_TReadStream,BuddyNames[iVar3],0x1e); iVar3 = iVar3 + 1; } iVar3 = 100; if (100 < *NumberOfBuddies) { do { // try { // try from 080e2bad to 080e2bb1 has its CatchHandler @ 080e2ed9 TReadBuffer::readQuad(this_01); // try { // try from 080e2bc7 to 080e2bcb has its CatchHandler @ 080e2f09 TReadStream::readString(&this_01->super_TReadStream,(char *)local_3c,0x1e); iVar3 = iVar3 + 1; } while (iVar3 < *NumberOfBuddies); } // try { // try from 080e1e5d to 080e1e61 has its CatchHandler @ 080e2f3c bVar1 = TReadBuffer::readByte(this_01); uVar7 = (uint)bVar1; local_50 = 0; uVar11 = uVar7 != 0; uVar13 = uVar7 == 0; if (uVar7 != 0) { do { // try { // try from 080e1e97 to 080e1e9b has its CatchHandler @ 080e2f6e TReadStream::readString(&this_01->super_TReadStream,(char *)local_3c,0x1e); iVar3 = 0x10; pbVar9 = local_3c; pbVar10 = (byte *)"PREMIUM_ACCOUNT"; do { if (iVar3 == 0) break; iVar3 = iVar3 + -1; uVar11 = *pbVar9 < *pbVar10; uVar13 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while ((bool)uVar13); iVar3 = 0; if (!(bool)uVar13) { iVar3 = -1; } iVar5 = 9; pbVar9 = local_3c; pbVar10 = (byte *)"NOTATION"; do { if (iVar5 == 0) break; iVar5 = iVar5 + -1; uVar11 = *pbVar9 < *pbVar10; uVar13 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while ((bool)uVar13); iVar6 = 9; iVar5 = 1; if (!(bool)uVar13) { iVar5 = iVar3; } pbVar9 = local_3c; pbVar10 = (byte *)"NAMELOCK"; do { if (iVar6 == 0) break; iVar6 = iVar6 + -1; uVar11 = *pbVar9 < *pbVar10; uVar13 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while ((bool)uVar13); iVar6 = 0x11; iVar3 = 2; if (!(bool)uVar13) { iVar3 = iVar5; } pbVar9 = local_3c; pbVar10 = (byte *)"STATEMENT_REPORT"; do { if (iVar6 == 0) break; iVar6 = iVar6 + -1; uVar11 = *pbVar9 < *pbVar10; uVar13 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while ((bool)uVar13); iVar6 = 0xb; iVar5 = 3; if (!(bool)uVar13) { iVar5 = iVar3; } pbVar9 = local_3c; pbVar10 = (byte *)0x810fcf3; do { if (iVar6 == 0) break; iVar6 = iVar6 + -1; uVar11 = *pbVar9 < *pbVar10; uVar13 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while ((bool)uVar13); iVar6 = 0xe; iVar3 = 4; if (!(bool)uVar13) { iVar3 = iVar5; } pbVar9 = local_3c; pbVar10 = (byte *)"FINAL_WARNING"; do { if (iVar6 == 0) break; iVar6 = iVar6 + -1; uVar11 = *pbVar9 < *pbVar10; uVar13 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while ((bool)uVar13); iVar6 = 0xe; iVar5 = 5; if (!(bool)uVar13) { iVar5 = iVar3; } pbVar9 = local_3c; pbVar10 = (byte *)"IP_BANISHMENT"; do { if (iVar6 == 0) break; iVar6 = iVar6 + -1; uVar11 = *pbVar9 < *pbVar10; uVar13 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while ((bool)uVar13); iVar6 = 5; iVar3 = 6; if (!(bool)uVar13) { iVar3 = iVar5; } pbVar9 = local_3c; pbVar10 = &DAT_0810fb59; do { if (iVar6 == 0) break; iVar6 = iVar6 + -1; uVar11 = *pbVar9 < *pbVar10; uVar13 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while ((bool)uVar13); iVar6 = 0xe; iVar5 = 7; if (!(bool)uVar13) { iVar5 = iVar3; } pbVar9 = local_3c; pbVar10 = (byte *)"HOME_TELEPORT"; do { if (iVar6 == 0) break; iVar6 = iVar6 + -1; uVar11 = *pbVar9 < *pbVar10; uVar13 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while ((bool)uVar13); iVar6 = 0x15; iVar3 = 8; if (!(bool)uVar13) { iVar3 = iVar5; } pbVar9 = local_3c; pbVar10 = (byte *)"CLEAR_CHARACTER_INFO"; do { if (iVar6 == 0) break; iVar6 = iVar6 + -1; uVar11 = *pbVar9 < *pbVar10; uVar13 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while ((bool)uVar13); bVar12 = (!(bool)uVar11 && !(bool)uVar13) < (byte)uVar11; bVar14 = (!(bool)uVar11 && !(bool)uVar13) == (bool)uVar11; if (bVar14) { iVar3 = -2; } iVar5 = 0xd; pbVar9 = local_3c; pbVar10 = (byte *)"CLEAR_GUILDS"; do { if (iVar5 == 0) break; iVar5 = iVar5 + -1; bVar12 = *pbVar9 < *pbVar10; bVar14 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while (bVar14); if (bVar14) { iVar3 = -2; } iVar5 = 0xe; pbVar9 = local_3c; pbVar10 = (byte *)"DELETE_GUILDS"; do { if (iVar5 == 0) break; iVar5 = iVar5 + -1; bVar12 = *pbVar9 < *pbVar10; bVar14 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while (bVar14); if (bVar14) { iVar3 = -2; } iVar5 = 0xd; pbVar9 = local_3c; pbVar10 = (byte *)"BOARD_REPORT"; do { if (iVar5 == 0) break; iVar5 = iVar5 + -1; bVar12 = *pbVar9 < *pbVar10; bVar14 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while (bVar14); if (bVar14) { iVar3 = -2; } iVar5 = 0x11; pbVar9 = local_3c; pbVar10 = (byte *)"BOARD_MODERATION"; do { if (iVar5 == 0) break; iVar5 = iVar5 + -1; bVar12 = *pbVar9 < *pbVar10; bVar14 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while (bVar14); if (bVar14) { iVar3 = -2; } iVar5 = 0x15; pbVar9 = local_3c; pbVar10 = (byte *)"BOARD_ANONYMOUS_EDIT"; do { if (iVar5 == 0) break; iVar5 = iVar5 + -1; bVar12 = *pbVar9 < *pbVar10; bVar14 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while (bVar14); if (bVar14) { iVar3 = -2; } iVar5 = 0x13; pbVar9 = local_3c; pbVar10 = (byte *)"BOARD_PRECONFIRMED"; do { if (iVar5 == 0) break; iVar5 = iVar5 + -1; bVar12 = *pbVar9 < *pbVar10; bVar14 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while (bVar14); if (bVar14) { iVar3 = -2; } iVar5 = 0xd; pbVar9 = local_3c; pbVar10 = (byte *)"KEEP_ACCOUNT"; do { if (iVar5 == 0) break; iVar5 = iVar5 + -1; bVar12 = *pbVar9 < *pbVar10; bVar14 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while (bVar14); if (bVar14) { iVar3 = -2; } iVar5 = 0x15; pbVar9 = local_3c; pbVar10 = (byte *)"GAMEMASTER_BROADCAST"; do { if (iVar5 == 0) break; iVar5 = iVar5 + -1; bVar12 = *pbVar9 < *pbVar10; bVar14 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while (bVar14); iVar5 = 9; if (!bVar14) { iVar5 = iVar3; } iVar3 = 0x14; pbVar9 = local_3c; pbVar10 = (byte *)"ANONYMOUS_BROADCAST"; do { if (iVar3 == 0) break; iVar3 = iVar3 + -1; bVar12 = *pbVar9 < *pbVar10; bVar14 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while (bVar14); iVar3 = 10; if (!bVar14) { iVar3 = iVar5; } iVar5 = 8; pbVar9 = local_3c; pbVar10 = (byte *)"INVITED"; do { if (iVar5 == 0) break; iVar5 = iVar5 + -1; bVar12 = *pbVar9 < *pbVar10; bVar14 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while (bVar14); if (bVar14) { iVar3 = -2; } iVar5 = 0xe; pbVar9 = local_3c; pbVar10 = (byte *)"NO_BANISHMENT"; do { if (iVar5 == 0) break; iVar5 = iVar5 + -1; bVar12 = *pbVar9 < *pbVar10; bVar14 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while (bVar14); iVar5 = 0xb; if (!bVar14) { iVar5 = iVar3; } iVar3 = 0x12; pbVar9 = local_3c; pbVar10 = (byte *)"ALLOW_MULTICLIENT"; do { if (iVar3 == 0) break; iVar3 = iVar3 + -1; bVar12 = *pbVar9 < *pbVar10; bVar14 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while (bVar14); if (bVar14) { iVar5 = -2; } iVar3 = 0xf; pbVar9 = local_3c; pbVar10 = (byte *)"CIPWATCH_ADMIN"; do { if (iVar3 == 0) break; iVar3 = iVar3 + -1; bVar12 = *pbVar9 < *pbVar10; bVar14 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while (bVar14); if (bVar14) { iVar5 = -2; } iVar3 = 0xe; pbVar9 = local_3c; pbVar10 = (byte *)"CIPWATCH_USER"; do { if (iVar3 == 0) break; iVar3 = iVar3 + -1; bVar12 = *pbVar9 < *pbVar10; bVar14 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while (bVar14); if (bVar14) { iVar5 = -2; } iVar3 = 0x16; pbVar9 = local_3c; pbVar10 = (byte *)"CREATECHAR_GAMEMASTER"; do { if (iVar3 == 0) break; iVar3 = iVar3 + -1; bVar12 = *pbVar9 < *pbVar10; bVar14 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while (bVar14); if (bVar14) { iVar5 = -2; } iVar3 = 0xf; pbVar9 = local_3c; pbVar10 = (byte *)"CREATECHAR_GOD"; do { if (iVar3 == 0) break; iVar3 = iVar3 + -1; bVar12 = *pbVar9 < *pbVar10; bVar14 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while (bVar14); if (bVar14) { iVar5 = -2; } iVar3 = 0x10; pbVar9 = local_3c; pbVar10 = (byte *)"CREATECHAR_TEST"; do { if (iVar3 == 0) break; iVar3 = iVar3 + -1; bVar12 = *pbVar9 < *pbVar10; bVar14 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while (bVar14); if (bVar14) { iVar5 = -2; } iVar3 = 0xd; pbVar9 = local_3c; pbVar10 = (byte *)"VIEW_ACCOUNT"; do { if (iVar3 == 0) break; iVar3 = iVar3 + -1; bVar12 = *pbVar9 < *pbVar10; bVar14 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while (bVar14); if (bVar14) { iVar5 = -2; } iVar3 = 0x17; pbVar9 = local_3c; pbVar10 = (byte *)"VIEW_GAMEMASTER_RECORD"; do { if (iVar3 == 0) break; iVar3 = iVar3 + -1; bVar12 = *pbVar9 < *pbVar10; bVar14 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while (bVar14); if (bVar14) { iVar5 = -2; } iVar3 = 0x15; pbVar9 = local_3c; pbVar10 = (byte *)"VIEW_CRIMINAL_RECORD"; do { if (iVar3 == 0) break; iVar3 = iVar3 + -1; bVar12 = *pbVar9 < *pbVar10; bVar14 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while (bVar14); if (bVar14) { iVar5 = -2; } iVar3 = 0xf; pbVar9 = local_3c; pbVar10 = (byte *)"VIEW_LOG_FILES"; do { if (iVar3 == 0) break; iVar3 = iVar3 + -1; bVar12 = *pbVar9 < *pbVar10; bVar14 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while (bVar14); if (bVar14) { iVar5 = -2; } iVar3 = 0x12; pbVar9 = local_3c; pbVar10 = (byte *)"LOG_COMMUNICATION"; do { if (iVar3 == 0) break; iVar3 = iVar3 + -1; bVar12 = *pbVar9 < *pbVar10; bVar14 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while (bVar14); iVar3 = 0xd; if (!bVar14) { iVar3 = iVar5; } iVar5 = 0x12; pbVar9 = local_3c; pbVar10 = (byte *)"MODIFY_BANISHMENT"; do { if (iVar5 == 0) break; iVar5 = iVar5 + -1; bVar12 = *pbVar9 < *pbVar10; bVar14 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while (bVar14); if (bVar14) { iVar3 = -2; } iVar5 = 0x18; pbVar9 = local_3c; pbVar10 = (byte *)"READ_GAMEMASTER_CHANNEL"; do { if (iVar5 == 0) break; iVar5 = iVar5 + -1; bVar12 = *pbVar9 < *pbVar10; bVar14 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while (bVar14); iVar5 = 0xe; if (!bVar14) { iVar5 = iVar3; } iVar3 = 0x13; pbVar9 = local_3c; pbVar10 = (byte *)"READ_TUTOR_CHANNEL"; do { if (iVar3 == 0) break; iVar3 = iVar3 + -1; bVar12 = *pbVar9 < *pbVar10; bVar14 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while (bVar14); iVar3 = 0xf; if (!bVar14) { iVar3 = iVar5; } iVar5 = 0x17; pbVar9 = local_3c; pbVar10 = (byte *)"HIGHLIGHT_HELP_CHANNEL"; do { if (iVar5 == 0) break; iVar5 = iVar5 + -1; bVar12 = *pbVar9 < *pbVar10; bVar14 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while (bVar14); iVar5 = 0x10; if (!bVar14) { iVar5 = iVar3; } iVar3 = 0x10; pbVar9 = local_3c; pbVar10 = (byte *)"SEND_BUGREPORTS"; do { if (iVar3 == 0) break; iVar3 = iVar3 + -1; bVar12 = *pbVar9 < *pbVar10; bVar14 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while (bVar14); iVar3 = 0x11; if (!bVar14) { iVar3 = iVar5; } iVar5 = 0xc; pbVar9 = local_3c; pbVar10 = (byte *)"APPOINT_CIP"; do { if (iVar5 == 0) break; iVar5 = iVar5 + -1; bVar12 = *pbVar9 < *pbVar10; bVar14 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while (bVar14); if (bVar14) { iVar3 = -2; } iVar5 = 0xc; pbVar9 = local_3c; pbVar10 = (byte *)"APPOINT_SGM"; do { if (iVar5 == 0) break; iVar5 = iVar5 + -1; bVar12 = *pbVar9 < *pbVar10; bVar14 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while (bVar14); if (bVar14) { iVar3 = -2; } iVar5 = 0xc; pbVar9 = local_3c; pbVar10 = (byte *)"APPOINT_JGM"; do { if (iVar5 == 0) break; iVar5 = iVar5 + -1; bVar12 = *pbVar9 < *pbVar10; bVar14 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while (bVar14); if (bVar14) { iVar3 = -2; } iVar5 = 0x10; pbVar9 = local_3c; pbVar10 = (byte *)"APPOINT_SENATOR"; do { if (iVar5 == 0) break; iVar5 = iVar5 + -1; bVar12 = *pbVar9 < *pbVar10; bVar14 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while (bVar14); if (bVar14) { iVar3 = -2; } iVar5 = 0x13; pbVar9 = local_3c; pbVar10 = (byte *)"SET_ACCOUNT_RIGHTS"; do { if (iVar5 == 0) break; iVar5 = iVar5 + -1; bVar12 = *pbVar9 < *pbVar10; bVar14 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while (bVar14); if (bVar14) { iVar3 = -2; } iVar5 = 0x15; pbVar9 = local_3c; pbVar10 = (byte *)"SET_CHARACTER_RIGHTS"; do { if (iVar5 == 0) break; iVar5 = iVar5 + -1; bVar12 = *pbVar9 < *pbVar10; bVar14 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while (bVar14); if (bVar14) { iVar3 = -2; } iVar5 = 0x18; pbVar9 = local_3c; pbVar10 = (byte *)"SET_ACCOUNTGROUP_RIGHTS"; do { if (iVar5 == 0) break; iVar5 = iVar5 + -1; bVar12 = *pbVar9 < *pbVar10; bVar14 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while (bVar14); if (bVar14) { iVar3 = -2; } iVar5 = 0x1a; pbVar9 = local_3c; pbVar10 = (byte *)"SET_CHARACTERGROUP_RIGHTS"; do { if (iVar5 == 0) break; iVar5 = iVar5 + -1; bVar12 = *pbVar9 < *pbVar10; bVar14 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while (bVar14); iVar6 = 0xf; iVar5 = -2; if (!bVar14) { iVar5 = iVar3; } pbVar9 = local_3c; pbVar10 = (byte *)"NAME_INSULTING"; do { if (iVar6 == 0) break; iVar6 = iVar6 + -1; bVar12 = *pbVar9 < *pbVar10; bVar14 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while (bVar14); iVar6 = 0xe; iVar3 = 0x12; if (!bVar14) { iVar3 = iVar5; } pbVar9 = local_3c; pbVar10 = (byte *)"NAME_SENTENCE"; do { if (iVar6 == 0) break; iVar6 = iVar6 + -1; bVar12 = *pbVar9 < *pbVar10; bVar14 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while (bVar14); iVar6 = 0x19; iVar5 = 0x13; if (!bVar14) { iVar5 = iVar3; } pbVar9 = local_3c; pbVar10 = (byte *)"NAME_NONSENSICAL_LETTERS"; do { if (iVar6 == 0) break; iVar6 = iVar6 + -1; bVar12 = *pbVar9 < *pbVar10; bVar14 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while (bVar14); iVar6 = 0x15; iVar3 = 0x14; if (!bVar14) { iVar3 = iVar5; } pbVar9 = local_3c; pbVar10 = (byte *)"NAME_BADLY_FORMATTED"; do { if (iVar6 == 0) break; iVar6 = iVar6 + -1; bVar12 = *pbVar9 < *pbVar10; bVar14 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while (bVar14); iVar6 = 0xf; iVar5 = 0x15; if (!bVar14) { iVar5 = iVar3; } pbVar9 = local_3c; pbVar10 = (byte *)"NAME_NO_PERSON"; do { if (iVar6 == 0) break; iVar6 = iVar6 + -1; bVar12 = *pbVar9 < *pbVar10; bVar14 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while (bVar14); iVar6 = 0xf; iVar3 = 0x16; if (!bVar14) { iVar3 = iVar5; } pbVar9 = local_3c; pbVar10 = (byte *)"NAME_CELEBRITY"; do { if (iVar6 == 0) break; iVar6 = iVar6 + -1; bVar12 = *pbVar9 < *pbVar10; bVar14 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while (bVar14); iVar6 = 0xd; iVar5 = 0x17; if (!bVar14) { iVar5 = iVar3; } pbVar9 = local_3c; pbVar10 = (byte *)"NAME_COUNTRY"; do { if (iVar6 == 0) break; iVar6 = iVar6 + -1; bVar12 = *pbVar9 < *pbVar10; bVar14 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while (bVar14); iVar6 = 0x13; iVar3 = 0x18; if (!bVar14) { iVar3 = iVar5; } pbVar9 = local_3c; pbVar10 = (byte *)"NAME_FAKE_IDENTITY"; do { if (iVar6 == 0) break; iVar6 = iVar6 + -1; bVar12 = *pbVar9 < *pbVar10; bVar14 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while (bVar14); iVar6 = 0x13; iVar5 = 0x19; if (!bVar14) { iVar5 = iVar3; } pbVar9 = local_3c; pbVar10 = (byte *)"NAME_FAKE_POSITION"; do { if (iVar6 == 0) break; iVar6 = iVar6 + -1; bVar12 = *pbVar9 < *pbVar10; bVar14 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while (bVar14); iVar6 = 0x14; iVar3 = 0x1a; if (!bVar14) { iVar3 = iVar5; } pbVar9 = local_3c; pbVar10 = (byte *)"STATEMENT_INSULTING"; do { if (iVar6 == 0) break; iVar6 = iVar6 + -1; bVar12 = *pbVar9 < *pbVar10; bVar14 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while (bVar14); iVar5 = 0x1b; if (!bVar14) { iVar5 = iVar3; } iVar3 = 0x13; pbVar9 = local_3c; pbVar10 = (byte *)"STATEMENT_SPAMMING"; do { if (iVar3 == 0) break; iVar3 = iVar3 + -1; bVar12 = *pbVar9 < *pbVar10; bVar14 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while (bVar14); iVar6 = 0x1a; iVar3 = 0x1c; if (!bVar14) { iVar3 = iVar5; } pbVar9 = local_3c; pbVar10 = (byte *)"STATEMENT_ADVERT_OFFTOPIC"; do { if (iVar6 == 0) break; iVar6 = iVar6 + -1; bVar12 = *pbVar9 < *pbVar10; bVar14 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while (bVar14); iVar6 = 0x17; iVar5 = 0x1d; if (!bVar14) { iVar5 = iVar3; } pbVar9 = local_3c; pbVar10 = (byte *)"STATEMENT_ADVERT_MONEY"; do { if (iVar6 == 0) break; iVar6 = iVar6 + -1; bVar12 = *pbVar9 < *pbVar10; bVar14 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while (bVar14); iVar6 = 0x16; iVar3 = 0x1e; if (!bVar14) { iVar3 = iVar5; } pbVar9 = local_3c; pbVar10 = (byte *)"STATEMENT_NON_ENGLISH"; do { if (iVar6 == 0) break; iVar6 = iVar6 + -1; bVar12 = *pbVar9 < *pbVar10; bVar14 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while (bVar14); iVar6 = 0x1b; iVar5 = 0x1f; if (!bVar14) { iVar5 = iVar3; } pbVar9 = local_3c; pbVar10 = (byte *)"STATEMENT_CHANNEL_OFFTOPIC"; do { if (iVar6 == 0) break; iVar6 = iVar6 + -1; bVar12 = *pbVar9 < *pbVar10; bVar14 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while (bVar14); iVar6 = 0x1d; iVar3 = 0x20; if (!bVar14) { iVar3 = iVar5; } pbVar9 = local_3c; pbVar10 = (byte *)"STATEMENT_VIOLATION_INCITING"; do { if (iVar6 == 0) break; iVar6 = iVar6 + -1; bVar12 = *pbVar9 < *pbVar10; bVar14 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while (bVar14); iVar6 = 0x13; iVar5 = 0x21; if (!bVar14) { iVar5 = iVar3; } pbVar9 = local_3c; pbVar10 = (byte *)"CHEATING_BUG_ABUSE"; do { if (iVar6 == 0) break; iVar6 = iVar6 + -1; bVar12 = *pbVar9 < *pbVar10; bVar14 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while (bVar14); iVar6 = 0x17; iVar3 = 0x22; if (!bVar14) { iVar3 = iVar5; } pbVar9 = local_3c; pbVar10 = (byte *)"CHEATING_GAME_WEAKNESS"; do { if (iVar6 == 0) break; iVar6 = iVar6 + -1; bVar12 = *pbVar9 < *pbVar10; bVar14 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while (bVar14); iVar6 = 0x13; iVar5 = 0x23; if (!bVar14) { iVar5 = iVar3; } pbVar9 = local_3c; pbVar10 = (byte *)"CHEATING_MACRO_USE"; do { if (iVar6 == 0) break; iVar6 = iVar6 + -1; bVar12 = *pbVar9 < *pbVar10; bVar14 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while (bVar14); iVar3 = 0x24; if (!bVar14) { iVar3 = iVar5; } iVar5 = 0x19; pbVar9 = local_3c; pbVar10 = (byte *)"CHEATING_MODIFIED_CLIENT"; do { if (iVar5 == 0) break; iVar5 = iVar5 + -1; bVar12 = *pbVar9 < *pbVar10; bVar14 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while (bVar14); iVar6 = 0x11; iVar5 = 0x25; if (!bVar14) { iVar5 = iVar3; } pbVar9 = local_3c; pbVar10 = (byte *)"CHEATING_HACKING"; do { if (iVar6 == 0) break; iVar6 = iVar6 + -1; bVar12 = *pbVar9 < *pbVar10; bVar14 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while (bVar14); iVar6 = 0x16; iVar3 = 0x26; if (!bVar14) { iVar3 = iVar5; } pbVar9 = local_3c; pbVar10 = (byte *)"CHEATING_MULTI_CLIENT"; do { if (iVar6 == 0) break; iVar6 = iVar6 + -1; bVar12 = *pbVar9 < *pbVar10; bVar14 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while (bVar14); iVar6 = 0x19; iVar5 = 0x27; if (!bVar14) { iVar5 = iVar3; } pbVar9 = local_3c; pbVar10 = (byte *)"CHEATING_ACCOUNT_TRADING"; do { if (iVar6 == 0) break; iVar6 = iVar6 + -1; bVar12 = *pbVar9 < *pbVar10; bVar14 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while (bVar14); iVar6 = 0x19; iVar3 = 0x28; if (!bVar14) { iVar3 = iVar5; } pbVar9 = local_3c; pbVar10 = (byte *)"CHEATING_ACCOUNT_SHARING"; do { if (iVar6 == 0) break; iVar6 = iVar6 + -1; bVar12 = *pbVar9 < *pbVar10; bVar14 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while (bVar14); iVar6 = 0x17; iVar5 = 0x29; if (!bVar14) { iVar5 = iVar3; } pbVar9 = local_3c; pbVar10 = (byte *)"GAMEMASTER_THREATENING"; do { if (iVar6 == 0) break; iVar6 = iVar6 + -1; bVar12 = *pbVar9 < *pbVar10; bVar14 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while (bVar14); iVar6 = 0x16; iVar3 = 0x2a; if (!bVar14) { iVar3 = iVar5; } pbVar9 = local_3c; pbVar10 = (byte *)"GAMEMASTER_PRETENDING"; do { if (iVar6 == 0) break; iVar6 = iVar6 + -1; bVar12 = *pbVar9 < *pbVar10; bVar14 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while (bVar14); iVar6 = 0x15; iVar5 = 0x2b; if (!bVar14) { iVar5 = iVar3; } pbVar9 = local_3c; pbVar10 = (byte *)"GAMEMASTER_INFLUENCE"; do { if (iVar6 == 0) break; iVar6 = iVar6 + -1; bVar12 = *pbVar9 < *pbVar10; bVar14 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while (bVar14); iVar6 = 0x19; iVar3 = 0x2c; if (!bVar14) { iVar3 = iVar5; } pbVar9 = local_3c; pbVar10 = (byte *)"GAMEMASTER_FALSE_REPORTS"; do { if (iVar6 == 0) break; iVar6 = iVar6 + -1; bVar12 = *pbVar9 < *pbVar10; bVar14 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while (bVar14); iVar5 = 0x2d; if (!bVar14) { iVar5 = iVar3; } iVar3 = 0x1e; pbVar9 = local_3c; pbVar10 = (byte *)"KILLING_EXCESSIVE_UNJUSTIFIED"; do { if (iVar3 == 0) break; iVar3 = iVar3 + -1; bVar12 = *pbVar9 < *pbVar10; bVar14 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while (bVar14); iVar6 = 0x16; iVar3 = 0x2e; if (!bVar14) { iVar3 = iVar5; } pbVar9 = local_3c; pbVar10 = (byte *)"DESTRUCTIVE_BEHAVIOUR"; do { if (iVar6 == 0) break; iVar6 = iVar6 + -1; bVar12 = *pbVar9 < *pbVar10; bVar14 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while (bVar14); iVar6 = 0x11; iVar5 = 0x2f; if (!bVar14) { iVar5 = iVar3; } pbVar9 = local_3c; pbVar10 = (byte *)"SPOILING_AUCTION"; do { if (iVar6 == 0) break; iVar6 = iVar6 + -1; bVar12 = *pbVar9 < *pbVar10; bVar14 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while (bVar14); iVar6 = 0x10; iVar3 = 0x30; if (!bVar14) { iVar3 = iVar5; } pbVar9 = local_3c; pbVar10 = (byte *)"INVALID_PAYMENT"; do { if (iVar6 == 0) break; iVar6 = iVar6 + -1; bVar12 = *pbVar9 < *pbVar10; bVar14 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while (bVar14); iVar6 = 0x16; iVar5 = 0x31; if (!bVar14) { iVar5 = iVar3; } pbVar9 = local_3c; pbVar10 = (byte *)"TELEPORT_TO_CHARACTER"; do { if (iVar6 == 0) break; iVar6 = iVar6 + -1; bVar12 = *pbVar9 < *pbVar10; bVar14 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while (bVar14); iVar6 = 0x11; iVar3 = 0x32; if (!bVar14) { iVar3 = iVar5; } pbVar9 = local_3c; pbVar10 = (byte *)"TELEPORT_TO_MARK"; do { if (iVar6 == 0) break; iVar6 = iVar6 + -1; bVar12 = *pbVar9 < *pbVar10; bVar14 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while (bVar14); iVar6 = 0x12; iVar5 = 0x33; if (!bVar14) { iVar5 = iVar3; } pbVar9 = local_3c; pbVar10 = (byte *)"TELEPORT_VERTICAL"; do { if (iVar6 == 0) break; iVar6 = iVar6 + -1; bVar12 = *pbVar9 < *pbVar10; bVar14 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while (bVar14); iVar6 = 0x17; iVar3 = 0x34; if (!bVar14) { iVar3 = iVar5; } pbVar9 = local_3c; pbVar10 = (byte *)"TELEPORT_TO_COORDINATE"; do { if (iVar6 == 0) break; iVar6 = iVar6 + -1; bVar12 = *pbVar9 < *pbVar10; bVar14 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while (bVar14); iVar6 = 9; iVar5 = 0x35; if (!bVar14) { iVar5 = iVar3; } pbVar9 = local_3c; pbVar10 = (byte *)"LEVITATE"; do { if (iVar6 == 0) break; iVar6 = iVar6 + -1; bVar12 = *pbVar9 < *pbVar10; bVar14 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while (bVar14); iVar3 = 0x36; if (!bVar14) { iVar3 = iVar5; } iVar5 = 0x10; pbVar9 = local_3c; pbVar10 = (byte *)"SPECIAL_MOVEUSE"; do { if (iVar5 == 0) break; iVar5 = iVar5 + -1; bVar12 = *pbVar9 < *pbVar10; bVar14 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while (bVar14); iVar6 = 0x12; iVar5 = 0x37; if (!bVar14) { iVar5 = iVar3; } pbVar9 = local_3c; pbVar10 = (byte *)"MODIFY_GOSTRENGTH"; do { if (iVar6 == 0) break; iVar6 = iVar6 + -1; bVar12 = *pbVar9 < *pbVar10; bVar14 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while (bVar14); iVar6 = 0x10; iVar3 = 0x38; if (!bVar14) { iVar3 = iVar5; } pbVar9 = local_3c; pbVar10 = (byte *)"SHOW_COORDINATE"; do { if (iVar6 == 0) break; iVar6 = iVar6 + -1; bVar12 = *pbVar9 < *pbVar10; bVar14 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while (bVar14); iVar6 = 9; iVar5 = 0x39; if (!bVar14) { iVar5 = iVar3; } pbVar9 = local_3c; pbVar10 = (byte *)"RETRIEVE"; do { if (iVar6 == 0) break; iVar6 = iVar6 + -1; bVar12 = *pbVar9 < *pbVar10; bVar14 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while (bVar14); iVar6 = 0xd; iVar3 = 0x3a; if (!bVar14) { iVar3 = iVar5; } pbVar9 = local_3c; pbVar10 = (byte *)"INVULNERABLE"; do { if (iVar6 == 0) break; iVar6 = iVar6 + -1; bVar12 = *pbVar9 < *pbVar10; bVar14 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while (bVar14); iVar6 = 0xf; iVar5 = 0x3d; if (!bVar14) { iVar5 = iVar3; } pbVar9 = local_3c; pbVar10 = (byte *)"UNLIMITED_MANA"; do { if (iVar6 == 0) break; iVar6 = iVar6 + -1; bVar12 = *pbVar9 < *pbVar10; bVar14 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while (bVar14); iVar6 = 0xf; iVar3 = 0x3e; if (!bVar14) { iVar3 = iVar5; } pbVar9 = local_3c; pbVar10 = (byte *)"KEEP_INVENTORY"; do { if (iVar6 == 0) break; iVar6 = iVar6 + -1; bVar12 = *pbVar9 < *pbVar10; bVar14 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while (bVar14); iVar6 = 0xb; iVar5 = 0x3f; if (!bVar14) { iVar5 = iVar3; } pbVar9 = local_3c; pbVar10 = (byte *)"ALL_SPELLS"; do { if (iVar6 == 0) break; iVar6 = iVar6 + -1; bVar12 = *pbVar9 < *pbVar10; bVar14 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while (bVar14); iVar6 = 0x13; iVar3 = 0x40; if (!bVar14) { iVar3 = iVar5; } pbVar9 = local_3c; pbVar10 = (byte *)"UNLIMITED_CAPACITY"; do { if (iVar6 == 0) break; iVar6 = iVar6 + -1; bVar12 = *pbVar9 < *pbVar10; bVar14 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while (bVar14); iVar5 = 0x41; if (!bVar14) { iVar5 = iVar3; } iVar3 = 0xe; pbVar9 = local_3c; pbVar10 = (byte *)"ZERO_CAPACITY"; do { if (iVar3 == 0) break; iVar3 = iVar3 + -1; bVar12 = *pbVar9 < *pbVar10; bVar14 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while (bVar14); iVar6 = 0x12; iVar3 = 0x42; if (!bVar14) { iVar3 = iVar5; } pbVar9 = local_3c; pbVar10 = (byte *)"ATTACK_EVERYWHERE"; do { if (iVar6 == 0) break; iVar6 = iVar6 + -1; bVar12 = *pbVar9 < *pbVar10; bVar14 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while (bVar14); iVar6 = 10; iVar5 = 0x43; if (!bVar14) { iVar5 = iVar3; } pbVar9 = local_3c; pbVar10 = (byte *)"NO_ATTACK"; do { if (iVar6 == 0) break; iVar6 = iVar6 + -1; bVar12 = *pbVar9 < *pbVar10; bVar14 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while (bVar14); iVar6 = 9; iVar3 = 0x44; if (!bVar14) { iVar3 = iVar5; } pbVar9 = local_3c; pbVar10 = (byte *)"NO_RUNES"; do { if (iVar6 == 0) break; iVar6 = iVar6 + -1; bVar12 = *pbVar9 < *pbVar10; bVar14 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while (bVar14); iVar6 = 0x10; iVar5 = 0x45; if (!bVar14) { iVar5 = iVar3; } pbVar9 = local_3c; pbVar10 = (byte *)"NO_LOGOUT_BLOCK"; do { if (iVar6 == 0) break; iVar6 = iVar6 + -1; bVar12 = *pbVar9 < *pbVar10; bVar14 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while (bVar14); iVar6 = 0x12; iVar3 = 0x46; if (!bVar14) { iVar3 = iVar5; } pbVar9 = local_3c; pbVar10 = (byte *)"GAMEMASTER_OUTFIT"; do { if (iVar6 == 0) break; iVar6 = iVar6 + -1; bVar12 = *pbVar9 < *pbVar10; bVar14 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while (bVar14); iVar6 = 0xb; iVar5 = 0x47; if (!bVar14) { iVar5 = iVar3; } pbVar9 = local_3c; pbVar10 = (byte *)"ILLUMINATE"; do { if (iVar6 == 0) break; iVar6 = iVar6 + -1; bVar12 = *pbVar9 < *pbVar10; bVar14 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while (bVar14); iVar6 = 0x12; iVar3 = 0x48; if (!bVar14) { iVar3 = iVar5; } pbVar9 = local_3c; pbVar10 = (byte *)"CHANGE_PROFESSION"; do { if (iVar6 == 0) break; iVar6 = iVar6 + -1; bVar12 = *pbVar9 < *pbVar10; bVar14 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while (bVar14); iVar6 = 0x14; iVar5 = 0x49; if (!bVar14) { iVar5 = iVar3; } pbVar9 = local_3c; pbVar10 = (byte *)"IGNORED_BY_MONSTERS"; do { if (iVar6 == 0) break; iVar6 = iVar6 + -1; bVar12 = *pbVar9 < *pbVar10; bVar14 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while (bVar14); iVar3 = 0x4a; if (!bVar14) { iVar3 = iVar5; } iVar5 = 0x15; pbVar9 = local_3c; pbVar10 = (byte *)"SHOW_KEYHOLE_NUMBERS"; do { if (iVar5 == 0) break; iVar5 = iVar5 + -1; bVar12 = *pbVar9 < *pbVar10; bVar14 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while (bVar14); iVar6 = 0xf; iVar5 = 0x4b; if (!bVar14) { iVar5 = iVar3; } pbVar9 = local_3c; pbVar10 = (byte *)"CREATE_OBJECTS"; do { if (iVar6 == 0) break; iVar6 = iVar6 + -1; bVar12 = *pbVar9 < *pbVar10; bVar14 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while (bVar14); iVar6 = 0xd; iVar3 = 0x4c; if (!bVar14) { iVar3 = iVar5; } pbVar9 = local_3c; pbVar10 = (byte *)"CREATE_MONEY"; do { if (iVar6 == 0) break; iVar6 = iVar6 + -1; bVar12 = *pbVar9 < *pbVar10; bVar14 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while (bVar14); iVar6 = 0x10; iVar5 = 0x4d; if (!bVar14) { iVar5 = iVar3; } pbVar9 = local_3c; pbVar10 = (byte *)"CREATE_MONSTERS"; do { if (iVar6 == 0) break; iVar6 = iVar6 + -1; bVar12 = *pbVar9 < *pbVar10; bVar14 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while (bVar14); iVar6 = 0xe; iVar3 = 0x4e; if (!bVar14) { iVar3 = iVar5; } pbVar9 = local_3c; pbVar10 = (byte *)"CHANGE_SKILLS"; do { if (iVar6 == 0) break; iVar6 = iVar6 + -1; bVar12 = *pbVar9 < *pbVar10; bVar14 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while (bVar14); iVar6 = 0xf; iVar5 = 0x4f; if (!bVar14) { iVar5 = iVar3; } pbVar9 = local_3c; pbVar10 = (byte *)"CLEANUP_FIELDS"; do { if (iVar6 == 0) break; iVar6 = iVar6 + -1; bVar12 = *pbVar9 < *pbVar10; bVar14 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while (bVar14); iVar6 = 0xe; iVar3 = 0x50; if (!bVar14) { iVar3 = iVar5; } pbVar9 = local_3c; pbVar10 = (byte *)"NO_STATISTICS"; do { if (iVar6 == 0) break; iVar6 = iVar6 + -1; bVar12 = *pbVar9 < *pbVar10; bVar14 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while (bVar14); iVar6 = 0xf; iVar5 = 0x51; if (!bVar14) { iVar5 = iVar3; } pbVar9 = local_3c; pbVar10 = (byte *)"KEEP_CHARACTER"; do { if (iVar6 == 0) break; iVar6 = iVar6 + -1; bVar12 = *pbVar9 < *pbVar10; bVar14 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while (bVar14); bVar12 = (!bVar12 && !bVar14) == bVar12; if (bVar12) { iVar5 = -2; } iVar3 = 0x10; pbVar9 = local_3c; pbVar10 = (byte *)"EXTRA_CHARACTER"; do { if (iVar3 == 0) break; iVar3 = iVar3 + -1; bVar12 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while (bVar12); iVar6 = 0xd; iVar3 = -2; if (!bVar12) { iVar3 = iVar5; } pbVar9 = local_3c; pbVar10 = (byte *)"ENTER_HOUSES"; do { if (iVar6 == 0) break; iVar6 = iVar6 + -1; bVar12 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while (bVar12); iVar6 = 0x10; iVar5 = 0x3b; if (!bVar12) { iVar5 = iVar3; } pbVar9 = local_3c; pbVar10 = (byte *)"OPEN_NAMEDDOORS"; do { if (iVar6 == 0) break; iVar6 = iVar6 + -1; bVar12 = *pbVar9 == *pbVar10; pbVar9 = pbVar9 + 1; pbVar10 = pbVar10 + 1; } while (bVar12); iVar3 = 0x3c; if (!bVar12) { iVar3 = iVar5; } if (iVar3 != -2) { if (iVar3 == -1) { error("TQueryManagerConnection::loginGame: Unbekanntes Recht %s.\n",local_3c ); } else { iVar5 = iVar3 + 7; if (-1 < iVar3) { iVar5 = iVar3; } local_60 = (char)iVar3 + (char)(iVar5 >> 3) * -8; Rights[iVar5 >> 3] = Rights[iVar5 >> 3] | (byte)(1 << (local_60 & 0x1f)); } } local_50 = local_50 + 1; uVar11 = local_50 < uVar7; uVar13 = local_50 == uVar7; } while ((int)local_50 < (int)uVar7); } // try { // try from 080e2b7b to 080e2b7f has its CatchHandler @ 080e2fa2 uVar2 = TReadBuffer::readByte(this_01); *PremiumAccountActivated = uVar2 != '\0'; iVar3 = 0; } else { if (iVar3 == 1) { // try { // try from 080e1d0c to 080e1d10 has its CatchHandler @ 080e2fd4 bVar1 = TReadBuffer::readByte(&this->ReadBuffer); uVar7 = (uint)bVar1; bVar12 = false; if ((uVar7 != 0) && (uVar7 < 0x10)) { bVar12 = true; } if (bVar12) { return uVar7; } error(&DAT_0810e380,uVar7); } iVar3 = -1; } return iVar3; } // DWARF original prototype: int logoutGame(TQueryManagerConnection * this, ulong CharacterID, int // Level, char * Profession, char * Residence, time_t LastLoginTime, int TutorActivities) int __thiscall TQueryManagerConnection::logoutGame(TQueryManagerConnection *this) { TWriteBuffer *this_00; int iVar1; ulong in_stack_00000008; ushort in_stack_0000000c; char *in_stack_00000010; char *in_stack_00000014; ulong in_stack_00000018; ushort in_stack_0000001c; this->QueryOk = true; this_00 = &this->WriteBuffer; (this->WriteBuffer).Position = 0; // try { // try from 080e3035 to 080e3049 has its CatchHandler @ 080e30d0 TWriteBuffer::writeWord(this_00,0); TWriteBuffer::writeByte(this_00,'\x15'); // try { // try from 080e3054 to 080e3058 has its CatchHandler @ 080e3110 TWriteBuffer::writeQuad(this_00,in_stack_00000008); // try { // try from 080e3064 to 080e3068 has its CatchHandler @ 080e3142 TWriteBuffer::writeWord(this_00,in_stack_0000000c); // try { // try from 080e3073 to 080e3077 has its CatchHandler @ 080e3172 TWriteStream::writeString(&this_00->super_TWriteStream,in_stack_00000010); // try { // try from 080e3082 to 080e3086 has its CatchHandler @ 080e31a2 TWriteStream::writeString(&this_00->super_TWriteStream,in_stack_00000014); // try { // try from 080e3091 to 080e3095 has its CatchHandler @ 080e31d6 TWriteBuffer::writeQuad(this_00,in_stack_00000018); // try { // try from 080e30a1 to 080e30a5 has its CatchHandler @ 080e320a TWriteBuffer::writeWord(this_00,in_stack_0000001c); iVar1 = executeQuery(this,0x78,true); return (iVar1 == 0) - 1; } // DWARF original prototype: int setNotation(TQueryManagerConnection * this, ulong GamemasterID, // char * PlayerName, char * IPAddress, char * Reason, char * Comment, ulong * BanishmentID) int __thiscall TQueryManagerConnection::setNotation(TQueryManagerConnection *this) { TWriteBuffer *this_00; bool bVar1; byte bVar2; int iVar3; ulong uVar4; int FailureCode; uint uVar5; ulong in_stack_00000008; char *in_stack_0000000c; char *in_stack_00000010; char *in_stack_00000014; char *in_stack_00000018; ulong *in_stack_0000001c; this->QueryOk = true; this_00 = &this->WriteBuffer; (this->WriteBuffer).Position = 0; // try { // try from 080e3265 to 080e3279 has its CatchHandler @ 080e3350 TWriteBuffer::writeWord(this_00,0); TWriteBuffer::writeByte(this_00,'\x1a'); // try { // try from 080e3284 to 080e3288 has its CatchHandler @ 080e3390 TWriteBuffer::writeQuad(this_00,in_stack_00000008); // try { // try from 080e3293 to 080e3297 has its CatchHandler @ 080e33c2 TWriteStream::writeString(&this_00->super_TWriteStream,in_stack_0000000c); // try { // try from 080e32a2 to 080e32a6 has its CatchHandler @ 080e33f2 TWriteStream::writeString(&this_00->super_TWriteStream,in_stack_00000010); // try { // try from 080e32b1 to 080e32b5 has its CatchHandler @ 080e3422 TWriteStream::writeString(&this_00->super_TWriteStream,in_stack_00000014); // try { // try from 080e32c0 to 080e32c4 has its CatchHandler @ 080e3456 TWriteStream::writeString(&this_00->super_TWriteStream,in_stack_00000018); iVar3 = executeQuery(this,0x1e,true); if (iVar3 == 0) { // try { // try from 080e3340 to 080e3344 has its CatchHandler @ 080e348a uVar4 = TReadBuffer::readQuad(&this->ReadBuffer); *in_stack_0000001c = uVar4; iVar3 = 0; } else { if (iVar3 == 1) { // try { // try from 080e3303 to 080e3307 has its CatchHandler @ 080e34bc bVar2 = TReadBuffer::readByte(&this->ReadBuffer); uVar5 = (uint)bVar2; bVar1 = false; if ((uVar5 != 0) && (uVar5 < 3)) { bVar1 = true; } if (bVar1) { return uVar5; } error(&DAT_0810e4a0,uVar5); } else { error("TQueryManagerConnection::setNotation: Anfrage fehlgeschlagen.\n"); } iVar3 = -1; } return iVar3; } // DWARF original prototype: int setNamelock(TQueryManagerConnection * this, ulong GamemasterID, // char * PlayerName, char * IPAddress, char * Reason, char * Comment) int __thiscall TQueryManagerConnection::setNamelock(TQueryManagerConnection *this) { TWriteBuffer *this_00; bool bVar1; byte bVar2; int iVar3; int FailureCode; int iVar4; uint uVar5; ulong in_stack_00000008; char *in_stack_0000000c; char *in_stack_00000010; char *in_stack_00000014; char *in_stack_00000018; this->QueryOk = true; this_00 = &this->WriteBuffer; (this->WriteBuffer).Position = 0; // try { // try from 080e3515 to 080e3529 has its CatchHandler @ 080e35f0 TWriteBuffer::writeWord(this_00,0); TWriteBuffer::writeByte(this_00,'\x17'); // try { // try from 080e3534 to 080e3538 has its CatchHandler @ 080e3630 TWriteBuffer::writeQuad(this_00,in_stack_00000008); // try { // try from 080e3543 to 080e3547 has its CatchHandler @ 080e3662 TWriteStream::writeString(&this_00->super_TWriteStream,in_stack_0000000c); // try { // try from 080e3552 to 080e3556 has its CatchHandler @ 080e3692 TWriteStream::writeString(&this_00->super_TWriteStream,in_stack_00000010); // try { // try from 080e3561 to 080e3565 has its CatchHandler @ 080e36c2 TWriteStream::writeString(&this_00->super_TWriteStream,in_stack_00000014); // try { // try from 080e3570 to 080e3574 has its CatchHandler @ 080e36f6 TWriteStream::writeString(&this_00->super_TWriteStream,in_stack_00000018); iVar3 = executeQuery(this,0x1e,true); iVar4 = 0; if (iVar3 != 0) { if (iVar3 == 1) { // try { // try from 080e35b7 to 080e35bb has its CatchHandler @ 080e372a bVar2 = TReadBuffer::readByte(&this->ReadBuffer); uVar5 = (uint)bVar2; bVar1 = false; if ((uVar5 != 0) && (uVar5 < 5)) { bVar1 = true; } if (bVar1) { return uVar5; } error(&DAT_0810e540,uVar5); } else { error("TQueryManagerConnection::setNamelock: Anfrage fehlgeschlagen.\n"); } iVar4 = -1; } return iVar4; } // DWARF original prototype: int banishAccount(TQueryManagerConnection * this, ulong GamemasterID, // char * PlayerName, char * IPAddress, char * Reason, char * Comment, bool * FinalWarning, int * // Days, ulong * BanishmentID) int __thiscall TQueryManagerConnection::banishAccount(TQueryManagerConnection *this) { TWriteBuffer *this_00; TReadBuffer *this_01; bool bVar1; byte bVar2; uchar uVar3; int iVar4; ulong uVar5; int FailureCode; uint uVar6; ulong in_stack_00000008; char *in_stack_0000000c; char *in_stack_00000010; char *in_stack_00000014; char *in_stack_00000018; char *in_stack_0000001c; uint *in_stack_00000020; ulong *in_stack_00000024; this->QueryOk = true; this_00 = &this->WriteBuffer; (this->WriteBuffer).Position = 0; // try { // try from 080e3785 to 080e3799 has its CatchHandler @ 080e38c0 TWriteBuffer::writeWord(this_00,0); TWriteBuffer::writeByte(this_00,'\x19'); // try { // try from 080e37a4 to 080e37a8 has its CatchHandler @ 080e3900 TWriteBuffer::writeQuad(this_00,in_stack_00000008); // try { // try from 080e37b3 to 080e37b7 has its CatchHandler @ 080e3932 TWriteStream::writeString(&this_00->super_TWriteStream,in_stack_0000000c); // try { // try from 080e37c2 to 080e37c6 has its CatchHandler @ 080e3962 TWriteStream::writeString(&this_00->super_TWriteStream,in_stack_00000010); // try { // try from 080e37d1 to 080e37d5 has its CatchHandler @ 080e3992 TWriteStream::writeString(&this_00->super_TWriteStream,in_stack_00000014); // try { // try from 080e37e0 to 080e37e4 has its CatchHandler @ 080e39c6 TWriteStream::writeString(&this_00->super_TWriteStream,in_stack_00000018); // try { // try from 080e37f8 to 080e37fc has its CatchHandler @ 080e39fa TWriteBuffer::writeByte(this_00,*in_stack_0000001c != '\0'); iVar4 = executeQuery(this,0x1e,true); if (iVar4 == 0) { this_01 = &this->ReadBuffer; // try { // try from 080e3878 to 080e387c has its CatchHandler @ 080e3a2e uVar5 = TReadBuffer::readQuad(this_01); *in_stack_00000024 = uVar5; // try { // try from 080e3887 to 080e388b has its CatchHandler @ 080e3a60 bVar2 = TReadBuffer::readByte(this_01); uVar6 = 0xffffffff; if (bVar2 != 0xff) { uVar6 = (uint)bVar2; } *in_stack_00000020 = uVar6; // try { // try from 080e38a8 to 080e38ac has its CatchHandler @ 080e3a92 uVar3 = TReadBuffer::readByte(this_01); *in_stack_0000001c = uVar3 != '\0'; iVar4 = 0; } else { if (iVar4 == 1) { // try { // try from 080e383b to 080e383f has its CatchHandler @ 080e3ac4 bVar2 = TReadBuffer::readByte(&this->ReadBuffer); uVar6 = (uint)bVar2; bVar1 = false; if ((uVar6 != 0) && (uVar6 < 4)) { bVar1 = true; } if (bVar1) { return uVar6; } error(&DAT_0810e600,uVar6); } else { error("TQueryManagerConnection::banishAccount: Anfrage fehlgeschlagen.\n"); } iVar4 = -1; } return iVar4; } // WARNING: Variable defined which should be unmapped: i_1 // DWARF original prototype: int reportStatement(TQueryManagerConnection * this, ulong ReporterID, // char * PlayerName, char * Reason, char * Comment, ulong BanishmentID, ulong StatementID, int // NumberOfStatements, ulong * StatementIDs, ulong * TimeStamps, ulong * CharacterIDs, char[30] * // Channels, char[256] * Texts) int __thiscall TQueryManagerConnection::reportStatement(TQueryManagerConnection *this) { TWriteBuffer *this_00; int iVar1; bool bVar2; byte bVar3; int iVar4; int i; int iVar5; uint uVar6; ulong in_stack_00000008; char *in_stack_0000000c; char *in_stack_00000010; char *in_stack_00000014; ulong in_stack_00000018; ulong in_stack_0000001c; int in_stack_00000020; int *in_stack_00000024; int in_stack_00000028; int in_stack_0000002c; int in_stack_00000030; int in_stack_00000034; int local_14; int i_1; this->QueryOk = true; this_00 = &this->WriteBuffer; (this->WriteBuffer).Position = 0; // try { // try from 080e3b25 to 080e3b39 has its CatchHandler @ 080e3ce0 TWriteBuffer::writeWord(this_00,0); TWriteBuffer::writeByte(this_00,'\x1b'); // try { // try from 080e3b44 to 080e3b48 has its CatchHandler @ 080e3d20 TWriteBuffer::writeQuad(this_00,in_stack_00000008); // try { // try from 080e3b53 to 080e3b57 has its CatchHandler @ 080e3d52 TWriteStream::writeString(&this_00->super_TWriteStream,in_stack_0000000c); // try { // try from 080e3b62 to 080e3b66 has its CatchHandler @ 080e3d82 TWriteStream::writeString(&this_00->super_TWriteStream,in_stack_00000010); // try { // try from 080e3b71 to 080e3b75 has its CatchHandler @ 080e3db2 TWriteStream::writeString(&this_00->super_TWriteStream,in_stack_00000014); // try { // try from 080e3b80 to 080e3b84 has its CatchHandler @ 080e3de6 TWriteBuffer::writeQuad(this_00,in_stack_00000018); // try { // try from 080e3b8f to 080e3b93 has its CatchHandler @ 080e3e1a TWriteBuffer::writeQuad(this_00,in_stack_0000001c); iVar5 = 0; iVar4 = in_stack_00000020; if (0 < in_stack_00000020) { iVar1 = *in_stack_00000024; while (iVar1 == 0) { iVar5 = iVar5 + 1; iVar4 = iVar4 + -1; if (in_stack_00000020 <= iVar5) break; iVar1 = in_stack_00000024[iVar5]; } } // try { // try from 080e3bcb to 080e3bcf has its CatchHandler @ 080e3e4e TWriteBuffer::writeWord(this_00,(ushort)iVar4); local_14 = 0; if (0 < in_stack_00000020) { do { if (in_stack_00000024[local_14] != 0) { // try { // try from 080e3c77 to 080e3c7b has its CatchHandler @ 080e3e82 TWriteBuffer::writeQuad(this_00,in_stack_00000024[local_14]); // try { // try from 080e3c8c to 080e3c90 has its CatchHandler @ 080e3eb6 TWriteBuffer::writeQuad(this_00,*(ulong *)(in_stack_00000028 + local_14 * 4)); // try { // try from 080e3ca1 to 080e3ca5 has its CatchHandler @ 080e3eea TWriteBuffer::writeQuad(this_00,*(ulong *)(in_stack_0000002c + local_14 * 4)); // try { // try from 080e3cbe to 080e3cc2 has its CatchHandler @ 080e3f1e TWriteStream::writeString (&this_00->super_TWriteStream, (char *)(in_stack_00000030 + local_14 * 0x1e)); // try { // try from 080e3cd5 to 080e3cd9 has its CatchHandler @ 080e3f52 TWriteStream::writeString (&this_00->super_TWriteStream, (char *)(local_14 * 0x100 + in_stack_00000034)); } local_14 = local_14 + 1; } while (local_14 < in_stack_00000020); } iVar5 = executeQuery(this,0xb4,true); iVar4 = 0; if (iVar5 != 0) { if (iVar5 == 1) { // try { // try from 080e3c3d to 080e3c41 has its CatchHandler @ 080e3f86 bVar3 = TReadBuffer::readByte(&this->ReadBuffer); uVar6 = (uint)bVar3; bVar2 = false; if ((uVar6 != 0) && (uVar6 < 3)) { bVar2 = true; } if (bVar2) { return uVar6; } error(&DAT_0810e6c0,uVar6); } else { error("TQueryManagerConnection::reportStatement: Anfrage fehlgeschlagen.\n"); } iVar4 = -1; } return iVar4; } // DWARF original prototype: int banishIPAddress(TQueryManagerConnection * this, ulong GamemasterID, // char * PlayerName, char * IPAddress, char * Reason, char * Comment) int __thiscall TQueryManagerConnection::banishIPAddress(TQueryManagerConnection *this) { TWriteBuffer *this_00; bool bVar1; byte bVar2; int iVar3; int FailureCode; int iVar4; uint uVar5; ulong in_stack_00000008; char *in_stack_0000000c; char *in_stack_00000010; char *in_stack_00000014; char *in_stack_00000018; this->QueryOk = true; this_00 = &this->WriteBuffer; (this->WriteBuffer).Position = 0; // try { // try from 080e3fe5 to 080e3ff9 has its CatchHandler @ 080e40c0 TWriteBuffer::writeWord(this_00,0); TWriteBuffer::writeByte(this_00,'\x1c'); // try { // try from 080e4004 to 080e4008 has its CatchHandler @ 080e4100 TWriteBuffer::writeQuad(this_00,in_stack_00000008); // try { // try from 080e4013 to 080e4017 has its CatchHandler @ 080e4132 TWriteStream::writeString(&this_00->super_TWriteStream,in_stack_0000000c); // try { // try from 080e4022 to 080e4026 has its CatchHandler @ 080e4162 TWriteStream::writeString(&this_00->super_TWriteStream,in_stack_00000010); // try { // try from 080e4031 to 080e4035 has its CatchHandler @ 080e4192 TWriteStream::writeString(&this_00->super_TWriteStream,in_stack_00000014); // try { // try from 080e4040 to 080e4044 has its CatchHandler @ 080e41c6 TWriteStream::writeString(&this_00->super_TWriteStream,in_stack_00000018); iVar3 = executeQuery(this,0x1e,true); iVar4 = 0; if (iVar3 != 0) { if (iVar3 == 1) { // try { // try from 080e4087 to 080e408b has its CatchHandler @ 080e41fa bVar2 = TReadBuffer::readByte(&this->ReadBuffer); uVar5 = (uint)bVar2; bVar1 = false; if ((uVar5 != 0) && (uVar5 < 3)) { bVar1 = true; } if (bVar1) { return uVar5; } error(&DAT_0810e780,uVar5); } else { error("TQueryManagerConnection::banishIPAddress: Anfrage fehlgeschlagen.\n"); } iVar4 = -1; } return iVar4; } // WARNING: Variable defined which should be unmapped: Unjustified_local // DWARF original prototype: int logCharacterDeath(TQueryManagerConnection * this, ulong // CharacterID, int Level, ulong Offender, char * Remark, bool Unjustified, time_t Time) int __thiscall TQueryManagerConnection::logCharacterDeath (TQueryManagerConnection *this,ulong CharacterID,int Level,ulong Offender,char *Remark, bool Unjustified,time_t Time) { TWriteBuffer *this_00; int iVar1; bool Unjustified_local; this_00 = &this->WriteBuffer; this->QueryOk = true; (this->WriteBuffer).Position = 0; // try { // try from 080e425c to 080e4270 has its CatchHandler @ 080e4310 TWriteBuffer::writeWord(this_00,0); TWriteBuffer::writeByte(this_00,'\x1d'); // try { // try from 080e427b to 080e427f has its CatchHandler @ 080e4350 TWriteBuffer::writeQuad(this_00,CharacterID); // try { // try from 080e428b to 080e428f has its CatchHandler @ 080e4382 TWriteBuffer::writeWord(this_00,(ushort)Level); // try { // try from 080e429a to 080e429e has its CatchHandler @ 080e43b2 TWriteBuffer::writeQuad(this_00,Offender); // try { // try from 080e42a9 to 080e42ad has its CatchHandler @ 080e43e2 TWriteStream::writeString(&this_00->super_TWriteStream,Remark); // try { // try from 080e42be to 080e42c2 has its CatchHandler @ 080e4416 TWriteBuffer::writeByte(this_00,Unjustified); // try { // try from 080e42cd to 080e42d1 has its CatchHandler @ 080e444a TWriteBuffer::writeQuad(this_00,Time); iVar1 = executeQuery(this,0x5a,true); if (iVar1 == 0) { iVar1 = 0; } else { error("TQueryManagerConnection::logCharacterDeath: Anfrage fehlgeschlagen.\n"); iVar1 = -1; } return iVar1; } // DWARF original prototype: int addBuddy(TQueryManagerConnection * this, ulong AccountID, ulong // Buddy) int __thiscall TQueryManagerConnection::addBuddy(TQueryManagerConnection *this) { TWriteBuffer *this_00; int iVar1; ulong in_stack_00000008; ulong in_stack_0000000c; this->QueryOk = true; this_00 = &this->WriteBuffer; (this->WriteBuffer).Position = 0; // try { // try from 080e44a5 to 080e44b9 has its CatchHandler @ 080e4513 TWriteBuffer::writeWord(this_00,0); TWriteBuffer::writeByte(this_00,'\x1e'); // try { // try from 080e44c4 to 080e44c8 has its CatchHandler @ 080e4550 TWriteBuffer::writeQuad(this_00,in_stack_00000008); // try { // try from 080e44d3 to 080e44d7 has its CatchHandler @ 080e4582 TWriteBuffer::writeQuad(this_00,in_stack_0000000c); iVar1 = executeQuery(this,0x5a,true); if (iVar1 == 0) { iVar1 = 0; } else { error("TQueryManagerConnection::addBuddy: Anfrage fehlgeschlagen.\n"); iVar1 = -1; } return iVar1; } // DWARF original prototype: int removeBuddy(TQueryManagerConnection * this, ulong AccountID, ulong // Buddy) int __thiscall TQueryManagerConnection::removeBuddy(TQueryManagerConnection *this) { TWriteBuffer *this_00; int iVar1; ulong in_stack_00000008; ulong in_stack_0000000c; this->QueryOk = true; this_00 = &this->WriteBuffer; (this->WriteBuffer).Position = 0; // try { // try from 080e45d5 to 080e45e9 has its CatchHandler @ 080e4643 TWriteBuffer::writeWord(this_00,0); TWriteBuffer::writeByte(this_00,'\x1f'); // try { // try from 080e45f4 to 080e45f8 has its CatchHandler @ 080e4680 TWriteBuffer::writeQuad(this_00,in_stack_00000008); // try { // try from 080e4603 to 080e4607 has its CatchHandler @ 080e46b2 TWriteBuffer::writeQuad(this_00,in_stack_0000000c); iVar1 = executeQuery(this,0x5a,true); if (iVar1 == 0) { iVar1 = 0; } else { error("TQueryManagerConnection::removeBuddy: Anfrage fehlgeschlagen.\n"); iVar1 = -1; } return iVar1; } // DWARF original prototype: int decrementIsOnline(TQueryManagerConnection * this, ulong // CharacterID) int __thiscall TQueryManagerConnection::decrementIsOnline(TQueryManagerConnection *this,ulong CharacterID) { TWriteBuffer *this_00; int iVar1; this_00 = &this->WriteBuffer; this->QueryOk = true; (this->WriteBuffer).Position = 0; // try { // try from 080e470b to 080e471f has its CatchHandler @ 080e4773 TWriteBuffer::writeWord(this_00,0); TWriteBuffer::writeByte(this_00,' '); // try { // try from 080e472a to 080e472e has its CatchHandler @ 080e47b0 TWriteBuffer::writeQuad(this_00,CharacterID); iVar1 = executeQuery(this,0x1e,true); if (iVar1 == 0) { iVar1 = 0; } else { error("TQueryManagerConnection::decrementIsOnline: Anfrage fehlgeschlagen.\n"); iVar1 = -1; } return iVar1; } // DWARF original prototype: int finishAuctions(TQueryManagerConnection * this, int * // NumberOfAuctions, ushort * HouseIDs, ulong * CharacterIDs, char[30] * CharacterNames, int * Bids) int __thiscall TQueryManagerConnection::finishAuctions (TQueryManagerConnection *this,int *NumberOfAuctions,ushort *HouseIDs,ulong *CharacterIDs, char (*CharacterNames) [30],int *Bids) { ushort uVar1; int iVar2; ulong uVar3; uint uVar4; TReadBuffer *this_00; int MaxNumberOfAuctions; this->QueryOk = true; (this->WriteBuffer).Position = 0; // try { // try from 080e4805 to 080e4819 has its CatchHandler @ 080e4900 TWriteBuffer::writeWord(&this->WriteBuffer,0); TWriteBuffer::writeByte(&this->WriteBuffer,'!'); iVar2 = executeQuery(this,0x3c,true); if (iVar2 == 0) { this_00 = &this->ReadBuffer; iVar2 = *NumberOfAuctions; // try { // try from 080e485b to 080e485f has its CatchHandler @ 080e4940 uVar1 = TReadBuffer::readWord(this_00); uVar4 = (uint)uVar1; *NumberOfAuctions = uVar4; if ((int)uVar4 <= iVar2) { iVar2 = 0; if (uVar4 != 0) { do { // try { // try from 080e487c to 080e4880 has its CatchHandler @ 080e496b uVar1 = TReadBuffer::readWord(this_00); HouseIDs[iVar2] = uVar1; // try { // try from 080e488e to 080e4892 has its CatchHandler @ 080e4996 uVar3 = TReadBuffer::readQuad(this_00); CharacterIDs[iVar2] = uVar3; // try { // try from 080e48ba to 080e48be has its CatchHandler @ 080e49c4 TReadStream::readString(&this_00->super_TReadStream,CharacterNames[iVar2],0x1e); // try { // try from 080e48c2 to 080e48c6 has its CatchHandler @ 080e49fa uVar3 = TReadBuffer::readQuad(this_00); Bids[iVar2] = uVar3; iVar2 = iVar2 + 1; } while (iVar2 < *NumberOfAuctions); } return 0; } error("TQueryManagerConnection::finishAuctions: zu viele Auktionen (%d>%d).\n", *NumberOfAuctions,iVar2); } else { error("TQueryManagerConnection::finishAuctions: Anfrage fehlgeschlagen.\n"); } return -1; } // WARNING: Variable defined which should be unmapped: Banish_local // DWARF original prototype: int excludeFromAuctions(TQueryManagerConnection * this, ulong // CharacterID, bool Banish) int __thiscall TQueryManagerConnection::excludeFromAuctions (TQueryManagerConnection *this,ulong CharacterID,bool Banish) { TWriteBuffer *this_00; int iVar1; bool Banish_local; this_00 = &this->WriteBuffer; this->QueryOk = true; (this->WriteBuffer).Position = 0; // try { // try from 080e4a5c to 080e4a70 has its CatchHandler @ 080e4ad3 TWriteBuffer::writeWord(this_00,0); TWriteBuffer::writeByte(this_00,'3'); // try { // try from 080e4a7b to 080e4a7f has its CatchHandler @ 080e4b10 TWriteBuffer::writeQuad(this_00,CharacterID); TWriteBuffer::writeByte(this_00,Banish); iVar1 = executeQuery(this,0x1e,true); if (iVar1 == 0) { iVar1 = 0; } else { error("TQueryManagerConnection::excludeFromAuctions: Anfrage fehlgeschlagen.\n"); iVar1 = -1; } return iVar1; } // DWARF original prototype: int transferHouses(TQueryManagerConnection * this, int * // NumberOfTransfers, ushort * HouseIDs, ulong * NewOwnerIDs, char[30] * NewOwnerNames, int * // Prices) int __thiscall TQueryManagerConnection::transferHouses (TQueryManagerConnection *this,int *NumberOfTransfers,ushort *HouseIDs,ulong *NewOwnerIDs, char (*NewOwnerNames) [30],int *Prices) { ushort uVar1; int iVar2; ulong uVar3; uint uVar4; TReadBuffer *this_00; int MaxNumberOfTransfers; this->QueryOk = true; (this->WriteBuffer).Position = 0; // try { // try from 080e4b65 to 080e4b79 has its CatchHandler @ 080e4c60 TWriteBuffer::writeWord(&this->WriteBuffer,0); TWriteBuffer::writeByte(&this->WriteBuffer,'#'); iVar2 = executeQuery(this,0x3c,true); if (iVar2 == 0) { this_00 = &this->ReadBuffer; iVar2 = *NumberOfTransfers; // try { // try from 080e4bbb to 080e4bbf has its CatchHandler @ 080e4ca0 uVar1 = TReadBuffer::readWord(this_00); uVar4 = (uint)uVar1; *NumberOfTransfers = uVar4; if ((int)uVar4 <= iVar2) { iVar2 = 0; if (uVar4 != 0) { do { // try { // try from 080e4bdc to 080e4be0 has its CatchHandler @ 080e4ccb uVar1 = TReadBuffer::readWord(this_00); HouseIDs[iVar2] = uVar1; // try { // try from 080e4bee to 080e4bf2 has its CatchHandler @ 080e4cf6 uVar3 = TReadBuffer::readQuad(this_00); NewOwnerIDs[iVar2] = uVar3; // try { // try from 080e4c1a to 080e4c1e has its CatchHandler @ 080e4d24 TReadStream::readString(&this_00->super_TReadStream,NewOwnerNames[iVar2],0x1e); // try { // try from 080e4c22 to 080e4c26 has its CatchHandler @ 080e4d5a uVar3 = TReadBuffer::readQuad(this_00); Prices[iVar2] = uVar3; iVar2 = iVar2 + 1; } while (iVar2 < *NumberOfTransfers); } return 0; } error("TQueryManagerConnection::transferHouses: zu viele Transfers (%d>%d).\n", *NumberOfTransfers,iVar2); } else { error("TQueryManagerConnection::transferHouses: Anfrage fehlgeschlagen.\n"); } return -1; } // WARNING: Variable defined which should be unmapped: HouseID_local // DWARF original prototype: int cancelHouseTransfer(TQueryManagerConnection * this, ushort HouseID) int __thiscall TQueryManagerConnection::cancelHouseTransfer(TQueryManagerConnection *this,ushort HouseID) { TWriteBuffer *this_00; int iVar1; ushort HouseID_local; this_00 = &this->WriteBuffer; this->QueryOk = true; (this->WriteBuffer).Position = 0; // try { // try from 080e4dc2 to 080e4dd6 has its CatchHandler @ 080e4e24 TWriteBuffer::writeWord(this_00,0); TWriteBuffer::writeByte(this_00,'4'); // try { // try from 080e4de1 to 080e4de5 has its CatchHandler @ 080e4e60 TWriteBuffer::writeWord(this_00,HouseID); iVar1 = executeQuery(this,0x1e,true); if (iVar1 == 0) { iVar1 = 0; } else { error("TQueryManagerConnection::cancelHouseTransfer: Anfrage fehlgeschlagen.\n"); iVar1 = -1; } return iVar1; } // DWARF original prototype: int evictFreeAccounts(TQueryManagerConnection * this, int * // NumberOfEvictions, ushort * HouseIDs, ulong * OwnerIDs) int __thiscall TQueryManagerConnection::evictFreeAccounts (TQueryManagerConnection *this,int *NumberOfEvictions,ushort *HouseIDs,ulong *OwnerIDs) { ushort uVar1; int iVar2; ulong uVar3; uint uVar4; TReadBuffer *this_00; int MaxNumberOfEvictions; this->QueryOk = true; (this->WriteBuffer).Position = 0; // try { // try from 080e4eb5 to 080e4ec9 has its CatchHandler @ 080e4f77 TWriteBuffer::writeWord(&this->WriteBuffer,0); TWriteBuffer::writeByte(&this->WriteBuffer,'$'); iVar2 = executeQuery(this,0x3c,true); if (iVar2 == 0) { this_00 = &this->ReadBuffer; iVar2 = *NumberOfEvictions; // try { // try from 080e4f0b to 080e4f0f has its CatchHandler @ 080e4fb1 uVar1 = TReadBuffer::readWord(this_00); uVar4 = (uint)uVar1; *NumberOfEvictions = uVar4; if ((int)uVar4 <= iVar2) { iVar2 = 0; if (uVar4 != 0) { do { // try { // try from 080e4f33 to 080e4f37 has its CatchHandler @ 080e4fdc uVar1 = TReadBuffer::readWord(this_00); HouseIDs[iVar2] = uVar1; // try { // try from 080e4f45 to 080e4f49 has its CatchHandler @ 080e5007 uVar3 = TReadBuffer::readQuad(this_00); OwnerIDs[iVar2] = uVar3; iVar2 = iVar2 + 1; } while (iVar2 < *NumberOfEvictions); } return 0; } error(&DAT_0810ebc0,*NumberOfEvictions,iVar2); } else { error("TQueryManagerConnection::evictFreeAccounts: Anfrage fehlgeschlagen.\n"); } return -1; } // DWARF original prototype: int evictDeletedCharacters(TQueryManagerConnection * this, int * // NumberOfEvictions, ushort * HouseIDs) int __thiscall TQueryManagerConnection::evictDeletedCharacters (TQueryManagerConnection *this,int *NumberOfEvictions,ushort *HouseIDs) { ushort uVar1; int iVar2; uint uVar3; int MaxNumberOfEvictions; this->QueryOk = true; (this->WriteBuffer).Position = 0; // try { // try from 080e5055 to 080e5069 has its CatchHandler @ 080e5107 TWriteBuffer::writeWord(&this->WriteBuffer,0); TWriteBuffer::writeByte(&this->WriteBuffer,'%'); iVar2 = executeQuery(this,0x3c,true); if (iVar2 == 0) { iVar2 = *NumberOfEvictions; // try { // try from 080e50ae to 080e50b2 has its CatchHandler @ 080e5141 uVar1 = TReadBuffer::readWord(&this->ReadBuffer); uVar3 = (uint)uVar1; *NumberOfEvictions = uVar3; if ((int)uVar3 <= iVar2) { iVar2 = 0; if (uVar3 != 0) { do { // try { // try from 080e50d6 to 080e50da has its CatchHandler @ 080e5170 uVar1 = TReadBuffer::readWord(&this->ReadBuffer); HouseIDs[iVar2] = uVar1; iVar2 = iVar2 + 1; } while (iVar2 < *NumberOfEvictions); } return 0; } error(&DAT_0810ec80,*NumberOfEvictions,iVar2); } else { error("TQueryManagerConnection::evictDeletedCharacters: Anfrage fehlgeschlagen.\n"); } return -1; } // WARNING: Variable defined which should be unmapped: i // DWARF original prototype: int evictExGuildleaders(TQueryManagerConnection * this, int // NumberOfGuildhouses, int * NumberOfEvictions, ushort * HouseIDs, ulong * Guildleaders) int __thiscall TQueryManagerConnection::evictExGuildleaders (TQueryManagerConnection *this,int NumberOfGuildhouses,int *NumberOfEvictions, ushort *HouseIDs,ulong *Guildleaders) { TWriteBuffer *this_00; ushort uVar1; int iVar2; int i_1; int local_14; int i; this->QueryOk = true; this_00 = &this->WriteBuffer; (this->WriteBuffer).Position = 0; // try { // try from 080e51c5 to 080e51d9 has its CatchHandler @ 080e52b0 TWriteBuffer::writeWord(this_00,0); TWriteBuffer::writeByte(this_00,'&'); // try { // try from 080e51e5 to 080e51e9 has its CatchHandler @ 080e52f0 TWriteBuffer::writeWord(this_00,(ushort)NumberOfGuildhouses); local_14 = 0; if (0 < NumberOfGuildhouses) { do { // try { // try from 080e5281 to 080e5285 has its CatchHandler @ 080e5322 TWriteBuffer::writeWord(this_00,HouseIDs[local_14]); // try { // try from 080e5296 to 080e529a has its CatchHandler @ 080e5350 TWriteBuffer::writeQuad(this_00,Guildleaders[local_14]); local_14 = local_14 + 1; } while (local_14 < NumberOfGuildhouses); } iVar2 = executeQuery(this,0x3c,true); if (iVar2 == 0) { // try { // try from 080e5236 to 080e523a has its CatchHandler @ 080e5380 uVar1 = TReadBuffer::readWord(&this->ReadBuffer); *NumberOfEvictions = (uint)uVar1; iVar2 = 0; if (uVar1 != 0) { do { // try { // try from 080e5253 to 080e5257 has its CatchHandler @ 080e53b2 uVar1 = TReadBuffer::readWord(&this->ReadBuffer); HouseIDs[iVar2] = uVar1; iVar2 = iVar2 + 1; } while (iVar2 < *NumberOfEvictions); } iVar2 = 0; } else { error("TQueryManagerConnection::evictExGuildleaders: Anfrage fehlgeschlagen.\n"); iVar2 = -1; } return iVar2; } // WARNING: Variable defined which should be unmapped: HouseID_local // DWARF original prototype: int insertHouseOwner(TQueryManagerConnection * this, ushort HouseID, // ulong OwnerID, int PaidUntil) int __thiscall TQueryManagerConnection::insertHouseOwner (TQueryManagerConnection *this,ushort HouseID,ulong OwnerID,int PaidUntil) { TWriteBuffer *this_00; int iVar1; ushort HouseID_local; this_00 = &this->WriteBuffer; this->QueryOk = true; (this->WriteBuffer).Position = 0; // try { // try from 080e540c to 080e5420 has its CatchHandler @ 080e5487 TWriteBuffer::writeWord(this_00,0); TWriteBuffer::writeByte(this_00,'\''); // try { // try from 080e542b to 080e542f has its CatchHandler @ 080e54c1 TWriteBuffer::writeWord(this_00,HouseID); // try { // try from 080e543a to 080e543e has its CatchHandler @ 080e54f2 TWriteBuffer::writeQuad(this_00,OwnerID); // try { // try from 080e5449 to 080e544d has its CatchHandler @ 080e5522 TWriteBuffer::writeQuad(this_00,PaidUntil); iVar1 = executeQuery(this,0x1e,true); if (iVar1 == 0) { iVar1 = 0; } else { error("TQueryManagerConnection::insertHouseOwner: Anfrage fehlgeschlagen.\n"); iVar1 = -1; } return iVar1; } // WARNING: Variable defined which should be unmapped: HouseID_local // DWARF original prototype: int updateHouseOwner(TQueryManagerConnection * this, ushort HouseID, // ulong OwnerID, int PaidUntil) int __thiscall TQueryManagerConnection::updateHouseOwner (TQueryManagerConnection *this,ushort HouseID,ulong OwnerID,int PaidUntil) { TWriteBuffer *this_00; int iVar1; ushort HouseID_local; this_00 = &this->WriteBuffer; this->QueryOk = true; (this->WriteBuffer).Position = 0; // try { // try from 080e557c to 080e5590 has its CatchHandler @ 080e55f7 TWriteBuffer::writeWord(this_00,0); TWriteBuffer::writeByte(this_00,'('); // try { // try from 080e559b to 080e559f has its CatchHandler @ 080e5631 TWriteBuffer::writeWord(this_00,HouseID); // try { // try from 080e55aa to 080e55ae has its CatchHandler @ 080e5662 TWriteBuffer::writeQuad(this_00,OwnerID); // try { // try from 080e55b9 to 080e55bd has its CatchHandler @ 080e5692 TWriteBuffer::writeQuad(this_00,PaidUntil); iVar1 = executeQuery(this,0x1e,true); if (iVar1 == 0) { iVar1 = 0; } else { error("TQueryManagerConnection::updateHouseOwner: Anfrage fehlgeschlagen.\n"); iVar1 = -1; } return iVar1; } // WARNING: Variable defined which should be unmapped: HouseID_local // DWARF original prototype: int deleteHouseOwner(TQueryManagerConnection * this, ushort HouseID) int __thiscall TQueryManagerConnection::deleteHouseOwner(TQueryManagerConnection *this,ushort HouseID) { TWriteBuffer *this_00; int iVar1; ushort HouseID_local; this_00 = &this->WriteBuffer; this->QueryOk = true; (this->WriteBuffer).Position = 0; // try { // try from 080e56f2 to 080e5706 has its CatchHandler @ 080e5754 TWriteBuffer::writeWord(this_00,0); TWriteBuffer::writeByte(this_00,')'); // try { // try from 080e5711 to 080e5715 has its CatchHandler @ 080e5790 TWriteBuffer::writeWord(this_00,HouseID); iVar1 = executeQuery(this,0x1e,true); if (iVar1 == 0) { iVar1 = 0; } else { error("TQueryManagerConnection::deleteHouseOwner: Anfrage fehlgeschlagen.\n"); iVar1 = -1; } return iVar1; } // DWARF original prototype: int getHouseOwners(TQueryManagerConnection * this, int * // NumberOfHouses, ushort * HouseIDs, ulong * OwnerIDs, char[30] * OwnerNames, int * PaidUntils) int __thiscall TQueryManagerConnection::getHouseOwners (TQueryManagerConnection *this,int *NumberOfHouses,ushort *HouseIDs,ulong *OwnerIDs, char (*OwnerNames) [30],int *PaidUntils) { ushort uVar1; int iVar2; ulong uVar3; uint uVar4; TReadBuffer *this_00; int MaxNumberOfHouses; this->QueryOk = true; (this->WriteBuffer).Position = 0; // try { // try from 080e57e5 to 080e57f9 has its CatchHandler @ 080e58e0 TWriteBuffer::writeWord(&this->WriteBuffer,0); TWriteBuffer::writeByte(&this->WriteBuffer,'*'); iVar2 = executeQuery(this,0x3c,true); if (iVar2 == 0) { this_00 = &this->ReadBuffer; iVar2 = *NumberOfHouses; // try { // try from 080e583b to 080e583f has its CatchHandler @ 080e5920 uVar1 = TReadBuffer::readWord(this_00); uVar4 = (uint)uVar1; *NumberOfHouses = uVar4; if ((int)uVar4 <= iVar2) { iVar2 = 0; if (uVar4 != 0) { do { // try { // try from 080e585c to 080e5860 has its CatchHandler @ 080e594b uVar1 = TReadBuffer::readWord(this_00); HouseIDs[iVar2] = uVar1; // try { // try from 080e586e to 080e5872 has its CatchHandler @ 080e5976 uVar3 = TReadBuffer::readQuad(this_00); OwnerIDs[iVar2] = uVar3; // try { // try from 080e589a to 080e589e has its CatchHandler @ 080e59a4 TReadStream::readString(&this_00->super_TReadStream,OwnerNames[iVar2],0x1e); // try { // try from 080e58a2 to 080e58a6 has its CatchHandler @ 080e59da uVar3 = TReadBuffer::readQuad(this_00); PaidUntils[iVar2] = uVar3; iVar2 = iVar2 + 1; } while (iVar2 < *NumberOfHouses); } return 0; } error(&DAT_0810eec0,*NumberOfHouses,iVar2); } else { error("TQueryManagerConnection::getHouseOwners: Anfrage fehlgeschlagen.\n"); } return -1; } // DWARF original prototype: int getAuctions(TQueryManagerConnection * this, int * NumberOfAuctions, // ushort * HouseIDs) int __thiscall TQueryManagerConnection::getAuctions (TQueryManagerConnection *this,int *NumberOfAuctions,ushort *HouseIDs) { ushort uVar1; int iVar2; uint uVar3; int MaxNumberOfAuctions; this->QueryOk = true; (this->WriteBuffer).Position = 0; // try { // try from 080e5a35 to 080e5a49 has its CatchHandler @ 080e5ae7 TWriteBuffer::writeWord(&this->WriteBuffer,0); TWriteBuffer::writeByte(&this->WriteBuffer,'+'); iVar2 = executeQuery(this,0x78,true); if (iVar2 == 0) { iVar2 = *NumberOfAuctions; // try { // try from 080e5a8e to 080e5a92 has its CatchHandler @ 080e5b21 uVar1 = TReadBuffer::readWord(&this->ReadBuffer); uVar3 = (uint)uVar1; *NumberOfAuctions = uVar3; if ((int)uVar3 <= iVar2) { iVar2 = 0; if (uVar3 != 0) { do { // try { // try from 080e5ab6 to 080e5aba has its CatchHandler @ 080e5b50 uVar1 = TReadBuffer::readWord(&this->ReadBuffer); HouseIDs[iVar2] = uVar1; iVar2 = iVar2 + 1; } while (iVar2 < *NumberOfAuctions); } return 0; } error("TQueryManagerConnection::getAuctions: zu viele Auktionen (%d>%d).\n", *NumberOfAuctions,iVar2); } else { error("TQueryManagerConnection::getAuctions: Anfrage fehlgeschlagen.\n"); } return -1; } // WARNING: Variable defined which should be unmapped: HouseID_local // DWARF original prototype: int startAuction(TQueryManagerConnection * this, ushort HouseID) int __thiscall TQueryManagerConnection::startAuction(TQueryManagerConnection *this,ushort HouseID) { TWriteBuffer *this_00; int iVar1; ushort HouseID_local; this_00 = &this->WriteBuffer; this->QueryOk = true; (this->WriteBuffer).Position = 0; // try { // try from 080e5bb2 to 080e5bc6 has its CatchHandler @ 080e5c14 TWriteBuffer::writeWord(this_00,0); TWriteBuffer::writeByte(this_00,','); // try { // try from 080e5bd1 to 080e5bd5 has its CatchHandler @ 080e5c50 TWriteBuffer::writeWord(this_00,HouseID); iVar1 = executeQuery(this,0x1e,true); if (iVar1 == 0) { iVar1 = 0; } else { error("TQueryManagerConnection::startAuction: Anfrage fehlgeschlagen.\n"); iVar1 = -1; } return iVar1; } // WARNING: Variable defined which should be unmapped: i // DWARF original prototype: int insertHouses(TQueryManagerConnection * this, int NumberOfHouses, // ushort * HouseIDs, char * * Names, int * Rents, char * * Descriptions, int * Sizes, int * // PositionsX, int * PositionsY, int * PositionsZ, char[30] * Towns, bool * Guildhouses) int __thiscall TQueryManagerConnection::insertHouses (TQueryManagerConnection *this,int NumberOfHouses,ushort *HouseIDs,char **Names,int *Rents ,char **Descriptions,int *Sizes,int *PositionsX,int *PositionsY,int *PositionsZ, char (*Towns) [30],bool *Guildhouses) { TWriteBuffer *this_00; int iVar1; int local_14; int i; this->QueryOk = true; this_00 = &this->WriteBuffer; (this->WriteBuffer).Position = 0; // try { // try from 080e5ca5 to 080e5cb9 has its CatchHandler @ 080e5e10 TWriteBuffer::writeWord(this_00,0); TWriteBuffer::writeByte(this_00,'-'); // try { // try from 080e5cc5 to 080e5cc9 has its CatchHandler @ 080e5e50 TWriteBuffer::writeWord(this_00,(ushort)NumberOfHouses); local_14 = 0; if (0 < NumberOfHouses) { do { // try { // try from 080e5d23 to 080e5d27 has its CatchHandler @ 080e5e82 TWriteBuffer::writeWord(this_00,HouseIDs[local_14]); // try { // try from 080e5d38 to 080e5d3c has its CatchHandler @ 080e5eaf TWriteStream::writeString(&this_00->super_TWriteStream,Names[local_14]); // try { // try from 080e5d4d to 080e5d51 has its CatchHandler @ 080e5edf TWriteBuffer::writeQuad(this_00,Rents[local_14]); // try { // try from 080e5d62 to 080e5d66 has its CatchHandler @ 080e5f13 TWriteStream::writeString(&this_00->super_TWriteStream,Descriptions[local_14]); // try { // try from 080e5d78 to 080e5d7c has its CatchHandler @ 080e5f47 TWriteBuffer::writeWord(this_00,*(ushort *)(Sizes + local_14)); // try { // try from 080e5d8e to 080e5d92 has its CatchHandler @ 080e5f7b TWriteBuffer::writeWord(this_00,*(ushort *)(PositionsX + local_14)); // try { // try from 080e5da4 to 080e5da8 has its CatchHandler @ 080e5faf TWriteBuffer::writeWord(this_00,*(ushort *)(PositionsY + local_14)); // try { // try from 080e5dba to 080e5dbe has its CatchHandler @ 080e5fe3 TWriteBuffer::writeByte(this_00,(uchar)PositionsZ[local_14]); // try { // try from 080e5dd7 to 080e5ddb has its CatchHandler @ 080e6017 TWriteStream::writeString(&this_00->super_TWriteStream,Towns[local_14]); // try { // try from 080e5df3 to 080e5df7 has its CatchHandler @ 080e604b TWriteBuffer::writeByte(this_00,Guildhouses[local_14] != false); local_14 = local_14 + 1; } while (local_14 < NumberOfHouses); } iVar1 = executeQuery(this,0x3c,true); if (iVar1 == 0) { iVar1 = 0; } else { error("TQueryManagerConnection::insertHouses: Anfrage fehlgeschlagen.\n"); iVar1 = -1; } return iVar1; } // DWARF original prototype: int clearIsOnline(TQueryManagerConnection * this, int * // NumberOfAffectedPlayers) int __thiscall TQueryManagerConnection::clearIsOnline(TQueryManagerConnection *this,int *NumberOfAffectedPlayers) { ushort uVar1; int iVar2; this->QueryOk = true; (this->WriteBuffer).Position = 0; // try { // try from 080e60a8 to 080e60bc has its CatchHandler @ 080e6110 TWriteBuffer::writeWord(&this->WriteBuffer,0); TWriteBuffer::writeByte(&this->WriteBuffer,'.'); iVar2 = executeQuery(this,0x78,true); if (iVar2 == 0) { // try { // try from 080e60fa to 080e60fe has its CatchHandler @ 080e6147 uVar1 = TReadBuffer::readWord(&this->ReadBuffer); *NumberOfAffectedPlayers = (uint)uVar1; iVar2 = 0; } else { error("TQueryManagerConnection::clearIsOnline: Anfrage fehlgeschlagen.\n"); iVar2 = -1; } return iVar2; } // DWARF original prototype: int createPlayerlist(TQueryManagerConnection * this, int // NumberOfPlayers, char * * Names, int * Levels, char[30] * Professions, bool * NewRecord) int __thiscall TQueryManagerConnection::createPlayerlist (TQueryManagerConnection *this,int NumberOfPlayers,char **Names,int *Levels, char (*Professions) [30],bool *NewRecord) { uchar uVar1; ushort w; TWriteBuffer *this_00; int i; int iVar2; this->QueryOk = true; this_00 = &this->WriteBuffer; (this->WriteBuffer).Position = 0; // try { // try from 080e6197 to 080e61ab has its CatchHandler @ 080e6270 TWriteBuffer::writeWord(this_00,0); TWriteBuffer::writeByte(this_00,'/'); w = 0xffff; if (-1 < NumberOfPlayers) { w = (ushort)NumberOfPlayers; } // try { // try from 080e61c4 to 080e61c8 has its CatchHandler @ 080e62b0 TWriteBuffer::writeWord(this_00,w); iVar2 = 0; if (0 < NumberOfPlayers) { do { // try { // try from 080e6232 to 080e6236 has its CatchHandler @ 080e62e2 TWriteStream::writeString(&this_00->super_TWriteStream,Names[iVar2]); // try { // try from 080e6245 to 080e6249 has its CatchHandler @ 080e6312 TWriteBuffer::writeWord(this_00,*(ushort *)(Levels + iVar2)); // try { // try from 080e625e to 080e6262 has its CatchHandler @ 080e6345 TWriteStream::writeString(&this_00->super_TWriteStream,Professions[iVar2]); iVar2 = iVar2 + 1; } while (iVar2 < NumberOfPlayers); } iVar2 = executeQuery(this,0xf0,true); if (iVar2 == 0) { // try { // try from 080e6211 to 080e6215 has its CatchHandler @ 080e637c uVar1 = TReadBuffer::readByte(&this->ReadBuffer); *NewRecord = uVar1 != '\0'; iVar2 = 0; } else { error("TQueryManagerConnection::createPlayerlist: Anfrage fehlgeschlagen.\n"); iVar2 = -1; } return iVar2; } // WARNING: Variable defined which should be unmapped: i // DWARF original prototype: int logKilledCreatures(TQueryManagerConnection * this, int // NumberOfRaces, char * * Names, int * KilledPlayers, int * KilledCreatures) int __thiscall TQueryManagerConnection::logKilledCreatures (TQueryManagerConnection *this,int NumberOfRaces,char **Names,int *KilledPlayers, int *KilledCreatures) { TWriteBuffer *this_00; int iVar1; int local_14; int i; this->QueryOk = true; this_00 = &this->WriteBuffer; (this->WriteBuffer).Position = 0; // try { // try from 080e63d5 to 080e63e9 has its CatchHandler @ 080e6491 TWriteBuffer::writeWord(this_00,0); TWriteBuffer::writeByte(this_00,'0'); // try { // try from 080e63f5 to 080e63f9 has its CatchHandler @ 080e64d0 TWriteBuffer::writeWord(this_00,(ushort)NumberOfRaces); local_14 = 0; if (0 < NumberOfRaces) { do { // try { // try from 080e6452 to 080e6456 has its CatchHandler @ 080e6502 TWriteStream::writeString(&this_00->super_TWriteStream,Names[local_14]); // try { // try from 080e6467 to 080e646b has its CatchHandler @ 080e6530 TWriteBuffer::writeQuad(this_00,KilledPlayers[local_14]); // try { // try from 080e647c to 080e6480 has its CatchHandler @ 080e6560 TWriteBuffer::writeQuad(this_00,KilledCreatures[local_14]); local_14 = local_14 + 1; } while (local_14 < NumberOfRaces); } iVar1 = executeQuery(this,0xf0,true); if (iVar1 == 0) { iVar1 = 0; } else { error("TQueryManagerConnection::logKilledCreatures: Anfrage fehlgeschlagen.\n"); iVar1 = -1; } return iVar1; } // DWARF original prototype: int loadPlayers(TQueryManagerConnection * this, ulong // MinimumCharacterID, int * NumberOfPlayers, char[30] * Names, ulong * CharacterIDs) int __thiscall TQueryManagerConnection::loadPlayers (TQueryManagerConnection *this,ulong MinimumCharacterID,int *NumberOfPlayers, char (*Names) [30],ulong *CharacterIDs) { TWriteBuffer *this_00; int iVar1; ulong uVar2; int i; TReadBuffer *this_01; this->QueryOk = true; this_00 = &this->WriteBuffer; (this->WriteBuffer).Position = 0; // try { // try from 080e65b5 to 080e65c9 has its CatchHandler @ 080e6670 TWriteBuffer::writeWord(this_00,0); TWriteBuffer::writeByte(this_00,'2'); // try { // try from 080e65d4 to 080e65d8 has its CatchHandler @ 080e66b0 TWriteBuffer::writeQuad(this_00,MinimumCharacterID); iVar1 = executeQuery(this,900,true); if (iVar1 == 0) { this_01 = &this->ReadBuffer; // try { // try from 080e6616 to 080e661a has its CatchHandler @ 080e66e2 uVar2 = TReadBuffer::readQuad(this_01); iVar1 = 0; *NumberOfPlayers = uVar2; if (0 < (int)uVar2) { do { // try { // try from 080e664f to 080e6653 has its CatchHandler @ 080e670d TReadStream::readString(&this_01->super_TReadStream,Names[iVar1],0x1e); // try { // try from 080e6657 to 080e665b has its CatchHandler @ 080e673f uVar2 = TReadBuffer::readQuad(this_01); CharacterIDs[iVar1] = uVar2; iVar1 = iVar1 + 1; } while (iVar1 < *NumberOfPlayers); } iVar1 = 0; } else { error("TQueryManagerConnection::loadPlayers: Anfrage fehlgeschlagen.\n"); iVar1 = -1; } return iVar1; } // DWARF original prototype: int getKeptCharacters(TQueryManagerConnection * this, ulong // MinimumCharacterID, int * NumberOfPlayers, ulong * CharacterIDs) int __thiscall TQueryManagerConnection::getKeptCharacters (TQueryManagerConnection *this,ulong MinimumCharacterID,int *NumberOfPlayers, ulong *CharacterIDs) { TWriteBuffer *this_00; int iVar1; ulong uVar2; int i; this->QueryOk = true; this_00 = &this->WriteBuffer; (this->WriteBuffer).Position = 0; // try { // try from 080e6795 to 080e67a9 has its CatchHandler @ 080e6830 TWriteBuffer::writeWord(this_00,0); TWriteBuffer::writeByte(this_00,200); // try { // try from 080e67b4 to 080e67b8 has its CatchHandler @ 080e6870 TWriteBuffer::writeQuad(this_00,MinimumCharacterID); iVar1 = executeQuery(this,0x708,true); if (iVar1 == 0) { // try { // try from 080e67f6 to 080e67fa has its CatchHandler @ 080e68a2 uVar2 = TReadBuffer::readQuad(&this->ReadBuffer); iVar1 = 0; *NumberOfPlayers = uVar2; if (0 < (int)uVar2) { do { // try { // try from 080e6813 to 080e6817 has its CatchHandler @ 080e68d0 uVar2 = TReadBuffer::readQuad(&this->ReadBuffer); CharacterIDs[iVar1] = uVar2; iVar1 = iVar1 + 1; } while (iVar1 < *NumberOfPlayers); } iVar1 = 0; } else { error("TQueryManagerConnection::getKeptCharacters: Anfrage fehlgeschlagen.\n"); iVar1 = -1; } return iVar1; } // DWARF original prototype: int getDeletedCharacters(TQueryManagerConnection * this, ulong // MinimumCharacterID, int * NumberOfPlayers, ulong * CharacterIDs) int __thiscall TQueryManagerConnection::getDeletedCharacters (TQueryManagerConnection *this,ulong MinimumCharacterID,int *NumberOfPlayers, ulong *CharacterIDs) { TWriteBuffer *this_00; int iVar1; ulong uVar2; int i; this->QueryOk = true; this_00 = &this->WriteBuffer; (this->WriteBuffer).Position = 0; // try { // try from 080e6925 to 080e6939 has its CatchHandler @ 080e69c0 TWriteBuffer::writeWord(this_00,0); TWriteBuffer::writeByte(this_00,0xc9); // try { // try from 080e6944 to 080e6948 has its CatchHandler @ 080e6a00 TWriteBuffer::writeQuad(this_00,MinimumCharacterID); iVar1 = executeQuery(this,900,true); if (iVar1 == 0) { // try { // try from 080e6986 to 080e698a has its CatchHandler @ 080e6a32 uVar2 = TReadBuffer::readQuad(&this->ReadBuffer); iVar1 = 0; *NumberOfPlayers = uVar2; if (0 < (int)uVar2) { do { // try { // try from 080e69a3 to 080e69a7 has its CatchHandler @ 080e6a60 uVar2 = TReadBuffer::readQuad(&this->ReadBuffer); CharacterIDs[iVar1] = uVar2; iVar1 = iVar1 + 1; } while (iVar1 < *NumberOfPlayers); } iVar1 = 0; } else { error("TQueryManagerConnection::getKeptCharacters: Anfrage fehlgeschlagen.\n"); iVar1 = -1; } return iVar1; } // DWARF original prototype: int deleteOldCharacter(TQueryManagerConnection * this, ulong // CharacterID) int __thiscall TQueryManagerConnection::deleteOldCharacter(TQueryManagerConnection *this,ulong CharacterID) { TWriteBuffer *this_00; int iVar1; this_00 = &this->WriteBuffer; this->QueryOk = true; (this->WriteBuffer).Position = 0; // try { // try from 080e6abb to 080e6acf has its CatchHandler @ 080e6b23 TWriteBuffer::writeWord(this_00,0); TWriteBuffer::writeByte(this_00,0xca); // try { // try from 080e6ada to 080e6ade has its CatchHandler @ 080e6b60 TWriteBuffer::writeQuad(this_00,CharacterID); iVar1 = executeQuery(this,0x1e,true); if (iVar1 == 0) { iVar1 = 0; } else { error("TQueryManagerConnection::deleteOldCharacter: Anfrage fehlgeschlagen.\n"); iVar1 = -1; } return iVar1; } // DWARF original prototype: int getHiddenCharacters(TQueryManagerConnection * this, ulong // MinimumCharacterID, int * NumberOfPlayers, ulong * CharacterIDs) int __thiscall TQueryManagerConnection::getHiddenCharacters (TQueryManagerConnection *this,ulong MinimumCharacterID,int *NumberOfPlayers, ulong *CharacterIDs) { TWriteBuffer *this_00; int iVar1; ulong uVar2; int i; this->QueryOk = true; this_00 = &this->WriteBuffer; (this->WriteBuffer).Position = 0; // try { // try from 080e6bb5 to 080e6bc9 has its CatchHandler @ 080e6c50 TWriteBuffer::writeWord(this_00,0); TWriteBuffer::writeByte(this_00,0xcb); // try { // try from 080e6bd4 to 080e6bd8 has its CatchHandler @ 080e6c90 TWriteBuffer::writeQuad(this_00,MinimumCharacterID); iVar1 = executeQuery(this,0x78,true); if (iVar1 == 0) { // try { // try from 080e6c16 to 080e6c1a has its CatchHandler @ 080e6cc2 uVar2 = TReadBuffer::readQuad(&this->ReadBuffer); iVar1 = 0; *NumberOfPlayers = uVar2; if (0 < (int)uVar2) { do { // try { // try from 080e6c33 to 080e6c37 has its CatchHandler @ 080e6cf0 uVar2 = TReadBuffer::readQuad(&this->ReadBuffer); CharacterIDs[iVar1] = uVar2; iVar1 = iVar1 + 1; } while (iVar1 < *NumberOfPlayers); } iVar1 = 0; } else { error("TQueryManagerConnection::getHiddenCharacters: Anfrage fehlgeschlagen.\n"); iVar1 = -1; } return iVar1; } // WARNING: Variable defined which should be unmapped: i // DWARF original prototype: int createHighscores(TQueryManagerConnection * this, int // NumberOfPlayers, ulong * CharacterIDs, int * ExpPoints, int * ExpLevel, int * Fist, int * Club, // int * Axe, int * Sword, int * Distance, int * Shielding, int * Magic, int * Fishing) int __thiscall TQueryManagerConnection::createHighscores (TQueryManagerConnection *this,int NumberOfPlayers,ulong *CharacterIDs,int *ExpPoints, int *ExpLevel,int *Fist,int *Club,int *Axe,int *Sword,int *Distance,int *Shielding, int *Magic,int *Fishing) { TWriteBuffer *this_00; int iVar1; int local_14; int i; this->QueryOk = true; this_00 = &this->WriteBuffer; (this->WriteBuffer).Position = 0; // try { // try from 080e6d45 to 080e6d59 has its CatchHandler @ 080e6eb5 TWriteBuffer::writeWord(this_00,0); TWriteBuffer::writeByte(this_00,0xcc); // try { // try from 080e6d64 to 080e6d68 has its CatchHandler @ 080e6ef0 TWriteBuffer::writeQuad(this_00,NumberOfPlayers); local_14 = 0; if (0 < NumberOfPlayers) { do { // try { // try from 080e6dc1 to 080e6dc5 has its CatchHandler @ 080e6f22 TWriteBuffer::writeQuad(this_00,CharacterIDs[local_14]); // try { // try from 080e6dd6 to 080e6dda has its CatchHandler @ 080e6f4f TWriteBuffer::writeQuad(this_00,ExpPoints[local_14]); // try { // try from 080e6dec to 080e6df0 has its CatchHandler @ 080e6f7f TWriteBuffer::writeWord(this_00,*(ushort *)(ExpLevel + local_14)); // try { // try from 080e6e02 to 080e6e06 has its CatchHandler @ 080e6fb3 TWriteBuffer::writeWord(this_00,*(ushort *)(Fist + local_14)); // try { // try from 080e6e18 to 080e6e1c has its CatchHandler @ 080e6fe7 TWriteBuffer::writeWord(this_00,*(ushort *)(Club + local_14)); // try { // try from 080e6e2e to 080e6e32 has its CatchHandler @ 080e701b TWriteBuffer::writeWord(this_00,*(ushort *)(Axe + local_14)); // try { // try from 080e6e44 to 080e6e48 has its CatchHandler @ 080e704f TWriteBuffer::writeWord(this_00,*(ushort *)(Sword + local_14)); // try { // try from 080e6e5a to 080e6e5e has its CatchHandler @ 080e7083 TWriteBuffer::writeWord(this_00,*(ushort *)(Distance + local_14)); // try { // try from 080e6e70 to 080e6e74 has its CatchHandler @ 080e70b7 TWriteBuffer::writeWord(this_00,*(ushort *)(Shielding + local_14)); // try { // try from 080e6e86 to 080e6e8a has its CatchHandler @ 080e70eb TWriteBuffer::writeWord(this_00,*(ushort *)(Magic + local_14)); // try { // try from 080e6e9c to 080e6ea0 has its CatchHandler @ 080e711f TWriteBuffer::writeWord(this_00,*(ushort *)(Fishing + local_14)); local_14 = local_14 + 1; } while (local_14 < NumberOfPlayers); } iVar1 = executeQuery(this,0x78,true); if (iVar1 == 0) { iVar1 = 0; } else { error("TQueryManagerConnection::createHighscores: Anfrage fehlgeschlagen.\n"); iVar1 = -1; } return iVar1; } // DWARF original prototype: int createCensus(TQueryManagerConnection * this) int __thiscall TQueryManagerConnection::createCensus(TQueryManagerConnection *this) { int iVar1; this->QueryOk = true; (this->WriteBuffer).Position = 0; // try { // try from 080e7178 to 080e718c has its CatchHandler @ 080e71c8 TWriteBuffer::writeWord(&this->WriteBuffer,0); TWriteBuffer::writeByte(&this->WriteBuffer,0xcd); iVar1 = executeQuery(this,600,true); if (iVar1 == 0) { iVar1 = 0; } else { error("TQueryManagerConnection::createCensus: Anfrage fehlgeschlagen.\n"); iVar1 = -1; } return iVar1; } // DWARF original prototype: int createKillStatistics(TQueryManagerConnection * this) int __thiscall TQueryManagerConnection::createKillStatistics(TQueryManagerConnection *this) { int iVar1; this->QueryOk = true; (this->WriteBuffer).Position = 0; // try { // try from 080e7228 to 080e723c has its CatchHandler @ 080e7278 TWriteBuffer::writeWord(&this->WriteBuffer,0); TWriteBuffer::writeByte(&this->WriteBuffer,0xce); iVar1 = executeQuery(this,300,true); if (iVar1 == 0) { iVar1 = 0; } else { error("TQueryManagerConnection::createKillStatistics: Anfrage fehlgeschlagen.\n"); iVar1 = -1; } return iVar1; } // DWARF original prototype: int getPlayersOnline(TQueryManagerConnection * this, int * // NumberOfWorlds, char[30] * Names, ushort * Players) int __thiscall TQueryManagerConnection::getPlayersOnline (TQueryManagerConnection *this,int *NumberOfWorlds,char (*Names) [30],ushort *Players) { TReadBuffer *this_00; byte bVar1; ushort uVar2; int iVar3; this->QueryOk = true; (this->WriteBuffer).Position = 0; // try { // try from 080e72d5 to 080e72e9 has its CatchHandler @ 080e7380 TWriteBuffer::writeWord(&this->WriteBuffer,0); TWriteBuffer::writeByte(&this->WriteBuffer,0xcf); iVar3 = executeQuery(this,0x78,true); if (iVar3 == 0) { this_00 = &this->ReadBuffer; // try { // try from 080e7326 to 080e732a has its CatchHandler @ 080e73c0 bVar1 = TReadBuffer::readByte(this_00); iVar3 = 0; *NumberOfWorlds = (uint)bVar1; if (bVar1 != 0) { do { // try { // try from 080e735f to 080e7363 has its CatchHandler @ 080e73eb TReadStream::readString(&this_00->super_TReadStream,Names[iVar3],0x1e); // try { // try from 080e7367 to 080e736b has its CatchHandler @ 080e741a uVar2 = TReadBuffer::readWord(this_00); Players[iVar3] = uVar2; iVar3 = iVar3 + 1; } while (iVar3 < *NumberOfWorlds); } iVar3 = 0; } else { error("TQueryManagerConnection::getPlayersOnline: Anfrage fehlgeschlagen.\n"); iVar3 = -1; } return iVar3; } // DWARF original prototype: int getWorlds(TQueryManagerConnection * this, int * NumberOfWorlds, // char[30] * Names) int __thiscall TQueryManagerConnection::getWorlds (TQueryManagerConnection *this,int *NumberOfWorlds,char (*Names) [30]) { byte bVar1; int iVar2; this->QueryOk = true; (this->WriteBuffer).Position = 0; // try { // try from 080e7475 to 080e7489 has its CatchHandler @ 080e7511 TWriteBuffer::writeWord(&this->WriteBuffer,0); TWriteBuffer::writeByte(&this->WriteBuffer,0xd0); iVar2 = executeQuery(this,0x78,true); if (iVar2 == 0) { // try { // try from 080e74c9 to 080e74cd has its CatchHandler @ 080e7550 bVar1 = TReadBuffer::readByte(&this->ReadBuffer); iVar2 = 0; *NumberOfWorlds = (uint)bVar1; if (bVar1 != 0) { do { // try { // try from 080e7502 to 080e7506 has its CatchHandler @ 080e7580 TReadStream::readString(&(this->ReadBuffer).super_TReadStream,Names[iVar2],0x1e); iVar2 = iVar2 + 1; } while (iVar2 < *NumberOfWorlds); } iVar2 = 0; } else { error("TQueryManagerConnection::getWorlds: Anfrage fehlgeschlagen.\n"); iVar2 = -1; } return iVar2; } // DWARF original prototype: int getServerLoad(TQueryManagerConnection * this, char * World, int // Period, int * Data) int __thiscall TQueryManagerConnection::getServerLoad (TQueryManagerConnection *this,char *World,int Period,int *Data) { TWriteBuffer *this_00; ushort uVar1; int iVar2; uint uVar3; ushort Value; int i; this->QueryOk = true; this_00 = &this->WriteBuffer; (this->WriteBuffer).Position = 0; // try { // try from 080e75d5 to 080e75e9 has its CatchHandler @ 080e7673 TWriteBuffer::writeWord(this_00,0); TWriteBuffer::writeByte(this_00,0xd1); // try { // try from 080e75f4 to 080e75f8 has its CatchHandler @ 080e76b0 TWriteStream::writeString(&this_00->super_TWriteStream,World); // try { // try from 080e7607 to 080e760b has its CatchHandler @ 080e76e2 TWriteBuffer::writeByte(this_00,(uchar)Period); iVar2 = executeQuery(this,0x168,true); if (iVar2 == 0) { iVar2 = 0; do { // try { // try from 080e7630 to 080e7634 has its CatchHandler @ 080e7712 uVar1 = TReadBuffer::readWord(&this->ReadBuffer); uVar3 = 0xffffffff; if (uVar1 != 0xffff) { uVar3 = (uint)uVar1; } Data[iVar2] = uVar3; iVar2 = iVar2 + 1; } while (iVar2 < 600); iVar2 = 0; } else { error("TQueryManagerConnection::getServerLoad: Anfrage fehlgeschlagen.\n"); iVar2 = -1; } return iVar2; } // DWARF original prototype: int insertPaymentDataOld(TQueryManagerConnection * this, ulong // PurchaseNr, ulong ReferenceNr, char * FirstName, char * LastName, char * Company, char * Street, // char * Zip, char * City, char * Country, char * State, char * Phone, char * Fax, char * EMail, // char * PaymentMethod, ulong ProductID, char * Registrant, ulong AccountID, ulong * PaymentID) int __thiscall TQueryManagerConnection::insertPaymentDataOld(TQueryManagerConnection *this) { TWriteBuffer *this_00; byte bVar1; int iVar2; ulong uVar3; ulong in_stack_00000008; ulong in_stack_0000000c; char *in_stack_00000010; char *in_stack_00000014; char *in_stack_00000018; char *in_stack_0000001c; char *in_stack_00000020; char *in_stack_00000024; char *in_stack_00000028; char *in_stack_0000002c; char *in_stack_00000030; char *in_stack_00000034; char *in_stack_00000038; char *in_stack_0000003c; ulong in_stack_00000040; char *in_stack_00000044; ulong in_stack_00000048; ulong *in_stack_0000004c; this->QueryOk = true; this_00 = &this->WriteBuffer; (this->WriteBuffer).Position = 0; // try { // try from 080e7765 to 080e7779 has its CatchHandler @ 080e78f6 TWriteBuffer::writeWord(this_00,0); TWriteBuffer::writeByte(this_00,0xd2); // try { // try from 080e7784 to 080e7788 has its CatchHandler @ 080e7930 TWriteBuffer::writeQuad(this_00,in_stack_00000008); // try { // try from 080e7793 to 080e7797 has its CatchHandler @ 080e7962 TWriteBuffer::writeQuad(this_00,in_stack_0000000c); // try { // try from 080e77a2 to 080e77a6 has its CatchHandler @ 080e7992 TWriteStream::writeString(&this_00->super_TWriteStream,in_stack_00000010); // try { // try from 080e77b1 to 080e77b5 has its CatchHandler @ 080e79c2 TWriteStream::writeString(&this_00->super_TWriteStream,in_stack_00000014); // try { // try from 080e77c0 to 080e77c4 has its CatchHandler @ 080e79f6 TWriteStream::writeString(&this_00->super_TWriteStream,in_stack_00000018); // try { // try from 080e77cf to 080e77d3 has its CatchHandler @ 080e7a2a TWriteStream::writeString(&this_00->super_TWriteStream,in_stack_0000001c); // try { // try from 080e77de to 080e77e2 has its CatchHandler @ 080e7a5e TWriteStream::writeString(&this_00->super_TWriteStream,in_stack_00000020); // try { // try from 080e77ed to 080e77f1 has its CatchHandler @ 080e7a92 TWriteStream::writeString(&this_00->super_TWriteStream,in_stack_00000024); // try { // try from 080e77fc to 080e7800 has its CatchHandler @ 080e7ac6 TWriteStream::writeString(&this_00->super_TWriteStream,in_stack_00000028); // try { // try from 080e780b to 080e780f has its CatchHandler @ 080e7afa TWriteStream::writeString(&this_00->super_TWriteStream,in_stack_0000002c); // try { // try from 080e781a to 080e781e has its CatchHandler @ 080e7b2e TWriteStream::writeString(&this_00->super_TWriteStream,in_stack_00000030); // try { // try from 080e7829 to 080e782d has its CatchHandler @ 080e7b62 TWriteStream::writeString(&this_00->super_TWriteStream,in_stack_00000034); // try { // try from 080e7838 to 080e783c has its CatchHandler @ 080e7b96 TWriteStream::writeString(&this_00->super_TWriteStream,in_stack_00000038); // try { // try from 080e7847 to 080e784b has its CatchHandler @ 080e7bca TWriteStream::writeString(&this_00->super_TWriteStream,in_stack_0000003c); // try { // try from 080e7856 to 080e785a has its CatchHandler @ 080e7bfe TWriteBuffer::writeQuad(this_00,in_stack_00000040); // try { // try from 080e7865 to 080e7869 has its CatchHandler @ 080e7c32 TWriteStream::writeString(&this_00->super_TWriteStream,in_stack_00000044); // try { // try from 080e7874 to 080e7878 has its CatchHandler @ 080e7c66 TWriteBuffer::writeQuad(this_00,in_stack_00000048); iVar2 = executeQuery(this,0x168,true); if (iVar2 == 0) { // try { // try from 080e78e6 to 080e78ea has its CatchHandler @ 080e7c9a uVar3 = TReadBuffer::readQuad(&this->ReadBuffer); *in_stack_0000004c = uVar3; iVar2 = 0; } else { if (iVar2 == 1) { // try { // try from 080e78b7 to 080e78bb has its CatchHandler @ 080e7ccc bVar1 = TReadBuffer::readByte(&this->ReadBuffer); if (bVar1 == 1) { return 1; } error(&DAT_0810f520,(uint)bVar1); } else { error("TQueryManagerConnection::insertPaymentDataOld: Anfrage fehlgeschlagen.\n"); } iVar2 = -1; } return iVar2; } // DWARF original prototype: int addPaymentOld(TQueryManagerConnection * this, ulong AccountID, char // * Description, ulong PaymentID, int Days, int * ActionTaken) int __thiscall TQueryManagerConnection::addPaymentOld(TQueryManagerConnection *this) { TWriteBuffer *this_00; bool bVar1; byte bVar2; int iVar3; int FailureCode; uint uVar4; ulong in_stack_00000008; char *in_stack_0000000c; ulong in_stack_00000010; ushort in_stack_00000014; uint *in_stack_00000018; this->QueryOk = true; this_00 = &this->WriteBuffer; (this->WriteBuffer).Position = 0; // try { // try from 080e7d25 to 080e7d39 has its CatchHandler @ 080e7e06 TWriteBuffer::writeWord(this_00,0); TWriteBuffer::writeByte(this_00,0xd3); // try { // try from 080e7d44 to 080e7d48 has its CatchHandler @ 080e7e40 TWriteBuffer::writeQuad(this_00,in_stack_00000008); // try { // try from 080e7d53 to 080e7d57 has its CatchHandler @ 080e7e72 TWriteStream::writeString(&this_00->super_TWriteStream,in_stack_0000000c); // try { // try from 080e7d62 to 080e7d66 has its CatchHandler @ 080e7ea2 TWriteBuffer::writeQuad(this_00,in_stack_00000010); // try { // try from 080e7d72 to 080e7d76 has its CatchHandler @ 080e7ed2 TWriteBuffer::writeWord(this_00,in_stack_00000014); iVar3 = executeQuery(this,0x168,true); if (iVar3 == 0) { // try { // try from 080e7df2 to 080e7df6 has its CatchHandler @ 080e7f06 bVar2 = TReadBuffer::readByte(&this->ReadBuffer); *in_stack_00000018 = (uint)bVar2; iVar3 = 0; } else { if (iVar3 == 1) { // try { // try from 080e7db5 to 080e7db9 has its CatchHandler @ 080e7f38 bVar2 = TReadBuffer::readByte(&this->ReadBuffer); uVar4 = (uint)bVar2; bVar1 = false; if ((uVar4 != 0) && (uVar4 < 3)) { bVar1 = true; } if (bVar1) { return uVar4; } error(&DAT_0810f5e0,uVar4); } else { error("TQueryManagerConnection::addPaymentOld: Anfrage fehlgeschlagen.\n"); } iVar3 = -1; } return iVar3; } // DWARF original prototype: int cancelPaymentOld(TQueryManagerConnection * this, ulong PurchaseNr, // ulong ReferenceNr, ulong AccountID, bool * IllegalUse, char * EMailAddress) int __thiscall TQueryManagerConnection::cancelPaymentOld(TQueryManagerConnection *this) { TWriteBuffer *this_00; bool bVar1; byte bVar2; uchar uVar3; int iVar4; int FailureCode; uint uVar5; ulong in_stack_00000008; ulong in_stack_0000000c; ulong in_stack_00000010; undefined4 in_stack_00000014; char *in_stack_00000018; char *Text; this->QueryOk = true; this_00 = &this->WriteBuffer; (this->WriteBuffer).Position = 0; // try { // try from 080e7f95 to 080e7fa9 has its CatchHandler @ 080e8072 TWriteBuffer::writeWord(this_00,0); TWriteBuffer::writeByte(this_00,0xd4); // try { // try from 080e7fb4 to 080e7fb8 has its CatchHandler @ 080e80b0 TWriteBuffer::writeQuad(this_00,in_stack_00000008); // try { // try from 080e7fc3 to 080e7fc7 has its CatchHandler @ 080e80e2 TWriteBuffer::writeQuad(this_00,in_stack_0000000c); // try { // try from 080e7fd2 to 080e7fd6 has its CatchHandler @ 080e8112 TWriteBuffer::writeQuad(this_00,in_stack_00000010); iVar4 = executeQuery(this,0x168,true); if (iVar4 == 0) { // try { // try from 080e8047 to 080e804b has its CatchHandler @ 080e8142 uVar3 = TReadBuffer::readByte(&this->ReadBuffer); *(bool *)in_stack_00000014 = uVar3 != '\0'; // try { // try from 080e8069 to 080e806d has its CatchHandler @ 080e8174 TReadStream::readString(&(this->ReadBuffer).super_TReadStream,in_stack_00000018,0x32); iVar4 = 0; } else { if (iVar4 == 1) { // try { // try from 080e8015 to 080e8019 has its CatchHandler @ 080e81aa bVar2 = TReadBuffer::readByte(&this->ReadBuffer); uVar5 = (uint)bVar2; bVar1 = false; if ((uVar5 != 0) && (uVar5 < 3)) { bVar1 = true; } if (bVar1) { return uVar5; } Text = &DAT_0810f6a0; } else { Text = "TQueryManagerConnection::cancelPaymentOld: Anfrage fehlgeschlagen.\n"; } error(Text); iVar4 = -1; } return iVar4; } // DWARF original prototype: int insertPaymentDataNew(TQueryManagerConnection * this, ulong // PurchaseNr, ulong ReferenceNr, char * FirstName, char * LastName, char * Company, char * Street, // char * Zip, char * City, char * Country, char * State, char * Phone, char * Fax, char * EMail, // char * PaymentMethod, ulong ProductID, char * Registrant, char * PaymentKey, ulong * PaymentID) int __thiscall TQueryManagerConnection::insertPaymentDataNew(TQueryManagerConnection *this) { TWriteBuffer *this_00; byte bVar1; int iVar2; ulong uVar3; ulong in_stack_00000008; ulong in_stack_0000000c; char *in_stack_00000010; char *in_stack_00000014; char *in_stack_00000018; char *in_stack_0000001c; char *in_stack_00000020; char *in_stack_00000024; char *in_stack_00000028; char *in_stack_0000002c; char *in_stack_00000030; char *in_stack_00000034; char *in_stack_00000038; char *in_stack_0000003c; ulong in_stack_00000040; char *in_stack_00000044; char *in_stack_00000048; ulong *in_stack_0000004c; this->QueryOk = true; this_00 = &this->WriteBuffer; (this->WriteBuffer).Position = 0; // try { // try from 080e8205 to 080e8219 has its CatchHandler @ 080e8396 TWriteBuffer::writeWord(this_00,0); TWriteBuffer::writeByte(this_00,0xd5); // try { // try from 080e8224 to 080e8228 has its CatchHandler @ 080e83d0 TWriteBuffer::writeQuad(this_00,in_stack_00000008); // try { // try from 080e8233 to 080e8237 has its CatchHandler @ 080e8402 TWriteBuffer::writeQuad(this_00,in_stack_0000000c); // try { // try from 080e8242 to 080e8246 has its CatchHandler @ 080e8432 TWriteStream::writeString(&this_00->super_TWriteStream,in_stack_00000010); // try { // try from 080e8251 to 080e8255 has its CatchHandler @ 080e8462 TWriteStream::writeString(&this_00->super_TWriteStream,in_stack_00000014); // try { // try from 080e8260 to 080e8264 has its CatchHandler @ 080e8496 TWriteStream::writeString(&this_00->super_TWriteStream,in_stack_00000018); // try { // try from 080e826f to 080e8273 has its CatchHandler @ 080e84ca TWriteStream::writeString(&this_00->super_TWriteStream,in_stack_0000001c); // try { // try from 080e827e to 080e8282 has its CatchHandler @ 080e84fe TWriteStream::writeString(&this_00->super_TWriteStream,in_stack_00000020); // try { // try from 080e828d to 080e8291 has its CatchHandler @ 080e8532 TWriteStream::writeString(&this_00->super_TWriteStream,in_stack_00000024); // try { // try from 080e829c to 080e82a0 has its CatchHandler @ 080e8566 TWriteStream::writeString(&this_00->super_TWriteStream,in_stack_00000028); // try { // try from 080e82ab to 080e82af has its CatchHandler @ 080e859a TWriteStream::writeString(&this_00->super_TWriteStream,in_stack_0000002c); // try { // try from 080e82ba to 080e82be has its CatchHandler @ 080e85ce TWriteStream::writeString(&this_00->super_TWriteStream,in_stack_00000030); // try { // try from 080e82c9 to 080e82cd has its CatchHandler @ 080e8602 TWriteStream::writeString(&this_00->super_TWriteStream,in_stack_00000034); // try { // try from 080e82d8 to 080e82dc has its CatchHandler @ 080e8636 TWriteStream::writeString(&this_00->super_TWriteStream,in_stack_00000038); // try { // try from 080e82e7 to 080e82eb has its CatchHandler @ 080e866a TWriteStream::writeString(&this_00->super_TWriteStream,in_stack_0000003c); // try { // try from 080e82f6 to 080e82fa has its CatchHandler @ 080e869e TWriteBuffer::writeQuad(this_00,in_stack_00000040); // try { // try from 080e8305 to 080e8309 has its CatchHandler @ 080e86d2 TWriteStream::writeString(&this_00->super_TWriteStream,in_stack_00000044); // try { // try from 080e8314 to 080e8318 has its CatchHandler @ 080e8706 TWriteStream::writeString(&this_00->super_TWriteStream,in_stack_00000048); iVar2 = executeQuery(this,0x168,true); if (iVar2 == 0) { // try { // try from 080e8386 to 080e838a has its CatchHandler @ 080e873a uVar3 = TReadBuffer::readQuad(&this->ReadBuffer); *in_stack_0000004c = uVar3; iVar2 = 0; } else { if (iVar2 == 1) { // try { // try from 080e8357 to 080e835b has its CatchHandler @ 080e876c bVar1 = TReadBuffer::readByte(&this->ReadBuffer); if (bVar1 == 1) { return 1; } error(&DAT_0810f760,(uint)bVar1); } else { error("TQueryManagerConnection::insertPaymentDataNew: Anfrage fehlgeschlagen.\n"); } iVar2 = -1; } return iVar2; } // DWARF original prototype: int addPaymentNew(TQueryManagerConnection * this, char * PaymentKey, // ulong PaymentID, int * ActionTaken, char * EMailReceiver) int __thiscall TQueryManagerConnection::addPaymentNew(TQueryManagerConnection *this) { TWriteBuffer *this_00; bool bVar1; byte bVar2; int iVar3; int FailureCode; uint uVar4; char *in_stack_00000008; ulong in_stack_0000000c; uint *in_stack_00000010; char *in_stack_00000014; this->QueryOk = true; this_00 = &this->WriteBuffer; (this->WriteBuffer).Position = 0; // try { // try from 080e87c5 to 080e87d9 has its CatchHandler @ 080e88a8 TWriteBuffer::writeWord(this_00,0); TWriteBuffer::writeByte(this_00,0xd6); // try { // try from 080e87e4 to 080e87e8 has its CatchHandler @ 080e88e2 TWriteStream::writeString(&this_00->super_TWriteStream,in_stack_00000008); // try { // try from 080e87f3 to 080e87f7 has its CatchHandler @ 080e8912 TWriteBuffer::writeQuad(this_00,in_stack_0000000c); iVar3 = executeQuery(this,0x168,true); if (iVar3 == 0) { // try { // try from 080e8876 to 080e887a has its CatchHandler @ 080e8942 bVar2 = TReadBuffer::readByte(&this->ReadBuffer); *in_stack_00000010 = (uint)bVar2; if (bVar2 == 5) { // try { // try from 080e88a1 to 080e88a5 has its CatchHandler @ 080e8970 TReadStream::readString(&(this->ReadBuffer).super_TReadStream,in_stack_00000014,100); } iVar3 = 0; } else { if (iVar3 == 1) { // try { // try from 080e8836 to 080e883a has its CatchHandler @ 080e89a6 bVar2 = TReadBuffer::readByte(&this->ReadBuffer); uVar4 = (uint)bVar2; bVar1 = false; if ((uVar4 != 0) && (uVar4 < 4)) { bVar1 = true; } if (bVar1) { return uVar4; } error(&DAT_0810f820,uVar4); } else { error("TQueryManagerConnection::addPaymentNew: Anfrage fehlgeschlagen.\n"); } iVar3 = -1; } return iVar3; } // DWARF original prototype: int cancelPaymentNew(TQueryManagerConnection * this, ulong PurchaseNr, // ulong ReferenceNr, char * PaymentKey, bool * IllegalUse, bool * Present, char * EMailAddress) int __thiscall TQueryManagerConnection::cancelPaymentNew(TQueryManagerConnection *this) { TWriteBuffer *this_00; TReadBuffer *this_01; uchar uVar1; int iVar2; ulong in_stack_00000008; ulong in_stack_0000000c; char *in_stack_00000010; undefined4 in_stack_00000014; undefined4 in_stack_00000018; char *in_stack_0000001c; char *Text; this->QueryOk = true; this_00 = &this->WriteBuffer; (this->WriteBuffer).Position = 0; // try { // try from 080e8a05 to 080e8a19 has its CatchHandler @ 080e8ae4 TWriteBuffer::writeWord(this_00,0); TWriteBuffer::writeByte(this_00,0xd7); // try { // try from 080e8a24 to 080e8a28 has its CatchHandler @ 080e8b20 TWriteBuffer::writeQuad(this_00,in_stack_00000008); // try { // try from 080e8a33 to 080e8a37 has its CatchHandler @ 080e8b52 TWriteBuffer::writeQuad(this_00,in_stack_0000000c); // try { // try from 080e8a42 to 080e8a46 has its CatchHandler @ 080e8b82 TWriteStream::writeString(&this_00->super_TWriteStream,in_stack_00000010); iVar2 = executeQuery(this,0x168,true); if (iVar2 == 0) { this_01 = &this->ReadBuffer; // try { // try from 080e8aa6 to 080e8aaa has its CatchHandler @ 080e8bb2 uVar1 = TReadBuffer::readByte(this_01); *(bool *)in_stack_00000014 = uVar1 != '\0'; // try { // try from 080e8ab9 to 080e8abd has its CatchHandler @ 080e8be4 uVar1 = TReadBuffer::readByte(this_01); *(bool *)in_stack_00000018 = uVar1 != '\0'; // try { // try from 080e8adb to 080e8adf has its CatchHandler @ 080e8c16 TReadStream::readString(&this_01->super_TReadStream,in_stack_0000001c,0x32); iVar2 = 0; } else { if (iVar2 == 1) { // try { // try from 080e8a85 to 080e8a89 has its CatchHandler @ 080e8c4c uVar1 = TReadBuffer::readByte(&this->ReadBuffer); if (uVar1 == '\x01') { return 1; } Text = &DAT_0810f8e0; } else { Text = "TQueryManagerConnection::cancelPaymentNew: Anfrage fehlgeschlagen.\n"; } error(Text); iVar2 = -1; } return iVar2; } // DWARF original prototype: void TQueryManagerConnectionPool(TQueryManagerConnectionPool * this, // int Connections) void __thiscall TQueryManagerConnectionPool::TQueryManagerConnectionPool (TQueryManagerConnectionPool *this,int Connections) { Semaphore::Semaphore(&this->FreeQueryManagerConnections,Connections); // try { // try from 080e8cb5 to 080e8cb9 has its CatchHandler @ 080e8d00 Semaphore::Semaphore(&this->QueryManagerConnectionMutex,1); if (Connections < 1) { // try { // try from 080e8ce6 to 080e8cea has its CatchHandler @ 080e8cf2 error(&DAT_0810f940,Connections); Connections = 1; } this->NumberOfConnections = Connections; this->QueryManagerConnection = (TQueryManagerConnection *)0x0; this->QueryManagerConnectionFree = (bool *)0x0; return; } // DWARF original prototype: void TQueryManagerConnectionPool(TQueryManagerConnectionPool * this, // int Connections) void __thiscall TQueryManagerConnectionPool::TQueryManagerConnectionPool (TQueryManagerConnectionPool *this,int Connections) { Semaphore::Semaphore(&this->FreeQueryManagerConnections,Connections); // try { // try from 080e8d55 to 080e8d59 has its CatchHandler @ 080e8da0 Semaphore::Semaphore(&this->QueryManagerConnectionMutex,1); if (Connections < 1) { // try { // try from 080e8d86 to 080e8d8a has its CatchHandler @ 080e8d92 error(&DAT_0810f940,Connections); Connections = 1; } this->NumberOfConnections = Connections; this->QueryManagerConnection = (TQueryManagerConnection *)0x0; this->QueryManagerConnectionFree = (bool *)0x0; return; } // DWARF original prototype: void init(TQueryManagerConnectionPool * this) int __thiscall TQueryManagerConnectionPool::init(TQueryManagerConnectionPool *this,EVP_PKEY_CTX *ctx) { int *piVar1; bool *pbVar2; undefined4 *puVar3; int iVar4; int i; int iVar5; TQueryManagerConnection *this_00; iVar5 = this->NumberOfConnections; // try { // try from 080e8dda to 080e8dde has its CatchHandler @ 080e8f00 piVar1 = (int *)operator_new__(iVar5 * 0x30 + 4); *piVar1 = iVar5; this_00 = (TQueryManagerConnection *)(piVar1 + 1); while (iVar5 = iVar5 + -1, iVar5 != -1) { // try { // try from 080e8dfc to 080e8e00 has its CatchHandler @ 080e8ea4 TQueryManagerConnection::TQueryManagerConnection(this_00,0x4000); this_00 = this_00 + 1; } this->QueryManagerConnection = (TQueryManagerConnection *)(piVar1 + 1); // try { // try from 080e8e1e to 080e8ea3 has its CatchHandler @ 080e8f00 pbVar2 = (bool *)operator_new__(this->NumberOfConnections); iVar5 = 0; this->QueryManagerConnectionFree = pbVar2; if (0 < this->NumberOfConnections) { iVar4 = 0; do { if (*(int *)((int)&this->QueryManagerConnection->Socket + iVar4) < 0) { error("TQueryManagerConnectionPool::init: Kann nicht zum Query-Manager verbinden.\n" ); puVar3 = (undefined4 *)__cxa_allocate_exception(4); *puVar3 = "cannot connect to query manager"; // WARNING: Subroutine does not return __cxa_throw(puVar3,char_const*::typeinfo,0); } iVar4 = iVar4 + 0x30; pbVar2 = this->QueryManagerConnectionFree; pbVar2[iVar5] = true; iVar5 = iVar5 + 1; } while (iVar5 < this->NumberOfConnections); } return (int)pbVar2; } // DWARF original prototype: void exit(TQueryManagerConnectionPool * this) void __thiscall TQueryManagerConnectionPool::exit(TQueryManagerConnectionPool *this,int __status) { TQueryManagerConnection *pTVar1; int i; int iVar2; TQueryManagerConnection *this_00; int in_stack_ffffffe8; iVar2 = 0; if (0 < this->NumberOfConnections) { do { iVar2 = iVar2 + 1; Semaphore::down(&this->FreeQueryManagerConnections); } while (iVar2 < this->NumberOfConnections); } pTVar1 = this->QueryManagerConnection; if (pTVar1 != (TQueryManagerConnection *)0x0) { this_00 = pTVar1 + *(int *)&pTVar1[-1].QueryOk; while (pTVar1 != this_00) { this_00 = this_00 + -1; TQueryManagerConnection::~TQueryManagerConnection(this_00,in_stack_ffffffe8); pTVar1 = this->QueryManagerConnection; } operator_delete__(&pTVar1[-1].QueryOk); } if (this->QueryManagerConnectionFree == (bool *)0x0) { return; } operator_delete__(this->QueryManagerConnectionFree); return; } // DWARF original prototype: TQueryManagerConnection * getConnection(TQueryManagerConnectionPool * // this) TQueryManagerConnection * __thiscall TQueryManagerConnectionPool::getConnection(TQueryManagerConnectionPool *this) { Semaphore *this_00; int i; int iVar1; int iVar2; this_00 = &this->QueryManagerConnectionMutex; Semaphore::down(&this->FreeQueryManagerConnections); Semaphore::down(this_00); iVar1 = 0; if (0 < this->NumberOfConnections) { iVar2 = 0; do { if (this->QueryManagerConnectionFree[iVar1] != false) { this->QueryManagerConnectionFree[iVar1] = false; Semaphore::up(this_00); return (TQueryManagerConnection *) ((int)&this->QueryManagerConnection->BufferSize + iVar2); } iVar1 = iVar1 + 1; iVar2 = iVar2 + 0x30; } while (iVar1 < this->NumberOfConnections); } error("TQueryManagerConnectionPool::getConnection: Keine freie Verbindung gefunden.\n"); Semaphore::up(this_00); return (TQueryManagerConnection *)0x0; } // DWARF original prototype: void releaseConnection(TQueryManagerConnectionPool * this, // TQueryManagerConnection * Connection) void __thiscall TQueryManagerConnectionPool::releaseConnection (TQueryManagerConnectionPool *this,TQueryManagerConnection *Connection) { TQueryManagerConnection *pTVar1; int i; int iVar2; iVar2 = 0; if (0 < this->NumberOfConnections) { pTVar1 = this->QueryManagerConnection; do { if (pTVar1 == Connection) { this->QueryManagerConnectionFree[iVar2] = true; Semaphore::up(&this->FreeQueryManagerConnections); return; } iVar2 = iVar2 + 1; pTVar1 = pTVar1 + 1; } while (iVar2 < this->NumberOfConnections); } error("TQueryManagerConnectionPool::releaseConnection: Verbindung nicht gefunden.\n"); return; } // DWARF original prototype: void TQueryManagerPoolConnection(TQueryManagerPoolConnection * this, // TQueryManagerConnectionPool * Pool) void __thiscall TQueryManagerPoolConnection::TQueryManagerPoolConnection (TQueryManagerPoolConnection *this,TQueryManagerConnectionPool *Pool) { TQueryManagerConnection *pTVar1; int i; int iVar2; if (Pool == (TQueryManagerConnectionPool *)0x0) { error("TQueryManagerPoolConnection::TQueryManagerPoolConnection: Pool ist NULL.\n"); this->QueryManagerConnection = (TQueryManagerConnection *)0x0; } else { this->QueryManagerConnectionPool = Pool; iVar2 = 0; Semaphore::down(&Pool->FreeQueryManagerConnections); Semaphore::down(&Pool->QueryManagerConnectionMutex); if (0 < Pool->NumberOfConnections) { do { if (Pool->QueryManagerConnectionFree[iVar2] != false) { Pool->QueryManagerConnectionFree[iVar2] = false; Semaphore::up(&Pool->QueryManagerConnectionMutex); pTVar1 = Pool->QueryManagerConnection + iVar2; goto LAB_080e90b4; } iVar2 = iVar2 + 1; } while (iVar2 < Pool->NumberOfConnections); } error("TQueryManagerConnectionPool::getConnection: Keine freie Verbindung gefunden.\n"); Semaphore::up(&Pool->QueryManagerConnectionMutex); pTVar1 = (TQueryManagerConnection *)0x0; LAB_080e90b4: this->QueryManagerConnection = pTVar1; } return; } // DWARF original prototype: void TQueryManagerPoolConnection(TQueryManagerPoolConnection * this, // TQueryManagerConnectionPool * Pool) void __thiscall TQueryManagerPoolConnection::TQueryManagerPoolConnection (TQueryManagerPoolConnection *this,TQueryManagerConnectionPool *Pool) { TQueryManagerConnection *pTVar1; int i; int iVar2; if (Pool == (TQueryManagerConnectionPool *)0x0) { error("TQueryManagerPoolConnection::TQueryManagerPoolConnection: Pool ist NULL.\n"); this->QueryManagerConnection = (TQueryManagerConnection *)0x0; } else { this->QueryManagerConnectionPool = Pool; iVar2 = 0; Semaphore::down(&Pool->FreeQueryManagerConnections); Semaphore::down(&Pool->QueryManagerConnectionMutex); if (0 < Pool->NumberOfConnections) { do { if (Pool->QueryManagerConnectionFree[iVar2] != false) { Pool->QueryManagerConnectionFree[iVar2] = false; Semaphore::up(&Pool->QueryManagerConnectionMutex); pTVar1 = Pool->QueryManagerConnection + iVar2; goto LAB_080e9154; } iVar2 = iVar2 + 1; } while (iVar2 < Pool->NumberOfConnections); } error("TQueryManagerConnectionPool::getConnection: Keine freie Verbindung gefunden.\n"); Semaphore::up(&Pool->QueryManagerConnectionMutex); pTVar1 = (TQueryManagerConnection *)0x0; LAB_080e9154: this->QueryManagerConnection = pTVar1; } return; } // DWARF original prototype: void ~TQueryManagerPoolConnection(TQueryManagerPoolConnection * this, // int __in_chrg) void __thiscall TQueryManagerPoolConnection::~TQueryManagerPoolConnection (TQueryManagerPoolConnection *this,int __in_chrg) { TQueryManagerConnectionPool *pTVar1; TQueryManagerConnection *pTVar2; int i; int iVar3; if (this->QueryManagerConnection == (TQueryManagerConnection *)0x0) { return; } pTVar1 = this->QueryManagerConnectionPool; iVar3 = 0; if (0 < pTVar1->NumberOfConnections) { pTVar2 = pTVar1->QueryManagerConnection; do { if (pTVar2 == this->QueryManagerConnection) { pTVar1->QueryManagerConnectionFree[iVar3] = true; Semaphore::up(&pTVar1->FreeQueryManagerConnections); return; } iVar3 = iVar3 + 1; pTVar2 = pTVar2 + 1; } while (iVar3 < pTVar1->NumberOfConnections); } error("TQueryManagerConnectionPool::releaseConnection: Verbindung nicht gefunden.\n"); return; } // DWARF original prototype: void ~TQueryManagerPoolConnection(TQueryManagerPoolConnection * this, // int __in_chrg) void __thiscall TQueryManagerPoolConnection::~TQueryManagerPoolConnection (TQueryManagerPoolConnection *this,int __in_chrg) { TQueryManagerConnectionPool *pTVar1; TQueryManagerConnection *pTVar2; int i; int iVar3; if (this->QueryManagerConnection == (TQueryManagerConnection *)0x0) { return; } pTVar1 = this->QueryManagerConnectionPool; iVar3 = 0; if (0 < pTVar1->NumberOfConnections) { pTVar2 = pTVar1->QueryManagerConnection; do { if (pTVar2 == this->QueryManagerConnection) { pTVar1->QueryManagerConnectionFree[iVar3] = true; Semaphore::up(&pTVar1->FreeQueryManagerConnections); return; } iVar3 = iVar3 + 1; pTVar2 = pTVar2 + 1; } while (iVar3 < pTVar1->NumberOfConnections); } error("TQueryManagerConnectionPool::releaseConnection: Verbindung nicht gefunden.\n"); return; } // WARNING: Unknown calling convention -- yet parameter storage is locked void _GLOBAL__I_ApplicationType(void) { __static_initialization_and_destruction_0(1,0xffff); return; } void __static_initialization_and_destruction_0(int __initialize_p,int __priority) { if ((__priority == 0xffff) && (__initialize_p == 1)) { vlong::vlong(&RSA_EXPONENT,0x10001); __cxa_atexit(__tcf_0,0,&__dso_handle); } return; } // DWARF original prototype: void TRSAPrivateKey(TRSAPrivateKey * this) void __thiscall TRSAPrivateKey::TRSAPrivateKey(TRSAPrivateKey *this) { this->_vptr_TRSAPrivateKey = (_func_int_varargs **)&PTR__TRSAPrivateKey_081283e0; vlong::vlong(&this->m_PrimeP,0); // try { // try from 080e9359 to 080e935d has its CatchHandler @ 080e93d8 vlong::vlong(&this->m_PrimeQ,0); // try { // try from 080e936f to 080e9373 has its CatchHandler @ 080e93d4 vlong::vlong(&this->m_U,0); // try { // try from 080e9385 to 080e9389 has its CatchHandler @ 080e93d0 vlong::vlong(&this->m_DP,0); // try { // try from 080e9398 to 080e939c has its CatchHandler @ 080e93aa vlong::vlong(&this->m_DQ,0); return; } // DWARF original prototype: void TRSAPrivateKey(TRSAPrivateKey * this) void __thiscall TRSAPrivateKey::TRSAPrivateKey(TRSAPrivateKey *this) { this->_vptr_TRSAPrivateKey = (_func_int_varargs **)&PTR__TRSAPrivateKey_081283e0; vlong::vlong(&this->m_PrimeP,0); // try { // try from 080e9429 to 080e942d has its CatchHandler @ 080e94a8 vlong::vlong(&this->m_PrimeQ,0); // try { // try from 080e943f to 080e9443 has its CatchHandler @ 080e94a4 vlong::vlong(&this->m_U,0); // try { // try from 080e9455 to 080e9459 has its CatchHandler @ 080e94a0 vlong::vlong(&this->m_DP,0); // try { // try from 080e9468 to 080e946c has its CatchHandler @ 080e947a vlong::vlong(&this->m_DQ,0); return; } // DWARF original prototype: void ~TRSAPrivateKey(TRSAPrivateKey * this, int __in_chrg) void __thiscall TRSAPrivateKey::~TRSAPrivateKey(TRSAPrivateKey *this,int __in_chrg) { int unaff_EBX; this->_vptr_TRSAPrivateKey = (_func_int_varargs **)&PTR__TRSAPrivateKey_081283e0; vlong::~vlong(&this->m_DQ,unaff_EBX); vlong::~vlong(&this->m_DP,unaff_EBX); vlong::~vlong(&this->m_U,unaff_EBX); vlong::~vlong(&this->m_PrimeQ,unaff_EBX); vlong::~vlong(&this->m_PrimeP,unaff_EBX); return; } // DWARF original prototype: void ~TRSAPrivateKey(TRSAPrivateKey * this, int __in_chrg) void __thiscall TRSAPrivateKey::~TRSAPrivateKey(TRSAPrivateKey *this,int __in_chrg) { int unaff_EBX; this->_vptr_TRSAPrivateKey = (_func_int_varargs **)&PTR__TRSAPrivateKey_081283e0; vlong::~vlong(&this->m_DQ,unaff_EBX); vlong::~vlong(&this->m_DP,unaff_EBX); vlong::~vlong(&this->m_U,unaff_EBX); vlong::~vlong(&this->m_PrimeQ,unaff_EBX); vlong::~vlong(&this->m_PrimeP,unaff_EBX); return; } // DWARF original prototype: void ~TRSAPrivateKey(TRSAPrivateKey * this, int __in_chrg) void __thiscall TRSAPrivateKey::~TRSAPrivateKey(TRSAPrivateKey *this,int __in_chrg) { int unaff_EBX; this->_vptr_TRSAPrivateKey = (_func_int_varargs **)&PTR__TRSAPrivateKey_081283e0; vlong::~vlong(&this->m_DQ,unaff_EBX); vlong::~vlong(&this->m_DP,unaff_EBX); vlong::~vlong(&this->m_U,unaff_EBX); vlong::~vlong(&this->m_PrimeQ,unaff_EBX); vlong::~vlong(&this->m_PrimeP,unaff_EBX); operator_delete(this); return; } // DWARF original prototype: void init(TRSAPrivateKey * this, char * PrimeP, char * PrimeQ) int __thiscall TRSAPrivateKey::init(TRSAPrivateKey *this,EVP_PKEY_CTX *ctx) { vlong *pvVar1; undefined4 *puVar2; size_t __len; char *in_stack_0000000c; vlong *pvVar3; vlong *Number; vlong local_6c; vlong local_5c; undefined1 local_4c [4]; vlong d; vlong local_3c; string Error; if (ctx == (EVP_PKEY_CTX *)0x0) { puVar2 = (undefined4 *)__cxa_allocate_exception(4); *puVar2 = "PrimeP pointer is NULL"; } else { if (in_stack_0000000c != (char *)0x0) { pvVar1 = &this->m_PrimeP; // try { // try from 080e95ec to 080e95f0 has its CatchHandler @ 080e9850 vlong::convert((char *)ctx,pvVar1); Number = &this->m_PrimeQ; // try { // try from 080e95fe to 080e9602 has its CatchHandler @ 080e9980 vlong::convert(in_stack_0000000c,Number); vlong::vlong(&local_5c,1); pvVar3 = Number; // try { // try from 080e9627 to 080e962b has its CatchHandler @ 080e9aa1 operator-((vlong *)&stack0xffffffd4,Number); vlong::~vlong(&local_5c,(int)pvVar3); // try { // try from 080e9648 to 080e964c has its CatchHandler @ 080e9adb vlong::vlong(&local_6c,1); pvVar3 = pvVar1; // try { // try from 080e965e to 080e9662 has its CatchHandler @ 080e9ab3 operator-(&local_5c,pvVar1); // try { // try from 080e966c to 080e9670 has its CatchHandler @ 080e9adb vlong::~vlong(&local_6c,(int)pvVar3); // try { // try from 080e9685 to 080e9689 has its CatchHandler @ 080e9ad7 operator*(&local_3c,&local_5c); pvVar3 = &RSA_EXPONENT; // try { // try from 080e96a2 to 080e96a6 has its CatchHandler @ 080e9ac5 vlong::modinv((vlong *)local_4c,&RSA_EXPONENT,&local_3c); // try { // try from 080e96b0 to 080e96b4 has its CatchHandler @ 080e9ad7 vlong::~vlong(&local_3c,(int)pvVar3); // try { // try from 080e96bb to 080e96bf has its CatchHandler @ 080e9adb vlong::~vlong(&local_5c,(int)pvVar3); vlong::~vlong((vlong *)&stack0xffffffd4,(int)pvVar3); // try { // try from 080e96d9 to 080e96dd has its CatchHandler @ 080e9b10 vlong::modinv(&local_6c,pvVar1,Number); pvVar3 = &local_6c; // try { // try from 080e96f1 to 080e96f5 has its CatchHandler @ 080e9adf vlong::operator=(&this->m_U,pvVar3); // try { // try from 080e96fc to 080e9713 has its CatchHandler @ 080e9b10 vlong::~vlong(&local_6c,(int)pvVar3); vlong::vlong(&local_3c,1); // try { // try from 080e9725 to 080e9729 has its CatchHandler @ 080e9af1 operator-(&local_5c,pvVar1); // try { // try from 080e9733 to 080e9737 has its CatchHandler @ 080e9b10 vlong::~vlong(&local_3c,(int)pvVar1); // try { // try from 080e974c to 080e9750 has its CatchHandler @ 080e9b0a operator%(&local_6c,(vlong *)local_4c); pvVar3 = &local_6c; // try { // try from 080e9764 to 080e9768 has its CatchHandler @ 080e9af8 vlong::operator=(&this->m_DP,pvVar3); // try { // try from 080e976f to 080e9773 has its CatchHandler @ 080e9b0a vlong::~vlong(&local_6c,(int)pvVar3); // try { // try from 080e977a to 080e9791 has its CatchHandler @ 080e9b10 vlong::~vlong(&local_5c,(int)pvVar3); vlong::vlong(&local_3c,1); // try { // try from 080e97a3 to 080e97a7 has its CatchHandler @ 080e9af1 operator-(&local_5c,Number); // try { // try from 080e97b1 to 080e97b5 has its CatchHandler @ 080e9b10 vlong::~vlong(&local_3c,(int)Number); // try { // try from 080e97ca to 080e97ce has its CatchHandler @ 080e9b0a operator%(&local_6c,(vlong *)local_4c); pvVar3 = &local_6c; // try { // try from 080e97e2 to 080e97e6 has its CatchHandler @ 080e9af8 pvVar1 = vlong::operator=(&this->m_DQ,pvVar3); // try { // try from 080e97ed to 080e97f1 has its CatchHandler @ 080e9b0a vlong::~vlong(&local_6c,(int)pvVar3); // try { // try from 080e97f8 to 080e97fc has its CatchHandler @ 080e9b10 vlong::~vlong(&local_5c,(int)pvVar3); vlong::~vlong((vlong *)local_4c,(int)pvVar3); return (int)pvVar1; } puVar2 = (undefined4 *)__cxa_allocate_exception(4); *puVar2 = "PrimeQ pointer is NULL"; } // WARNING: Subroutine does not return __cxa_throw(puVar2,char_const*::typeinfo,0); } // DWARF original prototype: void decrypt(TRSAPrivateKey * this, uchar * Data) int __thiscall TRSAPrivateKey::decrypt (TRSAPrivateKey *this,EVP_PKEY_CTX *ctx,uchar *out,size_t *outlen,uchar *in,size_t inlen) { size_t __size; int iVar1; vlong *pvVar2; undefined4 *puVar3; size_t __len; char *pE; char *pE_1; undefined1 *puVar4; string Error_1; vlong local_8c; vlong local_7c; vlong local_6c; undefined1 local_5c [4]; vlong a; undefined1 local_4c [4]; vlong b; undefined1 local_3c [4]; vlong Plain; undefined1 local_2c [4]; vlong Cipher; if (ctx == (EVP_PKEY_CTX *)0x0) { puVar3 = (undefined4 *)__cxa_allocate_exception(4); *puVar3 = "Data pointer is NULL"; } else { vlong::vlong((vlong *)local_2c,0); pvVar2 = (vlong *)local_2c; // try { // try from 080e9b57 to 080e9b5b has its CatchHandler @ 080e9e62 iVar1 = vlong::cf(&this->m_PrimeP,(vlong *)local_2c); vlong::~vlong((vlong *)local_2c,(int)pvVar2); if (iVar1 == 0) { puVar3 = (undefined4 *)__cxa_allocate_exception(4); *puVar3 = "m_PrimeP is null"; } else { vlong::vlong((vlong *)local_2c,0); pvVar2 = (vlong *)local_2c; // try { // try from 080e9b9c to 080e9ba0 has its CatchHandler @ 080e9e74 iVar1 = vlong::cf(&this->m_PrimeQ,(vlong *)local_2c); vlong::~vlong((vlong *)local_2c,(int)pvVar2); if (iVar1 != 0) { vlong::vlong((vlong *)local_2c,0); // try { // try from 080e9bda to 080e9bde has its CatchHandler @ 080e9e76 vlong::convert((uchar *)ctx,0x80,(vlong *)local_2c); // try { // try from 080e9bed to 080e9bf1 has its CatchHandler @ 080e9e62 operator%((vlong *)local_4c,(vlong *)local_2c); puVar4 = local_4c; // try { // try from 080e9c10 to 080e9c14 has its CatchHandler @ 080e9fa0 vlong::modexp((vlong *)local_5c); // try { // try from 080e9c1e to 080e9c22 has its CatchHandler @ 080e9e62 vlong::~vlong((vlong *)local_4c,(int)puVar4); // try { // try from 080e9c37 to 080e9c3b has its CatchHandler @ 080ea17e operator%((vlong *)local_3c,(vlong *)local_2c); puVar4 = local_3c; // try { // try from 080e9c60 to 080e9c64 has its CatchHandler @ 080e9fb2 vlong::modexp((vlong *)local_4c); // try { // try from 080e9c6e to 080e9c72 has its CatchHandler @ 080ea17e vlong::~vlong((vlong *)local_3c,(int)puVar4); // try { // try from 080e9c80 to 080e9c84 has its CatchHandler @ 080ea177 vlong::vlong((vlong *)local_3c,(vlong *)local_5c); pvVar2 = (vlong *)local_3c; // try { // try from 080e9c92 to 080e9c96 has its CatchHandler @ 080e9fc4 iVar1 = vlong::cf((vlong *)local_4c,pvVar2); // try { // try from 080e9ca2 to 080e9cca has its CatchHandler @ 080ea177 vlong::~vlong((vlong *)local_3c,(int)pvVar2); if (iVar1 < 0) { // try { // try from 080e9e00 to 080e9e04 has its CatchHandler @ 080ea177 vlong::operator+=((vlong *)local_4c,&this->m_PrimeQ); } operator-((vlong *)&stack0xffffff64,(vlong *)local_4c); // try { // try from 080e9ceb to 080e9cef has its CatchHandler @ 080ea012 operator*(&local_8c,(vlong *)&stack0xffffff64); // try { // try from 080e9d0d to 080e9d11 has its CatchHandler @ 080ea00e operator%(&local_7c,&local_8c); // try { // try from 080e9d26 to 080e9d2a has its CatchHandler @ 080ea00a operator*(&local_6c,&this->m_PrimeP); pvVar2 = (vlong *)local_5c; // try { // try from 080e9d42 to 080e9d46 has its CatchHandler @ 080e9fd9 operator+((vlong *)local_3c,pvVar2); // try { // try from 080e9d50 to 080e9d54 has its CatchHandler @ 080ea00a vlong::~vlong(&local_6c,(int)pvVar2); // try { // try from 080e9d5b to 080e9d5f has its CatchHandler @ 080ea00e vlong::~vlong(&local_7c,(int)pvVar2); // try { // try from 080e9d69 to 080e9d6d has its CatchHandler @ 080ea012 vlong::~vlong(&local_8c,(int)pvVar2); // try { // try from 080e9d77 to 080e9d7b has its CatchHandler @ 080ea177 vlong::~vlong((vlong *)&stack0xffffff64,(int)pvVar2); // try { // try from 080e9d8c to 080e9d90 has its CatchHandler @ 080ea11f vlong::vlong((vlong *)&stack0xffffff64,(vlong *)local_3c); // try { // try from 080e9da9 to 080e9dad has its CatchHandler @ 080ea016 vlong::convert((vlong *)&stack0xffffff64,(uchar *)ctx,0x80); // try { // try from 080e9db7 to 080e9dbb has its CatchHandler @ 080ea11f vlong::~vlong((vlong *)&stack0xffffff64,(int)ctx); pvVar2 = (vlong *)local_3c; // try { // try from 080e9dc2 to 080e9dc6 has its CatchHandler @ 080ea177 vlong::~vlong(pvVar2,(int)ctx); // try { // try from 080e9dcd to 080e9dd1 has its CatchHandler @ 080ea17e vlong::~vlong((vlong *)local_4c,(int)ctx); // try { // try from 080e9dd8 to 080e9ddc has its CatchHandler @ 080e9e62 vlong::~vlong((vlong *)local_5c,(int)ctx); vlong::~vlong((vlong *)local_2c,(int)ctx); return (int)pvVar2; } puVar3 = (undefined4 *)__cxa_allocate_exception(4); *puVar3 = "m_PrimeQ is null"; } } // WARNING: Subroutine does not return __cxa_throw(puVar3,char_const*::typeinfo,0); } void __tcf_0(void *param_1) { int in_stack_00000008; vlong::~vlong(&RSA_EXPONENT,in_stack_00000008); return; } // WARNING: Unknown calling convention -- yet parameter storage is locked void _GLOBAL__I__ZN14TRSAPrivateKeyC2Ev(void) { __static_initialization_and_destruction_0(1,0xffff); return; } // DWARF original name: _M_replace_safe // DWARF original prototype: basic_string,std::allocator_> * // _M_replace_safe(basic_string,std::allocator_> * // this, // __normal_iterator,_std::allocator_>_> // __i1, // __normal_iterator,_std::allocator_>_> // __i2, char * __k1, char * __k2) basic_string<> * __thiscall basic_string<>::_M_replace_safe<> (basic_string<> *this,__normal_iterator<> __i1,__normal_iterator<> __i2,char *__k1, char *__k2) { uint __n; uint uVar1; __n = (int)__k2 - (int)__k1; if (std::string::_Rep::_S_max_size <= __n) { std::__throw_length_error("basic_string::_M_replace"); } uVar1 = (int)__i1._M_current - (int)(this->_M_dataplus)._M_p; std::string::_M_mutate((uint)this,uVar1,(int)__i2._M_current - (int)__i1._M_current); if (__n != 0) { memcpy((this->_M_dataplus)._M_p + uVar1,__k1,__n); } return this; } // DWARF original prototype: void TXTEASymmetricKey(TXTEASymmetricKey * this) void __thiscall TXTEASymmetricKey::TXTEASymmetricKey(TXTEASymmetricKey *this) { this->_vptr_TXTEASymmetricKey = (_func_int_varargs **)&PTR__TXTEASymmetricKey_081283f8; this->m_SymmetricKey[0] = '\0'; this->m_SymmetricKey[1] = '\0'; this->m_SymmetricKey[2] = '\0'; this->m_SymmetricKey[3] = '\0'; this->m_SymmetricKey[4] = '\0'; this->m_SymmetricKey[5] = '\0'; this->m_SymmetricKey[6] = '\0'; this->m_SymmetricKey[7] = '\0'; this->m_SymmetricKey[8] = '\0'; this->m_SymmetricKey[9] = '\0'; this->m_SymmetricKey[10] = '\0'; this->m_SymmetricKey[0xb] = '\0'; this->m_SymmetricKey[0xc] = '\0'; this->m_SymmetricKey[0xd] = '\0'; this->m_SymmetricKey[0xe] = '\0'; this->m_SymmetricKey[0xf] = '\0'; return; } // DWARF original prototype: void TXTEASymmetricKey(TXTEASymmetricKey * this) void __thiscall TXTEASymmetricKey::TXTEASymmetricKey(TXTEASymmetricKey *this) { this->_vptr_TXTEASymmetricKey = (_func_int_varargs **)&PTR__TXTEASymmetricKey_081283f8; this->m_SymmetricKey[0] = '\0'; this->m_SymmetricKey[1] = '\0'; this->m_SymmetricKey[2] = '\0'; this->m_SymmetricKey[3] = '\0'; this->m_SymmetricKey[4] = '\0'; this->m_SymmetricKey[5] = '\0'; this->m_SymmetricKey[6] = '\0'; this->m_SymmetricKey[7] = '\0'; this->m_SymmetricKey[8] = '\0'; this->m_SymmetricKey[9] = '\0'; this->m_SymmetricKey[10] = '\0'; this->m_SymmetricKey[0xb] = '\0'; this->m_SymmetricKey[0xc] = '\0'; this->m_SymmetricKey[0xd] = '\0'; this->m_SymmetricKey[0xe] = '\0'; this->m_SymmetricKey[0xf] = '\0'; return; } // DWARF original prototype: void ~TXTEASymmetricKey(TXTEASymmetricKey * this, int __in_chrg) void __thiscall TXTEASymmetricKey::~TXTEASymmetricKey(TXTEASymmetricKey *this,int __in_chrg) { this->_vptr_TXTEASymmetricKey = (_func_int_varargs **)&PTR__TXTEASymmetricKey_081283f8; return; } // DWARF original prototype: void ~TXTEASymmetricKey(TXTEASymmetricKey * this, int __in_chrg) void __thiscall TXTEASymmetricKey::~TXTEASymmetricKey(TXTEASymmetricKey *this,int __in_chrg) { this->_vptr_TXTEASymmetricKey = (_func_int_varargs **)&PTR__TXTEASymmetricKey_081283f8; return; } // DWARF original prototype: void ~TXTEASymmetricKey(TXTEASymmetricKey * this, int __in_chrg) void __thiscall TXTEASymmetricKey::~TXTEASymmetricKey(TXTEASymmetricKey *this,int __in_chrg) { this->_vptr_TXTEASymmetricKey = (_func_int_varargs **)&PTR__TXTEASymmetricKey_081283f8; operator_delete(this); return; } // DWARF original prototype: void init(TXTEASymmetricKey * this, uchar * SymmetricKey) int __thiscall TXTEASymmetricKey::init(TXTEASymmetricKey *this,EVP_PKEY_CTX *ctx) { int in_EAX; if (ctx != (EVP_PKEY_CTX *)0x0) { *(undefined4 *)this->m_SymmetricKey = *(undefined4 *)ctx; *(undefined4 *)(this->m_SymmetricKey + 4) = *(undefined4 *)(ctx + 4); *(undefined4 *)(this->m_SymmetricKey + 8) = *(undefined4 *)(ctx + 8); in_EAX = *(int *)(ctx + 0xc); *(int *)(this->m_SymmetricKey + 0xc) = in_EAX; } return in_EAX; } // DWARF original prototype: bool isInitialized(TXTEASymmetricKey * this) bool __thiscall TXTEASymmetricKey::isInitialized(TXTEASymmetricKey *this) { int i; int iVar1; iVar1 = 0; do { if (this->m_SymmetricKey[iVar1] != '\0') { return true; } iVar1 = iVar1 + 1; } while (iVar1 < 0x10); return false; } // DWARF original prototype: void encrypt(TXTEASymmetricKey * this, uchar * Data) void __thiscall TXTEASymmetricKey::encrypt(TXTEASymmetricKey *this,char *__block,int __edflag) { uint uVar1; ulong v0; uint uVar2; ulong v1; uint uVar3; ulong sum; uint uVar4; ulong i; uint uVar5; if (__block != (char *)0x0) { uVar5 = 0; uVar2 = *(uint *)__block; uVar3 = *(uint *)(__block + 4); uVar4 = 0; do { uVar5 = uVar5 + 1; uVar1 = *(int *)(this->m_SymmetricKey + (uVar4 & 3) * 4) + uVar4; uVar4 = uVar4 + 0x9e3779b9; uVar2 = uVar2 + ((uVar3 << 4 ^ uVar3 >> 5) + uVar3 ^ uVar1); uVar3 = uVar3 + ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ *(int *)(this->m_SymmetricKey + (uVar4 >> 0xb & 3) * 4) + uVar4); } while (uVar5 < 0x20); *(uint *)__block = uVar2; *(uint *)(__block + 4) = uVar3; } return; } // DWARF original prototype: void decrypt(TXTEASymmetricKey * this, uchar * Data) int __thiscall TXTEASymmetricKey::decrypt (TXTEASymmetricKey *this,EVP_PKEY_CTX *ctx,uchar *out,size_t *outlen,uchar *in, size_t inlen) { uint uVar1; ulong v0; uint uVar2; ulong v1; uint uVar3; ulong sum; uint uVar4; ulong i; uint uVar5; if (ctx != (EVP_PKEY_CTX *)0x0) { uVar5 = 0; uVar2 = *(uint *)ctx; uVar3 = *(uint *)(ctx + 4); uVar4 = 0xc6ef3720; do { uVar5 = uVar5 + 1; uVar1 = *(int *)(this->m_SymmetricKey + (uVar4 >> 0xb & 3) * 4) + uVar4; uVar4 = uVar4 + 0x61c88647; uVar3 = uVar3 - ((uVar2 << 4 ^ uVar2 >> 5) + uVar2 ^ uVar1); uVar2 = uVar2 - ((uVar3 * 0x10 ^ uVar3 >> 5) + uVar3 ^ *(int *)(this->m_SymmetricKey + (uVar4 & 3) * 4) + uVar4); } while (uVar5 < 0x20); *(uint *)ctx = uVar2; *(uint *)(ctx + 4) = uVar3; } return (int)ctx; } void TXTEASymmetricKey::encrypt(char *__block,int __edflag) { uint uVar1; ulong v0; uint uVar2; ulong v1; uint uVar3; ulong sum; uint uVar4; ulong i; uint uVar5; uVar2 = *(uint *)__block; uVar3 = *(uint *)(__block + 4); uVar4 = 0; uVar5 = 0; do { uVar5 = uVar5 + 1; uVar1 = *(int *)(__edflag + (uVar4 & 3) * 4) + uVar4; uVar4 = uVar4 + 0x9e3779b9; uVar2 = uVar2 + ((uVar3 << 4 ^ uVar3 >> 5) + uVar3 ^ uVar1); uVar3 = uVar3 + ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ *(int *)(__edflag + (uVar4 >> 0xb & 3) * 4) + uVar4); } while (uVar5 < 0x20); *(uint *)__block = uVar2; *(uint *)(__block + 4) = uVar3; return; } int TXTEASymmetricKey::decrypt(EVP_PKEY_CTX *ctx,uchar *out,size_t *outlen,uchar *in,size_t inlen) { uint uVar1; ulong v0; uint uVar2; ulong v1; uint uVar3; ulong sum; uint uVar4; ulong i; uint uVar5; uVar5 = 0; uVar2 = *(uint *)ctx; uVar3 = *(uint *)(ctx + 4); uVar4 = 0xc6ef3720; do { uVar5 = uVar5 + 1; uVar1 = *(int *)(out + (uVar4 >> 0xb & 3) * 4) + uVar4; uVar4 = uVar4 + 0x61c88647; uVar3 = uVar3 - ((uVar2 << 4 ^ uVar2 >> 5) + uVar2 ^ uVar1); uVar2 = uVar2 - ((uVar3 * 0x10 ^ uVar3 >> 5) + uVar3 ^ *(int *)(out + (uVar4 & 3) * 4) + uVar4); } while (uVar5 < 0x20); *(uint *)ctx = uVar2; *(uint *)(ctx + 4) = uVar3; return (int)ctx; } // DWARF original prototype: void vlong_montgomery(vlong_montgomery * this, vlong * M) void __thiscall vlong_montgomery::vlong_montgomery(vlong_montgomery *this,vlong *M) { _func_int_varargs **pp_Var1; uint *puVar2; vlong_value *pvVar3; int iVar4; uint i; int iVar5; uint uVar6; vlong_montgomery *__in_chrg; vlong *a; vlong *pvVar7; vlong_montgomery *x; undefined1 local_3c [4]; vlong result; vlong local_2c [2]; (this->R)._vptr_vlong = (_func_int_varargs **)&PTR__vlong_08128410; pvVar3 = (vlong_value *)operator_new(0x10); (pvVar3->super_vlong_flex_unit).z = 0; (pvVar3->super_vlong_flex_unit).a = (uint *)0x0; pvVar3->share = 0; (this->R).value = pvVar3; (this->R).negative = 0; (pvVar3->super_vlong_flex_unit).n = 0; vlong_flex_unit::set((vlong_flex_unit *)pvVar3,0,0); (this->R1)._vptr_vlong = (_func_int_varargs **)&PTR__vlong_08128410; // try { // try from 080ea612 to 080ea656 has its CatchHandler @ 080ead98 pvVar3 = (vlong_value *)operator_new(0x10); (pvVar3->super_vlong_flex_unit).z = 0; (pvVar3->super_vlong_flex_unit).a = (uint *)0x0; pvVar3->share = 0; (this->R1).value = pvVar3; (this->R1).negative = 0; (pvVar3->super_vlong_flex_unit).n = 0; vlong_flex_unit::set((vlong_flex_unit *)pvVar3,0,0); pvVar7 = &this->m; (this->m)._vptr_vlong = (_func_int_varargs **)&PTR__vlong_08128410; // try { // try from 080ea66b to 080ea6af has its CatchHandler @ 080ead91 pvVar3 = (vlong_value *)operator_new(0x10); (pvVar3->super_vlong_flex_unit).z = 0; (pvVar3->super_vlong_flex_unit).a = (uint *)0x0; pvVar3->share = 0; (this->m).value = pvVar3; (this->m).negative = 0; (pvVar3->super_vlong_flex_unit).n = 0; vlong_flex_unit::set((vlong_flex_unit *)pvVar3,0,0); (this->n1)._vptr_vlong = (_func_int_varargs **)&PTR__vlong_08128410; // try { // try from 080ea6c4 to 080ea708 has its CatchHandler @ 080ead8a pvVar3 = (vlong_value *)operator_new(0x10); (pvVar3->super_vlong_flex_unit).z = 0; (pvVar3->super_vlong_flex_unit).a = (uint *)0x0; pvVar3->share = 0; (this->n1).value = pvVar3; (this->n1).negative = 0; (pvVar3->super_vlong_flex_unit).n = 0; vlong_flex_unit::set((vlong_flex_unit *)pvVar3,0,0); (this->T)._vptr_vlong = (_func_int_varargs **)&PTR__vlong_08128410; // try { // try from 080ea71d to 080ea761 has its CatchHandler @ 080ead83 pvVar3 = (vlong_value *)operator_new(0x10); (pvVar3->super_vlong_flex_unit).z = 0; (pvVar3->super_vlong_flex_unit).a = (uint *)0x0; pvVar3->share = 0; (this->T).value = pvVar3; (this->T).negative = 0; (pvVar3->super_vlong_flex_unit).n = 0; vlong_flex_unit::set((vlong_flex_unit *)pvVar3,0,0); (this->k)._vptr_vlong = (_func_int_varargs **)&PTR__vlong_08128410; // try { // try from 080ea776 to 080ea7ba has its CatchHandler @ 080ead7c pvVar3 = (vlong_value *)operator_new(0x10); (pvVar3->super_vlong_flex_unit).z = 0; (pvVar3->super_vlong_flex_unit).a = (uint *)0x0; pvVar3->share = 0; (this->k).value = pvVar3; (this->k).negative = 0; (pvVar3->super_vlong_flex_unit).n = 0; vlong_flex_unit::set((vlong_flex_unit *)pvVar3,0,0); pvVar3 = (this->m).value; if (pvVar3->share == 0) { if (pvVar3 != (vlong_value *)0x0) { uVar6 = (pvVar3->super_vlong_flex_unit).z; while (uVar6 != 0) { uVar6 = uVar6 - 1; (pvVar3->super_vlong_flex_unit).a[uVar6] = 0; } puVar2 = (pvVar3->super_vlong_flex_unit).a; if (puVar2 != (uint *)0x0) { operator_delete__(puVar2); } operator_delete(pvVar3); } } else { pvVar3->share = pvVar3->share - 1; } pvVar3 = M->value; (this->m).value = pvVar3; puVar2 = &pvVar3->share; *puVar2 = *puVar2 + 1; (this->m).negative = M->negative; this->N = 0; local_2c[0]._vptr_vlong = (_func_int_varargs **)&PTR__vlong_08128410; // try { // try from 080ea7f7 to 080ea8f5 has its CatchHandler @ 080ead75 local_2c[0].value = (vlong_value *)operator_new(0x10); ((local_2c[0].value)->super_vlong_flex_unit).z = 0; ((local_2c[0].value)->super_vlong_flex_unit).a = (uint *)0x0; (local_2c[0].value)->share = 0; local_2c[0].negative = 0; ((local_2c[0].value)->super_vlong_flex_unit).n = 0; __in_chrg = (vlong_montgomery *)0x0; vlong_flex_unit::set((vlong_flex_unit *)local_2c[0].value,0,1); pvVar3 = (this->R).value; if (pvVar3->share == 0) { if (pvVar3 != (vlong_value *)0x0) { uVar6 = (pvVar3->super_vlong_flex_unit).z; while (uVar6 != 0) { uVar6 = uVar6 - 1; (pvVar3->super_vlong_flex_unit).a[uVar6] = 0; } puVar2 = (pvVar3->super_vlong_flex_unit).a; if (puVar2 != (uint *)0x0) { operator_delete__(puVar2); } operator_delete(pvVar3); } } else { pvVar3->share = pvVar3->share - 1; } pvVar3 = local_2c[0].value; (this->R).value = local_2c[0].value; (local_2c[0].value)->share = (local_2c[0].value)->share + 1; local_2c[0]._vptr_vlong = (_func_int_varargs **)&PTR__vlong_08128410; (this->R).negative = local_2c[0].negative; if ((local_2c[0].value)->share == 0) { if (local_2c[0].value != (vlong_value *)0x0) { // try { // try from 080eab2d to 080eab31 has its CatchHandler @ 080ead75 vlong_flex_unit::~vlong_flex_unit (&(local_2c[0].value)->super_vlong_flex_unit,(int)__in_chrg); operator_delete(pvVar3); } } else { (local_2c[0].value)->share = (local_2c[0].value)->share - 1; } while( true ) { local_2c[0]._vptr_vlong = (_func_int_varargs **)&PTR__vlong_08128410; local_2c[0].negative = M->negative; iVar4 = 0; x = (vlong_montgomery *)M->value; (x->R1)._vptr_vlong = (_func_int_varargs **)((int)(x->R1)._vptr_vlong + 1); if (((this->R).negative != 0) && ((((this->R).value)->super_vlong_flex_unit).n != 0)) { iVar4 = 1; } iVar5 = 0; if ((local_2c[0].negative != 0) && ((x->R)._vptr_vlong != (_func_int_varargs **)0x0)) { iVar5 = 1; } local_2c[0].value = (vlong_value *)x; if (iVar4 == iVar5) { // try { // try from 080eab18 to 080eab1c has its CatchHandler @ 080eabbc iVar4 = vlong_value::cf((this->R).value,(vlong_value *)x); __in_chrg = x; } else { iVar4 = (uint)(iVar4 == 0) * 2 + -1; } vlong::~vlong(local_2c,(int)__in_chrg); if (-1 < iVar4) break; __in_chrg = this; vlong::operator+=(&this->R,&this->R); this->N = this->N + 1; } local_3c = (undefined1 [4])&PTR__vlong_08128410; result.value = (vlong_value *)(this->R).negative; result._vptr_vlong = (_func_int_varargs **)(this->R).value; ((vlong_value *)result._vptr_vlong)->share = ((vlong_value *)result._vptr_vlong)->share + 1; // try { // try from 080ea921 to 080ea925 has its CatchHandler @ 080ead15 vlong::operator-=((vlong *)local_3c,pvVar7); a = (vlong *)local_3c; // try { // try from 080ea93a to 080ea93e has its CatchHandler @ 080ead1f vlong::modinv(local_2c,a,pvVar7); pvVar3 = (this->R1).value; if (pvVar3->share == 0) { if (pvVar3 != (vlong_value *)0x0) { uVar6 = (pvVar3->super_vlong_flex_unit).z; while (uVar6 != 0) { uVar6 = uVar6 - 1; (pvVar3->super_vlong_flex_unit).a[uVar6] = 0; } puVar2 = (pvVar3->super_vlong_flex_unit).a; if (puVar2 != (uint *)0x0) { operator_delete__(puVar2); } operator_delete(pvVar3); } } else { pvVar3->share = pvVar3->share - 1; } pvVar3 = local_2c[0].value; (this->R1).value = local_2c[0].value; ((vlong *)&(local_2c[0].value)->share)->_vptr_vlong = (_func_int_varargs **)((int)((vlong *)&(local_2c[0].value)->share)->_vptr_vlong + 1); local_2c[0]._vptr_vlong = (_func_int_varargs **)&PTR__vlong_08128410; (this->R1).negative = local_2c[0].negative; pp_Var1 = ((vlong *)&(local_2c[0].value)->share)->_vptr_vlong; if (pp_Var1 == (_func_int_varargs **)0x0) { if ((vlong_montgomery *)local_2c[0].value != (vlong_montgomery *)0x0) { // try { // try from 080eaabd to 080eaac1 has its CatchHandler @ 080ead1f vlong_flex_unit::~vlong_flex_unit(&(local_2c[0].value)->super_vlong_flex_unit,(int)a); operator_delete(pvVar3); } } else { ((vlong *)&(local_2c[0].value)->share)->_vptr_vlong = (_func_int_varargs **)((int)pp_Var1 - 1); } pp_Var1 = result._vptr_vlong; local_3c = (undefined1 [4])&PTR__vlong_08128410; if (result._vptr_vlong[3] == (_func_int_varargs *)0x0) { if (result._vptr_vlong != (_func_int_varargs **)0x0) { // try { // try from 080eaaa0 to 080eaaa4 has its CatchHandler @ 080ead75 vlong_flex_unit::~vlong_flex_unit((vlong_flex_unit *)result._vptr_vlong,(int)a); operator_delete(pp_Var1); } } else { result._vptr_vlong[3] = result._vptr_vlong[3] + -1; } // try { // try from 080ea9ac to 080ea9b0 has its CatchHandler @ 080ead75 vlong::modinv(local_2c,pvVar7,&this->R); local_3c = (undefined1 [4])&PTR__vlong_08128410; result.value = (vlong_value *)(this->R).negative; pvVar7 = local_2c; result._vptr_vlong = (_func_int_varargs **)(this->R).value; ((vlong_value *)result._vptr_vlong)->share = ((vlong_value *)result._vptr_vlong)->share + 1; // try { // try from 080ea9d7 to 080ea9db has its CatchHandler @ 080ead58 vlong::operator-=((vlong *)local_3c,pvVar7); pvVar3 = (this->n1).value; if (pvVar3->share == 0) { if (pvVar3 != (vlong_value *)0x0) { uVar6 = (pvVar3->super_vlong_flex_unit).z; while (uVar6 != 0) { uVar6 = uVar6 - 1; (pvVar3->super_vlong_flex_unit).a[uVar6] = 0; } puVar2 = (pvVar3->super_vlong_flex_unit).a; if (puVar2 != (uint *)0x0) { operator_delete__(puVar2); } operator_delete(pvVar3); } } else { pvVar3->share = pvVar3->share - 1; } pp_Var1 = result._vptr_vlong; (this->n1).value = (vlong_value *)result._vptr_vlong; result._vptr_vlong[3] = result._vptr_vlong[3] + 1; local_3c = (undefined1 [4])&PTR__vlong_08128410; (this->n1).negative = (int)result.value; if (result._vptr_vlong[3] == (_func_int_varargs *)0x0) { if (result._vptr_vlong != (_func_int_varargs **)0x0) { // try { // try from 080eaa4e to 080eaa52 has its CatchHandler @ 080ead71 vlong_flex_unit::~vlong_flex_unit((vlong_flex_unit *)result._vptr_vlong,(int)pvVar7); operator_delete(pp_Var1); } } else { result._vptr_vlong[3] = result._vptr_vlong[3] + -1; } pvVar3 = local_2c[0].value; local_2c[0]._vptr_vlong = (_func_int_varargs **)&PTR__vlong_08128410; pp_Var1 = ((vlong *)&(local_2c[0].value)->share)->_vptr_vlong; if (pp_Var1 == (_func_int_varargs **)0x0) { if ((vlong_montgomery *)local_2c[0].value != (vlong_montgomery *)0x0) { // try { // try from 080eaa38 to 080eaa3c has its CatchHandler @ 080ead75 vlong_flex_unit::~vlong_flex_unit (&(local_2c[0].value)->super_vlong_flex_unit,(int)pvVar7); operator_delete(pvVar3); } } else { ((vlong *)&(local_2c[0].value)->share)->_vptr_vlong = (_func_int_varargs **)((int)pp_Var1 - 1); } return; } // DWARF original prototype: void vlong_montgomery(vlong_montgomery * this, vlong * M) void __thiscall vlong_montgomery::vlong_montgomery(vlong_montgomery *this,vlong *M) { _func_int_varargs **pp_Var1; uint *puVar2; vlong_value *pvVar3; int iVar4; uint i; int iVar5; uint uVar6; vlong_montgomery *__in_chrg; vlong *a; vlong *pvVar7; vlong_montgomery *x; undefined1 local_3c [4]; vlong result; vlong local_2c [2]; (this->R)._vptr_vlong = (_func_int_varargs **)&PTR__vlong_08128410; pvVar3 = (vlong_value *)operator_new(0x10); (pvVar3->super_vlong_flex_unit).z = 0; (pvVar3->super_vlong_flex_unit).a = (uint *)0x0; pvVar3->share = 0; (this->R).value = pvVar3; (this->R).negative = 0; (pvVar3->super_vlong_flex_unit).n = 0; vlong_flex_unit::set((vlong_flex_unit *)pvVar3,0,0); (this->R1)._vptr_vlong = (_func_int_varargs **)&PTR__vlong_08128410; // try { // try from 080eae12 to 080eae56 has its CatchHandler @ 080eb598 pvVar3 = (vlong_value *)operator_new(0x10); (pvVar3->super_vlong_flex_unit).z = 0; (pvVar3->super_vlong_flex_unit).a = (uint *)0x0; pvVar3->share = 0; (this->R1).value = pvVar3; (this->R1).negative = 0; (pvVar3->super_vlong_flex_unit).n = 0; vlong_flex_unit::set((vlong_flex_unit *)pvVar3,0,0); pvVar7 = &this->m; (this->m)._vptr_vlong = (_func_int_varargs **)&PTR__vlong_08128410; // try { // try from 080eae6b to 080eaeaf has its CatchHandler @ 080eb591 pvVar3 = (vlong_value *)operator_new(0x10); (pvVar3->super_vlong_flex_unit).z = 0; (pvVar3->super_vlong_flex_unit).a = (uint *)0x0; pvVar3->share = 0; (this->m).value = pvVar3; (this->m).negative = 0; (pvVar3->super_vlong_flex_unit).n = 0; vlong_flex_unit::set((vlong_flex_unit *)pvVar3,0,0); (this->n1)._vptr_vlong = (_func_int_varargs **)&PTR__vlong_08128410; // try { // try from 080eaec4 to 080eaf08 has its CatchHandler @ 080eb58a pvVar3 = (vlong_value *)operator_new(0x10); (pvVar3->super_vlong_flex_unit).z = 0; (pvVar3->super_vlong_flex_unit).a = (uint *)0x0; pvVar3->share = 0; (this->n1).value = pvVar3; (this->n1).negative = 0; (pvVar3->super_vlong_flex_unit).n = 0; vlong_flex_unit::set((vlong_flex_unit *)pvVar3,0,0); (this->T)._vptr_vlong = (_func_int_varargs **)&PTR__vlong_08128410; // try { // try from 080eaf1d to 080eaf61 has its CatchHandler @ 080eb583 pvVar3 = (vlong_value *)operator_new(0x10); (pvVar3->super_vlong_flex_unit).z = 0; (pvVar3->super_vlong_flex_unit).a = (uint *)0x0; pvVar3->share = 0; (this->T).value = pvVar3; (this->T).negative = 0; (pvVar3->super_vlong_flex_unit).n = 0; vlong_flex_unit::set((vlong_flex_unit *)pvVar3,0,0); (this->k)._vptr_vlong = (_func_int_varargs **)&PTR__vlong_08128410; // try { // try from 080eaf76 to 080eafba has its CatchHandler @ 080eb57c pvVar3 = (vlong_value *)operator_new(0x10); (pvVar3->super_vlong_flex_unit).z = 0; (pvVar3->super_vlong_flex_unit).a = (uint *)0x0; pvVar3->share = 0; (this->k).value = pvVar3; (this->k).negative = 0; (pvVar3->super_vlong_flex_unit).n = 0; vlong_flex_unit::set((vlong_flex_unit *)pvVar3,0,0); pvVar3 = (this->m).value; if (pvVar3->share == 0) { if (pvVar3 != (vlong_value *)0x0) { uVar6 = (pvVar3->super_vlong_flex_unit).z; while (uVar6 != 0) { uVar6 = uVar6 - 1; (pvVar3->super_vlong_flex_unit).a[uVar6] = 0; } puVar2 = (pvVar3->super_vlong_flex_unit).a; if (puVar2 != (uint *)0x0) { operator_delete__(puVar2); } operator_delete(pvVar3); } } else { pvVar3->share = pvVar3->share - 1; } pvVar3 = M->value; (this->m).value = pvVar3; puVar2 = &pvVar3->share; *puVar2 = *puVar2 + 1; (this->m).negative = M->negative; this->N = 0; local_2c[0]._vptr_vlong = (_func_int_varargs **)&PTR__vlong_08128410; // try { // try from 080eaff7 to 080eb0f5 has its CatchHandler @ 080eb575 local_2c[0].value = (vlong_value *)operator_new(0x10); ((local_2c[0].value)->super_vlong_flex_unit).z = 0; ((local_2c[0].value)->super_vlong_flex_unit).a = (uint *)0x0; (local_2c[0].value)->share = 0; local_2c[0].negative = 0; ((local_2c[0].value)->super_vlong_flex_unit).n = 0; __in_chrg = (vlong_montgomery *)0x0; vlong_flex_unit::set((vlong_flex_unit *)local_2c[0].value,0,1); pvVar3 = (this->R).value; if (pvVar3->share == 0) { if (pvVar3 != (vlong_value *)0x0) { uVar6 = (pvVar3->super_vlong_flex_unit).z; while (uVar6 != 0) { uVar6 = uVar6 - 1; (pvVar3->super_vlong_flex_unit).a[uVar6] = 0; } puVar2 = (pvVar3->super_vlong_flex_unit).a; if (puVar2 != (uint *)0x0) { operator_delete__(puVar2); } operator_delete(pvVar3); } } else { pvVar3->share = pvVar3->share - 1; } pvVar3 = local_2c[0].value; (this->R).value = local_2c[0].value; (local_2c[0].value)->share = (local_2c[0].value)->share + 1; local_2c[0]._vptr_vlong = (_func_int_varargs **)&PTR__vlong_08128410; (this->R).negative = local_2c[0].negative; if ((local_2c[0].value)->share == 0) { if (local_2c[0].value != (vlong_value *)0x0) { // try { // try from 080eb32d to 080eb331 has its CatchHandler @ 080eb575 vlong_flex_unit::~vlong_flex_unit (&(local_2c[0].value)->super_vlong_flex_unit,(int)__in_chrg); operator_delete(pvVar3); } } else { (local_2c[0].value)->share = (local_2c[0].value)->share - 1; } while( true ) { local_2c[0]._vptr_vlong = (_func_int_varargs **)&PTR__vlong_08128410; local_2c[0].negative = M->negative; iVar4 = 0; x = (vlong_montgomery *)M->value; (x->R1)._vptr_vlong = (_func_int_varargs **)((int)(x->R1)._vptr_vlong + 1); if (((this->R).negative != 0) && ((((this->R).value)->super_vlong_flex_unit).n != 0)) { iVar4 = 1; } iVar5 = 0; if ((local_2c[0].negative != 0) && ((x->R)._vptr_vlong != (_func_int_varargs **)0x0)) { iVar5 = 1; } local_2c[0].value = (vlong_value *)x; if (iVar4 == iVar5) { // try { // try from 080eb318 to 080eb31c has its CatchHandler @ 080eb3bc iVar4 = vlong_value::cf((this->R).value,(vlong_value *)x); __in_chrg = x; } else { iVar4 = (uint)(iVar4 == 0) * 2 + -1; } vlong::~vlong(local_2c,(int)__in_chrg); if (-1 < iVar4) break; __in_chrg = this; vlong::operator+=(&this->R,&this->R); this->N = this->N + 1; } local_3c = (undefined1 [4])&PTR__vlong_08128410; result.value = (vlong_value *)(this->R).negative; result._vptr_vlong = (_func_int_varargs **)(this->R).value; ((vlong_value *)result._vptr_vlong)->share = ((vlong_value *)result._vptr_vlong)->share + 1; // try { // try from 080eb121 to 080eb125 has its CatchHandler @ 080eb515 vlong::operator-=((vlong *)local_3c,pvVar7); a = (vlong *)local_3c; // try { // try from 080eb13a to 080eb13e has its CatchHandler @ 080eb51f vlong::modinv(local_2c,a,pvVar7); pvVar3 = (this->R1).value; if (pvVar3->share == 0) { if (pvVar3 != (vlong_value *)0x0) { uVar6 = (pvVar3->super_vlong_flex_unit).z; while (uVar6 != 0) { uVar6 = uVar6 - 1; (pvVar3->super_vlong_flex_unit).a[uVar6] = 0; } puVar2 = (pvVar3->super_vlong_flex_unit).a; if (puVar2 != (uint *)0x0) { operator_delete__(puVar2); } operator_delete(pvVar3); } } else { pvVar3->share = pvVar3->share - 1; } pvVar3 = local_2c[0].value; (this->R1).value = local_2c[0].value; ((vlong *)&(local_2c[0].value)->share)->_vptr_vlong = (_func_int_varargs **)((int)((vlong *)&(local_2c[0].value)->share)->_vptr_vlong + 1); local_2c[0]._vptr_vlong = (_func_int_varargs **)&PTR__vlong_08128410; (this->R1).negative = local_2c[0].negative; pp_Var1 = ((vlong *)&(local_2c[0].value)->share)->_vptr_vlong; if (pp_Var1 == (_func_int_varargs **)0x0) { if ((vlong_montgomery *)local_2c[0].value != (vlong_montgomery *)0x0) { // try { // try from 080eb2bd to 080eb2c1 has its CatchHandler @ 080eb51f vlong_flex_unit::~vlong_flex_unit(&(local_2c[0].value)->super_vlong_flex_unit,(int)a); operator_delete(pvVar3); } } else { ((vlong *)&(local_2c[0].value)->share)->_vptr_vlong = (_func_int_varargs **)((int)pp_Var1 - 1); } pp_Var1 = result._vptr_vlong; local_3c = (undefined1 [4])&PTR__vlong_08128410; if (result._vptr_vlong[3] == (_func_int_varargs *)0x0) { if (result._vptr_vlong != (_func_int_varargs **)0x0) { // try { // try from 080eb2a0 to 080eb2a4 has its CatchHandler @ 080eb575 vlong_flex_unit::~vlong_flex_unit((vlong_flex_unit *)result._vptr_vlong,(int)a); operator_delete(pp_Var1); } } else { result._vptr_vlong[3] = result._vptr_vlong[3] + -1; } // try { // try from 080eb1ac to 080eb1b0 has its CatchHandler @ 080eb575 vlong::modinv(local_2c,pvVar7,&this->R); local_3c = (undefined1 [4])&PTR__vlong_08128410; result.value = (vlong_value *)(this->R).negative; pvVar7 = local_2c; result._vptr_vlong = (_func_int_varargs **)(this->R).value; ((vlong_value *)result._vptr_vlong)->share = ((vlong_value *)result._vptr_vlong)->share + 1; // try { // try from 080eb1d7 to 080eb1db has its CatchHandler @ 080eb558 vlong::operator-=((vlong *)local_3c,pvVar7); pvVar3 = (this->n1).value; if (pvVar3->share == 0) { if (pvVar3 != (vlong_value *)0x0) { uVar6 = (pvVar3->super_vlong_flex_unit).z; while (uVar6 != 0) { uVar6 = uVar6 - 1; (pvVar3->super_vlong_flex_unit).a[uVar6] = 0; } puVar2 = (pvVar3->super_vlong_flex_unit).a; if (puVar2 != (uint *)0x0) { operator_delete__(puVar2); } operator_delete(pvVar3); } } else { pvVar3->share = pvVar3->share - 1; } pp_Var1 = result._vptr_vlong; (this->n1).value = (vlong_value *)result._vptr_vlong; result._vptr_vlong[3] = result._vptr_vlong[3] + 1; local_3c = (undefined1 [4])&PTR__vlong_08128410; (this->n1).negative = (int)result.value; if (result._vptr_vlong[3] == (_func_int_varargs *)0x0) { if (result._vptr_vlong != (_func_int_varargs **)0x0) { // try { // try from 080eb24e to 080eb252 has its CatchHandler @ 080eb571 vlong_flex_unit::~vlong_flex_unit((vlong_flex_unit *)result._vptr_vlong,(int)pvVar7); operator_delete(pp_Var1); } } else { result._vptr_vlong[3] = result._vptr_vlong[3] + -1; } pvVar3 = local_2c[0].value; local_2c[0]._vptr_vlong = (_func_int_varargs **)&PTR__vlong_08128410; pp_Var1 = ((vlong *)&(local_2c[0].value)->share)->_vptr_vlong; if (pp_Var1 == (_func_int_varargs **)0x0) { if ((vlong_montgomery *)local_2c[0].value != (vlong_montgomery *)0x0) { // try { // try from 080eb238 to 080eb23c has its CatchHandler @ 080eb575 vlong_flex_unit::~vlong_flex_unit (&(local_2c[0].value)->super_vlong_flex_unit,(int)pvVar7); operator_delete(pvVar3); } } else { ((vlong *)&(local_2c[0].value)->share)->_vptr_vlong = (_func_int_varargs **)((int)pp_Var1 - 1); } return; } // DWARF original prototype: void mul(vlong_montgomery * this, vlong * x, vlong * y) void __thiscall vlong_montgomery::mul(vlong_montgomery *this,vlong *x,vlong *y) { uint uVar1; sbyte sVar2; vlong_value *pvVar3; uint uVar4; int iVar5; uint u; uint x_00; int iVar6; uint i; vlong_value *i_00; vlong_value *pvVar7; uint uVar8; vlong_value *pvVar9; vlong_value *pvVar10; byte local_34; uint delta; vlong_value *local_28; int local_24; vlong_flex_unit::fast_mul (&((this->T).value)->super_vlong_flex_unit,&x->value->super_vlong_flex_unit, &y->value->super_vlong_flex_unit,this->N * 2); vlong_flex_unit::fast_mul (&((this->k).value)->super_vlong_flex_unit,&((this->T).value)->super_vlong_flex_unit, &((this->n1).value)->super_vlong_flex_unit,this->N); vlong_flex_unit::fast_mul (&x->value->super_vlong_flex_unit,&((this->k).value)->super_vlong_flex_unit, &((this->m).value)->super_vlong_flex_unit,this->N * 2); pvVar9 = (vlong_value *)&this->T; vlong::operator+=(x,(vlong *)pvVar9); pvVar10 = x->value; uVar1 = this->N; pvVar3 = (vlong_value *)(pvVar10->super_vlong_flex_unit).n; uVar8 = uVar1 & 0x1f; if (pvVar3 != (vlong_value *)0x0) { sVar2 = (sbyte)uVar8; local_34 = 0x20 - sVar2; i_00 = (vlong_value *)0x0; do { x_00 = 0; pvVar9 = (vlong_value *)((int)&(i_00->super_vlong_flex_unit).n + (uVar1 >> 5)); if (pvVar9 < pvVar3) { x_00 = (pvVar10->super_vlong_flex_unit).a[(int)pvVar9]; } if (uVar8 != 0) { uVar4 = 0; pvVar9 = (vlong_value *)((int)&(pvVar9->super_vlong_flex_unit).n + 1); if (pvVar9 < pvVar3) { uVar4 = (pvVar10->super_vlong_flex_unit).a[(int)pvVar9]; } x_00 = (x_00 >> sVar2) + (uVar4 << (local_34 & 0x1f)); } pvVar7 = (vlong_value *)((int)&(i_00->super_vlong_flex_unit).n + 1); pvVar9 = i_00; vlong_flex_unit::set(&pvVar10->super_vlong_flex_unit,(uint)i_00,x_00); pvVar3 = (vlong_value *)(pvVar10->super_vlong_flex_unit).n; i_00 = pvVar7; } while (pvVar7 < pvVar3); } delta = (uint)&PTR__vlong_08128410; iVar5 = 0; local_24 = (this->m).negative; pvVar10 = (this->m).value; pvVar10->share = pvVar10->share + 1; if ((x->negative != 0) && ((x->value->super_vlong_flex_unit).n != 0)) { iVar5 = 1; } iVar6 = 0; if ((local_24 != 0) && ((pvVar10->super_vlong_flex_unit).n != 0)) { iVar6 = 1; } local_28 = pvVar10; if (iVar5 == iVar6) { // try { // try from 080eb76a to 080eb76e has its CatchHandler @ 080eb771 iVar5 = vlong_value::cf(x->value,pvVar10); pvVar9 = pvVar10; } else { iVar5 = (uint)(iVar5 == 0) * 2 + -1; } vlong::~vlong((vlong *)&delta,(int)pvVar9); if (-1 < iVar5) { vlong::operator-=(x,&this->m); } return; } // DWARF original prototype: vlong exp(vlong_montgomery * this, vlong * x, vlong * e) double __thiscall vlong_montgomery::exp(vlong_montgomery *this,double __x) { vlong_flex_unit *x; _func_int_varargs **pp_Var1; vlong_value *x_00; uint uVar2; uint uVar3; vlong_value *pvVar4; uint x_2; uint i; uint uVar5; longdouble extraout_ST0; longdouble lVar6; longdouble extraout_ST0_00; longdouble extraout_ST0_01; longdouble extraout_ST0_02; vlong *result_5; int in_stack_00000010; uint uVar7; uint local_84; uint *local_80; undefined1 local_5c [4]; vlong_value divide; vlong result_2; undefined1 local_3c [4]; vlong t; undefined1 local_2c [4]; vlong result; local_2c = (undefined1 [4])&PTR__vlong_08128410; result.value = (vlong_value *)result_5->negative; result._vptr_vlong = (_func_int_varargs **)result_5->value; ((vlong_value *)result._vptr_vlong)->share = ((vlong_value *)result._vptr_vlong)->share + 1; // try { // try from 080eb7cb to 080eb7cf has its CatchHandler @ 080ebce1 vlong::operator-=((vlong *)local_2c,result_5 + 2); divide.share = (uint)&PTR__vlong_08128410; // try { // try from 080eb7de to 080eb81f has its CatchHandler @ 080ebdf0 x_00 = (vlong_value *)operator_new(0x10); (x_00->super_vlong_flex_unit).z = 0; (x_00->super_vlong_flex_unit).a = (uint *)0x0; x_00->share = 0; (x_00->super_vlong_flex_unit).n = 0; vlong_flex_unit::set((vlong_flex_unit *)x_00,0,0); x = *(vlong_flex_unit **)(__x._4_4_ + 4); pvVar4 = result_5->value; uVar5 = x->n << 5; do { uVar7 = uVar5; if (uVar7 == 0) break; uVar5 = uVar7 - 1; if (uVar5 >> 5 < x->n) { uVar2 = x->a[uVar5 >> 5]; } else { uVar2 = 0; } } while ((1 << ((byte)uVar5 & 0x1f) & uVar2) == 0); uVar5 = (pvVar4->super_vlong_flex_unit).n << 5; do { uVar2 = uVar5; if (uVar2 == 0) break; uVar5 = uVar2 - 1; if (uVar5 >> 5 < (pvVar4->super_vlong_flex_unit).n) { uVar3 = (pvVar4->super_vlong_flex_unit).a[uVar5 >> 5]; } else { uVar3 = 0; } } while ((1 << ((byte)uVar5 & 0x1f) & uVar3) == 0); // try { // try from 080eb8c8 to 080eb8cc has its CatchHandler @ 080ebcf0 vlong_flex_unit::fast_mul ((vlong_flex_unit *)x_00,x,&pvVar4->super_vlong_flex_unit,uVar2 + uVar7); local_3c = (undefined1 [4])&PTR__vlong_08128410; uVar5 = result_5->negative; uVar7 = *(uint *)(__x._4_4_ + 8); // try { // try from 080eb8ec to 080eb92d has its CatchHandler @ 080ebd80 t._vptr_vlong = (_func_int_varargs **)operator_new(0x10); ((vlong_flex_unit *)t._vptr_vlong)->z = 0; ((vlong_flex_unit *)t._vptr_vlong)->a = (uint *)0x0; ((vlong_flex_unit *)((int)t._vptr_vlong + 0xc))->n = 0; t.value = (vlong_value *)0x0; ((vlong_flex_unit *)t._vptr_vlong)->n = 0; vlong_flex_unit::set((vlong_flex_unit *)t._vptr_vlong,0,0); divide.super_vlong_flex_unit.a = (uint *)0x0; divide.super_vlong_flex_unit.n = 0; local_5c = (undefined1 [4])0x0; divide.super_vlong_flex_unit.z = 0; pvVar4 = x_00; // try { // try from 080eb968 to 080eb96c has its CatchHandler @ 080ebd33 vlong_value::divide((vlong_value *)local_5c,x_00,result_5[2].value,(vlong_value *)t._vptr_vlong) ; t.value = (vlong_value *)(uVar5 ^ uVar7); // try { // try from 080eb979 to 080eb97d has its CatchHandler @ 080ebd78 vlong_flex_unit::~vlong_flex_unit((vlong_flex_unit *)local_5c,(int)pvVar4); divide.share = (uint)&PTR__vlong_08128410; if (x_00->share == 0) { if (x_00 != (vlong_value *)0x0) { // try { // try from 080ebcb3 to 080ebcb7 has its CatchHandler @ 080ebdf0 vlong_flex_unit::~vlong_flex_unit((vlong_flex_unit *)x_00,(int)pvVar4); operator_delete(x_00); } } else { x_00->share = x_00->share - 1; } local_80 = *(uint **)(in_stack_00000010 + 4); uVar5 = *local_80 << 5; do { uVar7 = uVar5; if (uVar7 == 0) break; uVar5 = uVar7 - 1; if (uVar5 >> 5 < *local_80) { uVar2 = *(uint *)(local_80[1] + (uVar5 >> 5) * 4); } else { uVar2 = 0; } } while ((1 << ((byte)uVar5 & 0x1f) & uVar2) == 0); uVar5 = 0; while( true ) { if (uVar5 >> 5 < *local_80) { uVar2 = *(uint *)(local_80[1] + (uVar5 >> 5) * 4); } else { uVar2 = 0; } if ((1 << ((byte)uVar5 & 0x1f) & uVar2) != 0) { mul((vlong_montgomery *)result_5,(vlong *)local_2c,(vlong *)local_3c); } uVar5 = uVar5 + 1; if (uVar5 == uVar7) break; // try { // try from 080eba0f to 080eba77 has its CatchHandler @ 080ebde7 mul((vlong_montgomery *)result_5,(vlong *)local_3c,(vlong *)local_3c); local_80 = *(uint **)(in_stack_00000010 + 4); } local_5c = (undefined1 [4])&PTR__vlong_08128410; divide.super_vlong_flex_unit.n = (uint)operator_new(0x10); ((vlong_flex_unit *)divide.super_vlong_flex_unit.n)->z = 0; ((vlong_flex_unit *)divide.super_vlong_flex_unit.n)->a = (uint *)0x0; ((vlong_flex_unit *)(divide.super_vlong_flex_unit.n + 0xc))->n = 0; divide.super_vlong_flex_unit.a = (uint *)0x0; ((vlong_flex_unit *)divide.super_vlong_flex_unit.n)->n = 0; vlong_flex_unit::set((vlong_flex_unit *)divide.super_vlong_flex_unit.n,0,0); pvVar4 = result_5[1].value; uVar5 = (int)*result._vptr_vlong << 5; do { uVar7 = uVar5; if (uVar7 == 0) break; uVar5 = uVar7 - 1; if ((_func_int_varargs *)(uVar5 >> 5) < *result._vptr_vlong) { uVar2 = *(uint *)(result._vptr_vlong[1] + (int)(uVar5 >> 5) * 4); } else { uVar2 = 0; } } while ((1 << ((byte)uVar5 & 0x1f) & uVar2) == 0); uVar5 = (pvVar4->super_vlong_flex_unit).n << 5; do { uVar2 = uVar5; if (uVar2 == 0) break; uVar5 = uVar2 - 1; if (uVar5 >> 5 < (pvVar4->super_vlong_flex_unit).n) { local_84 = (pvVar4->super_vlong_flex_unit).a[uVar5 >> 5]; } else { local_84 = 0; } } while ((local_84 & 1 << ((byte)uVar5 & 0x1f)) == 0); // try { // try from 080ebb09 to 080ebb0d has its CatchHandler @ 080ebd84 vlong_flex_unit::fast_mul ((vlong_flex_unit *)divide.super_vlong_flex_unit.n, (vlong_flex_unit *)result._vptr_vlong,&pvVar4->super_vlong_flex_unit,uVar2 + uVar7); divide.super_vlong_flex_unit.a = (uint *)(result_5[1].negative ^ (uint)result.value); (this->R)._vptr_vlong = (_func_int_varargs **)&PTR__vlong_08128410; // try { // try from 080ebb2c to 080ebb70 has its CatchHandler @ 080ebde3 pvVar4 = (vlong_value *)operator_new(0x10); (pvVar4->super_vlong_flex_unit).z = 0; (pvVar4->super_vlong_flex_unit).a = (uint *)0x0; pvVar4->share = 0; (this->R).value = pvVar4; (this->R).negative = 0; (pvVar4->super_vlong_flex_unit).n = 0; vlong_flex_unit::set((vlong_flex_unit *)pvVar4,0,0); divide.share = 0; uVar7 = divide.super_vlong_flex_unit.n; // try { // try from 080ebbae to 080ebbb2 has its CatchHandler @ 080ebd9d vlong_value::divide((vlong_value *)÷.share,(vlong_value *)divide.super_vlong_flex_unit.n, result_5[2].value,(this->R).value); (this->R).negative = (int)divide.super_vlong_flex_unit.a; // try { // try from 080ebbbf to 080ebbc3 has its CatchHandler @ 080ebddf vlong_flex_unit::~vlong_flex_unit((vlong_flex_unit *)÷.share,uVar7); uVar5 = divide.super_vlong_flex_unit.n; local_5c = (undefined1 [4])&PTR__vlong_08128410; lVar6 = extraout_ST0; if (*(int *)(divide.super_vlong_flex_unit.n + 0xc) == 0) { if (divide.super_vlong_flex_unit.n != 0) { // try { // try from 080ebc46 to 080ebc89 has its CatchHandler @ 080ebde7 vlong_flex_unit::~vlong_flex_unit ((vlong_flex_unit *)divide.super_vlong_flex_unit.n,uVar7); operator_delete((void *)uVar5); lVar6 = extraout_ST0_02; } } else { *(int *)(divide.super_vlong_flex_unit.n + 0xc) = *(int *)(divide.super_vlong_flex_unit.n + 0xc) + -1; } pp_Var1 = t._vptr_vlong; local_3c = (undefined1 [4])&PTR__vlong_08128410; if (t._vptr_vlong[3] == (_func_int_varargs *)0x0) { if (t._vptr_vlong != (_func_int_varargs **)0x0) { // try { // try from 080ebc30 to 080ebc34 has its CatchHandler @ 080ebdf0 vlong_flex_unit::~vlong_flex_unit((vlong_flex_unit *)t._vptr_vlong,uVar7); operator_delete(pp_Var1); lVar6 = extraout_ST0_01; } } else { t._vptr_vlong[3] = t._vptr_vlong[3] + -1; } pp_Var1 = result._vptr_vlong; local_2c = (undefined1 [4])&PTR__vlong_08128410; if (result._vptr_vlong[3] == (_func_int_varargs *)0x0) { if (result._vptr_vlong != (_func_int_varargs **)0x0) { vlong_flex_unit::~vlong_flex_unit((vlong_flex_unit *)result._vptr_vlong,uVar7); operator_delete(pp_Var1); lVar6 = extraout_ST0_00; } } else { result._vptr_vlong[3] = result._vptr_vlong[3] + -1; } return (double)lVar6; } // DWARF original prototype: void vlong_flex_unit(vlong_flex_unit * this) void __thiscall vlong_flex_unit::vlong_flex_unit(vlong_flex_unit *this) { this->z = 0; this->a = (uint *)0x0; this->n = 0; return; } // DWARF original prototype: void vlong_flex_unit(vlong_flex_unit * this) void __thiscall vlong_flex_unit::vlong_flex_unit(vlong_flex_unit *this) { this->z = 0; this->a = (uint *)0x0; this->n = 0; return; } // DWARF original prototype: void ~vlong_flex_unit(vlong_flex_unit * this, int __in_chrg) void __thiscall vlong_flex_unit::~vlong_flex_unit(vlong_flex_unit *this,int __in_chrg) { uint i; uint uVar1; uVar1 = this->z; while (uVar1 != 0) { uVar1 = uVar1 - 1; this->a[uVar1] = 0; } if (this->a == (uint *)0x0) { return; } operator_delete__(this->a); return; } // DWARF original prototype: void ~vlong_flex_unit(vlong_flex_unit * this, int __in_chrg) void __thiscall vlong_flex_unit::~vlong_flex_unit(vlong_flex_unit *this,int __in_chrg) { uint i; uint uVar1; uVar1 = this->z; while (uVar1 != 0) { uVar1 = uVar1 - 1; this->a[uVar1] = 0; } if (this->a == (uint *)0x0) { return; } operator_delete__(this->a); return; } // DWARF original prototype: uint get(vlong_flex_unit * this, uint i) uint __thiscall vlong_flex_unit::get(vlong_flex_unit *this,uint i) { uint uVar1; if (i < this->n) { uVar1 = this->a[i]; } else { uVar1 = 0; } return uVar1; } // DWARF original prototype: void clear(vlong_flex_unit * this) void __thiscall vlong_flex_unit::clear(vlong_flex_unit *this) { this->n = 0; return; } // DWARF original prototype: void reserve(vlong_flex_unit * this, uint x) void __thiscall vlong_flex_unit::reserve(vlong_flex_unit *this,uint x) { uint *puVar1; uint i; uint uVar2; uint *na; if (this->z < x) { puVar1 = (uint *)operator_new__(x * 4); uVar2 = 0; if (this->n != 0) { do { puVar1[uVar2] = this->a[uVar2]; uVar2 = uVar2 + 1; } while (uVar2 < this->n); } if (this->a != (uint *)0x0) { operator_delete__(this->a); } this->a = puVar1; this->z = x; } return; } // DWARF original prototype: void set(vlong_flex_unit * this, uint i, uint x) void __thiscall vlong_flex_unit::set(vlong_flex_unit *this,uint i,uint x) { uint uVar1; uint uVar2; uint *puVar3; uint j; uint uVar4; uint *na; uVar4 = this->n; if (i < uVar4) { this->a[i] = x; if ((x == 0) && (uVar4 = this->n, uVar4 != 0)) { uVar1 = this->a[uVar4 - 1]; while (uVar1 == 0) { uVar2 = uVar4 - 1; this->n = uVar2; if (uVar2 == 0) { return; } uVar1 = this->a[uVar4 - 2]; uVar4 = uVar2; } } } else if (x != 0) { uVar1 = i + 1; if (this->z < uVar1) { puVar3 = (uint *)operator_new__(uVar1 * 4); uVar2 = 0; uVar4 = this->n; if (uVar4 != 0) { do { puVar3[uVar2] = this->a[uVar2]; uVar2 = uVar2 + 1; uVar4 = this->n; } while (uVar2 < uVar4); } if (this->a != (uint *)0x0) { operator_delete__(this->a); uVar4 = this->n; } this->a = puVar3; this->z = uVar1; } for (; uVar4 < i; uVar4 = uVar4 + 1) { this->a[uVar4] = 0; } this->a[i] = x; this->n = uVar1; } return; } // WARNING: Variable defined which should be unmapped: i // DWARF original prototype: void fast_mul(vlong_flex_unit * this, vlong_flex_unit * x, // vlong_flex_unit * y, uint keep) void __thiscall vlong_flex_unit::fast_mul(vlong_flex_unit *this,vlong_flex_unit *x,vlong_flex_unit *y,uint keep) { uint *puVar1; uint m; uint *puVar2; uint p; uint v; uint uVar3; uint uVar4; uint uVar5; uint *na; uint uVar6; uint c; uint uVar7; int iVar8; uint w; uint uVar9; uint uVar10; uint uVar11; uint local_24; uint j; uint min_1; uint min; uint limit; uint i; min = keep + 0x1f >> 5; if (this->z < min) { puVar2 = (uint *)operator_new__(min << 2); uVar5 = 0; if (this->n != 0) { do { puVar2[uVar5] = this->a[uVar5]; uVar5 = uVar5 + 1; } while (uVar5 < this->n); } if (this->a != (uint *)0x0) { operator_delete__(this->a); } this->a = puVar2; this->z = min; } limit = 0; if (min != 0) { do { this->a[limit] = 0; limit = limit + 1; } while (limit < min); } limit = 0; uVar5 = min; if (x->n <= min) { uVar5 = x->n; } if (uVar5 != 0) { do { uVar7 = 0; uVar9 = limit + y->n; uVar3 = min; if (uVar9 <= min) { uVar3 = uVar9; } local_24 = limit; if (limit < uVar3) { uVar10 = x->a[limit] & 0xffff; uVar9 = x->a[limit] >> 0x10; uVar7 = 0; do { uVar4 = this->a[local_24] + uVar7; uVar7 = (uint)(uVar4 < uVar7); uVar6 = y->a[local_24 - limit] & 0xffff; uVar11 = uVar10 * uVar6; uVar4 = uVar4 + uVar11; if (uVar4 < uVar11) { uVar7 = uVar7 + 1; } uVar6 = uVar9 * uVar6; uVar11 = uVar6 * 0x10000; uVar4 = uVar4 + uVar11; iVar8 = uVar7 + (uVar6 >> 0x10); if (uVar4 < uVar11) { iVar8 = iVar8 + 1; } uVar7 = y->a[local_24 - limit] >> 0x10; uVar6 = uVar10 * uVar7; uVar11 = uVar6 * 0x10000; iVar8 = iVar8 + (uVar6 >> 0x10); uVar4 = uVar4 + uVar11; if (uVar4 < uVar11) { iVar8 = iVar8 + 1; } uVar7 = iVar8 + uVar7 * uVar9; this->a[local_24] = uVar4; local_24 = local_24 + 1; } while (local_24 < uVar3); } if ((uVar7 != 0) && (local_24 < min)) { puVar2 = this->a; do { puVar2[local_24] = puVar2[local_24] + uVar7; puVar2 = this->a; puVar1 = puVar2 + local_24; local_24 = local_24 + 1; uVar7 = (uint)(*puVar1 < uVar7); if (uVar7 == 0) break; } while (local_24 < min); } limit = limit + 1; } while (limit < uVar5); } if ((keep & 0x1f) != 0) { this->a[min - 1] = this->a[min - 1] & (1 << (sbyte)(keep & 0x1f)) - 1U; } if ((min != 0) && (this->a[min - 1] == 0)) { puVar2 = this->a + (min - 1); do { puVar2 = puVar2 + -1; min = min - 1; if (min == 0) break; } while (*puVar2 == 0); } this->n = min; return; } // DWARF original name: operator unsigned int // DWARF original prototype: uint operator_unsigned_int(vlong_value * this) uint __thiscall vlong_value::operator_unsigned_int(vlong_value *this) { uint uVar1; if ((this->super_vlong_flex_unit).n == 0) { uVar1 = 0; } else { uVar1 = *(this->super_vlong_flex_unit).a; } return uVar1; } // DWARF original prototype: int is_zero(vlong_value * this) int __thiscall vlong_value::is_zero(vlong_value *this) { return (uint)((this->super_vlong_flex_unit).n == 0); } // DWARF original prototype: int test(vlong_value * this, uint i) int __thiscall vlong_value::test(vlong_value *this,uint i) { uint uVar1; if (i >> 5 < (this->super_vlong_flex_unit).n) { uVar1 = (this->super_vlong_flex_unit).a[i >> 5]; } else { uVar1 = 0; } return (uint)((1 << ((byte)i & 0x1f) & uVar1) != 0); } // DWARF original prototype: uint bits(vlong_value * this) uint __thiscall vlong_value::bits(vlong_value *this) { uint uVar1; uint uVar2; uint x; uint uVar3; uVar1 = (this->super_vlong_flex_unit).n << 5; do { uVar3 = uVar1; if (uVar3 == 0) { return 0; } uVar1 = uVar3 - 1; if (uVar1 >> 5 < (this->super_vlong_flex_unit).n) { uVar2 = (this->super_vlong_flex_unit).a[uVar1 >> 5]; } else { uVar2 = 0; } } while ((1 << ((byte)uVar1 & 0x1f) & uVar2) == 0); return uVar3; } // DWARF original prototype: int cf(vlong_value * this, vlong_value * x) int __thiscall vlong_value::cf(vlong_value *this,vlong_value *x) { uint uVar1; uint uVar2; int iVar3; uint uVar4; uint i; uint uVar5; uint uVar6; uVar1 = (this->super_vlong_flex_unit).n; uVar2 = (x->super_vlong_flex_unit).n; iVar3 = 1; if ((uVar1 <= uVar2) && (iVar3 = -1, uVar5 = uVar1, uVar2 <= uVar1)) { do { if (uVar5 == 0) { return 0; } uVar5 = uVar5 - 1; uVar6 = 0; if (uVar5 < uVar1) { uVar6 = (this->super_vlong_flex_unit).a[uVar5]; } uVar4 = 0; if (uVar5 < uVar2) { uVar4 = (x->super_vlong_flex_unit).a[uVar5]; } if (uVar4 < uVar6) { return 1; } if (uVar5 < (this->super_vlong_flex_unit).n) { uVar6 = (this->super_vlong_flex_unit).a[uVar5]; } else { uVar6 = 0; } if (uVar5 < (x->super_vlong_flex_unit).n) { uVar4 = (x->super_vlong_flex_unit).a[uVar5]; } else { uVar4 = 0; } iVar3 = -1; } while (uVar4 <= uVar6); } return iVar3; } // WARNING: Variable defined which should be unmapped: N // DWARF original prototype: void shl(vlong_value * this) void __thiscall vlong_value::shl(vlong_value *this) { uint uVar1; uint uVar2; uint carry; uint uVar3; uint uVar4; uint i; uint i_00; uint N; uVar3 = 0; uVar1 = (this->super_vlong_flex_unit).n; uVar2 = uVar1; i_00 = 0; while( true ) { uVar4 = 0; if (i_00 < uVar2) { uVar4 = (this->super_vlong_flex_unit).a[i_00]; } vlong_flex_unit::set(&this->super_vlong_flex_unit,i_00,uVar3 + uVar4 * 2); uVar3 = uVar4 >> 0x1f; if (uVar1 < i_00 + 1) break; uVar2 = (this->super_vlong_flex_unit).n; i_00 = i_00 + 1; } return; } // DWARF original prototype: void shr(vlong_value * this) void __thiscall vlong_value::shr(vlong_value *this) { uint uVar1; uint carry; int iVar2; uint i; uint i_00; uint uVar3; iVar2 = 0; uVar1 = (this->super_vlong_flex_unit).n; i_00 = uVar1; if (uVar1 != 0) { while( true ) { i_00 = i_00 - 1; uVar3 = 0; if (i_00 < uVar1) { uVar3 = (this->super_vlong_flex_unit).a[i_00]; } vlong_flex_unit::set(&this->super_vlong_flex_unit,i_00,(uVar3 >> 1) + iVar2); iVar2 = uVar3 << 0x1f; if (i_00 == 0) break; uVar1 = (this->super_vlong_flex_unit).n; } } return; } // WARNING: Variable defined which should be unmapped: delta // DWARF original prototype: void shr(vlong_value * this, uint x) void __thiscall vlong_value::shr(vlong_value *this,uint x) { sbyte sVar1; uint uVar2; uint uVar3; uint uVar4; uint u; uint x_00; uint i; uint i_00; byte local_18; uint delta; uVar2 = (this->super_vlong_flex_unit).n; if (uVar2 != 0) { sVar1 = (sbyte)(x & 0x1f); local_18 = 0x20 - sVar1; i_00 = 0; do { x_00 = 0; uVar4 = (x >> 5) + i_00; if (uVar4 < uVar2) { x_00 = (this->super_vlong_flex_unit).a[uVar4]; } if ((x & 0x1f) != 0) { uVar3 = 0; if (uVar4 + 1 < uVar2) { uVar3 = (this->super_vlong_flex_unit).a[uVar4 + 1]; } x_00 = (x_00 >> sVar1) + (uVar3 << (local_18 & 0x1f)); } uVar4 = i_00 + 1; vlong_flex_unit::set(&this->super_vlong_flex_unit,i_00,x_00); uVar2 = (this->super_vlong_flex_unit).n; i_00 = uVar4; } while (uVar4 < uVar2); } return; } // DWARF original prototype: void add(vlong_value * this, vlong_value * x) void __thiscall vlong_value::add(vlong_value *this,vlong_value *x) { uint *puVar1; uint uVar2; uint *puVar3; uint uVar4; uint u; uint i; uint uVar5; uint uVar6; uint carry; uint uVar7; uint max; uint uVar8; uVar8 = (this->super_vlong_flex_unit).n; uVar5 = (x->super_vlong_flex_unit).n; if (uVar8 < uVar5) { uVar8 = uVar5; } if ((this->super_vlong_flex_unit).z < uVar8) { puVar3 = (uint *)operator_new__(uVar8 * 4); uVar5 = 0; if ((this->super_vlong_flex_unit).n != 0) { do { puVar3[uVar5] = (this->super_vlong_flex_unit).a[uVar5]; uVar5 = uVar5 + 1; } while (uVar5 < (this->super_vlong_flex_unit).n); } puVar1 = (this->super_vlong_flex_unit).a; if (puVar1 != (uint *)0x0) { operator_delete__(puVar1); } (this->super_vlong_flex_unit).a = puVar3; (this->super_vlong_flex_unit).z = uVar8; } uVar7 = 0; uVar5 = 0; if (uVar8 != 0xffffffff) { do { if (uVar5 < (this->super_vlong_flex_unit).n) { uVar2 = (this->super_vlong_flex_unit).a[uVar5]; } else { uVar2 = 0; } uVar6 = (uint)(uVar7 + uVar2 < uVar7); if (uVar5 < (x->super_vlong_flex_unit).n) { uVar4 = (x->super_vlong_flex_unit).a[uVar5]; } else { uVar4 = 0; } uVar2 = uVar7 + uVar2 + uVar4; uVar7 = uVar6; if (uVar2 < uVar4) { uVar7 = uVar6 + 1; } uVar6 = uVar5 + 1; vlong_flex_unit::set(&this->super_vlong_flex_unit,uVar5,uVar2); uVar5 = uVar6; } while (uVar6 < uVar8 + 1); } return; } // WARNING: Variable defined which should be unmapped: N // DWARF original prototype: void subtract(vlong_value * this, vlong_value * x) void __thiscall vlong_value::subtract(vlong_value *this,vlong_value *x) { uint uVar1; uint uVar2; uint uVar3; uint ux; uint nu; uint i; uint i_00; uint carry; uint uVar4; uint N; i_00 = 0; uVar1 = (this->super_vlong_flex_unit).n; if (uVar1 != 0) { uVar4 = 0; do { if (i_00 < (x->super_vlong_flex_unit).n) { uVar2 = (x->super_vlong_flex_unit).a[i_00]; } else { uVar2 = 0; } if (uVar4 <= uVar4 + uVar2) { if (i_00 < (this->super_vlong_flex_unit).n) { uVar3 = (this->super_vlong_flex_unit).a[i_00]; } else { uVar3 = 0; } uVar2 = uVar3 - (uVar4 + uVar2); uVar4 = (uint)(uVar3 < uVar2); vlong_flex_unit::set(&this->super_vlong_flex_unit,i_00,uVar2); } i_00 = i_00 + 1; } while (i_00 < uVar1); } return; } // DWARF original prototype: void init(vlong_value * this, uint x) int __thiscall vlong_value::init(vlong_value *this,EVP_PKEY_CTX *ctx) { (this->super_vlong_flex_unit).n = 0; vlong_flex_unit::set(&this->super_vlong_flex_unit,0,(uint)ctx); return (int)ctx; } // DWARF original prototype: void copy(vlong_value * this, vlong_value * x) int __thiscall vlong_value::copy(vlong_value *this,EVP_PKEY_CTX *dst,EVP_PKEY_CTX *src) { uint in_EAX; uint i; uint i_00; (this->super_vlong_flex_unit).n = 0; i_00 = *(uint *)dst; while (i_00 != 0) { i_00 = i_00 - 1; if (i_00 < *(uint *)dst) { in_EAX = *(uint *)(*(int *)(dst + 4) + i_00 * 4); } else { in_EAX = 0; } vlong_flex_unit::set(&this->super_vlong_flex_unit,i_00,in_EAX); } return in_EAX; } // DWARF original prototype: void vlong_value(vlong_value * this) void __thiscall vlong_value::vlong_value(vlong_value *this) { (this->super_vlong_flex_unit).z = 0; (this->super_vlong_flex_unit).a = (uint *)0x0; (this->super_vlong_flex_unit).n = 0; this->share = 0; return; } // DWARF original prototype: void vlong_value(vlong_value * this) void __thiscall vlong_value::vlong_value(vlong_value *this) { (this->super_vlong_flex_unit).z = 0; (this->super_vlong_flex_unit).a = (uint *)0x0; (this->super_vlong_flex_unit).n = 0; this->share = 0; return; } // DWARF original prototype: void mul(vlong_value * this, vlong_value * x, vlong_value * y) void __thiscall vlong_value::mul(vlong_value *this,vlong_value *x,vlong_value *y) { uint uVar1; uint uVar2; uVar1 = bits(x); uVar2 = bits(y); vlong_flex_unit::fast_mul (&this->super_vlong_flex_unit,&x->super_vlong_flex_unit,&y->super_vlong_flex_unit, uVar2 + uVar1); return; } // DWARF original prototype: void divide(vlong_value * this, vlong_value * x, vlong_value * y, // vlong_value * rem) void __thiscall vlong_value::divide(vlong_value *this,vlong_value *x,vlong_value *y,vlong_value *rem) { uint *this_00; uint i_00; uint i_01; int iVar1; uint carry; EVP_PKEY_CTX *src; uint local_4c; uint i_1; uint i; vlong_value s; vlong_value m; this_00 = &s.share; (this->super_vlong_flex_unit).n = 0; src = (EVP_PKEY_CTX *)0x0; vlong_flex_unit::set(&this->super_vlong_flex_unit,0,0); copy(rem,(EVP_PKEY_CTX *)x,src); vlong_value((vlong_value *)this_00); vlong_value((vlong_value *)&i); // try { // try from 080ec83c to 080ec97b has its CatchHandler @ 080ec9d7 copy((vlong_value *)this_00,(EVP_PKEY_CTX *)y,src); i = 0; vlong_flex_unit::set((vlong_flex_unit *)&i,0,1); while (iVar1 = cf(rem,(vlong_value *)this_00), 0 < iVar1) { shl((vlong_value *)this_00); shl((vlong_value *)&i); } while (iVar1 = cf(rem,y), -1 < iVar1) { while (iVar1 = cf(rem,(vlong_value *)this_00), iVar1 < 0) { iVar1 = 0; i_01 = i; i_00 = s.share; while (i = i_01, i_00 != 0) { i_00 = i_00 - 1; if (i_00 < s.share) { i_1 = *(uint *)(m.super_vlong_flex_unit.n + i_00 * 4); } else { i_1 = 0; } vlong_flex_unit::set((vlong_flex_unit *)this_00,i_00,(i_1 >> 1) + iVar1); iVar1 = i_1 << 0x1f; i_01 = i; } iVar1 = 0; while (i_01 != 0) { i_01 = i_01 - 1; if (i_01 < i) { local_4c = *(uint *)(s.super_vlong_flex_unit.n + i_01 * 4); } else { local_4c = 0; } vlong_flex_unit::set((vlong_flex_unit *)&i,i_01,(local_4c >> 1) + iVar1); iVar1 = local_4c << 0x1f; } } subtract(rem,(vlong_value *)this_00); add(this,(vlong_value *)&i); } while (s.super_vlong_flex_unit.a != (uint *)0x0) { s.super_vlong_flex_unit.a = (uint *)((int)s.super_vlong_flex_unit.a + -1); *(undefined4 *)(s.super_vlong_flex_unit.n + (int)s.super_vlong_flex_unit.a * 4) = 0; } if (s.super_vlong_flex_unit.n != 0) { operator_delete__((void *)s.super_vlong_flex_unit.n); } if (m.super_vlong_flex_unit.a != (uint *)0x0) { do { m.super_vlong_flex_unit.a = (uint *)((int)m.super_vlong_flex_unit.a + -1); *(undefined4 *)(m.super_vlong_flex_unit.n + (int)m.super_vlong_flex_unit.a * 4) = 0; } while (m.super_vlong_flex_unit.a != (uint *)0x0); } if (m.super_vlong_flex_unit.n != 0) { operator_delete__((void *)m.super_vlong_flex_unit.n); } return; } // DWARF original prototype: void vlong(vlong * this, uint x) void __thiscall vlong::vlong(vlong *this,uint x) { vlong_value *this_00; this->_vptr_vlong = (_func_int_varargs **)&PTR__vlong_08128410; this_00 = (vlong_value *)operator_new(0x10); vlong_value::vlong_value(this_00); this->negative = 0; this->value = this_00; (this_00->super_vlong_flex_unit).n = 0; vlong_flex_unit::set((vlong_flex_unit *)this_00,0,x); return; } // DWARF original prototype: void vlong(vlong * this, uint x) void __thiscall vlong::vlong(vlong *this,uint x) { vlong_value *this_00; this->_vptr_vlong = (_func_int_varargs **)&PTR__vlong_08128410; this_00 = (vlong_value *)operator_new(0x10); vlong_value::vlong_value(this_00); this->negative = 0; this->value = this_00; (this_00->super_vlong_flex_unit).n = 0; vlong_flex_unit::set((vlong_flex_unit *)this_00,0,x); return; } // DWARF original prototype: void vlong(vlong * this, vlong * x) void __thiscall vlong::vlong(vlong *this,vlong *x) { uint *puVar1; int iVar2; vlong_value *pvVar3; iVar2 = x->negative; this->_vptr_vlong = (_func_int_varargs **)&PTR__vlong_08128410; this->negative = iVar2; pvVar3 = x->value; this->value = pvVar3; puVar1 = &pvVar3->share; *puVar1 = *puVar1 + 1; return; } // DWARF original prototype: void vlong(vlong * this, vlong * x) void __thiscall vlong::vlong(vlong *this,vlong *x) { uint *puVar1; int iVar2; vlong_value *pvVar3; iVar2 = x->negative; this->_vptr_vlong = (_func_int_varargs **)&PTR__vlong_08128410; this->negative = iVar2; pvVar3 = x->value; this->value = pvVar3; puVar1 = &pvVar3->share; *puVar1 = *puVar1 + 1; return; } // DWARF original prototype: void ~vlong(vlong * this, int __in_chrg) void __thiscall vlong::~vlong(vlong *this,int __in_chrg) { vlong_value *pvVar1; uint *puVar2; uint i; uint uVar3; pvVar1 = this->value; this->_vptr_vlong = (_func_int_varargs **)&PTR__vlong_08128410; if (pvVar1->share == 0) { if (pvVar1 != (vlong_value *)0x0) { uVar3 = (pvVar1->super_vlong_flex_unit).z; while (uVar3 != 0) { uVar3 = uVar3 - 1; (pvVar1->super_vlong_flex_unit).a[uVar3] = 0; } puVar2 = (pvVar1->super_vlong_flex_unit).a; if (puVar2 != (uint *)0x0) { operator_delete__(puVar2); } operator_delete(pvVar1); } } else { pvVar1->share = pvVar1->share - 1; } return; } // DWARF original prototype: void ~vlong(vlong * this, int __in_chrg) void __thiscall vlong::~vlong(vlong *this,int __in_chrg) { vlong_value *pvVar1; uint *puVar2; uint i; uint uVar3; pvVar1 = this->value; this->_vptr_vlong = (_func_int_varargs **)&PTR__vlong_08128410; if (pvVar1->share == 0) { if (pvVar1 != (vlong_value *)0x0) { uVar3 = (pvVar1->super_vlong_flex_unit).z; while (uVar3 != 0) { uVar3 = uVar3 - 1; (pvVar1->super_vlong_flex_unit).a[uVar3] = 0; } puVar2 = (pvVar1->super_vlong_flex_unit).a; if (puVar2 != (uint *)0x0) { operator_delete__(puVar2); } operator_delete(pvVar1); } } else { pvVar1->share = pvVar1->share - 1; } return; } // DWARF original prototype: void ~vlong(vlong * this, int __in_chrg) void __thiscall vlong::~vlong(vlong *this,int __in_chrg) { vlong_value *pvVar1; uint *puVar2; uint i; uint uVar3; pvVar1 = this->value; this->_vptr_vlong = (_func_int_varargs **)&PTR__vlong_08128410; if (pvVar1->share == 0) { if (pvVar1 != (vlong_value *)0x0) { uVar3 = (pvVar1->super_vlong_flex_unit).z; while (uVar3 != 0) { uVar3 = uVar3 - 1; (pvVar1->super_vlong_flex_unit).a[uVar3] = 0; } puVar2 = (pvVar1->super_vlong_flex_unit).a; if (puVar2 != (uint *)0x0) { operator_delete__(puVar2); } operator_delete(pvVar1); } } else { pvVar1->share = pvVar1->share - 1; } operator_delete(this); return; } // DWARF original prototype: void docopy(vlong * this) void __thiscall vlong::docopy(vlong *this) { uint uVar1; vlong_value *this_00; EVP_PKEY_CTX *in_stack_ffffffec; uVar1 = this->value->share; if (uVar1 != 0) { this->value->share = uVar1 - 1; this_00 = (vlong_value *)operator_new(0x10); vlong_value::vlong_value(this_00); vlong_value::copy(this_00,(EVP_PKEY_CTX *)this->value,in_stack_ffffffec); this->value = this_00; } return; } // DWARF original prototype: int cf(vlong * this, vlong * x) int __thiscall vlong::cf(vlong *this,vlong *x) { int iVar1; int iVar2; iVar2 = 0; if ((this->negative != 0) && ((this->value->super_vlong_flex_unit).n != 0)) { iVar2 = 1; } iVar1 = 0; if ((x->negative != 0) && ((x->value->super_vlong_flex_unit).n != 0)) { iVar1 = 1; } if (iVar2 != iVar1) { return (uint)(iVar2 == 0) * 2 + -1; } iVar2 = vlong_value::cf(this->value,x->value); return iVar2; } // DWARF original prototype: vlong * operator=(vlong * this, vlong * x) vlong * __thiscall vlong::operator=(vlong *this,vlong *x) { vlong_value *pvVar1; uint *puVar2; uint i; uint uVar3; pvVar1 = this->value; if (pvVar1->share == 0) { if (pvVar1 != (vlong_value *)0x0) { uVar3 = (pvVar1->super_vlong_flex_unit).z; while (uVar3 != 0) { uVar3 = uVar3 - 1; (pvVar1->super_vlong_flex_unit).a[uVar3] = 0; } puVar2 = (pvVar1->super_vlong_flex_unit).a; if (puVar2 != (uint *)0x0) { operator_delete__(puVar2); } operator_delete(pvVar1); } } else { pvVar1->share = pvVar1->share - 1; } pvVar1 = x->value; this->value = pvVar1; puVar2 = &pvVar1->share; *puVar2 = *puVar2 + 1; this->negative = x->negative; return this; } // DWARF original name: operator unsigned int // DWARF original prototype: uint operator_unsigned_int(vlong * this) uint __thiscall vlong::operator_unsigned_int(vlong *this) { uint uVar1; if ((this->value->super_vlong_flex_unit).n == 0) { uVar1 = 0; } else { uVar1 = *(this->value->super_vlong_flex_unit).a; } return uVar1; } // DWARF original prototype: vlong * operator+=(vlong * this, vlong * x) vlong * __thiscall vlong::operator+=(vlong *this,vlong *x) { int iVar1; vlong_value *pvVar2; vlong *x_00; EVP_PKEY_CTX *in_stack_ffffffcc; undefined1 local_2c [4]; vlong tmp; if (this->negative == x->negative) { pvVar2 = this->value; if (pvVar2->share != 0) { pvVar2->share = pvVar2->share - 1; pvVar2 = (vlong_value *)operator_new(0x10); vlong_value::vlong_value(pvVar2); vlong_value::copy(pvVar2,(EVP_PKEY_CTX *)this->value,in_stack_ffffffcc); this->value = pvVar2; } vlong_value::add(pvVar2,x->value); } else { iVar1 = vlong_value::cf(this->value,x->value); if (iVar1 < 0) { local_2c = (undefined1 [4])&PTR__vlong_08128410; tmp.value = (vlong_value *)this->negative; tmp._vptr_vlong = (_func_int_varargs **)this->value; ((vlong_value *)tmp._vptr_vlong)->share = ((vlong_value *)tmp._vptr_vlong)->share + 1; operator=(this,x); x_00 = (vlong *)local_2c; // try { // try from 080ecedc to 080ecee0 has its CatchHandler @ 080ecf40 operator+=(this,x_00); ~vlong((vlong *)local_2c,(int)x_00); } else { pvVar2 = this->value; if (pvVar2->share != 0) { pvVar2->share = pvVar2->share - 1; pvVar2 = (vlong_value *)operator_new(0x10); vlong_value::vlong_value(pvVar2); vlong_value::copy(pvVar2,(EVP_PKEY_CTX *)this->value,in_stack_ffffffcc); this->value = pvVar2; } vlong_value::subtract(pvVar2,x->value); } } return this; } // DWARF original prototype: vlong * operator-=(vlong * this, vlong * x) vlong * __thiscall vlong::operator-=(vlong *this,vlong *x) { vlong_value *pvVar1; int iVar2; vlong *x_00; EVP_PKEY_CTX *in_stack_ffffffcc; undefined1 local_2c [4]; vlong tmp; if (this->negative == x->negative) { iVar2 = vlong_value::cf(this->value,x->value); if (iVar2 < 0) { local_2c = (undefined1 [4])&PTR__vlong_08128410; tmp.value = (vlong_value *)this->negative; tmp._vptr_vlong = (_func_int_varargs **)this->value; ((vlong_value *)tmp._vptr_vlong)->share = ((vlong_value *)tmp._vptr_vlong)->share + 1; operator=(this,x); x_00 = (vlong *)local_2c; // try { // try from 080ed062 to 080ed066 has its CatchHandler @ 080ed084 operator-=(this,x_00); this->negative = 1 - this->negative; ~vlong((vlong *)local_2c,(int)x_00); } else { pvVar1 = this->value; if (pvVar1->share != 0) { pvVar1->share = pvVar1->share - 1; pvVar1 = (vlong_value *)operator_new(0x10); vlong_value::vlong_value(pvVar1); vlong_value::copy(pvVar1,(EVP_PKEY_CTX *)this->value,in_stack_ffffffcc); this->value = pvVar1; } vlong_value::subtract(pvVar1,x->value); } } else { pvVar1 = this->value; if (pvVar1->share != 0) { pvVar1->share = pvVar1->share - 1; pvVar1 = (vlong_value *)operator_new(0x10); vlong_value::vlong_value(pvVar1); vlong_value::copy(pvVar1,(EVP_PKEY_CTX *)this->value,in_stack_ffffffcc); this->value = pvVar1; } vlong_value::add(pvVar1,x->value); } return this; } vlong * operator+(vlong *x,vlong *y) { uint *puVar1; int iVar2; vlong_value *pvVar3; vlong *result; vlong *in_stack_0000000c; iVar2 = y->negative; x->_vptr_vlong = (_func_int_varargs **)&PTR__vlong_08128410; x->negative = iVar2; pvVar3 = y->value; x->value = pvVar3; puVar1 = &pvVar3->share; *puVar1 = *puVar1 + 1; // try { // try from 080ed0d1 to 080ed0d5 has its CatchHandler @ 080ed0e4 vlong::operator+=(x,in_stack_0000000c); return x; } vlong * operator-(vlong *x,vlong *y) { uint *puVar1; int iVar2; vlong_value *pvVar3; vlong *result; vlong *in_stack_0000000c; iVar2 = y->negative; x->_vptr_vlong = (_func_int_varargs **)&PTR__vlong_08128410; x->negative = iVar2; pvVar3 = y->value; x->value = pvVar3; puVar1 = &pvVar3->share; *puVar1 = *puVar1 + 1; // try { // try from 080ed131 to 080ed135 has its CatchHandler @ 080ed144 vlong::operator-=(x,in_stack_0000000c); return x; } vlong * operator*(vlong *x,vlong *y) { vlong_value *this; vlong_value *this_00; vlong_value *pvVar1; uint uVar2; uint uVar3; vlong *result; int in_stack_0000000c; x->_vptr_vlong = (_func_int_varargs **)&PTR__vlong_08128410; pvVar1 = (vlong_value *)operator_new(0x10); vlong_value::vlong_value(pvVar1); x->negative = 0; x->value = pvVar1; (pvVar1->super_vlong_flex_unit).n = 0; vlong_flex_unit::set((vlong_flex_unit *)pvVar1,0,0); pvVar1 = x->value; this = y->value; this_00 = *(vlong_value **)(in_stack_0000000c + 4); uVar2 = vlong_value::bits(this); uVar3 = vlong_value::bits(this_00); // try { // try from 080ed1ef to 080ed1f3 has its CatchHandler @ 080ed211 vlong_flex_unit::fast_mul (&pvVar1->super_vlong_flex_unit,&this->super_vlong_flex_unit, &this_00->super_vlong_flex_unit,uVar3 + uVar2); x->negative = *(uint *)(in_stack_0000000c + 8) ^ y->negative; return x; } vlong * operator/(vlong *x,vlong *y) { vlong_value *this; uint i; vlong *result; int in_stack_0000000c; undefined1 local_2c [4]; vlong_value rem; x->_vptr_vlong = (_func_int_varargs **)&PTR__vlong_08128410; this = (vlong_value *)operator_new(0x10); vlong_value::vlong_value(this); x->negative = 0; x->value = this; (this->super_vlong_flex_unit).n = 0; vlong_flex_unit::set((vlong_flex_unit *)this,0,0); vlong_value::vlong_value((vlong_value *)local_2c); // try { // try from 080ed2a9 to 080ed2ad has its CatchHandler @ 080ed300 vlong_value::divide(x->value,y->value,*(vlong_value **)(in_stack_0000000c + 4), (vlong_value *)local_2c); x->negative = *(uint *)(in_stack_0000000c + 8) ^ y->negative; while (rem.super_vlong_flex_unit.a != (uint *)0x0) { rem.super_vlong_flex_unit.a = (uint *)((int)rem.super_vlong_flex_unit.a + -1); *(undefined4 *)(rem.super_vlong_flex_unit.n + (int)rem.super_vlong_flex_unit.a * 4) = 0; } if (rem.super_vlong_flex_unit.n != 0) { operator_delete__((void *)rem.super_vlong_flex_unit.n); } return x; } vlong * operator%(vlong *x,vlong *y) { vlong_value *this; uint i; vlong *result; int in_stack_0000000c; undefined1 local_2c [4]; vlong_value divide; x->_vptr_vlong = (_func_int_varargs **)&PTR__vlong_08128410; this = (vlong_value *)operator_new(0x10); vlong_value::vlong_value(this); x->negative = 0; x->value = this; (this->super_vlong_flex_unit).n = 0; vlong_flex_unit::set((vlong_flex_unit *)this,0,0); vlong_value::vlong_value((vlong_value *)local_2c); // try { // try from 080ed3b9 to 080ed3bd has its CatchHandler @ 080ed400 vlong_value::divide((vlong_value *)local_2c,y->value,*(vlong_value **)(in_stack_0000000c + 4), x->value); x->negative = y->negative; while (divide.super_vlong_flex_unit.a != (uint *)0x0) { divide.super_vlong_flex_unit.a = (uint *)((int)divide.super_vlong_flex_unit.a + -1); *(undefined4 *)(divide.super_vlong_flex_unit.n + (int)divide.super_vlong_flex_unit.a * 4) = 0; } if (divide.super_vlong_flex_unit.n != 0) { operator_delete__((void *)divide.super_vlong_flex_unit.n); } return x; } vlong * vlong::modexp(vlong *__return_storage_ptr__) { undefined4 in_stack_00000008; vlong *in_stack_00000010; vlong_montgomery *__in_chrg; undefined1 local_5c [4]; vlong_montgomery me; vlong_montgomery::vlong_montgomery((vlong_montgomery *)local_5c,in_stack_00000010); __in_chrg = (vlong_montgomery *)local_5c; // try { // try from 080ed472 to 080ed476 has its CatchHandler @ 080ed4c4 vlong_montgomery::exp ((vlong_montgomery *)__return_storage_ptr__, (double)CONCAT44(in_stack_00000008,(vlong_montgomery *)local_5c)); ~vlong((vlong *)&me.T.negative,(int)__in_chrg); ~vlong((vlong *)&me.n1.negative,(int)__in_chrg); ~vlong((vlong *)&me.m.negative,(int)__in_chrg); ~vlong((vlong *)&me.R1.negative,(int)__in_chrg); ~vlong((vlong *)&me.R.negative,(int)__in_chrg); ~vlong((vlong *)local_5c,(int)__in_chrg); return __return_storage_ptr__; } vlong * __thiscall vlong::gcd(vlong *this,vlong *X,vlong *Y) { vlong_value *pvVar1; int iVar2; vlong *pvVar3; vlong local_4c; undefined1 local_3c [4]; vlong y; undefined1 local_2c [4]; vlong x; local_2c = (undefined1 [4])&PTR__vlong_08128410; x.value = (vlong_value *)X->negative; x._vptr_vlong = (_func_int_varargs **)X->value; ((vlong_value *)x._vptr_vlong)->share = ((vlong_value *)x._vptr_vlong)->share + 1; local_3c = (undefined1 [4])&PTR__vlong_08128410; y.value = (vlong_value *)Y->negative; y._vptr_vlong = (_func_int_varargs **)Y->value; ((vlong_value *)y._vptr_vlong)->share = ((vlong_value *)y._vptr_vlong)->share + 1; do { local_4c._vptr_vlong = (_func_int_varargs **)&PTR__vlong_08128410; // try { // try from 080ed55f to 080ed65f has its CatchHandler @ 080ed6c8 pvVar1 = (vlong_value *)operator_new(0x10); vlong_value::vlong_value(pvVar1); local_4c.negative = 0; (pvVar1->super_vlong_flex_unit).n = 0; local_4c.value = pvVar1; vlong_flex_unit::set((vlong_flex_unit *)pvVar1,0,0); pvVar3 = &local_4c; iVar2 = cf((vlong *)local_3c,&local_4c); ~vlong(&local_4c,(int)pvVar3); if (iVar2 == 0) { this->_vptr_vlong = (_func_int_varargs **)&PTR__vlong_08128410; this->negative = (int)x.value; pvVar1 = (vlong_value *)x._vptr_vlong; LAB_080ed68e: this->value = pvVar1; pvVar1->share = pvVar1->share + 1; ~vlong((vlong *)local_3c,(int)pvVar3); ~vlong((vlong *)local_2c,(int)pvVar3); return this; } operator%(&local_4c,(vlong *)local_2c); pvVar3 = &local_4c; operator=((vlong *)local_2c,&local_4c); ~vlong(&local_4c,(int)pvVar3); local_4c._vptr_vlong = (_func_int_varargs **)&PTR__vlong_08128410; pvVar1 = (vlong_value *)operator_new(0x10); vlong_value::vlong_value(pvVar1); local_4c.negative = 0; (pvVar1->super_vlong_flex_unit).n = 0; local_4c.value = pvVar1; vlong_flex_unit::set((vlong_flex_unit *)pvVar1,0,0); pvVar3 = &local_4c; iVar2 = cf((vlong *)local_2c,&local_4c); ~vlong(&local_4c,(int)pvVar3); if (iVar2 == 0) { this->_vptr_vlong = (_func_int_varargs **)&PTR__vlong_08128410; this->negative = (int)y.value; pvVar1 = (vlong_value *)y._vptr_vlong; goto LAB_080ed68e; } operator%(&local_4c,(vlong *)local_3c); pvVar3 = &local_4c; operator=((vlong *)local_3c,&local_4c); ~vlong(&local_4c,(int)pvVar3); } while( true ); } vlong * __thiscall vlong::modinv(vlong *this,vlong *a,vlong *m) { vlong_value *pvVar1; int iVar2; vlong *i; vlong *pvVar3; undefined1 local_8c [4]; vlong result_1; undefined1 local_7c [4]; vlong result; undefined1 local_6c [4]; vlong y; undefined1 local_5c [4]; vlong x; undefined1 local_4c [4]; vlong c; undefined1 local_3c [4]; vlong b; undefined1 local_2c [4]; vlong j; local_2c = (undefined1 [4])&PTR__vlong_08128410; pvVar1 = (vlong_value *)operator_new(0x10); vlong_value::vlong_value(pvVar1); j.value = (vlong_value *)0x0; (pvVar1->super_vlong_flex_unit).n = 0; j._vptr_vlong = (_func_int_varargs **)pvVar1; vlong_flex_unit::set((vlong_flex_unit *)pvVar1,0,1); this->_vptr_vlong = (_func_int_varargs **)&PTR__vlong_08128410; // try { // try from 080ed754 to 080ed78a has its CatchHandler @ 080edb77 pvVar1 = (vlong_value *)operator_new(0x10); vlong_value::vlong_value(pvVar1); this->negative = 0; this->value = pvVar1; (pvVar1->super_vlong_flex_unit).n = 0; vlong_flex_unit::set((vlong_flex_unit *)pvVar1,0,0); local_3c = (undefined1 [4])&PTR__vlong_08128410; b.value = (vlong_value *)m->negative; b._vptr_vlong = (_func_int_varargs **)m->value; ((vlong_value *)b._vptr_vlong)->share = ((vlong_value *)b._vptr_vlong)->share + 1; local_4c = (undefined1 [4])&PTR__vlong_08128410; c.value = (vlong_value *)a->negative; c._vptr_vlong = (_func_int_varargs **)a->value; ((vlong_value *)c._vptr_vlong)->share = ((vlong_value *)c._vptr_vlong)->share + 1; local_5c = (undefined1 [4])&PTR__vlong_08128410; // try { // try from 080ed7c8 to 080ed7fe has its CatchHandler @ 080edb70 pvVar1 = (vlong_value *)operator_new(0x10); vlong_value::vlong_value(pvVar1); x.value = (vlong_value *)0x0; (pvVar1->super_vlong_flex_unit).n = 0; x._vptr_vlong = (_func_int_varargs **)pvVar1; vlong_flex_unit::set((vlong_flex_unit *)pvVar1,0,0); local_6c = (undefined1 [4])&PTR__vlong_08128410; // try { // try from 080ed80d to 080ed843 has its CatchHandler @ 080edb64 pvVar1 = (vlong_value *)operator_new(0x10); vlong_value::vlong_value(pvVar1); y.value = (vlong_value *)0x0; (pvVar1->super_vlong_flex_unit).n = 0; y._vptr_vlong = (_func_int_varargs **)pvVar1; vlong_flex_unit::set((vlong_flex_unit *)pvVar1,0,0); while( true ) { local_7c = (undefined1 [4])&PTR__vlong_08128410; // try { // try from 080ed855 to 080ed90c has its CatchHandler @ 080edb60 pvVar1 = (vlong_value *)operator_new(0x10); vlong_value::vlong_value(pvVar1); result.value = (vlong_value *)0x0; (pvVar1->super_vlong_flex_unit).n = 0; result._vptr_vlong = (_func_int_varargs **)pvVar1; vlong_flex_unit::set((vlong_flex_unit *)pvVar1,0,0); pvVar3 = (vlong *)local_7c; iVar2 = cf((vlong *)local_4c,pvVar3); ~vlong((vlong *)local_7c,(int)pvVar3); if (iVar2 == 0) break; operator/((vlong *)local_7c,(vlong *)local_3c); pvVar3 = (vlong *)local_7c; operator=((vlong *)local_5c,pvVar3); ~vlong((vlong *)local_7c,(int)pvVar3); operator*((vlong *)local_8c,(vlong *)local_5c); local_7c = (undefined1 [4])&PTR__vlong_08128410; result.value = b.value; result._vptr_vlong = b._vptr_vlong; b._vptr_vlong[3] = b._vptr_vlong[3] + 1; // try { // try from 080ed936 to 080ed93a has its CatchHandler @ 080edaf0 operator-=((vlong *)local_7c,(vlong *)local_8c); pvVar3 = (vlong *)local_7c; operator=((vlong *)local_6c,pvVar3); ~vlong((vlong *)local_7c,(int)pvVar3); ~vlong((vlong *)local_8c,(int)pvVar3); operator=((vlong *)local_3c,(vlong *)local_4c); operator=((vlong *)local_4c,(vlong *)local_6c); operator=((vlong *)local_6c,(vlong *)local_2c); // try { // try from 080ed9aa to 080ed9ae has its CatchHandler @ 080edb60 operator*((vlong *)local_7c,(vlong *)local_2c); local_8c = (undefined1 [4])&PTR__vlong_08128410; result_1.value = (vlong_value *)this->negative; result_1._vptr_vlong = (_func_int_varargs **)this->value; ((vlong_value *)result_1._vptr_vlong)->share = ((vlong_value *)result_1._vptr_vlong)->share + 1; // try { // try from 080ed9df to 080ed9e3 has its CatchHandler @ 080edb41 operator-=((vlong *)local_8c,(vlong *)local_7c); pvVar3 = (vlong *)local_8c; operator=((vlong *)local_2c,pvVar3); ~vlong((vlong *)local_8c,(int)pvVar3); ~vlong((vlong *)local_7c,(int)pvVar3); operator=(this,(vlong *)local_6c); } local_8c = (undefined1 [4])&PTR__vlong_08128410; // try { // try from 080eda35 to 080edae6 has its CatchHandler @ 080edb60 pvVar1 = (vlong_value *)operator_new(0x10); vlong_value::vlong_value(pvVar1); result_1.value = (vlong_value *)0x0; (pvVar1->super_vlong_flex_unit).n = 0; result_1._vptr_vlong = (_func_int_varargs **)pvVar1; vlong_flex_unit::set((vlong_flex_unit *)pvVar1,0,0); pvVar3 = (vlong *)local_8c; iVar2 = cf(this,pvVar3); ~vlong((vlong *)local_8c,(int)pvVar3); if (iVar2 < 0) { operator+=(this,m); pvVar3 = m; } ~vlong((vlong *)local_6c,(int)pvVar3); ~vlong((vlong *)local_5c,(int)pvVar3); ~vlong((vlong *)local_4c,(int)pvVar3); ~vlong((vlong *)local_3c,(int)pvVar3); ~vlong((vlong *)local_2c,(int)pvVar3); return this; } void vlong::convert(char *pDecimal,vlong *Number) { char cVar1; ushort uVar2; vlong_value *pvVar3; uint x; undefined4 *puVar4; vlong *pvVar5; undefined2 local_4e; undefined1 auStack_4c [2]; char Buffer [2]; vlong local_3c; undefined1 local_2c [4]; vlong result; if (pDecimal == (char *)0x0) { puVar4 = (undefined4 *)__cxa_allocate_exception(4); *puVar4 = "pDecimal pointer is NULL"; } else { local_2c = (undefined1 [4])&PTR__vlong_08128410; local_4e = 0x100; pvVar3 = (vlong_value *)operator_new(0x10); vlong_value::vlong_value(pvVar3); result.value = (vlong_value *)0x0; (pvVar3->super_vlong_flex_unit).n = 0; result._vptr_vlong = (_func_int_varargs **)pvVar3; vlong_flex_unit::set((vlong_flex_unit *)pvVar3,0,0); pvVar5 = (vlong *)local_2c; operator=(Number,(vlong *)local_2c); ~vlong((vlong *)local_2c,(int)pvVar5); cVar1 = *pDecimal; while( true ) { if (cVar1 == '\0') { return; } uVar2 = (ushort)local_4e >> 8; local_4e = CONCAT11((char)uVar2,cVar1); x = __strtol_internal(&local_4e,0,10,0); if (9 < x) break; _auStack_4c = &PTR__vlong_08128410; pvVar3 = (vlong_value *)operator_new(0x10); vlong_value::vlong_value(pvVar3); (pvVar3->super_vlong_flex_unit).n = 0; vlong_flex_unit::set((vlong_flex_unit *)pvVar3,0,10); pvVar5 = Number; // try { // try from 080edcae to 080edcb2 has its CatchHandler @ 080edda6 operator*(&local_3c,Number); ~vlong((vlong *)auStack_4c,(int)pvVar5); _auStack_4c = &PTR__vlong_08128410; // try { // try from 080edccf to 080edd04 has its CatchHandler @ 080edde3 pvVar3 = (vlong_value *)operator_new(0x10); vlong_value::vlong_value(pvVar3); (pvVar3->super_vlong_flex_unit).n = 0; vlong_flex_unit::set((vlong_flex_unit *)pvVar3,0,x); local_2c = (undefined1 [4])&PTR__vlong_08128410; pvVar5 = (vlong *)auStack_4c; result.value = (vlong_value *)local_3c.negative; result._vptr_vlong = (_func_int_varargs **)local_3c.value; (local_3c.value)->share = (local_3c.value)->share + 1; // try { // try from 080edd25 to 080edd29 has its CatchHandler @ 080eddad operator+=((vlong *)local_2c,pvVar5); pDecimal = pDecimal + 1; ~vlong((vlong *)auStack_4c,(int)pvVar5); pvVar5 = (vlong *)local_2c; operator=(Number,(vlong *)local_2c); ~vlong((vlong *)local_2c,(int)pvVar5); ~vlong(&local_3c,(int)pvVar5); cVar1 = *pDecimal; } puVar4 = (undefined4 *)__cxa_allocate_exception(4); *puVar4 = "digit out of range"; } // WARNING: Subroutine does not return __cxa_throw(puVar4,char_const*::typeinfo,0); } void vlong::convert(vlong *Number,char *pDecimal,ushort DecimalLength) { char cVar1; vlong_value *pvVar2; int iVar3; undefined4 *puVar4; vlong *pvVar5; uint local_48; int local_44; int i; undefined1 auStack_3c [2]; char Buffer [2]; vlong local_2c [2]; if (pDecimal == (char *)0x0) { puVar4 = (undefined4 *)__cxa_allocate_exception(4); *puVar4 = "pDecimal pointer is NULL"; } else { if (DecimalLength != 0) { memset(pDecimal,0,(uint)DecimalLength); local_2c[0]._vptr_vlong = (_func_int_varargs **)&PTR__vlong_08128410; pvVar2 = (vlong_value *)operator_new(0x10); vlong_value::vlong_value(pvVar2); local_2c[0].negative = 0; (pvVar2->super_vlong_flex_unit).n = 0; local_2c[0].value = pvVar2; vlong_flex_unit::set((vlong_flex_unit *)pvVar2,0,0); pvVar5 = local_2c; iVar3 = cf(Number,local_2c); ~vlong(local_2c,(int)pvVar5); if (iVar3 == 0) { *pDecimal = '0'; } else { local_44 = 0; i._2_2_ = 0x100; while( true ) { local_2c[0]._vptr_vlong = (_func_int_varargs **)&PTR__vlong_08128410; pvVar2 = (vlong_value *)operator_new(0x10); vlong_value::vlong_value(pvVar2); local_2c[0].negative = 0; (pvVar2->super_vlong_flex_unit).n = 0; local_2c[0].value = pvVar2; vlong_flex_unit::set((vlong_flex_unit *)pvVar2,0,0); pvVar5 = local_2c; iVar3 = cf(Number,local_2c); ~vlong(local_2c,(int)pvVar5); if (iVar3 < 1) break; if ((int)(uint)DecimalLength <= local_44) { puVar4 = (undefined4 *)__cxa_allocate_exception(4); *puVar4 = "large number does not fit in char array (DecimalLength too small)"; goto LAB_080ee083; } _auStack_3c = &PTR__vlong_08128410; pvVar2 = (vlong_value *)operator_new(0x10); vlong_value::vlong_value(pvVar2); (pvVar2->super_vlong_flex_unit).n = 0; vlong_flex_unit::set((vlong_flex_unit *)pvVar2,0,10); pvVar5 = Number; // try { // try from 080edf82 to 080edf86 has its CatchHandler @ 080ee0f0 operator%(local_2c,Number); ~vlong((vlong *)auStack_3c,(int)pvVar5); if (((local_2c[0].value)->super_vlong_flex_unit).n == 0) { local_48 = 0; } else { local_48 = *((local_2c[0].value)->super_vlong_flex_unit).a; } ~vlong(local_2c,(int)pvVar5); local_2c[0]._vptr_vlong = (_func_int_varargs **)&PTR__vlong_08128410; pvVar2 = (vlong_value *)operator_new(0x10); vlong_value::vlong_value(pvVar2); local_2c[0].negative = 0; (pvVar2->super_vlong_flex_unit).n = 0; local_2c[0].value = pvVar2; vlong_flex_unit::set((vlong_flex_unit *)pvVar2,0,10); pvVar5 = Number; // try { // try from 080ee007 to 080ee00b has its CatchHandler @ 080ee100 operator/((vlong *)auStack_3c,Number); ~vlong(local_2c,(int)pvVar5); pvVar5 = (vlong *)auStack_3c; operator=(Number,pvVar5); ~vlong((vlong *)auStack_3c,(int)pvVar5); sprintf((char *)((int)&i + 2),"%d",local_48); pDecimal[local_44] = i._2_1_; local_44 = local_44 + 1; } local_44 = local_44 + -1; while (0 < local_44) { cVar1 = *pDecimal; *pDecimal = pDecimal[local_44]; pDecimal[local_44] = cVar1; } } return; } puVar4 = (undefined4 *)__cxa_allocate_exception(4); *puVar4 = "DecimalLength = 0"; } LAB_080ee083: // WARNING: Subroutine does not return __cxa_throw(puVar4,char_const*::typeinfo,0); } void vlong::convert(uchar *pData,ushort DataLength,vlong *Number) { undefined4 *puVar1; byte bVar2; int j; uint uVar3; int iVar4; int i; int iVar5; uint x; uint x_00; ushort DataLength_local; uVar3 = (uint)DataLength; if (pData == (uchar *)0x0) { puVar1 = (undefined4 *)__cxa_allocate_exception(4); *puVar1 = "pData pointer is NULL"; // WARNING: Subroutine does not return __cxa_throw(puVar1,char_const*::typeinfo,0); } iVar5 = 0; (Number->value->super_vlong_flex_unit).n = 0; if (uVar3 != 0) { do { x_00 = 0; iVar4 = 0; bVar2 = 0x18; do { if (iVar4 + iVar5 < (int)uVar3) { x_00 = x_00 + ((uint)pData[iVar4 + iVar5] << (bVar2 & 0x1f)); } iVar4 = iVar4 + 1; bVar2 = bVar2 - 8; } while (iVar4 < 4); iVar4 = iVar5 + 4; vlong_flex_unit::set (&Number->value->super_vlong_flex_unit,((uVar3 + 3) / 4 - iVar5 / 4) - 1,x_00) ; iVar5 = iVar4; } while (iVar4 < (int)uVar3); } return; } void vlong::convert(vlong *Number,uchar *pData,ushort DataLength) { undefined4 *puVar1; byte bVar2; uint __n; uint uVar3; int j; int iVar4; int i; int iVar5; ushort DataLength_local; uint local_1c; __n = (uint)DataLength; if (pData != (uchar *)0x0) { memset(pData,0,__n); if (__n != 0) { iVar5 = 0; do { uVar3 = ((__n + 3) / 4 - iVar5 / 4) - 1; if (uVar3 < (Number->value->super_vlong_flex_unit).n) { local_1c = (Number->value->super_vlong_flex_unit).a[uVar3]; } else { local_1c = 0; } iVar4 = 0; bVar2 = 0x18; do { if (iVar4 + iVar5 < (int)__n) { pData[iVar4 + iVar5] = (uchar)(local_1c >> (bVar2 & 0x1f)); } iVar4 = iVar4 + 1; bVar2 = bVar2 - 8; } while (iVar4 < 4); iVar5 = iVar5 + 4; } while (iVar5 < (int)__n); } return; } puVar1 = (undefined4 *)__cxa_allocate_exception(4); *puVar1 = "pData pointer is NULL"; // WARNING: Subroutine does not return __cxa_throw(puVar1,char_const*::typeinfo,0); } // WARNING: Removing unreachable block (ram,0x080ee309) // WARNING: Removing unreachable block (ram,0x080ee30c) void __libc_csu_init(void) { _init(); return; } // WARNING: Removing unreachable block (ram,0x080ee340) // WARNING: Removing unreachable block (ram,0x080ee34e) void __libc_csu_fini(void) { _fini(); return; } int atexit(__func *__func) { int iVar1; iVar1 = __cxa_atexit(__func,0,__dso_handle); return iVar1; } undefined4 __do_global_ctors_aux(void) { code *pcVar1; undefined4 in_EDX; undefined **ppuVar2; ppuVar2 = &PTR__GLOBAL__I__ZN14TRSAPrivateKeyC2Ev_0812856c; pcVar1 = (code *)PTR__GLOBAL__I__ZN14TRSAPrivateKeyC2Ev_0812856c; if (PTR__GLOBAL__I__ZN14TRSAPrivateKeyC2Ev_0812856c != (undefined *)0xffffffff) { do { ppuVar2 = ppuVar2 + -1; (*pcVar1)(); pcVar1 = (code *)*ppuVar2; } while (pcVar1 != (code *)0xffffffff); } return in_EDX; } void _fini(void) { __do_global_dtors_aux(); return; }