2126 lines
57 KiB
C
2126 lines
57 KiB
C
#include "pinball.h"
|
|
|
|
|
|
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
|
|
|
|
void FUN_01007a3e(HWND param_1,uint param_2,uint param_3,uint param_4)
|
|
|
|
{
|
|
BOOL BVar1;
|
|
HWND hWnd;
|
|
HCURSOR hCursor;
|
|
HKEY pHVar2;
|
|
int iVar3;
|
|
HMENU pHVar4;
|
|
HANDLE hThread;
|
|
uint uVar5;
|
|
int *_Dest;
|
|
UINT uType;
|
|
LPSTR lpCaption;
|
|
LPSTR lpText;
|
|
bool bVar6;
|
|
tagRECT *lpRect;
|
|
undefined *puVar7;
|
|
int *piVar8;
|
|
tagRECT local_68;
|
|
int local_58;
|
|
uint local_54;
|
|
int *local_50;
|
|
HWND local_4c;
|
|
tagPAINTSTRUCT local_48;
|
|
undefined4 local_8;
|
|
|
|
local_8 = DAT_01024778;
|
|
local_4c = param_1;
|
|
local_54 = param_4;
|
|
if (param_2 == DAT_010281e8) {
|
|
BVar1 = IsIconic(param_1);
|
|
if (BVar1 != 0) {
|
|
ShowWindow(param_1,9);
|
|
}
|
|
SetForegroundWindow(param_1);
|
|
goto LAB_0100826a;
|
|
}
|
|
if (param_2 < 0x1d) {
|
|
if (param_2 == 0x1c) {
|
|
if (param_3 == 0) {
|
|
_DAT_01024ff0 = 0;
|
|
FUN_01003e69(0);
|
|
FUN_010056d3(0x193,0);
|
|
DAT_0102822c = 0;
|
|
hThread = GetCurrentThread();
|
|
SetThreadPriority(hThread,0);
|
|
FUN_01006b8a();
|
|
FUN_0100afb9();
|
|
}
|
|
else {
|
|
_DAT_01024ff0 = 1;
|
|
FUN_01006ba1();
|
|
if ((DAT_01028224 != 0) && (_DAT_01024fd8 == 0)) {
|
|
FUN_0100afdc(0);
|
|
}
|
|
_DAT_01024ff4 = 1;
|
|
FUN_010079ed(DAT_01028230);
|
|
}
|
|
}
|
|
else {
|
|
if (param_2 < 9) {
|
|
if (param_2 == 8) {
|
|
_DAT_01024fec = 0;
|
|
FUN_01015892();
|
|
FUN_010156c1();
|
|
}
|
|
else {
|
|
if (param_2 == 1) {
|
|
_DAT_01024f04 = _DAT_01024f04 + 1;
|
|
lpRect = &local_68;
|
|
hWnd = GetDesktopWindow();
|
|
GetWindowRect(hWnd,(LPRECT)lpRect);
|
|
local_58 = local_68.right - local_68.left;
|
|
local_50 = (int *)(local_68.bottom - local_68.top);
|
|
FUN_01015404(&local_58,&local_50);
|
|
hCursor = LoadCursorA((HINSTANCE)0x0,(LPCSTR)0x7f02);
|
|
hCursor = SetCursor(hCursor);
|
|
FUN_01004380(DAT_01028204,local_4c);
|
|
puVar7 = (undefined *)0x0;
|
|
pHVar2 = FUN_01003588((LPCSTR)0x0,"Voices",(HKEY)0x8);
|
|
iVar3 = FUN_01006973(DAT_01028204,(int)pHVar2,puVar7);
|
|
if (iVar3 == 0) {
|
|
FUN_010056a9(0xc9,0);
|
|
}
|
|
FUN_01006ba1();
|
|
if ((_DAT_0102556c == 0) && (iVar3 = FUN_0100af1f(local_4c), iVar3 == 0)) {
|
|
FUN_010056a9(0xca,0);
|
|
}
|
|
iVar3 = FUN_01015424();
|
|
if (iVar3 != 0) {
|
|
// WARNING: Subroutine does not return
|
|
exit(0);
|
|
}
|
|
SetCursor(hCursor);
|
|
pHVar2 = FUN_01003588((LPCSTR)0x0,"Change Display",(HKEY)0x1);
|
|
pHVar4 = GetMenu(local_4c);
|
|
FUN_01003d65(local_58,(int)local_50,DAT_0102822c,local_4c,pHVar4,pHVar2);
|
|
_DAT_01024f04 = _DAT_01024f04 + -1;
|
|
}
|
|
else {
|
|
if (param_2 == 2) goto LAB_01007c12;
|
|
if (param_2 == 3) {
|
|
LAB_01007de8:
|
|
_DAT_01024ff4 = 1;
|
|
}
|
|
else {
|
|
if (param_2 == 7) {
|
|
_DAT_01024fec = 1;
|
|
_DAT_01024ff4 = 1;
|
|
FUN_01015892();
|
|
FUN_01003c87();
|
|
thunk_FUN_01013a6a();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else {
|
|
if (param_2 == 0xf) {
|
|
FUN_0100347c(param_1,(LPPAINTSTRUCT)&local_48);
|
|
FUN_01003f98();
|
|
EndPaint(param_1,(PAINTSTRUCT *)&local_48);
|
|
goto LAB_0100826a;
|
|
}
|
|
if ((param_2 == 0x10) || (param_2 == 0x12)) {
|
|
LAB_01007c12:
|
|
FUN_01007949();
|
|
_DAT_01024fdc = 1;
|
|
PostQuitMessage(0);
|
|
FUN_01003e53();
|
|
}
|
|
else {
|
|
if (param_2 == 0x14) goto LAB_0100826a;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else {
|
|
if (param_2 < 0x120) {
|
|
if (param_2 == 0x11f) {
|
|
if (param_4 == 0) {
|
|
if (_DAT_01024ee4 != 0) {
|
|
FUN_010039c5(0);
|
|
}
|
|
goto LAB_0100826a;
|
|
}
|
|
}
|
|
else {
|
|
if (param_2 < 0x105) {
|
|
if (param_2 == 0x104) {
|
|
_DAT_01024ff4 = 1;
|
|
if (_DAT_01024ee4 != 0) {
|
|
FUN_010039c5(1);
|
|
}
|
|
}
|
|
else {
|
|
if (param_2 == 0x24) {
|
|
FUN_01003ecf(param_4);
|
|
}
|
|
else {
|
|
if (param_2 == 0x7e) {
|
|
iVar3 = FUN_01003c94();
|
|
if (iVar3 != 0) {
|
|
DAT_0102822c = 0;
|
|
FUN_010056d3(0x193,0);
|
|
}
|
|
}
|
|
else {
|
|
if (param_2 == 0x100) {
|
|
if ((param_4 & 0x40000000) == 0) {
|
|
FUN_01015072(param_3);
|
|
}
|
|
if (param_3 == 0x1b) {
|
|
if (DAT_0102822c != 0) {
|
|
FUN_010056ff(0x193);
|
|
}
|
|
SendMessageA(DAT_010281fc,0x112,0xf020,0);
|
|
}
|
|
else {
|
|
if (param_3 == 0x70) {
|
|
FUN_0100772d();
|
|
}
|
|
else {
|
|
if (param_3 == 0x71) {
|
|
FUN_01007976();
|
|
}
|
|
else {
|
|
if (param_3 == 0x72) {
|
|
FUN_01007918();
|
|
}
|
|
else {
|
|
if (param_3 == 0x73) {
|
|
FUN_010056ff(0x193);
|
|
}
|
|
else {
|
|
if (param_3 == 0x77) {
|
|
if (_DAT_01024fd8 == 0) {
|
|
FUN_01007918();
|
|
}
|
|
FUN_01005f45();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (_DAT_01024ff8 != 0) {
|
|
if (param_3 == 0x48) {
|
|
_DAT_01024fe4 = 1;
|
|
}
|
|
else {
|
|
if (param_3 == 0x59) {
|
|
SetWindowTextA(local_4c,"Pinball");
|
|
_DAT_01024fe0 = (uint)(_DAT_01024fe0 == 0);
|
|
}
|
|
else {
|
|
if (param_3 == 0x70) {
|
|
FUN_01014bf9(10);
|
|
}
|
|
else {
|
|
if (param_3 == 0x7e) {
|
|
bVar6 = _DAT_01024fd8 == 0;
|
|
_DAT_01024fd8 = (uint)bVar6;
|
|
bVar6 = !bVar6;
|
|
goto LAB_01007de2;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else {
|
|
if (param_2 == 0x101) {
|
|
FUN_010152e4(param_3);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else {
|
|
if (param_2 == 0x111) {
|
|
_DAT_01024ff4 = 1;
|
|
if (param_3 < 0x12e) {
|
|
if (param_3 == 0x12d) {
|
|
if (_DAT_01024fd8 == 0) {
|
|
FUN_01007918();
|
|
}
|
|
FUN_0100772d();
|
|
}
|
|
else {
|
|
if (param_3 < 0x6a) {
|
|
if (param_3 == 0x69) {
|
|
PostMessageA(param_1,0x12,0,0);
|
|
}
|
|
else {
|
|
if (param_3 == 0x65) {
|
|
FUN_01007976();
|
|
}
|
|
else {
|
|
if (param_3 == 0x66) {
|
|
if (_DAT_01024fd8 == 0) {
|
|
FUN_01007918();
|
|
}
|
|
FUN_0100789a(DAT_01028204,param_1);
|
|
}
|
|
else {
|
|
if (param_3 != 0x67) goto switchD_01007ffe_caseD_197;
|
|
if (_DAT_01024fd8 == 0) {
|
|
FUN_01007918();
|
|
}
|
|
FUN_010153f4();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else {
|
|
if (param_3 != 0x6a) {
|
|
if (200 < param_3) {
|
|
if (param_3 < 0xcb) goto switchD_01007ffe_caseD_193;
|
|
if (param_3 == 0xcc) goto switchD_01007ffe_caseD_196;
|
|
}
|
|
goto switchD_01007ffe_caseD_197;
|
|
}
|
|
FUN_0101479b();
|
|
}
|
|
}
|
|
}
|
|
else {
|
|
switch(param_3) {
|
|
case 0x191:
|
|
FUN_01007949();
|
|
FUN_010157c3();
|
|
break;
|
|
case 0x192:
|
|
FUN_01007918();
|
|
break;
|
|
case 0x193:
|
|
switchD_01007ffe_caseD_193:
|
|
if (_DAT_01024fd8 == 0) {
|
|
FUN_01007918();
|
|
}
|
|
FUN_010056ff(param_3);
|
|
break;
|
|
case 0x194:
|
|
FUN_01007949();
|
|
FUN_01015802();
|
|
break;
|
|
case 0x195:
|
|
if (_DAT_01024fd8 == 0) {
|
|
FUN_01007918();
|
|
}
|
|
local_50 = FUN_010054c2(500);
|
|
if (local_50 != (int *)0x0) {
|
|
_Dest = FUN_010054c2(500);
|
|
piVar8 = local_50;
|
|
if (_Dest != (int *)0x0) {
|
|
FUN_01003601((LPCSTR)0x0,"Shell Exe",(LPBYTE)local_50,(HKEY)&DAT_010013da,
|
|
(HKEY)0x1f4);
|
|
sprintf((char *)_Dest,"%s %s%lX %s%lX",local_50,"select=",DAT_010281fc,
|
|
"confirm=",
|
|
(int)DAT_010281fc * (int)DAT_010281fc * (int)DAT_010281fc *
|
|
(int)DAT_010281fc * (int)DAT_010281fc * (int)DAT_010281fc *
|
|
(int)DAT_010281fc);
|
|
uType = WinExec((LPCSTR)_Dest,5);
|
|
if ((int)uType < 0x20) {
|
|
uType = 0x2010;
|
|
lpCaption = FUN_01003752(0xaa);
|
|
lpText = FUN_01003752(0xab);
|
|
MessageBoxA(DAT_010281fc,lpText,lpCaption,uType);
|
|
}
|
|
FUN_01005541((int)local_50);
|
|
piVar8 = _Dest;
|
|
}
|
|
FUN_01005541((int)piVar8);
|
|
}
|
|
break;
|
|
case 0x196:
|
|
switchD_01007ffe_caseD_196:
|
|
if (_DAT_01024fd8 == 0) {
|
|
FUN_01007918();
|
|
}
|
|
FUN_01005f45();
|
|
break;
|
|
case 0x198:
|
|
case 0x199:
|
|
case 0x19a:
|
|
case 0x19b:
|
|
FUN_010056ff(param_3);
|
|
FUN_01007976();
|
|
}
|
|
switchD_01007ffe_caseD_197:
|
|
if (param_3 == 1) {
|
|
FUN_0100b035();
|
|
}
|
|
}
|
|
}
|
|
else {
|
|
if (param_2 == 0x112) {
|
|
uVar5 = param_3 & 0xfff0;
|
|
if (uVar5 == 0xf010) {
|
|
if (_DAT_01024ee4 != 0) goto LAB_0100826a;
|
|
LAB_01007eec:
|
|
FUN_01007949();
|
|
}
|
|
else {
|
|
if (uVar5 == 0xf020) {
|
|
if (_DAT_01024fd8 == 0) {
|
|
FUN_01007918();
|
|
}
|
|
}
|
|
else {
|
|
if (uVar5 == 0xf120) goto LAB_01007eec;
|
|
if (uVar5 == 0xf140) {
|
|
FUN_01003e69(0);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else {
|
|
bVar6 = param_2 == 0x116;
|
|
LAB_01007de2:
|
|
if (bVar6) goto LAB_01007de8;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else {
|
|
if (param_2 == 0x201) {
|
|
if (DAT_01025568 == 0) {
|
|
LAB_0100820f:
|
|
FUN_01014743(-1);
|
|
}
|
|
else {
|
|
if (_DAT_01024ff8 != 0) {
|
|
_DAT_01024fe8 = 1;
|
|
DAT_010281f4 = SetCursor((HCURSOR)0x0);
|
|
local_54 = FUN_01003ea2(param_4);
|
|
DAT_010281f8 = local_54 & 0xffff;
|
|
DAT_010281ec = local_54 >> 0x10;
|
|
SetCapture(local_4c);
|
|
}
|
|
}
|
|
}
|
|
else {
|
|
if (param_2 == 0x202) {
|
|
if (_DAT_01024fe8 != 0) {
|
|
_DAT_01024fe8 = 0;
|
|
SetCursor(DAT_010281f4);
|
|
ReleaseCapture();
|
|
}
|
|
}
|
|
else {
|
|
if ((param_2 == 0x204) || (param_2 == 0x207)) {
|
|
if (DAT_01025568 == 0) goto LAB_0100820f;
|
|
}
|
|
else {
|
|
if (param_2 == 0x218) {
|
|
if ((param_3 == 4) && (DAT_0102822c != 0)) {
|
|
DAT_0102822c = 0;
|
|
FUN_010056d3(0x193,0);
|
|
FUN_01003be4(DAT_0102822c);
|
|
}
|
|
}
|
|
else {
|
|
if (param_2 == 0x311) {
|
|
InvalidateRect(param_1,(RECT *)0x0,0);
|
|
}
|
|
else {
|
|
if (param_2 == 0x3b9) goto switchD_01007ffe_caseD_197;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
DefWindowProcA(local_4c,param_2,param_3,local_54);
|
|
LAB_0100826a:
|
|
FUN_0101cd9e();
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
|
|
|
|
undefined4 FUN_010082a9(void)
|
|
|
|
{
|
|
BOOL BVar1;
|
|
MSG local_20;
|
|
|
|
if ((_DAT_01024fec == 0) || (_DAT_01024fd8 != 0)) {
|
|
GetMessageA((LPMSG)&local_20,DAT_010281fc,0,0);
|
|
TranslateMessage(&local_20);
|
|
DispatchMessageA(&local_20);
|
|
if (local_20.message != 0x12) {
|
|
return 1;
|
|
}
|
|
}
|
|
else {
|
|
do {
|
|
BVar1 = PeekMessageA((LPMSG)&local_20,(HWND)0x0,0,0,1);
|
|
if (BVar1 == 0) {
|
|
return 1;
|
|
}
|
|
TranslateMessage(&local_20);
|
|
DispatchMessageA(&local_20);
|
|
} while (local_20.message != 0x12);
|
|
}
|
|
DAT_01028200 = local_20.wParam;
|
|
return 0;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
|
|
|
|
void FUN_0100833a(HINSTANCE param_1,undefined4 param_2,HINSTANCE param_3,int param_4)
|
|
|
|
{
|
|
LPSTR lpString2;
|
|
HKEY pHVar1;
|
|
UINT UVar2;
|
|
char *pcVar3;
|
|
HWND hWndParent;
|
|
int X;
|
|
void *_Memory;
|
|
undefined *puVar4;
|
|
undefined uVar5;
|
|
undefined uVar6;
|
|
code *pcVar7;
|
|
CHAR *lpWindowName;
|
|
DWORD dwStyle;
|
|
int Y;
|
|
int nWidth;
|
|
int nHeight;
|
|
HWND *ppHVar8;
|
|
LPBYTE pBVar9;
|
|
HMENU hMenu;
|
|
HINSTANCE hInstance;
|
|
HKEY pHVar10;
|
|
BYTE *pBVar11;
|
|
LPCSTR lpWindowName_00;
|
|
LPVOID lpParam;
|
|
HMODULE hInstance_00;
|
|
WNDCLASSA local_140;
|
|
INITCOMMONCONTROLSEX local_118;
|
|
HINSTANCE local_110;
|
|
int *local_10c;
|
|
int local_108;
|
|
HINSTANCE local_104;
|
|
HINSTANCE local_100;
|
|
int local_fc;
|
|
tagPOINT local_f8;
|
|
CHAR local_f0 [200];
|
|
tagMSG local_28;
|
|
undefined4 local_8;
|
|
|
|
local_8 = DAT_01024778;
|
|
local_110 = param_1;
|
|
local_100 = param_3;
|
|
local_fc = 300;
|
|
local_104 = (HINSTANCE)0x0;
|
|
FUN_010054ac(&LAB_010079a9);
|
|
_DAT_01024f04 = _DAT_01024f04 + 1;
|
|
lpString2 = FUN_01003752(0xa5);
|
|
FUN_010034b6(lpString2);
|
|
pHVar1 = (HKEY)0x1;
|
|
pcVar3 = "Table Version";
|
|
lpString2 = FUN_01003752(0xa6);
|
|
pHVar1 = FUN_01003588(lpString2,pcVar3,pHVar1);
|
|
if ((int)pHVar1 < 2) {
|
|
local_f8.y = (HWND *)FUN_010054c2(500);
|
|
if (local_f8.y != (HWND *)0x0) {
|
|
pcVar3 = "Table Version";
|
|
pHVar1 = (HKEY)FUN_01003752(0xa6);
|
|
FUN_0100367c(pHVar1,pcVar3);
|
|
GetModuleFileNameA(DAT_01028204,(LPSTR)local_f8.y,500);
|
|
pcVar3 = "Table Exe";
|
|
ppHVar8 = local_f8.y;
|
|
pHVar1 = (HKEY)FUN_01003752(0xa6);
|
|
FUN_010036e3(pHVar1,pcVar3,(BYTE *)ppHVar8);
|
|
pBVar11 = (BYTE *)FUN_01003752(0xa9);
|
|
pcVar3 = "Table Name";
|
|
pHVar1 = (HKEY)FUN_01003752(0xa6);
|
|
FUN_010036e3(pHVar1,pcVar3,pBVar11);
|
|
pBVar11 = (BYTE *)FUN_01003752(0xa6);
|
|
FUN_010036e3((HKEY)0x0,"Last Table Played",pBVar11);
|
|
FUN_01005541((int)local_f8.y);
|
|
local_f8.y = (HWND *)FUN_010054c2(500);
|
|
if (local_f8.y != (HWND *)0x0) {
|
|
local_10c = FUN_010054c2(500);
|
|
if (local_10c != (int *)0x0) {
|
|
local_108 = 0;
|
|
while( true ) {
|
|
sprintf((char *)&local_28,"Table%d");
|
|
FUN_01003601((LPCSTR)0x0,(LPCSTR)&local_28,(LPBYTE)local_f8.y,(HKEY)&DAT_010013da,
|
|
(HKEY)0x1f4);
|
|
if (*(char *)local_f8.y == '\0') break;
|
|
FUN_01003601((LPCSTR)local_f8.y,"Table Name",(LPBYTE)local_10c,(HKEY)&DAT_010013da,
|
|
(HKEY)0x1f4);
|
|
lpString2 = FUN_01003752(0xa9);
|
|
X = lstrcmpA((LPCSTR)local_10c,lpString2);
|
|
if (X == 0) goto LAB_01008566;
|
|
if ((*(char *)local_10c == '\0') || (local_108 = local_108 + 1, 0x7fbb < local_108))
|
|
break;
|
|
}
|
|
pBVar11 = (BYTE *)FUN_01003752(0xa6);
|
|
FUN_010036e3((HKEY)0x0,(LPCSTR)&local_28,pBVar11);
|
|
LAB_01008566:
|
|
FUN_01005541((int)local_10c);
|
|
}
|
|
FUN_01005541((int)local_f8.y);
|
|
}
|
|
LAB_0100857c:
|
|
_DAT_01024f04 = _DAT_01024f04 + -1;
|
|
pcVar3 = strstr((char *)local_100,"-quick");
|
|
hInstance = local_110;
|
|
_DAT_0102556c = (uint)(pcVar3 != (char *)0x0);
|
|
pHVar10 = (HKEY)0x12c;
|
|
DAT_01028204 = (HMODULE)local_110;
|
|
pHVar1 = (HKEY)FUN_01003752(0xa8);
|
|
pBVar9 = &DAT_0102543c;
|
|
pcVar3 = "Pinball Data";
|
|
lpString2 = FUN_01003752(0xa6);
|
|
FUN_01003601(lpString2,pcVar3,pBVar9,pHVar1,pHVar10);
|
|
DAT_010281e8 = RegisterWindowMessageA("PinballThemeSwitcherUniqueMsgString");
|
|
lpWindowName_00 = (LPCSTR)0x0;
|
|
lpString2 = FUN_01003752(0xa7);
|
|
hWndParent = FindWindowA(lpString2,lpWindowName_00);
|
|
if (hWndParent == (HWND)0x0) {
|
|
X = FUN_010211d0();
|
|
if (X == 0) {
|
|
local_118.dwSize = 8;
|
|
local_118.dwICC = 0x16fd;
|
|
InitCommonControlsEx(&local_118);
|
|
local_140.style = 0x1008;
|
|
local_140.lpfnWndProc = FUN_01007a3e;
|
|
local_140.cbClsExtra = 0;
|
|
local_140.cbWndExtra = 0;
|
|
local_140.hInstance = hInstance;
|
|
local_140.hIcon = LoadIconA(hInstance,"ICON_1");
|
|
local_140.hCursor = LoadCursorA((HINSTANCE)0x0,(LPCSTR)0x7f00);
|
|
local_140.hbrBackground = (HBRUSH)0x10;
|
|
local_140.lpszMenuName = "MENU_1";
|
|
local_140.lpszClassName = FUN_01003752(0xa7);
|
|
local_f8.y = FUN_01007308(hInstance,"splash_bitmap","splash_bitmap");
|
|
RegisterClassA(&local_140);
|
|
FUN_010067f3();
|
|
lpString2 = FUN_01003752(0x26);
|
|
lstrcpyA(local_f0,lpString2);
|
|
lpParam = (LPVOID)0x0;
|
|
hMenu = (HMENU)0x0;
|
|
hWndParent = (HWND)0x0;
|
|
nHeight = 0x1e0;
|
|
nWidth = 0x280;
|
|
Y = 0;
|
|
X = 0;
|
|
dwStyle = 0x3ca0000;
|
|
lpWindowName = local_f0;
|
|
lpString2 = FUN_01003752(0xa7);
|
|
DAT_010281fc = CreateWindowExA(0,lpString2,lpWindowName,dwStyle,X,Y,nWidth,nHeight,
|
|
hWndParent,hMenu,hInstance,lpParam);
|
|
if (DAT_010281fc != (HWND)0x0) {
|
|
hMenu = GetMenu(DAT_010281fc);
|
|
FUN_01005f69(hMenu);
|
|
FUN_010157e3();
|
|
FUN_01014d3d();
|
|
pcVar3 = strstr((char *)local_100,"-fullscreen");
|
|
if (pcVar3 != (char *)0x0) {
|
|
DAT_0102822c = 1;
|
|
FUN_010056d3(0x193,1);
|
|
}
|
|
ShowWindow(DAT_010281fc,param_4);
|
|
FUN_01003be4(DAT_0102822c);
|
|
UpdateWindow(DAT_010281fc);
|
|
if (local_f8.y != (HWND *)0x0) {
|
|
FUN_010071a5(local_f8.y);
|
|
FUN_010071ed(local_f8.y);
|
|
}
|
|
FUN_010079ed(DAT_01028230);
|
|
pcVar7 = timeGetTime_exref;
|
|
local_f8.y = (HWND *)timeGetTime();
|
|
while ((ppHVar8 = (HWND *)timeGetTime(), local_f8.y <= ppHVar8 &&
|
|
(dwStyle = timeGetTime(), dwStyle - (int)local_f8.y < 2000))) {
|
|
PeekMessageA((LPMSG)&local_28,DAT_010281fc,0,0,1);
|
|
}
|
|
pcVar3 = strstr((char *)local_100,"-demo");
|
|
if (pcVar3 == (char *)0x0) {
|
|
FUN_010153ae(0);
|
|
}
|
|
else {
|
|
FUN_01015802();
|
|
}
|
|
DAT_010281a0 = timeGetTime();
|
|
do {
|
|
if (local_fc == 0) {
|
|
local_fc = 300;
|
|
if (_DAT_01024fe0 == 0) {
|
|
local_104 = (HINSTANCE)0x0;
|
|
}
|
|
else {
|
|
local_110 = (HINSTANCE)(*pcVar7)();
|
|
if (local_104 != (HINSTANCE)0x0) {
|
|
local_100 = (HINSTANCE)((int)local_110 - (int)local_104);
|
|
sprintf(&DAT_01024f88,"Frames/sec = %02.02f");
|
|
SetWindowTextA(DAT_010281fc,&DAT_01024f88);
|
|
if (_DAT_01024fe4 != 0) {
|
|
if (_DAT_010281c8 == 0) {
|
|
_Memory = malloc(0x400);
|
|
X = 0;
|
|
Y = 0;
|
|
puVar4 = (undefined *)((int)_Memory + 0x29);
|
|
do {
|
|
uVar6 = (undefined)Y;
|
|
if (0xff < X + 10) break;
|
|
uVar5 = uVar6;
|
|
if (0xff < Y) {
|
|
uVar5 = 0xff;
|
|
}
|
|
puVar4[1] = uVar5;
|
|
if (0xff < Y) {
|
|
uVar6 = (undefined)X;
|
|
}
|
|
*puVar4 = uVar6;
|
|
puVar4[-1] = uVar6;
|
|
Y = Y + 8;
|
|
puVar4 = puVar4 + 4;
|
|
X = X + 1;
|
|
} while (X < 0x100);
|
|
FUN_010043b9((int)_Memory);
|
|
free(_Memory);
|
|
FUN_0100459a((int **)&DAT_010281c0,(int *)0x190,(int *)0xf);
|
|
pcVar7 = timeGetTime_exref;
|
|
}
|
|
FUN_01004705((BITMAPINFO **)&DAT_010281c0,0,0,0,0,300,10);
|
|
FUN_010047fa((undefined4 *)&DAT_010281c0,300,10,0,0,0);
|
|
}
|
|
}
|
|
local_104 = local_110;
|
|
}
|
|
}
|
|
FUN_01006bb8();
|
|
X = FUN_010082a9();
|
|
if ((X == 0) || (_DAT_01024fdc != 0)) goto LAB_01008a88;
|
|
if (_DAT_01024fec != 0) {
|
|
if ((_DAT_01024fe8 != 0) &&
|
|
(DAT_010281f0 = (*pcVar7)(), 1 < (int)(DAT_010281f0 - DAT_010281a0))) {
|
|
GetCursorPos((LPPOINT)&local_f8);
|
|
FUN_01014d8e(DAT_010281f8 - local_f8.x,(int)((int)local_f8.y - DAT_010281ec));
|
|
SetCursorPos(DAT_010281f8,DAT_010281ec);
|
|
}
|
|
if (_DAT_01024fd8 == 0) {
|
|
DAT_010281f0 = (*pcVar7)();
|
|
if (_DAT_01024ff4 != 0) {
|
|
_DAT_01024ff4 = 0;
|
|
DAT_010281a0 = DAT_010281f0;
|
|
}
|
|
if (DAT_010281f0 == DAT_010281a0) {
|
|
Sleep(8);
|
|
}
|
|
else {
|
|
X = FUN_01014bf9(DAT_010281f0 - DAT_010281a0);
|
|
if (X != 0) {
|
|
if (_DAT_010281c8 != 0) {
|
|
X = (DAT_010281f0 - DAT_010281a0) + 10;
|
|
uVar6 = (undefined)X;
|
|
if (0xec < X) {
|
|
uVar6 = 0xf9;
|
|
}
|
|
FUN_010047fa((undefined4 *)&DAT_010281c0,1,10,299 - local_fc,0,uVar6);
|
|
}
|
|
local_fc = local_fc + -1;
|
|
DAT_010281a0 = DAT_010281f0;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} while( true );
|
|
}
|
|
PostQuitMessage(0);
|
|
}
|
|
}
|
|
else {
|
|
SendMessageA(hWndParent,DAT_010281e8,0,0);
|
|
}
|
|
goto LAB_01008ad5;
|
|
}
|
|
}
|
|
else {
|
|
ppHVar8 = (HWND *)FUN_010054c2(500);
|
|
local_f8.y = ppHVar8;
|
|
if (ppHVar8 != (HWND *)0x0) {
|
|
pHVar10 = (HKEY)0x1f4;
|
|
pHVar1 = (HKEY)&DAT_010013da;
|
|
pcVar3 = "Shell Exe";
|
|
local_f8.y = ppHVar8;
|
|
lpString2 = FUN_01003752(0xa6);
|
|
FUN_01003601(lpString2,pcVar3,(LPBYTE)ppHVar8,pHVar1,pHVar10);
|
|
UVar2 = WinExec((LPCSTR)local_f8.y,5);
|
|
FUN_01005541((int)local_f8.y);
|
|
if ((int)UVar2 < 0x20) goto LAB_0100857c;
|
|
}
|
|
}
|
|
FUN_010034e7();
|
|
LAB_01008ad5:
|
|
FUN_0101cd9e();
|
|
return;
|
|
LAB_01008a88:
|
|
FUN_0100460c((LPCVOID *)&DAT_010281c0);
|
|
FUN_010055f3();
|
|
FUN_0100af8e();
|
|
FUN_0101566e();
|
|
FUN_01006af6();
|
|
FUN_01004508();
|
|
DestroyWindow(DAT_010281fc);
|
|
FUN_010034e7();
|
|
hInstance_00 = DAT_01028204;
|
|
lpString2 = FUN_01003752(0xa7);
|
|
UnregisterClassA(lpString2,(HINSTANCE)hInstance_00);
|
|
goto LAB_01008ad5;
|
|
}
|
|
|
|
|
|
|
|
ushort FUN_01008ae9(float *param_1)
|
|
|
|
{
|
|
float fVar1;
|
|
bool in_PF;
|
|
|
|
fVar1 = SQRT(param_1[1] * param_1[1] + *param_1 * *param_1);
|
|
if (in_PF) {
|
|
*param_1 = (1.00000000 / fVar1) * *param_1;
|
|
param_1[1] = (1.00000000 / fVar1) * param_1[1];
|
|
}
|
|
return (ushort)(0.00000000 < fVar1) << 8 | (ushort)(fVar1 == 0.00000000) << 0xe;
|
|
}
|
|
|
|
|
|
|
|
ushort FUN_01008b34(float *param_1,float *param_2)
|
|
|
|
{
|
|
float fVar1;
|
|
float fVar2;
|
|
float fVar3;
|
|
bool in_PF;
|
|
ushort uVar4;
|
|
|
|
fVar1 = *param_2 - *param_1;
|
|
fVar2 = param_2[1] - param_1[1];
|
|
fVar3 = fVar1 * param_1[3] + fVar2 * param_1[4];
|
|
uVar4 = (ushort)(fVar3 < 0.00000000) << 8 | (ushort)(fVar3 == 0.00000000) << 0xe;
|
|
if (in_PF) {
|
|
fVar1 = fVar1 * fVar1 + fVar2 * fVar2;
|
|
uVar4 = (ushort)(fVar1 < param_2[3]) << 8 | (ushort)(fVar1 == param_2[3]) << 0xe;
|
|
if (in_PF) {
|
|
fVar1 = fVar3 * fVar3 + (param_2[3] - fVar1);
|
|
uVar4 = (ushort)(fVar1 < 0.00000000) << 8 | (ushort)(fVar1 == 0.00000000) << 0xe;
|
|
if (fVar1 >= 0.00000000) {
|
|
fVar3 = fVar3 - SQRT(fVar1);
|
|
uVar4 = (ushort)(fVar3 < 0.00000000) << 8 | (ushort)(fVar3 == 0.00000000) << 0xe;
|
|
if (fVar3 >= 0.00000000) {
|
|
uVar4 = (ushort)(fVar3 < param_1[6]) << 8 | (ushort)(fVar3 == param_1[6]) << 0xe;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return uVar4;
|
|
}
|
|
|
|
|
|
|
|
void FUN_01008beb(int param_1,float param_2,float param_3,float param_4,float param_5)
|
|
|
|
{
|
|
float *pfVar1;
|
|
float fVar2;
|
|
float *extraout_EDX;
|
|
bool in_PF;
|
|
|
|
pfVar1 = (float *)(param_1 + 0xc);
|
|
*pfVar1 = param_4 - param_2;
|
|
*(float *)(param_1 + 0x10) = param_5 - param_3;
|
|
FUN_01008ae9(pfVar1);
|
|
*extraout_EDX = extraout_EDX[4];
|
|
fVar2 = *pfVar1;
|
|
extraout_EDX[1] = -fVar2;
|
|
extraout_EDX[6] = -(extraout_EDX[4] * param_2) - -fVar2 * param_3;
|
|
if ((!in_PF) &&
|
|
((ushort)((ushort)(*pfVar1 < -0.00000000) << 8 | (ushort)(*pfVar1 == -0.00000000) << 0xe) == 0)
|
|
) {
|
|
*pfVar1 = 0.00000000;
|
|
param_2 = param_3;
|
|
param_4 = param_5;
|
|
}
|
|
if (in_PF) {
|
|
extraout_EDX[7] = param_4;
|
|
extraout_EDX[8] = param_2;
|
|
}
|
|
else {
|
|
extraout_EDX[8] = param_4;
|
|
extraout_EDX[7] = param_2;
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
ushort FUN_01008c8f(float *param_1,float *param_2)
|
|
|
|
{
|
|
float fVar1;
|
|
ushort uVar2;
|
|
ushort uVar3;
|
|
float fVar4;
|
|
bool in_PF;
|
|
ushort uVar5;
|
|
|
|
fVar4 = param_1[3] * *param_2 + param_2[1] * param_1[4];
|
|
uVar5 = (ushort)(fVar4 < 0.00000000) << 8 | (ushort)(fVar4 == 0.00000000) << 0xe;
|
|
if (fVar4 < 0.00000000) {
|
|
fVar4 = -((param_1[1] * param_2[1] + *param_1 * *param_2 + param_2[6]) / fVar4);
|
|
uVar5 = (ushort)(fVar4 < -param_1[7]) << 8 | (ushort)(fVar4 == -param_1[7]) << 0xe;
|
|
if ((in_PF) &&
|
|
(uVar2 = (ushort)(fVar4 < param_1[6]) << 8, uVar3 = (ushort)(fVar4 == param_1[6]) << 0xe,
|
|
uVar5 = uVar2 | uVar3, (uVar2 | uVar3) != 0)) {
|
|
param_2[9] = fVar4 * param_1[3] + *param_1;
|
|
fVar4 = fVar4 * param_1[4] + param_1[1];
|
|
param_2[10] = fVar4;
|
|
if (in_PF) {
|
|
uVar5 = (ushort)(param_2[7] < param_2[9]) << 8 | (ushort)(param_2[7] == param_2[9]) << 0xe;
|
|
if (!in_PF) {
|
|
uVar5 = (ushort)(param_2[9] < param_2[8]) << 8 | (ushort)(param_2[9] == param_2[8]) << 0xe
|
|
;
|
|
}
|
|
}
|
|
else {
|
|
fVar1 = param_2[7];
|
|
uVar5 = (ushort)(fVar4 < fVar1) << 8 | (ushort)(fVar4 == fVar1) << 0xe;
|
|
if (fVar4 >= fVar1) {
|
|
uVar5 = (ushort)(fVar4 < param_2[8]) << 8 | (ushort)(fVar4 == param_2[8]) << 0xe;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return uVar5;
|
|
}
|
|
|
|
|
|
|
|
void FUN_01008d4e(float *param_1,float *param_2,float *param_3)
|
|
|
|
{
|
|
float fVar1;
|
|
float fVar2;
|
|
float fVar3;
|
|
|
|
fVar1 = *param_2;
|
|
fVar2 = param_2[1];
|
|
fVar3 = param_2[2];
|
|
*param_3 = fVar1 * *param_1 + fVar2 * param_1[1] + fVar3 * param_1[2] + param_1[3];
|
|
param_3[1] = fVar1 * param_1[4] + fVar2 * param_1[5] + fVar3 * param_1[6] + param_1[7];
|
|
param_3[2] = fVar1 * param_1[8] + fVar2 * param_1[9] + fVar3 * param_1[10] + param_1[0xb];
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_01008db8(float *param_1,float *param_2,float *param_3)
|
|
|
|
{
|
|
*param_3 = param_2[2] * param_1[1] - param_2[1] * param_1[2];
|
|
param_3[1] = -(*param_1 * param_2[2] - *param_2 * param_1[2]);
|
|
param_3[2] = *param_1 * param_2[1] - *param_2 * param_1[1];
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
uint FUN_01008dff(float *param_1)
|
|
|
|
{
|
|
float fVar1;
|
|
|
|
fVar1 = param_1[2] * param_1[2] + param_1[1] * param_1[1] + *param_1 * *param_1;
|
|
return (uint)param_1 & 0xffff0000 |
|
|
(uint)(ushort)((ushort)(fVar1 < 0.00000000) << 8 | (ushort)(fVar1 == 0.00000000) << 0xe);
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
|
|
|
|
void FUN_01008e4b(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)
|
|
|
|
{
|
|
undefined4 *puVar1;
|
|
undefined4 *puVar2;
|
|
int iVar3;
|
|
|
|
puVar2 = &DAT_01028160;
|
|
do {
|
|
iVar3 = 4;
|
|
puVar1 = puVar2;
|
|
do {
|
|
*puVar1 = *(undefined4 *)(param_1 + -0x1028160 + (int)puVar1);
|
|
puVar1 = puVar1 + 4;
|
|
iVar3 = iVar3 + -1;
|
|
} while (iVar3 != 0);
|
|
puVar2 = puVar2 + 1;
|
|
} while ((int)puVar2 < 0x1028170);
|
|
_DAT_01028138 = param_4;
|
|
_DAT_0102813c = param_3;
|
|
_DAT_01028140 = param_2;
|
|
_DAT_01028190 = 0;
|
|
_DAT_01028194 = 0;
|
|
_DAT_01028198 = 0;
|
|
_DAT_0102819c = 0x3f800000;
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
|
|
|
|
void FUN_01008eba(undefined4 param_1,undefined4 param_2)
|
|
|
|
{
|
|
_DAT_01028138 = param_2;
|
|
_DAT_0102813c = param_1;
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_01008ed8(float *param_1)
|
|
|
|
{
|
|
float local_10 [3];
|
|
|
|
FUN_01008d4e((float *)&DAT_01028160,param_1,local_10);
|
|
FUN_01008dff(local_10);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
float10 FUN_01008f03(float *param_1,undefined4 *param_2)
|
|
|
|
{
|
|
undefined4 uVar1;
|
|
float local_10 [3];
|
|
|
|
FUN_01008d4e((float *)&DAT_01028160,param_1,local_10);
|
|
uVar1 = _ftol();
|
|
*param_2 = uVar1;
|
|
uVar1 = _ftol();
|
|
param_2[1] = uVar1;
|
|
return (float10)1.00000000;
|
|
}
|
|
|
|
|
|
|
|
undefined4 FUN_01008f7a(int param_1,int param_2)
|
|
|
|
{
|
|
int iVar1;
|
|
int iVar2;
|
|
int iVar3;
|
|
LPCSTR lpText;
|
|
LPCSTR lpCaption;
|
|
|
|
lpText = (LPCSTR)0x0;
|
|
lpCaption = (LPCSTR)0x0;
|
|
iVar3 = 0;
|
|
if (-1 < DAT_010235f8) {
|
|
iVar2 = 0;
|
|
iVar1 = DAT_010235f8;
|
|
do {
|
|
if (param_1 == iVar1) {
|
|
lpText = *(LPCSTR *)((int)&PTR_s_Bad_Handle_010235fc + iVar2);
|
|
}
|
|
if (param_2 == iVar1) {
|
|
lpCaption = *(LPCSTR *)((int)&PTR_s_Bad_Handle_010235fc + iVar2);
|
|
}
|
|
iVar3 = iVar3 + 1;
|
|
iVar2 = iVar3 * 8;
|
|
iVar1 = (&DAT_010235f8)[iVar3 * 2];
|
|
} while (-1 < iVar1);
|
|
if (lpText != (LPCSTR)0x0) goto LAB_01008fc3;
|
|
}
|
|
lpText = (&PTR_s_Bad_Handle_010235fc)[iVar3 * 2];
|
|
LAB_01008fc3:
|
|
MessageBoxA((HWND)0x0,lpText,lpCaption,0x2000);
|
|
return 0xffffffff;
|
|
}
|
|
|
|
|
|
|
|
void FUN_01008fe0(undefined4 *param_1)
|
|
|
|
{
|
|
param_1[0xd] = 0;
|
|
param_1[5] = 0x51a7a358;
|
|
param_1[0xc] = 0;
|
|
*param_1 = 0x3f733333;
|
|
param_1[1] = 0x3f19999a;
|
|
param_1[2] = 0;
|
|
param_1[4] = 0;
|
|
param_1[0x10] = 0;
|
|
param_1[0x11] = 0;
|
|
param_1[0xf] = 0;
|
|
param_1[0xe] = 0;
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
|
|
|
|
int FUN_0100901f(int param_1)
|
|
|
|
{
|
|
int iVar1;
|
|
DWORD *lpPathName;
|
|
HFILE hFile;
|
|
LONG LVar2;
|
|
short *psVar3;
|
|
int iVar4;
|
|
int iVar5;
|
|
|
|
iVar4 = 1;
|
|
iVar5 = iVar4;
|
|
if (1 < DAT_010236d8) {
|
|
do {
|
|
if (*(int *)(iVar4 * 0x14 + 0x1027c24) == param_1) {
|
|
iVar4 = (int)(short)iVar5 * 0x14;
|
|
if ((*(int *)(iVar4 + 0x1027c28) == 0) && (*(int *)(&DAT_01027c20 + iVar4) == 0)) {
|
|
iVar1 = *(int *)(iVar4 + 0x1027c24);
|
|
*(undefined4 *)(&DAT_01027c2c + iVar4) = 0;
|
|
if ((0 < iVar1) &&
|
|
(((_DAT_0102556c == 0 &&
|
|
(psVar3 = (short *)FUN_01006270(DAT_01027c0c,iVar1,0), psVar3 != (short *)0x0)) &&
|
|
(*psVar3 == 0xca)))) {
|
|
lpPathName = (DWORD *)FUN_01006270(DAT_01027c0c,iVar1,9);
|
|
hFile = _lopen((LPCSTR)lpPathName,0);
|
|
LVar2 = _llseek(hFile,0,2);
|
|
*(float *)(&DAT_01027c2c + iVar4) = (float)LVar2 * 0.00009091;
|
|
_lclose(hFile);
|
|
psVar3 = FUN_01006b38(lpPathName);
|
|
*(short **)(&DAT_01027c20 + iVar4) = psVar3;
|
|
}
|
|
}
|
|
*(int *)(iVar4 + 0x1027c28) = *(int *)(iVar4 + 0x1027c28) + 1;
|
|
return (int)(short)iVar5;
|
|
}
|
|
iVar4 = (int)(short)(iVar5 + 1);
|
|
iVar5 = iVar5 + 1;
|
|
} while (iVar4 < DAT_010236d8);
|
|
}
|
|
FUN_01008f7a(0x19,0x1a);
|
|
return -1;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
|
|
|
|
int __fastcall FUN_0100905c(undefined4 param_1,short param_2)
|
|
|
|
{
|
|
int iVar1;
|
|
LPCSTR lpPathName;
|
|
HFILE hFile;
|
|
LONG LVar2;
|
|
short *psVar3;
|
|
int unaff_EBP;
|
|
int iVar4;
|
|
|
|
iVar4 = (int)param_2 * 0x14;
|
|
if ((*(int *)(iVar4 + 0x1027c28) == 0) && (*(int *)(&DAT_01027c20 + iVar4) == 0)) {
|
|
iVar1 = *(int *)(iVar4 + 0x1027c24);
|
|
*(undefined4 *)(&DAT_01027c2c + iVar4) = 0;
|
|
*(int *)(unaff_EBP + 8) = iVar1;
|
|
if ((0 < iVar1) && (_DAT_0102556c == 0)) {
|
|
psVar3 = (short *)FUN_01006270(DAT_01027c0c,iVar1,0);
|
|
if ((psVar3 != (short *)0x0) && (*psVar3 == 0xca)) {
|
|
lpPathName = (LPCSTR)FUN_01006270(DAT_01027c0c,*(int *)(unaff_EBP + 8),9);
|
|
*(LPCSTR *)(unaff_EBP + -8) = lpPathName;
|
|
hFile = _lopen(lpPathName,0);
|
|
*(HFILE *)(unaff_EBP + -4) = hFile;
|
|
LVar2 = _llseek(hFile,0,2);
|
|
hFile = *(HFILE *)(unaff_EBP + -4);
|
|
*(LONG *)(unaff_EBP + 8) = LVar2;
|
|
*(float *)(&DAT_01027c2c + iVar4) = (float)*(int *)(unaff_EBP + 8) * 0.00009091;
|
|
_lclose(hFile);
|
|
psVar3 = FUN_01006b38(*(DWORD **)(unaff_EBP + -8));
|
|
*(short **)(&DAT_01027c20 + iVar4) = psVar3;
|
|
}
|
|
}
|
|
}
|
|
*(int *)(iVar4 + 0x1027c28) = *(int *)(iVar4 + 0x1027c28) + 1;
|
|
return (int)param_2;
|
|
}
|
|
|
|
|
|
|
|
void FUN_0100911d(void)
|
|
|
|
{
|
|
int iVar1;
|
|
int **ppiVar2;
|
|
|
|
iVar1 = 1;
|
|
if (1 < DAT_010236d8) {
|
|
ppiVar2 = (int **)&DAT_01027c34;
|
|
do {
|
|
FUN_01006b64(*ppiVar2);
|
|
iVar1 = iVar1 + 1;
|
|
ppiVar2 = ppiVar2 + 5;
|
|
} while (iVar1 < DAT_010236d8);
|
|
}
|
|
iVar1 = *(int *)(iVar1 * 0x14 + 0x1027c30);
|
|
if (iVar1 != 0) {
|
|
FUN_01005541(iVar1);
|
|
}
|
|
DAT_010236d8 = 1;
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
|
|
|
|
void FUN_0100916a(short *param_1)
|
|
|
|
{
|
|
short *psVar1;
|
|
int iVar2;
|
|
short sVar3;
|
|
|
|
sVar3 = 0;
|
|
DAT_01027c0c = param_1;
|
|
if (0 < *param_1) {
|
|
do {
|
|
psVar1 = (short *)FUN_01006270((int)param_1,(int)sVar3,0);
|
|
param_1 = DAT_01027c0c;
|
|
if (((psVar1 != (short *)0x0) && (*psVar1 == 0xca)) &&
|
|
(_DAT_01027c10 = DAT_01027c0c, DAT_010236d8 < 0x41)) {
|
|
iVar2 = DAT_010236d8 * 0x14;
|
|
*(undefined4 *)(&DAT_01027c20 + iVar2) = 0;
|
|
DAT_010236d8 = DAT_010236d8 + 1;
|
|
*(int *)(iVar2 + 0x1027c24) = (int)sVar3;
|
|
}
|
|
sVar3 = sVar3 + 1;
|
|
} while (sVar3 < *param_1);
|
|
}
|
|
_DAT_01028134 = DAT_010236d8;
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_010091eb(LPCSTR param_1)
|
|
|
|
{
|
|
FUN_01006369(DAT_01027c0c,param_1);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
int FUN_01009207(int param_1)
|
|
|
|
{
|
|
int iVar1;
|
|
short *psVar2;
|
|
|
|
if (param_1 < 0) {
|
|
iVar1 = FUN_01008f7a(0,0x11);
|
|
}
|
|
else {
|
|
psVar2 = (short *)FUN_01006270(DAT_01027c0c,param_1,10);
|
|
if ((psVar2 == (short *)0x0) || (*psVar2 != 100)) {
|
|
iVar1 = 1;
|
|
}
|
|
else {
|
|
iVar1 = (int)psVar2[1];
|
|
}
|
|
}
|
|
return iVar1;
|
|
}
|
|
|
|
|
|
|
|
undefined4 FUN_01009249(int param_1,float *param_2)
|
|
|
|
{
|
|
short sVar1;
|
|
short *psVar2;
|
|
undefined4 uVar3;
|
|
uint uVar4;
|
|
float fVar5;
|
|
short sVar6;
|
|
float *pfVar7;
|
|
float *pfVar8;
|
|
int iVar9;
|
|
|
|
if (param_1 < 0) {
|
|
iVar9 = 0;
|
|
}
|
|
else {
|
|
psVar2 = (short *)FUN_01006270(DAT_01027c0c,param_1,0);
|
|
if (psVar2 == (short *)0x0) {
|
|
iVar9 = 1;
|
|
}
|
|
else {
|
|
if (*psVar2 == 300) {
|
|
pfVar7 = (float *)FUN_01006270(DAT_01027c0c,param_1,0xb);
|
|
if (pfVar7 == (float *)0x0) {
|
|
uVar3 = FUN_01008f7a(0xb,0x15);
|
|
return uVar3;
|
|
}
|
|
uVar4 = FUN_010062fe(DAT_01027c0c,param_1,0xb);
|
|
param_1 = 0;
|
|
sVar6 = (short)(uVar4 >> 2);
|
|
if (0 < sVar6) {
|
|
do {
|
|
pfVar8 = pfVar7 + 1;
|
|
floor((double)*pfVar7);
|
|
sVar1 = _ftol();
|
|
if (sVar1 == 0x12d) {
|
|
*param_2 = *pfVar8;
|
|
}
|
|
else {
|
|
if (sVar1 == 0x12e) {
|
|
param_2[1] = *pfVar8;
|
|
}
|
|
else {
|
|
if (sVar1 != 0x130) {
|
|
uVar3 = FUN_01008f7a(9,0x15);
|
|
return uVar3;
|
|
}
|
|
floor((double)*pfVar8);
|
|
sVar1 = _ftol();
|
|
fVar5 = (float)FUN_0100901f((int)sVar1);
|
|
param_2[4] = fVar5;
|
|
}
|
|
}
|
|
pfVar7 = pfVar7 + 2;
|
|
param_1 = param_1 + 2;
|
|
} while ((short)param_1 < sVar6);
|
|
}
|
|
return 0;
|
|
}
|
|
iVar9 = 3;
|
|
}
|
|
}
|
|
uVar3 = FUN_01008f7a(iVar9,0x15);
|
|
return uVar3;
|
|
}
|
|
|
|
|
|
|
|
undefined4 FUN_01009349(int param_1,float *param_2)
|
|
|
|
{
|
|
short sVar1;
|
|
short sVar2;
|
|
short *psVar3;
|
|
undefined4 uVar4;
|
|
uint uVar5;
|
|
float fVar6;
|
|
float *pfVar7;
|
|
float *pfVar8;
|
|
int iVar9;
|
|
|
|
if (param_1 < 0) {
|
|
iVar9 = 0;
|
|
LAB_01009381:
|
|
uVar4 = FUN_01008f7a(iVar9,0x14);
|
|
return uVar4;
|
|
}
|
|
psVar3 = (short *)FUN_01006270(DAT_01027c0c,param_1,0);
|
|
if (psVar3 == (short *)0x0) {
|
|
iVar9 = 1;
|
|
goto LAB_01009381;
|
|
}
|
|
if (*psVar3 != 400) {
|
|
iVar9 = 4;
|
|
goto LAB_01009381;
|
|
}
|
|
pfVar7 = (float *)FUN_01006270(DAT_01027c0c,param_1,0xb);
|
|
if (pfVar7 == (float *)0x0) {
|
|
iVar9 = 0xb;
|
|
LAB_010093a4:
|
|
uVar4 = FUN_01008f7a(iVar9,0x14);
|
|
return uVar4;
|
|
}
|
|
uVar5 = FUN_010062fe(DAT_01027c0c,param_1,0xb);
|
|
sVar1 = (short)(uVar5 >> 2);
|
|
param_1 = 0;
|
|
if (sVar1 < 1) {
|
|
return 0;
|
|
}
|
|
LAB_010093d4:
|
|
pfVar8 = pfVar7 + 1;
|
|
floor((double)*pfVar7);
|
|
sVar2 = _ftol();
|
|
if (sVar2 == 0x191) {
|
|
*param_2 = *pfVar8;
|
|
}
|
|
else {
|
|
if (sVar2 == 0x192) {
|
|
param_2[1] = *pfVar8;
|
|
goto LAB_0100945c;
|
|
}
|
|
if (sVar2 == 0x193) {
|
|
param_2[2] = *pfVar8;
|
|
goto LAB_0100945c;
|
|
}
|
|
if (sVar2 == 0x194) {
|
|
param_2[3] = *pfVar8;
|
|
pfVar8 = pfVar7 + 3;
|
|
param_2[4] = pfVar7[2];
|
|
param_1 = param_1 + 4;
|
|
param_2[5] = *pfVar8;
|
|
goto LAB_01009461;
|
|
}
|
|
if (sVar2 == 0x195) {
|
|
param_2[6] = *pfVar8;
|
|
goto LAB_0100945c;
|
|
}
|
|
if (sVar2 != 0x196) {
|
|
iVar9 = 10;
|
|
goto LAB_010093a4;
|
|
}
|
|
floor((double)*pfVar8);
|
|
sVar2 = _ftol();
|
|
fVar6 = (float)FUN_0100901f((int)sVar2);
|
|
param_2[7] = fVar6;
|
|
}
|
|
LAB_0100945c:
|
|
param_1 = param_1 + 2;
|
|
LAB_01009461:
|
|
pfVar7 = pfVar8 + 1;
|
|
if (sVar1 <= (short)param_1) {
|
|
return 0;
|
|
}
|
|
goto LAB_010093d4;
|
|
}
|
|
|
|
|
|
|
|
int FUN_01009486(int param_1,int param_2)
|
|
|
|
{
|
|
int iVar1;
|
|
short *psVar2;
|
|
|
|
iVar1 = FUN_01009207(param_1);
|
|
if ((short)iVar1 < 1) {
|
|
LAB_0100949d:
|
|
iVar1 = 0xc;
|
|
}
|
|
else {
|
|
psVar2 = (short *)FUN_01006270(DAT_01027c0c,param_1,0);
|
|
if (psVar2 != (short *)0x0) {
|
|
if (*psVar2 != 200) {
|
|
iVar1 = 5;
|
|
goto LAB_010094f6;
|
|
}
|
|
if ((int)(short)iVar1 < param_2) goto LAB_0100949d;
|
|
if (param_2 == 0) {
|
|
return param_1;
|
|
}
|
|
psVar2 = (short *)FUN_01006270(DAT_01027c0c,param_1 + param_2,0);
|
|
if (psVar2 != (short *)0x0) {
|
|
if (*psVar2 == 0xc9) {
|
|
return param_1 + param_2;
|
|
}
|
|
iVar1 = 6;
|
|
goto LAB_010094f6;
|
|
}
|
|
}
|
|
iVar1 = 1;
|
|
}
|
|
LAB_010094f6:
|
|
iVar1 = FUN_01008f7a(iVar1,0x18);
|
|
return iVar1;
|
|
}
|
|
|
|
|
|
|
|
undefined4 FUN_0100950a(int param_1,int param_2,float *param_3)
|
|
|
|
{
|
|
short sVar1;
|
|
short sVar2;
|
|
undefined4 uVar3;
|
|
int iVar4;
|
|
float fVar5;
|
|
uint uVar6;
|
|
int iVar7;
|
|
short sVar8;
|
|
short *psVar9;
|
|
short *psVar10;
|
|
bool in_PF;
|
|
|
|
FUN_01008fe0(param_3);
|
|
if (param_1 < 0) {
|
|
uVar3 = FUN_01008f7a(0,0x12);
|
|
}
|
|
else {
|
|
iVar4 = FUN_01009486(param_1,param_2);
|
|
if (iVar4 < 0) {
|
|
uVar3 = FUN_01008f7a(0x10,0x12);
|
|
}
|
|
else {
|
|
fVar5 = (float)FUN_01006270(DAT_01027c0c,iVar4,1);
|
|
param_3[0x10] = fVar5;
|
|
fVar5 = (float)FUN_01006270(DAT_01027c0c,iVar4,0xc);
|
|
param_3[0x11] = fVar5;
|
|
if (fVar5 != 0.00000000) {
|
|
*(int *)((int)fVar5 + 6) = (int)fVar5 + 0xe;
|
|
*(undefined4 *)((int)param_3[0x11] + 10) = *(undefined4 *)((int)param_3[0x11] + 6);
|
|
}
|
|
psVar10 = (short *)FUN_01006270(DAT_01027c0c,iVar4,10);
|
|
if (psVar10 != (short *)0x0) {
|
|
uVar6 = FUN_010062fe(DAT_01027c0c,iVar4,10);
|
|
sVar8 = 0;
|
|
sVar2 = (short)(uVar6 >> 1);
|
|
if (0 < sVar2) {
|
|
do {
|
|
sVar1 = *psVar10;
|
|
psVar9 = psVar10 + 1;
|
|
if (sVar1 < 0x197) {
|
|
if (sVar1 == 0x196) {
|
|
fVar5 = (float)FUN_0100901f((int)*psVar9);
|
|
param_3[0xc] = fVar5;
|
|
}
|
|
else {
|
|
if (sVar1 == 100) {
|
|
if (param_2 != 0) {
|
|
iVar4 = 7;
|
|
goto LAB_01009604;
|
|
}
|
|
}
|
|
else {
|
|
if (sVar1 == 300) {
|
|
iVar7 = FUN_01009249((int)*psVar9,param_3);
|
|
if (iVar7 != 0) {
|
|
iVar4 = 0xf;
|
|
goto LAB_01009604;
|
|
}
|
|
}
|
|
else {
|
|
if (sVar1 == 0x130) {
|
|
fVar5 = (float)FUN_0100901f((int)*psVar9);
|
|
param_3[4] = fVar5;
|
|
}
|
|
else {
|
|
if (sVar1 != 400) goto LAB_01009733;
|
|
iVar7 = FUN_01009349((int)*psVar9,param_3 + 5);
|
|
if (iVar7 != 0) {
|
|
iVar4 = 0xe;
|
|
goto LAB_01009604;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
LAB_01009697:
|
|
psVar10 = psVar10 + 2;
|
|
sVar8 = sVar8 + 2;
|
|
}
|
|
else {
|
|
if (sVar1 == 0x25a) {
|
|
*(uint *)(param_3 + 0xd) = (uint)param_3[0xd] | 1 << (*(byte *)psVar9 & 0x1f);
|
|
goto LAB_01009697;
|
|
}
|
|
if (sVar1 == 0x44c) {
|
|
fVar5 = (float)FUN_0100901f((int)*psVar9);
|
|
param_3[0xe] = fVar5;
|
|
goto LAB_01009697;
|
|
}
|
|
if (sVar1 == 0x44d) {
|
|
fVar5 = (float)FUN_0100901f((int)*psVar9);
|
|
param_3[0xf] = fVar5;
|
|
goto LAB_01009697;
|
|
}
|
|
if (sVar1 != 0x5dc) {
|
|
LAB_01009733:
|
|
iVar4 = 9;
|
|
goto LAB_01009604;
|
|
}
|
|
psVar10 = psVar10 + 9;
|
|
sVar8 = sVar8 + 9;
|
|
}
|
|
} while (sVar8 < sVar2);
|
|
}
|
|
}
|
|
if (param_3[0xd] == 0.00000000) {
|
|
param_3[0xd] = 0.00000000;
|
|
}
|
|
iVar7 = FUN_01006270(DAT_01027c0c,iVar4,0xb);
|
|
if ((iVar7 != 0) && (!in_PF)) {
|
|
uVar6 = FUN_010062fe(DAT_01027c0c,iVar4,0xb);
|
|
*(int *)(param_3 + 2) = (int)(short)(uVar6 >> 2) / 2 + -2;
|
|
floor((double)*(float *)(iVar7 + 4));
|
|
sVar2 = _ftol();
|
|
if (sVar2 == 0) {
|
|
param_3[2] = 0.00000000;
|
|
}
|
|
else {
|
|
if (sVar2 == 1) {
|
|
param_3[2] = 0.00000000;
|
|
}
|
|
else {
|
|
if ((float)(int)sVar2 != param_3[2]) {
|
|
iVar4 = 8;
|
|
LAB_01009604:
|
|
uVar3 = FUN_01008f7a(iVar4,0x12);
|
|
return uVar3;
|
|
}
|
|
}
|
|
}
|
|
*(int *)(param_3 + 3) = iVar7 + 8;
|
|
}
|
|
uVar3 = 0;
|
|
}
|
|
}
|
|
return uVar3;
|
|
}
|
|
|
|
|
|
|
|
undefined4 FUN_0100975d(int param_1)
|
|
|
|
{
|
|
undefined4 uVar1;
|
|
|
|
if (param_1 < 0) {
|
|
FUN_01008f7a(0,0x13);
|
|
uVar1 = 0;
|
|
}
|
|
else {
|
|
uVar1 = FUN_01006270(DAT_01027c0c,param_1,3);
|
|
}
|
|
return uVar1;
|
|
}
|
|
|
|
|
|
|
|
float * FUN_0100978e(int param_1,int param_2,int param_3)
|
|
|
|
{
|
|
short sVar1;
|
|
int iVar2;
|
|
float *pfVar3;
|
|
short sVar4;
|
|
|
|
sVar4 = 0;
|
|
if (param_1 < 0) {
|
|
FUN_01008f7a(0,0x16);
|
|
}
|
|
else {
|
|
iVar2 = FUN_01009486(param_1,param_2);
|
|
if (iVar2 < 0) {
|
|
FUN_01008f7a(0x10,0x16);
|
|
}
|
|
else {
|
|
while (pfVar3 = (float *)FUN_0100631c(DAT_01027c0c,iVar2,0xb,(int)sVar4),
|
|
pfVar3 != (float *)0x0) {
|
|
floor((double)*pfVar3);
|
|
sVar1 = _ftol();
|
|
if ((int)sVar1 == param_3) {
|
|
return pfVar3 + 1;
|
|
}
|
|
sVar4 = sVar4 + 1;
|
|
}
|
|
FUN_01008f7a(0xd,0x16);
|
|
}
|
|
}
|
|
return (float *)0x0;
|
|
}
|
|
|
|
|
|
|
|
short * FUN_0100981a(int param_1,int param_2,int *param_3)
|
|
|
|
{
|
|
short *psVar1;
|
|
int iVar2;
|
|
short sVar3;
|
|
|
|
sVar3 = 0;
|
|
if (param_1 < 0) {
|
|
FUN_01008f7a(0,0x16);
|
|
}
|
|
else {
|
|
while (psVar1 = (short *)FUN_0100631c(DAT_01027c0c,param_1,10,(int)sVar3),
|
|
psVar1 != (short *)0x0) {
|
|
if ((int)*psVar1 == param_2) {
|
|
iVar2 = FUN_010062fe(DAT_01027c0c,param_1,10);
|
|
*param_3 = iVar2 / 2 + -1;
|
|
return psVar1 + 1;
|
|
}
|
|
sVar3 = sVar3 + 1;
|
|
}
|
|
FUN_01008f7a(2,0x17);
|
|
*param_3 = 0;
|
|
}
|
|
return (short *)0x0;
|
|
}
|
|
|
|
|
|
|
|
float10 FUN_01009895(int param_1)
|
|
|
|
{
|
|
float10 fVar1;
|
|
|
|
if (param_1 < 1) {
|
|
fVar1 = (float10)0.00000000;
|
|
}
|
|
else {
|
|
FUN_01006c26(*(int *)(&DAT_01027c20 + param_1 * 0x14),0,7,5,0);
|
|
fVar1 = (float10)*(float *)(&DAT_01027c2c + param_1 * 0x14);
|
|
}
|
|
return fVar1;
|
|
}
|
|
|
|
|
|
|
|
undefined4 * __thiscall FUN_010098d3(void *this,int param_1,undefined4 param_2)
|
|
|
|
{
|
|
undefined4 uVar1;
|
|
|
|
uVar1 = FUN_01012ebe(param_1);
|
|
*(undefined4 *)((int)this + 4) = uVar1;
|
|
*(undefined4 *)this = param_2;
|
|
return (undefined4 *)this;
|
|
}
|
|
|
|
|
|
|
|
void __fastcall FUN_010098f7(int *param_1)
|
|
|
|
{
|
|
uint *puVar1;
|
|
|
|
puVar1 = FUN_01012ee8((uint *)param_1[1],*param_1);
|
|
*(uint **)(param_1 + 1) = puVar1;
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_01009910(undefined4 param_1,int *param_2)
|
|
|
|
{
|
|
int iVar1;
|
|
|
|
iVar1 = param_2[8];
|
|
param_2[8] = -iVar1 + 1;
|
|
FUN_010139b6(*param_2,param_2[-iVar1 + 2]);
|
|
iVar1 = FUN_010074b7(param_2[param_2[8] + 5],(int)param_2,(int)FUN_01009910);
|
|
param_2[7] = iVar1;
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_01009950(int *param_1,int param_2)
|
|
|
|
{
|
|
param_1[8] = param_2;
|
|
FUN_01009910(0,param_1);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_0100996f(int *param_1,int param_2)
|
|
|
|
{
|
|
if (param_1[7] != 0) {
|
|
FUN_01007659(param_1[7]);
|
|
}
|
|
param_1[7] = 0;
|
|
if (-1 < param_2) {
|
|
param_1[8] = param_2;
|
|
FUN_010139b6(*param_1,param_1[param_2 + 1]);
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void __fastcall FUN_010099a8(int param_1)
|
|
|
|
{
|
|
if (*(int *)(param_1 + 0x6e) != 0) {
|
|
FUN_01007659(*(int *)(param_1 + 0x6e));
|
|
}
|
|
if (*(int *)(param_1 + 0x72) != 0) {
|
|
FUN_01007659(*(int *)(param_1 + 0x72));
|
|
}
|
|
if (*(int *)(param_1 + 0x52) != 0) {
|
|
FUN_0100996f((int *)(param_1 + 0x2a),-1);
|
|
}
|
|
*(undefined4 *)(param_1 + 0x7a) = 0x3f800000;
|
|
*(undefined4 *)(param_1 + 0x6e) = 0;
|
|
*(undefined4 *)(param_1 + 0x72) = 0;
|
|
*(undefined4 *)(param_1 + 0x4e) = 0;
|
|
*(undefined4 *)(param_1 + 0x62) = 0;
|
|
*(undefined4 *)(param_1 + 0x56) = 0;
|
|
*(undefined4 *)(param_1 + 0x5a) = 0;
|
|
*(undefined4 *)(param_1 + 0x52) = 0;
|
|
*(undefined4 *)(param_1 + 0x5e) = 0;
|
|
FUN_010139b6(*(int *)(param_1 + 0x1a),0);
|
|
*(undefined4 *)(param_1 + 0x2a) = *(undefined4 *)(param_1 + 0x1a);
|
|
*(undefined4 *)(param_1 + 0x2e) = 0;
|
|
if (*(int *)(param_1 + 0x22) != 0) {
|
|
*(undefined4 *)(param_1 + 0x32) = *(undefined4 *)(*(int *)(*(int *)(param_1 + 0x22) + 4) + 8);
|
|
}
|
|
*(undefined4 *)(param_1 + 0x3a) = 0;
|
|
*(undefined4 *)(param_1 + 0x36) = 0;
|
|
*(undefined4 *)(param_1 + 6) = 0;
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_01009a2a(undefined4 param_1,undefined **param_2)
|
|
|
|
{
|
|
if (*(int *)((int)param_2 + 0x52) != 0) {
|
|
FUN_0100996f((int *)((int)param_2 + 0x2a),-1);
|
|
}
|
|
FUN_010139b6(*(int *)((int)param_2 + 0x1a),
|
|
*(int *)((int)param_2 + *(int *)((int)param_2 + 0x4e) * 4 + 0x2e));
|
|
*(undefined4 *)((int)param_2 + 0x56) = 0;
|
|
*(undefined4 *)((int)param_2 + 0x5a) = 0;
|
|
*(undefined4 *)((int)param_2 + 0x52) = 0;
|
|
*(undefined4 *)((int)param_2 + 0x6e) = 0;
|
|
if (*(int *)((int)param_2 + 0x5e) != 0) {
|
|
*(undefined4 *)((int)param_2 + 0x5e) = 0;
|
|
(**(code **)*param_2)(0x14,0);
|
|
}
|
|
if (*(int *)((int)param_2 + 0x12) != 0) {
|
|
FUN_01011ec9(0x3c,param_2);
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
int __thiscall FUN_01009a8f(int iParm1,float param_1)
|
|
|
|
{
|
|
int iVar1;
|
|
bool in_PF;
|
|
|
|
*(undefined4 *)(iParm1 + 0x3e) = *(undefined4 *)(iParm1 + 0x66);
|
|
*(undefined4 *)(iParm1 + 0x42) = *(undefined4 *)(iParm1 + 0x6a);
|
|
iVar1 = *(int *)(iParm1 + 0x6e);
|
|
iVar1._2_2_ = (undefined2)((uint)iVar1 >> 0x10);
|
|
if (iVar1 != 0) {
|
|
iVar1 = FUN_01007659(iVar1);
|
|
iVar1._2_2_ = (undefined2)((uint)iVar1 >> 0x10);
|
|
}
|
|
*(undefined4 *)(iParm1 + 0x6e) = 0;
|
|
iVar1 = CONCAT22(iVar1._2_2_,
|
|
(ushort)(param_1 < 0.00000000) << 8 | (ushort)(param_1 == 0.00000000) << 0xe);
|
|
if (in_PF) {
|
|
iVar1 = FUN_010074b7(param_1,iParm1,(int)FUN_01009a2a);
|
|
*(int *)(iParm1 + 0x6e) = iVar1;
|
|
}
|
|
return iVar1;
|
|
}
|
|
|
|
|
|
|
|
undefined4 __thiscall FUN_01009ae3(void *this,int param_1,float param_2)
|
|
|
|
{
|
|
void *pvVar1;
|
|
int iVar2;
|
|
undefined4 uVar3;
|
|
int param_1_00;
|
|
undefined4 *puVar4;
|
|
uint param_1_01;
|
|
float param_2_00;
|
|
|
|
if (0x3fc < param_1) {
|
|
if (param_1 != 0x400) {
|
|
return 0;
|
|
}
|
|
(**(code **)(*(int *)this + 0x14))();
|
|
param_1_00 = 0;
|
|
if (*(int *)(*(int *)((int)this + 0x1e) + 0xd6) < 1) {
|
|
return 0;
|
|
}
|
|
puVar4 = (undefined4 *)((int)this + 0x92);
|
|
do {
|
|
puVar4[-3] = *(undefined4 *)((int)this + 0x52);
|
|
*puVar4 = *(undefined4 *)((int)this + 0x62);
|
|
puVar4[-4] = *(undefined4 *)((int)this + 0x4e);
|
|
puVar4[-5] = *(undefined4 *)((int)this + 6);
|
|
param_1_00 = param_1_00 + 1;
|
|
puVar4 = puVar4 + 6;
|
|
} while (param_1_00 < *(int *)(*(int *)((int)this + 0x1e) + 0xd6));
|
|
return 0;
|
|
}
|
|
switch(param_1) {
|
|
case 0:
|
|
*(undefined4 *)((int)this + 0x4e) = 0;
|
|
if (*(int *)((int)this + 0x52) != 0) {
|
|
return 0;
|
|
}
|
|
if (*(int *)((int)this + 0x56) != 0) {
|
|
return 0;
|
|
}
|
|
if (*(int *)((int)this + 0x5a) != 0) {
|
|
return 0;
|
|
}
|
|
param_1_00 = *(int *)((int)this + 0x2e);
|
|
goto LAB_01009d06;
|
|
case 1:
|
|
*(undefined4 *)((int)this + 0x4e) = 1;
|
|
if (*(int *)((int)this + 0x52) != 0) {
|
|
return 0;
|
|
}
|
|
if (*(int *)((int)this + 0x56) != 0) {
|
|
return 0;
|
|
}
|
|
if (*(int *)((int)this + 0x5a) != 0) {
|
|
return 0;
|
|
}
|
|
param_1_00 = *(int *)((int)this + 0x32);
|
|
goto LAB_01009d06;
|
|
case 2:
|
|
goto switchD_01009b0b_caseD_2;
|
|
case 3:
|
|
return *(undefined4 *)((int)this + 0x52);
|
|
case 4:
|
|
FUN_01009a8f();
|
|
if ((*(int *)((int)this + 0x52) == 0) || (*(int *)((int)this + 0x46) == 0)) {
|
|
*(undefined4 *)((int)this + 0x52) = 1;
|
|
*(undefined4 *)((int)this + 0x5a) = 0;
|
|
*(undefined4 *)((int)this + 0x56) = 0;
|
|
*(undefined4 *)((int)this + 0x5e) = 0;
|
|
FUN_01009950((int *)((int)this + 0x2a),*(int *)((int)this + 0x4e));
|
|
}
|
|
break;
|
|
case 5:
|
|
*(float *)((int)this + 0x3e) = param_2 * *(float *)((int)this + 0x66);
|
|
*(float *)((int)this + 0x42) = param_2 * *(float *)((int)this + 0x6a);
|
|
break;
|
|
case 6:
|
|
*(undefined4 *)((int)this + 0x3e) = *(undefined4 *)((int)this + 0x66);
|
|
*(undefined4 *)((int)this + 0x42) = *(undefined4 *)((int)this + 0x6a);
|
|
break;
|
|
case 7:
|
|
if (*(int *)((int)this + 0x52) == 0) {
|
|
FUN_01009950((int *)((int)this + 0x2a),*(int *)((int)this + 0x4e));
|
|
}
|
|
*(undefined4 *)((int)this + 0x52) = 1;
|
|
*(undefined4 *)((int)this + 0x5a) = 0;
|
|
*(undefined4 *)((int)this + 0x5e) = 0;
|
|
LAB_01009c26:
|
|
*(undefined4 *)((int)this + 0x56) = 0;
|
|
goto LAB_01009c29;
|
|
case 8:
|
|
if (*(int *)((int)this + 0x56) == 0) {
|
|
if (*(int *)((int)this + 0x52) == 0) {
|
|
FUN_010139b6(*(int *)((int)this + 0x1a),*(int *)((int)this + 0x2e));
|
|
}
|
|
else {
|
|
FUN_0100996f((int *)((int)this + 0x2a),0);
|
|
*(undefined4 *)((int)this + 0x52) = 0;
|
|
}
|
|
*(undefined4 *)((int)this + 0x56) = 1;
|
|
*(undefined4 *)((int)this + 0x5a) = 0;
|
|
}
|
|
goto LAB_01009c29;
|
|
case 9:
|
|
if (*(int *)((int)this + 0x5a) == 0) {
|
|
if (*(int *)((int)this + 0x52) == 0) {
|
|
FUN_010139b6(*(int *)((int)this + 0x1a),*(int *)((int)this + 0x32));
|
|
}
|
|
else {
|
|
FUN_0100996f((int *)((int)this + 0x2a),1);
|
|
*(undefined4 *)((int)this + 0x52) = 0;
|
|
}
|
|
*(undefined4 *)((int)this + 0x5a) = 1;
|
|
goto LAB_01009c26;
|
|
}
|
|
LAB_01009c29:
|
|
FUN_01009a8f();
|
|
break;
|
|
case 10:
|
|
break;
|
|
case 0xb:
|
|
floor((double)param_2);
|
|
iVar2 = _ftol();
|
|
*(int *)((int)this + 0x62) = iVar2;
|
|
param_1_00 = *(int *)(*(int *)(*(int *)((int)this + 0x22) + 4) + 4);
|
|
if (param_1_00 < iVar2) {
|
|
*(int *)((int)this + 0x62) = param_1_00;
|
|
}
|
|
param_1_00 = 0;
|
|
if (*(int *)((int)this + 0x62) < 0) {
|
|
*(undefined4 *)((int)this + 0x62) = 0;
|
|
}
|
|
*(undefined4 *)((int)this + 0x2e) = 0;
|
|
*(undefined4 *)((int)this + 0x32) =
|
|
*(undefined4 *)
|
|
(*(int *)(*(int *)((int)this + 0x22) + 4) + 8 + *(int *)((int)this + 0x62) * 4);
|
|
if (*(int *)((int)this + 0x52) == 0) {
|
|
if (*(int *)((int)this + 0x56) == 0) {
|
|
if (*(int *)((int)this + 0x5a) == 0) {
|
|
param_1_00 = *(int *)((int)this + 0x4e);
|
|
}
|
|
else {
|
|
param_1_00 = 1;
|
|
}
|
|
}
|
|
}
|
|
else {
|
|
param_1_00 = *(int *)((int)this + 0x4a);
|
|
}
|
|
param_1_00 = *(int *)((int)this + param_1_00 * 4 + 0x2e);
|
|
goto LAB_01009d06;
|
|
case 0xc:
|
|
param_2_00 = *(float *)(*(int *)(*(int *)((int)this + 0x22) + 4) + 4);
|
|
param_2 = (float)(*(int *)((int)this + 0x62) + 1);
|
|
if ((int)param_2_00 < (int)param_2) {
|
|
param_2 = param_2_00;
|
|
}
|
|
goto LAB_01009c53;
|
|
case 0xd:
|
|
param_2 = (float)(*(int *)((int)this + 0x62) + -1);
|
|
if ((int)param_2 < 0) {
|
|
param_2 = 0.00000000;
|
|
}
|
|
LAB_01009c53:
|
|
param_2 = (float)(int)param_2;
|
|
param_1_00 = 0xb;
|
|
goto LAB_01009db8;
|
|
case 0xe:
|
|
if (*(int *)((int)this + 0x6e) != 0) {
|
|
FUN_01007659(*(int *)((int)this + 0x6e));
|
|
}
|
|
*(undefined4 *)((int)this + 0x6e) = 0;
|
|
if (*(int *)((int)this + 0x52) != 0) {
|
|
FUN_0100996f((int *)((int)this + 0x2a),-1);
|
|
}
|
|
*(undefined4 *)((int)this + 0x52) = 0;
|
|
*(undefined4 *)((int)this + 0x56) = 0;
|
|
*(undefined4 *)((int)this + 0x5a) = 0;
|
|
param_1_00 = *(int *)((int)this + *(int *)((int)this + 0x4e) * 4 + 0x2e);
|
|
LAB_01009d06:
|
|
FUN_010139b6(*(int *)((int)this + 0x1a),param_1_00);
|
|
break;
|
|
case 0xf:
|
|
*(undefined4 *)((int)this + 0x5e) = 0;
|
|
if (*(int *)((int)this + 0x72) != 0) {
|
|
FUN_01007659(*(int *)((int)this + 0x72));
|
|
}
|
|
*(undefined4 *)((int)this + 0x72) = 0;
|
|
FUN_01009ae3(this,1,0.00000000);
|
|
param_1_00 = 7;
|
|
goto LAB_01009db8;
|
|
case 0x10:
|
|
if (*(int *)((int)this + 0x72) != 0) {
|
|
FUN_01007659(*(int *)((int)this + 0x72));
|
|
}
|
|
*(undefined4 *)((int)this + 0x72) = 0;
|
|
FUN_01009ae3(this,7,param_2);
|
|
*(undefined4 *)((int)this + 0x5e) = 1;
|
|
break;
|
|
case 0x11:
|
|
floor((double)param_2);
|
|
param_1_00 = _ftol();
|
|
param_1_01 = (uint)(param_1_00 != 0);
|
|
param_2_00 = 0.00000000;
|
|
goto LAB_01009d88;
|
|
case 0x12:
|
|
FUN_01009ae3(this,0x11,param_2);
|
|
param_1_01 = 0xe;
|
|
param_2_00 = 0.00000000;
|
|
goto LAB_01009d88;
|
|
case 0x13:
|
|
param_1_00 = 1;
|
|
goto LAB_01009da9;
|
|
case 0x14:
|
|
param_1_00 = 0;
|
|
LAB_01009da9:
|
|
FUN_01009ae3(this,param_1_00,0.00000000);
|
|
param_1_00 = 0xe;
|
|
param_2 = 0.00000000;
|
|
goto LAB_01009db8;
|
|
case 0x15:
|
|
param_2_00 = (float)(uint)(*(int *)((int)this + 0x4e) == 0);
|
|
param_1_01 = 0x11;
|
|
goto LAB_01009d88;
|
|
case 0x16:
|
|
param_2_00 = (float)(uint)(*(int *)((int)this + 0x4e) == 0);
|
|
param_1_01 = 0x12;
|
|
LAB_01009d88:
|
|
FUN_01009ae3(this,param_1_01,param_2_00);
|
|
switchD_01009b0b_caseD_2:
|
|
return *(undefined4 *)((int)this + 0x4e);
|
|
case 0x17:
|
|
floor((double)param_2);
|
|
uVar3 = _ftol();
|
|
*(undefined4 *)((int)this + 6) = uVar3;
|
|
break;
|
|
default:
|
|
pvVar1 = (void *)((int)this + *(int *)(*(int *)((int)this + 0x1e) + 0xda) * 0x18);
|
|
*(undefined4 *)((int)pvVar1 + 0x86) = *(undefined4 *)((int)this + 0x52);
|
|
*(undefined4 *)((int)pvVar1 + 0x92) = *(undefined4 *)((int)this + 0x62);
|
|
*(undefined4 *)((int)pvVar1 + 0x82) = *(undefined4 *)((int)this + 0x4e);
|
|
*(undefined4 *)((int)pvVar1 + 0x7e) = *(undefined4 *)((int)this + 6);
|
|
(**(code **)(*(int *)this + 0x14))();
|
|
floor((double)param_2);
|
|
param_1_00 = _ftol();
|
|
pvVar1 = (void *)((int)this + param_1_00 * 0x18);
|
|
*(undefined4 *)((int)this + 0x52) = *(undefined4 *)((int)pvVar1 + 0x86);
|
|
*(undefined4 *)((int)this + 0x62) = *(undefined4 *)((int)pvVar1 + 0x92);
|
|
*(undefined4 *)((int)this + 0x4e) = *(undefined4 *)((int)pvVar1 + 0x82);
|
|
*(undefined4 *)((int)this + 6) = *(undefined4 *)((int)pvVar1 + 0x7e);
|
|
if (*(int *)((int)this + 0x62) != 0) {
|
|
FUN_01009ae3(this,0xb,(float)*(int *)((int)this + 0x62));
|
|
}
|
|
if (*(int *)((int)this + 0x4e) != 0) {
|
|
FUN_01009ae3(this,1,0.00000000);
|
|
}
|
|
if (*(int *)((int)this + 0x52) == 0) {
|
|
return 0;
|
|
}
|
|
param_2 = 0.00000000;
|
|
param_1_00 = 4;
|
|
LAB_01009db8:
|
|
FUN_01009ae3(this,param_1_00,param_2);
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
|