Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* This file has been generated by the Hex-Rays decompiler.
- Copyright (c) 2007-2016 Hex-Rays <info@hex-rays.com>
- Detected compiler: Visual C++
- */
- #include <windows.h>
- #include <math.h>
- #include <defs.h>
- //-------------------------------------------------------------------------
- // Function declarations
- #define __thiscall __cdecl // Test compile in C mode
- int sub_10001000();
- signed __int16 __stdcall NP_GetEntryPoints(int a1);
- __int16 __stdcall NP_Initialize(int a1);
- __int16 NP_Shutdown();
- int __cdecl sub_10001479(int a1);
- int __cdecl sub_10001498(int a1);
- int sub_100014D6();
- BOOL __stdcall DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved);
- __int16 sub_1000152F();
- // int unknown_libname_1(void); weak
- signed __int16 __cdecl sub_10001552(int a1, int *a2, __int16 a3, __int16 a4, int a5, int a6, int a7);
- signed __int16 __cdecl sub_100017D0(int *a1, _DWORD *a2);
- signed __int16 __cdecl sub_100018EF(int *a1, _DWORD *a2);
- int __cdecl sub_10001C27(int a1, int a2);
- signed __int16 __cdecl sub_10001CB5(int *a1, int a2, int a3, int a4, _WORD *a5);
- int __cdecl sub_10001D01(int *a1);
- int __cdecl sub_10001D2B(int *a1, int a2, int a3, int a4);
- signed __int16 __cdecl sub_10001D59(int *a1);
- char *__cdecl sub_10001D9D(int a1, int a2, char *Source);
- void __cdecl sub_10001E74(int *a1, int a2);
- LRESULT __stdcall sub_10001FAF(HWND hWnd, int a2, int a3, LPARAM lParam);
- int __cdecl sub_10002026(int a1);
- // int unknown_libname_2(void); weak
- // int unknown_libname_3(); weak
- void *__cdecl sub_100020B0(size_t Size);
- int __cdecl sub_100020E8(int a1, int a2, DWORD nNumberOfBytesToRead);
- int __cdecl sub_1000210C(int a1, LPCVOID lpBuffer, DWORD nNumberOfBytesToWrite);
- int __cdecl sub_10002130(int a1, LONG lDistanceToMove, DWORD dwMoveMethod);
- int __cdecl sub_10002154(int a1);
- void __cdecl sub_10002170(int a1, int a2, int a3, int a4, int a5, int a6, int a7, int a8, int a9);
- void sub_10002439();
- void __cdecl sub_100024B8(int a1);
- int __cdecl sub_100029CC(unsigned __int8 a1, unsigned __int8 a2, unsigned __int8 a3);
- int sub_10002A07();
- int sub_10002CEE();
- int __cdecl sub_10002E35(int a1);
- int __cdecl sub_10002F85(int a1, float *a2);
- int __cdecl sub_100030DA(int a1, int a2);
- float *__cdecl sub_1000325B(float *a1, float *a2);
- float *__cdecl sub_10003399(int a1, int a2);
- void *__cdecl sub_10003490(int a1, int a2);
- __int16 __cdecl sub_100036F1(void *Dst, int a2, size_t Size);
- // int __cdecl sub_1000375D(_DWORD); weak
- // int __cdecl sub_10003768(_DWORD); weak
- int __cdecl sub_10003780(int, HWND hWnd, int, int, int, int, int, int, int, int); // idb
- void sub_10003824();
- LRESULT __stdcall sub_10003842(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam);
- void __cdecl __noreturn sub_10003C72(LPCSTR lpText);
- void __cdecl sub_10003CA1(void *lpvBits, __int16 a2, __int16 a3, __int16 a4, __int16 a5, __int16 a6, __int16 a7);
- int sub_10003D40();
- char __cdecl sub_10003E80(_DWORD *a1);
- int sub_10003EF0();
- void *sub_10003F10();
- _DWORD *__cdecl sub_10003F20(int a1, const void *a2, const void *a3, int a4);
- int __cdecl sub_10004180(int a1);
- int __cdecl sub_100042B0(int a1, int a2, int a3, int a4);
- int __cdecl sub_10004F50(int, int, int, int, int, int, float, float, char); // idb
- int __cdecl sub_100053E0(int, int, int, int, int, float, float, char); // idb
- int __cdecl sub_10005960(int a1, __int16 a2, float *a3, float *a4);
- float *__cdecl sub_10005C30(int a1, int a2, int a3, float a4, int a5);
- double __cdecl sub_10005C80(float *a1, float *a2, float *a3, float a4, int a5);
- unsigned int __cdecl sub_10005D20(const char *a1);
- void __cdecl sub_10005D50(float *a1, float *a2, float *a3, float *a4, float *a5, float *a6);
- double __cdecl sub_100061C0(float *a1);
- void *__cdecl sub_100063D0(int a1);
- int __cdecl sub_10006570(_DWORD *a1);
- int __cdecl sub_10006690(int, float, char); // idb
- signed __int16 __cdecl sub_10006810(int a1, int *a2);
- signed __int16 __cdecl sub_10006840(int a1, int a2, int a3);
- unsigned int __cdecl sub_10006880(const char *a1);
- int __cdecl sub_100068B0(int a1, int a2);
- signed __int16 __cdecl sub_100068E0(int a1, int a2, int a3);
- signed __int16 __cdecl sub_10006940(int a1, int *a2, int a3);
- signed __int16 __cdecl sub_10006AE0(int a1, int *a2, int a3);
- signed __int16 __cdecl sub_10006D60(int a1, int *a2, int a3);
- signed __int16 __cdecl sub_10006EE0(int a1, int *a2, int a3);
- signed __int16 __cdecl sub_10006FB0(int a1, int *a2, int a3, int a4);
- char __cdecl sub_10007150(int a1, unsigned __int8 *a2);
- int __cdecl sub_10007240(int a1, int a2);
- int __cdecl sub_100072A0(int a1, int a2, int a3);
- float *__cdecl sub_100072D0(float *a1, float *a2);
- int __cdecl sub_100074D0(int a1, int a2, int a3);
- float *__cdecl sub_10007560(float *a1, float *a2, float *a3);
- float *__cdecl sub_100075C0(float *a1, float *a2, float *a3);
- float *__cdecl sub_100075F0(float *a1, float *a2, float *a3);
- int __cdecl sub_10007620(int, float, int); // idb
- void __cdecl sub_10007670(float *a1, float *a2);
- float *__cdecl sub_10007700(float *a1, float *a2, float *a3);
- bool __cdecl sub_10007970(int a1, float a2, int a3);
- int __cdecl sub_10007A80(int a1, int a2, int a3, int a4, int *a5);
- int __cdecl sub_10007B39(int a1, int a2, int a3, int a4, unsigned int *a5);
- _WORD *__cdecl sub_10007C34(unsigned int a1, __int16 a2, unsigned int a3, _WORD *a4, int a5);
- // int __usercall sub_10007C9B@<eax>(int result@<eax>, int a2, char a3, int a4, int a5);
- unsigned int sub_10007CF1();
- unsigned int sub_10007D89();
- int __cdecl sub_10007E30(int a1, float *a2, _WORD *a3);
- int __cdecl sub_100082A0(int, int, int, float); // idb
- // int __usercall sub_10008940@<eax>(int a1@<ecx>, int a2@<esi>, int a3, float *a4, _WORD *a5);
- int __cdecl sub_10008DE0(int a1, float *a2, _WORD *a3);
- int __cdecl sub_10009250(int, int, int, float); // idb
- // int __usercall sub_100098E0@<eax>(int a1@<ecx>, int a2@<esi>, int a3, float *a4, _WORD *a5);
- int __cdecl sub_10009D80(int, int, float, float, int, int); // idb
- int __cdecl sub_10009F20(int, int, float, float, int, int); // idb
- int __cdecl sub_1000A0D0(int, int, float, float, int, int); // idb
- int __cdecl sub_1000A230(int, int, float, float, int, int); // idb
- int __cdecl sub_1000A3D0(int, int, float, float, int, int); // idb
- int __cdecl sub_1000A580(int, int, float, float, int, int); // idb
- _WORD *__cdecl sub_1000A6E0(int a1, int a2, float a3, float a4, int a5);
- _WORD *__cdecl sub_1000A880(int a1, int a2, float a3, float a4, int a5);
- int __cdecl sub_1000AA20(int, int, float, float, int); // idb
- int __cdecl sub_1000AE50(int, int, float, float); // idb
- int sub_1000B120();
- signed __int16 sub_1000B7A0();
- int __cdecl sub_1000B800(signed __int16 *a1, signed __int16 *a2);
- int __cdecl sub_1000BD10(int a1, int a2);
- int __cdecl sub_1000BE60(int a1, int a2);
- unsigned int __cdecl sub_1000BE70(int a1, int a2);
- int __cdecl sub_1000BF58(int a1, int a2, int a3, __int16 a4, unsigned int a5);
- unsigned int __cdecl sub_1000C05D(int a1, int a2);
- int __cdecl sub_1000C18E(int a1, int a2);
- _WORD *__cdecl sub_1000C27D(int a1, int a2, int a3, __int16 a4, unsigned int a5);
- int __cdecl sub_1000C38C(int a1, int a2);
- unsigned int __cdecl sub_1000C4F0(int a1, int a2);
- unsigned int __cdecl sub_1000C5D0(int a1, int a2, int a3, __int16 a4, unsigned int a5);
- unsigned int __cdecl sub_1000C6D0(int a1, int a2);
- int __cdecl sub_1000C7F9(int a1, int a2);
- _BYTE *__cdecl sub_1000C8DF(int a1, int a2, int a3, __int16 a4, unsigned int a5);
- int __cdecl sub_1000C9E5(int a1, int a2);
- unsigned int __cdecl sub_1000CB30(int a1, int a2);
- int __cdecl sub_1000CC1C(int a1, int a2, int a3, __int16 a4, unsigned int a5);
- unsigned int __cdecl sub_1000CD2D(int a1, int a2);
- int __cdecl sub_1000CE65(int a1, int a2);
- _WORD *__cdecl sub_1000CF54(int a1, int a2, int a3, __int16 a4, unsigned int a5);
- int __cdecl sub_1000D063(int a1, int a2);
- unsigned int __cdecl sub_1000D1C0(int a1, int a2);
- int __cdecl sub_1000D2A4(int a1, int a2, int a3, __int16 a4, unsigned int a5);
- unsigned int __cdecl sub_1000D3B0(int a1, int a2);
- int __cdecl sub_1000D4DD(int a1, int a2);
- _BYTE *__cdecl sub_1000D5C3(int a1, int a2, int a3, __int16 a4, unsigned int a5);
- int __cdecl sub_1000D6C9(int a1, int a2);
- // int __cdecl atoi(const char *Str);
- // char *__cdecl strcpy(char *Dest, const char *Source);
- // size_t __cdecl strlen(const char *Str);
- // void *__cdecl malloc(size_t Size);
- // void __cdecl free(void *Memory);
- // void *__cdecl memset(void *Dst, int Val, size_t Size);
- // int __cdecl fabs(double); idb
- double __cdecl sub_10010090(_DWORD, _DWORD); // weak
- double __cdecl sub_1001009A(_DWORD, _DWORD); // weak
- // void __cdecl __noreturn exit(int Code);
- // int __thiscall unknown_libname_6(_DWORD, _DWORD); weak
- // double __stdcall unknown_libname_9(_DWORD); weak
- // double __stdcall unknown_libname_12(_DWORD); weak
- // double __stdcall unknown_libname_13(_DWORD); weak
- // double __usercall unknown_libname_25@<st0>(double@<st0>); weak
- // int __cdecl _ctrandisp1(double); idb
- int __cdecl sub_100170F0(int a1);
- // double __usercall sub_10017410@<st0>(long double a1@<st1>, long double a2@<st0>);
- int sub_1001744C(void); // weak
- // double _rtpiby2(void); weak
- int sub_100174A8();
- // _DWORD __cdecl _ld12cvt(_DWORD, _DWORD, _DWORD); weak
- int __cdecl sub_1001A9D0(int a1, int a2);
- int __cdecl sub_1001AA00(int a1, int a2);
- int __cdecl sub_1001AB00(int a1, int a2);
- int __cdecl sub_1001AB80(int a1, int a2);
- // int chsifnegret(void); weak
- // int __cdecl _write(int, LPCVOID lpBuffer, DWORD nNumberOfBytesToWrite); idb
- // int __cdecl _lseek(int, LONG lDistanceToMove, DWORD dwMoveMethod); idb
- // _DWORD __cdecl __strgtold12(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD); weak
- // _DWORD __cdecl _close(_DWORD); weak
- // int __cdecl _strcmpi(const char *Str1, const char *Str2);
- // int __cdecl _read(int, int, DWORD nNumberOfBytesToRead); idb
- // _DWORD __cdecl _tell(_DWORD); weak
- // _DWORD __cdecl _open(LPCSTR lpFileName, _DWORD);
- // HPALETTE __stdcall SelectPalette(HDC hdc, HPALETTE hPal, BOOL bForceBkgd);
- // int __stdcall SetDIBitsToDevice(HDC hdc, int xDest, int yDest, DWORD w, DWORD h, int xSrc, int ySrc, UINT StartScan, UINT cLines, const void *lpvBits, const BITMAPINFO *lpbmi, UINT ColorUse);
- // HPALETTE __stdcall CreatePalette(const LOGPALETTE *plpal);
- // BOOL __stdcall DeleteObject(HGDIOBJ ho);
- // UINT __stdcall RealizePalette(HDC hdc);
- // HPEN __stdcall ExtCreatePen(DWORD iPenStyle, DWORD cWidth, const LOGBRUSH *plbrush, DWORD cStyle, const DWORD *pstyle);
- // BOOL __stdcall Rectangle(HDC hdc, int left, int top, int right, int bottom);
- // HGDIOBJ __stdcall SelectObject(HDC hdc, HGDIOBJ h);
- // BOOL __stdcall SetWindowPos(HWND hWnd, HWND hWndInsertAfter, int X, int Y, int cx, int cy, UINT uFlags);
- // BOOL __stdcall InvalidateRect(HWND hWnd, const RECT *lpRect, BOOL bErase);
- // LONG __stdcall SetWindowLongA(HWND hWnd, int nIndex, LONG dwNewLong);
- // UINT_PTR __stdcall SetTimer(HWND hWnd, UINT_PTR nIDEvent, UINT uElapse, TIMERPROC lpTimerFunc);
- // LRESULT __stdcall CallWindowProcA(WNDPROC lpPrevWndFunc, HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam);
- // HWND __stdcall SetFocus(HWND hWnd);
- // void __stdcall PostQuitMessage(int nExitCode);
- // BOOL __stdcall KillTimer(HWND hWnd, UINT_PTR uIDEvent);
- // LRESULT __stdcall DefWindowProcA(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam);
- // int __stdcall MessageBoxA(HWND hWnd, LPCSTR lpText, LPCSTR lpCaption, UINT uType);
- // int __stdcall ReleaseDC(HWND hWnd, HDC hDC);
- // HDC __stdcall GetDC(HWND hWnd);
- // HDC __stdcall BeginPaint(HWND hWnd, LPPAINTSTRUCT lpPaint);
- // BOOL __stdcall EndPaint(HWND hWnd, const PAINTSTRUCT *lpPaint);
- //-------------------------------------------------------------------------
- // Data declarations
- _UNKNOWN loc_10010095; // weak
- int dword_1002A030 = 0; // weak
- int dword_1002A038 = 0; // weak
- int dword_1002A03C = 4294967295; // idb
- int dword_1002A040 = 4294967295; // idb
- int dword_1002A044 = 4294967295; // idb
- int dword_1002A048 = 4294967295; // idb
- int dword_1002A04C = 4294967295; // idb
- int dword_1002A050 = 4294967295; // idb
- int dword_1002A054 = 0; // weak
- int dword_1002A058 = 268435455; // weak
- char aWidth[] = "width"; // idb
- char aHeight[] = "height"; // idb
- char aBkgr_r[] = "bkgr_r"; // idb
- char aBkgr_g[] = "bkgr_g"; // idb
- char aBkgr_b[] = "bkgr_b"; // idb
- char aShdw_r[] = "shdw_r"; // idb
- char aShdw_g[] = "shdw_g"; // idb
- char aShdw_b[] = "shdw_b"; // idb
- __int16 dword_1002A0A0 = 640; // idb
- __int16 dword_1002A0A4 = 480; // idb
- int dword_1002A0A8 = 40; // weak
- int dword_1002A0AC = 164; // weak
- int dword_1002A0B0 = 200; // weak
- int dword_1002A0B4 = 12; // weak
- int dword_1002A0B8 = 124; // weak
- int dword_1002A0BC = 164; // weak
- int (__cdecl *off_1002A0C0)(size_t Size) = &sub_100020B0; // weak
- int dword_1002A0D8 = 0; // weak
- int dword_1002A0DC = 0; // weak
- int dword_1002A0E0 = 0; // weak
- char byte_1002A0E4 = '\0'; // weak
- int word_1002A0E8 = 0; // idb
- int word_1002A0EC = 0; // idb
- __int16 word_1002A0F0 = 0; // weak
- float flt_1002A0F4 = 0.098171875; // weak
- float flt_1002A0F8 = 0.0; // weak
- float flt_1002A0FC = 0.0; // weak
- float flt_1002A100 = 0.098171875; // weak
- float flt_1002A104 = 0.0; // weak
- float flt_1002A108 = 0.0; // weak
- float flt_1002A10C = 0.098171875; // weak
- float flt_1002A110 = 0.098171875; // weak
- CHAR Text[] = "Can not get scn handler"; // idb
- HPALETTE ho = NULL; // idb
- CHAR aFileOpenError[] = "File open error"; // idb
- CHAR Caption[] = "ERROR"; // idb
- int dword_1002A160 = 0; // weak
- _UNKNOWN unk_1002A168; // weak
- float flt_1002A170 = 0.1; // weak
- float flt_1002A17C = 0.1; // weak
- char *off_1002A18C = "Unsupported pixel size"; // weak
- char aSetupIsEmpty[15] = "Setup is empty"; // weak
- char aNoSetupParamet[19] = "No setup parameter"; // weak
- char aNoRoomForColor[24] = "No room for color table"; // weak
- char aNoRoomForHandl[20] = "No room for handler"; // weak
- char aNoRoomForInter[28] = "No room for internal buffer"; // weak
- char aNoColortabPara[22] = "No ColorTab parameter"; // weak
- char *off_1002A26C[4] = { "Bad file format", "Reading file", "No room", "Invalid color buffer depth" }; // weak
- char *off_1002A270[3] = { "Reading file", "No room", "Invalid color buffer depth" }; // weak
- char *off_1002A274[2] = { "No room", "Invalid color buffer depth" }; // weak
- char aNumberOfObject[27] = "Number of objects mismatch"; // weak
- int dword_1002A298 = 0; // weak
- _DWORD dword_1002A29C = 0; // idb
- int dword_1002A2A0 = 0; // weak
- int dword_1002A2A4 = 0; // weak
- int dword_1002A2A8 = 0; // weak
- int dword_1002A2AC = 0; // weak
- int dword_1002A2B0 = 0; // weak
- int dword_1002A2B4 = 0; // weak
- char byte_1002A2B8 = '\0'; // weak
- char byte_1002A2BC = '\0'; // weak
- char byte_1002A2C0 = '\0'; // weak
- char byte_1002A2D0[12] =
- {
- '\0',
- '\x02',
- '\x06',
- '\x02',
- '\0',
- '\b',
- '\b',
- '\x02',
- '\x06',
- '\x06',
- '\0',
- '\b'
- }; // idb
- _UNKNOWN unk_1002A2DC; // weak
- void *off_10036BE0 = &unk_1002A2E0; // weak
- int dword_10036C7C = 0; // weak
- int dword_10036CEC = 0; // weak
- _UNKNOWN unk_10038318; // weak
- _UNKNOWN unk_10038330; // weak
- int dword_100393D8 = 0; // weak
- int dword_100393DC = 0; // idb
- int dword_100393E0 = 0; // weak
- int dword_100393E4 = 0; // idb
- __int16 word_100393E8 = 0; // weak
- int dword_100393EC = 0; // weak
- int dword_100393F0 = 0; // weak
- float flt_100393F4 = 0.0; // weak
- int dword_100393F8 = 0; // weak
- float flt_100393FC = 0.0; // weak
- __int16 word_10039400; // idb
- float flt_10039408; // weak
- float flt_1003940C; // weak
- float flt_10039410; // weak
- int dword_10039414; // weak
- int dword_10039418; // weak
- int dword_1003941C; // weak
- int dword_10039420; // weak
- int dword_10039424; // weak
- int dword_10039428; // weak
- int dword_1003942C; // weak
- int dword_10039430; // weak
- int dword_10039434; // weak
- float flt_10039438; // weak
- float flt_1003943C; // weak
- float flt_10039440; // weak
- float flt_10039444; // weak
- __int16 word_10039448; // weak
- __int16 word_1003944A; // weak
- __int16 word_1003944C; // weak
- __int16 word_1003944E; // weak
- __int16 word_10039450; // weak
- __int16 word_10039452; // weak
- __int16 word_10039454; // weak
- __int16 word_10039456; // weak
- _UNKNOWN dword_10039458; // weak
- __int16 word_1003945C; // idb
- __int16 word_10039460; // idb
- int dword_10039468; // weak
- int dword_1003946C; // weak
- int dword_10039470; // weak
- int dword_10039474; // weak
- float flt_10039478; // weak
- float flt_1003947C; // weak
- float flt_10039480; // weak
- int dword_100394A8; // weak
- int dword_100394AC; // weak
- int dword_100394B0; // weak
- int dword_100394B4; // weak
- char byte_100394B8; // weak
- char byte_100394B9; // weak
- int dword_100394BA; // weak
- int dword_100394BE; // weak
- int dword_100394C2; // weak
- int dword_100394C6; // weak
- __int16 word_100394CA; // weak
- __int16 word_100394CC; // weak
- __int16 word_100394CE; // weak
- int dword_100394D0; // weak
- int (__cdecl *dword_100394D4)(_DWORD, _DWORD); // weak
- void *lpvBits; // idb
- void *Dst; // idb
- __int16 word_100394E0; // idb
- __int16 word_100394E2; // idb
- char byte_100394E4; // weak
- float flt_100394E8; // weak
- __int16 word_100394EC; // weak
- __int16 word_100394F0; // idb
- HDC Paint; // idb
- BITMAPINFO bmi; // idb
- int dword_10039768; // weak
- __int16 word_10039770; // weak
- __int16 word_10039772; // weak
- __int16 word_10039774; // weak
- __int16 word_10039776; // weak
- __int16 word_10039778; // weak
- __int16 word_1003977A; // weak
- __int16 word_1003977C; // weak
- __int16 word_1003977E; // weak
- __int16 word_10039780; // weak
- float flt_10039782; // weak
- float flt_10039786; // weak
- float flt_1003978A; // weak
- float flt_1003978E; // weak
- float flt_10039792; // weak
- float flt_10039796; // weak
- LOGPALETTE plpal; // idb
- HWND hWnd; // idb
- int dword_10039DEC; // weak
- int dword_10039DF0; // weak
- int dword_10039DF4; // weak
- _UNKNOWN unk_10039E00; // weak
- int dword_10039F00; // weak
- int dword_10039F04; // weak
- int dword_10039F10[]; // weak
- int dword_10039F14; // weak
- __int16 word_10039F18; // weak
- __int16 word_10039F1A; // weak
- int dword_10039F1C; // weak
- __int16 word_10039F20; // weak
- __int16 word_10039F22; // weak
- int dword_10039F24; // weak
- __int16 word_10039F28; // weak
- __int16 word_10039F2A; // weak
- int dword_10039F2C; // weak
- __int16 word_10039F30; // weak
- __int16 word_10039F32; // weak
- int dword_10039F34; // weak
- __int16 word_10039F38; // weak
- __int16 word_10039F3A; // weak
- int dword_10039F3C; // weak
- __int16 word_10039F40; // weak
- __int16 word_10039F42; // weak
- int dword_10039F44; // weak
- __int16 word_10039F48; // weak
- __int16 word_10039F4A; // weak
- int dword_10039F4C; // weak
- __int16 word_10039F50; // weak
- __int16 word_10039F52; // weak
- int dword_10039F54; // weak
- __int16 word_10039F58; // weak
- __int16 word_10039F5A; // weak
- int dword_10039F5C; // weak
- __int16 word_10039F60; // weak
- __int16 word_10039F62; // weak
- int dword_10039F64; // weak
- __int16 word_10039F68; // weak
- __int16 word_10039F6A; // weak
- int dword_10039F6C; // weak
- __int16 word_10039F70; // weak
- __int16 word_10039F72; // weak
- int dword_10039F74; // weak
- __int16 word_10039F78; // weak
- __int16 word_10039F7A; // weak
- int dword_10039F7C; // weak
- __int16 word_10039F80; // weak
- __int16 word_10039F82; // weak
- int dword_10039F84; // weak
- __int16 word_10039F88; // weak
- __int16 word_10039F8A; // weak
- int dword_10039F8C; // weak
- __int16 word_10039F90; // weak
- __int16 word_10039F92; // weak
- int dword_10039F94; // weak
- __int16 word_10039F98; // weak
- __int16 word_10039F9A; // weak
- int dword_10039F9C; // weak
- __int16 word_10039FA0; // weak
- __int16 word_10039FA2; // weak
- int dword_10039FA4; // weak
- __int16 word_10039FA8; // weak
- __int16 word_10039FAA; // weak
- int dword_10039FAC; // weak
- __int16 word_10039FB0; // weak
- __int16 word_10039FB2; // weak
- int dword_10039FB4; // weak
- __int16 word_10039FB8; // weak
- __int16 word_10039FBA; // weak
- int dword_10039FBC; // weak
- __int16 word_10039FC0; // weak
- __int16 word_10039FC2; // weak
- int dword_10039FC4; // weak
- __int16 word_10039FC8; // weak
- __int16 word_10039FCA; // weak
- int dword_10039FCC; // weak
- __int16 word_10039FD0; // weak
- __int16 word_10039FD2; // weak
- int dword_10039FD4; // weak
- __int16 word_10039FD8; // weak
- __int16 word_10039FDA; // weak
- int dword_10039FDC; // weak
- int dword_10039FE0; // weak
- int (__cdecl *dword_10039FF0)(_DWORD); // weak
- int (__cdecl *dword_10039FF4)(_DWORD); // weak
- int (__cdecl *dword_10039FF8)(_DWORD, _DWORD, _DWORD); // weak
- //----- (10001000) --------------------------------------------------------
- int sub_10001000()
- {
- int v0; // ST18_4@2
- int v2; // [esp+10h] [ebp-4h]@1
- v2 = unknown_libname_2();
- if ( !v2 )
- return 0;
- v0 = sub_100014D6();
- return (*(int (__cdecl **)(int, signed int, int))(*(_DWORD *)v0 + 40))(v0, 10, v2);
- }
- // 1000208C: using guessed type int unknown_libname_2(void);
- //----- (10001049) --------------------------------------------------------
- signed __int16 __stdcall NP_GetEntryPoints(int a1)
- {
- if ( !a1 )
- return 3;
- *(_WORD *)(a1 + 2) = 9;
- *(_DWORD *)(a1 + 4) = sub_10001552;
- *(_DWORD *)(a1 + 8) = sub_100017D0;
- *(_DWORD *)(a1 + 12) = sub_100018EF;
- *(_DWORD *)(a1 + 16) = sub_10001CB5;
- *(_DWORD *)(a1 + 20) = sub_10001D59;
- *(_DWORD *)(a1 + 24) = sub_10001D9D;
- *(_DWORD *)(a1 + 28) = sub_10001D01;
- *(_DWORD *)(a1 + 32) = sub_10001D2B;
- *(_DWORD *)(a1 + 36) = sub_10001E74;
- *(_DWORD *)(a1 + 40) = 0;
- dword_100393D8 = a1;
- return 0;
- }
- // 100393D8: using guessed type int dword_100393D8;
- //----- (100010E6) --------------------------------------------------------
- __int16 __stdcall NP_Initialize(int a1)
- {
- __int16 v2; // cx@5
- if ( !a1 )
- return 3;
- dword_1002A030 = a1;
- if ( (signed int)*(unsigned __int8 *)(a1 + 3) > 0 )
- return 8;
- v2 = *(_WORD *)(dword_1002A030 + 2);
- if ( (signed int)(unsigned __int8)v2 >= 9 )
- *(_DWORD *)(dword_100393D8 + 44) = unknown_libname_3;
- if ( (signed int)(unsigned __int8)v2 >= 9 )
- *(_DWORD *)(dword_100393D8 + 48) = sub_10001000();
- return sub_1000152F();
- }
- // 1000209E: using guessed type int unknown_libname_3();
- // 1002A030: using guessed type int dword_1002A030;
- // 100393D8: using guessed type int dword_100393D8;
- //----- (10001176) --------------------------------------------------------
- __int16 NP_Shutdown()
- {
- unknown_libname_1();
- dword_1002A030 = 0;
- return 0;
- }
- // 10001542: using guessed type int unknown_libname_1(void);
- // 1002A030: using guessed type int dword_1002A030;
- //----- (10001479) --------------------------------------------------------
- int __cdecl sub_10001479(int a1)
- {
- return (*(int (__cdecl **)(int))(dword_1002A030 + 36))(a1);
- }
- // 1002A030: using guessed type int dword_1002A030;
- //----- (10001498) --------------------------------------------------------
- int __cdecl sub_10001498(int a1)
- {
- return (*(int (__cdecl **)(int))(dword_1002A030 + 40))(a1);
- }
- // 1002A030: using guessed type int dword_1002A030;
- //----- (100014D6) --------------------------------------------------------
- int sub_100014D6()
- {
- return (*(int (**)(void))(dword_1002A030 + 52))();
- }
- // 1002A030: using guessed type int dword_1002A030;
- //----- (10001510) --------------------------------------------------------
- BOOL __stdcall DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
- {
- dword_100393E0 = (int)hinstDLL;
- return 1;
- }
- // 100393E0: using guessed type int dword_100393E0;
- //----- (1000152F) --------------------------------------------------------
- __int16 sub_1000152F()
- {
- return 0;
- }
- //----- (10001552) --------------------------------------------------------
- signed __int16 __cdecl sub_10001552(int a1, int *a2, __int16 a3, __int16 a4, int a5, int a6, int a7)
- {
- __int16 v8; // [esp+Ch] [ebp-Ch]@1
- int v9; // [esp+10h] [ebp-8h]@3
- signed int i; // [esp+14h] [ebp-4h]@5
- v8 = 0;
- if ( !a2 )
- return 2;
- *a2 = sub_10001479(24);
- v9 = *a2;
- if ( !*a2 )
- return 5;
- for ( i = 0; a4 > i; ++i )
- {
- if ( !_strcmpi(*(const char **)(a5 + 4 * i), aWidth) )
- dword_100393E4 = atoi(*(const char **)(a6 + 4 * i));
- if ( !_strcmpi(*(const char **)(a5 + 4 * i), aHeight) )
- dword_100393DC = atoi(*(const char **)(a6 + 4 * i));
- if ( !_strcmpi(*(const char **)(a5 + 4 * i), aBkgr_r) )
- dword_1002A03C = atoi(*(const char **)(a6 + 4 * i));
- if ( !_strcmpi(*(const char **)(a5 + 4 * i), aBkgr_g) )
- dword_1002A040 = atoi(*(const char **)(a6 + 4 * i));
- if ( !_strcmpi(*(const char **)(a5 + 4 * i), aBkgr_b) )
- dword_1002A044 = atoi(*(const char **)(a6 + 4 * i));
- if ( !_strcmpi(*(const char **)(a5 + 4 * i), aShdw_r) )
- dword_1002A048 = atoi(*(const char **)(a6 + 4 * i));
- if ( !_strcmpi(*(const char **)(a5 + 4 * i), aShdw_g) )
- dword_1002A04C = atoi(*(const char **)(a6 + 4 * i));
- if ( !_strcmpi(*(const char **)(a5 + 4 * i), aShdw_b) )
- dword_1002A050 = atoi(*(const char **)(a6 + 4 * i));
- }
- *(_DWORD *)v9 = 0;
- *(_DWORD *)(v9 + 4) = 0;
- *(_WORD *)(v9 + 8) = a3;
- *(_DWORD *)(v9 + 12) = 0;
- *(_DWORD *)(v9 + 16) = a7;
- *(_DWORD *)(v9 + 20) = 0;
- return v8;
- }
- //----- (100017D0) --------------------------------------------------------
- signed __int16 __cdecl sub_100017D0(int *a1, _DWORD *a2)
- {
- int i; // [esp+Ch] [ebp-Ch]@11
- __int16 v4; // [esp+10h] [ebp-8h]@1
- int v5; // [esp+14h] [ebp-4h]@3
- v4 = 0;
- if ( !a1 )
- return 2;
- v5 = *a1;
- if ( *a1 )
- {
- if ( *(_DWORD *)(v5 + 4) )
- {
- if ( *(_DWORD *)(v5 + 12) )
- {
- SetWindowLongA(*(HWND *)(v5 + 4), -4, *(_DWORD *)(v5 + 12));
- *(_DWORD *)(v5 + 12) = 0;
- }
- sub_10003824();
- }
- if ( dword_1002A054 )
- {
- if ( v5 == dword_1002A054 )
- {
- dword_1002A054 = *(_DWORD *)(v5 + 20);
- }
- else
- {
- for ( i = dword_1002A054; i; i = *(_DWORD *)(i + 20) )
- {
- if ( *(_DWORD *)(i + 20) == v5 )
- {
- *(_DWORD *)(i + 20) = *(_DWORD *)(v5 + 20);
- break;
- }
- }
- }
- }
- sub_10001498(*a1);
- *a1 = 0;
- *a2 = *(_DWORD *)(v5 + 16);
- }
- return v4;
- }
- // 1002A054: using guessed type int dword_1002A054;
- //----- (100018EF) --------------------------------------------------------
- signed __int16 __cdecl sub_100018EF(int *a1, _DWORD *a2)
- {
- __int16 v3; // [esp+10h] [ebp-Ch]@1
- int v4; // [esp+14h] [ebp-8h]@3
- BOOL v5; // [esp+18h] [ebp-4h]@16
- v3 = 0;
- if ( !a1 )
- return 2;
- v4 = *a1;
- if ( a2 )
- {
- if ( *a2 )
- {
- if ( *(_DWORD *)(v4 + 4) )
- {
- if ( *(_DWORD *)(v4 + 4) == *a2 )
- {
- if ( *(_DWORD *)(*(_DWORD *)v4 + 12) == a2[3] && *(_DWORD *)(*(_DWORD *)v4 + 16) == a2[4] )
- *(_DWORD *)v4 = a2;
- else
- *(_DWORD *)v4 = a2;
- v5 = *(_DWORD *)(*(_DWORD *)v4 + 4) != a2[1]
- || *(_DWORD *)(*(_DWORD *)v4 + 8) != a2[2]
- || *(_DWORD *)(*(_DWORD *)v4 + 12) != a2[3]
- || *(_DWORD *)(*(_DWORD *)v4 + 16) != a2[4];
- }
- else
- {
- if ( *(_DWORD *)(v4 + 12) )
- {
- SetWindowLongA(*(HWND *)(v4 + 4), -4, *(_DWORD *)(v4 + 12));
- *(_DWORD *)(v4 + 12) = 0;
- }
- *(_DWORD *)v4 = a2;
- *(_DWORD *)(v4 + 4) = **(_DWORD **)v4;
- *(_DWORD *)(v4 + 12) = SetWindowLongA(*(HWND *)(v4 + 4), -4, (LONG)sub_10001FAF);
- sub_10001C27(*(_DWORD *)(v4 + 4), v4);
- v5 = 1;
- }
- }
- else
- {
- *(_DWORD *)v4 = a2;
- *(_DWORD *)(v4 + 4) = **(_DWORD **)v4;
- sub_10001C27(*(_DWORD *)(v4 + 4), v4);
- *(_DWORD *)(v4 + 12) = SetWindowLongA(*(HWND *)(v4 + 4), -4, (LONG)sub_10001FAF);
- v5 = 1;
- }
- if ( *(_DWORD *)(v4 + 4) )
- {
- if ( v5 )
- SetWindowPos(
- *(HWND *)(v4 + 4),
- 0,
- *(_DWORD *)(*(_DWORD *)v4 + 4),
- *(_DWORD *)(*(_DWORD *)v4 + 8),
- *(_DWORD *)(*(_DWORD *)v4 + 12),
- *(_DWORD *)(*(_DWORD *)v4 + 16),
- 0x14u);
- InvalidateRect(*(HWND *)(v4 + 4), 0, 0);
- }
- }
- else if ( *(_DWORD *)(v4 + 4) )
- {
- if ( *(_DWORD *)(v4 + 12) )
- {
- SetWindowLongA(*(HWND *)(v4 + 4), -4, *(_DWORD *)(v4 + 12));
- *(_DWORD *)(v4 + 12) = 0;
- }
- *(_DWORD *)(v4 + 4) = 0;
- v3 = 0;
- }
- else
- {
- v3 = 0;
- }
- }
- else if ( *(_DWORD *)(v4 + 4) )
- {
- if ( *(_DWORD *)(v4 + 12) )
- {
- SetWindowLongA(*(HWND *)(v4 + 4), -4, *(_DWORD *)(v4 + 12));
- *(_DWORD *)(v4 + 12) = 0;
- }
- *(_DWORD *)(v4 + 4) = 0;
- v3 = 0;
- }
- else
- {
- v3 = 0;
- }
- return v3;
- }
- //----- (10001C27) --------------------------------------------------------
- int __cdecl sub_10001C27(int a1, int a2)
- {
- int result; // eax@2
- int i; // [esp+Ch] [ebp-4h]@3
- *(_DWORD *)(a2 + 4) = a1;
- if ( dword_1002A054 )
- {
- result = dword_1002A054;
- if ( a2 != dword_1002A054 )
- {
- for ( i = dword_1002A054; *(_DWORD *)(i + 20); i = *(_DWORD *)(i + 20) )
- {
- result = i;
- if ( *(_DWORD *)(i + 20) == a2 )
- return result;
- }
- result = a2;
- *(_DWORD *)(i + 20) = a2;
- }
- }
- else
- {
- result = a2;
- dword_1002A054 = a2;
- }
- return result;
- }
- // 1002A054: using guessed type int dword_1002A054;
- //----- (10001CB5) --------------------------------------------------------
- signed __int16 __cdecl sub_10001CB5(int *a1, int a2, int a3, int a4, _WORD *a5)
- {
- int v5; // ST10_4@3
- __int16 v7; // [esp+Ch] [ebp-8h]@1
- v7 = 0;
- if ( !a1 )
- return 2;
- v5 = *a1;
- *a5 = 3;
- return v7;
- }
- //----- (10001D01) --------------------------------------------------------
- int __cdecl sub_10001D01(int *a1)
- {
- int v1; // ST0C_4@2
- if ( a1 )
- v1 = *a1;
- return dword_1002A058;
- }
- // 1002A058: using guessed type int dword_1002A058;
- //----- (10001D2B) --------------------------------------------------------
- int __cdecl sub_10001D2B(int *a1, int a2, int a3, int a4)
- {
- int v4; // ST10_4@2
- if ( a1 )
- v4 = *a1;
- return a4;
- }
- //----- (10001D59) --------------------------------------------------------
- signed __int16 __cdecl sub_10001D59(int *a1)
- {
- int v1; // eax@3
- __int16 v3; // [esp+Ch] [ebp-8h]@1
- v3 = 0;
- if ( !a1 )
- return 2;
- v1 = *a1;
- return v3;
- }
- //----- (10001D9D) --------------------------------------------------------
- char *__cdecl sub_10001D9D(int a1, int a2, char *Source)
- {
- char *result; // eax@1
- size_t v4; // [esp+Ch] [ebp-108h]@1
- char Dest; // [esp+14h] [ebp-100h]@1
- v4 = strlen(Source) + 1;
- result = strcpy(&Dest, Source);
- if ( a1 )
- {
- result = *(char **)a1;
- if ( v4 )
- {
- result = (char *)sub_10003780(
- (int)&Dest,
- *(HWND *)(*(_DWORD *)a1 + 4),
- dword_100393E4,
- dword_100393DC,
- dword_1002A03C,
- dword_1002A040,
- dword_1002A044,
- dword_1002A048,
- dword_1002A04C,
- dword_1002A050);
- if ( !result )
- dword_1002A038 = 1;
- }
- }
- return result;
- }
- // 1002A038: using guessed type int dword_1002A038;
- //----- (10001E74) --------------------------------------------------------
- void __cdecl sub_10001E74(int *a1, int a2)
- {
- HDC v2; // ST24_4@5
- HGDIOBJ v3; // ST20_4@5
- LOGBRUSH plbrush; // [esp+18h] [ebp-24h]@5
- int *v5; // [esp+24h] [ebp-18h]@5
- HGDIOBJ h; // [esp+28h] [ebp-14h]@5
- int v7; // [esp+2Ch] [ebp-10h]@5
- int v8; // [esp+30h] [ebp-Ch]@4
- char v9; // [esp+34h] [ebp-8h]@4
- int v10; // [esp+38h] [ebp-4h]@3
- if ( a2 && a1 )
- {
- v10 = *a1;
- if ( *(_WORD *)a2 == 2 )
- {
- v8 = *(_DWORD *)(a2 + 8);
- v9 = *(_BYTE *)(a2 + 5);
- *(_BYTE *)(a2 + 4) = 0;
- }
- else
- {
- v5 = (int *)(a2 + 4);
- v2 = *(HDC *)(a2 + 32);
- plbrush.lbStyle = 0;
- plbrush.lbColor = 8421504;
- plbrush.lbHatch = 0;
- h = ExtCreatePen(0, 1u, &plbrush, 0, 0);
- v3 = SelectObject(v2, h);
- v7 = Rectangle(v2, v5[1], v5[2], v5[3] + v5[1], v5[4] + v5[2]);
- SelectObject(v2, v3);
- DeleteObject(h);
- }
- }
- }
- //----- (10001FAF) --------------------------------------------------------
- LRESULT __stdcall sub_10001FAF(HWND hWnd, int a2, int a3, LPARAM lParam)
- {
- int v5; // [esp+Ch] [ebp-4h]@1
- v5 = sub_10002026((int)hWnd);
- if ( dword_1002A038 )
- sub_10003842(hWnd, (unsigned __int16)a2, (unsigned __int16)a3, lParam);
- return CallWindowProcA(*(WNDPROC *)(v5 + 12), hWnd, (unsigned __int16)a2, (unsigned __int16)a3, lParam);
- }
- // 1002A038: using guessed type int dword_1002A038;
- //----- (10002026) --------------------------------------------------------
- int __cdecl sub_10002026(int a1)
- {
- int v2; // [esp+Ch] [ebp-8h]@1
- int i; // [esp+10h] [ebp-4h]@1
- v2 = 0;
- for ( i = dword_1002A054; i; i = *(_DWORD *)(i + 20) )
- {
- if ( *(_DWORD *)(i + 4) == a1 )
- return i;
- }
- return v2;
- }
- // 1002A054: using guessed type int dword_1002A054;
- //----- (100020B0) --------------------------------------------------------
- void *__cdecl sub_100020B0(size_t Size)
- {
- return malloc(Size);
- }
- //----- (100020E8) --------------------------------------------------------
- int __cdecl sub_100020E8(int a1, int a2, DWORD nNumberOfBytesToRead)
- {
- return _read(a1, a2, nNumberOfBytesToRead);
- }
- //----- (1000210C) --------------------------------------------------------
- int __cdecl sub_1000210C(int a1, LPCVOID lpBuffer, DWORD nNumberOfBytesToWrite)
- {
- return _write(a1, lpBuffer, nNumberOfBytesToWrite);
- }
- //----- (10002130) --------------------------------------------------------
- int __cdecl sub_10002130(int a1, LONG lDistanceToMove, DWORD dwMoveMethod)
- {
- return _lseek(a1, lDistanceToMove, dwMoveMethod);
- }
- //----- (10002154) --------------------------------------------------------
- int __cdecl sub_10002154(int a1)
- {
- return _tell(a1);
- }
- // 10027180: using guessed type _DWORD __cdecl _tell(_DWORD);
- //----- (10002170) --------------------------------------------------------
- void __cdecl sub_10002170(int a1, int a2, int a3, int a4, int a5, int a6, int a7, int a8, int a9)
- {
- const CHAR *v9; // eax@20
- int Size; // ST1C_4@21
- const CHAR *v11; // eax@22
- void *v12; // eax@26
- int v13; // eax@28
- void *Memory; // [esp+10h] [ebp-8h]@26
- void *v15; // [esp+14h] [ebp-4h]@24
- if ( a2 > 0 )
- *(_DWORD *)&dword_1002A0A0 = a2;
- if ( a3 > 0 )
- *(_DWORD *)&dword_1002A0A4 = a3;
- if ( a4 >= 0 )
- dword_1002A0A8 = a4;
- if ( a5 >= 0 )
- dword_1002A0AC = a5;
- if ( a6 >= 0 )
- dword_1002A0B0 = a6;
- if ( a7 >= 0 )
- dword_1002A0B4 = a7;
- if ( a8 >= 0 )
- dword_1002A0B8 = a8;
- if ( a9 >= 0 )
- dword_1002A0BC = a9;
- if ( byte_1002A0E4 )
- sub_10002439();
- if ( sub_10003E80(&off_1002A0C0) )
- {
- v9 = (const CHAR *)sub_10003F10();
- sub_10003C72(v9);
- }
- word_100394E0 = dword_1002A0A0;
- word_100394E2 = dword_1002A0A4;
- byte_100394E4 = 2;
- Size = 2 * *(_DWORD *)&dword_1002A0A0 * *(_DWORD *)&dword_1002A0A4;
- lpvBits = malloc(2 * *(_DWORD *)&dword_1002A0A0 * *(_DWORD *)&dword_1002A0A4);
- Dst = malloc(Size);
- memset(Dst, 255, Size);
- dword_100393F8 = (int)sub_100063D0(a1);
- _close(a1);
- if ( !dword_100393F8 )
- {
- v11 = (const CHAR *)sub_10003F10();
- sub_10003C72(v11);
- }
- LOWORD(word_1002A0E8) = sub_100029CC(dword_1002A0A8, dword_1002A0AC, dword_1002A0B0);
- LOWORD(word_1002A0EC) = sub_100029CC(dword_1002A0B4, dword_1002A0B8, dword_1002A0BC);
- if ( *(_DWORD *)(dword_100393F8 + 16) )
- {
- v15 = (void *)(*(_DWORD *)(dword_100393F8 + 16) + 4);
- }
- else
- {
- v15 = malloc(0x2000u);
- sub_10003490((int)v15, *(_DWORD *)(dword_100393F8 + 12));
- }
- v12 = malloc(0x20000u);
- Memory = v12;
- LOWORD(v12) = word_1002A0EC;
- sub_100036F1(Memory, (int)v12, 0x10000u);
- dword_100394D0 = (int)sub_10003F20(0, v15, Memory, (int)&lpvBits);
- if ( !dword_100394D0 )
- sub_10003C72(Text);
- v13 = (unsigned __int16)word_100394E2 * (unsigned __int16)word_100394E0;
- LOWORD(v13) = word_1002A0E8;
- sub_100036F1(lpvBits, v13, (unsigned __int16)word_100394E2 * (unsigned __int16)word_100394E0);
- free(Memory);
- if ( !*(_DWORD *)(dword_100393F8 + 16) )
- free(v15);
- sub_10002A07();
- byte_1002A0E4 = 1;
- sub_100024B8(0);
- }
- // 10022490: using guessed type _DWORD __cdecl _close(_DWORD);
- // 1002A0A8: using guessed type int dword_1002A0A8;
- // 1002A0AC: using guessed type int dword_1002A0AC;
- // 1002A0B0: using guessed type int dword_1002A0B0;
- // 1002A0B4: using guessed type int dword_1002A0B4;
- // 1002A0B8: using guessed type int dword_1002A0B8;
- // 1002A0BC: using guessed type int dword_1002A0BC;
- // 1002A0C0: using guessed type int (__cdecl *off_1002A0C0)(size_t Size);
- // 1002A0E4: using guessed type char byte_1002A0E4;
- // 100393F8: using guessed type int dword_100393F8;
- // 100394D0: using guessed type int dword_100394D0;
- // 100394E4: using guessed type char byte_100394E4;
- //----- (10002439) --------------------------------------------------------
- void sub_10002439()
- {
- if ( byte_1002A0E4 )
- {
- sub_10006570((_DWORD *)dword_100393F8);
- if ( dword_100394D0 )
- {
- sub_10004180(dword_100394D0);
- dword_100394D0 = 0;
- }
- sub_10003EF0();
- free(Dst);
- free(lpvBits);
- byte_1002A0E4 = 0;
- }
- }
- // 1002A0E4: using guessed type char byte_1002A0E4;
- // 100393F8: using guessed type int dword_100393F8;
- // 100394D0: using guessed type int dword_100394D0;
- //----- (100024B8) --------------------------------------------------------
- void __cdecl sub_100024B8(int a1)
- {
- int v1; // eax@19
- int v2; // eax@33
- signed __int16 v3; // [esp+10h] [ebp-18h]@31
- signed __int16 v4; // [esp+10h] [ebp-18h]@34
- int v5; // [esp+14h] [ebp-14h]@20
- int v6; // [esp+18h] [ebp-10h]@20
- int v7; // [esp+1Ch] [ebp-Ch]@20
- signed __int16 v8; // [esp+20h] [ebp-8h]@1
- char *Dst; // [esp+24h] [ebp-4h]@31
- char *Dsta; // [esp+24h] [ebp-4h]@34
- v8 = 0;
- if ( byte_1002A0E4 )
- {
- switch ( a1 )
- {
- case 0:
- word_1002A0F0 = 0;
- sub_10002E35(3);
- dword_100394D4 = (int (__cdecl *)(_DWORD, _DWORD))sub_10002E35;
- sub_1000375D(10);
- v8 = 1;
- break;
- case 1:
- if ( *(_DWORD *)(dword_100393F8 + 24) == ++word_1002A0F0 )
- word_1002A0F0 = 0;
- break;
- case 2:
- sub_10003CA1(lpvBits, word_100394E0, word_100394E2, 0, 0, word_100394E0, word_100394E2);
- return;
- case 10:
- dword_100394D4 = (int (__cdecl *)(_DWORD, _DWORD))sub_10002E35;
- sub_1000375D(10);
- break;
- case 11:
- dword_100394D4 = (int (__cdecl *)(_DWORD, _DWORD))sub_10002F85;
- dword_10039458 = (int)&dword_10039468;
- sub_1000375D(20);
- break;
- case 12:
- dword_100394D4 = sub_100030DA;
- dword_10039458 = (int)&dword_10039468;
- sub_1000375D(30);
- break;
- case 13:
- dword_100394D4 = (int (__cdecl *)(_DWORD, _DWORD))sub_1000325B;
- dword_10039458 = (int)&dword_10039468;
- sub_1000375D(40);
- break;
- case 14:
- dword_100394D4 = (int (__cdecl *)(_DWORD, _DWORD))sub_10003399;
- dword_10039458 = (int)&dword_10039468;
- sub_1000375D(50);
- break;
- case 15:
- sub_10003768(71);
- byte_100394B8 = 0;
- break;
- case 16:
- sub_10003768(72);
- byte_100394B8 = 1;
- break;
- case 17:
- sub_10003768(73);
- byte_100394B8 = 2;
- break;
- case 18:
- sub_10003768(72);
- dword_100394D4 = (int (__cdecl *)(_DWORD, _DWORD))sub_10002E35;
- sub_1000375D(10);
- sub_10002A07();
- v8 = 1;
- break;
- default:
- break;
- }
- if ( v8 )
- {
- word_1003945C = 0;
- word_100394F0 = 0;
- word_100393E8 = word_100394E0 - 1;
- word_100394EC = word_100394E2 - 1;
- v1 = (unsigned __int16)word_100394E2 * (unsigned __int16)word_100394E0;
- LOWORD(v1) = word_1002A0E8;
- sub_100036F1(lpvBits, v1, (unsigned __int16)word_100394E2 * (unsigned __int16)word_100394E0);
- }
- dword_100394D4(a1, dword_10039458);
- sub_100042B0(dword_100394D0, (int)&dword_10039468, (int)&flt_10039408, word_1002A0F0);
- v5 = *(_DWORD *)(dword_100394D0 + 8);
- v6 = *(_DWORD *)(dword_100394D0 + 12);
- v7 = *(_DWORD *)(dword_100394D0 + 16);
- if ( v7 )
- {
- if ( (signed __int16)v5 < word_1003945C )
- word_1003945C = *(_DWORD *)(dword_100394D0 + 8);
- if ( (signed __int16)v6 > word_100393E8 )
- word_100393E8 = v6;
- if ( SHIWORD(v5) < word_100394F0 )
- word_100394F0 = HIWORD(v5);
- if ( SHIWORD(v6) > word_100394EC )
- word_100394EC = HIWORD(v6);
- }
- word_10039460 = word_100393E8 - word_1003945C + 1;
- word_10039400 = word_100394EC - word_100394F0 + 1;
- sub_10003CA1(
- lpvBits,
- dword_1002A0A0,
- dword_1002A0A4,
- word_1003945C,
- word_100394F0,
- word_100393E8 - word_1003945C + 1,
- word_100394EC - word_100394F0 + 1);
- if ( (_WORD)v7 && HIWORD(v7) )
- {
- Dst = (char *)lpvBits
- + (unsigned __int8)byte_100394E4 * ((signed __int16)v5 + (unsigned __int16)word_100394E0 * SHIWORD(v5));
- v3 = 0;
- while ( SHIWORD(v7) > v3 )
- {
- v2 = (signed __int16)v7;
- LOWORD(v2) = word_1002A0E8;
- sub_100036F1(Dst, v2, (signed __int16)v7);
- ++v3;
- Dst += (unsigned __int16)word_100394E0 * (unsigned __int8)byte_100394E4;
- }
- Dsta = (char *)::Dst + 2 * ((signed __int16)v5 + (unsigned __int16)word_100394E0 * SHIWORD(v5));
- v4 = 0;
- while ( SHIWORD(v7) > v4 )
- {
- memset(Dsta, 255, 2 * (signed __int16)v7);
- ++v4;
- Dsta += 2 * (unsigned __int16)word_100394E0;
- }
- word_100394F0 = HIWORD(v5);
- word_1003945C = v5;
- word_100394EC = HIWORD(v6);
- word_100393E8 = v6;
- }
- }
- }
- // 1000375D: using guessed type int __cdecl sub_1000375D(_DWORD);
- // 10003768: using guessed type int __cdecl sub_10003768(_DWORD);
- // 1002A0E4: using guessed type char byte_1002A0E4;
- // 1002A0F0: using guessed type __int16 word_1002A0F0;
- // 100393E8: using guessed type __int16 word_100393E8;
- // 100393F8: using guessed type int dword_100393F8;
- // 10039408: using guessed type float flt_10039408;
- // 10039458: using guessed type int dword_10039458;
- // 10039468: using guessed type int dword_10039468;
- // 100394B8: using guessed type char byte_100394B8;
- // 100394D0: using guessed type int dword_100394D0;
- // 100394D4: using guessed type int (__cdecl *dword_100394D4)(_DWORD, _DWORD);
- // 100394E4: using guessed type char byte_100394E4;
- // 100394EC: using guessed type __int16 word_100394EC;
- //----- (100029CC) --------------------------------------------------------
- int __cdecl sub_100029CC(unsigned __int8 a1, unsigned __int8 a2, unsigned __int8 a3)
- {
- return (unsigned __int16)((signed int)a3 >> 3) | 32 * (unsigned __int16)((signed int)a2 >> 3) | ((unsigned __int16)((signed int)a1 >> 3) << 10);
- }
- //----- (10002A07) --------------------------------------------------------
- int sub_10002A07()
- {
- double v0; // st7@1
- double v1; // st7@1
- double v2; // st7@1
- double v3; // st7@2
- double v4; // st7@3
- double v5; // st7@4
- double v6; // st7@5
- double v7; // st7@5
- float v9; // [esp+18h] [ebp-18h]@1
- float v10; // [esp+1Ch] [ebp-14h]@1
- float v11; // [esp+20h] [ebp-10h]@1
- float v12; // [esp+24h] [ebp-Ch]@1
- float v13; // [esp+28h] [ebp-8h]@1
- float v14; // [esp+2Ch] [ebp-4h]@1
- dword_10039468 = *(_DWORD *)(dword_100393F8 + 28);
- dword_1003946C = *(_DWORD *)(dword_100393F8 + 24);
- dword_10039474 = *(_DWORD *)(dword_100393F8 + 36);
- dword_10039470 = *(_DWORD *)(dword_100393F8 + 40);
- dword_1002A0D8 = 0;
- dword_1002A0DC = 0;
- dword_1002A0E0 = 0;
- sub_100072D0((float *)&dword_1002A0D8, (float *)&dword_10039468 + 7);
- dword_100394A8 = 1065353216;
- dword_100394AC = 0;
- dword_100394B0 = 0;
- dword_100394B4 = 1065353216;
- dword_100394BA = 1050253722;
- dword_100394BE = 1050253722;
- dword_100394C2 = -1082130432;
- byte_100394B9 = 1;
- byte_100394B8 = 1;
- sub_10003768(72);
- dword_100394C6 = 0;
- sub_10005960((int)&dword_10039468, 0, &v12, &v9);
- flt_10039478 = -((v9 + v12) * 0.5);
- flt_1003947C = -((v10 + v13) * 0.5);
- flt_10039480 = -v14;
- word_100394CA = 0;
- word_100394CC = 0;
- word_100394CE = 0;
- v0 = v11 - v14;
- fabs(v0);
- flt_100393F4 = v0 * 0.5;
- v1 = v9 - v12;
- fabs(v1);
- flt_100393FC = v1;
- v2 = v10 - v13;
- fabs(v2);
- if ( v2 > flt_100393FC )
- {
- v3 = v10 - v13;
- fabs(v3);
- flt_100393FC = v3;
- }
- v4 = v11 - v14;
- fabs(v4);
- if ( v4 > flt_100393FC )
- {
- v5 = v11 - v14;
- fabs(v5);
- flt_100393FC = v5;
- }
- v6 = flt_100393FC * 10.0;
- flt_100393FC = v6;
- flt_100394E8 = v6 / 40.0;
- flt_10039438 = *(float *)(*(_DWORD *)dword_10039474 + 8) * 0.050000001;
- flt_1003943C = 10.0 / flt_100393FC;
- v7 = flt_100393FC * 1.9;
- flt_100393FC = v7;
- word_1003944C = 0;
- word_1003944E = 0;
- word_10039450 = dword_1002A0A0 - 1;
- word_10039452 = dword_1002A0A4 - 1;
- word_10039454 = dword_1002A0A0;
- word_10039456 = dword_1002A0A4;
- flt_10039440 = v7 / 20.0;
- flt_10039444 = flt_100393FC * 7.0;
- word_10039448 = 0;
- word_1003944A = -1;
- dword_100393F0 = -1085731242;
- dword_100393EC = 1057360271;
- return sub_10002CEE();
- }
- // 10003768: using guessed type int __cdecl sub_10003768(_DWORD);
- // 1002A0D8: using guessed type int dword_1002A0D8;
- // 1002A0DC: using guessed type int dword_1002A0DC;
- // 1002A0E0: using guessed type int dword_1002A0E0;
- // 100393EC: using guessed type int dword_100393EC;
- // 100393F0: using guessed type int dword_100393F0;
- // 100393F4: using guessed type float flt_100393F4;
- // 100393F8: using guessed type int dword_100393F8;
- // 100393FC: using guessed type float flt_100393FC;
- // 10039438: using guessed type float flt_10039438;
- // 1003943C: using guessed type float flt_1003943C;
- // 10039440: using guessed type float flt_10039440;
- // 10039444: using guessed type float flt_10039444;
- // 10039448: using guessed type __int16 word_10039448;
- // 1003944A: using guessed type __int16 word_1003944A;
- // 1003944C: using guessed type __int16 word_1003944C;
- // 1003944E: using guessed type __int16 word_1003944E;
- // 10039450: using guessed type __int16 word_10039450;
- // 10039452: using guessed type __int16 word_10039452;
- // 10039454: using guessed type __int16 word_10039454;
- // 10039456: using guessed type __int16 word_10039456;
- // 10039468: using guessed type int dword_10039468;
- // 1003946C: using guessed type int dword_1003946C;
- // 10039470: using guessed type int dword_10039470;
- // 10039474: using guessed type int dword_10039474;
- // 10039478: using guessed type float flt_10039478;
- // 1003947C: using guessed type float flt_1003947C;
- // 10039480: using guessed type float flt_10039480;
- // 100394A8: using guessed type int dword_100394A8;
- // 100394AC: using guessed type int dword_100394AC;
- // 100394B0: using guessed type int dword_100394B0;
- // 100394B4: using guessed type int dword_100394B4;
- // 100394B8: using guessed type char byte_100394B8;
- // 100394B9: using guessed type char byte_100394B9;
- // 100394BA: using guessed type int dword_100394BA;
- // 100394BE: using guessed type int dword_100394BE;
- // 100394C2: using guessed type int dword_100394C2;
- // 100394C6: using guessed type int dword_100394C6;
- // 100394CA: using guessed type __int16 word_100394CA;
- // 100394CC: using guessed type __int16 word_100394CC;
- // 100394CE: using guessed type __int16 word_100394CE;
- // 100394E8: using guessed type float flt_100394E8;
- //----- (10002CEE) --------------------------------------------------------
- int sub_10002CEE()
- {
- int result; // eax@1
- int v1; // [esp+14h] [ebp-40h]@1
- int v2; // [esp+18h] [ebp-3Ch]@1
- int v3; // [esp+1Ch] [ebp-38h]@1
- int v4; // [esp+20h] [ebp-34h]@1
- int v5; // [esp+24h] [ebp-30h]@1
- int v6; // [esp+28h] [ebp-2Ch]@1
- int v7; // [esp+2Ch] [ebp-28h]@1
- int v8; // [esp+30h] [ebp-24h]@1
- int v9; // [esp+34h] [ebp-20h]@1
- float v10; // [esp+38h] [ebp-1Ch]@1
- int v11; // [esp+3Ch] [ebp-18h]@1
- char v12; // [esp+40h] [ebp-14h]@1
- float v13; // [esp+4Ch] [ebp-8h]@1
- float v14; // [esp+50h] [ebp-4h]@1
- *(float *)&v11 = sub_1001009A(
- COERCE_UNSIGNED_INT64(*(float *)&dword_100393F0),
- COERCE_UNSIGNED_INT64(*(float *)&dword_100393F0) >> 32);
- v10 = sub_10010090(
- COERCE_UNSIGNED_INT64(*(float *)&dword_100393F0),
- COERCE_UNSIGNED_INT64(*(float *)&dword_100393F0) >> 32);
- v14 = sub_1001009A(
- COERCE_UNSIGNED_INT64(*(float *)&dword_100393EC),
- COERCE_UNSIGNED_INT64(*(float *)&dword_100393EC) >> 32);
- v13 = sub_10010090(
- COERCE_UNSIGNED_INT64(*(float *)&dword_100393EC),
- COERCE_UNSIGNED_INT64(*(float *)&dword_100393EC) >> 32);
- *(float *)&v1 = -(v14 * *(float *)&v11);
- *(float *)&v2 = -(v14 * v10);
- *(float *)&v3 = -v13;
- *(float *)&v7 = -v10;
- v8 = v11;
- v9 = 0;
- sub_10007700((float *)&v1, (float *)&v7, (float *)&v12);
- sub_10007670((float *)&v12, (float *)&v4);
- flt_10039408 = -(*(float *)&v1 * flt_100393FC);
- flt_1003940C = -(*(float *)&v2 * flt_100393FC);
- flt_10039410 = flt_100393F4 - *(float *)&v3 * flt_100393FC;
- dword_10039414 = v7;
- dword_10039418 = v8;
- dword_1003941C = v9;
- dword_10039420 = v4;
- dword_10039424 = v5;
- dword_10039428 = v6;
- dword_1003942C = v1;
- dword_10039430 = v2;
- result = v3;
- dword_10039434 = v3;
- return result;
- }
- // 10010090: using guessed type double __cdecl sub_10010090(_DWORD, _DWORD);
- // 1001009A: using guessed type double __cdecl sub_1001009A(_DWORD, _DWORD);
- // 100393EC: using guessed type int dword_100393EC;
- // 100393F0: using guessed type int dword_100393F0;
- // 100393F4: using guessed type float flt_100393F4;
- // 100393FC: using guessed type float flt_100393FC;
- // 10039408: using guessed type float flt_10039408;
- // 1003940C: using guessed type float flt_1003940C;
- // 10039410: using guessed type float flt_10039410;
- // 10039414: using guessed type int dword_10039414;
- // 10039418: using guessed type int dword_10039418;
- // 1003941C: using guessed type int dword_1003941C;
- // 10039420: using guessed type int dword_10039420;
- // 10039424: using guessed type int dword_10039424;
- // 10039428: using guessed type int dword_10039428;
- // 1003942C: using guessed type int dword_1003942C;
- // 10039430: using guessed type int dword_10039430;
- // 10039434: using guessed type int dword_10039434;
- //----- (10002E35) --------------------------------------------------------
- int __cdecl sub_10002E35(int a1)
- {
- int result; // eax@10
- result = a1;
- switch ( a1 )
- {
- case 3:
- return sub_10002CEE();
- case 4:
- *(float *)&dword_100393F0 = *(float *)&dword_100393F0 + flt_1002A0F4;
- return sub_10002CEE();
- case 5:
- *(float *)&dword_100393F0 = *(float *)&dword_100393F0 - flt_1002A0F4;
- return sub_10002CEE();
- case 6:
- *(float *)&dword_100393EC = *(float *)&dword_100393EC + flt_1002A0F4;
- return sub_10002CEE();
- case 7:
- *(float *)&dword_100393EC = *(float *)&dword_100393EC - flt_1002A0F4;
- return sub_10002CEE();
- case 8:
- flt_100393FC = flt_100393FC - flt_100394E8;
- return sub_10002CEE();
- case 9:
- flt_100393FC = flt_100394E8 + flt_100393FC;
- return sub_10002CEE();
- case 10:
- case 11:
- case 12:
- case 13:
- case 14:
- case 15:
- case 16:
- case 17:
- case 18:
- return result;
- case 19:
- flt_100393FC = flt_100393FC - flt_100394E8 * 0.5;
- break;
- case 20:
- flt_100393FC = flt_100394E8 * 0.5 + flt_100393FC;
- break;
- }
- return sub_10002CEE();
- }
- // 1002A0F4: using guessed type float flt_1002A0F4;
- // 100393EC: using guessed type int dword_100393EC;
- // 100393F0: using guessed type int dword_100393F0;
- // 100393FC: using guessed type float flt_100393FC;
- // 100394E8: using guessed type float flt_100394E8;
- //----- (10002F85) --------------------------------------------------------
- int __cdecl sub_10002F85(int a1, float *a2)
- {
- int result; // eax@7
- double v3; // ST1C_8@8
- double v4; // ST14_8@8
- double v5; // st7@8
- result = a1 - 4;
- switch ( a1 )
- {
- case 4:
- flt_1002A0FC = flt_1002A100 + flt_1002A0FC;
- goto LABEL_8;
- case 5:
- flt_1002A0FC = flt_1002A0FC - flt_1002A100;
- goto LABEL_8;
- case 6:
- flt_1002A0F8 = flt_1002A100 + flt_1002A0F8;
- goto LABEL_8;
- case 7:
- flt_1002A0F8 = flt_1002A0F8 - flt_1002A100;
- goto LABEL_8;
- case 8:
- case 9:
- LODWORD(flt_1002A0FC) = 0;
- LODWORD(flt_1002A0F8) = 0;
- LABEL_8:
- v3 = sub_1001009A(*(unsigned __int64 *)&flt_1002A0F8, *(unsigned __int64 *)&flt_1002A0F8 >> 32);
- a2[17] = sub_10010090(*(unsigned __int64 *)&flt_1002A0FC, *(unsigned __int64 *)&flt_1002A0FC >> 32) * v3;
- v4 = sub_1001009A(*(unsigned __int64 *)&flt_1002A0FC, *(unsigned __int64 *)&flt_1002A0FC >> 32);
- a2[19] = sub_1001009A(*(unsigned __int64 *)&flt_1002A0F8, *(unsigned __int64 *)&flt_1002A0F8 >> 32) * v4;
- v5 = sub_10010090(*(unsigned __int64 *)&flt_1002A0F8, *(unsigned __int64 *)&flt_1002A0F8 >> 32);
- result = (int)a2;
- a2[18] = v5;
- break;
- default:
- return result;
- }
- return result;
- }
- // 10010090: using guessed type double __cdecl sub_10010090(_DWORD, _DWORD);
- // 1001009A: using guessed type double __cdecl sub_1001009A(_DWORD, _DWORD);
- // 1002A0F8: using guessed type float flt_1002A0F8;
- // 1002A0FC: using guessed type float flt_1002A0FC;
- // 1002A100: using guessed type float flt_1002A100;
- //----- (100030DA) --------------------------------------------------------
- int __cdecl sub_100030DA(int a1, int a2)
- {
- int result; // eax@10
- double v3; // ST1C_8@11
- double v4; // ST14_8@11
- double v5; // st7@11
- result = a1;
- switch ( a1 )
- {
- case 4:
- flt_1002A104 = flt_1002A10C + flt_1002A104;
- goto LABEL_11;
- case 5:
- flt_1002A104 = flt_1002A104 - flt_1002A10C;
- goto LABEL_11;
- case 6:
- flt_1002A108 = flt_1002A10C + flt_1002A108;
- goto LABEL_11;
- case 7:
- flt_1002A108 = flt_1002A108 - flt_1002A10C;
- goto LABEL_11;
- case 8:
- case 9:
- case 19:
- case 20:
- if ( *(_BYTE *)(a2 + 81) )
- *(_BYTE *)(a2 + 81) = 0;
- else
- *(_BYTE *)(a2 + 81) = 1;
- LABEL_11:
- v3 = sub_1001009A(*(unsigned __int64 *)&flt_1002A108, *(unsigned __int64 *)&flt_1002A108 >> 32);
- *(float *)(a2 + 82) = sub_10010090(*(unsigned __int64 *)&flt_1002A104, *(unsigned __int64 *)&flt_1002A104 >> 32)
- * v3;
- v4 = sub_10010090(*(unsigned __int64 *)&flt_1002A108, *(unsigned __int64 *)&flt_1002A108 >> 32);
- *(float *)(a2 + 86) = sub_10010090(*(unsigned __int64 *)&flt_1002A104, *(unsigned __int64 *)&flt_1002A104 >> 32)
- * v4;
- v5 = sub_1001009A(*(unsigned __int64 *)&flt_1002A104, *(unsigned __int64 *)&flt_1002A104 >> 32);
- result = a2;
- *(float *)(a2 + 90) = v5;
- break;
- case 10:
- case 11:
- case 12:
- case 13:
- case 14:
- case 15:
- case 16:
- case 17:
- case 18:
- return result;
- }
- return result;
- }
- // 10010090: using guessed type double __cdecl sub_10010090(_DWORD, _DWORD);
- // 1001009A: using guessed type double __cdecl sub_1001009A(_DWORD, _DWORD);
- // 1002A104: using guessed type float flt_1002A104;
- // 1002A108: using guessed type float flt_1002A108;
- // 1002A10C: using guessed type float flt_1002A10C;
- //----- (1000325B) --------------------------------------------------------
- float *__cdecl sub_1000325B(float *a1, float *a2)
- {
- float *result; // eax@2
- float v3; // [esp+14h] [ebp-4h]@1
- v3 = flt_100394E8 / 8.0;
- result = a1;
- switch ( a1 )
- {
- case 4u:
- result = a2;
- a2[4] = a2[4] + v3;
- break;
- case 5u:
- result = a2;
- a2[4] = a2[4] - v3;
- break;
- case 6u:
- result = a2;
- a2[5] = a2[5] + v3;
- break;
- case 7u:
- result = a2;
- a2[5] = a2[5] - v3;
- break;
- case 8u:
- result = a2;
- a2[6] = a2[6] + v3;
- break;
- case 9u:
- result = a2;
- a2[6] = a2[6] - v3;
- break;
- case 0xAu:
- case 0xBu:
- case 0xCu:
- case 0xDu:
- case 0xEu:
- case 0xFu:
- case 0x10u:
- case 0x11u:
- case 0x12u:
- return result;
- case 0x13u:
- result = a2;
- a2[6] = v3 * 0.1 + a2[6];
- break;
- case 0x14u:
- result = a2;
- a2[6] = a2[6] - v3 * 0.1;
- break;
- }
- return result;
- }
- // 100394E8: using guessed type float flt_100394E8;
- //----- (10003399) --------------------------------------------------------
- float *__cdecl sub_10003399(int a1, int a2)
- {
- float *result; // eax@8
- result = (float *)(a1 - 4);
- switch ( a1 )
- {
- case 4:
- *(float *)&dword_1002A0D8 = *(float *)&dword_1002A0D8 + flt_1002A110;
- goto LABEL_9;
- case 5:
- *(float *)&dword_1002A0D8 = *(float *)&dword_1002A0D8 - flt_1002A110;
- goto LABEL_9;
- case 6:
- *(float *)&dword_1002A0E0 = *(float *)&dword_1002A0E0 + flt_1002A110;
- goto LABEL_9;
- case 7:
- *(float *)&dword_1002A0E0 = *(float *)&dword_1002A0E0 - flt_1002A110;
- goto LABEL_9;
- case 8:
- *(float *)&dword_1002A0DC = *(float *)&dword_1002A0DC + flt_1002A110;
- goto LABEL_9;
- case 9:
- *(float *)&dword_1002A0DC = *(float *)&dword_1002A0DC - flt_1002A110;
- LABEL_9:
- result = sub_100072D0((float *)&dword_1002A0D8, (float *)(a2 + 28));
- break;
- default:
- return result;
- }
- return result;
- }
- // 1002A0D8: using guessed type int dword_1002A0D8;
- // 1002A0DC: using guessed type int dword_1002A0DC;
- // 1002A0E0: using guessed type int dword_1002A0E0;
- // 1002A110: using guessed type float flt_1002A110;
- //----- (10003490) --------------------------------------------------------
- void *__cdecl sub_10003490(int a1, int a2)
- {
- unsigned __int8 v2; // ST5C_1@3
- double v3; // st7@5
- float v4; // ST68_4@5
- float v5; // ST70_4@5
- float v6; // ST58_4@5
- float v7; // ST74_4@5
- void *result; // eax@7
- float v9; // [esp+44h] [ebp-40h]@3
- float v10; // [esp+48h] [ebp-3Ch]@3
- float v11; // [esp+4Ch] [ebp-38h]@3
- unsigned int j; // [esp+50h] [ebp-34h]@3
- unsigned int i; // [esp+54h] [ebp-30h]@1
- unsigned int k; // [esp+54h] [ebp-30h]@7
- float v15; // [esp+64h] [ebp-20h]@3
- float v16; // [esp+78h] [ebp-Ch]@3
- float v17; // [esp+7Ch] [ebp-8h]@3
- _WORD *v18; // [esp+80h] [ebp-4h]@7
- for ( i = 0; i < 0x100; ++i )
- {
- v2 = *(_BYTE *)(i + a2 + 4610);
- v17 = (double)*(unsigned __int8 *)(3 * v2 + a2 + 2);
- v15 = (double)*(unsigned __int8 *)(3 * v2 + a2 + 3);
- v10 = (double)*(unsigned __int8 *)(3 * v2 + a2 + 4);
- v9 = (double)*(unsigned __int8 *)(3 * v2 + a2 + 2) * 0.050000001;
- v16 = (double)*(unsigned __int8 *)(3 * v2 + a2 + 3) * 0.050000001;
- v11 = (double)*(unsigned __int8 *)(3 * v2 + a2 + 4) * 0.050000001;
- for ( j = 0; j < 0x10; ++j )
- {
- v3 = (double)j / 15.0;
- v4 = v3;
- v5 = (1.0 - v3) * v9 + v4 * v17;
- v6 = (1.0 - v4) * v16 + v4 * v15;
- v7 = (1.0 - v4) * v11 + v4 * v10;
- *(_WORD *)(a1 + 2 * (i + (j << 8))) = ((unsigned __int16)((signed int)(unsigned __int16)(signed __int64)v5 >> 3) << 10) | 32 * ((signed int)(unsigned __int16)(signed __int64)v6 >> 3) | ((signed int)(unsigned __int16)(signed __int64)v7 >> 3);
- }
- }
- result = lpvBits;
- v18 = lpvBits;
- for ( k = 0; k < 0x10000; ++k )
- {
- result = (void *)((k & 0x1F) << 10);
- v18[k] = (_WORD)result;
- }
- return result;
- }
- //----- (100036F1) --------------------------------------------------------
- __int16 __cdecl sub_100036F1(void *Dst, int a2, size_t Size)
- {
- __int16 result; // ax@2
- _WORD *v4; // [esp+Ch] [ebp-4h]@3
- if ( byte_100394E4 == 1 )
- return (unsigned int)memset(Dst, (unsigned __int16)a2, Size);
- result = (signed __int16)Dst;
- v4 = Dst;
- while ( Size )
- {
- result = a2;
- *v4 = a2;
- --Size;
- ++v4;
- }
- return result;
- }
- // 100394E4: using guessed type char byte_100394E4;
- //----- (10003780) --------------------------------------------------------
- int __cdecl sub_10003780(int a1, HWND hWnd, int a3, int a4, int a5, int a6, int a7, int a8, int a9, int a10)
- {
- int v11; // [esp+Ch] [ebp-4h]@1
- v11 = _open((LPCSTR)a1, 0x8000);
- if ( v11 == -1 )
- sub_10003C72(aFileOpenError);
- ::hWnd = hWnd;
- sub_10003D40();
- sub_10002170(v11, a3, a4, a5, a6, a7, a8, a9, a10);
- SetTimer(hWnd, 1u, 0x32u, 0);
- SetFocus(hWnd);
- return 0;
- }
- //----- (10003824) --------------------------------------------------------
- void sub_10003824()
- {
- KillTimer(hWnd, 1u);
- sub_10002439();
- }
- //----- (10003842) --------------------------------------------------------
- LRESULT __stdcall sub_10003842(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam)
- {
- HDC hdc; // ST28_4@30
- if ( Msg > 5 )
- {
- if ( Msg > 0xF )
- {
- if ( Msg > 0x113 )
- {
- if ( Msg != 513 )
- return DefWindowProcA(hWnd, Msg, wParam, lParam);
- SetFocus(hWnd);
- }
- else
- {
- if ( Msg == 275 )
- {
- LABEL_34:
- sub_100024B8(1);
- return 0;
- }
- if ( Msg != 256 )
- {
- if ( Msg == 258 )
- {
- switch ( wParam )
- {
- case 0x41u:
- case 0x61u:
- sub_100024B8(14);
- break;
- case 0x43u:
- case 0x63u:
- sub_100024B8(10);
- break;
- case 0x44u:
- case 0x64u:
- sub_100024B8(18);
- break;
- case 0x46u:
- case 0x66u:
- sub_100024B8(16);
- break;
- case 0x4Bu:
- case 0x6Bu:
- sub_100024B8(15);
- break;
- case 0x4Cu:
- case 0x6Cu:
- sub_100024B8(11);
- break;
- case 0x50u:
- case 0x70u:
- sub_100024B8(13);
- break;
- case 0x53u:
- case 0x73u:
- sub_100024B8(12);
- break;
- case 0x54u:
- case 0x74u:
- sub_100024B8(17);
- break;
- default:
- return 0;
- }
- return 0;
- }
- if ( Msg != 260 )
- return DefWindowProcA(hWnd, Msg, wParam, lParam);
- }
- switch ( wParam )
- {
- case 0x23u:
- case 0x61u:
- sub_100024B8(9);
- break;
- case 0x24u:
- case 0x67u:
- sub_100024B8(8);
- break;
- case 0x25u:
- case 0x64u:
- sub_100024B8(4);
- break;
- case 0x26u:
- case 0x68u:
- sub_100024B8(6);
- break;
- case 0x27u:
- case 0x66u:
- sub_100024B8(5);
- break;
- case 0x28u:
- case 0x62u:
- sub_100024B8(7);
- break;
- default:
- return 0;
- }
- }
- }
- else if ( Msg == 15 )
- {
- BeginPaint(::hWnd, (LPPAINTSTRUCT)&Paint);
- if ( ho )
- {
- SelectPalette(Paint, ho, 0);
- RealizePalette(Paint);
- }
- sub_100024B8(2);
- EndPaint(::hWnd, (const PAINTSTRUCT *)&Paint);
- }
- else
- {
- if ( Msg != 7 )
- return DefWindowProcA(hWnd, Msg, wParam, lParam);
- if ( ho )
- DeleteObject(ho);
- hdc = GetDC(::hWnd);
- ho = CreatePalette(&plpal);
- SelectPalette(hdc, ho, 0);
- RealizePalette(hdc);
- ReleaseDC(::hWnd, hdc);
- }
- }
- else
- {
- if ( Msg != 5 )
- {
- if ( Msg != 2 )
- return DefWindowProcA(hWnd, Msg, wParam, lParam);
- if ( ho )
- DeleteObject(ho);
- sub_10002439();
- PostQuitMessage(0);
- goto LABEL_34;
- }
- SetFocus(hWnd);
- }
- return 0;
- }
- //----- (10003C72) --------------------------------------------------------
- void __cdecl __noreturn sub_10003C72(LPCSTR lpText)
- {
- MessageBoxA(hWnd, lpText, Caption, 0x1000u);
- exit(0);
- }
- //----- (10003CA1) --------------------------------------------------------
- void __cdecl sub_10003CA1(void *lpvBits, __int16 a2, __int16 a3, __int16 a4, __int16 a5, __int16 a6, __int16 a7)
- {
- HDC hdc; // ST3C_4@2
- if ( lpvBits )
- {
- bmi.bmiHeader.biWidth = a2;
- bmi.bmiHeader.biHeight = -a3;
- bmi.bmiHeader.biBitCount = 16;
- hdc = GetDC(hWnd);
- SetDIBitsToDevice(hdc, a4, a5, a6, a7, a4, a3 - a5 - a7, 0, a3, lpvBits, &bmi, 0);
- ReleaseDC(hWnd, hdc);
- }
- }
- //----- (10003D40) --------------------------------------------------------
- int sub_10003D40()
- {
- int result; // eax@2
- __int16 i; // [esp+Ch] [ebp-4h]@1
- bmi.bmiHeader.biSize = 40;
- bmi.bmiHeader.biWidth = 0;
- bmi.bmiHeader.biHeight = 0;
- bmi.bmiHeader.biPlanes = 1;
- bmi.bmiHeader.biBitCount = 8;
- bmi.bmiHeader.biCompression = 0;
- bmi.bmiHeader.biSizeImage = 0;
- bmi.bmiHeader.biXPelsPerMeter = 0;
- bmi.bmiHeader.biYPelsPerMeter = 0;
- bmi.bmiHeader.biClrUsed = 0;
- bmi.bmiHeader.biClrImportant = 0;
- dword_10039768 = 0;
- for ( i = 0; ; ++i )
- {
- result = i;
- if ( i >= 256 )
- break;
- *((_WORD *)&bmi.bmiColors[0].rgbBlue + i) = i;
- }
- return result;
- }
- // 10039768: using guessed type int dword_10039768;
- //----- (10003E80) --------------------------------------------------------
- char __cdecl sub_10003E80(_DWORD *a1)
- {
- char result; // al@2
- if ( a1 )
- {
- if ( *a1 && a1[1] && a1[2] && a1[3] && a1[4] && a1[5] )
- {
- qmemcpy(&dword_10039FF0, a1, 0x18u);
- result = 0;
- }
- else
- {
- sub_10005D20(aSetupIsEmpty);
- result = 1;
- }
- }
- else
- {
- sub_10005D20(aNoSetupParamet);
- result = 1;
- }
- return result;
- }
- // 10039FF0: using guessed type int (__cdecl *dword_10039FF0)(_DWORD);
- //----- (10003EF0) --------------------------------------------------------
- int sub_10003EF0()
- {
- int result; // eax@1
- result = dword_1002A29C;
- if ( dword_1002A29C )
- {
- result = dword_10039FF4(dword_1002A29C);
- dword_1002A29C = 0;
- }
- return result;
- }
- // 1002A29C: using guessed type int dword_1002A29C;
- // 10039FF4: using guessed type int (__cdecl *dword_10039FF4)(_DWORD);
- //----- (10003F10) --------------------------------------------------------
- void *sub_10003F10()
- {
- return &unk_10039E00;
- }
- //----- (10003F20) --------------------------------------------------------
- _DWORD *__cdecl sub_10003F20(int a1, const void *a2, const void *a3, int a4)
- {
- _DWORD *result; // eax@2
- int v5; // eax@4
- _DWORD *v6; // ebx@7
- int v7; // eax@9
- void *v8; // eax@12
- const void *v9; // esi@14
- void *v10; // edi@15
- signed int v11; // ecx@15
- void *v12; // eax@16
- __int16 v13; // ax@21
- __int16 v14; // ax@23
- if ( !a2 )
- {
- sub_10005D20(aNoColortabPara);
- return 0;
- }
- if ( !dword_1002A29C )
- {
- dword_1002A160 = 0;
- v5 = dword_10039FF0(262156);
- dword_1002A29C = v5;
- if ( !v5 )
- {
- sub_10005D20(aNoRoomForInter);
- return 0;
- }
- sub_10007C9B(v5, 0, 0, 256, 256);
- *(_WORD *)(dword_1002A29C + 0x40000) = 0x7FFF;
- *(_WORD *)(dword_1002A29C + 262146) = 0x7FFF;
- *(_WORD *)(dword_1002A29C + 262148) = -1;
- *(_WORD *)(dword_1002A29C + 262150) = -1;
- *(_WORD *)(dword_1002A29C + 262152) = 0;
- *(_WORD *)(dword_1002A29C + 262154) = 0;
- }
- v6 = (_DWORD *)dword_10039FF0(44);
- if ( !v6 )
- {
- sub_10005D20(aNoRoomForHandl);
- return 0;
- }
- memset(v6, 0, 0x2Cu);
- *v6 = a1;
- v6[1] = a4;
- v7 = *(unsigned __int8 *)(a4 + 12);
- if ( v7 == 1 )
- {
- v8 = (void *)dword_10039FF0(6144);
- v6[9] = v8;
- if ( !v8 )
- {
- sub_10005D20(aNoRoomForColor);
- return 0;
- }
- qmemcpy(v8, a2, 0x1800u);
- v9 = a3;
- if ( !a3 )
- goto LABEL_21;
- v10 = (void *)dword_10039FF0(256);
- v11 = 64;
- v6[10] = v10;
- goto LABEL_20;
- }
- if ( v7 != 2 )
- {
- sub_10005D20(off_1002A18C);
- return 0;
- }
- v12 = (void *)dword_10039FF0(12288);
- v6[9] = v12;
- if ( !v12 )
- {
- sub_10005D20(aNoRoomForColor);
- return 0;
- }
- qmemcpy(v12, a2, 0x3000u);
- v9 = a3;
- if ( a3 )
- {
- v10 = (void *)dword_10039FF0(0x20000);
- v11 = 0x8000;
- v6[10] = v10;
- LABEL_20:
- qmemcpy(v10, v9, 4 * v11);
- }
- LABEL_21:
- *((_WORD *)v6 + 4) = 0x7FFF;
- *((_WORD *)v6 + 5) = 0x7FFF;
- *((_WORD *)v6 + 6) = -1;
- *((_WORD *)v6 + 7) = -1;
- *((_WORD *)v6 + 8) = 0;
- *((_WORD *)v6 + 9) = 0;
- *((_WORD *)v6 + 10) = 0;
- *((_WORD *)v6 + 11) = 0;
- *((_WORD *)v6 + 12) = *(_WORD *)(a4 + 8) - 1;
- *((_WORD *)v6 + 13) = *(_WORD *)(a4 + 10) - 1;
- v6[8] = *(unsigned __int16 *)(a4 + 8);
- v13 = *((_WORD *)v6 + 12);
- if ( v13 < 0 || *((_WORD *)v6 + 13) < 0 )
- {
- v14 = 0;
- *((_WORD *)v6 + 14) = 0;
- }
- else
- {
- *((_WORD *)v6 + 14) = v13 - *((_WORD *)v6 + 10) + 1;
- v14 = *((_WORD *)v6 + 13) - *((_WORD *)v6 + 11) + 1;
- }
- *((_WORD *)v6 + 15) = v14;
- result = v6;
- ++dword_1002A160;
- return result;
- }
- // 10039FF0: invalid function type has been ignored
- // 1002A160: using guessed type int dword_1002A160;
- // 1002A18C: using guessed type char *off_1002A18C;
- // 10039FF0: using guessed type int (__cdecl *dword_10039FF0)(_DWORD);
- //----- (10004180) --------------------------------------------------------
- int __cdecl sub_10004180(int a1)
- {
- int result; // eax@5
- if ( *(_DWORD *)(a1 + 36) )
- dword_10039FF4(*(_DWORD *)(a1 + 36));
- if ( *(_DWORD *)(a1 + 40) )
- dword_10039FF4(*(_DWORD *)(a1 + 40));
- result = dword_10039FF4(a1);
- if ( !dword_1002A160 || (--dword_1002A160, !dword_1002A160) )
- {
- result = dword_10039FF4(dword_1002A29C);
- dword_1002A29C = 0;
- }
- return result;
- }
- // 1002A160: using guessed type int dword_1002A160;
- // 10039FF4: using guessed type int (__cdecl *dword_10039FF4)(_DWORD);
- //----- (100042B0) --------------------------------------------------------
- int __cdecl sub_100042B0(int a1, int a2, int a3, int a4)
- {
- int v4; // ebx@2
- int v5; // ecx@2
- int *v6; // ecx@2
- int v7; // ebp@2
- double v8; // st7@2
- float *v9; // eax@2
- float v10; // ST1C_4@2
- double v11; // st7@2
- char v13; // c0@5
- double v14; // st7@8
- double v15; // st7@11
- double v16; // st7@15
- _DWORD *v17; // eax@15
- int v18; // ecx@15
- bool v19; // zf@18
- int v20; // eax@19
- double v21; // st7@19
- int v22; // esi@22
- __int16 v23; // ax@22
- double v24; // st7@22
- __int16 v25; // ax@22
- double v26; // st7@22
- char v27; // t0@25
- double v28; // st7@25
- unsigned int v29; // et0@25
- double v30; // st7@29
- double v31; // st7@31
- double v32; // st7@34
- double v33; // st7@38
- char v34; // cl@38
- int v35; // eax@38
- double v36; // st7@41
- __int16 v37; // ax@44
- double v38; // st7@44
- __int16 v39; // ax@44
- double v40; // st7@44
- char v41; // t0@47
- double v42; // st7@47
- unsigned int v43; // et0@47
- double v44; // st7@51
- double v45; // st7@55
- _DWORD *v46; // esi@67
- double v47; // st7@68
- float *v48; // eax@68
- int v49; // eax@68
- double v50; // st7@68
- signed int v51; // ecx@71
- signed int v52; // edx@71
- double v53; // st7@71
- signed int v54; // ecx@74
- double v55; // st7@74
- double v56; // st7@77
- char v57; // t0@80
- double v58; // st7@80
- unsigned int v59; // et0@80
- double v60; // st7@84
- double v61; // st7@87
- char v62; // cl@87
- double v63; // st7@99
- signed int v64; // edx@102
- signed int v65; // ST38_4@102
- char v66; // t0@102
- signed int v67; // ecx@102
- double v68; // st7@102
- double v69; // st7@102
- unsigned int v70; // et0@102
- double v71; // st7@105
- unsigned int v72; // et0@105
- double v73; // st7@109
- double v74; // st7@113
- __int16 v75; // ax@127
- _DWORD *v76; // ecx@129
- int result; // eax@129
- int v78; // ebx@129
- int v79; // edx@129
- unsigned int v80; // [esp-4h] [ebp-108h]@25
- unsigned int v81; // [esp-4h] [ebp-108h]@47
- unsigned int v82; // [esp-4h] [ebp-108h]@80
- unsigned int v83; // [esp-4h] [ebp-108h]@102
- unsigned int v84; // [esp-4h] [ebp-108h]@105
- signed __int16 v85; // [esp+12h] [ebp-F2h]@38
- signed __int16 v86; // [esp+12h] [ebp-F2h]@87
- int v87; // [esp+14h] [ebp-F0h]@2
- float v88; // [esp+14h] [ebp-F0h]@11
- signed int v89; // [esp+14h] [ebp-F0h]@22
- signed int v90; // [esp+14h] [ebp-F0h]@44
- signed int v91; // [esp+14h] [ebp-F0h]@71
- signed int v92; // [esp+14h] [ebp-F0h]@77
- signed int v93; // [esp+14h] [ebp-F0h]@102
- int v94; // [esp+18h] [ebp-ECh]@2
- float v95; // [esp+1Ch] [ebp-E8h]@2
- float v96; // [esp+20h] [ebp-E4h]@2
- float v97; // [esp+24h] [ebp-E0h]@34
- int v98; // [esp+28h] [ebp-DCh]@2
- float v99; // [esp+2Ch] [ebp-D8h]@2
- float v100; // [esp+30h] [ebp-D4h]@2
- float v101; // [esp+34h] [ebp-D0h]@5
- int v102; // [esp+38h] [ebp-CCh]@2
- int v103; // [esp+3Ch] [ebp-C8h]@2
- int v104; // [esp+40h] [ebp-C4h]@2
- float v105; // [esp+44h] [ebp-C0h]@37
- _DWORD *v106; // [esp+48h] [ebp-BCh]@2
- float v107; // [esp+4Ch] [ebp-B8h]@2
- int v108; // [esp+50h] [ebp-B4h]@2
- float v109; // [esp+54h] [ebp-B0h]@14
- float v110; // [esp+58h] [ebp-ACh]@14
- float v111; // [esp+5Ch] [ebp-A8h]@14
- float v112; // [esp+60h] [ebp-A4h]@14
- int v113; // [esp+64h] [ebp-A0h]@2
- int v114; // [esp+68h] [ebp-9Ch]@2
- float v115; // [esp+6Ch] [ebp-98h]@2
- float v116; // [esp+70h] [ebp-94h]@2
- int v117; // [esp+74h] [ebp-90h]@38
- int v118; // [esp+98h] [ebp-6Ch]@2
- char v119; // [esp+BCh] [ebp-48h]@14
- char v120; // [esp+E0h] [ebp-24h]@14
- while ( byte_1002A2B8 )
- ;
- byte_1002A2B8 = 1;
- *(_WORD *)(a1 + 8) = 0x7FFF;
- *(_WORD *)(a1 + 10) = 0x7FFF;
- *(_WORD *)(a1 + 12) = -1;
- *(_WORD *)(a1 + 14) = -1;
- *(_WORD *)(a1 + 16) = 0;
- *(_WORD *)(a1 + 18) = 0;
- v4 = *(_DWORD *)(a1 + 12);
- v5 = *(_DWORD *)(a1 + 16);
- v102 = *(_DWORD *)(a1 + 8);
- v103 = v4;
- v104 = v5;
- v6 = *(int **)(a2 + 12);
- v7 = a3;
- v106 = *(_DWORD **)(a2 + 8);
- v108 = *v6;
- sub_100074D0(a3 + 12, a2 + 28, (int)&v118);
- sub_100075F0((float *)a3, (float *)(a2 + 16), (float *)&v94);
- *(float *)&v114 = *(float *)(a2 + 52) * v96 + *(float *)(a2 + 40) * v95 + *(float *)(a2 + 28) * *(float *)&v94;
- v115 = *(float *)(a2 + 44) * v95 + *(float *)(a2 + 32) * *(float *)&v94 + *(float *)(a2 + 56) * v96;
- v116 = *(float *)(a2 + 60) * v96 + *(float *)(a2 + 48) * v95 + *(float *)(a2 + 36) * *(float *)&v94;
- v8 = *(float *)(a2 + 64);
- v9 = (float *)(12 * a4 + v106[1]);
- v113 = 12 * a4;
- *(float *)&v98 = v8 * *v9;
- v10 = *(float *)(a3 + 52);
- v99 = v9[1] * *(float *)(a2 + 64);
- v100 = v9[2] * *(float *)(a2 + 64);
- v107 = sub_10005C80((float *)&v98, (float *)&v118, (float *)&v114, v10, (int)&v94);
- v11 = *(float *)(v7 + 60) - *(float *)(v7 + 56);
- v87 = *(unsigned __int16 *)(v7 + 66) - *(unsigned __int16 *)(v7 + 64);
- if ( dword_10036C7C )
- unknown_libname_12(v87);
- else
- v11 = v11 / (double)v87;
- v101 = v11;
- if ( v13 )
- v101 = -v101;
- if ( *(_BYTE *)(a2 + 81) )
- {
- v14 = *(float *)(a2 + 82);
- if ( dword_10036C7C )
- unknown_libname_9(*(_DWORD *)(a2 + 90));
- else
- v14 = v14 / *(float *)(a2 + 90);
- v88 = v14;
- v15 = *(float *)(a2 + 86);
- if ( dword_10036C7C )
- unknown_libname_9(*(_DWORD *)(a2 + 90));
- else
- v15 = v15 / *(float *)(a2 + 90);
- v109 = v15;
- flt_1002A170 = -v88;
- flt_1002A17C = -v109;
- sub_10007560((float *)&unk_1002A168, (float *)(a2 + 16), &v110);
- v110 = *(float *)(a2 + 94) * v88 + v110;
- v111 = *(float *)(a2 + 94) * v109 + v111;
- v112 = *(float *)(a2 + 94) + v112;
- sub_100075F0(&v110, (float *)a3, (float *)&v98);
- sub_10007560((float *)(a3 + 12), (float *)&v98, &v110);
- v110 = v107 * v110;
- v111 = v107 * v111;
- sub_100074D0(a3 + 12, (int)&unk_1002A168, (int)&v120);
- sub_100074D0((int)&v120, a2 + 28, (int)&v119);
- }
- v16 = *(float *)(a2 + 64) * v107;
- v17 = v106;
- v18 = a4;
- if ( dword_10036C7C )
- unknown_libname_13(*(_DWORD *)(a3 + 48));
- else
- v16 = *(float *)(a3 + 48) / v16;
- v19 = (*(_BYTE *)(*v17 + v18) & 0x80) == 0;
- v109 = v16;
- if ( v19 )
- {
- v20 = sub_10006690(v108, v109, *(_BYTE *)(a2 + 80));
- v21 = *(float *)&v94;
- if ( dword_10036C7C )
- unknown_libname_9(*(_DWORD *)(a3 + 48));
- else
- v21 = v21 / *(float *)(a3 + 48);
- v22 = v20;
- v23 = *(_WORD *)(a3 + 76) >> 1;
- *(float *)&v94 = v21 + (double)*(signed __int16 *)(a2 + 98);
- v89 = *(signed __int16 *)(a2 + 100);
- v24 = (double)v23 + *(float *)&v94 + 0.5;
- v25 = *(_WORD *)(a3 + 78);
- *(float *)&v94 = v24;
- v26 = v95;
- if ( dword_10036C7C )
- unknown_libname_9(*(_DWORD *)(a3 + 48));
- else
- v26 = v26 / *(float *)(a3 + 48);
- v27 = *(_BYTE *)a1;
- v95 = v26 + (double)v89;
- v95 = (double)(signed __int16)(v25 >> 1) + v95 + 0.5;
- v28 = v96 - *(float *)(a3 + 56);
- v29 = __readeflags();
- v80 = v29;
- if ( dword_10036C7C )
- unknown_libname_9(LODWORD(v101));
- else
- v28 = v28 / v101;
- __writeeflags(v80);
- v30 = v19 ? v28 + (double)*(unsigned __int16 *)(a3 + 64) : (double)*(unsigned __int16 *)(a3 + 64) - v28;
- v96 = v30;
- v96 = (double)*(signed __int16 *)(a2 + 102) + v96;
- v31 = *(float *)(v22 + 8);
- if ( dword_10036C7C )
- unknown_libname_9(LODWORD(v109));
- else
- v31 = v31 / v109;
- v97 = v31;
- v32 = *(float *)(v22 + 8);
- if ( dword_10036C7C )
- unknown_libname_9(LODWORD(v101));
- else
- v32 = v32 / v101;
- v105 = v32 * *(float *)(a2 + 64);
- if ( sub_10007970((int)&v94, v97, a3) )
- {
- v85 = 0;
- }
- else
- {
- sub_100074D0((int)&v118, 36 * a4 + v106[2], (int)&v117);
- v33 = sub_100061C0((float *)&v117);
- v34 = *(_BYTE *)(a2 + 80);
- v85 = 1;
- v97 = v97 * v33;
- v105 = v33 * v105;
- sub_10004F50(a1, v22, (int)&v94, (int)&v117, a3 + 68, a2 + 68, v97, v105, v34);
- v102 = *(_DWORD *)(a1 + 8);
- v35 = *(_DWORD *)(a1 + 16);
- v103 = *(_DWORD *)(a1 + 12);
- v104 = v35;
- }
- if ( *(_BYTE *)(a2 + 81) )
- {
- sub_10007560((float *)&v119, (float *)(v113 + v106[1]), (float *)&v98);
- *(float *)&v98 = *(float *)(a2 + 64) * *(float *)&v98;
- v99 = *(float *)(a2 + 64) * v99;
- v100 = *(float *)(a2 + 64) * v100;
- *(float *)&v98 = v107 * *(float *)&v98;
- v99 = v107 * v99;
- sub_100075C0(&v110, (float *)&v98, (float *)&v94);
- v36 = *(float *)&v94;
- if ( dword_10036C7C )
- unknown_libname_9(*(_DWORD *)(a3 + 48));
- else
- v36 = v36 / *(float *)(a3 + 48);
- v37 = *(_WORD *)(a3 + 76) >> 1;
- *(float *)&v94 = v36 + (double)*(signed __int16 *)(a2 + 98);
- v90 = *(signed __int16 *)(a2 + 100);
- v38 = (double)v37 + *(float *)&v94 + 0.5;
- v39 = *(_WORD *)(a3 + 78);
- *(float *)&v94 = v38;
- v40 = v95;
- if ( dword_10036C7C )
- unknown_libname_9(*(_DWORD *)(a3 + 48));
- else
- v40 = v40 / *(float *)(a3 + 48);
- v41 = *(_BYTE *)a1;
- v95 = v40 + (double)v90;
- v95 = (double)(signed __int16)(v39 >> 1) + v95 + 0.5;
- v42 = v96 - *(float *)(a3 + 56);
- v43 = __readeflags();
- v81 = v43;
- if ( dword_10036C7C )
- unknown_libname_9(LODWORD(v101));
- else
- v42 = v42 / v101;
- __writeeflags(v81);
- v44 = v19 ? v42 + (double)*(unsigned __int16 *)(a3 + 64) : (double)*(unsigned __int16 *)(a3 + 64) - v42;
- v96 = v44;
- v96 = (double)*(signed __int16 *)(a2 + 102) + v96;
- if ( !sub_10007970((int)&v94, v97, a3) )
- {
- sub_100074D0((int)&v119, 36 * a4 + v106[2], (int)&v117);
- if ( !v85 )
- {
- v45 = sub_100061C0((float *)&v117);
- v97 = v97 * v45;
- v105 = v45 * v105;
- }
- sub_100053E0(a1, v22, (int)&v94, (int)&v117, a3 + 68, v97, v105, *(_BYTE *)(a2 + 80));
- if ( *(_WORD *)(a1 + 16) && *(_WORD *)(a1 + 18) )
- {
- if ( (signed __int16)v102 > *(_WORD *)(a1 + 8) )
- LOWORD(v102) = *(_WORD *)(a1 + 8);
- if ( SHIWORD(v102) > *(_WORD *)(a1 + 10) )
- HIWORD(v102) = *(_WORD *)(a1 + 10);
- if ( (signed __int16)v103 < *(_WORD *)(a1 + 12) )
- LOWORD(v103) = *(_WORD *)(a1 + 12);
- if ( SHIWORD(v103) < *(_WORD *)(a1 + 14) )
- HIWORD(v103) = *(_WORD *)(a1 + 14);
- }
- }
- }
- }
- LOWORD(v106) = 1;
- if ( *(_DWORD *)a2 > 1 )
- {
- do
- {
- v46 = (_DWORD *)(*(_DWORD *)(a2 + 8) + 12 * (signed __int16)v106);
- if ( !(*(_BYTE *)(*v46 + a4) & 0x80) )
- {
- v47 = *(float *)(a2 + 64);
- v48 = (float *)(v113 + v46[1]);
- v108 = *(_DWORD *)(*(_DWORD *)(a2 + 12) + 4 * (signed __int16)v106);
- *(float *)&v98 = v47 * *v48;
- v99 = v48[1] * *(float *)(a2 + 64);
- v100 = v48[2] * *(float *)(a2 + 64);
- sub_10005C30((int)&v98, (int)&v118, (int)&v114, v107, (int)&v94);
- v49 = sub_10006690(v108, v109, *(_BYTE *)(a2 + 80));
- v50 = *(float *)(v49 + 8);
- if ( dword_10036C7C )
- unknown_libname_9(LODWORD(v109));
- else
- v50 = v50 / v109;
- v51 = *(signed __int16 *)(a2 + 98);
- v108 = v49;
- v91 = v51;
- v52 = *(signed __int16 *)(a2 + 100);
- v97 = v50;
- v53 = *(float *)(v49 + 8);
- if ( dword_10036C7C )
- unknown_libname_9(LODWORD(v101));
- else
- v53 = v53 / v101;
- v54 = (signed __int16)(*(_WORD *)(a3 + 76) >> 1);
- v105 = v53 * *(float *)(a2 + 64);
- v55 = *(float *)&v94;
- if ( dword_10036C7C )
- unknown_libname_9(*(_DWORD *)(a3 + 48));
- else
- v55 = v55 / *(float *)(a3 + 48);
- *(float *)&v94 = v55 + (double)v91;
- v92 = v52;
- *(float *)&v94 = (double)v54 + *(float *)&v94 + 0.5;
- v56 = v95;
- if ( dword_10036C7C )
- unknown_libname_9(*(_DWORD *)(a3 + 48));
- else
- v56 = v56 / *(float *)(a3 + 48);
- v95 = v56 + (double)v92;
- v57 = *(_BYTE *)a1;
- v95 = (double)(signed __int16)(*(_WORD *)(a3 + 78) >> 1) + v95 + 0.5;
- v58 = v96 - *(float *)(a3 + 56);
- v59 = __readeflags();
- v82 = v59;
- if ( dword_10036C7C )
- unknown_libname_9(LODWORD(v101));
- else
- v58 = v58 / v101;
- __writeeflags(v82);
- if ( v19 )
- v60 = v58 + (double)*(unsigned __int16 *)(a3 + 64);
- else
- v60 = (double)*(unsigned __int16 *)(a3 + 64) - v58;
- v96 = v60;
- v96 = (double)*(signed __int16 *)(a2 + 102) + v96;
- if ( sub_10007970((int)&v94, v97, a3) )
- {
- v86 = 0;
- }
- else
- {
- sub_100074D0((int)&v118, 36 * a4 + v46[2], (int)&v117);
- v61 = sub_100061C0((float *)&v117);
- v86 = 1;
- v62 = *(_BYTE *)(a2 + 80);
- v97 = v61 * v97;
- sub_10004F50(a1, v108, (int)&v94, (int)&v117, a3 + 68, a2 + 68, v97, v105, v62);
- if ( *(_WORD *)(a1 + 16) && *(_WORD *)(a1 + 18) )
- {
- if ( (signed __int16)v102 > *(_WORD *)(a1 + 8) )
- LOWORD(v102) = *(_WORD *)(a1 + 8);
- if ( SHIWORD(v102) > *(_WORD *)(a1 + 10) )
- HIWORD(v102) = *(_WORD *)(a1 + 10);
- if ( (signed __int16)v103 < *(_WORD *)(a1 + 12) )
- LOWORD(v103) = *(_WORD *)(a1 + 12);
- if ( SHIWORD(v103) < *(_WORD *)(a1 + 14) )
- HIWORD(v103) = *(_WORD *)(a1 + 14);
- }
- }
- if ( *(_BYTE *)(a2 + 81) )
- {
- sub_10007560((float *)&v119, (float *)&v98, (float *)&v94);
- *(float *)&v94 = v107 * *(float *)&v94;
- v95 = v107 * v95;
- sub_100075C0(&v110, (float *)&v94, (float *)&v98);
- v63 = *(float *)&v98;
- if ( dword_10036C7C )
- unknown_libname_9(*(_DWORD *)(a3 + 48));
- else
- v63 = v63 / *(float *)(a3 + 48);
- v64 = *(signed __int16 *)(a2 + 100);
- v65 = (signed __int16)(*(_WORD *)(a3 + 76) >> 1);
- v66 = *(_BYTE *)a1;
- v67 = (signed __int16)(*(_WORD *)(a3 + 78) >> 1);
- *(float *)&v98 = v63 + (double)*(signed __int16 *)(a2 + 98);
- v68 = (double)v65;
- v93 = v64;
- *(float *)&v98 = v68 + *(float *)&v98 + 0.5;
- v69 = v99;
- v70 = __readeflags();
- v83 = v70;
- if ( dword_10036C7C )
- unknown_libname_9(*(_DWORD *)(a3 + 48));
- else
- v69 = v69 / *(float *)(a3 + 48);
- __writeeflags(v83);
- v99 = v69 + (double)v93;
- v99 = (double)v67 + v99 + 0.5;
- v71 = v100 - *(float *)(a3 + 56);
- v72 = __readeflags();
- v84 = v72;
- if ( dword_10036C7C )
- unknown_libname_9(LODWORD(v101));
- else
- v71 = v71 / v101;
- __writeeflags(v84);
- v73 = v19 ? v71 + (double)*(unsigned __int16 *)(a3 + 64) : (double)*(unsigned __int16 *)(a3 + 64) - v71;
- v100 = v73;
- v100 = (double)*(signed __int16 *)(a2 + 102) + v100;
- if ( !sub_10007970((int)&v98, v97, a3) )
- {
- sub_100074D0((int)&v119, 36 * a4 + v46[2], (int)&v117);
- if ( !v86 )
- {
- v74 = sub_100061C0((float *)&v117);
- v97 = v97 * v74;
- v105 = v74 * v105;
- }
- sub_100053E0(a1, v108, (int)&v98, (int)&v117, a3 + 68, v97, v105, *(_BYTE *)(a2 + 80));
- if ( *(_WORD *)(a1 + 16) && *(_WORD *)(a1 + 18) )
- {
- if ( (signed __int16)v102 > *(_WORD *)(a1 + 8) )
- LOWORD(v102) = *(_WORD *)(a1 + 8);
- if ( SHIWORD(v102) > *(_WORD *)(a1 + 10) )
- HIWORD(v102) = *(_WORD *)(a1 + 10);
- if ( (signed __int16)v103 < *(_WORD *)(a1 + 12) )
- LOWORD(v103) = *(_WORD *)(a1 + 12);
- if ( SHIWORD(v103) < *(_WORD *)(a1 + 14) )
- HIWORD(v103) = *(_WORD *)(a1 + 14);
- }
- }
- }
- }
- LOWORD(v106) = (_WORD)v106 + 1;
- }
- while ( (signed int)(signed __int16)v106 < *(_DWORD *)a2 );
- }
- if ( (signed __int16)v103 < 0 || SHIWORD(v103) < 0 )
- {
- v75 = 0;
- LOWORD(v104) = 0;
- }
- else
- {
- LOWORD(v104) = v103 - v102 + 1;
- v75 = HIWORD(v103) - HIWORD(v102) + 1;
- }
- HIWORD(v104) = v75;
- v76 = (_DWORD *)(a1 + 8);
- result = v102;
- v78 = v103;
- v79 = v104;
- *v76 = v102;
- v76[1] = v78;
- v76[2] = v79;
- byte_1002A2B8 = 0;
- return result;
- }
- // 10010CBC: using guessed type double __stdcall unknown_libname_9(_DWORD);
- // 10010D88: using guessed type double __stdcall unknown_libname_12(_DWORD);
- // 10010DBC: using guessed type double __stdcall unknown_libname_13(_DWORD);
- // 1002A170: using guessed type float flt_1002A170;
- // 1002A17C: using guessed type float flt_1002A17C;
- // 1002A2B8: using guessed type char byte_1002A2B8;
- // 10036C7C: using guessed type int dword_10036C7C;
- //----- (10004F50) --------------------------------------------------------
- int __cdecl sub_10004F50(int a1, int a2, int a3, int a4, int a5, int a6, float a7, float a8, char a9)
- {
- int v9; // edx@1
- float v10; // ebx@1
- bool v11; // zf@1
- int result; // eax@3
- double v13; // st7@7
- int v14; // ebp@11
- int v15; // edx@11
- __int16 v16; // ax@23
- signed __int16 *v17; // edi@26
- int v18; // eax@48
- __int16 v19; // ax@51
- _DWORD *v20; // esi@53
- int v21; // edx@53
- int v22; // ecx@53
- int v23; // ecx@61
- float v24; // [esp+10h] [ebp-48h]@3
- int v25; // [esp+14h] [ebp-44h]@11
- int v26; // [esp+18h] [ebp-40h]@11
- int v27; // [esp+1Ch] [ebp-3Ch]@11
- __int16 v28; // [esp+20h] [ebp-38h]@26
- __int16 v29; // [esp+22h] [ebp-36h]@26
- __int16 v30; // [esp+24h] [ebp-34h]@26
- __int16 v31; // [esp+26h] [ebp-32h]@26
- __int16 v32; // [esp+28h] [ebp-30h]@51
- __int16 v33; // [esp+2Ah] [ebp-2Eh]@53
- int v34; // [esp+2Ch] [ebp-2Ch]@27
- int v35; // [esp+30h] [ebp-28h]@27
- float v36; // [esp+34h] [ebp-24h]@27
- float v37; // [esp+38h] [ebp-20h]@27
- int v38; // [esp+3Ch] [ebp-1Ch]@1
- int v39; // [esp+40h] [ebp-18h]@1
- float v40; // [esp+44h] [ebp-14h]@1
- unsigned int v41; // [esp+48h] [ebp-10h]@26
- float v42; // [esp+4Ch] [ebp-Ch]@27
- float v43; // [esp+50h] [ebp-8h]@27
- float v44; // [esp+54h] [ebp-4h]@27
- v9 = *(_DWORD *)(a3 + 4);
- v10 = *(float *)(a3 + 8);
- v11 = (*(_BYTE *)a1 & 1) == 0;
- v38 = *(_DWORD *)a3;
- v39 = v9;
- v40 = v10;
- if ( !v11 )
- v40 = 65535.0 - v40;
- result = LODWORD(a7);
- v24 = a7;
- if ( a9 )
- {
- if ( a9 != 2 )
- goto LABEL_11;
- if ( SLODWORD(a7) > 1068827777 )
- return result;
- v13 = a7 * 0.5;
- goto LABEL_10;
- }
- if ( SLODWORD(a7) > 1060439169 )
- {
- v13 = a7 * 1.4142271;
- LABEL_10:
- v24 = v13;
- }
- LABEL_11:
- v11 = *(_WORD *)(a1 + 28) == 0;
- v14 = *(_DWORD *)(a5 + 4);
- v15 = *(_DWORD *)(a5 + 8);
- v25 = *(_DWORD *)a5;
- v26 = v14;
- v27 = v15;
- if ( !v11 && *(_WORD *)(a1 + 30) )
- {
- if ( (signed __int16)v25 < *(_WORD *)(a1 + 20) )
- LOWORD(v25) = *(_WORD *)(a1 + 20);
- if ( SHIWORD(v25) < *(_WORD *)(a1 + 22) )
- HIWORD(v25) = *(_WORD *)(a1 + 22);
- if ( (signed __int16)v26 > *(_WORD *)(a1 + 24) )
- LOWORD(v26) = *(_WORD *)(a1 + 24);
- if ( SHIWORD(v26) > *(_WORD *)(a1 + 26) )
- HIWORD(v26) = *(_WORD *)(a1 + 26);
- }
- if ( (signed __int16)v26 < 0 || SHIWORD(v26) < 0 )
- {
- v16 = 0;
- LOWORD(v27) = 0;
- }
- else
- {
- LOWORD(v27) = v26 - v25 + 1;
- v16 = HIWORD(v26) - HIWORD(v25) + 1;
- }
- HIWORD(v27) = v16;
- if ( *(_BYTE *)a2 & 2 )
- {
- v17 = (signed __int16 *)(a2 + 42);
- v28 = 0x7FFF;
- v41 = 0;
- v11 = *(_DWORD *)(a2 + 38) == 0;
- v29 = 0x7FFF;
- v30 = -1;
- v31 = -1;
- if ( !v11 )
- {
- do
- {
- v34 = *v17;
- *(float *)&v35 = (double)v34;
- v34 = v17[1];
- v36 = (double)v34;
- v34 = v17[2];
- v37 = (double)v34;
- sub_10007560((float *)a4, (float *)&v35, &v42);
- v42 = v42 * a7;
- v43 = v43 * a7;
- v44 = v44 * a8;
- sub_100075C0((float *)&v38, &v42, (float *)&v35);
- if ( a9 )
- {
- if ( a9 == 1 )
- {
- sub_1000A3D0((int)v17, a4, a7, a8, (int)&v35, a6);
- if ( SLODWORD(v24) <= 1065353216 )
- sub_10007E30(a1, (float *)&v35, &v25);
- else
- sub_100082A0(a1, (int)&v35, (int)&v25, v24);
- }
- else if ( a9 == 2 )
- {
- sub_1000A580((int)v17, a4, v24, a8, (int)&v35, a6);
- sub_10008940((int)&v25, a1, a1, (float *)&v35, &v25);
- }
- }
- else
- {
- sub_1000A230((int)v17, a4, a7, a8, (int)&v35, a6);
- if ( SLODWORD(v24) <= 1065353216 )
- sub_10007E30(a1, (float *)&v35, &v25);
- else
- sub_100082A0(a1, (int)&v35, (int)&v25, v24);
- }
- if ( *(_WORD *)(a1 + 16) && *(_WORD *)(a1 + 18) )
- {
- if ( v28 > *(_WORD *)(a1 + 8) )
- v28 = *(_WORD *)(a1 + 8);
- if ( v29 > *(_WORD *)(a1 + 10) )
- v29 = *(_WORD *)(a1 + 10);
- if ( v30 < *(_WORD *)(a1 + 12) )
- v30 = *(_WORD *)(a1 + 12);
- if ( v31 < *(_WORD *)(a1 + 14) )
- v31 = *(_WORD *)(a1 + 14);
- }
- v18 = *((_DWORD *)v17 + 6);
- v41 += v18;
- v17 = (signed __int16 *)((char *)v17 + 3 * v18 + 32);
- }
- while ( *(_DWORD *)(a2 + 38) > v41 );
- }
- if ( v30 < 0 || v31 < 0 )
- {
- v19 = 0;
- v32 = 0;
- }
- else
- {
- v32 = v30 - v28 + 1;
- v19 = v31 - v29 + 1;
- }
- v33 = v19;
- v20 = (_DWORD *)(a1 + 8);
- result = *(_DWORD *)&v28;
- v21 = *(_DWORD *)&v30;
- v22 = *(_DWORD *)&v32;
- *v20 = *(_DWORD *)&v28;
- v20[1] = v21;
- v20[2] = v22;
- }
- else
- {
- if ( a9 )
- {
- if ( a9 == 1 )
- {
- sub_10009F20(a2, a4, a7, a8, (int)&v38, a6);
- }
- else if ( a9 == 2 )
- {
- sub_1000A0D0(a2, a4, v24, a8, (int)&v38, a6);
- return sub_10008940(v23, a1, a1, (float *)a3, &v25);
- }
- }
- else
- {
- sub_10009D80(a2, a4, a7, a8, (int)&v38, a6);
- }
- if ( SLODWORD(v24) <= 1065353216 )
- result = sub_10007E30(a1, (float *)&v38, &v25);
- else
- result = sub_100082A0(a1, (int)&v38, (int)&v25, v24);
- }
- return result;
- }
- //----- (100053E0) --------------------------------------------------------
- int __cdecl sub_100053E0(int a1, int a2, int a3, int a4, int a5, float a6, float a7, char a8)
- {
- int v8; // ebx@1
- float v9; // ecx@1
- bool v10; // zf@1
- int result; // eax@3
- int v12; // ebp@6
- int v13; // ecx@6
- __int16 v14; // ax@18
- signed __int16 *v15; // ebp@21
- int v16; // eax@39
- __int16 v17; // ax@42
- _DWORD *v18; // esi@44
- int v19; // edx@44
- int v20; // ecx@44
- int v21; // [esp+10h] [ebp-48h]@6
- int v22; // [esp+14h] [ebp-44h]@6
- int v23; // [esp+18h] [ebp-40h]@6
- __int16 v24; // [esp+1Ch] [ebp-3Ch]@21
- __int16 v25; // [esp+1Eh] [ebp-3Ah]@21
- __int16 v26; // [esp+20h] [ebp-38h]@21
- __int16 v27; // [esp+22h] [ebp-36h]@21
- __int16 v28; // [esp+24h] [ebp-34h]@42
- __int16 v29; // [esp+26h] [ebp-32h]@44
- int v30; // [esp+28h] [ebp-30h]@22
- float v31; // [esp+2Ch] [ebp-2Ch]@3
- int v32; // [esp+30h] [ebp-28h]@22
- float v33; // [esp+34h] [ebp-24h]@22
- float v34; // [esp+38h] [ebp-20h]@22
- int v35; // [esp+3Ch] [ebp-1Ch]@1
- int v36; // [esp+40h] [ebp-18h]@1
- float v37; // [esp+44h] [ebp-14h]@1
- unsigned int v38; // [esp+48h] [ebp-10h]@21
- float v39; // [esp+4Ch] [ebp-Ch]@22
- float v40; // [esp+50h] [ebp-8h]@22
- float v41; // [esp+54h] [ebp-4h]@22
- v8 = *(_DWORD *)(a3 + 4);
- v9 = *(float *)(a3 + 8);
- v35 = *(_DWORD *)a3;
- v36 = v8;
- v10 = (*(_BYTE *)a1 & 1) == 0;
- v37 = v9;
- if ( !v10 )
- v37 = 65535.0 - v37;
- result = LODWORD(a6);
- v31 = a6;
- if ( a8 == 2 )
- {
- if ( SLODWORD(a6) > 1068827777 )
- return result;
- v31 = a6 * 0.5;
- }
- v10 = *(_WORD *)(a1 + 28) == 0;
- v12 = *(_DWORD *)(a5 + 4);
- v13 = *(_DWORD *)(a5 + 8);
- v21 = *(_DWORD *)a5;
- v22 = v12;
- v23 = v13;
- if ( !v10 && *(_WORD *)(a1 + 30) )
- {
- if ( (signed __int16)v21 < *(_WORD *)(a1 + 20) )
- LOWORD(v21) = *(_WORD *)(a1 + 20);
- if ( SHIWORD(v21) < *(_WORD *)(a1 + 22) )
- HIWORD(v21) = *(_WORD *)(a1 + 22);
- if ( (signed __int16)v22 > *(_WORD *)(a1 + 24) )
- LOWORD(v22) = *(_WORD *)(a1 + 24);
- if ( SHIWORD(v22) > *(_WORD *)(a1 + 26) )
- HIWORD(v22) = *(_WORD *)(a1 + 26);
- }
- if ( (signed __int16)v22 < 0 || SHIWORD(v22) < 0 )
- {
- v14 = 0;
- LOWORD(v23) = 0;
- }
- else
- {
- LOWORD(v23) = v22 - v21 + 1;
- v14 = HIWORD(v22) - HIWORD(v21) + 1;
- }
- HIWORD(v23) = v14;
- if ( *(_BYTE *)a2 & 2 )
- {
- v24 = 0x7FFF;
- v15 = (signed __int16 *)(a2 + 42);
- v25 = 0x7FFF;
- v38 = 0;
- v10 = *(_DWORD *)(a2 + 38) == 0;
- v26 = -1;
- v27 = -1;
- if ( !v10 )
- {
- do
- {
- v30 = *v15;
- *(float *)&v32 = (double)v30;
- v30 = v15[1];
- v33 = (double)v30;
- v30 = v15[2];
- v34 = (double)v30;
- sub_10007560((float *)a4, (float *)&v32, &v39);
- v39 = v39 * a6;
- v40 = v40 * a6;
- v41 = v41 * a7;
- sub_100075C0((float *)&v35, &v39, (float *)&v32);
- if ( (signed int)(unsigned __int8)a8 <= 1 )
- {
- sub_1000A880((int)v15, a4, a6, a7, (int)&v32);
- if ( SLODWORD(v31) <= 1065353216 )
- sub_10008DE0(a1, (float *)&v32, &v21);
- else
- sub_10009250(a1, (int)&v32, (int)&v21, v31);
- }
- else if ( a8 == 2 )
- {
- sub_1000A880((int)v15, a4, v31, a7, (int)&v32);
- sub_100098E0((int)&v21, a1, a1, (float *)&v32, &v21);
- }
- if ( *(_WORD *)(a1 + 16) && *(_WORD *)(a1 + 18) )
- {
- if ( v24 > *(_WORD *)(a1 + 8) )
- v24 = *(_WORD *)(a1 + 8);
- if ( v25 > *(_WORD *)(a1 + 10) )
- v25 = *(_WORD *)(a1 + 10);
- if ( v26 < *(_WORD *)(a1 + 12) )
- v26 = *(_WORD *)(a1 + 12);
- if ( v27 < *(_WORD *)(a1 + 14) )
- v27 = *(_WORD *)(a1 + 14);
- }
- v16 = *((_DWORD *)v15 + 6);
- v38 += v16;
- v15 = (signed __int16 *)((char *)v15 + 3 * v16 + 32);
- }
- while ( *(_DWORD *)(a2 + 38) > v38 );
- }
- if ( v26 < 0 || v27 < 0 )
- {
- v17 = 0;
- v28 = 0;
- }
- else
- {
- v28 = v26 - v24 + 1;
- v17 = v27 - v25 + 1;
- }
- v29 = v17;
- v18 = (_DWORD *)(a1 + 8);
- result = *(_DWORD *)&v24;
- v19 = *(_DWORD *)&v26;
- v20 = *(_DWORD *)&v28;
- *v18 = *(_DWORD *)&v24;
- v18[1] = v19;
- v18[2] = v20;
- }
- else if ( a8 == 2 )
- {
- sub_1000A6E0(a2, a4, v31, a7, (int)&v35);
- result = sub_100098E0((int)&v35, a1, a1, (float *)&v35, &v21);
- }
- else
- {
- sub_1000A6E0(a2, a4, a6, a7, (int)&v35);
- if ( SLODWORD(a6) <= 1065353216 )
- result = sub_10008DE0(a1, (float *)&v35, &v21);
- else
- result = sub_10009250(a1, (int)&v35, (int)&v21, a6);
- }
- return result;
- }
- //----- (10005960) --------------------------------------------------------
- int __cdecl sub_10005960(int a1, __int16 a2, float *a3, float *a4)
- {
- int v4; // ebp@3
- int v5; // ST2C_4@3
- float v6; // ST30_4@3
- double v7; // st7@3
- double v8; // st7@3
- double v9; // st7@3
- float v10; // edx@16
- float v11; // ecx@16
- float v12; // edx@16
- float v13; // ecx@16
- int result; // eax@17
- __int16 v15; // [esp+12h] [ebp-7Eh]@1
- float v16; // [esp+1Ch] [ebp-74h]@3
- float v17; // [esp+20h] [ebp-70h]@3
- float v18; // [esp+24h] [ebp-6Ch]@3
- float v19; // [esp+28h] [ebp-68h]@3
- float v20; // [esp+2Ch] [ebp-64h]@12
- float v21; // [esp+30h] [ebp-60h]@14
- int v22; // [esp+34h] [ebp-5Ch]@3
- float v23; // [esp+38h] [ebp-58h]@3
- float v24; // [esp+3Ch] [ebp-54h]@3
- int v25; // [esp+40h] [ebp-50h]@2
- int v26; // [esp+44h] [ebp-4Ch]@2
- float v27; // [esp+48h] [ebp-48h]@3
- float v28; // [esp+4Ch] [ebp-44h]@3
- float v29; // [esp+50h] [ebp-40h]@3
- float v30; // [esp+54h] [ebp-3Ch]@3
- float v31; // [esp+58h] [ebp-38h]@3
- float v32; // [esp+5Ch] [ebp-34h]@3
- int v33; // [esp+60h] [ebp-30h]@3
- float v34; // [esp+6Ch] [ebp-24h]@3
- float v35; // [esp+70h] [ebp-20h]@3
- float v36; // [esp+74h] [ebp-1Ch]@3
- float v37; // [esp+78h] [ebp-18h]@3
- float v38; // [esp+7Ch] [ebp-14h]@3
- float v39; // [esp+80h] [ebp-10h]@3
- float v40; // [esp+84h] [ebp-Ch]@3
- float v41; // [esp+88h] [ebp-8h]@3
- float v42; // [esp+8Ch] [ebp-4h]@3
- v15 = 0;
- if ( *(_DWORD *)a1 > 0 )
- {
- v25 = 12 * a2;
- v26 = 36 * a2;
- do
- {
- v4 = *(_DWORD *)(*(_DWORD *)(a1 + 12) + 4 * v15);
- v5 = *(_DWORD *)(a1 + 8) + 12 * v15;
- v6 = *(float *)(v4 + 8) * *(float *)(a1 + 64);
- sub_10007560((float *)(a1 + 28), (float *)(v25 + *(_DWORD *)(v5 + 4)), (float *)&v22);
- sub_10007620((int)&v22, *(float *)(a1 + 64), (int)&v33);
- sub_100075C0((float *)&v33, (float *)(a1 + 16), (float *)&v22);
- sub_100074D0(a1 + 28, v26 + *(_DWORD *)(v5 + 8), (int)&v34);
- v16 = (double)*(signed __int16 *)(v4 + 26) * v6;
- v17 = (double)*(signed __int16 *)(v4 + 28) * v6;
- v18 = (double)*(signed __int16 *)(v4 + 30) * v6;
- sub_10007560(&v34, &v16, &v19);
- sub_100075C0(&v19, (float *)&v22, (float *)&v33);
- v7 = (double)*(signed __int16 *)(v4 + 20) * v6;
- *(float *)&v22 = v34 * v7;
- v23 = v37 * v7;
- v24 = v7 * v40;
- v8 = (double)*(signed __int16 *)(v4 + 22) * v6;
- v30 = v35 * v8;
- v31 = v38 * v8;
- v32 = v8 * v41;
- v9 = (double)*(signed __int16 *)(v4 + 24) * v6;
- v27 = v36 * v9;
- v28 = v39 * v9;
- v29 = v9 * v42;
- sub_10005D50((float *)&v33, (float *)&v22, &v30, &v27, &v16, &v19);
- if ( v15 )
- {
- if ( *a3 > (double)v16 )
- *a3 = v16;
- if ( a3[1] > (double)v17 )
- a3[1] = v17;
- if ( a3[2] > (double)v18 )
- a3[2] = v18;
- if ( *a4 < (double)v19 )
- *a4 = v19;
- if ( a4[1] < (double)v20 )
- a4[1] = v20;
- if ( a4[2] < (double)v21 )
- a4[2] = v21;
- }
- else
- {
- v10 = v17;
- v11 = v18;
- *a3 = v16;
- a3[1] = v10;
- a3[2] = v11;
- v12 = v20;
- v13 = v21;
- *a4 = v19;
- a4[1] = v12;
- a4[2] = v13;
- }
- result = ++v15;
- }
- while ( (signed int)v15 < *(_DWORD *)a1 );
- }
- return result;
- }
- //----- (10005C30) --------------------------------------------------------
- float *__cdecl sub_10005C30(int a1, int a2, int a3, float a4, int a5)
- {
- float *v5; // esi@1
- float *result; // eax@1
- char v7; // [esp+4h] [ebp-Ch]@1
- sub_100075F0((float *)a1, (float *)a3, (float *)&v7);
- v5 = (float *)a5;
- result = sub_10007560((float *)a2, (float *)&v7, (float *)a5);
- *v5 = *v5 * a4;
- v5[1] = v5[1] * a4;
- return result;
- }
- //----- (10005C80) --------------------------------------------------------
- double __cdecl sub_10005C80(float *a1, float *a2, float *a3, float a4, int a5)
- {
- double v6; // st7@5
- float v7; // [esp+4h] [ebp-Ch]@1
- sub_100075F0(a1, a3, &v7);
- sub_10007560(a2, &v7, (float *)a5);
- if ( *(_DWORD *)(a5 + 8) <= 0 )
- return 1.0;
- if ( SLODWORD(a4) > 0 )
- {
- v6 = *(float *)(a5 + 8) * a4 + 1.0;
- if ( dword_10036C7C )
- unknown_libname_13(1065353216);
- else
- v6 = 1.0 / v6;
- v7 = v6;
- }
- else
- {
- v7 = 1.0;
- }
- *(float *)a5 = *(float *)a5 * v7;
- *(float *)(a5 + 4) = *(float *)(a5 + 4) * v7;
- return v7;
- }
- // 10010DBC: using guessed type double __stdcall unknown_libname_13(_DWORD);
- // 10036C7C: using guessed type int dword_10036C7C;
- //----- (10005D20) --------------------------------------------------------
- unsigned int __cdecl sub_10005D20(const char *a1)
- {
- unsigned int result; // eax@1
- result = strlen(a1) + 1;
- qmemcpy(&unk_10039E00, a1, result);
- return result;
- }
- //----- (10005D50) --------------------------------------------------------
- void __cdecl sub_10005D50(float *a1, float *a2, float *a3, float *a4, float *a5, float *a6)
- {
- float v6; // [esp+Ch] [ebp-Ch]@1
- float v7; // [esp+10h] [ebp-8h]@3
- float v8; // [esp+14h] [ebp-4h]@5
- *a5 = *a1;
- a5[1] = a1[1];
- a5[2] = a1[2];
- *a6 = *a1;
- a6[1] = a1[1];
- a6[2] = a1[2];
- sub_100075C0(a1, a2, &v6);
- if ( *a5 > (double)v6 )
- *a5 = v6;
- if ( a5[1] > (double)v7 )
- a5[1] = v7;
- if ( a5[2] > (double)v8 )
- a5[2] = v8;
- if ( *a6 < (double)v6 )
- *a6 = v6;
- if ( a6[1] < (double)v7 )
- a6[1] = v7;
- if ( a6[2] < (double)v8 )
- a6[2] = v8;
- v6 = *a3 + v6;
- v7 = a3[1] + v7;
- v8 = a3[2] + v8;
- if ( *a5 > (double)v6 )
- *a5 = v6;
- if ( a5[1] > (double)v7 )
- a5[1] = v7;
- if ( a5[2] > (double)v8 )
- a5[2] = v8;
- if ( *a6 < (double)v6 )
- *a6 = v6;
- if ( a6[1] < (double)v7 )
- a6[1] = v7;
- if ( a6[2] < (double)v8 )
- a6[2] = v8;
- v6 = v6 - *a2;
- v7 = v7 - a2[1];
- v8 = v8 - a2[2];
- if ( *a5 > (double)v6 )
- *a5 = v6;
- if ( a5[1] > (double)v7 )
- a5[1] = v7;
- if ( a5[2] > (double)v8 )
- a5[2] = v8;
- if ( *a6 < (double)v6 )
- *a6 = v6;
- if ( a6[1] < (double)v7 )
- a6[1] = v7;
- if ( a6[2] < (double)v8 )
- a6[2] = v8;
- v6 = *a4 + v6;
- v7 = a4[1] + v7;
- v8 = a4[2] + v8;
- if ( *a5 > (double)v6 )
- *a5 = v6;
- if ( a5[1] > (double)v7 )
- a5[1] = v7;
- if ( a5[2] > (double)v8 )
- a5[2] = v8;
- if ( *a6 < (double)v6 )
- *a6 = v6;
- if ( a6[1] < (double)v7 )
- a6[1] = v7;
- if ( a6[2] < (double)v8 )
- a6[2] = v8;
- v6 = *a2 + v6;
- v7 = a2[1] + v7;
- v8 = a2[2] + v8;
- if ( *a5 > (double)v6 )
- *a5 = v6;
- if ( a5[1] > (double)v7 )
- a5[1] = v7;
- if ( a5[2] > (double)v8 )
- a5[2] = v8;
- if ( *a6 < (double)v6 )
- *a6 = v6;
- if ( a6[1] < (double)v7 )
- a6[1] = v7;
- if ( a6[2] < (double)v8 )
- a6[2] = v8;
- v6 = v6 - *a3;
- v7 = v7 - a3[1];
- v8 = v8 - a3[2];
- if ( *a5 > (double)v6 )
- *a5 = v6;
- if ( a5[1] > (double)v7 )
- a5[1] = v7;
- if ( a5[2] > (double)v8 )
- a5[2] = v8;
- if ( *a6 < (double)v6 )
- *a6 = v6;
- if ( a6[1] < (double)v7 )
- a6[1] = v7;
- if ( a6[2] < (double)v8 )
- a6[2] = v8;
- v6 = v6 - *a2;
- v7 = v7 - a2[1];
- v8 = v8 - a2[2];
- if ( *a5 > (double)v6 )
- *a5 = v6;
- if ( a5[1] > (double)v7 )
- a5[1] = v7;
- if ( a5[2] > (double)v8 )
- a5[2] = v8;
- if ( *a6 < (double)v6 )
- *a6 = v6;
- if ( a6[1] < (double)v7 )
- a6[1] = v7;
- if ( a6[2] < (double)v8 )
- a6[2] = v8;
- }
- //----- (100061C0) --------------------------------------------------------
- double __cdecl sub_100061C0(float *a1)
- {
- float *v1; // ecx@1
- int v2; // eax@1
- double v4; // st7@5
- double v5; // st6@6
- float v6; // ST04_4@10
- char v8; // c3@10
- double v9; // st6@14
- int v10; // ST00_4@16
- float v11; // [esp+0h] [ebp-Ch]@1
- float v12; // [esp+0h] [ebp-Ch]@10
- float v13; // [esp+4h] [ebp-8h]@1
- float v14; // [esp+8h] [ebp-4h]@1
- v1 = a1;
- v11 = *a1 * *a1 + a1[1] * a1[1] + a1[2] * a1[2];
- v14 = a1[3] * a1[3] + a1[4] * a1[4] + a1[5] * a1[5];
- HIWORD(v2) = 16257;
- v13 = a1[6] * a1[6] + a1[7] * a1[7] + a1[8] * a1[8];
- if ( SLODWORD(v11) < 1065437102 && SLODWORD(v14) < 1065437102 && SLODWORD(v13) < 1065437102 )
- return 1.0;
- v4 = v13;
- if ( v14 >= (double)v11 )
- {
- v5 = v14;
- if ( v14 < v4 )
- goto LABEL_10;
- }
- else
- {
- v5 = v11;
- if ( v11 < v4 )
- goto LABEL_10;
- }
- v4 = v5;
- LABEL_10:
- v6 = v4;
- v12 = sqrt(v6);
- if ( v8 )
- return 1.0;
- LOWORD(v2) = 9;
- while ( 1 )
- {
- v9 = *v1;
- if ( dword_10036C7C )
- {
- unknown_libname_6(v1, v2);
- v2 = v10;
- }
- else
- {
- v9 = v9 / v12;
- }
- ++v1;
- LOWORD(v2) = v2 - 1;
- if ( !(_WORD)v2 )
- break;
- *(v1 - 1) = v9;
- }
- *(v1 - 1) = v9;
- return v12;
- }
- // 100107F7: using guessed type int __thiscall unknown_libname_6(_DWORD, _DWORD);
- // 10036C7C: using guessed type int dword_10036C7C;
- //----- (100063D0) --------------------------------------------------------
- void *__cdecl sub_100063D0(int a1)
- {
- void *result; // eax@2
- int v2; // ebx@5
- void *v3; // [esp+Ch] [ebp-Ch]@5
- int v4; // [esp+10h] [ebp-8h]@1
- int v5; // [esp+14h] [ebp-4h]@5
- if ( sub_10006840(a1, (int)&v4, 8) )
- return 0;
- if ( v4 == 5396035 )
- {
- v2 = v5 - 8;
- if ( sub_10006810(44, (int *)&v3) )
- {
- result = 0;
- }
- else
- {
- memset(v3, 0, 0x2Cu);
- while ( v2 )
- {
- if ( sub_10006840(a1, (int)&v4, 8) )
- return 0;
- v2 -= v5;
- if ( v2 < 0 )
- {
- sub_10006880(off_1002A26C[0]);
- return 0;
- }
- if ( v4 > 0x2000000 )
- {
- if ( v4 == 50331648 )
- {
- if ( sub_10006940(a1, (int *)v3, v5) )
- return 0;
- }
- else
- {
- if ( v4 != 0x4000000 )
- {
- LABEL_14:
- sub_10006880(off_1002A26C[0]);
- return 0;
- }
- if ( sub_10006AE0(a1, (int *)v3, v5) )
- return 0;
- }
- }
- else if ( v4 == 0x2000000 )
- {
- if ( sub_100068E0(a1, (int)v3, v5) )
- return 0;
- }
- else
- {
- if ( v4 != 0x1000000 )
- goto LABEL_14;
- if ( (unsigned __int16)sub_100068B0(a1, (int)v3) )
- return 0;
- }
- }
- result = v3;
- }
- }
- else
- {
- sub_10006880(off_1002A26C[0]);
- result = 0;
- }
- return result;
- }
- // 1002A26C: using guessed type char *off_1002A26C[4];
- //----- (10006570) --------------------------------------------------------
- int __cdecl sub_10006570(_DWORD *a1)
- {
- int result; // eax@7
- int v2; // edi@9
- int v3; // ebx@11
- int v4; // ebx@14
- int v5; // edi@16
- int v6; // edi@25
- int i; // ebx@26
- if ( a1[1] )
- dword_10039FF4(a1[1]);
- if ( a1[2] )
- dword_10039FF4(a1[2]);
- if ( a1[3] )
- dword_10039FF4(a1[3]);
- result = a1[5];
- if ( result )
- result = dword_10039FF4(a1[5]);
- v2 = 0;
- if ( a1[8] )
- {
- if ( a1[7] > 0 )
- {
- v3 = 0;
- do
- {
- v3 += 4;
- ++v2;
- dword_10039FF4(*(_DWORD *)(a1[8] + v3 - 4));
- }
- while ( a1[7] > v2 );
- }
- result = dword_10039FF4(a1[8]);
- }
- v4 = 0;
- if ( a1[10] )
- {
- if ( a1[7] > 0 )
- {
- v5 = 0;
- do
- {
- if ( *(_DWORD *)(a1[10] + v5) )
- dword_10039FF4(*(_DWORD *)(a1[10] + v5));
- if ( *(_DWORD *)(a1[10] + v5 + 4) )
- dword_10039FF4(*(_DWORD *)(a1[10] + v5 + 4));
- if ( *(_DWORD *)(a1[10] + v5 + 8) )
- dword_10039FF4(*(_DWORD *)(a1[10] + v5 + 8));
- v5 += 12;
- ++v4;
- }
- while ( a1[7] > v4 );
- }
- result = dword_10039FF4(a1[10]);
- }
- v6 = 0;
- if ( a1[9] )
- {
- for ( i = 0; a1[7] > i; ++i )
- {
- if ( *(_DWORD *)(a1[9] + v6) )
- dword_10039FF4(*(_DWORD *)(a1[9] + v6));
- v6 += 4;
- }
- result = dword_10039FF4(a1[9]);
- }
- return result;
- }
- // 10039FF4: using guessed type int (__cdecl *dword_10039FF4)(_DWORD);
- //----- (10006690) --------------------------------------------------------
- int __cdecl sub_10006690(int a1, float a2, char a3)
- {
- double v3; // st7@4
- int v4; // edx@7
- double v5; // st7@8
- int v6; // ecx@10
- if ( !a3 )
- {
- v3 = a2 * 0.70709997;
- LABEL_6:
- a2 = v3;
- goto LABEL_7;
- }
- if ( a3 == 2 )
- {
- v3 = a2 * 1.4141999;
- goto LABEL_6;
- }
- LABEL_7:
- v4 = a1;
- if ( *(_BYTE *)a1 & 1 )
- {
- v5 = a2;
- do
- {
- if ( v5 <= *(float *)(v4 + 8) )
- break;
- v6 = v4 + *(_DWORD *)(v4 + 12);
- if ( v5 < *(float *)(v6 + 8) )
- break;
- v4 += *(_DWORD *)(v4 + 12);
- }
- while ( *(_BYTE *)v6 & 1 );
- }
- return v4;
- }
- //----- (10006810) --------------------------------------------------------
- signed __int16 __cdecl sub_10006810(int a1, int *a2)
- {
- int v2; // eax@1
- v2 = dword_10039FF0(a1);
- *a2 = v2;
- if ( v2 )
- return 0;
- sub_10006880(off_1002A274[0]);
- return -1;
- }
- // 1002A274: using guessed type char *off_1002A274[2];
- // 10039FF0: using guessed type int (__cdecl *dword_10039FF0)(_DWORD);
- //----- (10006840) --------------------------------------------------------
- signed __int16 __cdecl sub_10006840(int a1, int a2, int a3)
- {
- if ( dword_10039FF8(a1, a2, a3) == a3 )
- return 0;
- sub_10006880(off_1002A270[0]);
- return -1;
- }
- // 1002A270: using guessed type char *off_1002A270[3];
- // 10039FF8: using guessed type int (__cdecl *dword_10039FF8)(_DWORD, _DWORD, _DWORD);
- //----- (10006880) --------------------------------------------------------
- unsigned int __cdecl sub_10006880(const char *a1)
- {
- unsigned int result; // eax@1
- result = strlen(a1) + 1;
- qmemcpy(&unk_10039E00, a1, result);
- return result;
- }
- //----- (100068B0) --------------------------------------------------------
- int __cdecl sub_100068B0(int a1, int a2)
- {
- return ((unsigned __int16)sub_10006840(a1, a2, 4) < 1u) - 1;
- }
- //----- (100068E0) --------------------------------------------------------
- signed __int16 __cdecl sub_100068E0(int a1, int a2, int a3)
- {
- int v3; // esi@1
- int *v4; // edi@1
- v3 = a3 - 8;
- v4 = (int *)(a2 + 4);
- if ( sub_10006810(a3 - 8 + 1, (int *)(a2 + 4)) )
- return -1;
- if ( sub_10006840(a1, *v4, v3) )
- return -1;
- *(_BYTE *)(*v4 + v3) = 0;
- return 0;
- }
- //----- (10006940) --------------------------------------------------------
- signed __int16 __cdecl sub_10006940(int a1, int *a2, int a3)
- {
- int v3; // ebx@1
- int v5; // ebp@9
- int v6; // ebp@12
- int v7; // ebp@15
- int v8; // [esp+10h] [ebp-8h]@3
- int v9; // [esp+14h] [ebp-4h]@4
- v3 = a3 - 8;
- while ( v3 )
- {
- if ( sub_10006840(a1, (int)&v8, 8) )
- return -1;
- v3 -= v9;
- if ( v3 < 0 )
- {
- sub_10006880(off_1002A26C[0]);
- return -1;
- }
- if ( v8 == 16842752 )
- {
- v5 = v9 - 8;
- if ( sub_10006810(v9 - 7, a2 + 2) )
- return -1;
- if ( sub_10006840(a1, a2[2], v5) )
- return -1;
- *(_BYTE *)(a2[2] + v5) = 0;
- }
- else if ( v8 == 16908288 )
- {
- v6 = v9 - 8;
- if ( sub_10006810(v9 - 8, a2 + 3) )
- return -1;
- if ( sub_10006840(a1, a2[3], v6) )
- return -1;
- }
- else
- {
- if ( v8 != 16973824 )
- {
- sub_10006880(off_1002A26C[0]);
- return -1;
- }
- v7 = v9 - 8;
- if ( sub_10006810(v9 - 8, a2 + 4) )
- return -1;
- if ( sub_10006840(a1, a2[4], v7) )
- return -1;
- }
- }
- return 0;
- }
- // 1002A26C: using guessed type char *off_1002A26C[4];
- //----- (10006AE0) --------------------------------------------------------
- signed __int16 __cdecl sub_10006AE0(int a1, int *a2, int a3)
- {
- int *v3; // esi@2
- int *v5; // ebp@12
- int v6; // edi@12
- unsigned int v7; // ebp@16
- unsigned int v8; // ebp@17
- unsigned int v9; // ebp@18
- int v10; // [esp+10h] [ebp-10h]@15
- int v11; // [esp+14h] [ebp-Ch]@1
- int v12; // [esp+18h] [ebp-8h]@3
- int v13; // [esp+1Ch] [ebp-4h]@4
- v11 = a3 - 8;
- if ( a3 != 8 )
- {
- v3 = a2;
- while ( 1 )
- {
- if ( sub_10006840(a1, (int)&v12, 8) )
- return -1;
- v11 -= v13;
- if ( v11 < 0 )
- {
- sub_10006880(off_1002A26C[0]);
- return -1;
- }
- if ( v12 > 67239936 )
- {
- if ( v12 == 67305472 )
- {
- if ( sub_10006840(a1, (int)(a2 + 6), 4) )
- return -1;
- }
- else
- {
- if ( v12 != 67371008 )
- {
- LABEL_8:
- sub_10006880(off_1002A26C[0]);
- return -1;
- }
- if ( sub_10006D60(a1, a2, v13) )
- return -1;
- ++a2[7];
- }
- }
- else if ( v12 == 67239936 )
- {
- if ( sub_10006840(a1, (int)&v10, 4) )
- return -1;
- v7 = 4 * v10;
- if ( sub_10006810(4 * v10, a2 + 8) )
- return -1;
- memset((void *)a2[8], 0, v7);
- v8 = 4 * v10;
- if ( sub_10006810(4 * v10, a2 + 9) )
- return -1;
- memset((void *)a2[9], 0, v8);
- v9 = 12 * v10;
- if ( sub_10006810(12 * v10, a2 + 10) )
- return -1;
- memset((void *)a2[10], 0, v9);
- a2[7] = 0;
- }
- else
- {
- if ( v12 != 67174400 )
- goto LABEL_8;
- v5 = a2 + 5;
- v6 = v13 - 8;
- if ( sub_10006810(v13 - 7, a2 + 5) )
- return -1;
- if ( sub_10006840(a1, *v5, v6) )
- return -1;
- *(_BYTE *)(*v5 + v6) = 0;
- }
- if ( !v11 )
- goto LABEL_36;
- }
- }
- v3 = a2;
- LABEL_36:
- if ( v3[7] == v10 )
- return 0;
- sub_10006880(aNumberOfObject);
- return -1;
- }
- // 1002A26C: using guessed type char *off_1002A26C[4];
- //----- (10006D60) --------------------------------------------------------
- signed __int16 __cdecl sub_10006D60(int a1, int *a2, int a3)
- {
- int v3; // ebx@1
- int v5; // ebp@9
- int v6; // [esp+10h] [ebp-Ch]@3
- int v7; // [esp+14h] [ebp-8h]@4
- int v8; // [esp+18h] [ebp-4h]@1
- v8 = a3 - 8;
- v3 = a2[7];
- while ( v8 )
- {
- if ( sub_10006840(a1, (int)&v6, 8) )
- return -1;
- v8 -= v7;
- if ( v8 < 0 )
- {
- sub_10006880(off_1002A26C[0]);
- return -1;
- }
- if ( v6 == 67371264 )
- {
- v5 = v7 - 8;
- if ( sub_10006810(v7 - 8 + 1, (int *)(a2[8] + 4 * v3)) )
- return -1;
- if ( sub_10006840(a1, *(_DWORD *)(a2[8] + 4 * v3), v5) )
- return -1;
- *(_BYTE *)(*(_DWORD *)(a2[8] + 4 * v3) + v5) = 0;
- }
- else if ( v6 == 67371520 )
- {
- if ( sub_10006EE0(a1, (int *)(a2[9] + 4 * v3), v7) )
- return -1;
- }
- else
- {
- if ( v6 != 67371776 )
- {
- sub_10006880(off_1002A26C[0]);
- return -1;
- }
- if ( sub_10006FB0(a1, (int *)(a2[10] + 12 * v3), v7, a2[6]) )
- return -1;
- }
- }
- return 0;
- }
- // 1002A26C: using guessed type char *off_1002A26C[4];
- //----- (10006EE0) --------------------------------------------------------
- signed __int16 __cdecl sub_10006EE0(int a1, int *a2, int a3)
- {
- int v3; // ebx@1
- int v4; // ebp@6
- int v6; // [esp+10h] [ebp-8h]@3
- int v7; // [esp+14h] [ebp-4h]@4
- v3 = a3 - 8;
- while ( v3 )
- {
- if ( sub_10006840(a1, (int)&v6, 8) )
- return -1;
- v3 -= v7;
- if ( v3 < 0 )
- {
- sub_10006880(off_1002A26C[0]);
- return -1;
- }
- if ( v6 != 67371521 )
- {
- sub_10006880(off_1002A26C[0]);
- return -1;
- }
- v4 = v7 - 8;
- if ( sub_10006810(v7 - 8, a2) )
- return -1;
- if ( sub_10006840(a1, *a2, v4) )
- return -1;
- }
- return 0;
- }
- // 1002A26C: using guessed type char *off_1002A26C[4];
- //----- (10006FB0) --------------------------------------------------------
- signed __int16 __cdecl sub_10006FB0(int a1, int *a2, int a3, int a4)
- {
- int v5; // [esp+10h] [ebp-Ch]@1
- int v6; // [esp+14h] [ebp-8h]@3
- int v7; // [esp+18h] [ebp-4h]@4
- v5 = a3 - 8;
- while ( v5 )
- {
- if ( sub_10006840(a1, (int)&v6, 8) )
- return -1;
- v5 -= v7;
- if ( v5 < 0 )
- {
- sub_10006880(off_1002A26C[0]);
- return -1;
- }
- if ( v6 == 67371777 )
- {
- if ( sub_10006810(a4, a2) )
- return -1;
- if ( sub_10006840(a1, *a2, a4) )
- return -1;
- }
- else if ( v6 == 67371778 )
- {
- if ( sub_10006810(12 * a4, a2 + 1) )
- return -1;
- if ( sub_10006840(a1, a2[1], 12 * a4) )
- return -1;
- }
- else
- {
- if ( v6 != 67371779 )
- {
- sub_10006880(off_1002A26C[0]);
- return -1;
- }
- if ( sub_10006810(36 * a4, a2 + 2) )
- return -1;
- if ( sub_10006840(a1, a2[2], 36 * a4) )
- return -1;
- }
- }
- return 0;
- }
- // 1002A26C: using guessed type char *off_1002A26C[4];
- //----- (10007150) --------------------------------------------------------
- char __cdecl sub_10007150(int a1, unsigned __int8 *a2)
- {
- __int16 v2; // dx@1
- float v3; // ST18_4@2
- float v4; // ST1C_4@2
- float v5; // ST0C_4@1
- char v6; // bl@1
- double v7; // st3@2
- __int64 v8; // ST0C_8@2
- char v10; // c0@2
- v2 = 0;
- v5 = (double)a2[2];
- v6 = LOBYTE(v5);
- do
- {
- v7 = (double)*(unsigned __int8 *)(3 * *(unsigned __int8 *)(v2 + a1 + 4610) + a1 + 3);
- v8 = *(unsigned __int8 *)(3 * *(unsigned __int8 *)(v2 + a1 + 4610) + a1 + 4);
- v3 = (double)*a2;
- v4 = (double)a2[1];
- if ( v10 )
- v6 = v2;
- ++v2;
- }
- while ( v2 < 256 );
- return v6;
- }
- //----- (10007240) --------------------------------------------------------
- int __cdecl sub_10007240(int a1, int a2)
- {
- int v2; // ebp@2
- unsigned int v3; // edi@2
- int v4; // eax@3
- int result; // eax@3
- if ( !(*(_BYTE *)a1 & 2) )
- return sub_100072A0(a1 + 42, a2, *(_DWORD *)(a1 + 38));
- v2 = a1 + 42;
- v3 = 0;
- if ( *(_DWORD *)(a1 + 38) )
- {
- do
- {
- sub_100072A0(v2 + 32, a2, *(_DWORD *)(v2 + 24));
- v4 = *(_DWORD *)(v2 + 24);
- v3 += v4;
- result = 3 * v4 + 32;
- v2 += result;
- }
- while ( *(_DWORD *)(a1 + 38) > v3 );
- }
- return result;
- }
- //----- (100072A0) --------------------------------------------------------
- int __cdecl sub_100072A0(int a1, int a2, int a3)
- {
- int v3; // edx@1
- int v4; // ecx@1
- int result; // eax@2
- v3 = a1 + 2;
- v4 = a3;
- if ( a3 > 0 )
- {
- result = a2;
- do
- {
- v3 += 3;
- --v4;
- *(_BYTE *)(v3 - 3) = *(_BYTE *)(*(unsigned __int8 *)(v3 - 3) + a2);
- }
- while ( v4 );
- }
- return result;
- }
- //----- (100072D0) --------------------------------------------------------
- float *__cdecl sub_100072D0(float *a1, float *a2)
- {
- long double v2; // st7@1
- long double v3; // st6@1
- long double v4; // st5@1
- long double v5; // st4@1
- long double v6; // st3@1
- float v7; // ST00_4@1
- long double v8; // st2@1
- float v9; // ST08_4@1
- float v10; // ST04_4@1
- int v11; // eax@1
- float *result; // eax@1
- v2 = cos(*a1);
- v3 = sin(*a1);
- v4 = cos(a1[1]);
- v5 = sin(a1[1]);
- v6 = cos(a1[2]);
- v7 = sin(a1[2]);
- *a2 = v4 * v2;
- v8 = v7 * v5;
- v9 = v8;
- a2[1] = v8 * v2 - v6 * v3;
- v10 = v6 * v5;
- v11 = (int)(a2 + 4);
- *(float *)(v11 - 8) = v7 * v3 + v10 * v2;
- *(float *)(v11 - 4) = v4 * v3;
- a2[4] = v6 * v2 + v9 * v3;
- result = a2 + 7;
- *(result - 2) = v3 * v10 - v7 * v2;
- *(result - 1) = -v5;
- *result = v7 * v4;
- result[1] = v6 * v4;
- return result;
- }
- //----- (100074D0) --------------------------------------------------------
- int __cdecl sub_100074D0(int a1, int a2, int a3)
- {
- int v3; // edi@2
- double v4; // st7@3
- int v5; // ecx@3
- __int16 v6; // bx@3
- int v7; // eax@4
- float v8; // ST14_4@5
- int result; // eax@5
- __int16 v10; // [esp+10h] [ebp-8h]@2
- __int16 v11; // [esp+12h] [ebp-6h]@1
- v11 = 0;
- do
- {
- v10 = 0;
- v3 = 3 * v11;
- do
- {
- v4 = 0.0;
- v5 = v10;
- v6 = 0;
- do
- {
- v7 = v6++;
- v4 = v4 + *(float *)(a2 + 4 * (v10 + 3 * v7)) * *(float *)(a1 + 4 * (v3 + v7));
- }
- while ( v6 < 3 );
- v8 = v4;
- ++v10;
- result = a3;
- *(float *)(a3 + 4 * (v3 + v5)) = v8;
- }
- while ( v10 < 3 );
- ++v11;
- }
- while ( v11 < 3 );
- return result;
- }
- //----- (10007560) --------------------------------------------------------
- float *__cdecl sub_10007560(float *a1, float *a2, float *a3)
- {
- float *v3; // ecx@1
- float *result; // eax@1
- v3 = a2;
- result = a1;
- *a3 = a1[1] * a2[1] + a1[2] * a2[2] + *a2 * *a1;
- a3[1] = result[4] * v3[1] + result[5] * v3[2] + result[3] * *v3;
- a3[2] = result[8] * v3[2] + result[6] * *v3 + a1[7] * a2[1];
- return result;
- }
- //----- (100075C0) --------------------------------------------------------
- float *__cdecl sub_100075C0(float *a1, float *a2, float *a3)
- {
- float *result; // eax@1
- result = a1;
- *a3 = *a1 + *a2;
- a3[1] = a2[1] + a1[1];
- a3[2] = a2[2] + a1[2];
- return result;
- }
- //----- (100075F0) --------------------------------------------------------
- float *__cdecl sub_100075F0(float *a1, float *a2, float *a3)
- {
- float *result; // eax@1
- result = a1;
- *a3 = *a1 - *a2;
- a3[1] = a1[1] - a2[1];
- a3[2] = a1[2] - a2[2];
- return result;
- }
- //----- (10007620) --------------------------------------------------------
- int __cdecl sub_10007620(int a1, float a2, int a3)
- {
- int result; // eax@1
- result = a1;
- *(float *)a3 = *(float *)a1 * a2;
- *(float *)(a3 + 4) = *(float *)(a1 + 4) * a2;
- *(float *)(a3 + 8) = *(float *)(a1 + 8) * a2;
- return result;
- }
- //----- (10007670) --------------------------------------------------------
- void __cdecl sub_10007670(float *a1, float *a2)
- {
- float *v2; // eax@1
- float *v3; // ecx@1
- double v4; // st7@1
- double v5; // st6@1
- float *v6; // ST00_4@3
- double v7; // st6@4
- float *v8; // ST00_4@6
- v2 = a1;
- v3 = a2;
- v4 = sqrt(*a1 * *a1 + a1[1] * a1[1] + a1[2] * a1[2]);
- v5 = *a1;
- if ( dword_10036C7C )
- {
- unknown_libname_6(a2, a1);
- v2 = v6;
- }
- else
- {
- v5 = v5 / v4;
- }
- *v3 = v5;
- v7 = v2[1];
- if ( dword_10036C7C )
- {
- unknown_libname_6(v3, v2);
- v2 = v8;
- }
- else
- {
- v7 = v7 / v4;
- }
- v3[1] = v7;
- if ( dword_10036C7C )
- unknown_libname_13(*((_DWORD *)v2 + 2));
- else
- v4 = v2[2] / v4;
- v3[2] = v4;
- }
- // 100107F7: using guessed type int __thiscall unknown_libname_6(_DWORD, _DWORD);
- // 10010DBC: using guessed type double __stdcall unknown_libname_13(_DWORD);
- // 10036C7C: using guessed type int dword_10036C7C;
- //----- (10007700) --------------------------------------------------------
- float *__cdecl sub_10007700(float *a1, float *a2, float *a3)
- {
- float *result; // eax@1
- result = a1;
- *a3 = a1[1] * a2[2] - a1[2] * a2[1];
- a3[1] = result[2] * *a2 - a2[2] * *result;
- a3[2] = a2[1] * *a1 - a1[1] * *a2;
- return result;
- }
- //----- (10007970) --------------------------------------------------------
- bool __cdecl sub_10007970(int a1, float a2, int a3)
- {
- unsigned __int16 v3; // si@1
- unsigned __int16 v4; // ax@1
- bool result; // al@3
- double v6; // st7@10
- int v7; // et1@10
- float v9; // ST0C_4@14
- unsigned __int8 v10; // c0@10
- unsigned __int8 v11; // c3@10
- float v12; // [esp+8h] [ebp-8h]@10
- v3 = *(_WORD *)(a3 + 66);
- v4 = *(_WORD *)(a3 + 64);
- if ( v4 >= v3 )
- {
- if ( (double)v4 < *(float *)(a1 + 8) )
- return 1;
- if ( (double)v3 > *(float *)(a1 + 8) )
- return 1;
- }
- else
- {
- if ( (double)v4 > *(float *)(a1 + 8) )
- return 1;
- if ( (double)v3 < *(float *)(a1 + 8) )
- return 1;
- }
- v6 = a2 * 128.0;
- v12 = v6;
- v7 = *(_DWORD *)a1;
- if ( !(v10 | v11) )
- return 1;
- if ( (double)*(signed __int16 *)(a3 + 76) + v12 < *(float *)a1 )
- return 1;
- v9 = -v6;
- if ( *(float *)(a1 + 4) >= (double)v9 )
- result = (double)*(signed __int16 *)(a3 + 78) + v12 < *(float *)(a1 + 4);
- else
- result = 1;
- return result;
- }
- //----- (10007A80) --------------------------------------------------------
- int __cdecl sub_10007A80(int a1, int a2, int a3, int a4, int *a5)
- {
- int *v5; // esi@1
- int v6; // ebp@1
- unsigned int v7; // edi@1
- int v8; // edi@2
- int v9; // ecx@2
- int v10; // ebx@2
- int result; // eax@2
- int v12; // edx@3
- int v13; // ebx@3
- unsigned __int16 v14; // bx@3
- int v15; // edx@3
- unsigned int v16; // ecx@3
- int v17; // ecx@4
- bool v18; // zf@4
- int v19; // ecx@4
- int v20; // [esp-14h] [ebp-1Ch]@1
- v5 = a5;
- v20 = a4;
- v6 = dword_1002A29C;
- v7 = __ROL4__(a3, 8);
- while ( 1 )
- {
- v8 = __ROR4__(v7, 8);
- v9 = *v5;
- v10 = *v5 & 0xF8;
- result = v20-- - 1;
- if ( !v20 )
- break;
- while ( 1 )
- {
- v12 = *(int *)((char *)dword_10039F10 + v10);
- v13 = *(int *)((char *)&dword_10039F14 + v10);
- dword_10039F00 += v12;
- v7 = __ROL4__(v13 + v8, 8);
- LOBYTE(v14) = HIBYTE(dword_10039F00);
- HIBYTE(v14) = BYTE1(dword_10039F00);
- LOBYTE(v12) = BYTE1(v9);
- BYTE1(v12) = v9;
- v5 = (int *)((char *)v5 + 3);
- v15 = v12 & 0x7FF;
- v16 = (v9 << 8) & 0xFF000000;
- if ( *(_DWORD *)(v6 + 4 * v14) << 16 <= v7 )
- break;
- v8 = __ROR4__(v7, 8);
- v17 = v8 | v16;
- LOBYTE(v17) = *(_BYTE *)(dword_1002A298 + v15);
- v18 = v20 == 1;
- v19 = __ROR4__(v17, 8);
- --v20;
- result = 248;
- if ( v18 )
- return result;
- *(_DWORD *)(v6 + 4 * v14) = v19;
- v9 = *v5;
- v10 = *v5 & 0xF8;
- }
- }
- return result;
- }
- // 1002A298: using guessed type int dword_1002A298;
- // 10039F00: using guessed type int dword_10039F00;
- // 10039F10: using guessed type int dword_10039F10[];
- // 10039F14: using guessed type int dword_10039F14;
- //----- (10007B39) --------------------------------------------------------
- int __cdecl sub_10007B39(int a1, int a2, int a3, int a4, unsigned int *a5)
- {
- int v5; // edi@1
- unsigned int *v6; // esi@1
- int v7; // ebp@1
- int v8; // ebx@2
- unsigned __int32 v9; // eax@2
- int v10; // edx@2
- int v11; // ecx@2
- unsigned __int16 v12; // ax@2
- int v13; // ecx@2
- int v14; // ebx@2
- bool v15; // cf@2
- bool v16; // zf@2
- int v17; // edx@2
- int v18; // ebx@6
- int result; // eax@6
- int v20; // [esp-14h] [ebp-1Ch]@1
- v5 = a3;
- v6 = a5;
- v20 = a4;
- v7 = dword_1002A29C;
- while ( 1 )
- {
- v8 = *v6 & 0xF8;
- v9 = _byteswap_ulong(*v6);
- v10 = *(int *)((char *)dword_10039F10 + v8);
- v5 += *(int *)((char *)&dword_10039F14 + v8);
- v11 = v5 | ((*v6 & 0xFF0000) << 8);
- dword_10039F00 += v10;
- LOBYTE(v11) = *(_BYTE *)(dword_1002A298 + ((v9 >> 16) & 0x7FF));
- HIBYTE(v12) = BYTE1(dword_10039F00);
- LOBYTE(v12) = HIBYTE(dword_10039F00);
- dword_10039F04 += v10;
- v13 = __ROR4__(v11, 8);
- dword_10039FE0 += v10;
- HIWORD(v14) = 0;
- v17 = *(_DWORD *)(v7 + 4 * v12);
- BYTE1(v14) = BYTE1(dword_10039F04);
- LOBYTE(v14) = HIBYTE(dword_10039F04);
- v15 = (unsigned __int16)v17 < (unsigned __int16)v13;
- v16 = (_WORD)v17 == (_WORD)v13;
- LOBYTE(v17) = HIBYTE(dword_10039FE0);
- if ( !v15 && !v16 )
- *(_DWORD *)(v7 + 4 * v12) = v13;
- BYTE1(v17) = BYTE1(dword_10039FE0);
- v17 = (unsigned __int16)v17;
- if ( (unsigned __int16)*(_DWORD *)(v7 + 4 * v14) > (unsigned __int16)v13 )
- *(_DWORD *)(v7 + 4 * v14) = v13;
- v18 = *(_DWORD *)(v7 + 4 * v17);
- result = v20 - 1;
- v20 = result;
- if ( !result )
- break;
- v6 = (unsigned int *)((char *)v6 + 3);
- if ( (unsigned __int16)v18 > (unsigned __int16)v13 )
- *(_DWORD *)(v7 + 4 * v17) = v13;
- }
- return result;
- }
- // 1002A298: using guessed type int dword_1002A298;
- // 10039F00: using guessed type int dword_10039F00;
- // 10039F04: using guessed type int dword_10039F04;
- // 10039F10: using guessed type int dword_10039F10[];
- // 10039F14: using guessed type int dword_10039F14;
- // 10039FE0: using guessed type int dword_10039FE0;
- //----- (10007C34) --------------------------------------------------------
- _WORD *__cdecl sub_10007C34(unsigned int a1, __int16 a2, unsigned int a3, _WORD *a4, int a5)
- {
- _WORD *result; // eax@1
- unsigned int v6; // ebx@1
- char v7; // t0@1
- unsigned int v8; // ebx@1
- unsigned int v9; // edx@1
- int *v10; // esi@1
- char *v11; // ebp@1
- int v12; // edi@1
- bool v13; // zf@2
- int v14; // ecx@4
- _DWORD *v15; // eax@4
- result = a4;
- v6 = a1;
- v7 = BYTE1(v6);
- BYTE1(v6) = a1;
- LOBYTE(v6) = v7;
- v8 = _byteswap_ulong(v6);
- LOWORD(v8) = a2;
- v9 = a3;
- v10 = (int *)(a5 - 1);
- v11 = (char *)a4 + 1;
- v12 = dword_1002A29C;
- LABEL_2:
- v13 = --v11 == 0;
- while ( !v13 )
- {
- v14 = *v10;
- v15 = (int *)((char *)dword_10039F10 + (BYTE1(v14) & 0xF8));
- v8 += *v15;
- v9 += v15[1];
- LOBYTE(v15) = _byteswap_ulong(v8);
- BYTE1(v15) = BYTE1(v8);
- result = (_WORD *)(v12 + 4 * (unsigned __int16)v15);
- v10 = (int *)((char *)v10 + 3);
- if ( *result < (unsigned __int16)(v9 >> 8) )
- goto LABEL_2;
- v13 = --v11 == 0;
- *(_DWORD *)result = v9 >> 8;
- }
- return result;
- }
- // 10039F10: using guessed type int dword_10039F10[];
- //----- (10007C9B) --------------------------------------------------------
- int __usercall sub_10007C9B@<eax>(int result@<eax>, int a2, char a3, int a4, int a5)
- {
- int v5; // edx@2
- int v6; // eax@3
- _DWORD *v7; // edi@3
- int v8; // ecx@3
- if ( a4 > 0 )
- {
- v5 = a5;
- if ( a5 > 0 )
- {
- v6 = a2;
- BYTE1(v6) = a3;
- v7 = (_DWORD *)(4 * v6 + dword_1002A29C);
- v8 = a4;
- result = 4 * (256 - a4);
- while ( 1 )
- {
- do
- {
- *v7 = 0xFFFF;
- ++v7;
- --v8;
- }
- while ( v8 );
- if ( !--v5 )
- break;
- v7 = (_DWORD *)((char *)v7 + result);
- v8 = a4;
- }
- }
- }
- return result;
- }
- //----- (10007CF1) --------------------------------------------------------
- unsigned int sub_10007CF1()
- {
- int v0; // ecx@1
- unsigned int result; // eax@1
- int v2; // edi@1
- int v3; // ecx@1
- int v4; // edx@1
- int v5; // esi@1
- int v6; // [esp+0h] [ebp-20h]@1
- int v7; // [esp+4h] [ebp-1Ch]@1
- v0 = *(unsigned __int16 *)(dword_1002A29C + 262152);
- v7 = *(unsigned __int16 *)(dword_1002A29C + 262154);
- result = 4 * (256 - v0);
- v2 = 4 * (256 - v0);
- v3 = v0 + 1;
- v6 = v3;
- v4 = dword_1002A2B0;
- v5 = (*(unsigned __int16 *)(dword_1002A29C + 262146) << 10)
- + 4 * *(unsigned __int16 *)(dword_1002A29C + 0x40000)
- + dword_1002A29C
- - 4;
- LABEL_2:
- for ( v5 += 4; ; v5 += v2 )
- {
- while ( --v3 )
- {
- result = *(_DWORD *)v5;
- if ( (unsigned __int16)*(_DWORD *)v5 == -1 )
- goto LABEL_2;
- result >>= 16;
- LOBYTE(result) = *(_BYTE *)(result + v4);
- *(_BYTE *)(v5 + 2) = result;
- v5 += 4;
- }
- if ( !--v7 )
- break;
- v3 = v6;
- }
- return result;
- }
- // 1002A298: using guessed type int dword_1002A298;
- // 1002A2B0: using guessed type int dword_1002A2B0;
- //----- (10007D89) --------------------------------------------------------
- unsigned int sub_10007D89()
- {
- int v0; // ecx@1
- unsigned int result; // eax@1
- int v2; // edi@1
- int v3; // ecx@1
- int v4; // edx@1
- int v5; // esi@1
- int v6; // [esp+0h] [ebp-20h]@1
- int v7; // [esp+4h] [ebp-1Ch]@1
- v0 = *(unsigned __int16 *)(dword_1002A29C + 262152);
- v7 = *(unsigned __int16 *)(dword_1002A29C + 262154);
- result = 4 * (256 - v0);
- v2 = 4 * (256 - v0);
- v3 = v0 + 1;
- v6 = v3;
- v4 = dword_1002A2B0;
- v5 = (*(unsigned __int16 *)(dword_1002A29C + 262146) << 10)
- + 4 * *(unsigned __int16 *)(dword_1002A29C + 0x40000)
- + dword_1002A29C
- - 4;
- LABEL_2:
- for ( v5 += 4; ; v5 += v2 )
- {
- while ( --v3 )
- {
- result = *(_DWORD *)v5;
- if ( (unsigned __int16)*(_DWORD *)v5 == -1 )
- goto LABEL_2;
- result >>= 16;
- LOWORD(result) = *(_WORD *)(v4 + 2 * result);
- *(_WORD *)(v5 + 2) = result;
- v5 += 4;
- }
- if ( !--v7 )
- break;
- v3 = v6;
- }
- return result;
- }
- // 1002A298: using guessed type int dword_1002A298;
- // 1002A2B0: using guessed type int dword_1002A2B0;
- //----- (10007E30) --------------------------------------------------------
- int __cdecl sub_10007E30(int a1, float *a2, _WORD *a3)
- {
- __int16 v3; // si@3
- __int16 v4; // bp@3
- signed __int64 v5; // rax@3
- __int16 v6; // cx@3
- __int16 v7; // di@3
- __int16 v8; // bx@3
- __int16 v9; // dx@10
- __int16 v10; // ax@11
- __int16 v11; // di@12
- int v12; // ST00_4@12
- __int16 v13; // ax@13
- __int16 v14; // bx@14
- __int16 v15; // ax@17
- __int16 v16; // ax@21
- int v17; // ecx@22
- int v18; // eax@23
- int v19; // eax@28
- int v20; // ST24_4@33
- _DWORD *v21; // esi@33
- int result; // eax@33
- int v23; // [esp+10h] [ebp-18h]@3
- int v24; // [esp+18h] [ebp-10h]@17
- __int16 v25; // [esp+1Ch] [ebp-Ch]@2
- __int16 v26; // [esp+20h] [ebp-8h]@3
- __int16 v27; // [esp+24h] [ebp-4h]@1
- v27 = *(_WORD *)(dword_1002A29C + 262152);
- if ( v27 && (v25 = *(_WORD *)(dword_1002A29C + 262154)) != 0 )
- {
- v3 = (signed __int64)*a2;
- v4 = v3 + *(_WORD *)(dword_1002A29C + 0x40000) - 128;
- v26 = *(_WORD *)(dword_1002A29C + 0x40000);
- v5 = (signed __int64)a2[1];
- v6 = *(_WORD *)(dword_1002A29C + 262146);
- v7 = v3 + *(_WORD *)(dword_1002A29C + 262148) - 128;
- v8 = v5 + *(_WORD *)(dword_1002A29C + 262150) - 128;
- HIWORD(v23) = v6 + v5 - 128;
- if ( a3[4] <= v4 || v7 < 0 || a3[5] <= SHIWORD(v23) || v8 < 0 )
- {
- sub_10007C9B(v26, v26, v6, v27, v25);
- *(_WORD *)(dword_1002A29C + 0x40000) = 0x7FFF;
- *(_WORD *)(dword_1002A29C + 262146) = 0x7FFF;
- *(_WORD *)(dword_1002A29C + 262148) = -1;
- *(_WORD *)(dword_1002A29C + 262150) = -1;
- *(_WORD *)(dword_1002A29C + 262152) = 0;
- result = dword_1002A29C;
- *(_WORD *)(dword_1002A29C + 262154) = 0;
- *(_WORD *)(a1 + 8) = 0x7FFF;
- *(_WORD *)(a1 + 10) = 0x7FFF;
- *(_WORD *)(a1 + 12) = -1;
- *(_WORD *)(a1 + 14) = -1;
- *(_WORD *)(a1 + 16) = 0;
- *(_WORD *)(a1 + 18) = 0;
- }
- else
- {
- if ( v4 < 0 )
- {
- sub_10007C9B(-v4, v26, v6, -v4, v25);
- *(_WORD *)(dword_1002A29C + 0x40000) -= v4;
- *(_WORD *)(dword_1002A29C + 262152) += v4;
- v4 = 0;
- }
- if ( SHIWORD(v23) < 0 )
- {
- sub_10007C9B(
- *(signed __int16 *)(dword_1002A29C + 262146),
- *(signed __int16 *)(dword_1002A29C + 0x40000),
- *(_WORD *)(dword_1002A29C + 262146),
- *(signed __int16 *)(dword_1002A29C + 262152),
- -SHIWORD(v23));
- v9 = HIWORD(v23);
- *(_WORD *)(dword_1002A29C + 262146) -= HIWORD(v23);
- HIWORD(v23) = 0;
- *(_WORD *)(dword_1002A29C + 262154) += v9;
- }
- v10 = a3[4];
- if ( v10 <= v7 )
- {
- v11 = v7 - v10 + 1;
- v12 = *(signed __int16 *)(dword_1002A29C + 262148) - v11;
- sub_10007C9B(v12, v12, *(_WORD *)(dword_1002A29C + 262146), v11, *(signed __int16 *)(dword_1002A29C + 262154));
- *(_WORD *)(dword_1002A29C + 262148) -= v11;
- *(_WORD *)(dword_1002A29C + 262152) -= v11;
- v7 = a3[4] - 1;
- }
- v13 = a3[5];
- if ( v13 <= v8 )
- {
- v14 = v8 - v13 + 1;
- sub_10007C9B(
- dword_1002A29C,
- *(signed __int16 *)(dword_1002A29C + 0x40000),
- *(unsigned __int16 *)(dword_1002A29C + 262150) - v14,
- *(signed __int16 *)(dword_1002A29C + 262152),
- v14);
- *(_WORD *)(dword_1002A29C + 262150) -= v14;
- *(_WORD *)(dword_1002A29C + 262154) -= v14;
- v8 = a3[5] - 1;
- }
- if ( v7 < 0 || v8 < 0 )
- {
- v15 = 0;
- LOWORD(v24) = 0;
- }
- else
- {
- LOWORD(v24) = v7 - v4 + 1;
- v15 = v8 - HIWORD(v23) + 1;
- }
- HIWORD(v24) = v15;
- if ( (_WORD)v24 && v15 )
- {
- v4 += *a3;
- v16 = a3[1];
- v7 += *a3;
- v8 += v16;
- HIWORD(v23) += v16;
- }
- dword_1002A2A0 = *(_DWORD *)(*(_DWORD *)(a1 + 4) + 4);
- dword_1002A2A4 = **(_DWORD **)(a1 + 4);
- dword_1002A2A8 = *(_DWORD *)(a1 + 32);
- dword_1002A2B0 = *(_DWORD *)(a1 + 36);
- v17 = *(_DWORD *)(a1 + 4);
- if ( *(_BYTE *)a1 & 1 )
- {
- v18 = *(unsigned __int8 *)(v17 + 12);
- if ( v18 == 1 )
- {
- sub_1000D1C0(v4, SHIWORD(v23));
- }
- else if ( v18 == 2 )
- {
- sub_1000CB30(v4, SHIWORD(v23));
- }
- }
- else
- {
- v19 = *(unsigned __int8 *)(v17 + 12);
- if ( v19 == 1 )
- {
- sub_1000C4F0(v4, SHIWORD(v23));
- }
- else if ( v19 == 2 )
- {
- sub_1000BE70(v4, SHIWORD(v23));
- }
- }
- LOWORD(v23) = v4;
- LOWORD(v20) = v7;
- v21 = (_DWORD *)(a1 + 8);
- HIWORD(v20) = v8;
- *v21 = v23;
- v21[1] = v20;
- v21[2] = v24;
- *(_WORD *)(dword_1002A29C + 0x40000) = 0x7FFF;
- *(_WORD *)(dword_1002A29C + 262146) = 0x7FFF;
- *(_WORD *)(dword_1002A29C + 262148) = -1;
- *(_WORD *)(dword_1002A29C + 262150) = -1;
- *(_WORD *)(dword_1002A29C + 262152) = 0;
- result = dword_1002A29C;
- *(_WORD *)(dword_1002A29C + 262154) = 0;
- }
- }
- else
- {
- *(_WORD *)(a1 + 8) = 0x7FFF;
- *(_WORD *)(a1 + 10) = 0x7FFF;
- *(_WORD *)(a1 + 12) = -1;
- *(_WORD *)(a1 + 14) = -1;
- result = 0;
- *(_WORD *)(a1 + 16) = 0;
- *(_WORD *)(a1 + 18) = 0;
- }
- return result;
- }
- // 1002A2A0: using guessed type int dword_1002A2A0;
- // 1002A2A4: using guessed type int dword_1002A2A4;
- // 1002A2A8: using guessed type int dword_1002A2A8;
- // 1002A2B0: using guessed type int dword_1002A2B0;
- //----- (100082A0) --------------------------------------------------------
- int __cdecl sub_100082A0(int a1, int a2, int a3, float a4)
- {
- int v4; // esi@3
- int v5; // ebx@3
- double v6; // st7@3
- double v7; // st6@3
- __int16 v8; // bp@3
- __int16 v9; // ST34_2@3
- __int16 v10; // di@3
- __int16 v11; // ST38_2@3
- double v12; // st7@8
- __int16 v13; // bp@11
- double v14; // st7@13
- __int16 v15; // si@16
- signed __int16 v16; // ax@17
- double v17; // st7@18
- __int16 v18; // si@21
- int v19; // ST04_4@21
- __int16 v20; // ax@22
- double v21; // st7@23
- __int16 v22; // si@26
- __int16 v23; // bx@29
- __int16 v24; // bp@29
- __int16 v25; // ax@33
- int v26; // ecx@34
- double v27; // st7@34
- int v28; // ecx@37
- int v29; // eax@38
- int v30; // eax@43
- int v31; // ST30_4@48
- _DWORD *v32; // esi@48
- int result; // eax@48
- float v34; // [esp+10h] [ebp-20h]@37
- int v35; // [esp+14h] [ebp-1Ch]@3
- int v36; // [esp+18h] [ebp-18h]@3
- float v37; // [esp+20h] [ebp-10h]@3
- float v38; // [esp+24h] [ebp-Ch]@3
- __int16 v39; // [esp+28h] [ebp-8h]@2
- __int16 v40; // [esp+2Ch] [ebp-4h]@1
- v40 = *(_WORD *)(dword_1002A29C + 262152);
- if ( v40 && (v39 = *(_WORD *)(dword_1002A29C + 262154)) != 0 )
- {
- v4 = *(signed __int16 *)(dword_1002A29C + 0x40000);
- v5 = *(signed __int16 *)(dword_1002A29C + 262146);
- v6 = (double)(128 - v4) * a4;
- v7 = (double)(128 - v5) * a4;
- v8 = (signed __int64)*(float *)a2;
- v9 = (signed __int64)v6;
- LOWORD(v35) = v8 - v9;
- v10 = (signed __int64)*(float *)(a2 + 4);
- v11 = (signed __int64)v7;
- HIWORD(v35) = v10 - v11;
- LOWORD(v36) = v8
- + (unsigned __int64)(signed __int64)((double)(*(signed __int16 *)(dword_1002A29C + 262148) - 128) * a4);
- HIWORD(v36) = v10
- + (unsigned __int64)(signed __int64)((double)(*(signed __int16 *)(dword_1002A29C + 262150) - 128) * a4);
- v37 = v6 - (double)v9;
- v38 = v7 - (double)v11;
- if ( *(_WORD *)(a3 + 8) <= (signed __int16)v35
- || (signed __int16)v36 < 0
- || *(_WORD *)(a3 + 10) <= SHIWORD(v35)
- || SHIWORD(v36) < 0 )
- {
- sub_10007C9B(v39, v4, v5, v40, v39);
- *(_WORD *)(dword_1002A29C + 0x40000) = 0x7FFF;
- *(_WORD *)(dword_1002A29C + 262146) = 0x7FFF;
- *(_WORD *)(dword_1002A29C + 262148) = -1;
- *(_WORD *)(dword_1002A29C + 262150) = -1;
- *(_WORD *)(dword_1002A29C + 262152) = 0;
- result = dword_1002A29C;
- *(_WORD *)(dword_1002A29C + 262154) = 0;
- *(_WORD *)(a1 + 8) = 0x7FFF;
- *(_WORD *)(a1 + 10) = 0x7FFF;
- *(_WORD *)(a1 + 12) = -1;
- *(_WORD *)(a1 + 14) = -1;
- *(_WORD *)(a1 + 16) = 0;
- *(_WORD *)(a1 + 18) = 0;
- }
- else
- {
- if ( (signed __int16)v35 < 0 )
- {
- v12 = (double)(signed __int16)v35;
- if ( dword_10036C7C )
- unknown_libname_9(LODWORD(a4));
- else
- v12 = v12 / a4;
- v13 = (signed __int64)v12;
- sub_10007C9B(-v13, v4, v5, -v13, v39);
- *(_WORD *)(dword_1002A29C + 0x40000) -= v13;
- LOWORD(v35) = 0;
- *(_WORD *)(dword_1002A29C + 262152) += v13;
- }
- if ( SHIWORD(v35) < 0 )
- {
- v14 = (double)SHIWORD(v35);
- if ( dword_10036C7C )
- unknown_libname_9(LODWORD(a4));
- else
- v14 = v14 / a4;
- v15 = (signed __int64)v14;
- sub_10007C9B(
- *(signed __int16 *)(dword_1002A29C + 262146),
- *(signed __int16 *)(dword_1002A29C + 0x40000),
- *(_WORD *)(dword_1002A29C + 262146),
- *(signed __int16 *)(dword_1002A29C + 262152),
- -v15);
- *(_WORD *)(dword_1002A29C + 262146) -= v15;
- HIWORD(v35) = 0;
- *(_WORD *)(dword_1002A29C + 262154) += v15;
- }
- v16 = *(_WORD *)(a3 + 8);
- if ( (signed __int16)v36 >= v16 )
- {
- v17 = (double)((signed __int16)v36 - (signed int)v16 + 1);
- if ( dword_10036C7C )
- unknown_libname_9(LODWORD(a4));
- else
- v17 = v17 / a4;
- v18 = (signed __int64)v17;
- v19 = *(signed __int16 *)(dword_1002A29C + 262148) - v18;
- sub_10007C9B(v19, v19, *(_WORD *)(dword_1002A29C + 262146), v18, *(signed __int16 *)(dword_1002A29C + 262154));
- *(_WORD *)(dword_1002A29C + 262148) -= v18;
- *(_WORD *)(dword_1002A29C + 262152) -= v18;
- LOWORD(v36) = *(_WORD *)(a3 + 8) - 1;
- }
- v20 = *(_WORD *)(a3 + 10);
- if ( SHIWORD(v36) >= v20 )
- {
- v21 = (double)(SHIWORD(v36) - (signed int)v20 + 1);
- if ( dword_10036C7C )
- unknown_libname_9(LODWORD(a4));
- else
- v21 = v21 / a4;
- v22 = (signed __int64)v21;
- sub_10007C9B(
- dword_1002A29C,
- *(signed __int16 *)(dword_1002A29C + 0x40000),
- *(unsigned __int16 *)(dword_1002A29C + 262150) - v22,
- *(signed __int16 *)(dword_1002A29C + 262152),
- v22);
- *(_WORD *)(dword_1002A29C + 262150) -= v22;
- *(_WORD *)(dword_1002A29C + 262154) -= v22;
- HIWORD(v36) = *(_WORD *)(a3 + 10) - 1;
- }
- dword_1002A2B0 = *(_DWORD *)(a1 + 36);
- if ( (signed __int16)v36 < 0 || SHIWORD(v36) < 0 )
- {
- v24 = 0;
- v23 = 0;
- }
- else
- {
- v23 = v36 - v35 + 1;
- v24 = HIWORD(v36) - HIWORD(v35) + 1;
- }
- if ( v23 && v24 )
- {
- v25 = *(_WORD *)(a3 + 2);
- LOWORD(v35) = *(_WORD *)a3 + v35;
- HIWORD(v35) += v25;
- LOWORD(v36) = *(_WORD *)a3 + v36;
- HIWORD(v36) += v25;
- }
- v26 = *(_DWORD *)(*(_DWORD *)(a1 + 4) + 4);
- v27 = 256.0;
- if ( dword_10036C7C )
- unknown_libname_9(LODWORD(a4));
- else
- v27 = 256.0 / a4;
- dword_1002A2A0 = v26;
- dword_1002A2A4 = **(_DWORD **)(a1 + 4);
- dword_1002A2A8 = *(_DWORD *)(a1 + 32);
- v34 = v27;
- byte_1002A2BC = (signed __int64)(v27 * v37);
- byte_1002A2C0 = (signed __int64)(v38 * v34);
- v28 = *(_DWORD *)(a1 + 4);
- if ( *(_BYTE *)a1 & 1 )
- {
- v29 = *(unsigned __int8 *)(v28 + 12);
- if ( v29 == 1 )
- {
- sub_10007CF1();
- sub_1000D2A4((signed __int16)v35, SHIWORD(v35), v23, v24, (signed __int64)v34);
- }
- else if ( v29 == 2 )
- {
- sub_10007D89();
- sub_1000CC1C((signed __int16)v35, SHIWORD(v35), v23, v24, (signed __int64)v34);
- }
- }
- else
- {
- v30 = *(unsigned __int8 *)(v28 + 12);
- if ( v30 == 1 )
- {
- sub_10007CF1();
- sub_1000C5D0((signed __int16)v35, SHIWORD(v35), v23, v24, (signed __int64)v34);
- }
- else if ( v30 == 2 )
- {
- sub_10007D89();
- sub_1000BF58((signed __int16)v35, SHIWORD(v35), v23, v24, (signed __int64)v34);
- }
- }
- LOWORD(v31) = v23;
- HIWORD(v31) = v24;
- v32 = (_DWORD *)(a1 + 8);
- sub_10007C9B(
- dword_1002A29C,
- *(signed __int16 *)(dword_1002A29C + 0x40000),
- *(_WORD *)(dword_1002A29C + 262146),
- *(signed __int16 *)(dword_1002A29C + 262152),
- *(signed __int16 *)(dword_1002A29C + 262154));
- *v32 = v35;
- v32[1] = v36;
- v32[2] = v31;
- *(_WORD *)(dword_1002A29C + 0x40000) = 0x7FFF;
- *(_WORD *)(dword_1002A29C + 262146) = 0x7FFF;
- *(_WORD *)(dword_1002A29C + 262148) = -1;
- *(_WORD *)(dword_1002A29C + 262150) = -1;
- *(_WORD *)(dword_1002A29C + 262152) = 0;
- result = dword_1002A29C;
- *(_WORD *)(dword_1002A29C + 262154) = 0;
- }
- }
- else
- {
- *(_WORD *)(a1 + 8) = 0x7FFF;
- *(_WORD *)(a1 + 10) = 0x7FFF;
- *(_WORD *)(a1 + 12) = -1;
- *(_WORD *)(a1 + 14) = -1;
- result = 0;
- *(_WORD *)(a1 + 16) = 0;
- *(_WORD *)(a1 + 18) = 0;
- }
- return result;
- }
- // 10010CBC: using guessed type double __stdcall unknown_libname_9(_DWORD);
- // 1002A2A0: using guessed type int dword_1002A2A0;
- // 1002A2A4: using guessed type int dword_1002A2A4;
- // 1002A2A8: using guessed type int dword_1002A2A8;
- // 1002A2B0: using guessed type int dword_1002A2B0;
- // 1002A2BC: using guessed type char byte_1002A2BC;
- // 1002A2C0: using guessed type char byte_1002A2C0;
- // 10036C7C: using guessed type int dword_10036C7C;
- //----- (10008940) --------------------------------------------------------
- int __usercall sub_10008940@<eax>(int a1@<ecx>, int a2@<esi>, int a3, float *a4, _WORD *a5)
- {
- int v5; // edi@3
- signed __int64 v6; // rax@3
- int v7; // ebp@3
- signed __int64 v8; // rax@3
- int v9; // ecx@3
- int v10; // ebx@3
- int v11; // esi@3
- __int16 v12; // ST2C_2@10
- signed __int16 v13; // ax@11
- int v14; // ST00_4@12
- signed __int16 v15; // ax@13
- __int16 v16; // ax@17
- __int16 v17; // ax@21
- int v18; // ecx@22
- int v19; // ecx@22
- int v20; // eax@23
- int v21; // eax@28
- int v22; // ST24_4@33
- _DWORD *v23; // edi@33
- int result; // eax@33
- int v25; // [esp+10h] [ebp-1Ch]@3
- int v26; // [esp+18h] [ebp-14h]@17
- __int16 v27; // [esp+1Ch] [ebp-10h]@1
- __int16 v28; // [esp+20h] [ebp-Ch]@2
- __int16 v29; // [esp+24h] [ebp-8h]@3
- __int16 v30; // [esp+28h] [ebp-4h]@3
- v27 = *(_WORD *)(dword_1002A29C + 262152);
- if ( v27 && (v28 = *(_WORD *)(dword_1002A29C + 262154)) != 0 )
- {
- HIWORD(v5) = HIWORD(a4);
- v30 = *(_WORD *)(dword_1002A29C + 0x40000);
- v6 = (signed __int64)*a4;
- LOWORD(a2) = v6;
- LOWORD(v6) = *(_WORD *)(dword_1002A29C + 0x40000);
- v7 = a2 + 2 * v6 - 256;
- v29 = *(_WORD *)(dword_1002A29C + 262146);
- v8 = (signed __int64)a4[1];
- LOWORD(a1) = *(_WORD *)(dword_1002A29C + 262146);
- LOWORD(v5) = *(_WORD *)(dword_1002A29C + 262148);
- v9 = v8 + 2 * a1 - 256;
- HIWORD(v25) = v9;
- v10 = a2 + 2 * v5 - 256;
- LOWORD(v9) = *(_WORD *)(dword_1002A29C + 262150);
- v11 = v8 + 2 * v9 - 256;
- if ( a5[4] <= (signed __int16)v7 || (signed __int16)v10 < 0 || a5[5] <= SHIWORD(v25) || (signed __int16)v11 < 0 )
- {
- sub_10007C9B(v30, v30, v29, v27, v28);
- *(_WORD *)(dword_1002A29C + 0x40000) = 0x7FFF;
- *(_WORD *)(dword_1002A29C + 262146) = 0x7FFF;
- *(_WORD *)(dword_1002A29C + 262148) = -1;
- *(_WORD *)(dword_1002A29C + 262150) = -1;
- *(_WORD *)(dword_1002A29C + 262152) = 0;
- result = dword_1002A29C;
- *(_WORD *)(dword_1002A29C + 262154) = 0;
- *(_WORD *)(a3 + 8) = 0x7FFF;
- *(_WORD *)(a3 + 10) = 0x7FFF;
- *(_WORD *)(a3 + 12) = -1;
- *(_WORD *)(a3 + 14) = -1;
- *(_WORD *)(a3 + 16) = 0;
- *(_WORD *)(a3 + 18) = 0;
- }
- else
- {
- if ( (signed __int16)v7 < 0 )
- {
- v7 = -(signed __int16)v7 >> 1;
- sub_10007C9B(v30, v30, v29, (signed __int16)v7, v28);
- *(_WORD *)(dword_1002A29C + 0x40000) += v7;
- *(_WORD *)(dword_1002A29C + 262152) -= v7;
- LOWORD(v7) = 0;
- }
- if ( SHIWORD(v25) < 0 )
- {
- v12 = -SHIWORD(v25) >> 1;
- sub_10007C9B(
- *(signed __int16 *)(dword_1002A29C + 0x40000),
- *(signed __int16 *)(dword_1002A29C + 0x40000),
- *(_WORD *)(dword_1002A29C + 262146),
- *(signed __int16 *)(dword_1002A29C + 262152),
- v12);
- HIWORD(v25) = 0;
- *(_WORD *)(dword_1002A29C + 262146) += v12;
- *(_WORD *)(dword_1002A29C + 262154) -= v12;
- }
- v13 = a5[4];
- if ( v13 <= (signed __int16)v10 )
- {
- v10 = ((signed __int16)v10 - v13 + 1) >> 1;
- v14 = *(signed __int16 *)(dword_1002A29C + 262148) - (signed __int16)v10;
- sub_10007C9B(
- v14,
- v14,
- *(_WORD *)(dword_1002A29C + 262146),
- (signed __int16)v10,
- *(signed __int16 *)(dword_1002A29C + 262154));
- *(_WORD *)(dword_1002A29C + 262148) -= v10;
- *(_WORD *)(dword_1002A29C + 262152) -= v10;
- LOWORD(v10) = a5[4] - 1;
- }
- v15 = a5[5];
- if ( v15 <= (signed __int16)v11 )
- {
- v11 = ((signed __int16)v11 - v15 + 1) >> 1;
- sub_10007C9B(
- dword_1002A29C,
- *(signed __int16 *)(dword_1002A29C + 0x40000),
- *(unsigned __int16 *)(dword_1002A29C + 262150) - v11,
- *(signed __int16 *)(dword_1002A29C + 262152),
- (signed __int16)v11);
- *(_WORD *)(dword_1002A29C + 262150) -= v11;
- *(_WORD *)(dword_1002A29C + 262154) -= v11;
- LOWORD(v11) = a5[5] - 1;
- }
- if ( (signed __int16)v10 < 0 || (signed __int16)v11 < 0 )
- {
- v16 = 0;
- LOWORD(v26) = 0;
- }
- else
- {
- LOWORD(v26) = v10 - v7 + 1;
- v16 = v11 - HIWORD(v25) + 1;
- }
- HIWORD(v26) = v16;
- if ( (_WORD)v26 && v16 )
- {
- LOWORD(v7) = *a5 + v7;
- v17 = a5[1];
- LOWORD(v10) = *a5 + v10;
- LOWORD(v11) = v17 + v11;
- HIWORD(v25) += v17;
- }
- dword_1002A2A0 = *(_DWORD *)(*(_DWORD *)(a3 + 4) + 4);
- dword_1002A2A4 = **(_DWORD **)(a3 + 4);
- v18 = *(_DWORD *)(a3 + 32);
- dword_1002A2A8 = v18;
- dword_1002A2AC = 2 * v18;
- dword_1002A2B0 = *(_DWORD *)(a3 + 36);
- v19 = *(_DWORD *)(a3 + 4);
- if ( *(_BYTE *)a3 & 1 )
- {
- v20 = *(unsigned __int8 *)(v19 + 12);
- if ( v20 == 1 )
- {
- sub_1000D3B0((signed __int16)v7, SHIWORD(v25));
- }
- else if ( v20 == 2 )
- {
- sub_1000CD2D((signed __int16)v7, SHIWORD(v25));
- }
- }
- else
- {
- v21 = *(unsigned __int8 *)(v19 + 12);
- if ( v21 == 1 )
- {
- sub_1000C6D0((signed __int16)v7, SHIWORD(v25));
- }
- else if ( v21 == 2 )
- {
- sub_1000C05D((signed __int16)v7, SHIWORD(v25));
- }
- }
- LOWORD(v25) = v7;
- LOWORD(v22) = v10;
- v23 = (_DWORD *)(a3 + 8);
- HIWORD(v22) = v11;
- *v23 = v25;
- v23[1] = v22;
- v23[2] = v26;
- *(_WORD *)(dword_1002A29C + 0x40000) = 0x7FFF;
- *(_WORD *)(dword_1002A29C + 262146) = 0x7FFF;
- *(_WORD *)(dword_1002A29C + 262148) = -1;
- *(_WORD *)(dword_1002A29C + 262150) = -1;
- *(_WORD *)(dword_1002A29C + 262152) = 0;
- result = dword_1002A29C;
- *(_WORD *)(dword_1002A29C + 262154) = 0;
- }
- }
- else
- {
- *(_WORD *)(a3 + 8) = 0x7FFF;
- *(_WORD *)(a3 + 10) = 0x7FFF;
- *(_WORD *)(a3 + 12) = -1;
- *(_WORD *)(a3 + 14) = -1;
- result = 0;
- *(_WORD *)(a3 + 16) = 0;
- *(_WORD *)(a3 + 18) = 0;
- }
- return result;
- }
- // 1002A2A0: using guessed type int dword_1002A2A0;
- // 1002A2A4: using guessed type int dword_1002A2A4;
- // 1002A2A8: using guessed type int dword_1002A2A8;
- // 1002A2AC: using guessed type int dword_1002A2AC;
- // 1002A2B0: using guessed type int dword_1002A2B0;
- //----- (10008DE0) --------------------------------------------------------
- int __cdecl sub_10008DE0(int a1, float *a2, _WORD *a3)
- {
- __int16 v3; // si@3
- __int16 v4; // bp@3
- signed __int64 v5; // rax@3
- __int16 v6; // cx@3
- __int16 v7; // di@3
- __int16 v8; // bx@3
- __int16 v9; // dx@10
- __int16 v10; // ax@11
- __int16 v11; // di@12
- int v12; // ST00_4@12
- __int16 v13; // ax@13
- __int16 v14; // bx@14
- __int16 v15; // ax@17
- __int16 v16; // ax@21
- int v17; // ecx@22
- int v18; // eax@23
- int v19; // eax@28
- int v20; // ST24_4@33
- _DWORD *v21; // esi@33
- int result; // eax@33
- int v23; // [esp+10h] [ebp-18h]@3
- int v24; // [esp+18h] [ebp-10h]@17
- __int16 v25; // [esp+1Ch] [ebp-Ch]@2
- __int16 v26; // [esp+20h] [ebp-8h]@3
- __int16 v27; // [esp+24h] [ebp-4h]@1
- v27 = *(_WORD *)(dword_1002A29C + 262152);
- if ( v27 && (v25 = *(_WORD *)(dword_1002A29C + 262154)) != 0 )
- {
- v3 = (signed __int64)*a2;
- v4 = v3 + *(_WORD *)(dword_1002A29C + 0x40000) - 128;
- v26 = *(_WORD *)(dword_1002A29C + 0x40000);
- v5 = (signed __int64)a2[1];
- v6 = *(_WORD *)(dword_1002A29C + 262146);
- v7 = v3 + *(_WORD *)(dword_1002A29C + 262148) - 128;
- v8 = v5 + *(_WORD *)(dword_1002A29C + 262150) - 128;
- HIWORD(v23) = v6 + v5 - 128;
- if ( a3[4] <= v4 || v7 < 0 || a3[5] <= SHIWORD(v23) || v8 < 0 )
- {
- sub_10007C9B(v26, v26, v6, v27, v25);
- *(_WORD *)(dword_1002A29C + 0x40000) = 0x7FFF;
- *(_WORD *)(dword_1002A29C + 262146) = 0x7FFF;
- *(_WORD *)(dword_1002A29C + 262148) = -1;
- *(_WORD *)(dword_1002A29C + 262150) = -1;
- *(_WORD *)(dword_1002A29C + 262152) = 0;
- result = dword_1002A29C;
- *(_WORD *)(dword_1002A29C + 262154) = 0;
- *(_WORD *)(a1 + 8) = 0x7FFF;
- *(_WORD *)(a1 + 10) = 0x7FFF;
- *(_WORD *)(a1 + 12) = -1;
- *(_WORD *)(a1 + 14) = -1;
- *(_WORD *)(a1 + 16) = 0;
- *(_WORD *)(a1 + 18) = 0;
- }
- else
- {
- if ( v4 < 0 )
- {
- sub_10007C9B(-v4, v26, v6, -v4, v25);
- *(_WORD *)(dword_1002A29C + 0x40000) -= v4;
- *(_WORD *)(dword_1002A29C + 262152) += v4;
- v4 = 0;
- }
- if ( SHIWORD(v23) < 0 )
- {
- sub_10007C9B(
- *(signed __int16 *)(dword_1002A29C + 262146),
- *(signed __int16 *)(dword_1002A29C + 0x40000),
- *(_WORD *)(dword_1002A29C + 262146),
- *(signed __int16 *)(dword_1002A29C + 262152),
- -SHIWORD(v23));
- v9 = HIWORD(v23);
- *(_WORD *)(dword_1002A29C + 262146) -= HIWORD(v23);
- HIWORD(v23) = 0;
- *(_WORD *)(dword_1002A29C + 262154) += v9;
- }
- v10 = a3[4];
- if ( v7 >= v10 )
- {
- v11 = v7 - v10 + 1;
- v12 = *(signed __int16 *)(dword_1002A29C + 262148) - v11;
- sub_10007C9B(v12, v12, *(_WORD *)(dword_1002A29C + 262146), v11, *(signed __int16 *)(dword_1002A29C + 262154));
- *(_WORD *)(dword_1002A29C + 262148) -= v11;
- *(_WORD *)(dword_1002A29C + 262152) -= v11;
- v7 = a3[4] - 1;
- }
- v13 = a3[5];
- if ( v8 >= v13 )
- {
- v14 = v8 - v13 + 1;
- sub_10007C9B(
- dword_1002A29C,
- *(signed __int16 *)(dword_1002A29C + 0x40000),
- *(unsigned __int16 *)(dword_1002A29C + 262150) - v14,
- *(signed __int16 *)(dword_1002A29C + 262152),
- v14);
- *(_WORD *)(dword_1002A29C + 262150) -= v14;
- *(_WORD *)(dword_1002A29C + 262154) -= v14;
- v8 = a3[5] - 1;
- }
- if ( v7 < 0 || v8 < 0 )
- {
- v15 = 0;
- LOWORD(v24) = 0;
- }
- else
- {
- LOWORD(v24) = v7 - v4 + 1;
- v15 = v8 - HIWORD(v23) + 1;
- }
- HIWORD(v24) = v15;
- if ( (_WORD)v24 && v15 )
- {
- v4 += *a3;
- v16 = a3[1];
- v7 += *a3;
- v8 += v16;
- HIWORD(v23) += v16;
- }
- dword_1002A2A0 = *(_DWORD *)(*(_DWORD *)(a1 + 4) + 4);
- dword_1002A2A4 = **(_DWORD **)(a1 + 4);
- dword_1002A2A8 = *(_DWORD *)(a1 + 32);
- dword_1002A2B0 = *(_DWORD *)(a1 + 36);
- dword_1002A2B4 = *(_DWORD *)(a1 + 40);
- v17 = *(_DWORD *)(a1 + 4);
- if ( *(_BYTE *)a1 & 1 )
- {
- v18 = *(unsigned __int8 *)(v17 + 12);
- if ( v18 == 1 )
- {
- sub_1000D4DD(v4, SHIWORD(v23));
- }
- else if ( v18 == 2 )
- {
- sub_1000CE65(v4, SHIWORD(v23));
- }
- }
- else
- {
- v19 = *(unsigned __int8 *)(v17 + 12);
- if ( v19 == 1 )
- {
- sub_1000C7F9(v4, SHIWORD(v23));
- }
- else if ( v19 == 2 )
- {
- sub_1000C18E(v4, SHIWORD(v23));
- }
- }
- LOWORD(v23) = v4;
- LOWORD(v20) = v7;
- v21 = (_DWORD *)(a1 + 8);
- HIWORD(v20) = v8;
- *v21 = v23;
- v21[1] = v20;
- v21[2] = v24;
- *(_WORD *)(dword_1002A29C + 0x40000) = 0x7FFF;
- *(_WORD *)(dword_1002A29C + 262146) = 0x7FFF;
- *(_WORD *)(dword_1002A29C + 262148) = -1;
- *(_WORD *)(dword_1002A29C + 262150) = -1;
- *(_WORD *)(dword_1002A29C + 262152) = 0;
- result = dword_1002A29C;
- *(_WORD *)(dword_1002A29C + 262154) = 0;
- }
- }
- else
- {
- *(_WORD *)(a1 + 8) = 0x7FFF;
- *(_WORD *)(a1 + 10) = 0x7FFF;
- *(_WORD *)(a1 + 12) = -1;
- *(_WORD *)(a1 + 14) = -1;
- result = 0;
- *(_WORD *)(a1 + 16) = 0;
- *(_WORD *)(a1 + 18) = 0;
- }
- return result;
- }
- // 1002A2A0: using guessed type int dword_1002A2A0;
- // 1002A2A4: using guessed type int dword_1002A2A4;
- // 1002A2A8: using guessed type int dword_1002A2A8;
- // 1002A2B0: using guessed type int dword_1002A2B0;
- // 1002A2B4: using guessed type int dword_1002A2B4;
- //----- (10009250) --------------------------------------------------------
- int __cdecl sub_10009250(int a1, int a2, int a3, float a4)
- {
- int v4; // esi@3
- int v5; // ebx@3
- double v6; // st7@3
- double v7; // st6@3
- __int16 v8; // bp@3
- __int16 v9; // ST34_2@3
- __int16 v10; // di@3
- __int16 v11; // ST38_2@3
- double v12; // st7@8
- __int16 v13; // bp@11
- double v14; // st7@13
- __int16 v15; // si@16
- signed __int16 v16; // ax@17
- double v17; // st7@18
- __int16 v18; // si@21
- int v19; // ST04_4@21
- __int16 v20; // ax@22
- double v21; // st7@23
- __int16 v22; // si@26
- __int16 v23; // bp@29
- __int16 v24; // bx@29
- __int16 v25; // ax@33
- int *v26; // eax@34
- double v27; // st7@34
- int v28; // ecx@37
- int v29; // eax@38
- int v30; // eax@43
- int v31; // ST30_4@48
- _DWORD *v32; // esi@48
- int result; // eax@48
- float v34; // [esp+10h] [ebp-20h]@37
- int v35; // [esp+14h] [ebp-1Ch]@3
- int v36; // [esp+18h] [ebp-18h]@3
- float v37; // [esp+20h] [ebp-10h]@3
- float v38; // [esp+24h] [ebp-Ch]@3
- __int16 v39; // [esp+28h] [ebp-8h]@2
- __int16 v40; // [esp+2Ch] [ebp-4h]@1
- v40 = *(_WORD *)(dword_1002A29C + 262152);
- if ( v40 && (v39 = *(_WORD *)(dword_1002A29C + 262154)) != 0 )
- {
- v4 = *(signed __int16 *)(dword_1002A29C + 0x40000);
- v5 = *(signed __int16 *)(dword_1002A29C + 262146);
- v6 = (double)(128 - v4) * a4;
- v7 = (double)(128 - v5) * a4;
- v8 = (signed __int64)*(float *)a2;
- v9 = (signed __int64)v6;
- LOWORD(v35) = v8 - v9;
- v10 = (signed __int64)*(float *)(a2 + 4);
- v11 = (signed __int64)v7;
- HIWORD(v35) = v10 - v11;
- LOWORD(v36) = v8
- + (unsigned __int64)(signed __int64)((double)(*(signed __int16 *)(dword_1002A29C + 262148) - 128) * a4);
- HIWORD(v36) = v10
- + (unsigned __int64)(signed __int64)((double)(*(signed __int16 *)(dword_1002A29C + 262150) - 128) * a4);
- v37 = v6 - (double)v9;
- v38 = v7 - (double)v11;
- if ( *(_WORD *)(a3 + 8) <= (signed __int16)v35
- || (signed __int16)v36 < 0
- || *(_WORD *)(a3 + 10) <= SHIWORD(v35)
- || SHIWORD(v36) < 0 )
- {
- sub_10007C9B(v39, v4, v5, v40, v39);
- *(_WORD *)(dword_1002A29C + 0x40000) = 0x7FFF;
- *(_WORD *)(dword_1002A29C + 262146) = 0x7FFF;
- *(_WORD *)(dword_1002A29C + 262148) = -1;
- *(_WORD *)(dword_1002A29C + 262150) = -1;
- *(_WORD *)(dword_1002A29C + 262152) = 0;
- result = dword_1002A29C;
- *(_WORD *)(dword_1002A29C + 262154) = 0;
- *(_WORD *)(a1 + 8) = 0x7FFF;
- *(_WORD *)(a1 + 10) = 0x7FFF;
- *(_WORD *)(a1 + 12) = -1;
- *(_WORD *)(a1 + 14) = -1;
- *(_WORD *)(a1 + 16) = 0;
- *(_WORD *)(a1 + 18) = 0;
- }
- else
- {
- if ( (signed __int16)v35 < 0 )
- {
- v12 = (double)(signed __int16)v35;
- if ( dword_10036C7C )
- unknown_libname_9(LODWORD(a4));
- else
- v12 = v12 / a4;
- v13 = (signed __int64)v12;
- sub_10007C9B(-v13, v4, v5, -v13, v39);
- *(_WORD *)(dword_1002A29C + 0x40000) -= v13;
- LOWORD(v35) = 0;
- *(_WORD *)(dword_1002A29C + 262152) += v13;
- }
- if ( SHIWORD(v35) < 0 )
- {
- v14 = (double)SHIWORD(v35);
- if ( dword_10036C7C )
- unknown_libname_9(LODWORD(a4));
- else
- v14 = v14 / a4;
- v15 = (signed __int64)v14;
- sub_10007C9B(
- *(signed __int16 *)(dword_1002A29C + 262146),
- *(signed __int16 *)(dword_1002A29C + 0x40000),
- *(_WORD *)(dword_1002A29C + 262146),
- *(signed __int16 *)(dword_1002A29C + 262152),
- -v15);
- *(_WORD *)(dword_1002A29C + 262146) -= v15;
- HIWORD(v35) = 0;
- *(_WORD *)(dword_1002A29C + 262154) += v15;
- }
- v16 = *(_WORD *)(a3 + 8);
- if ( (signed __int16)v36 >= v16 )
- {
- v17 = (double)((signed __int16)v36 - (signed int)v16 + 1);
- if ( dword_10036C7C )
- unknown_libname_9(LODWORD(a4));
- else
- v17 = v17 / a4;
- v18 = (signed __int64)v17;
- v19 = *(signed __int16 *)(dword_1002A29C + 262148) - v18;
- sub_10007C9B(v19, v19, *(_WORD *)(dword_1002A29C + 262146), v18, *(signed __int16 *)(dword_1002A29C + 262154));
- *(_WORD *)(dword_1002A29C + 262148) -= v18;
- *(_WORD *)(dword_1002A29C + 262152) -= v18;
- LOWORD(v36) = *(_WORD *)(a3 + 8) - 1;
- }
- v20 = *(_WORD *)(a3 + 10);
- if ( SHIWORD(v36) >= v20 )
- {
- v21 = (double)(SHIWORD(v36) - (signed int)v20 + 1);
- if ( dword_10036C7C )
- unknown_libname_9(LODWORD(a4));
- else
- v21 = v21 / a4;
- v22 = (signed __int64)v21;
- sub_10007C9B(
- dword_1002A29C,
- *(signed __int16 *)(dword_1002A29C + 0x40000),
- *(unsigned __int16 *)(dword_1002A29C + 262150) - v22,
- *(signed __int16 *)(dword_1002A29C + 262152),
- v22);
- *(_WORD *)(dword_1002A29C + 262150) -= v22;
- *(_WORD *)(dword_1002A29C + 262154) -= v22;
- HIWORD(v36) = *(_WORD *)(a3 + 10) - 1;
- }
- dword_1002A2B0 = *(_DWORD *)(a1 + 36);
- if ( (signed __int16)v36 < 0 || SHIWORD(v36) < 0 )
- {
- v24 = 0;
- v23 = 0;
- }
- else
- {
- v23 = v36 - v35 + 1;
- v24 = HIWORD(v36) - HIWORD(v35) + 1;
- }
- if ( v23 && v24 )
- {
- v25 = *(_WORD *)(a3 + 2);
- LOWORD(v35) = *(_WORD *)a3 + v35;
- HIWORD(v35) += v25;
- LOWORD(v36) = *(_WORD *)a3 + v36;
- HIWORD(v36) += v25;
- }
- dword_1002A2A0 = *(_DWORD *)(*(_DWORD *)(a1 + 4) + 4);
- v26 = *(int **)(a1 + 4);
- v27 = 256.0;
- if ( dword_10036C7C )
- unknown_libname_9(LODWORD(a4));
- else
- v27 = 256.0 / a4;
- dword_1002A2A4 = *v26;
- dword_1002A2A8 = *(_DWORD *)(a1 + 32);
- dword_1002A2B4 = *(_DWORD *)(a1 + 40);
- v34 = v27;
- byte_1002A2BC = (signed __int64)(v27 * v37);
- byte_1002A2C0 = (signed __int64)(v34 * v38);
- v28 = *(_DWORD *)(a1 + 4);
- if ( *(_BYTE *)a1 & 1 )
- {
- v29 = *(unsigned __int8 *)(v28 + 12);
- if ( v29 == 1 )
- {
- sub_1000D5C3((signed __int16)v35, SHIWORD(v35), v23, v24, (signed __int64)v34);
- }
- else if ( v29 == 2 )
- {
- sub_1000CF54((signed __int16)v35, SHIWORD(v35), v23, v24, (signed __int64)v34);
- }
- }
- else
- {
- v30 = *(unsigned __int8 *)(v28 + 12);
- if ( v30 == 1 )
- {
- sub_1000C8DF((signed __int16)v35, SHIWORD(v35), v23, v24, (signed __int64)v34);
- }
- else if ( v30 == 2 )
- {
- sub_1000C27D((signed __int16)v35, SHIWORD(v35), v23, v24, (signed __int64)v34);
- }
- }
- LOWORD(v31) = v23;
- HIWORD(v31) = v24;
- v32 = (_DWORD *)(a1 + 8);
- sub_10007C9B(
- dword_1002A29C,
- *(signed __int16 *)(dword_1002A29C + 0x40000),
- *(_WORD *)(dword_1002A29C + 262146),
- *(signed __int16 *)(dword_1002A29C + 262152),
- *(signed __int16 *)(dword_1002A29C + 262154));
- *v32 = v35;
- v32[1] = v36;
- v32[2] = v31;
- *(_WORD *)(dword_1002A29C + 0x40000) = 0x7FFF;
- *(_WORD *)(dword_1002A29C + 262146) = 0x7FFF;
- *(_WORD *)(dword_1002A29C + 262148) = -1;
- *(_WORD *)(dword_1002A29C + 262150) = -1;
- *(_WORD *)(dword_1002A29C + 262152) = 0;
- result = dword_1002A29C;
- *(_WORD *)(dword_1002A29C + 262154) = 0;
- }
- }
- else
- {
- *(_WORD *)(a1 + 8) = 0x7FFF;
- *(_WORD *)(a1 + 10) = 0x7FFF;
- *(_WORD *)(a1 + 12) = -1;
- *(_WORD *)(a1 + 14) = -1;
- result = 0;
- *(_WORD *)(a1 + 16) = 0;
- *(_WORD *)(a1 + 18) = 0;
- }
- return result;
- }
- // 10010CBC: using guessed type double __stdcall unknown_libname_9(_DWORD);
- // 1002A2A0: using guessed type int dword_1002A2A0;
- // 1002A2A4: using guessed type int dword_1002A2A4;
- // 1002A2A8: using guessed type int dword_1002A2A8;
- // 1002A2B0: using guessed type int dword_1002A2B0;
- // 1002A2B4: using guessed type int dword_1002A2B4;
- // 1002A2BC: using guessed type char byte_1002A2BC;
- // 1002A2C0: using guessed type char byte_1002A2C0;
- // 10036C7C: using guessed type int dword_10036C7C;
- //----- (100098E0) --------------------------------------------------------
- int __usercall sub_100098E0@<eax>(int a1@<ecx>, int a2@<esi>, int a3, float *a4, _WORD *a5)
- {
- signed __int64 v5; // rax@3
- int v6; // ebp@3
- int v7; // edi@3
- int v8; // esi@3
- __int16 v9; // ST2C_2@8
- signed __int16 v10; // ax@11
- int v11; // ST00_4@12
- signed __int16 v12; // ax@13
- __int16 v13; // ax@17
- __int16 v14; // ax@21
- int v15; // ecx@22
- int v16; // ecx@22
- int v17; // eax@23
- int v18; // eax@28
- int v19; // ST24_4@33
- _DWORD *v20; // ebx@33
- int result; // eax@33
- int v22; // [esp+10h] [ebp-1Ch]@3
- int v23; // [esp+18h] [ebp-14h]@17
- __int16 v24; // [esp+1Ch] [ebp-10h]@1
- __int16 v25; // [esp+20h] [ebp-Ch]@2
- __int16 v26; // [esp+24h] [ebp-8h]@3
- __int16 v27; // [esp+28h] [ebp-4h]@3
- v24 = *(_WORD *)(dword_1002A29C + 262152);
- if ( v24 && (v25 = *(_WORD *)(dword_1002A29C + 262154)) != 0 )
- {
- v27 = *(_WORD *)(dword_1002A29C + 0x40000);
- LOWORD(a2) = (signed __int64)*a4;
- LOWORD(v22) = a2 + 2 * v27 - 256;
- v26 = *(_WORD *)(dword_1002A29C + 262146);
- v5 = (signed __int64)a4[1];
- LOWORD(a1) = *(_WORD *)(dword_1002A29C + 262146);
- v6 = v5 + 2 * a1 - 256;
- LOWORD(a1) = *(_WORD *)(dword_1002A29C + 262148);
- v7 = a2 + 2 * a1 - 256;
- LOWORD(a1) = *(_WORD *)(dword_1002A29C + 262150);
- v8 = v5 + 2 * a1 - 256;
- if ( a5[4] <= (signed __int16)v22 || (signed __int16)v7 < 0 || a5[5] <= (signed __int16)v6 || (signed __int16)v8 < 0 )
- {
- sub_10007C9B(v27, v27, v26, v24, v25);
- *(_WORD *)(dword_1002A29C + 0x40000) = 0x7FFF;
- *(_WORD *)(dword_1002A29C + 262146) = 0x7FFF;
- *(_WORD *)(dword_1002A29C + 262148) = -1;
- *(_WORD *)(dword_1002A29C + 262150) = -1;
- *(_WORD *)(dword_1002A29C + 262152) = 0;
- result = dword_1002A29C;
- *(_WORD *)(dword_1002A29C + 262154) = 0;
- *(_WORD *)(a3 + 8) = 0x7FFF;
- *(_WORD *)(a3 + 10) = 0x7FFF;
- *(_WORD *)(a3 + 12) = -1;
- *(_WORD *)(a3 + 14) = -1;
- *(_WORD *)(a3 + 16) = 0;
- *(_WORD *)(a3 + 18) = 0;
- }
- else
- {
- if ( (signed __int16)v22 < 0 )
- {
- v9 = -(signed __int16)v22 >> 1;
- sub_10007C9B(v26, v27, v26, v9, v25);
- LOWORD(v22) = 0;
- *(_WORD *)(dword_1002A29C + 0x40000) += v9;
- *(_WORD *)(dword_1002A29C + 262152) -= v9;
- }
- if ( (signed __int16)v6 < 0 )
- {
- v6 = -(signed __int16)v6 >> 1;
- sub_10007C9B(
- *(signed __int16 *)(dword_1002A29C + 262146),
- *(signed __int16 *)(dword_1002A29C + 0x40000),
- *(_WORD *)(dword_1002A29C + 262146),
- *(signed __int16 *)(dword_1002A29C + 262152),
- (signed __int16)v6);
- *(_WORD *)(dword_1002A29C + 262146) += v6;
- *(_WORD *)(dword_1002A29C + 262154) -= v6;
- LOWORD(v6) = 0;
- }
- v10 = a5[4];
- if ( v10 <= (signed __int16)v7 )
- {
- v7 = ((signed __int16)v7 - v10 + 1) >> 1;
- v11 = *(signed __int16 *)(dword_1002A29C + 262148) - (signed __int16)v7;
- sub_10007C9B(
- v11,
- v11,
- *(_WORD *)(dword_1002A29C + 262146),
- (signed __int16)v7,
- *(signed __int16 *)(dword_1002A29C + 262154));
- *(_WORD *)(dword_1002A29C + 262148) -= v7;
- *(_WORD *)(dword_1002A29C + 262152) -= v7;
- LOWORD(v7) = a5[4] - 1;
- }
- v12 = a5[5];
- if ( v12 <= (signed __int16)v8 )
- {
- v8 = ((signed __int16)v8 - v12 + 1) >> 1;
- sub_10007C9B(
- dword_1002A29C,
- *(signed __int16 *)(dword_1002A29C + 0x40000),
- *(unsigned __int16 *)(dword_1002A29C + 262150) - v8,
- *(signed __int16 *)(dword_1002A29C + 262152),
- (signed __int16)v8);
- *(_WORD *)(dword_1002A29C + 262150) -= v8;
- *(_WORD *)(dword_1002A29C + 262154) -= v8;
- LOWORD(v8) = a5[5] - 1;
- }
- if ( (signed __int16)v7 < 0 || (signed __int16)v8 < 0 )
- {
- v13 = 0;
- LOWORD(v23) = 0;
- }
- else
- {
- LOWORD(v23) = v7 - v22 + 1;
- v13 = v8 - v6 + 1;
- }
- HIWORD(v23) = v13;
- if ( (_WORD)v23 && v13 )
- {
- v14 = a5[1];
- LOWORD(v6) = v14 + v6;
- LOWORD(v7) = *a5 + v7;
- LOWORD(v8) = v14 + v8;
- LOWORD(v22) = *a5 + v22;
- }
- dword_1002A2A0 = *(_DWORD *)(*(_DWORD *)(a3 + 4) + 4);
- dword_1002A2A4 = **(_DWORD **)(a3 + 4);
- v15 = *(_DWORD *)(a3 + 32);
- dword_1002A2A8 = v15;
- dword_1002A2AC = 2 * v15;
- dword_1002A2B4 = *(_DWORD *)(a3 + 40);
- v16 = *(_DWORD *)(a3 + 4);
- if ( *(_BYTE *)a3 & 1 )
- {
- v17 = *(unsigned __int8 *)(v16 + 12);
- if ( v17 == 1 )
- {
- sub_1000D6C9((signed __int16)v22, (signed __int16)v6);
- }
- else if ( v17 == 2 )
- {
- sub_1000D063((signed __int16)v22, (signed __int16)v6);
- }
- }
- else
- {
- v18 = *(unsigned __int8 *)(v16 + 12);
- if ( v18 == 1 )
- {
- sub_1000C9E5((signed __int16)v22, (signed __int16)v6);
- }
- else if ( v18 == 2 )
- {
- sub_1000C38C((signed __int16)v22, (signed __int16)v6);
- }
- }
- HIWORD(v22) = v6;
- LOWORD(v19) = v7;
- v20 = (_DWORD *)(a3 + 8);
- HIWORD(v19) = v8;
- *v20 = v22;
- v20[1] = v19;
- v20[2] = v23;
- *(_WORD *)(dword_1002A29C + 0x40000) = 0x7FFF;
- *(_WORD *)(dword_1002A29C + 262146) = 0x7FFF;
- *(_WORD *)(dword_1002A29C + 262148) = -1;
- *(_WORD *)(dword_1002A29C + 262150) = -1;
- *(_WORD *)(dword_1002A29C + 262152) = 0;
- result = dword_1002A29C;
- *(_WORD *)(dword_1002A29C + 262154) = 0;
- }
- }
- else
- {
- *(_WORD *)(a3 + 8) = 0x7FFF;
- *(_WORD *)(a3 + 10) = 0x7FFF;
- *(_WORD *)(a3 + 12) = -1;
- *(_WORD *)(a3 + 14) = -1;
- result = 0;
- *(_WORD *)(a3 + 16) = 0;
- *(_WORD *)(a3 + 18) = 0;
- }
- return result;
- }
- // 1002A2A0: using guessed type int dword_1002A2A0;
- // 1002A2A4: using guessed type int dword_1002A2A4;
- // 1002A2A8: using guessed type int dword_1002A2A8;
- // 1002A2AC: using guessed type int dword_1002A2AC;
- // 1002A2B4: using guessed type int dword_1002A2B4;
- //----- (10009D80) --------------------------------------------------------
- int __cdecl sub_10009D80(int a1, int a2, float a3, float a4, int a5, int a6)
- {
- float v6; // eax@1
- double v7; // st7@2
- signed __int64 v8; // rax@9
- int v9; // edi@9
- signed __int64 v10; // rax@11
- int v11; // ebx@11
- int v12; // ebp@13
- float v14; // [esp+10h] [ebp-8h]@7
- float v15; // [esp+10h] [ebp-8h]@9
- float v16; // [esp+10h] [ebp-8h]@11
- float v17; // [esp+14h] [ebp-4h]@5
- v6 = 0.70709997;
- if ( SLODWORD(a3) <= 1060439169 )
- {
- v17 = 256.0;
- }
- else
- {
- v7 = 181.01759;
- if ( dword_10036C7C )
- unknown_libname_9(LODWORD(a3));
- else
- v7 = 181.01759 / a3;
- a3 = v6;
- v17 = v7;
- }
- sub_1000AA20(a1 + 32, a2, a3, a4, a6);
- sub_1000B800((signed __int16 *)(a1 + 26), (signed __int16 *)(a1 + 20));
- sub_1000B120();
- sub_1000B7A0();
- flt_10039782 = (*(float *)a5 - (double)(signed int)(signed __int64)*(float *)a5) * v17 + flt_10039782;
- v14 = 0.5;
- flt_10039786 = (*(float *)(a5 + 4) - (double)(signed int)(signed __int64)*(float *)(a5 + 4)) * v17 + flt_10039786;
- flt_1003978A = *(float *)(a5 + 8) * 256.0 + flt_1003978A;
- if ( LODWORD(flt_10039782) > 0x80000000 )
- v14 = -0.5;
- v8 = (signed __int64)(flt_10039782 + v14);
- v15 = 0.5;
- v9 = v8 + 0x8000;
- if ( LODWORD(flt_10039786) > 0x80000000 )
- v15 = -0.5;
- v10 = (signed __int64)(flt_10039786 + v15);
- v16 = 0.5;
- v11 = v10 + 0x8000;
- if ( LODWORD(flt_1003978A) > 0x80000000 )
- v16 = -0.5;
- v12 = (signed __int64)(flt_1003978A + v16);
- dword_10039F00 = sub_1000BE60(v9, v11);
- return sub_10007A80(v9, v11, v12, *(_DWORD *)(a1 + 38), (int *)(a1 + 42));
- }
- // 10010CBC: using guessed type double __stdcall unknown_libname_9(_DWORD);
- // 10036C7C: using guessed type int dword_10036C7C;
- // 10039782: using guessed type float flt_10039782;
- // 10039786: using guessed type float flt_10039786;
- // 1003978A: using guessed type float flt_1003978A;
- // 10039F00: using guessed type int dword_10039F00;
- //----- (10009F20) --------------------------------------------------------
- int __cdecl sub_10009F20(int a1, int a2, float a3, float a4, int a5, int a6)
- {
- float v6; // eax@1
- double v7; // st7@2
- signed __int64 v8; // rax@9
- int v9; // edi@9
- signed __int64 v10; // rax@11
- int v11; // ebx@11
- int v12; // ebp@13
- int result; // eax@14
- int v14; // [esp-8h] [ebp-20h]@13
- int *v15; // [esp-4h] [ebp-1Ch]@13
- float v16; // [esp+10h] [ebp-8h]@7
- float v17; // [esp+10h] [ebp-8h]@9
- float v18; // [esp+10h] [ebp-8h]@11
- float v19; // [esp+14h] [ebp-4h]@5
- v6 = 1.0;
- if ( SLODWORD(a3) <= 1065353216 )
- {
- v19 = 256.0;
- }
- else
- {
- v7 = 256.0;
- if ( dword_10036C7C )
- unknown_libname_9(LODWORD(a3));
- else
- v7 = 256.0 / a3;
- a3 = v6;
- v19 = v7;
- }
- sub_1000AA20(a1 + 32, a2, a3, a4, a6);
- sub_1000B800((signed __int16 *)(a1 + 26), (signed __int16 *)(a1 + 20));
- sub_1000B120();
- flt_10039782 = (*(float *)a5 - (double)(signed int)(signed __int64)*(float *)a5) * v19 + flt_10039782;
- v16 = 0.5;
- flt_10039786 = (*(float *)(a5 + 4) - (double)(signed int)(signed __int64)*(float *)(a5 + 4)) * v19 + flt_10039786;
- flt_1003978A = *(float *)(a5 + 8) * 256.0 + flt_1003978A;
- if ( LODWORD(flt_10039782) > 0x80000000 )
- v16 = -0.5;
- v8 = (signed __int64)(flt_10039782 + v16);
- v17 = 0.5;
- v9 = v8 + 0x8000;
- if ( LODWORD(flt_10039786) > 0x80000000 )
- v17 = -0.5;
- v10 = (signed __int64)(flt_10039786 + v17);
- v18 = 0.5;
- v11 = v10 + 0x8000;
- if ( LODWORD(flt_1003978A) > 0x80000000 )
- v18 = -0.5;
- v12 = (signed __int64)(flt_1003978A + v18);
- sub_1000BD10(v9, v11);
- sub_1000B7A0();
- v15 = (int *)(a1 + 42);
- v14 = *(_DWORD *)(a1 + 38);
- if ( SLODWORD(a3) <= 1060439169 )
- result = sub_10007A80(v9, v11, v12, v14, v15);
- else
- result = sub_10007B39(v9, v11, v12, v14, (unsigned int *)v15);
- return result;
- }
- // 10010CBC: using guessed type double __stdcall unknown_libname_9(_DWORD);
- // 10036C7C: using guessed type int dword_10036C7C;
- // 10039782: using guessed type float flt_10039782;
- // 10039786: using guessed type float flt_10039786;
- // 1003978A: using guessed type float flt_1003978A;
- //----- (1000A0D0) --------------------------------------------------------
- int __cdecl sub_1000A0D0(int a1, int a2, float a3, float a4, int a5, int a6)
- {
- signed __int64 v6; // rax@3
- int v7; // edi@3
- signed __int64 v8; // rax@5
- int v9; // ebx@5
- int v10; // ebp@7
- float v12; // [esp+10h] [ebp-4h]@1
- float v13; // [esp+10h] [ebp-4h]@3
- float v14; // [esp+10h] [ebp-4h]@5
- sub_1000AA20(a1 + 32, a2, a3, a4, a6);
- sub_1000B800((signed __int16 *)(a1 + 26), (signed __int16 *)(a1 + 20));
- sub_1000B120();
- sub_1000B7A0();
- flt_10039782 = (*(float *)a5 - (double)(signed int)(signed __int64)*(float *)a5) * 128.0 + flt_10039782;
- v12 = 0.5;
- flt_10039786 = (*(float *)(a5 + 4) - (double)(signed int)(signed __int64)*(float *)(a5 + 4)) * 128.0 + flt_10039786;
- flt_1003978A = *(float *)(a5 + 8) * 256.0 + flt_1003978A;
- if ( LODWORD(flt_10039782) > 0x80000000 )
- v12 = -0.5;
- v6 = (signed __int64)(flt_10039782 + v12);
- v13 = 0.5;
- v7 = v6 + 0x8000;
- if ( LODWORD(flt_10039786) > 0x80000000 )
- v13 = -0.5;
- v8 = (signed __int64)(flt_10039786 + v13);
- v14 = 0.5;
- v9 = v8 + 0x8000;
- if ( LODWORD(flt_1003978A) > 0x80000000 )
- v14 = -0.5;
- v10 = (signed __int64)(flt_1003978A + v14);
- dword_10039F00 = sub_1000BE60(v7, v9);
- return sub_10007A80(v7, v9, v10, *(_DWORD *)(a1 + 38), (int *)(a1 + 42));
- }
- // 10039782: using guessed type float flt_10039782;
- // 10039786: using guessed type float flt_10039786;
- // 1003978A: using guessed type float flt_1003978A;
- // 10039F00: using guessed type int dword_10039F00;
- //----- (1000A230) --------------------------------------------------------
- int __cdecl sub_1000A230(int a1, int a2, float a3, float a4, int a5, int a6)
- {
- float v6; // eax@1
- double v7; // st7@2
- signed __int64 v8; // rax@9
- int v9; // edi@9
- signed __int64 v10; // rax@11
- int v11; // ebx@11
- int v12; // ebp@13
- float v14; // [esp+10h] [ebp-8h]@7
- float v15; // [esp+10h] [ebp-8h]@9
- float v16; // [esp+10h] [ebp-8h]@11
- float v17; // [esp+14h] [ebp-4h]@5
- v6 = 0.70709997;
- if ( SLODWORD(a3) <= 1060439169 )
- {
- v17 = 256.0;
- }
- else
- {
- v7 = 181.01759;
- if ( dword_10036C7C )
- unknown_libname_9(LODWORD(a3));
- else
- v7 = 181.01759 / a3;
- a3 = v6;
- v17 = v7;
- }
- sub_1000AA20(a1 + 18, a2, a3, a4, a6);
- sub_1000B800((signed __int16 *)(a1 + 6), (signed __int16 *)(a1 + 12));
- sub_1000B120();
- sub_1000B7A0();
- flt_10039782 = (*(float *)a5 - (double)(signed int)(signed __int64)*(float *)a5) * v17 + flt_10039782;
- v14 = 0.5;
- flt_10039786 = (*(float *)(a5 + 4) - (double)(signed int)(signed __int64)*(float *)(a5 + 4)) * v17 + flt_10039786;
- flt_1003978A = *(float *)(a5 + 8) * 256.0 + flt_1003978A;
- if ( LODWORD(flt_10039782) > 0x80000000 )
- v14 = -0.5;
- v8 = (signed __int64)(flt_10039782 + v14);
- v15 = 0.5;
- v9 = v8 + 0x8000;
- if ( LODWORD(flt_10039786) > 0x80000000 )
- v15 = -0.5;
- v10 = (signed __int64)(flt_10039786 + v15);
- v16 = 0.5;
- v11 = v10 + 0x8000;
- if ( LODWORD(flt_1003978A) > 0x80000000 )
- v16 = -0.5;
- v12 = (signed __int64)(flt_1003978A + v16);
- dword_10039F00 = sub_1000BE60(v9, v11);
- return sub_10007A80(v9, v11, v12, *(_DWORD *)(a1 + 24), (int *)(a1 + 32));
- }
- // 10010CBC: using guessed type double __stdcall unknown_libname_9(_DWORD);
- // 10036C7C: using guessed type int dword_10036C7C;
- // 10039782: using guessed type float flt_10039782;
- // 10039786: using guessed type float flt_10039786;
- // 1003978A: using guessed type float flt_1003978A;
- // 10039F00: using guessed type int dword_10039F00;
- //----- (1000A3D0) --------------------------------------------------------
- int __cdecl sub_1000A3D0(int a1, int a2, float a3, float a4, int a5, int a6)
- {
- float v6; // eax@1
- double v7; // st7@2
- signed __int64 v8; // rax@9
- int v9; // edi@9
- signed __int64 v10; // rax@11
- int v11; // ebx@11
- int v12; // ebp@13
- int result; // eax@14
- int v14; // [esp-8h] [ebp-20h]@13
- int *v15; // [esp-4h] [ebp-1Ch]@13
- float v16; // [esp+10h] [ebp-8h]@7
- float v17; // [esp+10h] [ebp-8h]@9
- float v18; // [esp+10h] [ebp-8h]@11
- float v19; // [esp+14h] [ebp-4h]@5
- v6 = 1.0;
- if ( SLODWORD(a3) <= 1065353216 )
- {
- v19 = 256.0;
- }
- else
- {
- v7 = 256.0;
- if ( dword_10036C7C )
- unknown_libname_9(LODWORD(a3));
- else
- v7 = 256.0 / a3;
- a3 = v6;
- v19 = v7;
- }
- sub_1000AA20(a1 + 18, a2, a3, a4, a6);
- sub_1000B800((signed __int16 *)(a1 + 6), (signed __int16 *)(a1 + 12));
- sub_1000B120();
- flt_10039782 = (*(float *)a5 - (double)(signed int)(signed __int64)*(float *)a5) * v19 + flt_10039782;
- v16 = 0.5;
- flt_10039786 = (*(float *)(a5 + 4) - (double)(signed int)(signed __int64)*(float *)(a5 + 4)) * v19 + flt_10039786;
- flt_1003978A = *(float *)(a5 + 8) * 256.0 + flt_1003978A;
- if ( LODWORD(flt_10039782) > 0x80000000 )
- v16 = -0.5;
- v8 = (signed __int64)(flt_10039782 + v16);
- v17 = 0.5;
- v9 = v8 + 0x8000;
- if ( LODWORD(flt_10039786) > 0x80000000 )
- v17 = -0.5;
- v10 = (signed __int64)(flt_10039786 + v17);
- v18 = 0.5;
- v11 = v10 + 0x8000;
- if ( LODWORD(flt_1003978A) > 0x80000000 )
- v18 = -0.5;
- v12 = (signed __int64)(flt_1003978A + v18);
- sub_1000BD10(v9, v11);
- sub_1000B7A0();
- v15 = (int *)(a1 + 32);
- v14 = *(_DWORD *)(a1 + 24);
- if ( SLODWORD(a3) <= 1060439169 )
- result = sub_10007A80(v9, v11, v12, v14, v15);
- else
- result = sub_10007B39(v9, v11, v12, v14, (unsigned int *)v15);
- return result;
- }
- // 10010CBC: using guessed type double __stdcall unknown_libname_9(_DWORD);
- // 10036C7C: using guessed type int dword_10036C7C;
- // 10039782: using guessed type float flt_10039782;
- // 10039786: using guessed type float flt_10039786;
- // 1003978A: using guessed type float flt_1003978A;
- //----- (1000A580) --------------------------------------------------------
- int __cdecl sub_1000A580(int a1, int a2, float a3, float a4, int a5, int a6)
- {
- signed __int64 v6; // rax@3
- int v7; // edi@3
- signed __int64 v8; // rax@5
- int v9; // ebx@5
- int v10; // ebp@7
- float v12; // [esp+10h] [ebp-4h]@1
- float v13; // [esp+10h] [ebp-4h]@3
- float v14; // [esp+10h] [ebp-4h]@5
- sub_1000AA20(a1 + 18, a2, a3, a4, a6);
- sub_1000B800((signed __int16 *)(a1 + 6), (signed __int16 *)(a1 + 12));
- sub_1000B120();
- sub_1000B7A0();
- flt_10039782 = (*(float *)a5 - (double)(signed int)(signed __int64)*(float *)a5) * 128.0 + flt_10039782;
- v12 = 0.5;
- flt_10039786 = (*(float *)(a5 + 4) - (double)(signed int)(signed __int64)*(float *)(a5 + 4)) * 128.0 + flt_10039786;
- flt_1003978A = *(float *)(a5 + 8) * 256.0 + flt_1003978A;
- if ( LODWORD(flt_10039782) > 0x80000000 )
- v12 = -0.5;
- v6 = (signed __int64)(flt_10039782 + v12);
- v13 = 0.5;
- v7 = v6 + 0x8000;
- if ( LODWORD(flt_10039786) > 0x80000000 )
- v13 = -0.5;
- v8 = (signed __int64)(flt_10039786 + v13);
- v14 = 0.5;
- v9 = v8 + 0x8000;
- if ( LODWORD(flt_1003978A) > 0x80000000 )
- v14 = -0.5;
- v10 = (signed __int64)(flt_1003978A + v14);
- dword_10039F00 = sub_1000BE60(v7, v9);
- return sub_10007A80(v7, v9, v10, *(_DWORD *)(a1 + 24), (int *)(a1 + 32));
- }
- // 10039782: using guessed type float flt_10039782;
- // 10039786: using guessed type float flt_10039786;
- // 1003978A: using guessed type float flt_1003978A;
- // 10039F00: using guessed type int dword_10039F00;
- //----- (1000A6E0) --------------------------------------------------------
- _WORD *__cdecl sub_1000A6E0(int a1, int a2, float a3, float a4, int a5)
- {
- float v5; // eax@1
- double v6; // st7@2
- signed __int64 v7; // rax@9
- unsigned int v8; // edi@9
- signed __int64 v9; // rax@11
- int v10; // ebx@11
- unsigned int v11; // ebp@13
- float v13; // [esp+10h] [ebp-8h]@7
- float v14; // [esp+10h] [ebp-8h]@9
- float v15; // [esp+10h] [ebp-8h]@11
- float v16; // [esp+14h] [ebp-4h]@5
- v5 = 1.0;
- if ( SLODWORD(a3) <= 1065353216 )
- {
- v16 = 256.0;
- }
- else
- {
- v6 = 256.0;
- if ( dword_10036C7C )
- unknown_libname_9(LODWORD(a3));
- else
- v6 = 256.0 / a3;
- a3 = v5;
- v16 = v6;
- }
- sub_1000AE50(a1 + 32, a2, a3, a4);
- sub_1000B800((signed __int16 *)(a1 + 26), (signed __int16 *)(a1 + 20));
- sub_1000B120();
- sub_1000B7A0();
- flt_10039782 = (*(float *)a5 - (double)(signed int)(signed __int64)*(float *)a5) * v16 + flt_10039782;
- v13 = 0.5;
- flt_10039786 = (*(float *)(a5 + 4) - (double)(signed int)(signed __int64)*(float *)(a5 + 4)) * v16 + flt_10039786;
- flt_1003978A = *(float *)(a5 + 8) * 256.0 + flt_1003978A;
- if ( LODWORD(flt_10039782) > 0x80000000 )
- v13 = -0.5;
- v7 = (signed __int64)(flt_10039782 + v13);
- v14 = 0.5;
- v8 = v7 + 0x8000;
- if ( LODWORD(flt_10039786) > 0x80000000 )
- v14 = -0.5;
- v9 = (signed __int64)(flt_10039786 + v14);
- v15 = 0.5;
- v10 = v9 + 0x8000;
- if ( LODWORD(flt_1003978A) > 0x80000000 )
- v15 = -0.5;
- v11 = (signed __int64)(flt_1003978A + v15);
- dword_10039F00 = sub_1000BE60(v8, v10);
- return sub_10007C34(v8, v10, v11, *(_WORD **)(a1 + 38), a1 + 42);
- }
- // 10010CBC: using guessed type double __stdcall unknown_libname_9(_DWORD);
- // 10036C7C: using guessed type int dword_10036C7C;
- // 10039782: using guessed type float flt_10039782;
- // 10039786: using guessed type float flt_10039786;
- // 1003978A: using guessed type float flt_1003978A;
- // 10039F00: using guessed type int dword_10039F00;
- //----- (1000A880) --------------------------------------------------------
- _WORD *__cdecl sub_1000A880(int a1, int a2, float a3, float a4, int a5)
- {
- float v5; // eax@1
- double v6; // st7@2
- signed __int64 v7; // rax@9
- unsigned int v8; // edi@9
- signed __int64 v9; // rax@11
- int v10; // ebx@11
- unsigned int v11; // ebp@13
- float v13; // [esp+10h] [ebp-8h]@7
- float v14; // [esp+10h] [ebp-8h]@9
- float v15; // [esp+10h] [ebp-8h]@11
- float v16; // [esp+14h] [ebp-4h]@5
- v5 = 1.0;
- if ( SLODWORD(a3) <= 1065353216 )
- {
- v16 = 256.0;
- }
- else
- {
- v6 = 256.0;
- if ( dword_10036C7C )
- unknown_libname_9(LODWORD(a3));
- else
- v6 = 256.0 / a3;
- a3 = v5;
- v16 = v6;
- }
- sub_1000AE50(a1 + 18, a2, a3, a4);
- sub_1000B800((signed __int16 *)(a1 + 6), (signed __int16 *)(a1 + 12));
- sub_1000B120();
- sub_1000B7A0();
- flt_10039782 = (*(float *)a5 - (double)(signed int)(signed __int64)*(float *)a5) * v16 + flt_10039782;
- v13 = 0.5;
- flt_10039786 = (*(float *)(a5 + 4) - (double)(signed int)(signed __int64)*(float *)(a5 + 4)) * v16 + flt_10039786;
- flt_1003978A = *(float *)(a5 + 8) * 256.0 + flt_1003978A;
- if ( LODWORD(flt_10039782) > 0x80000000 )
- v13 = -0.5;
- v7 = (signed __int64)(flt_10039782 + v13);
- v14 = 0.5;
- v8 = v7 + 0x8000;
- if ( LODWORD(flt_10039786) > 0x80000000 )
- v14 = -0.5;
- v9 = (signed __int64)(flt_10039786 + v14);
- v15 = 0.5;
- v10 = v9 + 0x8000;
- if ( LODWORD(flt_1003978A) > 0x80000000 )
- v15 = -0.5;
- v11 = (signed __int64)(flt_1003978A + v15);
- dword_10039F00 = sub_1000BE60(v8, v10);
- return sub_10007C34(v8, v10, v11, *(_WORD **)(a1 + 24), a1 + 32);
- }
- // 10010CBC: using guessed type double __stdcall unknown_libname_9(_DWORD);
- // 10036C7C: using guessed type int dword_10036C7C;
- // 10039782: using guessed type float flt_10039782;
- // 10039786: using guessed type float flt_10039786;
- // 1003978A: using guessed type float flt_1003978A;
- // 10039F00: using guessed type int dword_10039F00;
- //----- (1000AA20) --------------------------------------------------------
- int __cdecl sub_1000AA20(int a1, int a2, float a3, float a4, int a5)
- {
- float v6; // ST08_4@3
- char v7; // c0@1
- float v9; // ST08_4@5
- char v10; // c0@3
- float v12; // ST08_4@7
- char v13; // c0@5
- float v15; // ST08_4@9
- char v16; // c0@7
- float v18; // ST08_4@11
- char v19; // c0@9
- float v21; // ST08_4@13
- char v22; // c0@11
- float v24; // ST08_4@15
- char v25; // c0@13
- float v27; // ST08_4@17
- char v28; // c0@15
- float v30; // ST08_4@19
- char v31; // c0@17
- char v33; // c0@19
- long double v34; // st7@24
- char v36; // c0@27
- signed __int64 v37; // rax@29
- float v39; // [esp+0h] [ebp-10h]@1
- float v40; // [esp+0h] [ebp-10h]@3
- float v41; // [esp+0h] [ebp-10h]@5
- float v42; // [esp+0h] [ebp-10h]@7
- float v43; // [esp+0h] [ebp-10h]@9
- float v44; // [esp+0h] [ebp-10h]@11
- float v45; // [esp+0h] [ebp-10h]@13
- float v46; // [esp+0h] [ebp-10h]@15
- float v47; // [esp+0h] [ebp-10h]@17
- float v48; // [esp+0h] [ebp-10h]@27
- float v49; // [esp+4h] [ebp-Ch]@22
- float v50; // [esp+8h] [ebp-8h]@1
- float v51; // [esp+Ch] [ebp-4h]@1
- v50 = a3 * 256.0;
- v51 = a4 * 256.0;
- v39 = 0.5;
- if ( v7 )
- v39 = -0.5;
- v6 = *(float *)a2 * v50;
- word_10039770 = (signed __int64)(v6 + v39);
- v40 = 0.5;
- if ( v10 )
- v40 = -0.5;
- v9 = *(float *)(a2 + 4) * v50;
- word_10039772 = (signed __int64)(v9 + v40);
- v41 = 0.5;
- if ( v13 )
- v41 = -0.5;
- v12 = *(float *)(a2 + 8) * v50;
- word_10039774 = (signed __int64)(v12 + v41);
- v42 = 0.5;
- if ( v16 )
- v42 = -0.5;
- v15 = *(float *)(a2 + 12) * v50;
- word_10039776 = (signed __int64)(v15 + v42);
- v43 = 0.5;
- if ( v19 )
- v43 = -0.5;
- v18 = *(float *)(a2 + 16) * v50;
- word_10039778 = (signed __int64)(v18 + v43);
- v44 = 0.5;
- if ( v22 )
- v44 = -0.5;
- v21 = *(float *)(a2 + 20) * v50;
- word_1003977A = (signed __int64)(v21 + v44);
- v45 = 0.5;
- if ( v25 )
- v45 = -0.5;
- v24 = *(float *)(a2 + 24) * v51;
- word_1003977C = (signed __int64)(v24 + v45);
- v46 = 0.5;
- if ( v28 )
- v46 = -0.5;
- v27 = *(float *)(a2 + 28) * v51;
- word_1003977E = (signed __int64)(v27 + v46);
- v47 = 0.5;
- if ( v31 )
- v47 = -0.5;
- v30 = *(float *)(a2 + 32) * v51;
- word_10039780 = (signed __int64)(v30 + v47);
- flt_10039782 = ((double)*(signed __int16 *)(a1 + 2) * *(float *)(a2 + 4)
- + (double)*(signed __int16 *)(a1 + 4) * *(float *)(a2 + 8)
- + (double)*(signed __int16 *)a1 * *(float *)a2)
- * v50;
- flt_10039786 = ((double)*(signed __int16 *)(a1 + 2) * *(float *)(a2 + 16)
- + (double)*(signed __int16 *)(a1 + 4) * *(float *)(a2 + 20)
- + (double)*(signed __int16 *)a1 * *(float *)(a2 + 12))
- * v50;
- flt_1003978A = ((double)*(signed __int16 *)(a1 + 4) * *(float *)(a2 + 32)
- + (double)*(signed __int16 *)(a1 + 2) * *(float *)(a2 + 28)
- + (double)*(signed __int16 *)a1 * *(float *)(a2 + 24))
- * v51;
- flt_1003978E = *(float *)(a5 + 8) * *(float *)(a2 + 24)
- + *(float *)(a5 + 4) * *(float *)(a2 + 12)
- + *(float *)a5 * *(float *)a2;
- flt_10039792 = *(float *)a5 * *(float *)(a2 + 4)
- + *(float *)(a5 + 8) * *(float *)(a2 + 28)
- + *(float *)(a5 + 4) * *(float *)(a2 + 16);
- flt_10039796 = *(float *)a5 * *(float *)(a2 + 8)
- + *(float *)(a5 + 4) * *(float *)(a2 + 20)
- + *(float *)(a5 + 8) * *(float *)(a2 + 32);
- if ( v33 )
- {
- flt_1003978E = -flt_1003978E;
- flt_10039792 = -flt_10039792;
- flt_10039796 = -flt_10039796;
- }
- if ( SLODWORD(flt_10039796) < 1065353216 )
- v49 = acos(flt_10039796);
- else
- v49 = 0.0;
- v34 = flt_10039792;
- if ( dword_10036C7C )
- unknown_libname_25(v34);
- else
- v34 = atan2(flt_1003978E, v34);
- v48 = v34;
- if ( v36 )
- v48 = v48 + 6.283185;
- v37 = (signed __int64)(v48 * 14.16479 + 0.5);
- if ( (_WORD)v37 == 89 )
- LOWORD(v37) = 0;
- LODWORD(v37) = (signed __int16)v37;
- dword_1002A298 = (int)*(&off_10036BE0 + (signed __int16)(signed __int64)(v49 * 14.642256 + 0.5))
- + -(signed __int16)v37
- + 89;
- return v37;
- }
- // 10011465: using guessed type double __usercall unknown_libname_25@<st0>(double@<st0>);
- // 1002A298: using guessed type int dword_1002A298;
- // 10036BE0: using guessed type void *off_10036BE0;
- // 10036C7C: using guessed type int dword_10036C7C;
- // 10039770: using guessed type __int16 word_10039770;
- // 10039772: using guessed type __int16 word_10039772;
- // 10039774: using guessed type __int16 word_10039774;
- // 10039776: using guessed type __int16 word_10039776;
- // 10039778: using guessed type __int16 word_10039778;
- // 1003977A: using guessed type __int16 word_1003977A;
- // 1003977C: using guessed type __int16 word_1003977C;
- // 1003977E: using guessed type __int16 word_1003977E;
- // 10039780: using guessed type __int16 word_10039780;
- // 10039782: using guessed type float flt_10039782;
- // 10039786: using guessed type float flt_10039786;
- // 1003978A: using guessed type float flt_1003978A;
- // 1003978E: using guessed type float flt_1003978E;
- // 10039792: using guessed type float flt_10039792;
- // 10039796: using guessed type float flt_10039796;
- //----- (1000AE50) --------------------------------------------------------
- int __cdecl sub_1000AE50(int a1, int a2, float a3, float a4)
- {
- double v4; // st6@1
- float v5; // ST08_4@3
- double v6; // st6@3
- float v7; // ST08_4@5
- double v8; // st6@5
- float v9; // ST08_4@7
- double v10; // st6@7
- float v11; // ST08_4@9
- double v12; // st6@9
- float v13; // ST08_4@11
- double v14; // st6@11
- float v15; // ST08_4@13
- double v16; // st6@13
- float v17; // ST08_4@15
- double v18; // st6@15
- float v19; // ST08_4@17
- double v20; // st6@17
- float v21; // ST08_4@19
- int result; // eax@19
- float v23; // [esp+0h] [ebp-10h]@1
- float v24; // [esp+0h] [ebp-10h]@3
- float v25; // [esp+0h] [ebp-10h]@5
- float v26; // [esp+0h] [ebp-10h]@7
- float v27; // [esp+0h] [ebp-10h]@9
- float v28; // [esp+0h] [ebp-10h]@11
- float v29; // [esp+0h] [ebp-10h]@13
- float v30; // [esp+0h] [ebp-10h]@15
- float v31; // [esp+0h] [ebp-10h]@17
- float v32; // [esp+8h] [ebp-8h]@1
- float v33; // [esp+Ch] [ebp-4h]@1
- v32 = a3 * 256.0;
- v33 = a4 * 256.0;
- v4 = *(float *)a2 * v32;
- v23 = 0.5;
- if ( v4 < 0.0 )
- v23 = -0.5;
- v5 = v4;
- word_10039770 = (signed __int64)(v5 + v23);
- v6 = *(float *)(a2 + 4) * v32;
- v24 = 0.5;
- if ( v6 < 0.0 )
- v24 = -0.5;
- v7 = v6;
- word_10039772 = (signed __int64)(v7 + v24);
- v8 = *(float *)(a2 + 8) * v32;
- v25 = 0.5;
- if ( v8 < 0.0 )
- v25 = -0.5;
- v9 = v8;
- word_10039774 = (signed __int64)(v9 + v25);
- v10 = *(float *)(a2 + 12) * v32;
- v26 = 0.5;
- if ( v10 < 0.0 )
- v26 = -0.5;
- v11 = v10;
- word_10039776 = (signed __int64)(v11 + v26);
- v12 = *(float *)(a2 + 16) * v32;
- v27 = 0.5;
- if ( v12 < 0.0 )
- v27 = -0.5;
- v13 = v12;
- word_10039778 = (signed __int64)(v13 + v27);
- v14 = *(float *)(a2 + 20) * v32;
- v28 = 0.5;
- if ( v14 < 0.0 )
- v28 = -0.5;
- v15 = v14;
- word_1003977A = (signed __int64)(v15 + v28);
- v16 = *(float *)(a2 + 24) * v33;
- v29 = 0.5;
- if ( v16 < 0.0 )
- v29 = -0.5;
- v17 = v16;
- word_1003977C = (signed __int64)(v17 + v29);
- v18 = *(float *)(a2 + 28) * v33;
- v30 = 0.5;
- if ( v18 < 0.0 )
- v30 = -0.5;
- v19 = v18;
- word_1003977E = (signed __int64)(v19 + v30);
- v20 = *(float *)(a2 + 32) * v33;
- v31 = 0.5;
- if ( v20 < 0.0 )
- v31 = -0.5;
- v21 = v20;
- word_10039780 = (signed __int64)(v21 + v31);
- flt_10039782 = ((double)*(signed __int16 *)(a1 + 2) * *(float *)(a2 + 4)
- + (double)*(signed __int16 *)(a1 + 4) * *(float *)(a2 + 8)
- + (double)*(signed __int16 *)a1 * *(float *)a2)
- * v32;
- flt_10039786 = ((double)*(signed __int16 *)(a1 + 2) * *(float *)(a2 + 16)
- + (double)*(signed __int16 *)(a1 + 4) * *(float *)(a2 + 20)
- + (double)*(signed __int16 *)a1 * *(float *)(a2 + 12))
- * v32;
- result = *(signed __int16 *)(a1 + 4);
- flt_1003978A = ((double)result * *(float *)(a2 + 32)
- + (double)*(signed __int16 *)(a1 + 2) * *(float *)(a2 + 28)
- + (double)*(signed __int16 *)a1 * *(float *)(a2 + 24))
- * v33;
- return result;
- }
- // 10039770: using guessed type __int16 word_10039770;
- // 10039772: using guessed type __int16 word_10039772;
- // 10039774: using guessed type __int16 word_10039774;
- // 10039776: using guessed type __int16 word_10039776;
- // 10039778: using guessed type __int16 word_10039778;
- // 1003977A: using guessed type __int16 word_1003977A;
- // 1003977C: using guessed type __int16 word_1003977C;
- // 1003977E: using guessed type __int16 word_1003977E;
- // 10039780: using guessed type __int16 word_10039780;
- // 10039782: using guessed type float flt_10039782;
- // 10039786: using guessed type float flt_10039786;
- // 1003978A: using guessed type float flt_1003978A;
- //----- (1000B120) --------------------------------------------------------
- int sub_1000B120()
- {
- int result; // eax@1
- LOWORD(dword_10039F10[0]) = -(signed __int16)(word_10039770 + word_10039772 + word_10039774);
- HIWORD(dword_10039F10[0]) = -(signed __int16)(word_1003977A + word_10039778 + word_10039776);
- dword_10039F14 = -(word_10039780 + word_1003977E + word_1003977C);
- word_10039F18 = -(signed __int16)(word_10039770 + word_10039772);
- word_10039F1A = -(signed __int16)(word_10039778 + word_10039776);
- dword_10039F1C = -(word_1003977E + word_1003977C);
- word_10039F20 = word_10039774 - word_10039772 - word_10039770;
- word_10039F22 = word_1003977A - word_10039776 - word_10039778;
- dword_10039F24 = word_10039780 - word_1003977C - word_1003977E;
- word_10039F28 = -(signed __int16)(word_10039770 + word_10039774);
- word_10039F2A = -(signed __int16)(word_1003977A + word_10039776);
- dword_10039F2C = -(word_10039780 + word_1003977C);
- word_10039F30 = -word_10039770;
- word_10039F32 = -word_10039776;
- dword_10039F34 = -word_1003977C;
- word_10039F38 = word_10039774 - word_10039770;
- word_10039F3A = word_1003977A - word_10039776;
- dword_10039F3C = word_10039780 - word_1003977C;
- word_10039F40 = word_10039772 - word_10039774 - word_10039770;
- word_10039F42 = word_10039778 - word_10039776 - word_1003977A;
- dword_10039F44 = word_1003977E - word_1003977C - word_10039780;
- word_10039F48 = word_10039772 - word_10039770;
- word_10039F4A = word_10039778 - word_10039776;
- dword_10039F4C = word_1003977E - word_1003977C;
- word_10039F50 = word_10039774 + word_10039772 - word_10039770;
- word_10039F52 = word_1003977A + word_10039778 - word_10039776;
- dword_10039F54 = word_10039780 + word_1003977E - word_1003977C;
- word_10039F58 = -(signed __int16)(word_10039772 + word_10039774);
- word_10039F5A = -(signed __int16)(word_1003977A + word_10039778);
- dword_10039F5C = -(word_10039780 + word_1003977E);
- word_10039F60 = -word_10039772;
- word_10039F62 = -word_10039778;
- dword_10039F64 = -word_1003977E;
- word_10039F68 = word_10039774 - word_10039772;
- word_10039F6A = word_1003977A - word_10039778;
- dword_10039F6C = word_10039780 - word_1003977E;
- word_10039F70 = -word_10039774;
- word_10039F72 = -word_1003977A;
- dword_10039F74 = -word_10039780;
- word_10039F78 = word_10039774;
- word_10039F7A = word_1003977A;
- dword_10039F7C = word_10039780;
- word_10039F80 = word_10039772 - word_10039774;
- word_10039F82 = word_10039778 - word_1003977A;
- dword_10039F84 = word_1003977E - word_10039780;
- word_10039F88 = word_10039772;
- word_10039F8A = word_10039778;
- dword_10039F8C = word_1003977E;
- word_10039F90 = word_10039774 + word_10039772;
- word_10039F92 = word_1003977A + word_10039778;
- dword_10039F94 = word_10039780 + word_1003977E;
- word_10039F98 = word_10039770 - word_10039774 - word_10039772;
- word_10039F9A = word_10039776 - word_10039778 - word_1003977A;
- dword_10039F9C = word_1003977C - word_1003977E - word_10039780;
- word_10039FA0 = word_10039770 - word_10039772;
- word_10039FA2 = word_10039776 - word_10039778;
- dword_10039FA4 = word_1003977C - word_1003977E;
- word_10039FA8 = word_10039770 + word_10039774 - word_10039772;
- word_10039FAA = word_1003977A + word_10039776 - word_10039778;
- dword_10039FAC = word_10039780 + word_1003977C - word_1003977E;
- word_10039FB0 = word_10039770 - word_10039774;
- word_10039FB2 = word_10039776 - word_1003977A;
- dword_10039FB4 = word_1003977C - word_10039780;
- word_10039FB8 = word_10039770;
- word_10039FBA = word_10039776;
- dword_10039FBC = word_1003977C;
- word_10039FC0 = word_10039770 + word_10039774;
- word_10039FC2 = word_1003977A + word_10039776;
- dword_10039FC4 = word_10039780 + word_1003977C;
- word_10039FC8 = word_10039770 + word_10039772 - word_10039774;
- word_10039FCA = word_10039778 + word_10039776 - word_1003977A;
- dword_10039FCC = word_1003977E + word_1003977C - word_10039780;
- word_10039FD0 = word_10039770 + word_10039772;
- word_10039FD2 = word_10039778 + word_10039776;
- dword_10039FD4 = word_1003977E + word_1003977C;
- word_10039FD8 = word_10039770 + word_10039774 + word_10039772;
- word_10039FDA = word_1003977A + word_10039778 + word_10039776;
- result = word_10039780;
- dword_10039FDC = word_10039780 + word_1003977E + word_1003977C;
- return result;
- }
- // 10039770: using guessed type __int16 word_10039770;
- // 10039772: using guessed type __int16 word_10039772;
- // 10039774: using guessed type __int16 word_10039774;
- // 10039776: using guessed type __int16 word_10039776;
- // 10039778: using guessed type __int16 word_10039778;
- // 1003977A: using guessed type __int16 word_1003977A;
- // 1003977C: using guessed type __int16 word_1003977C;
- // 1003977E: using guessed type __int16 word_1003977E;
- // 10039780: using guessed type __int16 word_10039780;
- // 10039F10: using guessed type int dword_10039F10[];
- // 10039F14: using guessed type int dword_10039F14;
- // 10039F18: using guessed type __int16 word_10039F18;
- // 10039F1A: using guessed type __int16 word_10039F1A;
- // 10039F1C: using guessed type int dword_10039F1C;
- // 10039F20: using guessed type __int16 word_10039F20;
- // 10039F22: using guessed type __int16 word_10039F22;
- // 10039F24: using guessed type int dword_10039F24;
- // 10039F28: using guessed type __int16 word_10039F28;
- // 10039F2A: using guessed type __int16 word_10039F2A;
- // 10039F2C: using guessed type int dword_10039F2C;
- // 10039F30: using guessed type __int16 word_10039F30;
- // 10039F32: using guessed type __int16 word_10039F32;
- // 10039F34: using guessed type int dword_10039F34;
- // 10039F38: using guessed type __int16 word_10039F38;
- // 10039F3A: using guessed type __int16 word_10039F3A;
- // 10039F3C: using guessed type int dword_10039F3C;
- // 10039F40: using guessed type __int16 word_10039F40;
- // 10039F42: using guessed type __int16 word_10039F42;
- // 10039F44: using guessed type int dword_10039F44;
- // 10039F48: using guessed type __int16 word_10039F48;
- // 10039F4A: using guessed type __int16 word_10039F4A;
- // 10039F4C: using guessed type int dword_10039F4C;
- // 10039F50: using guessed type __int16 word_10039F50;
- // 10039F52: using guessed type __int16 word_10039F52;
- // 10039F54: using guessed type int dword_10039F54;
- // 10039F58: using guessed type __int16 word_10039F58;
- // 10039F5A: using guessed type __int16 word_10039F5A;
- // 10039F5C: using guessed type int dword_10039F5C;
- // 10039F60: using guessed type __int16 word_10039F60;
- // 10039F62: using guessed type __int16 word_10039F62;
- // 10039F64: using guessed type int dword_10039F64;
- // 10039F68: using guessed type __int16 word_10039F68;
- // 10039F6A: using guessed type __int16 word_10039F6A;
- // 10039F6C: using guessed type int dword_10039F6C;
- // 10039F70: using guessed type __int16 word_10039F70;
- // 10039F72: using guessed type __int16 word_10039F72;
- // 10039F74: using guessed type int dword_10039F74;
- // 10039F78: using guessed type __int16 word_10039F78;
- // 10039F7A: using guessed type __int16 word_10039F7A;
- // 10039F7C: using guessed type int dword_10039F7C;
- // 10039F80: using guessed type __int16 word_10039F80;
- // 10039F82: using guessed type __int16 word_10039F82;
- // 10039F84: using guessed type int dword_10039F84;
- // 10039F88: using guessed type __int16 word_10039F88;
- // 10039F8A: using guessed type __int16 word_10039F8A;
- // 10039F8C: using guessed type int dword_10039F8C;
- // 10039F90: using guessed type __int16 word_10039F90;
- // 10039F92: using guessed type __int16 word_10039F92;
- // 10039F94: using guessed type int dword_10039F94;
- // 10039F98: using guessed type __int16 word_10039F98;
- // 10039F9A: using guessed type __int16 word_10039F9A;
- // 10039F9C: using guessed type int dword_10039F9C;
- // 10039FA0: using guessed type __int16 word_10039FA0;
- // 10039FA2: using guessed type __int16 word_10039FA2;
- // 10039FA4: using guessed type int dword_10039FA4;
- // 10039FA8: using guessed type __int16 word_10039FA8;
- // 10039FAA: using guessed type __int16 word_10039FAA;
- // 10039FAC: using guessed type int dword_10039FAC;
- // 10039FB0: using guessed type __int16 word_10039FB0;
- // 10039FB2: using guessed type __int16 word_10039FB2;
- // 10039FB4: using guessed type int dword_10039FB4;
- // 10039FB8: using guessed type __int16 word_10039FB8;
- // 10039FBA: using guessed type __int16 word_10039FBA;
- // 10039FBC: using guessed type int dword_10039FBC;
- // 10039FC0: using guessed type __int16 word_10039FC0;
- // 10039FC2: using guessed type __int16 word_10039FC2;
- // 10039FC4: using guessed type int dword_10039FC4;
- // 10039FC8: using guessed type __int16 word_10039FC8;
- // 10039FCA: using guessed type __int16 word_10039FCA;
- // 10039FCC: using guessed type int dword_10039FCC;
- // 10039FD0: using guessed type __int16 word_10039FD0;
- // 10039FD2: using guessed type __int16 word_10039FD2;
- // 10039FD4: using guessed type int dword_10039FD4;
- // 10039FD8: using guessed type __int16 word_10039FD8;
- // 10039FDA: using guessed type __int16 word_10039FDA;
- // 10039FDC: using guessed type int dword_10039FDC;
- //----- (1000B7A0) --------------------------------------------------------
- signed __int16 sub_1000B7A0()
- {
- int *v0; // ecx@1
- signed __int16 result; // ax@1
- int v2; // edx@2
- int v3; // esi@2
- dword_10039DEC = word_10039FD8 / 2;
- dword_10039DF0 = word_10039FDA / 2;
- v0 = dword_10039F10;
- dword_10039DF4 = dword_10039FDC / 2;
- result = 26;
- do
- {
- v2 = *((signed __int16 *)v0 + 1);
- v3 = *(signed __int16 *)v0 << 16;
- v0 += 2;
- --result;
- *(v0 - 2) = v3 + v2;
- }
- while ( result );
- return result;
- }
- // 10039DEC: using guessed type int dword_10039DEC;
- // 10039DF0: using guessed type int dword_10039DF0;
- // 10039DF4: using guessed type int dword_10039DF4;
- // 10039F10: using guessed type int dword_10039F10[];
- // 10039FD8: using guessed type __int16 word_10039FD8;
- // 10039FDA: using guessed type __int16 word_10039FDA;
- // 10039FDC: using guessed type int dword_10039FDC;
- //----- (1000B800) --------------------------------------------------------
- int __cdecl sub_1000B800(signed __int16 *a1, signed __int16 *a2)
- {
- int v2; // ebx@1
- int v3; // esi@1
- int v4; // edx@1
- int v5; // eax@1
- bool v6; // sf@1
- int v7; // edx@1
- signed int v8; // eax@1
- int v9; // edx@3
- int v10; // ecx@3
- int v11; // esi@3
- int v12; // ecx@3
- signed int v13; // esi@3
- int v14; // ecx@5
- int v15; // ebp@5
- signed int v16; // edi@5
- int v17; // esi@7
- signed int v18; // eax@7
- signed int v19; // ebp@9
- int v20; // esi@9
- int v21; // eax@9
- int v22; // edi@11
- signed int v23; // eax@11
- int v24; // edi@13
- signed int v25; // eax@13
- int v26; // ebx@13
- int v27; // ebp@15
- int v28; // ebx@15
- signed int v29; // eax@15
- int v30; // ebx@15
- int v31; // ebp@17
- __int16 v32; // cx@17
- __int16 v33; // dx@17
- __int16 v34; // dx@25
- __int16 v35; // cx@25
- __int16 v36; // dx@33
- __int16 v37; // cx@33
- __int16 v38; // dx@41
- __int16 v39; // cx@41
- __int16 v40; // dx@49
- __int16 v41; // cx@49
- __int16 v42; // dx@57
- __int16 v43; // cx@57
- __int16 v44; // dx@65
- __int16 v45; // cx@65
- __int16 v46; // dx@73
- __int16 v47; // cx@73
- __int16 v48; // cx@89
- int result; // eax@91
- __int16 v50; // [esp+10h] [ebp-1Ch]@11
- __int16 v51; // [esp+18h] [ebp-14h]@7
- v2 = a1[2];
- v3 = a1[1];
- v4 = word_10039774 * v2 + word_10039772 * v3;
- v5 = word_10039770 * *a1;
- v6 = v5 + v4 < 0;
- v7 = v5 + v4;
- v8 = 128;
- if ( v6 )
- v8 = -128;
- v9 = (v8 + v7) >> 8;
- v10 = word_10039776 * *a1;
- v11 = word_1003977A * v2 + word_10039778 * v3;
- v6 = v11 + v10 < 0;
- v12 = v11 + v10;
- v13 = 128;
- if ( v6 )
- v13 = -128;
- v14 = (v13 + v12) >> 8;
- v15 = word_10039770 * *a2;
- v16 = 128;
- if ( v15 < 0 )
- v16 = -128;
- v17 = word_10039776 * *a2;
- v18 = 128;
- v51 = (v16 + v15) >> 8;
- if ( v17 < 0 )
- v18 = -128;
- v19 = 128;
- v20 = (v18 + v17) >> 8;
- v21 = word_10039772 * a2[1];
- if ( v21 < 0 )
- v19 = -128;
- v22 = word_10039778 * a2[1];
- v50 = (v19 + v21) >> 8;
- v23 = 128;
- if ( v22 < 0 )
- v23 = -128;
- v24 = (v23 + v22) >> 8;
- v25 = 128;
- v26 = word_10039774 * a2[2];
- if ( v26 < 0 )
- v25 = -128;
- v27 = word_1003977A * a2[2];
- v28 = v25 + v26;
- v29 = 128;
- v30 = v28 >> 8;
- if ( v27 < 0 )
- v29 = -128;
- *(_WORD *)(dword_1002A29C + 0x40000) = 0x7FFF;
- v31 = (v29 + v27) >> 8;
- *(_WORD *)(dword_1002A29C + 262146) = 0x7FFF;
- *(_WORD *)(dword_1002A29C + 262148) = -1;
- v32 = v20 + v14;
- v33 = v51 + v9;
- *(_WORD *)(dword_1002A29C + 262150) = -1;
- *(_WORD *)(dword_1002A29C + 262152) = 0;
- *(_WORD *)(dword_1002A29C + 262154) = 0;
- if ( *(_WORD *)(dword_1002A29C + 0x40000) > v33 )
- *(_WORD *)(dword_1002A29C + 0x40000) = v33;
- if ( *(_WORD *)(dword_1002A29C + 262148) < v33 )
- *(_WORD *)(dword_1002A29C + 262148) = v33;
- if ( *(_WORD *)(dword_1002A29C + 262146) > v32 )
- *(_WORD *)(dword_1002A29C + 262146) = v32;
- if ( *(_WORD *)(dword_1002A29C + 262150) < v32 )
- *(_WORD *)(dword_1002A29C + 262150) = v32;
- v34 = v50 + v33;
- v35 = v24 + v32;
- if ( *(_WORD *)(dword_1002A29C + 0x40000) > v34 )
- *(_WORD *)(dword_1002A29C + 0x40000) = v34;
- if ( *(_WORD *)(dword_1002A29C + 262148) < v34 )
- *(_WORD *)(dword_1002A29C + 262148) = v34;
- if ( *(_WORD *)(dword_1002A29C + 262146) > v35 )
- *(_WORD *)(dword_1002A29C + 262146) = v35;
- if ( *(_WORD *)(dword_1002A29C + 262150) < v35 )
- *(_WORD *)(dword_1002A29C + 262150) = v35;
- v36 = v34 - v51;
- v37 = v35 - v20;
- if ( *(_WORD *)(dword_1002A29C + 0x40000) > v36 )
- *(_WORD *)(dword_1002A29C + 0x40000) = v36;
- if ( *(_WORD *)(dword_1002A29C + 262148) < v36 )
- *(_WORD *)(dword_1002A29C + 262148) = v36;
- if ( *(_WORD *)(dword_1002A29C + 262146) > v37 )
- *(_WORD *)(dword_1002A29C + 262146) = v37;
- if ( *(_WORD *)(dword_1002A29C + 262150) < v37 )
- *(_WORD *)(dword_1002A29C + 262150) = v37;
- v38 = v36 - v50;
- v39 = v37 - v24;
- if ( *(_WORD *)(dword_1002A29C + 0x40000) > v38 )
- *(_WORD *)(dword_1002A29C + 0x40000) = v38;
- if ( *(_WORD *)(dword_1002A29C + 262148) < v38 )
- *(_WORD *)(dword_1002A29C + 262148) = v38;
- if ( *(_WORD *)(dword_1002A29C + 262146) > v39 )
- *(_WORD *)(dword_1002A29C + 262146) = v39;
- if ( *(_WORD *)(dword_1002A29C + 262150) < v39 )
- *(_WORD *)(dword_1002A29C + 262150) = v39;
- v40 = v30 + v38;
- v41 = v31 + v39;
- if ( *(_WORD *)(dword_1002A29C + 0x40000) > v40 )
- *(_WORD *)(dword_1002A29C + 0x40000) = v40;
- if ( *(_WORD *)(dword_1002A29C + 262148) < v40 )
- *(_WORD *)(dword_1002A29C + 262148) = v40;
- if ( *(_WORD *)(dword_1002A29C + 262146) > v41 )
- *(_WORD *)(dword_1002A29C + 262146) = v41;
- if ( *(_WORD *)(dword_1002A29C + 262150) < v41 )
- *(_WORD *)(dword_1002A29C + 262150) = v41;
- v42 = v51 + v40;
- v43 = v20 + v41;
- if ( *(_WORD *)(dword_1002A29C + 0x40000) > v42 )
- *(_WORD *)(dword_1002A29C + 0x40000) = v42;
- if ( *(_WORD *)(dword_1002A29C + 262148) < v42 )
- *(_WORD *)(dword_1002A29C + 262148) = v42;
- if ( *(_WORD *)(dword_1002A29C + 262146) > v43 )
- *(_WORD *)(dword_1002A29C + 262146) = v43;
- if ( *(_WORD *)(dword_1002A29C + 262150) < v43 )
- *(_WORD *)(dword_1002A29C + 262150) = v43;
- v44 = v50 + v42;
- v45 = v24 + v43;
- if ( *(_WORD *)(dword_1002A29C + 0x40000) > v44 )
- *(_WORD *)(dword_1002A29C + 0x40000) = v44;
- if ( *(_WORD *)(dword_1002A29C + 262148) < v44 )
- *(_WORD *)(dword_1002A29C + 262148) = v44;
- if ( *(_WORD *)(dword_1002A29C + 262146) > v45 )
- *(_WORD *)(dword_1002A29C + 262146) = v45;
- if ( *(_WORD *)(dword_1002A29C + 262150) < v45 )
- *(_WORD *)(dword_1002A29C + 262150) = v45;
- v46 = v44 - v51;
- v47 = v45 - v20;
- if ( *(_WORD *)(dword_1002A29C + 0x40000) > v46 )
- *(_WORD *)(dword_1002A29C + 0x40000) = v46;
- if ( *(_WORD *)(dword_1002A29C + 262148) < v46 )
- *(_WORD *)(dword_1002A29C + 262148) = v46;
- if ( *(_WORD *)(dword_1002A29C + 262146) > v47 )
- *(_WORD *)(dword_1002A29C + 262146) = v47;
- if ( *(_WORD *)(dword_1002A29C + 262150) < v47 )
- *(_WORD *)(dword_1002A29C + 262150) = v47;
- *(_WORD *)(dword_1002A29C + 0x40000) += 126;
- if ( *(_WORD *)(dword_1002A29C + 0x40000) < 0 )
- *(_WORD *)(dword_1002A29C + 0x40000) = 0;
- *(_WORD *)(dword_1002A29C + 262148) += 130;
- if ( *(_WORD *)(dword_1002A29C + 262148) > 255 )
- *(_WORD *)(dword_1002A29C + 262148) = 255;
- *(_WORD *)(dword_1002A29C + 262146) += 126;
- if ( *(_WORD *)(dword_1002A29C + 262146) < 0 )
- *(_WORD *)(dword_1002A29C + 262146) = 0;
- *(_WORD *)(dword_1002A29C + 262150) += 130;
- if ( *(_WORD *)(dword_1002A29C + 262150) > 255 )
- *(_WORD *)(dword_1002A29C + 262150) = 255;
- v48 = *(_WORD *)(dword_1002A29C + 262148);
- if ( v48 < 0 || *(_WORD *)(dword_1002A29C + 262150) < 0 )
- {
- *(_WORD *)(dword_1002A29C + 262152) = 0;
- result = dword_1002A29C;
- *(_WORD *)(dword_1002A29C + 262154) = 0;
- }
- else
- {
- *(_WORD *)(dword_1002A29C + 262152) = v48 - *(_WORD *)(dword_1002A29C + 0x40000) + 1;
- result = dword_1002A29C;
- *(_WORD *)(dword_1002A29C + 262154) = *(_WORD *)(dword_1002A29C + 262150) - *(_WORD *)(dword_1002A29C + 262146) + 1;
- }
- return result;
- }
- // 10039770: using guessed type __int16 word_10039770;
- // 10039772: using guessed type __int16 word_10039772;
- // 10039774: using guessed type __int16 word_10039774;
- // 10039776: using guessed type __int16 word_10039776;
- // 10039778: using guessed type __int16 word_10039778;
- // 1003977A: using guessed type __int16 word_1003977A;
- //----- (1000BD10) --------------------------------------------------------
- int __cdecl sub_1000BD10(int a1, int a2)
- {
- int v2; // ecx@1
- int v3; // edx@1
- char *v4; // edi@1
- signed int v5; // esi@1
- int v6; // eax@5
- int v7; // esi@5
- signed int v8; // edx@5
- int v9; // ecx@5
- int v10; // edi@5
- int v11; // ebx@5
- int v12; // ecx@6
- int v13; // ebp@6
- int v14; // ecx@6
- int v15; // ecx@6
- int v16; // ebx@9
- int result; // eax@9
- int v18; // [esp+10h] [ebp-8h]@5
- signed int v19; // [esp+14h] [ebp-4h]@0
- v2 = 0;
- v3 = 0;
- v4 = byte_1002A2D0;
- v5 = v19;
- do
- {
- if ( SHIWORD(dword_10039F10[2 * (unsigned __int8)*v4]) * SHIWORD(dword_10039F10[2 * (unsigned __int8)*v4])
- + SLOWORD(dword_10039F10[2 * (unsigned __int8)*v4]) * SLOWORD(dword_10039F10[2 * (unsigned __int8)*v4]) > v2 )
- {
- v2 = SHIWORD(dword_10039F10[2 * (unsigned __int8)*v4]) * SHIWORD(dword_10039F10[2 * (unsigned __int8)*v4])
- + SLOWORD(dword_10039F10[2 * (unsigned __int8)*v4]) * SLOWORD(dword_10039F10[2 * (unsigned __int8)*v4]);
- v5 = v3;
- }
- v4 += 3;
- ++v3;
- }
- while ( v4 < (char *)&unk_1002A2DC );
- v6 = 0;
- v7 = 3 * v5;
- v8 = 1;
- v9 = (unsigned __int8)byte_1002A2D0[v7];
- v10 = SHIWORD(dword_10039F10[2 * v9]);
- v11 = SLOWORD(dword_10039F10[2 * v9]);
- v18 = (unsigned __int8)byte_1002A2D0[v7];
- do
- {
- v12 = (unsigned __int8)byte_1002A2D0[v8 + v7];
- v13 = SHIWORD(dword_10039F10[2 * v12]);
- v14 = SLOWORD(dword_10039F10[2 * v12]) - v11;
- v15 = (v13 - v10) * (v13 - v10) + v14 * v14;
- if ( v15 > v6 )
- {
- v6 = v15;
- v19 = v8;
- }
- ++v8;
- }
- while ( v8 < 3 );
- v16 = (unsigned __int8)byte_1002A2D0[v7 + v19];
- dword_10039F00 = sub_1000BE60(a1, a2);
- dword_10039F04 = sub_1000BE60(a1 + SLOWORD(dword_10039F10[2 * v18]) / 2, a2 + SHIWORD(dword_10039F10[2 * v18]) / 2);
- result = sub_1000BE60(a1 + SLOWORD(dword_10039F10[2 * v16]) / 2, a2 + SHIWORD(dword_10039F10[2 * v16]) / 2);
- dword_10039FE0 = result;
- return result;
- }
- // 10039F00: using guessed type int dword_10039F00;
- // 10039F04: using guessed type int dword_10039F04;
- // 10039F10: using guessed type int dword_10039F10[];
- // 10039FE0: using guessed type int dword_10039FE0;
- //----- (1000BE60) --------------------------------------------------------
- int __cdecl sub_1000BE60(int a1, int a2)
- {
- return a2 | (a1 << 16);
- }
- //----- (1000BE70) --------------------------------------------------------
- unsigned int __cdecl sub_1000BE70(int a1, int a2)
- {
- _WORD *v2; // edi@1
- _WORD *v3; // edx@1
- int v4; // ecx@1
- unsigned int *v5; // esi@1
- unsigned int result; // eax@1
- int v7; // ecx@1
- int v8; // ebp@1
- int v9; // [esp+0h] [ebp-2Ch]@1
- int v10; // [esp+4h] [ebp-28h]@1
- int v11; // [esp+8h] [ebp-24h]@1
- int v12; // [esp+Ch] [ebp-20h]@1
- int v13; // [esp+10h] [ebp-1Ch]@1
- v2 = (_WORD *)(2 * (a1 + a2 * dword_1002A2A8 - 1) + dword_1002A2A0);
- v3 = (_WORD *)(2 * (a1 + a2 * dword_1002A2A8 - 1) + dword_1002A2A4);
- v4 = *(unsigned __int16 *)(dword_1002A29C + 262152);
- v13 = *(unsigned __int16 *)(dword_1002A29C + 262154);
- v5 = (unsigned int *)((*(unsigned __int16 *)(dword_1002A29C + 262146) << 10)
- + 4 * *(unsigned __int16 *)(dword_1002A29C + 0x40000)
- + dword_1002A29C);
- v12 = 2 * (dword_1002A2A8 - v4);
- v11 = 2 * (dword_1002A2A8 - v4);
- result = 4 * (256 - v4);
- v10 = 4 * (256 - v4);
- v7 = v4 + 1;
- v9 = v7;
- v8 = dword_1002A2B0;
- while ( 1 )
- {
- while ( --v7 )
- {
- ++v2;
- ++v3;
- result = *v5;
- *v5 = 0xFFFF;
- ++v5;
- if ( (_WORD)result != -1 && *v2 > (unsigned __int16)result )
- {
- *v2 = result;
- result >>= 16;
- LOWORD(result) = *(_WORD *)(v8 + 2 * result);
- *v3 = result;
- }
- }
- if ( !--v13 )
- break;
- v7 = v9;
- v5 = (unsigned int *)((char *)v5 + v10);
- v2 = (_WORD *)((char *)v2 + v11);
- v3 = (_WORD *)((char *)v3 + v12);
- }
- return result;
- }
- // 1002A2A0: using guessed type int dword_1002A2A0;
- // 1002A2A4: using guessed type int dword_1002A2A4;
- // 1002A2A8: using guessed type int dword_1002A2A8;
- // 1002A2B0: using guessed type int dword_1002A2B0;
- //----- (1000BF58) --------------------------------------------------------
- int __cdecl sub_1000BF58(int a1, int a2, int a3, __int16 a4, unsigned int a5)
- {
- _WORD *v5; // edi@1
- _DWORD *v6; // esi@1
- int v7; // ecx@1
- unsigned int v8; // edx@1
- unsigned int v9; // edx@1
- _WORD *v10; // ebp@1
- int v11; // ebx@1
- int result; // eax@1
- _DWORD *i; // esi@1
- unsigned __int8 v14; // cf@3
- _DWORD *v15; // esi@9
- unsigned int v16; // edx@9
- _DWORD *v17; // [esp+4h] [ebp-24h]@1
- int v18; // [esp+8h] [ebp-20h]@1
- int v19; // [esp+Ch] [ebp-1Ch]@1
- v5 = (_WORD *)(2 * (a1 + a2 * dword_1002A2A8 - 1) + dword_1002A2A0);
- v6 = (_DWORD *)((*(unsigned __int16 *)(dword_1002A29C + 262146) << 10)
- + 4 * *(unsigned __int16 *)(dword_1002A29C + 0x40000)
- + dword_1002A29C);
- v19 = 2 * (dword_1002A2A8 - a3);
- v18 = 2 * (dword_1002A2A8 - a3);
- v17 = v6;
- v7 = a3 + 1;
- v8 = a5;
- BYTE1(v8) = byte_1002A2C0;
- v9 = _byteswap_ulong(v8);
- LOBYTE(v9) = a5;
- BYTE1(v9) = byte_1002A2BC;
- v10 = (_WORD *)(2 * (a1 + a2 * dword_1002A2A8 - 1) + dword_1002A2A4);
- v11 = *v6;
- result = __ROL4__(*v6, 16);
- for ( i = v6 + 1; ; i = v15 + 1 )
- {
- while ( --v7 )
- {
- ++v10;
- ++v5;
- v14 = __CFADD__((_BYTE)v9, BYTE1(v9));
- BYTE1(v9) += v9;
- if ( v14 )
- {
- v11 = *i;
- result = __ROL4__(*i, 16);
- ++i;
- }
- if ( (_WORD)v11 != -1 && *v5 > (unsigned __int16)v11 )
- {
- *v5 = v11;
- *v10 = result;
- }
- }
- if ( !--a4 )
- break;
- v16 = _byteswap_ulong(v9);
- v7 = a3 + 1;
- v15 = v17;
- v5 = (_WORD *)((char *)v5 + v18);
- v10 = (_WORD *)((char *)v10 + v19);
- v14 = __CFADD__((_BYTE)v16, BYTE1(v16));
- BYTE1(v16) += v16;
- if ( v14 )
- {
- v15 = v17 + 256;
- v17 += 256;
- }
- v9 = _byteswap_ulong(v16);
- BYTE1(v9) = byte_1002A2BC;
- v11 = *v15;
- result = __ROL4__(*v15, 16);
- }
- return result;
- }
- // 1002A2A0: using guessed type int dword_1002A2A0;
- // 1002A2A4: using guessed type int dword_1002A2A4;
- // 1002A2A8: using guessed type int dword_1002A2A8;
- // 1002A2BC: using guessed type char byte_1002A2BC;
- // 1002A2C0: using guessed type char byte_1002A2C0;
- //----- (1000C05D) --------------------------------------------------------
- unsigned int __cdecl sub_1000C05D(int a1, int a2)
- {
- int v2; // ecx@1
- unsigned int *v3; // esi@1
- unsigned int result; // eax@1
- int v5; // ecx@1
- int v6; // ebp@1
- _WORD *v7; // edx@1
- unsigned __int16 *v8; // edi@1
- unsigned __int16 v9; // bx@4
- unsigned __int16 *v10; // edi@8
- _WORD *v11; // edx@8
- int v12; // [esp+0h] [ebp-2Ch]@1
- int v13; // [esp+4h] [ebp-28h]@1
- int v14; // [esp+8h] [ebp-24h]@1
- int v15; // [esp+Ch] [ebp-20h]@1
- int v16; // [esp+10h] [ebp-1Ch]@1
- v2 = *(unsigned __int16 *)(dword_1002A29C + 262152);
- v16 = *(unsigned __int16 *)(dword_1002A29C + 262154);
- v3 = (unsigned int *)((*(unsigned __int16 *)(dword_1002A29C + 262146) << 10)
- + 4 * *(unsigned __int16 *)(dword_1002A29C + 0x40000)
- + dword_1002A29C);
- v15 = 4 * (dword_1002A2A8 - v2);
- v14 = 4 * (dword_1002A2A8 - v2);
- result = 4 * (256 - v2);
- v13 = 4 * (256 - v2);
- v5 = v2 + 1;
- v12 = v5;
- v6 = dword_1002A2B0;
- v7 = (_WORD *)(2 * (a1 + a2 * dword_1002A2A8) + dword_1002A2A4 - 4);
- v8 = (unsigned __int16 *)(2 * (a1 + a2 * dword_1002A2A8) + dword_1002A2A0 - 4);
- while ( 1 )
- {
- while ( --v5 )
- {
- v7 += 2;
- v8 += 2;
- result = *v3;
- *v3 = 0xFFFF;
- ++v3;
- if ( (_WORD)result != -1 )
- {
- v9 = result;
- result >>= 16;
- LOWORD(result) = *(_WORD *)(v6 + 2 * result);
- if ( *v8 > v9 )
- {
- *v8 = v9;
- *v7 = result;
- }
- if ( v8[1] > v9 )
- {
- v8[1] = v9;
- v7[1] = result;
- }
- v10 = (unsigned __int16 *)((char *)v8 + dword_1002A2AC);
- v11 = (_WORD *)((char *)v7 + dword_1002A2AC);
- if ( *v10 > v9 )
- {
- *v10 = v9;
- *v11 = result;
- }
- if ( v10[1] > v9 )
- {
- v10[1] = v9;
- v11[1] = result;
- }
- v8 = (unsigned __int16 *)((char *)v10 - dword_1002A2AC);
- v7 = (_WORD *)((char *)v11 - dword_1002A2AC);
- }
- }
- if ( !--v16 )
- break;
- v5 = v12;
- v3 = (unsigned int *)((char *)v3 + v13);
- v8 = (unsigned __int16 *)((char *)v8 + v14);
- v7 = (_WORD *)((char *)v7 + v15);
- }
- return result;
- }
- // 1002A2A0: using guessed type int dword_1002A2A0;
- // 1002A2A4: using guessed type int dword_1002A2A4;
- // 1002A2A8: using guessed type int dword_1002A2A8;
- // 1002A2AC: using guessed type int dword_1002A2AC;
- // 1002A2B0: using guessed type int dword_1002A2B0;
- //----- (1000C18E) --------------------------------------------------------
- int __cdecl sub_1000C18E(int a1, int a2)
- {
- _WORD *v2; // edi@1
- _WORD *v3; // edx@1
- int v4; // ecx@1
- int *v5; // esi@1
- int result; // eax@1
- int v7; // ecx@1
- int v8; // ebp@1
- int v9; // [esp+0h] [ebp-2Ch]@1
- int v10; // [esp+4h] [ebp-28h]@1
- int v11; // [esp+8h] [ebp-24h]@1
- int v12; // [esp+Ch] [ebp-20h]@1
- int v13; // [esp+10h] [ebp-1Ch]@1
- v2 = (_WORD *)(2 * (a1 + a2 * dword_1002A2A8 - 1) + dword_1002A2A0);
- v3 = (_WORD *)(2 * (a1 + a2 * dword_1002A2A8 - 1) + dword_1002A2A4);
- v4 = *(unsigned __int16 *)(dword_1002A29C + 262152);
- v13 = *(unsigned __int16 *)(dword_1002A29C + 262154);
- v5 = (int *)((*(unsigned __int16 *)(dword_1002A29C + 262146) << 10)
- + 4 * *(unsigned __int16 *)(dword_1002A29C + 0x40000)
- + dword_1002A29C);
- v12 = 2 * (dword_1002A2A8 - v4);
- v11 = 2 * (dword_1002A2A8 - v4);
- result = 4 * (256 - v4);
- v10 = 4 * (256 - v4);
- v7 = v4 + 1;
- v9 = v7;
- v8 = dword_1002A2B4;
- while ( 1 )
- {
- while ( --v7 )
- {
- ++v2;
- ++v3;
- result = *v5;
- *v5 = 0xFFFF;
- ++v5;
- if ( (_WORD)result != -1 && *v2 > 0xFFFEu )
- {
- *v2 = -2;
- result = (unsigned __int16)*v3;
- LOWORD(result) = *(_WORD *)(v8 + 2 * result);
- *v3 = result;
- }
- }
- if ( !--v13 )
- break;
- v7 = v9;
- v5 = (int *)((char *)v5 + v10);
- v2 = (_WORD *)((char *)v2 + v11);
- v3 = (_WORD *)((char *)v3 + v12);
- }
- return result;
- }
- // 1002A2A0: using guessed type int dword_1002A2A0;
- // 1002A2A4: using guessed type int dword_1002A2A4;
- // 1002A2A8: using guessed type int dword_1002A2A8;
- // 1002A2B4: using guessed type int dword_1002A2B4;
- //----- (1000C27D) --------------------------------------------------------
- _WORD *__cdecl sub_1000C27D(int a1, int a2, int a3, __int16 a4, unsigned int a5)
- {
- _WORD *v5; // edi@1
- _WORD **v6; // esi@1
- int v7; // ecx@1
- unsigned int v8; // edx@1
- unsigned int v9; // edx@1
- _WORD *v10; // ebp@1
- _WORD *result; // eax@1
- int v12; // ebx@1
- _WORD **i; // esi@1
- unsigned __int8 v14; // cf@3
- _WORD **v15; // esi@9
- unsigned int v16; // edx@9
- _WORD **v17; // [esp+4h] [ebp-24h]@1
- int v18; // [esp+8h] [ebp-20h]@1
- int v19; // [esp+Ch] [ebp-1Ch]@1
- v5 = (_WORD *)(2 * (a1 + a2 * dword_1002A2A8 - 1) + dword_1002A2A0);
- v6 = (_WORD **)((*(unsigned __int16 *)(dword_1002A29C + 262146) << 10)
- + 4 * *(unsigned __int16 *)(dword_1002A29C + 0x40000)
- + dword_1002A29C);
- v19 = 2 * (dword_1002A2A8 - a3);
- v18 = 2 * (dword_1002A2A8 - a3);
- v17 = v6;
- v7 = a3 + 1;
- v8 = a5;
- BYTE1(v8) = byte_1002A2C0;
- v9 = _byteswap_ulong(v8);
- LOBYTE(v9) = a5;
- BYTE1(v9) = byte_1002A2BC;
- v10 = (_WORD *)(2 * (a1 + a2 * dword_1002A2A8 - 1) + dword_1002A2A4);
- result = *v6;
- v12 = dword_1002A2B4;
- for ( i = v6 + 1; ; i = v15 + 1 )
- {
- while ( --v7 )
- {
- ++v10;
- ++v5;
- v14 = __CFADD__((_BYTE)v9, BYTE1(v9));
- BYTE1(v9) += v9;
- if ( v14 )
- {
- result = *i;
- ++i;
- }
- if ( (_WORD)result != -1 )
- {
- result = (_WORD *)65534;
- if ( *v5 > 0xFFFEu )
- {
- *v5 = -2;
- result = (_WORD *)(v12 + 2 * (unsigned __int16)*v10);
- LOWORD(result) = *result;
- *v10 = (_WORD)result;
- }
- }
- }
- if ( !--a4 )
- break;
- v16 = _byteswap_ulong(v9);
- v7 = a3 + 1;
- v15 = v17;
- v5 = (_WORD *)((char *)v5 + v18);
- v10 = (_WORD *)((char *)v10 + v19);
- v14 = __CFADD__((_BYTE)v16, BYTE1(v16));
- BYTE1(v16) += v16;
- if ( v14 )
- {
- v15 = v17 + 256;
- v17 += 256;
- }
- v9 = _byteswap_ulong(v16);
- BYTE1(v9) = byte_1002A2BC;
- result = *v15;
- }
- return result;
- }
- // 1002A2A0: using guessed type int dword_1002A2A0;
- // 1002A2A4: using guessed type int dword_1002A2A4;
- // 1002A2A8: using guessed type int dword_1002A2A8;
- // 1002A2B4: using guessed type int dword_1002A2B4;
- // 1002A2BC: using guessed type char byte_1002A2BC;
- // 1002A2C0: using guessed type char byte_1002A2C0;
- //----- (1000C38C) --------------------------------------------------------
- int __cdecl sub_1000C38C(int a1, int a2)
- {
- int v2; // ecx@1
- int *v3; // esi@1
- int result; // eax@1
- int v5; // ecx@1
- _WORD *v6; // edx@1
- _WORD *v7; // edi@1
- int v8; // ebp@1
- _WORD *v9; // edi@8
- _WORD *v10; // edx@8
- int v11; // [esp+0h] [ebp-2Ch]@1
- int v12; // [esp+4h] [ebp-28h]@1
- int v13; // [esp+8h] [ebp-24h]@1
- int v14; // [esp+Ch] [ebp-20h]@1
- int v15; // [esp+10h] [ebp-1Ch]@1
- v2 = *(unsigned __int16 *)(dword_1002A29C + 262152);
- v15 = *(unsigned __int16 *)(dword_1002A29C + 262154);
- v3 = (int *)((*(unsigned __int16 *)(dword_1002A29C + 262146) << 10)
- + 4 * *(unsigned __int16 *)(dword_1002A29C + 0x40000)
- + dword_1002A29C);
- v14 = 4 * (dword_1002A2A8 - v2);
- v13 = 4 * (dword_1002A2A8 - v2);
- result = 4 * (256 - v2);
- v12 = 4 * (256 - v2);
- v5 = v2 + 1;
- v11 = v5;
- v6 = (_WORD *)(2 * (a1 + a2 * dword_1002A2A8) + dword_1002A2A4 - 4);
- v7 = (_WORD *)(2 * (a1 + a2 * dword_1002A2A8) + dword_1002A2A0 - 4);
- v8 = dword_1002A2B4;
- while ( 1 )
- {
- while ( --v5 )
- {
- v6 += 2;
- v7 += 2;
- result = *v3;
- *v3 = 0xFFFF;
- ++v3;
- if ( (_WORD)result != -1 )
- {
- result = 0;
- if ( *v7 > 0xFFFEu )
- {
- *v7 = -2;
- LOWORD(result) = *v6;
- LOWORD(result) = *(_WORD *)(v8 + 2 * result);
- *v6 = result;
- }
- if ( v7[1] > 0xFFFEu )
- {
- v7[1] = -2;
- LOWORD(result) = v6[1];
- LOWORD(result) = *(_WORD *)(v8 + 2 * result);
- v6[1] = result;
- }
- v9 = (_WORD *)((char *)v7 + dword_1002A2AC);
- v10 = (_WORD *)((char *)v6 + dword_1002A2AC);
- if ( *v9 > 0xFFFEu )
- {
- *v9 = -2;
- LOWORD(result) = *v10;
- LOWORD(result) = *(_WORD *)(v8 + 2 * result);
- *v10 = result;
- }
- if ( v9[1] > 0xFFFEu )
- {
- v9[1] = -2;
- LOWORD(result) = v10[1];
- LOWORD(result) = *(_WORD *)(v8 + 2 * result);
- v10[1] = result;
- }
- v7 = (_WORD *)((char *)v9 - dword_1002A2AC);
- v6 = (_WORD *)((char *)v10 - dword_1002A2AC);
- }
- }
- if ( !--v15 )
- break;
- v5 = v11;
- v3 = (int *)((char *)v3 + v12);
- v7 = (_WORD *)((char *)v7 + v13);
- v6 = (_WORD *)((char *)v6 + v14);
- }
- return result;
- }
- // 1002A2A0: using guessed type int dword_1002A2A0;
- // 1002A2A4: using guessed type int dword_1002A2A4;
- // 1002A2A8: using guessed type int dword_1002A2A8;
- // 1002A2AC: using guessed type int dword_1002A2AC;
- // 1002A2B4: using guessed type int dword_1002A2B4;
- //----- (1000C4F0) --------------------------------------------------------
- unsigned int __cdecl sub_1000C4F0(int a1, int a2)
- {
- _WORD *v2; // edi@1
- _BYTE *v3; // edx@1
- int v4; // ecx@1
- unsigned int *v5; // esi@1
- unsigned int result; // eax@1
- int v7; // ecx@1
- int v8; // ebp@1
- int v9; // [esp+0h] [ebp-2Ch]@1
- int v10; // [esp+4h] [ebp-28h]@1
- int v11; // [esp+8h] [ebp-24h]@1
- int v12; // [esp+Ch] [ebp-20h]@1
- int v13; // [esp+10h] [ebp-1Ch]@1
- v2 = (_WORD *)(2 * (a1 + a2 * dword_1002A2A8 - 1) + dword_1002A2A0);
- v3 = (_BYTE *)(a1 + a2 * dword_1002A2A8 - 1 + dword_1002A2A4);
- v4 = *(unsigned __int16 *)(dword_1002A29C + 262152);
- v13 = *(unsigned __int16 *)(dword_1002A29C + 262154);
- v5 = (unsigned int *)((*(unsigned __int16 *)(dword_1002A29C + 262146) << 10)
- + 4 * *(unsigned __int16 *)(dword_1002A29C + 0x40000)
- + dword_1002A29C);
- v12 = dword_1002A2A8 - v4;
- v11 = 2 * (dword_1002A2A8 - v4);
- result = 4 * (256 - v4);
- v10 = 4 * (256 - v4);
- v7 = v4 + 1;
- v9 = v7;
- v8 = dword_1002A2B0;
- while ( 1 )
- {
- while ( --v7 )
- {
- ++v2;
- ++v3;
- result = *v5;
- *v5 = 0xFFFF;
- ++v5;
- if ( (_WORD)result != -1 && *v2 > (unsigned __int16)result )
- {
- *v2 = result;
- result >>= 16;
- LOBYTE(result) = *(_BYTE *)(result + v8);
- *v3 = result;
- }
- }
- if ( !--v13 )
- break;
- v7 = v9;
- v5 = (unsigned int *)((char *)v5 + v10);
- v2 = (_WORD *)((char *)v2 + v11);
- v3 += v12;
- }
- return result;
- }
- // 1002A2A0: using guessed type int dword_1002A2A0;
- // 1002A2A4: using guessed type int dword_1002A2A4;
- // 1002A2A8: using guessed type int dword_1002A2A8;
- // 1002A2B0: using guessed type int dword_1002A2B0;
- //----- (1000C5D0) --------------------------------------------------------
- unsigned int __cdecl sub_1000C5D0(int a1, int a2, int a3, __int16 a4, unsigned int a5)
- {
- _WORD *v5; // edi@1
- int *v6; // esi@1
- int v7; // ecx@1
- unsigned int v8; // edx@1
- unsigned int v9; // edx@1
- _BYTE *v10; // ebp@1
- int v11; // ebx@1
- unsigned int result; // eax@1
- int *i; // esi@1
- unsigned __int8 v14; // cf@3
- int *v15; // esi@9
- unsigned int v16; // edx@9
- int *v17; // [esp+4h] [ebp-24h]@1
- int v18; // [esp+8h] [ebp-20h]@1
- int v19; // [esp+Ch] [ebp-1Ch]@1
- v5 = (_WORD *)(2 * (a1 + a2 * dword_1002A2A8 - 1) + dword_1002A2A0);
- v6 = (int *)((*(unsigned __int16 *)(dword_1002A29C + 262146) << 10)
- + 4 * *(unsigned __int16 *)(dword_1002A29C + 0x40000)
- + dword_1002A29C);
- v19 = dword_1002A2A8 - a3;
- v18 = 2 * (dword_1002A2A8 - a3);
- v17 = v6;
- v7 = a3 + 1;
- v8 = a5;
- BYTE1(v8) = byte_1002A2C0;
- v9 = _byteswap_ulong(v8);
- LOBYTE(v9) = a5;
- BYTE1(v9) = byte_1002A2BC;
- v10 = (_BYTE *)(a1 + a2 * dword_1002A2A8 - 1 + dword_1002A2A4);
- v11 = *v6;
- result = (unsigned int)*v6 >> 8;
- for ( i = v6 + 1; ; i = v15 + 1 )
- {
- while ( --v7 )
- {
- ++v10;
- ++v5;
- v14 = __CFADD__((_BYTE)v9, BYTE1(v9));
- BYTE1(v9) += v9;
- if ( v14 )
- {
- v11 = *i;
- result = (unsigned int)*i >> 8;
- ++i;
- }
- if ( (_WORD)v11 != -1 && *v5 > (unsigned __int16)v11 )
- {
- *v5 = v11;
- *v10 = BYTE1(result);
- }
- }
- if ( !--a4 )
- break;
- v16 = _byteswap_ulong(v9);
- v7 = a3 + 1;
- v15 = v17;
- v5 = (_WORD *)((char *)v5 + v18);
- v10 += v19;
- v14 = __CFADD__((_BYTE)v16, BYTE1(v16));
- BYTE1(v16) += v16;
- if ( v14 )
- {
- v15 = v17 + 256;
- v17 += 256;
- }
- v9 = _byteswap_ulong(v16);
- BYTE1(v9) = byte_1002A2BC;
- v11 = *v15;
- result = (unsigned int)*v15 >> 8;
- }
- return result;
- }
- // 1002A2A0: using guessed type int dword_1002A2A0;
- // 1002A2A4: using guessed type int dword_1002A2A4;
- // 1002A2A8: using guessed type int dword_1002A2A8;
- // 1002A2BC: using guessed type char byte_1002A2BC;
- // 1002A2C0: using guessed type char byte_1002A2C0;
- //----- (1000C6D0) --------------------------------------------------------
- unsigned int __cdecl sub_1000C6D0(int a1, int a2)
- {
- int v2; // ecx@1
- unsigned int *v3; // esi@1
- unsigned int result; // eax@1
- int v5; // ecx@1
- int v6; // ebp@1
- _BYTE *v7; // edx@1
- unsigned __int16 *v8; // edi@1
- unsigned __int16 v9; // bx@4
- unsigned __int16 *v10; // edi@8
- _BYTE *v11; // edx@8
- int v12; // [esp+0h] [ebp-2Ch]@1
- int v13; // [esp+4h] [ebp-28h]@1
- int v14; // [esp+8h] [ebp-24h]@1
- int v15; // [esp+Ch] [ebp-20h]@1
- int v16; // [esp+10h] [ebp-1Ch]@1
- v2 = *(unsigned __int16 *)(dword_1002A29C + 262152);
- v16 = *(unsigned __int16 *)(dword_1002A29C + 262154);
- v3 = (unsigned int *)((*(unsigned __int16 *)(dword_1002A29C + 262146) << 10)
- + 4 * *(unsigned __int16 *)(dword_1002A29C + 0x40000)
- + dword_1002A29C);
- v15 = 2 * (dword_1002A2A8 - v2);
- v14 = 4 * (dword_1002A2A8 - v2);
- result = 4 * (256 - v2);
- v13 = 4 * (256 - v2);
- v5 = v2 + 1;
- v12 = v5;
- v6 = dword_1002A2B0;
- v7 = (_BYTE *)(a1 + a2 * dword_1002A2A8 + dword_1002A2A4 - 2);
- v8 = (unsigned __int16 *)(2 * (a1 + a2 * dword_1002A2A8) + dword_1002A2A0 - 4);
- while ( 1 )
- {
- while ( --v5 )
- {
- v7 += 2;
- v8 += 2;
- result = *v3;
- *v3 = 0xFFFF;
- ++v3;
- if ( (_WORD)result != -1 )
- {
- v9 = result;
- result >>= 16;
- LOBYTE(result) = *(_BYTE *)(result + v6);
- if ( *v8 > v9 )
- {
- *v8 = v9;
- *v7 = result;
- }
- if ( v8[1] > v9 )
- {
- v8[1] = v9;
- v7[1] = result;
- }
- v10 = (unsigned __int16 *)((char *)v8 + dword_1002A2AC);
- v11 = &v7[dword_1002A2A8];
- if ( *v10 > v9 )
- {
- *v10 = v9;
- *v11 = result;
- }
- if ( v10[1] > v9 )
- {
- v10[1] = v9;
- v11[1] = result;
- }
- v8 = (unsigned __int16 *)((char *)v10 - dword_1002A2AC);
- v7 = &v11[-dword_1002A2A8];
- }
- }
- if ( !--v16 )
- break;
- v5 = v12;
- v3 = (unsigned int *)((char *)v3 + v13);
- v8 = (unsigned __int16 *)((char *)v8 + v14);
- v7 += v15;
- }
- return result;
- }
- // 1002A2A0: using guessed type int dword_1002A2A0;
- // 1002A2A4: using guessed type int dword_1002A2A4;
- // 1002A2A8: using guessed type int dword_1002A2A8;
- // 1002A2AC: using guessed type int dword_1002A2AC;
- // 1002A2B0: using guessed type int dword_1002A2B0;
- //----- (1000C7F9) --------------------------------------------------------
- int __cdecl sub_1000C7F9(int a1, int a2)
- {
- _WORD *v2; // edi@1
- _BYTE *v3; // edx@1
- int v4; // ecx@1
- int *v5; // esi@1
- int result; // eax@1
- int v7; // ecx@1
- int v8; // ebp@1
- int v9; // [esp+0h] [ebp-2Ch]@1
- int v10; // [esp+4h] [ebp-28h]@1
- int v11; // [esp+8h] [ebp-24h]@1
- int v12; // [esp+Ch] [ebp-20h]@1
- int v13; // [esp+10h] [ebp-1Ch]@1
- v2 = (_WORD *)(2 * (a1 + a2 * dword_1002A2A8 - 1) + dword_1002A2A0);
- v3 = (_BYTE *)(a1 + a2 * dword_1002A2A8 - 1 + dword_1002A2A4);
- v4 = *(unsigned __int16 *)(dword_1002A29C + 262152);
- v13 = *(unsigned __int16 *)(dword_1002A29C + 262154);
- v5 = (int *)((*(unsigned __int16 *)(dword_1002A29C + 262146) << 10)
- + 4 * *(unsigned __int16 *)(dword_1002A29C + 0x40000)
- + dword_1002A29C);
- v12 = dword_1002A2A8 - v4;
- v11 = 2 * (dword_1002A2A8 - v4);
- result = 4 * (256 - v4);
- v10 = 4 * (256 - v4);
- v7 = v4 + 1;
- v9 = v7;
- v8 = dword_1002A2B4;
- while ( 1 )
- {
- while ( --v7 )
- {
- ++v2;
- ++v3;
- result = *v5;
- *v5 = 0xFFFF;
- ++v5;
- if ( (_WORD)result != -1 && *v2 > 0xFFFEu )
- {
- *v2 = -2;
- result = (unsigned __int8)*v3;
- LOBYTE(result) = *(_BYTE *)(result + v8);
- *v3 = result;
- }
- }
- if ( !--v13 )
- break;
- v7 = v9;
- v5 = (int *)((char *)v5 + v10);
- v2 = (_WORD *)((char *)v2 + v11);
- v3 += v12;
- }
- return result;
- }
- // 1002A2A0: using guessed type int dword_1002A2A0;
- // 1002A2A4: using guessed type int dword_1002A2A4;
- // 1002A2A8: using guessed type int dword_1002A2A8;
- // 1002A2B4: using guessed type int dword_1002A2B4;
- //----- (1000C8DF) --------------------------------------------------------
- _BYTE *__cdecl sub_1000C8DF(int a1, int a2, int a3, __int16 a4, unsigned int a5)
- {
- _WORD *v5; // edi@1
- _BYTE **v6; // esi@1
- int v7; // ecx@1
- unsigned int v8; // edx@1
- unsigned int v9; // edx@1
- _BYTE *v10; // ebp@1
- _BYTE *result; // eax@1
- int v12; // ebx@1
- _BYTE **i; // esi@1
- unsigned __int8 v14; // cf@3
- _BYTE **v15; // esi@9
- unsigned int v16; // edx@9
- _BYTE **v17; // [esp+4h] [ebp-24h]@1
- int v18; // [esp+8h] [ebp-20h]@1
- int v19; // [esp+Ch] [ebp-1Ch]@1
- v5 = (_WORD *)(2 * (a1 + a2 * dword_1002A2A8 - 1) + dword_1002A2A0);
- v6 = (_BYTE **)((*(unsigned __int16 *)(dword_1002A29C + 262146) << 10)
- + 4 * *(unsigned __int16 *)(dword_1002A29C + 0x40000)
- + dword_1002A29C);
- v19 = dword_1002A2A8 - a3;
- v18 = 2 * (dword_1002A2A8 - a3);
- v17 = v6;
- v7 = a3 + 1;
- v8 = a5;
- BYTE1(v8) = byte_1002A2C0;
- v9 = _byteswap_ulong(v8);
- LOBYTE(v9) = a5;
- BYTE1(v9) = byte_1002A2BC;
- v10 = (_BYTE *)(a1 + a2 * dword_1002A2A8 - 1 + dword_1002A2A4);
- result = *v6;
- v12 = dword_1002A2B4;
- for ( i = v6 + 1; ; i = v15 + 1 )
- {
- while ( --v7 )
- {
- ++v10;
- ++v5;
- v14 = __CFADD__((_BYTE)v9, BYTE1(v9));
- BYTE1(v9) += v9;
- if ( v14 )
- {
- result = *i;
- ++i;
- }
- if ( (_WORD)result != -1 )
- {
- result = (_BYTE *)65534;
- if ( *v5 > 0xFFFEu )
- {
- *v5 = -2;
- result = (_BYTE *)(v12 + (unsigned __int8)*v10);
- LOBYTE(result) = *result;
- *v10 = (_BYTE)result;
- }
- }
- }
- if ( !--a4 )
- break;
- v16 = _byteswap_ulong(v9);
- v7 = a3 + 1;
- v15 = v17;
- v5 = (_WORD *)((char *)v5 + v18);
- v10 += v19;
- v14 = __CFADD__((_BYTE)v16, BYTE1(v16));
- BYTE1(v16) += v16;
- if ( v14 )
- {
- v15 = v17 + 256;
- v17 += 256;
- }
- v9 = _byteswap_ulong(v16);
- BYTE1(v9) = byte_1002A2BC;
- result = *v15;
- }
- return result;
- }
- // 1002A2A0: using guessed type int dword_1002A2A0;
- // 1002A2A4: using guessed type int dword_1002A2A4;
- // 1002A2A8: using guessed type int dword_1002A2A8;
- // 1002A2B4: using guessed type int dword_1002A2B4;
- // 1002A2BC: using guessed type char byte_1002A2BC;
- // 1002A2C0: using guessed type char byte_1002A2C0;
- //----- (1000C9E5) --------------------------------------------------------
- int __cdecl sub_1000C9E5(int a1, int a2)
- {
- int v2; // ecx@1
- int *v3; // esi@1
- int result; // eax@1
- int v5; // ecx@1
- _BYTE *v6; // edx@1
- _WORD *v7; // edi@1
- int v8; // ebp@1
- _WORD *v9; // edi@8
- _BYTE *v10; // edx@8
- int v11; // [esp+0h] [ebp-2Ch]@1
- int v12; // [esp+4h] [ebp-28h]@1
- int v13; // [esp+8h] [ebp-24h]@1
- int v14; // [esp+Ch] [ebp-20h]@1
- int v15; // [esp+10h] [ebp-1Ch]@1
- v2 = *(unsigned __int16 *)(dword_1002A29C + 262152);
- v15 = *(unsigned __int16 *)(dword_1002A29C + 262154);
- v3 = (int *)((*(unsigned __int16 *)(dword_1002A29C + 262146) << 10)
- + 4 * *(unsigned __int16 *)(dword_1002A29C + 0x40000)
- + dword_1002A29C);
- v14 = 2 * (dword_1002A2A8 - v2);
- v13 = 4 * (dword_1002A2A8 - v2);
- result = 4 * (256 - v2);
- v12 = 4 * (256 - v2);
- v5 = v2 + 1;
- v11 = v5;
- v6 = (_BYTE *)(a1 + a2 * dword_1002A2A8 + dword_1002A2A4 - 2);
- v7 = (_WORD *)(2 * (a1 + a2 * dword_1002A2A8) + dword_1002A2A0 - 4);
- v8 = dword_1002A2B4;
- while ( 1 )
- {
- while ( --v5 )
- {
- v6 += 2;
- v7 += 2;
- result = *v3;
- *v3 = 0xFFFF;
- ++v3;
- if ( (_WORD)result != -1 )
- {
- result = 0;
- if ( *v7 > 0xFFFEu )
- {
- *v7 = -2;
- LOBYTE(result) = *v6;
- LOBYTE(result) = *(_BYTE *)(result + v8);
- *v6 = result;
- }
- if ( v7[1] > 0xFFFEu )
- {
- v7[1] = -2;
- LOBYTE(result) = v6[1];
- LOBYTE(result) = *(_BYTE *)(result + v8);
- v6[1] = result;
- }
- v9 = (_WORD *)((char *)v7 + dword_1002A2AC);
- v10 = &v6[dword_1002A2A8];
- if ( *v9 > 0xFFFEu )
- {
- *v9 = -2;
- LOBYTE(result) = *v10;
- LOBYTE(result) = *(_BYTE *)(result + v8);
- *v10 = result;
- }
- if ( v9[1] > 0xFFFEu )
- {
- v9[1] = -2;
- LOBYTE(result) = v10[1];
- LOBYTE(result) = *(_BYTE *)(result + v8);
- v10[1] = result;
- }
- v7 = (_WORD *)((char *)v9 - dword_1002A2AC);
- v6 = &v10[-dword_1002A2A8];
- }
- }
- if ( !--v15 )
- break;
- v5 = v11;
- v3 = (int *)((char *)v3 + v12);
- v7 = (_WORD *)((char *)v7 + v13);
- v6 += v14;
- }
- return result;
- }
- // 1002A2A0: using guessed type int dword_1002A2A0;
- // 1002A2A4: using guessed type int dword_1002A2A4;
- // 1002A2A8: using guessed type int dword_1002A2A8;
- // 1002A2AC: using guessed type int dword_1002A2AC;
- // 1002A2B4: using guessed type int dword_1002A2B4;
- //----- (1000CB30) --------------------------------------------------------
- unsigned int __cdecl sub_1000CB30(int a1, int a2)
- {
- _WORD *v2; // edi@1
- _WORD *v3; // edx@1
- int v4; // ecx@1
- unsigned int *v5; // esi@1
- unsigned int result; // eax@1
- int v7; // ecx@1
- int v8; // ebp@1
- int v9; // [esp+0h] [ebp-2Ch]@1
- int v10; // [esp+4h] [ebp-28h]@1
- int v11; // [esp+8h] [ebp-24h]@1
- int v12; // [esp+Ch] [ebp-20h]@1
- int v13; // [esp+10h] [ebp-1Ch]@1
- v2 = (_WORD *)(2 * (a1 + a2 * dword_1002A2A8 - 1) + dword_1002A2A0);
- v3 = (_WORD *)(2 * (a1 + a2 * dword_1002A2A8 - 1) + dword_1002A2A4);
- v4 = *(unsigned __int16 *)(dword_1002A29C + 262152);
- v13 = *(unsigned __int16 *)(dword_1002A29C + 262154);
- v5 = (unsigned int *)((*(unsigned __int16 *)(dword_1002A29C + 262146) << 10)
- + 4 * *(unsigned __int16 *)(dword_1002A29C + 0x40000)
- + dword_1002A29C);
- v12 = 2 * (dword_1002A2A8 - v4);
- v11 = 2 * (dword_1002A2A8 - v4);
- result = 4 * (256 - v4);
- v10 = 4 * (256 - v4);
- v7 = v4 + 1;
- v9 = v7;
- v8 = dword_1002A2B0;
- while ( 1 )
- {
- while ( --v7 )
- {
- ++v2;
- ++v3;
- result = *v5;
- *v5 = 0xFFFF;
- ++v5;
- if ( (_WORD)result != -1 )
- {
- LOWORD(result) = ~(_WORD)result;
- if ( *v2 < (unsigned __int16)result )
- {
- *v2 = result;
- result >>= 16;
- LOWORD(result) = *(_WORD *)(v8 + 2 * result);
- *v3 = result;
- }
- }
- }
- if ( !--v13 )
- break;
- v7 = v9;
- v5 = (unsigned int *)((char *)v5 + v10);
- v2 = (_WORD *)((char *)v2 + v11);
- v3 = (_WORD *)((char *)v3 + v12);
- }
- return result;
- }
- // 1002A2A0: using guessed type int dword_1002A2A0;
- // 1002A2A4: using guessed type int dword_1002A2A4;
- // 1002A2A8: using guessed type int dword_1002A2A8;
- // 1002A2B0: using guessed type int dword_1002A2B0;
- //----- (1000CC1C) --------------------------------------------------------
- int __cdecl sub_1000CC1C(int a1, int a2, int a3, __int16 a4, unsigned int a5)
- {
- unsigned __int16 *v5; // edi@1
- _DWORD *v6; // esi@1
- int v7; // ecx@1
- unsigned int v8; // edx@1
- unsigned int v9; // edx@1
- _WORD *v10; // ebp@1
- unsigned __int16 v11; // bx@1
- int result; // eax@1
- _DWORD *i; // esi@1
- unsigned __int8 v14; // cf@3
- _DWORD *v15; // esi@9
- unsigned int v16; // edx@9
- _DWORD *v17; // [esp+4h] [ebp-24h]@1
- int v18; // [esp+8h] [ebp-20h]@1
- int v19; // [esp+Ch] [ebp-1Ch]@1
- v5 = (unsigned __int16 *)(2 * (a1 + a2 * dword_1002A2A8 - 1) + dword_1002A2A0);
- v6 = (_DWORD *)((*(unsigned __int16 *)(dword_1002A29C + 262146) << 10)
- + 4 * *(unsigned __int16 *)(dword_1002A29C + 0x40000)
- + dword_1002A29C);
- v19 = 2 * (dword_1002A2A8 - a3);
- v18 = 2 * (dword_1002A2A8 - a3);
- v17 = v6;
- v7 = a3 + 1;
- v8 = a5;
- BYTE1(v8) = byte_1002A2C0;
- v9 = _byteswap_ulong(v8);
- LOBYTE(v9) = a5;
- BYTE1(v9) = byte_1002A2BC;
- v10 = (_WORD *)(2 * (a1 + a2 * dword_1002A2A8 - 1) + dword_1002A2A4);
- v11 = ~(unsigned __int16)*v6;
- result = *v6 >> 16;
- for ( i = v6 + 1; ; i = v15 + 1 )
- {
- while ( --v7 )
- {
- ++v10;
- ++v5;
- v14 = __CFADD__((_BYTE)v9, BYTE1(v9));
- BYTE1(v9) += v9;
- if ( v14 )
- {
- v11 = ~(unsigned __int16)*i;
- result = *i >> 16;
- ++i;
- }
- if ( v11 )
- {
- if ( *v5 < v11 )
- {
- *v5 = v11;
- *v10 = result;
- }
- }
- }
- if ( !--a4 )
- break;
- v16 = _byteswap_ulong(v9);
- v7 = a3 + 1;
- v15 = v17;
- v5 = (unsigned __int16 *)((char *)v5 + v18);
- v10 = (_WORD *)((char *)v10 + v19);
- v14 = __CFADD__((_BYTE)v16, BYTE1(v16));
- BYTE1(v16) += v16;
- if ( v14 )
- {
- v15 = v17 + 256;
- v17 += 256;
- }
- v9 = _byteswap_ulong(v16);
- BYTE1(v9) = byte_1002A2BC;
- v11 = ~(unsigned __int16)*v15;
- result = *v15 >> 16;
- }
- return result;
- }
- // 1002A2A0: using guessed type int dword_1002A2A0;
- // 1002A2A4: using guessed type int dword_1002A2A4;
- // 1002A2A8: using guessed type int dword_1002A2A8;
- // 1002A2BC: using guessed type char byte_1002A2BC;
- // 1002A2C0: using guessed type char byte_1002A2C0;
- //----- (1000CD2D) --------------------------------------------------------
- unsigned int __cdecl sub_1000CD2D(int a1, int a2)
- {
- int v2; // ecx@1
- unsigned int *v3; // esi@1
- unsigned int result; // eax@1
- int v5; // ecx@1
- int v6; // ebp@1
- _WORD *v7; // edx@1
- unsigned __int16 *v8; // edi@1
- unsigned __int16 v9; // bx@4
- unsigned __int16 *v10; // edi@8
- _WORD *v11; // edx@8
- int v12; // [esp+0h] [ebp-2Ch]@1
- int v13; // [esp+4h] [ebp-28h]@1
- int v14; // [esp+8h] [ebp-24h]@1
- int v15; // [esp+Ch] [ebp-20h]@1
- int v16; // [esp+10h] [ebp-1Ch]@1
- v2 = *(unsigned __int16 *)(dword_1002A29C + 262152);
- v16 = *(unsigned __int16 *)(dword_1002A29C + 262154);
- v3 = (unsigned int *)((*(unsigned __int16 *)(dword_1002A29C + 262146) << 10)
- + 4 * *(unsigned __int16 *)(dword_1002A29C + 0x40000)
- + dword_1002A29C);
- v15 = 4 * (dword_1002A2A8 - v2);
- v14 = 4 * (dword_1002A2A8 - v2);
- result = 4 * (256 - v2);
- v13 = 4 * (256 - v2);
- v5 = v2 + 1;
- v12 = v5;
- v6 = dword_1002A2B0;
- v7 = (_WORD *)(2 * (a1 + a2 * dword_1002A2A8) + dword_1002A2A4 - 4);
- v8 = (unsigned __int16 *)(2 * (a1 + a2 * dword_1002A2A8) + dword_1002A2A0 - 4);
- while ( 1 )
- {
- while ( --v5 )
- {
- v7 += 2;
- v8 += 2;
- result = *v3;
- *v3 = 0xFFFF;
- ++v3;
- if ( (_WORD)result != -1 )
- {
- v9 = ~(_WORD)result;
- LOWORD(result) = 0;
- result >>= 16;
- LOWORD(result) = *(_WORD *)(v6 + 2 * result);
- if ( *v8 < v9 )
- {
- *v8 = v9;
- *v7 = result;
- }
- if ( v8[1] < v9 )
- {
- v8[1] = v9;
- v7[1] = result;
- }
- v10 = (unsigned __int16 *)((char *)v8 + dword_1002A2AC);
- v11 = (_WORD *)((char *)v7 + dword_1002A2AC);
- if ( *v10 < v9 )
- {
- *v10 = v9;
- *v11 = result;
- }
- if ( v10[1] < v9 )
- {
- v10[1] = v9;
- v11[1] = result;
- }
- v8 = (unsigned __int16 *)((char *)v10 - dword_1002A2AC);
- v7 = (_WORD *)((char *)v11 - dword_1002A2AC);
- }
- }
- if ( !--v16 )
- break;
- v5 = v12;
- v3 = (unsigned int *)((char *)v3 + v13);
- v8 = (unsigned __int16 *)((char *)v8 + v14);
- v7 = (_WORD *)((char *)v7 + v15);
- }
- return result;
- }
- // 1002A2A0: using guessed type int dword_1002A2A0;
- // 1002A2A4: using guessed type int dword_1002A2A4;
- // 1002A2A8: using guessed type int dword_1002A2A8;
- // 1002A2AC: using guessed type int dword_1002A2AC;
- // 1002A2B0: using guessed type int dword_1002A2B0;
- //----- (1000CE65) --------------------------------------------------------
- int __cdecl sub_1000CE65(int a1, int a2)
- {
- _WORD *v2; // edi@1
- _WORD *v3; // edx@1
- int v4; // ecx@1
- int *v5; // esi@1
- int result; // eax@1
- int v7; // ecx@1
- int v8; // ebp@1
- int v9; // [esp+0h] [ebp-2Ch]@1
- int v10; // [esp+4h] [ebp-28h]@1
- int v11; // [esp+8h] [ebp-24h]@1
- int v12; // [esp+Ch] [ebp-20h]@1
- int v13; // [esp+10h] [ebp-1Ch]@1
- v2 = (_WORD *)(2 * (a1 + a2 * dword_1002A2A8 - 1) + dword_1002A2A0);
- v3 = (_WORD *)(2 * (a1 + a2 * dword_1002A2A8 - 1) + dword_1002A2A4);
- v4 = *(unsigned __int16 *)(dword_1002A29C + 262152);
- v13 = *(unsigned __int16 *)(dword_1002A29C + 262154);
- v5 = (int *)((*(unsigned __int16 *)(dword_1002A29C + 262146) << 10)
- + 4 * *(unsigned __int16 *)(dword_1002A29C + 0x40000)
- + dword_1002A29C);
- v12 = 2 * (dword_1002A2A8 - v4);
- v11 = 2 * (dword_1002A2A8 - v4);
- result = 4 * (256 - v4);
- v10 = 4 * (256 - v4);
- v7 = v4 + 1;
- v9 = v7;
- v8 = dword_1002A2B4;
- while ( 1 )
- {
- while ( --v7 )
- {
- ++v2;
- ++v3;
- result = *v5;
- *v5 = 0xFFFF;
- ++v5;
- if ( (_WORD)result != -1 && *v2 < 1u )
- {
- *v2 = 1;
- result = (unsigned __int16)*v3;
- LOWORD(result) = *(_WORD *)(v8 + 2 * result);
- *v3 = result;
- }
- }
- if ( !--v13 )
- break;
- v7 = v9;
- v5 = (int *)((char *)v5 + v10);
- v2 = (_WORD *)((char *)v2 + v11);
- v3 = (_WORD *)((char *)v3 + v12);
- }
- return result;
- }
- // 1002A2A0: using guessed type int dword_1002A2A0;
- // 1002A2A4: using guessed type int dword_1002A2A4;
- // 1002A2A8: using guessed type int dword_1002A2A8;
- // 1002A2B4: using guessed type int dword_1002A2B4;
- //----- (1000CF54) --------------------------------------------------------
- _WORD *__cdecl sub_1000CF54(int a1, int a2, int a3, __int16 a4, unsigned int a5)
- {
- _WORD *v5; // edi@1
- _WORD **v6; // esi@1
- int v7; // ecx@1
- unsigned int v8; // edx@1
- unsigned int v9; // edx@1
- _WORD *v10; // ebp@1
- _WORD *result; // eax@1
- int v12; // ebx@1
- _WORD **i; // esi@1
- unsigned __int8 v14; // cf@3
- _WORD **v15; // esi@9
- unsigned int v16; // edx@9
- _WORD **v17; // [esp+4h] [ebp-24h]@1
- int v18; // [esp+8h] [ebp-20h]@1
- int v19; // [esp+Ch] [ebp-1Ch]@1
- v5 = (_WORD *)(2 * (a1 + a2 * dword_1002A2A8 - 1) + dword_1002A2A0);
- v6 = (_WORD **)((*(unsigned __int16 *)(dword_1002A29C + 262146) << 10)
- + 4 * *(unsigned __int16 *)(dword_1002A29C + 0x40000)
- + dword_1002A29C);
- v19 = 2 * (dword_1002A2A8 - a3);
- v18 = 2 * (dword_1002A2A8 - a3);
- v17 = v6;
- v7 = a3 + 1;
- v8 = a5;
- BYTE1(v8) = byte_1002A2C0;
- v9 = _byteswap_ulong(v8);
- LOBYTE(v9) = a5;
- BYTE1(v9) = byte_1002A2BC;
- v10 = (_WORD *)(2 * (a1 + a2 * dword_1002A2A8 - 1) + dword_1002A2A4);
- result = *v6;
- v12 = dword_1002A2B4;
- for ( i = v6 + 1; ; i = v15 + 1 )
- {
- while ( --v7 )
- {
- ++v10;
- ++v5;
- v14 = __CFADD__((_BYTE)v9, BYTE1(v9));
- BYTE1(v9) += v9;
- if ( v14 )
- {
- result = *i;
- ++i;
- }
- if ( (_WORD)result != -1 )
- {
- result = (_WORD *)1;
- if ( *v5 < 1u )
- {
- *v5 = 1;
- result = (_WORD *)(v12 + 2 * (unsigned __int16)*v10);
- LOWORD(result) = *result;
- *v10 = (_WORD)result;
- }
- }
- }
- if ( !--a4 )
- break;
- v16 = _byteswap_ulong(v9);
- v7 = a3 + 1;
- v15 = v17;
- v5 = (_WORD *)((char *)v5 + v18);
- v10 = (_WORD *)((char *)v10 + v19);
- v14 = __CFADD__((_BYTE)v16, BYTE1(v16));
- BYTE1(v16) += v16;
- if ( v14 )
- {
- v15 = v17 + 256;
- v17 += 256;
- }
- v9 = _byteswap_ulong(v16);
- BYTE1(v9) = byte_1002A2BC;
- result = *v15;
- }
- return result;
- }
- // 1002A2A0: using guessed type int dword_1002A2A0;
- // 1002A2A4: using guessed type int dword_1002A2A4;
- // 1002A2A8: using guessed type int dword_1002A2A8;
- // 1002A2B4: using guessed type int dword_1002A2B4;
- // 1002A2BC: using guessed type char byte_1002A2BC;
- // 1002A2C0: using guessed type char byte_1002A2C0;
- //----- (1000D063) --------------------------------------------------------
- int __cdecl sub_1000D063(int a1, int a2)
- {
- int v2; // ecx@1
- int *v3; // esi@1
- int result; // eax@1
- int v5; // ecx@1
- _WORD *v6; // edx@1
- _WORD *v7; // edi@1
- int v8; // ebp@1
- _WORD *v9; // edi@8
- _WORD *v10; // edx@8
- int v11; // [esp+0h] [ebp-2Ch]@1
- int v12; // [esp+4h] [ebp-28h]@1
- int v13; // [esp+8h] [ebp-24h]@1
- int v14; // [esp+Ch] [ebp-20h]@1
- int v15; // [esp+10h] [ebp-1Ch]@1
- v2 = *(unsigned __int16 *)(dword_1002A29C + 262152);
- v15 = *(unsigned __int16 *)(dword_1002A29C + 262154);
- v3 = (int *)((*(unsigned __int16 *)(dword_1002A29C + 262146) << 10)
- + 4 * *(unsigned __int16 *)(dword_1002A29C + 0x40000)
- + dword_1002A29C);
- v14 = 4 * (dword_1002A2A8 - v2);
- v13 = 4 * (dword_1002A2A8 - v2);
- result = 4 * (256 - v2);
- v12 = 4 * (256 - v2);
- v5 = v2 + 1;
- v11 = v5;
- v6 = (_WORD *)(a1 + a2 * dword_1002A2A8 + dword_1002A2A4 - 4);
- v7 = (_WORD *)(2 * (a1 + a2 * dword_1002A2A8) + dword_1002A2A0 - 4);
- v8 = dword_1002A2B4;
- while ( 1 )
- {
- while ( --v5 )
- {
- v6 += 2;
- v7 += 2;
- result = *v3;
- *v3 = 0xFFFF;
- ++v3;
- if ( (_WORD)result != -1 )
- {
- result = 0;
- if ( *v7 < 1u )
- {
- *v7 = 1;
- LOWORD(result) = *v6;
- LOWORD(result) = *(_WORD *)(v8 + 2 * result);
- *v6 = result;
- }
- if ( v7[1] < 1u )
- {
- v7[1] = 1;
- LOWORD(result) = v6[1];
- LOWORD(result) = *(_WORD *)(v8 + 2 * result);
- v6[1] = result;
- }
- v9 = (_WORD *)((char *)v7 + dword_1002A2AC);
- v10 = (_WORD *)((char *)v6 + dword_1002A2AC);
- if ( *v9 < 1u )
- {
- *v9 = 1;
- LOWORD(result) = *v10;
- LOWORD(result) = *(_WORD *)(v8 + 2 * result);
- *v10 = result;
- }
- if ( v9[1] < 1u )
- {
- v9[1] = 1;
- LOWORD(result) = v10[1];
- LOWORD(result) = *(_WORD *)(v8 + 2 * result);
- v10[1] = result;
- }
- v7 = (_WORD *)((char *)v9 - dword_1002A2AC);
- v6 = (_WORD *)((char *)v10 - dword_1002A2AC);
- }
- }
- if ( !--v15 )
- break;
- v5 = v11;
- v3 = (int *)((char *)v3 + v12);
- v7 = (_WORD *)((char *)v7 + v13);
- v6 = (_WORD *)((char *)v6 + v14);
- }
- return result;
- }
- // 1002A2A0: using guessed type int dword_1002A2A0;
- // 1002A2A4: using guessed type int dword_1002A2A4;
- // 1002A2A8: using guessed type int dword_1002A2A8;
- // 1002A2AC: using guessed type int dword_1002A2AC;
- // 1002A2B4: using guessed type int dword_1002A2B4;
- //----- (1000D1C0) --------------------------------------------------------
- unsigned int __cdecl sub_1000D1C0(int a1, int a2)
- {
- _WORD *v2; // edi@1
- _BYTE *v3; // edx@1
- int v4; // ecx@1
- unsigned int *v5; // esi@1
- unsigned int result; // eax@1
- int v7; // ecx@1
- int v8; // ebp@1
- int v9; // [esp+0h] [ebp-2Ch]@1
- int v10; // [esp+4h] [ebp-28h]@1
- int v11; // [esp+8h] [ebp-24h]@1
- int v12; // [esp+Ch] [ebp-20h]@1
- int v13; // [esp+10h] [ebp-1Ch]@1
- v2 = (_WORD *)(2 * (a1 + a2 * dword_1002A2A8 - 1) + dword_1002A2A0);
- v3 = (_BYTE *)(a1 + a2 * dword_1002A2A8 - 1 + dword_1002A2A4);
- v4 = *(unsigned __int16 *)(dword_1002A29C + 262152);
- v13 = *(unsigned __int16 *)(dword_1002A29C + 262154);
- v5 = (unsigned int *)((*(unsigned __int16 *)(dword_1002A29C + 262146) << 10)
- + 4 * *(unsigned __int16 *)(dword_1002A29C + 0x40000)
- + dword_1002A29C);
- v12 = dword_1002A2A8 - v4;
- v11 = 2 * (dword_1002A2A8 - v4);
- result = 4 * (256 - v4);
- v10 = 4 * (256 - v4);
- v7 = v4 + 1;
- v9 = v7;
- v8 = dword_1002A2B0;
- while ( 1 )
- {
- while ( --v7 )
- {
- ++v2;
- ++v3;
- result = *v5;
- *v5 = 0xFFFF;
- ++v5;
- if ( (_WORD)result != -1 )
- {
- LOWORD(result) = ~(_WORD)result;
- if ( *v2 < (unsigned __int16)result )
- {
- *v2 = result;
- result >>= 16;
- LOBYTE(result) = *(_BYTE *)(result + v8);
- *v3 = result;
- }
- }
- }
- if ( !--v13 )
- break;
- v7 = v9;
- v5 = (unsigned int *)((char *)v5 + v10);
- v2 = (_WORD *)((char *)v2 + v11);
- v3 += v12;
- }
- return result;
- }
- // 1002A2A0: using guessed type int dword_1002A2A0;
- // 1002A2A4: using guessed type int dword_1002A2A4;
- // 1002A2A8: using guessed type int dword_1002A2A8;
- // 1002A2B0: using guessed type int dword_1002A2B0;
- //----- (1000D2A4) --------------------------------------------------------
- int __cdecl sub_1000D2A4(int a1, int a2, int a3, __int16 a4, unsigned int a5)
- {
- unsigned __int16 *v5; // edi@1
- _DWORD *v6; // esi@1
- int v7; // ecx@1
- unsigned int v8; // edx@1
- unsigned int v9; // edx@1
- _BYTE *v10; // ebp@1
- unsigned __int16 v11; // bx@1
- int result; // eax@1
- _DWORD *i; // esi@1
- unsigned __int8 v14; // cf@3
- _DWORD *v15; // esi@9
- unsigned int v16; // edx@9
- _DWORD *v17; // [esp+4h] [ebp-24h]@1
- int v18; // [esp+8h] [ebp-20h]@1
- int v19; // [esp+Ch] [ebp-1Ch]@1
- v5 = (unsigned __int16 *)(2 * (a1 + a2 * dword_1002A2A8 - 1) + dword_1002A2A0);
- v6 = (_DWORD *)((*(unsigned __int16 *)(dword_1002A29C + 262146) << 10)
- + 4 * *(unsigned __int16 *)(dword_1002A29C + 0x40000)
- + dword_1002A29C);
- v19 = dword_1002A2A8 - a3;
- v18 = 2 * (dword_1002A2A8 - a3);
- v17 = v6;
- v7 = a3 + 1;
- v8 = a5;
- BYTE1(v8) = byte_1002A2C0;
- v9 = _byteswap_ulong(v8);
- LOBYTE(v9) = a5;
- BYTE1(v9) = byte_1002A2BC;
- v10 = (_BYTE *)(a1 + a2 * dword_1002A2A8 - 1 + dword_1002A2A4);
- v11 = ~(unsigned __int16)*v6;
- result = *v6 >> 8;
- for ( i = v6 + 1; ; i = v15 + 1 )
- {
- while ( --v7 )
- {
- ++v10;
- ++v5;
- v14 = __CFADD__((_BYTE)v9, BYTE1(v9));
- BYTE1(v9) += v9;
- if ( v14 )
- {
- v11 = ~(unsigned __int16)*i;
- result = *i >> 8;
- ++i;
- }
- if ( v11 )
- {
- if ( *v5 < v11 )
- {
- *v5 = v11;
- *v10 = BYTE1(result);
- }
- }
- }
- if ( !--a4 )
- break;
- v16 = _byteswap_ulong(v9);
- v7 = a3 + 1;
- v15 = v17;
- v5 = (unsigned __int16 *)((char *)v5 + v18);
- v10 += v19;
- v14 = __CFADD__((_BYTE)v16, BYTE1(v16));
- BYTE1(v16) += v16;
- if ( v14 )
- {
- v15 = v17 + 256;
- v17 += 256;
- }
- v9 = _byteswap_ulong(v16);
- BYTE1(v9) = byte_1002A2BC;
- v11 = ~(unsigned __int16)*v15;
- result = *v15 >> 8;
- }
- return result;
- }
- // 1002A2A0: using guessed type int dword_1002A2A0;
- // 1002A2A4: using guessed type int dword_1002A2A4;
- // 1002A2A8: using guessed type int dword_1002A2A8;
- // 1002A2BC: using guessed type char byte_1002A2BC;
- // 1002A2C0: using guessed type char byte_1002A2C0;
- //----- (1000D3B0) --------------------------------------------------------
- unsigned int __cdecl sub_1000D3B0(int a1, int a2)
- {
- int v2; // ecx@1
- unsigned int *v3; // esi@1
- unsigned int result; // eax@1
- int v5; // ecx@1
- int v6; // ebp@1
- _BYTE *v7; // edx@1
- unsigned __int16 *v8; // edi@1
- __int16 v9; // bx@4
- unsigned __int16 v10; // bx@4
- unsigned __int16 *v11; // edi@8
- _BYTE *v12; // edx@8
- int v13; // [esp+0h] [ebp-2Ch]@1
- int v14; // [esp+4h] [ebp-28h]@1
- int v15; // [esp+8h] [ebp-24h]@1
- int v16; // [esp+Ch] [ebp-20h]@1
- int v17; // [esp+10h] [ebp-1Ch]@1
- v2 = *(unsigned __int16 *)(dword_1002A29C + 262152);
- v17 = *(unsigned __int16 *)(dword_1002A29C + 262154);
- v3 = (unsigned int *)((*(unsigned __int16 *)(dword_1002A29C + 262146) << 10)
- + 4 * *(unsigned __int16 *)(dword_1002A29C + 0x40000)
- + dword_1002A29C);
- v16 = 2 * (dword_1002A2A8 - v2);
- v15 = 4 * (dword_1002A2A8 - v2);
- result = 4 * (256 - v2);
- v14 = 4 * (256 - v2);
- v5 = v2 + 1;
- v13 = v5;
- v6 = dword_1002A2B0;
- v7 = (_BYTE *)(a1 + a2 * dword_1002A2A8 + dword_1002A2A4 - 2);
- v8 = (unsigned __int16 *)(2 * (a1 + a2 * dword_1002A2A8) + dword_1002A2A0 - 4);
- while ( 1 )
- {
- while ( --v5 )
- {
- v7 += 2;
- v8 += 2;
- result = *v3;
- *v3 = 0xFFFF;
- ++v3;
- if ( (_WORD)result != -1 )
- {
- v9 = result;
- result >>= 16;
- LOBYTE(result) = *(_BYTE *)(result + v6);
- v10 = ~v9;
- if ( *v8 < v10 )
- {
- *v8 = v10;
- *v7 = result;
- }
- if ( v8[1] < v10 )
- {
- v8[1] = v10;
- v7[1] = result;
- }
- v11 = (unsigned __int16 *)((char *)v8 + dword_1002A2AC);
- v12 = &v7[dword_1002A2A8];
- if ( *v11 < v10 )
- {
- *v11 = v10;
- *v12 = result;
- }
- if ( v11[1] < v10 )
- {
- v11[1] = v10;
- v12[1] = result;
- }
- v8 = (unsigned __int16 *)((char *)v11 - dword_1002A2AC);
- v7 = &v12[-dword_1002A2A8];
- }
- }
- if ( !--v17 )
- break;
- v5 = v13;
- v3 = (unsigned int *)((char *)v3 + v14);
- v8 = (unsigned __int16 *)((char *)v8 + v15);
- v7 += v16;
- }
- return result;
- }
- // 1002A2A0: using guessed type int dword_1002A2A0;
- // 1002A2A4: using guessed type int dword_1002A2A4;
- // 1002A2A8: using guessed type int dword_1002A2A8;
- // 1002A2AC: using guessed type int dword_1002A2AC;
- // 1002A2B0: using guessed type int dword_1002A2B0;
- //----- (1000D4DD) --------------------------------------------------------
- int __cdecl sub_1000D4DD(int a1, int a2)
- {
- _WORD *v2; // edi@1
- _BYTE *v3; // edx@1
- int v4; // ecx@1
- int *v5; // esi@1
- int result; // eax@1
- int v7; // ecx@1
- int v8; // ebp@1
- int v9; // [esp+0h] [ebp-2Ch]@1
- int v10; // [esp+4h] [ebp-28h]@1
- int v11; // [esp+8h] [ebp-24h]@1
- int v12; // [esp+Ch] [ebp-20h]@1
- int v13; // [esp+10h] [ebp-1Ch]@1
- v2 = (_WORD *)(2 * (a1 + a2 * dword_1002A2A8 - 1) + dword_1002A2A0);
- v3 = (_BYTE *)(a1 + a2 * dword_1002A2A8 - 1 + dword_1002A2A4);
- v4 = *(unsigned __int16 *)(dword_1002A29C + 262152);
- v13 = *(unsigned __int16 *)(dword_1002A29C + 262154);
- v5 = (int *)((*(unsigned __int16 *)(dword_1002A29C + 262146) << 10)
- + 4 * *(unsigned __int16 *)(dword_1002A29C + 0x40000)
- + dword_1002A29C);
- v12 = dword_1002A2A8 - v4;
- v11 = 2 * (dword_1002A2A8 - v4);
- result = 4 * (256 - v4);
- v10 = 4 * (256 - v4);
- v7 = v4 + 1;
- v9 = v7;
- v8 = dword_1002A2B4;
- while ( 1 )
- {
- while ( --v7 )
- {
- ++v2;
- ++v3;
- result = *v5;
- *v5 = 0xFFFF;
- ++v5;
- if ( (_WORD)result != -1 && *v2 < 1u )
- {
- *v2 = 1;
- result = (unsigned __int8)*v3;
- LOBYTE(result) = *(_BYTE *)(result + v8);
- *v3 = result;
- }
- }
- if ( !--v13 )
- break;
- v7 = v9;
- v5 = (int *)((char *)v5 + v10);
- v2 = (_WORD *)((char *)v2 + v11);
- v3 += v12;
- }
- return result;
- }
- // 1002A2A0: using guessed type int dword_1002A2A0;
- // 1002A2A4: using guessed type int dword_1002A2A4;
- // 1002A2A8: using guessed type int dword_1002A2A8;
- // 1002A2B4: using guessed type int dword_1002A2B4;
- //----- (1000D5C3) --------------------------------------------------------
- _BYTE *__cdecl sub_1000D5C3(int a1, int a2, int a3, __int16 a4, unsigned int a5)
- {
- _WORD *v5; // edi@1
- _BYTE **v6; // esi@1
- int v7; // ecx@1
- unsigned int v8; // edx@1
- unsigned int v9; // edx@1
- _BYTE *v10; // ebp@1
- _BYTE *result; // eax@1
- int v12; // ebx@1
- _BYTE **i; // esi@1
- unsigned __int8 v14; // cf@3
- _BYTE **v15; // esi@9
- unsigned int v16; // edx@9
- _BYTE **v17; // [esp+4h] [ebp-24h]@1
- int v18; // [esp+8h] [ebp-20h]@1
- int v19; // [esp+Ch] [ebp-1Ch]@1
- v5 = (_WORD *)(2 * (a1 + a2 * dword_1002A2A8 - 1) + dword_1002A2A0);
- v6 = (_BYTE **)((*(unsigned __int16 *)(dword_1002A29C + 262146) << 10)
- + 4 * *(unsigned __int16 *)(dword_1002A29C + 0x40000)
- + dword_1002A29C);
- v19 = dword_1002A2A8 - a3;
- v18 = 2 * (dword_1002A2A8 - a3);
- v17 = v6;
- v7 = a3 + 1;
- v8 = a5;
- BYTE1(v8) = byte_1002A2C0;
- v9 = _byteswap_ulong(v8);
- LOBYTE(v9) = a5;
- BYTE1(v9) = byte_1002A2BC;
- v10 = (_BYTE *)(a1 + a2 * dword_1002A2A8 - 1 + dword_1002A2A4);
- result = *v6;
- v12 = dword_1002A2B4;
- for ( i = v6 + 1; ; i = v15 + 1 )
- {
- while ( --v7 )
- {
- ++v10;
- ++v5;
- v14 = __CFADD__((_BYTE)v9, BYTE1(v9));
- BYTE1(v9) += v9;
- if ( v14 )
- {
- result = *i;
- ++i;
- }
- if ( (_WORD)result != -1 )
- {
- result = (_BYTE *)1;
- if ( *v5 < 1u )
- {
- *v5 = 1;
- result = (_BYTE *)(v12 + (unsigned __int8)*v10);
- LOBYTE(result) = *result;
- *v10 = (_BYTE)result;
- }
- }
- }
- if ( !--a4 )
- break;
- v16 = _byteswap_ulong(v9);
- v7 = a3 + 1;
- v15 = v17;
- v5 = (_WORD *)((char *)v5 + v18);
- v10 += v19;
- v14 = __CFADD__((_BYTE)v16, BYTE1(v16));
- BYTE1(v16) += v16;
- if ( v14 )
- {
- v15 = v17 + 256;
- v17 += 256;
- }
- v9 = _byteswap_ulong(v16);
- BYTE1(v9) = byte_1002A2BC;
- result = *v15;
- }
- return result;
- }
- // 1002A2A0: using guessed type int dword_1002A2A0;
- // 1002A2A4: using guessed type int dword_1002A2A4;
- // 1002A2A8: using guessed type int dword_1002A2A8;
- // 1002A2B4: using guessed type int dword_1002A2B4;
- // 1002A2BC: using guessed type char byte_1002A2BC;
- // 1002A2C0: using guessed type char byte_1002A2C0;
- //----- (1000D6C9) --------------------------------------------------------
- int __cdecl sub_1000D6C9(int a1, int a2)
- {
- int v2; // ecx@1
- int *v3; // esi@1
- int result; // eax@1
- int v5; // ecx@1
- _BYTE *v6; // edx@1
- _WORD *v7; // edi@1
- int v8; // ebp@1
- _WORD *v9; // edi@8
- _BYTE *v10; // edx@8
- int v11; // [esp+0h] [ebp-2Ch]@1
- int v12; // [esp+4h] [ebp-28h]@1
- int v13; // [esp+8h] [ebp-24h]@1
- int v14; // [esp+Ch] [ebp-20h]@1
- int v15; // [esp+10h] [ebp-1Ch]@1
- v2 = *(unsigned __int16 *)(dword_1002A29C + 262152);
- v15 = *(unsigned __int16 *)(dword_1002A29C + 262154);
- v3 = (int *)((*(unsigned __int16 *)(dword_1002A29C + 262146) << 10)
- + 4 * *(unsigned __int16 *)(dword_1002A29C + 0x40000)
- + dword_1002A29C);
- v14 = 2 * (dword_1002A2A8 - v2);
- v13 = 4 * (dword_1002A2A8 - v2);
- result = 4 * (256 - v2);
- v12 = 4 * (256 - v2);
- v5 = v2 + 1;
- v11 = v5;
- v6 = (_BYTE *)(a1 + a2 * dword_1002A2A8 + dword_1002A2A4 - 2);
- v7 = (_WORD *)(2 * (a1 + a2 * dword_1002A2A8) + dword_1002A2A0 - 4);
- v8 = dword_1002A2B4;
- while ( 1 )
- {
- while ( --v5 )
- {
- v6 += 2;
- v7 += 2;
- result = *v3;
- *v3 = 0xFFFF;
- ++v3;
- if ( (_WORD)result != -1 )
- {
- result = 0;
- if ( *v7 < 1u )
- {
- *v7 = 1;
- LOBYTE(result) = *v6;
- LOBYTE(result) = *(_BYTE *)(result + v8);
- *v6 = result;
- }
- if ( v7[1] < 1u )
- {
- v7[1] = 1;
- LOBYTE(result) = v6[1];
- LOBYTE(result) = *(_BYTE *)(result + v8);
- v6[1] = result;
- }
- v9 = (_WORD *)((char *)v7 + dword_1002A2AC);
- v10 = &v6[dword_1002A2A8];
- if ( *v9 < 1u )
- {
- *v9 = 1;
- LOBYTE(result) = *v10;
- LOBYTE(result) = *(_BYTE *)(result + v8);
- *v10 = result;
- }
- if ( v9[1] < 1u )
- {
- v9[1] = 1;
- LOBYTE(result) = v10[1];
- LOBYTE(result) = *(_BYTE *)(result + v8);
- v10[1] = result;
- }
- v7 = (_WORD *)((char *)v9 - dword_1002A2AC);
- v6 = &v10[-dword_1002A2A8];
- }
- }
- if ( !--v15 )
- break;
- v5 = v11;
- v3 = (int *)((char *)v3 + v12);
- v7 = (_WORD *)((char *)v7 + v13);
- v6 += v14;
- }
- return result;
- }
- // 1002A2A0: using guessed type int dword_1002A2A0;
- // 1002A2A4: using guessed type int dword_1002A2A4;
- // 1002A2A8: using guessed type int dword_1002A2A8;
- // 1002A2AC: using guessed type int dword_1002A2AC;
- // 1002A2B4: using guessed type int dword_1002A2B4;
- //----- (10010090) --------------------------------------------------------
- int __cdecl sub_10010090(double a1)
- {
- return _ctrandisp1(a1);
- }
- //----- (1001009A) --------------------------------------------------------
- void sub_1001009A()
- {
- JUMPOUT(&loc_10010095);
- }
- //----- (100170F0) --------------------------------------------------------
- int __cdecl sub_100170F0(int a1)
- {
- int result; // eax@1
- result = a1;
- dword_10036CEC = a1;
- return result;
- }
- // 10036CEC: using guessed type int dword_10036CEC;
- //----- (10017410) --------------------------------------------------------
- double __usercall sub_10017410@<st0>(long double a1@<st1>, long double a2@<st0>)
- {
- char v2; // cl@1
- double result; // st7@1
- char v4; // ch@1
- sub_1001744C();
- result = atan2(a1, a2);
- if ( v4 )
- result = 3.141592653589793116 - result;
- if ( v2 )
- result = -result;
- return result;
- }
- // 1001744C: using guessed type int sub_1001744C(void);
- //----- (1001744C) --------------------------------------------------------
- #error "10017477: positive sp value has been found (funcsize=0)"
- //----- (100174A8) --------------------------------------------------------
- int sub_100174A8()
- {
- char v0; // cl@1
- _rtpiby2();
- JUMPOUT(v0, 0, chsifnegret);
- return chsifnegret();
- }
- // 1001747C: using guessed type double _rtpiby2(void);
- // 1001B1B9: using guessed type int chsifnegret(void);
- //----- (1001A9D0) --------------------------------------------------------
- int __cdecl sub_1001A9D0(int a1, int a2)
- {
- return _ld12cvt(a1, a2, &unk_10038318);
- }
- // 1001A760: using guessed type _DWORD __cdecl _ld12cvt(_DWORD, _DWORD, _DWORD);
- //----- (1001AA00) --------------------------------------------------------
- int __cdecl sub_1001AA00(int a1, int a2)
- {
- return _ld12cvt(a1, a2, &unk_10038330);
- }
- // 1001A760: using guessed type _DWORD __cdecl _ld12cvt(_DWORD, _DWORD, _DWORD);
- //----- (1001AB00) --------------------------------------------------------
- int __cdecl sub_1001AB00(int a1, int a2)
- {
- char v3; // [esp+Ch] [ebp-10h]@1
- char v4; // [esp+10h] [ebp-Ch]@1
- __strgtold12(&v4, &v3, a2, 0, 0, 0, 0);
- return sub_1001A9D0((int)&v4, a1);
- }
- // 1001DA90: using guessed type _DWORD __cdecl __strgtold12(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD);
- //----- (1001AB80) --------------------------------------------------------
- int __cdecl sub_1001AB80(int a1, int a2)
- {
- char v3; // [esp+Ch] [ebp-10h]@1
- char v4; // [esp+10h] [ebp-Ch]@1
- __strgtold12(&v4, &v3, a2, 0, 0, 0, 0);
- return sub_1001AA00((int)&v4, a1);
- }
- // 1001DA90: using guessed type _DWORD __cdecl __strgtold12(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD);
- #error "There were 1 decompilation failure(s) on 145 function(s)"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement