25559 lines
662 KiB
C
25559 lines
662 KiB
C
#include "pinball.exe.h"
|
|
|
|
|
|
|
|
HDC FUN_01003445(HWND param_1)
|
|
|
|
{
|
|
HDC hdc;
|
|
DWORD DVar1;
|
|
|
|
hdc = GetDC(param_1);
|
|
if (param_1 != (HWND)0x0) {
|
|
DVar1 = GetLayout(hdc);
|
|
if ((DVar1 & 1) != 0) {
|
|
SetLayout(hdc,0);
|
|
}
|
|
}
|
|
return hdc;
|
|
}
|
|
|
|
|
|
|
|
HDC FUN_0100347c(HWND param_1,LPPAINTSTRUCT param_2)
|
|
|
|
{
|
|
HDC hdc;
|
|
DWORD DVar1;
|
|
|
|
hdc = BeginPaint(param_1,param_2);
|
|
if (param_1 != (HWND)0x0) {
|
|
DVar1 = GetLayout(hdc);
|
|
if ((DVar1 & 1) != 0) {
|
|
SetLayout(hdc,0);
|
|
}
|
|
}
|
|
return hdc;
|
|
}
|
|
|
|
|
|
|
|
void FUN_010034b6(LPCSTR param_1)
|
|
|
|
{
|
|
int iVar1;
|
|
|
|
iVar1 = lstrlenA(param_1);
|
|
DAT_010248a0 = FUN_010054c2(iVar1 + 1);
|
|
if (DAT_010248a0 != (int *)0x0) {
|
|
lstrcpyA((LPSTR)DAT_010248a0,param_1);
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_010034e7(void)
|
|
|
|
{
|
|
if (DAT_010248a0 != 0) {
|
|
FUN_01005541(DAT_010248a0);
|
|
}
|
|
DAT_010248a0 = 0;
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
int * FUN_01003503(LPCSTR param_1)
|
|
|
|
{
|
|
int *piVar1;
|
|
|
|
if (((DAT_010248a4 != (int *)0x0) ||
|
|
(DAT_010248a4 = FUN_010054c2(2000), piVar1 = DAT_010248a0, DAT_010248a4 != (int *)0x0)) &&
|
|
(lstrcpyA((LPSTR)DAT_010248a4,(LPCSTR)DAT_010248a0), piVar1 = DAT_010248a4,
|
|
param_1 != (LPCSTR)0x0)) {
|
|
lstrcatA((LPSTR)DAT_010248a4,"\\");
|
|
lstrcatA((LPSTR)DAT_010248a4,param_1);
|
|
piVar1 = DAT_010248a4;
|
|
}
|
|
return piVar1;
|
|
}
|
|
|
|
|
|
|
|
void FUN_0100356c(void)
|
|
|
|
{
|
|
if (DAT_010248a4 != 0) {
|
|
FUN_01005541(DAT_010248a4);
|
|
}
|
|
DAT_010248a4 = 0;
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
HKEY FUN_01003588(LPCSTR param_1,LPCSTR param_2,HKEY param_3)
|
|
|
|
{
|
|
int *lpSubKey;
|
|
LSTATUS LVar1;
|
|
DWORD Reserved;
|
|
LPSTR lpClass;
|
|
DWORD dwOptions;
|
|
REGSAM samDesired;
|
|
LPSECURITY_ATTRIBUTES lpSecurityAttributes;
|
|
HKEY *phkResult;
|
|
DWORD *lpdwDisposition;
|
|
DWORD local_c;
|
|
HKEY local_8;
|
|
|
|
local_8 = param_3;
|
|
if (DAT_010248a0 != 0) {
|
|
lpdwDisposition = &local_c;
|
|
phkResult = ¶m_3;
|
|
lpSecurityAttributes = (LPSECURITY_ATTRIBUTES)0x0;
|
|
samDesired = 0xf003f;
|
|
dwOptions = 0;
|
|
lpClass = (LPSTR)0x0;
|
|
Reserved = 0;
|
|
lpSubKey = FUN_01003503(param_1);
|
|
LVar1 = RegCreateKeyExA((HKEY)0x80000001,(LPCSTR)lpSubKey,Reserved,lpClass,dwOptions,samDesired,
|
|
lpSecurityAttributes,(PHKEY)phkResult,lpdwDisposition);
|
|
if (LVar1 == 0) {
|
|
param_1 = (LPCSTR)0x4;
|
|
RegQueryValueExA(param_3,param_2,(LPDWORD)0x0,(LPDWORD)0x0,(LPBYTE)&local_8,(LPDWORD)¶m_1)
|
|
;
|
|
RegCloseKey(param_3);
|
|
}
|
|
FUN_0100356c();
|
|
param_3 = local_8;
|
|
}
|
|
return param_3;
|
|
}
|
|
|
|
|
|
|
|
void FUN_01003601(LPCSTR param_1,LPCSTR param_2,LPBYTE param_3,HKEY param_4,HKEY param_5)
|
|
|
|
{
|
|
HKEY pHVar1;
|
|
int *lpSubKey;
|
|
LSTATUS LVar2;
|
|
DWORD Reserved;
|
|
LPSTR lpClass;
|
|
DWORD dwOptions;
|
|
REGSAM samDesired;
|
|
LPSECURITY_ATTRIBUTES lpSecurityAttributes;
|
|
HKEY *phkResult;
|
|
LPCSTR *lpdwDisposition;
|
|
|
|
pHVar1 = param_5;
|
|
lstrcpynA((LPSTR)param_3,(LPCSTR)param_4,(int)param_5);
|
|
if (DAT_010248a0 != 0) {
|
|
lpdwDisposition = ¶m_1;
|
|
phkResult = ¶m_5;
|
|
lpSecurityAttributes = (LPSECURITY_ATTRIBUTES)0x0;
|
|
samDesired = 0xf003f;
|
|
dwOptions = 0;
|
|
lpClass = (LPSTR)0x0;
|
|
Reserved = 0;
|
|
lpSubKey = FUN_01003503(param_1);
|
|
LVar2 = RegCreateKeyExA((HKEY)0x80000001,(LPCSTR)lpSubKey,Reserved,lpClass,dwOptions,samDesired,
|
|
lpSecurityAttributes,(PHKEY)phkResult,(LPDWORD)lpdwDisposition);
|
|
if (LVar2 == 0) {
|
|
param_4 = pHVar1;
|
|
RegQueryValueExA(param_5,param_2,(LPDWORD)0x0,(LPDWORD)0x0,param_3,(LPDWORD)¶m_4);
|
|
RegCloseKey(param_5);
|
|
}
|
|
FUN_0100356c();
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_0100367c(HKEY param_1,LPCSTR param_2)
|
|
|
|
{
|
|
int *lpSubKey;
|
|
LSTATUS LVar1;
|
|
DWORD Reserved;
|
|
LPSTR lpClass;
|
|
DWORD dwOptions;
|
|
REGSAM samDesired;
|
|
LPSECURITY_ATTRIBUTES lpSecurityAttributes;
|
|
HKEY *phkResult;
|
|
DWORD *lpdwDisposition;
|
|
DWORD local_8;
|
|
|
|
if (DAT_010248a0 != 0) {
|
|
lpdwDisposition = &local_8;
|
|
phkResult = ¶m_1;
|
|
lpSecurityAttributes = (LPSECURITY_ATTRIBUTES)0x0;
|
|
samDesired = 0xf003f;
|
|
dwOptions = 0;
|
|
lpClass = (LPSTR)0x0;
|
|
Reserved = 0;
|
|
lpSubKey = FUN_01003503((LPCSTR)param_1);
|
|
LVar1 = RegCreateKeyExA((HKEY)0x80000001,(LPCSTR)lpSubKey,Reserved,lpClass,dwOptions,samDesired,
|
|
lpSecurityAttributes,(PHKEY)phkResult,lpdwDisposition);
|
|
if (LVar1 == 0) {
|
|
RegSetValueExA(param_1,param_2,0,4,&stack0x0000000c,4);
|
|
RegCloseKey(param_1);
|
|
}
|
|
FUN_0100356c();
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_010036e3(HKEY param_1,LPCSTR param_2,BYTE *param_3)
|
|
|
|
{
|
|
int *lpSubKey;
|
|
LSTATUS LVar1;
|
|
int iVar2;
|
|
DWORD Reserved;
|
|
LPSTR lpClass;
|
|
DWORD dwOptions;
|
|
REGSAM samDesired;
|
|
LPSECURITY_ATTRIBUTES lpSecurityAttributes;
|
|
HKEY *phkResult;
|
|
DWORD *lpdwDisposition;
|
|
DWORD local_8;
|
|
|
|
if (DAT_010248a0 != 0) {
|
|
lpdwDisposition = &local_8;
|
|
phkResult = ¶m_1;
|
|
lpSecurityAttributes = (LPSECURITY_ATTRIBUTES)0x0;
|
|
samDesired = 0xf003f;
|
|
dwOptions = 0;
|
|
lpClass = (LPSTR)0x0;
|
|
Reserved = 0;
|
|
lpSubKey = FUN_01003503((LPCSTR)param_1);
|
|
LVar1 = RegCreateKeyExA((HKEY)0x80000001,(LPCSTR)lpSubKey,Reserved,lpClass,dwOptions,samDesired,
|
|
lpSecurityAttributes,(PHKEY)phkResult,lpdwDisposition);
|
|
if (LVar1 == 0) {
|
|
iVar2 = lstrlenA((LPCSTR)param_3);
|
|
RegSetValueExA(param_1,param_2,0,1,param_3,iVar2 + 1);
|
|
RegCloseKey(param_1);
|
|
}
|
|
FUN_0100356c();
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
LPSTR FUN_01003752(short param_1)
|
|
|
|
{
|
|
int iVar1;
|
|
LPSTR lpBuffer;
|
|
|
|
lpBuffer = &DAT_010248a8 + DAT_01024ea8 * 0x100;
|
|
iVar1 = LoadStringA(DAT_01028204,(int)param_1,lpBuffer,0xff);
|
|
if (iVar1 == 0) {
|
|
*lpBuffer = '\0';
|
|
}
|
|
DAT_01024ea8 = DAT_01024ea8 + 1;
|
|
if (5 < DAT_01024ea8) {
|
|
DAT_01024ea8 = 0;
|
|
}
|
|
return lpBuffer;
|
|
}
|
|
|
|
|
|
|
|
void FUN_010037a6(short param_1,int *param_2)
|
|
|
|
{
|
|
int iVar1;
|
|
CHAR local_108 [256];
|
|
undefined4 local_8;
|
|
|
|
local_8 = DAT_01024778;
|
|
iVar1 = LoadStringA(DAT_01028204,(int)param_1,local_108,0xff);
|
|
if (iVar1 != 0) {
|
|
iVar1 = atoi(local_108);
|
|
*param_2 = iVar1;
|
|
}
|
|
FUN_0101cd9e();
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
|
|
|
|
void FUN_01003803(LPCSTR param_1,int param_2,int param_3,int param_4,int param_5)
|
|
|
|
{
|
|
HDC hdc;
|
|
LPSTR _Src;
|
|
int mode;
|
|
COLORREF color;
|
|
int cchText;
|
|
tagRECT *lprc;
|
|
UINT format;
|
|
tagRECT local_14;
|
|
|
|
hdc = FUN_01003445(DAT_01028288);
|
|
local_14.left = param_2;
|
|
local_14.right = param_2 + param_4;
|
|
local_14.top = param_3;
|
|
local_14.bottom = param_3 + param_5;
|
|
if ((int)_DAT_01023050 < 0) {
|
|
_DAT_01028290 = 0xff;
|
|
_DAT_01028294 = 0xff;
|
|
_DAT_01023050 = 0xff;
|
|
_Src = FUN_01003752(0xbd);
|
|
if (_Src != (LPSTR)0x0) {
|
|
sscanf(_Src,"%d %d %d",&DAT_01023050,&DAT_01028294,&DAT_01028290);
|
|
}
|
|
}
|
|
mode = SetBkMode(hdc,1);
|
|
color = SetTextColor(hdc,(uint)CONCAT11(DAT_01028290,DAT_01028294) << 8 | _DAT_01023050 & 0xff);
|
|
format = 0x810;
|
|
lprc = &local_14;
|
|
cchText = lstrlenA(param_1);
|
|
DrawTextA(hdc,param_1,cchText,(LPRECT)lprc,format);
|
|
SetBkMode(hdc,mode);
|
|
SetTextColor(hdc,color);
|
|
ReleaseDC(DAT_01028288,hdc);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
|
|
|
|
void FUN_010038f8(void)
|
|
|
|
{
|
|
HWND hWnd;
|
|
int iVar1;
|
|
tagRECT *lpRect;
|
|
tagRECT local_14;
|
|
|
|
if (_DAT_01024ee4 == 0) {
|
|
DAT_010250a5 = 0;
|
|
DAT_010250a9 = GetSystemMetrics(0xf);
|
|
}
|
|
else {
|
|
lpRect = &local_14;
|
|
hWnd = GetDesktopWindow();
|
|
GetWindowRect(hWnd,(LPRECT)lpRect);
|
|
DAT_010250a5 = ((local_14.right - DAT_01025094) - local_14.left) / 2;
|
|
DAT_010250a9 = ((local_14.bottom - DAT_01025098) - local_14.top) / 2;
|
|
}
|
|
if (_DAT_01024ee8 != 0) {
|
|
iVar1 = GetSystemMetrics(0xf);
|
|
DAT_010250a9 = DAT_010250a9 - iVar1;
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_01003975(void)
|
|
|
|
{
|
|
uint uVar1;
|
|
|
|
uVar1 = GetWindowLongA(DAT_01024ebc,-0x10);
|
|
SetWindowLongA(DAT_01024ebc,-0x10,uVar1 | 0xc00000);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_0100399d(void)
|
|
|
|
{
|
|
uint uVar1;
|
|
|
|
uVar1 = GetWindowLongA(DAT_01024ebc,-0x10);
|
|
SetWindowLongA(DAT_01024ebc,-0x10,uVar1 & 0xff3fffff);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
|
|
|
|
void FUN_010039c5(int param_1)
|
|
|
|
{
|
|
HMENU hMenu;
|
|
|
|
_DAT_01024ee8 = param_1;
|
|
FUN_010038f8();
|
|
if (_DAT_01024ee8 == 0) {
|
|
DAT_01024eec = DAT_01024eec | 1;
|
|
InvalidateRect(DAT_01024ebc,(RECT *)0x0,1);
|
|
hMenu = (HMENU)0x0;
|
|
}
|
|
else {
|
|
DAT_01024eec = DAT_01024eec | 2;
|
|
InvalidateRect(DAT_01024ebc,(RECT *)0x0,1);
|
|
hMenu = DAT_01024ec0;
|
|
}
|
|
SetMenu(DAT_01024ebc,hMenu);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
|
|
|
|
void FUN_01003a23(void)
|
|
|
|
{
|
|
HWND hWnd;
|
|
int iVar1;
|
|
tagRECT *lpRect;
|
|
tagRECT local_b4;
|
|
DEVMODEA local_a4;
|
|
undefined4 local_8;
|
|
|
|
local_8 = DAT_01024778;
|
|
if ((_DAT_01024ef8 != 0) && (_DAT_01024ef4 == 0)) {
|
|
local_a4.dmSize = 0x9c;
|
|
local_a4.dmFields = 0x1c0000;
|
|
local_a4.dmPelsWidth = 0x280;
|
|
local_a4.dmPelsHeight = 0x1e0;
|
|
local_a4.dmBitsPerPel = 8;
|
|
FUN_0100399d();
|
|
if (_DAT_01023054 != 0) {
|
|
lpRect = &local_b4;
|
|
hWnd = GetDesktopWindow();
|
|
GetWindowRect(hWnd,(LPRECT)lpRect);
|
|
SetWindowPos(DAT_01024ebc,(HWND)0xffffffff,0,0,(local_b4.right - local_b4.left) + 1,
|
|
(local_b4.bottom - local_b4.top) + 1,8);
|
|
}
|
|
_DAT_01024ef0 = 1;
|
|
iVar1 = ChangeDisplaySettingsA(&local_a4,4);
|
|
if (iVar1 == 1) {
|
|
local_a4.dmFields = local_a4.dmFields & 0xfffbffff;
|
|
_DAT_01024ef0 = 1;
|
|
iVar1 = ChangeDisplaySettingsA(&local_a4,4);
|
|
}
|
|
_DAT_01024ef4 = (uint)(iVar1 == 0);
|
|
if (iVar1 == 0) goto LAB_01003b54;
|
|
}
|
|
lpRect = &local_b4;
|
|
hWnd = GetDesktopWindow();
|
|
GetWindowRect(hWnd,(LPRECT)lpRect);
|
|
FUN_0100399d();
|
|
SetWindowPos(DAT_01024ebc,(HWND)0xfffffffe,0,0,(local_b4.right - local_b4.left) + 1,
|
|
(local_b4.bottom - local_b4.top) + 1,8);
|
|
LAB_01003b54:
|
|
FUN_0101cd9e();
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
|
|
|
|
undefined4 FUN_01003b66(void)
|
|
|
|
{
|
|
if (_DAT_01024ef4 != 0) {
|
|
_DAT_01024ef4 = 0;
|
|
_DAT_01024ef0 = 1;
|
|
ChangeDisplaySettingsA((DEVMODEA *)0x0,4);
|
|
if (_DAT_01023054 != 0) {
|
|
SetWindowPos(DAT_01024ebc,(HWND)0xfffffffe,0,0,0,0,0x13);
|
|
}
|
|
}
|
|
FUN_01003975();
|
|
SetWindowPos(DAT_01024ebc,(HWND)0x0,DAT_01024ec4,DAT_01024ec8,DAT_01024ecc - DAT_01024ec4,
|
|
DAT_01024ed0 - DAT_01024ec8,0x14);
|
|
return 0;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
|
|
|
|
void FUN_01003be4(int param_1)
|
|
|
|
{
|
|
BOOL BVar1;
|
|
|
|
if (param_1 != _DAT_01024ee4) {
|
|
_DAT_01024ee4 = param_1;
|
|
if (param_1 == 0) {
|
|
FUN_01003b66();
|
|
DAT_01024eec._1_1_ = DAT_01024eec._1_1_ | 0x80;
|
|
InvalidateRect(DAT_01024ebc,(RECT *)0x0,1);
|
|
FUN_010039c5(1);
|
|
RedrawWindow((HWND)0x0,(RECT *)0x0,(HRGN)0x0,0x185);
|
|
}
|
|
else {
|
|
BVar1 = IsWindowVisible(DAT_01024ebc);
|
|
if (BVar1 != 0) {
|
|
GetWindowRect(DAT_01024ebc,(LPRECT)&DAT_01024ec4);
|
|
}
|
|
FUN_01003a23();
|
|
DAT_01024eec._1_1_ = DAT_01024eec._1_1_ | 0x80;
|
|
InvalidateRect(DAT_01024ebc,(RECT *)0x0,1);
|
|
FUN_010039c5(0);
|
|
FUN_0100399d();
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_01003c87(void)
|
|
|
|
{
|
|
DAT_01024eec._1_1_ = DAT_01024eec._1_1_ | 0x80;
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
|
|
|
|
undefined4 FUN_01003c94(void)
|
|
|
|
{
|
|
HWND pHVar1;
|
|
undefined4 uVar2;
|
|
HWND pHVar3;
|
|
|
|
uVar2 = 0;
|
|
if (_DAT_01024ef0 != 0) {
|
|
_DAT_01024ef0 = 0;
|
|
return 0;
|
|
}
|
|
if ((_DAT_01024ee4 == 0) || (_DAT_01024ef4 == 0)) {
|
|
SetWindowPos(DAT_01024ebc,(HWND)0x0,DAT_01024ec4,DAT_01024ec8,DAT_01024ecc - DAT_01024ec4,
|
|
DAT_01024ed0 - DAT_01024ec8,0x14);
|
|
}
|
|
else {
|
|
_DAT_01024ef4 = 0;
|
|
_DAT_01024ee4 = 0;
|
|
FUN_01003975();
|
|
DAT_01024eec._1_1_ = DAT_01024eec._1_1_ | 0x80;
|
|
InvalidateRect(DAT_01024ebc,(RECT *)0x0,1);
|
|
FUN_010039c5(1);
|
|
SetWindowPos(DAT_01024ebc,(HWND)0x0,DAT_01024ec4,DAT_01024ec8,DAT_01024ecc - DAT_01024ec4,
|
|
DAT_01024ed0 - DAT_01024ec8,0x1c);
|
|
uVar2 = 1;
|
|
}
|
|
pHVar3 = DAT_01024ebc;
|
|
pHVar1 = GetDesktopWindow();
|
|
FUN_010077c4(pHVar1,pHVar3);
|
|
return uVar2;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
|
|
|
|
void FUN_01003d65(int param_1,int param_2,undefined4 param_3,HWND param_4,undefined4 param_5,
|
|
undefined4 param_6)
|
|
|
|
{
|
|
HWND hWnd;
|
|
int iVar1;
|
|
int iVar2;
|
|
int iVar3;
|
|
LPRECT lpRect;
|
|
|
|
_DAT_01024ed4 = 0;
|
|
_DAT_01024ed8 = 0;
|
|
_DAT_01024ef8 = param_6;
|
|
DAT_01024ebc = param_4;
|
|
lpRect = (LPRECT)&DAT_01024eac;
|
|
DAT_01024ec0 = param_5;
|
|
_DAT_01024edc = param_1;
|
|
_DAT_01024ee0 = param_2;
|
|
hWnd = GetDesktopWindow();
|
|
GetWindowRect(hWnd,lpRect);
|
|
iVar1 = GetSystemMetrics(5);
|
|
param_1 = param_1 + iVar1 * 2;
|
|
iVar1 = GetSystemMetrics(6);
|
|
param_2 = param_2 + iVar1 * 2;
|
|
iVar1 = GetSystemMetrics(0xf);
|
|
iVar2 = GetSystemMetrics(4);
|
|
iVar3 = ((DAT_01024eb4 - _DAT_01024eac) - param_1) / 2;
|
|
DAT_01024ec4 = iVar3 + -2;
|
|
DAT_01024ec8 = (((DAT_01024eb8 - _DAT_01024eb0) - param_2) / 2 - (iVar1 + iVar2)) + -2;
|
|
DAT_01024ed0 = iVar1 + iVar2 + DAT_01024ec8 + 4 + param_2;
|
|
DAT_01024ecc = iVar3 + 2 + param_1;
|
|
MoveWindow(DAT_01024ebc,DAT_01024ec4,DAT_01024ec8,DAT_01024ecc - DAT_01024ec4,
|
|
DAT_01024ed0 - DAT_01024ec8,0);
|
|
DAT_01024eec = 0;
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
|
|
|
|
void FUN_01003e53(void)
|
|
|
|
{
|
|
if (_DAT_01024ef4 != 0) {
|
|
FUN_01003be4(0);
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
|
|
|
|
void FUN_01003e69(int param_1)
|
|
|
|
{
|
|
if ((_DAT_01024ee4 != 0) && (param_1 == 0)) {
|
|
FUN_01003be4(0);
|
|
SetWindowPos(DAT_01024ebc,(HWND)0x1,0,0,0,0,0x13);
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
uint FUN_01003ea2(uint param_1)
|
|
|
|
{
|
|
return ((param_1 >> 0x10) - DAT_010250a9) * 0x10000 | param_1 - DAT_010250a5 & 0xffff;
|
|
}
|
|
|
|
|
|
|
|
void FUN_01003ecf(int param_1)
|
|
|
|
{
|
|
*(int *)(param_1 + 8) = DAT_01024ecc - DAT_01024ec4;
|
|
*(int *)(param_1 + 0xc) = DAT_01024ed0 - DAT_01024ec8;
|
|
*(int *)(param_1 + 0x10) = DAT_01024ec4;
|
|
*(int *)(param_1 + 0x14) = DAT_01024ec8;
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_01003f10(int param_1,int param_2)
|
|
|
|
{
|
|
HDC hdc;
|
|
int unaff_EBX;
|
|
int unaff_EDI;
|
|
int local_14;
|
|
int local_10;
|
|
HGDIOBJ local_c;
|
|
HBRUSH local_8;
|
|
|
|
local_8 = CreateSolidBrush(0);
|
|
if (local_8 != (HBRUSH)0x0) {
|
|
hdc = FUN_01003445(DAT_01024ebc);
|
|
local_c = SelectObject(hdc,local_8);
|
|
if (hdc != (HDC)0x0) {
|
|
local_14 = param_1 + 1 + unaff_EBX;
|
|
local_10 = param_2 + 1 + unaff_EDI;
|
|
FillRect(hdc,(RECT *)&stack0xffffffe4,local_8);
|
|
ReleaseDC(DAT_01024ebc,hdc);
|
|
}
|
|
SelectObject(hdc,local_c);
|
|
DeleteObject(local_8);
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
|
|
|
|
void FUN_01003f98(void)
|
|
|
|
{
|
|
int iVar1;
|
|
int iVar2;
|
|
|
|
if (_DAT_01024ee4 != 0) {
|
|
if (((char)(DAT_01024eec >> 8) < '\0') || (DAT_01024eec == 0)) {
|
|
if (_DAT_01024ee8 == 0) {
|
|
iVar1 = 0;
|
|
}
|
|
else {
|
|
iVar1 = GetSystemMetrics(0xf);
|
|
}
|
|
iVar1 = DAT_01024eb8 + iVar1;
|
|
iVar2 = DAT_01024eb4;
|
|
}
|
|
else {
|
|
if ((DAT_01024eec & 1) == 0) goto LAB_01003ff7;
|
|
iVar1 = GetSystemMetrics(0xf);
|
|
iVar2 = DAT_01024eb4 + -1;
|
|
}
|
|
FUN_01003f10(iVar2,iVar1);
|
|
}
|
|
LAB_01003ff7:
|
|
FUN_01013a6a();
|
|
DAT_01024eec = 0;
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
undefined4 FUN_0100400b(int *param_1,int *param_2,int *param_3)
|
|
|
|
{
|
|
int iVar1;
|
|
int *piVar2;
|
|
int iVar3;
|
|
int iVar4;
|
|
int iVar5;
|
|
int iVar6;
|
|
int iVar7;
|
|
|
|
iVar1 = param_1[1];
|
|
piVar2 = (int *)param_1[2];
|
|
iVar7 = *param_1;
|
|
iVar5 = param_1[3];
|
|
iVar4 = param_2[2] + *param_2;
|
|
iVar6 = param_2[3] + param_2[1];
|
|
if ((((*param_2 <= (int)piVar2 + iVar7) && (iVar7 < iVar4)) && (param_2[1] <= iVar5 + iVar1)) &&
|
|
(iVar1 < iVar6)) {
|
|
iVar3 = *param_2;
|
|
param_1 = piVar2;
|
|
if (iVar7 < iVar3) {
|
|
param_1 = (int *)((int)piVar2 + (iVar7 - iVar3));
|
|
iVar7 = iVar3;
|
|
}
|
|
if (iVar4 < (int)param_1 + iVar7) {
|
|
param_1 = (int *)(iVar4 - iVar7);
|
|
}
|
|
iVar4 = iVar1;
|
|
if (iVar1 < param_2[1]) {
|
|
iVar4 = param_2[1];
|
|
iVar5 = iVar5 + (iVar1 - iVar4);
|
|
}
|
|
if (iVar6 < iVar5 + iVar4) {
|
|
iVar5 = iVar6 - iVar4;
|
|
}
|
|
if ((param_1 != (int *)0x0) && (iVar5 != 0)) {
|
|
if (param_3 != (int *)0x0) {
|
|
*param_3 = iVar7;
|
|
param_3[1] = iVar4;
|
|
*(int **)(param_3 + 2) = param_1;
|
|
param_3[3] = iVar5;
|
|
}
|
|
return 1;
|
|
}
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
|
|
|
|
void FUN_010040c2(int *param_1,int *param_2,int *param_3)
|
|
|
|
{
|
|
int iVar1;
|
|
int iVar2;
|
|
int iVar3;
|
|
int iVar4;
|
|
int local_c;
|
|
int local_8;
|
|
|
|
local_8 = param_1[2];
|
|
iVar3 = *param_1;
|
|
iVar4 = param_1[1];
|
|
local_c = param_1[3];
|
|
iVar1 = param_2[1];
|
|
iVar2 = *param_2;
|
|
if (iVar2 < iVar3) {
|
|
local_8 = local_8 + (iVar3 - iVar2);
|
|
iVar3 = iVar2;
|
|
}
|
|
if (iVar1 < iVar4) {
|
|
local_c = local_c + (iVar4 - iVar1);
|
|
iVar4 = iVar1;
|
|
}
|
|
if (local_8 + iVar3 < iVar2 + param_2[2]) {
|
|
local_8 = (param_2[2] - iVar3) + iVar2;
|
|
}
|
|
if (local_c + iVar4 < param_2[3] + iVar1) {
|
|
local_c = (param_2[3] - iVar4) + iVar1;
|
|
}
|
|
param_3[1] = iVar4;
|
|
param_3[3] = local_c;
|
|
*param_3 = iVar3;
|
|
param_3[2] = local_8;
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
undefined4 FUN_01004154(int *param_1,HPALETTE param_2,uint param_3)
|
|
|
|
{
|
|
tagPALETTEENTRY *ptVar1;
|
|
int iVar2;
|
|
undefined *puVar3;
|
|
undefined2 *puVar4;
|
|
UINT cEntries;
|
|
tagPALETTEENTRY local_404 [256];
|
|
|
|
if (param_2 == (HPALETTE)0x0) {
|
|
param_2 = (HPALETTE)GetStockObject(0xf);
|
|
}
|
|
if (param_1 == (int *)0x0) {
|
|
return 0;
|
|
}
|
|
cEntries = param_1[8];
|
|
if ((cEntries == 0) && (*(ushort *)((int)param_1 + 0xe) < 9)) {
|
|
cEntries = 1 << ((byte)*(ushort *)((int)param_1 + 0xe) & 0x1f);
|
|
}
|
|
if (cEntries == 3) {
|
|
if (param_1[4] != 3) goto LAB_010041ab;
|
|
cEntries = 0;
|
|
}
|
|
if ((int)cEntries < 1) {
|
|
return 1;
|
|
}
|
|
LAB_010041ab:
|
|
puVar4 = (undefined2 *)(*param_1 + (int)param_1);
|
|
if ((param_3 == 0) || (2 < param_3)) {
|
|
if (0xff < (int)cEntries) {
|
|
cEntries = 0x100;
|
|
}
|
|
GetPaletteEntries(param_2,0,cEntries,(LPPALETTEENTRY)local_404);
|
|
param_2 = (HPALETTE)0x0;
|
|
if (0 < (int)cEntries) {
|
|
puVar3 = (undefined *)((int)puVar4 + 1);
|
|
do {
|
|
ptVar1 = local_404 + (int)param_2;
|
|
param_2 = (HPALETTE)((int)¶m_2->unused + 1);
|
|
puVar3[1] = ptVar1->peRed;
|
|
*puVar3 = puVar3[(int)((int)local_404 - (int)puVar4)];
|
|
puVar3[-1] = puVar3[(int)local_404 + (1 - (int)puVar4)];
|
|
puVar3[2] = 0;
|
|
puVar3 = puVar3 + 4;
|
|
} while ((int)param_2 < (int)cEntries);
|
|
}
|
|
}
|
|
else {
|
|
iVar2 = 0;
|
|
if (0 < (int)cEntries) {
|
|
do {
|
|
*puVar4 = (short)iVar2;
|
|
iVar2 = iVar2 + 1;
|
|
puVar4 = puVar4 + 1;
|
|
} while (iVar2 < (int)cEntries);
|
|
}
|
|
}
|
|
return 1;
|
|
}
|
|
|
|
|
|
|
|
undefined4 * FUN_0100423a(int param_1,int param_2,int param_3)
|
|
|
|
{
|
|
HGLOBAL hMem;
|
|
undefined4 *puVar1;
|
|
undefined4 *puVar2;
|
|
undefined4 *puVar3;
|
|
int iVar4;
|
|
|
|
iVar4 = ((param_1 * param_2) / 8 + 3U & 0xfffffffc) * param_3;
|
|
hMem = GlobalAlloc(0x42,iVar4 + 0x428);
|
|
puVar1 = (undefined4 *)GlobalLock(hMem);
|
|
puVar2 = (undefined4 *)0x0;
|
|
if (puVar1 != (undefined4 *)0x0) {
|
|
puVar1[5] = iVar4;
|
|
puVar1[1] = param_2;
|
|
*puVar1 = 0x28;
|
|
puVar1[2] = param_3;
|
|
*(undefined2 *)(puVar1 + 3) = 1;
|
|
*(undefined2 *)((int)puVar1 + 0xe) = (short)param_1;
|
|
puVar1[4] = 0;
|
|
puVar1[6] = 0;
|
|
puVar1[7] = 0;
|
|
puVar1[8] = 0;
|
|
puVar1[9] = 0;
|
|
if (param_1 == 4) {
|
|
puVar1[8] = 0x10;
|
|
}
|
|
else {
|
|
if (param_1 == 8) {
|
|
puVar1[8] = 0x100;
|
|
}
|
|
}
|
|
param_2 = 0;
|
|
puVar3 = puVar1 + 10;
|
|
puVar2 = puVar1;
|
|
if (0 < (int)puVar1[8] / 0x10) {
|
|
do {
|
|
*puVar3 = 0;
|
|
puVar3[1] = 0x800000;
|
|
puVar3[2] = 0x8000;
|
|
puVar3[3] = 0x808000;
|
|
puVar3[4] = 0x80;
|
|
puVar3[5] = 0x800080;
|
|
puVar3[6] = 0x8080;
|
|
puVar3[7] = 0xc0c0c0;
|
|
puVar3[8] = 0x808080;
|
|
puVar3[9] = 0xff0000;
|
|
puVar3[10] = 0xff00;
|
|
puVar3[0xb] = 0xffff00;
|
|
puVar3[0xc] = 0xff;
|
|
puVar3[0xd] = 0xff00ff;
|
|
puVar3[0xe] = 0xffff;
|
|
puVar3[0xf] = 0xffffff;
|
|
puVar3 = puVar3 + 0x10;
|
|
param_2 = param_2 + 1;
|
|
puVar2 = puVar1;
|
|
} while (param_2 < (int)puVar1[8] / 0x10);
|
|
}
|
|
}
|
|
return puVar2;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
|
|
|
|
undefined4 FUN_01004380(undefined4 param_1,undefined4 param_2)
|
|
|
|
{
|
|
_DAT_01028284 = param_1;
|
|
DAT_01028288 = param_2;
|
|
if (DAT_0102827c == (HPALETTE)0x0) {
|
|
DAT_0102827c = CreatePalette((LOGPALETTE *)&DAT_01023058);
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
|
|
|
|
undefined4 FUN_010043b9(int param_1)
|
|
|
|
{
|
|
HWND hWnd;
|
|
HDC hdc;
|
|
HPALETTE hPal;
|
|
undefined *puVar1;
|
|
uint uVar2;
|
|
int local_14;
|
|
|
|
if (DAT_0102827c != (HPALETTE)0x0) {
|
|
DeleteObject(DAT_0102827c);
|
|
}
|
|
DAT_0102827c = CreatePalette((LOGPALETTE *)&DAT_01023058);
|
|
hWnd = GetDesktopWindow();
|
|
hdc = FUN_01003445(hWnd);
|
|
SetSystemPaletteUse(hdc,2);
|
|
SetSystemPaletteUse(hdc,1);
|
|
hPal = SelectPalette(hdc,DAT_0102827c,0);
|
|
RealizePalette(hdc);
|
|
SelectPalette(hdc,hPal,0);
|
|
GetSystemPaletteEntries(hdc,0,0x100,(LPPALETTEENTRY)&DAT_0102305c);
|
|
puVar1 = &DAT_0102305f;
|
|
do {
|
|
*puVar1 = 0;
|
|
puVar1 = puVar1 + 4;
|
|
} while ((int)puVar1 < 0x102345f);
|
|
puVar1 = (undefined *)(param_1 + 0x29);
|
|
local_14 = 0xec;
|
|
do {
|
|
if (param_1 != 0) {
|
|
puVar1[(int)(&DAT_0102305b + -param_1)] = puVar1[1];
|
|
puVar1[(int)(&DAT_0102305c + -param_1)] = *puVar1;
|
|
puVar1[(int)(&DAT_0102305d + -param_1)] = puVar1[-1];
|
|
}
|
|
puVar1[(int)(&DAT_0102305e + -param_1)] = 4;
|
|
puVar1 = puVar1 + 4;
|
|
local_14 = local_14 + -1;
|
|
} while (local_14 != 0);
|
|
uVar2 = GetDeviceCaps(hdc,0x26);
|
|
if ((uVar2 & 0x100) == 0) {
|
|
DAT_0102345a = 0xff;
|
|
DAT_01023459 = 0xff;
|
|
DAT_01023458 = 0xff;
|
|
}
|
|
ResizePalette(DAT_0102827c,0x100);
|
|
SetPaletteEntries(DAT_0102827c,0,0x100,(PALETTEENTRY *)&DAT_0102305c);
|
|
hWnd = GetDesktopWindow();
|
|
ReleaseDC(hWnd,hdc);
|
|
return 0;
|
|
}
|
|
|
|
|
|
|
|
undefined4 FUN_01004508(void)
|
|
|
|
{
|
|
if (DAT_0102827c != (HGDIOBJ)0x0) {
|
|
DeleteObject(DAT_0102827c);
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
|
|
|
|
undefined4 FUN_0100459a(int **param_1,int *param_2,int *param_3)
|
|
|
|
{
|
|
int iVar1;
|
|
int *piVar2;
|
|
|
|
piVar2 = FUN_0100423a(8,(int)param_2,(int)param_3);
|
|
*param_1 = piVar2;
|
|
FUN_01004154(piVar2,DAT_0102827c,1);
|
|
param_1[3] = param_2;
|
|
param_1[5] = param_2;
|
|
if ((int)param_2 % 4 != 0) {
|
|
param_2 = (int *)((int)param_2 + (4 - (int)param_2 % 4));
|
|
}
|
|
piVar2 = *param_1;
|
|
param_1[5] = param_2;
|
|
param_1[4] = param_3;
|
|
*(undefined *)(param_1 + 6) = 2;
|
|
if (piVar2[4] == 3) {
|
|
iVar1 = *piVar2 + 0xc;
|
|
}
|
|
else {
|
|
iVar1 = *piVar2 + piVar2[8] * 4;
|
|
}
|
|
param_1[2] = (int *)(iVar1 + (int)piVar2);
|
|
param_1[1] = (int *)(iVar1 + (int)piVar2);
|
|
return 0;
|
|
}
|
|
|
|
|
|
|
|
undefined4 FUN_010045aa(undefined4 *param_1,int param_2,int param_3,int param_4)
|
|
|
|
{
|
|
int *piVar1;
|
|
undefined4 uVar2;
|
|
|
|
*param_1 = 0;
|
|
param_1[3] = param_2;
|
|
param_1[5] = param_2;
|
|
if (param_4 != 0) {
|
|
if (param_2 % 4 != 0) {
|
|
param_1[5] = (param_2 - param_2 % 4) + 4;
|
|
}
|
|
}
|
|
param_1[4] = param_3;
|
|
*(undefined *)(param_1 + 6) = 1;
|
|
piVar1 = FUN_010054c2(param_1[5] * param_3);
|
|
*(int **)(param_1 + 2) = piVar1;
|
|
if (piVar1 == (int *)0x0) {
|
|
uVar2 = 0xffffffff;
|
|
}
|
|
else {
|
|
*(int **)(param_1 + 1) = piVar1;
|
|
uVar2 = 0;
|
|
}
|
|
return uVar2;
|
|
}
|
|
|
|
|
|
|
|
undefined4 FUN_0100460c(LPCVOID *param_1)
|
|
|
|
{
|
|
undefined4 uVar1;
|
|
HGLOBAL hMem;
|
|
int iVar2;
|
|
|
|
if (param_1 == (LPCVOID *)0x0) {
|
|
uVar1 = 0xffffffff;
|
|
}
|
|
else {
|
|
if (*(char *)(param_1 + 6) == '\x01') {
|
|
FUN_01005541((int)param_1[2]);
|
|
}
|
|
else {
|
|
if (*(char *)(param_1 + 6) == '\x02') {
|
|
hMem = GlobalHandle(*param_1);
|
|
GlobalUnlock(hMem);
|
|
hMem = GlobalHandle(*param_1);
|
|
GlobalFree(hMem);
|
|
}
|
|
}
|
|
iVar2 = 9;
|
|
while (iVar2 != 0) {
|
|
iVar2 = iVar2 + -1;
|
|
*param_1 = (LPCVOID)0x0;
|
|
param_1 = param_1 + 1;
|
|
}
|
|
*(undefined *)param_1 = 0;
|
|
uVar1 = 0;
|
|
}
|
|
return uVar1;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
|
|
|
|
void FUN_01004664(void)
|
|
|
|
{
|
|
DAT_01028280 = FUN_01003445(DAT_01028288);
|
|
_DAT_0102828c = 0;
|
|
SelectPalette(DAT_01028280,DAT_0102827c,0);
|
|
RealizePalette(DAT_01028280);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
|
|
|
|
void FUN_0100469c(BITMAPINFO **param_1,int param_2,int param_3,int param_4,int param_5,int param_6,
|
|
int param_7)
|
|
|
|
{
|
|
if (_DAT_01024efc == 0) {
|
|
StretchDIBits(DAT_01028280,param_4,param_5,param_6,param_7,param_2,
|
|
(int)param_1[4] + (-param_7 - param_3),param_6,param_7,param_1[2],*param_1,1,
|
|
0xcc0020);
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_010046ed(void)
|
|
|
|
{
|
|
ReleaseDC(DAT_01028288,DAT_01028280);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
|
|
|
|
void FUN_01004705(BITMAPINFO **param_1,int param_2,int param_3,int param_4,int param_5,int param_6,
|
|
int param_7)
|
|
|
|
{
|
|
HDC hdc;
|
|
|
|
hdc = FUN_01003445(DAT_01028288);
|
|
if (hdc != (HDC)0x0) {
|
|
SelectPalette(hdc,DAT_0102827c,0);
|
|
RealizePalette(hdc);
|
|
if (_DAT_01024efc == 0) {
|
|
StretchDIBits(hdc,param_4,param_5,param_6,param_7,param_2,
|
|
(int)param_1[4] + (-param_7 - param_3),param_6,param_7,param_1[2],*param_1,1,
|
|
0xcc0020);
|
|
}
|
|
ReleaseDC(DAT_01028288,hdc);
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
|
|
|
|
void FUN_01004787(BITMAPINFO **param_1,int param_2,int param_3)
|
|
|
|
{
|
|
HDC hdc;
|
|
|
|
hdc = FUN_01003445(DAT_01028288);
|
|
SelectPalette(hdc,DAT_0102827c,0);
|
|
RealizePalette(hdc);
|
|
if (_DAT_01024efc == 0) {
|
|
StretchDIBits(hdc,param_2,param_3,(int)param_1[3],(int)param_1[4],0,0,(int)param_1[3],
|
|
(int)param_1[4],param_1[2],*param_1,1,0xcc0020);
|
|
}
|
|
ReleaseDC(DAT_01028288,hdc);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_010047fa(undefined4 *param_1,uint param_2,int param_3,int param_4,int param_5,
|
|
undefined param_6)
|
|
|
|
{
|
|
undefined4 *puVar1;
|
|
int iVar2;
|
|
uint uVar3;
|
|
undefined4 *puVar4;
|
|
|
|
puVar1 = param_1;
|
|
iVar2 = param_1[4];
|
|
if (iVar2 < 0) {
|
|
iVar2 = -iVar2;
|
|
}
|
|
param_1 = (undefined4 *)(((iVar2 - param_3) - param_5) * param_1[3] + param_1[2] + param_4);
|
|
if (0 < param_3) {
|
|
do {
|
|
if (0 < (int)param_2) {
|
|
uVar3 = param_2 >> 2;
|
|
puVar4 = param_1;
|
|
while (uVar3 != 0) {
|
|
uVar3 = uVar3 - 1;
|
|
*puVar4 = CONCAT22(CONCAT11(param_6,param_6),CONCAT11(param_6,param_6));
|
|
puVar4 = puVar4 + 1;
|
|
}
|
|
uVar3 = param_2 & 3;
|
|
while (uVar3 != 0) {
|
|
uVar3 = uVar3 - 1;
|
|
*(undefined *)puVar4 = param_6;
|
|
puVar4 = (undefined4 *)((int)puVar4 + 1);
|
|
}
|
|
param_1 = (undefined4 *)((int)param_1 + param_2);
|
|
}
|
|
param_1 = (undefined4 *)((int)param_1 + (puVar1[5] - param_2));
|
|
param_3 = param_3 + -1;
|
|
} while (param_3 != 0);
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_01004870(int param_1,int param_2,int param_3,int param_4,int param_5,int param_6,
|
|
int param_7,int param_8)
|
|
|
|
{
|
|
undefined uVar1;
|
|
int iVar2;
|
|
int iVar3;
|
|
int iVar4;
|
|
undefined *puVar5;
|
|
int iVar6;
|
|
undefined *puVar7;
|
|
|
|
iVar3 = param_6;
|
|
iVar2 = param_1;
|
|
iVar6 = *(int *)(param_1 + 0x10);
|
|
iVar4 = *(int *)(param_6 + 0x10);
|
|
if (iVar4 < 0) {
|
|
iVar4 = -iVar4;
|
|
}
|
|
if (iVar6 < 0) {
|
|
iVar6 = -iVar6;
|
|
}
|
|
puVar5 = (undefined *)
|
|
(((iVar4 - param_3) - param_8) * *(int *)(param_6 + 0x14) + *(int *)(param_6 + 8) +
|
|
param_7);
|
|
puVar7 = (undefined *)
|
|
(((iVar6 - param_3) - param_5) * *(int *)(param_1 + 0x14) + *(int *)(param_1 + 8) +
|
|
param_4);
|
|
if (0 < param_3) {
|
|
param_6 = param_3;
|
|
do {
|
|
if (0 < param_2) {
|
|
param_1 = param_2;
|
|
do {
|
|
uVar1 = *puVar5;
|
|
puVar5 = puVar5 + 1;
|
|
*puVar7 = uVar1;
|
|
puVar7 = puVar7 + 1;
|
|
param_1 = param_1 + -1;
|
|
} while (param_1 != 0);
|
|
}
|
|
puVar5 = puVar5 + (*(int *)(iVar3 + 0x14) - param_2);
|
|
puVar7 = puVar7 + (*(int *)(iVar2 + 0x14) - param_2);
|
|
param_6 = param_6 + -1;
|
|
} while (param_6 != 0);
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_010048ec(int param_1,int param_2,int param_3,int param_4,int param_5,int param_6,
|
|
int param_7,int param_8)
|
|
|
|
{
|
|
int iVar1;
|
|
int iVar2;
|
|
int iVar3;
|
|
char *pcVar4;
|
|
int iVar5;
|
|
char *pcVar6;
|
|
|
|
iVar2 = param_6;
|
|
iVar1 = param_1;
|
|
iVar5 = *(int *)(param_1 + 0x10);
|
|
iVar3 = *(int *)(param_6 + 0x10);
|
|
if (iVar3 < 0) {
|
|
iVar3 = -iVar3;
|
|
}
|
|
if (iVar5 < 0) {
|
|
iVar5 = -iVar5;
|
|
}
|
|
pcVar4 = (char *)(((iVar3 - param_3) - param_8) * *(int *)(param_6 + 0x14) + *(int *)(param_6 + 8)
|
|
+ param_7);
|
|
pcVar6 = (char *)(((iVar5 - param_3) - param_5) * *(int *)(param_1 + 0x14) + *(int *)(param_1 + 8)
|
|
+ param_4);
|
|
if (0 < param_3) {
|
|
param_6 = param_3;
|
|
do {
|
|
if (0 < param_2) {
|
|
param_1 = param_2;
|
|
do {
|
|
if (*pcVar4 != '\0') {
|
|
*pcVar6 = *pcVar4;
|
|
}
|
|
pcVar4 = pcVar4 + 1;
|
|
pcVar6 = pcVar6 + 1;
|
|
param_1 = param_1 + -1;
|
|
} while (param_1 != 0);
|
|
}
|
|
pcVar4 = pcVar4 + (*(int *)(iVar2 + 0x14) - param_2);
|
|
pcVar6 = pcVar6 + (*(int *)(iVar1 + 0x14) - param_2);
|
|
param_6 = param_6 + -1;
|
|
} while (param_6 != 0);
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
uint FUN_0100496c(uint param_1)
|
|
|
|
{
|
|
if ((param_1 & 3) != 0) {
|
|
param_1 = (param_1 - (param_1 & 3)) + 4;
|
|
}
|
|
return param_1;
|
|
}
|
|
|
|
|
|
|
|
undefined4 FUN_01004989(undefined2 *param_1,uint param_2,int param_3)
|
|
|
|
{
|
|
uint uVar1;
|
|
int *piVar2;
|
|
undefined4 uVar3;
|
|
|
|
uVar1 = FUN_0100496c(param_2);
|
|
param_1[2] = (short)uVar1;
|
|
piVar2 = FUN_010054c2((int)(short)uVar1 * param_3 * 2);
|
|
*(int **)(param_1 + 3) = piVar2;
|
|
if (piVar2 == (int *)0x0) {
|
|
uVar3 = 0xffffffff;
|
|
}
|
|
else {
|
|
*(int **)(param_1 + 5) = piVar2;
|
|
*param_1 = (short)param_2;
|
|
param_1[1] = (short)param_3;
|
|
uVar3 = 0;
|
|
}
|
|
return uVar3;
|
|
}
|
|
|
|
|
|
|
|
undefined4 FUN_010049d6(undefined4 *param_1)
|
|
|
|
{
|
|
undefined4 uVar1;
|
|
|
|
if (param_1 == (undefined4 *)0x0) {
|
|
uVar1 = 0xffffffff;
|
|
}
|
|
else {
|
|
if (*(int *)((int)param_1 + 6) != 0) {
|
|
FUN_01005541(*(int *)((int)param_1 + 6));
|
|
}
|
|
*param_1 = 0;
|
|
param_1[1] = 0;
|
|
param_1[2] = 0;
|
|
*(undefined2 *)(param_1 + 3) = 0;
|
|
uVar1 = 0;
|
|
}
|
|
return uVar1;
|
|
}
|
|
|
|
|
|
|
|
void FUN_01004a08(int param_1,uint param_2,int param_3,int param_4,int param_5,uint param_6)
|
|
|
|
{
|
|
int iVar1;
|
|
uint uVar2;
|
|
uint *puVar3;
|
|
uint *puVar4;
|
|
|
|
iVar1 = param_1;
|
|
puVar3 = (uint *)(*(int *)(param_1 + 6) +
|
|
((((int)*(short *)(param_1 + 2) - param_3) - param_5) *
|
|
(int)*(short *)(param_1 + 4) + param_4) * 2);
|
|
if (0 < param_3) {
|
|
param_1 = param_3;
|
|
do {
|
|
if (0 < (int)param_2) {
|
|
uVar2 = param_2 >> 1;
|
|
puVar4 = puVar3;
|
|
while (uVar2 != 0) {
|
|
uVar2 = uVar2 - 1;
|
|
*puVar4 = param_6 & 0xffff | param_6 << 0x10;
|
|
puVar4 = puVar4 + 1;
|
|
}
|
|
uVar2 = (uint)((param_2 & 1) != 0);
|
|
while (uVar2 != 0) {
|
|
uVar2 = uVar2 - 1;
|
|
*(short *)puVar4 = (short)(param_6 & 0xffff);
|
|
puVar4 = (uint *)((int)puVar4 + 2);
|
|
}
|
|
puVar3 = (uint *)((int)puVar3 + param_2 * 2);
|
|
}
|
|
param_1 = param_1 + -1;
|
|
puVar3 = (uint *)((int)puVar3 + ((int)*(short *)(iVar1 + 4) - param_2) * 2);
|
|
} while (param_1 != 0);
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_01004a76(int param_1,int param_2,int param_3,int param_4,int param_5,int param_6,
|
|
int param_7,int param_8,int param_9,undefined *param_10,undefined *param_11,
|
|
int param_12,int param_13,int param_14)
|
|
|
|
{
|
|
int iVar1;
|
|
ushort *puVar2;
|
|
int iVar3;
|
|
ushort *puVar4;
|
|
|
|
iVar3 = *(int *)(param_3 + 0x10);
|
|
iVar1 = *(int *)(param_9 + 0x10);
|
|
if (iVar1 < 0) {
|
|
iVar1 = -iVar1;
|
|
}
|
|
if (iVar3 < 0) {
|
|
iVar3 = -iVar3;
|
|
}
|
|
param_11 = param_10 +
|
|
((iVar1 - param_2) - (int)param_11) * *(int *)(param_9 + 0x14) + *(int *)(param_9 + 8);
|
|
param_10 = (undefined *)
|
|
(((iVar3 - param_2) - param_5) * *(int *)(param_3 + 0x14) + *(int *)(param_3 + 8) +
|
|
param_4);
|
|
puVar4 = (ushort *)
|
|
(*(int *)(param_12 + 6) +
|
|
((((int)*(short *)(param_12 + 2) - param_2) - param_14) * (int)*(short *)(param_12 + 4) +
|
|
param_13) * 2);
|
|
puVar2 = (ushort *)
|
|
(*(int *)(param_6 + 6) +
|
|
((((int)*(short *)(param_6 + 2) - param_2) - param_8) * (int)*(short *)(param_6 + 4) +
|
|
param_7) * 2);
|
|
if (param_2 != 0) {
|
|
param_5 = param_2;
|
|
do {
|
|
if (param_1 != 0) {
|
|
param_2 = param_1;
|
|
do {
|
|
if (*puVar4 <= *puVar2) {
|
|
*param_10 = *param_11;
|
|
*puVar2 = *puVar4;
|
|
}
|
|
param_11 = param_11 + 1;
|
|
param_10 = param_10 + 1;
|
|
puVar4 = puVar4 + 1;
|
|
puVar2 = puVar2 + 1;
|
|
param_2 = param_2 + -1;
|
|
} while (param_2 != 0);
|
|
}
|
|
param_11 = param_11 + (*(int *)(param_9 + 0x14) - param_1);
|
|
param_10 = param_10 + (*(int *)(param_3 + 0x14) - param_1);
|
|
puVar4 = puVar4 + ((int)*(short *)(param_12 + 4) - param_1);
|
|
param_5 = param_5 + -1;
|
|
puVar2 = puVar2 + ((int)*(short *)(param_6 + 4) - param_1);
|
|
} while (param_5 != 0);
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_01004b75(int param_1,int param_2,char *param_3,int param_4,int param_5,int param_6,
|
|
int param_7,int param_8,char *param_9,int param_10,int param_11,ushort param_12)
|
|
|
|
{
|
|
int *piVar1;
|
|
int *piVar2;
|
|
char *pcVar3;
|
|
char *pcVar4;
|
|
int iVar5;
|
|
ushort *puVar6;
|
|
int iVar7;
|
|
|
|
pcVar4 = param_9;
|
|
pcVar3 = param_3;
|
|
iVar7 = *(int *)(param_3 + 0x10);
|
|
iVar5 = *(int *)(param_9 + 0x10);
|
|
if (iVar5 < 0) {
|
|
iVar5 = -iVar5;
|
|
}
|
|
if (iVar7 < 0) {
|
|
iVar7 = -iVar7;
|
|
}
|
|
iVar5 = (iVar5 - param_2) - param_11;
|
|
piVar1 = (int *)(param_9 + 0x14);
|
|
piVar2 = (int *)(param_9 + 8);
|
|
param_9 = (char *)(((iVar7 - param_2) - param_5) * *(int *)(param_3 + 0x14) +
|
|
*(int *)(param_3 + 8) + param_4);
|
|
puVar6 = (ushort *)
|
|
(*(int *)(param_6 + 6) +
|
|
((((int)*(short *)(param_6 + 2) - param_2) - param_8) * (int)*(short *)(param_6 + 4) +
|
|
param_7) * 2);
|
|
if (0 < param_2) {
|
|
param_11 = param_2;
|
|
param_3 = (char *)(iVar5 * *piVar1 + *piVar2 + param_10);
|
|
do {
|
|
if (0 < param_1) {
|
|
param_2 = param_1;
|
|
do {
|
|
if ((*param_3 != '\0') && (param_12 < *puVar6)) {
|
|
*param_9 = *param_3;
|
|
}
|
|
param_3 = param_3 + 1;
|
|
param_9 = param_9 + 1;
|
|
puVar6 = puVar6 + 1;
|
|
param_2 = param_2 + -1;
|
|
} while (param_2 != 0);
|
|
}
|
|
param_3 = param_3 + (*(int *)(pcVar4 + 0x14) - param_1);
|
|
param_9 = param_9 + (*(int *)(pcVar3 + 0x14) - param_1);
|
|
param_11 = param_11 + -1;
|
|
puVar6 = puVar6 + ((int)*(short *)(param_6 + 4) - param_1);
|
|
} while (param_11 != 0);
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_01004c3c(undefined *param_1)
|
|
|
|
{
|
|
int iVar1;
|
|
|
|
iVar1 = 5;
|
|
do {
|
|
*(undefined4 *)(param_1 + 0x20) = 0xfffffc19;
|
|
*param_1 = 0;
|
|
param_1 = param_1 + 0x24;
|
|
iVar1 = iVar1 + -1;
|
|
} while (iVar1 != 0);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
int FUN_01004c60(int param_1,int param_2)
|
|
|
|
{
|
|
int iVar1;
|
|
int *piVar2;
|
|
|
|
if (0 < param_2) {
|
|
iVar1 = 0;
|
|
piVar2 = (int *)(param_1 + 0x20);
|
|
do {
|
|
if (*piVar2 < param_2) {
|
|
return iVar1;
|
|
}
|
|
iVar1 = iVar1 + 1;
|
|
piVar2 = piVar2 + 9;
|
|
} while (iVar1 < 5);
|
|
}
|
|
return -1;
|
|
}
|
|
|
|
|
|
|
|
int FUN_01004c8d(int param_1,undefined4 param_2,LPCSTR param_3,int param_4)
|
|
|
|
{
|
|
LPSTR lpString1;
|
|
int iVar1;
|
|
int iVar2;
|
|
undefined4 *puVar3;
|
|
undefined4 *puVar4;
|
|
undefined4 *puVar5;
|
|
|
|
if (-1 < param_4) {
|
|
if (param_4 < 5) {
|
|
iVar1 = 5 - param_4;
|
|
puVar4 = (undefined4 *)(param_1 + 0x90);
|
|
do {
|
|
iVar1 = iVar1 + -1;
|
|
iVar2 = 9;
|
|
puVar3 = puVar4 + -9;
|
|
puVar5 = puVar4;
|
|
while (iVar2 != 0) {
|
|
iVar2 = iVar2 + -1;
|
|
*puVar5 = *puVar3;
|
|
puVar3 = puVar3 + 1;
|
|
puVar5 = puVar5 + 1;
|
|
}
|
|
puVar4 = puVar4 + -9;
|
|
} while (iVar1 != 0);
|
|
}
|
|
lpString1 = (LPSTR)(param_1 + param_4 * 0x24);
|
|
*(undefined4 *)(lpString1 + 0x20) = param_2;
|
|
iVar1 = lstrlenA(param_3);
|
|
if (0x1e < iVar1) {
|
|
param_3[0x1f] = '\0';
|
|
}
|
|
lstrcpyA(lpString1,param_3);
|
|
lpString1[0x1f] = '\0';
|
|
}
|
|
return param_4;
|
|
}
|
|
|
|
|
|
|
|
void FUN_01004cf9(long param_1,char *param_2)
|
|
|
|
{
|
|
_ltoa(param_1,param_2,10);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_01004d18(LPSTR param_1)
|
|
|
|
{
|
|
int *lpString2;
|
|
int *lpString2_00;
|
|
LPSTR pCVar1;
|
|
long lVar2;
|
|
int iVar3;
|
|
int local_2c;
|
|
int local_28;
|
|
LPSTR local_24;
|
|
char local_1c [20];
|
|
undefined4 local_8;
|
|
|
|
local_8 = DAT_01024778;
|
|
local_28 = 0;
|
|
FUN_01004c3c(param_1);
|
|
lpString2 = FUN_010054c2(300);
|
|
if (lpString2 != (int *)0x0) {
|
|
lpString2_00 = FUN_010054c2(300);
|
|
pCVar1 = FUN_01003752(0xa6);
|
|
local_2c = 0;
|
|
local_24 = param_1;
|
|
do {
|
|
_itoa(local_2c,local_1c,10);
|
|
lstrcatA(local_1c,".Name");
|
|
FUN_01003601(pCVar1,local_1c,(LPBYTE)lpString2,(HKEY)&DAT_010013da,(HKEY)0x20);
|
|
*(undefined *)(lpString2 + 8) = 0;
|
|
lstrcpyA(local_24,(LPCSTR)lpString2);
|
|
_itoa(local_2c,local_1c,10);
|
|
lstrcatA(local_1c,".Score");
|
|
FUN_01003601(pCVar1,local_1c,(LPBYTE)lpString2,(HKEY)&DAT_010013da,(HKEY)0x12c);
|
|
lVar2 = atol((char *)lpString2);
|
|
*(long *)(local_24 + 0x20) = lVar2;
|
|
iVar3 = lstrlenA(local_24);
|
|
while (iVar3 = iVar3 + -1, -1 < iVar3) {
|
|
local_28 = local_28 + (int)local_24[iVar3];
|
|
}
|
|
local_28 = local_28 + *(int *)(local_24 + 0x20);
|
|
local_2c = local_2c + 1;
|
|
local_24 = local_24 + 0x24;
|
|
} while (local_2c < 5);
|
|
FUN_01004cf9(local_28,(char *)lpString2);
|
|
FUN_01003601(pCVar1,"Verification",(LPBYTE)lpString2_00,(HKEY)&DAT_010013da,(HKEY)0x12c);
|
|
iVar3 = lstrcmpA((LPCSTR)lpString2,(LPCSTR)lpString2_00);
|
|
if (iVar3 != 0) {
|
|
FUN_01004c3c(param_1);
|
|
}
|
|
FUN_01005541((int)lpString2);
|
|
FUN_01005541((int)lpString2_00);
|
|
}
|
|
FUN_0101cd9e();
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_01004e87(BYTE *param_1)
|
|
|
|
{
|
|
int *_Dest;
|
|
HKEY pHVar1;
|
|
int iVar2;
|
|
int local_28;
|
|
int local_24;
|
|
char local_1c [20];
|
|
undefined4 local_8;
|
|
|
|
local_8 = DAT_01024778;
|
|
local_24 = 0;
|
|
_Dest = FUN_010054c2(300);
|
|
if (_Dest != (int *)0x0) {
|
|
pHVar1 = (HKEY)FUN_01003752(0xa6);
|
|
local_28 = 0;
|
|
do {
|
|
_itoa(local_28,local_1c,10);
|
|
lstrcatA(local_1c,".Name");
|
|
FUN_010036e3(pHVar1,local_1c,param_1);
|
|
_itoa(local_28,local_1c,10);
|
|
lstrcatA(local_1c,".Score");
|
|
_ltoa(*(long *)(param_1 + 0x20),(char *)_Dest,10);
|
|
FUN_010036e3(pHVar1,local_1c,(BYTE *)_Dest);
|
|
iVar2 = lstrlenA((LPCSTR)param_1);
|
|
while (iVar2 = iVar2 + -1, -1 < iVar2) {
|
|
local_24 = local_24 + (int)(char)param_1[iVar2];
|
|
}
|
|
local_24 = local_24 + *(int *)(param_1 + 0x20);
|
|
local_28 = local_28 + 1;
|
|
param_1 = param_1 + 0x24;
|
|
} while (local_28 < 5);
|
|
FUN_01004cf9(local_24,(char *)_Dest);
|
|
FUN_010036e3(pHVar1,"Verification",(BYTE *)_Dest);
|
|
FUN_01005541((int)_Dest);
|
|
}
|
|
FUN_0101cd9e();
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_01004f99(int param_1,char *param_2)
|
|
|
|
{
|
|
LSTATUS LVar1;
|
|
int iVar2;
|
|
int iVar3;
|
|
DWORD local_24;
|
|
DWORD local_20;
|
|
char *local_1c;
|
|
HKEY local_18;
|
|
BYTE local_14 [12];
|
|
undefined4 local_8;
|
|
|
|
local_8 = DAT_01024778;
|
|
local_1c = param_2;
|
|
if (param_1 == -999) {
|
|
*param_2 = '\0';
|
|
}
|
|
else {
|
|
lstrcpyA((LPSTR)local_14,",");
|
|
LVar1 = RegCreateKeyExA((HKEY)0x80000001,"Control Panel\\International",0,(LPSTR)0x0,0,0xf003f,
|
|
(LPSECURITY_ATTRIBUTES)0x0,(PHKEY)&local_18,&local_24);
|
|
if (LVar1 == 0) {
|
|
local_20 = 10;
|
|
RegQueryValueExA(local_18,"sThousand",(LPDWORD)0x0,(LPDWORD)0x0,local_14,&local_20);
|
|
RegCloseKey(local_18);
|
|
}
|
|
local_18 = (HKEY)((param_1 % 1000000000) / 1000000);
|
|
iVar2 = (param_1 % 1000000) / 1000;
|
|
iVar3 = param_1 % 1000;
|
|
if (param_1 / 1000000000 < 1) {
|
|
if ((int)local_18 < 1) {
|
|
if (iVar2 < 1) {
|
|
sprintf(local_1c,"%ld",param_1);
|
|
}
|
|
else {
|
|
sprintf(local_1c,"%ld%s%03ld",iVar2,local_14,iVar3);
|
|
}
|
|
}
|
|
else {
|
|
sprintf(local_1c,"%ld%s%03ld%s%03ld",local_18,local_14,iVar2,local_14,iVar3);
|
|
}
|
|
}
|
|
else {
|
|
sprintf(local_1c,"%ld%s%03ld%s%03ld%s%03ld",param_1 / 1000000000,local_14,local_18,local_14,
|
|
iVar2,local_14,iVar3);
|
|
}
|
|
}
|
|
FUN_0101cd9e();
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_010050e2(HWND param_1,LPCSTR param_2,int param_3,int param_4)
|
|
|
|
{
|
|
HWND hWnd;
|
|
char local_2c [36];
|
|
undefined4 local_8;
|
|
|
|
local_8 = DAT_01024778;
|
|
if (param_4 < 5) {
|
|
FUN_01004f99(param_3,local_2c);
|
|
if (local_2c[0] != '\0') {
|
|
hWnd = GetDlgItem(param_1,param_4 + 0x191);
|
|
SetWindowTextA(hWnd,param_2);
|
|
hWnd = GetDlgItem(param_1,param_4 + 0x1f5);
|
|
SetWindowTextA(hWnd,local_2c);
|
|
}
|
|
}
|
|
FUN_0101cd9e();
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
|
|
|
|
void FUN_01005159(HWND param_1,LPCSTR param_2)
|
|
|
|
{
|
|
int iVar1;
|
|
int iVar2;
|
|
|
|
iVar1 = 0;
|
|
iVar2 = 0;
|
|
do {
|
|
if ((_DAT_01028270 == 1) && (DAT_01028274 == iVar2)) {
|
|
FUN_010050e2(param_1," ",DAT_01028268,iVar2);
|
|
iVar1 = 1;
|
|
}
|
|
FUN_010050e2(param_1,param_2,*(int *)(param_2 + 0x20),iVar2 + iVar1);
|
|
iVar2 = iVar2 + 1;
|
|
param_2 = param_2 + 0x24;
|
|
} while (iVar2 < 5);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
|
|
|
|
void FUN_010051b5(HWND param_1,int param_2,HWND param_3,int param_4)
|
|
|
|
{
|
|
LPSTR lpString2;
|
|
int nCmdShow;
|
|
HWND hWnd;
|
|
CHAR *lpCaption;
|
|
UINT uCommand;
|
|
int local_1d8;
|
|
CHAR local_1d0 [200];
|
|
CHAR local_108 [31];
|
|
undefined local_e9;
|
|
undefined4 local_8;
|
|
|
|
local_8 = DAT_01024778;
|
|
if (param_2 == 0x10) {
|
|
SendMessageA(param_1,0x111,2,0);
|
|
goto LAB_010053fe;
|
|
}
|
|
if (param_2 == 0x53) {
|
|
uCommand = 0xc;
|
|
param_3 = *(HWND *)(param_4 + 0xc);
|
|
}
|
|
else {
|
|
if (param_2 != 0x7b) {
|
|
if (param_2 == 0x110) {
|
|
FUN_01005159(param_1,DAT_0102826c);
|
|
local_1d8 = 0x259;
|
|
do {
|
|
nCmdShow = 0;
|
|
hWnd = GetDlgItem(param_1,local_1d8);
|
|
ShowWindow(hWnd,nCmdShow);
|
|
local_1d8 = local_1d8 + 1;
|
|
} while (local_1d8 < 0x263);
|
|
if (_DAT_01028270 == 1) {
|
|
if (DAT_01028274 == -1) {
|
|
_DAT_01028270 = 0;
|
|
goto LAB_010053fe;
|
|
}
|
|
hWnd = GetDlgItem(param_1,DAT_01028274 + 0x259);
|
|
ShowWindow(hWnd,5);
|
|
EnableWindow(hWnd,1);
|
|
SetFocus(hWnd);
|
|
if (DAT_01028278 != (LPCSTR)0x0) {
|
|
SetWindowTextA(hWnd,DAT_01028278);
|
|
SendMessageA(hWnd,0xb1,0,-1);
|
|
}
|
|
SendMessageA(hWnd,0xc5,0x1f,0);
|
|
}
|
|
else {
|
|
SetFocus(param_1);
|
|
}
|
|
hWnd = GetParent(param_1);
|
|
if (hWnd != (HWND)0x0) {
|
|
FUN_010077c4(hWnd,param_1);
|
|
}
|
|
goto LAB_010053fe;
|
|
}
|
|
if (param_2 != 0x111) goto LAB_010053fe;
|
|
if (param_3 == (HWND)0x1) {
|
|
if (_DAT_01028270 == 1) {
|
|
GetDlgItemTextA(param_1,DAT_01028274 + 0x259,local_108,0x20);
|
|
local_e9 = 0;
|
|
FUN_01004c8d((int)DAT_0102826c,DAT_01028268,local_108,DAT_01028274);
|
|
goto LAB_01005280;
|
|
}
|
|
}
|
|
else {
|
|
if (param_3 != (HWND)0x2) {
|
|
if (param_3 == (HWND)0x70) {
|
|
lpString2 = FUN_01003752(0x29);
|
|
lstrcpyA(local_1d0,lpString2);
|
|
uCommand = 0x101;
|
|
lpCaption = local_1d0;
|
|
lpString2 = FUN_01003752(0x28);
|
|
nCmdShow = MessageBoxA(param_1,lpString2,lpCaption,uCommand);
|
|
if (nCmdShow == 1) {
|
|
FUN_01004c3c(DAT_0102826c);
|
|
EndDialog(param_1,(uint)(_DAT_01028270 != 0));
|
|
}
|
|
}
|
|
goto LAB_010053fe;
|
|
}
|
|
LAB_01005280:
|
|
_DAT_01028270 = 0;
|
|
}
|
|
EndDialog(param_1,0);
|
|
goto LAB_010053fe;
|
|
}
|
|
uCommand = 10;
|
|
}
|
|
WinHelpA(param_3,"pinball.hlp",uCommand,(ULONG_PTR)&DAT_01023460);
|
|
LAB_010053fe:
|
|
FUN_0101cd9e();
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
|
|
|
|
void FUN_01005412(undefined4 param_1)
|
|
|
|
{
|
|
_DAT_01028270 = 0;
|
|
DAT_01028268 = 0;
|
|
DAT_0102826c = param_1;
|
|
DialogBoxParamA(DAT_01028204,"dlg_highscores",DAT_010281fc,FUN_010051b5,0);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
|
|
|
|
void FUN_01005452(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)
|
|
|
|
{
|
|
INT_PTR IVar1;
|
|
|
|
DAT_01028274 = param_3;
|
|
DAT_01028268 = param_2;
|
|
DAT_0102826c = param_1;
|
|
_DAT_01028270 = 1;
|
|
DAT_01028278 = param_4;
|
|
do {
|
|
IVar1 = DialogBoxParamA(DAT_01028204,"dlg_highscores",DAT_010281fc,FUN_010051b5,0);
|
|
} while (IVar1 != 0);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_010054ac(undefined4 param_1)
|
|
|
|
{
|
|
DAT_01024f08 = param_1;
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
|
|
|
|
int * FUN_010054c2(uint param_1)
|
|
|
|
{
|
|
int *piVar1;
|
|
|
|
piVar1 = (int *)malloc(param_1 + 4);
|
|
if (param_1 < 0xffdc) {
|
|
if (piVar1 == (int *)0x0) {
|
|
LAB_01005502:
|
|
if ((_DAT_01024f04 != 0) && (DAT_01024f08 != (code *)0x0)) {
|
|
(*DAT_01024f08)();
|
|
}
|
|
return (int *)0x0;
|
|
}
|
|
*piVar1 = param_1 << 8;
|
|
DAT_01024f00 = DAT_01024f00 + 4 + param_1;
|
|
*(undefined *)piVar1 = 0x5a;
|
|
}
|
|
else {
|
|
if (piVar1 == (int *)0x0) goto LAB_01005502;
|
|
*piVar1 = param_1 << 8;
|
|
DAT_01024f00 = DAT_01024f00 + 4 + param_1;
|
|
*(undefined *)piVar1 = 0xa5;
|
|
}
|
|
return piVar1 + 1;
|
|
}
|
|
|
|
|
|
|
|
void FUN_01005541(int param_1)
|
|
|
|
{
|
|
uint *_Memory;
|
|
|
|
_Memory = (uint *)(param_1 + -4);
|
|
DAT_01024f00 = DAT_01024f00 + (-4 - (*_Memory >> 8));
|
|
if ((*(char *)_Memory == 'Z') || (*(char *)_Memory == -0x5b)) {
|
|
free(_Memory);
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
|
|
|
|
uint * FUN_01005579(int param_1,uint param_2)
|
|
|
|
{
|
|
char cVar1;
|
|
uint *_Memory;
|
|
|
|
if (param_1 == 0) {
|
|
_Memory = (uint *)FUN_010054c2(param_2);
|
|
}
|
|
else {
|
|
_Memory = (uint *)(param_1 + -4);
|
|
DAT_01024f00 = DAT_01024f00 - (*_Memory >> 8);
|
|
if (((*(char *)_Memory == 'Z') || (*(char *)_Memory == -0x5b)) &&
|
|
(_Memory = (uint *)realloc(_Memory,param_2 + 4), _Memory == (uint *)0x0)) {
|
|
if ((_DAT_01024f04 != 0) && (DAT_01024f08 != (code *)0x0)) {
|
|
(*DAT_01024f08)();
|
|
}
|
|
_Memory = (uint *)0x0;
|
|
}
|
|
else {
|
|
cVar1 = *(char *)_Memory;
|
|
*_Memory = param_2 << 8;
|
|
DAT_01024f00 = DAT_01024f00 + param_2;
|
|
*(char *)_Memory = cVar1;
|
|
_Memory = _Memory + 1;
|
|
}
|
|
}
|
|
return _Memory;
|
|
}
|
|
|
|
|
|
|
|
void FUN_010055f3(void)
|
|
|
|
{
|
|
FUN_0100367c((HKEY)0x0,"Sounds");
|
|
FUN_0100367c((HKEY)0x0,"Music");
|
|
FUN_0100367c((HKEY)0x0,"FullScreen");
|
|
FUN_0100367c((HKEY)0x0,"Players");
|
|
FUN_0100367c((HKEY)0x0,"Left Flippper key");
|
|
FUN_0100367c((HKEY)0x0,"Right Flipper key");
|
|
FUN_0100367c((HKEY)0x0,"Plunger key");
|
|
FUN_0100367c((HKEY)0x0,"Left Table Bump key");
|
|
FUN_0100367c((HKEY)0x0,"Right Table Bump key");
|
|
FUN_0100367c((HKEY)0x0,"Bottom Table Bump key");
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_010056a9(UINT param_1,int param_2)
|
|
|
|
{
|
|
if (DAT_01024f0c != (HMENU)0x0) {
|
|
EnableMenuItem(DAT_01024f0c,param_1,(uint)(param_2 == 0));
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_010056d3(UINT param_1,int param_2)
|
|
|
|
{
|
|
if (DAT_01024f0c != (HMENU)0x0) {
|
|
CheckMenuItem(DAT_01024f0c,param_1,-(uint)(param_2 != 0) & 8);
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_010056ff(UINT param_1)
|
|
|
|
{
|
|
uint uVar1;
|
|
|
|
if (param_1 == 0xc9) {
|
|
uVar1 = (uint)(DAT_01028220 == 0);
|
|
DAT_01028220 = uVar1;
|
|
FUN_01006d34(0,7,uVar1);
|
|
}
|
|
else {
|
|
if (param_1 == 0xca) {
|
|
uVar1 = (uint)(DAT_01028224 == 0);
|
|
if (DAT_01028224 == 0) {
|
|
DAT_01028224 = uVar1;
|
|
FUN_0100afdc(0);
|
|
}
|
|
else {
|
|
DAT_01028224 = uVar1;
|
|
FUN_0100afb9();
|
|
}
|
|
}
|
|
else {
|
|
if (param_1 == 0x193) {
|
|
uVar1 = (uint)(DAT_0102822c == 0);
|
|
DAT_0102822c = uVar1;
|
|
FUN_01003be4(uVar1);
|
|
}
|
|
else {
|
|
if ((int)param_1 < 0x198) {
|
|
return;
|
|
}
|
|
if (0x19b < (int)param_1) {
|
|
return;
|
|
}
|
|
DAT_01028234 = param_1 - 0x197;
|
|
FUN_010056d3(0x198,(uint)(DAT_01028234 == 1));
|
|
FUN_010056d3(0x199,(uint)(DAT_01028234 == 2));
|
|
FUN_010056d3(0x19a,(uint)(DAT_01028234 == 3));
|
|
uVar1 = (uint)(DAT_01028234 == 4);
|
|
param_1 = 0x19b;
|
|
}
|
|
}
|
|
}
|
|
FUN_010056d3(param_1,uVar1);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
uint FUN_0100580c(ushort param_1,LPSTR param_2)
|
|
|
|
{
|
|
UINT UVar1;
|
|
uint lParam;
|
|
int iVar2;
|
|
|
|
UVar1 = MapVirtualKeyA((uint)param_1,0);
|
|
lParam = UVar1 << 0x10;
|
|
if ((0x20 < param_1) && (param_1 < 0x2f)) {
|
|
lParam = lParam | 0x1000000;
|
|
}
|
|
iVar2 = GetKeyNameTextA(lParam,param_2,0x13);
|
|
return -(uint)(iVar2 != 0) & (uint)param_2;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Could not reconcile some variable overlaps
|
|
|
|
void FUN_01005850(HWND param_1,int param_2,HWND param_3,int param_4)
|
|
|
|
{
|
|
ushort uVar1;
|
|
bool bVar2;
|
|
uint uVar3;
|
|
uint uVar4;
|
|
uint uVar5;
|
|
uint uVar6;
|
|
uint uVar7;
|
|
ushort *puVar8;
|
|
uint lParam;
|
|
WPARAM wParam;
|
|
LPSTR lpString2;
|
|
uint *puVar9;
|
|
ushort *puVar10;
|
|
CHAR *lpCaption;
|
|
LPARAM lParam_00;
|
|
UINT uCommand;
|
|
uint local_b0 [4];
|
|
uint local_a0;
|
|
uint local_9c;
|
|
uint local_98;
|
|
uint local_94;
|
|
ushort *local_90;
|
|
uint local_8c;
|
|
uint local_88;
|
|
HWND local_84;
|
|
CHAR local_80 [100];
|
|
CHAR local_1c;
|
|
undefined local_1b;
|
|
undefined4 local_8;
|
|
|
|
local_8 = DAT_01024778;
|
|
local_84 = param_1;
|
|
if (param_2 == 0x53) {
|
|
uCommand = 0xc;
|
|
param_3 = *(HWND *)(param_4 + 0xc);
|
|
}
|
|
else {
|
|
if (param_2 != 0x7b) {
|
|
if (param_2 == 0x110) {
|
|
local_90 = &DAT_01023508;
|
|
if (DAT_01023508 != -1) {
|
|
do {
|
|
uVar1 = *local_90;
|
|
local_94 = (uint)uVar1 & 0xff;
|
|
if ((uVar1 & 0x4000) == 0) {
|
|
lParam = local_94;
|
|
if ((char)((uint)uVar1 >> 8) < '\0') {
|
|
local_90 = local_90 + 1;
|
|
local_98 = local_98 & 0xffff0000 | (uint)*local_90;
|
|
lParam = local_98;
|
|
}
|
|
local_98 = lParam;
|
|
if ((ushort)local_94 <= (ushort)local_98) goto LAB_01005cb1;
|
|
}
|
|
else {
|
|
local_88 = 0x80;
|
|
local_98 = local_94;
|
|
do {
|
|
uCommand = MapVirtualKeyA(local_88 & 0xffff,2);
|
|
if (local_98 == uCommand) break;
|
|
local_88 = local_88 + 1;
|
|
} while ((ushort)local_88 < 0x100);
|
|
if ((short)local_88 != 0x100) {
|
|
local_1c = (CHAR)local_94;
|
|
local_1b = 0;
|
|
local_98 = local_88;
|
|
local_94 = local_88;
|
|
LAB_01005cb1:
|
|
local_8c = local_94 & 0xffff;
|
|
do {
|
|
if (((uVar1 & 0x4000) != 0) ||
|
|
(lParam = FUN_0100580c((ushort)local_94,&local_1c), lParam != 0)) {
|
|
local_88 = SendDlgItemMessageA(local_84,0x191,0x14a,0xffffffff,(LPARAM)&local_1c
|
|
);
|
|
local_88 = local_88 & 0xffff;
|
|
SendDlgItemMessageA(local_84,0x191,0x151,local_88,local_8c);
|
|
if (local_8c == DAT_01028238) {
|
|
SendDlgItemMessageA(local_84,0x191,0x14e,local_88,0);
|
|
}
|
|
local_88 = SendDlgItemMessageA(local_84,0x192,0x14a,0xffffffff,(LPARAM)&local_1c
|
|
);
|
|
local_88 = local_88 & 0xffff;
|
|
SendDlgItemMessageA(local_84,0x192,0x151,local_88,local_8c);
|
|
if (local_8c == DAT_0102823c) {
|
|
SendDlgItemMessageA(local_84,0x192,0x14e,local_88,0);
|
|
}
|
|
local_88 = SendDlgItemMessageA(local_84,0x193,0x14a,0xffffffff,(LPARAM)&local_1c
|
|
);
|
|
local_88 = local_88 & 0xffff;
|
|
SendDlgItemMessageA(local_84,0x193,0x151,local_88,local_8c);
|
|
if (local_8c == DAT_01028240) {
|
|
SendDlgItemMessageA(local_84,0x193,0x14e,local_88,0);
|
|
}
|
|
local_88 = SendDlgItemMessageA(local_84,0x194,0x14a,0xffffffff,(LPARAM)&local_1c
|
|
);
|
|
local_88 = local_88 & 0xffff;
|
|
SendDlgItemMessageA(local_84,0x194,0x151,local_88,local_8c);
|
|
if (local_8c == DAT_01028244) {
|
|
SendDlgItemMessageA(local_84,0x194,0x14e,local_88,0);
|
|
}
|
|
local_88 = SendDlgItemMessageA(local_84,0x195,0x14a,0xffffffff,(LPARAM)&local_1c
|
|
);
|
|
local_88 = local_88 & 0xffff;
|
|
SendDlgItemMessageA(local_84,0x195,0x151,local_88,local_8c);
|
|
if (local_8c == DAT_01028248) {
|
|
SendDlgItemMessageA(local_84,0x195,0x14e,local_88,0);
|
|
}
|
|
local_88 = SendDlgItemMessageA(local_84,0x196,0x14a,0xffffffff,(LPARAM)&local_1c
|
|
);
|
|
local_88 = local_88 & 0xffff;
|
|
SendDlgItemMessageA(local_84,0x196,0x151,local_88,local_8c);
|
|
if (local_8c == DAT_0102824c) {
|
|
SendDlgItemMessageA(local_84,0x196,0x14e,local_88,0);
|
|
}
|
|
}
|
|
local_94 = local_94 + 1;
|
|
local_8c = local_8c + 1;
|
|
} while ((ushort)local_94 <= (ushort)local_98);
|
|
}
|
|
}
|
|
local_90 = local_90 + 1;
|
|
} while (*local_90 != 0xffff);
|
|
}
|
|
}
|
|
else {
|
|
if (param_2 == 0x111) {
|
|
local_98 = (uint)param_3 & 0xffff;
|
|
if (local_98 == 1) {
|
|
local_94 = 0;
|
|
lParam = SendDlgItemMessageA(param_1,0x191,0x147,0,0);
|
|
local_b0[0] = SendDlgItemMessageA(local_84,0x191,0x150,lParam & 0xffff,0);
|
|
lParam = SendDlgItemMessageA(local_84,0x192,0x147,0,0);
|
|
local_b0[1] = SendDlgItemMessageA(local_84,0x192,0x150,lParam & 0xffff,0);
|
|
lParam = SendDlgItemMessageA(local_84,0x193,0x147,0,0);
|
|
local_b0[2] = SendDlgItemMessageA(local_84,0x193,0x150,lParam & 0xffff,0);
|
|
lParam = SendDlgItemMessageA(local_84,0x194,0x147,0,0);
|
|
local_b0[3] = SendDlgItemMessageA(local_84,0x194,0x150,lParam & 0xffff,0);
|
|
lParam = SendDlgItemMessageA(local_84,0x195,0x147,0,0);
|
|
local_a0 = SendDlgItemMessageA(local_84,0x195,0x150,lParam & 0xffff,0);
|
|
lParam = SendDlgItemMessageA(local_84,0x196,0x147,0,0);
|
|
lParam = SendDlgItemMessageA(local_84,0x196,0x150,lParam & 0xffff,0);
|
|
puVar9 = local_b0;
|
|
puVar10 = (ushort *)0x1;
|
|
local_9c = lParam;
|
|
do {
|
|
puVar8 = puVar10;
|
|
if (local_94 != 0) goto LAB_01005f31;
|
|
while ((local_90 = puVar8, (int)local_90 < 6 && (local_94 == 0))) {
|
|
if (*puVar9 == local_b0[(int)local_90]) {
|
|
lpString2 = FUN_01003752(0x2b);
|
|
lstrcpyA(local_80,lpString2);
|
|
uCommand = 0x2000;
|
|
lpCaption = local_80;
|
|
lpString2 = FUN_01003752(0x27);
|
|
MessageBoxA(local_84,lpString2,lpCaption,uCommand);
|
|
local_94 = 1;
|
|
}
|
|
puVar8 = (ushort *)((int)local_90 + 1);
|
|
}
|
|
puVar9 = puVar9 + 1;
|
|
bVar2 = (int)puVar10 < 5;
|
|
puVar10 = (ushort *)((int)puVar10 + 1);
|
|
} while (bVar2);
|
|
uVar3 = local_b0[0];
|
|
uVar4 = local_b0[1];
|
|
uVar5 = local_b0[2];
|
|
uVar6 = local_b0[3];
|
|
uVar7 = local_a0;
|
|
if (local_94 != 0) goto LAB_01005f31;
|
|
}
|
|
else {
|
|
uVar3 = DAT_01028238;
|
|
uVar4 = DAT_0102823c;
|
|
uVar5 = DAT_01028240;
|
|
uVar6 = DAT_01028244;
|
|
uVar7 = DAT_01028248;
|
|
lParam = DAT_0102824c;
|
|
if (local_98 != 2) {
|
|
if (local_98 == 0x1f5) {
|
|
lParam_00 = 0;
|
|
lParam = FUN_0100580c(DAT_01028250,&local_1c);
|
|
wParam = SendDlgItemMessageA(local_84,0x191,0x158,0,lParam);
|
|
SendDlgItemMessageA(local_84,0x191,0x14e,wParam,lParam_00);
|
|
lParam_00 = 0;
|
|
lParam = FUN_0100580c(DAT_01028254,&local_1c);
|
|
wParam = SendDlgItemMessageA(local_84,0x192,0x158,0,lParam);
|
|
SendDlgItemMessageA(local_84,0x192,0x14e,wParam,lParam_00);
|
|
lParam_00 = 0;
|
|
lParam = FUN_0100580c(DAT_01028258,&local_1c);
|
|
wParam = SendDlgItemMessageA(local_84,0x193,0x158,0,lParam);
|
|
SendDlgItemMessageA(local_84,0x193,0x14e,wParam,lParam_00);
|
|
lParam_00 = 0;
|
|
lParam = FUN_0100580c(DAT_0102825c,&local_1c);
|
|
wParam = SendDlgItemMessageA(local_84,0x194,0x158,0,lParam);
|
|
SendDlgItemMessageA(local_84,0x194,0x14e,wParam,lParam_00);
|
|
lParam_00 = 0;
|
|
lParam = FUN_0100580c(DAT_01028260,&local_1c);
|
|
wParam = SendDlgItemMessageA(local_84,0x195,0x158,0,lParam);
|
|
SendDlgItemMessageA(local_84,0x195,0x14e,wParam,lParam_00);
|
|
lParam_00 = 0;
|
|
lParam = FUN_0100580c(DAT_01028264,&local_1c);
|
|
wParam = SendDlgItemMessageA(local_84,0x196,0x158,0,lParam);
|
|
SendDlgItemMessageA(local_84,0x196,0x14e,wParam,lParam_00);
|
|
}
|
|
goto LAB_01005f31;
|
|
}
|
|
}
|
|
DAT_0102824c = lParam;
|
|
DAT_01028248 = uVar7;
|
|
DAT_01028244 = uVar6;
|
|
DAT_01028240 = uVar5;
|
|
DAT_0102823c = uVar4;
|
|
DAT_01028238 = uVar3;
|
|
EndDialog(local_84,local_98);
|
|
}
|
|
}
|
|
goto LAB_01005f31;
|
|
}
|
|
uCommand = 10;
|
|
}
|
|
WinHelpA(param_3,"pinball.hlp",uCommand,(ULONG_PTR)&DAT_01023540);
|
|
LAB_01005f31:
|
|
FUN_0101cd9e();
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_01005f45(void)
|
|
|
|
{
|
|
DialogBoxParamA(DAT_01028204,"KEYMAPPER",DAT_010281fc,FUN_01005850,0);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
|
|
|
|
void FUN_01005f69(HMENU param_1)
|
|
|
|
{
|
|
int *piVar1;
|
|
|
|
DAT_01024f0c = param_1;
|
|
DAT_01028220 = (HKEY)0x1;
|
|
DAT_01028224 = (HKEY)0x0;
|
|
DAT_0102822c = (HKEY)0x0;
|
|
DAT_01028228 = (HKEY)&DAT_00000005;
|
|
DAT_01028230 = (HKEY)0x2;
|
|
_DAT_01028250 = (HKEY)0x5a;
|
|
_DAT_01028254 = (HKEY)0xbf;
|
|
_DAT_01028258 = (HKEY)0x20;
|
|
_DAT_0102825c = (HKEY)0x58;
|
|
_DAT_01028260 = (HKEY)0xbe;
|
|
_DAT_01028264 = (HKEY)0x26;
|
|
FUN_010037a6(0x9f,(int *)&DAT_01028250);
|
|
FUN_010037a6(0xa0,(int *)&DAT_01028254);
|
|
FUN_010037a6(0xa1,(int *)&DAT_01028258);
|
|
FUN_010037a6(0xa2,(int *)&DAT_0102825c);
|
|
FUN_010037a6(0xa3,(int *)&DAT_01028260);
|
|
FUN_010037a6(0xa4,(int *)&DAT_01028264);
|
|
DAT_01028238 = _DAT_01028250;
|
|
DAT_0102823c = _DAT_01028254;
|
|
DAT_01028240 = _DAT_01028258;
|
|
DAT_01028244 = _DAT_0102825c;
|
|
DAT_01028248 = _DAT_01028260;
|
|
DAT_01028234 = (HKEY)0x1;
|
|
DAT_0102824c = _DAT_01028264;
|
|
DAT_01028220 = FUN_01003588((LPCSTR)0x0,"Sounds",DAT_01028220);
|
|
DAT_01028224 = FUN_01003588((LPCSTR)0x0,"Music",DAT_01028224);
|
|
DAT_01028228 = FUN_01003588((LPCSTR)0x0,"Average",DAT_01028228);
|
|
DAT_0102822c = FUN_01003588((LPCSTR)0x0,"FullScreen",DAT_0102822c);
|
|
DAT_01028230 = FUN_01003588((LPCSTR)0x0,"Priority_Adjustment",DAT_01028230);
|
|
DAT_01028234 = FUN_01003588((LPCSTR)0x0,"Players",DAT_01028234);
|
|
DAT_01028238 = FUN_01003588((LPCSTR)0x0,"Left Flippper key",DAT_01028238);
|
|
DAT_0102823c = FUN_01003588((LPCSTR)0x0,"Right Flipper key",DAT_0102823c);
|
|
DAT_01028240 = FUN_01003588((LPCSTR)0x0,"Plunger key",DAT_01028240);
|
|
DAT_01028244 = FUN_01003588((LPCSTR)0x0,"Left Table Bump key",DAT_01028244);
|
|
DAT_01028248 = FUN_01003588((LPCSTR)0x0,"Right Table Bump key",DAT_01028248);
|
|
DAT_0102824c = FUN_01003588((LPCSTR)0x0,"Bottom Table Bump key",DAT_0102824c);
|
|
FUN_010056d3(0xc9,(int)DAT_01028220);
|
|
FUN_01006d34(0,7,(int)DAT_01028220);
|
|
FUN_010056d3(0xca,(int)DAT_01028224);
|
|
FUN_010056d3(0x193,(int)DAT_0102822c);
|
|
FUN_010056d3(0x198,(uint)(DAT_01028234 == (HKEY)0x1));
|
|
FUN_010056d3(0x199,(uint)(DAT_01028234 == (HKEY)0x2));
|
|
FUN_010056d3(0x19a,(uint)(DAT_01028234 == (HKEY)0x3));
|
|
FUN_010056d3(0x19b,(uint)(DAT_01028234 == (HKEY)0x4));
|
|
piVar1 = FUN_010054c2(500);
|
|
if (piVar1 != (int *)0x0) {
|
|
FUN_01003601((LPCSTR)0x0,"Shell Exe",(LPBYTE)piVar1,(HKEY)&DAT_010013da,(HKEY)0x1f4);
|
|
if ((*(char *)piVar1 == '\0') && (DAT_01024f0c != (HMENU)0x0)) {
|
|
DeleteMenu(DAT_01024f0c,0x195,0);
|
|
DrawMenuBar(DAT_010281fc);
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
undefined4 FUN_01006270(int param_1,int param_2,int param_3)
|
|
|
|
{
|
|
short *psVar1;
|
|
int iVar2;
|
|
int iVar3;
|
|
int iVar4;
|
|
|
|
psVar1 = *(short **)(*(int *)(param_1 + 6) + param_2 * 4);
|
|
iVar3 = (int)*psVar1;
|
|
iVar4 = 0;
|
|
if (0 < iVar3) {
|
|
psVar1 = psVar1 + 1;
|
|
do {
|
|
iVar2 = (int)*psVar1;
|
|
if (iVar2 == param_3) {
|
|
return *(undefined4 *)(psVar1 + 3);
|
|
}
|
|
if (iVar2 != param_3 && param_3 <= iVar2) {
|
|
return 0;
|
|
}
|
|
iVar4 = iVar4 + 1;
|
|
psVar1 = psVar1 + 5;
|
|
} while (iVar4 < iVar3);
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
|
|
|
|
undefined4 FUN_010062b1(int param_1,int param_2,int param_3,int param_4)
|
|
|
|
{
|
|
short *psVar1;
|
|
int iVar2;
|
|
int iVar3;
|
|
int iVar4;
|
|
|
|
psVar1 = *(short **)(*(int *)(param_1 + 6) + param_2 * 4);
|
|
iVar2 = (int)*psVar1;
|
|
iVar3 = 0;
|
|
iVar4 = 0;
|
|
if (0 < iVar2) {
|
|
psVar1 = psVar1 + 1;
|
|
do {
|
|
if ((int)*psVar1 == param_3) {
|
|
if (iVar4 == param_4) {
|
|
return *(undefined4 *)(psVar1 + 1);
|
|
}
|
|
iVar4 = iVar4 + 1;
|
|
}
|
|
else {
|
|
if (param_3 < (int)*psVar1) {
|
|
return 0;
|
|
}
|
|
}
|
|
iVar3 = iVar3 + 1;
|
|
psVar1 = psVar1 + 5;
|
|
} while (iVar3 < iVar2);
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
|
|
|
|
void FUN_010062fe(int param_1,int param_2,int param_3)
|
|
|
|
{
|
|
FUN_010062b1(param_1,param_2,param_3,0);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
undefined4 FUN_0100631c(int param_1,int param_2,int param_3,int param_4)
|
|
|
|
{
|
|
short *psVar1;
|
|
int iVar2;
|
|
int iVar3;
|
|
int iVar4;
|
|
|
|
psVar1 = *(short **)(*(int *)(param_1 + 6) + param_2 * 4);
|
|
iVar2 = (int)*psVar1;
|
|
iVar3 = 0;
|
|
iVar4 = 0;
|
|
if (0 < iVar2) {
|
|
psVar1 = psVar1 + 1;
|
|
do {
|
|
if ((int)*psVar1 == param_3) {
|
|
if (param_4 == iVar4) {
|
|
return *(undefined4 *)(psVar1 + 3);
|
|
}
|
|
iVar4 = iVar4 + 1;
|
|
}
|
|
else {
|
|
if (param_3 < (int)*psVar1) {
|
|
return 0;
|
|
}
|
|
}
|
|
iVar3 = iVar3 + 1;
|
|
psVar1 = psVar1 + 5;
|
|
} while (iVar3 < iVar2);
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
|
|
|
|
int FUN_01006369(short *param_1,LPCSTR param_2)
|
|
|
|
{
|
|
int iVar1;
|
|
int iVar2;
|
|
int iVar3;
|
|
LPCSTR pCVar4;
|
|
int iVar5;
|
|
bool bVar6;
|
|
|
|
iVar1 = lstrlenA(param_2);
|
|
iVar5 = (int)*param_1;
|
|
do {
|
|
do {
|
|
iVar5 = iVar5 + -1;
|
|
if (iVar5 < 0) {
|
|
return -1;
|
|
}
|
|
iVar2 = FUN_01006270((int)param_1,iVar5,3);
|
|
iVar3 = 0;
|
|
} while (iVar2 == 0);
|
|
bVar6 = iVar1 == 0;
|
|
if (0 < iVar1) {
|
|
pCVar4 = param_2;
|
|
do {
|
|
if (*pCVar4 != pCVar4[iVar2 - (int)param_2]) break;
|
|
iVar3 = iVar3 + 1;
|
|
pCVar4 = pCVar4 + 1;
|
|
} while (iVar3 < iVar1);
|
|
bVar6 = iVar3 == iVar1;
|
|
}
|
|
if (((bVar6) && (param_2[iVar3] == '\0')) && (*(char *)(iVar3 + iVar2) == '\0')) {
|
|
return iVar5;
|
|
}
|
|
} while( true );
|
|
}
|
|
|
|
|
|
|
|
undefined4 FUN_010063db(short *param_1,LPCSTR param_2,int param_3)
|
|
|
|
{
|
|
int iVar1;
|
|
undefined4 uVar2;
|
|
|
|
iVar1 = FUN_01006369(param_1,param_2);
|
|
if (iVar1 < 0) {
|
|
uVar2 = 0;
|
|
}
|
|
else {
|
|
uVar2 = FUN_01006270((int)param_1,iVar1,param_3);
|
|
}
|
|
return uVar2;
|
|
}
|
|
|
|
|
|
|
|
void FUN_01006408(short *param_1)
|
|
|
|
{
|
|
short *psVar1;
|
|
short *psVar2;
|
|
LPCVOID *ppvVar3;
|
|
int local_8;
|
|
|
|
psVar2 = param_1;
|
|
local_8 = 0;
|
|
if (0 < *param_1) {
|
|
do {
|
|
psVar1 = *(short **)(*(int *)(psVar2 + 3) + local_8 * 4);
|
|
if (psVar1 != (short *)0x0) {
|
|
param_1 = (short *)0x0;
|
|
if (0 < *psVar1) {
|
|
ppvVar3 = (LPCVOID *)(psVar1 + 4);
|
|
do {
|
|
if ((LPCVOID *)*ppvVar3 != (LPCVOID *)0x0) {
|
|
if (*(short *)((int)ppvVar3 + -6) == 1) {
|
|
FUN_0100460c((LPCVOID *)*ppvVar3);
|
|
}
|
|
FUN_01005541((int)*ppvVar3);
|
|
}
|
|
param_1 = (short *)((int)param_1 + 1);
|
|
ppvVar3 = (LPCVOID *)((int)ppvVar3 + 10);
|
|
} while ((int)param_1 < (int)*psVar1);
|
|
}
|
|
FUN_01005541((int)psVar1);
|
|
}
|
|
local_8 = local_8 + 1;
|
|
} while (local_8 < (int)*psVar2);
|
|
}
|
|
if (*(int *)(psVar2 + 1) != 0) {
|
|
FUN_01005541(*(int *)(psVar2 + 1));
|
|
}
|
|
FUN_01005541(*(int *)(psVar2 + 3));
|
|
FUN_01005541((int)psVar2);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
uint __thiscall FUN_01006498(uint3 param_1,HFILE param_2)
|
|
|
|
{
|
|
UINT UVar1;
|
|
uint uStack8;
|
|
|
|
uStack8 = (uint)param_1;
|
|
UVar1 = _lread(param_2,(LPVOID)((int)&uStack8 + 3),1);
|
|
return UVar1 & 0xffffff00 | uStack8 >> 0x18;
|
|
}
|
|
|
|
|
|
|
|
undefined4 FUN_010064bd(HFILE param_1)
|
|
|
|
{
|
|
undefined4 local_8;
|
|
|
|
local_8 = 0;
|
|
_lread(param_1,&local_8,4);
|
|
return local_8;
|
|
}
|
|
|
|
|
|
|
|
void FUN_010064e2(LPCSTR param_1)
|
|
|
|
{
|
|
short *psVar1;
|
|
char cVar2;
|
|
ushort uVar3;
|
|
HFILE hFile;
|
|
int iVar4;
|
|
int *piVar5;
|
|
int *lpBuffer;
|
|
uint uVar6;
|
|
int **ppiVar7;
|
|
int *extraout_ECX;
|
|
int *piVar8;
|
|
int *extraout_ECX_00;
|
|
int *lBytes;
|
|
int iVar9;
|
|
int **ppiVar10;
|
|
undefined local_164;
|
|
short local_163;
|
|
short local_161;
|
|
short local_15f;
|
|
short local_15d;
|
|
long local_15b;
|
|
byte local_157;
|
|
int local_154;
|
|
int local_150;
|
|
HFILE local_14c;
|
|
_OFSTRUCT local_148;
|
|
CHAR local_c0 [71];
|
|
CHAR local_79 [104];
|
|
ushort local_11;
|
|
ushort local_b;
|
|
undefined4 local_8;
|
|
|
|
local_8 = DAT_01024778;
|
|
hFile = OpenFile(param_1,(LPOFSTRUCT)&local_148,0);
|
|
local_14c = hFile;
|
|
if (hFile == -1) goto LAB_010067e1;
|
|
local_14c = hFile;
|
|
_lread(hFile,local_c0,0xb7);
|
|
iVar4 = lstrcmpA("PARTOUT(4.0)RESOURCE",local_c0);
|
|
if (iVar4 != 0) {
|
|
_lclose(hFile);
|
|
goto LAB_010067e1;
|
|
}
|
|
piVar5 = FUN_010054c2(10);
|
|
if (piVar5 == (int *)0x0) {
|
|
_lclose(hFile);
|
|
goto LAB_010067e1;
|
|
}
|
|
iVar4 = lstrlenA(local_79);
|
|
if (iVar4 < 1) {
|
|
*(undefined4 *)((int)piVar5 + 2) = 0;
|
|
LAB_010065b3:
|
|
if (local_b == 0) {
|
|
LAB_010065e9:
|
|
lpBuffer = FUN_010054c2((uint)local_11 << 2);
|
|
*(int **)((int)piVar5 + 6) = lpBuffer;
|
|
if (lpBuffer != (int *)0x0) {
|
|
local_150 = 0;
|
|
lpBuffer = extraout_ECX;
|
|
if (local_11 != 0) {
|
|
do {
|
|
uVar6 = FUN_01006498((uint3)lpBuffer,local_14c);
|
|
cVar2 = (char)uVar6;
|
|
if (cVar2 < '\x01') {
|
|
iVar4 = 0;
|
|
}
|
|
else {
|
|
iVar4 = (int)cVar2 + -1;
|
|
}
|
|
iVar9 = local_150 * 4;
|
|
lpBuffer = FUN_010054c2(iVar4 * 10 + 0xc);
|
|
*(int **)(iVar9 + *(int *)((int)piVar5 + 6)) = lpBuffer;
|
|
psVar1 = *(short **)(iVar9 + *(int *)((int)piVar5 + 6));
|
|
if (psVar1 == (short *)0x0) break;
|
|
local_154 = 0;
|
|
*psVar1 = (short)cVar2;
|
|
piVar8 = (int *)(int)cVar2;
|
|
lpBuffer = piVar8;
|
|
if (0 < (int)piVar8) {
|
|
ppiVar10 = (int **)(psVar1 + 4);
|
|
lpBuffer = piVar8;
|
|
do {
|
|
uVar6 = FUN_01006498((uint3)lpBuffer,local_14c);
|
|
uVar3 = (ushort)uVar6 & 0xff;
|
|
*(ushort *)((int)ppiVar10 + -6) = uVar3;
|
|
lBytes = (int *)(int)*(short *)(&DAT_010235d0 + (int)(short)uVar3 * 2);
|
|
if ((int)lBytes < 0) {
|
|
lBytes = (int *)FUN_010064bd(local_14c);
|
|
}
|
|
if ((int)(short)uVar3 == 1) {
|
|
_hread(local_14c,&local_164,0xe);
|
|
ppiVar7 = (int **)FUN_010054c2(0x25);
|
|
*(int ***)ppiVar10 = ppiVar7;
|
|
if (ppiVar7 == (int **)0x0) goto LAB_010067bb;
|
|
if ((local_157 & 2) == 0) {
|
|
iVar4 = FUN_010045aa(ppiVar7,(int)local_163,(int)local_161,(uint)local_157 & 1);
|
|
}
|
|
else {
|
|
iVar4 = FUN_0100459a(ppiVar7,(int *)(int)local_163,(int *)(int)local_161);
|
|
}
|
|
if (iVar4 != 0) goto LAB_010067bb;
|
|
_hread(local_14c,(LPVOID)(*ppiVar10)[2],local_15b);
|
|
*(int *)((int)*ppiVar10 + 0x1d) = (int)local_15f;
|
|
lpBuffer = *ppiVar10;
|
|
*(int *)((int)lpBuffer + 0x21) = (int)local_15d;
|
|
}
|
|
else {
|
|
lpBuffer = FUN_010054c2((uint)lBytes);
|
|
*ppiVar10 = lpBuffer;
|
|
if (lpBuffer == (int *)0x0) goto LAB_010067bb;
|
|
_hread(local_14c,lpBuffer,(long)lBytes);
|
|
lpBuffer = extraout_ECX_00;
|
|
}
|
|
local_154 = local_154 + 1;
|
|
ppiVar10[-1] = lBytes;
|
|
*(short *)piVar5 = (short)local_150 + 1;
|
|
ppiVar10 = (int **)((int)ppiVar10 + 10);
|
|
} while (local_154 < (int)piVar8);
|
|
}
|
|
local_150 = local_150 + 1;
|
|
} while (local_150 < (int)(uint)local_11);
|
|
}
|
|
LAB_010067bb:
|
|
_lclose(local_14c);
|
|
if ((int)*(short *)piVar5 != (uint)local_11) {
|
|
FUN_01006408((short *)piVar5);
|
|
}
|
|
goto LAB_010067e1;
|
|
}
|
|
}
|
|
else {
|
|
lpBuffer = FUN_010054c2((uint)local_b);
|
|
if (lpBuffer != (int *)0x0) {
|
|
_lread(local_14c,lpBuffer,(uint)local_b);
|
|
FUN_01005541((int)lpBuffer);
|
|
goto LAB_010065e9;
|
|
}
|
|
_lclose(local_14c);
|
|
}
|
|
if (*(int *)((int)piVar5 + 2) != 0) {
|
|
FUN_01005541(*(int *)((int)piVar5 + 2));
|
|
}
|
|
}
|
|
else {
|
|
iVar4 = lstrlenA(local_79);
|
|
lpBuffer = FUN_010054c2(iVar4 + 1);
|
|
*(int **)((int)piVar5 + 2) = lpBuffer;
|
|
if (lpBuffer != (int *)0x0) {
|
|
lstrcpyA((LPSTR)lpBuffer,local_79);
|
|
goto LAB_010065b3;
|
|
}
|
|
_lclose(hFile);
|
|
}
|
|
FUN_01005541((int)piVar5);
|
|
LAB_010067e1:
|
|
FUN_0101cd9e();
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_010067f3(void)
|
|
|
|
{
|
|
UINT UVar1;
|
|
UINT UVar2;
|
|
UINT UVar3;
|
|
int iVar4;
|
|
UINT uCode;
|
|
CHAR local_1c [20];
|
|
undefined4 local_8;
|
|
|
|
DAT_010235f0 = 0xffffffff;
|
|
DAT_010235ec = 0xffffffff;
|
|
local_8 = DAT_01024778;
|
|
uCode = 0;
|
|
do {
|
|
UVar2 = MapVirtualKeyA(uCode,1);
|
|
UVar1 = uCode;
|
|
if (UVar2 == 0x10) break;
|
|
uCode = uCode + 1;
|
|
UVar1 = DAT_010235ec;
|
|
} while ((int)uCode < 0x100);
|
|
do {
|
|
DAT_010235ec = UVar1;
|
|
uCode = uCode + 1;
|
|
UVar2 = DAT_010235f0;
|
|
if (0xff < (int)uCode) break;
|
|
UVar3 = MapVirtualKeyA(uCode,1);
|
|
UVar1 = DAT_010235ec;
|
|
UVar2 = uCode;
|
|
} while (UVar3 != 0x10);
|
|
DAT_010235f0 = UVar2;
|
|
iVar4 = GetKeyNameTextA(DAT_010235ec << 0x10,local_1c,0x13);
|
|
if ((iVar4 != 0) && (iVar4 = _strnicmp(local_1c,"right",5), uCode = DAT_010235ec, iVar4 != 0)) {
|
|
DAT_010235ec = DAT_010235f0;
|
|
DAT_010235f0 = uCode;
|
|
}
|
|
iVar4 = GetKeyNameTextA(DAT_010235f0 << 0x10,local_1c,0x13);
|
|
if ((iVar4 != 0) && (iVar4 = _strnicmp(local_1c,"left",4), uCode = DAT_010235ec, iVar4 != 0)) {
|
|
DAT_010235ec = DAT_010235f0;
|
|
DAT_010235f0 = uCode;
|
|
}
|
|
FUN_0101cd9e();
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
|
|
|
|
LRESULT FUN_010068f7(HWND param_1,UINT param_2,WPARAM param_3,int param_4)
|
|
|
|
{
|
|
LRESULT LVar1;
|
|
int iVar2;
|
|
int iVar3;
|
|
int iVar4;
|
|
|
|
if (param_2 != 0x3bd) {
|
|
// WARNING: Could not recover jumptable at 0x01006906. Too many branches
|
|
// WARNING: Treating indirect jump as call
|
|
LVar1 = DefWindowProcA(param_1,param_2,param_3,param_4);
|
|
return LVar1;
|
|
}
|
|
iVar2 = -1;
|
|
iVar3 = 0;
|
|
if (0 < DAT_01028208) {
|
|
iVar4 = 0;
|
|
do {
|
|
if ((*(int *)((int)&DAT_01024f3c + iVar4) == param_4) &&
|
|
((iVar2 < 0 || (*(uint *)((int)&DAT_01024f1c + iVar4) < (uint)(&DAT_01024f1c)[iVar2])))) {
|
|
iVar2 = iVar3;
|
|
}
|
|
iVar3 = iVar3 + 1;
|
|
iVar4 = iVar4 + 4;
|
|
} while (iVar3 < DAT_01028208);
|
|
if (-1 < iVar2) {
|
|
(&DAT_01024f1c)[iVar2] = 0;
|
|
(&DAT_01024f3c)[iVar2] = 0;
|
|
}
|
|
}
|
|
(*_DAT_01024f68)(2,param_4,iVar2);
|
|
return 0;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
|
|
|
|
void FUN_01006973(HINSTANCE param_1,int param_2,undefined *param_3)
|
|
|
|
{
|
|
int iVar1;
|
|
FILE *_File;
|
|
LPSTR lpText;
|
|
LPCSTR lpCaption;
|
|
UINT uType;
|
|
WNDCLASSA local_15c;
|
|
CHAR local_134 [300];
|
|
undefined4 local_8;
|
|
|
|
local_8 = DAT_01024778;
|
|
if (8 < param_2) {
|
|
param_2 = 8;
|
|
}
|
|
DAT_01028208 = param_2;
|
|
if ((DAT_01024f64 == (HWND)0x0) && (DAT_01028208 = param_2, DAT_01024f5c == (short *)0x0)) {
|
|
DAT_01024f18 = 0xffff;
|
|
iVar1 = 0;
|
|
DAT_01028208 = param_2;
|
|
if (0 < param_2) {
|
|
do {
|
|
(&DAT_01024f1c)[iVar1] = 0;
|
|
(&DAT_01024f3c)[iVar1] = 0;
|
|
iVar1 = iVar1 + 1;
|
|
} while (iVar1 < param_2);
|
|
}
|
|
_DAT_01024f68 = param_3;
|
|
if (param_3 == (undefined *)0x0) {
|
|
_DAT_01024f68 = &DAT_010068ef;
|
|
}
|
|
FUN_010076bf(local_134,"wavemix.inf",300);
|
|
_File = fopen(local_134,"r");
|
|
if (_File == (FILE *)0x0) {
|
|
uType = 0x2000;
|
|
lpCaption = "";
|
|
lpText = FUN_01003752(0x2a);
|
|
MessageBoxA(DAT_010281fc,lpText,lpCaption,uType);
|
|
}
|
|
else {
|
|
fclose(_File);
|
|
}
|
|
local_15c.style = 0;
|
|
local_15c.lpfnWndProc = FUN_010068f7;
|
|
local_15c.cbClsExtra = 0;
|
|
local_15c.cbWndExtra = 0;
|
|
local_15c.hInstance = param_1;
|
|
local_15c.hIcon = (HICON)0x0;
|
|
local_15c.hCursor = (HCURSOR)0x0;
|
|
local_15c.hbrBackground = (HBRUSH)0x0;
|
|
local_15c.lpszMenuName = (LPCSTR)0x0;
|
|
local_15c.lpszClassName = "WaveMixSoundGuy";
|
|
RegisterClassA(&local_15c);
|
|
DAT_01024f64 = CreateWindowExA(0,"WaveMixSoundGuy",(LPCSTR)0x0,0x80000000,-0x80000000,0,
|
|
-0x80000000,0,(HWND)0x0,(HMENU)0x0,param_1,(LPVOID)0x0);
|
|
if (DAT_01024f64 != (HWND)0x0) {
|
|
DAT_01024f60 = param_1;
|
|
DAT_01024f5c = (short *)FUN_01020f2d();
|
|
if (DAT_01024f5c != (short *)0x0) {
|
|
FUN_0101d918(DAT_01024f5c,DAT_01028208,2);
|
|
}
|
|
}
|
|
}
|
|
FUN_0101cd9e();
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_01006af6(void)
|
|
|
|
{
|
|
if (DAT_01024f64 != (HWND)0x0) {
|
|
DestroyWindow(DAT_01024f64);
|
|
DAT_01024f64 = (HWND)0x0;
|
|
}
|
|
if (DAT_01024f5c != (short *)0x0) {
|
|
FUN_0101e434(DAT_01024f5c,0,1);
|
|
FUN_01020f3a(DAT_01024f5c);
|
|
DAT_01024f5c = (short *)0x0;
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
short * FUN_01006b38(DWORD *param_1)
|
|
|
|
{
|
|
short *psVar1;
|
|
|
|
if (DAT_01024f5c == (short *)0x0) {
|
|
psVar1 = (short *)0x0;
|
|
}
|
|
else {
|
|
psVar1 = FUN_0101eb23(DAT_01024f5c,param_1,DAT_01024f60,1);
|
|
}
|
|
return psVar1;
|
|
}
|
|
|
|
|
|
|
|
void FUN_01006b64(int *param_1)
|
|
|
|
{
|
|
if ((param_1 != (int *)0x0) && (DAT_01024f5c != (int **)0x0)) {
|
|
FUN_0101e4a9(DAT_01024f5c,param_1);
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_01006b8a(void)
|
|
|
|
{
|
|
if (DAT_01024f5c != (short *)0x0) {
|
|
FUN_0102053b(DAT_01024f5c,0);
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_01006ba1(void)
|
|
|
|
{
|
|
if (DAT_01024f5c != (short *)0x0) {
|
|
FUN_0102053b(DAT_01024f5c,1);
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_01006bb8(void)
|
|
|
|
{
|
|
if (DAT_01024f5c != 0) {
|
|
FUN_0101dd5d();
|
|
return;
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_01006bcc(int param_1,int param_2)
|
|
|
|
{
|
|
if (DAT_01024f5c != (short *)0x0) {
|
|
if (DAT_01028208 <= param_2) {
|
|
param_2 = DAT_01028208 + -1;
|
|
}
|
|
if ((-1 < param_1) && (param_2 < DAT_01028208)) {
|
|
while (param_1 <= param_2) {
|
|
FUN_0101e373(DAT_01024f5c,param_1,0);
|
|
(&DAT_01024f1c)[param_1] = 0;
|
|
(&DAT_01024f3c)[param_1] = 0;
|
|
param_1 = param_1 + 1;
|
|
}
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
|
|
|
|
void FUN_01006c26(int param_1,int param_2,int param_3,ushort param_4,undefined2 param_5)
|
|
|
|
{
|
|
DWORD DVar1;
|
|
int iVar2;
|
|
int iVar3;
|
|
undefined2 local_20;
|
|
int local_1e;
|
|
int local_1a;
|
|
int local_16;
|
|
undefined4 local_12;
|
|
uint local_e;
|
|
undefined2 local_a;
|
|
|
|
iVar2 = 0;
|
|
if (DAT_01024f5c != 0) {
|
|
if (DAT_01028208 <= param_3) {
|
|
param_3 = DAT_01028208 + -1;
|
|
}
|
|
if (((param_1 != 0) && (-1 < param_2)) && (param_3 < DAT_01028208)) {
|
|
if (((param_4 & 0x8000) != 0) && (0 < DAT_01028208)) {
|
|
do {
|
|
if ((&DAT_01024f3c)[iVar2] == param_1) {
|
|
return;
|
|
}
|
|
iVar2 = iVar2 + 1;
|
|
} while (iVar2 < DAT_01028208);
|
|
}
|
|
iVar2 = param_2;
|
|
if (param_2 < param_3) {
|
|
iVar3 = param_2 << 2;
|
|
iVar2 = param_2;
|
|
do {
|
|
param_2 = param_2 + 1;
|
|
if ((((uint)DAT_01024f18 & 1 << ((byte)param_2 & 0x1f)) != 0) &&
|
|
((uint)(&DAT_01024f1c)[param_2] < *(uint *)((int)&DAT_01024f1c + iVar3))) {
|
|
iVar3 = param_2 * 4;
|
|
iVar2 = param_2;
|
|
}
|
|
} while (param_2 < param_3);
|
|
}
|
|
if (((uint)DAT_01024f18 & 1 << ((byte)iVar2 & 0x1f)) != 0) {
|
|
local_1e = DAT_01024f5c;
|
|
local_12 = DAT_01024f64;
|
|
local_e = (uint)param_4;
|
|
local_20 = 0x1c;
|
|
local_a = param_5;
|
|
local_16 = param_1;
|
|
local_1a = iVar2;
|
|
(*_DAT_01024f68)(1,param_1,iVar2);
|
|
DVar1 = timeGetTime();
|
|
(&DAT_01024f1c)[iVar2] = DVar1;
|
|
(&DAT_01024f3c)[iVar2] = param_1;
|
|
FUN_0101df3d((undefined4 *)&local_20);
|
|
}
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_01006d34(int param_1,int param_2,int param_3)
|
|
|
|
{
|
|
ushort uVar1;
|
|
|
|
if (DAT_01024f5c != 0) {
|
|
if (DAT_01028208 <= param_2) {
|
|
param_2 = DAT_01028208 + -1;
|
|
}
|
|
if ((-1 < param_1) && (param_2 < DAT_01028208)) {
|
|
while (param_1 <= param_2) {
|
|
uVar1 = (ushort)(1 << ((byte)param_1 & 0x1f));
|
|
if (param_3 == 0) {
|
|
DAT_01024f18 = DAT_01024f18 & ~uVar1;
|
|
FUN_01006bcc(param_1,param_1);
|
|
}
|
|
else {
|
|
DAT_01024f18 = DAT_01024f18 | uVar1;
|
|
}
|
|
param_1 = param_1 + 1;
|
|
}
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
HPALETTE FUN_01006d96(LOGPALETTE *param_1)
|
|
|
|
{
|
|
HPALETTE hPal;
|
|
HWND hWnd;
|
|
HDC hdc;
|
|
int iVar1;
|
|
HPALETTE hPal_00;
|
|
BYTE *pBVar2;
|
|
BYTE BVar3;
|
|
|
|
param_1->palVersion = 0x300;
|
|
param_1->palNumEntries = 0x100;
|
|
hPal = CreatePalette(param_1);
|
|
hWnd = GetDesktopWindow();
|
|
hdc = FUN_01003445(hWnd);
|
|
GetDeviceCaps(hdc,0x26);
|
|
iVar1 = GetDeviceCaps(hdc,0x68);
|
|
if (iVar1 == 0x100) {
|
|
SetSystemPaletteUse(hdc,2);
|
|
SetSystemPaletteUse(hdc,1);
|
|
hPal_00 = SelectPalette(hdc,hPal,0);
|
|
RealizePalette(hdc);
|
|
SelectPalette(hdc,hPal_00,0);
|
|
RealizePalette(hdc);
|
|
GetSystemPaletteEntries(hdc,0,0x100,(LPPALETTEENTRY)param_1->palPalEntry);
|
|
hWnd = GetDesktopWindow();
|
|
ReleaseDC(hWnd,hdc);
|
|
pBVar2 = ¶m_1->palPalEntry[0].peFlags;
|
|
iVar1 = 0x100;
|
|
do {
|
|
*pBVar2 = '\0';
|
|
pBVar2 = pBVar2 + 4;
|
|
iVar1 = iVar1 + -1;
|
|
} while (iVar1 != 0);
|
|
iVar1 = 10;
|
|
pBVar2 = ¶m_1[5].palPalEntry[0].peGreen;
|
|
do {
|
|
BVar3 = (BYTE)iVar1;
|
|
pBVar2[-1] = BVar3;
|
|
*pBVar2 = BVar3;
|
|
pBVar2[1] = BVar3;
|
|
pBVar2[2] = '\x04';
|
|
iVar1 = iVar1 + 1;
|
|
pBVar2 = pBVar2 + 4;
|
|
} while (iVar1 < 0xf6);
|
|
ResizePalette(hPal,0x100);
|
|
SetPaletteEntries(hPal,0,0x100,(PALETTEENTRY *)(LPPALETTEENTRY)param_1->palPalEntry);
|
|
}
|
|
else {
|
|
if (hPal != (HPALETTE)0x0) {
|
|
DeleteObject(hPal);
|
|
}
|
|
hWnd = GetDesktopWindow();
|
|
ReleaseDC(hWnd,hdc);
|
|
hPal = (HPALETTE)0x0;
|
|
}
|
|
return hPal;
|
|
}
|
|
|
|
|
|
|
|
HBITMAP FUN_01006eb9(HMODULE param_1,HDC param_2,LPCSTR param_3,UINT param_4,int param_5,
|
|
HPALETTE *param_6)
|
|
|
|
{
|
|
HRSRC hResInfo;
|
|
HBITMAP pHVar1;
|
|
BITMAPINFOHEADER *pbmih;
|
|
HPALETTE hpal;
|
|
BYTE *pBVar2;
|
|
BYTE *pBVar3;
|
|
DWORD DVar4;
|
|
LOGPALETTE local_410 [128];
|
|
DWORD *local_c;
|
|
HGLOBAL local_8;
|
|
|
|
hResInfo = FindResourceA(param_1,param_3,(LPCSTR)0x2);
|
|
if ((hResInfo == (HRSRC)0x0) ||
|
|
(local_8 = LoadResource(param_1,hResInfo), local_8 == (HGLOBAL)0x0)) {
|
|
pHVar1 = (HBITMAP)0x0;
|
|
}
|
|
else {
|
|
pbmih = (BITMAPINFOHEADER *)LockResource(local_8);
|
|
DVar4 = pbmih->biClrUsed;
|
|
if (DVar4 == 0) {
|
|
DVar4 = 1 << (*(byte *)&pbmih->biBitCount & 0x1f);
|
|
}
|
|
local_c = &pbmih[1].biSize + DVar4;
|
|
if (4 < pbmih->biBitCount) {
|
|
hpal = FUN_01006d96(local_410);
|
|
*param_6 = hpal;
|
|
if (hpal != (HPALETTE)0x0) {
|
|
param_1 = (HMODULE)0x0;
|
|
if (0 < param_5) {
|
|
pBVar2 = &local_410[0].palPalEntry[param_4].peGreen;
|
|
pBVar3 = (BYTE *)((int)&pbmih[1].biSize + 1);
|
|
do {
|
|
if ((int)DVar4 <= (int)param_1) break;
|
|
param_1 = (HMODULE)((int)¶m_1->unused + 1);
|
|
pBVar2[-1] = pBVar3[1];
|
|
*pBVar2 = *pBVar3;
|
|
pBVar2[1] = pBVar3[-1];
|
|
pBVar2[2] = '\x04';
|
|
pBVar3 = pBVar3 + 4;
|
|
pBVar2 = pBVar2 + 4;
|
|
} while ((int)param_1 < param_5);
|
|
}
|
|
SetPaletteEntries(hpal,param_4,(UINT)param_1,local_410[0].palPalEntry + param_4);
|
|
SelectPalette(param_2,*param_6,0);
|
|
RealizePalette(param_2);
|
|
}
|
|
}
|
|
pHVar1 = CreateDIBitmap(param_2,pbmih,4,local_c,(BITMAPINFO *)pbmih,0);
|
|
FreeResource(local_8);
|
|
}
|
|
return pHVar1;
|
|
}
|
|
|
|
|
|
|
|
void FUN_01006fcb(HWND *param_1)
|
|
|
|
{
|
|
HWND pHVar1;
|
|
HDC hdc;
|
|
HDC pHVar2;
|
|
uint uVar3;
|
|
int iVar4;
|
|
HBITMAP h;
|
|
undefined local_20 [4];
|
|
HWND local_1c;
|
|
HWND local_18;
|
|
HBITMAP local_8;
|
|
|
|
local_8 = (HBITMAP)0x0;
|
|
pHVar1 = GetDesktopWindow();
|
|
hdc = FUN_01003445(pHVar1);
|
|
if (hdc != (HDC)0x0) {
|
|
pHVar2 = CreateCompatibleDC(hdc);
|
|
*(HDC *)(param_1 + 3) = pHVar2;
|
|
local_8 = CreateCompatibleBitmap(hdc,10,10);
|
|
ReleaseDC(*param_1,hdc);
|
|
if (local_8 == (HBITMAP)0x0) {
|
|
GetLastError();
|
|
}
|
|
else {
|
|
if ((HDC)param_1[3] != (HDC)0x0) {
|
|
SelectObject((HDC)param_1[3],local_8);
|
|
uVar3 = GetDeviceCaps((HDC)param_1[3],0x26);
|
|
if (((uVar3 & 0x100) == 0) && (iVar4 = GetDeviceCaps((HDC)param_1[3],0x18), iVar4 < 0x100))
|
|
{
|
|
h = LoadBitmapA(DAT_01024f6c,(LPCSTR)(param_1 + 0x3a));
|
|
}
|
|
else {
|
|
h = FUN_01006eb9((HMODULE)DAT_01024f6c,(HDC)param_1[3],(LPCSTR)(param_1 + 8),10,0xec,
|
|
(HPALETTE *)(param_1 + 1));
|
|
}
|
|
*(HBITMAP *)(param_1 + 2) = h;
|
|
if (h != (HBITMAP)0x0) {
|
|
SelectObject((HDC)param_1[3],h);
|
|
DeleteObject(local_8);
|
|
GetObjectA(param_1[2],0x18,local_20);
|
|
param_1[4] = local_1c;
|
|
param_1[5] = local_18;
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (param_1[1] != (HWND)0x0) {
|
|
DeleteObject(param_1[1]);
|
|
}
|
|
if (*param_1 != (HWND)0x0) {
|
|
DestroyWindow(*param_1);
|
|
}
|
|
if (local_8 != (HBITMAP)0x0) {
|
|
DeleteObject(local_8);
|
|
}
|
|
if ((HDC)param_1[3] != (HDC)0x0) {
|
|
DeleteDC((HDC)param_1[3]);
|
|
}
|
|
param_1[2] = (HWND)0x0;
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_01007103(int param_1,HDC param_2)
|
|
|
|
{
|
|
HWND hWnd;
|
|
tagRECT *lpRect;
|
|
tagRECT local_14;
|
|
|
|
if (*(int *)(param_1 + 8) != 0) {
|
|
lpRect = &local_14;
|
|
hWnd = GetDesktopWindow();
|
|
GetWindowRect(hWnd,(LPRECT)lpRect);
|
|
*(int *)(param_1 + 0x18) = ((local_14.right - local_14.left) - *(int *)(param_1 + 0x10)) / 2;
|
|
*(int *)(param_1 + 0x1c) = ((local_14.bottom - local_14.top) - *(int *)(param_1 + 0x14)) / 2;
|
|
SelectPalette(param_2,*(HPALETTE *)(param_1 + 4),0);
|
|
RealizePalette(param_2);
|
|
SelectPalette(*(HDC *)(param_1 + 0xc),*(HPALETTE *)(param_1 + 4),0);
|
|
RealizePalette(*(HDC *)(param_1 + 0xc));
|
|
BitBlt(param_2,*(int *)(param_1 + 0x18),*(int *)(param_1 + 0x1c),*(int *)(param_1 + 0x10),
|
|
*(int *)(param_1 + 0x14),*(HDC *)(param_1 + 0xc),0,0,0xcc0020);
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_010071a5(HWND *param_1)
|
|
|
|
{
|
|
HDC hdc;
|
|
|
|
if ((param_1 != (HWND *)0x0) && (*param_1 != (HWND)0x0)) {
|
|
hdc = FUN_01003445(*param_1);
|
|
BitBlt(hdc,0,0,(int)param_1[6],(int)param_1[7],hdc,0,0,0x42);
|
|
ReleaseDC(*param_1,hdc);
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_010071ed(HWND *param_1)
|
|
|
|
{
|
|
if (param_1 != (HWND *)0x0) {
|
|
if (*param_1 != (HWND)0x0) {
|
|
DestroyWindow(*param_1);
|
|
*param_1 = (HWND)0x0;
|
|
if (param_1[1] != (HWND)0x0) {
|
|
DeleteObject(param_1[1]);
|
|
}
|
|
param_1[1] = (HWND)0x0;
|
|
if ((HDC)param_1[3] != (HDC)0x0) {
|
|
DeleteDC((HDC)param_1[3]);
|
|
}
|
|
if (param_1[2] != (HWND)0x0) {
|
|
DeleteObject(param_1[2]);
|
|
}
|
|
}
|
|
FUN_01005541((int)param_1);
|
|
}
|
|
if (DAT_01024f6c != (HINSTANCE)0x0) {
|
|
UnregisterClassA("3DPB_SPLASH_CLASS",DAT_01024f6c);
|
|
DAT_01024f6c = (HINSTANCE)0x0;
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_01007264(HWND param_1,UINT param_2,WPARAM param_3,LPARAM param_4)
|
|
|
|
{
|
|
LONG LVar1;
|
|
HDC hdc;
|
|
tagPAINTSTRUCT local_48;
|
|
undefined4 local_8;
|
|
|
|
local_8 = DAT_01024778;
|
|
if (param_2 == 0xf) {
|
|
LVar1 = GetWindowLongA(param_1,0);
|
|
BeginPaint(param_1,(LPPAINTSTRUCT)&local_48);
|
|
EndPaint(param_1,(PAINTSTRUCT *)&local_48);
|
|
hdc = FUN_01003445(param_1);
|
|
if ((hdc != (HDC)0x0) && (LVar1 != 0)) {
|
|
BitBlt(hdc,0,0,10000,10000,hdc,0,0,0x42);
|
|
FUN_01007103(LVar1,hdc);
|
|
}
|
|
ReleaseDC(param_1,hdc);
|
|
}
|
|
else {
|
|
if (param_2 != 0x14) {
|
|
DefWindowProcA(param_1,param_2,param_3,param_4);
|
|
}
|
|
}
|
|
FUN_0101cd9e();
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
HWND * FUN_01007308(HINSTANCE param_1,LPCSTR param_2,LPCSTR param_3)
|
|
|
|
{
|
|
HINSTANCE hInstance;
|
|
HWND *dwNewLong;
|
|
HWND hWnd;
|
|
tagRECT *lpRect;
|
|
WNDCLASSA local_3c;
|
|
tagRECT local_14;
|
|
|
|
dwNewLong = (HWND *)FUN_010054c2(0x1b0);
|
|
if (dwNewLong != (HWND *)0x0) {
|
|
lstrcpyA((LPSTR)(dwNewLong + 8),param_2);
|
|
lstrcpyA((LPSTR)(dwNewLong + 0x3a),param_3);
|
|
if (DAT_01024f6c == (HINSTANCE)0x0) {
|
|
DAT_01024f6c = param_1;
|
|
local_3c.style = 0;
|
|
local_3c.lpfnWndProc = FUN_01007264;
|
|
local_3c.cbClsExtra = 0;
|
|
local_3c.cbWndExtra = 4;
|
|
local_3c.hInstance = param_1;
|
|
local_3c.hIcon = (HICON)0x0;
|
|
local_3c.hCursor = LoadCursorA((HINSTANCE)0x0,(LPCSTR)0x7f00);
|
|
local_3c.hbrBackground = (HBRUSH)0x0;
|
|
local_3c.lpszMenuName = "";
|
|
local_3c.lpszClassName = "3DPB_SPLASH_CLASS";
|
|
RegisterClassA(&local_3c);
|
|
}
|
|
hInstance = DAT_01024f6c;
|
|
dwNewLong[2] = (HWND)0x0;
|
|
hWnd = CreateWindowExA(0,"3DPB_SPLASH_CLASS","",0x80000000,-10,-10,1,1,(HWND)0x0,(HMENU)0x0,
|
|
hInstance,(LPVOID)0x0);
|
|
*dwNewLong = hWnd;
|
|
if (hWnd != (HWND)0x0) {
|
|
SetWindowLongA(hWnd,0,(LONG)dwNewLong);
|
|
lpRect = &local_14;
|
|
hWnd = GetDesktopWindow();
|
|
GetWindowRect(hWnd,(LPRECT)lpRect);
|
|
FUN_01006fcb(dwNewLong);
|
|
MoveWindow(*dwNewLong,0,0,local_14.right - local_14.left,local_14.bottom - local_14.top,0);
|
|
ShowWindow(*dwNewLong,8);
|
|
SetFocus(*dwNewLong);
|
|
UpdateWindow(*dwNewLong);
|
|
return dwNewLong;
|
|
}
|
|
FUN_01005541((int)dwNewLong);
|
|
}
|
|
return (HWND *)0x0;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
|
|
|
|
undefined4 FUN_0100742f(int param_1)
|
|
|
|
{
|
|
int *piVar1;
|
|
undefined4 uVar2;
|
|
int *piVar3;
|
|
int iVar4;
|
|
|
|
piVar1 = FUN_010054c2(param_1 * 0x14);
|
|
if (piVar1 == (int *)0x0) {
|
|
uVar2 = 1;
|
|
DAT_01024f80 = piVar1;
|
|
}
|
|
else {
|
|
DAT_01024f78 = 0;
|
|
iVar4 = param_1 + -1;
|
|
_DAT_01024f74 = param_1;
|
|
DAT_010235f4 = 1;
|
|
DAT_01024f80 = piVar1;
|
|
if (0 < iVar4) {
|
|
piVar3 = piVar1 + 3;
|
|
DAT_01024f80 = piVar1;
|
|
do {
|
|
*(int **)piVar3 = piVar3 + 2;
|
|
piVar3 = piVar3 + 5;
|
|
iVar4 = iVar4 + -1;
|
|
} while (iVar4 != 0);
|
|
}
|
|
piVar1[param_1 * 5 + -2] = 0;
|
|
DAT_01024f70 = 0;
|
|
uVar2 = 0;
|
|
DAT_01024f7c = piVar1;
|
|
}
|
|
return uVar2;
|
|
}
|
|
|
|
|
|
|
|
void FUN_0100749b(void)
|
|
|
|
{
|
|
if (DAT_01024f80 != 0) {
|
|
FUN_01005541(DAT_01024f80);
|
|
}
|
|
DAT_01024f80 = 0;
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
|
|
|
|
int FUN_010074b7(int param_1,int param_2,int param_3)
|
|
|
|
{
|
|
int *piVar1;
|
|
int iVar2;
|
|
int **ppiVar3;
|
|
int *piVar4;
|
|
int *piVar5;
|
|
int *local_8;
|
|
|
|
iVar2 = _ftol();
|
|
piVar1 = DAT_01024f7c;
|
|
iVar2 = DAT_01024f84 - iVar2;
|
|
if (_DAT_01024f74 <= DAT_01024f78) {
|
|
return 0;
|
|
}
|
|
param_1 = 0;
|
|
ppiVar3 = (int **)(DAT_01024f7c + 3);
|
|
DAT_01024f7c = *ppiVar3;
|
|
*ppiVar3 = (int *)0x0;
|
|
local_8 = DAT_01024f70;
|
|
piVar5 = DAT_01024f70;
|
|
if (0 < DAT_01024f78) {
|
|
do {
|
|
piVar4 = piVar5;
|
|
piVar5 = piVar4;
|
|
if (iVar2 < *piVar4) break;
|
|
param_1 = param_1 + 1;
|
|
piVar5 = (int *)piVar4[3];
|
|
local_8 = piVar4;
|
|
} while (param_1 < DAT_01024f78);
|
|
if (piVar5 != local_8) {
|
|
*ppiVar3 = (int *)local_8[3];
|
|
*(int **)(local_8 + 3) = piVar1;
|
|
goto LAB_0100754d;
|
|
}
|
|
}
|
|
*ppiVar3 = DAT_01024f70;
|
|
DAT_01024f70 = piVar1;
|
|
LAB_0100754d:
|
|
piVar1[1] = param_2;
|
|
piVar1[2] = param_3;
|
|
DAT_01024f78 = DAT_01024f78 + 1;
|
|
piVar1[4] = DAT_010235f4;
|
|
DAT_010235f4 = DAT_010235f4 + 1;
|
|
*piVar1 = iVar2;
|
|
if (DAT_010235f4 < 1) {
|
|
DAT_010235f4 = 1;
|
|
}
|
|
return piVar1[4];
|
|
}
|
|
|
|
|
|
|
|
int FUN_0100758d(void)
|
|
|
|
{
|
|
int *piVar1;
|
|
int *piVar2;
|
|
int iVar3;
|
|
int iVar4;
|
|
int *piVar5;
|
|
int local_18;
|
|
undefined4 local_14;
|
|
code *local_10;
|
|
undefined4 local_8;
|
|
|
|
iVar4 = 0;
|
|
piVar2 = DAT_01024f70;
|
|
if (DAT_01024f70 != (int *)0x0) {
|
|
do {
|
|
if (DAT_01024f84 < *piVar2) {
|
|
LAB_0100763c:
|
|
while( true ) {
|
|
if (piVar2 == (int *)0x0) {
|
|
return iVar4;
|
|
}
|
|
if (DAT_01024f84 < *piVar2 + 100) break;
|
|
DAT_01024f78 = DAT_01024f78 + -1;
|
|
iVar3 = 5;
|
|
piVar1 = piVar2;
|
|
piVar5 = &local_18;
|
|
while (iVar3 != 0) {
|
|
iVar3 = iVar3 + -1;
|
|
*piVar5 = *piVar1;
|
|
piVar1 = piVar1 + 1;
|
|
piVar5 = piVar5 + 1;
|
|
}
|
|
piVar1 = (int *)piVar2[3];
|
|
DAT_01024f70 = piVar1;
|
|
*(int **)(piVar2 + 3) = DAT_01024f7c;
|
|
DAT_01024f7c = piVar2;
|
|
if (local_10 != (code *)0x0) {
|
|
DAT_01024f7c = piVar2;
|
|
(*local_10)(local_8,local_14);
|
|
piVar1 = DAT_01024f70;
|
|
}
|
|
iVar4 = iVar4 + 1;
|
|
piVar2 = piVar1;
|
|
}
|
|
return iVar4;
|
|
}
|
|
DAT_01024f78 = DAT_01024f78 + -1;
|
|
iVar3 = 5;
|
|
piVar1 = piVar2;
|
|
piVar5 = &local_18;
|
|
while (iVar3 != 0) {
|
|
iVar3 = iVar3 + -1;
|
|
*piVar5 = *piVar1;
|
|
piVar1 = piVar1 + 1;
|
|
piVar5 = piVar5 + 1;
|
|
}
|
|
piVar1 = (int *)piVar2[3];
|
|
iVar4 = iVar4 + 1;
|
|
DAT_01024f70 = piVar1;
|
|
*(int **)(piVar2 + 3) = DAT_01024f7c;
|
|
DAT_01024f7c = piVar2;
|
|
if (local_10 != (code *)0x0) {
|
|
DAT_01024f7c = piVar2;
|
|
(*local_10)(local_8,local_14);
|
|
piVar1 = DAT_01024f70;
|
|
}
|
|
piVar2 = piVar1;
|
|
if (1 < iVar4) goto LAB_0100763c;
|
|
} while (piVar2 != (int *)0x0);
|
|
}
|
|
return iVar4;
|
|
}
|
|
|
|
|
|
|
|
int FUN_01007659(int param_1)
|
|
|
|
{
|
|
int iVar1;
|
|
int iVar2;
|
|
int iVar3;
|
|
int iVar4;
|
|
|
|
iVar4 = 0;
|
|
iVar3 = 0;
|
|
iVar1 = DAT_01024f70;
|
|
if (0 < DAT_01024f78) {
|
|
do {
|
|
iVar2 = iVar1;
|
|
if (param_1 == *(int *)(iVar2 + 0x10)) {
|
|
if (iVar3 == 0) {
|
|
DAT_01024f70 = *(int *)(iVar2 + 0xc);
|
|
}
|
|
else {
|
|
*(undefined4 *)(iVar3 + 0xc) = *(undefined4 *)(iVar2 + 0xc);
|
|
}
|
|
DAT_01024f78 = DAT_01024f78 + -1;
|
|
*(undefined4 *)(iVar2 + 0xc) = DAT_01024f7c;
|
|
DAT_01024f7c = iVar2;
|
|
return param_1;
|
|
}
|
|
iVar4 = iVar4 + 1;
|
|
iVar1 = *(int *)(iVar2 + 0xc);
|
|
iVar3 = iVar2;
|
|
} while (iVar4 < DAT_01024f78);
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
|
|
|
|
undefined4 FUN_010076bf(LPSTR param_1,LPCSTR param_2,DWORD param_3)
|
|
|
|
{
|
|
DWORD DVar1;
|
|
char *pcVar2;
|
|
|
|
DVar1 = GetModuleFileNameA(DAT_01028204,param_1,param_3);
|
|
if ((DVar1 != 0) && (DVar1 != param_3)) {
|
|
pcVar2 = param_1 + DVar1;
|
|
while (param_1 < pcVar2) {
|
|
if ((*pcVar2 == '\\') || (*pcVar2 == ':')) {
|
|
pcVar2[1] = '\0';
|
|
break;
|
|
}
|
|
DVar1 = DVar1 - 1;
|
|
pcVar2 = pcVar2 + -1;
|
|
}
|
|
if ((int)(DVar1 + 0xd) < (int)param_3) {
|
|
lstrcatA(param_1,param_2);
|
|
return 0;
|
|
}
|
|
lstrcatA(param_1,"?");
|
|
}
|
|
return 1;
|
|
}
|
|
|
|
|
|
|
|
void FUN_0100772d(void)
|
|
|
|
{
|
|
HKEY lpString2;
|
|
int *lpString1;
|
|
LPSTR pCVar1;
|
|
HWND pHVar2;
|
|
char *pcVar3;
|
|
HKEY pHVar4;
|
|
int *piVar5;
|
|
undefined4 uVar6;
|
|
HKEY pHVar7;
|
|
HKEY pHVar8;
|
|
undefined4 uVar9;
|
|
|
|
lpString2 = (HKEY)FUN_010054c2(500);
|
|
if (lpString2 != (HKEY)0x0) {
|
|
lpString1 = FUN_010054c2(500);
|
|
if (lpString1 == (int *)0x0) {
|
|
FUN_01005541((int)lpString2);
|
|
}
|
|
else {
|
|
pHVar7 = (HKEY)0x1f4;
|
|
pHVar4 = (HKEY)FUN_01003752(0xb2);
|
|
FUN_01003601((LPCSTR)0x0,"HelpFile",(LPBYTE)lpString2,pHVar4,pHVar7);
|
|
pHVar8 = (HKEY)0x1f4;
|
|
pcVar3 = "HelpFile";
|
|
pHVar4 = lpString2;
|
|
pHVar7 = lpString2;
|
|
pCVar1 = FUN_01003752(0xa6);
|
|
FUN_01003601(pCVar1,pcVar3,(LPBYTE)pHVar4,pHVar7,pHVar8);
|
|
lstrcpyA((LPSTR)lpString1,(LPCSTR)lpString2);
|
|
FUN_01005541((int)lpString2);
|
|
uVar9 = 0;
|
|
uVar6 = 0;
|
|
piVar5 = lpString1;
|
|
pHVar2 = GetDesktopWindow();
|
|
_HtmlHelpA_16(pHVar2,piVar5,uVar6,uVar9);
|
|
FUN_01005541((int)lpString1);
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
|
|
|
|
void FUN_010077c4(HWND param_1,HWND param_2)
|
|
|
|
{
|
|
HWND hWnd;
|
|
int Y;
|
|
int X;
|
|
int nWidth;
|
|
int nHeight;
|
|
tagRECT *lpRect;
|
|
tagRECT local_34;
|
|
tagRECT local_24;
|
|
tagRECT local_14;
|
|
|
|
GetWindowRect(param_1,(LPRECT)&local_24);
|
|
GetWindowRect(param_2,(LPRECT)&local_34);
|
|
lpRect = &local_14;
|
|
hWnd = GetDesktopWindow();
|
|
GetWindowRect(hWnd,(LPRECT)lpRect);
|
|
if (_DAT_01024ef4 != 0) {
|
|
local_14.bottom = 0x1e0;
|
|
local_14.left = 0;
|
|
local_14.top = 0;
|
|
local_14.right = 0x280;
|
|
local_24.left = 0;
|
|
local_24.top = 0;
|
|
local_24.right = 0x280;
|
|
local_24.bottom = 0x1e0;
|
|
}
|
|
nWidth = local_34.right - local_34.left;
|
|
nHeight = local_34.bottom - local_34.top;
|
|
X = (((local_34.left - local_34.right) - local_24.left) + local_24.right) / 2 + local_24.left;
|
|
Y = (((local_34.top - local_34.bottom) - local_24.top) + local_24.bottom) / 2 + local_24.top;
|
|
if (local_14.right < nWidth + X) {
|
|
X = local_14.right - nWidth;
|
|
}
|
|
if (local_14.bottom < nHeight + Y) {
|
|
Y = local_14.bottom - nHeight;
|
|
}
|
|
if (X < local_14.left) {
|
|
X = local_14.left;
|
|
}
|
|
if (Y < local_14.top) {
|
|
Y = local_14.top;
|
|
}
|
|
MoveWindow(param_2,X,Y,nWidth,nHeight,0);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_0100789a(HINSTANCE param_1,HWND param_2)
|
|
|
|
{
|
|
LPSTR lpString2;
|
|
HICON hIcon;
|
|
CHAR local_198 [200];
|
|
CHAR local_d0 [200];
|
|
undefined4 local_8;
|
|
|
|
local_8 = DAT_01024778;
|
|
lpString2 = FUN_01003752(0x26);
|
|
lstrcpyA(local_198,lpString2);
|
|
lpString2 = FUN_01003752(0x66);
|
|
lstrcpyA(local_d0,lpString2);
|
|
hIcon = LoadIconA(param_1,"ICON_1");
|
|
ShellAboutA(param_2,local_198,local_d0,hIcon);
|
|
FUN_0101cd9e();
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
|
|
|
|
void FUN_01007918(void)
|
|
|
|
{
|
|
if (_DAT_01024ee4 != 0) {
|
|
FUN_010039c5((uint)(_DAT_01024fd8 == 0));
|
|
}
|
|
FUN_010156e4();
|
|
_DAT_01024ff4 = 1;
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
|
|
|
|
void FUN_01007949(void)
|
|
|
|
{
|
|
if (_DAT_01024fd8 != 0) {
|
|
if (_DAT_01024ee4 != 0) {
|
|
FUN_010039c5(0);
|
|
}
|
|
FUN_010156e4();
|
|
_DAT_01024ff4 = 1;
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_01007976(void)
|
|
|
|
{
|
|
HCURSOR hCursor;
|
|
|
|
FUN_01007949();
|
|
hCursor = LoadCursorA((HINSTANCE)0x0,(LPCSTR)0x7f02);
|
|
hCursor = SetCursor(hCursor);
|
|
FUN_010153ae(0);
|
|
SetCursor(hCursor);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_010079ed(int param_1)
|
|
|
|
{
|
|
HANDLE hThread;
|
|
int nPriority;
|
|
|
|
hThread = GetCurrentThread();
|
|
if (param_1 == -2) {
|
|
nPriority = -2;
|
|
}
|
|
else {
|
|
if (param_1 == -1) {
|
|
nPriority = -1;
|
|
}
|
|
else {
|
|
if (param_1 == 0) {
|
|
nPriority = 0;
|
|
}
|
|
else {
|
|
if (param_1 == 1) {
|
|
nPriority = 1;
|
|
}
|
|
else {
|
|
if (param_1 == 2) {
|
|
nPriority = 2;
|
|
}
|
|
else {
|
|
if (param_1 != 3) {
|
|
return;
|
|
}
|
|
nPriority = 0xf;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
SetThreadPriority(hThread,nPriority);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
// 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;
|
|
}
|
|
|
|
|
|
|
|
void __fastcall FUN_01009fd1(undefined4 *param_1)
|
|
|
|
{
|
|
FUN_01013c6f(*(int *)((int)param_1 + 0x2e));
|
|
FUN_01018fbc(param_1);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void __fastcall FUN_01009feb(int param_1)
|
|
|
|
{
|
|
if (*(int *)(param_1 + 0x46) != 0) {
|
|
FUN_01007659(*(int *)(param_1 + 0x46));
|
|
}
|
|
*(undefined4 *)(param_1 + 0x46) = 0;
|
|
if (*(int *)(param_1 + 0x42) != 0) {
|
|
FUN_01007659(*(int *)(param_1 + 0x42));
|
|
}
|
|
*(undefined4 *)(param_1 + 0x42) = 0;
|
|
*(undefined4 *)(param_1 + 0x3a) = 0;
|
|
*(undefined4 *)(param_1 + 0x3e) = 0;
|
|
*(undefined4 *)(param_1 + 0x32) = *(undefined4 *)(param_1 + 0x36);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_0100a027(undefined4 param_1,undefined **param_2)
|
|
|
|
{
|
|
*(undefined4 *)((int)param_2 + 0x46) = 0;
|
|
(**(code **)*param_2)(*(undefined4 *)((int)param_2 + 0x3a),*(undefined4 *)((int)param_2 + 0x32));
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
int __thiscall FUN_0100a04a(int iParm1,float param_1)
|
|
|
|
{
|
|
int iVar1;
|
|
bool in_PF;
|
|
|
|
iVar1 = *(int *)(iParm1 + 0x46);
|
|
iVar1._2_2_ = (undefined2)((uint)iVar1 >> 0x10);
|
|
if (iVar1 != 0) {
|
|
iVar1 = FUN_01007659(iVar1);
|
|
iVar1._2_2_ = (undefined2)((uint)iVar1 >> 0x10);
|
|
}
|
|
*(undefined4 *)(iParm1 + 0x46) = 0;
|
|
if ((ushort)((ushort)(param_1 < 0.00000000) << 8 | (ushort)(param_1 == 0.00000000) << 0xe) == 0) {
|
|
*(float *)(iParm1 + 0x32) = param_1;
|
|
}
|
|
else {
|
|
if (in_PF) {
|
|
*(undefined4 *)(iParm1 + 0x3a) = 0;
|
|
*(undefined4 *)(iParm1 + 0x3e) = 0;
|
|
return CONCAT22(iVar1._2_2_,
|
|
(ushort)(param_1 < 0.00000000) << 8 | (ushort)(param_1 == 0.00000000) << 0xe);
|
|
}
|
|
*(undefined4 *)(iParm1 + 0x32) = *(undefined4 *)(iParm1 + 0x36);
|
|
}
|
|
iVar1 = FUN_010074b7(*(undefined4 *)(iParm1 + 0x32),iParm1,(int)FUN_0100a027);
|
|
*(int *)(iParm1 + 0x46) = iVar1;
|
|
return iVar1;
|
|
}
|
|
|
|
|
|
|
|
int __fastcall FUN_0100a0b4(int param_1)
|
|
|
|
{
|
|
int iVar1;
|
|
int iVar2;
|
|
int *piVar3;
|
|
|
|
iVar1 = *(int *)(*(int *)(param_1 + 0x2e) + 4);
|
|
iVar2 = 0;
|
|
if (0 < iVar1) {
|
|
piVar3 = (int *)(*(int *)(param_1 + 0x2e) + 8);
|
|
do {
|
|
if (*(int *)(*piVar3 + 0x4e) == 0) {
|
|
return iVar2;
|
|
}
|
|
iVar2 = iVar2 + 1;
|
|
piVar3 = piVar3 + 1;
|
|
} while (iVar2 < iVar1);
|
|
}
|
|
return -1;
|
|
}
|
|
|
|
|
|
|
|
int __fastcall FUN_0100a0de(int param_1)
|
|
|
|
{
|
|
int iVar1;
|
|
int *piVar2;
|
|
|
|
iVar1 = *(int *)(*(int *)(param_1 + 0x2e) + 4) + -1;
|
|
if (-1 < iVar1) {
|
|
piVar2 = (int *)(*(int *)(param_1 + 0x2e) + 8 + iVar1 * 4);
|
|
do {
|
|
if (*(int *)(*piVar2 + 0x4e) != 0) {
|
|
return iVar1;
|
|
}
|
|
iVar1 = iVar1 + -1;
|
|
piVar2 = piVar2 + -1;
|
|
} while (-1 < iVar1);
|
|
}
|
|
return -1;
|
|
}
|
|
|
|
|
|
|
|
void __fastcall FUN_0100a104(int param_1)
|
|
|
|
{
|
|
code **ppcVar1;
|
|
int iVar2;
|
|
int iVar3;
|
|
undefined4 uVar4;
|
|
|
|
iVar2 = *(int *)(*(int *)(param_1 + 0x2e) + 4);
|
|
if (-1 < iVar2 + -1) {
|
|
iVar3 = (iVar2 + -1) * 4 + 8;
|
|
do {
|
|
ppcVar1 = *(code ***)(iVar3 + *(int *)(param_1 + 0x2e));
|
|
if (*(int *)((int)ppcVar1 + 0x4e) == 0) {
|
|
uVar4 = 8;
|
|
}
|
|
else {
|
|
uVar4 = 9;
|
|
}
|
|
(**(code **)*ppcVar1)(uVar4,0);
|
|
iVar3 = iVar3 + -4;
|
|
iVar2 = iVar2 + -1;
|
|
} while (iVar2 != 0);
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_0100a149(undefined4 param_1,undefined **param_2)
|
|
|
|
{
|
|
*(undefined4 *)((int)param_2 + 0x42) = 0;
|
|
FUN_01011ec9(0x3d,param_2);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
int __thiscall FUN_0100a166(undefined **ppuParm1,int param_1,int *param_2)
|
|
|
|
{
|
|
int iVar1;
|
|
undefined4 *puVar2;
|
|
undefined **ppuVar3;
|
|
code **ppcVar4;
|
|
int *piVar5;
|
|
int iVar6;
|
|
int iVar7;
|
|
int iVar8;
|
|
bool in_PF;
|
|
undefined8 local_2c;
|
|
int local_10;
|
|
undefined4 local_c;
|
|
int local_8;
|
|
|
|
iVar6 = param_1;
|
|
if (0x3f1 < param_1) {
|
|
if (param_1 == 0x3f3) {
|
|
return 0;
|
|
}
|
|
if (param_1 == 0x3fc) {
|
|
ppuVar3 = ppuParm1 + *(int *)(*(int *)((int)ppuParm1 + 0x1e) + 0xda) * 4;
|
|
*(undefined4 *)((int)ppuVar3 + 0x4a) = *(undefined4 *)((int)ppuParm1 + 6);
|
|
*(undefined4 *)((int)ppuVar3 + 0x4e) = *(undefined4 *)((int)ppuParm1 + 0x3a);
|
|
*(undefined4 *)((int)ppuVar3 + 0x52) = *(undefined4 *)((int)ppuParm1 + 0x32);
|
|
(**(code **)(*ppuParm1 + 0x14))();
|
|
floor((double)(float)param_2);
|
|
iVar6 = _ftol();
|
|
ppuVar3 = ppuParm1 + iVar6 * 4;
|
|
*(undefined4 *)((int)ppuParm1 + 6) = *(undefined4 *)((int)ppuVar3 + 0x4a);
|
|
*(undefined4 *)((int)ppuParm1 + 0x3a) = *(undefined4 *)((int)ppuVar3 + 0x4e);
|
|
*(undefined4 *)((int)ppuParm1 + 0x32) = *(undefined4 *)((int)ppuVar3 + 0x52);
|
|
if (*(int *)((int)ppuParm1 + 6) == 0) {
|
|
return 0;
|
|
}
|
|
FUN_0100a027(0,ppuParm1);
|
|
return 0;
|
|
}
|
|
if (param_1 == 0x3fe) {
|
|
return 0;
|
|
}
|
|
if (param_1 == 0x400) {
|
|
(**(code **)(*ppuParm1 + 0x14))();
|
|
iVar6 = 0;
|
|
if (*(int *)(*(int *)((int)ppuParm1 + 0x1e) + 0xd6) < 1) {
|
|
return 0;
|
|
}
|
|
puVar2 = (undefined4 *)((int)ppuParm1 + 0x4e);
|
|
do {
|
|
puVar2[-1] = *(undefined4 *)((int)ppuParm1 + 6);
|
|
*puVar2 = *(undefined4 *)((int)ppuParm1 + 0x3a);
|
|
puVar2[1] = *(undefined4 *)((int)ppuParm1 + 0x32);
|
|
iVar6 = iVar6 + 1;
|
|
puVar2 = puVar2 + 4;
|
|
} while (iVar6 < *(int *)(*(int *)((int)ppuParm1 + 0x1e) + 0xd6));
|
|
return 0;
|
|
}
|
|
switchD_0100a19a_caseD_17:
|
|
param_1 = *(int *)(*(int *)((int)ppuParm1 + 0x2e) + 4);
|
|
if (param_1 + -1 < 0) {
|
|
return 0;
|
|
}
|
|
iVar8 = (param_1 + -1) * 4 + 8;
|
|
do {
|
|
(**(code **)**(code ***)(iVar8 + *(int *)((int)ppuParm1 + 0x2e)))(iVar6,param_2);
|
|
iVar8 = iVar8 + -4;
|
|
param_1 = param_1 + -1;
|
|
} while (param_1 != 0);
|
|
return 0;
|
|
}
|
|
if (0x3ef < param_1) {
|
|
return 0;
|
|
}
|
|
switch(param_1) {
|
|
case 0x18:
|
|
iVar6 = *(int *)(*(int *)((int)ppuParm1 + 0x2e) + 4);
|
|
iVar8 = *(int *)(*(int *)((int)ppuParm1 + 0x2e) + 4 + iVar6 * 4);
|
|
if (*(int *)(iVar8 + 0x52) != 0) {
|
|
return 0;
|
|
}
|
|
if (*(int *)(iVar8 + 0x5a) != 0) {
|
|
return 0;
|
|
}
|
|
if (*(int *)(iVar8 + 0x56) != 0) {
|
|
return 0;
|
|
}
|
|
if (*(int *)((int)ppuParm1 + 0x3a) != 0) {
|
|
FUN_0100a166(0x22,0);
|
|
}
|
|
*(undefined4 *)((int)ppuParm1 + 0x3e) = 1;
|
|
*(int *)((int)ppuParm1 + 0x3a) = param_1;
|
|
param_1 = *(int *)(iVar8 + 0x4e);
|
|
local_c = *(undefined4 *)(iVar8 + 6);
|
|
while (iVar6 = iVar6 + -1, 0 < iVar6) {
|
|
ppcVar4 = *(code ***)(iVar6 * 4 + 8 + *(int *)((int)ppuParm1 + 0x2e));
|
|
iVar8 = *(int *)(iVar6 * 4 + 4 + *(int *)((int)ppuParm1 + 0x2e));
|
|
(**(code **)*ppcVar4)((uint)(*(int *)(iVar8 + 0x4e) != 0),0);
|
|
*(undefined4 *)((int)ppcVar4 + 6) = *(undefined4 *)(iVar8 + 6);
|
|
}
|
|
ppcVar4 = *(code ***)(*(int *)((int)ppuParm1 + 0x2e) + 8);
|
|
goto LAB_0100a27c;
|
|
case 0x19:
|
|
local_10 = *(int *)(*(int *)((int)ppuParm1 + 0x2e) + 4);
|
|
iVar8 = local_10 * 4;
|
|
iVar6 = *(int *)(iVar8 + 4 + *(int *)((int)ppuParm1 + 0x2e));
|
|
if (*(int *)(iVar6 + 0x52) != 0) {
|
|
return 0;
|
|
}
|
|
if (*(int *)(iVar6 + 0x5a) != 0) {
|
|
return 0;
|
|
}
|
|
if (*(int *)(iVar6 + 0x56) != 0) {
|
|
return 0;
|
|
}
|
|
if (*(int *)((int)ppuParm1 + 0x3a) != 0) {
|
|
FUN_0100a166(0x22,0);
|
|
}
|
|
iVar6 = *(int *)(*(int *)((int)ppuParm1 + 0x2e) + 8);
|
|
*(undefined4 *)((int)ppuParm1 + 0x3e) = 1;
|
|
*(int *)((int)ppuParm1 + 0x3a) = param_1;
|
|
param_1 = *(int *)(iVar6 + 0x4e);
|
|
local_c = *(undefined4 *)(iVar6 + 6);
|
|
local_10 = local_10 + -1;
|
|
if (0 < local_10) {
|
|
local_8 = 0xc;
|
|
do {
|
|
ppcVar4 = *(code ***)(local_8 + -4 + *(int *)((int)ppuParm1 + 0x2e));
|
|
iVar6 = *(int *)(local_8 + *(int *)((int)ppuParm1 + 0x2e));
|
|
(**(code **)*ppcVar4)((uint)(*(int *)(iVar6 + 0x4e) != 0),0);
|
|
local_8 = local_8 + 4;
|
|
local_10 = local_10 + -1;
|
|
*(undefined4 *)((int)ppcVar4 + 6) = *(undefined4 *)(iVar6 + 6);
|
|
} while (local_10 != 0);
|
|
}
|
|
ppcVar4 = *(code ***)(iVar8 + 4 + *(int *)((int)ppuParm1 + 0x2e));
|
|
LAB_0100a27c:
|
|
(**(code **)*ppcVar4)((uint)(param_1 != 0),0);
|
|
*(undefined4 *)((int)ppcVar4 + 6) = local_c;
|
|
goto LAB_0100a297;
|
|
case 0x1a:
|
|
if ((*(int *)((int)ppuParm1 + 0x3e) != 0) || (*(int *)((int)ppuParm1 + 0x3a) == 0)) {
|
|
FUN_0100a104((int)ppuParm1);
|
|
}
|
|
*(int *)((int)ppuParm1 + 0x3a) = param_1;
|
|
*(undefined4 *)((int)ppuParm1 + 0x3e) = 0;
|
|
iVar6 = *(int *)(*(int *)((int)ppuParm1 + 0x2e) + 4);
|
|
param_1 = *(int *)(*(int *)(*(int *)((int)ppuParm1 + 0x2e) + 4 + iVar6 * 4) + 0x5a);
|
|
while( true ) {
|
|
iVar6 = iVar6 + -1;
|
|
iVar8 = *(int *)((int)ppuParm1 + 0x2e);
|
|
if (iVar6 < 1) break;
|
|
(**(code **)**(code ***)(iVar8 + 8 + iVar6 * 4))
|
|
((uint)(*(int *)(*(int *)(iVar8 + 4 + iVar6 * 4) + 0x5a) != 0) + 8,0);
|
|
}
|
|
ppcVar4 = *(code ***)(iVar8 + 8);
|
|
goto LAB_0100a437;
|
|
case 0x1b:
|
|
if ((*(int *)((int)ppuParm1 + 0x3e) != 0) || (*(int *)((int)ppuParm1 + 0x3a) == 0)) {
|
|
FUN_0100a104((int)ppuParm1);
|
|
}
|
|
*(int *)((int)ppuParm1 + 0x3a) = param_1;
|
|
*(undefined4 *)((int)ppuParm1 + 0x3e) = 0;
|
|
iVar6 = *(int *)(*(int *)((int)ppuParm1 + 0x2e) + 4);
|
|
param_1 = *(int *)(*(int *)(*(int *)((int)ppuParm1 + 0x2e) + 8) + 0x5a);
|
|
local_10 = iVar6 + -1;
|
|
if (0 < local_10) {
|
|
iVar8 = 0xc;
|
|
do {
|
|
(**(code **)**(code ***)(iVar8 + -4 + *(int *)((int)ppuParm1 + 0x2e)))
|
|
((uint)(*(int *)(*(int *)(iVar8 + *(int *)((int)ppuParm1 + 0x2e)) + 0x5a) != 0) +
|
|
8,0);
|
|
iVar8 = iVar8 + 4;
|
|
local_10 = local_10 + -1;
|
|
} while (local_10 != 0);
|
|
}
|
|
ppcVar4 = *(code ***)(*(int *)((int)ppuParm1 + 0x2e) + 4 + iVar6 * 4);
|
|
LAB_0100a437:
|
|
(**(code **)*ppcVar4)((uint)(param_1 != 0) + 8,0);
|
|
goto LAB_0100a297;
|
|
case 0x1c:
|
|
if ((*(int *)((int)ppuParm1 + 0x3e) != 0) || (*(int *)((int)ppuParm1 + 0x3a) == 0)) {
|
|
FUN_0100a104((int)ppuParm1);
|
|
}
|
|
*(int *)((int)ppuParm1 + 0x3a) = param_1;
|
|
*(undefined4 *)((int)ppuParm1 + 0x3e) = 0;
|
|
local_10 = *(int *)(*(int *)((int)ppuParm1 + 0x2e) + 4) + -1;
|
|
if (0 < local_10) {
|
|
param_1 = 8;
|
|
do {
|
|
iVar6 = rand();
|
|
if (0x46 < iVar6 % 100) {
|
|
ppcVar4 = (code **)**(code ***)(param_1 + *(int *)((int)ppuParm1 + 0x2e));
|
|
rand();
|
|
(**ppcVar4)();
|
|
}
|
|
param_1 = param_1 + 4;
|
|
local_10 = local_10 + -1;
|
|
} while (local_10 != 0);
|
|
}
|
|
goto LAB_0100a297;
|
|
case 0x1d:
|
|
if ((*(int *)((int)ppuParm1 + 0x3e) != 0) || (*(int *)((int)ppuParm1 + 0x3a) == 0)) {
|
|
FUN_0100a104((int)ppuParm1);
|
|
}
|
|
*(int *)((int)ppuParm1 + 0x3a) = param_1;
|
|
*(undefined4 *)((int)ppuParm1 + 0x3e) = 0;
|
|
local_10 = *(int *)(*(int *)((int)ppuParm1 + 0x2e) + 4) + -1;
|
|
if (0 < local_10) {
|
|
param_1 = 8;
|
|
do {
|
|
ppcVar4 = (code **)**(code ***)(param_1 + *(int *)((int)ppuParm1 + 0x2e));
|
|
iVar6 = rand();
|
|
(**ppcVar4)(0x12,(float)(uint)(0x46 < iVar6 % 100));
|
|
param_1 = param_1 + 4;
|
|
local_10 = local_10 + -1;
|
|
} while (local_10 != 0);
|
|
}
|
|
LAB_0100a297:
|
|
FUN_0100a04a();
|
|
break;
|
|
case 0x1e:
|
|
iVar6 = *(int *)(*(int *)((int)ppuParm1 + 0x2e) + 4);
|
|
iVar7 = 0;
|
|
if (iVar6 + -1 < 0) {
|
|
return 0;
|
|
}
|
|
piVar5 = (int *)(*(int *)((int)ppuParm1 + 0x2e) + 8 + (iVar6 + -1) * 4);
|
|
do {
|
|
if (*(int *)(*piVar5 + 0x4e) == 0) {
|
|
iVar7 = iVar7 + 1;
|
|
}
|
|
piVar5 = piVar5 + -1;
|
|
iVar6 = iVar6 + -1;
|
|
} while (iVar6 != 0);
|
|
if (iVar7 == 0) {
|
|
return 0;
|
|
}
|
|
iVar1 = rand();
|
|
iVar6 = *(int *)((int)ppuParm1 + 0x2e);
|
|
iVar8 = *(int *)(iVar6 + 4) + -1;
|
|
if (-1 < iVar8) {
|
|
param_2 = (int *)(iVar6 + 8 + iVar8 * 4);
|
|
iVar7 = iVar1 % iVar7;
|
|
do {
|
|
iVar1 = iVar7;
|
|
if ((*(int *)(*param_2 + 0x4e) == 0) && (iVar1 = iVar7 + -1, iVar7 == 0)) goto LAB_0100a5ab;
|
|
param_2 = param_2 + -1;
|
|
iVar8 = iVar8 + -1;
|
|
iVar7 = iVar1;
|
|
} while (-1 < iVar8);
|
|
}
|
|
goto LAB_0100a5bb;
|
|
case 0x1f:
|
|
iVar6 = *(int *)(*(int *)((int)ppuParm1 + 0x2e) + 4);
|
|
iVar7 = 0;
|
|
if (iVar6 + -1 < 0) {
|
|
return 0;
|
|
}
|
|
piVar5 = (int *)(*(int *)((int)ppuParm1 + 0x2e) + 8 + (iVar6 + -1) * 4);
|
|
do {
|
|
if (*(int *)(*piVar5 + 0x4e) != 0) {
|
|
iVar7 = iVar7 + 1;
|
|
}
|
|
piVar5 = piVar5 + -1;
|
|
iVar6 = iVar6 + -1;
|
|
} while (iVar6 != 0);
|
|
if (iVar7 == 0) {
|
|
return 0;
|
|
}
|
|
iVar1 = rand();
|
|
iVar6 = *(int *)((int)ppuParm1 + 0x2e);
|
|
iVar8 = *(int *)(iVar6 + 4) + -1;
|
|
if (-1 < iVar8) {
|
|
param_2 = (int *)(iVar6 + 8 + iVar8 * 4);
|
|
iVar7 = iVar1 % iVar7;
|
|
do {
|
|
iVar1 = iVar7;
|
|
if ((*(int *)(*param_2 + 0x4e) != 0) && (iVar1 = iVar7 + -1, iVar7 == 0)) goto LAB_0100a7ae;
|
|
param_2 = param_2 + -1;
|
|
iVar8 = iVar8 + -1;
|
|
iVar7 = iVar1;
|
|
} while (-1 < iVar8);
|
|
}
|
|
goto LAB_0100a5bb;
|
|
case 0x20:
|
|
iVar6 = FUN_0100a0b4((int)ppuParm1);
|
|
if (iVar6 < 0) {
|
|
return 0;
|
|
}
|
|
ppcVar4 = *(code ***)(*(int *)((int)ppuParm1 + 0x2e) + 8 + iVar6 * 4);
|
|
local_2c = 1;
|
|
goto LAB_0100a655;
|
|
case 0x21:
|
|
iVar6 = FUN_0100a0de((int)ppuParm1);
|
|
if (iVar6 < 0) {
|
|
return 0;
|
|
}
|
|
ppcVar4 = *(code ***)(*(int *)((int)ppuParm1 + 0x2e) + 8 + iVar6 * 4);
|
|
local_2c = 0;
|
|
LAB_0100a655:
|
|
(**(code **)*ppcVar4)(local_2c);
|
|
if (*(int *)((int)ppuParm1 + 0x3a) != 0) {
|
|
FUN_0100a104((int)ppuParm1);
|
|
}
|
|
return 1;
|
|
case 0x22:
|
|
if (*(int *)((int)ppuParm1 + 0x46) != 0) {
|
|
FUN_01007659(*(int *)((int)ppuParm1 + 0x46));
|
|
}
|
|
iVar6 = *(int *)((int)ppuParm1 + 0x3a);
|
|
*(undefined4 *)((int)ppuParm1 + 0x46) = 0;
|
|
if (((iVar6 == 0x1a) || (iVar6 == 0x1b)) || (iVar6 == 0x1c)) {
|
|
FUN_0100a166(0xe,0);
|
|
}
|
|
*(undefined4 *)((int)ppuParm1 + 0x3a) = 0;
|
|
*(undefined4 *)((int)ppuParm1 + 0x3e) = 0;
|
|
break;
|
|
case 0x23:
|
|
floor((double)(float)param_2);
|
|
iVar8 = _ftol();
|
|
iVar6 = *(int *)((int)ppuParm1 + 0x2e);
|
|
if (*(int *)(iVar6 + 4) <= iVar8) {
|
|
return 0;
|
|
}
|
|
if (iVar8 < 0) {
|
|
return 0;
|
|
}
|
|
LAB_0100a5ab:
|
|
ppcVar4 = *(code ***)(iVar6 + 8 + iVar8 * 4);
|
|
local_2c = 1;
|
|
goto LAB_0100a5b7;
|
|
case 0x24:
|
|
floor((double)(float)param_2);
|
|
iVar8 = _ftol();
|
|
iVar6 = *(int *)((int)ppuParm1 + 0x2e);
|
|
if (*(int *)(iVar6 + 4) <= iVar8) {
|
|
return 0;
|
|
}
|
|
if (iVar8 < 0) {
|
|
return 0;
|
|
}
|
|
LAB_0100a7ae:
|
|
ppcVar4 = *(code ***)(iVar6 + 8 + iVar8 * 4);
|
|
local_2c = 0;
|
|
LAB_0100a5b7:
|
|
(**(code **)*ppcVar4)(local_2c);
|
|
LAB_0100a5bb:
|
|
if (*(int *)((int)ppuParm1 + 0x3a) != 0) {
|
|
FUN_0100a104((int)ppuParm1);
|
|
}
|
|
break;
|
|
case 0x25:
|
|
iVar6 = *(int *)(*(int *)((int)ppuParm1 + 0x2e) + 4);
|
|
iVar8 = 0;
|
|
if (-1 < iVar6 + -1) {
|
|
piVar5 = (int *)(*(int *)((int)ppuParm1 + 0x2e) + 8 + (iVar6 + -1) * 4);
|
|
do {
|
|
if (*(int *)(*piVar5 + 0x4e) != 0) {
|
|
iVar8 = iVar8 + 1;
|
|
}
|
|
piVar5 = piVar5 + -1;
|
|
iVar6 = iVar6 + -1;
|
|
} while (iVar6 != 0);
|
|
return iVar8;
|
|
}
|
|
return 0;
|
|
case 0x26:
|
|
return *(undefined4 *)(*(int *)((int)ppuParm1 + 0x2e) + 4);
|
|
case 0x27:
|
|
return *(undefined4 *)((int)ppuParm1 + 0x3a);
|
|
case 0x28:
|
|
return *(undefined4 *)((int)ppuParm1 + 0x3e);
|
|
case 0x29:
|
|
iVar6 = FUN_0100a0b4((int)ppuParm1);
|
|
if (iVar6 < 0) {
|
|
return 0;
|
|
}
|
|
if ((*(int *)((int)ppuParm1 + 0x3a) != 0) || (*(int *)((int)ppuParm1 + 0x3e) != 0)) {
|
|
FUN_0100a166(0x22,0);
|
|
}
|
|
ppcVar4 = *(code ***)(*(int *)((int)ppuParm1 + 0x2e) + 8 + iVar6 * 4);
|
|
local_2c = CONCAT44(param_2,0xf);
|
|
goto LAB_0100a709;
|
|
case 0x2a:
|
|
iVar6 = FUN_0100a0de((int)ppuParm1);
|
|
if (iVar6 < 0) {
|
|
return 0;
|
|
}
|
|
if ((*(int *)((int)ppuParm1 + 0x3a) != 0) || (*(int *)((int)ppuParm1 + 0x3e) != 0)) {
|
|
FUN_0100a166(0x22,0);
|
|
}
|
|
ppcVar4 = *(code ***)(*(int *)((int)ppuParm1 + 0x2e) + 8 + iVar6 * 4);
|
|
local_2c = CONCAT44(param_2,0x10);
|
|
LAB_0100a709:
|
|
(**(code **)*ppcVar4)(local_2c);
|
|
return 1;
|
|
case 0x2b:
|
|
if (*(int *)((int)ppuParm1 + 0x42) != 0) {
|
|
FUN_01007659(*(int *)((int)ppuParm1 + 0x42));
|
|
}
|
|
*(undefined4 *)((int)ppuParm1 + 0x42) = 0;
|
|
if (in_PF) {
|
|
iVar6 = FUN_010074b7(param_2,(int)ppuParm1,(int)FUN_0100a149);
|
|
*(int *)((int)ppuParm1 + 0x42) = iVar6;
|
|
}
|
|
break;
|
|
case 0x2c:
|
|
param_1 = *(int *)(*(int *)((int)ppuParm1 + 0x2e) + 4);
|
|
if (-1 < param_1 + -1) {
|
|
iVar6 = (param_1 + -1) * 4 + 8;
|
|
do {
|
|
ppcVar4 = *(code ***)(iVar6 + *(int *)((int)ppuParm1 + 0x2e));
|
|
if (*(int *)((int)ppcVar4 + 0x4e) != 0) {
|
|
(**(code **)*ppcVar4)(0,0);
|
|
(**(code **)**(code ***)(iVar6 + *(int *)((int)ppuParm1 + 0x2e)))(0x10,param_2);
|
|
}
|
|
iVar6 = iVar6 + -4;
|
|
param_1 = param_1 + -1;
|
|
} while (param_1 != 0);
|
|
}
|
|
break;
|
|
case 0x2d:
|
|
FUN_01011ec9(param_1,ppuParm1);
|
|
floor((double)(float)param_2);
|
|
param_1 = _ftol();
|
|
if ((-1 < param_1) && (iVar6 = *(int *)(*(int *)((int)ppuParm1 + 0x2e) + 4), param_1 <= iVar6))
|
|
{
|
|
iVar6 = iVar6 + -1;
|
|
if (param_1 < iVar6) {
|
|
param_2 = (int *)(iVar6 * 4 + 8);
|
|
param_1 = iVar6 - param_1;
|
|
iVar6 = iVar6 - param_1;
|
|
do {
|
|
(**(code **)**(code ***)((int)param_2 + *(int *)((int)ppuParm1 + 0x2e)))(0x14,0);
|
|
param_2 = (int *)((int)param_2 + -4);
|
|
param_1 = param_1 + -1;
|
|
} while (param_1 != 0);
|
|
}
|
|
if (-1 < iVar6) {
|
|
iVar8 = iVar6 * 4 + 8;
|
|
iVar6 = iVar6 + 1;
|
|
do {
|
|
(**(code **)**(code ***)(iVar8 + *(int *)((int)ppuParm1 + 0x2e)))(0x13,0);
|
|
iVar8 = iVar8 + -4;
|
|
iVar6 = iVar6 + -1;
|
|
} while (iVar6 != 0);
|
|
}
|
|
}
|
|
break;
|
|
case 0x2e:
|
|
iVar6 = FUN_0100a0de((int)ppuParm1);
|
|
if (-1 < iVar6) {
|
|
(**(code **)**(code ***)(*(int *)((int)ppuParm1 + 0x2e) + 8 + iVar6 * 4))(4,0);
|
|
}
|
|
break;
|
|
default:
|
|
goto switchD_0100a19a_caseD_17;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
|
|
|
|
void __fastcall FUN_0100aa81(undefined4 *param_1)
|
|
|
|
{
|
|
*param_1 = 0x1001a30;
|
|
if (*(int *)((int)param_1 + 0x8a) != 0) {
|
|
FUN_01005541(*(int *)((int)param_1 + 0x8a));
|
|
}
|
|
FUN_01009fd1(param_1);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void __fastcall FUN_0100aaa9(int param_1)
|
|
|
|
{
|
|
int iVar1;
|
|
|
|
iVar1 = *(int *)(param_1 + 0x8e);
|
|
if (iVar1 != 0) {
|
|
FUN_01007659(iVar1);
|
|
*(int *)(param_1 + 0x8e) = 0;
|
|
}
|
|
*(undefined4 *)(param_1 + 0x92) = 0;
|
|
FUN_01009feb(param_1);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_0100aad9(undefined4 param_1,undefined **param_2)
|
|
|
|
{
|
|
int iVar1;
|
|
|
|
*(undefined4 *)((int)param_2 + 0x8e) = 0;
|
|
if (*(int *)((int)param_2 + 0x92) == 0) {
|
|
(**(code **)*param_2)(0x14,0);
|
|
iVar1 = 0x2f;
|
|
}
|
|
else {
|
|
(**(code **)*param_2)(0x2d,(float)(*(int *)((int)param_2 + 0x92) + -1));
|
|
iVar1 = 0x3c;
|
|
}
|
|
FUN_01011ec9(iVar1,param_2);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
undefined4 __thiscall FUN_0100ab28(void *this,int param_1,float param_2)
|
|
|
|
{
|
|
undefined4 *puVar1;
|
|
uint uVar2;
|
|
int iVar3;
|
|
undefined4 uVar4;
|
|
int iVar5;
|
|
|
|
if (param_1 == 0x25) {
|
|
uVar4 = *(undefined4 *)((int)this + 0x92);
|
|
}
|
|
else {
|
|
if (param_1 == 0x2d) {
|
|
if (*(int *)((int)this + 0x8e) != 0) {
|
|
FUN_01007659(*(int *)((int)this + 0x8e));
|
|
*(undefined4 *)((int)this + 0x8e) = 0;
|
|
}
|
|
floor((double)param_2);
|
|
uVar2 = _ftol();
|
|
iVar5 = *(int *)(*(int *)((int)this + 0x2e) + 4);
|
|
iVar3 = iVar5 * 2;
|
|
if (SBORROW4(uVar2,iVar3) == (int)(uVar2 + iVar5 * -2) < 0) {
|
|
uVar2 = iVar3 - 1;
|
|
}
|
|
if ((int)uVar2 < 0) {
|
|
FUN_0100a166(0x14,0);
|
|
*(undefined4 *)((int)this + 0x92) = 0;
|
|
}
|
|
else {
|
|
FUN_0100a166(0x2d,(float)((int)uVar2 / 2));
|
|
if ((uVar2 & 1) == 0) {
|
|
FUN_0100a166(0x2e,0);
|
|
}
|
|
if (*(int *)((int)this + 0x8a) != 0) {
|
|
iVar5 = FUN_010074b7(*(undefined4 *)(*(int *)((int)this + 0x8a) + uVar2 * 4),(int)this,
|
|
(int)FUN_0100aad9);
|
|
*(int *)((int)this + 0x8e) = iVar5;
|
|
}
|
|
*(uint *)((int)this + 0x92) = uVar2;
|
|
}
|
|
}
|
|
else {
|
|
if (param_1 == 0x3f3) {
|
|
(**(code **)(*(int *)this + 0x14))();
|
|
}
|
|
else {
|
|
if (param_1 == 0x3fc) {
|
|
iVar5 = *(int *)((int)this + 0x8e);
|
|
if (iVar5 != 0) {
|
|
FUN_01007659(iVar5);
|
|
*(int *)((int)this + 0x8e) = 0;
|
|
}
|
|
*(undefined4 *)((int)this + *(int *)(*(int *)((int)this + 0x1e) + 0xda) * 4 + 0x96) =
|
|
*(undefined4 *)((int)this + 0x92);
|
|
(**(code **)(*(int *)this + 0x14))();
|
|
floor((double)param_2);
|
|
iVar5 = _ftol();
|
|
iVar5 = *(int *)((int)this + iVar5 * 4 + 0x96);
|
|
*(int *)((int)this + 0x92) = iVar5;
|
|
if (iVar5 != 0) {
|
|
FUN_0100ab28(this,0x2d,(float)iVar5);
|
|
}
|
|
}
|
|
else {
|
|
if (param_1 == 0x400) {
|
|
(**(code **)(*(int *)this + 0x14))();
|
|
iVar5 = 0;
|
|
if (0 < *(int *)(*(int *)((int)this + 0x1e) + 0xd6)) {
|
|
puVar1 = (undefined4 *)((int)this + 0x96);
|
|
do {
|
|
*puVar1 = *(undefined4 *)((int)this + 0x92);
|
|
iVar5 = iVar5 + 1;
|
|
puVar1 = puVar1 + 1;
|
|
} while (iVar5 < *(int *)(*(int *)((int)this + 0x1e) + 0xd6));
|
|
}
|
|
}
|
|
FUN_0100a166();
|
|
}
|
|
}
|
|
}
|
|
uVar4 = 0;
|
|
}
|
|
return uVar4;
|
|
}
|
|
|
|
|
|
|
|
void __thiscall FUN_0100acf3(void *this,int param_1)
|
|
|
|
{
|
|
if ((*(int **)((int)this + 4))[1] == **(int **)((int)this + 4)) {
|
|
FUN_010098f7((int *)this);
|
|
}
|
|
FUN_01012e51(*(int **)((int)this + 4),param_1);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
undefined4 * __thiscall FUN_0100ad21(void *this,int param_1,int param_2)
|
|
|
|
{
|
|
float fVar1;
|
|
float *pfVar2;
|
|
|
|
FUN_01017c6d(this,param_1,param_2,1);
|
|
*(undefined4 *)this = 0x1001a48;
|
|
*(undefined4 *)((int)this + 0x6e) = 0;
|
|
*(undefined4 *)((int)this + 0x52) = 0;
|
|
*(undefined4 *)((int)this + 0x72) = 0;
|
|
*(undefined4 *)((int)this + 0x46) = 0;
|
|
FUN_010099a8((int)this);
|
|
pfVar2 = FUN_0100978e(param_2,0,900);
|
|
fVar1 = *pfVar2;
|
|
*(float *)((int)this + 0x3e) = fVar1;
|
|
*(float *)((int)this + 0x66) = fVar1;
|
|
pfVar2 = FUN_0100978e(param_2,0,0x385);
|
|
fVar1 = *pfVar2;
|
|
*(float *)((int)this + 0x42) = fVar1;
|
|
*(float *)((int)this + 0x6a) = fVar1;
|
|
return (undefined4 *)this;
|
|
}
|
|
|
|
|
|
|
|
undefined4 * __thiscall FUN_0100ad8b(void *this,byte param_1)
|
|
|
|
{
|
|
FUN_01018fbc((undefined4 *)this);
|
|
if ((param_1 & 1) != 0) {
|
|
operator_delete(this);
|
|
}
|
|
return (undefined4 *)this;
|
|
}
|
|
|
|
|
|
|
|
undefined4 * __thiscall FUN_0100adb1(void *this,void *param_1,int param_2)
|
|
|
|
{
|
|
float *pfVar1;
|
|
short *psVar2;
|
|
int iVar3;
|
|
void *local_8;
|
|
|
|
local_8 = this;
|
|
FUN_01017c6d(this,(int)param_1,param_2,0);
|
|
*(undefined4 *)this = 0x1001a60;
|
|
FUN_010098d3((void *)((int)this + 0x2a),4,4);
|
|
*(undefined4 *)((int)this + 0x46) = 0;
|
|
*(undefined4 *)((int)this + 0x42) = 0;
|
|
FUN_01009feb((int)this);
|
|
if (0 < param_2) {
|
|
pfVar1 = FUN_0100978e(param_2,0,0x387);
|
|
*(float *)((int)this + 0x36) = *pfVar1;
|
|
psVar2 = FUN_0100981a(param_2,0x403,(int *)&local_8);
|
|
param_2 = 0;
|
|
if (0 < (int)local_8) {
|
|
do {
|
|
iVar3 = FUN_010176be(param_1,(int)*psVar2);
|
|
if (iVar3 != 0) {
|
|
FUN_0100acf3((void *)((int)this + 0x2a),iVar3);
|
|
}
|
|
param_2 = param_2 + 1;
|
|
psVar2 = psVar2 + 1;
|
|
} while (param_2 < (int)local_8);
|
|
}
|
|
}
|
|
return (undefined4 *)this;
|
|
}
|
|
|
|
|
|
|
|
undefined4 * __thiscall FUN_0100ae4c(void *this,byte param_1)
|
|
|
|
{
|
|
FUN_01009fd1((undefined4 *)this);
|
|
if ((param_1 & 1) != 0) {
|
|
operator_delete(this);
|
|
}
|
|
return (undefined4 *)this;
|
|
}
|
|
|
|
|
|
|
|
undefined4 * __thiscall FUN_0100ae72(void *this,void *param_1,int param_2)
|
|
|
|
{
|
|
int iVar1;
|
|
float *pfVar2;
|
|
int *piVar3;
|
|
int iVar4;
|
|
|
|
FUN_0100adb1(this,param_1,param_2);
|
|
*(undefined4 *)this = 0x1001a30;
|
|
*(undefined4 *)((int)this + 0x8a) = 0;
|
|
FUN_0100aaa9((int)this);
|
|
if ((0 < param_2) && (pfVar2 = FUN_0100978e(param_2,0,0x388), pfVar2 != (float *)0x0)) {
|
|
iVar1 = *(int *)(*(int *)((int)this + 0x2e) + 4);
|
|
piVar3 = FUN_010054c2(iVar1 << 3);
|
|
*(int **)((int)this + 0x8a) = piVar3;
|
|
if ((piVar3 != (int *)0x0) && (iVar4 = 0, 0 < iVar1 * 2)) {
|
|
do {
|
|
*(float *)(*(int *)((int)this + 0x8a) + iVar4 * 4) = *pfVar2;
|
|
iVar4 = iVar4 + 1;
|
|
pfVar2 = pfVar2 + 1;
|
|
} while (SBORROW4(iVar4,iVar1 * 2) != iVar4 + iVar1 * -2 < 0);
|
|
}
|
|
}
|
|
return (undefined4 *)this;
|
|
}
|
|
|
|
|
|
|
|
undefined4 * __thiscall FUN_0100aef9(void *this,byte param_1)
|
|
|
|
{
|
|
FUN_0100aa81((undefined4 *)this);
|
|
if ((param_1 & 1) != 0) {
|
|
operator_delete(this);
|
|
}
|
|
return (undefined4 *)this;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
|
|
|
|
undefined4 FUN_0100af1f(undefined4 param_1)
|
|
|
|
{
|
|
LPSTR lpString2;
|
|
MCIERROR MVar1;
|
|
|
|
DAT_01025010 = 0;
|
|
DAT_01025008 = param_1;
|
|
lpString2 = FUN_01003752(0x9c);
|
|
lstrcpyA(&DAT_01025020,lpString2);
|
|
_DAT_01025018 = 0;
|
|
_DAT_01025014 = &DAT_01025020;
|
|
MVar1 = mciSendCommandA(0,0x803,0x2002,(DWORD_PTR)&DAT_0102500c);
|
|
if (MVar1 == 0) {
|
|
DAT_01025000 = 1;
|
|
}
|
|
return DAT_01025000;
|
|
}
|
|
|
|
|
|
|
|
void FUN_0100af8e(void)
|
|
|
|
{
|
|
if (DAT_01025000 != 0) {
|
|
mciSendCommandA(DAT_01025010,0x804,0,0);
|
|
}
|
|
DAT_01025000 = 0;
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
|
|
|
|
void FUN_0100afb9(void)
|
|
|
|
{
|
|
if (_DAT_01025004 != 0) {
|
|
mciSendCommandA(DAT_01025010,0x808,0,0);
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
|
|
|
|
MCIERROR FUN_0100afdc(int param_1)
|
|
|
|
{
|
|
MCIERROR MVar1;
|
|
undefined4 local_10;
|
|
undefined4 local_c;
|
|
|
|
MVar1 = 0;
|
|
FUN_0100afb9();
|
|
local_c = 0;
|
|
local_10 = DAT_01025008;
|
|
if ((param_1 == 0) && (DAT_01025000 != 0)) {
|
|
MVar1 = mciSendCommandA(DAT_01025010,0x806,5,(DWORD_PTR)&local_10);
|
|
_DAT_01025004 = (uint)(MVar1 == 0);
|
|
}
|
|
return MVar1;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
|
|
|
|
void FUN_0100b035(void)
|
|
|
|
{
|
|
undefined4 local_10;
|
|
undefined4 local_c;
|
|
|
|
local_c = 0;
|
|
local_10 = DAT_01025008;
|
|
if (_DAT_01025004 != 0) {
|
|
mciSendCommandA(DAT_01025010,0x806,5,(DWORD_PTR)&local_10);
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
uint __thiscall FUN_0100b072(void *this,int param_1)
|
|
|
|
{
|
|
int iVar1;
|
|
|
|
iVar1 = *(int *)((int)this + 0x86);
|
|
if (iVar1 != 0) {
|
|
if (*(int *)((int)this + 0x72) == param_1) {
|
|
return 1;
|
|
}
|
|
if (iVar1 != 1) {
|
|
if (*(int *)((int)this + 0x76) == param_1) {
|
|
return 1;
|
|
}
|
|
if (iVar1 != 2) {
|
|
if (*(int *)((int)this + 0x7a) == param_1) {
|
|
return 1;
|
|
}
|
|
if (iVar1 != 3) {
|
|
if (*(int *)((int)this + 0x7e) == param_1) {
|
|
return 1;
|
|
}
|
|
if (iVar1 != 4) {
|
|
if (*(int *)((int)this + 0x82) == param_1) {
|
|
return 1;
|
|
}
|
|
if (iVar1 == 5) {
|
|
return 0;
|
|
}
|
|
return (uint)(iVar1 == param_1);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
|
|
|
|
void __thiscall FUN_0100b0f4(int iParm1,float param_1)
|
|
|
|
{
|
|
bool in_PF;
|
|
double dVar1;
|
|
|
|
dVar1 = (double)(*(int *)(iParm1 + 0x10) + -1);
|
|
floor((double)((param_1 - *(float *)(iParm1 + 0x18)) * *(float *)(iParm1 + 8)));
|
|
if (!in_PF) {
|
|
dVar1 = floor((double)((param_1 - *(float *)(iParm1 + 0x18)) * *(float *)(iParm1 + 8)));
|
|
}
|
|
if (((ushort)((ushort)(dVar1 < 0.00000000) << 8 | (ushort)(dVar1 == 0.00000000) << 0xe) == 0) &&
|
|
(floor((double)((param_1 - *(float *)(iParm1 + 0x18)) * *(float *)(iParm1 + 8))), !in_PF)) {
|
|
floor((double)((param_1 - *(float *)(iParm1 + 0x18)) * *(float *)(iParm1 + 8)));
|
|
}
|
|
_ftol();
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void __thiscall FUN_0100b1ae(int iParm1,float param_1)
|
|
|
|
{
|
|
bool in_PF;
|
|
double dVar1;
|
|
|
|
dVar1 = (double)(*(int *)(iParm1 + 0x14) + -1);
|
|
floor((double)((param_1 - *(float *)(iParm1 + 0x1c)) * *(float *)(iParm1 + 0xc)));
|
|
if (!in_PF) {
|
|
dVar1 = floor((double)((param_1 - *(float *)(iParm1 + 0x1c)) * *(float *)(iParm1 + 0xc)));
|
|
}
|
|
if (((ushort)((ushort)(dVar1 < 0.00000000) << 8 | (ushort)(dVar1 == 0.00000000) << 0xe) == 0) &&
|
|
(floor((double)((param_1 - *(float *)(iParm1 + 0x1c)) * *(float *)(iParm1 + 0xc))), !in_PF)) {
|
|
floor((double)((param_1 - *(float *)(iParm1 + 0x1c)) * *(float *)(iParm1 + 0xc)));
|
|
}
|
|
_ftol();
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
int __thiscall FUN_0100b268(void *this,int param_1)
|
|
|
|
{
|
|
int iVar1;
|
|
|
|
iVar1 = *(int *)((int)this + 0x10) + -1;
|
|
if (param_1 + 1 < iVar1) {
|
|
iVar1 = param_1 + 1;
|
|
}
|
|
return iVar1;
|
|
}
|
|
|
|
|
|
|
|
int __thiscall FUN_0100b284(void *this,int param_1)
|
|
|
|
{
|
|
int iVar1;
|
|
|
|
iVar1 = *(int *)((int)this + 0x14) + -1;
|
|
if (param_1 + 1 < iVar1) {
|
|
iVar1 = param_1 + 1;
|
|
}
|
|
return iVar1;
|
|
}
|
|
|
|
|
|
|
|
void FUN_0100b2a0(undefined4 param_1,undefined4 param_2,int param_3,undefined *param_4)
|
|
|
|
{
|
|
if (-1 < param_3 + -1) {
|
|
do {
|
|
(*(code *)param_4)();
|
|
param_3 = param_3 + -1;
|
|
} while (param_3 != 0);
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void __fastcall FUN_0100b2c9(int param_1)
|
|
|
|
{
|
|
FUN_01013c6f(*(int *)(param_1 + 0xc));
|
|
FUN_01013c6f(*(int *)(param_1 + 4));
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_0100b2e5(undefined4 param_1,undefined4 param_2,int param_3,undefined *param_4)
|
|
|
|
{
|
|
if (-1 < param_3 + -1) {
|
|
do {
|
|
(*(code *)param_4)();
|
|
param_3 = param_3 + -1;
|
|
} while (param_3 != 0);
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void __thiscall FUN_0100b316(void *this,int param_1,float *param_2)
|
|
|
|
{
|
|
char **ppcVar1;
|
|
int iVar2;
|
|
int iVar3;
|
|
int iVar4;
|
|
int iVar5;
|
|
float local_10 [3];
|
|
|
|
iVar2 = param_1;
|
|
iVar3 = FUN_0100b0f4(*(undefined4 *)(param_1 + 0x2a));
|
|
iVar4 = FUN_0100b1ae(*(undefined4 *)(param_1 + 0x2e));
|
|
iVar3 = (*(int *)((int)this + 0x10) * iVar4 + iVar3) * 0x10 + *(int *)((int)this + 0x20);
|
|
param_1 = *(int *)(*(int *)(iVar3 + 0xc) + 4);
|
|
if (-1 < param_1 + -1) {
|
|
iVar4 = (param_1 + -1) * 4 + 8;
|
|
do {
|
|
ppcVar1 = *(char ***)(iVar4 + *(int *)(iVar3 + 0xc));
|
|
if ((**ppcVar1 != '\0') && (((uint)ppcVar1[1] & *(uint *)(iVar2 + 0x6e)) != 0)) {
|
|
iVar5 = (**(code **)(*(int *)ppcVar1[2] + 0x18))(iVar2,local_10);
|
|
if (iVar5 != 0) {
|
|
FUN_0101cb8e(param_2,local_10);
|
|
}
|
|
}
|
|
iVar4 = iVar4 + -4;
|
|
param_1 = param_1 + -1;
|
|
} while (param_1 != 0);
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
int __thiscall
|
|
FUN_0100b3ae(int iParm1,int param_1,int param_2,float *param_3,int **param_4,int param_5,
|
|
void *param_6,int param_7)
|
|
|
|
{
|
|
int *piVar1;
|
|
uint uVar2;
|
|
int **ppiVar3;
|
|
int iVar4;
|
|
bool in_PF;
|
|
float10 fVar5;
|
|
|
|
if ((((-1 < param_1) && (param_1 < 10)) && (-1 < param_2)) && (param_2 < 0xf)) {
|
|
iVar4 = (*(int *)(iParm1 + 0x10) * param_2 + param_1) * 0x10 + *(int *)(iParm1 + 0x20);
|
|
param_1 = *(int *)(*(int *)(iVar4 + 4) + 4);
|
|
if (-1 < param_1 + -1) {
|
|
param_2 = (param_1 + -1) * 4 + 8;
|
|
ppiVar3 = (int **)(iParm1 + 0x24 + param_7 * 4);
|
|
do {
|
|
piVar1 = *(int **)(param_2 + *(int *)(iVar4 + 4));
|
|
if (((*(char *)(piVar1 + 3) == '\0') && (*(char *)piVar1[2] != '\0')) &&
|
|
(((*(uint *)(param_5 + 0x28) & *(uint *)((int)piVar1 + 0x11)) != 0 &&
|
|
(uVar2 = FUN_0100b072(param_6,(int)piVar1), uVar2 == 0)))) {
|
|
param_7 = param_7 + 1;
|
|
*ppiVar3 = piVar1;
|
|
ppiVar3 = ppiVar3 + 1;
|
|
*(undefined *)(piVar1 + 3) = 1;
|
|
fVar5 = (float10)(**(code **)(*piVar1 + 0xc))(param_5);
|
|
if (!in_PF) {
|
|
*param_3 = (float)fVar5;
|
|
*param_4 = piVar1;
|
|
}
|
|
}
|
|
param_2 = param_2 + -4;
|
|
param_1 = param_1 + -1;
|
|
} while (param_1 != 0);
|
|
}
|
|
}
|
|
return param_7;
|
|
}
|
|
|
|
|
|
|
|
float10 __thiscall FUN_0100b486(float *pfParm1,float *param_1,undefined4 param_2,undefined4 param_3)
|
|
|
|
{
|
|
float fVar1;
|
|
float fVar2;
|
|
float fVar3;
|
|
float fVar4;
|
|
float *pfVar5;
|
|
int iVar6;
|
|
int iVar7;
|
|
int iVar8;
|
|
int iVar9;
|
|
int iVar10;
|
|
bool in_PF;
|
|
int local_2c;
|
|
int local_24;
|
|
int local_1c;
|
|
float local_c;
|
|
float local_8;
|
|
|
|
pfVar5 = param_1;
|
|
fVar1 = *param_1;
|
|
local_c = 1000000000.00000000;
|
|
iVar10 = 0;
|
|
iVar6 = FUN_0100b0f4(fVar1);
|
|
local_8 = param_1[1];
|
|
iVar7 = FUN_0100b1ae(local_8);
|
|
fVar2 = param_1[3] * param_1[6] + *param_1;
|
|
iVar8 = FUN_0100b0f4(fVar2);
|
|
fVar3 = param_1[4] * param_1[6] + param_1[1];
|
|
iVar9 = FUN_0100b1ae(fVar3);
|
|
if (in_PF) {
|
|
local_2c = -1;
|
|
local_24 = -1;
|
|
}
|
|
else {
|
|
local_2c = 1;
|
|
local_24 = 1;
|
|
}
|
|
if (iVar7 == iVar9) {
|
|
if (local_2c == 1) {
|
|
while (iVar6 <= iVar8) {
|
|
iVar10 = FUN_0100b3ae(iVar6,iVar7,&local_c,param_3,param_1,param_2,iVar10);
|
|
iVar6 = iVar6 + 1;
|
|
}
|
|
}
|
|
else {
|
|
while (iVar8 <= iVar6) {
|
|
iVar10 = FUN_0100b3ae(iVar6,iVar7,&local_c,param_3,param_1,param_2,iVar10);
|
|
iVar6 = iVar6 + -1;
|
|
}
|
|
}
|
|
}
|
|
else {
|
|
if (iVar6 == iVar8) {
|
|
if (local_24 == 1) {
|
|
while (iVar7 <= iVar9) {
|
|
iVar10 = FUN_0100b3ae(iVar6,iVar7,&local_c,param_3,param_1,param_2,iVar10);
|
|
iVar7 = iVar7 + 1;
|
|
}
|
|
}
|
|
else {
|
|
while (iVar9 <= iVar7) {
|
|
iVar10 = FUN_0100b3ae(iVar6,iVar7,&local_c,param_3,param_1,param_2,iVar10);
|
|
iVar7 = iVar7 + -1;
|
|
}
|
|
}
|
|
}
|
|
else {
|
|
fVar2 = (local_8 - fVar3) / (fVar1 - fVar2);
|
|
fVar1 = local_8 - fVar2 * fVar1;
|
|
local_8 = (float)iVar7;
|
|
iVar10 = FUN_0100b3ae(iVar6,iVar7,&local_c,param_3,param_1,param_2,0);
|
|
if (local_2c == 1) {
|
|
local_1c = iVar6 + 1;
|
|
param_1 = (float *)iVar6;
|
|
if (local_24 == 1) {
|
|
do {
|
|
if (in_PF) {
|
|
if (!in_PF) {
|
|
param_1 = (float *)((int)param_1 + 1);
|
|
}
|
|
local_8 = (float)((int)local_8 + 1);
|
|
}
|
|
else {
|
|
param_1 = (float *)((int)param_1 + 1);
|
|
}
|
|
iVar10 = FUN_0100b3ae(param_1,local_8,&local_c,param_3,pfVar5,param_2,iVar10);
|
|
} while (((int)param_1 < iVar8) || ((int)local_8 < iVar9));
|
|
}
|
|
else {
|
|
do {
|
|
fVar3 = (float)(int)local_8 * pfParm1[1] + pfParm1[7];
|
|
fVar4 = ((float)local_1c * *pfParm1 + pfParm1[6]) * fVar2 + fVar1;
|
|
if ((ushort)((ushort)(fVar4 < fVar3) << 8 | (ushort)(fVar4 == fVar3) << 0xe) == 0) {
|
|
param_1 = (float *)((int)param_1 + 1);
|
|
local_1c = local_1c + 1;
|
|
}
|
|
else {
|
|
if (!in_PF) {
|
|
param_1 = (float *)((int)param_1 + 1);
|
|
local_1c = local_1c + 1;
|
|
}
|
|
local_8 = (float)((int)local_8 + -1);
|
|
}
|
|
iVar10 = FUN_0100b3ae(param_1,local_8,&local_c,param_3,pfVar5,param_2,iVar10);
|
|
} while (((int)param_1 < iVar8) || (iVar9 < (int)local_8));
|
|
}
|
|
}
|
|
else {
|
|
param_1 = (float *)iVar6;
|
|
if (local_24 == 1) {
|
|
do {
|
|
if (in_PF) {
|
|
if (!in_PF) {
|
|
param_1 = (float *)((int)param_1 + -1);
|
|
}
|
|
local_8 = (float)((int)local_8 + 1);
|
|
}
|
|
else {
|
|
param_1 = (float *)((int)param_1 + -1);
|
|
}
|
|
iVar10 = FUN_0100b3ae(param_1,local_8,&local_c,param_3,pfVar5,param_2,iVar10);
|
|
} while ((iVar8 < (int)param_1) || ((int)local_8 < iVar9));
|
|
}
|
|
else {
|
|
do {
|
|
fVar3 = (float)(int)local_8 * pfParm1[1] + pfParm1[7];
|
|
fVar4 = ((float)(int)param_1 * *pfParm1 + pfParm1[6]) * fVar2 + fVar1;
|
|
if ((ushort)((ushort)(fVar4 < fVar3) << 8 | (ushort)(fVar4 == fVar3) << 0xe) == 0) {
|
|
param_1 = (float *)((int)param_1 + -1);
|
|
}
|
|
else {
|
|
if (!in_PF) {
|
|
param_1 = (float *)((int)param_1 + -1);
|
|
}
|
|
local_8 = (float)((int)local_8 + -1);
|
|
}
|
|
iVar10 = FUN_0100b3ae(param_1,local_8,&local_c,param_3,pfVar5,param_2,iVar10);
|
|
} while ((iVar8 < (int)param_1) || (iVar9 < (int)local_8));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (0 < iVar10) {
|
|
pfParm1 = pfParm1 + 9;
|
|
do {
|
|
fVar1 = *pfParm1;
|
|
pfParm1 = pfParm1 + 1;
|
|
iVar10 = iVar10 + -1;
|
|
*(undefined *)((int)fVar1 + 0xc) = 0;
|
|
} while (iVar10 != 0);
|
|
}
|
|
return (float10)local_c;
|
|
}
|
|
|
|
|
|
|
|
float * __thiscall FUN_0100b883(void *this,float param_1,float param_2,float param_3,float param_4)
|
|
|
|
{
|
|
undefined4 *puVar1;
|
|
undefined4 *puVar2;
|
|
|
|
*(float *)((int)this + 0x18) = param_1;
|
|
*(float *)this = param_3 * 0.10000000;
|
|
*(float *)((int)this + 0x1c) = param_2;
|
|
*(undefined4 *)((int)this + 0x10) = 10;
|
|
*(float *)((int)this + 4) = param_4 * 0.06666667;
|
|
*(undefined4 *)((int)this + 0x14) = 0xf;
|
|
*(float *)((int)this + 8) = 1.00000000 / (param_3 * 0.10000000);
|
|
*(float *)((int)this + 0xc) = 1.00000000 / (param_4 * 0.06666667);
|
|
puVar1 = (undefined4 *)operator_new(0x964);
|
|
if (puVar1 == (undefined4 *)0x0) {
|
|
puVar2 = (undefined4 *)0x0;
|
|
}
|
|
else {
|
|
puVar2 = puVar1 + 1;
|
|
*puVar1 = 0x96;
|
|
FUN_0100b2a0(puVar2,0x10,0x96,&LAB_0100b0d1);
|
|
}
|
|
*(undefined4 **)((int)this + 0x20) = puVar2;
|
|
return (float *)this;
|
|
}
|
|
|
|
|
|
|
|
int * __thiscall FUN_0100b90e(void *this,byte param_1)
|
|
|
|
{
|
|
int *piVar1;
|
|
|
|
if ((param_1 & 2) == 0) {
|
|
FUN_0100b2c9((int)this);
|
|
piVar1 = (int *)this;
|
|
if ((param_1 & 1) != 0) {
|
|
operator_delete(this);
|
|
piVar1 = (int *)this;
|
|
}
|
|
}
|
|
else {
|
|
piVar1 = (int *)((int)this + -4);
|
|
FUN_0100b2e5(this,0x10,*piVar1,FUN_0100b2c9);
|
|
if ((param_1 & 1) != 0) {
|
|
operator_delete(piVar1);
|
|
}
|
|
}
|
|
return piVar1;
|
|
}
|
|
|
|
|
|
|
|
void __thiscall FUN_0100b961(void *this,int param_1,int param_2,int param_3)
|
|
|
|
{
|
|
FUN_0100acf3((void *)((*(int *)((int)this + 0x10) * param_2 + param_1) * 0x10 +
|
|
*(int *)((int)this + 0x20)),param_3);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void __thiscall FUN_0100b989(void *this,int param_1,int param_2,int param_3)
|
|
|
|
{
|
|
FUN_0100acf3((void *)((*(int *)((int)this + 0x10) * param_2 + param_1) * 0x10 + 8 +
|
|
*(int *)((int)this + 0x20)),param_3);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void __fastcall FUN_0100b9b3(int param_1)
|
|
|
|
{
|
|
if (*(void **)(param_1 + 0x20) != (void *)0x0) {
|
|
FUN_0100b90e(*(void **)(param_1 + 0x20),3);
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_0100b9c7(float *param_1,int param_2,int param_3)
|
|
|
|
{
|
|
float fVar1;
|
|
float *pfVar2;
|
|
int iVar3;
|
|
float *this;
|
|
bool in_PF;
|
|
float local_74;
|
|
float local_70;
|
|
undefined4 uStack108;
|
|
undefined4 local_68;
|
|
undefined4 local_64;
|
|
float local_5c;
|
|
float local_48;
|
|
float local_44;
|
|
undefined4 uStack64;
|
|
float local_3c;
|
|
float local_38;
|
|
undefined4 uStack52;
|
|
float local_30;
|
|
float local_2c;
|
|
float local_28;
|
|
float local_24;
|
|
float local_20;
|
|
float local_1c;
|
|
int local_18;
|
|
int local_14;
|
|
int local_10;
|
|
float local_c;
|
|
int local_8;
|
|
|
|
pfVar2 = param_1;
|
|
local_24 = *DAT_0102503c * 0.00100000 + SQRT(param_1[3]);
|
|
local_c = local_24 * local_24;
|
|
local_20 = *param_1 - local_24;
|
|
local_28 = param_1[1] - local_24;
|
|
local_1c = local_24 + *param_1;
|
|
local_24 = local_24 + param_1[1];
|
|
iVar3 = FUN_0100b0f4(local_20);
|
|
local_18 = FUN_0100b1ae(local_28);
|
|
local_14 = FUN_0100b0f4(local_1c);
|
|
local_10 = FUN_0100b1ae(local_24);
|
|
this = DAT_0102503c;
|
|
param_1 = (float *)(iVar3 + -1);
|
|
if ((int)param_1 < 1) {
|
|
param_1 = (float *)0x0;
|
|
}
|
|
local_18 = local_18 + -1;
|
|
if (local_18 < 1) {
|
|
local_18 = 0;
|
|
}
|
|
local_14 = FUN_0100b268(DAT_0102503c,local_14);
|
|
local_10 = FUN_0100b284(this,local_10);
|
|
local_3c = (float)(int)param_1 * *this + this[6];
|
|
local_30 = (float)local_18 * this[1] + this[7];
|
|
local_8 = (int)param_1;
|
|
do {
|
|
if (local_14 < local_8) {
|
|
return;
|
|
}
|
|
param_1 = (float *)local_18;
|
|
local_38 = local_30;
|
|
while ((int)param_1 <= local_10) {
|
|
if ((((in_PF) &&
|
|
(local_2c = local_3c + *this,
|
|
(ushort)((ushort)(local_20 < local_2c) << 8 | (ushort)(local_20 == local_2c) << 0xe) != 0
|
|
)) && (in_PF)) &&
|
|
(fVar1 = local_38 + this[1],
|
|
(ushort)((ushort)(local_28 < fVar1) << 8 | (ushort)(local_28 == fVar1) << 0xe) != 0)) {
|
|
if (((in_PF) || (*pfVar2 < local_3c)) || ((fVar1 < pfVar2[1] || (pfVar2[1] < local_38)))) {
|
|
local_48 = local_3c;
|
|
local_44 = local_38;
|
|
uStack64 = uStack52;
|
|
FUN_0101cc23(local_3c,local_38,uStack52,*pfVar2,pfVar2[1]);
|
|
this = DAT_0102503c;
|
|
if (in_PF) {
|
|
local_48 = local_48 + *DAT_0102503c;
|
|
FUN_0101cc23(local_48,local_44,uStack64,*pfVar2,pfVar2[1]);
|
|
this = DAT_0102503c;
|
|
if (in_PF) {
|
|
local_44 = local_44 + DAT_0102503c[1];
|
|
FUN_0101cc23(local_48,local_44,uStack64,*pfVar2,pfVar2[1]);
|
|
this = DAT_0102503c;
|
|
if (in_PF) {
|
|
local_48 = local_48 - *DAT_0102503c;
|
|
FUN_0101cc23(local_48,local_44,uStack64,*pfVar2,pfVar2[1]);
|
|
this = DAT_0102503c;
|
|
if (in_PF) {
|
|
local_74 = local_3c;
|
|
local_70 = local_38;
|
|
uStack108 = uStack52;
|
|
local_68 = 0x3f800000;
|
|
local_64 = 0;
|
|
local_5c = *DAT_0102503c;
|
|
FUN_01008b34(&local_74,pfVar2);
|
|
this = DAT_0102503c;
|
|
if (in_PF) {
|
|
local_68 = 0xbf800000;
|
|
local_74 = local_74 + *DAT_0102503c;
|
|
FUN_01008b34(&local_74,pfVar2);
|
|
this = DAT_0102503c;
|
|
if (in_PF) {
|
|
local_68 = 0;
|
|
local_64 = 0x3f800000;
|
|
local_5c = DAT_0102503c[1];
|
|
FUN_01008b34(&local_74,pfVar2);
|
|
this = DAT_0102503c;
|
|
if (in_PF) {
|
|
local_64 = 0xbf800000;
|
|
local_70 = local_70 + DAT_0102503c[1];
|
|
FUN_01008b34(&local_74,pfVar2);
|
|
this = DAT_0102503c;
|
|
if (in_PF) {
|
|
local_64 = 0;
|
|
local_68 = 0xbf800000;
|
|
local_5c = *DAT_0102503c;
|
|
FUN_01008b34(&local_74,pfVar2);
|
|
this = DAT_0102503c;
|
|
if (in_PF) {
|
|
local_68 = 0x3f800000;
|
|
local_74 = local_74 - *DAT_0102503c;
|
|
FUN_01008b34(&local_74,pfVar2);
|
|
this = DAT_0102503c;
|
|
if (in_PF) {
|
|
local_68 = 0;
|
|
local_64 = 0xbf800000;
|
|
local_5c = DAT_0102503c[1];
|
|
FUN_01008b34(&local_74,pfVar2);
|
|
this = DAT_0102503c;
|
|
if (in_PF) {
|
|
local_64 = 0x3f800000;
|
|
local_70 = local_70 - DAT_0102503c[1];
|
|
FUN_01008b34(&local_74,pfVar2);
|
|
this = DAT_0102503c;
|
|
if (in_PF) goto LAB_0100bde0;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (param_2 != 0) {
|
|
FUN_0100b961(this,local_8,(int)param_1,param_2);
|
|
this = DAT_0102503c;
|
|
}
|
|
if (param_3 != 0) {
|
|
FUN_0100b989(this,local_8,(int)param_1,param_3);
|
|
this = DAT_0102503c;
|
|
}
|
|
}
|
|
LAB_0100bde0:
|
|
param_1 = (float *)((int)param_1 + 1);
|
|
local_38 = local_38 + this[1];
|
|
}
|
|
local_3c = local_3c + *this;
|
|
local_8 = local_8 + 1;
|
|
} while( true );
|
|
}
|
|
|
|
|
|
|
|
unkbyte10 FUN_0100be21(float param_1,float param_2,float param_3,float param_4,int param_5,
|
|
int param_6)
|
|
|
|
{
|
|
int iVar1;
|
|
int iVar2;
|
|
int iVar3;
|
|
int iVar4;
|
|
int iVar5;
|
|
void *this;
|
|
bool in_PF;
|
|
unkbyte10 extraout_ST0;
|
|
unkbyte10 Var6;
|
|
|
|
iVar2 = _ftol();
|
|
iVar3 = _ftol();
|
|
iVar4 = FUN_0100b0f4(param_2 - (float)iVar2);
|
|
iVar5 = FUN_0100b1ae(param_1 - (float)iVar3);
|
|
iVar2 = FUN_0100b0f4((float)iVar2 + param_4);
|
|
iVar3 = FUN_0100b1ae((float)iVar3 + param_3);
|
|
this = DAT_0102503c;
|
|
Var6 = extraout_ST0;
|
|
while (iVar1 = iVar5, iVar4 <= iVar2) {
|
|
while (iVar1 <= iVar3) {
|
|
if ((((in_PF) && (in_PF)) && (in_PF)) && (in_PF)) {
|
|
if (param_5 != 0) {
|
|
Var6 = FUN_0100b961(this,iVar4,iVar1,param_5);
|
|
this = DAT_0102503c;
|
|
}
|
|
if (param_6 != 0) {
|
|
Var6 = FUN_0100b989(this,iVar4,iVar1,param_6);
|
|
this = DAT_0102503c;
|
|
}
|
|
}
|
|
iVar1 = iVar1 + 1;
|
|
}
|
|
iVar4 = iVar4 + 1;
|
|
}
|
|
return Var6;
|
|
}
|
|
|
|
|
|
|
|
byte * FUN_0100bf8e(byte **param_1)
|
|
|
|
{
|
|
byte bVar1;
|
|
int iVar2;
|
|
byte *pbVar3;
|
|
byte *pbVar4;
|
|
int iVar5;
|
|
byte **ppbVar6;
|
|
byte *pbVar7;
|
|
bool bVar8;
|
|
int local_8;
|
|
|
|
pbVar3 = param_1[1];
|
|
if (pbVar3 == (byte *)0x0) {
|
|
iVar2 = *(int *)(*(int *)(DAT_01025040 + 0xfe) + 4);
|
|
local_8 = 0;
|
|
if (0 < iVar2) {
|
|
ppbVar6 = (byte **)(*(int *)(DAT_01025040 + 0xfe) + 8);
|
|
do {
|
|
pbVar3 = *ppbVar6;
|
|
pbVar7 = *(byte **)(pbVar3 + 10);
|
|
if (pbVar7 != (byte *)0x0) {
|
|
pbVar4 = *param_1;
|
|
do {
|
|
bVar1 = *pbVar7;
|
|
bVar8 = bVar1 < *pbVar4;
|
|
if (bVar1 != *pbVar4) {
|
|
LAB_0100bfee:
|
|
iVar5 = (1 - (uint)bVar8) - (uint)(bVar8 != false);
|
|
goto LAB_0100bff3;
|
|
}
|
|
if (bVar1 == 0) break;
|
|
bVar1 = pbVar7[1];
|
|
bVar8 = bVar1 < pbVar4[1];
|
|
if (bVar1 != pbVar4[1]) goto LAB_0100bfee;
|
|
pbVar7 = pbVar7 + 2;
|
|
pbVar4 = pbVar4 + 2;
|
|
} while (bVar1 != 0);
|
|
iVar5 = 0;
|
|
LAB_0100bff3:
|
|
if (iVar5 == 0) {
|
|
param_1[1] = pbVar3;
|
|
return pbVar3;
|
|
}
|
|
}
|
|
local_8 = local_8 + 1;
|
|
ppbVar6 = ppbVar6 + 1;
|
|
} while (local_8 < iVar2);
|
|
}
|
|
pbVar3 = (byte *)0x0;
|
|
}
|
|
return pbVar3;
|
|
}
|
|
|
|
|
|
|
|
void FUN_0100c01d(int param_1)
|
|
|
|
{
|
|
int *piVar1;
|
|
int iVar2;
|
|
int *piVar3;
|
|
uint uVar4;
|
|
|
|
DAT_01025040 = param_1;
|
|
piVar3 = &DAT_01023ef8;
|
|
param_1 = 0x58;
|
|
do {
|
|
piVar1 = (int *)FUN_0100bf8e((byte **)piVar3[-2]);
|
|
iVar2 = 0;
|
|
if ((piVar1 != (int *)0x0) && (*(int **)((int)piVar1 + 0x12) = piVar3 + -1, 0 < *piVar3)) {
|
|
do {
|
|
(**(code **)(*piVar1 + 0xc))(iVar2,*(undefined4 *)(piVar3[1] + iVar2 * 4));
|
|
iVar2 = iVar2 + 1;
|
|
} while (iVar2 < *piVar3);
|
|
}
|
|
piVar3 = piVar3 + 4;
|
|
param_1 = param_1 + -1;
|
|
} while (param_1 != 0);
|
|
uVar4 = 0;
|
|
do {
|
|
FUN_0100bf8e(*(byte ***)((int)&PTR_PTR_s_lite8_01024470 + uVar4));
|
|
uVar4 = uVar4 + 4;
|
|
} while (uVar4 < 0x238);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
undefined4 FUN_0100c092(int param_1)
|
|
|
|
{
|
|
int iVar1;
|
|
undefined4 uVar2;
|
|
|
|
iVar1 = *(int *)(param_1 + 4);
|
|
if (((*(int *)(iVar1 + 0x4e) == 0) && (*(int *)(iVar1 + 0x5a) == 0)) &&
|
|
(*(int *)(iVar1 + 0x52) == 0)) {
|
|
uVar2 = 0;
|
|
}
|
|
else {
|
|
uVar2 = 1;
|
|
}
|
|
return uVar2;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
|
|
|
|
void FUN_0100c0be(int param_1)
|
|
|
|
{
|
|
if (param_1 == 0x3f3) {
|
|
_DAT_01025044 = 0;
|
|
(**(code **)*DAT_01023cec)(7,0);
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_0100c0ee(undefined4 param_1)
|
|
|
|
{
|
|
LPSTR pCVar1;
|
|
|
|
(**(code **)*DAT_01023d0c)(0x13,0);
|
|
pCVar1 = FUN_01003752(0);
|
|
FUN_010144b7(pCVar1,param_1);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_0100c12a(void)
|
|
|
|
{
|
|
LPSTR pCVar1;
|
|
undefined4 local_4;
|
|
|
|
local_4 = 0x40000000;
|
|
pCVar1 = FUN_01003752(0x10);
|
|
FUN_010144b7(pCVar1,local_4);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_0100c14f(void)
|
|
|
|
{
|
|
LPSTR pCVar1;
|
|
undefined4 uVar2;
|
|
|
|
*(undefined4 *)(DAT_01025040 + 0x13e) = 1;
|
|
(**(code **)*DAT_01023abc)(9,0x42700000);
|
|
uVar2 = 0x40000000;
|
|
pCVar1 = FUN_01003752(0xf);
|
|
FUN_010144b7(pCVar1,uVar2);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_0100c199(void)
|
|
|
|
{
|
|
LPSTR pCVar1;
|
|
undefined4 uVar2;
|
|
|
|
*(undefined4 *)(DAT_01025040 + 0x136) = 1;
|
|
(**(code **)*DAT_01023ac4)(9,0x42700000);
|
|
uVar2 = 0x40000000;
|
|
pCVar1 = FUN_01003752(4);
|
|
FUN_010144b7(pCVar1,uVar2);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_0100c1e3(void)
|
|
|
|
{
|
|
LPSTR pCVar1;
|
|
undefined4 uVar2;
|
|
|
|
(**(code **)*DAT_01023940)(9,0x42700000);
|
|
(**(code **)*DAT_010239d0)(9,0x42700000);
|
|
(**(code **)*DAT_01023ab4)(9,0x42700000);
|
|
uVar2 = 0x40000000;
|
|
pCVar1 = FUN_01003752(0x33);
|
|
FUN_010144b7(pCVar1,uVar2);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_0100c24a(void)
|
|
|
|
{
|
|
LPSTR pCVar1;
|
|
undefined4 uVar2;
|
|
|
|
(**(code **)*DAT_01023acc)(0x13,0);
|
|
uVar2 = 0x40000000;
|
|
pCVar1 = FUN_01003752(0x34);
|
|
FUN_010144b7(pCVar1,uVar2);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_0100c281(void)
|
|
|
|
{
|
|
int iVar1;
|
|
LPSTR pCVar2;
|
|
undefined4 uVar3;
|
|
|
|
iVar1 = *(int *)(DAT_01025040 + 0x156);
|
|
if (iVar1 == 2) {
|
|
FUN_0100c12a();
|
|
*(undefined4 *)(DAT_01025040 + 0x156) = 0;
|
|
return;
|
|
}
|
|
*(int *)(DAT_01025040 + 0x156) = iVar1 + 1;
|
|
(**(code **)(*DAT_01023dac + 0x14))();
|
|
uVar3 = 0x40000000;
|
|
pCVar2 = FUN_01003752(1);
|
|
FUN_010144b7(pCVar2,uVar3);
|
|
(**(code **)**(code ***)(DAT_01025040 + 0xde))(0x3f8,0);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_0100c2f3(undefined4 param_1)
|
|
|
|
{
|
|
LPSTR pCVar1;
|
|
|
|
*(int *)(DAT_01025040 + 0x14e) = *(int *)(DAT_01025040 + 0x14e) + 1;
|
|
(**(code **)(*DAT_01023d44 + 0x14))();
|
|
pCVar1 = FUN_01003752(9);
|
|
FUN_010144b7(pCVar1,param_1);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_0100c335(int param_1)
|
|
|
|
{
|
|
undefined4 uVar1;
|
|
undefined4 uVar2;
|
|
undefined4 uVar3;
|
|
void *this;
|
|
|
|
this = DAT_01025040;
|
|
uVar1 = *(undefined4 *)((int)DAT_01025040 + 0x13e);
|
|
*(undefined4 *)((int)DAT_01025040 + 0x13e) = 0;
|
|
uVar2 = *(undefined4 *)((int)this + 0x136);
|
|
*(undefined4 *)((int)this + 0x136) = 0;
|
|
uVar3 = *(undefined4 *)((int)this + 0x126);
|
|
*(undefined4 *)((int)this + 0x126) = 0;
|
|
FUN_01017526(this,param_1);
|
|
this = DAT_01025040;
|
|
*(undefined4 *)((int)DAT_01025040 + 0x136) = uVar2;
|
|
*(undefined4 *)((int)this + 0x126) = uVar3;
|
|
*(undefined4 *)((int)this + 0x13e) = uVar1;
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_0100c397(int param_1)
|
|
|
|
{
|
|
int iVar1;
|
|
|
|
iVar1 = *(int *)(DAT_01023bbc + 6);
|
|
if ((((iVar1 != 0x10) && (iVar1 != 0x16)) && (iVar1 != 0x17)) &&
|
|
((param_1 != 0 || (*(int *)(DAT_01023a24 + 6) != 0)))) {
|
|
param_1 = *(int *)(DAT_01023a24 + 6) + 1;
|
|
if (param_1 == 4) {
|
|
param_1 = 1;
|
|
}
|
|
(**(code **)*DAT_01023a3c)(0x17,(float)param_1);
|
|
(**(code **)*DAT_01023a3c)(0xb,(float)(3 - param_1));
|
|
iVar1 = FUN_0100c092((int)&PTR_s_lite4_01023a20);
|
|
if (iVar1 == 0) {
|
|
(**(code **)*DAT_01023a1c)(0x13,0);
|
|
(**(code **)*DAT_01023a3c)(0x13,0);
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_0100c44b(int param_1,int *param_2)
|
|
|
|
{
|
|
int iVar1;
|
|
|
|
if (param_1 == 0x3f) {
|
|
(**(code **)*DAT_010237d4)(9,0x3dcccccd);
|
|
iVar1 = (**(code **)(*param_2 + 8))(0);
|
|
FUN_01017526(DAT_01025040,iVar1);
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_0100c48b(int param_1,int *param_2)
|
|
|
|
{
|
|
int iVar1;
|
|
|
|
if (param_1 == 0x3f) {
|
|
(**(code **)*DAT_010237dc)(9,0x3dcccccd);
|
|
iVar1 = (**(code **)(*param_2 + 8))(0);
|
|
FUN_01017526(DAT_01025040,iVar1);
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_0100c4cb(int param_1,int *param_2)
|
|
|
|
{
|
|
int iVar1;
|
|
|
|
if (param_1 == 0x3f) {
|
|
iVar1 = (**(code **)(*param_2 + 8))(0);
|
|
FUN_01017526(DAT_01025040,iVar1);
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_0100c4f5(int param_1,int *param_2)
|
|
|
|
{
|
|
int iVar1;
|
|
|
|
if (param_1 == 0x3f) {
|
|
iVar1 = (**(code **)(*param_2 + 8))(*(undefined4 *)((int)param_2 + 0x4e));
|
|
FUN_01017526(DAT_01025040,iVar1);
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_0100c520(int param_1)
|
|
|
|
{
|
|
if (param_1 == 0x3c) {
|
|
(**(code **)*DAT_01023808)(0x36,0);
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_0100c546(int param_1)
|
|
|
|
{
|
|
if (param_1 == 0x3c) {
|
|
(**(code **)*DAT_01023810)(0x36,0);
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_0100c56c(int param_1)
|
|
|
|
{
|
|
undefined4 uVar1;
|
|
undefined4 uVar2;
|
|
|
|
if (param_1 == 0x35) {
|
|
(**(code **)*DAT_01023818)(0xf,0x40a00000);
|
|
uVar2 = 0x40a00000;
|
|
uVar1 = 7;
|
|
}
|
|
else {
|
|
if (param_1 != 0x36) {
|
|
return;
|
|
}
|
|
(**(code **)*DAT_01023818)(0x14,0);
|
|
uVar2 = 0;
|
|
uVar1 = 0x14;
|
|
}
|
|
(**(code **)*DAT_01023828)(uVar1,uVar2);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_0100c5d3(int param_1)
|
|
|
|
{
|
|
undefined4 uVar1;
|
|
undefined4 uVar2;
|
|
|
|
if (param_1 == 0x35) {
|
|
(**(code **)*DAT_01023820)(0xf,0x40a00000);
|
|
uVar2 = 0x40a00000;
|
|
uVar1 = 7;
|
|
}
|
|
else {
|
|
if (param_1 != 0x36) {
|
|
return;
|
|
}
|
|
(**(code **)*DAT_01023820)(0x14,0);
|
|
uVar2 = 0;
|
|
uVar1 = 0x14;
|
|
}
|
|
(**(code **)*DAT_01023830)(uVar1,uVar2);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_0100c63a(int param_1,int *param_2)
|
|
|
|
{
|
|
code **ppcVar1;
|
|
int iVar2;
|
|
LPSTR _Format;
|
|
char local_48 [64];
|
|
undefined4 local_8;
|
|
|
|
local_8 = DAT_01024778;
|
|
if ((param_1 == 0x3f) && (iVar2 = (**(code **)*DAT_01023ce4)(0x25,0), iVar2 != 0)) {
|
|
(**(code **)(*DAT_01023dfc + 0x14))();
|
|
iVar2 = (**(code **)(*param_2 + 8))(iVar2 + -1);
|
|
iVar2 = FUN_01017526(DAT_01025040,iVar2);
|
|
_Format = FUN_01003752(0x15);
|
|
sprintf(local_48,_Format,iVar2);
|
|
FUN_010144b7(local_48,0x40000000);
|
|
iVar2 = FUN_0100c092((int)&PTR_s_lite56_01023884);
|
|
ppcVar1 = DAT_01023a8c;
|
|
if (iVar2 == 0) {
|
|
(**(code **)*DAT_01023a8c)(0x22,0);
|
|
(**(code **)*ppcVar1)(0x14,0);
|
|
ppcVar1 = DAT_01023a94;
|
|
(**(code **)*DAT_01023a94)(0x22,0);
|
|
(**(code **)*ppcVar1)(0x14,0);
|
|
}
|
|
(**(code **)*DAT_01023ce4)(0x2c,0x3f800000);
|
|
}
|
|
FUN_0101cd9e();
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_0100c73e(int param_1)
|
|
|
|
{
|
|
if (param_1 == 0x3f) {
|
|
(**(code **)*DAT_01023ce4)(0x14,0);
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_0100c764(int param_1,undefined **param_2)
|
|
|
|
{
|
|
int iVar1;
|
|
code **ppcVar2;
|
|
undefined4 uVar3;
|
|
float local_c;
|
|
|
|
if (param_1 == 0x34) {
|
|
*(undefined4 *)((int)param_2 + 6) = 1;
|
|
(**(code **)*param_2)(0x34,(float)*(int *)((int)param_2 + 0x4e));
|
|
iVar1 = *(int *)((int)param_2 + 0x4e);
|
|
uVar3 = 9;
|
|
}
|
|
else {
|
|
if (param_1 != 0x3c) {
|
|
return;
|
|
}
|
|
ppcVar2 = (code **)*param_2;
|
|
if (*(int *)((int)param_2 + 6) != 1) {
|
|
*(undefined4 *)((int)param_2 + 6) = 0;
|
|
local_c = 0.00000000;
|
|
uVar3 = 0x33;
|
|
goto LAB_0100c7dd;
|
|
}
|
|
*(undefined4 *)((int)param_2 + 6) = 2;
|
|
(**ppcVar2)(0x3b,(float)*(int *)((int)param_2 + 0x52));
|
|
iVar1 = *(int *)((int)param_2 + 0x52);
|
|
uVar3 = 7;
|
|
}
|
|
local_c = (float)iVar1;
|
|
ppcVar2 = (code **)*DAT_01023868;
|
|
LAB_0100c7dd:
|
|
(**ppcVar2)(uVar3,local_c);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_0100c7e9(int param_1,int *param_2)
|
|
|
|
{
|
|
int iVar1;
|
|
undefined4 local_54;
|
|
LPSTR _Format;
|
|
int *piVar2;
|
|
bool bVar3;
|
|
char local_48 [64];
|
|
undefined4 local_8;
|
|
|
|
local_8 = DAT_01024778;
|
|
if (param_1 == 0x3f) {
|
|
iVar1 = FUN_0100c092((int)&PTR_s_lite54_01023874);
|
|
bVar3 = iVar1 != 0;
|
|
if (bVar3) {
|
|
local_54 = FUN_0100c335(*(int *)((int)DAT_01025040 + 0x12e));
|
|
_Format = FUN_01003752(10);
|
|
sprintf(local_48,_Format,local_54);
|
|
FUN_010144b7(local_48,0x40000000);
|
|
}
|
|
iVar1 = FUN_0100c092((int)&PTR_s_lite55_0102387c);
|
|
if (iVar1 != 0) {
|
|
bVar3 = (bool)(bVar3 | 2);
|
|
}
|
|
iVar1 = FUN_0100c092((int)&PTR_s_lite56_01023884);
|
|
if (iVar1 != 0) {
|
|
bVar3 = (bool)(bVar3 | 4);
|
|
}
|
|
if (bVar3 == false) {
|
|
iVar1 = (**(code **)(*param_2 + 8))(0);
|
|
FUN_01017526(DAT_01025040,iVar1);
|
|
piVar2 = DAT_01023d3c;
|
|
}
|
|
else {
|
|
piVar2 = DAT_01023d24;
|
|
if (((bVar3 != true) && (piVar2 = DAT_01023d34, 1 < bVar3)) &&
|
|
(piVar2 = DAT_01023d34, bVar3 < 4)) {
|
|
piVar2 = DAT_01023d2c;
|
|
}
|
|
}
|
|
(**(code **)(*piVar2 + 0x14))();
|
|
}
|
|
FUN_0101cd9e();
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_0100c8d7(int param_1)
|
|
|
|
{
|
|
if (param_1 == 0x3a) {
|
|
(**(code **)*DAT_01023878)(7,0x40a00000);
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_0100c901(int param_1)
|
|
|
|
{
|
|
if (param_1 == 0x3f) {
|
|
(**(code **)*DAT_010238d0)(0x13,0);
|
|
(**(code **)*DAT_010238d8)(0x13,0);
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
|
|
|
|
void FUN_0100c939(int param_1,int *param_2)
|
|
|
|
{
|
|
int iVar1;
|
|
int iVar2;
|
|
LPSTR pCVar3;
|
|
code **ppcVar4;
|
|
undefined4 uVar5;
|
|
|
|
ppcVar4 = DAT_01023a8c;
|
|
if (param_1 == 0x3f) {
|
|
iVar1 = FUN_0100c092((int)&PTR_s_lite56_01023884);
|
|
if ((iVar1 == 0) && (iVar1 = (**(code **)*ppcVar4)(0x27,0), iVar1 != 0)) {
|
|
(**(code **)*ppcVar4)(0x22,0);
|
|
(**(code **)*ppcVar4)(0x14,0);
|
|
ppcVar4 = DAT_01023a94;
|
|
(**(code **)*DAT_01023a94)(0x22,0);
|
|
(**(code **)*ppcVar4)(0x14,0);
|
|
}
|
|
ppcVar4 = DAT_0102370c;
|
|
if ((_DAT_0102372c != param_2) && (ppcVar4 = DAT_01023714, _DAT_01023734 != param_2)) {
|
|
ppcVar4 = DAT_0102371c;
|
|
}
|
|
if (*(int *)((int)ppcVar4 + 0x52) == 0) {
|
|
if (*(int *)((int)ppcVar4 + 0x4e) == 0) {
|
|
(**(code **)*ppcVar4)(0x13,0);
|
|
ppcVar4 = DAT_01023724;
|
|
iVar1 = (**(code **)*DAT_01023724)(0x25,0);
|
|
iVar2 = (**(code **)*DAT_01023724)(0x26,0);
|
|
if (iVar1 == iVar2) {
|
|
(**(code **)*ppcVar4)(7,0x40a00000);
|
|
(**(code **)*ppcVar4)(0,0);
|
|
if (*(int *)(DAT_010236e4 + 0x4e) < 3) {
|
|
(**(code **)*DAT_01023704)(0xc,0);
|
|
uVar5 = 0x40000000;
|
|
pCVar3 = FUN_01003752(5);
|
|
FUN_010144b7(pCVar3,uVar5);
|
|
}
|
|
(**(code **)*DAT_01023704)(0x30,0x42700000);
|
|
}
|
|
}
|
|
else {
|
|
(**(code **)*ppcVar4)(0x14,0);
|
|
}
|
|
}
|
|
iVar1 = (**(code **)(*param_2 + 8))(0);
|
|
FUN_01017526(DAT_01025040,iVar1);
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_0100cabf(int param_1,undefined **param_2)
|
|
|
|
{
|
|
if ((param_1 == 0x3d) && (*(int *)((int)param_2 + 0x4e) != 0)) {
|
|
(**(code **)*param_2)(0x30,0x42700000);
|
|
(**(code **)*param_2)(0xd,0);
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
|
|
|
|
void FUN_0100cafe(int param_1,int *param_2)
|
|
|
|
{
|
|
int iVar1;
|
|
int iVar2;
|
|
LPSTR pCVar3;
|
|
code **ppcVar4;
|
|
undefined4 uVar5;
|
|
|
|
if (param_1 == 0x3f) {
|
|
ppcVar4 = DAT_01023778;
|
|
if ((_DAT_01023798 != param_2) && (ppcVar4 = DAT_01023780, _DAT_010237a0 != param_2)) {
|
|
ppcVar4 = DAT_01023788;
|
|
}
|
|
if (*(int *)((int)ppcVar4 + 0x52) == 0) {
|
|
if (*(int *)((int)ppcVar4 + 0x4e) == 0) {
|
|
(**(code **)*ppcVar4)(0x13,0);
|
|
ppcVar4 = DAT_01023790;
|
|
iVar1 = (**(code **)*DAT_01023790)(0x25,0);
|
|
iVar2 = (**(code **)*DAT_01023790)(0x26,0);
|
|
if (iVar1 == iVar2) {
|
|
(**(code **)*ppcVar4)(7,0x40a00000);
|
|
(**(code **)*ppcVar4)(0,0);
|
|
if (*(int *)(DAT_01023758 + 0x4e) < 3) {
|
|
(**(code **)*DAT_01023770)(0xc,0);
|
|
uVar5 = 0x40000000;
|
|
pCVar3 = FUN_01003752(6);
|
|
FUN_010144b7(pCVar3,uVar5);
|
|
}
|
|
(**(code **)*DAT_01023770)(0x30,0x42700000);
|
|
}
|
|
}
|
|
else {
|
|
(**(code **)*ppcVar4)(0x14,0);
|
|
}
|
|
}
|
|
iVar1 = (**(code **)(*param_2 + 8))(0);
|
|
FUN_01017526(DAT_01025040,iVar1);
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
|
|
|
|
void FUN_0100cc20(int param_1,int *param_2)
|
|
|
|
{
|
|
int iVar1;
|
|
code **ppcVar2;
|
|
|
|
if (param_1 != 0x3f) {
|
|
return;
|
|
}
|
|
iVar1 = FUN_0100c092((int)&PTR_s_lite17_010238a8);
|
|
if ((iVar1 == 0) && (iVar1 = FUN_0100c092((int)&PTR_s_lite18_010238b0), iVar1 == 0)) {
|
|
(**(code **)(*DAT_01023e04 + 0x14))();
|
|
}
|
|
else {
|
|
FUN_0100c2f3(0x40000000);
|
|
(**(code **)*DAT_010238ac)(0x14,0);
|
|
(**(code **)*DAT_010238b4)(0x14,0);
|
|
}
|
|
if (_DAT_0102389c == param_2) {
|
|
iVar1 = FUN_0100c092((int)&PTR_s_lite30_01023814);
|
|
if (iVar1 == 0) goto LAB_0100ccf3;
|
|
(**(code **)*DAT_01023818)(4,0);
|
|
ppcVar2 = DAT_01023828;
|
|
}
|
|
else {
|
|
iVar1 = FUN_0100c092((int)&PTR_s_lite29_0102381c);
|
|
if (iVar1 == 0) goto LAB_0100ccf3;
|
|
(**(code **)*DAT_01023820)(4,0);
|
|
ppcVar2 = DAT_01023830;
|
|
}
|
|
(**(code **)*ppcVar2)(4,0);
|
|
LAB_0100ccf3:
|
|
iVar1 = (**(code **)(*param_2 + 8))(0);
|
|
FUN_01017526(DAT_01025040,iVar1);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
|
|
|
|
void FUN_0100cd12(int param_1)
|
|
|
|
{
|
|
if (param_1 == 0x13) {
|
|
(**(code **)*DAT_010238ac)(9,0x425c0000);
|
|
(**(code **)*DAT_010238b4)(9,0x425c0000);
|
|
_DAT_0102504c = 1;
|
|
}
|
|
else {
|
|
if ((param_1 == 0x3c) && (_DAT_0102504c != 0)) {
|
|
(**(code **)*DAT_010238ac)(7,0x40a00000);
|
|
(**(code **)*DAT_010238b4)(7,0x40a00000);
|
|
_DAT_0102504c = 0;
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
|
|
|
|
void FUN_0100cda0(int param_1,int *param_2)
|
|
|
|
{
|
|
int iVar1;
|
|
code **ppcVar2;
|
|
undefined4 local_c;
|
|
|
|
if (param_1 != 0x3f) {
|
|
return;
|
|
}
|
|
if (_DAT_010238c0 == param_2) {
|
|
iVar1 = FUN_0100c092((int)&PTR_s_lite27_010238cc);
|
|
if (iVar1 != 0) {
|
|
(**(code **)*DAT_01023ac4)(0x14,0);
|
|
ppcVar2 = DAT_010238d0;
|
|
LAB_0100ce11:
|
|
(**(code **)*ppcVar2)(0x14,0);
|
|
local_c = 1;
|
|
goto LAB_0100ce23;
|
|
}
|
|
}
|
|
else {
|
|
if (_DAT_010238c8 != param_2) {
|
|
return;
|
|
}
|
|
iVar1 = FUN_0100c092((int)&PTR_s_lite28_010238d4);
|
|
if (iVar1 != 0) {
|
|
(**(code **)*DAT_01023ac4)(0x14,0);
|
|
ppcVar2 = DAT_010238d8;
|
|
goto LAB_0100ce11;
|
|
}
|
|
}
|
|
local_c = 0;
|
|
LAB_0100ce23:
|
|
iVar1 = (**(code **)(*param_2 + 8))(local_c);
|
|
FUN_01017526(DAT_01025040,iVar1);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_0100ce40(int param_1,int *param_2)
|
|
|
|
{
|
|
int iVar1;
|
|
undefined4 local_50;
|
|
LPSTR _Format;
|
|
char local_48 [64];
|
|
undefined4 local_8;
|
|
|
|
local_8 = DAT_01024778;
|
|
if (param_1 == 0x3f) {
|
|
iVar1 = FUN_0100c092((int)&PTR_s_lite16_010238ec);
|
|
if (iVar1 == 0) {
|
|
iVar1 = (**(code **)(*param_2 + 8))(0);
|
|
FUN_01017526(DAT_01025040,iVar1);
|
|
(**(code **)(*DAT_01023d54 + 0x14))();
|
|
local_50 = 0x40000000;
|
|
_Format = FUN_01003752(0x2c);
|
|
FUN_010144b7(_Format,local_50);
|
|
}
|
|
else {
|
|
local_50 = FUN_0100c335(*(int *)((int)DAT_01025040 + 0x132));
|
|
_Format = FUN_01003752(3);
|
|
sprintf(local_48,_Format,local_50);
|
|
FUN_010144b7(local_48,0x40000000);
|
|
(**(code **)*DAT_010238f0)(0x14,0);
|
|
(**(code **)(*DAT_01023d4c + 0x14))();
|
|
}
|
|
(**(code **)*DAT_01023978)(0x2d,0x41300000);
|
|
}
|
|
FUN_0101cd9e();
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_0100cf36(int param_1,int *param_2)
|
|
|
|
{
|
|
int iVar1;
|
|
LPSTR pCVar2;
|
|
undefined4 uVar3;
|
|
|
|
if (param_1 == 0x3f) {
|
|
iVar1 = (**(code **)*DAT_01023978)(0x25,0);
|
|
if (iVar1 < 2) {
|
|
(**(code **)*DAT_01023978)(0x2d,0x3f800000);
|
|
uVar3 = 0x40000000;
|
|
pCVar2 = FUN_01003752(0x2c);
|
|
FUN_010144b7(pCVar2,uVar3);
|
|
}
|
|
else {
|
|
(**(code **)*DAT_01023948)(8,0x3d4ccccd);
|
|
}
|
|
iVar1 = (**(code **)(*param_2 + 8))(0);
|
|
FUN_01017526(DAT_01025040,iVar1);
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_0100cfc0(int param_1,int *param_2)
|
|
|
|
{
|
|
int iVar1;
|
|
LPSTR pCVar2;
|
|
undefined4 uVar3;
|
|
|
|
if (param_1 == 0x3f) {
|
|
iVar1 = (**(code **)*DAT_01023978)(0x25,0);
|
|
if (iVar1 < 4) {
|
|
(**(code **)*DAT_01023978)(0x2d,0x40400000);
|
|
uVar3 = 0x40000000;
|
|
pCVar2 = FUN_01003752(0x2c);
|
|
FUN_010144b7(pCVar2,uVar3);
|
|
}
|
|
else {
|
|
(**(code **)*DAT_01023950)(8,0x3d4ccccd);
|
|
}
|
|
iVar1 = (**(code **)(*param_2 + 8))(0);
|
|
FUN_01017526(DAT_01025040,iVar1);
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_0100d04e(int param_1,int *param_2)
|
|
|
|
{
|
|
int iVar1;
|
|
LPSTR pCVar2;
|
|
undefined4 uVar3;
|
|
|
|
if (param_1 == 0x3f) {
|
|
iVar1 = (**(code **)*DAT_01023978)(0x25,0);
|
|
if (iVar1 < 6) {
|
|
(**(code **)*DAT_01023978)(0x2d,0x40a00000);
|
|
uVar3 = 0x40000000;
|
|
pCVar2 = FUN_01003752(0x2c);
|
|
FUN_010144b7(pCVar2,uVar3);
|
|
}
|
|
else {
|
|
(**(code **)*DAT_01023958)(8,0x3d4ccccd);
|
|
}
|
|
iVar1 = (**(code **)(*param_2 + 8))(0);
|
|
FUN_01017526(DAT_01025040,iVar1);
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_0100d0dc(int param_1,int *param_2)
|
|
|
|
{
|
|
int iVar1;
|
|
LPSTR pCVar2;
|
|
undefined4 uVar3;
|
|
|
|
if (param_1 == 0x3f) {
|
|
iVar1 = (**(code **)*DAT_01023978)(0x25,0);
|
|
if (iVar1 < 8) {
|
|
(**(code **)*DAT_01023978)(0x2d,0x40e00000);
|
|
uVar3 = 0x40000000;
|
|
pCVar2 = FUN_01003752(0x2c);
|
|
FUN_010144b7(pCVar2,uVar3);
|
|
}
|
|
else {
|
|
(**(code **)*DAT_01023960)(8,0x3d4ccccd);
|
|
}
|
|
iVar1 = (**(code **)(*param_2 + 8))(0);
|
|
FUN_01017526(DAT_01025040,iVar1);
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_0100d16a(int param_1,int *param_2)
|
|
|
|
{
|
|
int iVar1;
|
|
LPSTR pCVar2;
|
|
undefined4 uVar3;
|
|
|
|
if (param_1 == 0x3f) {
|
|
iVar1 = (**(code **)*DAT_01023978)(0x25,0);
|
|
if (iVar1 < 10) {
|
|
(**(code **)*DAT_01023978)(0x2d,0x41100000);
|
|
uVar3 = 0x40000000;
|
|
pCVar2 = FUN_01003752(0x2c);
|
|
FUN_010144b7(pCVar2,uVar3);
|
|
}
|
|
else {
|
|
(**(code **)*DAT_01023968)(8,0x3d4ccccd);
|
|
}
|
|
iVar1 = (**(code **)(*param_2 + 8))(0);
|
|
FUN_01017526(DAT_01025040,iVar1);
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_0100d1f8(int param_1,int *param_2)
|
|
|
|
{
|
|
int iVar1;
|
|
LPSTR pCVar2;
|
|
undefined4 uVar3;
|
|
|
|
if (param_1 == 0x3f) {
|
|
iVar1 = (**(code **)*DAT_01023978)(0x25,0);
|
|
if (iVar1 < 0xc) {
|
|
(**(code **)*DAT_01023978)(0x2d,0x41300000);
|
|
uVar3 = 0x40000000;
|
|
pCVar2 = FUN_01003752(0x2c);
|
|
FUN_010144b7(pCVar2,uVar3);
|
|
}
|
|
else {
|
|
(**(code **)*DAT_01023970)(8,0x3d4ccccd);
|
|
}
|
|
iVar1 = (**(code **)(*param_2 + 8))(0);
|
|
FUN_01017526(DAT_01025040,iVar1);
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_0100d286(int param_1,undefined **param_2)
|
|
|
|
{
|
|
int iVar1;
|
|
code **ppcVar2;
|
|
undefined4 uVar3;
|
|
undefined4 local_c;
|
|
|
|
if (param_1 == 0) {
|
|
ppcVar2 = (code **)*param_2;
|
|
local_c = 0;
|
|
uVar3 = 0;
|
|
}
|
|
else {
|
|
if (param_1 == 0x29) {
|
|
(**(code **)*param_2)(0x29,0x40000000);
|
|
}
|
|
else {
|
|
if (param_1 != 0x3d) {
|
|
return;
|
|
}
|
|
(**(code **)*param_2)(0x21,0);
|
|
iVar1 = (**(code **)*param_2)(0x25,0);
|
|
if (iVar1 == 0) {
|
|
return;
|
|
}
|
|
}
|
|
ppcVar2 = (code **)*param_2;
|
|
local_c = 0x42700000;
|
|
uVar3 = 0x2b;
|
|
}
|
|
(**ppcVar2)(uVar3,local_c);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_0100d303(int param_1,int *param_2)
|
|
|
|
{
|
|
LPSTR pCVar1;
|
|
int iVar2;
|
|
int iVar3;
|
|
undefined4 uVar4;
|
|
|
|
if (param_1 == 0x3f) {
|
|
iVar3 = 0;
|
|
if (DAT_010239ec != param_2) {
|
|
iVar3 = (uint)(DAT_010239f4 != param_2) + 1;
|
|
}
|
|
iVar2 = *(int *)(DAT_01023a24 + 6);
|
|
if (iVar2 == 0) {
|
|
iVar2 = (**(code **)(*param_2 + 8))(0);
|
|
FUN_01017526(DAT_01025040,iVar2);
|
|
(**(code **)**(code ***)((&PTR_PTR_s_lite5_01023a4c)[iVar3] + 4))
|
|
(0x10,*(undefined4 *)((int)param_2 + 0x52));
|
|
}
|
|
else {
|
|
*(undefined4 *)(DAT_01023a24 + 6) = 0;
|
|
(**(code **)*DAT_01023a1c)(0x14,0);
|
|
(**(code **)*DAT_01023a3c)(0x14,0);
|
|
(**(code **)*DAT_01023c44)(0x14,0);
|
|
if (iVar2 == iVar3 + 1) {
|
|
if (*(int *)((int)DAT_01025040 + 0x15a) != 0) {
|
|
FUN_0100c281();
|
|
FUN_01017526(DAT_01025040,10000);
|
|
return;
|
|
}
|
|
uVar4 = 0x40000000;
|
|
pCVar1 = FUN_01003752(0x31);
|
|
FUN_010144b7(pCVar1,uVar4);
|
|
FUN_0100c0ee(0x40800000);
|
|
iVar2 = (**(code **)(*param_2 + 8))(1);
|
|
FUN_01017526(DAT_01025040,iVar2);
|
|
(**(code **)**(code ***)((&PTR_PTR_s_lite5_01023a4c)[iVar3] + 4))
|
|
(0x10,*(undefined4 *)((int)param_2 + 0x52));
|
|
(**(code **)**(code ***)((&PTR_PTR_s_lite4_01023a58)[iVar3] + 4))(0xb,(float)(2 - iVar3));
|
|
(**(code **)**(code ***)((&PTR_PTR_s_lite4_01023a58)[iVar3] + 4))
|
|
(0x10,*(undefined4 *)((int)param_2 + 0x52));
|
|
(**(code **)**(code ***)((&PTR_PTR_s_v_sink1_01023a40)[iVar3] + 4))
|
|
(0x38,*(undefined4 *)((int)param_2 + 0x52));
|
|
return;
|
|
}
|
|
iVar3 = (**(code **)(*param_2 + 8))(2);
|
|
FUN_01017526(DAT_01025040,iVar3);
|
|
iVar3 = iVar2 + -1;
|
|
(**(code **)**(code ***)((&PTR_PTR_s_lite5_01023a4c)[iVar3] + 4))
|
|
(0x10,*(undefined4 *)((int)param_2 + 0x52));
|
|
}
|
|
(**(code **)**(code ***)((&PTR_PTR_s_lite4_01023a58)[iVar3] + 4))(0xb,(float)(2 - iVar3));
|
|
(**(code **)**(code ***)((&PTR_PTR_s_lite4_01023a58)[iVar3] + 4))
|
|
(0x10,*(undefined4 *)((int)param_2 + 0x52));
|
|
(**(code **)**(code ***)((&PTR_PTR_s_v_sink1_01023a40)[iVar3] + 4))
|
|
(0x38,*(undefined4 *)((int)param_2 + 0x52));
|
|
uVar4 = 0x40000000;
|
|
pCVar1 = FUN_01003752(0x31);
|
|
FUN_010144b7(pCVar1,uVar4);
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_0100d53a(int param_1)
|
|
|
|
{
|
|
if (param_1 == 1) {
|
|
(**(code **)*DAT_01023724)(0x18,0);
|
|
(**(code **)*DAT_01023790)(0x18,0);
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_0100d572(int param_1)
|
|
|
|
{
|
|
if (param_1 == 1) {
|
|
(**(code **)*DAT_01023724)(0x19,0);
|
|
(**(code **)*DAT_01023790)(0x19,0);
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_0100d5aa(int param_1)
|
|
|
|
{
|
|
if (param_1 == 0x3c) {
|
|
*(undefined4 *)(DAT_01025040 + 0x13e) = 0;
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_0100d5ca(int param_1)
|
|
|
|
{
|
|
if (param_1 == 0x3c) {
|
|
*(undefined4 *)(DAT_01025040 + 0x136) = 0;
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_0100d5ea(int param_1,int *param_2)
|
|
|
|
{
|
|
int iVar1;
|
|
int *piVar2;
|
|
undefined4 local_10;
|
|
|
|
if (param_1 != 0x3f) {
|
|
return;
|
|
}
|
|
if (*(int *)((int)param_2 + 6) != 0) {
|
|
return;
|
|
}
|
|
*(undefined4 *)((int)param_2 + 6) = 1;
|
|
if (*(int *)((int)DAT_01023aac + 6) + *(int *)((int)DAT_01023aa4 + 6) +
|
|
*(int *)((int)DAT_01023a9c + 6) != 3) {
|
|
local_10 = 0;
|
|
goto LAB_0100d720;
|
|
}
|
|
iVar1 = FUN_0100c092((int)&PTR_s_lite61_01023ab0);
|
|
if (iVar1 == 0) {
|
|
if ((*(int *)(DAT_01023bbc + 6) != 0xf) && (*(int *)(DAT_01023bbc + 6) != 0x1d)) {
|
|
FUN_0100c1e3();
|
|
piVar2 = DAT_01023dc4;
|
|
goto LAB_0100d6c6;
|
|
}
|
|
}
|
|
else {
|
|
iVar1 = FUN_0100c092((int)&PTR_s_lite60_01023ab8);
|
|
if (iVar1 == 0) {
|
|
FUN_0100c14f();
|
|
piVar2 = DAT_01023db4;
|
|
}
|
|
else {
|
|
iVar1 = FUN_0100c092((int)&PTR_s_lite59_01023ac0);
|
|
if (iVar1 == 0) {
|
|
FUN_0100c199();
|
|
piVar2 = DAT_01023dbc;
|
|
}
|
|
else {
|
|
iVar1 = FUN_0100c092((int)&PTR_s_lite58_01023ac8);
|
|
if (iVar1 == 0) {
|
|
FUN_0100c24a();
|
|
piVar2 = DAT_01023dcc;
|
|
}
|
|
else {
|
|
iVar1 = (**(code **)(*param_2 + 8))(1);
|
|
FUN_01017526(DAT_01025040,iVar1);
|
|
piVar2 = DAT_01023dcc;
|
|
}
|
|
}
|
|
}
|
|
LAB_0100d6c6:
|
|
(**(code **)(*piVar2 + 0x14))();
|
|
}
|
|
*(undefined4 *)((int)DAT_01023a9c + 6) = 0;
|
|
(**(code **)*DAT_01023a9c)(0x32,0);
|
|
*(undefined4 *)((int)DAT_01023aa4 + 6) = 0;
|
|
(**(code **)*DAT_01023aa4)(0x32,0);
|
|
*(undefined4 *)((int)DAT_01023aac + 6) = 0;
|
|
(**(code **)*DAT_01023aac)(0x32,0);
|
|
local_10 = 1;
|
|
LAB_0100d720:
|
|
iVar1 = (**(code **)(*param_2 + 8))(local_10);
|
|
FUN_01017526(DAT_01025040,iVar1);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_0100d73e(int param_1,undefined **param_2)
|
|
|
|
{
|
|
int iVar1;
|
|
code **ppcVar2;
|
|
undefined4 uVar3;
|
|
undefined4 local_c;
|
|
|
|
if (param_1 == 0) {
|
|
ppcVar2 = (code **)*param_2;
|
|
local_c = 0;
|
|
uVar3 = 0;
|
|
}
|
|
else {
|
|
if (param_1 == 0x29) {
|
|
(**(code **)*param_2)(0x29,0x40000000);
|
|
}
|
|
else {
|
|
if (param_1 != 0x3d) {
|
|
return;
|
|
}
|
|
(**(code **)*param_2)(0x21,0);
|
|
iVar1 = (**(code **)*param_2)(0x25,0);
|
|
if (iVar1 == 0) {
|
|
return;
|
|
}
|
|
}
|
|
ppcVar2 = (code **)*param_2;
|
|
local_c = 0x41f00000;
|
|
uVar3 = 0x2b;
|
|
}
|
|
(**ppcVar2)(uVar3,local_c);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_0100d7bb(int param_1,undefined **param_2)
|
|
|
|
{
|
|
LPSTR pCVar1;
|
|
int iVar2;
|
|
code **ppcVar3;
|
|
undefined4 local_c;
|
|
undefined4 uVar4;
|
|
|
|
if (param_1 == 0) {
|
|
ppcVar3 = (code **)*param_2;
|
|
local_c = 0;
|
|
uVar4 = 0;
|
|
goto LAB_0100d8d2;
|
|
}
|
|
if (param_1 == 0x29) {
|
|
(**(code **)*param_2)(0x29,0x40000000);
|
|
LAB_0100d8b3:
|
|
local_c = 0x41f00000;
|
|
}
|
|
else {
|
|
if (param_1 == 0x3d) {
|
|
iVar2 = *(int *)(DAT_01025040 + 0x126);
|
|
if (iVar2 != 0) {
|
|
*(int *)(DAT_01025040 + 0x126) = iVar2 + -1;
|
|
}
|
|
(**(code **)*param_2)(0x21,0);
|
|
iVar2 = (**(code **)*param_2)(0x25,0);
|
|
if (iVar2 == 0) {
|
|
return;
|
|
}
|
|
goto LAB_0100d8b3;
|
|
}
|
|
if (param_1 == 0x40) {
|
|
*(undefined4 *)(DAT_01025040 + 0x126) = 4;
|
|
(**(code **)*param_2)(0x13,0);
|
|
(**(code **)*param_2)(0x2b,0x41f00000);
|
|
local_c = 0x40000000;
|
|
pCVar1 = FUN_01003752(0x3b);
|
|
FUN_010144b7(pCVar1,local_c);
|
|
return;
|
|
}
|
|
if (param_1 != 0x41) {
|
|
return;
|
|
}
|
|
*(undefined4 *)(DAT_01025040 + 0x126) = 0;
|
|
(**(code **)*param_2)(0x14,0);
|
|
local_c = 0xbf800000;
|
|
}
|
|
ppcVar3 = (code **)*param_2;
|
|
uVar4 = 0x2b;
|
|
LAB_0100d8d2:
|
|
(**ppcVar3)(uVar4,local_c);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
|
|
|
|
void FUN_0100d8de(int param_1,int *param_2)
|
|
|
|
{
|
|
int iVar1;
|
|
LPSTR pCVar2;
|
|
code **ppcVar3;
|
|
undefined4 uVar4;
|
|
|
|
if (param_1 == 0x3f) {
|
|
ppcVar3 = DAT_01023b60;
|
|
if ((_DAT_01023b48 != param_2) && (ppcVar3 = DAT_01023b68, _DAT_01023b50 != param_2)) {
|
|
ppcVar3 = DAT_01023b70;
|
|
}
|
|
(**(code **)*ppcVar3)(0xf,0x40000000);
|
|
iVar1 = (**(code **)(*param_2 + 8))(0);
|
|
FUN_01017526(DAT_01025040,iVar1);
|
|
iVar1 = (**(code **)*DAT_01023b78)(0x25,0);
|
|
if (iVar1 == 3) {
|
|
(**(code **)*DAT_01023b78)(0x10,0x40000000);
|
|
(**(code **)*DAT_01023978)(0x2d,0x41300000);
|
|
(**(code **)(*DAT_01023d54 + 0x14))();
|
|
uVar4 = 0x40000000;
|
|
pCVar2 = FUN_01003752(0x2c);
|
|
FUN_010144b7(pCVar2,uVar4);
|
|
}
|
|
else {
|
|
(**(code **)(*DAT_01023e0c + 0x14))();
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
|
|
|
|
void FUN_0100d9c2(int param_1,int *param_2)
|
|
|
|
{
|
|
int iVar1;
|
|
code **ppcVar2;
|
|
int *piVar3;
|
|
|
|
if (param_1 == 0x3f) {
|
|
if (_DAT_01023b84 == param_2) {
|
|
*(uint *)((int)DAT_01023b9c + 6) = *(uint *)((int)DAT_01023b9c + 6) | 1;
|
|
ppcVar2 = DAT_01023b9c;
|
|
}
|
|
else {
|
|
if (_DAT_01023b8c == param_2) {
|
|
*(uint *)((int)DAT_01023b9c + 6) = *(uint *)((int)DAT_01023b9c + 6) | 2;
|
|
ppcVar2 = DAT_01023ba4;
|
|
}
|
|
else {
|
|
*(uint *)((int)DAT_01023b9c + 6) = *(uint *)((int)DAT_01023b9c + 6) | 4;
|
|
ppcVar2 = DAT_01023bac;
|
|
}
|
|
}
|
|
(**(code **)*ppcVar2)(0xf,0x40000000);
|
|
iVar1 = FUN_0100c092((int)&PTR_s_lite198_01023bb8);
|
|
if ((iVar1 == 0) || (piVar3 = DAT_01023e0c, *(int *)(DAT_01023bbc + 0x52) != 0)) {
|
|
piVar3 = DAT_01023dd4;
|
|
}
|
|
(**(code **)(*piVar3 + 0x14))();
|
|
iVar1 = (**(code **)(*param_2 + 8))(0);
|
|
FUN_01017526(DAT_01025040,iVar1);
|
|
iVar1 = (**(code **)*DAT_01023bb4)(0x25,0);
|
|
if (iVar1 == 3) {
|
|
(**(code **)*DAT_01023bb4)(0x10,0x40000000);
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
|
|
|
|
void FUN_0100da94(int param_1,int *param_2)
|
|
|
|
{
|
|
int iVar1;
|
|
code **ppcVar2;
|
|
|
|
if (param_1 == 0x3f) {
|
|
if (_DAT_01023bc8 == param_2) {
|
|
*(uint *)((int)DAT_01023bf8 + 6) = *(uint *)((int)DAT_01023bf8 + 6) | 1;
|
|
ppcVar2 = DAT_01023bf8;
|
|
}
|
|
else {
|
|
if (_DAT_01023bd0 == param_2) {
|
|
*(uint *)((int)DAT_01023bf8 + 6) = *(uint *)((int)DAT_01023bf8 + 6) | 2;
|
|
ppcVar2 = DAT_01023c00;
|
|
}
|
|
else {
|
|
*(uint *)((int)DAT_01023bf8 + 6) = *(uint *)((int)DAT_01023bf8 + 6) | 4;
|
|
ppcVar2 = DAT_01023c08;
|
|
}
|
|
}
|
|
(**(code **)*ppcVar2)(0xf,0x40000000);
|
|
iVar1 = (**(code **)(*param_2 + 8))(0);
|
|
FUN_01017526(DAT_01025040,iVar1);
|
|
iVar1 = (**(code **)*DAT_01023c28)(0x25,0);
|
|
if (iVar1 == 3) {
|
|
(**(code **)(*DAT_01023ddc + 0x14))();
|
|
(**(code **)*DAT_01023808)(0x35,0);
|
|
(**(code **)*DAT_01023c28)(0x10,0x40000000);
|
|
}
|
|
else {
|
|
(**(code **)(*DAT_01023e0c + 0x14))();
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
|
|
|
|
void FUN_0100db68(int param_1,int *param_2)
|
|
|
|
{
|
|
int iVar1;
|
|
code **ppcVar2;
|
|
|
|
if (param_1 == 0x3f) {
|
|
if (_DAT_01023be0 == param_2) {
|
|
*(uint *)((int)DAT_01023c10 + 6) = *(uint *)((int)DAT_01023c10 + 6) | 1;
|
|
ppcVar2 = DAT_01023c10;
|
|
}
|
|
else {
|
|
if (_DAT_01023be8 == param_2) {
|
|
*(uint *)((int)DAT_01023c10 + 6) = *(uint *)((int)DAT_01023c10 + 6) | 2;
|
|
ppcVar2 = DAT_01023c18;
|
|
}
|
|
else {
|
|
*(uint *)((int)DAT_01023c10 + 6) = *(uint *)((int)DAT_01023c10 + 6) | 4;
|
|
ppcVar2 = DAT_01023c20;
|
|
}
|
|
}
|
|
(**(code **)*ppcVar2)(0xf,0x40000000);
|
|
iVar1 = (**(code **)(*param_2 + 8))(0);
|
|
FUN_01017526(DAT_01025040,iVar1);
|
|
iVar1 = (**(code **)*DAT_01023c30)(0x25,0);
|
|
if (iVar1 == 3) {
|
|
(**(code **)(*DAT_01023ddc + 0x14))();
|
|
(**(code **)*DAT_01023810)(0x35,0);
|
|
(**(code **)*DAT_01023c30)(0x10,0x40000000);
|
|
}
|
|
else {
|
|
(**(code **)(*DAT_01023e0c + 0x14))();
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_0100dc3c(int param_1,int *param_2)
|
|
|
|
{
|
|
int iVar1;
|
|
LPSTR pCVar2;
|
|
undefined4 local_8;
|
|
|
|
if (param_1 == 0x3f) {
|
|
iVar1 = FUN_0100c092((int)&PTR_s_lite110_01023c40);
|
|
if (iVar1 == 0) {
|
|
(**(code **)*DAT_01023c44)(0xf,0x40400000);
|
|
local_8 = 0x40000000;
|
|
pCVar2 = FUN_01003752(0x5d);
|
|
FUN_010144b7(pCVar2,local_8);
|
|
}
|
|
iVar1 = (**(code **)(*param_2 + 8))(0);
|
|
FUN_01017526(DAT_01025040,iVar1);
|
|
FUN_0100c397(1);
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_0100dcb0(int param_1,undefined **param_2)
|
|
|
|
{
|
|
int iVar1;
|
|
LPSTR _Format;
|
|
char local_48 [64];
|
|
undefined4 local_8;
|
|
|
|
local_8 = DAT_01024778;
|
|
if (param_1 == 0x3f) {
|
|
iVar1 = (**(code **)(*param_2 + 8))(0);
|
|
iVar1 = FUN_01017526(DAT_01025040,iVar1);
|
|
_Format = FUN_01003752(0x50);
|
|
sprintf(local_48,_Format,iVar1);
|
|
FUN_010144b7(local_48,0x40000000);
|
|
(**(code **)*param_2)(0x37,0xbf800000);
|
|
}
|
|
FUN_0101cd9e();
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_0100dd33(int param_1,int *param_2)
|
|
|
|
{
|
|
undefined4 uVar1;
|
|
int iVar2;
|
|
|
|
if (param_1 == 0x3e) {
|
|
FUN_0100c397(0);
|
|
}
|
|
else {
|
|
if (param_1 == 0x3f) {
|
|
iVar2 = *param_2;
|
|
uVar1 = FUN_0100c092((int)&PTR_s_lite20_0102393c);
|
|
iVar2 = (**(code **)(iVar2 + 8))(uVar1);
|
|
FUN_01017526(DAT_01025040,iVar2);
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_0100dd7a(int param_1,undefined **param_2)
|
|
|
|
{
|
|
code **ppcVar1;
|
|
LPSTR _Format;
|
|
int iVar2;
|
|
float10 fVar3;
|
|
char local_48 [64];
|
|
undefined4 local_8;
|
|
|
|
local_8 = DAT_01024778;
|
|
if (param_1 == 0x3f) {
|
|
iVar2 = (**(code **)(*param_2 + 8))(0);
|
|
iVar2 = FUN_01017526(DAT_01025040,iVar2);
|
|
_Format = FUN_01003752(0x51);
|
|
sprintf(local_48,_Format,iVar2);
|
|
FUN_010144b7(local_48,0x40000000);
|
|
(**(code **)*DAT_01023c70)(0x14,0);
|
|
ppcVar1 = (code **)*param_2;
|
|
*(undefined *)((int)param_2 + 5) = 0;
|
|
fVar3 = (float10)(**(code **)(*DAT_01023e14 + 0x14))();
|
|
(**ppcVar1)(0x37,(float)fVar3);
|
|
}
|
|
else {
|
|
if (param_1 == 0x40) {
|
|
if (param_2 == (undefined **)0x0) {
|
|
_Format = FUN_01003752(0x2d);
|
|
sprintf(local_48,_Format);
|
|
}
|
|
else {
|
|
_Format = FUN_01003752(0x52);
|
|
sprintf(local_48,_Format,param_2);
|
|
}
|
|
FUN_010144b7(local_48,0x40000000);
|
|
(**(code **)*DAT_01023c70)(4,0);
|
|
*(undefined *)(DAT_01023c68 + 5) = 1;
|
|
}
|
|
else {
|
|
if (param_1 == 0x400) {
|
|
*(undefined *)(DAT_01023c68 + 5) = 0;
|
|
}
|
|
}
|
|
}
|
|
FUN_0101cd9e();
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_0100dea5(int param_1)
|
|
|
|
{
|
|
int iVar1;
|
|
|
|
if (param_1 == 0x3f) {
|
|
(**(code **)*DAT_01023d04)(9,0x40a00000);
|
|
iVar1 = FUN_0100c092((int)&PTR_s_lite67_01023cb0);
|
|
if (iVar1 != 0) {
|
|
(**(code **)*DAT_01023ce4)(0x22,0);
|
|
(**(code **)*DAT_01023ce4)(0x14,0);
|
|
(**(code **)*DAT_01023cb4)(0x13,0);
|
|
(**(code **)*DAT_01023878)(7,0x40a00000);
|
|
(**(code **)*DAT_010239b0)(7,0x40a00000);
|
|
(**(code **)*DAT_01023978)(0x2d,0x41300000);
|
|
(**(code **)(*DAT_01023df4 + 0x14))();
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_0100df6a(int param_1)
|
|
|
|
{
|
|
int iVar1;
|
|
|
|
if (param_1 == 0x3f) {
|
|
iVar1 = FUN_0100c092((int)&PTR_s_lite67_01023cb0);
|
|
if (iVar1 != 0) {
|
|
(**(code **)*DAT_01023cbc)(0x13,0);
|
|
(**(code **)(*DAT_01023df4 + 0x14))();
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_0100dfab(int param_1)
|
|
|
|
{
|
|
int iVar1;
|
|
|
|
if (param_1 == 0x3f) {
|
|
iVar1 = FUN_0100c092((int)&PTR_s_lite67_01023cb0);
|
|
if (iVar1 != 0) {
|
|
(**(code **)*DAT_01023cc4)(0x13,0);
|
|
(**(code **)(*DAT_01023df4 + 0x14))();
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_0100dfec(int param_1)
|
|
|
|
{
|
|
int iVar1;
|
|
|
|
if (param_1 == 0x3f) {
|
|
iVar1 = FUN_0100c092((int)&PTR_s_lite67_01023cb0);
|
|
if (iVar1 != 0) {
|
|
(**(code **)*DAT_01023ccc)(0x13,0);
|
|
(**(code **)(*DAT_01023df4 + 0x14))();
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_0100e02d(int param_1)
|
|
|
|
{
|
|
int iVar1;
|
|
|
|
if (param_1 == 0x3f) {
|
|
iVar1 = FUN_0100c092((int)&PTR_s_lite67_01023cb0);
|
|
if (iVar1 != 0) {
|
|
(**(code **)*DAT_01023cd4)(0x13,0);
|
|
(**(code **)(*DAT_01023df4 + 0x14))();
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_0100e06e(int param_1)
|
|
|
|
{
|
|
int iVar1;
|
|
|
|
if (param_1 == 0x3f) {
|
|
iVar1 = FUN_0100c092((int)&PTR_s_lite67_01023cb0);
|
|
if (iVar1 != 0) {
|
|
(**(code **)*DAT_01023cdc)(0x13,0);
|
|
(**(code **)(*DAT_01023df4 + 0x14))();
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_0100e0af(int param_1,undefined **param_2)
|
|
|
|
{
|
|
if (param_1 == 0x3c) {
|
|
if (*(int *)((int)param_2 + 6) == 0) {
|
|
(**(code **)*param_2)(0x10,0x40a00000);
|
|
*(undefined4 *)((int)param_2 + 6) = 1;
|
|
}
|
|
else {
|
|
*(undefined4 *)((int)param_2 + 6) = 0;
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_0100e0ed(int param_1,undefined **param_2)
|
|
|
|
{
|
|
if (param_1 == 0x3f) {
|
|
(**(code **)*param_2)(0x38,*(undefined4 *)((int)param_2 + 0x52));
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_0100e111(void)
|
|
|
|
{
|
|
code **ppcVar1;
|
|
int iVar2;
|
|
LPSTR pCVar3;
|
|
LPSTR _Format;
|
|
char local_48 [64];
|
|
undefined4 local_8;
|
|
|
|
ppcVar1 = DAT_01023cf4;
|
|
local_8 = DAT_01024778;
|
|
iVar2 = (**(code **)*DAT_01023cf4)(0x25,0);
|
|
if (iVar2 < 9) {
|
|
(**(code **)*ppcVar1)(0x29,0x40000000);
|
|
pCVar3 = FUN_01003752(*(short *)(&DAT_010246ec + iVar2 * 4));
|
|
_Format = FUN_01003752(0x53);
|
|
sprintf(local_48,_Format,pCVar3);
|
|
FUN_010144b7(local_48,0x41000000);
|
|
(**(code **)(*DAT_01023d1c + 0x14))();
|
|
}
|
|
FUN_0101cd9e();
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
|
|
|
|
void FUN_0100e1b0(int param_1)
|
|
|
|
{
|
|
bool bVar1;
|
|
|
|
if (*(int *)(DAT_01023bbc + 6) != 0) {
|
|
return;
|
|
}
|
|
if (param_1 < 0x4e) {
|
|
if (param_1 == 0x4d) {
|
|
if ((((DAT_01025050 == 4) || (DAT_01025050 == 0x3d)) || (DAT_01025050 == 0x51)) ||
|
|
(DAT_01025050 == 0x65)) goto LAB_0100e4fb;
|
|
bVar1 = DAT_01025050 == 0x79;
|
|
}
|
|
else {
|
|
if (param_1 < 0x45) {
|
|
if (param_1 == 0x44) {
|
|
if ((DAT_01025050 != 0x16) && (DAT_01025050 != 0x17)) {
|
|
DAT_01025050 = 0;
|
|
return;
|
|
}
|
|
LAB_0100e3fb:
|
|
DAT_01025050 = DAT_01025050 + 1;
|
|
return;
|
|
}
|
|
if (param_1 == 0x20) {
|
|
if (DAT_01025050 != 0x1a) {
|
|
DAT_01025050 = 0;
|
|
return;
|
|
}
|
|
DAT_01025050 = 0x1b;
|
|
return;
|
|
}
|
|
if (param_1 == 0x31) {
|
|
DAT_01025050 = (-(uint)(DAT_01025050 != 0) & 0xffffffc3) + 0x3d;
|
|
return;
|
|
}
|
|
if (param_1 != 0x41) {
|
|
if (param_1 == 0x42) {
|
|
DAT_01025050 = (-(uint)(DAT_01025050 != 0) & 0xffffffaf) + 0x51;
|
|
return;
|
|
}
|
|
if (param_1 != 0x43) {
|
|
DAT_01025050 = 0;
|
|
return;
|
|
}
|
|
if (DAT_01025050 == 0) {
|
|
DAT_01025050 = 1;
|
|
return;
|
|
}
|
|
if (DAT_01025050 != 0xb) {
|
|
DAT_01025050 = 0;
|
|
return;
|
|
}
|
|
DAT_01025050 = 0xc;
|
|
return;
|
|
}
|
|
if (((DAT_01025050 == 5) || (DAT_01025050 == 0x3e)) ||
|
|
((DAT_01025050 == 0x52 || (DAT_01025050 == 0x66)))) goto LAB_0100e4fb;
|
|
bVar1 = DAT_01025050 == 0x7a;
|
|
}
|
|
else {
|
|
if (param_1 == 0x45) {
|
|
if (((DAT_01025050 == 3) || (DAT_01025050 == 0x18)) || (DAT_01025050 == 0x1c))
|
|
goto LAB_0100e4fb;
|
|
bVar1 = DAT_01025050 == 0x2c;
|
|
}
|
|
else {
|
|
if (param_1 == 0x47) {
|
|
DAT_01025050 = (-(uint)(DAT_01025050 != 0) & 0xffffff9b) + 0x65;
|
|
return;
|
|
}
|
|
if (param_1 == 0x48) {
|
|
DAT_01025050 = (-(uint)(DAT_01025050 != 0) & 0xffffffeb) + 0x15;
|
|
return;
|
|
}
|
|
if (param_1 != 0x49) {
|
|
DAT_01025050 = 0;
|
|
return;
|
|
}
|
|
if ((DAT_01025050 == 1) || (DAT_01025050 == 10)) goto LAB_0100e4fb;
|
|
bVar1 = DAT_01025050 == 0x15;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else {
|
|
if (param_1 < 0x54) {
|
|
if (param_1 == 0x53) {
|
|
if ((DAT_01025050 == 0xc) || (DAT_01025050 == 0x1d)) goto LAB_0100e4fb;
|
|
bVar1 = DAT_01025050 == 0x2d;
|
|
}
|
|
else {
|
|
if (param_1 != 0x4e) {
|
|
if (param_1 != 0x4f) {
|
|
if (param_1 == 0x51) {
|
|
DAT_01025050 = (-(uint)(DAT_01025050 != 0) & 0xffffffd7) + 0x29;
|
|
return;
|
|
}
|
|
if (param_1 != 0x52) {
|
|
DAT_01025050 = 0;
|
|
return;
|
|
}
|
|
if (DAT_01025050 == 0) {
|
|
DAT_01025050 = 0x79;
|
|
return;
|
|
}
|
|
if (DAT_01025050 != 7) {
|
|
DAT_01025050 = 0;
|
|
return;
|
|
}
|
|
DAT_01025050 = 8;
|
|
return;
|
|
}
|
|
if ((DAT_01025050 != 8) && (DAT_01025050 != 0x2a)) {
|
|
DAT_01025050 = 0;
|
|
return;
|
|
}
|
|
goto LAB_0100e3fb;
|
|
}
|
|
if ((DAT_01025050 == 2) || (DAT_01025050 == 9)) goto LAB_0100e4fb;
|
|
bVar1 = DAT_01025050 == 0x19;
|
|
}
|
|
}
|
|
else {
|
|
if (param_1 != 0x54) {
|
|
if (param_1 == 0x55) {
|
|
if (DAT_01025050 != 0x29) {
|
|
DAT_01025050 = 0;
|
|
return;
|
|
}
|
|
DAT_01025050 = 0x2a;
|
|
return;
|
|
}
|
|
if (param_1 != 0x58) {
|
|
DAT_01025050 = 0;
|
|
return;
|
|
}
|
|
if (DAT_01025050 == 0x3f) {
|
|
FUN_0100c2f3(0x40000000);
|
|
}
|
|
else {
|
|
if (DAT_01025050 == 0x53) {
|
|
_DAT_01025044 = 1;
|
|
goto LAB_0100e4e1;
|
|
}
|
|
if (DAT_01025050 == 0x67) {
|
|
FUN_0100dd7a(0x40,(undefined **)0x0);
|
|
}
|
|
else {
|
|
if (DAT_01025050 != 0x7b) {
|
|
DAT_01025050 = 0;
|
|
return;
|
|
}
|
|
FUN_0100e111();
|
|
}
|
|
}
|
|
*(undefined4 *)(DAT_01025040 + 0x3e) = 1;
|
|
DAT_01025050 = 0;
|
|
return;
|
|
}
|
|
if (DAT_01025050 == 0x1e) {
|
|
_DAT_01024ff8 = 1;
|
|
LAB_0100e4e1:
|
|
*(undefined4 *)(DAT_01025040 + 0x3e) = 1;
|
|
DAT_01025050 = 0;
|
|
return;
|
|
}
|
|
if ((DAT_01025050 == 0x1b) || (DAT_01025050 == 6)) goto LAB_0100e4fb;
|
|
bVar1 = DAT_01025050 == 0x2b;
|
|
}
|
|
}
|
|
if (!bVar1) {
|
|
DAT_01025050 = 0;
|
|
return;
|
|
}
|
|
LAB_0100e4fb:
|
|
DAT_01025050 = DAT_01025050 + 1;
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_0100e50b(int param_1)
|
|
|
|
{
|
|
code **ppcVar1;
|
|
int iVar2;
|
|
int iVar3;
|
|
LPSTR pCVar4;
|
|
LPSTR _Format;
|
|
char local_48 [64];
|
|
undefined4 local_8;
|
|
|
|
local_8 = DAT_01024778;
|
|
(**(code **)*DAT_010238f0)(0x13,0);
|
|
ppcVar1 = DAT_01023cfc;
|
|
if (0 < param_1) {
|
|
do {
|
|
(**(code **)*ppcVar1)(0x29,0x40000000);
|
|
param_1 = param_1 + -1;
|
|
} while (param_1 != 0);
|
|
}
|
|
iVar2 = (**(code **)*ppcVar1)(0x25,0);
|
|
iVar3 = (**(code **)*ppcVar1)(0x26,0);
|
|
if (iVar2 == iVar3) {
|
|
(**(code **)*ppcVar1)(0x10,0x40a00000);
|
|
ppcVar1 = DAT_01023cf4;
|
|
(**(code **)*DAT_01023cf4)(0x22,0);
|
|
iVar2 = (**(code **)*ppcVar1)(0x25,0);
|
|
if (iVar2 < 9) {
|
|
(**(code **)*ppcVar1)(0x29,0x40a00000);
|
|
pCVar4 = FUN_01003752(*(short *)(&DAT_010246ec + iVar2 * 4));
|
|
_Format = FUN_01003752(0x53);
|
|
sprintf(local_48,_Format,pCVar4);
|
|
FUN_010144b7(local_48,0x41000000);
|
|
(**(code **)(*DAT_01023d1c + 0x14))();
|
|
}
|
|
}
|
|
else {
|
|
if ((iVar3 * 3) / 4 <= iVar2) {
|
|
(**(code **)*DAT_01023cf4)(0x1b,0xbf800000);
|
|
}
|
|
}
|
|
FUN_0101cd9e();
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
|
|
|
|
void FUN_0100e657(int param_1,int param_2)
|
|
|
|
{
|
|
LPSTR pCVar1;
|
|
undefined4 local_8;
|
|
|
|
if (param_1 == 0x3f) {
|
|
if ((_DAT_01023838 == param_2) || (_DAT_01023840 == param_2)) {
|
|
*(undefined4 *)(DAT_01023bbc + 6) = 1;
|
|
FUN_01011bb5(0x42,(undefined **)0x0);
|
|
}
|
|
}
|
|
else {
|
|
if (param_1 == 0x42) {
|
|
FUN_01014143(DAT_01023e24);
|
|
_DAT_01025048 = 0;
|
|
}
|
|
else {
|
|
if (param_1 == 0x43) {
|
|
local_8 = 0xbf800000;
|
|
pCVar1 = FUN_01003752(0x32);
|
|
FUN_010144b7(pCVar1,local_8);
|
|
}
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
|
|
|
|
void FUN_0100e6d2(int param_1,undefined **param_2)
|
|
|
|
{
|
|
code **ppcVar1;
|
|
int iVar2;
|
|
LPSTR _Format;
|
|
LPSTR _Format_00;
|
|
bool bVar3;
|
|
undefined4 local_58;
|
|
char local_48 [64];
|
|
undefined4 local_8;
|
|
|
|
local_8 = DAT_01024778;
|
|
if ((param_1 == 0x2d) || (param_1 == 0x2f)) {
|
|
if (DAT_01023978 != (code **)param_2) goto switchD_0100e9ce_caseD_9;
|
|
}
|
|
else {
|
|
if (param_1 != 0x3f) {
|
|
if (param_1 == 0x42) {
|
|
(**(code **)*DAT_01023bbc)(0x14,0);
|
|
(**(code **)*DAT_01023cfc)(0x22,0);
|
|
(**(code **)*DAT_01023bb4)(0x14,0);
|
|
*(undefined4 *)((int)DAT_01023888 + 6) = 0;
|
|
*(undefined4 *)(DAT_01023b9c + 6) = 0;
|
|
ppcVar1 = DAT_01023a8c;
|
|
(**(code **)*DAT_01023a8c)(0x22,0);
|
|
(**(code **)*ppcVar1)(0x14,0);
|
|
ppcVar1 = DAT_01023a94;
|
|
(**(code **)*DAT_01023a94)(0x22,0);
|
|
(**(code **)*ppcVar1)(0x14,0);
|
|
(**(code **)*DAT_01023eec)(0x14,0);
|
|
}
|
|
else {
|
|
if (param_1 != 0x43) goto switchD_0100e9ce_caseD_9;
|
|
}
|
|
iVar2 = (**(code **)*DAT_01023978)(0x25,0);
|
|
if (iVar2 == 0) {
|
|
local_58 = 0xbf800000;
|
|
_Format = FUN_01003752(0x69);
|
|
FUN_010144b7(_Format,local_58);
|
|
iVar2 = FUN_0100c092((int)&PTR_s_lite317_01023eb8);
|
|
if (iVar2 != 0) {
|
|
(**(code **)*DAT_01023ebc)(0x14,0);
|
|
}
|
|
iVar2 = FUN_0100c092((int)&PTR_s_lite319_01023ec8);
|
|
if (iVar2 != 0) {
|
|
(**(code **)*DAT_01023ecc)(0x14,0);
|
|
}
|
|
iVar2 = FUN_0100c092((int)&PTR_s_lite318_01023ec0);
|
|
ppcVar1 = DAT_01023ec4;
|
|
}
|
|
else {
|
|
iVar2 = FUN_0100c092((int)&PTR_s_lite56_01023884);
|
|
if (iVar2 == 0) {
|
|
local_58 = 0xbf800000;
|
|
_Format = FUN_01003752(0x68);
|
|
FUN_010144b7(_Format,local_58);
|
|
iVar2 = FUN_0100c092((int)&PTR_s_lite317_01023eb8);
|
|
if (iVar2 != 0) {
|
|
(**(code **)*DAT_01023ebc)(0x14,0);
|
|
}
|
|
iVar2 = FUN_0100c092((int)&PTR_s_lite318_01023ec0);
|
|
if (iVar2 != 0) {
|
|
(**(code **)*DAT_01023ec4)(0x14,0);
|
|
}
|
|
iVar2 = FUN_0100c092((int)&PTR_s_lite319_01023ec8);
|
|
ppcVar1 = DAT_01023ecc;
|
|
}
|
|
else {
|
|
_Format = FUN_01003752(*(short *)(&DAT_01024708 + *(int *)((int)DAT_01023888 + 6) * 4));
|
|
_Format_00 = FUN_01003752(0x6a);
|
|
sprintf(local_48,_Format_00,_Format);
|
|
FUN_010144b7(local_48,0xbf800000);
|
|
iVar2 = FUN_0100c092((int)&PTR_s_lite318_01023ec0);
|
|
if (iVar2 != 0) {
|
|
(**(code **)*DAT_01023ec4)(0x14,0);
|
|
}
|
|
iVar2 = FUN_0100c092((int)&PTR_s_lite319_01023ec8);
|
|
if (iVar2 != 0) {
|
|
(**(code **)*DAT_01023ecc)(0x14,0);
|
|
}
|
|
iVar2 = FUN_0100c092((int)&PTR_s_lite317_01023eb8);
|
|
ppcVar1 = DAT_01023ebc;
|
|
}
|
|
}
|
|
if (iVar2 == 0) {
|
|
(**(code **)*ppcVar1)(7,0);
|
|
}
|
|
goto switchD_0100e9ce_caseD_9;
|
|
}
|
|
bVar3 = _DAT_01023b84 == param_2;
|
|
if (_DAT_01023b8c == param_2) {
|
|
bVar3 = true;
|
|
}
|
|
if (_DAT_01023b94 == param_2) {
|
|
bVar3 = true;
|
|
}
|
|
if (bVar3 == false) {
|
|
if (((DAT_01023870 == param_2) &&
|
|
(iVar2 = FUN_0100c092((int)&PTR_s_lite56_01023884), iVar2 != 0)) &&
|
|
(iVar2 = (**(code **)*DAT_01023978)(0x25,0), iVar2 != 0)) {
|
|
(**(code **)*DAT_01023888)(0x14,0);
|
|
(**(code **)*DAT_01023bbc)(0x13,0);
|
|
(**(code **)*DAT_01023cfc)(0x1a,0xbf800000);
|
|
iVar2 = FUN_0100c092((int)&PTR_s_lite317_01023eb8);
|
|
if (iVar2 != 0) {
|
|
(**(code **)*DAT_01023ebc)(0x14,0);
|
|
}
|
|
iVar2 = FUN_0100c092((int)&PTR_s_lite318_01023ec0);
|
|
if (iVar2 != 0) {
|
|
(**(code **)*DAT_01023ec4)(0x14,0);
|
|
}
|
|
iVar2 = FUN_0100c092((int)&PTR_s_lite319_01023ec8);
|
|
if (iVar2 != 0) {
|
|
(**(code **)*DAT_01023ecc)(0x14,0);
|
|
}
|
|
iVar2 = *(int *)((int)DAT_01023888 + 6);
|
|
*(int *)((int)DAT_01023bbc + 6) = iVar2;
|
|
FUN_01011bb5(0x42,(undefined **)0x0);
|
|
local_58 = FUN_0100c335((int)(&PTR_PTR_s_soundwave25_010246a0)[iVar2]);
|
|
_Format = FUN_01003752(0x4d);
|
|
sprintf(local_48,_Format,local_58);
|
|
FUN_010144b7(local_48,0x40800000);
|
|
}
|
|
goto switchD_0100e9ce_caseD_9;
|
|
}
|
|
if (*(int *)(DAT_01023b9c + 6) == 7) {
|
|
*(undefined4 *)(DAT_01023b9c + 6) = 0;
|
|
bVar3 = true;
|
|
}
|
|
local_58 = (**(code **)*DAT_01023cf4)(0x25,0);
|
|
switch(local_58) {
|
|
case 1:
|
|
if (bVar3 == true) {
|
|
local_58 = 3;
|
|
}
|
|
else {
|
|
if (bVar3 == true) {
|
|
local_58 = 4;
|
|
}
|
|
else {
|
|
if (bVar3 == true) {
|
|
local_58 = 2;
|
|
}
|
|
else {
|
|
local_58 = 5;
|
|
}
|
|
}
|
|
}
|
|
break;
|
|
case 2:
|
|
case 3:
|
|
if (bVar3 == true) {
|
|
local_58 = 9;
|
|
}
|
|
else {
|
|
if (bVar3 == true) {
|
|
local_58 = 0xb;
|
|
}
|
|
else {
|
|
if (bVar3 != true) goto LAB_0100ea48;
|
|
local_58 = 10;
|
|
}
|
|
}
|
|
break;
|
|
case 4:
|
|
case 5:
|
|
if (bVar3 == true) {
|
|
local_58 = 6;
|
|
}
|
|
else {
|
|
if (bVar3 == true) {
|
|
local_58 = 8;
|
|
}
|
|
else {
|
|
if (bVar3 != true) goto LAB_0100ea4c;
|
|
local_58 = 7;
|
|
}
|
|
}
|
|
break;
|
|
case 6:
|
|
case 7:
|
|
if (bVar3 == true) {
|
|
local_58 = 0xc;
|
|
}
|
|
else {
|
|
if (bVar3 == true) {
|
|
local_58 = 0xd;
|
|
}
|
|
else {
|
|
if (bVar3 == true) {
|
|
local_58 = 0xe;
|
|
}
|
|
else {
|
|
LAB_0100ea44:
|
|
local_58 = 0x11;
|
|
}
|
|
}
|
|
}
|
|
break;
|
|
case 8:
|
|
case 9:
|
|
if (bVar3 == true) {
|
|
LAB_0100ea4c:
|
|
local_58 = 0xf;
|
|
}
|
|
else {
|
|
if (bVar3 == true) {
|
|
LAB_0100ea48:
|
|
local_58 = 0x10;
|
|
}
|
|
else {
|
|
if (bVar3 == true) goto LAB_0100ea44;
|
|
local_58 = 0x12;
|
|
}
|
|
}
|
|
break;
|
|
default:
|
|
goto switchD_0100e9ce_caseD_9;
|
|
}
|
|
*(undefined4 *)((int)DAT_01023888 + 6) = local_58;
|
|
(**(code **)*DAT_01023888)(0xf,0x40000000);
|
|
(**(code **)*DAT_01023bbc)(4,0);
|
|
}
|
|
FUN_01011bb5(0x43,param_2);
|
|
switchD_0100e9ce_caseD_9:
|
|
FUN_0101cd9e();
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
|
|
|
|
void FUN_0100ebf3(int param_1,int param_2)
|
|
|
|
{
|
|
LPSTR _Format;
|
|
int iVar1;
|
|
undefined4 local_4c;
|
|
char local_48 [64];
|
|
undefined4 local_8;
|
|
|
|
local_8 = DAT_01024778;
|
|
if (param_1 == 0x3f) {
|
|
if ((((DAT_010236e4 == param_2) || (_DAT_010236ec == param_2)) || (_DAT_010236f4 == param_2)) ||
|
|
(_DAT_010236fc == param_2)) {
|
|
iVar1 = *(int *)(DAT_01023888 + 6) + -1;
|
|
*(int *)(DAT_01023888 + 6) = iVar1;
|
|
if (iVar1 == 0) {
|
|
(**(code **)*DAT_01023e74)(0x14,0);
|
|
(**(code **)*DAT_01023e8c)(0x14,0);
|
|
*(undefined4 *)(DAT_01023bbc + 6) = 1;
|
|
FUN_01011bb5(0x42,(undefined **)0x0);
|
|
local_4c = 0x40800000;
|
|
_Format = FUN_01003752(0x6c);
|
|
FUN_010144b7(_Format,local_4c);
|
|
local_4c = FUN_0100c335(500000);
|
|
_Format = FUN_01003752(0x4e);
|
|
sprintf(local_48,_Format,local_4c);
|
|
iVar1 = FUN_0100e50b(6);
|
|
if (iVar1 == 0) {
|
|
FUN_010144b7(local_48,0x41000000);
|
|
(**(code **)(*DAT_01023d14 + 0x14))();
|
|
}
|
|
}
|
|
else {
|
|
FUN_01011bb5(0x43,(undefined **)param_2);
|
|
}
|
|
}
|
|
}
|
|
else {
|
|
if (param_1 == 0x42) {
|
|
(**(code **)*DAT_01023e74)(7,0);
|
|
(**(code **)*DAT_01023e8c)(7,0);
|
|
*(undefined4 *)(DAT_01023888 + 6) = 8;
|
|
}
|
|
else {
|
|
if (param_1 != 0x43) goto LAB_0100ed72;
|
|
}
|
|
local_4c = *(undefined4 *)(DAT_01023888 + 6);
|
|
_Format = FUN_01003752(0x6b);
|
|
sprintf(local_48,_Format,local_4c);
|
|
FUN_010144b7(local_48,0xbf800000);
|
|
}
|
|
LAB_0100ed72:
|
|
FUN_0101cd9e();
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_0100ed83(int param_1,int param_2)
|
|
|
|
{
|
|
LPSTR _Format;
|
|
int iVar1;
|
|
undefined4 local_4c;
|
|
char local_48 [64];
|
|
undefined4 local_8;
|
|
|
|
local_8 = DAT_01024778;
|
|
if (param_1 == 0x3f) {
|
|
if (DAT_01023870 == param_2) {
|
|
iVar1 = *(int *)(DAT_01023888 + 6) + -1;
|
|
*(int *)(DAT_01023888 + 6) = iVar1;
|
|
if (iVar1 == 0) {
|
|
(**(code **)*DAT_01023ebc)(0x14,0);
|
|
*(undefined4 *)(DAT_01023bbc + 6) = 1;
|
|
FUN_01011bb5(0x42,(undefined **)0x0);
|
|
local_4c = 0x40800000;
|
|
_Format = FUN_01003752(0x6f);
|
|
FUN_010144b7(_Format,local_4c);
|
|
local_4c = FUN_0100c335(500000);
|
|
_Format = FUN_01003752(0x4e);
|
|
sprintf(local_48,_Format,local_4c);
|
|
iVar1 = FUN_0100e50b(6);
|
|
if (iVar1 == 0) {
|
|
FUN_010144b7(local_48,0x41000000);
|
|
(**(code **)(*DAT_01023d14 + 0x14))();
|
|
}
|
|
}
|
|
else {
|
|
FUN_01011bb5(0x43,(undefined **)param_2);
|
|
}
|
|
}
|
|
}
|
|
else {
|
|
if (param_1 == 0x42) {
|
|
(**(code **)*DAT_01023ebc)(7,0);
|
|
*(undefined4 *)(DAT_01023888 + 6) = 3;
|
|
}
|
|
else {
|
|
if (param_1 != 0x43) goto LAB_0100eec6;
|
|
}
|
|
local_4c = *(undefined4 *)(DAT_01023888 + 6);
|
|
_Format = FUN_01003752(0x6e);
|
|
sprintf(local_48,_Format,local_4c);
|
|
FUN_010144b7(local_48,0xbf800000);
|
|
}
|
|
LAB_0100eec6:
|
|
FUN_0101cd9e();
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
|
|
|
|
void FUN_0100eed7(int param_1,int param_2)
|
|
|
|
{
|
|
code **ppcVar1;
|
|
LPSTR _Format;
|
|
int iVar2;
|
|
undefined4 local_50;
|
|
char local_48 [64];
|
|
undefined4 local_8;
|
|
|
|
local_8 = DAT_01024778;
|
|
if (param_1 == 0x3f) {
|
|
if (((_DAT_0102372c == param_2) || (_DAT_01023734 == param_2)) || (_DAT_0102373c == param_2)) {
|
|
iVar2 = *(int *)(DAT_01023888 + 6) + -1;
|
|
*(int *)(DAT_01023888 + 6) = iVar2;
|
|
if (iVar2 == 0) {
|
|
(**(code **)*DAT_01023e6c)(0x14,0);
|
|
*(undefined4 *)(DAT_01023bbc + 6) = 1;
|
|
FUN_01011bb5(0x42,(undefined **)0x0);
|
|
local_50 = 0x40800000;
|
|
_Format = FUN_01003752(0x71);
|
|
FUN_010144b7(_Format,local_50);
|
|
local_50 = FUN_0100c335(500000);
|
|
_Format = FUN_01003752(0x4e);
|
|
sprintf(local_48,_Format,local_50);
|
|
iVar2 = FUN_0100e50b(6);
|
|
if (iVar2 == 0) {
|
|
FUN_010144b7(local_48,0x41000000);
|
|
(**(code **)(*DAT_01023d14 + 0x14))();
|
|
}
|
|
}
|
|
else {
|
|
FUN_01011bb5(0x43,(undefined **)param_2);
|
|
}
|
|
}
|
|
}
|
|
else {
|
|
if (param_1 == 0x42) {
|
|
*(undefined4 *)(DAT_01023888 + 6) = 3;
|
|
ppcVar1 = DAT_01023a8c;
|
|
(**(code **)*DAT_01023a8c)(0x14,0);
|
|
(**(code **)*ppcVar1)(0x20,0x3e4ccccd);
|
|
(**(code **)*ppcVar1)(0x1a,0x3e4ccccd);
|
|
ppcVar1 = DAT_01023a94;
|
|
(**(code **)*DAT_01023a94)(0x14,0);
|
|
(**(code **)*ppcVar1)(0x20,0x3e4ccccd);
|
|
(**(code **)*ppcVar1)(0x1a,0x3e4ccccd);
|
|
(**(code **)*DAT_01023e6c)(7,0);
|
|
}
|
|
else {
|
|
if (param_1 != 0x43) goto LAB_0100f0a1;
|
|
}
|
|
local_50 = *(undefined4 *)(DAT_01023888 + 6);
|
|
_Format = FUN_01003752(0x70);
|
|
sprintf(local_48,_Format,local_50);
|
|
FUN_010144b7(local_48,0xbf800000);
|
|
}
|
|
LAB_0100f0a1:
|
|
FUN_0101cd9e();
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_0100f0b3(int param_1,undefined **param_2)
|
|
|
|
{
|
|
LPSTR _Format;
|
|
int iVar1;
|
|
undefined4 local_50;
|
|
char local_48 [64];
|
|
undefined4 local_8;
|
|
|
|
local_8 = DAT_01024778;
|
|
if (param_1 == 0x3f) {
|
|
if ((((((DAT_01023a9c == (code **)param_2) || (DAT_01023aa4 == (code **)param_2)) ||
|
|
(DAT_01023aac == (code **)param_2)) ||
|
|
((DAT_01023adc == (code **)param_2 || (DAT_01023ae4 == (code **)param_2)))) ||
|
|
((DAT_01023aec == (code **)param_2 ||
|
|
((DAT_01023b20 == (code **)param_2 || (DAT_01023b28 == (code **)param_2)))))) ||
|
|
(DAT_01023b30 == (code **)param_2)) {
|
|
iVar1 = *(int *)(DAT_01023888 + 6) + -1;
|
|
*(int *)(DAT_01023888 + 6) = iVar1;
|
|
if (iVar1 == 0) {
|
|
(**(code **)*DAT_01023e4c)(0x14,0);
|
|
(**(code **)*DAT_01023e7c)(0x14,0);
|
|
(**(code **)*DAT_01023eac)(0x14,0);
|
|
*(undefined4 *)(DAT_01023bbc + 6) = 1;
|
|
FUN_01011bb5(0x42,(undefined **)0x0);
|
|
local_50 = 0x40800000;
|
|
_Format = FUN_01003752(0x73);
|
|
FUN_010144b7(_Format,local_50);
|
|
local_50 = FUN_0100c335(750000);
|
|
_Format = FUN_01003752(0x4e);
|
|
sprintf(local_48,_Format,local_50);
|
|
iVar1 = FUN_0100e50b(9);
|
|
if (iVar1 == 0) {
|
|
FUN_010144b7(local_48,0x41000000);
|
|
(**(code **)(*DAT_01023d14 + 0x14))();
|
|
}
|
|
}
|
|
else {
|
|
FUN_01011bb5(0x43,param_2);
|
|
}
|
|
}
|
|
}
|
|
else {
|
|
if (param_1 == 0x42) {
|
|
*(undefined4 *)(DAT_01023888 + 6) = 9;
|
|
*(undefined4 *)((int)DAT_01023a9c + 6) = 0;
|
|
(**(code **)*DAT_01023a9c)(0x32,0);
|
|
*(undefined4 *)((int)DAT_01023aa4 + 6) = 0;
|
|
(**(code **)*DAT_01023aa4)(0x32,0);
|
|
*(undefined4 *)((int)DAT_01023aac + 6) = 0;
|
|
(**(code **)*DAT_01023aac)(0x32,0);
|
|
*(undefined4 *)((int)DAT_01023adc + 6) = 0;
|
|
(**(code **)*DAT_01023adc)(0x32,0);
|
|
*(undefined4 *)((int)DAT_01023ae4 + 6) = 0;
|
|
(**(code **)*DAT_01023ae4)(0x32,0);
|
|
*(undefined4 *)((int)DAT_01023aec + 6) = 0;
|
|
(**(code **)*DAT_01023aec)(0x32,0);
|
|
*(undefined4 *)((int)DAT_01023b20 + 6) = 0;
|
|
(**(code **)*DAT_01023b20)(0x32,0);
|
|
*(undefined4 *)((int)DAT_01023b28 + 6) = 0;
|
|
(**(code **)*DAT_01023b28)(0x32,0);
|
|
*(undefined4 *)((int)DAT_01023b30 + 6) = 0;
|
|
(**(code **)*DAT_01023b30)(0x32,0);
|
|
(**(code **)*DAT_01023e4c)(7,0);
|
|
(**(code **)*DAT_01023e7c)(7,0);
|
|
(**(code **)*DAT_01023eac)(7,0);
|
|
}
|
|
else {
|
|
if (param_1 != 0x43) goto LAB_0100f36f;
|
|
}
|
|
local_50 = *(undefined4 *)(DAT_01023888 + 6);
|
|
_Format = FUN_01003752(0x72);
|
|
sprintf(local_48,_Format,local_50);
|
|
FUN_010144b7(local_48,0xbf800000);
|
|
}
|
|
LAB_0100f36f:
|
|
FUN_0101cd9e();
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
|
|
|
|
void FUN_0100f381(int param_1,int param_2)
|
|
|
|
{
|
|
LPSTR _Format;
|
|
int iVar1;
|
|
short sVar2;
|
|
undefined4 local_50;
|
|
char local_48 [64];
|
|
undefined4 local_8;
|
|
|
|
local_8 = DAT_01024778;
|
|
if (param_1 == 0x3f) {
|
|
if (((_DAT_01023be0 == param_2) || (_DAT_01023be8 == param_2)) || (_DAT_01023bf0 == param_2)) {
|
|
if (*(int *)(DAT_01023c10 + 6) == 7) {
|
|
(**(code **)*DAT_01023e64)(0x14,0);
|
|
(**(code **)*DAT_01023e54)(7,0);
|
|
*(undefined4 *)(DAT_01023c10 + 6) = 0xf;
|
|
FUN_01011bb5(0x43,(undefined **)param_2);
|
|
}
|
|
}
|
|
else {
|
|
if ((DAT_01023980 == param_2) && (*(int *)(DAT_01023c10 + 6) == 0xf)) {
|
|
(**(code **)*DAT_01023e54)(0x14,0);
|
|
*(undefined4 *)(DAT_01023bbc + 6) = 1;
|
|
FUN_01011bb5(0x42,(undefined **)0x0);
|
|
local_50 = 0x40800000;
|
|
_Format = FUN_01003752(0x77);
|
|
FUN_010144b7(_Format,local_50);
|
|
local_50 = FUN_0100c335(1000000);
|
|
_Format = FUN_01003752(0x4e);
|
|
sprintf(local_48,_Format,local_50);
|
|
iVar1 = FUN_0100e50b(8);
|
|
if (iVar1 == 0) {
|
|
FUN_010144b7(local_48,0x41000000);
|
|
(**(code **)(*DAT_01023d14 + 0x14))();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else {
|
|
if (param_1 == 0x42) {
|
|
(**(code **)*DAT_01023c30)(0x14,0);
|
|
*(undefined4 *)(DAT_01023c10 + 6) = 0;
|
|
(**(code **)*DAT_01023e64)(7,0);
|
|
}
|
|
else {
|
|
if (param_1 != 0x43) goto LAB_0100f527;
|
|
}
|
|
local_50 = 0xbf800000;
|
|
if (*(int *)(DAT_01023c10 + 6) == 0xf) {
|
|
sVar2 = 0x76;
|
|
}
|
|
else {
|
|
sVar2 = 0x75;
|
|
}
|
|
_Format = FUN_01003752(sVar2);
|
|
FUN_010144b7(_Format,local_50);
|
|
}
|
|
LAB_0100f527:
|
|
FUN_0101cd9e();
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
|
|
|
|
void FUN_0100f539(int param_1,int param_2)
|
|
|
|
{
|
|
LPSTR _Format;
|
|
int iVar1;
|
|
short sVar2;
|
|
undefined4 local_50;
|
|
char local_48 [64];
|
|
undefined4 local_8;
|
|
|
|
local_8 = DAT_01024778;
|
|
if (param_1 == 0x3f) {
|
|
if (((_DAT_01023bc8 == param_2) || (_DAT_01023bd0 == param_2)) || (_DAT_01023bd8 == param_2)) {
|
|
if (*(int *)(DAT_01023bf8 + 6) == 7) {
|
|
*(undefined4 *)(DAT_01023bf8 + 6) = 0xf;
|
|
(**(code **)*DAT_01023a3c)(7,0);
|
|
(**(code **)*DAT_01023e9c)(0x14,0);
|
|
FUN_01011bb5(0x43,(undefined **)param_2);
|
|
FUN_0100c397(1);
|
|
}
|
|
}
|
|
else {
|
|
if ((((DAT_010239ec == param_2) || (DAT_010239f4 == param_2)) || (DAT_010239fc == param_2)) &&
|
|
(*(int *)(DAT_01023bf8 + 6) == 0xf)) {
|
|
*(undefined4 *)(DAT_01023bbc + 6) = 1;
|
|
FUN_01011bb5(0x42,(undefined **)0x0);
|
|
local_50 = 0x40800000;
|
|
_Format = FUN_01003752(0x79);
|
|
FUN_010144b7(_Format,local_50);
|
|
local_50 = FUN_0100c335(1000000);
|
|
_Format = FUN_01003752(0x4e);
|
|
sprintf(local_48,_Format,local_50);
|
|
iVar1 = FUN_0100e50b(8);
|
|
if (iVar1 == 0) {
|
|
FUN_010144b7(local_48,0x41000000);
|
|
(**(code **)(*DAT_01023d14 + 0x14))();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else {
|
|
if (param_1 == 0x42) {
|
|
(**(code **)*DAT_01023c28)(0x14,0);
|
|
*(undefined4 *)(DAT_01023bf8 + 6) = 0;
|
|
(**(code **)*DAT_01023e9c)(7,0);
|
|
}
|
|
else {
|
|
if (param_1 != 0x43) goto LAB_0100f6e2;
|
|
}
|
|
local_50 = 0xbf800000;
|
|
if (*(int *)(DAT_01023bf8 + 6) == 0xf) {
|
|
sVar2 = 0x78;
|
|
}
|
|
else {
|
|
sVar2 = 0xb0;
|
|
}
|
|
_Format = FUN_01003752(sVar2);
|
|
FUN_010144b7(_Format,local_50);
|
|
}
|
|
LAB_0100f6e2:
|
|
FUN_0101cd9e();
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
|
|
|
|
void FUN_0100f6f4(int param_1,int param_2)
|
|
|
|
{
|
|
code **ppcVar1;
|
|
LPSTR _Format;
|
|
int iVar2;
|
|
undefined4 local_50;
|
|
char local_48 [64];
|
|
undefined4 local_8;
|
|
|
|
local_8 = DAT_01024778;
|
|
if (param_1 == 0xb) {
|
|
if (DAT_01023758 == param_2) {
|
|
FUN_01011bb5(0x43,(undefined **)param_2);
|
|
}
|
|
}
|
|
else {
|
|
if (param_1 == 0x3f) {
|
|
if ((_DAT_01023c5c == param_2) && (*(int *)(DAT_01023758 + 0x4e) != 0)) {
|
|
iVar2 = FUN_0100c092((int)&PTR_s_lite316_01023eb0);
|
|
if (iVar2 != 0) {
|
|
(**(code **)*DAT_01023eb4)(0x14,0);
|
|
}
|
|
iVar2 = FUN_0100c092((int)&PTR_s_lite314_01023ea0);
|
|
if (iVar2 != 0) {
|
|
(**(code **)*DAT_01023ea4)(0x14,0);
|
|
}
|
|
*(undefined4 *)(DAT_01023bbc + 6) = 1;
|
|
FUN_01011bb5(0x42,(undefined **)0x0);
|
|
local_50 = 0x40800000;
|
|
_Format = FUN_01003752(0x7c);
|
|
FUN_010144b7(_Format,local_50);
|
|
local_50 = FUN_0100c335(1000000);
|
|
_Format = FUN_01003752(0x4e);
|
|
sprintf(local_48,_Format,local_50);
|
|
iVar2 = FUN_0100e50b(8);
|
|
if (iVar2 == 0) {
|
|
FUN_010144b7(local_48,0x41000000);
|
|
(**(code **)(*DAT_01023d14 + 0x14))();
|
|
}
|
|
}
|
|
}
|
|
else {
|
|
if (param_1 == 0x42) {
|
|
(**(code **)*DAT_01023770)(0xb,0);
|
|
}
|
|
else {
|
|
if (param_1 != 0x43) goto LAB_0100f8ee;
|
|
}
|
|
local_50 = 0xbf800000;
|
|
if (*(int *)(DAT_01023758 + 0x4e) == 0) {
|
|
_Format = FUN_01003752(0x7a);
|
|
FUN_010144b7(_Format,local_50);
|
|
iVar2 = FUN_0100c092((int)&PTR_s_lite314_01023ea0);
|
|
if (iVar2 != 0) {
|
|
(**(code **)*DAT_01023ea4)(0x14,0);
|
|
}
|
|
iVar2 = FUN_0100c092((int)&PTR_s_lite316_01023eb0);
|
|
ppcVar1 = DAT_01023eb4;
|
|
}
|
|
else {
|
|
_Format = FUN_01003752(0x7b);
|
|
FUN_010144b7(_Format,local_50);
|
|
iVar2 = FUN_0100c092((int)&PTR_s_lite316_01023eb0);
|
|
if (iVar2 != 0) {
|
|
(**(code **)*DAT_01023eb4)(0x14,0);
|
|
}
|
|
iVar2 = FUN_0100c092((int)&PTR_s_lite314_01023ea0);
|
|
ppcVar1 = DAT_01023ea4;
|
|
}
|
|
if (iVar2 == 0) {
|
|
(**(code **)*ppcVar1)(7,0);
|
|
}
|
|
}
|
|
}
|
|
LAB_0100f8ee:
|
|
FUN_0101cd9e();
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
|
|
|
|
void FUN_0100f900(int param_1,undefined **param_2)
|
|
|
|
{
|
|
LPSTR _Format;
|
|
int iVar1;
|
|
undefined4 local_54;
|
|
undefined4 uVar2;
|
|
undefined4 uVar3;
|
|
undefined4 uVar4;
|
|
char local_48 [64];
|
|
undefined4 local_8;
|
|
|
|
local_8 = DAT_01024778;
|
|
if (param_1 == 0x3f) {
|
|
if (((((((DAT_01023a9c == (code **)param_2) || (DAT_01023aa4 == (code **)param_2)) ||
|
|
(DAT_01023aac == (code **)param_2)) ||
|
|
(((DAT_01023adc == (code **)param_2 || (DAT_01023ae4 == (code **)param_2)) ||
|
|
((DAT_01023aec == (code **)param_2 ||
|
|
((DAT_01023b20 == (code **)param_2 || (DAT_01023b28 == (code **)param_2)))))))) ||
|
|
((DAT_01023b30 == (code **)param_2 ||
|
|
(((_DAT_01023b48 == param_2 || (_DAT_01023b50 == param_2)) || (_DAT_01023b58 == param_2)))
|
|
))) || (((_DAT_01023b84 == param_2 || (_DAT_01023b8c == param_2)) ||
|
|
(((_DAT_01023b94 == param_2 ||
|
|
((_DAT_01023bc8 == param_2 || (_DAT_01023bd0 == param_2)))) ||
|
|
(_DAT_01023bd8 == param_2)))))) ||
|
|
((((_DAT_01023be0 == param_2 || (_DAT_01023be8 == param_2)) || (_DAT_01023bf0 == param_2)) ||
|
|
(_DAT_01023c3c == param_2)))) {
|
|
iVar1 = *(int *)(DAT_01023888 + 6) + -1;
|
|
*(int *)(DAT_01023888 + 6) = iVar1;
|
|
if (iVar1 == 0) {
|
|
(**(code **)*DAT_01023e64)(0x14,0);
|
|
(**(code **)*DAT_01023e74)(0x14,0);
|
|
(**(code **)*DAT_01023e84)(0x14,0);
|
|
(**(code **)*DAT_01023e9c)(0x14,0);
|
|
(**(code **)*DAT_01023ecc)(0x14,0);
|
|
*(undefined4 *)(DAT_01023bbc + 6) = 1;
|
|
FUN_01011bb5(0x42,(undefined **)0x0);
|
|
local_54 = 0x40800000;
|
|
_Format = FUN_01003752(0x7e);
|
|
FUN_010144b7(_Format,local_54);
|
|
local_54 = FUN_0100c335(750000);
|
|
_Format = FUN_01003752(0x4e);
|
|
sprintf(local_48,_Format,local_54);
|
|
iVar1 = FUN_0100e50b(7);
|
|
if (iVar1 == 0) {
|
|
FUN_010144b7(local_48,0x41000000);
|
|
(**(code **)(*DAT_01023d14 + 0x14))();
|
|
}
|
|
}
|
|
else {
|
|
FUN_01011bb5(0x43,param_2);
|
|
}
|
|
}
|
|
}
|
|
else {
|
|
if (param_1 == 0x42) {
|
|
*(undefined4 *)(DAT_01023888 + 6) = 0xf;
|
|
*(undefined4 *)((int)DAT_01023a9c + 6) = 0;
|
|
(**(code **)*DAT_01023a9c)(0x32,0);
|
|
*(undefined4 *)((int)DAT_01023aa4 + 6) = 0;
|
|
(**(code **)*DAT_01023aa4)(0x32,0);
|
|
*(undefined4 *)((int)DAT_01023aac + 6) = 0;
|
|
(**(code **)*DAT_01023aac)(0x32,0);
|
|
*(undefined4 *)((int)DAT_01023adc + 6) = 0;
|
|
(**(code **)*DAT_01023adc)(0x32,0);
|
|
*(undefined4 *)((int)DAT_01023ae4 + 6) = 0;
|
|
(**(code **)*DAT_01023ae4)(0x32,0);
|
|
*(undefined4 *)((int)DAT_01023aec + 6) = 0;
|
|
(**(code **)*DAT_01023aec)(0x32,0);
|
|
*(undefined4 *)((int)DAT_01023b20 + 6) = 0;
|
|
(**(code **)*DAT_01023b20)(0x32,0);
|
|
*(undefined4 *)((int)DAT_01023b28 + 6) = 0;
|
|
(**(code **)*DAT_01023b28)(0x32,0);
|
|
*(undefined4 *)((int)DAT_01023b30 + 6) = 0;
|
|
(**(code **)*DAT_01023b30)(0x32,0);
|
|
(**(code **)*DAT_01023b78)(0x14,0);
|
|
(**(code **)*DAT_01023bb4)(0x14,0);
|
|
(**(code **)*DAT_01023c28)(0x14,0);
|
|
(**(code **)*DAT_01023c30)(0x14,0);
|
|
(**(code **)*DAT_01023e64)(7,0);
|
|
(**(code **)*DAT_01023e74)(7,0);
|
|
uVar4 = 0;
|
|
uVar3 = 7;
|
|
(**(code **)*DAT_01023e84)();
|
|
uVar2 = 0;
|
|
local_54 = 7;
|
|
(**(code **)*DAT_01023e9c)();
|
|
(**(code **)*DAT_01023ecc)(7,0,local_54,uVar2,uVar3,uVar4);
|
|
}
|
|
else {
|
|
if (param_1 != 0x43) goto LAB_0100fcc6;
|
|
}
|
|
local_54 = *(undefined4 *)(DAT_01023888 + 6);
|
|
_Format = FUN_01003752(0x7d);
|
|
sprintf(local_48,_Format,local_54);
|
|
FUN_010144b7(local_48,0xbf800000);
|
|
}
|
|
LAB_0100fcc6:
|
|
FUN_0101cd9e();
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_0100fcd9(int param_1,int param_2)
|
|
|
|
{
|
|
code **ppcVar1;
|
|
int iVar2;
|
|
LPSTR _Format;
|
|
undefined4 local_50;
|
|
char local_48 [64];
|
|
undefined4 local_8;
|
|
|
|
local_8 = DAT_01024778;
|
|
if (param_1 != 0x3f) {
|
|
if (param_1 == 0x42) {
|
|
(**(code **)*DAT_01023940)(0x14,0);
|
|
(**(code **)*DAT_010239d0)(0x14,0);
|
|
*(undefined4 *)(DAT_01023888 + 6) = 1;
|
|
}
|
|
else {
|
|
if (param_1 != 0x43) goto LAB_0100ff23;
|
|
}
|
|
iVar2 = FUN_0100c092((int)&PTR_s_lite20_0102393c);
|
|
local_50 = 0xbf800000;
|
|
if (iVar2 == 0) {
|
|
_Format = FUN_01003752(0x7f);
|
|
FUN_010144b7(_Format,local_50);
|
|
iVar2 = FUN_0100c092((int)&PTR_s_lite304_01023e50);
|
|
if (iVar2 != 0) {
|
|
(**(code **)*DAT_01023e54)(0x14,0);
|
|
}
|
|
iVar2 = FUN_0100c092((int)&PTR_s_lite303_01023e48);
|
|
ppcVar1 = DAT_01023e4c;
|
|
}
|
|
else {
|
|
_Format = FUN_01003752(0x80);
|
|
FUN_010144b7(_Format,local_50);
|
|
iVar2 = FUN_0100c092((int)&PTR_s_lite303_01023e48);
|
|
if (iVar2 != 0) {
|
|
(**(code **)*DAT_01023e4c)(0x14,0);
|
|
}
|
|
iVar2 = FUN_0100c092((int)&PTR_s_lite304_01023e50);
|
|
ppcVar1 = DAT_01023e54;
|
|
}
|
|
if (iVar2 == 0) {
|
|
(**(code **)*ppcVar1)(7,0);
|
|
}
|
|
goto LAB_0100ff23;
|
|
}
|
|
if (((DAT_01023a9c != param_2) && (DAT_01023aa4 != param_2)) && (DAT_01023aac != param_2)) {
|
|
if ((DAT_01023980 != param_2) || (iVar2 = FUN_0100c092((int)&PTR_s_lite20_0102393c), iVar2 == 0)
|
|
) goto LAB_0100ff23;
|
|
iVar2 = *(int *)(DAT_01023888 + 6) + -1;
|
|
*(int *)(DAT_01023888 + 6) = iVar2;
|
|
if (iVar2 == 0) {
|
|
iVar2 = FUN_0100c092((int)&PTR_s_lite303_01023e48);
|
|
if (iVar2 != 0) {
|
|
(**(code **)*DAT_01023e4c)(0x14,0);
|
|
}
|
|
iVar2 = FUN_0100c092((int)&PTR_s_lite304_01023e50);
|
|
if (iVar2 != 0) {
|
|
(**(code **)*DAT_01023e54)(0x14,0);
|
|
}
|
|
*(undefined4 *)(DAT_01023bbc + 6) = 1;
|
|
FUN_01011bb5(0x42,(undefined **)0x0);
|
|
local_50 = 0x40800000;
|
|
_Format = FUN_01003752(0x81);
|
|
FUN_010144b7(_Format,local_50);
|
|
local_50 = FUN_0100c335(750000);
|
|
_Format = FUN_01003752(0x4e);
|
|
sprintf(local_48,_Format,local_50);
|
|
iVar2 = FUN_0100e50b(7);
|
|
if (iVar2 == 0) {
|
|
FUN_010144b7(local_48,0x41000000);
|
|
(**(code **)(*DAT_01023d14 + 0x14))();
|
|
}
|
|
goto LAB_0100ff23;
|
|
}
|
|
}
|
|
FUN_01011bb5(0x43,(undefined **)param_2);
|
|
LAB_0100ff23:
|
|
FUN_0101cd9e();
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_0100ff35(int param_1,int param_2)
|
|
|
|
{
|
|
code **ppcVar1;
|
|
LPSTR pCVar2;
|
|
undefined4 local_8;
|
|
|
|
if (param_1 == 0xb) {
|
|
if ((DAT_010236e4 == param_2) && (*(int *)(DAT_010236e4 + 0x4e) != 0)) {
|
|
(**(code **)*DAT_01023e6c)(0x14,0);
|
|
*(undefined4 *)(DAT_01023bbc + 6) = 0x14;
|
|
FUN_01011bb5(0x42,(undefined **)0x0);
|
|
}
|
|
}
|
|
else {
|
|
if (param_1 == 0x42) {
|
|
(**(code **)*DAT_01023704)(0xb,0);
|
|
ppcVar1 = DAT_01023a8c;
|
|
(**(code **)*DAT_01023a8c)(0x14,0);
|
|
(**(code **)*ppcVar1)(0x20,0x3e4ccccd);
|
|
(**(code **)*ppcVar1)(0x1a,0x3e4ccccd);
|
|
ppcVar1 = DAT_01023a94;
|
|
(**(code **)*DAT_01023a94)(0x14,0);
|
|
(**(code **)*ppcVar1)(0x20,0x3e4ccccd);
|
|
(**(code **)*ppcVar1)(0x1a,0x3e4ccccd);
|
|
(**(code **)*DAT_01023e6c)(7,0);
|
|
}
|
|
else {
|
|
if (param_1 != 0x43) {
|
|
return;
|
|
}
|
|
}
|
|
local_8 = 0xbf800000;
|
|
pCVar2 = FUN_01003752(0xaf);
|
|
FUN_010144b7(pCVar2,local_8);
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
|
|
|
|
void FUN_01010051(int param_1,int param_2)
|
|
|
|
{
|
|
code **ppcVar1;
|
|
LPSTR _Format;
|
|
int iVar2;
|
|
undefined4 local_50;
|
|
char local_48 [64];
|
|
undefined4 local_8;
|
|
|
|
local_8 = DAT_01024778;
|
|
if (param_1 == 0x3f) {
|
|
if ((((DAT_010236e4 == param_2) || (_DAT_010236ec == param_2)) || (_DAT_010236f4 == param_2)) ||
|
|
(_DAT_010236fc == param_2)) {
|
|
iVar2 = *(int *)(DAT_01023888 + 6) + -1;
|
|
*(int *)(DAT_01023888 + 6) = iVar2;
|
|
if (iVar2 == 0) {
|
|
(**(code **)*DAT_01023e74)(0x14,0);
|
|
(**(code **)*DAT_01023e8c)(0x14,0);
|
|
*(undefined4 *)(DAT_01023bbc + 6) = 1;
|
|
FUN_01011bb5(0x42,(undefined **)0x0);
|
|
local_50 = 0x40800000;
|
|
_Format = FUN_01003752(0x82);
|
|
FUN_010144b7(_Format,local_50);
|
|
local_50 = FUN_0100c335(750000);
|
|
_Format = FUN_01003752(0x4e);
|
|
sprintf(local_48,_Format,local_50);
|
|
iVar2 = FUN_0100e50b(7);
|
|
if (iVar2 == 0) {
|
|
FUN_010144b7(local_48,0x41000000);
|
|
(**(code **)(*DAT_01023d14 + 0x14))();
|
|
}
|
|
}
|
|
else {
|
|
FUN_01011bb5(0x43,(undefined **)param_2);
|
|
}
|
|
}
|
|
}
|
|
else {
|
|
if (param_1 == 0x42) {
|
|
*(undefined4 *)(DAT_01023888 + 6) = 8;
|
|
ppcVar1 = DAT_01023a8c;
|
|
(**(code **)*DAT_01023a8c)(0x22,0);
|
|
(**(code **)*ppcVar1)(0x14,0);
|
|
ppcVar1 = DAT_01023a94;
|
|
(**(code **)*DAT_01023a94)(0x22,0);
|
|
(**(code **)*ppcVar1)(0x14,0);
|
|
(**(code **)*DAT_01023e74)(7,0);
|
|
(**(code **)*DAT_01023e8c)(7,0);
|
|
}
|
|
else {
|
|
if (param_1 != 0x43) goto LAB_0101021b;
|
|
}
|
|
local_50 = *(undefined4 *)(DAT_01023888 + 6);
|
|
_Format = FUN_01003752(0x6b);
|
|
sprintf(local_48,_Format,local_50);
|
|
FUN_010144b7(local_48,0xbf800000);
|
|
}
|
|
LAB_0101021b:
|
|
FUN_0101cd9e();
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
|
|
|
|
void FUN_0101022d(int param_1,int param_2)
|
|
|
|
{
|
|
LPSTR _Format;
|
|
int iVar1;
|
|
undefined4 local_4c;
|
|
char local_48 [64];
|
|
undefined4 local_8;
|
|
|
|
local_8 = DAT_01024778;
|
|
if (param_1 == 0x3f) {
|
|
if (_DAT_010236fc == param_2) {
|
|
iVar1 = *(int *)(DAT_01023888 + 6) + -1;
|
|
*(int *)(DAT_01023888 + 6) = iVar1;
|
|
if (iVar1 == 0) {
|
|
(**(code **)*DAT_01023e74)(0x14,0);
|
|
*(undefined4 *)(DAT_01023bbc + 6) = 1;
|
|
FUN_01011bb5(0x42,(undefined **)0x0);
|
|
local_4c = 0x40800000;
|
|
_Format = FUN_01003752(0x85);
|
|
FUN_010144b7(_Format,local_4c);
|
|
local_4c = FUN_0100c335(0x1312d0);
|
|
_Format = FUN_01003752(0x4e);
|
|
sprintf(local_48,_Format,local_4c);
|
|
iVar1 = FUN_0100e50b(9);
|
|
if (iVar1 == 0) {
|
|
FUN_010144b7(local_48,0x41000000);
|
|
(**(code **)(*DAT_01023d14 + 0x14))();
|
|
}
|
|
}
|
|
else {
|
|
FUN_01011bb5(0x43,(undefined **)param_2);
|
|
}
|
|
}
|
|
}
|
|
else {
|
|
if (param_1 == 0x42) {
|
|
*(undefined4 *)(DAT_01023888 + 6) = 3;
|
|
(**(code **)*DAT_01023e74)(7,0);
|
|
}
|
|
else {
|
|
if (param_1 != 0x43) goto LAB_01010374;
|
|
}
|
|
local_4c = *(undefined4 *)(DAT_01023888 + 6);
|
|
_Format = FUN_01003752(0x84);
|
|
sprintf(local_48,_Format,local_4c);
|
|
FUN_010144b7(local_48,0xbf800000);
|
|
}
|
|
LAB_01010374:
|
|
FUN_0101cd9e();
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
|
|
|
|
void FUN_01010385(int param_1,int param_2)
|
|
|
|
{
|
|
LPSTR _Format;
|
|
int iVar1;
|
|
undefined4 local_50;
|
|
char local_48 [64];
|
|
undefined4 local_8;
|
|
|
|
local_8 = DAT_01024778;
|
|
if (param_1 == 0x3f) {
|
|
if ((((((_DAT_0102372c == param_2) || (_DAT_01023734 == param_2)) || (_DAT_0102373c == param_2))
|
|
|| ((_DAT_01023798 == param_2 || (_DAT_010237a0 == param_2)))) ||
|
|
((_DAT_010237a8 == param_2 || ((_DAT_0102389c == param_2 || (_DAT_010238a4 == param_2))))))
|
|
|| ((_DAT_010238c0 == param_2 || ((_DAT_010238c8 == param_2 || (_DAT_010238e8 == param_2)))))
|
|
) {
|
|
iVar1 = *(int *)(DAT_01023888 + 6) + -1;
|
|
*(int *)(DAT_01023888 + 6) = iVar1;
|
|
if (iVar1 == 0) {
|
|
(**(code **)*DAT_01023e3c)(0x14,0);
|
|
(**(code **)*DAT_01023e44)(0x14,0);
|
|
(**(code **)*DAT_01023e6c)(0x14,0);
|
|
(**(code **)*DAT_01023eb4)(0x14,0);
|
|
(**(code **)*DAT_01023ed4)(0x14,0);
|
|
(**(code **)*DAT_01023edc)(0x14,0);
|
|
*(undefined4 *)(DAT_01023bbc + 6) = 1;
|
|
FUN_01011bb5(0x42,(undefined **)0x0);
|
|
local_50 = 0x40800000;
|
|
_Format = FUN_01003752(0x88);
|
|
FUN_010144b7(_Format,local_50);
|
|
local_50 = FUN_0100c335(0x1312d0);
|
|
_Format = FUN_01003752(0x4e);
|
|
sprintf(local_48,_Format,local_50);
|
|
iVar1 = FUN_0100e50b(9);
|
|
if (iVar1 == 0) {
|
|
FUN_010144b7(local_48,0x41000000);
|
|
(**(code **)(*DAT_01023d14 + 0x14))();
|
|
}
|
|
}
|
|
else {
|
|
FUN_01011bb5(0x43,(undefined **)0x0);
|
|
}
|
|
}
|
|
}
|
|
else {
|
|
if (param_1 == 0x42) {
|
|
*(undefined4 *)(DAT_01023888 + 6) = 0xf;
|
|
(**(code **)*DAT_01023e3c)(7,0);
|
|
(**(code **)*DAT_01023e44)(7,0);
|
|
(**(code **)*DAT_01023e6c)(7,0);
|
|
(**(code **)*DAT_01023eb4)(7,0);
|
|
(**(code **)*DAT_01023ed4)(7,0);
|
|
(**(code **)*DAT_01023edc)(7,0);
|
|
}
|
|
else {
|
|
if (param_1 != 0x43) goto LAB_010105d1;
|
|
}
|
|
local_50 = *(undefined4 *)(DAT_01023888 + 6);
|
|
_Format = FUN_01003752(0x86);
|
|
sprintf(local_48,_Format,local_50);
|
|
FUN_010144b7(local_48,0xbf800000);
|
|
}
|
|
LAB_010105d1:
|
|
FUN_0101cd9e();
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
|
|
|
|
void FUN_010105e3(int param_1,int param_2)
|
|
|
|
{
|
|
LPSTR _Format;
|
|
int iVar1;
|
|
undefined4 local_4c;
|
|
char local_48 [64];
|
|
undefined4 local_8;
|
|
|
|
local_8 = DAT_01024778;
|
|
if (param_1 == 0x3f) {
|
|
if ((_DAT_0102389c == param_2) || (_DAT_010238a4 == param_2)) {
|
|
iVar1 = *(int *)(DAT_01023888 + 6) + -1;
|
|
*(int *)(DAT_01023888 + 6) = iVar1;
|
|
if (iVar1 == 0) {
|
|
(**(code **)*DAT_01023e3c)(0x14,0);
|
|
(**(code **)*DAT_01023ed4)(0x14,0);
|
|
*(undefined4 *)(DAT_01023bbc + 6) = 1;
|
|
FUN_01011bb5(0x42,(undefined **)0x0);
|
|
local_4c = 0x40800000;
|
|
_Format = FUN_01003752(0x8a);
|
|
FUN_010144b7(_Format,local_4c);
|
|
local_4c = FUN_0100c335(0x1312d0);
|
|
_Format = FUN_01003752(0x4e);
|
|
sprintf(local_48,_Format,local_4c);
|
|
iVar1 = FUN_0100e50b(9);
|
|
if (iVar1 == 0) {
|
|
FUN_010144b7(local_48,0x41000000);
|
|
(**(code **)(*DAT_01023d14 + 0x14))();
|
|
}
|
|
}
|
|
else {
|
|
FUN_01011bb5(0x43,(undefined **)param_2);
|
|
}
|
|
}
|
|
}
|
|
else {
|
|
if (param_1 == 0x42) {
|
|
*(undefined4 *)(DAT_01023888 + 6) = 3;
|
|
(**(code **)*DAT_01023e3c)(7,0);
|
|
(**(code **)*DAT_01023ed4)(7,0);
|
|
}
|
|
else {
|
|
if (param_1 != 0x43) goto LAB_01010756;
|
|
}
|
|
local_4c = *(undefined4 *)(DAT_01023888 + 6);
|
|
_Format = FUN_01003752(0x89);
|
|
sprintf(local_48,_Format,local_4c);
|
|
FUN_010144b7(local_48,0xbf800000);
|
|
}
|
|
LAB_01010756:
|
|
FUN_0101cd9e();
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
|
|
|
|
void FUN_01010767(int param_1,int param_2)
|
|
|
|
{
|
|
LPSTR _Format;
|
|
int iVar1;
|
|
undefined4 local_4c;
|
|
char local_48 [64];
|
|
undefined4 local_8;
|
|
|
|
local_8 = DAT_01024778;
|
|
if (param_1 == 0x3f) {
|
|
if ((_DAT_01023930 == param_2) || (_DAT_010239c8 == param_2)) {
|
|
iVar1 = *(int *)(DAT_01023888 + 6) + -1;
|
|
*(int *)(DAT_01023888 + 6) = iVar1;
|
|
if (iVar1 == 0) {
|
|
(**(code **)*DAT_01023e5c)(0x14,0);
|
|
(**(code **)*DAT_01023e94)(0x14,0);
|
|
*(undefined4 *)(DAT_01023bbc + 6) = 0x15;
|
|
FUN_01011bb5(0x42,(undefined **)0x0);
|
|
(**(code **)*DAT_01023940)(0x14,0);
|
|
(**(code **)*DAT_010239d0)(0x14,0);
|
|
}
|
|
else {
|
|
FUN_01011bb5(0x43,(undefined **)param_2);
|
|
}
|
|
}
|
|
}
|
|
else {
|
|
if (param_1 == 0x42) {
|
|
*(undefined4 *)(DAT_01023888 + 6) = 0x4b;
|
|
(**(code **)*DAT_01023940)(0x13,0);
|
|
(**(code **)*DAT_010239d0)(0x13,0);
|
|
(**(code **)*DAT_01023e5c)(7,0);
|
|
(**(code **)*DAT_01023e94)(7,0);
|
|
}
|
|
else {
|
|
if (param_1 != 0x43) goto LAB_010108ab;
|
|
}
|
|
local_4c = *(undefined4 *)(DAT_01023888 + 6);
|
|
_Format = FUN_01003752(0x8b);
|
|
sprintf(local_48,_Format,local_4c);
|
|
FUN_010144b7(local_48,0xbf800000);
|
|
}
|
|
LAB_010108ab:
|
|
FUN_0101cd9e();
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_010108bc(int param_1,int param_2)
|
|
|
|
{
|
|
LPSTR _Format;
|
|
int iVar1;
|
|
undefined4 local_4c;
|
|
char local_48 [64];
|
|
undefined4 local_8;
|
|
|
|
local_8 = DAT_01024778;
|
|
if (param_1 == 0x3f) {
|
|
if (DAT_01023c50 == param_2) {
|
|
(**(code **)*DAT_01023e84)(0x14,0);
|
|
*(undefined4 *)(DAT_01023bbc + 6) = 1;
|
|
FUN_01011bb5(0x42,(undefined **)0x0);
|
|
local_4c = 0x40800000;
|
|
_Format = FUN_01003752(0x8d);
|
|
FUN_010144b7(_Format,local_4c);
|
|
local_4c = FUN_0100c335(0x1ab3f0);
|
|
_Format = FUN_01003752(0x4e);
|
|
sprintf(local_48,_Format,local_4c);
|
|
iVar1 = FUN_0100e50b(0xb);
|
|
if (iVar1 == 0) {
|
|
FUN_010144b7(local_48,0x41000000);
|
|
(**(code **)(*DAT_01023d14 + 0x14))();
|
|
}
|
|
}
|
|
}
|
|
else {
|
|
if (param_1 == 0x42) {
|
|
(**(code **)*DAT_01023e84)(7,0);
|
|
}
|
|
else {
|
|
if (param_1 != 0x43) goto LAB_010109c4;
|
|
}
|
|
local_4c = 0xbf800000;
|
|
_Format = FUN_01003752(0x8c);
|
|
FUN_010144b7(_Format,local_4c);
|
|
}
|
|
LAB_010109c4:
|
|
FUN_0101cd9e();
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_010109d5(int param_1,int param_2)
|
|
|
|
{
|
|
LPSTR pCVar1;
|
|
undefined4 local_8;
|
|
|
|
if (param_1 == 0x3f) {
|
|
if (DAT_010239fc == param_2) {
|
|
*(undefined4 *)(DAT_01023bbc + 6) = 0x16;
|
|
FUN_01011bb5(0x42,(undefined **)0x0);
|
|
}
|
|
}
|
|
else {
|
|
if (param_1 == 0x42) {
|
|
(**(code **)*DAT_01023a1c)(0x14,0);
|
|
(**(code **)*DAT_01023a3c)(0x14,0);
|
|
(**(code **)*DAT_01023a3c)(0x17,0);
|
|
(**(code **)*DAT_01023c44)(0x14,0);
|
|
(**(code **)*DAT_01023a14)(0x13,0);
|
|
(**(code **)*DAT_01023a34)(0xb,0);
|
|
(**(code **)*DAT_01023a34)(0x13,0);
|
|
(**(code **)*DAT_01023a34)(7,0);
|
|
}
|
|
else {
|
|
if (param_1 != 0x43) {
|
|
return;
|
|
}
|
|
}
|
|
local_8 = 0xbf800000;
|
|
pCVar1 = FUN_01003752(0x8e);
|
|
FUN_010144b7(pCVar1,local_8);
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_01010ad3(int param_1,int param_2)
|
|
|
|
{
|
|
LPSTR pCVar1;
|
|
undefined4 local_8;
|
|
|
|
if (param_1 == 0x3f) {
|
|
if (DAT_010239ec == param_2) {
|
|
*(undefined4 *)(DAT_01023bbc + 6) = 0x17;
|
|
FUN_01011bb5(0x42,(undefined **)0x0);
|
|
}
|
|
}
|
|
else {
|
|
if (param_1 == 0x42) {
|
|
(**(code **)*DAT_01023a04)(0x13,0);
|
|
(**(code **)*DAT_01023a24)(0xb,0x40000000);
|
|
(**(code **)*DAT_01023a24)(0x13,0);
|
|
(**(code **)*DAT_01023a24)(7,0);
|
|
}
|
|
else {
|
|
if (param_1 != 0x43) {
|
|
return;
|
|
}
|
|
}
|
|
local_8 = 0xbf800000;
|
|
pCVar1 = FUN_01003752(0x8f);
|
|
FUN_010144b7(pCVar1,local_8);
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_01010b85(int param_1,int param_2)
|
|
|
|
{
|
|
LPSTR _Format;
|
|
int iVar1;
|
|
undefined4 local_4c;
|
|
char local_48 [64];
|
|
undefined4 local_8;
|
|
|
|
local_8 = DAT_01024778;
|
|
if (param_1 == 0x3f) {
|
|
if (DAT_010239f4 == param_2) {
|
|
*(undefined4 *)(DAT_01023bbc + 6) = 1;
|
|
FUN_01011bb5(0x42,(undefined **)0x0);
|
|
local_4c = 0x40800000;
|
|
_Format = FUN_01003752(0x91);
|
|
FUN_010144b7(_Format,local_4c);
|
|
local_4c = FUN_0100c335(1500000);
|
|
_Format = FUN_01003752(0x4e);
|
|
sprintf(local_48,_Format,local_4c);
|
|
iVar1 = FUN_0100e50b(10);
|
|
if (iVar1 == 0) {
|
|
FUN_010144b7(local_48,0x41000000);
|
|
(**(code **)(*DAT_01023d14 + 0x14))();
|
|
}
|
|
}
|
|
}
|
|
else {
|
|
if (param_1 == 0x42) {
|
|
(**(code **)*DAT_01023a0c)(0x13,0);
|
|
(**(code **)*DAT_01023a2c)(0xb,0x3f800000);
|
|
(**(code **)*DAT_01023a2c)(0x13,0);
|
|
(**(code **)*DAT_01023a2c)(7,0);
|
|
}
|
|
else {
|
|
if (param_1 != 0x43) goto LAB_01010cb1;
|
|
}
|
|
local_4c = 0xbf800000;
|
|
_Format = FUN_01003752(0x90);
|
|
FUN_010144b7(_Format,local_4c);
|
|
}
|
|
LAB_01010cb1:
|
|
FUN_0101cd9e();
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
|
|
|
|
void FUN_01010cc2(int param_1,int param_2)
|
|
|
|
{
|
|
LPSTR _Format;
|
|
int iVar1;
|
|
undefined4 local_4c;
|
|
char local_48 [64];
|
|
undefined4 local_8;
|
|
|
|
local_8 = DAT_01024778;
|
|
if (param_1 == 0x3f) {
|
|
if ((((_DAT_010237c4 == param_2) || (_DAT_010237cc == param_2)) || (_DAT_010237e8 == param_2))
|
|
|| (_DAT_010237f0 == param_2)) {
|
|
iVar1 = *(int *)(DAT_01023888 + 6) + -1;
|
|
*(int *)(DAT_01023888 + 6) = iVar1;
|
|
if (iVar1 == 0) {
|
|
(**(code **)*DAT_01023e34)(0x14,0);
|
|
(**(code **)*DAT_01023ee4)(0x14,0);
|
|
param_2 = 0;
|
|
*(undefined4 *)(DAT_01023bbc + 6) = 0x18;
|
|
iVar1 = 0x42;
|
|
}
|
|
else {
|
|
iVar1 = 0x43;
|
|
}
|
|
FUN_01011bb5(iVar1,(undefined **)param_2);
|
|
}
|
|
}
|
|
else {
|
|
if (param_1 == 0x42) {
|
|
*(undefined4 *)(DAT_01023888 + 6) = 0x19;
|
|
(**(code **)*DAT_01023e34)(7,0);
|
|
(**(code **)*DAT_01023ee4)(7,0);
|
|
}
|
|
else {
|
|
if (param_1 != 0x43) goto LAB_01010dc2;
|
|
}
|
|
local_4c = *(undefined4 *)(DAT_01023888 + 6);
|
|
_Format = FUN_01003752(0x92);
|
|
sprintf(local_48,_Format,local_4c);
|
|
FUN_010144b7(local_48,0xbf800000);
|
|
}
|
|
LAB_01010dc2:
|
|
FUN_0101cd9e();
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_01010dd3(int param_1,int param_2)
|
|
|
|
{
|
|
LPSTR pCVar1;
|
|
int iVar2;
|
|
LPSTR _Format;
|
|
undefined4 local_50;
|
|
char local_48 [64];
|
|
undefined4 local_8;
|
|
|
|
local_8 = DAT_01024778;
|
|
if (param_1 == 0x3f) {
|
|
if (DAT_01023980 == param_2) {
|
|
local_50 = 0x40800000;
|
|
pCVar1 = FUN_01003752(0x2f);
|
|
FUN_010144b7(pCVar1,local_50);
|
|
iVar2 = (**(code **)*DAT_01023cf4)(0x25,0);
|
|
if (1 < iVar2) {
|
|
(**(code **)*DAT_01023cf4)(0x21,0x40a00000);
|
|
iVar2 = (**(code **)*DAT_01023cf4)(0x25,0);
|
|
pCVar1 = FUN_01003752(*(short *)(&DAT_010246ec + (iVar2 + -1) * 4));
|
|
_Format = FUN_01003752(0xae);
|
|
sprintf(local_48,_Format,pCVar1);
|
|
FUN_010144b7(local_48,0x41000000);
|
|
}
|
|
}
|
|
else {
|
|
if (DAT_01023870 != param_2) goto LAB_0101105d;
|
|
local_50 = 0x40800000;
|
|
pCVar1 = FUN_01003752(0x2e);
|
|
FUN_010144b7(pCVar1,local_50);
|
|
iVar2 = (**(code **)*DAT_01023cf4)(0x25,0);
|
|
if (iVar2 < 9) {
|
|
iVar2 = (**(code **)*DAT_01023cf4)(0x25,0);
|
|
(**(code **)*DAT_01023cf4)(0x29,0x40a00000);
|
|
pCVar1 = FUN_01003752(*(short *)(&DAT_010246ec + iVar2 * 4));
|
|
_Format = FUN_01003752(0xad);
|
|
sprintf(local_48,_Format,pCVar1);
|
|
}
|
|
iVar2 = FUN_0100e50b(0xc);
|
|
if (iVar2 == 0) {
|
|
FUN_010144b7(local_48,0x41000000);
|
|
(**(code **)(*DAT_01023d1c + 0x14))();
|
|
}
|
|
}
|
|
FUN_0100c335(2000000);
|
|
(**(code **)*DAT_01023880)(0x14,0);
|
|
(**(code **)*DAT_010239b8)(0x14,0);
|
|
(**(code **)*DAT_01023e54)(0x14,0);
|
|
(**(code **)*DAT_01023ebc)(0x14,0);
|
|
*(undefined4 *)(DAT_01023bbc + 6) = 1;
|
|
FUN_01011bb5(0x42,(undefined **)0x0);
|
|
}
|
|
else {
|
|
if (param_1 == 0x42) {
|
|
(**(code **)*DAT_01023880)(7,0xbf800000);
|
|
(**(code **)*DAT_010239b8)(7,0xbf800000);
|
|
(**(code **)*DAT_01023e54)(7,0);
|
|
(**(code **)*DAT_01023ebc)(7,0);
|
|
}
|
|
else {
|
|
if (param_1 != 0x43) goto LAB_0101105d;
|
|
}
|
|
local_50 = 0xbf800000;
|
|
pCVar1 = FUN_01003752(0x93);
|
|
FUN_010144b7(pCVar1,local_50);
|
|
}
|
|
LAB_0101105d:
|
|
FUN_0101cd9e();
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_0101106f(int param_1,int param_2)
|
|
|
|
{
|
|
LPSTR _Format;
|
|
int iVar1;
|
|
undefined4 local_4c;
|
|
char local_48 [64];
|
|
undefined4 local_8;
|
|
|
|
local_8 = DAT_01024778;
|
|
if (param_1 == 0x3f) {
|
|
if ((((((DAT_01023a9c == param_2) || (DAT_01023aa4 == param_2)) || (DAT_01023aac == param_2)) ||
|
|
((DAT_01023adc == param_2 || (DAT_01023ae4 == param_2)))) ||
|
|
((DAT_01023aec == param_2 || ((DAT_01023b20 == param_2 || (DAT_01023b28 == param_2)))))) ||
|
|
(DAT_01023b30 == param_2)) {
|
|
iVar1 = *(int *)(DAT_01023888 + 6) + -1;
|
|
*(int *)(DAT_01023888 + 6) = iVar1;
|
|
if (iVar1 == 0) {
|
|
(**(code **)*DAT_01023e4c)(0x14,0);
|
|
(**(code **)*DAT_01023e7c)(0x14,0);
|
|
(**(code **)*DAT_01023eac)(0x14,0);
|
|
param_2 = 0;
|
|
*(undefined4 *)(DAT_01023bbc + 6) = 0x19;
|
|
iVar1 = 0x42;
|
|
}
|
|
else {
|
|
iVar1 = 0x43;
|
|
}
|
|
FUN_01011bb5(iVar1,(undefined **)param_2);
|
|
}
|
|
}
|
|
else {
|
|
if (param_1 == 0x42) {
|
|
*(undefined4 *)(DAT_01023888 + 6) = 3;
|
|
(**(code **)*DAT_01023e4c)(7,0);
|
|
(**(code **)*DAT_01023e7c)(7,0);
|
|
(**(code **)*DAT_01023eac)(7,0);
|
|
}
|
|
else {
|
|
if (param_1 != 0x43) goto LAB_010111c2;
|
|
}
|
|
local_4c = *(undefined4 *)(DAT_01023888 + 6);
|
|
_Format = FUN_01003752(0x94);
|
|
sprintf(local_48,_Format,local_4c);
|
|
FUN_010144b7(local_48,0xbf800000);
|
|
}
|
|
LAB_010111c2:
|
|
FUN_0101cd9e();
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
|
|
|
|
void FUN_010111d3(int param_1,int param_2)
|
|
|
|
{
|
|
LPSTR _Format;
|
|
int iVar1;
|
|
undefined4 local_50;
|
|
char local_48 [64];
|
|
undefined4 local_8;
|
|
|
|
local_8 = DAT_01024778;
|
|
if (param_1 == 0x3f) {
|
|
if (((((_DAT_01023b48 == param_2) || (_DAT_01023b50 == param_2)) || (_DAT_01023b58 == param_2))
|
|
|| (((_DAT_01023b84 == param_2 || (_DAT_01023b8c == param_2)) ||
|
|
((_DAT_01023b94 == param_2 || ((_DAT_01023bc8 == param_2 || (_DAT_01023bd0 == param_2)))
|
|
))))) ||
|
|
((_DAT_01023bd8 == param_2 ||
|
|
((((_DAT_01023be0 == param_2 || (_DAT_01023be8 == param_2)) || (_DAT_01023bf0 == param_2))
|
|
|| (_DAT_01023c3c == param_2)))))) {
|
|
iVar1 = *(int *)(DAT_01023888 + 6) + -1;
|
|
*(int *)(DAT_01023888 + 6) = iVar1;
|
|
if (iVar1 == 0) {
|
|
(**(code **)*DAT_01023e64)(0x14,0);
|
|
(**(code **)*DAT_01023e74)(0x14,0);
|
|
(**(code **)*DAT_01023e84)(0x14,0);
|
|
(**(code **)*DAT_01023e9c)(0x14,0);
|
|
(**(code **)*DAT_01023ecc)(0x14,0);
|
|
param_2 = 0;
|
|
*(undefined4 *)(DAT_01023bbc + 6) = 0x1a;
|
|
iVar1 = 0x42;
|
|
}
|
|
else {
|
|
iVar1 = 0x43;
|
|
}
|
|
FUN_01011bb5(iVar1,(undefined **)param_2);
|
|
}
|
|
}
|
|
else {
|
|
if (param_1 == 0x42) {
|
|
*(undefined4 *)(DAT_01023888 + 6) = 3;
|
|
(**(code **)*DAT_01023e64)(7,0);
|
|
(**(code **)*DAT_01023e74)(7,0);
|
|
(**(code **)*DAT_01023e84)(7,0);
|
|
(**(code **)*DAT_01023e9c)(7,0);
|
|
(**(code **)*DAT_01023ecc)(7,0);
|
|
}
|
|
else {
|
|
if (param_1 != 0x43) goto LAB_0101138f;
|
|
}
|
|
local_50 = *(undefined4 *)(DAT_01023888 + 6);
|
|
_Format = FUN_01003752(0x95);
|
|
sprintf(local_48,_Format,local_50);
|
|
FUN_010144b7(local_48,0xbf800000);
|
|
}
|
|
LAB_0101138f:
|
|
FUN_0101cd9e();
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
|
|
|
|
void FUN_010113a1(int param_1,int param_2)
|
|
|
|
{
|
|
LPSTR _Format;
|
|
int iVar1;
|
|
undefined4 local_50;
|
|
char local_48 [64];
|
|
undefined4 local_8;
|
|
|
|
local_8 = DAT_01024778;
|
|
if (param_1 == 0x3f) {
|
|
if ((((((_DAT_0102372c == param_2) || (_DAT_01023734 == param_2)) || (_DAT_0102373c == param_2))
|
|
|| ((_DAT_01023798 == param_2 || (_DAT_010237a0 == param_2)))) ||
|
|
((_DAT_010237a8 == param_2 || ((_DAT_0102389c == param_2 || (_DAT_010238a4 == param_2))))))
|
|
|| ((_DAT_010238c0 == param_2 || ((_DAT_010238c8 == param_2 || (_DAT_010238e8 == param_2)))))
|
|
) {
|
|
iVar1 = *(int *)(DAT_01023888 + 6) + -1;
|
|
*(int *)(DAT_01023888 + 6) = iVar1;
|
|
if (iVar1 == 0) {
|
|
(**(code **)*DAT_01023e3c)(0x14,0);
|
|
(**(code **)*DAT_01023e44)(0x14,0);
|
|
(**(code **)*DAT_01023e6c)(0x14,0);
|
|
(**(code **)*DAT_01023eb4)(0x14,0);
|
|
(**(code **)*DAT_01023ed4)(0x14,0);
|
|
(**(code **)*DAT_01023edc)(0x14,0);
|
|
param_2 = 0;
|
|
*(undefined4 *)(DAT_01023bbc + 6) = 0x1b;
|
|
iVar1 = 0x42;
|
|
}
|
|
else {
|
|
iVar1 = 0x43;
|
|
}
|
|
FUN_01011bb5(iVar1,(undefined **)param_2);
|
|
}
|
|
}
|
|
else {
|
|
if (param_1 == 0x42) {
|
|
*(undefined4 *)(DAT_01023888 + 6) = 5;
|
|
(**(code **)*DAT_01023e3c)(7,0);
|
|
(**(code **)*DAT_01023e44)(7,0);
|
|
(**(code **)*DAT_01023e6c)(7,0);
|
|
(**(code **)*DAT_01023eb4)(7,0);
|
|
(**(code **)*DAT_01023ed4)(7,0);
|
|
(**(code **)*DAT_01023edc)(7,0);
|
|
}
|
|
else {
|
|
if (param_1 != 0x43) goto LAB_01011570;
|
|
}
|
|
local_50 = *(undefined4 *)(DAT_01023888 + 6);
|
|
_Format = FUN_01003752(0x96);
|
|
sprintf(local_48,_Format,local_50);
|
|
FUN_010144b7(local_48,0xbf800000);
|
|
}
|
|
LAB_01011570:
|
|
FUN_0101cd9e();
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_01011582(int param_1,int param_2)
|
|
|
|
{
|
|
LPSTR pCVar1;
|
|
undefined4 local_8;
|
|
|
|
if (param_1 == 0x3f) {
|
|
if (DAT_01023924 == param_2) {
|
|
(**(code **)*DAT_01023ec4)(0x14,0);
|
|
*(undefined4 *)(DAT_01023bbc + 6) = 0x1c;
|
|
FUN_01011bb5(0x42,(undefined **)0x0);
|
|
}
|
|
}
|
|
else {
|
|
if (param_1 == 0x42) {
|
|
*(undefined4 *)(DAT_01023888 + 6) = 0;
|
|
(**(code **)*DAT_01023ec4)(7,0);
|
|
}
|
|
else {
|
|
if (param_1 != 0x43) {
|
|
return;
|
|
}
|
|
}
|
|
local_8 = 0xbf800000;
|
|
pCVar1 = FUN_01003752(0x97);
|
|
FUN_010144b7(pCVar1,local_8);
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_01011612(int param_1,int param_2)
|
|
|
|
{
|
|
LPSTR pCVar1;
|
|
undefined4 local_8;
|
|
|
|
if (param_1 == 0x3f) {
|
|
if (DAT_01023870 == param_2) {
|
|
(**(code **)*DAT_01023ebc)(0x14,0);
|
|
*(undefined4 *)(DAT_01023bbc + 6) = 0x1d;
|
|
FUN_01011bb5(0x42,(undefined **)0x0);
|
|
}
|
|
}
|
|
else {
|
|
if (param_1 == 0x42) {
|
|
(**(code **)*DAT_01023ebc)(7,0);
|
|
}
|
|
else {
|
|
if (param_1 != 0x43) {
|
|
return;
|
|
}
|
|
}
|
|
local_8 = 0xbf800000;
|
|
pCVar1 = FUN_01003752(0x98);
|
|
FUN_010144b7(pCVar1,local_8);
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
|
|
|
|
void FUN_01011699(int param_1,int param_2)
|
|
|
|
{
|
|
LPSTR pCVar1;
|
|
undefined4 local_8;
|
|
|
|
if (param_1 == 0x3f) {
|
|
if ((_DAT_01023930 == param_2) || (_DAT_010239c8 == param_2)) {
|
|
(**(code **)*DAT_01023e5c)(0x14,0);
|
|
(**(code **)*DAT_01023e94)(0x14,0);
|
|
*(undefined4 *)(DAT_01023bbc + 6) = 0x1e;
|
|
FUN_01011bb5(0x42,(undefined **)0x0);
|
|
(**(code **)*DAT_01023940)(0x14,0);
|
|
(**(code **)*DAT_010239d0)(0x14,0);
|
|
}
|
|
}
|
|
else {
|
|
if (param_1 == 0x42) {
|
|
(**(code **)*DAT_01023940)(0x13,0);
|
|
(**(code **)*DAT_010239d0)(0x13,0);
|
|
(**(code **)*DAT_01023e5c)(7,0);
|
|
(**(code **)*DAT_01023e94)(7,0);
|
|
}
|
|
else {
|
|
if (param_1 != 0x43) {
|
|
return;
|
|
}
|
|
}
|
|
local_8 = 0xbf800000;
|
|
pCVar1 = FUN_01003752(0x99);
|
|
FUN_010144b7(pCVar1,local_8);
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_01011798(int param_1,undefined **param_2)
|
|
|
|
{
|
|
LPSTR pCVar1;
|
|
undefined4 local_8;
|
|
|
|
if (param_1 == 0x3f) {
|
|
if (((DAT_010239ec == (code **)param_2) || (DAT_010239f4 == (code **)param_2)) ||
|
|
(DAT_010239fc == (code **)param_2)) {
|
|
*(undefined4 *)(DAT_01023bbc + 6) = 0x1f;
|
|
FUN_01011bb5(0x42,(undefined **)0x0);
|
|
}
|
|
}
|
|
else {
|
|
if (param_1 == 0x42) {
|
|
FUN_0100c397(1);
|
|
(**(code **)*DAT_010239ec)(7,0);
|
|
(**(code **)*DAT_010239f4)(7,0);
|
|
(**(code **)*DAT_010239fc)(7,0);
|
|
}
|
|
else {
|
|
if (param_1 != 0x43) {
|
|
return;
|
|
}
|
|
}
|
|
local_8 = 0xbf800000;
|
|
pCVar1 = FUN_01003752(0x9a);
|
|
FUN_010144b7(pCVar1,local_8);
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_0101184c(int param_1,int param_2)
|
|
|
|
{
|
|
LPSTR _Format;
|
|
int iVar1;
|
|
undefined4 local_4c;
|
|
char local_48 [64];
|
|
undefined4 local_8;
|
|
|
|
local_8 = DAT_01024778;
|
|
if (param_1 == 0x3f) {
|
|
if (DAT_01023980 == param_2) {
|
|
(**(code **)*DAT_01023e54)(0x14,0);
|
|
(**(code **)*DAT_010239c0)(0x14,0);
|
|
*(undefined4 *)(DAT_01023bbc + 6) = 1;
|
|
FUN_01011bb5(0x42,(undefined **)0x0);
|
|
local_4c = FUN_0100c335(5000000);
|
|
_Format = FUN_01003752(0x4e);
|
|
sprintf(local_48,_Format,local_4c);
|
|
local_4c = 0x40800000;
|
|
_Format = FUN_01003752(0x30);
|
|
FUN_010144b7(_Format,local_4c);
|
|
iVar1 = FUN_0100e50b(0x12);
|
|
if (iVar1 == 0) {
|
|
FUN_010144b7(local_48,0x41000000);
|
|
(**(code **)(*DAT_01023d14 + 0x14))();
|
|
}
|
|
}
|
|
}
|
|
else {
|
|
if (param_1 == 0x42) {
|
|
(**(code **)*DAT_010239c0)(0x13,0);
|
|
(**(code **)*DAT_01023e54)(7,0);
|
|
}
|
|
else {
|
|
if (param_1 != 0x43) goto LAB_01011974;
|
|
}
|
|
local_4c = 0xbf800000;
|
|
_Format = FUN_01003752(0x9b);
|
|
FUN_010144b7(_Format,local_4c);
|
|
}
|
|
LAB_01011974:
|
|
FUN_0101cd9e();
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_01011985(int param_1)
|
|
|
|
{
|
|
LPSTR _Format;
|
|
uint uVar1;
|
|
uint uVar2;
|
|
short sVar3;
|
|
int local_98;
|
|
undefined4 uVar4;
|
|
char local_88 [128];
|
|
undefined4 local_8;
|
|
|
|
local_8 = DAT_01024778;
|
|
if (param_1 == 0x42) {
|
|
(**(code **)*DAT_01023eec)(0x14,0);
|
|
FUN_0101461a(2);
|
|
(**(code **)*DAT_01023a74)(0x3fe,0);
|
|
(**(code **)*DAT_01023a7c)(0x3fe,0);
|
|
*(undefined4 *)(DAT_01023e24 + 6) = 0;
|
|
goto LAB_01011b84;
|
|
}
|
|
if (param_1 != 0x43) goto LAB_01011b84;
|
|
uVar2 = *(uint *)(DAT_01023e24 + 6);
|
|
if ((uVar2 & 0x100) == 0) {
|
|
if ((uVar2 & 0x200) != 0) goto LAB_01011a78;
|
|
LAB_01011b15:
|
|
uVar4 = 0x41200000;
|
|
*(undefined4 *)(DAT_01023e24 + 6) = 0x100;
|
|
_Format = FUN_01003752(0xac);
|
|
FUN_010144b7(_Format,uVar4);
|
|
}
|
|
else {
|
|
uVar1 = uVar2 & 0xf;
|
|
local_98 = **(int **)(uVar1 * 0x1c + 0x66 + DAT_01025040);
|
|
uVar2 = uVar1 + 1;
|
|
if (local_98 < 0) {
|
|
LAB_010119ec:
|
|
*(undefined4 *)(DAT_01023e24 + 6) = 0x200;
|
|
LAB_01011a78:
|
|
uVar2 = uVar2 & 0xf;
|
|
local_98 = *(int *)(&DAT_01025598 + uVar2 * 0x24);
|
|
if (local_98 < 1) goto LAB_01011b15;
|
|
if (uVar2 == 0) {
|
|
sVar3 = 0xb8;
|
|
}
|
|
else {
|
|
if (uVar2 == 1) {
|
|
sVar3 = 0xb9;
|
|
}
|
|
else {
|
|
if (uVar2 == 2) {
|
|
sVar3 = 0xba;
|
|
}
|
|
else {
|
|
if (uVar2 == 3) {
|
|
sVar3 = 0xbb;
|
|
}
|
|
else {
|
|
if (uVar2 != 4) goto LAB_01011b15;
|
|
sVar3 = 0xbc;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
_Format = FUN_01003752(sVar3);
|
|
sprintf(local_88,_Format,local_98);
|
|
FUN_010144b7(local_88,0x40400000);
|
|
if (uVar2 + 1 == 5) {
|
|
uVar2 = 0;
|
|
}
|
|
else {
|
|
uVar2 = uVar2 + 1 | 0x200;
|
|
}
|
|
}
|
|
else {
|
|
if (uVar1 == 0) {
|
|
sVar3 = 0xb4;
|
|
}
|
|
else {
|
|
if (uVar1 == 1) {
|
|
sVar3 = 0xb5;
|
|
}
|
|
else {
|
|
if (uVar1 == 2) {
|
|
sVar3 = 0xb6;
|
|
}
|
|
else {
|
|
if (uVar1 != 3) goto LAB_010119ec;
|
|
sVar3 = 0xb7;
|
|
}
|
|
}
|
|
}
|
|
_Format = FUN_01003752(sVar3);
|
|
sprintf(local_88,_Format,local_98);
|
|
FUN_010144b7(local_88,0x40400000);
|
|
if (uVar2 == *(uint *)(DAT_01025040 + 0xd6)) {
|
|
uVar2 = 0x200;
|
|
}
|
|
else {
|
|
uVar2 = uVar2 | 0x100;
|
|
}
|
|
}
|
|
*(uint *)(DAT_01023e24 + 6) = uVar2;
|
|
}
|
|
LAB_01011b84:
|
|
FUN_0101cd9e();
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_01011b98(void)
|
|
|
|
{
|
|
*(undefined4 *)(DAT_01023bbc + 6) = 1;
|
|
FUN_01011bb5(0x42,(undefined **)0x0);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_01011bb5(int param_1,undefined **param_2)
|
|
|
|
{
|
|
int iVar1;
|
|
code **ppcVar2;
|
|
LPSTR pCVar3;
|
|
int iVar4;
|
|
undefined4 local_18;
|
|
|
|
ppcVar2 = DAT_01023a8c;
|
|
if (DAT_01023bbc == 0) {
|
|
return;
|
|
}
|
|
iVar1 = *(int *)(DAT_01023bbc + 6);
|
|
if (param_1 == 0x2f) {
|
|
if ((DAT_01023978 == (code **)param_2) && (1 < iVar1)) {
|
|
(**(code **)*DAT_01023a8c)(0x22,0);
|
|
(**(code **)*ppcVar2)(0x14,0);
|
|
ppcVar2 = DAT_01023a94;
|
|
(**(code **)*DAT_01023a94)(0x22,0);
|
|
(**(code **)*ppcVar2)(0x14,0);
|
|
local_18 = 0x40800000;
|
|
pCVar3 = FUN_01003752(0x6d);
|
|
FUN_010144b7(pCVar3,local_18);
|
|
*(undefined4 *)(DAT_01023bbc + 6) = 1;
|
|
FUN_01011bb5(0x42,(undefined **)0x0);
|
|
}
|
|
goto LAB_01011ccc;
|
|
}
|
|
if (param_1 == 0x3c) {
|
|
if ((DAT_01023978 == (code **)param_2) && (iVar1 != 0)) {
|
|
iVar4 = (**(code **)*DAT_01023978)(0x25,0);
|
|
if (iVar4 == 1) {
|
|
local_18 = 0x40800000;
|
|
pCVar3 = FUN_01003752(0x74);
|
|
FUN_010144b7(pCVar3,local_18);
|
|
}
|
|
goto LAB_01011ccc;
|
|
}
|
|
if (DAT_01023e24 != param_2) goto LAB_01011ccc;
|
|
}
|
|
else {
|
|
if (param_1 != 0x3f1) goto LAB_01011ccc;
|
|
}
|
|
param_1 = 0x43;
|
|
LAB_01011ccc:
|
|
switch(iVar1) {
|
|
case 0:
|
|
FUN_0100e657(param_1,(int)param_2);
|
|
break;
|
|
case 1:
|
|
FUN_0100e6d2(param_1,param_2);
|
|
break;
|
|
case 2:
|
|
FUN_0100ebf3(param_1,(int)param_2);
|
|
break;
|
|
case 3:
|
|
FUN_0100ed83(param_1,(int)param_2);
|
|
break;
|
|
case 4:
|
|
FUN_0100eed7(param_1,(int)param_2);
|
|
break;
|
|
case 5:
|
|
FUN_0100f0b3(param_1,param_2);
|
|
break;
|
|
case 6:
|
|
FUN_0100f381(param_1,(int)param_2);
|
|
break;
|
|
case 7:
|
|
FUN_0100f6f4(param_1,(int)param_2);
|
|
break;
|
|
case 8:
|
|
FUN_0100f539(param_1,(int)param_2);
|
|
break;
|
|
case 9:
|
|
FUN_0100f900(param_1,param_2);
|
|
break;
|
|
case 10:
|
|
FUN_0100ff35(param_1,(int)param_2);
|
|
break;
|
|
case 0xb:
|
|
FUN_0100fcd9(param_1,(int)param_2);
|
|
break;
|
|
case 0xc:
|
|
FUN_0101022d(param_1,(int)param_2);
|
|
break;
|
|
case 0xd:
|
|
FUN_01010385(param_1,(int)param_2);
|
|
break;
|
|
case 0xe:
|
|
FUN_010105e3(param_1,(int)param_2);
|
|
break;
|
|
case 0xf:
|
|
FUN_01010767(param_1,(int)param_2);
|
|
break;
|
|
case 0x10:
|
|
FUN_010109d5(param_1,(int)param_2);
|
|
break;
|
|
case 0x11:
|
|
FUN_01010cc2(param_1,(int)param_2);
|
|
break;
|
|
case 0x12:
|
|
FUN_0101106f(param_1,(int)param_2);
|
|
break;
|
|
default:
|
|
FUN_01011b98();
|
|
break;
|
|
case 0x14:
|
|
FUN_01010051(param_1,(int)param_2);
|
|
break;
|
|
case 0x15:
|
|
FUN_010108bc(param_1,(int)param_2);
|
|
break;
|
|
case 0x16:
|
|
FUN_01010ad3(param_1,(int)param_2);
|
|
break;
|
|
case 0x17:
|
|
FUN_01010b85(param_1,(int)param_2);
|
|
break;
|
|
case 0x18:
|
|
FUN_01010dd3(param_1,(int)param_2);
|
|
break;
|
|
case 0x19:
|
|
FUN_010111d3(param_1,(int)param_2);
|
|
break;
|
|
case 0x1a:
|
|
FUN_010113a1(param_1,(int)param_2);
|
|
break;
|
|
case 0x1b:
|
|
FUN_01011582(param_1,(int)param_2);
|
|
break;
|
|
case 0x1c:
|
|
FUN_01011612(param_1,(int)param_2);
|
|
break;
|
|
case 0x1d:
|
|
FUN_01011699(param_1,(int)param_2);
|
|
break;
|
|
case 0x1e:
|
|
FUN_01011798(param_1,param_2);
|
|
break;
|
|
case 0x1f:
|
|
FUN_0101184c(param_1,(int)param_2);
|
|
break;
|
|
case 0x20:
|
|
FUN_01011985(param_1);
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_01011ec9(int param_1,undefined **param_2)
|
|
|
|
{
|
|
code **ppcVar1;
|
|
int iVar2;
|
|
|
|
ppcVar1 = *(code ***)((int)param_2 + 0x12);
|
|
iVar2 = 0;
|
|
if (ppcVar1 != (code **)0x0) {
|
|
if ((param_1 == 0x3fb) && (0 < (int)ppcVar1[1])) {
|
|
do {
|
|
(**(code **)(*param_2 + 0xc))(iVar2,*(undefined4 *)(ppcVar1[2] + iVar2 * 4));
|
|
iVar2 = iVar2 + 1;
|
|
} while (iVar2 < (int)ppcVar1[1]);
|
|
}
|
|
(**ppcVar1)(param_1,param_2);
|
|
}
|
|
FUN_01011bb5(param_1,param_2);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_01011f1a(int param_1,undefined **param_2)
|
|
|
|
{
|
|
void *pvVar1;
|
|
int iVar2;
|
|
int iVar3;
|
|
undefined **ppuVar4;
|
|
undefined4 uVar5;
|
|
LPSTR _Format;
|
|
int *piVar6;
|
|
bool bVar7;
|
|
float10 fVar8;
|
|
short sVar9;
|
|
float local_4c;
|
|
char local_48 [64];
|
|
undefined4 local_8;
|
|
|
|
local_8 = DAT_01024778;
|
|
if (param_1 != 0x3f) goto LAB_01012272;
|
|
iVar2 = (**(code **)*DAT_010239a8)(0x25,0);
|
|
FUN_0100d286(0x29,DAT_010239a8);
|
|
if (iVar2 == 0) {
|
|
iVar3 = (**(code **)(*param_2 + 8))(0);
|
|
iVar3 = FUN_01017526(DAT_01025040,iVar3);
|
|
sVar9 = 0xc;
|
|
LAB_0101206b:
|
|
_Format = FUN_01003752(sVar9);
|
|
sprintf(local_48,_Format,iVar3);
|
|
FUN_010144b7(local_48,0x40000000);
|
|
}
|
|
else {
|
|
if (iVar2 != 1) {
|
|
if (iVar2 == 2) {
|
|
FUN_0100c764(0x34,DAT_01023860);
|
|
iVar3 = (**(code **)(*param_2 + 8))(2);
|
|
iVar3 = FUN_01017526(DAT_01025040,iVar3);
|
|
sVar9 = 2;
|
|
}
|
|
else {
|
|
if (iVar2 != 3) {
|
|
if (iVar2 == 4) {
|
|
(**(code **)*DAT_010239a8)(0,0);
|
|
iVar3 = (**(code **)(*param_2 + 8))(4);
|
|
ppuVar4 = (undefined **)FUN_01017526(DAT_01025040,iVar3);
|
|
FUN_0100dd7a(0x40,ppuVar4);
|
|
}
|
|
goto LAB_01012092;
|
|
}
|
|
FUN_0100cd12(0x13);
|
|
iVar3 = (**(code **)(*param_2 + 8))(3);
|
|
iVar3 = FUN_01017526(DAT_01025040,iVar3);
|
|
sVar9 = 8;
|
|
}
|
|
goto LAB_0101206b;
|
|
}
|
|
uVar5 = FUN_0100c335(*(int *)((int)DAT_01025040 + 0x13a));
|
|
_Format = FUN_01003752(0xe);
|
|
sprintf(local_48,_Format,uVar5);
|
|
FUN_010144b7(local_48,0x40000000);
|
|
*(undefined4 *)((int)DAT_01025040 + 0x13a) = 20000;
|
|
}
|
|
LAB_01012092:
|
|
iVar3 = FUN_0100c092((int)&PTR_s_lite25_010239ac);
|
|
bVar7 = iVar3 != 0;
|
|
if (bVar7) {
|
|
uVar5 = FUN_0100c335(*(int *)((int)DAT_01025040 + 0x12e));
|
|
_Format = FUN_01003752(10);
|
|
sprintf(local_48,_Format,uVar5);
|
|
FUN_010144b7(local_48,0x40000000);
|
|
}
|
|
iVar3 = FUN_0100c092((int)&PTR_s_lite26_010239b4);
|
|
if (iVar3 != 0) {
|
|
bVar7 = (bool)(bVar7 | 2);
|
|
}
|
|
iVar3 = FUN_0100c092((int)&PTR_s_lite130_010239bc);
|
|
if (iVar3 != 0) {
|
|
bVar7 = (bool)(bVar7 | 4);
|
|
(**(code **)*DAT_010239c0)(0x14,0);
|
|
FUN_0100d7bb(0x40,DAT_01023b38);
|
|
(**(code **)*DAT_01023b0c)(0x13,0);
|
|
FUN_0100c14f();
|
|
FUN_0100c199();
|
|
FUN_0100c1e3();
|
|
FUN_0100c24a();
|
|
(**(code **)*DAT_010238d0)(0x13,0);
|
|
(**(code **)*DAT_010238d8)(0x13,0);
|
|
FUN_0100cd12(0x13);
|
|
FUN_0100c764(0x34,DAT_01023860);
|
|
if (*(int *)((int)DAT_01025040 + 0x15a) != 0) {
|
|
FUN_0100c12a();
|
|
}
|
|
pvVar1 = DAT_01025040;
|
|
if (*(int *)((int)DAT_01025040 + 0x13a) < 100000) {
|
|
*(int *)((int)DAT_01025040 + 0x13a) = 100000;
|
|
}
|
|
if (*(int *)((int)pvVar1 + 0x132) < 100000) {
|
|
*(int *)((int)pvVar1 + 0x132) = 100000;
|
|
}
|
|
FUN_0100dd7a(0x40,(undefined **)0x0);
|
|
}
|
|
if (bVar7 == false) {
|
|
piVar6 = DAT_01023d8c;
|
|
if ((((iVar2 != 1) && (piVar6 = DAT_01023d94, iVar2 != 2)) &&
|
|
(piVar6 = DAT_01023d9c, iVar2 != 3)) && (piVar6 = DAT_01023da4, iVar2 != 4)) {
|
|
piVar6 = DAT_01023d84;
|
|
}
|
|
LAB_01012245:
|
|
fVar8 = (float10)(**(code **)(*piVar6 + 0x14))();
|
|
}
|
|
else {
|
|
piVar6 = DAT_01023d24;
|
|
if ((bVar7 == true) || ((1 < bVar7 && (piVar6 = DAT_01023d64, bVar7 < 4)))) goto LAB_01012245;
|
|
fVar8 = (float10)(**(code **)(*DAT_01023d6c + 0x14))();
|
|
(**(code **)(*DAT_01023d74 + 0x14))();
|
|
(**(code **)(*DAT_01023d7c + 0x14))();
|
|
}
|
|
local_4c = (float)fVar8;
|
|
(**(code **)*DAT_010239b0)(7,0x40a00000);
|
|
(**(code **)*param_2)(0x37,local_4c);
|
|
LAB_01012272:
|
|
FUN_0101cd9e();
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
|
|
|
|
void FUN_01012285(int param_1)
|
|
|
|
{
|
|
code **ppcVar1;
|
|
int iVar2;
|
|
|
|
if (param_1 == 0x3f7) {
|
|
FUN_01011bb5(0x43,(undefined **)0x0);
|
|
}
|
|
else {
|
|
if (param_1 == 0x3f8) {
|
|
_DAT_01025044 = 0;
|
|
iVar2 = (**(code **)*DAT_01023cf4)(0x25,0);
|
|
if (iVar2 == 0) {
|
|
(**(code **)*DAT_01023cf4)(0x20,0);
|
|
}
|
|
iVar2 = FUN_0100c092((int)&PTR_s_lite200_01023d00);
|
|
if (iVar2 == 0) {
|
|
(**(code **)*DAT_01023ce4)(0x14,0);
|
|
(**(code **)*DAT_01023cb4)(0x13,0);
|
|
(**(code **)*DAT_01023ce4)(0x1a,0x3e800000);
|
|
ppcVar1 = DAT_01023a8c;
|
|
(**(code **)*DAT_01023a8c)(0x14,0);
|
|
(**(code **)*ppcVar1)(0x20,0x3e4ccccd);
|
|
(**(code **)*ppcVar1)(0x1a,0x3e4ccccd);
|
|
ppcVar1 = DAT_01023a94;
|
|
(**(code **)*DAT_01023a94)(0x14,0);
|
|
(**(code **)*ppcVar1)(0x20,0x3e4ccccd);
|
|
(**(code **)*ppcVar1)(0x1a,0x3e4ccccd);
|
|
*(undefined4 *)(DAT_01025040 + 0x12e) = 25000;
|
|
FUN_0100d7bb(0x41,DAT_01023b38);
|
|
(**(code **)*DAT_01023978)(0x13,0);
|
|
(**(code **)*DAT_01023d04)(0x13,0);
|
|
(**(code **)*DAT_01023808)(0x35,0);
|
|
(**(code **)*DAT_01023810)(0x35,0);
|
|
}
|
|
*(undefined4 *)((int)DAT_01023d04 + 6) = 0;
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_0101240d(int param_1,int *param_2)
|
|
|
|
{
|
|
int iVar1;
|
|
LPSTR pCVar2;
|
|
short sVar3;
|
|
undefined4 uVar4;
|
|
|
|
if (param_1 != 0x3f) {
|
|
return;
|
|
}
|
|
if (*(int *)((int)param_2 + 6) != 0) {
|
|
return;
|
|
}
|
|
*(undefined4 *)((int)param_2 + 6) = 1;
|
|
if (*(int *)((int)DAT_01023aec + 6) + *(int *)((int)DAT_01023ae4 + 6) +
|
|
*(int *)((int)DAT_01023adc + 6) != 3) {
|
|
iVar1 = (**(code **)(*param_2 + 8))(0);
|
|
FUN_01017526(DAT_01025040,iVar1);
|
|
return;
|
|
}
|
|
FUN_0100d73e(0x29,DAT_01023b0c);
|
|
iVar1 = (**(code **)*DAT_01023b0c)(0x25,0);
|
|
if (iVar1 == 1) {
|
|
iVar1 = (**(code **)(*param_2 + 8))(1);
|
|
FUN_01017526(DAT_01025040,iVar1);
|
|
sVar3 = 0x35;
|
|
}
|
|
else {
|
|
if (iVar1 != 2) {
|
|
uVar4 = 0x40000000;
|
|
pCVar2 = FUN_01003752(0x37);
|
|
FUN_010144b7(pCVar2,uVar4);
|
|
FUN_0100c2f3(0x40800000);
|
|
goto LAB_01012501;
|
|
}
|
|
iVar1 = (**(code **)(*param_2 + 8))(2);
|
|
FUN_01017526(DAT_01025040,iVar1);
|
|
sVar3 = 0x36;
|
|
}
|
|
uVar4 = 0x40000000;
|
|
pCVar2 = FUN_01003752(sVar3);
|
|
FUN_010144b7(pCVar2,uVar4);
|
|
LAB_01012501:
|
|
*(undefined4 *)((int)DAT_01023adc + 6) = 0;
|
|
(**(code **)*DAT_01023adc)(0x32,0);
|
|
*(undefined4 *)((int)DAT_01023ae4 + 6) = 0;
|
|
(**(code **)*DAT_01023ae4)(0x32,0);
|
|
*(undefined4 *)((int)DAT_01023aec + 6) = 0;
|
|
(**(code **)*DAT_01023aec)(0x32,0);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_01012570(int param_1,int *param_2)
|
|
|
|
{
|
|
int iVar1;
|
|
LPSTR pCVar2;
|
|
short sVar3;
|
|
undefined4 uVar4;
|
|
|
|
if ((param_1 == 0x3f) && (*(int *)((int)param_2 + 6) == 0)) {
|
|
*(undefined4 *)((int)param_2 + 6) = 1;
|
|
if (*(int *)((int)DAT_01023b30 + 6) + *(int *)((int)DAT_01023b28 + 6) +
|
|
*(int *)((int)DAT_01023b20 + 6) == 3) {
|
|
iVar1 = (**(code **)(*param_2 + 8))(1);
|
|
FUN_01017526(DAT_01025040,iVar1);
|
|
FUN_0100d7bb(0x29,DAT_01023b38);
|
|
iVar1 = (**(code **)*DAT_01023b38)(0x25,0);
|
|
uVar4 = 0x40000000;
|
|
if (iVar1 == 1) {
|
|
*(undefined4 *)((int)DAT_01025040 + 0x126) = 1;
|
|
sVar3 = 0x38;
|
|
}
|
|
else {
|
|
if (iVar1 == 2) {
|
|
*(undefined4 *)((int)DAT_01025040 + 0x126) = 2;
|
|
sVar3 = 0x39;
|
|
}
|
|
else {
|
|
if (iVar1 == 3) {
|
|
*(undefined4 *)((int)DAT_01025040 + 0x126) = 3;
|
|
sVar3 = 0x3a;
|
|
}
|
|
else {
|
|
*(undefined4 *)((int)DAT_01025040 + 0x126) = 4;
|
|
sVar3 = 0x3b;
|
|
}
|
|
}
|
|
}
|
|
pCVar2 = FUN_01003752(sVar3);
|
|
FUN_010144b7(pCVar2,uVar4);
|
|
*(undefined4 *)((int)DAT_01023b20 + 6) = 0;
|
|
(**(code **)*DAT_01023b20)(0x32,0);
|
|
*(undefined4 *)((int)DAT_01023b28 + 6) = 0;
|
|
(**(code **)*DAT_01023b28)(0x32,0);
|
|
*(undefined4 *)((int)DAT_01023b30 + 6) = 0;
|
|
(**(code **)*DAT_01023b30)(0x32,0);
|
|
}
|
|
else {
|
|
iVar1 = (**(code **)(*param_2 + 8))(0);
|
|
FUN_01017526(DAT_01025040,iVar1);
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
|
|
|
|
void FUN_010126ba(int param_1)
|
|
|
|
{
|
|
int iVar1;
|
|
LPSTR _Format;
|
|
code **this;
|
|
undefined4 uVar2;
|
|
undefined4 uVar3;
|
|
undefined4 uVar4;
|
|
undefined4 uVar5;
|
|
undefined4 uVar6;
|
|
undefined4 uVar7;
|
|
undefined4 uVar8;
|
|
undefined4 uVar9;
|
|
undefined4 uVar10;
|
|
short sVar11;
|
|
undefined4 local_58;
|
|
char local_48 [64];
|
|
undefined4 local_8;
|
|
|
|
local_8 = DAT_01024778;
|
|
if (param_1 == 0x3c) {
|
|
if (*(int *)((int)DAT_01023d0c + 6) != 0) {
|
|
(**(code **)*DAT_01025040)(0x3fe,0);
|
|
iVar1 = FUN_01014908();
|
|
if (iVar1 != 0) {
|
|
(**(code **)(*DAT_01023dfc + 0x14))();
|
|
(**(code **)**(code ***)((int)DAT_01025040 + 0x10a))(0x10,0x40400000);
|
|
local_58 = 0xbf800000;
|
|
_Format = FUN_01003752(0xb1);
|
|
FUN_010144b7(_Format,local_58);
|
|
}
|
|
goto LAB_01012e3d;
|
|
}
|
|
local_58 = 0x3f8;
|
|
this = DAT_01023a84;
|
|
}
|
|
else {
|
|
if (param_1 != 0x3f) goto LAB_01012e3d;
|
|
if (_DAT_01025044 == 0) {
|
|
if (*(int *)((int)DAT_01025040 + 0x172) != 0) {
|
|
(**(code **)*DAT_01023d04)(0x14,0);
|
|
(**(code **)*DAT_01023d0c)(0x14,0);
|
|
}
|
|
this = DAT_01025040;
|
|
iVar1 = FUN_0100c092((int)&PTR_s_lite200_01023d00);
|
|
if (iVar1 != 0) {
|
|
(**(code **)(*DAT_01023dec + 0x14))();
|
|
(**(code **)*DAT_01023d04)(0x13,0);
|
|
local_58 = 0xbf800000;
|
|
_Format = FUN_01003752(0x60);
|
|
FUN_010144b7(_Format,local_58);
|
|
(**(code **)(*DAT_01023de4 + 0x14))();
|
|
goto LAB_01012e3d;
|
|
}
|
|
iVar1 = FUN_0100c092((int)&PTR_s_lite199_01023d08);
|
|
if (iVar1 != 0) {
|
|
(**(code **)(*DAT_01023dec + 0x14))();
|
|
(**(code **)*DAT_01023d0c)(0x14,0);
|
|
(**(code **)*DAT_01023d04)(0x13,0);
|
|
local_58 = 0x40000000;
|
|
_Format = FUN_01003752(0x5f);
|
|
FUN_010144b7(_Format,local_58);
|
|
(**(code **)(*DAT_01023de4 + 0x14))();
|
|
*(int *)((int)DAT_01025040 + 0x15e) = *(int *)((int)DAT_01025040 + 0x15e) + -1;
|
|
goto LAB_01012e3d;
|
|
}
|
|
if (*(int *)((int)this + 0x152) != 0) {
|
|
(**(code **)(*DAT_01023dec + 0x14))();
|
|
*(int *)((int)DAT_01025040 + 0x152) = *(int *)((int)DAT_01025040 + 0x152) + -1;
|
|
goto LAB_01012e3d;
|
|
}
|
|
if (*(int *)((int)this + 0x172) == 0) {
|
|
local_58 = FUN_0100c335(*(int *)((int)this + 0x132));
|
|
_Format = FUN_01003752(0x5e);
|
|
sprintf(local_48,_Format,local_58);
|
|
FUN_010144b7(local_48,0x40000000);
|
|
this = DAT_01025040;
|
|
}
|
|
iVar1 = *(int *)((int)this + 0x14e);
|
|
if (iVar1 == 0) {
|
|
FUN_010175aa(this,*(int *)((int)this + 0x146) + -1);
|
|
if ((*(int *)((int)DAT_01025040 + 0xda) + 1 == *(int *)((int)DAT_01025040 + 0xd6)) &&
|
|
(*(int *)((int)DAT_01025040 + 0x146) == 0)) {
|
|
*(undefined4 *)((int)DAT_01023d0c + 6) = 1;
|
|
}
|
|
else {
|
|
(**(code **)*DAT_01025040)(0x3fd,0);
|
|
*(undefined4 *)((int)DAT_01023d0c + 6) = 0;
|
|
}
|
|
(**(code **)(*DAT_01023dec + 0x14))();
|
|
}
|
|
else {
|
|
*(int *)((int)this + 0x14e) = iVar1 + -1;
|
|
(**(code **)(*DAT_01023de4 + 0x14))();
|
|
iVar1 = *(int *)((int)DAT_01025040 + 0xda);
|
|
local_58 = 0xbf800000;
|
|
if (iVar1 == 0) {
|
|
sVar11 = 0x61;
|
|
}
|
|
else {
|
|
if (iVar1 == 1) {
|
|
sVar11 = 0x62;
|
|
}
|
|
else {
|
|
if (iVar1 == 2) {
|
|
sVar11 = 99;
|
|
}
|
|
else {
|
|
sVar11 = 100;
|
|
}
|
|
}
|
|
}
|
|
_Format = FUN_01003752(sVar11);
|
|
FUN_010144b7(_Format,local_58);
|
|
}
|
|
(**(code **)*DAT_01023724)(0x14,0);
|
|
(**(code **)*DAT_01023790)(0x14,0);
|
|
(**(code **)*DAT_01023818)(0x14,0);
|
|
(**(code **)*DAT_01023820)(0x14,0);
|
|
(**(code **)*DAT_01023868)(0x14,0);
|
|
(**(code **)*DAT_01023878)(0x14,0);
|
|
(**(code **)*DAT_01023880)(0x14,0);
|
|
(**(code **)*DAT_01023888)(0x14,0);
|
|
(**(code **)*DAT_010238ac)(0x14,0);
|
|
(**(code **)*DAT_010238b4)(0x14,0);
|
|
(**(code **)*DAT_010238d0)(0x14,0);
|
|
(**(code **)*DAT_010238d8)(0x14,0);
|
|
(**(code **)*DAT_010238f0)(0x14,0);
|
|
(**(code **)*DAT_01023940)(0x14,0);
|
|
(**(code **)*DAT_010239a8)(0x14,0);
|
|
(**(code **)*DAT_010239b0)(0x14,0);
|
|
(**(code **)*DAT_010239b8)(0x14,0);
|
|
(**(code **)*DAT_010239c0)(0x14,0);
|
|
(**(code **)*DAT_010239d0)(0x14,0);
|
|
(**(code **)*DAT_01023a1c)(0x14,0);
|
|
(**(code **)*DAT_01023a3c)(0x14,0);
|
|
(**(code **)*DAT_01023a8c)(0x14,0);
|
|
(**(code **)*DAT_01023a94)(0x14,0);
|
|
(**(code **)*DAT_01023abc)(0x14,0);
|
|
(**(code **)*DAT_01023ac4)(0x14,0);
|
|
(**(code **)*DAT_01023ab4)(0x14,0);
|
|
(**(code **)*DAT_01023b0c)(0x14,0);
|
|
(**(code **)*DAT_01023b38)(0x14,0);
|
|
(**(code **)*DAT_01023b78)(0x14,0);
|
|
(**(code **)*DAT_01023bb4)(0x14,0);
|
|
(**(code **)*DAT_01023c28)(0x14,0);
|
|
(**(code **)*DAT_01023c30)(0x14,0);
|
|
(**(code **)*DAT_01023c44)(0x14,0);
|
|
uVar10 = 0;
|
|
uVar9 = 0x14;
|
|
(**(code **)*DAT_01023ce4)();
|
|
uVar8 = 0;
|
|
uVar7 = 0x14;
|
|
(**(code **)*DAT_01023cec)();
|
|
uVar6 = 0;
|
|
uVar5 = 0x14;
|
|
(**(code **)*DAT_01023bbc)();
|
|
uVar4 = 0;
|
|
local_58 = 0x14;
|
|
(**(code **)*DAT_01023828)();
|
|
uVar3 = 0;
|
|
uVar2 = 0x14;
|
|
(**(code **)*DAT_01023830)(0x14,0,local_58,uVar4,uVar5,uVar6,uVar7,uVar8,uVar9,uVar10);
|
|
uVar6 = 0;
|
|
uVar5 = 0x14;
|
|
(**(code **)*DAT_01023978)();
|
|
uVar4 = 0;
|
|
local_58 = 0x400;
|
|
(**(code **)*DAT_01023978)();
|
|
FUN_0100dd7a(0x400,(undefined **)0x0);
|
|
(**(code **)*DAT_01023c70)(0x14,0,local_58,uVar4,uVar5,uVar6,uVar2,uVar3);
|
|
*(undefined4 *)(DAT_01023a24 + 6) = 0;
|
|
*(undefined4 *)(DAT_01023b9c + 6) = 0;
|
|
*(undefined4 *)(DAT_01023ba4 + 6) = 0;
|
|
*(undefined4 *)(DAT_01023bac + 6) = 0;
|
|
*(undefined4 *)((int)DAT_01023bb4 + 6) = 0;
|
|
(**(code **)*DAT_01023cfc)(0x22,0);
|
|
(**(code **)*DAT_01023cf4)(0x22,0);
|
|
(**(code **)*DAT_01023704)(0x400,0);
|
|
(**(code **)*DAT_01023770)(0x400,0);
|
|
(**(code **)*DAT_01023808)(0x400,0);
|
|
(**(code **)*DAT_01023810)(0x400,0);
|
|
(**(code **)*DAT_01023860)(0x400,0);
|
|
(**(code **)*DAT_01023a9c)(0x400,0);
|
|
(**(code **)*DAT_01023aa4)(0x400,0);
|
|
(**(code **)*DAT_01023aac)(0x400,0);
|
|
uVar4 = 0;
|
|
local_58 = 0x400;
|
|
(**(code **)*DAT_01023adc)();
|
|
uVar8 = 0;
|
|
uVar7 = 0x400;
|
|
(**(code **)*DAT_01023ae4)(0x400,0,local_58,uVar4);
|
|
uVar3 = 0;
|
|
uVar2 = 0x400;
|
|
(**(code **)*DAT_01023aec)();
|
|
uVar6 = 0;
|
|
uVar5 = 0x400;
|
|
(**(code **)*DAT_01023b20)();
|
|
uVar4 = 0;
|
|
local_58 = 0x400;
|
|
(**(code **)*DAT_01023b28)();
|
|
(**(code **)*DAT_01023b30)(0x400,0,local_58,uVar4,uVar5,uVar6,uVar2,uVar3,uVar7,uVar8);
|
|
if (*(int *)((int)DAT_01023d0c + 6) == 0) {
|
|
*(undefined4 *)((int)DAT_01023bbc + 6) = 0;
|
|
}
|
|
else {
|
|
*(undefined4 *)((int)DAT_01023bbc + 6) = 0x20;
|
|
}
|
|
FUN_01011bb5(0x42,(undefined **)0x0);
|
|
(**(code **)*DAT_01025040)(0x3f4,0);
|
|
iVar1 = FUN_0100c092((int)&PTR_s_lite58_01023ac8);
|
|
if (iVar1 == 0) {
|
|
*(undefined4 *)((int)DAT_01025040 + 0x132) = 25000;
|
|
goto LAB_01012e3d;
|
|
}
|
|
local_58 = 0x14;
|
|
this = DAT_01023acc;
|
|
}
|
|
else {
|
|
(**(code **)*DAT_01023c7c)(0x400,0);
|
|
local_58 = 0x38;
|
|
this = DAT_010239fc;
|
|
}
|
|
}
|
|
(**(code **)*this)(local_58,0);
|
|
LAB_01012e3d:
|
|
FUN_0101cd9e();
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
int FUN_01012e51(int *param_1,int param_2)
|
|
|
|
{
|
|
int iVar1;
|
|
|
|
if (param_1[1] < *param_1) {
|
|
param_1[param_1[1] + 2] = param_2;
|
|
param_1[1] = param_1[1] + 1;
|
|
iVar1 = param_1[1];
|
|
}
|
|
else {
|
|
iVar1 = 0;
|
|
}
|
|
return iVar1;
|
|
}
|
|
|
|
|
|
|
|
undefined4 FUN_01012e7a(int param_1,int param_2)
|
|
|
|
{
|
|
int iVar1;
|
|
int *piVar2;
|
|
|
|
iVar1 = *(int *)(param_1 + 4) + -1;
|
|
if (-1 < iVar1) {
|
|
piVar2 = (int *)(param_1 + 8 + iVar1 * 4);
|
|
do {
|
|
if (*piVar2 == param_2) {
|
|
*(undefined4 *)(param_1 + 8 + iVar1 * 4) =
|
|
*(undefined4 *)(param_1 + 4 + *(int *)(param_1 + 4) * 4);
|
|
*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + -1;
|
|
return 1;
|
|
}
|
|
iVar1 = iVar1 + -1;
|
|
piVar2 = piVar2 + -1;
|
|
} while (-1 < iVar1);
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
|
|
|
|
void FUN_01012ebe(int param_1)
|
|
|
|
{
|
|
int *piVar1;
|
|
|
|
piVar1 = FUN_010054c2(param_1 * 4 + 0xc);
|
|
if (piVar1 != (int *)0x0) {
|
|
piVar1[1] = 0;
|
|
*piVar1 = param_1;
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
uint * FUN_01012ee8(uint *param_1,int param_2)
|
|
|
|
{
|
|
uint *puVar1;
|
|
|
|
if (((param_1 != (uint *)0x0) && ((int)*param_1 < (int)(param_1[1] + param_2))) &&
|
|
(puVar1 = FUN_01005579((int)param_1,(param_1[1] + param_2) * 4 + 0xc), puVar1 != (uint *)0x0))
|
|
{
|
|
*puVar1 = puVar1[1] + param_2;
|
|
param_1 = puVar1;
|
|
}
|
|
return param_1;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
|
|
|
|
void FUN_01012f2a(void)
|
|
|
|
{
|
|
int iVar1;
|
|
int iVar2;
|
|
int iVar3;
|
|
uint *puVar4;
|
|
int iVar5;
|
|
int local_18;
|
|
int *local_14;
|
|
int local_10;
|
|
int *local_c;
|
|
int *local_8;
|
|
|
|
_DAT_01024f04 = _DAT_01024f04 + 1;
|
|
local_8 = (int *)0x0;
|
|
local_14 = DAT_01025084;
|
|
local_18 = 0;
|
|
if (0 < DAT_010250b4) {
|
|
do {
|
|
iVar1 = *local_14;
|
|
if (*(int *)(iVar1 + 0x44) != 0) {
|
|
FUN_01005541(*(int *)(iVar1 + 0x44));
|
|
*(undefined4 *)(iVar1 + 0x44) = 0;
|
|
*(undefined4 *)(iVar1 + 0x48) = 0;
|
|
}
|
|
if ((*(char *)(iVar1 + 0x18) == '\0') && (*(int *)(iVar1 + 0x54) != -1)) {
|
|
if (local_8 == (int *)0x0) {
|
|
local_8 = FUN_010054c2(4000);
|
|
}
|
|
iVar5 = 0;
|
|
local_c = DAT_01025084;
|
|
local_10 = 0;
|
|
if (0 < DAT_010250b4) {
|
|
do {
|
|
iVar2 = *local_c;
|
|
if ((((*(char *)(iVar2 + 0x18) == '\0') && (*(int *)(iVar2 + 0x54) != -1)) &&
|
|
(iVar3 = FUN_0100400b((int *)(iVar1 + 0x4c),(int *)(iVar2 + 0x4c),(int *)0x0),
|
|
iVar3 != 0)) && (local_8 != (int *)0x0)) {
|
|
local_8[iVar5] = iVar2;
|
|
iVar5 = iVar5 + 1;
|
|
}
|
|
local_10 = local_10 + 1;
|
|
local_c = local_c + 1;
|
|
} while (local_10 < DAT_010250b4);
|
|
}
|
|
if (((*(char *)(iVar1 + 0x18) == '\0') && (*(int *)(iVar1 + 0x10) != 0)) && (iVar5 < 2)) {
|
|
iVar5 = 0;
|
|
}
|
|
if (iVar5 != 0) {
|
|
puVar4 = FUN_01005579((int)local_8,iVar5 << 2);
|
|
*(uint **)(iVar1 + 0x44) = puVar4;
|
|
*(int *)(iVar1 + 0x48) = iVar5;
|
|
local_8 = (int *)0x0;
|
|
}
|
|
}
|
|
local_18 = local_18 + 1;
|
|
local_14 = local_14 + 1;
|
|
} while (local_18 < DAT_010250b4);
|
|
if (local_8 != (int *)0x0) {
|
|
FUN_01005541((int)local_8);
|
|
}
|
|
}
|
|
_DAT_01024f04 = _DAT_01024f04 + -1;
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_0101304d(int param_1)
|
|
|
|
{
|
|
int *piVar1;
|
|
int iVar2;
|
|
int iVar3;
|
|
int local_14;
|
|
int local_10;
|
|
int local_c;
|
|
int local_8;
|
|
|
|
iVar2 = param_1;
|
|
if ((*(int *)(param_1 + 0x44) != 0) &&
|
|
(piVar1 = (int *)(param_1 + 0x48), param_1 = 0, 0 < *piVar1)) {
|
|
do {
|
|
piVar1 = *(int **)(*(int *)(iVar2 + 0x44) + param_1 * 4);
|
|
if ((*(char *)(piVar1 + 6) == '\0') &&
|
|
((piVar1[4] != 0 &&
|
|
(iVar3 = FUN_0100400b(piVar1,(int *)(iVar2 + 0x34),&local_14), iVar3 != 0)))) {
|
|
FUN_01004a76(local_c,local_8,(int)&DAT_01025088,local_14,local_10,(int)&DAT_01025058,
|
|
local_14,local_10,piVar1[4],(undefined *)(local_14 - *piVar1),
|
|
(undefined *)(local_10 - piVar1[1]),piVar1[5],
|
|
(piVar1[0xb] - *piVar1) + local_14,(piVar1[0xc] - piVar1[1]) + local_10);
|
|
}
|
|
param_1 = param_1 + 1;
|
|
} while (param_1 < *(int *)(iVar2 + 0x48));
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_010130f3(void)
|
|
|
|
{
|
|
ushort *puVar1;
|
|
int **ppiVar2;
|
|
int *piVar3;
|
|
int iVar4;
|
|
int iVar5;
|
|
int iVar6;
|
|
int local_14;
|
|
int **local_10;
|
|
undefined *local_c;
|
|
|
|
iVar4 = DAT_01025070;
|
|
if ((1 < DAT_01025070) && (iVar6 = 0, iVar4 = DAT_01025070, 0 < DAT_01025070)) {
|
|
do {
|
|
iVar5 = iVar6;
|
|
if (iVar6 < iVar4 / 2) {
|
|
do {
|
|
ppiVar2 = DAT_0102506c + iVar6;
|
|
puVar1 = (ushort *)((int)DAT_0102506c[iVar5] + 0x1a);
|
|
if (*puVar1 <= *(ushort *)((int)*ppiVar2 + 0x1a) &&
|
|
*(ushort *)((int)*ppiVar2 + 0x1a) != *puVar1) {
|
|
piVar3 = *ppiVar2;
|
|
*ppiVar2 = DAT_0102506c[iVar5];
|
|
DAT_0102506c[iVar5] = piVar3;
|
|
iVar4 = DAT_01025070;
|
|
}
|
|
iVar5 = iVar5 + 1;
|
|
} while (iVar5 < iVar4 / 2);
|
|
}
|
|
iVar6 = iVar6 + 1;
|
|
} while (iVar6 < iVar4);
|
|
}
|
|
local_14 = 0;
|
|
local_10 = DAT_0102506c;
|
|
if (0 < iVar4) {
|
|
local_c = &DAT_010250c8;
|
|
do {
|
|
piVar3 = *local_10;
|
|
if (piVar3[4] == 0) {
|
|
LAB_010131e5:
|
|
piVar3[0xf] = -1;
|
|
}
|
|
else {
|
|
iVar4 = FUN_0100400b(piVar3,(int *)&DAT_01025074,piVar3 + 0xd);
|
|
if (iVar4 == 0) goto LAB_010131e5;
|
|
iVar4 = piVar3[0xe];
|
|
iVar6 = piVar3[0xd];
|
|
FUN_01004870((int)local_c,piVar3[0xf],piVar3[0x10],0,0,(int)&DAT_01025088,iVar6,iVar4);
|
|
FUN_01004b75(piVar3[0xf],piVar3[0x10],&DAT_01025088,iVar6,iVar4,(int)&DAT_01025058,iVar6,
|
|
iVar4,(char *)piVar3[4],iVar6 - *piVar3,iVar4 - piVar3[1],
|
|
*(ushort *)((int)piVar3 + 0x1a));
|
|
}
|
|
local_14 = local_14 + 1;
|
|
local_c = local_c + 0x25;
|
|
local_10 = local_10 + 1;
|
|
} while (local_14 < DAT_01025070);
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_0101320d(void)
|
|
|
|
{
|
|
int iVar1;
|
|
undefined *puVar2;
|
|
int local_c;
|
|
int *local_8;
|
|
|
|
local_8 = (int *)(DAT_0102506c + -4 + DAT_01025070 * 4);
|
|
if (-1 < DAT_01025070 + -1) {
|
|
puVar2 = &DAT_010250c8 + (DAT_01025070 + -1) * 0x25;
|
|
local_c = DAT_01025070;
|
|
do {
|
|
iVar1 = *local_8;
|
|
if (0 < *(int *)(iVar1 + 0x3c)) {
|
|
FUN_01004870((int)&DAT_01025088,*(int *)(iVar1 + 0x3c),*(int *)(iVar1 + 0x40),
|
|
*(int *)(iVar1 + 0x34),*(int *)(iVar1 + 0x38),(int)puVar2,0,0);
|
|
}
|
|
local_8 = local_8 + -1;
|
|
*(int *)(iVar1 + 0x1c) = *(int *)(iVar1 + 0x34);
|
|
*(undefined4 *)(iVar1 + 0x20) = *(undefined4 *)(iVar1 + 0x38);
|
|
*(undefined4 *)(iVar1 + 0x24) = *(undefined4 *)(iVar1 + 0x3c);
|
|
puVar2 = puVar2 + -0x25;
|
|
local_c = local_c + -1;
|
|
*(undefined4 *)(iVar1 + 0x28) = *(undefined4 *)(iVar1 + 0x40);
|
|
} while (local_c != 0);
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
undefined4 FUN_01013283(int param_1)
|
|
|
|
{
|
|
undefined4 *puVar1;
|
|
int iVar2;
|
|
|
|
iVar2 = 0;
|
|
if (0 < DAT_010250b4) {
|
|
do {
|
|
if (*(int *)(DAT_01025084 + iVar2 * 4) == param_1) {
|
|
while (iVar2 < DAT_010250b4) {
|
|
puVar1 = (undefined4 *)(DAT_01025084 + iVar2 * 4);
|
|
*puVar1 = puVar1[1];
|
|
iVar2 = iVar2 + 1;
|
|
}
|
|
DAT_010250b4 = DAT_010250b4 + -1;
|
|
if (*(int *)(param_1 + 0x44) != 0) {
|
|
FUN_01005541(*(int *)(param_1 + 0x44));
|
|
}
|
|
FUN_01005541(param_1);
|
|
return 1;
|
|
}
|
|
iVar2 = iVar2 + 1;
|
|
} while (iVar2 < DAT_010250b4);
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
|
|
|
|
undefined4 FUN_010132e8(int param_1)
|
|
|
|
{
|
|
undefined4 *puVar1;
|
|
int iVar2;
|
|
|
|
iVar2 = 0;
|
|
if (0 < DAT_01025070) {
|
|
do {
|
|
if (*(int *)(DAT_0102506c + iVar2 * 4) == param_1) {
|
|
while (iVar2 < DAT_01025070) {
|
|
puVar1 = (undefined4 *)(DAT_0102506c + iVar2 * 4);
|
|
*puVar1 = puVar1[1];
|
|
iVar2 = iVar2 + 1;
|
|
}
|
|
DAT_01025070 = DAT_01025070 + -1;
|
|
FUN_01005541(param_1);
|
|
return 1;
|
|
}
|
|
iVar2 = iVar2 + 1;
|
|
} while (iVar2 < DAT_01025070);
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
|
|
|
|
undefined4 FUN_01013340(int *param_1,int *param_2,int *param_3)
|
|
|
|
{
|
|
undefined4 uVar1;
|
|
int iVar2;
|
|
int iVar3;
|
|
|
|
if (*param_1 < *param_2) {
|
|
*param_3 = *param_1;
|
|
iVar2 = param_2[2] - *param_1;
|
|
iVar3 = *param_2;
|
|
}
|
|
else {
|
|
*param_3 = *param_2;
|
|
iVar2 = param_1[2] - *param_2;
|
|
iVar3 = *param_1;
|
|
}
|
|
param_3[2] = iVar2 + 1 + iVar3;
|
|
if (param_1[1] < param_2[1]) {
|
|
param_3[1] = param_1[1];
|
|
iVar2 = param_2[3] - param_1[1];
|
|
iVar3 = param_2[1];
|
|
}
|
|
else {
|
|
param_3[1] = param_2[1];
|
|
iVar2 = param_1[3] - param_2[1];
|
|
iVar3 = param_1[1];
|
|
}
|
|
param_3[3] = iVar2 + 1 + iVar3;
|
|
if ((param_3[2] == param_1[2] + param_2[2] || param_3[2] < param_1[2] + param_2[2]) &&
|
|
(param_3[3] == param_1[3] + param_2[3] || param_3[3] < param_1[3] + param_2[3])) {
|
|
uVar1 = 1;
|
|
}
|
|
else {
|
|
uVar1 = 0;
|
|
}
|
|
return uVar1;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
|
|
|
|
void FUN_010133c7(void)
|
|
|
|
{
|
|
char cVar1;
|
|
int *piVar2;
|
|
int iVar3;
|
|
int iVar4;
|
|
int iVar5;
|
|
int iVar6;
|
|
int **ppiVar7;
|
|
int iVar8;
|
|
int local_28;
|
|
int local_24;
|
|
int local_20;
|
|
int local_1c;
|
|
int *local_18;
|
|
uint local_14;
|
|
int local_10;
|
|
int local_c;
|
|
int **local_8;
|
|
|
|
local_c = 0;
|
|
local_8 = DAT_01025068;
|
|
if (0 < DAT_010250c0) {
|
|
do {
|
|
piVar2 = *local_8;
|
|
if (*(char *)((int)piVar2 + 0x19) == '\0') {
|
|
iVar3 = FUN_0100400b(piVar2,(int *)&DAT_01025074,piVar2 + 0xd);
|
|
if (iVar3 == 0) {
|
|
LAB_0101342c:
|
|
piVar2[0xf] = -1;
|
|
}
|
|
else {
|
|
if (piVar2[4] == 0) goto LAB_0101359d;
|
|
}
|
|
}
|
|
else {
|
|
if (*(char *)((int)piVar2 + 0x19) == '\x01') {
|
|
if (0 < piVar2[9]) {
|
|
FUN_010040c2(piVar2 + 7,piVar2,piVar2 + 0xd);
|
|
}
|
|
iVar3 = FUN_0100400b(piVar2 + 0xd,(int *)&DAT_01025074,piVar2 + 0xd);
|
|
if (iVar3 == 0) goto LAB_0101342c;
|
|
LAB_0101359d:
|
|
local_10 = piVar2[0xe];
|
|
local_14 = piVar2[0xf];
|
|
iVar3 = piVar2[0xd];
|
|
iVar8 = piVar2[0x10];
|
|
FUN_01004a08((int)&DAT_01025058,local_14,iVar8,iVar3,local_10,0xffff);
|
|
if (DAT_010253b4 == 0) {
|
|
FUN_010047fa((undefined4 *)&DAT_01025088,local_14,iVar8,iVar3,local_10,0);
|
|
}
|
|
else {
|
|
FUN_01004870((int)&DAT_01025088,local_14,iVar8,iVar3,local_10,DAT_010253b4,iVar3,
|
|
local_10);
|
|
}
|
|
}
|
|
}
|
|
local_c = local_c + 1;
|
|
local_8 = local_8 + 1;
|
|
} while (local_c < DAT_010250c0);
|
|
}
|
|
iVar3 = 0;
|
|
ppiVar7 = DAT_01025068;
|
|
if (0 < DAT_010250c0) {
|
|
do {
|
|
piVar2 = *ppiVar7;
|
|
if ((0 < piVar2[0xf]) &&
|
|
((*(char *)((int)piVar2 + 0x19) == '\0' || (*(char *)((int)piVar2 + 0x19) == '\x01')))) {
|
|
FUN_0101304d((int)piVar2);
|
|
}
|
|
iVar3 = iVar3 + 1;
|
|
ppiVar7 = ppiVar7 + 1;
|
|
} while (iVar3 < DAT_010250c0);
|
|
}
|
|
FUN_010130f3();
|
|
if (_DAT_01024754 != 0) {
|
|
FUN_01004664();
|
|
local_10 = DAT_010253ac + DAT_010250a5;
|
|
local_14 = DAT_010253b0 + DAT_010250a9;
|
|
local_c = 0;
|
|
local_8 = DAT_01025068;
|
|
if (0 < DAT_010250c0) {
|
|
do {
|
|
piVar2 = *local_8;
|
|
local_18 = piVar2;
|
|
if (0 < piVar2[0xf]) {
|
|
iVar3 = piVar2[0xd];
|
|
local_18 = piVar2;
|
|
FUN_0100469c((BITMAPINFO **)&DAT_01025088,iVar3,piVar2[0xe],local_10 + iVar3,
|
|
local_14 + piVar2[0xe],piVar2[0xf],piVar2[0x10]);
|
|
}
|
|
cVar1 = *(char *)(local_18 + 6);
|
|
piVar2[7] = piVar2[0xd];
|
|
piVar2[8] = piVar2[0xe];
|
|
piVar2[9] = piVar2[0xf];
|
|
piVar2[10] = piVar2[0x10];
|
|
if (cVar1 != '\0') {
|
|
FUN_01013283((int)local_18);
|
|
}
|
|
local_c = local_c + 1;
|
|
local_8 = local_8 + 1;
|
|
} while (local_c < DAT_010250c0);
|
|
}
|
|
local_c = 0;
|
|
local_8 = DAT_0102506c;
|
|
if (0 < DAT_01025070) {
|
|
do {
|
|
piVar2 = *local_8;
|
|
iVar3 = FUN_01013340(piVar2 + 0xd,piVar2 + 7,&local_28);
|
|
if ((iVar3 == 0) || ((*local_8)[0xf] < 1)) {
|
|
if (0 < piVar2[0xf]) {
|
|
iVar3 = piVar2[0xd];
|
|
FUN_0100469c((BITMAPINFO **)&DAT_01025088,iVar3,piVar2[0xe],local_10 + iVar3,
|
|
local_14 + piVar2[0xe],piVar2[0xf],piVar2[0x10]);
|
|
}
|
|
iVar3 = piVar2[9];
|
|
if (0 < iVar3) {
|
|
iVar8 = piVar2[10];
|
|
iVar4 = piVar2[8];
|
|
iVar6 = piVar2[7];
|
|
iVar5 = local_14 + iVar4;
|
|
goto LAB_01013631;
|
|
}
|
|
}
|
|
else {
|
|
if (0 < local_20) {
|
|
iVar5 = local_14 + local_24;
|
|
iVar4 = local_24;
|
|
iVar6 = local_28;
|
|
iVar3 = local_20;
|
|
iVar8 = local_1c;
|
|
LAB_01013631:
|
|
FUN_0100469c((BITMAPINFO **)&DAT_01025088,iVar6,iVar4,local_10 + iVar6,iVar5,iVar3,iVar8
|
|
);
|
|
}
|
|
}
|
|
local_c = local_c + 1;
|
|
local_8 = local_8 + 1;
|
|
} while (local_c < DAT_01025070);
|
|
}
|
|
FUN_010046ed();
|
|
}
|
|
DAT_010250c0 = 0;
|
|
FUN_0101320d();
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_01013670(void)
|
|
|
|
{
|
|
int iVar1;
|
|
|
|
FUN_0100460c((LPCVOID *)&DAT_01025088);
|
|
FUN_010049d6((undefined4 *)&DAT_01025058);
|
|
iVar1 = 0;
|
|
if (0 < DAT_010250b4) {
|
|
do {
|
|
FUN_01013283(*(int *)(DAT_01025084 + iVar1 * 4));
|
|
iVar1 = iVar1 + 1;
|
|
} while (iVar1 < DAT_010250b4);
|
|
}
|
|
iVar1 = 0;
|
|
if (0 < DAT_01025070) {
|
|
do {
|
|
FUN_010132e8(*(int *)(DAT_0102506c + iVar1 * 4));
|
|
iVar1 = iVar1 + 1;
|
|
} while (iVar1 < DAT_01025070);
|
|
}
|
|
FUN_01005541(DAT_0102506c);
|
|
FUN_01005541(DAT_01025068);
|
|
FUN_01005541(DAT_01025084);
|
|
DAT_01025070 = 0;
|
|
DAT_010250b4 = 0;
|
|
DAT_010250c0 = 0;
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
|
|
|
|
void FUN_01013705(int param_1,float param_2,float param_3,int *param_4,int *param_5)
|
|
|
|
{
|
|
int *piVar1;
|
|
|
|
piVar1 = param_5;
|
|
_DAT_01024f04 = _DAT_01024f04 + 1;
|
|
_DAT_010250b0 = param_3;
|
|
_DAT_010250bc = param_2;
|
|
_DAT_010250b8 = 4294967296.00000000 / param_3 + param_2;
|
|
DAT_01025084 = FUN_010054c2(4000);
|
|
DAT_01025068 = FUN_010054c2(4000);
|
|
DAT_0102506c = FUN_010054c2(0x50);
|
|
FUN_0100459a((int **)&DAT_01025088,param_4,param_5);
|
|
FUN_01004989(&DAT_01025058,(uint)param_4,(int)param_5);
|
|
FUN_01004a08((int)&DAT_01025058,(int)DAT_01025058,(int)DAT_0102505a,0,0,0xffff);
|
|
_DAT_01025078 = 0;
|
|
_DAT_01025074 = 0;
|
|
_DAT_0102507c = param_4;
|
|
_DAT_01025080 = param_5;
|
|
DAT_010250a9 = 0;
|
|
DAT_010250a5 = 0;
|
|
param_5 = (int *)&DAT_010250c8;
|
|
do {
|
|
FUN_010045aa(param_5,0x40,0x40,1);
|
|
param_5 = (int *)((int)param_5 + 0x25);
|
|
} while ((int)param_5 < 0x10253ac);
|
|
DAT_010253b4 = param_1;
|
|
if (param_1 == 0) {
|
|
FUN_010047fa((undefined4 *)&DAT_01025088,DAT_01025094,DAT_01025098,0,0,0);
|
|
}
|
|
else {
|
|
FUN_01004870((int)&DAT_01025088,(int)param_4,(int)piVar1,0,0,param_1,0,0);
|
|
}
|
|
_DAT_01024f04 = _DAT_01024f04 + -1;
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_0101382a(int param_1)
|
|
|
|
{
|
|
if ((*(char *)(param_1 + 0x19) != '\x02') && (DAT_010250c0 < 999)) {
|
|
*(int *)(DAT_01025068 + DAT_010250c0 * 4) = param_1;
|
|
DAT_010250c0 = DAT_010250c0 + 1;
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
|
|
|
|
int * FUN_0101385c(int param_1,int param_2,int param_3,int param_4,int param_5,int *param_6)
|
|
|
|
{
|
|
int *piVar1;
|
|
int *piVar2;
|
|
|
|
piVar1 = FUN_010054c2(0x5c);
|
|
piVar2 = (int *)0x0;
|
|
if (piVar1 != (int *)0x0) {
|
|
piVar1[1] = param_5;
|
|
piVar1[4] = param_2;
|
|
*piVar1 = param_4;
|
|
*(undefined *)((int)piVar1 + 0x19) = (char)param_1;
|
|
*(undefined *)(piVar1 + 6) = 0;
|
|
piVar1[0x11] = 0;
|
|
piVar1[0x12] = 0;
|
|
if (param_6 == (int *)0x0) {
|
|
piVar1[0x15] = -1;
|
|
piVar1[0x16] = -1;
|
|
piVar1[0x13] = 0;
|
|
piVar1[0x14] = 0;
|
|
}
|
|
else {
|
|
piVar1[0x13] = *param_6;
|
|
piVar1[0x14] = param_6[1];
|
|
piVar1[0x15] = param_6[2];
|
|
piVar1[0x16] = param_6[3];
|
|
}
|
|
if (param_2 == 0) {
|
|
piVar1[2] = 0;
|
|
piVar1[3] = 0;
|
|
}
|
|
else {
|
|
piVar1[2] = *(int *)(param_2 + 0xc);
|
|
piVar1[3] = *(int *)(param_2 + 0x10);
|
|
}
|
|
piVar1[5] = param_3;
|
|
piVar1[0xc] = 0;
|
|
piVar1[0xb] = 0;
|
|
if ((param_3 == 0) && (param_1 != 2)) {
|
|
piVar1[5] = DAT_010253b8;
|
|
piVar1[0xb] = param_4 - _DAT_010253bc;
|
|
piVar1[0xc] = param_5 - _DAT_010253c0;
|
|
}
|
|
piVar1[7] = *piVar1;
|
|
piVar1[8] = piVar1[1];
|
|
piVar1[9] = piVar1[2];
|
|
piVar1[10] = piVar1[3];
|
|
if (param_1 == 2) {
|
|
*(int **)(DAT_0102506c + DAT_01025070 * 4) = piVar1;
|
|
DAT_01025070 = DAT_01025070 + 1;
|
|
piVar2 = piVar1;
|
|
}
|
|
else {
|
|
*(int **)(DAT_01025084 + DAT_010250b4 * 4) = piVar1;
|
|
DAT_010250b4 = DAT_010250b4 + 1;
|
|
FUN_0101382a((int)piVar1);
|
|
piVar2 = piVar1;
|
|
}
|
|
}
|
|
return piVar2;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
|
|
|
|
void FUN_0101394e(undefined4 param_1,undefined4 param_2,undefined4 param_3)
|
|
|
|
{
|
|
DAT_010253b8 = param_1;
|
|
_DAT_010253bc = param_2;
|
|
_DAT_010253c0 = param_3;
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_01013974(undefined4 *param_1,int param_2,undefined4 param_3,undefined4 param_4,
|
|
undefined4 param_5)
|
|
|
|
{
|
|
if (param_1 != (undefined4 *)0x0) {
|
|
*param_1 = param_4;
|
|
param_1[1] = param_5;
|
|
param_1[4] = param_2;
|
|
if (param_2 != 0) {
|
|
param_1[2] = *(undefined4 *)(param_2 + 0xc);
|
|
param_1[3] = *(undefined4 *)(param_2 + 0x10);
|
|
}
|
|
param_1[5] = param_3;
|
|
FUN_0101382a((int)param_1);
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_010139b6(int param_1,int param_2)
|
|
|
|
{
|
|
if ((param_1 != 0) && (*(int *)(param_1 + 0x10) != param_2)) {
|
|
*(int *)(param_1 + 0x10) = param_2;
|
|
if (param_2 != 0) {
|
|
*(undefined4 *)(param_1 + 8) = *(undefined4 *)(param_2 + 0xc);
|
|
*(undefined4 *)(param_1 + 0xc) = *(undefined4 *)(param_2 + 0x10);
|
|
}
|
|
FUN_0101382a(param_1);
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
|
|
|
|
void FUN_010139ec(undefined4 *param_1,int param_2,float param_3,undefined4 param_4,
|
|
undefined4 param_5)
|
|
|
|
{
|
|
float fVar1;
|
|
undefined2 uVar2;
|
|
bool in_PF;
|
|
|
|
if (param_1 != (undefined4 *)0x0) {
|
|
param_1[4] = param_2;
|
|
if (param_2 != 0) {
|
|
*param_1 = param_4;
|
|
param_1[1] = param_5;
|
|
param_1[2] = *(undefined4 *)(param_2 + 0xc);
|
|
param_1[3] = *(undefined4 *)(param_2 + 0x10);
|
|
}
|
|
if (in_PF) {
|
|
fVar1 = (param_3 - _DAT_010250bc) * _DAT_010250b0;
|
|
if ((ushort)((ushort)(fVar1 < _DAT_010250b8) << 8 | (ushort)(fVar1 == _DAT_010250b8) << 0xe)
|
|
== 0) {
|
|
*(undefined2 *)((int)param_1 + 0x1a) = 0xffff;
|
|
}
|
|
else {
|
|
uVar2 = _ftol();
|
|
*(undefined2 *)((int)param_1 + 0x1a) = uVar2;
|
|
}
|
|
}
|
|
else {
|
|
*(undefined2 *)((int)param_1 + 0x1a) = 0;
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_01013a6a(void)
|
|
|
|
{
|
|
FUN_010130f3();
|
|
FUN_01004787((BITMAPINFO **)&DAT_01025088,DAT_010250a5,DAT_010250a9);
|
|
FUN_0101320d();
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_01013a8f(int param_1,int param_2,int param_3,int param_4,int param_5,int param_6)
|
|
|
|
{
|
|
DAT_010253ac = DAT_010253ac + param_1;
|
|
DAT_010253b0 = DAT_010253b0 + param_2;
|
|
FUN_010130f3();
|
|
FUN_01004705((BITMAPINFO **)&DAT_01025088,param_3,param_4,DAT_010250a5 + DAT_010253ac + param_3,
|
|
DAT_010250a9 + DAT_010253b0 + param_4,param_5,param_6);
|
|
FUN_0101320d();
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
undefined4 * __thiscall FUN_01013af1(void *this,char *param_1,undefined4 param_2)
|
|
|
|
{
|
|
char cVar1;
|
|
int iVar2;
|
|
char *pcVar3;
|
|
int *piVar4;
|
|
|
|
*(undefined4 *)this = 0;
|
|
*(undefined4 *)((int)this + 8) = param_2;
|
|
iVar2 = _ftol();
|
|
*(int *)((int)this + 0xc) = DAT_01024f84 - iVar2;
|
|
if (param_1 == (char *)0x0) {
|
|
*(undefined4 *)((int)this + 4) = 0;
|
|
}
|
|
else {
|
|
pcVar3 = param_1;
|
|
do {
|
|
cVar1 = *pcVar3;
|
|
pcVar3 = pcVar3 + 1;
|
|
} while (cVar1 != '\0');
|
|
piVar4 = FUN_010054c2((uint)(pcVar3 + (1 - (int)(param_1 + 1))));
|
|
*(int **)((int)this + 4) = piVar4;
|
|
}
|
|
pcVar3 = *(char **)((int)this + 4);
|
|
if (pcVar3 != (char *)0x0) {
|
|
do {
|
|
cVar1 = *param_1;
|
|
param_1 = param_1 + 1;
|
|
*pcVar3 = cVar1;
|
|
pcVar3 = pcVar3 + 1;
|
|
} while (cVar1 != '\0');
|
|
}
|
|
return (undefined4 *)this;
|
|
}
|
|
|
|
|
|
|
|
float10 __fastcall FUN_01013b60(int param_1)
|
|
|
|
{
|
|
return (float10)(*(int *)(param_1 + 0xc) - DAT_01024f84) * (float10)0.00100000;
|
|
}
|
|
|
|
|
|
|
|
void __thiscall FUN_01013b82(void *this,undefined4 param_1)
|
|
|
|
{
|
|
int iVar1;
|
|
|
|
*(undefined4 *)((int)this + 8) = param_1;
|
|
iVar1 = _ftol();
|
|
*(int *)((int)this + 0xc) = DAT_01024f84 - iVar1;
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
int * FUN_01013bb3(LPCSTR param_1,int param_2)
|
|
|
|
{
|
|
short sVar1;
|
|
int *piVar2;
|
|
short *psVar3;
|
|
int iVar4;
|
|
int iVar5;
|
|
int *piVar6;
|
|
|
|
piVar2 = FUN_010054c2(0x44);
|
|
if (piVar2 != (int *)0x0) {
|
|
*piVar2 = -9999;
|
|
piVar2[2] = param_2;
|
|
psVar3 = (short *)FUN_010063db(DAT_01027c0c,param_1,10);
|
|
if (psVar3 != (short *)0x0) {
|
|
sVar1 = *psVar3;
|
|
piVar2[3] = (int)psVar3[1];
|
|
piVar2[4] = (int)psVar3[2];
|
|
piVar2[5] = (int)psVar3[3];
|
|
piVar2[6] = (int)psVar3[4];
|
|
iVar5 = (int)sVar1;
|
|
piVar6 = piVar2 + 7;
|
|
param_2 = 10;
|
|
do {
|
|
iVar4 = FUN_01006270((int)DAT_01027c0c,iVar5,1);
|
|
*piVar6 = iVar4;
|
|
piVar6 = piVar6 + 1;
|
|
iVar5 = iVar5 + 1;
|
|
param_2 = param_2 + -1;
|
|
} while (param_2 != 0);
|
|
return piVar2;
|
|
}
|
|
FUN_01005541((int)piVar2);
|
|
}
|
|
return (int *)0x0;
|
|
}
|
|
|
|
|
|
|
|
void FUN_01013c48(int *param_1)
|
|
|
|
{
|
|
int *piVar1;
|
|
int iVar2;
|
|
|
|
piVar1 = FUN_010054c2(0x44);
|
|
if (piVar1 != (int *)0x0) {
|
|
iVar2 = 0x11;
|
|
while (iVar2 != 0) {
|
|
iVar2 = iVar2 + -1;
|
|
*piVar1 = *param_1;
|
|
param_1 = param_1 + 1;
|
|
piVar1 = piVar1 + 1;
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_01013c6f(int param_1)
|
|
|
|
{
|
|
if (param_1 != 0) {
|
|
FUN_01005541(param_1);
|
|
return;
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_01013c89(undefined4 *param_1,undefined4 param_2)
|
|
|
|
{
|
|
if (param_1 != (undefined4 *)0x0) {
|
|
*param_1 = param_2;
|
|
param_1[1] = 1;
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_01013caa(int param_1,int param_2)
|
|
|
|
{
|
|
if (param_1 != 0) {
|
|
if (*(int *)(param_1 + 8) == 0) {
|
|
FUN_010047fa((undefined4 *)&DAT_01025088,*(uint *)(param_1 + 0x14),*(int *)(param_1 + 0x18),
|
|
*(int *)(param_1 + 0xc),*(int *)(param_1 + 0x10),0);
|
|
}
|
|
else {
|
|
FUN_01004870((int)&DAT_01025088,*(int *)(param_1 + 0x14),*(int *)(param_1 + 0x18),
|
|
*(int *)(param_1 + 0xc),*(int *)(param_1 + 0x10),*(int *)(param_1 + 8),
|
|
*(int *)(param_1 + 0xc),*(int *)(param_1 + 0x10));
|
|
}
|
|
if (param_2 != 0) {
|
|
FUN_01004705((BITMAPINFO **)&DAT_01025088,*(int *)(param_1 + 0xc),*(int *)(param_1 + 0x10),
|
|
DAT_010250a5 + *(int *)(param_1 + 0xc),DAT_010250a9 + *(int *)(param_1 + 0x10),
|
|
*(int *)(param_1 + 0x14),*(int *)(param_1 + 0x18));
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_01013d2d(int *param_1)
|
|
|
|
{
|
|
char *pcVar1;
|
|
char cVar2;
|
|
int iVar3;
|
|
int iVar4;
|
|
int iVar5;
|
|
char *pcVar6;
|
|
int iVar7;
|
|
char local_14 [12];
|
|
undefined4 local_8;
|
|
|
|
local_8 = DAT_01024778;
|
|
if (((param_1 != (int *)0x0) && (param_1[1] != 0)) && (*param_1 < 0x3b9aca01)) {
|
|
iVar3 = param_1[4];
|
|
iVar7 = param_1[3] + param_1[5];
|
|
param_1[1] = 0;
|
|
FUN_01013caa((int)param_1,0);
|
|
if (-1 < *param_1) {
|
|
_ltoa(*param_1,local_14,10);
|
|
pcVar6 = local_14;
|
|
do {
|
|
cVar2 = *pcVar6;
|
|
pcVar6 = pcVar6 + 1;
|
|
} while (cVar2 != '\0');
|
|
pcVar6 = pcVar6 + (-1 - (int)(local_14 + 1));
|
|
while (-1 < (int)pcVar6) {
|
|
pcVar1 = local_14 + (int)pcVar6;
|
|
*pcVar1 = *pcVar1 + -0x30;
|
|
iVar4 = param_1[(int)*pcVar1 + 7];
|
|
iVar5 = *(int *)(iVar4 + 0xc);
|
|
iVar7 = iVar7 - iVar5;
|
|
if (DAT_010253b4 == 0) {
|
|
FUN_01004870((int)&DAT_01025088,iVar5,*(int *)(iVar4 + 0x10),iVar7,iVar3,iVar4,0,0);
|
|
}
|
|
else {
|
|
FUN_010048ec((int)&DAT_01025088,iVar5,*(int *)(iVar4 + 0x10),iVar7,iVar3,iVar4,0,0);
|
|
}
|
|
pcVar6 = pcVar6 + -1;
|
|
}
|
|
}
|
|
FUN_01004705((BITMAPINFO **)&DAT_01025088,param_1[3],param_1[4],DAT_010250a5 + param_1[3],
|
|
DAT_010250a9 + param_1[4],param_1[5],param_1[6]);
|
|
}
|
|
FUN_0101cd9e();
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
undefined4 FUN_01013e25(void)
|
|
|
|
{
|
|
return 1;
|
|
}
|
|
|
|
|
|
|
|
void FUN_01013e2e(void)
|
|
|
|
{
|
|
int iVar1;
|
|
|
|
if (DAT_010253c4 != 0) {
|
|
iVar1 = 8;
|
|
do {
|
|
if (*(LPCVOID **)(iVar1 + DAT_010253c4) != (LPCVOID *)0x0) {
|
|
FUN_0100460c(*(LPCVOID **)(iVar1 + DAT_010253c4));
|
|
FUN_01005541(*(int *)(iVar1 + DAT_010253c4));
|
|
}
|
|
iVar1 = iVar1 + 4;
|
|
} while (iVar1 < 0x208);
|
|
DAT_010253c4 = 0;
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_01013e73(LPCSTR param_1)
|
|
|
|
{
|
|
char *pcVar1;
|
|
undefined4 *puVar2;
|
|
HRSRC hResInfo;
|
|
HGLOBAL hResData;
|
|
short *psVar3;
|
|
short *psVar4;
|
|
int *piVar5;
|
|
int *piVar6;
|
|
uint uVar7;
|
|
int iVar8;
|
|
uint uVar9;
|
|
int iVar10;
|
|
int *piVar11;
|
|
undefined4 *puVar12;
|
|
int *piVar13;
|
|
int local_14;
|
|
int *local_10;
|
|
undefined4 *local_c;
|
|
int local_8;
|
|
|
|
hResInfo = FindResourceA(DAT_01028204,param_1,(LPCSTR)0xa);
|
|
if ((hResInfo != (HRSRC)0x0) &&
|
|
(hResData = LoadResource(DAT_01028204,hResInfo), hResData != (HGLOBAL)0x0)) {
|
|
psVar3 = (short *)LockResource(hResData);
|
|
local_c = (undefined4 *)(psVar3 + 0x43);
|
|
DAT_010253c4 = FUN_010054c2(0x208);
|
|
if (DAT_010253c4 == (int *)0x0) {
|
|
FreeResource(hResData);
|
|
}
|
|
else {
|
|
iVar10 = 0x80;
|
|
iVar8 = 0x80;
|
|
piVar5 = DAT_010253c4 + 2;
|
|
while (iVar8 != 0) {
|
|
iVar8 = iVar8 + -1;
|
|
*piVar5 = 0;
|
|
piVar5 = piVar5 + 1;
|
|
}
|
|
iVar8 = 0;
|
|
psVar4 = psVar3 + 3;
|
|
do {
|
|
if (iVar8 < (int)*(char *)psVar4) {
|
|
iVar8 = (int)*(char *)psVar4;
|
|
}
|
|
psVar4 = (short *)((int)psVar4 + 1);
|
|
iVar10 = iVar10 + -1;
|
|
} while (iVar10 != 0);
|
|
piVar5 = FUN_010054c2((int)psVar3[2] * iVar8 + 4);
|
|
if (piVar5 == (int *)0x0) {
|
|
FUN_01005541((int)DAT_010253c4);
|
|
DAT_010253c4 = (int *)0x0;
|
|
}
|
|
else {
|
|
local_8 = 0;
|
|
*DAT_010253c4 = (int)*psVar3;
|
|
DAT_010253c4[1] = (int)psVar3[2];
|
|
param_1 = (LPCSTR)0x8;
|
|
do {
|
|
pcVar1 = (char *)((int)psVar3 + local_8 + 6);
|
|
if (*pcVar1 != '\0') {
|
|
piVar6 = FUN_010054c2(0x25);
|
|
*(int **)(param_1 + (int)DAT_010253c4) = piVar6;
|
|
if (*(undefined4 **)(param_1 + (int)DAT_010253c4) == (undefined4 *)0x0) break;
|
|
iVar8 = FUN_010045aa(*(undefined4 **)(param_1 + (int)DAT_010253c4),(int)*pcVar1,
|
|
(int)psVar3[2],0);
|
|
if (iVar8 != 0) {
|
|
FUN_01005541(DAT_010253c4[local_8 + 2]);
|
|
DAT_010253c4[local_8 + 2] = 0;
|
|
break;
|
|
}
|
|
uVar7 = (int)*pcVar1 * (int)psVar3[2] + 1;
|
|
puVar2 = (undefined4 *)((int)local_c + uVar7);
|
|
uVar9 = uVar7 >> 2;
|
|
puVar12 = (undefined4 *)((int)piVar5 + 3);
|
|
while (uVar9 != 0) {
|
|
uVar9 = uVar9 - 1;
|
|
*puVar12 = *local_c;
|
|
local_c = local_c + 1;
|
|
puVar12 = puVar12 + 1;
|
|
}
|
|
local_14 = 0;
|
|
uVar7 = uVar7 & 3;
|
|
while (uVar7 != 0) {
|
|
uVar7 = uVar7 - 1;
|
|
*(undefined *)puVar12 = *(undefined *)local_c;
|
|
local_c = (undefined4 *)((int)local_c + 1);
|
|
puVar12 = (undefined4 *)((int)puVar12 + 1);
|
|
}
|
|
uVar7 = SEXT14(*pcVar1);
|
|
local_10 = piVar5 + 1;
|
|
iVar8 = *(int *)(param_1 + (int)DAT_010253c4);
|
|
iVar10 = *(int *)(iVar8 + 0x14);
|
|
piVar6 = (int *)(*(int *)(iVar8 + 8) - (*(int *)(iVar8 + 0x10) + -1) * -iVar10);
|
|
local_c = puVar2;
|
|
if (0 < psVar3[2]) {
|
|
do {
|
|
uVar9 = uVar7 >> 2;
|
|
piVar11 = local_10;
|
|
piVar13 = piVar6;
|
|
while (uVar9 != 0) {
|
|
uVar9 = uVar9 - 1;
|
|
*piVar13 = *piVar11;
|
|
piVar11 = piVar11 + 1;
|
|
piVar13 = piVar13 + 1;
|
|
}
|
|
uVar9 = uVar7 & 3;
|
|
local_14 = local_14 + 1;
|
|
while (uVar9 != 0) {
|
|
uVar9 = uVar9 - 1;
|
|
*(undefined *)piVar13 = *(undefined *)piVar11;
|
|
piVar11 = (int *)((int)piVar11 + 1);
|
|
piVar13 = (int *)((int)piVar13 + 1);
|
|
}
|
|
local_10 = (int *)((int)local_10 + uVar7);
|
|
piVar6 = (int *)((int)piVar6 + -iVar10);
|
|
local_c = puVar2;
|
|
} while (local_14 < (int)psVar3[2]);
|
|
}
|
|
}
|
|
param_1 = param_1 + 4;
|
|
local_8 = local_8 + 1;
|
|
} while ((int)param_1 < 0x208);
|
|
if (local_8 != 0x80) {
|
|
FUN_01013e2e();
|
|
}
|
|
}
|
|
FreeResource(hResData);
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
undefined4 * __thiscall FUN_01014092(void *this,int param_1,int param_2)
|
|
|
|
{
|
|
short *psVar1;
|
|
|
|
FUN_01017c6d(this,param_1,param_2,1);
|
|
*(undefined4 *)this = 0x10023b4;
|
|
*(undefined4 *)((int)this + 0x2a) = 0;
|
|
*(undefined4 *)((int)this + 0x2e) = 0;
|
|
*(undefined4 *)((int)this + 0x32) = 0;
|
|
*(undefined4 *)((int)this + 0x36) = 0;
|
|
*(undefined4 *)((int)this + 0x3e) = DAT_010253b4;
|
|
*(undefined4 *)((int)this + 0x42) = DAT_010253c4;
|
|
*(undefined4 *)((int)this + 0x46) = 0;
|
|
*(undefined4 *)((int)this + 0x4a) = 0;
|
|
*(undefined4 *)((int)this + 0x3a) = 0;
|
|
if (0 < param_2) {
|
|
psVar1 = FUN_0100981a(param_2,0x5dc,¶m_1);
|
|
*(int *)((int)this + 0x2a) = (int)*psVar1;
|
|
*(int *)((int)this + 0x2e) = (int)psVar1[1];
|
|
*(int *)((int)this + 0x32) = (int)psVar1[2];
|
|
*(int *)((int)this + 0x36) = (int)psVar1[3];
|
|
}
|
|
return (undefined4 *)this;
|
|
}
|
|
|
|
|
|
|
|
void * __thiscall FUN_01014115(void *this,byte param_1)
|
|
|
|
{
|
|
if (*(int *)((int)this + 4) != 0) {
|
|
FUN_01005541(*(int *)((int)this + 4));
|
|
}
|
|
if ((param_1 & 1) != 0) {
|
|
operator_delete(this);
|
|
}
|
|
return this;
|
|
}
|
|
|
|
|
|
|
|
void __fastcall FUN_01014143(int param_1)
|
|
|
|
{
|
|
int iVar1;
|
|
undefined4 *this;
|
|
undefined4 uVar2;
|
|
|
|
if (*(int *)(param_1 + 0x3e) == 0) {
|
|
FUN_010047fa((undefined4 *)&DAT_01025088,*(uint *)(param_1 + 0x32),*(int *)(param_1 + 0x36),
|
|
*(int *)(param_1 + 0x2a),*(int *)(param_1 + 0x2e),0);
|
|
}
|
|
else {
|
|
FUN_01004870((int)&DAT_01025088,*(int *)(param_1 + 0x32),*(int *)(param_1 + 0x36),
|
|
*(int *)(param_1 + 0x2a),*(int *)(param_1 + 0x2e),*(int *)(param_1 + 0x3e),
|
|
*(int *)(param_1 + 0x2a),*(int *)(param_1 + 0x2e));
|
|
}
|
|
FUN_01004705((BITMAPINFO **)&DAT_01025088,*(int *)(param_1 + 0x2a),*(int *)(param_1 + 0x2e),
|
|
DAT_010250a5 + *(int *)(param_1 + 0x2a),DAT_010250a9 + *(int *)(param_1 + 0x2e),
|
|
*(int *)(param_1 + 0x32),*(int *)(param_1 + 0x36));
|
|
iVar1 = *(int *)(param_1 + 0x3a);
|
|
if (iVar1 != 0) {
|
|
if (iVar1 != -1) {
|
|
FUN_01007659(iVar1);
|
|
}
|
|
*(undefined4 *)(param_1 + 0x3a) = 0;
|
|
}
|
|
while (*(int *)(param_1 + 0x46) != 0) {
|
|
this = *(undefined4 **)(param_1 + 0x46);
|
|
uVar2 = *this;
|
|
if (this != (undefined4 *)0x0) {
|
|
FUN_01014115(this,1);
|
|
}
|
|
*(undefined4 *)(param_1 + 0x46) = uVar2;
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_010141e1(undefined4 param_1,undefined **param_2)
|
|
|
|
{
|
|
undefined4 *this;
|
|
undefined4 uVar1;
|
|
|
|
this = *(undefined4 **)((int)param_2 + 0x46);
|
|
*(undefined4 *)((int)param_2 + 0x3a) = 0;
|
|
if (this != (undefined4 *)0x0) {
|
|
uVar1 = *this;
|
|
FUN_01014115(this,1);
|
|
*(undefined4 *)((int)param_2 + 0x46) = uVar1;
|
|
FUN_01014269();
|
|
FUN_01011ec9(0x3c,param_2);
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void __fastcall FUN_0101421c(undefined4 *param_1)
|
|
|
|
{
|
|
int iVar1;
|
|
int *this;
|
|
|
|
iVar1 = *(int *)((int)param_1 + 0x3a);
|
|
*param_1 = 0x10023b4;
|
|
if (iVar1 != 0) {
|
|
if (iVar1 != -1) {
|
|
FUN_01007659(iVar1);
|
|
}
|
|
*(undefined4 *)((int)param_1 + 0x3a) = 0;
|
|
}
|
|
iVar1 = *(int *)((int)param_1 + 0x46);
|
|
while (iVar1 != 0) {
|
|
this = *(int **)((int)param_1 + 0x46);
|
|
iVar1 = *this;
|
|
if (this != (int *)0x0) {
|
|
FUN_01014115(this,1);
|
|
}
|
|
*(int *)((int)param_1 + 0x46) = iVar1;
|
|
}
|
|
FUN_01018fbc(param_1);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void __fastcall FUN_01014269(int iParm1)
|
|
|
|
{
|
|
byte bVar1;
|
|
int *this;
|
|
byte *pbVar2;
|
|
int iVar3;
|
|
bool in_PF;
|
|
float10 fVar4;
|
|
float local_28;
|
|
byte *local_10;
|
|
int local_c;
|
|
byte *local_8;
|
|
|
|
if (*(int *)(iParm1 + 0x3e) == 0) {
|
|
FUN_010047fa((undefined4 *)&DAT_01025088,*(uint *)(iParm1 + 0x32),*(int *)(iParm1 + 0x36),
|
|
*(int *)(iParm1 + 0x2a),*(int *)(iParm1 + 0x2e),0);
|
|
}
|
|
else {
|
|
FUN_01004870((int)&DAT_01025088,*(int *)(iParm1 + 0x32),*(int *)(iParm1 + 0x36),
|
|
*(int *)(iParm1 + 0x2a),*(int *)(iParm1 + 0x2e),*(int *)(iParm1 + 0x3e),
|
|
*(int *)(iParm1 + 0x2a),*(int *)(iParm1 + 0x2e));
|
|
}
|
|
while (*(int *)(iParm1 + 0x46) != 0) {
|
|
this = *(int **)(iParm1 + 0x46);
|
|
if (in_PF) {
|
|
fVar4 = FUN_01013b60((int)this);
|
|
if (in_PF) {
|
|
if (in_PF) {
|
|
local_28 = (float)fVar4;
|
|
}
|
|
else {
|
|
local_28 = 0.25000000;
|
|
}
|
|
iVar3 = FUN_010074b7(local_28,iParm1,(int)FUN_010141e1);
|
|
*(int *)(iParm1 + 0x3a) = iVar3;
|
|
goto LAB_01014334;
|
|
}
|
|
iVar3 = *this;
|
|
}
|
|
else {
|
|
iVar3 = *this;
|
|
if (iVar3 == 0) {
|
|
*(undefined4 *)(iParm1 + 0x3a) = 0xffffffff;
|
|
LAB_01014334:
|
|
this = *(int **)(iParm1 + 0x42);
|
|
if (this == (int *)0x0) {
|
|
FUN_01004705((BITMAPINFO **)&DAT_01025088,*(int *)(iParm1 + 0x2a),*(int *)(iParm1 + 0x2e),
|
|
DAT_010250a5 + *(int *)(iParm1 + 0x2a),DAT_010250a9 + *(int *)(iParm1 + 0x2e)
|
|
,*(int *)(iParm1 + 0x32),*(int *)(iParm1 + 0x36));
|
|
FUN_01003803(*(LPCSTR *)(*(int *)(iParm1 + 0x46) + 4),
|
|
*(int *)(iParm1 + 0x2a) + DAT_010250a5,*(int *)(iParm1 + 0x2e) + DAT_010250a9
|
|
,*(int *)(iParm1 + 0x32),*(int *)(iParm1 + 0x36));
|
|
return;
|
|
}
|
|
pbVar2 = *(byte **)(*(int *)(iParm1 + 0x46) + 4);
|
|
local_c = *(int *)(iParm1 + 0x2e);
|
|
goto LAB_01014479;
|
|
}
|
|
}
|
|
if (this != (int *)0x0) {
|
|
FUN_01014115(this,1);
|
|
}
|
|
*(int *)(iParm1 + 0x46) = iVar3;
|
|
}
|
|
LAB_01014483:
|
|
FUN_01004705((BITMAPINFO **)&DAT_01025088,*(int *)(iParm1 + 0x2a),*(int *)(iParm1 + 0x2e),
|
|
DAT_010250a5 + *(int *)(iParm1 + 0x2a),DAT_010250a9 + *(int *)(iParm1 + 0x2e),
|
|
*(int *)(iParm1 + 0x32),*(int *)(iParm1 + 0x36));
|
|
return;
|
|
LAB_01014479:
|
|
bVar1 = *pbVar2;
|
|
if ((bVar1 == 0) || (*(int *)(iParm1 + 0x36) + *(int *)(iParm1 + 0x2e) < this[1] + local_c))
|
|
goto LAB_01014483;
|
|
iVar3 = 0;
|
|
local_10 = (byte *)0x0;
|
|
local_8 = pbVar2;
|
|
LAB_010143f9:
|
|
if (((bVar1 & 0x7f) == 0) || (((uint)bVar1 & 0x7f) == 10)) goto LAB_0101440a;
|
|
if (this[((uint)bVar1 & 0x7f) + 2] == 0) {
|
|
LAB_010143f5:
|
|
bVar1 = *local_8;
|
|
goto LAB_010143f9;
|
|
}
|
|
iVar3 = *this + *(int *)(this[((uint)bVar1 & 0x7f) + 2] + 0xc) + iVar3;
|
|
if (iVar3 <= *(int *)(iParm1 + 0x32)) {
|
|
if (*local_8 == 0x20) {
|
|
local_10 = local_8;
|
|
}
|
|
local_8 = local_8 + 1;
|
|
goto LAB_010143f5;
|
|
}
|
|
if (local_10 != (byte *)0x0) {
|
|
local_8 = local_10;
|
|
}
|
|
LAB_0101440a:
|
|
local_10 = *(byte **)(iParm1 + 0x2a);
|
|
while (pbVar2 < local_8) {
|
|
iVar3 = this[((uint)*pbVar2 & 0x7f) + 2];
|
|
pbVar2 = pbVar2 + 1;
|
|
if (iVar3 != 0) {
|
|
if (DAT_010253b4 == 0) {
|
|
FUN_01004870((int)&DAT_01025088,*(int *)(iVar3 + 0xc),*(int *)(iVar3 + 0x10),(int)local_10,
|
|
local_c,iVar3,0,0);
|
|
}
|
|
else {
|
|
FUN_010048ec((int)&DAT_01025088,*(int *)(iVar3 + 0xc),*(int *)(iVar3 + 0x10),(int)local_10,
|
|
local_c,iVar3,0,0);
|
|
}
|
|
this = *(int **)(iParm1 + 0x42);
|
|
local_10 = (byte *)((int)local_10 + *this + *(int *)(iVar3 + 0xc));
|
|
}
|
|
}
|
|
while ((*pbVar2 & 0x7f) == 0x20) {
|
|
pbVar2 = pbVar2 + 1;
|
|
}
|
|
if ((*pbVar2 & 0x7f) == 10) {
|
|
pbVar2 = pbVar2 + 1;
|
|
}
|
|
this = *(int **)(iParm1 + 0x42);
|
|
local_c = local_c + this[1];
|
|
goto LAB_01014479;
|
|
}
|
|
|
|
|
|
|
|
void __thiscall FUN_010144b7(int iParm1,byte *param_1,undefined4 param_2)
|
|
|
|
{
|
|
byte bVar1;
|
|
byte *pbVar2;
|
|
int iVar3;
|
|
void *this;
|
|
undefined4 *this_00;
|
|
byte *pbVar4;
|
|
bool bVar5;
|
|
bool in_PF;
|
|
|
|
if (param_1 != (byte *)0x0) {
|
|
if (*(int *)(iParm1 + 0x46) != 0) {
|
|
pbVar2 = *(byte **)((int)*(void **)(iParm1 + 0x4a) + 4);
|
|
pbVar4 = param_1;
|
|
do {
|
|
bVar1 = *pbVar4;
|
|
bVar5 = bVar1 < *pbVar2;
|
|
if (bVar1 != *pbVar2) {
|
|
LAB_010144fe:
|
|
iVar3 = (1 - (uint)bVar5) - (uint)(bVar5 != false);
|
|
goto LAB_01014503;
|
|
}
|
|
if (bVar1 == 0) break;
|
|
bVar1 = pbVar4[1];
|
|
bVar5 = bVar1 < pbVar2[1];
|
|
if (bVar1 != pbVar2[1]) goto LAB_010144fe;
|
|
pbVar4 = pbVar4 + 2;
|
|
pbVar2 = pbVar2 + 2;
|
|
} while (bVar1 != 0);
|
|
iVar3 = 0;
|
|
LAB_01014503:
|
|
if (iVar3 == 0) {
|
|
FUN_01013b82(*(void **)(iParm1 + 0x4a),param_2);
|
|
if (*(int *)(iParm1 + 0x4a) != *(int *)(iParm1 + 0x46)) {
|
|
return;
|
|
}
|
|
iVar3 = *(int *)(iParm1 + 0x3a);
|
|
if ((iVar3 != 0) && (iVar3 != -1)) {
|
|
FUN_01007659(iVar3);
|
|
}
|
|
if (in_PF) {
|
|
iVar3 = FUN_010074b7(param_2,iParm1,(int)FUN_010141e1);
|
|
*(int *)(iParm1 + 0x3a) = iVar3;
|
|
return;
|
|
}
|
|
*(undefined4 *)(iParm1 + 0x3a) = 0xffffffff;
|
|
return;
|
|
}
|
|
}
|
|
if (*(int *)(iParm1 + 0x3a) == -1) {
|
|
FUN_01014143(iParm1);
|
|
}
|
|
this = operator_new(0x10);
|
|
if (this == (void *)0x0) {
|
|
this_00 = (undefined4 *)0x0;
|
|
}
|
|
else {
|
|
this_00 = FUN_01013af1(this,(char *)param_1,param_2);
|
|
}
|
|
if (this_00 != (undefined4 *)0x0) {
|
|
if (this_00[1] == 0) {
|
|
FUN_01014115(this_00,1);
|
|
}
|
|
else {
|
|
if (*(int *)(iParm1 + 0x46) == 0) {
|
|
*(undefined4 **)(iParm1 + 0x46) = this_00;
|
|
}
|
|
else {
|
|
*(undefined4 **)*(undefined4 **)(iParm1 + 0x4a) = this_00;
|
|
}
|
|
*(undefined4 **)(iParm1 + 0x4a) = this_00;
|
|
if (*(int *)(iParm1 + 0x3a) == 0) {
|
|
FUN_01014269();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
undefined4 * __thiscall FUN_010145cf(void *this,byte param_1)
|
|
|
|
{
|
|
FUN_0101421c((undefined4 *)this);
|
|
if ((param_1 & 1) != 0) {
|
|
operator_delete(this);
|
|
}
|
|
return (undefined4 *)this;
|
|
}
|
|
|
|
|
|
|
|
void FUN_010145f5(size_t param_1)
|
|
|
|
{
|
|
calloc(1,param_1);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void thunk_FUN_01013a6a(void)
|
|
|
|
{
|
|
FUN_010130f3();
|
|
FUN_01004787((BITMAPINFO **)&DAT_01025088,DAT_010250a5,DAT_010250a9);
|
|
FUN_0101320d();
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
|
|
|
|
undefined4 FUN_0101461a(int param_1)
|
|
|
|
{
|
|
if (param_1 == 1) {
|
|
if (_DAT_01025570 == 0) {
|
|
FUN_010056a9(0x67,1);
|
|
FUN_010056a9(0x191,1);
|
|
FUN_010056d3(0x194,0);
|
|
if ((DAT_01025658 != 0) && (*(int *)(DAT_01025658 + 0xe6) != 0)) {
|
|
*(undefined *)(*(int *)(DAT_01025658 + 0xe6) + 5) = 0;
|
|
}
|
|
}
|
|
else {
|
|
FUN_010056a9(0x191,0);
|
|
FUN_010056a9(0x67,0);
|
|
FUN_010056d3(0x194,1);
|
|
if ((DAT_01025658 != 0) && (*(int *)(DAT_01025658 + 0xe6) != 0)) {
|
|
*(undefined *)(*(int *)(DAT_01025658 + 0xe6) + 5) = 1;
|
|
}
|
|
}
|
|
}
|
|
else {
|
|
if (param_1 == 2) {
|
|
FUN_010056a9(0x191,0);
|
|
if (_DAT_01025570 == 0) {
|
|
FUN_010056a9(0x67,1);
|
|
FUN_010056d3(0x194,0);
|
|
}
|
|
if ((DAT_01025658 != 0) && (*(code **)(DAT_01025658 + 0x10a) != (code *)0x0)) {
|
|
(**(code **)**(code ***)(code **)(DAT_01025658 + 0x10a))(0x1d,0x3fb33333);
|
|
}
|
|
}
|
|
else {
|
|
if ((param_1 == 3) || (param_1 == 4)) {
|
|
FUN_010056a9(0x191,0);
|
|
FUN_010056a9(0x67,0);
|
|
_DAT_01025574 = 5000;
|
|
}
|
|
}
|
|
}
|
|
DAT_01025568 = param_1;
|
|
return 1;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
|
|
|
|
undefined4 FUN_01014743(int param_1)
|
|
|
|
{
|
|
int iVar1;
|
|
|
|
if ((DAT_01025568 != 0) && (0 < DAT_01025568)) {
|
|
if (DAT_01025568 < 3) {
|
|
return 0;
|
|
}
|
|
if (DAT_01025568 == 3) {
|
|
_DAT_01025574 = _DAT_01025574 - param_1;
|
|
if ((-1 < _DAT_01025574) && (-1 < param_1)) {
|
|
return 1;
|
|
}
|
|
iVar1 = 4;
|
|
}
|
|
else {
|
|
if (DAT_01025568 != 4) {
|
|
return 1;
|
|
}
|
|
_DAT_01025574 = _DAT_01025574 - param_1;
|
|
if ((-1 < _DAT_01025574) && (-1 < param_1)) {
|
|
return 1;
|
|
}
|
|
iVar1 = 1;
|
|
}
|
|
FUN_0101461a(iVar1);
|
|
}
|
|
return 1;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
|
|
|
|
void FUN_0101479b(void)
|
|
|
|
{
|
|
uint uVar1;
|
|
uint uVar2;
|
|
int iVar3;
|
|
int iVar4;
|
|
LPSTR lpString2;
|
|
uint **ppuVar5;
|
|
uint local_fc [4];
|
|
int local_ec [4];
|
|
int local_dc;
|
|
int local_d8;
|
|
int local_d4;
|
|
CHAR local_d0 [200];
|
|
undefined4 local_8;
|
|
|
|
local_8 = DAT_01024778;
|
|
FUN_0101461a(2);
|
|
iVar4 = DAT_01025658;
|
|
local_dc = *(int *)(DAT_01025658 + 0xd6);
|
|
iVar3 = 0;
|
|
if (0 < local_dc) {
|
|
ppuVar5 = (uint **)(DAT_01025658 + 0x66);
|
|
do {
|
|
local_fc[iVar3] = **ppuVar5;
|
|
local_ec[iVar3] = iVar3;
|
|
iVar3 = iVar3 + 1;
|
|
ppuVar5 = ppuVar5 + 7;
|
|
} while (iVar3 < local_dc);
|
|
}
|
|
local_d4 = 0;
|
|
if (0 < local_dc) {
|
|
do {
|
|
local_d8 = local_d4;
|
|
if (local_d4 < local_dc) {
|
|
local_d8 = local_d4;
|
|
do {
|
|
uVar1 = local_fc[local_d4];
|
|
uVar2 = local_fc[local_d8];
|
|
if (uVar1 < uVar2) {
|
|
local_fc[local_d8] = uVar1;
|
|
iVar4 = local_ec[local_d8];
|
|
local_fc[local_d4] = uVar2;
|
|
local_ec[local_d8] = local_ec[local_d4];
|
|
local_ec[local_d4] = iVar4;
|
|
iVar4 = DAT_01025658;
|
|
}
|
|
local_d8 = local_d8 + 1;
|
|
} while (local_d8 < local_dc);
|
|
}
|
|
local_d4 = local_d4 + 1;
|
|
} while (local_d4 < local_dc);
|
|
}
|
|
if (((_DAT_01025570 == 0) && (*(int *)(iVar4 + 0x3e) == 0)) && (local_d4 = 0, 0 < local_dc)) {
|
|
do {
|
|
uVar1 = local_fc[local_d4];
|
|
iVar4 = FUN_01004c60((int)&DAT_01025578,uVar1);
|
|
if (-1 < iVar4) {
|
|
lpString2 = FUN_01003752(*(short *)(local_ec + local_d4) + 0x1a);
|
|
lstrcpyA(local_d0,lpString2);
|
|
FUN_01005452(&DAT_01025578,uVar1,iVar4,local_d0);
|
|
}
|
|
local_d4 = local_d4 + 1;
|
|
} while (local_d4 < local_dc);
|
|
}
|
|
FUN_0101cd9e();
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
|
|
|
|
undefined4 FUN_01014908(void)
|
|
|
|
{
|
|
int iVar1;
|
|
int iVar2;
|
|
int iVar3;
|
|
|
|
if ((_DAT_01025570 == 0) && (iVar2 = *(int *)(DAT_01025658 + 0xd6) + -1, -1 < iVar2)) {
|
|
iVar3 = iVar2 * 0x1c;
|
|
do {
|
|
iVar1 = FUN_01004c60((int)&DAT_01025578,**(int **)(iVar3 + 0x66 + DAT_01025658));
|
|
if (-1 < iVar1) {
|
|
return 1;
|
|
}
|
|
iVar2 = iVar2 + -1;
|
|
iVar3 = iVar3 + -0x1c;
|
|
} while (-1 < iVar2);
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
|
|
|
|
float10 FUN_01014956(code **param_1,float param_2,float param_3)
|
|
|
|
{
|
|
int iVar1;
|
|
bool in_PF;
|
|
float10 fVar2;
|
|
float local_44;
|
|
undefined4 uStack64;
|
|
undefined4 uStack60;
|
|
undefined4 local_38;
|
|
undefined4 uStack52;
|
|
undefined4 uStack48;
|
|
float local_2c;
|
|
undefined4 local_28;
|
|
code **local_24;
|
|
float local_20;
|
|
undefined4 local_1c;
|
|
float local_18;
|
|
float local_14;
|
|
undefined4 local_10;
|
|
float *local_c;
|
|
float local_8;
|
|
|
|
iVar1 = (int)param_3;
|
|
if ((*(char *)((int)param_3 + 5) != '\0') && (*(int *)((int)param_3 + 0x6a) == 0)) {
|
|
if (!in_PF) {
|
|
*(undefined4 *)((int)param_3 + 0x42) = _DAT_010253d0;
|
|
}
|
|
local_8 = *(float *)((int)param_3 + 0x42);
|
|
*(float *)((int)param_3 + 0x4a) = param_2;
|
|
local_2c = param_2 * *(float *)((int)param_3 + 0x42);
|
|
local_c = (float *)((int)param_3 + 0x2a);
|
|
local_44 = *local_c;
|
|
*(float *)((int)param_3 + 0x46) = local_2c;
|
|
uStack64 = *(undefined4 *)((int)param_3 + 0x2e);
|
|
*(code ***)((int)param_3 + 0x4e) = param_1;
|
|
uStack60 = *(undefined4 *)((int)param_3 + 0x32);
|
|
local_38 = *(undefined4 *)((int)param_3 + 0x36);
|
|
uStack52 = *(undefined4 *)((int)param_3 + 0x3a);
|
|
local_1c = *(undefined4 *)((int)param_3 + 0x6e);
|
|
uStack48 = *(undefined4 *)((int)param_3 + 0x3e);
|
|
local_24 = param_1;
|
|
local_20 = param_2;
|
|
local_28 = 0x3b03126f;
|
|
fVar2 = (float10)FUN_0100b486(&local_44,param_3,¶m_1);
|
|
*(undefined4 *)(iVar1 + 0x86) = 0;
|
|
param_3 = (float)fVar2;
|
|
if (in_PF) {
|
|
local_14 = param_2 * *(float *)(iVar1 + 0x42);
|
|
*(float *)(iVar1 + 0x46) = local_14;
|
|
local_18 = local_14 * *(float *)(iVar1 + 0x36);
|
|
local_14 = local_14 * *(float *)(iVar1 + 0x3a);
|
|
local_10 = 0;
|
|
FUN_0101cb8e(local_c,&local_18);
|
|
}
|
|
else {
|
|
(**(code **)*param_1)(iVar1,param_3);
|
|
if ((ushort)((ushort)(local_8 < 0.00000000) << 8 | (ushort)(local_8 == 0.00000000) << 0xe) ==
|
|
0) {
|
|
return ABS((float10)param_3 / (float10)local_8);
|
|
}
|
|
}
|
|
}
|
|
return (float10)param_2;
|
|
}
|
|
|
|
|
|
|
|
void FUN_01014a68(float param_1,float param_2,int param_3)
|
|
|
|
{
|
|
float *pfVar1;
|
|
float fVar2;
|
|
int iVar3;
|
|
int *piVar4;
|
|
int **ppiVar5;
|
|
int iVar6;
|
|
bool in_PF;
|
|
float10 fVar7;
|
|
undefined local_30 [12];
|
|
float local_24;
|
|
float local_20;
|
|
undefined4 local_1c;
|
|
int local_18;
|
|
int local_14;
|
|
int local_10;
|
|
float local_c;
|
|
float local_8;
|
|
|
|
iVar6 = *(int *)(*(int *)(DAT_01025658 + 0x106) + 4);
|
|
piVar4 = (int *)(*(int *)(DAT_01025658 + 0x106) + 8);
|
|
local_18 = iVar6;
|
|
iVar3 = iVar6;
|
|
if (0 < iVar6) {
|
|
do {
|
|
local_14 = iVar3;
|
|
iVar3 = *piVar4;
|
|
local_8 = param_2;
|
|
if (*(char *)(iVar3 + 5) != '\0') {
|
|
if (*(int **)(iVar3 + 0x6a) == (int *)0x0) {
|
|
if (*(char *)(DAT_01025658 + 5) != '\0') {
|
|
local_24 = 0.00000000;
|
|
local_20 = 0.00000000;
|
|
local_1c = 0;
|
|
FUN_0100b316(DAT_0102503c,iVar3,&local_24);
|
|
local_24 = local_24 * param_2;
|
|
pfVar1 = (float *)(iVar3 + 0x36);
|
|
local_20 = local_20 * param_2;
|
|
*pfVar1 = *(float *)(iVar3 + 0x42) * *pfVar1;
|
|
*(float *)(iVar3 + 0x3a) = *(float *)(iVar3 + 0x42) * *(float *)(iVar3 + 0x3a);
|
|
FUN_0101cb8e(pfVar1,&local_24);
|
|
fVar7 = (float10)FUN_01008ae9(pfVar1);
|
|
*(float *)(iVar3 + 0x42) = (float)fVar7;
|
|
if (in_PF) {
|
|
fVar2 = 1.00000000 / *pfVar1;
|
|
}
|
|
else {
|
|
fVar2 = 1000000000.00000000;
|
|
}
|
|
*(float *)(iVar3 + 0x52) = fVar2;
|
|
if (in_PF) {
|
|
fVar2 = 1.00000000 / *(float *)(iVar3 + 0x3a);
|
|
}
|
|
else {
|
|
fVar2 = 1000000000.00000000;
|
|
}
|
|
*(float *)(iVar3 + 0x56) = fVar2;
|
|
iVar6 = local_18;
|
|
}
|
|
local_c = param_1;
|
|
local_10 = 10;
|
|
fVar2 = param_2;
|
|
while (((ushort)((ushort)(fVar2 < 0.00000100) << 8 | (ushort)(fVar2 == 0.00000100) << 0xe)
|
|
== 0 && (local_10 != 0))) {
|
|
fVar7 = (float10)FUN_01014956(local_c,local_8,iVar3);
|
|
local_10 = local_10 + -1;
|
|
fVar2 = (float)((float10)local_8 - fVar7);
|
|
local_c = (float)(fVar7 + (float10)local_c);
|
|
local_8 = fVar2;
|
|
}
|
|
}
|
|
else {
|
|
*(float *)(iVar3 + 0x4a) = param_2;
|
|
(**(code **)(**(int **)(iVar3 + 0x6a) + 0x18))(iVar3,local_30);
|
|
}
|
|
}
|
|
piVar4 = piVar4 + 1;
|
|
local_14 = local_14 + -1;
|
|
iVar3 = local_14;
|
|
} while (local_14 != 0);
|
|
}
|
|
if ((param_3 != 0) && (ppiVar5 = (int **)(*(int *)(DAT_01025658 + 0x106) + 8), 0 < iVar6)) {
|
|
do {
|
|
if (*(char *)((int)*ppiVar5 + 5) != '\0') {
|
|
(**(code **)(**ppiVar5 + 0x14))();
|
|
}
|
|
ppiVar5 = ppiVar5 + 1;
|
|
iVar6 = iVar6 + -1;
|
|
} while (iVar6 != 0);
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
|
|
|
|
undefined4 FUN_01014bf9(int param_1)
|
|
|
|
{
|
|
float fVar1;
|
|
int iVar2;
|
|
LPSTR pCVar3;
|
|
undefined4 local_10;
|
|
|
|
if (100 < param_1) {
|
|
param_1 = 100;
|
|
}
|
|
fVar1 = (float)param_1 * 0.00100000;
|
|
iVar2 = FUN_01014743(param_1);
|
|
if (iVar2 == 0) {
|
|
DAT_01025634 = _DAT_01025630 + fVar1;
|
|
FUN_01014a68(_DAT_01025630,fVar1,1);
|
|
_DAT_01025630 = DAT_01025634;
|
|
DAT_01024f84 = DAT_01024f84 + param_1;
|
|
if (((_DAT_0102563c == 0) && (_DAT_01025640 == 0)) && (_DAT_01025644 == 0)) {
|
|
_DAT_0102564c = _DAT_0102564c - fVar1;
|
|
if ((ushort)((ushort)(_DAT_0102564c < 0.00000000) << 8 |
|
|
(ushort)(_DAT_0102564c == 0.00000000) << 0xe) != 0) {
|
|
_DAT_0102564c = 0.00000000;
|
|
}
|
|
}
|
|
else {
|
|
_DAT_0102564c = fVar1 * 4.00000000 + _DAT_0102564c;
|
|
}
|
|
FUN_0100758d();
|
|
FUN_010133c7();
|
|
FUN_01013d2d(*(int **)((int)DAT_01025658 + 0x32));
|
|
if (*(int *)((int)DAT_01025658 + 0x172) == 0) {
|
|
if ((ushort)((ushort)(_DAT_0102564c < 0.50000000) << 8 |
|
|
(ushort)(_DAT_0102564c == 0.50000000) << 0xe) == 0) {
|
|
local_10 = 0x40000000;
|
|
pCVar3 = FUN_01003752(0x19);
|
|
FUN_010144b7(pCVar3,local_10);
|
|
}
|
|
if ((ushort)((ushort)(_DAT_0102564c < 1.00000000) << 8 |
|
|
(ushort)(_DAT_0102564c == 1.00000000) << 0xe) == 0) {
|
|
FUN_01017791(DAT_01025658,_DAT_01025630);
|
|
}
|
|
}
|
|
}
|
|
return 1;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
|
|
|
|
void FUN_01014d3d(void)
|
|
|
|
{
|
|
_DAT_01024754 = 0;
|
|
FUN_010133c7();
|
|
_DAT_01024754 = 1;
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
|
|
|
|
void FUN_01014d59(void)
|
|
|
|
{
|
|
if (*(int *)(DAT_01025658 + 0x172) != 0) {
|
|
FUN_01014143(DAT_01025650);
|
|
}
|
|
*(undefined4 *)(DAT_01025658 + 0x172) = 0;
|
|
_DAT_0102564c = 0xc0000000;
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_01014d8e(int param_1,int param_2)
|
|
|
|
{
|
|
int iVar1;
|
|
float10 fVar2;
|
|
|
|
iVar1 = *(int *)(*(int *)(DAT_01025658 + 0x106) + 8);
|
|
*(float *)(iVar1 + 0x36) = (float)param_1 * 30.00000000;
|
|
*(float *)(iVar1 + 0x3a) = (float)param_2 * 30.00000000;
|
|
fVar2 = (float10)FUN_01008ae9((float *)(iVar1 + 0x36));
|
|
*(float *)(iVar1 + 0x42) = (float)fVar2;
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_01014dcf(float param_1,float param_2)
|
|
|
|
{
|
|
float *pfVar1;
|
|
float fVar2;
|
|
int iVar3;
|
|
int iVar4;
|
|
int iVar5;
|
|
int *piVar6;
|
|
bool in_PF;
|
|
float10 fVar7;
|
|
int iVar8;
|
|
int iVar9;
|
|
int iVar10;
|
|
float local_14;
|
|
float local_10;
|
|
int local_8;
|
|
|
|
local_14 = param_1 * 0.50000000;
|
|
iVar10 = *(int *)(*(int *)(DAT_01025658 + 0x106) + 4);
|
|
piVar6 = (int *)(*(int *)(DAT_01025658 + 0x106) + 8);
|
|
local_10 = param_2 * 0.50000000;
|
|
iVar3 = DAT_01025658;
|
|
if (0 < iVar10) {
|
|
do {
|
|
local_8 = iVar10;
|
|
iVar10 = *piVar6;
|
|
if ((*(char *)(iVar10 + 5) != '\0') && (*(int *)(iVar10 + 0x6a) == 0)) {
|
|
pfVar1 = (float *)(iVar10 + 0x36);
|
|
*pfVar1 = *pfVar1 * *(float *)(iVar10 + 0x42);
|
|
*(float *)(iVar10 + 0x3a) = *(float *)(iVar10 + 0x3a) * *(float *)(iVar10 + 0x42);
|
|
FUN_0101cb8e(pfVar1,&local_14);
|
|
fVar7 = (float10)FUN_01008ae9(pfVar1);
|
|
*(float *)(iVar10 + 0x42) = (float)fVar7;
|
|
if (in_PF) {
|
|
fVar2 = 1.00000000 / *pfVar1;
|
|
}
|
|
else {
|
|
fVar2 = 1000000000.00000000;
|
|
}
|
|
*(float *)(iVar10 + 0x52) = fVar2;
|
|
if (in_PF) {
|
|
fVar2 = 1.00000000 / *(float *)(iVar10 + 0x3a);
|
|
}
|
|
else {
|
|
fVar2 = 1000000000.00000000;
|
|
}
|
|
*(float *)(iVar10 + 0x56) = fVar2;
|
|
iVar3 = DAT_01025658;
|
|
}
|
|
piVar6 = piVar6 + 1;
|
|
local_8 = local_8 + -1;
|
|
iVar10 = local_8;
|
|
} while (local_8 != 0);
|
|
}
|
|
iVar10 = *(int *)(iVar3 + 0xf6);
|
|
iVar3 = *(int *)(iVar3 + 0xf2);
|
|
iVar9 = 0;
|
|
iVar8 = 0;
|
|
floor((double)(0.50000000 - param_2));
|
|
iVar4 = _ftol();
|
|
floor((double)(param_1 + 0.50000000));
|
|
iVar5 = _ftol();
|
|
FUN_01013a8f(iVar5,iVar4,iVar8,iVar9,iVar3,iVar10);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
|
|
|
|
void FUN_01014eee(void)
|
|
|
|
{
|
|
if (_DAT_0102563c != 0) {
|
|
FUN_01014dcf(0x40000000,0xbf800000);
|
|
}
|
|
_DAT_0102563c = 0;
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
|
|
|
|
void FUN_01014f20(void)
|
|
|
|
{
|
|
if (_DAT_01025640 != 0) {
|
|
FUN_01014dcf(0xc0000000,0xbf800000);
|
|
}
|
|
_DAT_01025640 = 0;
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
|
|
|
|
void FUN_01014f52(void)
|
|
|
|
{
|
|
FUN_01014dcf(0xc0000000,0x3f800000);
|
|
if (DAT_01025648 != 0) {
|
|
FUN_01007659(DAT_01025648);
|
|
}
|
|
DAT_01025648 = FUN_010074b7(0x3ecccccd,0,(int)FUN_01014eee);
|
|
_DAT_0102563c = 1;
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
|
|
|
|
void FUN_01014fa4(void)
|
|
|
|
{
|
|
FUN_01014dcf(0x40000000,0x3f800000);
|
|
if (DAT_01025648 != 0) {
|
|
FUN_01007659(DAT_01025648);
|
|
}
|
|
DAT_01025648 = FUN_010074b7(0x3ecccccd,0,(int)FUN_01014f20);
|
|
_DAT_01025640 = 1;
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
|
|
|
|
void FUN_01014ff6(void)
|
|
|
|
{
|
|
if (_DAT_01025644 != 0) {
|
|
FUN_01014dcf(0,0xbf800000);
|
|
}
|
|
_DAT_01025644 = 0;
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
|
|
|
|
void FUN_01015024(void)
|
|
|
|
{
|
|
FUN_01014dcf(0,0x3f800000);
|
|
if (DAT_01025648 != 0) {
|
|
FUN_01007659(DAT_01025648);
|
|
}
|
|
DAT_01025648 = FUN_010074b7(0x3ecccccd,0,(int)FUN_01014ff6);
|
|
_DAT_01025644 = 1;
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
|
|
|
|
void FUN_01015072(int param_1)
|
|
|
|
{
|
|
int iVar1;
|
|
LPSTR lpString2;
|
|
void *this;
|
|
undefined4 *puVar2;
|
|
int *piVar3;
|
|
int iVar4;
|
|
undefined4 uVar5;
|
|
CHAR local_e4 [200];
|
|
char local_1c [20];
|
|
undefined4 local_8;
|
|
|
|
local_8 = DAT_01024778;
|
|
if ((_DAT_01024fd8 != 0) || (_DAT_01025570 != 0)) goto LAB_010152d2;
|
|
if (DAT_01025568 != 1) {
|
|
FUN_01014743(-1);
|
|
goto LAB_010152d2;
|
|
}
|
|
FUN_0100e1b0(param_1);
|
|
if (param_1 == DAT_01028238) {
|
|
uVar5 = 1000;
|
|
LAB_010150dc:
|
|
(**(code **)*DAT_01025658)(uVar5,_DAT_01025630);
|
|
}
|
|
else {
|
|
if (param_1 == DAT_0102823c) {
|
|
(**(code **)*DAT_01025658)(0x3ea,_DAT_01025630);
|
|
}
|
|
else {
|
|
if (param_1 == DAT_01028240) {
|
|
uVar5 = 0x3ec;
|
|
goto LAB_010150dc;
|
|
}
|
|
if (param_1 == DAT_01028244) {
|
|
if (*(int *)((int)DAT_01025658 + 0x172) == 0) {
|
|
FUN_01014fa4();
|
|
}
|
|
goto LAB_010152d2;
|
|
}
|
|
if (param_1 == DAT_01028248) {
|
|
if (*(int *)((int)DAT_01025658 + 0x172) == 0) {
|
|
FUN_01014f52();
|
|
}
|
|
goto LAB_010152d2;
|
|
}
|
|
if (param_1 == DAT_0102824c) {
|
|
if (*(int *)((int)DAT_01025658 + 0x172) == 0) {
|
|
FUN_01015024();
|
|
}
|
|
goto LAB_010152d2;
|
|
}
|
|
}
|
|
if (_DAT_01024ff8 != 0) {
|
|
if (param_1 == 0x42) {
|
|
iVar1 = *(int *)(*(int *)((int)DAT_01025658 + 0x106) + 4);
|
|
iVar4 = 0;
|
|
piVar3 = (int *)(*(int *)((int)DAT_01025658 + 0x106) + 8);
|
|
if (0 < iVar1) {
|
|
do {
|
|
puVar2 = (undefined4 *)*piVar3;
|
|
if (*(char *)((int)puVar2 + 5) == '\0') goto LAB_010152ab;
|
|
iVar4 = iVar4 + 1;
|
|
piVar3 = piVar3 + 1;
|
|
} while (iVar4 < iVar1);
|
|
}
|
|
this = (void *)FUN_010145f5(0x16a);
|
|
if (this == (void *)0x0) {
|
|
puVar2 = (undefined4 *)0x0;
|
|
}
|
|
else {
|
|
puVar2 = FUN_01019309(this,(int)DAT_01025658);
|
|
}
|
|
LAB_010152ab:
|
|
*(undefined4 *)((int)puVar2 + 0x2a) = 0x3f800000;
|
|
*(undefined *)((int)puVar2 + 5) = 1;
|
|
*(undefined4 *)((int)puVar2 + 0x32) = *(undefined4 *)((int)puVar2 + 0x9a);
|
|
*(undefined4 *)((int)puVar2 + 0x2e) = 0x3f800000;
|
|
*(undefined4 *)((int)puVar2 + 0x3e) = 0;
|
|
*(undefined4 *)((int)puVar2 + 0x3a) = 0;
|
|
*(undefined4 *)((int)puVar2 + 0x36) = 0;
|
|
}
|
|
else {
|
|
if (param_1 == 0x48) {
|
|
lpString2 = FUN_01003752(0x1a);
|
|
lstrcpyA(local_e4,lpString2);
|
|
FUN_01005452(&DAT_01025578,1000000000,1,local_e4);
|
|
}
|
|
else {
|
|
if (param_1 == 0x4d) {
|
|
sprintf(local_1c,"%ld",DAT_01024f00);
|
|
MessageBoxA(DAT_010281fc,local_1c,"Mem:",0x2000);
|
|
}
|
|
else {
|
|
if (param_1 == 0x52) {
|
|
FUN_0100e111();
|
|
}
|
|
else {
|
|
if (param_1 == 0x7a) {
|
|
FUN_01015892();
|
|
}
|
|
else {
|
|
if (param_1 == 0x7b) {
|
|
(**(code **)(*DAT_01025658 + 4))();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
LAB_010152d2:
|
|
FUN_0101cd9e();
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
|
|
|
|
void FUN_010152e4(int param_1)
|
|
|
|
{
|
|
undefined4 uVar1;
|
|
|
|
if (((DAT_01025568 == 1) && (_DAT_01024fd8 == 0)) && (_DAT_01025570 == 0)) {
|
|
if (param_1 == DAT_01028238) {
|
|
uVar1 = 0x3e9;
|
|
}
|
|
else {
|
|
if (param_1 == DAT_0102823c) {
|
|
uVar1 = 0x3eb;
|
|
}
|
|
else {
|
|
if (param_1 != DAT_01028240) {
|
|
if (param_1 == DAT_01028244) {
|
|
FUN_01014f20();
|
|
return;
|
|
}
|
|
if (param_1 == DAT_01028248) {
|
|
FUN_01014eee();
|
|
return;
|
|
}
|
|
if (param_1 != DAT_0102824c) {
|
|
return;
|
|
}
|
|
FUN_01014ff6();
|
|
return;
|
|
}
|
|
uVar1 = 0x3ed;
|
|
}
|
|
}
|
|
(**(code **)*DAT_01025658)(uVar1,_DAT_01025630);
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
|
|
|
|
void FUN_010153ae(undefined4 param_1)
|
|
|
|
{
|
|
_DAT_01025570 = param_1;
|
|
FUN_0101461a(1);
|
|
if (DAT_01028224 != 0) {
|
|
FUN_0100afdc(0);
|
|
}
|
|
(**(code **)*DAT_01025658)(0x3f6,(float)DAT_01028234);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_010153f4(void)
|
|
|
|
{
|
|
FUN_01005412(&DAT_01025578);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_01015404(undefined4 *param_1,undefined4 *param_2)
|
|
|
|
{
|
|
*param_1 = 600;
|
|
*param_2 = 0x1a0;
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
|
|
|
|
void FUN_01015424(void)
|
|
|
|
{
|
|
int local_2a8;
|
|
short *psVar1;
|
|
LPCVOID *ppvVar2;
|
|
undefined4 *puVar3;
|
|
undefined4 *puVar4;
|
|
undefined4 *puVar5;
|
|
undefined4 local_298 [12];
|
|
float local_268;
|
|
float local_264;
|
|
CHAR local_260 [300];
|
|
CHAR local_134 [300];
|
|
undefined4 local_8;
|
|
|
|
_DAT_01024f04 = _DAT_01024f04 + 1;
|
|
local_8 = DAT_01024778;
|
|
lstrcpyA(local_260,&DAT_0102543c);
|
|
FUN_010076bf(local_134,local_260,300);
|
|
DAT_01025638 = (short *)FUN_010064e2(local_134);
|
|
local_264 = 0.00000000;
|
|
FUN_010037a6(0x9e,(int *)&local_264);
|
|
if (local_264 != 0.00000000) {
|
|
FUN_01013e73("pbmsg_ft");
|
|
}
|
|
if (DAT_01025638 != (short *)0x0) {
|
|
local_2a8 = FUN_010063db(DAT_01025638,"background",5);
|
|
FUN_010043b9(local_2a8);
|
|
psVar1 = (short *)FUN_010063db(DAT_01025638,"table_size",10);
|
|
ppvVar2 = (LPCVOID *)FUN_010063db(DAT_01025638,"background",1);
|
|
puVar4 = (undefined4 *)FUN_010063db(DAT_01025638,"camera_info",0xb);
|
|
if (puVar4 != (undefined4 *)0x0) {
|
|
puVar3 = local_298;
|
|
local_264 = 0.00000000;
|
|
do {
|
|
local_2a8 = 4;
|
|
do {
|
|
puVar5 = puVar4;
|
|
*puVar3 = *puVar5;
|
|
puVar4 = puVar5 + 1;
|
|
puVar3 = puVar3 + 1;
|
|
local_2a8 = local_2a8 + -1;
|
|
} while (local_2a8 != 0);
|
|
local_264 = (float)((int)local_264 + -1);
|
|
} while (local_264 != 0.00000000);
|
|
local_264 = (float)(int)*psVar1;
|
|
FUN_01008e4b((int)local_298,*puVar4,(float)(int)local_264 * 0.50000000,
|
|
(float)(int)psVar1[1] * 0.50000000);
|
|
local_268 = (float)puVar5[2];
|
|
local_264 = (float)puVar5[3];
|
|
}
|
|
FUN_01013705(0,local_268,local_264,(int *)(int)*psVar1,(int *)(int)psVar1[1]);
|
|
FUN_01004870((int)&DAT_01025088,(int)ppvVar2[3],(int)ppvVar2[4],*(int *)((int)ppvVar2 + 0x1d),
|
|
*(int *)((int)ppvVar2 + 0x21),(int)ppvVar2,0,0);
|
|
FUN_0100460c(ppvVar2);
|
|
FUN_0100916a(DAT_01025638);
|
|
if (_DAT_0102556c == 0) {
|
|
local_2a8 = 3;
|
|
}
|
|
else {
|
|
local_2a8 = 1;
|
|
}
|
|
FUN_0101461a(local_2a8);
|
|
DAT_01024f84 = 0;
|
|
FUN_0100742f(0x96);
|
|
FUN_01013e25();
|
|
puVar4 = (undefined4 *)FUN_010145f5(0x176);
|
|
if (puVar4 == (undefined4 *)0x0) {
|
|
DAT_01025658 = (undefined4 *)0x0;
|
|
}
|
|
else {
|
|
DAT_01025658 = FUN_0101aaf3(puVar4);
|
|
}
|
|
FUN_01004d18(&DAT_01025578);
|
|
_DAT_01024f04 = _DAT_01024f04 + -1;
|
|
_DAT_010253d0 =
|
|
*(float *)(*(int *)(*(int *)((int)DAT_01025658 + 0x106) + 8) + 0x9a) * 200.00000000;
|
|
}
|
|
FUN_0101cd9e();
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
undefined4 FUN_0101566e(void)
|
|
|
|
{
|
|
FUN_01013e2e();
|
|
FUN_0100911d();
|
|
FUN_01006408(DAT_01025638);
|
|
FUN_01004e87(&DAT_01025578);
|
|
if (DAT_01025658 != (int *)0x0) {
|
|
(**(code **)(*DAT_01025658 + 0x10))(1);
|
|
}
|
|
DAT_01025658 = (int *)0x0;
|
|
FUN_01015892();
|
|
FUN_0100749b();
|
|
FUN_01013670();
|
|
return 0;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
|
|
|
|
void FUN_010156c1(void)
|
|
|
|
{
|
|
if (DAT_01025658 != (code **)0x0) {
|
|
(**(code **)*DAT_01025658)(0x3f2,_DAT_01025630);
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
|
|
|
|
void FUN_010156e4(void)
|
|
|
|
{
|
|
LPSTR pCVar1;
|
|
short sVar2;
|
|
undefined4 local_8;
|
|
|
|
_DAT_01024fd8 = (uint)(_DAT_01024fd8 == 0);
|
|
FUN_01014143(DAT_01025650);
|
|
FUN_01014143(DAT_01025654);
|
|
if (_DAT_01024fd8 != 0) {
|
|
if (DAT_01025658 != (code **)0x0) {
|
|
(**(code **)*DAT_01025658)(0x3f0,_DAT_01025630);
|
|
}
|
|
local_8 = 0xbf800000;
|
|
pCVar1 = FUN_01003752(0x16);
|
|
FUN_010144b7(pCVar1,local_8);
|
|
FUN_0100afb9();
|
|
return;
|
|
}
|
|
if (DAT_01025658 != (code **)0x0) {
|
|
(**(code **)*DAT_01025658)(0x3f1,0);
|
|
}
|
|
if (_DAT_01025570 == 0) {
|
|
if (DAT_01025568 == 2) {
|
|
local_8 = 0xbf800000;
|
|
sVar2 = 0x18;
|
|
}
|
|
else {
|
|
local_8 = 0x40a00000;
|
|
sVar2 = 0x17;
|
|
}
|
|
pCVar1 = FUN_01003752(sVar2);
|
|
FUN_010144b7(pCVar1,local_8);
|
|
}
|
|
if ((DAT_01028224 != 0) && (_DAT_01024fd8 == 0)) {
|
|
FUN_0100afdc(0);
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_010157c3(void)
|
|
|
|
{
|
|
(**(code **)**(code ***)(DAT_01025658 + 0xde))(0x3f9,0);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_010157e3(void)
|
|
|
|
{
|
|
if (DAT_01025658 != (code **)0x0) {
|
|
(**(code **)*DAT_01025658)(0x400,0);
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
|
|
|
|
void FUN_01015802(void)
|
|
|
|
{
|
|
LPSTR pCVar1;
|
|
undefined4 uVar2;
|
|
|
|
if (_DAT_01025570 != 0) {
|
|
_DAT_01025570 = 0;
|
|
(**(code **)*DAT_01025658)(0x400,0);
|
|
FUN_0101461a(2);
|
|
FUN_01014143(DAT_01025654);
|
|
uVar2 = 0xbf800000;
|
|
pCVar1 = FUN_01003752(0x18);
|
|
FUN_010144b7(pCVar1,uVar2);
|
|
return;
|
|
}
|
|
FUN_010153ae(1);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void __thiscall FUN_01015866(void *this,undefined4 param_1,undefined4 param_2,undefined4 param_3)
|
|
|
|
{
|
|
*(undefined4 *)((int)this + 4) = param_1;
|
|
*(undefined4 *)((int)this + 8) = param_2;
|
|
*(undefined4 *)this = 0x1002444;
|
|
*(undefined4 *)((int)this + 0x11) = param_3;
|
|
*(undefined *)((int)this + 0xc) = 0;
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_01015892(void)
|
|
|
|
{
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
undefined4 * __thiscall
|
|
FUN_01015898(void *this,undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 *param_4
|
|
,float param_5)
|
|
|
|
{
|
|
FUN_01015866(this,param_1,param_2,param_3);
|
|
*(undefined4 *)this = 0x1002454;
|
|
*(float *)((int)this + 0x21) = param_5 * param_5;
|
|
*(undefined4 *)((int)this + 0x15) = *param_4;
|
|
*(undefined4 *)((int)this + 0x19) = param_4[1];
|
|
*(undefined4 *)((int)this + 0x1d) = param_4[2];
|
|
return (undefined4 *)this;
|
|
}
|
|
|
|
|
|
|
|
void __thiscall FUN_010158d6(void *this,undefined4 param_1)
|
|
|
|
{
|
|
FUN_01008b34(param_1,(int)this + 0x15);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void * __thiscall FUN_010158f0(void *this,int param_1,undefined4 param_2)
|
|
|
|
{
|
|
FUN_010098d3(this,param_1,param_2);
|
|
return this;
|
|
}
|
|
|
|
|
|
|
|
void __thiscall FUN_0101590f(void *this,undefined4 param_1)
|
|
|
|
{
|
|
int *piVar1;
|
|
|
|
piVar1 = (int *)((int)this + 0x86);
|
|
if (*piVar1 < 5) {
|
|
*(undefined4 *)((int)this + *piVar1 * 4 + 0x72) = param_1;
|
|
*piVar1 = *piVar1 + 1;
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_01015935(int param_1,undefined4 *param_2,float param_3,float param_4,float param_5)
|
|
|
|
{
|
|
int iVar1;
|
|
|
|
*(undefined4 *)(param_1 + 0x6a) = 0;
|
|
*(undefined4 *)(param_1 + 0x36) = *param_2;
|
|
*(undefined4 *)(param_1 + 0x3a) = param_2[1];
|
|
*(undefined4 *)(param_1 + 0x3e) = param_2[2];
|
|
iVar1 = rand();
|
|
FUN_0101ccf3((float *)(param_1 + 0x36),
|
|
(1.00000000 - ((float)iVar1 * 0.00003052 + (float)iVar1 * 0.00003052)) * param_3);
|
|
iVar1 = rand();
|
|
*(float *)(param_1 + 0x42) =
|
|
param_4 * param_5 * (1.00000000 - ((float)iVar1 * 0.00003052 + (float)iVar1 * 0.00003052)) +
|
|
param_4;
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
undefined4 __thiscall FUN_010159a9(void *this,int param_1)
|
|
|
|
{
|
|
*(int *)((int)this + 6) = param_1;
|
|
if (param_1 == 0x400) {
|
|
*(undefined4 *)((int)this + 6) = 0;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
|
|
|
|
void FUN_010159dc(undefined4 param_1,undefined **param_2)
|
|
|
|
{
|
|
*(undefined4 *)((int)param_2 + 0x32) = 0;
|
|
FUN_01011ec9(0x3d,param_2);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
undefined4 __thiscall FUN_010159f9(void *this,int param_1,float param_2)
|
|
|
|
{
|
|
int iVar1;
|
|
int iVar2;
|
|
|
|
if (param_1 == 0x30) {
|
|
if (*(int *)((int)this + 0x32) != 0) {
|
|
FUN_01007659(*(int *)((int)this + 0x32));
|
|
*(undefined4 *)((int)this + 0x32) = 0;
|
|
}
|
|
if ((ushort)((ushort)(param_2 < 0.00000000) << 8 | (ushort)(param_2 == 0.00000000) << 0xe) == 0)
|
|
{
|
|
iVar1 = FUN_010074b7(param_2,(int)this,(int)FUN_010159dc);
|
|
*(int *)((int)this + 0x32) = iVar1;
|
|
}
|
|
}
|
|
else {
|
|
if ((param_1 < 0x3f0) || (((0x3f3 < param_1 && (param_1 != 0x3fc)) && (param_1 != 0x3fe)))) {
|
|
iVar1 = *(int *)(*(int *)((int)this + 0x2e) + 4);
|
|
if (-1 < iVar1 + -1) {
|
|
iVar2 = (iVar1 + -1) * 4 + 8;
|
|
do {
|
|
(**(code **)**(code ***)(iVar2 + *(int *)((int)this + 0x2e)))(param_1,param_2);
|
|
iVar2 = iVar2 + -4;
|
|
iVar1 = iVar1 + -1;
|
|
} while (iVar1 != 0);
|
|
}
|
|
}
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
|
|
|
|
void FUN_01015ace(undefined4 param_1,int param_2)
|
|
|
|
{
|
|
FUN_010139b6(*(int *)(param_2 + 0x1a),0);
|
|
*(undefined4 *)(param_2 + 0x4e) = 0;
|
|
*(undefined4 *)(param_2 + 6) = 0;
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
undefined4 __thiscall FUN_01015af3(void *this,int param_1)
|
|
|
|
{
|
|
if ((param_1 == 0x400) && (*(int *)((int)this + 0x4e) != 0)) {
|
|
FUN_01007659(*(int *)((int)this + 0x4e));
|
|
FUN_01015ace(*(undefined4 *)((int)this + 0x4e),(int)this);
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
|
|
|
|
undefined4 __thiscall FUN_01015b26(void *this,int param_1)
|
|
|
|
{
|
|
undefined4 uVar1;
|
|
|
|
if (param_1 < 1) {
|
|
uVar1 = *(undefined4 *)((int)this + param_1 * 4 + 0x56);
|
|
}
|
|
else {
|
|
uVar1 = 0;
|
|
}
|
|
return uVar1;
|
|
}
|
|
|
|
|
|
|
|
void __thiscall FUN_01015b44(void *this,int param_1,undefined4 param_2)
|
|
|
|
{
|
|
if (param_1 < 1) {
|
|
*(undefined4 *)((int)this + param_1 * 4 + 0x56) = param_2;
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
undefined4 __thiscall FUN_01015b61(void *this,int param_1)
|
|
|
|
{
|
|
undefined4 uVar1;
|
|
|
|
if (param_1 < 6) {
|
|
uVar1 = *(undefined4 *)((int)this + param_1 * 4 + 0x56);
|
|
}
|
|
else {
|
|
uVar1 = 0;
|
|
}
|
|
return uVar1;
|
|
}
|
|
|
|
|
|
|
|
void __thiscall FUN_01015b7f(void *this,int param_1,undefined4 param_2)
|
|
|
|
{
|
|
if (param_1 < 6) {
|
|
*(undefined4 *)((int)this + param_1 * 4 + 0x56) = param_2;
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
undefined4 __thiscall FUN_01015b9c(void *this,int param_1)
|
|
|
|
{
|
|
if (param_1 == 0x400) {
|
|
FUN_010139ec(*(undefined4 *)((int)this + 0x1a),0,0,0,0);
|
|
*(undefined4 *)((int)this + 0x2a) = 0;
|
|
*(undefined4 *)((int)this + 0x6a) = 0;
|
|
*(undefined4 *)((int)this + 0x2e) = 0;
|
|
*(undefined *)((int)this + 5) = 0;
|
|
*(undefined4 *)((int)this + 0x96) = 0;
|
|
*(undefined4 *)((int)this + 0x6e) = 1;
|
|
*(undefined4 *)((int)this + 0x3a) = 0;
|
|
*(undefined4 *)((int)this + 0x32) = *(undefined4 *)((int)this + 0x9a);
|
|
*(undefined4 *)((int)this + 0x36) = 0;
|
|
*(undefined4 *)((int)this + 0x42) = 0;
|
|
*(undefined4 *)((int)this + 0x46) = 0;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
|
|
|
|
void __fastcall FUN_01015c08(int param_1)
|
|
|
|
{
|
|
int iVar1;
|
|
int iVar2;
|
|
float *pfVar3;
|
|
int iVar4;
|
|
float10 fVar5;
|
|
int local_c;
|
|
int local_8;
|
|
|
|
if (*(int *)(param_1 + 0x96) != 0) {
|
|
*(float *)(param_1 + 0x32) =
|
|
*(float *)(param_1 + 0x8a) * *(float *)(param_1 + 0x2a) +
|
|
*(float *)(param_1 + 0x8e) * *(float *)(param_1 + 0x2e) + *(float *)(param_1 + 0x9a) +
|
|
*(float *)(param_1 + 0x92);
|
|
}
|
|
local_c = param_1;
|
|
local_8 = param_1;
|
|
FUN_01008f03((float *)(param_1 + 0x2a),&local_c);
|
|
fVar5 = (float10)FUN_01008ed8((float *)(param_1 + 0x2a));
|
|
iVar1 = *(int *)(*(int *)(param_1 + 0x22) + 4);
|
|
iVar2 = *(int *)(iVar1 + 4) + -1;
|
|
iVar4 = 0;
|
|
if (0 < iVar2) {
|
|
pfVar3 = (float *)(param_1 + 0xa2);
|
|
do {
|
|
if ((float10)*pfVar3 <= fVar5) break;
|
|
iVar4 = iVar4 + 1;
|
|
pfVar3 = pfVar3 + 1;
|
|
} while (iVar4 < iVar2);
|
|
}
|
|
iVar1 = *(int *)(iVar1 + 8 + iVar4 * 4);
|
|
local_c = local_c + *(int *)(iVar1 + 0xc) / -2;
|
|
local_8 = local_8 + *(int *)(iVar1 + 0x10) / -2;
|
|
FUN_010139ec(*(undefined4 *)(param_1 + 0x1a),iVar1,(float)fVar5,local_c,local_8);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_01015cb2(undefined4 param_1,int param_2)
|
|
|
|
{
|
|
int iVar1;
|
|
int iVar2;
|
|
|
|
iVar1 = *(int *)(param_2 + 0x4e) * 8 + 8;
|
|
iVar2 = *(int *)(iVar1 + *(int *)(*(int *)(param_2 + 0x22) + 4));
|
|
*(undefined4 *)(param_2 + 0x52) = 0;
|
|
FUN_01013974(*(undefined4 **)(param_2 + 0x1a),iVar2,
|
|
*(undefined4 *)(*(int *)(*(int *)(param_2 + 0x26) + 4) + iVar1),
|
|
*(int *)(iVar2 + 0x1d) - *(int *)(*(int *)(param_2 + 0x1e) + 0xea),
|
|
*(int *)(iVar2 + 0x21) - *(int *)(*(int *)(param_2 + 0x1e) + 0xee));
|
|
*(undefined4 *)(param_2 + 0x42) = *(undefined4 *)(param_2 + 0x5a);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void __fastcall FUN_01015d0f(int param_1)
|
|
|
|
{
|
|
int iVar1;
|
|
int iVar2;
|
|
|
|
*(undefined4 *)(param_1 + 0x42) = 0x4e6e6b28;
|
|
iVar2 = (*(int *)(param_1 + 0x4e) * 2 + 1) * 4 + 8;
|
|
iVar1 = *(int *)(iVar2 + *(int *)(*(int *)(param_1 + 0x22) + 4));
|
|
FUN_01013974(*(undefined4 **)(param_1 + 0x1a),iVar1,
|
|
*(undefined4 *)(*(int *)(*(int *)(param_1 + 0x26) + 4) + iVar2),
|
|
*(int *)(iVar1 + 0x1d) - *(int *)(*(int *)(param_1 + 0x1e) + 0xea),
|
|
*(int *)(iVar1 + 0x21) - *(int *)(*(int *)(param_1 + 0x1e) + 0xee));
|
|
iVar2 = FUN_010074b7(*(undefined4 *)(param_1 + 0x56),param_1,(int)FUN_01015cb2);
|
|
*(int *)(param_1 + 0x52) = iVar2;
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
undefined4 __thiscall FUN_01015d79(void *this,int param_1,float param_2)
|
|
|
|
{
|
|
void *pvVar1;
|
|
undefined4 *puVar2;
|
|
int iVar3;
|
|
int iVar4;
|
|
|
|
if (param_1 == 0xb) {
|
|
floor((double)param_2);
|
|
iVar4 = _ftol();
|
|
iVar3 = *(int *)(*(int *)(*(int *)((int)this + 0x22) + 4) + 4) + -1;
|
|
if (iVar3 < iVar4 * 2) {
|
|
iVar4 = iVar3 / 2;
|
|
}
|
|
if (iVar4 < 0) {
|
|
iVar4 = 0;
|
|
}
|
|
if (iVar4 != *(int *)((int)this + 0x4e)) {
|
|
if (*(int *)((int)this + 0x4e) <= iVar4) {
|
|
FUN_01009895(*(int *)((int)this + 0x5e));
|
|
}
|
|
if (iVar4 < *(int *)((int)this + 0x4e)) {
|
|
FUN_01009895(*(int *)((int)this + 0x62));
|
|
}
|
|
*(int *)((int)this + 0x4e) = iVar4;
|
|
FUN_01015d0f((int)this);
|
|
FUN_01011ec9(0xb,(undefined **)this);
|
|
}
|
|
}
|
|
else {
|
|
if (param_1 == 0xc) {
|
|
param_2 = (float)(*(int *)((int)this + 0x4e) + 1);
|
|
iVar4 = *(int *)(*(int *)(*(int *)((int)this + 0x22) + 4) + 4) + -1;
|
|
if (iVar4 < (int)param_2 * 2) {
|
|
param_2 = (float)(iVar4 / 2);
|
|
}
|
|
}
|
|
else {
|
|
if (param_1 == 0xd) {
|
|
param_2 = (float)(*(int *)((int)this + 0x4e) + -1);
|
|
if ((int)param_2 < 0) {
|
|
param_2 = 0.00000000;
|
|
}
|
|
}
|
|
else {
|
|
if (param_1 != 0x3fc) {
|
|
if (param_1 != 0x400) {
|
|
return 0;
|
|
}
|
|
if (*(int *)((int)this + 0x52) != 0) {
|
|
FUN_01007659(*(int *)((int)this + 0x52));
|
|
FUN_01015cb2(*(undefined4 *)((int)this + 0x52),(int)this);
|
|
}
|
|
*(undefined4 *)((int)this + 0x4e) = 0;
|
|
*(undefined4 *)((int)this + 6) = 0;
|
|
iVar4 = 0;
|
|
if (0 < *(int *)(*(int *)((int)this + 0x1e) + 0xd6)) {
|
|
puVar2 = (undefined4 *)((int)this + 0x76);
|
|
do {
|
|
puVar2[1] = 0;
|
|
*puVar2 = 0;
|
|
iVar4 = iVar4 + 1;
|
|
puVar2 = puVar2 + 2;
|
|
} while (iVar4 < *(int *)(*(int *)((int)this + 0x1e) + 0xd6));
|
|
}
|
|
FUN_01015cb2(0,(int)this);
|
|
return 0;
|
|
}
|
|
pvVar1 = (void *)((int)this + *(int *)(*(int *)((int)this + 0x1e) + 0xda) * 8);
|
|
*(undefined4 *)((int)pvVar1 + 0x7a) = *(undefined4 *)((int)this + 0x4e);
|
|
*(undefined4 *)((int)pvVar1 + 0x76) = *(undefined4 *)((int)this + 6);
|
|
floor((double)param_2);
|
|
iVar4 = _ftol();
|
|
pvVar1 = (void *)((int)this + iVar4 * 8);
|
|
*(undefined4 *)((int)this + 0x4e) = *(undefined4 *)((int)pvVar1 + 0x7a);
|
|
param_2 = *(float *)((int)this + 0x4e);
|
|
*(undefined4 *)((int)this + 6) = *(undefined4 *)((int)pvVar1 + 0x76);
|
|
}
|
|
}
|
|
FUN_01015d79(this,0xb,(float)(int)param_2);
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
|
|
|
|
undefined4 __thiscall FUN_01015ef9(void *this,int param_1)
|
|
|
|
{
|
|
undefined4 uVar1;
|
|
|
|
if (param_1 < 4) {
|
|
uVar1 = *(undefined4 *)((int)this + param_1 * 4 + 0x66);
|
|
}
|
|
else {
|
|
uVar1 = 0;
|
|
}
|
|
return uVar1;
|
|
}
|
|
|
|
|
|
|
|
void __thiscall FUN_01015f17(void *this,int param_1,undefined4 param_2)
|
|
|
|
{
|
|
if (param_1 < 4) {
|
|
*(undefined4 *)((int)this + param_1 * 4 + 0x66) = param_2;
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void __fastcall
|
|
FUN_01015f34(undefined4 param_1,undefined **param_2,undefined4 param_3,undefined1 (*param_4) [10])
|
|
|
|
{
|
|
*(undefined4 *)(param_4 + 10 + 2) = 0;
|
|
FUN_01015f4e(param_4,param_2);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
undefined1 (*) [10] __fastcall
|
|
FUN_01015f4e(undefined1 (*__return_storage_ptr__) [10],undefined **param_1)
|
|
|
|
{
|
|
float fVar1;
|
|
int iVar2;
|
|
int iVar3;
|
|
float fVar4;
|
|
undefined2 extraout_var;
|
|
undefined1 (*pauVar5) [10];
|
|
|
|
*(int *)(__return_storage_ptr__ + 9 + 8) =
|
|
*(int *)(__return_storage_ptr__ + 9 + 8) + *(int *)(__return_storage_ptr__ + 9 + 4);
|
|
iVar2 = *(int *)(__return_storage_ptr__ + 3 + 4);
|
|
iVar3 = *(int *)(*(int *)(iVar2 + 4) + 4);
|
|
if (*(int *)(__return_storage_ptr__ + 9 + 8) < iVar3) {
|
|
if (*(int *)(__return_storage_ptr__ + 9 + 8) < 0) {
|
|
*(int *)(__return_storage_ptr__ + 9 + 8) = iVar3 + -1;
|
|
}
|
|
}
|
|
else {
|
|
*(undefined4 *)(__return_storage_ptr__ + 9 + 8) = 0;
|
|
}
|
|
iVar2 = *(int *)(*(int *)(iVar2 + 4) + 8 + *(int *)(__return_storage_ptr__ + 9 + 8) * 4);
|
|
if (*(int *)(*(int *)(__return_storage_ptr__ + 3) + 0x172) == 0) {
|
|
FUN_01011ec9(0x3f,(undefined **)__return_storage_ptr__);
|
|
if (*(int *)(__return_storage_ptr__ + 7) != 0) {
|
|
FUN_01009895(*(int *)(__return_storage_ptr__ + 7));
|
|
}
|
|
if (*(int *)(__return_storage_ptr__ + 9 + 8) == 0) {
|
|
FUN_01011ec9(0x3e,(undefined **)__return_storage_ptr__);
|
|
}
|
|
}
|
|
FUN_01013974(*(undefined4 **)(__return_storage_ptr__ + 2 + 6),iVar2,
|
|
*(undefined4 *)
|
|
(*(int *)(*(int *)(__return_storage_ptr__ + 3 + 8) + 4) + 8 +
|
|
*(int *)(__return_storage_ptr__ + 9 + 8) * 4),
|
|
*(int *)(iVar2 + 0x1d) - *(int *)(*(int *)(__return_storage_ptr__ + 3) + 0xea),
|
|
*(int *)(iVar2 + 0x21) - *(int *)(*(int *)(__return_storage_ptr__ + 3) + 0xee));
|
|
fVar4 = *(float *)(__return_storage_ptr__ + 9) * *(float *)(__return_storage_ptr__ + 7 + 8);
|
|
fVar1 = *(float *)(__return_storage_ptr__ + 8 + 6);
|
|
*(float *)(__return_storage_ptr__ + 7 + 8) = fVar4;
|
|
if (fVar4 >= fVar1) {
|
|
pauVar5 = (undefined1 (*) [10])
|
|
FUN_010074b7(1.00000000 / fVar4,(int)__return_storage_ptr__,(int)FUN_01015f34);
|
|
return pauVar5;
|
|
}
|
|
return (undefined1 (*) [10])
|
|
CONCAT22(extraout_var,(ushort)(fVar4 < fVar1) << 8 | (ushort)(fVar4 == fVar1) << 0xe);
|
|
}
|
|
|
|
|
|
|
|
undefined4 __thiscall FUN_01016014(void *this,int param_1)
|
|
|
|
{
|
|
int iVar1;
|
|
|
|
if (param_1 == 0x400) {
|
|
if (*(int *)((int)this + 0x66) != 0) {
|
|
FUN_01007659(*(int *)((int)this + 0x66));
|
|
*(undefined4 *)((int)this + 0x66) = 0;
|
|
}
|
|
*(undefined4 *)((int)this + 0x62) = 0;
|
|
iVar1 = *(int *)(*(int *)(*(int *)((int)this + 0x22) + 4) + 8);
|
|
FUN_01013974(*(undefined4 **)((int)this + 0x1a),iVar1,
|
|
*(undefined4 *)(*(int *)(*(int *)((int)this + 0x26) + 4) + 8),
|
|
*(int *)(iVar1 + 0x1d) - *(int *)(*(int *)((int)this + 0x1e) + 0xea),
|
|
*(int *)(iVar1 + 0x21) - *(int *)(*(int *)((int)this + 0x1e) + 0xee));
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
|
|
|
|
undefined4 __thiscall FUN_01016078(void *this,int param_1)
|
|
|
|
{
|
|
undefined4 uVar1;
|
|
|
|
if (param_1 < 2) {
|
|
uVar1 = *(undefined4 *)((int)this + param_1 * 4 + 0x6e);
|
|
}
|
|
else {
|
|
uVar1 = 0;
|
|
}
|
|
return uVar1;
|
|
}
|
|
|
|
|
|
|
|
void __thiscall FUN_01016096(void *this,int param_1,undefined4 param_2)
|
|
|
|
{
|
|
if (param_1 < 2) {
|
|
*(undefined4 *)((int)this + param_1 * 4 + 0x6e) = param_2;
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_010160b3(int param_1,int param_2)
|
|
|
|
{
|
|
*(undefined4 *)(param_2 + 0x4e) = 0;
|
|
*(undefined *)(param_2 + 5) = 1;
|
|
FUN_010139b6(*(int *)(param_2 + 0x1a),*(int *)(*(int *)(*(int *)(param_2 + 0x22) + 4) + 8));
|
|
if ((param_1 != 0) && (*(int *)(param_2 + 0x46) != 0)) {
|
|
FUN_01009895(*(int *)(param_2 + 0x46));
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
undefined4 __thiscall FUN_010160f4(void *this,int param_1,float param_2)
|
|
|
|
{
|
|
undefined4 *puVar1;
|
|
int iVar2;
|
|
|
|
if (param_1 == 0x31) {
|
|
*(undefined *)((int)this + 5) = 0;
|
|
FUN_010139b6(*(int *)((int)this + 0x1a),0);
|
|
}
|
|
else {
|
|
if (param_1 == 0x32) {
|
|
iVar2 = FUN_010074b7(*(undefined4 *)((int)this + 0x52),(int)this,(int)FUN_010160b3);
|
|
*(int *)((int)this + 0x4e) = iVar2;
|
|
}
|
|
else {
|
|
if (param_1 == 0x3fc) {
|
|
*(undefined4 *)((int)this + *(int *)(*(int *)((int)this + 0x1e) + 0xda) * 4 + 0x62) =
|
|
*(undefined4 *)((int)this + 6);
|
|
floor((double)param_2);
|
|
iVar2 = _ftol();
|
|
iVar2 = *(int *)((int)this + iVar2 * 4 + 0x62);
|
|
*(int *)((int)this + 6) = iVar2;
|
|
FUN_010160f4(this,0x32 - (uint)(iVar2 != 0),0.00000000);
|
|
}
|
|
else {
|
|
if (param_1 == 0x400) {
|
|
*(undefined4 *)((int)this + 6) = 0;
|
|
iVar2 = 0;
|
|
if (0 < *(int *)(*(int *)((int)this + 0x1e) + 0xd6)) {
|
|
puVar1 = (undefined4 *)((int)this + 0x62);
|
|
do {
|
|
*puVar1 = 0;
|
|
iVar2 = iVar2 + 1;
|
|
puVar1 = puVar1 + 1;
|
|
} while (iVar2 < *(int *)(*(int *)((int)this + 0x1e) + 0xd6));
|
|
}
|
|
if (*(int *)((int)this + 0x4e) != 0) {
|
|
FUN_01007659(*(int *)((int)this + 0x4e));
|
|
}
|
|
FUN_010160b3(0,(int)this);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
|
|
|
|
undefined4 __thiscall FUN_010161d0(void *this,int param_1)
|
|
|
|
{
|
|
undefined4 uVar1;
|
|
|
|
if (param_1 < 3) {
|
|
uVar1 = *(undefined4 *)((int)this + param_1 * 4 + 0x56);
|
|
}
|
|
else {
|
|
uVar1 = 0;
|
|
}
|
|
return uVar1;
|
|
}
|
|
|
|
|
|
|
|
void __thiscall FUN_010161ee(void *this,int param_1,undefined4 param_2)
|
|
|
|
{
|
|
if (param_1 < 3) {
|
|
*(undefined4 *)((int)this + param_1 * 4 + 0x56) = param_2;
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_0101620b(undefined4 param_1,undefined **param_2)
|
|
|
|
{
|
|
(**(code **)*param_2)(0x32,0);
|
|
*(undefined4 *)((int)param_2 + 0x52) = 0;
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
undefined4 __thiscall FUN_01016230(void *this,int param_1)
|
|
|
|
{
|
|
int iVar1;
|
|
int iVar2;
|
|
|
|
if (0x30 < param_1) {
|
|
if (0x32 < param_1) {
|
|
if (param_1 != 0x400) {
|
|
return 0;
|
|
}
|
|
if (*(int *)((int)this + 0x52) != 0) {
|
|
FUN_01007659(*(int *)((int)this + 0x52));
|
|
}
|
|
*(undefined4 *)((int)this + 0x52) = 0;
|
|
}
|
|
if ((param_1 == 0x32) || (param_1 == 0x400)) {
|
|
*(undefined *)((int)this + 5) = 1;
|
|
}
|
|
else {
|
|
*(undefined *)((int)this + 5) = 0;
|
|
}
|
|
if (*(int *)((int)this + 0x22) != 0) {
|
|
iVar2 = (3 - (int)*(char *)((int)this + 5)) * 4;
|
|
iVar1 = *(int *)(iVar2 + *(int *)(*(int *)((int)this + 0x22) + 4));
|
|
FUN_01013974(*(undefined4 **)((int)this + 0x1a),iVar1,
|
|
*(undefined4 *)(*(int *)(*(int *)((int)this + 0x26) + 4) + iVar2),
|
|
*(int *)(iVar1 + 0x1d) - *(int *)(*(int *)((int)this + 0x1e) + 0xea),
|
|
*(int *)(iVar1 + 0x21) - *(int *)(*(int *)((int)this + 0x1e) + 0xee));
|
|
}
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
|
|
|
|
undefined4 __thiscall FUN_010162c4(void *this,int param_1)
|
|
|
|
{
|
|
undefined4 uVar1;
|
|
|
|
if (param_1 < 1) {
|
|
uVar1 = *(undefined4 *)((int)this + param_1 * 4 + 0x5e);
|
|
}
|
|
else {
|
|
uVar1 = 0;
|
|
}
|
|
return uVar1;
|
|
}
|
|
|
|
|
|
|
|
void __thiscall FUN_010162e2(void *this,int param_1,undefined4 param_2)
|
|
|
|
{
|
|
if (param_1 < 1) {
|
|
*(undefined4 *)((int)this + param_1 * 4 + 0x5e) = param_2;
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_010162ff(undefined4 param_1,undefined **param_2)
|
|
|
|
{
|
|
*(undefined4 *)((int)param_2 + 0x56) = 0;
|
|
FUN_01011ec9(0x3c,param_2);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
undefined4 __thiscall FUN_0101631c(void *this,int param_1,float param_2)
|
|
|
|
{
|
|
int iVar1;
|
|
|
|
if (param_1 == 0x33) {
|
|
LAB_01016345:
|
|
if (*(int *)((int)this + 0x56) != 0) {
|
|
FUN_01007659(*(int *)((int)this + 0x56));
|
|
*(undefined4 *)((int)this + 0x56) = 0;
|
|
}
|
|
*(undefined4 *)((int)this + 6) = 0;
|
|
*(undefined *)((int)this + 5) = 0;
|
|
FUN_010139b6(*(int *)((int)this + 0x1a),0);
|
|
if (param_1 == 0x33) {
|
|
FUN_01009895(*(int *)((int)this + 0x5e));
|
|
}
|
|
}
|
|
else {
|
|
if (param_1 == 0x34) {
|
|
*(undefined *)((int)this + 5) = 1;
|
|
FUN_01009895(*(int *)((int)this + 0x5a));
|
|
FUN_010139b6(*(int *)((int)this + 0x1a),*(int *)(*(int *)(*(int *)((int)this + 0x22) + 4) + 8)
|
|
);
|
|
}
|
|
else {
|
|
if (param_1 != 0x3b) {
|
|
if (((param_1 != 0x3f3) && (param_1 != 0x3fc)) && (param_1 != 0x400)) {
|
|
return 0;
|
|
}
|
|
goto LAB_01016345;
|
|
}
|
|
}
|
|
if (*(int *)((int)this + 0x56) != 0) {
|
|
FUN_01007659(*(int *)((int)this + 0x56));
|
|
}
|
|
if ((ushort)((ushort)(param_2 < 0.00000000) << 8 | (ushort)(param_2 == 0.00000000) << 0xe) != 0)
|
|
{
|
|
param_2 = 0.00000000;
|
|
}
|
|
iVar1 = FUN_010074b7(param_2,(int)this,(int)FUN_010162ff);
|
|
*(int *)((int)this + 0x56) = iVar1;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
|
|
|
|
undefined4 __thiscall FUN_010163db(void *this,int param_1)
|
|
|
|
{
|
|
int iVar1;
|
|
|
|
if (param_1 == 0x3fc) {
|
|
return 0;
|
|
}
|
|
if (param_1 == 0x35) {
|
|
*(undefined *)((int)this + 5) = 0;
|
|
FUN_010139b6(*(int *)((int)this + 0x1a),0);
|
|
iVar1 = *(int *)((int)this + 0x52);
|
|
}
|
|
else {
|
|
if ((param_1 != 0x36) && (param_1 != 0x400)) goto LAB_01016437;
|
|
*(undefined *)((int)this + 5) = 1;
|
|
FUN_010139b6(*(int *)((int)this + 0x1a),*(int *)(*(int *)(*(int *)((int)this + 0x22) + 4) + 8));
|
|
if (param_1 != 0x36) goto LAB_01016437;
|
|
iVar1 = *(int *)((int)this + 0x4e);
|
|
}
|
|
FUN_01009895(iVar1);
|
|
LAB_01016437:
|
|
FUN_01011ec9(param_1,(undefined **)this);
|
|
return 0;
|
|
}
|
|
|
|
|
|
|
|
void FUN_0101644b(undefined4 param_1,int param_2)
|
|
|
|
{
|
|
*(undefined *)(param_2 + 5) = 1;
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
undefined4 __thiscall FUN_01016460(void *this,int param_1)
|
|
|
|
{
|
|
if (param_1 == 0x400) {
|
|
*(undefined *)((int)this + 5) = 1;
|
|
*(undefined *)((int)this + 0x4e) = 0;
|
|
if (*(int *)((int)this + 0x22) != 0) {
|
|
FUN_010139b6(*(int *)((int)this + 0x1a),*(int *)(*(int *)(*(int *)((int)this + 0x22) + 4) + 8)
|
|
);
|
|
}
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
|
|
|
|
undefined4 __thiscall FUN_01016496(void *this,int param_1)
|
|
|
|
{
|
|
undefined4 uVar1;
|
|
|
|
if (param_1 < 2) {
|
|
uVar1 = *(undefined4 *)((int)this + param_1 * 4 + 0x4f);
|
|
}
|
|
else {
|
|
uVar1 = 0;
|
|
}
|
|
return uVar1;
|
|
}
|
|
|
|
|
|
|
|
void __thiscall FUN_010164b4(void *this,int param_1,undefined4 param_2)
|
|
|
|
{
|
|
if (param_1 < 2) {
|
|
*(undefined4 *)((int)this + param_1 * 4 + 0x4f) = param_2;
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_010164d1(undefined4 param_1,int param_2)
|
|
|
|
{
|
|
FUN_010139b6(*(int *)(param_2 + 0x1a),0);
|
|
*(undefined4 *)(param_2 + 0x5b) = 0;
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void __thiscall
|
|
FUN_010164f2(void *this,void *param_1,undefined4 *param_2,undefined4 param_3,float param_4,
|
|
undefined4 param_5)
|
|
|
|
{
|
|
int iVar1;
|
|
|
|
*(undefined4 *)((int)param_1 + 0x2a) = *param_2;
|
|
*(undefined4 *)((int)param_1 + 0x2e) = param_2[1];
|
|
*(float *)((int)param_1 + 0x46) = *(float *)((int)param_1 + 0x46) - param_4;
|
|
FUN_0101590f(param_1,param_5);
|
|
if (*(int *)(*(int *)((int)this + 0x1e) + 0x172) == 0) {
|
|
if (*(char *)((int)this + 0x4e) == '\0') {
|
|
FUN_01009895(*(int *)((int)this + 0x46));
|
|
FUN_01011ec9(0x3f,(undefined **)this);
|
|
*(bool *)((int)this + 0x4e) = *(char *)((int)this + 0x4e) == '\0';
|
|
if (*(int *)((int)this + 0x22) != 0) {
|
|
FUN_010139b6(*(int *)((int)this + 0x1a),
|
|
*(int *)(*(int *)(*(int *)((int)this + 0x22) + 4) + 8));
|
|
}
|
|
}
|
|
else {
|
|
FUN_010074b7(0x3dcccccd,(int)this,(int)FUN_0101644b);
|
|
*(undefined *)((int)this + 5) = 0;
|
|
*(bool *)((int)this + 0x4e) = *(char *)((int)this + 0x4e) == '\0';
|
|
if (*(int *)((int)this + 0x5b) == 0) {
|
|
iVar1 = FUN_010074b7(*(undefined4 *)((int)this + 0x57),(int)this,(int)FUN_010164d1);
|
|
*(int *)((int)this + 0x5b) = iVar1;
|
|
}
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
undefined4 __thiscall FUN_010165a7(void *this,int param_1)
|
|
|
|
{
|
|
if (param_1 == 0x400) {
|
|
*(undefined *)((int)this + 5) = 1;
|
|
*(undefined *)((int)this + 0x4e) = 0;
|
|
if (*(int *)((int)this + 0x5b) != 0) {
|
|
FUN_01007659(*(int *)((int)this + 0x5b));
|
|
}
|
|
*(undefined4 *)((int)this + 0x5b) = 0;
|
|
if (*(int *)((int)this + 0x22) != 0) {
|
|
FUN_010139b6(*(int *)((int)this + 0x1a),0);
|
|
}
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
|
|
|
|
void __thiscall
|
|
FUN_010165ed(void *this,void *param_1,undefined4 *param_2,undefined4 param_3,float param_4,
|
|
undefined4 param_5)
|
|
|
|
{
|
|
*(undefined4 *)((int)param_1 + 0x2a) = *param_2;
|
|
*(undefined4 *)((int)param_1 + 0x2e) = param_2[1];
|
|
*(float *)((int)param_1 + 0x46) = *(float *)((int)param_1 + 0x46) - param_4;
|
|
FUN_0101590f(param_1,param_5);
|
|
if (*(int *)(*(int *)((int)this + 0x1e) + 0x172) == 0) {
|
|
FUN_01009895(*(int *)((int)this + 0x46));
|
|
FUN_01011ec9(0x3f,(undefined **)this);
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_0101663f(undefined4 param_1,undefined **param_2)
|
|
|
|
{
|
|
int iVar1;
|
|
|
|
if (*(int *)((int)param_2 + 0x5a) == 0) {
|
|
if (*(int *)((int)param_2 + 0x22) != 0) {
|
|
iVar1 = *(int *)(*(int *)(*(int *)((int)param_2 + 0x22) + 4) + 8);
|
|
FUN_01013974(*(undefined4 **)((int)param_2 + 0x1a),iVar1,
|
|
*(undefined4 *)(*(int *)(*(int *)((int)param_2 + 0x26) + 4) + 8),
|
|
*(int *)(iVar1 + 0x1d) - *(int *)(*(int *)((int)param_2 + 0x1e) + 0xea),
|
|
*(int *)(iVar1 + 0x21) - *(int *)(*(int *)((int)param_2 + 0x1e) + 0xee));
|
|
}
|
|
*(undefined4 *)((int)param_2 + 0x56) = 0;
|
|
FUN_01011ec9(0x3c,param_2);
|
|
}
|
|
else {
|
|
*(undefined4 *)((int)param_2 + 0x42) = 0;
|
|
iVar1 = FUN_010074b7(*(undefined4 *)((int)param_2 + 0x52),(int)param_2,(int)FUN_0101663f);
|
|
*(int *)((int)param_2 + 0x56) = iVar1;
|
|
FUN_01009895(*(int *)((int)param_2 + 0x4a));
|
|
if (*(int *)((int)param_2 + 0x22) != 0) {
|
|
iVar1 = *(int *)(*(int *)(*(int *)((int)param_2 + 0x22) + 4) + 0xc);
|
|
FUN_01013974(*(undefined4 **)((int)param_2 + 0x1a),iVar1,
|
|
*(undefined4 *)(*(int *)(*(int *)((int)param_2 + 0x26) + 4) + 0xc),
|
|
*(int *)(iVar1 + 0x1d) - *(int *)(*(int *)((int)param_2 + 0x1e) + 0xea),
|
|
*(int *)(iVar1 + 0x21) - *(int *)(*(int *)((int)param_2 + 0x1e) + 0xee));
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
undefined4 __thiscall FUN_010166f6(void *this,int param_1)
|
|
|
|
{
|
|
if (((param_1 == 0x3f3) || (param_1 == 0x400)) && (*(int *)((int)this + 0x56) != 0)) {
|
|
FUN_01007659(*(int *)((int)this + 0x56));
|
|
if (*(int *)((int)this + 0x22) != 0) {
|
|
FUN_010139b6(*(int *)((int)this + 0x1a),0);
|
|
}
|
|
*(undefined4 *)((int)this + 0x56) = 0;
|
|
*(undefined4 *)((int)this + 0x5a) = 0;
|
|
*(undefined4 *)((int)this + 0x42) = 0x4e6e6b28;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
|
|
|
|
void __thiscall FUN_01016745(void *this,int param_1)
|
|
|
|
{
|
|
if (*(int *)((int)this + 0x4e) == 0) {
|
|
*(int *)((int)this + 0x66) = param_1;
|
|
*(undefined4 *)((int)this + 0x42) = 0x4e6e6b28;
|
|
*(undefined4 *)((int)this + 0x4e) = 1;
|
|
*(void **)(param_1 + 0x6a) = this;
|
|
*(undefined4 *)(param_1 + 0x2a) = *(undefined4 *)((int)this + 0x6e);
|
|
*(undefined4 *)(param_1 + 0x2e) = *(undefined4 *)((int)this + 0x72);
|
|
*(undefined4 *)((int)this + 0x7e) = *(undefined4 *)(param_1 + 0x32);
|
|
*(undefined4 *)(param_1 + 0x32) = *(undefined4 *)((int)this + 0x62);
|
|
if (*(int *)(*(int *)((int)this + 0x1e) + 0x172) == 0) {
|
|
FUN_01009895(*(int *)((int)this + 0x46));
|
|
FUN_01011ec9(0x3f,(undefined **)this);
|
|
}
|
|
else {
|
|
(***(code ***)this)(0x37,0x3dcccccd);
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_010167be(undefined4 param_1,int param_2)
|
|
|
|
{
|
|
if (*(int *)(param_2 + 0x52) == 0) {
|
|
*(undefined *)(param_2 + 5) = 1;
|
|
}
|
|
*(undefined4 *)(param_2 + 0x56) = 0;
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_010167dd(undefined4 param_1,int param_2)
|
|
|
|
{
|
|
int iVar1;
|
|
|
|
if (*(int *)(param_2 + 0x4e) != 0) {
|
|
*(undefined4 *)(param_2 + 0x4e) = 0;
|
|
iVar1 = FUN_010074b7(*(undefined4 *)(param_2 + 0x5e),param_2,(int)FUN_010167be);
|
|
*(int *)(param_2 + 0x56) = iVar1;
|
|
iVar1 = *(int *)(param_2 + 0x66);
|
|
if (iVar1 != 0) {
|
|
*(undefined4 *)(param_2 + 0x66) = 0;
|
|
*(undefined4 *)(iVar1 + 0x32) = *(undefined4 *)(param_2 + 0x7e);
|
|
FUN_01015935(iVar1,(undefined4 *)(param_2 + 0x82),*(float *)(param_2 + 0x8e),
|
|
*(float *)(param_2 + 0x92),*(float *)(param_2 + 0x96));
|
|
*(undefined *)(param_2 + 5) = 0;
|
|
FUN_01009895(*(int *)(param_2 + 0x4a));
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
uint __thiscall FUN_0101685b(void *this,int param_1,float *param_2)
|
|
|
|
{
|
|
float fVar1;
|
|
uint uVar2;
|
|
bool bVar3;
|
|
float local_10;
|
|
float local_c;
|
|
|
|
if (*(int *)((int)this + 0x4e) == 0) {
|
|
local_10 = *(float *)((int)this + 0x6e) - *(float *)(param_1 + 0x2a);
|
|
local_c = *(float *)((int)this + 0x72) - *(float *)(param_1 + 0x2e);
|
|
fVar1 = local_10 * local_10 + local_c * local_c;
|
|
bVar3 = (ushort)((ushort)(fVar1 < *(float *)((int)this + 0x7a)) << 8 |
|
|
(ushort)(fVar1 == *(float *)((int)this + 0x7a)) << 0xe) != 0;
|
|
if (bVar3) {
|
|
FUN_01008ae9(&local_10);
|
|
*param_2 = local_10 * *(float *)((int)this + 0x6a) +
|
|
-(*(float *)(param_1 + 0x36) * *(float *)(param_1 + 0x42));
|
|
param_2[1] = local_c * *(float *)((int)this + 0x6a) +
|
|
-(*(float *)(param_1 + 0x3a) * *(float *)(param_1 + 0x42));
|
|
}
|
|
uVar2 = (uint)bVar3;
|
|
}
|
|
else {
|
|
uVar2 = 0;
|
|
}
|
|
return uVar2;
|
|
}
|
|
|
|
|
|
|
|
undefined4 __thiscall FUN_010168e3(int iParm1,int param_1,undefined4 param_2)
|
|
|
|
{
|
|
int iVar1;
|
|
bool in_PF;
|
|
|
|
if (param_1 == 0x37) {
|
|
if (*(int *)(iParm1 + 0x4e) != 0) {
|
|
if (!in_PF) {
|
|
param_2 = *(undefined4 *)(iParm1 + 0x5a);
|
|
}
|
|
iVar1 = FUN_010074b7(param_2,iParm1,(int)FUN_010167dd);
|
|
*(int *)(iParm1 + 0x56) = iVar1;
|
|
}
|
|
}
|
|
else {
|
|
if (param_1 != 0x3f3) {
|
|
if (param_1 != 0x400) {
|
|
return 0;
|
|
}
|
|
if (*(int *)(iParm1 + 0x4e) != 0) {
|
|
if (*(int *)(iParm1 + 0x56) != 0) {
|
|
FUN_01007659(*(int *)(iParm1 + 0x56));
|
|
}
|
|
FUN_010167dd(0,iParm1);
|
|
}
|
|
}
|
|
if (*(int *)(iParm1 + 0x52) != 0) {
|
|
*(undefined *)(iParm1 + 5) = 0;
|
|
}
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
|
|
|
|
undefined4 __thiscall FUN_01016963(void *this,int param_1)
|
|
|
|
{
|
|
undefined4 uVar1;
|
|
|
|
if (param_1 < 5) {
|
|
uVar1 = *(undefined4 *)((int)this + param_1 * 4 + 0xa6);
|
|
}
|
|
else {
|
|
uVar1 = 0;
|
|
}
|
|
return uVar1;
|
|
}
|
|
|
|
|
|
|
|
void __thiscall FUN_01016984(void *this,int param_1,undefined4 param_2)
|
|
|
|
{
|
|
if (param_1 < 5) {
|
|
*(undefined4 *)((int)this + param_1 * 4 + 0xa6) = param_2;
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_010169a4(undefined4 param_1,int param_2)
|
|
|
|
{
|
|
*(undefined4 *)(param_2 + 0x56) = 0;
|
|
*(undefined4 *)(param_2 + 0x52) = 1;
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
uint __thiscall FUN_010169c0(undefined **ppuParm1,int param_1,float *param_2)
|
|
|
|
{
|
|
undefined4 uVar1;
|
|
float fVar2;
|
|
uint uVar3;
|
|
bool in_PF;
|
|
bool bVar4;
|
|
float local_10;
|
|
float local_c;
|
|
|
|
if (*(int *)((int)ppuParm1 + 0x4e) == 0) {
|
|
local_10 = *(float *)((int)ppuParm1 + 0x72) - *(float *)(param_1 + 0x2a);
|
|
local_c = *(float *)((int)ppuParm1 + 0x76) - *(float *)(param_1 + 0x2e);
|
|
fVar2 = local_10 * local_10 + local_c * local_c;
|
|
bVar4 = (ushort)((ushort)(fVar2 < *(float *)((int)ppuParm1 + 0x7e)) << 8 |
|
|
(ushort)(fVar2 == *(float *)((int)ppuParm1 + 0x7e)) << 0xe) != 0;
|
|
if (bVar4) {
|
|
FUN_01008ae9(&local_10);
|
|
*param_2 = local_10 * *(float *)((int)ppuParm1 + 0x6e) +
|
|
-(*(float *)(param_1 + 0x36) * *(float *)(param_1 + 0x42));
|
|
param_2[1] = local_c * *(float *)((int)ppuParm1 + 0x6e) +
|
|
-(*(float *)(param_1 + 0x3a) * *(float *)(param_1 + 0x42));
|
|
}
|
|
uVar3 = (uint)bVar4;
|
|
}
|
|
else {
|
|
if (*(int *)((int)ppuParm1 + 0x52) != 0) {
|
|
fVar2 = *(float *)(param_1 + 0x3e) -
|
|
*(float *)(*(int *)((int)ppuParm1 + 0x1e) + 0x10e) * *(float *)(param_1 + 0x4a) *
|
|
*(float *)((int)ppuParm1 + 0x62);
|
|
*(float *)(param_1 + 0x3e) = fVar2;
|
|
*(float *)(param_1 + 0x32) = fVar2 + *(float *)(param_1 + 0x32);
|
|
if (!in_PF) {
|
|
*(undefined4 *)((int)ppuParm1 + 0x4e) = 0;
|
|
*(undefined4 *)((int)ppuParm1 + 0x52) = 0;
|
|
*(undefined4 *)(param_1 + 0x32) = *(undefined4 *)((int)ppuParm1 + 0x66);
|
|
uVar1 = *(undefined4 *)((int)ppuParm1 + 0x6a);
|
|
*(undefined4 *)(param_1 + 0x3e) = 0;
|
|
*(undefined4 *)(param_1 + 0x6e) = uVar1;
|
|
*(undefined4 *)(param_1 + 0x3a) = 0;
|
|
*(undefined4 *)(param_1 + 0x6a) = 0;
|
|
*(undefined4 *)(param_1 + 0x36) = 0;
|
|
*(undefined4 *)(param_1 + 0x42) = 0;
|
|
FUN_01009895(*(int *)((int)ppuParm1 + 0x46));
|
|
FUN_01011ec9(0x3a,ppuParm1);
|
|
}
|
|
}
|
|
uVar3 = 0;
|
|
}
|
|
return uVar3;
|
|
}
|
|
|
|
|
|
|
|
undefined4 __thiscall FUN_01016ab1(void *this,int param_1)
|
|
|
|
{
|
|
if ((param_1 == 0x400) && (*(int *)((int)this + 0x4e) != 0)) {
|
|
if (*(int *)((int)this + 0x56) != 0) {
|
|
FUN_01007659(*(int *)((int)this + 0x56));
|
|
}
|
|
*(undefined4 *)((int)this + 0x56) = 0;
|
|
*(undefined4 *)((int)this + 0x52) = 1;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
|
|
|
|
undefined4 __thiscall FUN_01016aec(void *this,int param_1)
|
|
|
|
{
|
|
undefined4 uVar1;
|
|
|
|
if (param_1 < 4) {
|
|
uVar1 = *(undefined4 *)((int)this + param_1 * 4 + 0x4e);
|
|
}
|
|
else {
|
|
uVar1 = 0;
|
|
}
|
|
return uVar1;
|
|
}
|
|
|
|
|
|
|
|
void __thiscall FUN_01016b0a(void *this,int param_1,undefined4 param_2)
|
|
|
|
{
|
|
if (param_1 < 4) {
|
|
*(undefined4 *)((int)this + param_1 * 4 + 0x4e) = param_2;
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
float ** FUN_01016b27(int param_1,float **param_2,float **param_3,float **param_4,float **param_5)
|
|
|
|
{
|
|
float *pfVar1;
|
|
float *pfVar2;
|
|
undefined2 extraout_var;
|
|
float *pfVar3;
|
|
bool in_PF;
|
|
float10 fVar4;
|
|
float10 fVar5;
|
|
float local_20;
|
|
float local_1c;
|
|
float local_14;
|
|
float local_10;
|
|
float local_8;
|
|
|
|
local_14 = (float)*param_3;
|
|
local_10 = ((float *)param_3)[1];
|
|
local_20 = ((float *)param_3)[2];
|
|
local_1c = ((float *)param_3)[3];
|
|
local_8 = 1000000000.00000000;
|
|
if (0 < (int)param_2) {
|
|
pfVar3 = (float *)(param_1 + 0x14);
|
|
param_3 = param_2;
|
|
do {
|
|
pfVar1 = pfVar3 + -2;
|
|
fVar4 = FUN_0101cbf5(&local_14,pfVar1);
|
|
fVar5 = FUN_0101cbf5(&local_20,pfVar3);
|
|
if (!in_PF) {
|
|
local_8 = (float)(fVar5 + (float10)(float)fVar4);
|
|
*param_4 = pfVar1;
|
|
*param_5 = pfVar3;
|
|
}
|
|
pfVar2 = pfVar3 + 2;
|
|
fVar4 = FUN_0101cbf5(&local_20,pfVar2);
|
|
fVar5 = FUN_0101cbf5(&local_14,pfVar3);
|
|
if (!in_PF) {
|
|
local_8 = (float)(fVar5 + (float10)(float)fVar4);
|
|
*param_4 = pfVar3;
|
|
*param_5 = pfVar2;
|
|
}
|
|
fVar4 = FUN_0101cbf5(&local_14,pfVar2);
|
|
fVar5 = FUN_0101cbf5(&local_20,pfVar1);
|
|
fVar5 = fVar5 + (float10)(float)fVar4;
|
|
param_2 = (float **)
|
|
CONCAT22(extraout_var,
|
|
(ushort)(fVar5 < (float10)local_8) << 8 |
|
|
(ushort)(fVar5 == (float10)local_8) << 0xe);
|
|
if (!in_PF) {
|
|
local_8 = (float)fVar5;
|
|
*param_4 = pfVar2;
|
|
*param_5 = pfVar1;
|
|
param_2 = param_5;
|
|
}
|
|
pfVar3 = pfVar3 + 0xd;
|
|
param_3 = (float **)((int)param_3 + -1);
|
|
} while (param_3 != (float **)0x0);
|
|
}
|
|
return param_2;
|
|
}
|
|
|
|
|
|
|
|
undefined1 (*) [10] __thiscall
|
|
FUN_01016c24(void *this,undefined1 (*__return_storage_ptr__) [10],void *param_1,undefined4 *param_2,
|
|
float param_3,float param_4,int param_5)
|
|
|
|
{
|
|
float fVar1;
|
|
float fVar2;
|
|
float fVar3;
|
|
float fVar4;
|
|
undefined4 uVar5;
|
|
undefined4 *puVar6;
|
|
undefined1 (*pauVar7) [10];
|
|
|
|
FUN_0101590f(__return_storage_ptr__,param_4);
|
|
fVar1 = *(float *)(__return_storage_ptr__ + 7);
|
|
*(undefined4 *)(__return_storage_ptr__ + 4 + 2) = *(undefined4 *)param_1;
|
|
uVar5 = *(undefined4 *)((int)param_1 + 4);
|
|
*(float *)(__return_storage_ptr__ + 7) = fVar1 - param_3;
|
|
*(undefined4 *)(__return_storage_ptr__ + 4 + 6) = uVar5;
|
|
puVar6 = *(undefined4 **)((int)param_4 + 0xd);
|
|
if (puVar6 == (undefined4 *)0x0) {
|
|
if (param_4 == *(float *)((int)this + 0x86)) {
|
|
pauVar7 = *(undefined1 (**) [10])((int)this + 0x1e);
|
|
if (*(int *)(pauVar7 + 0x25) == 0) {
|
|
FUN_01009895(*(int *)((int)this + 0x46));
|
|
pauVar7 = (undefined1 (*) [10])FUN_01011ec9(0x3f,(undefined **)this);
|
|
}
|
|
}
|
|
else {
|
|
*(undefined4 *)(__return_storage_ptr__ + 0xf) = 0;
|
|
if (param_4 == *(float *)((int)this + 0x7e)) {
|
|
pauVar7 = *(undefined1 (**) [10])((int)this + 0x8a);
|
|
*(undefined1 (**) [10])(__return_storage_ptr__ + 0xb) = pauVar7;
|
|
if (*(int *)((int)this + 0x6e) == 0) {
|
|
return pauVar7;
|
|
}
|
|
fVar1 = *(float *)(__return_storage_ptr__ + 0xf + 4) + *(float *)((int)this + 0x92);
|
|
}
|
|
else {
|
|
pauVar7 = *(undefined1 (**) [10])((int)this + 0x8e);
|
|
*(undefined1 (**) [10])(__return_storage_ptr__ + 0xb) = pauVar7;
|
|
if (*(int *)((int)this + 0x6e) == 0) {
|
|
return pauVar7;
|
|
}
|
|
fVar1 = *(float *)(__return_storage_ptr__ + 0xf + 4) + *(float *)((int)this + 0x96);
|
|
}
|
|
*(float *)(__return_storage_ptr__ + 5) = fVar1;
|
|
}
|
|
}
|
|
else {
|
|
*(undefined4 *)(__return_storage_ptr__ + 0xf) = 1;
|
|
*(undefined4 *)(__return_storage_ptr__ + 0xd + 8) = *puVar6;
|
|
fVar1 = *(float *)(__return_storage_ptr__ + 0xd + 8);
|
|
fVar2 = *(float *)(__return_storage_ptr__ + 4 + 2);
|
|
fVar3 = *(float *)(__return_storage_ptr__ + 4 + 6);
|
|
*(undefined4 *)(__return_storage_ptr__ + 0xe + 2) = puVar6[1];
|
|
fVar4 = *(float *)(__return_storage_ptr__ + 0xe + 2);
|
|
*(undefined4 *)(__return_storage_ptr__ + 0xe + 6) = puVar6[2];
|
|
*(undefined4 *)(__return_storage_ptr__ + 9 + 4) = puVar6[0xb];
|
|
*(undefined4 *)(__return_storage_ptr__ + 9 + 8) = puVar6[0xc];
|
|
*(float *)(__return_storage_ptr__ + 5) =
|
|
fVar3 * fVar4 + fVar1 * fVar2 + *(float *)(__return_storage_ptr__ + 0xf + 4) +
|
|
*(float *)(__return_storage_ptr__ + 0xe + 6);
|
|
pauVar7 = *(undefined1 (**) [10])((int)this + 0x6a);
|
|
*(undefined1 (**) [10])(__return_storage_ptr__ + 0xb) = pauVar7;
|
|
}
|
|
return pauVar7;
|
|
}
|
|
|
|
|
|
|
|
undefined4 __thiscall FUN_01016d2e(void *this,int param_1,float *param_2)
|
|
|
|
{
|
|
*param_2 = *(float *)(param_1 + 0x5e) -
|
|
*(float *)(param_1 + 0x36) * *(float *)(param_1 + 0x42) * *(float *)((int)this + 0x76);
|
|
param_2[1] = *(float *)(param_1 + 0x62) -
|
|
*(float *)(param_1 + 0x3a) * *(float *)(param_1 + 0x42) *
|
|
*(float *)((int)this + 0x76);
|
|
return 1;
|
|
}
|
|
|
|
|
|
|
|
void FUN_01016d62(undefined4 param_1,int param_2)
|
|
|
|
{
|
|
*(undefined4 *)(param_2 + 0x6e) = 0;
|
|
(**(code **)**(code ***)(param_2 + 0x1e))(0x3ed,DAT_01025634);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_01016d8d(undefined4 param_1,int param_2)
|
|
|
|
{
|
|
if (*(int *)(param_2 + 0x62) != 0) {
|
|
(**(code **)**(code ***)(param_2 + 0x1e))(0x3eb,DAT_01025634);
|
|
}
|
|
*(undefined4 *)(param_2 + 0x62) = 0;
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_01016dc0(undefined4 param_1,int param_2)
|
|
|
|
{
|
|
if (*(int *)(param_2 + 0x5e) != 0) {
|
|
(**(code **)**(code ***)(param_2 + 0x1e))(0x3e9,DAT_01025634);
|
|
}
|
|
*(undefined4 *)(param_2 + 0x5e) = 0;
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_01016df3(undefined4 param_1,int param_2)
|
|
|
|
{
|
|
float fVar1;
|
|
float fVar2;
|
|
int iVar3;
|
|
int iVar4;
|
|
code *pcVar5;
|
|
|
|
if (*(int *)(param_2 + 0x62) == 0) {
|
|
if (*(int *)(param_2 + 0x6a) != 0) {
|
|
FUN_01007659(*(int *)(param_2 + 0x6a));
|
|
*(undefined4 *)(param_2 + 0x6a) = 0;
|
|
}
|
|
(**(code **)**(code ***)(param_2 + 0x1e))(0x3ea,DAT_01025634);
|
|
fVar1 = *(float *)(param_2 + 0x56);
|
|
fVar2 = *(float *)(param_2 + 0x5a);
|
|
pcVar5 = FUN_01016d8d;
|
|
*(undefined4 *)(param_2 + 0x62) = 1;
|
|
iVar4 = param_2;
|
|
iVar3 = rand();
|
|
FUN_010074b7((fVar1 + fVar2) -
|
|
(*(float *)(param_2 + 0x5a) + *(float *)(param_2 + 0x5a)) *
|
|
(float)iVar3 * 0.00003052,iVar4,(int)pcVar5);
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_01016e70(undefined4 param_1,int param_2)
|
|
|
|
{
|
|
float fVar1;
|
|
float fVar2;
|
|
int iVar3;
|
|
int iVar4;
|
|
code *pcVar5;
|
|
|
|
if (*(int *)(param_2 + 0x5e) == 0) {
|
|
if (*(int *)(param_2 + 0x66) != 0) {
|
|
FUN_01007659(*(int *)(param_2 + 0x66));
|
|
*(undefined4 *)(param_2 + 0x66) = 0;
|
|
}
|
|
(**(code **)**(code ***)(param_2 + 0x1e))(1000,DAT_01025634);
|
|
fVar1 = *(float *)(param_2 + 0x56);
|
|
fVar2 = *(float *)(param_2 + 0x5a);
|
|
pcVar5 = FUN_01016dc0;
|
|
*(undefined4 *)(param_2 + 0x5e) = 1;
|
|
iVar4 = param_2;
|
|
iVar3 = rand();
|
|
FUN_010074b7((fVar1 + fVar2) -
|
|
(*(float *)(param_2 + 0x5a) + *(float *)(param_2 + 0x5a)) *
|
|
(float)iVar3 * 0.00003052,iVar4,(int)pcVar5);
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_01016eed(undefined4 param_1,int param_2)
|
|
|
|
{
|
|
FUN_010153ae(1);
|
|
(**(code **)**(code ***)(param_2 + 0x1e))
|
|
(0x3f6,(float)*(int *)((int)*(code ***)(param_2 + 0x1e) + 0xd6));
|
|
*(undefined4 *)(param_2 + 0x72) = 0;
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void __thiscall
|
|
FUN_01016f21(void *this,void *param_1,undefined4 *param_2,undefined4 param_3,float param_4,
|
|
int param_5)
|
|
|
|
{
|
|
float fVar1;
|
|
float fVar2;
|
|
undefined4 uVar3;
|
|
int iVar4;
|
|
void *pvVar5;
|
|
code *local_1c;
|
|
|
|
iVar4 = *(int *)(param_5 + 0xd);
|
|
FUN_0101590f(param_1,param_5);
|
|
*(undefined4 *)((int)param_1 + 0x2a) = *param_2;
|
|
uVar3 = param_2[1];
|
|
*(float *)((int)param_1 + 0x46) = *(float *)((int)param_1 + 0x46) - param_4;
|
|
*(undefined4 *)((int)param_1 + 0x2e) = uVar3;
|
|
if (iVar4 == 0x578) {
|
|
if ((*(int *)((int)this + 0x66) == 0) && (*(int *)((int)this + 0x5e) == 0)) {
|
|
fVar1 = *(float *)((int)this + 0x4e);
|
|
local_1c = FUN_01016e70;
|
|
fVar2 = *(float *)((int)this + 0x52);
|
|
pvVar5 = this;
|
|
iVar4 = rand();
|
|
iVar4 = FUN_010074b7((fVar1 + fVar2) -
|
|
(*(float *)((int)this + 0x52) + *(float *)((int)this + 0x52)) *
|
|
(float)iVar4 * 0.00003052,(int)pvVar5,(int)local_1c);
|
|
*(int *)((int)this + 0x66) = iVar4;
|
|
}
|
|
}
|
|
else {
|
|
if (iVar4 == 0x579) {
|
|
FUN_01016e70(0,(int)this);
|
|
}
|
|
else {
|
|
if (iVar4 == 0x57a) {
|
|
if ((*(int *)((int)this + 0x6a) == 0) && (*(int *)((int)this + 0x62) == 0)) {
|
|
fVar1 = *(float *)((int)this + 0x4e);
|
|
local_1c = FUN_01016df3;
|
|
fVar2 = *(float *)((int)this + 0x52);
|
|
pvVar5 = this;
|
|
iVar4 = rand();
|
|
iVar4 = FUN_010074b7((fVar1 + fVar2) -
|
|
(*(float *)((int)this + 0x52) + *(float *)((int)this + 0x52)) *
|
|
(float)iVar4 * 0.00003052,(int)pvVar5,(int)local_1c);
|
|
*(int *)((int)this + 0x6a) = iVar4;
|
|
}
|
|
}
|
|
else {
|
|
if (iVar4 == 0x57b) {
|
|
FUN_01016df3(0,(int)this);
|
|
}
|
|
else {
|
|
if ((iVar4 == 0x57c) && (*(int *)((int)this + 0x6e) == 0)) {
|
|
(**(code **)**(code ***)((int)this + 0x1e))(0x3ec,*(undefined4 *)((int)param_1 + 0x4e));
|
|
local_1c = FUN_01016d62;
|
|
pvVar5 = this;
|
|
iVar4 = rand();
|
|
iVar4 = FUN_010074b7((float)iVar4 * 0.00003052 + 2.00000000,(int)pvVar5,(int)local_1c);
|
|
*(int *)((int)this + 0x6e) = iVar4;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
undefined4 __thiscall FUN_01017074(void *this,int param_1)
|
|
|
|
{
|
|
int iVar1;
|
|
|
|
if (param_1 == 0x3f6) {
|
|
if (*(int *)((int)this + 0x72) != 0) {
|
|
FUN_01007659(*(int *)((int)this + 0x72));
|
|
}
|
|
*(undefined4 *)((int)this + 0x72) = 0;
|
|
}
|
|
else {
|
|
if (param_1 == 0x3fe) {
|
|
if (*(int *)((int)this + 0x72) != 0) {
|
|
FUN_01007659(*(int *)((int)this + 0x72));
|
|
}
|
|
*(undefined4 *)((int)this + 0x72) = 0;
|
|
if (*(char *)((int)this + 5) != '\0') {
|
|
iVar1 = FUN_010074b7(0x40a00000,(int)this,(int)FUN_01016eed);
|
|
*(int *)((int)this + 0x72) = iVar1;
|
|
}
|
|
}
|
|
else {
|
|
if (param_1 == 0x400) {
|
|
if (*(int *)((int)this + 0x66) != 0) {
|
|
FUN_01007659(*(int *)((int)this + 0x66));
|
|
}
|
|
*(undefined4 *)((int)this + 0x66) = 0;
|
|
if (*(int *)((int)this + 0x6a) != 0) {
|
|
FUN_01007659(*(int *)((int)this + 0x6a));
|
|
}
|
|
*(undefined4 *)((int)this + 0x6a) = 0;
|
|
if (*(int *)((int)this + 0x5e) != 0) {
|
|
FUN_01016dc0(0,(int)this);
|
|
}
|
|
if (*(int *)((int)this + 0x62) != 0) {
|
|
FUN_01016d8d(0,(int)this);
|
|
}
|
|
if (*(int *)((int)this + 0x6e) != 0) {
|
|
FUN_01016d62(0,(int)this);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
|
|
|
|
void FUN_01017130(undefined4 param_1,int param_2)
|
|
|
|
{
|
|
int iVar1;
|
|
|
|
iVar1 = *(int *)(*(int *)(*(int *)(param_2 + 0x1e) + 0x106) + 8);
|
|
*(undefined4 *)(iVar1 + 0x6a) = 0;
|
|
*(undefined *)(iVar1 + 5) = 1;
|
|
*(undefined4 *)(iVar1 + 0x2a) = *(undefined4 *)(param_2 + 0x56);
|
|
*(undefined4 *)(iVar1 + 0x2e) = *(undefined4 *)(param_2 + 0x5a);
|
|
FUN_01015935(iVar1,(undefined4 *)(param_2 + 0x62),*(float *)(param_2 + 0x6e),
|
|
*(float *)(param_2 + 0x72),*(float *)(param_2 + 0x76));
|
|
if (*(int *)(param_2 + 0x7e) != 0) {
|
|
FUN_01009895(*(int *)(param_2 + 0x7e));
|
|
}
|
|
*(undefined4 *)(param_2 + 0x4e) = 0;
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
undefined4 __thiscall FUN_01017197(int iParm1,int param_1,float param_2)
|
|
|
|
{
|
|
undefined4 *puVar1;
|
|
int iVar2;
|
|
bool in_PF;
|
|
|
|
if (param_1 == 0x38) {
|
|
if (!in_PF) {
|
|
param_2 = *(float *)(iParm1 + 0x52);
|
|
}
|
|
iVar2 = FUN_010074b7(param_2,iParm1,(int)FUN_01017130);
|
|
*(int *)(iParm1 + 0x4e) = iVar2;
|
|
}
|
|
else {
|
|
if (param_1 == 0x3fc) {
|
|
*(undefined4 *)(iParm1 + 0x8e + *(int *)(*(int *)(iParm1 + 0x1e) + 0xda) * 4) =
|
|
*(undefined4 *)(iParm1 + 6);
|
|
floor((double)param_2);
|
|
iVar2 = _ftol();
|
|
*(undefined4 *)(iParm1 + 6) = *(undefined4 *)(iParm1 + 0x8e + iVar2 * 4);
|
|
}
|
|
else {
|
|
if (param_1 == 0x400) {
|
|
if (*(int *)(iParm1 + 0x4e) != 0) {
|
|
FUN_01007659(*(int *)(iParm1 + 0x4e));
|
|
}
|
|
*(undefined4 *)(iParm1 + 0x4e) = 0;
|
|
*(undefined4 *)(iParm1 + 6) = 0;
|
|
iVar2 = 0;
|
|
if (0 < *(int *)(*(int *)(iParm1 + 0x1e) + 0xd6)) {
|
|
puVar1 = (undefined4 *)(iParm1 + 0x8e);
|
|
do {
|
|
*puVar1 = 0;
|
|
iVar2 = iVar2 + 1;
|
|
puVar1 = puVar1 + 1;
|
|
} while (iVar2 < *(int *)(*(int *)(iParm1 + 0x1e) + 0xd6));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
|
|
|
|
undefined4 __thiscall FUN_01017262(void *this,int param_1)
|
|
|
|
{
|
|
undefined4 uVar1;
|
|
|
|
if (param_1 < 3) {
|
|
uVar1 = *(undefined4 *)((int)this + param_1 * 4 + 0x82);
|
|
}
|
|
else {
|
|
uVar1 = 0;
|
|
}
|
|
return uVar1;
|
|
}
|
|
|
|
|
|
|
|
void __thiscall FUN_01017283(void *this,int param_1,undefined4 param_2)
|
|
|
|
{
|
|
if (param_1 < 3) {
|
|
*(undefined4 *)((int)this + param_1 * 4 + 0x82) = param_2;
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
undefined4 __thiscall FUN_010172a3(void *this,int param_1)
|
|
|
|
{
|
|
if (param_1 == 0x400) {
|
|
if (*(int *)((int)this + 0x56) != 0) {
|
|
FUN_01007659(*(int *)((int)this + 0x56));
|
|
*(undefined4 *)((int)this + 0x56) = 0;
|
|
}
|
|
*(undefined4 *)(*(int *)((int)this + 0x1e) + 0x4e) = 0;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
|
|
|
|
void FUN_010172d8(undefined4 param_1,undefined **param_2)
|
|
|
|
{
|
|
FUN_01011ec9(0x3c,param_2);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_010172f0(undefined4 param_1,undefined **param_2)
|
|
|
|
{
|
|
*(undefined4 *)((int)param_2 + 0x4e) = 0;
|
|
(**(code **)*param_2)(0x3f7,0);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_01017314(undefined4 param_1,int param_2)
|
|
|
|
{
|
|
int iVar1;
|
|
float fVar2;
|
|
float fVar3;
|
|
int iVar4;
|
|
|
|
fVar2 = (float)*(int *)(param_2 + 0x5a) + *(float *)(param_2 + 0x3e);
|
|
*(float *)(param_2 + 0x3e) = fVar2;
|
|
fVar3 = (float)*(int *)(param_2 + 0x56);
|
|
if ((ushort)((ushort)(fVar2 < fVar3) << 8 | (ushort)(fVar2 == fVar3) << 0xe) == 0) {
|
|
*(undefined4 *)(param_2 + 0x4e) = 0;
|
|
*(float *)(param_2 + 0x3e) = fVar3;
|
|
}
|
|
else {
|
|
iVar4 = FUN_010074b7(*(undefined4 *)(param_2 + 0x5e),param_2,(int)FUN_01017314);
|
|
*(int *)(param_2 + 0x4e) = iVar4;
|
|
}
|
|
floor((double)((float)(*(int *)(*(int *)(*(int *)(param_2 + 0x22) + 4) + 4) + -1) *
|
|
(*(float *)(param_2 + 0x3e) / (float)*(int *)(param_2 + 0x56))));
|
|
iVar4 = _ftol();
|
|
iVar4 = iVar4 * 4 + 8;
|
|
iVar1 = *(int *)(iVar4 + *(int *)(*(int *)(param_2 + 0x22) + 4));
|
|
FUN_01013974(*(undefined4 **)(param_2 + 0x1a),iVar1,
|
|
*(undefined4 *)(*(int *)(*(int *)(param_2 + 0x26) + 4) + iVar4),
|
|
*(int *)(iVar1 + 0x1d) - *(int *)(*(int *)(param_2 + 0x1e) + 0xea),
|
|
*(int *)(iVar1 + 0x21) - *(int *)(*(int *)(param_2 + 0x1e) + 0xee));
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_010173c8(undefined4 param_1,int param_2)
|
|
|
|
{
|
|
*(undefined4 *)(param_2 + 0x42) = 0x4e6e6b28;
|
|
*(undefined4 *)(param_2 + 0x3e) = 0;
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
undefined4 __thiscall FUN_010173e7(void *this,int param_1,float *param_2)
|
|
|
|
{
|
|
float fVar1;
|
|
int iVar2;
|
|
|
|
fVar1 = *(float *)((int)this + 0x62);
|
|
iVar2 = rand();
|
|
*param_2 = fVar1 - ((0.50000000 - (float)iVar2 * 0.00003052) + *(float *)(param_1 + 0x36)) *
|
|
*(float *)(param_1 + 0x42) * *(float *)((int)this + 0x6e);
|
|
param_2[1] = *(float *)((int)this + 0x66) -
|
|
*(float *)(param_1 + 0x3a) * *(float *)(param_1 + 0x42) *
|
|
*(float *)((int)this + 0x6e);
|
|
return 1;
|
|
}
|
|
|
|
|
|
|
|
void * __thiscall FUN_01017441(void *this,byte param_1)
|
|
|
|
{
|
|
FUN_0100b9b3((int)this);
|
|
if ((param_1 & 1) != 0) {
|
|
operator_delete(this);
|
|
}
|
|
return this;
|
|
}
|
|
|
|
|
|
|
|
void FUN_01017467(undefined4 param_1,undefined **param_2)
|
|
|
|
{
|
|
*(undefined4 *)((int)param_2 + 0x5a) = 0;
|
|
(**(code **)*param_2)(0x3f5,0);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_0101748b(undefined4 param_1,int param_2)
|
|
|
|
{
|
|
code **ppcVar1;
|
|
int iVar2;
|
|
LPSTR pCVar3;
|
|
int iVar4;
|
|
undefined4 local_10;
|
|
|
|
iVar2 = param_2;
|
|
*(undefined4 *)(param_2 + 0x5e) = 0;
|
|
FUN_0101479b();
|
|
param_2 = *(int *)(*(int *)(param_2 + 0xfe) + 4);
|
|
if (-1 < param_2 + -1) {
|
|
iVar4 = (param_2 + -1) * 4 + 8;
|
|
do {
|
|
(**(code **)**(code ***)(iVar4 + *(int *)(iVar2 + 0xfe)))(0x3fe,0);
|
|
iVar4 = iVar4 + -4;
|
|
param_2 = param_2 + -1;
|
|
} while (param_2 != 0);
|
|
}
|
|
ppcVar1 = *(code ***)(iVar2 + 0xe6);
|
|
if (ppcVar1 != (code **)0x0) {
|
|
(**(code **)*ppcVar1)(0x3fe,0);
|
|
}
|
|
FUN_01011ec9(0x43,DAT_01025654);
|
|
local_10 = 0xbf800000;
|
|
pCVar3 = FUN_01003752(0x18);
|
|
FUN_010144b7(pCVar3,local_10);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
int __thiscall FUN_01017526(void *this,int param_1)
|
|
|
|
{
|
|
int *piVar1;
|
|
int iVar2;
|
|
|
|
if (*(int *)((int)this + 0x13e) != 0) {
|
|
piVar1 = (int *)((int)this + 0x13a);
|
|
*piVar1 = *piVar1 + param_1;
|
|
if (5000000 < *piVar1) {
|
|
*piVar1 = 5000000;
|
|
}
|
|
}
|
|
if (*(int *)((int)this + 0x136) != 0) {
|
|
piVar1 = (int *)((int)this + 0x132);
|
|
*piVar1 = *piVar1 + param_1;
|
|
if (5000000 < *piVar1) {
|
|
*piVar1 = 5000000;
|
|
}
|
|
}
|
|
iVar2 = *(int *)(&DAT_01024758 + *(int *)((int)this + 0x126) * 4) * param_1 +
|
|
*(int *)((int)this + 0x12a);
|
|
piVar1 = (int *)((int)this + 0x52);
|
|
*piVar1 = *piVar1 + iVar2;
|
|
if (1000000000 < *piVar1) {
|
|
*(int *)((int)this + 0x56) = *(int *)((int)this + 0x56) + 1;
|
|
*piVar1 = *piVar1 + -1000000000;
|
|
}
|
|
FUN_01013c89(*(undefined4 **)((int)this + 0x32),*piVar1);
|
|
return iVar2;
|
|
}
|
|
|
|
|
|
|
|
void __thiscall FUN_010175aa(void *this,int param_1)
|
|
|
|
{
|
|
*(int *)((int)this + 0x146) = param_1;
|
|
if (param_1 < 1) {
|
|
FUN_01013caa(*(int *)((int)this + 0x36),1);
|
|
}
|
|
else {
|
|
FUN_01013c89(*(undefined4 **)((int)this + 0x36),(*(int *)((int)this + 0x14a) - param_1) + 1);
|
|
FUN_01013d2d(*(int **)((int)this + 0x36));
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_010175ef(undefined4 param_1,int param_2)
|
|
|
|
{
|
|
*(undefined4 *)(param_2 + 0x162) = 0;
|
|
*(undefined4 *)(param_2 + 0x166) = 0;
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
int __thiscall FUN_01017648(void *this,LPCSTR param_1)
|
|
|
|
{
|
|
int iVar1;
|
|
int iVar2;
|
|
LPCSTR lpString1;
|
|
int iVar3;
|
|
int iVar4;
|
|
int local_8;
|
|
|
|
local_8 = 0;
|
|
iVar1 = *(int *)(*(int *)((int)this + 0xfe) + 4);
|
|
if (0 < iVar1) {
|
|
iVar4 = 8;
|
|
do {
|
|
iVar2 = *(int *)(iVar4 + *(int *)((int)this + 0xfe));
|
|
lpString1 = *(LPCSTR *)(iVar2 + 10);
|
|
if ((lpString1 != (LPCSTR)0x0) && (iVar3 = lstrcmpA(lpString1,param_1), iVar3 == 0)) {
|
|
return iVar2;
|
|
}
|
|
local_8 = local_8 + 1;
|
|
iVar4 = iVar4 + 4;
|
|
} while (local_8 < iVar1);
|
|
}
|
|
MessageBoxA((HWND)0x0,"Table cant find:",param_1,0x2000);
|
|
return 0;
|
|
}
|
|
|
|
|
|
|
|
void __thiscall FUN_010176be(void *this,int param_1)
|
|
|
|
{
|
|
int iVar1;
|
|
int *piVar2;
|
|
int iVar3;
|
|
char local_d0 [200];
|
|
undefined4 local_8;
|
|
|
|
local_8 = DAT_01024778;
|
|
iVar1 = *(int *)(*(int *)((int)this + 0xfe) + 4);
|
|
iVar3 = 0;
|
|
if (0 < iVar1) {
|
|
piVar2 = (int *)(*(int *)((int)this + 0xfe) + 8);
|
|
do {
|
|
if (param_1 == *(int *)(*piVar2 + 0x16)) goto LAB_01017725;
|
|
iVar3 = iVar3 + 1;
|
|
piVar2 = piVar2 + 1;
|
|
} while (iVar3 < iVar1);
|
|
}
|
|
_itoa(param_1,local_d0,10);
|
|
MessageBoxA((HWND)0x0,"Table cant find (lh):",local_d0,0x2000);
|
|
LAB_01017725:
|
|
FUN_0101cd9e();
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_01017738(undefined4 param_1,int param_2)
|
|
|
|
{
|
|
int iVar1;
|
|
undefined4 *puVar2;
|
|
undefined local_10 [12];
|
|
|
|
*(undefined4 *)(param_2 + 0x62) = 0;
|
|
if (*(int *)(param_2 + 0x172) != 0) {
|
|
iVar1 = *(int *)(*(int *)(param_2 + 0x106) + 4);
|
|
puVar2 = (undefined4 *)(*(int *)(param_2 + 0x106) + 8);
|
|
if (0 < iVar1) {
|
|
do {
|
|
(**(code **)(**(int **)(param_2 + 0xe2) + 0x14))(*puVar2,local_10,local_10,0,0);
|
|
puVar2 = puVar2 + 1;
|
|
iVar1 = iVar1 + -1;
|
|
} while (iVar1 != 0);
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void __thiscall FUN_01017791(void *this,undefined4 param_1)
|
|
|
|
{
|
|
LPSTR pCVar1;
|
|
int iVar2;
|
|
undefined4 local_18;
|
|
int local_8;
|
|
|
|
if ((*(int *)((int)this + 0x172) == 0) && (*(int *)((int)this + 0x4e) == 0)) {
|
|
FUN_01014143(DAT_01025650);
|
|
FUN_01014143(DAT_01025654);
|
|
local_18 = 0xbf800000;
|
|
pCVar1 = FUN_01003752(0x23);
|
|
FUN_010144b7(pCVar1,local_18);
|
|
FUN_01009895(*(int *)((int)this + 0x4a));
|
|
iVar2 = FUN_010074b7(0x41f00000,(int)this,(int)FUN_01017738);
|
|
*(int *)((int)this + 0x62) = iVar2;
|
|
local_8 = *(int *)(*(int *)((int)this + 0xfe) + 4);
|
|
(***(code ***)this)(0x3f3,0xbf800000);
|
|
if (0 < local_8) {
|
|
iVar2 = 8;
|
|
do {
|
|
(**(code **)**(code ***)(iVar2 + *(int *)((int)this + 0xfe)))(0x3f3,param_1);
|
|
iVar2 = iVar2 + 4;
|
|
local_8 = local_8 + -1;
|
|
} while (local_8 != 0);
|
|
}
|
|
(**(code **)**(code ***)((int)this + 0x10a))(8,0);
|
|
*(undefined4 *)((int)this + 0x172) = 1;
|
|
FUN_0100c0be(0x3f3);
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
float10 FUN_01017883(int param_1,undefined4 *param_2,float *param_3,float param_4,float param_5,
|
|
float param_6,float param_7)
|
|
|
|
{
|
|
float *pfVar1;
|
|
float fVar2;
|
|
float fVar3;
|
|
float fVar4;
|
|
float fVar5;
|
|
float10 fVar6;
|
|
|
|
*(undefined4 *)(param_1 + 0x2a) = *param_2;
|
|
*(undefined4 *)(param_1 + 0x2e) = param_2[1];
|
|
fVar2 = *param_3;
|
|
fVar3 = param_3[1];
|
|
pfVar1 = (float *)(param_1 + 0x36);
|
|
param_2 = (undefined4 *)-(fVar2 * *pfVar1 + fVar3 * *(float *)(param_1 + 0x3a));
|
|
if ((ushort)((ushort)((float)param_2 < 0.00000000) << 8 |
|
|
(ushort)((float)param_2 == 0.00000000) << 0xe) == 0) {
|
|
*pfVar1 = ((float)param_2 * fVar2 + *pfVar1) * param_5 + (float)param_2 * fVar2 * param_4;
|
|
*(float *)(param_1 + 0x3a) =
|
|
(fVar3 * (float)param_2 + *(float *)(param_1 + 0x3a)) * param_5 +
|
|
fVar3 * (float)param_2 * param_4;
|
|
FUN_01008ae9(pfVar1);
|
|
}
|
|
else {
|
|
param_2 = (undefined4 *)-(float)param_2;
|
|
}
|
|
fVar4 = (float)param_2 * *(float *)(param_1 + 0x42);
|
|
fVar5 = *(float *)(param_1 + 0x42) - (1.00000000 - param_4) * fVar4;
|
|
*(float *)(param_1 + 0x42) = fVar5;
|
|
if (param_6 <= fVar4) {
|
|
*pfVar1 = fVar2 * param_7 + fVar5 * *pfVar1;
|
|
*(float *)(param_1 + 0x3a) = fVar3 * param_7 + fVar5 * *(float *)(param_1 + 0x3a);
|
|
fVar6 = (float10)FUN_01008ae9(pfVar1);
|
|
*(float *)(param_1 + 0x42) = (float)fVar6;
|
|
}
|
|
return (float10)fVar4;
|
|
}
|
|
|
|
|
|
|
|
void FUN_0101798c(undefined4 param_1,undefined **param_2)
|
|
|
|
{
|
|
*(undefined4 *)((int)param_2 + 0x2a) = 0;
|
|
FUN_01011ec9(0x3c,param_2);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
int * FUN_010179a9(float *param_1,int param_2,undefined4 param_3,undefined4 param_4,float param_5,
|
|
undefined4 param_6)
|
|
|
|
{
|
|
float fVar1;
|
|
void *this;
|
|
int *this_00;
|
|
float *pfVar2;
|
|
bool in_PF;
|
|
float local_70 [2];
|
|
float local_68;
|
|
float local_60;
|
|
float local_58;
|
|
float local_54;
|
|
undefined4 local_50;
|
|
float local_4c;
|
|
float local_48;
|
|
undefined4 local_44;
|
|
float local_40;
|
|
float local_3c;
|
|
float local_34;
|
|
float local_30;
|
|
float local_28;
|
|
float local_24;
|
|
float local_1c;
|
|
float local_18;
|
|
float *local_10;
|
|
int local_c;
|
|
int *local_8;
|
|
|
|
pfVar2 = param_1;
|
|
floor((double)*param_1);
|
|
local_c = _ftol();
|
|
local_10 = param_1 + 1;
|
|
if (local_c == 0) {
|
|
local_1c = *local_10;
|
|
local_18 = param_1[2];
|
|
this = operator_new(0x25);
|
|
if (this == (void *)0x0) {
|
|
this_00 = (int *)0x0;
|
|
}
|
|
else {
|
|
this_00 = FUN_01015898(this,param_2,param_3,param_4,&local_1c,param_5 + param_1[3]);
|
|
}
|
|
local_8 = this_00;
|
|
if (this_00 == (int *)0x0) goto LAB_01017a97;
|
|
*(undefined4 *)((int)this_00 + 0xd) = param_6;
|
|
local_8 = this_00;
|
|
}
|
|
else {
|
|
if (local_c != 1) {
|
|
local_40 = param_1[local_c * 2 + -1];
|
|
param_1 = (float *)0x0;
|
|
local_44 = 0;
|
|
local_50 = 0;
|
|
local_3c = pfVar2[local_c * 2];
|
|
pfVar2 = local_10;
|
|
if (local_c < 1) {
|
|
return local_8;
|
|
}
|
|
do {
|
|
if ((int)param_1 < local_c + -1) {
|
|
fVar1 = pfVar2[2];
|
|
local_60 = pfVar2[3];
|
|
}
|
|
else {
|
|
fVar1 = *local_10;
|
|
local_60 = local_10[1];
|
|
}
|
|
local_1c = *pfVar2;
|
|
local_18 = pfVar2[1];
|
|
if (in_PF) {
|
|
local_58 = local_1c - local_40;
|
|
local_54 = local_18 - local_3c;
|
|
local_4c = fVar1 - local_1c;
|
|
local_48 = local_60 - local_18;
|
|
FUN_01008db8(&local_58,&local_4c,local_70);
|
|
if ((((ushort)((ushort)(local_68 < 0.00000000) << 8 |
|
|
(ushort)(local_68 == 0.00000000) << 0xe) == 0) &&
|
|
((ushort)((ushort)(param_5 < 0.00000000) << 8 | (ushort)(param_5 == 0.00000000) << 0xe
|
|
) == 0)) || ((!in_PF && (!in_PF)))) {
|
|
this = operator_new(0x25);
|
|
if (this == (void *)0x0) {
|
|
this_00 = (int *)0x0;
|
|
}
|
|
else {
|
|
this_00 = FUN_01015898(this,param_2,param_3,param_4,&local_1c,param_5 * 1.00099993);
|
|
}
|
|
if (this_00 != (int *)0x0) {
|
|
*(undefined4 *)((int)this_00 + 0xd) = param_6;
|
|
(**(code **)(*this_00 + 8))();
|
|
FUN_0100acf3((void *)(param_2 + 0x2a),(int)this_00);
|
|
}
|
|
}
|
|
}
|
|
local_34 = *pfVar2;
|
|
local_30 = pfVar2[1];
|
|
local_28 = pfVar2[2];
|
|
local_24 = pfVar2[3];
|
|
this = operator_new(0x55);
|
|
if (this == (void *)0x0) {
|
|
this_00 = (int *)0x0;
|
|
}
|
|
else {
|
|
this_00 = FUN_0101c77e(this,param_2,param_3,param_4,&local_34,&local_28);
|
|
}
|
|
local_8 = this_00;
|
|
if (this_00 != (int *)0x0) {
|
|
*(undefined4 *)((int)this_00 + 0xd) = param_6;
|
|
local_8 = this_00;
|
|
FUN_0101c813(this_00,param_5);
|
|
(**(code **)(*this_00 + 8))();
|
|
FUN_0100acf3((void *)(param_2 + 0x2a),(int)this_00);
|
|
}
|
|
param_1 = (float *)((int)param_1 + 1);
|
|
local_40 = local_1c;
|
|
local_3c = local_18;
|
|
pfVar2 = pfVar2 + 2;
|
|
} while ((int)param_1 < local_c);
|
|
return local_8;
|
|
}
|
|
local_34 = *local_10;
|
|
local_30 = param_1[2];
|
|
local_28 = param_1[3];
|
|
local_24 = param_1[4];
|
|
this = operator_new(0x55);
|
|
if (this == (void *)0x0) {
|
|
this_00 = (int *)0x0;
|
|
}
|
|
else {
|
|
this_00 = FUN_0101c77e(this,param_2,param_3,param_4,&local_34,&local_28);
|
|
}
|
|
if (this_00 == (int *)0x0) {
|
|
return (int *)0;
|
|
}
|
|
*(undefined4 *)((int)this_00 + 0xd) = param_6;
|
|
local_8 = this_00;
|
|
FUN_0101c813(this_00,param_5);
|
|
}
|
|
(**(code **)(*this_00 + 8))();
|
|
LAB_01017a97:
|
|
FUN_0100acf3((void *)(param_2 + 0x2a),(int)this_00);
|
|
return local_8;
|
|
}
|
|
|
|
|
|
|
|
undefined4 * __thiscall FUN_01017c6d(void *this,int param_1,int param_2,int param_3)
|
|
|
|
{
|
|
int iVar1;
|
|
int iVar2;
|
|
int iVar3;
|
|
undefined4 uVar4;
|
|
int iVar5;
|
|
void *this_00;
|
|
int *piVar6;
|
|
int iVar7;
|
|
undefined local_70 [64];
|
|
int local_30;
|
|
int local_2c;
|
|
int local_28;
|
|
int local_24;
|
|
undefined4 local_20;
|
|
undefined4 local_1c;
|
|
int local_18;
|
|
int local_14;
|
|
undefined4 local_10;
|
|
undefined4 local_c;
|
|
int local_8;
|
|
|
|
iVar3 = param_1;
|
|
*(undefined4 *)this = 0x10024a8;
|
|
*(undefined4 *)((int)this + 6) = 0;
|
|
*(undefined *)((int)this + 4) = 0;
|
|
*(undefined *)((int)this + 5) = 0;
|
|
*(int *)((int)this + 0x1e) = param_1;
|
|
*(undefined4 *)((int)this + 0x1a) = 0;
|
|
if (param_1 != 0) {
|
|
FUN_0100acf3((void *)(param_1 + 0xfa),(int)this);
|
|
}
|
|
if (-1 < param_2) {
|
|
uVar4 = FUN_0100975d(param_2);
|
|
*(undefined4 *)((int)this + 10) = uVar4;
|
|
}
|
|
if ((param_3 != 0) && (-1 < param_2)) {
|
|
iVar5 = FUN_01009207(param_2);
|
|
param_1 = 0;
|
|
if (0 < iVar5) {
|
|
do {
|
|
FUN_0100950a(param_2,param_1,local_70);
|
|
if (local_30 != 0) {
|
|
if (*(int *)((int)this + 0x22) == 0) {
|
|
this_00 = operator_new(8);
|
|
if (this_00 == (void *)0x0) {
|
|
this_00 = (void *)0x0;
|
|
}
|
|
else {
|
|
this_00 = FUN_010158f0(this_00,iVar5,4);
|
|
}
|
|
*(void **)((int)this + 0x22) = this_00;
|
|
}
|
|
if (*(void **)((int)this + 0x22) != (void *)0x0) {
|
|
FUN_0100acf3(*(void **)((int)this + 0x22),local_30);
|
|
}
|
|
}
|
|
if (local_2c != 0) {
|
|
if (*(int *)((int)this + 0x26) == 0) {
|
|
this_00 = operator_new(8);
|
|
if (this_00 == (void *)0x0) {
|
|
this_00 = (void *)0x0;
|
|
}
|
|
else {
|
|
this_00 = FUN_010158f0(this_00,iVar5,4);
|
|
}
|
|
*(void **)((int)this + 0x26) = this_00;
|
|
}
|
|
if (*(void **)((int)this + 0x26) != (void *)0x0) {
|
|
FUN_0100acf3(*(void **)((int)this + 0x26),local_2c);
|
|
}
|
|
}
|
|
param_1 = param_1 + 1;
|
|
} while (param_1 < iVar5);
|
|
}
|
|
if (*(int *)((int)this + 0x26) != 0) {
|
|
local_8 = *(int *)(*(int *)(*(int *)((int)this + 0x26) + 4) + 8);
|
|
}
|
|
iVar1 = *(int *)((int)this + 0x22);
|
|
if (iVar1 != 0) {
|
|
iVar2 = *(int *)(*(int *)(iVar1 + 4) + 8);
|
|
local_18 = *(int *)(iVar2 + 0x1d) - *(int *)(iVar3 + 0xea);
|
|
local_14 = *(int *)(iVar2 + 0x21) - *(int *)(iVar3 + 0xee);
|
|
iVar7 = 1;
|
|
local_10 = *(undefined4 *)(iVar2 + 0xc);
|
|
local_c = *(undefined4 *)(iVar2 + 0x10);
|
|
if (1 < *(int *)(*(int *)(iVar1 + 4) + 4)) {
|
|
param_1 = 0xc;
|
|
do {
|
|
iVar1 = *(int *)(param_1 + *(int *)(*(int *)((int)this + 0x22) + 4));
|
|
local_28 = *(int *)(iVar1 + 0x1d) - *(int *)(iVar3 + 0xea);
|
|
local_24 = *(int *)(iVar1 + 0x21) - *(int *)(iVar3 + 0xee);
|
|
local_20 = *(undefined4 *)(iVar1 + 0xc);
|
|
local_1c = *(undefined4 *)(iVar1 + 0x10);
|
|
FUN_010040c2(&local_18,&local_28,&local_18);
|
|
param_1 = param_1 + 4;
|
|
iVar7 = iVar7 + 1;
|
|
} while (iVar7 < *(int *)(*(int *)(*(int *)((int)this + 0x22) + 4) + 4));
|
|
}
|
|
iVar1 = *(int *)(*(int *)(*(int *)((int)this + 0x22) + 4) + 8);
|
|
piVar6 = FUN_0101385c((uint)(0 < iVar5),iVar1,local_8,
|
|
*(int *)(iVar1 + 0x1d) - *(int *)(iVar3 + 0xea),
|
|
*(int *)(iVar1 + 0x21) - *(int *)(iVar3 + 0xee),&local_18);
|
|
*(int **)((int)this + 0x1a) = piVar6;
|
|
}
|
|
}
|
|
*(int *)((int)this + 0x16) = param_2;
|
|
return (undefined4 *)this;
|
|
}
|
|
|
|
|
|
|
|
void * __thiscall FUN_01017e5c(void *this,byte param_1)
|
|
|
|
{
|
|
FUN_01013c6f(*(int *)((int)this + 4));
|
|
if ((param_1 & 1) != 0) {
|
|
operator_delete(this);
|
|
}
|
|
return this;
|
|
}
|
|
|
|
|
|
|
|
void __thiscall FUN_01017e85(void *this,int param_1,undefined4 *param_2,float *param_3)
|
|
|
|
{
|
|
int iVar1;
|
|
float10 fVar2;
|
|
|
|
if (*(int *)(*(int *)((int)this + 0x1e) + 0x172) == 0) {
|
|
fVar2 = FUN_01017883(param_1,param_2,param_3,*(float *)((int)this + 0x36),
|
|
*(float *)((int)this + 0x3a),*(float *)((int)this + 0x42),
|
|
*(float *)((int)this + 0x3e));
|
|
if ((ushort)((ushort)(fVar2 < (float10)*(float *)((int)this + 0x42)) << 8 |
|
|
(ushort)(fVar2 == (float10)*(float *)((int)this + 0x42)) << 0xe) == 0) {
|
|
iVar1 = *(int *)((int)this + 0x4a);
|
|
}
|
|
else {
|
|
if ((ushort)((ushort)(fVar2 < (float10)0.20000000) << 8 |
|
|
(ushort)(fVar2 == (float10)0.20000000) << 0xe) != 0) {
|
|
return;
|
|
}
|
|
iVar1 = *(int *)((int)this + 0x46);
|
|
}
|
|
if (iVar1 != 0) {
|
|
FUN_01009895(iVar1);
|
|
}
|
|
}
|
|
else {
|
|
FUN_01017883(param_1,param_2,param_3,*(float *)((int)this + 0x36),*(float *)((int)this + 0x3a),
|
|
1000000000.00000000,0.00000000);
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
undefined4 __thiscall FUN_01017f29(void *this,int param_1,undefined4 *param_2,float *param_3)
|
|
|
|
{
|
|
float10 fVar1;
|
|
|
|
if (*(int *)(*(int *)((int)this + 0x1e) + 0x172) == 0) {
|
|
fVar1 = FUN_01017883(param_1,param_2,param_3,*(float *)((int)this + 0x36),
|
|
*(float *)((int)this + 0x3a),*(float *)((int)this + 0x42),
|
|
*(float *)((int)this + 0x3e));
|
|
if ((ushort)((ushort)(fVar1 < (float10)*(float *)((int)this + 0x42)) << 8 |
|
|
(ushort)(fVar1 == (float10)*(float *)((int)this + 0x42)) << 0xe) == 0) {
|
|
if (*(int *)((int)this + 0x4a) != 0) {
|
|
FUN_01009895(*(int *)((int)this + 0x4a));
|
|
}
|
|
return 1;
|
|
}
|
|
if (((ushort)((ushort)(fVar1 < (float10)0.20000000) << 8 |
|
|
(ushort)(fVar1 == (float10)0.20000000) << 0xe) == 0) &&
|
|
(*(int *)((int)this + 0x46) != 0)) {
|
|
FUN_01009895(*(int *)((int)this + 0x46));
|
|
}
|
|
}
|
|
else {
|
|
FUN_01017883(param_1,param_2,param_3,*(float *)((int)this + 0x36),*(float *)((int)this + 0x3a),
|
|
1000000000.00000000,0.00000000);
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
|
|
|
|
void __thiscall FUN_01017fde(void *this,int param_1,undefined4 *param_2,float *param_3)
|
|
|
|
{
|
|
int iVar1;
|
|
|
|
iVar1 = FUN_01017f29(this,param_1,param_2,param_3);
|
|
if (iVar1 != 0) {
|
|
if (*(int *)((int)this + 0x52) != 0) {
|
|
FUN_010139b6(*(int *)((int)this + 0x1a),*(int *)((int)this + 0x52));
|
|
iVar1 = FUN_010074b7(0x3dcccccd,(int)this,(int)FUN_01015ace);
|
|
*(int *)((int)this + 0x4e) = iVar1;
|
|
}
|
|
FUN_01011ec9(0x3f,(undefined **)this);
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void __thiscall
|
|
FUN_01018032(void *this,void *param_1,undefined4 *param_2,float *param_3,float param_4,int param_5)
|
|
|
|
{
|
|
undefined4 uVar1;
|
|
float10 fVar2;
|
|
|
|
if (param_5 == *(int *)((int)this + 0x52)) {
|
|
FUN_0101590f(param_1,param_5);
|
|
*(undefined4 *)((int)param_1 + 0x2a) = *param_2;
|
|
uVar1 = param_2[1];
|
|
*(float *)((int)param_1 + 0x46) = *(float *)((int)param_1 + 0x46) - param_4;
|
|
*(undefined4 *)((int)param_1 + 0x2e) = uVar1;
|
|
if (*(int *)(*(int *)((int)this + 0x1e) + 0x172) == 0) {
|
|
if (*(int *)((int)this + 0x4a) != 0) {
|
|
FUN_01009895(*(int *)((int)this + 0x4a));
|
|
}
|
|
FUN_01011ec9(0x3f,(undefined **)this);
|
|
}
|
|
}
|
|
else {
|
|
if (*(int *)(*(int *)((int)this + 0x1e) + 0x172) == 0) {
|
|
fVar2 = FUN_01017883((int)param_1,param_2,param_3,*(float *)((int)this + 0x36),
|
|
*(float *)((int)this + 0x3a),*(float *)((int)this + 0x42),
|
|
*(float *)((int)this + 0x3e));
|
|
if (((ushort)((ushort)(fVar2 < (float10)0.20000000) << 8 |
|
|
(ushort)(fVar2 == (float10)0.20000000) << 0xe) == 0) &&
|
|
(*(int *)((int)this + 0x46) != 0)) {
|
|
FUN_01009895(*(int *)((int)this + 0x46));
|
|
}
|
|
}
|
|
else {
|
|
FUN_01017883((int)param_1,param_2,param_3,*(float *)((int)this + 0x36),
|
|
*(float *)((int)this + 0x3a),1000000000.00000000,0.00000000);
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void __thiscall FUN_0101811d(void *this,int param_1,undefined4 *param_2,float *param_3)
|
|
|
|
{
|
|
int iVar1;
|
|
|
|
iVar1 = FUN_01017f29(this,param_1,param_2,param_3);
|
|
if (iVar1 != 0) {
|
|
FUN_01015d0f((int)this);
|
|
FUN_01011ec9(0x3f,(undefined **)this);
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void __thiscall
|
|
FUN_01018150(undefined1 (*pauParm1) [10],void *param_1,undefined4 *param_2,undefined4 param_3,
|
|
float param_4,int param_5)
|
|
|
|
{
|
|
undefined4 uVar1;
|
|
undefined **extraout_EDX;
|
|
bool in_PF;
|
|
|
|
*(undefined4 *)((int)param_1 + 0x2a) = *param_2;
|
|
uVar1 = param_2[1];
|
|
*(float *)((int)param_1 + 0x46) = *(float *)((int)param_1 + 0x46) - param_4;
|
|
*(undefined4 *)((int)param_1 + 0x2e) = uVar1;
|
|
FUN_0101590f(param_1,param_5);
|
|
*(uint *)(pauParm1 + 9 + 4) = (uint)(*(int *)(pauParm1 + 10 + 6) != param_5) * 2 + -1;
|
|
if (in_PF) {
|
|
*(float *)(pauParm1 + 7 + 8) = *(float *)((int)param_1 + 0x42) * 20.00000000;
|
|
}
|
|
else {
|
|
*(undefined4 *)(pauParm1 + 7 + 8) = *(undefined4 *)(pauParm1 + 8 + 6);
|
|
*(undefined4 *)(pauParm1 + 7 + 8) = *(undefined4 *)(pauParm1 + 8 + 6);
|
|
}
|
|
if ((ushort)((ushort)(*(float *)(pauParm1 + 7 + 8) < *(float *)(pauParm1 + 8 + 2)) << 8 |
|
|
(ushort)(*(float *)(pauParm1 + 7 + 8) == *(float *)(pauParm1 + 8 + 2)) << 0xe) == 0) {
|
|
*(undefined4 *)(pauParm1 + 7 + 8) = *(undefined4 *)(pauParm1 + 8 + 2);
|
|
}
|
|
FUN_01015f4e(pauParm1,extraout_EDX);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void __thiscall FUN_010181ed(void *this,int param_1,undefined4 *param_2,float *param_3)
|
|
|
|
{
|
|
float10 fVar1;
|
|
|
|
if (*(int *)(*(int *)((int)this + 0x1e) + 0x172) == 0) {
|
|
fVar1 = FUN_01017883(param_1,param_2,param_3,*(float *)((int)this + 0x36),
|
|
*(float *)((int)this + 0x3a),*(float *)((int)this + 0x42),
|
|
*(float *)((int)this + 0x3e));
|
|
if ((ushort)((ushort)(fVar1 < (float10)*(float *)((int)this + 0x42)) << 8 |
|
|
(ushort)(fVar1 == (float10)*(float *)((int)this + 0x42)) << 0xe) == 0) {
|
|
if (*(int *)((int)this + 0x4a) != 0) {
|
|
FUN_01009895(*(int *)((int)this + 0x4a));
|
|
}
|
|
(***(code ***)this)(0x31,0);
|
|
FUN_01011ec9(0x3f,(undefined **)this);
|
|
}
|
|
}
|
|
else {
|
|
FUN_01017883(param_1,param_2,param_3,*(float *)((int)this + 0x36),*(float *)((int)this + 0x3a),
|
|
1000000000.00000000,0.00000000);
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void __thiscall FUN_01018295(void *this,int param_1,undefined4 *param_2,float *param_3)
|
|
|
|
{
|
|
int iVar1;
|
|
|
|
iVar1 = FUN_01017f29(this,param_1,param_2,param_3);
|
|
if (iVar1 != 0) {
|
|
(***(code ***)this)(0x31,0);
|
|
iVar1 = FUN_010074b7(*(undefined4 *)((int)this + 0x56),(int)this,(int)FUN_0101620b);
|
|
*(int *)((int)this + 0x52) = iVar1;
|
|
FUN_01011ec9(0x3f,(undefined **)this);
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void __thiscall FUN_010182e4(void *this,int param_1)
|
|
|
|
{
|
|
float *pfVar1;
|
|
void *pvVar2;
|
|
int iVar3;
|
|
undefined4 local_58;
|
|
undefined4 uVar4;
|
|
undefined4 uVar5;
|
|
undefined local_4c [52];
|
|
undefined4 local_18;
|
|
|
|
FUN_0100950a(param_1,0,local_4c);
|
|
uVar5 = 600;
|
|
local_58 = 0;
|
|
iVar3 = (int)this + 5;
|
|
pvVar2 = this;
|
|
uVar4 = local_18;
|
|
pfVar1 = FUN_0100978e(param_1,0,600);
|
|
FUN_010179a9(pfVar1,pvVar2,iVar3,uVar4,local_58,uVar5);
|
|
local_58 = 0x25b;
|
|
uVar4 = 0;
|
|
iVar3 = (int)this + 0x4e;
|
|
pfVar1 = FUN_0100978e(param_1,0,0x25b);
|
|
FUN_010179a9(pfVar1,this,iVar3,local_18,uVar4,local_58);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void __thiscall
|
|
FUN_01018351(void *this,void *param_1,undefined4 *param_2,undefined4 param_3,float param_4,
|
|
undefined4 param_5)
|
|
|
|
{
|
|
int iVar1;
|
|
bool bVar2;
|
|
|
|
*(undefined4 *)((int)param_1 + 0x2a) = *param_2;
|
|
*(undefined4 *)((int)param_1 + 0x2e) = param_2[1];
|
|
*(float *)((int)param_1 + 0x46) = *(float *)((int)param_1 + 0x46) - param_4;
|
|
FUN_0101590f(param_1,param_5);
|
|
iVar1 = 0;
|
|
if (*(int *)(*(int *)((int)this + 0x1e) + 0x172) == 0) {
|
|
if (*(char *)((int)this + 0x4e) == '\0') {
|
|
FUN_01009895(*(int *)((int)this + 0x46));
|
|
FUN_01011ec9(0x3f,(undefined **)this);
|
|
}
|
|
else {
|
|
FUN_010074b7(0x3dcccccd,(int)this,(int)FUN_0101644b);
|
|
*(undefined *)((int)this + 5) = 0;
|
|
}
|
|
bVar2 = *(char *)((int)this + 0x4e) == '\0';
|
|
*(bool *)((int)this + 0x4e) = bVar2;
|
|
if (*(int *)((int)this + 0x22) != 0) {
|
|
if (!bVar2) {
|
|
iVar1 = *(int *)(*(int *)(*(int *)((int)this + 0x22) + 4) + 8);
|
|
}
|
|
FUN_010139b6(*(int *)((int)this + 0x1a),iVar1);
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void __thiscall FUN_010183e8(void *this,int param_1,undefined4 *param_2,float *param_3)
|
|
|
|
{
|
|
int iVar1;
|
|
|
|
if (*(int *)(*(int *)((int)this + 0x1e) + 0x172) == 0) {
|
|
if (*(int *)((int)this + 0x5a) == 0) {
|
|
*(undefined4 *)((int)this + 0x42) = 0x4e6e6b28;
|
|
*(undefined4 *)((int)this + 0x5a) = 1;
|
|
iVar1 = FUN_010074b7(*(undefined4 *)((int)this + 0x4e),(int)this,(int)FUN_0101663f);
|
|
*(int *)((int)this + 0x56) = iVar1;
|
|
}
|
|
iVar1 = FUN_01017f29(this,param_1,param_2,param_3);
|
|
if (iVar1 != 0) {
|
|
*(undefined4 *)((int)this + 0x5a) = 0;
|
|
}
|
|
}
|
|
else {
|
|
FUN_01017883(param_1,param_2,param_3,*(float *)((int)this + 0x36),*(float *)((int)this + 0x3a),
|
|
0.00000000,*(float *)((int)this + 0x3e));
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void __thiscall FUN_01018476(void *this,int param_1)
|
|
|
|
{
|
|
undefined4 uVar1;
|
|
int iVar2;
|
|
|
|
if (*(int *)((int)this + 0x4e) == 0) {
|
|
*(undefined4 *)((int)this + 0x52) = 0;
|
|
*(undefined4 *)((int)this + 0x42) = 0x4e6e6b28;
|
|
*(undefined4 *)((int)this + 0x4e) = 1;
|
|
*(void **)(param_1 + 0x6a) = this;
|
|
*(undefined4 *)(param_1 + 0x2a) = *(undefined4 *)((int)this + 0x72);
|
|
uVar1 = *(undefined4 *)((int)this + 0x76);
|
|
*(undefined4 *)(param_1 + 0x3e) = 0;
|
|
*(undefined4 *)(param_1 + 0x2e) = uVar1;
|
|
iVar2 = FUN_010074b7(0x3f000000,(int)this,(int)FUN_010169a4);
|
|
*(int *)((int)this + 0x56) = iVar2;
|
|
if (*(int *)(*(int *)((int)this + 0x1e) + 0x172) == 0) {
|
|
FUN_01009895(*(int *)((int)this + 0x4a));
|
|
FUN_01011ec9(0x39,(undefined **)this);
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void __thiscall FUN_010184ed(void *this,int param_1,undefined4 *param_2,float *param_3)
|
|
|
|
{
|
|
*(undefined4 *)((int)this + 0x4e) = 0;
|
|
if (*(int *)(*(int *)((int)this + 0x1e) + 0x172) == 0) {
|
|
*(undefined *)(param_1 + 5) = 0;
|
|
FUN_010139b6(*(int *)(param_1 + 0x1a),0);
|
|
FUN_01009895(*(int *)((int)this + 0x7a));
|
|
FUN_01011ec9(0x3f,(undefined **)this);
|
|
}
|
|
else {
|
|
FUN_01017883(param_1,param_2,param_3,*(float *)((int)this + 0x36),*(float *)((int)this + 0x3a),
|
|
1000000000.00000000,0.00000000);
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void __thiscall FUN_01018562(void *this,undefined **param_1)
|
|
|
|
{
|
|
int iVar1;
|
|
|
|
(**(code **)*param_1)(0x400,0);
|
|
*(undefined4 *)(*(int *)((int)this + 0x1e) + 0x4e) = 1;
|
|
iVar1 = FUN_010074b7(*(undefined4 *)((int)this + 0x4e),(int)this,(int)FUN_010172d8);
|
|
*(int *)((int)this + 0x56) = iVar1;
|
|
FUN_01011ec9(0x3f,(undefined **)this);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
undefined4 __thiscall FUN_010185ad(void *this,int param_1)
|
|
|
|
{
|
|
undefined4 uVar1;
|
|
code **ppcVar2;
|
|
int iVar3;
|
|
|
|
switch(param_1) {
|
|
case 0x3ec:
|
|
if (*(int *)((int)this + 0x4e) == 0) {
|
|
*(undefined4 *)((int)this + 0x3e) = 0;
|
|
*(undefined4 *)((int)this + 0x42) = 0x4e6e6b28;
|
|
FUN_01009895(*(int *)((int)this + 0x4a));
|
|
FUN_01017314(0,(int)this);
|
|
}
|
|
break;
|
|
case 0x3f7:
|
|
ppcVar2 = *(code ***)(*(int *)(*(int *)((int)this + 0x1e) + 0xfe) + 8);
|
|
(**(code **)*ppcVar2)(0x400,0);
|
|
*(undefined4 *)((int)ppcVar2 + 0x2a) = *(undefined4 *)(*(int *)((int)this + 0x1e) + 0x11e);
|
|
*(undefined4 *)((int)ppcVar2 + 0x2e) = *(undefined4 *)(*(int *)((int)this + 0x1e) + 0x122);
|
|
*(undefined *)((int)ppcVar2 + 5) = 1;
|
|
*(undefined4 *)(*(int *)((int)this + 0x1e) + 0x4e) = 0;
|
|
FUN_01014d59();
|
|
FUN_01011ec9(param_1,(undefined **)this);
|
|
break;
|
|
case 0x3f8:
|
|
if (*(int *)((int)this + 0x52) != 0) {
|
|
FUN_01007659(*(int *)((int)this + 0x52));
|
|
}
|
|
iVar3 = FUN_010074b7(0x3f75c28f,(int)this,(int)FUN_010172f0);
|
|
*(int *)((int)this + 0x52) = iVar3;
|
|
FUN_01009895(*(int *)((int)this + 0x62));
|
|
FUN_01011ec9(param_1,(undefined **)this);
|
|
break;
|
|
case 0x3f9:
|
|
*(undefined4 *)((int)this + 0x42) = 0;
|
|
*(float *)((int)this + 0x3e) = (float)*(int *)((int)this + 0x56);
|
|
uVar1 = 0x3e4ccccd;
|
|
LAB_01018712:
|
|
FUN_010074b7(uVar1,(int)this,(int)FUN_010173c8);
|
|
break;
|
|
case 0x400:
|
|
if (*(int *)((int)this + 0x52) != 0) {
|
|
FUN_01007659(*(int *)((int)this + 0x52));
|
|
}
|
|
*(undefined4 *)((int)this + 0x52) = 0;
|
|
case 0x3ed:
|
|
case 0x3f1:
|
|
case 0x3f2:
|
|
*(undefined4 *)((int)this + 0x42) = 0;
|
|
if (*(int *)((int)this + 0x4e) != 0) {
|
|
FUN_01007659(*(int *)((int)this + 0x4e));
|
|
}
|
|
*(undefined4 *)((int)this + 0x4e) = 0;
|
|
if (param_1 == 0x3ed) {
|
|
FUN_01009895(*(int *)((int)this + 0x66));
|
|
}
|
|
iVar3 = *(int *)(*(int *)(*(int *)((int)this + 0x22) + 4) + 8);
|
|
FUN_01013974(*(undefined4 **)((int)this + 0x1a),iVar3,
|
|
*(undefined4 *)(*(int *)(*(int *)((int)this + 0x26) + 4) + 8),
|
|
*(int *)(iVar3 + 0x1d) - *(int *)(*(int *)((int)this + 0x1e) + 0xea),
|
|
*(int *)(iVar3 + 0x21) - *(int *)(*(int *)((int)this + 0x1e) + 0xee));
|
|
uVar1 = *(undefined4 *)((int)this + 0x5e);
|
|
goto LAB_01018712;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
|
|
|
|
void __thiscall FUN_0101875f(void *this,int param_1,undefined4 *param_2,float *param_3)
|
|
|
|
{
|
|
int iVar1;
|
|
|
|
if (*(int *)(*(int *)((int)this + 0x1e) + 0x172) != 0) {
|
|
(***(code ***)this)(0x3f9,0);
|
|
}
|
|
iVar1 = rand();
|
|
FUN_01017883(param_1,param_2,param_3,*(float *)((int)this + 0x36),*(float *)((int)this + 0x3a),
|
|
*(float *)((int)this + 0x42),
|
|
(float)iVar1 * 0.00003052 * *(float *)((int)this + 0x3e) * 0.09999999 +
|
|
*(float *)((int)this + 0x3e));
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
undefined4 __thiscall FUN_010187d6(void *this,int param_1,undefined4 *param_2)
|
|
|
|
{
|
|
LPSTR pCVar1;
|
|
int iVar2;
|
|
code **ppcVar3;
|
|
int iVar4;
|
|
undefined4 *puVar5;
|
|
float10 fVar6;
|
|
double dVar7;
|
|
short sVar8;
|
|
void *pvVar9;
|
|
code *pcVar10;
|
|
undefined4 uVar11;
|
|
undefined8 local_20;
|
|
|
|
switch(param_1) {
|
|
case 1000:
|
|
if (*(int *)((int)this + 0x172) != 0) break;
|
|
ppcVar3 = *(code ***)((int)this + 0x2a);
|
|
goto LAB_01018e4f;
|
|
case 0x3e9:
|
|
if (*(int *)((int)this + 0x172) != 0) break;
|
|
ppcVar3 = *(code ***)((int)this + 0x2a);
|
|
goto LAB_01018e34;
|
|
case 0x3ea:
|
|
if (*(int *)((int)this + 0x172) != 0) break;
|
|
ppcVar3 = *(code ***)((int)this + 0x2e);
|
|
LAB_01018e4f:
|
|
local_20 = CONCAT44(param_2,1);
|
|
goto LAB_01018e68;
|
|
case 0x3eb:
|
|
if (*(int *)((int)this + 0x172) != 0) break;
|
|
ppcVar3 = *(code ***)((int)this + 0x2e);
|
|
LAB_01018e34:
|
|
local_20 = CONCAT44(param_2,2);
|
|
goto LAB_01018e68;
|
|
case 0x3ec:
|
|
case 0x3ed:
|
|
ppcVar3 = *(code ***)((int)this + 0xde);
|
|
local_20 = CONCAT44(param_2,param_1);
|
|
goto LAB_01018e68;
|
|
case 0x3f0:
|
|
case 0x3f1:
|
|
case 0x3f2:
|
|
iVar2 = *(int *)(*(int *)((int)this + 0xfe) + 4);
|
|
if (-1 < iVar2 + -1) {
|
|
iVar4 = (iVar2 + -1) * 4 + 8;
|
|
do {
|
|
(**(code **)**(code ***)(iVar4 + *(int *)((int)this + 0xfe)))(param_1,param_2);
|
|
iVar4 = iVar4 + -4;
|
|
iVar2 = iVar2 + -1;
|
|
} while (iVar2 != 0);
|
|
}
|
|
break;
|
|
case 0x3f4:
|
|
(**(code **)**(code ***)((int)this + 0x10a))();
|
|
if (*(int *)((int)this + 0x172) != 0) {
|
|
*(int *)((int)this + 0x172) = 0;
|
|
if (*(int *)((int)this + 0x62) != 0) {
|
|
FUN_01007659(*(int *)((int)this + 0x62));
|
|
}
|
|
*(undefined4 *)((int)this + 0x62) = 0;
|
|
}
|
|
break;
|
|
case 0x3f5:
|
|
(**(code **)**(code ***)(code **)((int)this + 0x10a))(0x22,0);
|
|
(**(code **)**(code ***)(code **)((int)this + 0x10a))();
|
|
(**(code **)**(code ***)((int)this + 0xde))(0x3f8,0);
|
|
uVar11 = 0xbf800000;
|
|
if (*(char *)(*(int *)((int)this + 0xe6) + 5) == '\0') {
|
|
sVar8 = 0x1a;
|
|
}
|
|
else {
|
|
sVar8 = 0x1e;
|
|
}
|
|
pCVar1 = FUN_01003752(sVar8);
|
|
FUN_010144b7(pCVar1,uVar11);
|
|
ppcVar3 = *(code ***)((int)this + 0xe6);
|
|
if (ppcVar3 == (code **)0x0) break;
|
|
local_20 = 0x3f6;
|
|
LAB_01018e68:
|
|
(**(code **)*ppcVar3)(local_20);
|
|
break;
|
|
case 0x3f6:
|
|
if (*(int *)((int)this + 0x5e) != 0) {
|
|
FUN_01007659(*(int *)((int)this + 0x5e));
|
|
FUN_0101748b(0,(int)this);
|
|
FUN_0101461a(1);
|
|
}
|
|
if (*(int *)((int)this + 0x5a) == 0) {
|
|
*(undefined4 *)((int)this + 0x3e) = 0;
|
|
FUN_010187d6(this,0x400,(undefined4 *)0x0);
|
|
iVar2 = *(int *)(*(int *)((int)this + 0x106) + 8);
|
|
*(undefined4 *)(iVar2 + 0x2e) = 0;
|
|
*(undefined4 *)(iVar2 + 0x2a) = 0;
|
|
*(undefined4 *)(iVar2 + 0x32) = 0xbf4ccccd;
|
|
floor((double)(float)param_2);
|
|
iVar2 = _ftol();
|
|
*(int *)((int)this + 0xd6) = iVar2;
|
|
if (iVar2 < 1) {
|
|
*(undefined4 *)((int)this + 0xd6) = 1;
|
|
}
|
|
else {
|
|
if (4 < iVar2) {
|
|
*(undefined4 *)((int)this + 0xd6) = 4;
|
|
}
|
|
}
|
|
*(undefined4 *)((int)this + 0xda) = 0;
|
|
*(undefined4 **)((int)this + 0x32) = *(undefined4 **)((int)this + 0x66);
|
|
*(undefined4 *)((int)this + 0x52) = 0;
|
|
FUN_01013c89(*(undefined4 **)((int)this + 0x66),0);
|
|
*(undefined4 *)((int)this + 0x126) = 0;
|
|
param_2 = (undefined4 *)0x1;
|
|
if (1 < *(int *)((int)this + 0xd6)) {
|
|
puVar5 = (undefined4 *)((int)this + 0x86);
|
|
do {
|
|
FUN_01013c89((undefined4 *)puVar5[-1],0);
|
|
param_2 = (undefined4 *)((int)param_2 + 1);
|
|
*puVar5 = 0;
|
|
puVar5[1] = 0;
|
|
puVar5[3] = *(undefined4 *)((int)this + 0x14a);
|
|
puVar5[4] = *(undefined4 *)((int)this + 0x14e);
|
|
puVar5[5] = *(undefined4 *)((int)this + 0x156);
|
|
puVar5[2] = *(undefined4 *)((int)this + 0x13a);
|
|
puVar5 = puVar5 + 7;
|
|
} while ((int)param_2 < *(int *)((int)this + 0xd6));
|
|
}
|
|
*(int *)((int)this + 0x146) = *(int *)((int)this + 0x14a);
|
|
FUN_01006bb8();
|
|
FUN_010175aa(this,*(int *)((int)this + 0x146));
|
|
FUN_01013c89(*(undefined4 **)((int)this + 0x3a),*(int *)((int)this + 0xda) + 1);
|
|
FUN_01013d2d(*(int **)((int)this + 0x3a));
|
|
FUN_01006bb8();
|
|
iVar2 = *(int *)((int)this + 0xd6);
|
|
if (iVar2 < 4) {
|
|
param_2 = (undefined4 *)(iVar2 * 0x1c + 0x66 + (int)this);
|
|
iVar2 = 4 - iVar2;
|
|
do {
|
|
FUN_01013c89((undefined4 *)*param_2,0xffffffff);
|
|
param_2 = param_2 + 7;
|
|
iVar2 = iVar2 + -1;
|
|
} while (iVar2 != 0);
|
|
}
|
|
FUN_01006bb8();
|
|
*(undefined4 *)((int)this + 0x13e) = 0;
|
|
*(undefined4 *)((int)this + 0x136) = 0;
|
|
*(undefined4 *)((int)this + 0x142) = 0;
|
|
FUN_01014143(DAT_01025650);
|
|
FUN_01006bb8();
|
|
FUN_01014143(DAT_01025654);
|
|
FUN_01006bb8();
|
|
(**(code **)**(code ***)((int)this + 0x10a))();
|
|
pcVar10 = FUN_01017467;
|
|
pvVar9 = this;
|
|
fVar6 = FUN_01009895(*(int *)((int)this + 0x42));
|
|
iVar2 = FUN_010074b7((float)fVar6,(int)pvVar9,(int)pcVar10);
|
|
*(int *)((int)this + 0x5a) = iVar2;
|
|
}
|
|
else {
|
|
FUN_01007659(*(int *)((int)this + 0x5a));
|
|
*(undefined4 *)((int)this + 0x5a) = 0;
|
|
FUN_010187d6(this,0x3f5,(undefined4 *)0x0);
|
|
}
|
|
break;
|
|
case 0x3fa:
|
|
if (*(int *)((int)this + 0x166) != 0) {
|
|
FUN_01007659(*(int *)((int)this + 0x166));
|
|
}
|
|
pcVar10 = FUN_010175ef;
|
|
pvVar9 = this;
|
|
dVar7 = floor((double)(float)param_2);
|
|
iVar2 = FUN_010074b7((float)dVar7,(int)pvVar9,(int)pcVar10);
|
|
*(int *)((int)this + 0x166) = iVar2;
|
|
*(undefined4 *)((int)this + 0x162) = 1;
|
|
break;
|
|
case 0x3fd:
|
|
if (*(int *)((int)this + 0xd6) < 2) {
|
|
uVar11 = 0xbf800000;
|
|
if (*(char *)(*(int *)((int)this + 0xe6) + 5) == '\0') {
|
|
sVar8 = 0x1a;
|
|
}
|
|
else {
|
|
sVar8 = 0x1e;
|
|
}
|
|
pCVar1 = FUN_01003752(sVar8);
|
|
FUN_010144b7(pCVar1,uVar11);
|
|
break;
|
|
}
|
|
iVar2 = (*(int *)((int)this + 0xda) + 1) % *(int *)((int)this + 0xd6);
|
|
pvVar9 = (void *)(iVar2 * 0x1c + (int)this);
|
|
if (*(int *)((int)pvVar9 + 0x76) < 1) break;
|
|
*(undefined4 *)(*(int *)((int)this + 0xda) * 0x1c + 0x6a + (int)this) =
|
|
*(undefined4 *)((int)this + 0x52);
|
|
*(undefined4 *)(*(int *)((int)this + 0xda) * 0x1c + 0x6e + (int)this) =
|
|
*(undefined4 *)((int)this + 0x56);
|
|
*(undefined4 *)(*(int *)((int)this + 0xda) * 0x1c + 0x76 + (int)this) =
|
|
*(undefined4 *)((int)this + 0x146);
|
|
*(undefined4 *)(*(int *)((int)this + 0xda) * 0x1c + 0x7a + (int)this) =
|
|
*(undefined4 *)((int)this + 0x14e);
|
|
*(undefined4 *)(*(int *)((int)this + 0xda) * 0x1c + 0x7e + (int)this) =
|
|
*(undefined4 *)((int)this + 0x156);
|
|
*(undefined4 *)(*(int *)((int)this + 0xda) * 0x1c + 0x72 + (int)this) =
|
|
*(undefined4 *)((int)this + 0x13a);
|
|
*(undefined4 *)((int)this + 0x52) = *(undefined4 *)((int)pvVar9 + 0x6a);
|
|
*(undefined4 *)((int)this + 0x56) = *(undefined4 *)((int)pvVar9 + 0x6e);
|
|
*(undefined4 *)((int)this + 0x146) = *(undefined4 *)((int)pvVar9 + 0x76);
|
|
*(undefined4 *)((int)this + 0x14e) = *(undefined4 *)((int)pvVar9 + 0x7a);
|
|
*(undefined4 *)((int)this + 0x156) = *(undefined4 *)((int)pvVar9 + 0x7e);
|
|
*(undefined4 *)((int)this + 0x13a) = *(undefined4 *)((int)pvVar9 + 0x72);
|
|
puVar5 = *(undefined4 **)((int)pvVar9 + 0x66);
|
|
*(undefined4 **)((int)this + 0x32) = puVar5;
|
|
FUN_01013c89(puVar5,*(undefined4 *)((int)this + 0x52));
|
|
*(undefined4 *)(*(int *)((int)this + 0x32) + 4) = 1;
|
|
FUN_010175aa(this,*(int *)((int)this + 0x146));
|
|
FUN_01013c89(*(undefined4 **)((int)this + 0x3a),iVar2 + 1);
|
|
FUN_01013d2d(*(int **)((int)this + 0x3a));
|
|
iVar4 = 0;
|
|
if (0 < *(int *)(*(int *)((int)this + 0xfe) + 4)) {
|
|
param_2 = (undefined4 *)0x8;
|
|
do {
|
|
(**(code **)**(code ***)((int)param_2 + *(int *)((int)this + 0xfe)))(0x3fc,(float)iVar2);
|
|
param_2 = param_2 + 1;
|
|
iVar4 = iVar4 + 1;
|
|
} while (iVar4 < *(int *)(*(int *)((int)this + 0xfe) + 4));
|
|
}
|
|
if (iVar2 == 0) {
|
|
if (*(char *)(*(int *)((int)this + 0xe6) + 5) == '\0') {
|
|
sVar8 = 0x1a;
|
|
}
|
|
else {
|
|
sVar8 = 0x1e;
|
|
}
|
|
LAB_01018d9e:
|
|
uVar11 = 0xbf800000;
|
|
pCVar1 = FUN_01003752(sVar8);
|
|
FUN_010144b7(pCVar1,uVar11);
|
|
}
|
|
else {
|
|
if (iVar2 == 1) {
|
|
if (*(char *)(*(int *)((int)this + 0xe6) + 5) == '\0') {
|
|
sVar8 = 0x1b;
|
|
}
|
|
else {
|
|
sVar8 = 0x1f;
|
|
}
|
|
goto LAB_01018d9e;
|
|
}
|
|
if (iVar2 == 2) {
|
|
if (*(char *)(*(int *)((int)this + 0xe6) + 5) == '\0') {
|
|
sVar8 = 0x1c;
|
|
}
|
|
else {
|
|
sVar8 = 0x20;
|
|
}
|
|
goto LAB_01018d9e;
|
|
}
|
|
if (iVar2 == 3) {
|
|
if (*(char *)(*(int *)((int)this + 0xe6) + 5) == '\0') {
|
|
sVar8 = 0x1d;
|
|
}
|
|
else {
|
|
sVar8 = 0x21;
|
|
}
|
|
goto LAB_01018d9e;
|
|
}
|
|
}
|
|
*(undefined4 *)((int)this + 0x13e) = 0;
|
|
*(undefined4 *)((int)this + 0x136) = 0;
|
|
*(undefined4 *)((int)this + 0x142) = 0;
|
|
*(int *)((int)this + 0xda) = iVar2;
|
|
break;
|
|
case 0x3fe:
|
|
FUN_01009895(*(int *)((int)this + 0x46));
|
|
FUN_01014143(DAT_01025654);
|
|
uVar11 = 0xbf800000;
|
|
pCVar1 = FUN_01003752(0x22);
|
|
FUN_010144b7(pCVar1,uVar11);
|
|
iVar2 = FUN_010074b7(0x40400000,(int)this,(int)FUN_0101748b);
|
|
*(int *)((int)this + 0x5e) = iVar2;
|
|
break;
|
|
case 0x400:
|
|
iVar2 = *(int *)(*(int *)((int)this + 0xfe) + 4);
|
|
if (-1 < iVar2 + -1) {
|
|
iVar4 = (iVar2 + -1) * 4 + 8;
|
|
do {
|
|
(**(code **)**(code ***)(iVar4 + *(int *)((int)this + 0xfe)))();
|
|
iVar4 = iVar4 + -4;
|
|
iVar2 = iVar2 + -1;
|
|
} while (iVar2 != 0);
|
|
}
|
|
if (*(int *)((int)this + 0x166) != 0) {
|
|
FUN_01007659(*(int *)((int)this + 0x166));
|
|
}
|
|
*(undefined4 *)((int)this + 0x166) = 0;
|
|
if (*(int *)((int)this + 0x5a) != 0) {
|
|
FUN_01007659(*(int *)((int)this + 0x5a));
|
|
(**(code **)**(code ***)((int)this + 0x10a))(0x22,0);
|
|
}
|
|
*(undefined4 *)((int)this + 0x5a) = 0;
|
|
*(undefined4 *)((int)this + 0x126) = 0;
|
|
*(undefined4 *)((int)this + 0x12a) = 0;
|
|
*(undefined4 *)((int)this + 0x12e) = 0;
|
|
*(undefined4 *)((int)this + 0x132) = 10000;
|
|
*(undefined4 *)((int)this + 0x136) = 0;
|
|
*(undefined4 *)((int)this + 0x13a) = 20000;
|
|
*(undefined4 *)((int)this + 0x13e) = 0;
|
|
*(undefined4 *)((int)this + 0x142) = 0;
|
|
*(undefined4 *)((int)this + 0x14e) = 0;
|
|
*(undefined4 *)((int)this + 0x152) = 0;
|
|
*(undefined4 *)((int)this + 0x156) = 0;
|
|
*(undefined4 *)((int)this + 0x15a) = 0;
|
|
*(undefined4 *)((int)this + 0x15e) = 0;
|
|
*(undefined4 *)((int)this + 0x162) = 0;
|
|
*(undefined4 *)((int)this + 0x166) = 0;
|
|
*(undefined4 *)((int)this + 0x172) = 0;
|
|
}
|
|
FUN_0100c0be(param_1);
|
|
return 0;
|
|
}
|
|
|
|
|
|
|
|
undefined4 __thiscall FUN_01018f5b(void *this,int param_1,undefined4 param_2)
|
|
|
|
{
|
|
int iVar1;
|
|
|
|
if (param_1 == 0x3b) {
|
|
if (*(int *)((int)this + 0x2a) != 0) {
|
|
FUN_01007659(*(int *)((int)this + 0x2a));
|
|
}
|
|
iVar1 = FUN_010074b7(param_2,(int)this,(int)FUN_0101798c);
|
|
*(int *)((int)this + 0x2a) = iVar1;
|
|
}
|
|
else {
|
|
if ((((param_1 == 0x3f3) || (param_1 == 0x3fe)) || (param_1 == 0x400)) &&
|
|
(*(int *)((int)this + 0x2a) != 0)) {
|
|
FUN_01007659(*(int *)((int)this + 0x2a));
|
|
*(undefined4 *)((int)this + 0x2a) = 0;
|
|
}
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
|
|
|
|
void __fastcall FUN_01018fbc(undefined4 *param_1)
|
|
|
|
{
|
|
*param_1 = 0x10024a8;
|
|
if (*(int *)((int)param_1 + 0x1e) != 0) {
|
|
FUN_01012e7a(*(int *)(*(int *)((int)param_1 + 0x1e) + 0xfe),(int)param_1);
|
|
}
|
|
if (*(void **)((int)param_1 + 0x22) != (void *)0x0) {
|
|
FUN_01017e5c(*(void **)((int)param_1 + 0x22),1);
|
|
}
|
|
if (*(void **)((int)param_1 + 0x26) != (void *)0x0) {
|
|
FUN_01017e5c(*(void **)((int)param_1 + 0x26),1);
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
undefined4 * __thiscall FUN_01018ffd(void *this,void *param_1,int param_2)
|
|
|
|
{
|
|
short *psVar1;
|
|
int iVar2;
|
|
void *local_8;
|
|
|
|
local_8 = this;
|
|
FUN_01017c6d(this,(int)param_1,param_2,0);
|
|
*(undefined4 *)this = 0x10024d8;
|
|
FUN_010098d3((void *)((int)this + 0x2a),4,4);
|
|
*(undefined4 *)((int)this + 0x32) = 0;
|
|
if (0 < param_2) {
|
|
psVar1 = FUN_0100981a(param_2,0x403,(int *)&local_8);
|
|
param_2 = 0;
|
|
if (0 < (int)local_8) {
|
|
do {
|
|
iVar2 = FUN_010176be(param_1,(int)*psVar1);
|
|
if (iVar2 != 0) {
|
|
FUN_0100acf3((void *)((int)this + 0x2a),iVar2);
|
|
}
|
|
param_2 = param_2 + 1;
|
|
psVar1 = psVar1 + 1;
|
|
} while (param_2 < (int)local_8);
|
|
}
|
|
}
|
|
return (undefined4 *)this;
|
|
}
|
|
|
|
|
|
|
|
void __fastcall FUN_01019082(undefined4 *param_1)
|
|
|
|
{
|
|
*param_1 = 0x10024d8;
|
|
if (*(int *)((int)param_1 + 0x32) != 0) {
|
|
FUN_01007659(*(int *)((int)param_1 + 0x32));
|
|
*(undefined4 *)((int)param_1 + 0x32) = 0;
|
|
}
|
|
FUN_01013c6f(*(int *)((int)param_1 + 0x2e));
|
|
FUN_01018fbc(param_1);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
undefined4 * __thiscall FUN_010190b3(void *this,int param_1,int param_2,int param_3)
|
|
|
|
{
|
|
float *pfVar1;
|
|
void *pvVar2;
|
|
undefined *puVar3;
|
|
undefined4 local_60;
|
|
undefined4 uVar4;
|
|
undefined4 local_4c;
|
|
undefined4 local_48;
|
|
undefined4 local_3c;
|
|
undefined4 local_38;
|
|
undefined4 local_34;
|
|
undefined4 local_1c;
|
|
undefined4 local_18;
|
|
|
|
FUN_01017c6d(this,param_1,param_2,1);
|
|
*(undefined4 *)this = 0x10024ec;
|
|
FUN_010098d3((void *)((int)this + 0x2a),4,4);
|
|
puVar3 = (undefined *)((int)this + 5);
|
|
*puVar3 = 1;
|
|
if (*(int *)((int)this + 10) != 0) {
|
|
*(undefined *)((int)this + 4) = 1;
|
|
}
|
|
if (param_2 < 1) {
|
|
FUN_01008fe0(&local_4c);
|
|
}
|
|
else {
|
|
FUN_0100950a(param_2,0,&local_4c);
|
|
if (param_3 != 0) {
|
|
local_60 = *(undefined4 *)(param_1 + 0x11a);
|
|
uVar4 = 0;
|
|
pvVar2 = this;
|
|
pfVar1 = FUN_0100978e(param_2,0,600);
|
|
FUN_010179a9(pfVar1,pvVar2,puVar3,local_18,local_60,uVar4);
|
|
}
|
|
}
|
|
*(undefined4 *)((int)this + 0x42) = local_38;
|
|
*(undefined4 *)((int)this + 0x36) = local_48;
|
|
*(undefined4 *)((int)this + 0x3a) = local_4c;
|
|
*(undefined4 *)((int)this + 0x3e) = local_34;
|
|
*(undefined4 *)((int)this + 0x4a) = local_1c;
|
|
*(undefined4 *)((int)this + 0x46) = local_3c;
|
|
*(int *)((int)this + 0x16) = param_2;
|
|
return (undefined4 *)this;
|
|
}
|
|
|
|
|
|
|
|
void __fastcall FUN_01019172(undefined4 *param_1)
|
|
|
|
{
|
|
void *pvVar1;
|
|
int iVar2;
|
|
|
|
*param_1 = 0x10024ec;
|
|
iVar2 = *(int *)(*(int *)((int)param_1 + 0x2e) + 4);
|
|
while (iVar2 != 0) {
|
|
pvVar1 = *(void **)(*(int *)((int)param_1 + 0x2e) + 8);
|
|
FUN_01012e7a(*(int *)((int)param_1 + 0x2e),(int)pvVar1);
|
|
operator_delete(pvVar1);
|
|
iVar2 = *(int *)(*(int *)((int)param_1 + 0x2e) + 4);
|
|
}
|
|
FUN_01013c6f(*(int *)((int)param_1 + 0x2e));
|
|
FUN_01018fbc(param_1);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
undefined4 * __thiscall FUN_010191ba(void *this,int param_1,int param_2)
|
|
|
|
{
|
|
FUN_010190b3(this,param_1,param_2,1);
|
|
*(undefined4 *)this = 0x1002508;
|
|
if (*(int *)((int)this + 0x1a) != 0) {
|
|
FUN_010139b6(*(int *)((int)this + 0x1a),0);
|
|
}
|
|
if (*(int *)((int)this + 0x22) != 0) {
|
|
*(undefined4 *)((int)this + 0x52) =
|
|
*(undefined4 *)(*(int *)(*(int *)((int)this + 0x22) + 4) + 8);
|
|
}
|
|
*(undefined4 *)((int)this + 0x4e) = 0;
|
|
return (undefined4 *)this;
|
|
}
|
|
|
|
|
|
|
|
undefined4 * __thiscall FUN_01019204(void *this,int param_1,int param_2)
|
|
|
|
{
|
|
void *this_00;
|
|
undefined4 *this_01;
|
|
int *this_02;
|
|
undefined local_64 [8];
|
|
int local_5c;
|
|
undefined4 *local_58;
|
|
undefined4 local_30;
|
|
undefined4 local_1c;
|
|
undefined4 local_18;
|
|
undefined4 local_10;
|
|
undefined4 local_c;
|
|
|
|
this_02 = (int *)0x0;
|
|
FUN_010190b3(this,param_1,param_2,0);
|
|
*(undefined4 *)this = 0x1002530;
|
|
FUN_0100950a(param_2,0,local_64);
|
|
if (local_5c == 2) {
|
|
local_10 = *local_58;
|
|
local_c = local_58[1];
|
|
local_1c = local_58[2];
|
|
local_18 = local_58[3];
|
|
this_00 = operator_new(0x55);
|
|
if (this_00 != (void *)0x0) {
|
|
this_02 = FUN_0101c77e(this_00,this,(int)this + 5,local_30,&local_10,&local_1c);
|
|
}
|
|
if (this_02 != (int *)0x0) {
|
|
FUN_0101c813(this_02,*(float *)(param_1 + 0x11a));
|
|
(**(code **)(*this_02 + 8))();
|
|
FUN_0100acf3((void *)((int)this + 0x2a),(int)this_02);
|
|
}
|
|
this_00 = operator_new(0x55);
|
|
if (this_00 == (void *)0x0) {
|
|
this_01 = (undefined4 *)0x0;
|
|
}
|
|
else {
|
|
this_01 = FUN_0101c77e(this_00,this,(int)this + 5,local_30,&local_1c,&local_10);
|
|
}
|
|
*(undefined4 **)((int)this + 0x52) = this_01;
|
|
if (this_01 != (undefined4 *)0x0) {
|
|
FUN_0101c813(this_01,-(*(float *)(param_1 + 0x11a) * 0.79999995));
|
|
(**(code **)(**(int **)((int)this + 0x52) + 8))();
|
|
FUN_0100acf3((void *)((int)this + 0x2a),*(int *)((int)this + 0x52));
|
|
}
|
|
}
|
|
return (undefined4 *)this;
|
|
}
|
|
|
|
|
|
|
|
undefined4 * __thiscall FUN_01019309(void *this,int param_1)
|
|
|
|
{
|
|
void *this_00;
|
|
int iVar1;
|
|
float *pfVar2;
|
|
int *piVar3;
|
|
float10 fVar4;
|
|
undefined local_54 [64];
|
|
int local_14;
|
|
int local_c;
|
|
float *local_8;
|
|
|
|
FUN_01017c6d(this,param_1,-1,0);
|
|
*(undefined4 *)((int)this + 0x4e) = 0;
|
|
*(undefined4 *)this = 0x1002554;
|
|
*(undefined4 *)((int)this + 0x46) = 0;
|
|
*(undefined *)((int)this + 5) = 1;
|
|
*(undefined4 *)((int)this + 0x6a) = 0;
|
|
*(undefined4 *)((int)this + 0x86) = 0;
|
|
*(undefined4 *)((int)this + 0x4a) = 0;
|
|
*(undefined4 *)((int)this + 0x6e) = 1;
|
|
*(undefined4 *)((int)this + 0x96) = 0;
|
|
*(undefined4 *)((int)this + 0x42) = 0;
|
|
*(undefined4 *)((int)this + 0x3a) = 0;
|
|
*(undefined4 *)((int)this + 0x36) = 0;
|
|
*(undefined4 *)((int)this + 0x56) = 0x4e6e6b28;
|
|
*(undefined4 *)((int)this + 0x52) = 0x4e6e6b28;
|
|
*(undefined4 *)((int)this + 0x2a) = 0;
|
|
*(undefined4 *)((int)this + 0x2e) = 0;
|
|
this_00 = operator_new(8);
|
|
if (this_00 == (void *)0x0) {
|
|
this_00 = (void *)0x0;
|
|
}
|
|
else {
|
|
FUN_010098d3(this_00,0,4);
|
|
}
|
|
*(void **)((int)this + 0x22) = this_00;
|
|
iVar1 = FUN_010091eb("ball");
|
|
pfVar2 = FUN_0100978e(iVar1,0,500);
|
|
*(float *)((int)this + 0x9a) = *pfVar2;
|
|
local_c = FUN_01009207(iVar1);
|
|
param_1 = 0;
|
|
if (0 < local_c) {
|
|
local_8 = (float *)((int)this + 0xa2);
|
|
do {
|
|
FUN_0100950a(iVar1,param_1,local_54);
|
|
if (*(void **)((int)this + 0x22) != (void *)0x0) {
|
|
FUN_0100acf3(*(void **)((int)this + 0x22),local_14);
|
|
}
|
|
pfVar2 = FUN_0100978e(iVar1,param_1,0x1f5);
|
|
fVar4 = (float10)FUN_01008ed8(pfVar2);
|
|
param_1 = param_1 + 1;
|
|
*local_8 = (float)fVar4;
|
|
local_8 = local_8 + 1;
|
|
} while (param_1 < local_c);
|
|
}
|
|
piVar3 = FUN_0101385c(2,0,0,0,0,(int *)0x0);
|
|
*(int **)((int)this + 0x1a) = piVar3;
|
|
*(undefined4 *)(*(int *)((int)this + 0x1e) + 0x11a) = *(undefined4 *)((int)this + 0x9a);
|
|
*(undefined4 *)((int)this + 0x32) = *(undefined4 *)((int)this + 0x9a);
|
|
return (undefined4 *)this;
|
|
}
|
|
|
|
|
|
|
|
undefined4 * __thiscall FUN_0101944a(void *this,int param_1,int param_2)
|
|
|
|
{
|
|
float *pfVar1;
|
|
undefined local_4c [56];
|
|
undefined4 local_14;
|
|
undefined4 local_10;
|
|
|
|
FUN_010190b3(this,param_1,param_2,1);
|
|
*(undefined4 *)((int)this + 0x4e) = 0;
|
|
*(undefined4 *)((int)this + 0x52) = 0;
|
|
*(undefined4 *)this = 0x100256c;
|
|
pfVar1 = FUN_0100978e(param_2,0,0x197);
|
|
*(float *)((int)this + 0x56) = *pfVar1;
|
|
FUN_0100950a(param_2,0,local_4c);
|
|
*(undefined4 *)((int)this + 0x5e) = local_14;
|
|
*(undefined4 *)((int)this + 0x62) = local_10;
|
|
*(undefined4 *)((int)this + 0x5a) = *(undefined4 *)((int)this + 0x42);
|
|
return (undefined4 *)this;
|
|
}
|
|
|
|
|
|
|
|
undefined4 * __thiscall FUN_010194b0(void *this,int param_1,int param_2)
|
|
|
|
{
|
|
void *this_00;
|
|
int *piVar1;
|
|
float *pfVar2;
|
|
undefined local_64 [12];
|
|
undefined4 *local_58;
|
|
undefined4 local_30;
|
|
undefined4 local_1c;
|
|
undefined4 local_18;
|
|
undefined4 local_10;
|
|
undefined4 local_c;
|
|
|
|
FUN_010190b3(this,param_1,param_2,0);
|
|
*(undefined4 *)this = 0x1002588;
|
|
*(undefined4 *)((int)this + 0x66) = 0;
|
|
FUN_0100950a(param_2,0,local_64);
|
|
local_1c = *local_58;
|
|
local_18 = local_58[1];
|
|
local_10 = local_58[2];
|
|
local_c = local_58[3];
|
|
this_00 = operator_new(0x55);
|
|
if (this_00 == (void *)0x0) {
|
|
piVar1 = (int *)0x0;
|
|
}
|
|
else {
|
|
piVar1 = FUN_0101c77e(this_00,this,(int)this + 5,local_30,&local_10,&local_1c);
|
|
}
|
|
if (piVar1 != (int *)0x0) {
|
|
(**(code **)(*piVar1 + 8))();
|
|
FUN_0100acf3((void *)((int)this + 0x2a),(int)piVar1);
|
|
}
|
|
this_00 = operator_new(0x55);
|
|
if (this_00 == (void *)0x0) {
|
|
piVar1 = (int *)0x0;
|
|
}
|
|
else {
|
|
piVar1 = FUN_0101c77e(this_00,this,(int)this + 5,local_30,&local_1c,&local_10);
|
|
}
|
|
*(int **)((int)this + 0x6a) = piVar1;
|
|
if (piVar1 != (int *)0x0) {
|
|
(**(code **)(*piVar1 + 8))();
|
|
FUN_0100acf3((void *)((int)this + 0x2a),*(int *)((int)this + 0x6a));
|
|
}
|
|
*(undefined4 *)((int)this + 0x5a) = 0x3f266666;
|
|
*(undefined4 *)((int)this + 0x52) = 0x47435000;
|
|
*(undefined4 *)((int)this + 0x56) = 0x40a00000;
|
|
pfVar2 = FUN_0100978e(param_2,0,0x4b2);
|
|
if (pfVar2 != (float *)0x0) {
|
|
*(float *)((int)this + 0x5a) = *pfVar2;
|
|
}
|
|
pfVar2 = FUN_0100978e(param_2,0,0x4b0);
|
|
if (pfVar2 != (float *)0x0) {
|
|
*(float *)((int)this + 0x52) = *pfVar2;
|
|
}
|
|
pfVar2 = FUN_0100978e(param_2,0,0x4b1);
|
|
if (pfVar2 != (float *)0x0) {
|
|
*(float *)((int)this + 0x56) = *pfVar2;
|
|
}
|
|
return (undefined4 *)this;
|
|
}
|
|
|
|
|
|
|
|
undefined4 * __thiscall FUN_010195e0(void *this,int param_1,int param_2)
|
|
|
|
{
|
|
float fVar1;
|
|
float *pfVar2;
|
|
|
|
FUN_010190b3(this,param_1,param_2,1);
|
|
*(undefined4 *)this = 0x10025a4;
|
|
pfVar2 = FUN_0100978e(param_2,0,0x197);
|
|
fVar1 = *pfVar2;
|
|
*(undefined4 *)((int)this + 0x4e) = 0;
|
|
*(float *)((int)this + 0x52) = fVar1;
|
|
return (undefined4 *)this;
|
|
}
|
|
|
|
|
|
|
|
undefined4 * __thiscall FUN_0101961f(void *this,int param_1,int param_2)
|
|
|
|
{
|
|
undefined local_4c [56];
|
|
undefined4 local_14;
|
|
|
|
FUN_010190b3(this,param_1,param_2,1);
|
|
*(undefined4 *)((int)this + 0x52) = 0;
|
|
*(undefined4 *)this = 0x10025c0;
|
|
*(undefined4 *)((int)this + 0x56) = 0x3dcccccd;
|
|
FUN_0100950a(param_2,0,local_4c);
|
|
*(undefined4 *)((int)this + 0x5a) = local_14;
|
|
FUN_01016230(this,0x32);
|
|
return (undefined4 *)this;
|
|
}
|
|
|
|
|
|
|
|
undefined4 * __thiscall FUN_01019677(void *this,int param_1,int param_2)
|
|
|
|
{
|
|
undefined local_4c [56];
|
|
undefined4 local_14;
|
|
undefined4 local_10;
|
|
|
|
FUN_010190b3(this,param_1,param_2,1);
|
|
*(undefined4 *)this = 0x10025dc;
|
|
FUN_0100950a(param_2,0,local_4c);
|
|
*(undefined4 *)((int)this + 0x5a) = local_14;
|
|
*(undefined4 *)((int)this + 0x5e) = local_10;
|
|
*(undefined4 *)((int)this + 0x4e) = 0x37;
|
|
*(undefined4 *)((int)this + 0x52) = 5;
|
|
*(undefined4 *)((int)this + 0x42) = 0x4e6e6b28;
|
|
*(undefined4 *)((int)this + 0x56) = 0;
|
|
*(undefined4 *)((int)this + 6) = 0;
|
|
*(undefined *)((int)this + 5) = 0;
|
|
FUN_010139b6(*(int *)((int)this + 0x1a),0);
|
|
return (undefined4 *)this;
|
|
}
|
|
|
|
|
|
|
|
undefined ** __thiscall FUN_010196e5(void *this,int param_1,int param_2)
|
|
|
|
{
|
|
undefined local_4c [56];
|
|
undefined4 local_14;
|
|
undefined4 local_10;
|
|
|
|
FUN_010190b3(this,param_1,param_2,1);
|
|
*(undefined4 *)this = 0x10025f8;
|
|
FUN_0100950a(param_2,0,local_4c);
|
|
*(undefined4 *)((int)this + 0x4e) = local_14;
|
|
*(undefined4 *)((int)this + 0x52) = local_10;
|
|
*(undefined *)((int)this + 5) = 1;
|
|
FUN_010139b6(*(int *)((int)this + 0x1a),*(int *)(*(int *)(*(int *)((int)this + 0x22) + 4) + 8));
|
|
FUN_01011ec9(0x400,(undefined **)this);
|
|
return (undefined **)this;
|
|
}
|
|
|
|
|
|
|
|
undefined4 * __thiscall FUN_01019749(void *this,int param_1,int param_2,int param_3)
|
|
|
|
{
|
|
FUN_010190b3(this,param_1,param_2,param_3);
|
|
*(undefined4 *)this = 0x1002614;
|
|
return (undefined4 *)this;
|
|
}
|
|
|
|
|
|
|
|
undefined4 * __thiscall FUN_01019771(void *this,int param_1,int param_2)
|
|
|
|
{
|
|
FUN_010190b3(this,param_1,param_2,0);
|
|
*(undefined4 *)this = 0x1002614;
|
|
*(undefined *)((int)this + 0x4e) = 0;
|
|
if (*(int *)((int)this + 0x22) != 0) {
|
|
FUN_010139b6(*(int *)((int)this + 0x1a),*(int *)(*(int *)(*(int *)((int)this + 0x22) + 4) + 8));
|
|
}
|
|
FUN_010182e4(this,param_2);
|
|
return (undefined4 *)this;
|
|
}
|
|
|
|
|
|
|
|
undefined4 * __thiscall FUN_010197bb(void *this,int param_1,int param_2)
|
|
|
|
{
|
|
float *pfVar1;
|
|
|
|
FUN_01019749(this,param_1,param_2,0);
|
|
*(undefined4 *)this = 0x1002630;
|
|
*(undefined *)((int)this + 0x4e) = 0;
|
|
*(undefined4 *)((int)this + 0x5b) = 0;
|
|
if (*(int *)((int)this + 0x22) != 0) {
|
|
FUN_010139b6(*(int *)((int)this + 0x1a),0);
|
|
}
|
|
FUN_010182e4(this,param_2);
|
|
pfVar1 = FUN_0100978e(param_2,0,0x197);
|
|
*(float *)((int)this + 0x57) = *pfVar1;
|
|
return (undefined4 *)this;
|
|
}
|
|
|
|
|
|
|
|
// Library Function - Multiple Matches With Same Base Name
|
|
// Name: moneypunct<>
|
|
// Libraries: Visual Studio 2012 Release, Visual Studio 2015 Release
|
|
|
|
undefined4 * __thiscall moneypunct__(void *this,int param_1,int param_2)
|
|
|
|
{
|
|
FUN_01019749(this,param_1,param_2,1);
|
|
*(undefined4 *)this = 0x100264c;
|
|
return (undefined4 *)this;
|
|
}
|
|
|
|
|
|
|
|
undefined4 * __thiscall FUN_0101983d(void *this,int param_1,int param_2)
|
|
|
|
{
|
|
FUN_010190b3(this,param_1,param_2,1);
|
|
*(undefined4 *)((int)this + 6) = 0;
|
|
*(undefined4 *)((int)this + 0x56) = 0;
|
|
*(undefined4 *)((int)this + 0x5a) = 0;
|
|
*(undefined4 *)this = 0x1002668;
|
|
*(undefined4 *)((int)this + 0x4e) = 0x3f333333;
|
|
*(undefined4 *)((int)this + 0x52) = 0x3dcccccd;
|
|
*(undefined4 *)((int)this + 0x42) = 0x4e6e6b28;
|
|
return (undefined4 *)this;
|
|
}
|
|
|
|
|
|
|
|
undefined4 * __thiscall FUN_01019884(undefined4 *puParm1,int *param_1,int param_2,int param_3)
|
|
|
|
{
|
|
float fVar1;
|
|
float *pfVar2;
|
|
void *this;
|
|
bool in_PF;
|
|
undefined local_5c [12];
|
|
undefined4 *local_50;
|
|
undefined4 local_4c;
|
|
undefined4 local_44;
|
|
float local_40;
|
|
undefined4 local_3c;
|
|
undefined4 uStack56;
|
|
undefined4 uStack52;
|
|
undefined4 local_30;
|
|
undefined4 local_2c;
|
|
undefined4 local_28;
|
|
undefined4 local_14;
|
|
undefined4 uStack16;
|
|
undefined4 uStack12;
|
|
undefined4 local_8;
|
|
|
|
FUN_010190b3(puParm1,(int)param_1,param_2,0);
|
|
*puParm1 = 0x1002690;
|
|
*(uint *)((int)puParm1 + 0x52) = (uint)(param_3 == 0);
|
|
if (param_3 == 0) {
|
|
*(undefined *)((int)puParm1 + 5) = 0;
|
|
}
|
|
*(undefined4 *)((int)puParm1 + 0x5a) = 0x3fc00000;
|
|
*(undefined4 *)((int)puParm1 + 0x5e) = 0x3d4ccccd;
|
|
*(undefined4 *)((int)puParm1 + 6) = 0;
|
|
*(undefined4 *)((int)puParm1 + 0x56) = 0;
|
|
*(undefined4 *)((int)puParm1 + 0x4e) = 0;
|
|
pfVar2 = FUN_0100978e(param_2,0,0x132);
|
|
fVar1 = *pfVar2;
|
|
pfVar2 = FUN_0100978e(param_2,0,0x131);
|
|
*(float *)((int)puParm1 + 0x6a) = *pfVar2;
|
|
FUN_0100950a(param_2,0,local_5c);
|
|
*(undefined4 *)((int)puParm1 + 0x46) = local_4c;
|
|
*(undefined4 *)((int)puParm1 + 0x4a) = local_2c;
|
|
*(undefined4 *)((int)puParm1 + 0x6e) = *local_50;
|
|
*(undefined4 *)((int)puParm1 + 0x72) = local_50[1];
|
|
*(float *)((int)puParm1 + 0x7a) = fVar1 * (float)local_50[2];
|
|
if (!in_PF) {
|
|
*(undefined4 *)((int)puParm1 + 0x7a) = 0x3a83126f;
|
|
}
|
|
this = operator_new(0x25);
|
|
if (this == (void *)0x0) {
|
|
param_1 = (int *)0x0;
|
|
}
|
|
else {
|
|
param_1 = FUN_01015898(this,puParm1,(int)puParm1 + 5,local_28,local_50,
|
|
*(float *)((int)puParm1 + 0x7a));
|
|
}
|
|
if (param_1 != (int *)0x0) {
|
|
(**(code **)(*param_1 + 8))();
|
|
FUN_0100acf3((void *)((int)puParm1 + 0x2a),(int)param_1);
|
|
}
|
|
fVar1 = (float)local_50[2];
|
|
*(float *)((int)puParm1 + 0x7a) = fVar1 * fVar1;
|
|
pfVar2 = FUN_0100978e(param_2,0,0x198);
|
|
*(float *)((int)puParm1 + 0x62) = pfVar2[2];
|
|
*(float *)((int)puParm1 + 0x96) = local_40 * 0.01000000;
|
|
*(undefined4 *)((int)puParm1 + 0x82) = local_3c;
|
|
*(undefined4 *)((int)puParm1 + 0x86) = uStack56;
|
|
*(undefined4 *)((int)puParm1 + 0x8e) = local_30;
|
|
*(undefined4 *)((int)puParm1 + 0x8a) = uStack52;
|
|
*(undefined4 *)((int)puParm1 + 0x92) = local_44;
|
|
local_8 = *(undefined4 *)((int)puParm1 + 0x7a);
|
|
local_14 = *(undefined4 *)((int)puParm1 + 0x6e);
|
|
uStack16 = *(undefined4 *)((int)puParm1 + 0x72);
|
|
*(int *)((int)puParm1 + 0x9a) = (int)puParm1 + 5;
|
|
uStack12 = *(undefined4 *)((int)puParm1 + 0x76);
|
|
*(undefined4 **)((int)puParm1 + 0xa2) = puParm1;
|
|
*(undefined4 *)((int)puParm1 + 0x9e) = local_28;
|
|
FUN_0100b9c7(&local_14,0,(int *)((int)puParm1 + 0x9a));
|
|
return puParm1;
|
|
}
|
|
|
|
|
|
|
|
undefined4 * __thiscall FUN_01019a1c(undefined4 *puParm1,int *param_1,int param_2)
|
|
|
|
{
|
|
float fVar1;
|
|
float *pfVar2;
|
|
void *this;
|
|
undefined4 uVar3;
|
|
bool in_PF;
|
|
undefined local_60 [12];
|
|
undefined4 *local_54;
|
|
undefined4 local_2c;
|
|
undefined4 local_18;
|
|
undefined4 uStack20;
|
|
undefined4 uStack16;
|
|
undefined4 local_c;
|
|
undefined4 *local_8;
|
|
|
|
FUN_010190b3(puParm1,(int)param_1,param_2,0);
|
|
*puParm1 = 0x10026ac;
|
|
*(undefined4 *)((int)puParm1 + 0x5e) = 0x3d4ccccd;
|
|
*(undefined4 *)((int)puParm1 + 6) = 0;
|
|
*(undefined4 *)((int)puParm1 + 0x56) = 0;
|
|
*(undefined4 *)((int)puParm1 + 0x4e) = 0;
|
|
pfVar2 = FUN_0100978e(param_2,0,0x197);
|
|
if (pfVar2 == (float *)0x0) {
|
|
*(undefined4 *)((int)puParm1 + 0x5a) = 0x3e800000;
|
|
}
|
|
else {
|
|
*(float *)((int)puParm1 + 0x5a) = *pfVar2;
|
|
}
|
|
pfVar2 = FUN_0100978e(param_2,0,0x2bd);
|
|
if (pfVar2 == (float *)0x0) {
|
|
*(undefined4 *)((int)puParm1 + 0x62) = 0x3f000000;
|
|
}
|
|
else {
|
|
*(float *)((int)puParm1 + 0x62) = *pfVar2;
|
|
}
|
|
pfVar2 = FUN_0100978e(param_2,0,0x132);
|
|
fVar1 = *pfVar2;
|
|
pfVar2 = FUN_0100978e(param_2,0,0x131);
|
|
*(float *)((int)puParm1 + 0x6e) = *pfVar2;
|
|
FUN_0100950a(param_2,0,local_60);
|
|
*(undefined4 *)((int)puParm1 + 0x72) = *local_54;
|
|
*(undefined4 *)((int)puParm1 + 0x76) = local_54[1];
|
|
local_8 = local_54;
|
|
*(float *)((int)puParm1 + 0x7e) = fVar1 * (float)local_54[2];
|
|
if (!in_PF) {
|
|
*(undefined4 *)((int)puParm1 + 0x7e) = 0x3a83126f;
|
|
}
|
|
this = operator_new(0x25);
|
|
if (this == (void *)0x0) {
|
|
param_1 = (int *)0x0;
|
|
}
|
|
else {
|
|
param_1 = FUN_01015898(this,puParm1,(int)puParm1 + 5,local_2c,local_8,
|
|
*(float *)((int)puParm1 + 0x7e));
|
|
}
|
|
if (param_1 != (int *)0x0) {
|
|
(**(code **)(*param_1 + 8))();
|
|
FUN_0100acf3((void *)((int)puParm1 + 0x2a),(int)param_1);
|
|
}
|
|
fVar1 = (float)local_54[2];
|
|
*(float *)((int)puParm1 + 0x7e) = fVar1 * fVar1;
|
|
pfVar2 = FUN_0100978e(param_2,0,0x198);
|
|
*(float *)((int)puParm1 + 0x66) = pfVar2[2];
|
|
pfVar2 = FUN_0100978e(param_2,0,0x518);
|
|
floor((double)*pfVar2);
|
|
uVar3 = _ftol();
|
|
*(undefined4 *)((int)puParm1 + 0x6a) = uVar3;
|
|
local_c = *(undefined4 *)((int)puParm1 + 0x7e);
|
|
local_18 = *(undefined4 *)((int)puParm1 + 0x72);
|
|
uStack20 = *(undefined4 *)((int)puParm1 + 0x76);
|
|
*(int *)((int)puParm1 + 0x82) = (int)puParm1 + 5;
|
|
uStack16 = *(undefined4 *)((int)puParm1 + 0x7a);
|
|
*(undefined4 **)((int)puParm1 + 0x8a) = puParm1;
|
|
*(undefined4 *)((int)puParm1 + 0x86) = local_2c;
|
|
FUN_0100b9c7(&local_18,0,(int *)((int)puParm1 + 0x82));
|
|
return puParm1;
|
|
}
|
|
|
|
|
|
|
|
undefined4 * __thiscall FUN_01019bb8(undefined4 *puParm1,float *param_1,int *param_2)
|
|
|
|
{
|
|
float *pfVar1;
|
|
float fVar2;
|
|
byte bVar3;
|
|
float *pfVar4;
|
|
undefined4 uVar5;
|
|
void *this;
|
|
int *piVar6;
|
|
int iVar7;
|
|
bool in_PF;
|
|
float10 fVar8;
|
|
float10 fVar9;
|
|
undefined local_88 [52];
|
|
int local_54;
|
|
float local_40;
|
|
float local_3c;
|
|
int local_34;
|
|
int local_30;
|
|
float *local_2c;
|
|
float *local_28;
|
|
float *local_24;
|
|
int local_20;
|
|
int local_1c;
|
|
float *local_18;
|
|
float local_14;
|
|
float local_10;
|
|
float local_c;
|
|
float local_8;
|
|
|
|
iVar7 = (int)param_2;
|
|
FUN_010190b3(puParm1,(int)param_1,(int)param_2,0);
|
|
*puParm1 = 0x10026cc;
|
|
*(undefined4 *)((int)puParm1 + 6) = 0;
|
|
*(undefined *)(puParm1 + 1) = 1;
|
|
FUN_0100950a(iVar7,0,local_88);
|
|
*(int *)((int)puParm1 + 0x6a) = local_54;
|
|
pfVar4 = FUN_0100978e(iVar7,0,0x2bd);
|
|
if (pfVar4 == (float *)0x0) {
|
|
*(undefined4 *)((int)puParm1 + 0x76) = 0x3e4ccccd;
|
|
}
|
|
else {
|
|
*(float *)((int)puParm1 + 0x76) = *pfVar4;
|
|
}
|
|
pfVar4 = FUN_0100978e(iVar7,0,0x519);
|
|
if (pfVar4 == (float *)0x0) {
|
|
*(undefined4 *)((int)puParm1 + 0x6e) = 0;
|
|
}
|
|
else {
|
|
floor((double)*pfVar4);
|
|
uVar5 = _ftol();
|
|
*(undefined4 *)((int)puParm1 + 0x6e) = uVar5;
|
|
}
|
|
pfVar4 = FUN_0100978e((int)param_2,0,0x514);
|
|
floor((double)*pfVar4);
|
|
uVar5 = _ftol();
|
|
*(undefined4 *)((int)puParm1 + 0x72) = uVar5;
|
|
*(float **)((int)puParm1 + 0x7a) = pfVar4 + 1;
|
|
pfVar4 = FUN_0100978e((int)param_2,0,0x517);
|
|
floor((double)*pfVar4);
|
|
bVar3 = _ftol();
|
|
local_40 = pfVar4[2];
|
|
local_3c = pfVar4[3];
|
|
local_10 = pfVar4[4];
|
|
local_c = pfVar4[5];
|
|
this = operator_new(0x55);
|
|
if (this == (void *)0x0) {
|
|
piVar6 = (int *)0x0;
|
|
}
|
|
else {
|
|
piVar6 = FUN_0101c77e(this,puParm1,(int)puParm1 + 5,1 << (bVar3 & 0x1f),&local_10,&local_40);
|
|
}
|
|
*(int **)((int)puParm1 + 0x86) = piVar6;
|
|
FUN_0100acf3((void *)((int)puParm1 + 0x2a),(int)piVar6);
|
|
if (piVar6 != (int *)0x0) {
|
|
*(undefined4 *)((int)piVar6 + 0xd) = 0;
|
|
(**(code **)(*piVar6 + 8))();
|
|
}
|
|
pfVar4 = FUN_0100978e((int)param_2,0,0x515);
|
|
floor((double)*pfVar4);
|
|
uVar5 = _ftol();
|
|
*(undefined4 *)((int)puParm1 + 0x8a) = uVar5;
|
|
floor((double)pfVar4[1]);
|
|
local_30 = _ftol();
|
|
*(int *)((int)puParm1 + 0x8a) = 1 << ((byte)*(undefined4 *)((int)puParm1 + 0x8a) & 0x1f);
|
|
*(float *)((int)puParm1 + 0x92) = pfVar4[7];
|
|
FUN_01016b27(*(undefined4 *)((int)puParm1 + 0x7a),*(undefined4 *)((int)puParm1 + 0x72),pfVar4 + 3,
|
|
¶m_1,&local_28);
|
|
this = operator_new(0x55);
|
|
if (this == (void *)0x0) {
|
|
piVar6 = (int *)0x0;
|
|
}
|
|
else {
|
|
piVar6 = FUN_0101c77e(this,puParm1,(int)puParm1 + 5,*(undefined4 *)((int)puParm1 + 0x6a),
|
|
local_28,param_1);
|
|
}
|
|
*(int **)((int)puParm1 + 0x7e) = piVar6;
|
|
FUN_0100acf3((void *)((int)puParm1 + 0x2a),(int)piVar6);
|
|
if (piVar6 != (int *)0x0) {
|
|
*(undefined4 *)((int)piVar6 + 0xd) = 0;
|
|
(**(code **)(*piVar6 + 8))();
|
|
}
|
|
pfVar4 = FUN_0100978e((int)param_2,0,0x516);
|
|
floor((double)*pfVar4);
|
|
uVar5 = _ftol();
|
|
*(undefined4 *)((int)puParm1 + 0x8e) = uVar5;
|
|
floor((double)pfVar4[1]);
|
|
local_34 = _ftol();
|
|
*(int *)((int)puParm1 + 0x8e) = 1 << ((byte)*(undefined4 *)((int)puParm1 + 0x8e) & 0x1f);
|
|
*(float *)((int)puParm1 + 0x96) = pfVar4[7];
|
|
FUN_01016b27(*(undefined4 *)((int)puParm1 + 0x7a),*(undefined4 *)((int)puParm1 + 0x72),pfVar4 + 3,
|
|
&local_24,&local_18);
|
|
this = operator_new(0x55);
|
|
if (this == (void *)0x0) {
|
|
piVar6 = (int *)0x0;
|
|
}
|
|
else {
|
|
piVar6 = FUN_0101c77e(this,puParm1,(int)puParm1 + 5,*(undefined4 *)((int)puParm1 + 0x6a),
|
|
local_18,local_24);
|
|
}
|
|
*(int **)((int)puParm1 + 0x82) = piVar6;
|
|
FUN_0100acf3((void *)((int)puParm1 + 0x2a),(int)piVar6);
|
|
if (piVar6 != (int *)0x0) {
|
|
*(undefined4 *)((int)piVar6 + 0xd) = 0;
|
|
(**(code **)(*piVar6 + 8))();
|
|
}
|
|
local_10 = 1000000000.00000000;
|
|
local_20 = 0;
|
|
local_14 = 1000000000.00000000;
|
|
local_8 = -1000000000.00000000;
|
|
local_c = -1000000000.00000000;
|
|
if (0 < *(int *)((int)puParm1 + 0x72)) {
|
|
do {
|
|
local_1c = local_20 * 0x34;
|
|
iVar7 = local_1c + *(int *)((int)puParm1 + 0x7a);
|
|
pfVar4 = (float *)(iVar7 + 0x1c);
|
|
pfVar1 = (float *)(iVar7 + 0xc);
|
|
local_2c = (float *)(iVar7 + 0x14);
|
|
if (in_PF) {
|
|
if (in_PF) {
|
|
fVar2 = *pfVar1;
|
|
}
|
|
else {
|
|
fVar2 = *pfVar4;
|
|
}
|
|
if ((ushort)((ushort)(fVar2 < *local_2c) << 8 | (ushort)(fVar2 == *local_2c) << 0xe) == 0) {
|
|
local_14 = *local_2c;
|
|
}
|
|
else {
|
|
if (in_PF) {
|
|
local_14 = *pfVar1;
|
|
}
|
|
else {
|
|
local_14 = *pfVar4;
|
|
}
|
|
}
|
|
}
|
|
local_10 = local_14;
|
|
if (in_PF) {
|
|
if (in_PF) {
|
|
fVar2 = *(float *)(iVar7 + 0x10);
|
|
}
|
|
else {
|
|
fVar2 = *(float *)(iVar7 + 0x20);
|
|
}
|
|
if ((ushort)((ushort)(fVar2 < *(float *)(iVar7 + 0x18)) << 8 |
|
|
(ushort)(fVar2 == *(float *)(iVar7 + 0x18)) << 0xe) == 0) {
|
|
local_10 = *(float *)(iVar7 + 0x18);
|
|
}
|
|
else {
|
|
if (in_PF) {
|
|
local_10 = *(float *)(iVar7 + 0x10);
|
|
}
|
|
else {
|
|
local_10 = *(float *)(iVar7 + 0x20);
|
|
}
|
|
}
|
|
}
|
|
if (in_PF) {
|
|
if ((ushort)((ushort)(*pfVar4 < *pfVar1) << 8 | (ushort)(*pfVar4 == *pfVar1) << 0xe) == 0) {
|
|
fVar2 = *pfVar4;
|
|
}
|
|
else {
|
|
fVar2 = *pfVar1;
|
|
}
|
|
}
|
|
else {
|
|
fVar2 = *local_2c;
|
|
}
|
|
local_c = local_14;
|
|
if ((ushort)((ushort)(local_14 < fVar2) << 8 | (ushort)(local_14 == fVar2) << 0xe) != 0) {
|
|
if (in_PF) {
|
|
if ((ushort)((ushort)(*pfVar4 < *pfVar1) << 8 | (ushort)(*pfVar4 == *pfVar1) << 0xe) == 0)
|
|
{
|
|
local_c = *pfVar4;
|
|
}
|
|
else {
|
|
local_c = *pfVar1;
|
|
}
|
|
}
|
|
else {
|
|
local_c = *local_2c;
|
|
}
|
|
}
|
|
if (in_PF) {
|
|
if ((ushort)((ushort)(*(float *)(iVar7 + 0x20) < *(float *)(iVar7 + 0x10)) << 8 |
|
|
(ushort)(*(float *)(iVar7 + 0x20) == *(float *)(iVar7 + 0x10)) << 0xe) == 0) {
|
|
fVar2 = *(float *)(iVar7 + 0x20);
|
|
}
|
|
else {
|
|
fVar2 = *(float *)(iVar7 + 0x10);
|
|
}
|
|
}
|
|
else {
|
|
fVar2 = *(float *)(iVar7 + 0x18);
|
|
}
|
|
local_8 = local_14;
|
|
if ((ushort)((ushort)(local_14 < fVar2) << 8 | (ushort)(local_14 == fVar2) << 0xe) != 0) {
|
|
if (in_PF) {
|
|
if ((ushort)((ushort)(*(float *)(iVar7 + 0x20) < *(float *)(iVar7 + 0x10)) << 8 |
|
|
(ushort)(*(float *)(iVar7 + 0x20) == *(float *)(iVar7 + 0x10)) << 0xe) == 0) {
|
|
local_8 = *(float *)(iVar7 + 0x20);
|
|
}
|
|
else {
|
|
local_8 = *(float *)(iVar7 + 0x10);
|
|
}
|
|
}
|
|
else {
|
|
local_8 = *(float *)(iVar7 + 0x18);
|
|
}
|
|
}
|
|
if ((pfVar1 == param_1) && (local_2c == local_28)) {
|
|
if (local_30 == 0) {
|
|
LAB_0101a09f:
|
|
param_2 = (int *)0x0;
|
|
}
|
|
else {
|
|
param_2 = *(int **)((int)puParm1 + 0x8a);
|
|
}
|
|
}
|
|
else {
|
|
param_2 = (int *)local_54;
|
|
if ((pfVar1 == local_24) && (param_2 = (int *)local_54, local_2c == local_18)) {
|
|
if (local_34 == 0) goto LAB_0101a09f;
|
|
param_2 = *(int **)((int)puParm1 + 0x8e);
|
|
}
|
|
}
|
|
if (param_2 != (int *)0x0) {
|
|
this = operator_new(0x55);
|
|
if (this == (void *)0x0) {
|
|
param_2 = (int *)0x0;
|
|
}
|
|
else {
|
|
param_2 = FUN_0101c77e(this,puParm1,(int)puParm1 + 5,param_2,pfVar1,local_2c);
|
|
}
|
|
FUN_0100acf3((void *)((int)puParm1 + 0x2a),(int)param_2);
|
|
if (param_2 != (int *)0x0) {
|
|
*(int *)((int)param_2 + 0xd) = *(int *)((int)puParm1 + 0x7a) + local_1c;
|
|
(**(code **)(*param_2 + 8))();
|
|
}
|
|
}
|
|
if ((local_2c == param_1) && (pfVar4 == local_28)) {
|
|
if (local_30 == 0) {
|
|
LAB_0101a12e:
|
|
param_2 = (int *)0x0;
|
|
}
|
|
else {
|
|
param_2 = *(int **)((int)puParm1 + 0x8a);
|
|
}
|
|
}
|
|
else {
|
|
param_2 = (int *)local_54;
|
|
if ((local_2c == local_24) && (param_2 = (int *)local_54, pfVar4 == local_18)) {
|
|
if (local_34 == 0) goto LAB_0101a12e;
|
|
param_2 = *(int **)((int)puParm1 + 0x8e);
|
|
}
|
|
}
|
|
if (param_2 != (int *)0x0) {
|
|
this = operator_new(0x55);
|
|
if (this == (void *)0x0) {
|
|
param_2 = (int *)0x0;
|
|
}
|
|
else {
|
|
param_2 = FUN_0101c77e(this,puParm1,(int)puParm1 + 5,param_2,local_2c,pfVar4);
|
|
}
|
|
FUN_0100acf3((void *)((int)puParm1 + 0x2a),(int)param_2);
|
|
if (param_2 != (int *)0x0) {
|
|
*(int *)((int)param_2 + 0xd) = *(int *)((int)puParm1 + 0x7a) + local_1c;
|
|
(**(code **)(*param_2 + 8))();
|
|
}
|
|
}
|
|
if ((pfVar4 == param_1) && (pfVar1 == local_28)) {
|
|
if (local_30 == 0) {
|
|
LAB_0101a1ba:
|
|
param_2 = (int *)0x0;
|
|
}
|
|
else {
|
|
param_2 = *(int **)((int)puParm1 + 0x8a);
|
|
}
|
|
}
|
|
else {
|
|
param_2 = (int *)local_54;
|
|
if ((pfVar4 == local_24) && (param_2 = (int *)local_54, pfVar1 == local_18)) {
|
|
if (local_34 == 0) goto LAB_0101a1ba;
|
|
param_2 = *(int **)((int)puParm1 + 0x8e);
|
|
}
|
|
}
|
|
if (param_2 != (int *)0x0) {
|
|
this = operator_new(0x55);
|
|
if (this == (void *)0x0) {
|
|
piVar6 = (int *)0x0;
|
|
}
|
|
else {
|
|
piVar6 = FUN_0101c77e(this,puParm1,(int)puParm1 + 5,param_2,pfVar4,pfVar1);
|
|
}
|
|
FUN_0100acf3((void *)((int)puParm1 + 0x2a),(int)piVar6);
|
|
if (piVar6 != (int *)0x0) {
|
|
*(int *)((int)piVar6 + 0xd) = *(int *)((int)puParm1 + 0x7a) + local_1c;
|
|
(**(code **)(*piVar6 + 8))();
|
|
}
|
|
}
|
|
iVar7 = *(int *)((int)puParm1 + 0x7a) + local_1c;
|
|
fVar8 = (float10)fcos((float10)*(float *)(iVar7 + 0x28));
|
|
fVar9 = (float10)fsin((float10)*(float *)(iVar7 + 0x24));
|
|
*(float *)(iVar7 + 0x2c) =
|
|
(float)(fVar9 * fVar8 * (float10)*(float *)(*(int *)((int)puParm1 + 0x1e) + 0x10e));
|
|
iVar7 = *(int *)((int)puParm1 + 0x7a) + local_1c;
|
|
fVar8 = (float10)fsin((float10)*(float *)(iVar7 + 0x28));
|
|
local_20 = local_20 + 1;
|
|
fVar9 = (float10)fsin((float10)*(float *)(iVar7 + 0x24));
|
|
*(float *)(iVar7 + 0x30) =
|
|
(float)(fVar9 * fVar8 * (float10)*(float *)(*(int *)((int)puParm1 + 0x1e) + 0x10e));
|
|
} while (local_20 < *(int *)((int)puParm1 + 0x72));
|
|
}
|
|
*(int *)((int)puParm1 + 0x5e) = (int)puParm1 + 5;
|
|
*(undefined4 **)((int)puParm1 + 0x66) = puParm1;
|
|
*(int *)((int)puParm1 + 0x62) = local_54;
|
|
FUN_0100be21(local_10,local_14,local_8,local_c,0,(int *)((int)puParm1 + 0x5e));
|
|
return puParm1;
|
|
}
|
|
|
|
|
|
|
|
undefined4 * __thiscall FUN_0101a2b5(void *this,int param_1,int param_2)
|
|
|
|
{
|
|
float *pfVar1;
|
|
undefined4 uVar2;
|
|
undefined local_4c [52];
|
|
undefined4 local_18;
|
|
|
|
FUN_010190b3(this,param_1,param_2,0);
|
|
*(undefined4 *)this = 0x10026e8;
|
|
*(undefined4 *)((int)this + 0x72) = 0;
|
|
*(undefined4 *)((int)this + 0x6e) = 0;
|
|
*(undefined4 *)((int)this + 0x66) = 0;
|
|
*(undefined4 *)((int)this + 0x6a) = 0;
|
|
*(undefined4 *)((int)this + 6) = 0;
|
|
*(undefined *)((int)this + 4) = 0;
|
|
*(undefined *)((int)this + 5) = 0;
|
|
*(undefined4 *)((int)this + 0x62) = 0;
|
|
*(undefined4 *)((int)this + 0x5e) = 0;
|
|
*(void **)(param_1 + 0xe6) = this;
|
|
pfVar1 = FUN_0100978e(param_2,0,0x197);
|
|
if (pfVar1 == (float *)0x0) {
|
|
*(undefined4 *)((int)this + 0x4e) = 0x3e4ccccd;
|
|
*(undefined4 *)((int)this + 0x52) = 0x3dcccccd;
|
|
*(undefined4 *)((int)this + 0x56) = 0x3e4ccccd;
|
|
*(undefined4 *)((int)this + 0x5a) = 0x3dcccccd;
|
|
}
|
|
else {
|
|
*(float *)((int)this + 0x4e) = *pfVar1;
|
|
*(float *)((int)this + 0x52) = pfVar1[1];
|
|
*(float *)((int)this + 0x56) = pfVar1[2];
|
|
*(float *)((int)this + 0x5a) = pfVar1[3];
|
|
}
|
|
FUN_0100950a(param_2,0,local_4c);
|
|
pfVar1 = FUN_0100978e(param_2,0,0x578);
|
|
uVar2 = FUN_010179a9(pfVar1,this,(int)this + 5,local_18,0,0x578);
|
|
*(undefined4 *)((int)this + 0x76) = uVar2;
|
|
pfVar1 = FUN_0100978e(param_2,0,0x579);
|
|
FUN_010179a9(pfVar1,this,(int)this + 5,local_18,0,0x579);
|
|
pfVar1 = FUN_0100978e(param_2,0,0x57a);
|
|
uVar2 = FUN_010179a9(pfVar1,this,(int)this + 5,local_18,0,0x57a);
|
|
*(undefined4 *)((int)this + 0x7a) = uVar2;
|
|
pfVar1 = FUN_0100978e(param_2,0,0x57b);
|
|
FUN_010179a9(pfVar1,this,(int)this + 5,local_18,0,0x57b);
|
|
pfVar1 = FUN_0100978e(param_2,0,0x57c);
|
|
uVar2 = FUN_010179a9(pfVar1,this,(int)this + 5,local_18,*(undefined4 *)(param_1 + 0x11a),0x57c);
|
|
*(undefined4 *)((int)this + 0x7e) = uVar2;
|
|
return (undefined4 *)this;
|
|
}
|
|
|
|
|
|
|
|
undefined4 * __thiscall FUN_0101a416(void *this,int param_1,int param_2)
|
|
|
|
{
|
|
float *pfVar1;
|
|
undefined local_4c [24];
|
|
undefined4 local_34;
|
|
float local_30;
|
|
undefined4 local_2c;
|
|
undefined4 uStack40;
|
|
undefined4 uStack36;
|
|
undefined4 local_20;
|
|
undefined4 local_14;
|
|
undefined4 local_10;
|
|
|
|
FUN_010190b3(this,param_1,param_2,1);
|
|
*(undefined4 *)this = 0x1002704;
|
|
*(undefined4 *)((int)this + 6) = 0;
|
|
*(undefined4 *)((int)this + 0x4e) = 0;
|
|
FUN_0100950a(param_2,0,local_4c);
|
|
*(float *)((int)this + 0x76) = local_30 * 0.01000000;
|
|
*(undefined4 *)((int)this + 0x62) = local_2c;
|
|
*(undefined4 *)((int)this + 0x6e) = local_20;
|
|
*(undefined4 *)((int)this + 0x72) = local_34;
|
|
*(undefined4 *)((int)this + 0x66) = uStack40;
|
|
*(undefined4 *)((int)this + 0x7a) = local_14;
|
|
*(undefined4 *)((int)this + 0x6a) = uStack36;
|
|
*(undefined4 *)((int)this + 0x7e) = local_10;
|
|
pfVar1 = FUN_0100978e(param_2,0,0x259);
|
|
*(float *)((int)this + 0x56) = *pfVar1;
|
|
*(float *)((int)this + 0x5a) = pfVar1[1];
|
|
pfVar1 = FUN_0100978e(param_2,0,0x197);
|
|
*(float *)((int)this + 0x52) = *pfVar1;
|
|
return (undefined4 *)this;
|
|
}
|
|
|
|
|
|
|
|
undefined4 * __thiscall FUN_0101a4b4(void *this,int param_1,int param_2)
|
|
|
|
{
|
|
float *pfVar1;
|
|
|
|
FUN_010190b3(this,param_1,param_2,1);
|
|
*(undefined4 *)((int)this + 0x56) = 0;
|
|
*(undefined4 *)this = 0x1002720;
|
|
pfVar1 = FUN_0100978e(param_2,0,0x197);
|
|
*(float *)((int)this + 0x4e) = *pfVar1;
|
|
return (undefined4 *)this;
|
|
}
|
|
|
|
|
|
|
|
undefined4 * __thiscall FUN_0101a4f3(void *this,int param_1,int param_2)
|
|
|
|
{
|
|
undefined4 uVar1;
|
|
float *pfVar2;
|
|
undefined local_4c [48];
|
|
undefined4 local_1c;
|
|
undefined4 local_14;
|
|
undefined4 local_10;
|
|
|
|
FUN_010190b3(this,param_1,param_2,1);
|
|
*(undefined4 *)this = 0x1002750;
|
|
FUN_0100950a(param_2,0,local_4c);
|
|
*(undefined4 *)((int)this + 0x3e) = 0;
|
|
*(undefined4 *)((int)this + 0x52) = 0;
|
|
*(undefined4 *)((int)this + 0x4e) = 0;
|
|
*(undefined4 *)((int)this + 0x62) = local_14;
|
|
*(undefined4 *)((int)this + 0x66) = local_10;
|
|
*(undefined4 *)((int)this + 0x4a) = local_1c;
|
|
*(undefined4 *)((int)this + 0x42) = 0x4e6e6b28;
|
|
*(undefined4 *)((int)this + 0x56) = 100;
|
|
uVar1 = _ftol();
|
|
*(undefined4 *)((int)this + 0x36) = 0x3f000000;
|
|
*(undefined4 *)((int)this + 0x3a) = 0x3f000000;
|
|
*(undefined4 *)((int)this + 0x5a) = uVar1;
|
|
*(undefined4 *)((int)this + 0x5e) = 0x3ccccccd;
|
|
pfVar2 = FUN_0100978e(param_2,0,0x259);
|
|
*(float *)(param_1 + 0x11e) = *pfVar2;
|
|
*(float *)(param_1 + 0x122) = pfVar2[1];
|
|
return (undefined4 *)this;
|
|
}
|
|
|
|
|
|
|
|
undefined4 * __thiscall FUN_0101a5ab(undefined4 *puParm1,float *param_1)
|
|
|
|
{
|
|
float fVar1;
|
|
int iVar2;
|
|
int iVar3;
|
|
float *pfVar4;
|
|
void *this;
|
|
int *piVar5;
|
|
bool in_PF;
|
|
float10 fVar6;
|
|
float10 fVar7;
|
|
undefined local_60 [8];
|
|
int local_58;
|
|
float *local_54;
|
|
undefined4 local_4c;
|
|
undefined4 local_30;
|
|
undefined4 local_2c;
|
|
undefined4 local_28;
|
|
undefined4 local_24;
|
|
int local_20;
|
|
int local_1c;
|
|
int local_18;
|
|
undefined4 local_14;
|
|
undefined4 local_10;
|
|
undefined4 local_c;
|
|
int local_8;
|
|
|
|
FUN_010190b3(puParm1,(int)param_1,-1,0);
|
|
*puParm1 = 0x100276c;
|
|
iVar3 = FUN_010091eb("table");
|
|
FUN_0100950a(iVar3,0,local_60);
|
|
pfVar4 = FUN_0100978e(iVar3,0,700);
|
|
FUN_01008eba(*pfVar4,pfVar4[1]);
|
|
FUN_0101394e(local_1c,0,0);
|
|
*(int *)((int)puParm1 + 0x4e) = local_20;
|
|
local_18 = 0;
|
|
local_14 = 0;
|
|
local_10 = *(undefined4 *)(local_20 + 0xc);
|
|
local_c = *(undefined4 *)(local_20 + 0x10);
|
|
FUN_0101385c(0,local_20,local_1c,0,0,&local_18);
|
|
*(undefined4 *)(*(int *)((int)puParm1 + 0x1e) + 0x42) = local_28;
|
|
*(undefined4 *)(*(int *)((int)puParm1 + 0x1e) + 0x46) = local_24;
|
|
*(undefined4 *)(*(int *)((int)puParm1 + 0x1e) + 0x4a) = local_30;
|
|
pfVar4 = FUN_0100978e(iVar3,0,0x131);
|
|
if (pfVar4 == (float *)0x0) {
|
|
*(undefined4 *)(*(int *)((int)puParm1 + 0x1e) + 0x10e) = 0x41c80000;
|
|
*(undefined4 *)(*(int *)((int)puParm1 + 0x1e) + 0x112) = 0x3f000000;
|
|
*(undefined4 *)(*(int *)((int)puParm1 + 0x1e) + 0x116) = 0x3fc90fd8;
|
|
}
|
|
else {
|
|
*(float *)(*(int *)((int)puParm1 + 0x1e) + 0x10e) = *pfVar4;
|
|
*(float *)(*(int *)((int)puParm1 + 0x1e) + 0x112) = pfVar4[1];
|
|
*(float *)(*(int *)((int)puParm1 + 0x1e) + 0x116) = pfVar4[2];
|
|
}
|
|
iVar2 = *(int *)((int)puParm1 + 0x1e);
|
|
fVar6 = (float10)fcos((float10)*(float *)(iVar2 + 0x116));
|
|
fVar7 = (float10)fsin((float10)*(float *)(iVar2 + 0x112));
|
|
*(float *)((int)puParm1 + 0x62) = (float)(fVar7 * fVar6 * (float10)*(float *)(iVar2 + 0x10e));
|
|
fVar6 = (float10)fsin((float10)*(float *)(iVar2 + 0x116));
|
|
fVar7 = (float10)fsin((float10)*(float *)(iVar2 + 0x112));
|
|
*(float *)((int)puParm1 + 0x66) = (float)(fVar7 * fVar6 * (float10)*(float *)(iVar2 + 0x10e));
|
|
pfVar4 = FUN_0100978e(iVar3,0,0x2bd);
|
|
if (pfVar4 == (float *)0x0) {
|
|
*(undefined4 *)((int)puParm1 + 0x6e) = 0x3e4ccccd;
|
|
}
|
|
else {
|
|
*(float *)((int)puParm1 + 0x6e) = *pfVar4;
|
|
}
|
|
*(undefined4 *)((int)param_1 + 0xea) = *(undefined4 *)(local_20 + 0x1d);
|
|
*(undefined4 *)((int)param_1 + 0xee) = *(undefined4 *)(local_20 + 0x21);
|
|
*(undefined4 *)((int)param_1 + 0xf2) = *(undefined4 *)(local_20 + 0xc);
|
|
*(undefined4 *)((int)param_1 + 0xf6) = *(undefined4 *)(local_20 + 0x10);
|
|
local_8 = local_58;
|
|
*(undefined4 *)((int)puParm1 + 0x42) = local_4c;
|
|
*(undefined4 *)((int)puParm1 + 0x3e) = 0x41700000;
|
|
param_1 = local_54;
|
|
if (in_PF) {
|
|
fVar1 = *local_54;
|
|
}
|
|
else {
|
|
if (in_PF) {
|
|
fVar1 = local_54[4];
|
|
}
|
|
else {
|
|
fVar1 = local_54[2];
|
|
}
|
|
}
|
|
*(float *)((int)puParm1 + 0x52) = fVar1;
|
|
if ((ushort)((ushort)(local_54[2] < local_54[4]) << 8 |
|
|
(ushort)(local_54[2] == local_54[4]) << 0xe) == 0) {
|
|
fVar1 = local_54[2];
|
|
}
|
|
else {
|
|
fVar1 = local_54[4];
|
|
}
|
|
if ((ushort)((ushort)(fVar1 < *local_54) << 8 | (ushort)(fVar1 == *local_54) << 0xe) == 0) {
|
|
if ((ushort)((ushort)(local_54[2] < local_54[4]) << 8 |
|
|
(ushort)(local_54[2] == local_54[4]) << 0xe) == 0) {
|
|
fVar1 = local_54[2];
|
|
}
|
|
else {
|
|
fVar1 = local_54[4];
|
|
}
|
|
}
|
|
else {
|
|
fVar1 = *local_54;
|
|
}
|
|
*(float *)((int)puParm1 + 0x5a) = fVar1;
|
|
if (in_PF) {
|
|
fVar1 = local_54[1];
|
|
}
|
|
else {
|
|
if (in_PF) {
|
|
fVar1 = local_54[5];
|
|
}
|
|
else {
|
|
fVar1 = local_54[3];
|
|
}
|
|
}
|
|
*(float *)((int)puParm1 + 0x56) = fVar1;
|
|
if ((ushort)((ushort)(local_54[3] < local_54[5]) << 8 |
|
|
(ushort)(local_54[3] == local_54[5]) << 0xe) == 0) {
|
|
fVar1 = local_54[3];
|
|
}
|
|
else {
|
|
fVar1 = local_54[5];
|
|
}
|
|
if ((ushort)((ushort)(fVar1 < local_54[1]) << 8 | (ushort)(fVar1 == local_54[1]) << 0xe) == 0) {
|
|
if ((ushort)((ushort)(local_54[3] < local_54[5]) << 8 |
|
|
(ushort)(local_54[3] == local_54[5]) << 0xe) == 0) {
|
|
fVar1 = local_54[3];
|
|
}
|
|
else {
|
|
fVar1 = local_54[5];
|
|
}
|
|
}
|
|
else {
|
|
fVar1 = local_54[1];
|
|
}
|
|
*(float *)((int)puParm1 + 0x5e) = fVar1;
|
|
this = operator_new(0xfc4);
|
|
if (this == (void *)0x0) {
|
|
DAT_0102503c = (float *)0x0;
|
|
}
|
|
else {
|
|
DAT_0102503c = FUN_0100b883(this,*(float *)((int)puParm1 + 0x52),*(float *)((int)puParm1 + 0x56)
|
|
,*(float *)((int)puParm1 + 0x5a) - *(float *)((int)puParm1 + 0x52),
|
|
*(float *)((int)puParm1 + 0x5e) - *(float *)((int)puParm1 + 0x56));
|
|
}
|
|
if (0 < local_8) {
|
|
do {
|
|
this = operator_new(0x55);
|
|
if (this == (void *)0x0) {
|
|
piVar5 = (int *)0x0;
|
|
}
|
|
else {
|
|
piVar5 = FUN_0101c6fd(this,puParm1,(int)puParm1 + 5,local_2c,param_1[2],param_1[3],*param_1,
|
|
param_1[1]);
|
|
}
|
|
if (piVar5 != (int *)0x0) {
|
|
(**(code **)(*piVar5 + 8))();
|
|
FUN_0100acf3((void *)((int)puParm1 + 0x2a),(int)piVar5);
|
|
}
|
|
param_1 = param_1 + 2;
|
|
local_8 = local_8 + -1;
|
|
} while (local_8 != 0);
|
|
}
|
|
*(undefined4 *)((int)puParm1 + 0x76) = 0xffffffff;
|
|
*(int *)((int)puParm1 + 0x72) = (int)puParm1 + 5;
|
|
*(undefined4 **)((int)puParm1 + 0x7a) = puParm1;
|
|
FUN_0100be21(*(undefined4 *)((int)puParm1 + 0x56),*(undefined4 *)((int)puParm1 + 0x52),
|
|
*(undefined4 *)((int)puParm1 + 0x5e),*(undefined4 *)((int)puParm1 + 0x5a),0,
|
|
(int *)((int)puParm1 + 0x72));
|
|
return puParm1;
|
|
}
|
|
|
|
|
|
|
|
void __fastcall FUN_0101a928(undefined4 *param_1)
|
|
|
|
{
|
|
*param_1 = 0x100276c;
|
|
if (DAT_0102503c != (void *)0x0) {
|
|
FUN_01017441(DAT_0102503c,1);
|
|
}
|
|
FUN_01019172(param_1);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void __fastcall FUN_0101a951(undefined4 *param_1)
|
|
|
|
{
|
|
int *piVar1;
|
|
int local_8;
|
|
|
|
*param_1 = 0x1002790;
|
|
piVar1 = (int *)((int)param_1 + 0x66);
|
|
local_8 = 4;
|
|
do {
|
|
if (*piVar1 != 0) {
|
|
FUN_01013c6f(*piVar1);
|
|
*piVar1 = 0;
|
|
}
|
|
piVar1 = piVar1 + 7;
|
|
local_8 = local_8 + -1;
|
|
} while (local_8 != 0);
|
|
if (*(int *)((int)param_1 + 0x3a) != 0) {
|
|
FUN_01013c6f(*(int *)((int)param_1 + 0x3a));
|
|
*(undefined4 *)((int)param_1 + 0x3a) = 0;
|
|
}
|
|
if (*(int *)((int)param_1 + 0x36) != 0) {
|
|
FUN_01013c6f(*(int *)((int)param_1 + 0x36));
|
|
*(undefined4 *)((int)param_1 + 0x36) = 0;
|
|
}
|
|
piVar1 = *(int **)((int)param_1 + 0x10a);
|
|
while( true ) {
|
|
if (piVar1 != (int *)0x0) {
|
|
(**(code **)(*piVar1 + 0x10))(1);
|
|
}
|
|
if (*(int *)(*(int *)((int)param_1 + 0xfe) + 4) == 0) break;
|
|
piVar1 = *(int **)(*(int *)((int)param_1 + 0xfe) + 8);
|
|
}
|
|
FUN_01013c6f(*(int *)((int)param_1 + 0x106));
|
|
FUN_01013c6f(*(int *)((int)param_1 + 0xfe));
|
|
FUN_01018fbc(param_1);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
undefined4 * __thiscall FUN_0101a9f2(void *this,byte param_1)
|
|
|
|
{
|
|
FUN_0101a951((undefined4 *)this);
|
|
if ((param_1 & 1) != 0) {
|
|
operator_delete(this);
|
|
}
|
|
return (undefined4 *)this;
|
|
}
|
|
|
|
|
|
|
|
undefined4 * __thiscall FUN_0101aa18(void *this,int param_1,int param_2)
|
|
|
|
{
|
|
undefined local_4c [56];
|
|
undefined4 local_14;
|
|
|
|
FUN_01017c6d(this,param_1,param_2,1);
|
|
*(undefined4 *)this = 0x10027a4;
|
|
FUN_0100950a(param_2,0,local_4c);
|
|
*(undefined4 *)((int)this + 0x2a) = local_14;
|
|
return (undefined4 *)this;
|
|
}
|
|
|
|
|
|
|
|
undefined4 * __thiscall FUN_0101aa56(void *this,int param_1,int param_2)
|
|
|
|
{
|
|
FUN_01017c6d(this,param_1,param_2,1);
|
|
*(undefined4 *)((int)this + 0x2a) = 0;
|
|
*(undefined4 *)this = 0x10027bc;
|
|
return (undefined4 *)this;
|
|
}
|
|
|
|
|
|
|
|
undefined4 * __thiscall FUN_0101aa81(void *this,byte param_1)
|
|
|
|
{
|
|
FUN_01019082((undefined4 *)this);
|
|
if ((param_1 & 1) != 0) {
|
|
operator_delete(this);
|
|
}
|
|
return (undefined4 *)this;
|
|
}
|
|
|
|
|
|
|
|
undefined4 * __thiscall FUN_0101aaa7(void *this,byte param_1)
|
|
|
|
{
|
|
FUN_01019172((undefined4 *)this);
|
|
if ((param_1 & 1) != 0) {
|
|
operator_delete(this);
|
|
}
|
|
return (undefined4 *)this;
|
|
}
|
|
|
|
|
|
|
|
undefined4 * __thiscall FUN_0101aacd(void *this,byte param_1)
|
|
|
|
{
|
|
FUN_0101a928((undefined4 *)this);
|
|
if ((param_1 & 1) != 0) {
|
|
operator_delete(this);
|
|
}
|
|
return (undefined4 *)this;
|
|
}
|
|
|
|
|
|
|
|
undefined4 * __fastcall FUN_0101aaf3(undefined4 *param_1)
|
|
|
|
{
|
|
short sVar1;
|
|
void *this;
|
|
int iVar2;
|
|
int *piVar3;
|
|
undefined4 uVar4;
|
|
short *psVar5;
|
|
undefined4 *puVar6;
|
|
int iVar7;
|
|
undefined4 **ppuVar8;
|
|
undefined4 *local_c;
|
|
undefined4 *local_8;
|
|
|
|
puVar6 = (undefined4 *)0x0;
|
|
local_c = param_1;
|
|
local_8 = param_1;
|
|
FUN_01017c6d(param_1,0,-1,0);
|
|
*param_1 = 0x1002790;
|
|
FUN_010098d3((void *)((int)param_1 + 0xfa),0x20,0x10);
|
|
FUN_010098d3((void *)((int)param_1 + 0x102),3,1);
|
|
*(undefined4 *)((int)param_1 + 0x32) = 0;
|
|
*(undefined4 *)((int)param_1 + 0x36) = 0;
|
|
*(undefined4 *)((int)param_1 + 0x3a) = 0;
|
|
*(undefined4 *)((int)param_1 + 0x4e) = 0;
|
|
*(undefined *)((int)param_1 + 5) = 1;
|
|
*(undefined4 *)((int)param_1 + 0x172) = 0;
|
|
*(undefined4 *)((int)param_1 + 0x5e) = 0;
|
|
*(undefined4 *)((int)param_1 + 0x5a) = 0;
|
|
*(undefined4 *)((int)param_1 + 0x166) = 0;
|
|
*(undefined4 *)((int)param_1 + 0x62) = 0;
|
|
*(undefined4 *)((int)param_1 + 0x15a) = 0;
|
|
this = (void *)FUN_010145f5(0x16a);
|
|
if (this != (void *)0x0) {
|
|
puVar6 = FUN_01019309(this,(int)param_1);
|
|
}
|
|
FUN_0100acf3((void *)((int)param_1 + 0x102),(int)puVar6);
|
|
if (puVar6 != (undefined4 *)0x0) {
|
|
*(undefined *)((int)puVar6 + 5) = 0;
|
|
}
|
|
iVar2 = FUN_010145f5(0x7e);
|
|
if (iVar2 != 0) {
|
|
FUN_0101a5ab(param_1);
|
|
}
|
|
this = (void *)FUN_010145f5(0x8a);
|
|
if (this == (void *)0x0) {
|
|
puVar6 = (undefined4 *)0x0;
|
|
}
|
|
else {
|
|
puVar6 = FUN_0100adb1(this,param_1,0);
|
|
}
|
|
*(undefined4 **)((int)param_1 + 0x10a) = puVar6;
|
|
piVar3 = FUN_01013bb3("score1",DAT_010253b4);
|
|
*(int **)((int)param_1 + 0x32) = piVar3;
|
|
*(int **)((int)param_1 + 0x66) = piVar3;
|
|
iVar2 = 1;
|
|
puVar6 = (undefined4 *)((int)param_1 + 0x82);
|
|
do {
|
|
uVar4 = FUN_01013c48(*(int **)((int)param_1 + 0x32));
|
|
*puVar6 = uVar4;
|
|
iVar2 = iVar2 + 1;
|
|
puVar6 = puVar6 + 7;
|
|
} while (iVar2 < 4);
|
|
*(undefined4 *)((int)param_1 + 0xda) = 0;
|
|
*(undefined4 *)((int)param_1 + 0x14a) = 3;
|
|
piVar3 = FUN_01013bb3("ballcount1",DAT_010253b4);
|
|
*(int **)((int)param_1 + 0x36) = piVar3;
|
|
piVar3 = FUN_01013bb3("player_number1",DAT_010253b4);
|
|
*(int **)((int)param_1 + 0x3a) = piVar3;
|
|
ppuVar8 = &local_c;
|
|
iVar7 = 0x401;
|
|
iVar2 = FUN_010091eb("table_objects");
|
|
psVar5 = FUN_0100981a(iVar2,iVar7,(int *)ppuVar8);
|
|
if ((0 < (int)local_c) && (local_8 = (undefined4 *)0x0, 0 < (int)local_c / 2)) {
|
|
do {
|
|
sVar1 = *psVar5;
|
|
iVar2 = (int)psVar5[1];
|
|
psVar5 = psVar5 + 2;
|
|
switch(sVar1) {
|
|
case 1000:
|
|
case 0x3f2:
|
|
this = (void *)FUN_010145f5(0x5a);
|
|
if (this != (void *)0x0) {
|
|
FUN_010191ba(this,(int)param_1,iVar2);
|
|
}
|
|
break;
|
|
case 0x3e9:
|
|
this = (void *)FUN_010145f5(0x6a);
|
|
if (this == (void *)0x0) {
|
|
puVar6 = (undefined4 *)0x0;
|
|
}
|
|
else {
|
|
puVar6 = FUN_0101a4f3(this,(int)param_1,iVar2);
|
|
}
|
|
*(undefined4 **)((int)param_1 + 0xde) = puVar6;
|
|
break;
|
|
case 0x3ea:
|
|
this = (void *)FUN_010145f5(0xde);
|
|
if (this == (void *)0x0) {
|
|
puVar6 = (undefined4 *)0x0;
|
|
}
|
|
else {
|
|
puVar6 = FUN_0100ad21(this,(int)param_1,iVar2);
|
|
}
|
|
FUN_0100acf3((void *)(*(int *)((int)param_1 + 0x10a) + 0x2a),(int)puVar6);
|
|
break;
|
|
case 0x3eb:
|
|
this = (void *)FUN_010145f5(0x6a);
|
|
if (this == (void *)0x0) {
|
|
puVar6 = (undefined4 *)0x0;
|
|
}
|
|
else {
|
|
puVar6 = FUN_0101c59d(this,(int)param_1,iVar2);
|
|
}
|
|
*(undefined4 **)((int)param_1 + 0x2a) = puVar6;
|
|
break;
|
|
case 0x3ec:
|
|
this = (void *)FUN_010145f5(0x6a);
|
|
if (this == (void *)0x0) {
|
|
puVar6 = (undefined4 *)0x0;
|
|
}
|
|
else {
|
|
puVar6 = FUN_0101c59d(this,(int)param_1,iVar2);
|
|
}
|
|
*(undefined4 **)((int)param_1 + 0x2e) = puVar6;
|
|
break;
|
|
case 0x3ed:
|
|
this = (void *)FUN_010145f5(0x96);
|
|
if (this != (void *)0x0) {
|
|
FUN_0101944a(this,(int)param_1,iVar2);
|
|
}
|
|
break;
|
|
case 0x3ee:
|
|
this = (void *)FUN_010145f5(0x72);
|
|
if (this != (void *)0x0) {
|
|
FUN_010195e0(this,(int)param_1,iVar2);
|
|
}
|
|
break;
|
|
case 0x3ef:
|
|
this = (void *)FUN_010145f5(0x5a);
|
|
if (this == (void *)0x0) {
|
|
puVar6 = (undefined4 *)0x0;
|
|
}
|
|
else {
|
|
puVar6 = FUN_0101a4b4(this,(int)param_1,iVar2);
|
|
}
|
|
*(undefined4 **)((int)param_1 + 0xe2) = puVar6;
|
|
break;
|
|
case 0x3f3:
|
|
this = (void *)FUN_010145f5(0x72);
|
|
if (this != (void *)0x0) {
|
|
FUN_01019677(this,(int)param_1,iVar2);
|
|
}
|
|
break;
|
|
case 0x3f4:
|
|
iVar7 = FUN_010145f5(0xea);
|
|
if (iVar7 != 0) {
|
|
uVar4 = 1;
|
|
LAB_0101af16:
|
|
FUN_01019884(param_1,iVar2,uVar4);
|
|
}
|
|
break;
|
|
case 0x3f5:
|
|
this = (void *)FUN_010145f5(0x66);
|
|
if (this != (void *)0x0) {
|
|
FUN_010196e5(this,(int)param_1,iVar2);
|
|
}
|
|
break;
|
|
case 0x3f6:
|
|
this = (void *)FUN_010145f5(0x5e);
|
|
if (this != (void *)0x0) {
|
|
FUN_0101983d(this,(int)param_1,iVar2);
|
|
}
|
|
break;
|
|
case 0x3f7:
|
|
this = (void *)FUN_010145f5(0x57);
|
|
if (this != (void *)0x0) {
|
|
FUN_01019771(this,(int)param_1,iVar2);
|
|
}
|
|
break;
|
|
case 0x3f8:
|
|
this = (void *)FUN_010145f5(0x6e);
|
|
if (this != (void *)0x0) {
|
|
FUN_01019204(this,(int)param_1,iVar2);
|
|
}
|
|
break;
|
|
case 0x3f9:
|
|
this = (void *)FUN_010145f5(0x9e);
|
|
if (this != (void *)0x0) {
|
|
FUN_0101a416(this,(int)param_1,iVar2);
|
|
}
|
|
break;
|
|
case 0x3fa:
|
|
this = (void *)FUN_010145f5(0x76);
|
|
if (this != (void *)0x0) {
|
|
FUN_010194b0(this,(int)param_1,iVar2);
|
|
}
|
|
break;
|
|
case 0x3fb:
|
|
this = (void *)FUN_010145f5(0x62);
|
|
if (this != (void *)0x0) {
|
|
FUN_0101961f(this,(int)param_1,iVar2);
|
|
}
|
|
break;
|
|
case 0x3fc:
|
|
this = (void *)FUN_010145f5(0x5f);
|
|
if (this != (void *)0x0) {
|
|
FUN_010197bb(this,(int)param_1,iVar2);
|
|
}
|
|
break;
|
|
case 0x3fd:
|
|
iVar7 = FUN_010145f5(0x9a);
|
|
if (iVar7 != 0) {
|
|
FUN_01019bb8(param_1,iVar2);
|
|
}
|
|
break;
|
|
case 0x3fe:
|
|
iVar7 = FUN_010145f5(0x8e);
|
|
if (iVar7 != 0) {
|
|
FUN_01019a1c(param_1,iVar2);
|
|
}
|
|
break;
|
|
case 0x3ff:
|
|
this = (void *)FUN_010145f5(0x82);
|
|
if (this != (void *)0x0) {
|
|
FUN_0101a2b5(this,(int)param_1,iVar2);
|
|
}
|
|
break;
|
|
case 0x400:
|
|
this = (void *)FUN_010145f5(0x57);
|
|
if (this != (void *)0x0) {
|
|
moneypunct__(this,(int)param_1,iVar2);
|
|
}
|
|
break;
|
|
case 0x402:
|
|
this = (void *)FUN_010145f5(0x8a);
|
|
if (this != (void *)0x0) {
|
|
FUN_0100adb1(this,param_1,iVar2);
|
|
}
|
|
break;
|
|
case 0x404:
|
|
this = (void *)FUN_010145f5(0x36);
|
|
if (this != (void *)0x0) {
|
|
FUN_01018ffd(this,param_1,iVar2);
|
|
}
|
|
break;
|
|
case 0x405:
|
|
iVar7 = FUN_010145f5(0xea);
|
|
if (iVar7 != 0) {
|
|
uVar4 = 0;
|
|
goto LAB_0101af16;
|
|
}
|
|
break;
|
|
case 0x406:
|
|
this = (void *)FUN_010145f5(0xa6);
|
|
if (this != (void *)0x0) {
|
|
FUN_0100ae72(this,param_1,iVar2);
|
|
}
|
|
break;
|
|
case 0x407:
|
|
this = (void *)FUN_010145f5(0x2e);
|
|
if (this != (void *)0x0) {
|
|
FUN_0101aa18(this,(int)param_1,iVar2);
|
|
}
|
|
break;
|
|
case 0x408:
|
|
this = (void *)FUN_010145f5(0x2e);
|
|
if (this != (void *)0x0) {
|
|
FUN_0101aa56(this,(int)param_1,iVar2);
|
|
}
|
|
break;
|
|
case 0x409:
|
|
this = (void *)FUN_010145f5(0x4e);
|
|
if (this != (void *)0x0) {
|
|
FUN_01014092(this,(int)param_1,iVar2);
|
|
}
|
|
}
|
|
local_8 = (undefined4 *)((int)local_8 + 1);
|
|
} while ((int)local_8 < (int)local_c / 2);
|
|
}
|
|
FUN_01012f2a();
|
|
DAT_01025650 = FUN_01017648(param_1,"info_text_box");
|
|
DAT_01025654 = FUN_01017648(param_1,"mission_text_box");
|
|
FUN_0100c01d((int)param_1);
|
|
return param_1;
|
|
}
|
|
|
|
|
|
|
|
void FUN_0101b0a4(undefined4 *param_1,undefined4 *param_2)
|
|
|
|
{
|
|
undefined4 uVar1;
|
|
undefined4 uVar2;
|
|
undefined4 uVar3;
|
|
|
|
uVar1 = *param_1;
|
|
uVar2 = param_1[1];
|
|
uVar3 = param_1[2];
|
|
*param_1 = *param_2;
|
|
param_1[1] = param_2[1];
|
|
param_1[2] = param_2[2];
|
|
*param_2 = uVar1;
|
|
param_2[1] = uVar2;
|
|
param_2[2] = uVar3;
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void __fastcall FUN_0101b0d4(int iParm1)
|
|
|
|
{
|
|
float fVar1;
|
|
float fVar2;
|
|
bool in_PF;
|
|
float local_10;
|
|
float local_c;
|
|
float local_8;
|
|
|
|
local_c = *(float *)(iParm1 + 0x21) - *(float *)(iParm1 + 0x2d);
|
|
local_10 = *(float *)(iParm1 + 0x25) - *(float *)(iParm1 + 0x2d);
|
|
local_8 = *(float *)(iParm1 + 0x2d) + *(float *)(iParm1 + 0x21);
|
|
fVar1 = *(float *)(iParm1 + 0x25) + *(float *)(iParm1 + 0x2d);
|
|
if (!in_PF) {
|
|
local_c = *(float *)(iParm1 + 0x99) - *(float *)(iParm1 + 0x31);
|
|
}
|
|
if (!in_PF) {
|
|
local_10 = *(float *)(iParm1 + 0x9d) - *(float *)(iParm1 + 0x31);
|
|
}
|
|
fVar2 = *(float *)(iParm1 + 0x31) + *(float *)(iParm1 + 0x99);
|
|
if ((ushort)((ushort)(fVar2 < local_8) << 8 | (ushort)(fVar2 == local_8) << 0xe) == 0) {
|
|
local_8 = fVar2;
|
|
}
|
|
fVar2 = *(float *)(iParm1 + 0x9d) + *(float *)(iParm1 + 0x31);
|
|
if ((ushort)((ushort)(fVar2 < fVar1) << 8 | (ushort)(fVar2 == fVar1) << 0xe) == 0) {
|
|
fVar1 = fVar2;
|
|
}
|
|
if (!in_PF) {
|
|
local_c = *(float *)(iParm1 + 0xa5) - *(float *)(iParm1 + 0x31);
|
|
}
|
|
if (!in_PF) {
|
|
local_10 = *(float *)(iParm1 + 0xa9) - *(float *)(iParm1 + 0x31);
|
|
}
|
|
fVar2 = *(float *)(iParm1 + 0xa5) + *(float *)(iParm1 + 0x31);
|
|
if ((ushort)((ushort)(fVar2 < local_8) << 8 | (ushort)(fVar2 == local_8) << 0xe) == 0) {
|
|
local_8 = fVar2;
|
|
}
|
|
fVar2 = *(float *)(iParm1 + 0x31) + *(float *)(iParm1 + 0xa9);
|
|
if ((ushort)((ushort)(fVar2 < fVar1) << 8 | (ushort)(fVar2 == fVar1) << 0xe) == 0) {
|
|
fVar1 = fVar2;
|
|
}
|
|
FUN_0100be21(local_10,local_c,fVar1,local_8,iParm1,0);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
float10 __thiscall FUN_0101b1f7(int iParm1,float param_1)
|
|
|
|
{
|
|
bool in_PF;
|
|
float10 fVar1;
|
|
|
|
if (*(int *)(iParm1 + 0x15) == 0) {
|
|
fVar1 = (float10)*(float *)(iParm1 + 0x4d);
|
|
}
|
|
else {
|
|
if (in_PF) {
|
|
fVar1 = ((float10)param_1 - (float10)*(float *)(iParm1 + 0xc9)) /
|
|
((((float10)*(float *)(iParm1 + 0x4d) - (float10)*(float *)(iParm1 + 0x49)) /
|
|
(float10)*(float *)(iParm1 + 0x45)) * (float10)*(float *)(iParm1 + 0xd1));
|
|
}
|
|
else {
|
|
fVar1 = (float10)0;
|
|
}
|
|
if ((ushort)((ushort)(fVar1 < (float10)1.00000000) << 8 |
|
|
(ushort)(fVar1 == (float10)1.00000000) << 0xe) == 0) {
|
|
fVar1 = (float10)1;
|
|
}
|
|
if (*(int *)(iParm1 + 0x15) == 2) {
|
|
fVar1 = (float10)1.00000000 - fVar1;
|
|
}
|
|
fVar1 = fVar1 * (float10)*(float *)(iParm1 + 0x45);
|
|
}
|
|
return fVar1;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
|
|
|
|
void __fastcall FUN_0101b281(int param_1)
|
|
|
|
{
|
|
FUN_01008beb(&DAT_01025680,DAT_01025714,DAT_01025718,DAT_010256b4,DAT_010256b8);
|
|
FUN_01008beb(&DAT_010256c0,DAT_010256f0,DAT_010256f4,DAT_010256fc,DAT_01025700);
|
|
_DAT_01025660 = *(undefined4 *)(param_1 + 0x21);
|
|
_DAT_01025664 = *(undefined4 *)(param_1 + 0x25);
|
|
_DAT_0102566c = *(undefined4 *)(param_1 + 0x35);
|
|
_DAT_01025670 = DAT_01025708;
|
|
_DAT_01025674 = DAT_0102570c;
|
|
_DAT_0102567c = *(undefined4 *)(param_1 + 0x39);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
|
|
|
|
void __thiscall FUN_0101b327(void *this,undefined4 param_1)
|
|
|
|
{
|
|
float10 fVar1;
|
|
float *local_18;
|
|
float *pfVar2;
|
|
|
|
pfVar2 = (float *)&DAT_010256b0;
|
|
local_18 = (float *)&DAT_0102565c;
|
|
fVar1 = (float10)FUN_0101b1f7(param_1);
|
|
FUN_0101cc6b((float)fVar1,local_18,pfVar2);
|
|
DAT_01025714 = *(undefined4 *)((int)this + 0x65);
|
|
DAT_01025718 = *(undefined4 *)((int)this + 0x69);
|
|
DAT_0102571c = *(undefined4 *)((int)this + 0x6d);
|
|
DAT_010256b4 = *(undefined4 *)((int)this + 0x71);
|
|
DAT_010256b8 = *(undefined4 *)((int)this + 0x75);
|
|
DAT_010256bc = *(undefined4 *)((int)this + 0x79);
|
|
DAT_010256f0 = *(undefined4 *)((int)this + 0x7d);
|
|
DAT_010256f4 = *(undefined4 *)((int)this + 0x81);
|
|
DAT_010256f8 = *(undefined4 *)((int)this + 0x85);
|
|
DAT_010256fc = *(undefined4 *)((int)this + 0x89);
|
|
DAT_01025700 = *(undefined4 *)((int)this + 0x8d);
|
|
DAT_01025704 = *(undefined4 *)((int)this + 0x91);
|
|
DAT_01025708 = *(undefined4 *)((int)this + 0x99);
|
|
DAT_0102570c = *(undefined4 *)((int)this + 0x9d);
|
|
DAT_01025710 = *(undefined4 *)((int)this + 0xa1);
|
|
local_18 = (float *)((int)this + 0x21);
|
|
FUN_0101cbb1((float *)&DAT_01025714,_DAT_0102565c,_DAT_010256b0,local_18);
|
|
FUN_0101cbb1((float *)&DAT_010256b4,_DAT_0102565c,_DAT_010256b0,local_18);
|
|
FUN_0101cbb1((float *)&DAT_01025708,_DAT_0102565c,_DAT_010256b0,local_18);
|
|
FUN_0101cbb1((float *)&DAT_010256f0,_DAT_0102565c,_DAT_010256b0,local_18);
|
|
FUN_0101cbb1((float *)&DAT_010256fc,_DAT_0102565c,_DAT_010256b0,local_18);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
|
|
|
|
undefined4 FUN_0101b43a(float *param_1,float *param_2)
|
|
|
|
{
|
|
float fVar1;
|
|
undefined2 extraout_var;
|
|
undefined4 uVar2;
|
|
float *pfVar3;
|
|
int iVar4;
|
|
bool in_PF;
|
|
float10 fVar5;
|
|
float local_8;
|
|
|
|
local_8 = 1000000000.00000000;
|
|
iVar4 = -1;
|
|
fVar5 = (float10)FUN_01008c8f(param_1,&DAT_01025680);
|
|
if (!in_PF) {
|
|
local_8 = (float)fVar5;
|
|
iVar4 = 0;
|
|
}
|
|
fVar5 = (float10)FUN_01008b34(param_1,&DAT_01025660);
|
|
if (!in_PF) {
|
|
local_8 = (float)fVar5;
|
|
iVar4 = 2;
|
|
}
|
|
fVar5 = (float10)FUN_01008b34(param_1,&DAT_01025670);
|
|
if (!in_PF) {
|
|
local_8 = (float)fVar5;
|
|
iVar4 = 3;
|
|
}
|
|
fVar5 = (float10)FUN_01008c8f(param_1,&DAT_010256c0);
|
|
uVar2 = CONCAT22(extraout_var,
|
|
(ushort)(fVar5 < (float10)local_8) << 8 |
|
|
(ushort)(fVar5 == (float10)local_8) << 0xe);
|
|
if (!in_PF) {
|
|
local_8 = (float)fVar5;
|
|
iVar4 = 1;
|
|
}
|
|
if (((param_2 != (float *)0x0) &&
|
|
(uVar2 = CONCAT22(extraout_var,
|
|
(ushort)(local_8 < 1000000000.00000000) << 8 |
|
|
(ushort)(local_8 == 1000000000.00000000) << 0xe), !in_PF)) && (iVar4 != -1))
|
|
{
|
|
if (iVar4 == 0) {
|
|
param_2[3] = DAT_01025680;
|
|
param_2[4] = DAT_01025684;
|
|
param_2[5] = DAT_01025688;
|
|
pfVar3 = (float *)&DAT_010256a4;
|
|
}
|
|
else {
|
|
if (iVar4 != 1) {
|
|
if (iVar4 == 2) {
|
|
*param_2 = local_8 * param_1[3] + *param_1;
|
|
param_2[1] = local_8 * param_1[4] + param_1[1];
|
|
param_2[3] = *param_2 - _DAT_01025660;
|
|
fVar1 = param_2[1] - _DAT_01025664;
|
|
}
|
|
else {
|
|
if (iVar4 != 3) {
|
|
return uVar2;
|
|
}
|
|
*param_2 = local_8 * param_1[3] + *param_1;
|
|
param_2[1] = local_8 * param_1[4] + param_1[1];
|
|
param_2[3] = *param_2 - _DAT_01025670;
|
|
fVar1 = param_2[1] - _DAT_01025674;
|
|
}
|
|
param_2[4] = fVar1;
|
|
uVar2 = FUN_01008ae9(param_2 + 3);
|
|
return uVar2;
|
|
}
|
|
param_2[3] = DAT_010256c0;
|
|
param_2[4] = DAT_010256c4;
|
|
param_2[5] = DAT_010256c8;
|
|
pfVar3 = (float *)&DAT_010256e4;
|
|
}
|
|
*param_2 = *pfVar3;
|
|
param_2[1] = pfVar3[1];
|
|
param_2[2] = pfVar3[2];
|
|
}
|
|
return uVar2;
|
|
}
|
|
|
|
|
|
|
|
undefined4 __thiscall FUN_0101b5a8(int iParm1,float param_1,float param_2)
|
|
|
|
{
|
|
float fVar1;
|
|
int iVar2;
|
|
float fVar3;
|
|
bool in_PF;
|
|
undefined4 uStack16;
|
|
|
|
if ((((((DAT_010256b4 - DAT_01025714) * (param_2 - DAT_01025718) -
|
|
(DAT_010256b8 - DAT_01025718) * (param_1 - DAT_01025714) < 0.00000000) ||
|
|
((param_2 - DAT_010256b8) * (DAT_010256f0 - DAT_010256b4) -
|
|
(param_1 - DAT_010256b4) * (DAT_010256f4 - DAT_010256b8) < 0.00000000)) ||
|
|
((param_2 - DAT_010256f4) * (DAT_010256fc - DAT_010256f0) -
|
|
(param_1 - DAT_010256f0) * (DAT_01025700 - DAT_010256f4) < 0.00000000)) ||
|
|
((param_2 - DAT_01025700) * (DAT_01025714 - DAT_010256fc) -
|
|
(param_1 - DAT_010256fc) * (DAT_01025718 - DAT_01025700) < 0.00000000)) &&
|
|
((in_PF && (in_PF)))) {
|
|
return 0;
|
|
}
|
|
iVar2 = *(int *)(iParm1 + 0x15);
|
|
if (*(float *)(iParm1 + 0x45) < 0.00000000) {
|
|
if (iVar2 == 1) {
|
|
fVar1 = (param_2 - DAT_010256f4) * (*(float *)(iParm1 + 0x21) - DAT_010256f0) -
|
|
(param_1 - DAT_010256f0) * (*(float *)(iParm1 + 0x25) - DAT_010256f4);
|
|
}
|
|
else {
|
|
if (iVar2 == 2) {
|
|
fVar1 = (param_2 - DAT_010256b8) * (*(float *)(iParm1 + 0x21) - DAT_010256b4);
|
|
fVar3 = *(float *)(iParm1 + 0x25) - DAT_010256b8;
|
|
param_1 = param_1 - DAT_010256b4;
|
|
}
|
|
else {
|
|
fVar1 = (param_2 - DAT_0102570c) * (*(float *)(iParm1 + 0x21) - DAT_01025708);
|
|
fVar3 = *(float *)(iParm1 + 0x25) - DAT_0102570c;
|
|
param_1 = param_1 - DAT_01025708;
|
|
}
|
|
fVar1 = fVar1 - param_1 * fVar3;
|
|
}
|
|
goto joined_r0x0101b7be;
|
|
}
|
|
fVar1 = *(float *)(iParm1 + 0x21);
|
|
if (iVar2 == 1) {
|
|
fVar1 = (param_2 - DAT_01025700) * (fVar1 - DAT_010256fc);
|
|
fVar3 = *(float *)(iParm1 + 0x25) - DAT_01025700;
|
|
param_1 = param_1 - DAT_010256fc;
|
|
LAB_0101b72e:
|
|
param_1 = param_1 * fVar3;
|
|
}
|
|
else {
|
|
if (iVar2 != 2) {
|
|
fVar1 = (param_2 - DAT_0102570c) * (fVar1 - DAT_01025708);
|
|
fVar3 = *(float *)(iParm1 + 0x25) - DAT_0102570c;
|
|
param_1 = param_1 - DAT_01025708;
|
|
goto LAB_0101b72e;
|
|
}
|
|
fVar1 = (fVar1 - DAT_01025714) * (param_2 - DAT_01025718);
|
|
param_1 = (*(float *)(iParm1 + 0x25) - DAT_01025718) * (param_1 - DAT_01025714);
|
|
}
|
|
fVar1 = fVar1 - param_1;
|
|
joined_r0x0101b7be:
|
|
if (0.00000000 <= fVar1) {
|
|
uStack16 = 4;
|
|
}
|
|
else {
|
|
uStack16 = 5;
|
|
}
|
|
return uStack16;
|
|
}
|
|
|
|
|
|
|
|
float * __thiscall FUN_0101b825(void *pvParm1,float *param_1)
|
|
|
|
{
|
|
bool bVar1;
|
|
undefined2 extraout_var;
|
|
undefined2 extraout_var_00;
|
|
float *pfVar2;
|
|
int iVar3;
|
|
undefined2 extraout_var_01;
|
|
float *pfVar4;
|
|
undefined4 *puVar5;
|
|
float *pfVar6;
|
|
bool in_PF;
|
|
float10 fVar7;
|
|
float10 fVar8;
|
|
ushort uVar9;
|
|
float local_74;
|
|
undefined4 uStack112;
|
|
undefined4 uStack108;
|
|
float local_68;
|
|
undefined4 uStack100;
|
|
undefined4 uStack96;
|
|
float local_48;
|
|
float local_44;
|
|
float fStack64;
|
|
float local_3c;
|
|
float local_38;
|
|
float fStack52;
|
|
float local_30;
|
|
float local_2c;
|
|
float local_1c;
|
|
float local_18;
|
|
float local_14;
|
|
float local_10;
|
|
float local_c;
|
|
float local_8;
|
|
|
|
if ((ushort)((ushort)(param_1[8] < *(float *)((int)pvParm1 + 0xcd)) << 8 |
|
|
(ushort)(param_1[8] == *(float *)((int)pvParm1 + 0xcd)) << 0xe) == 0) {
|
|
*(undefined4 *)((int)pvParm1 + 0x15) = 0;
|
|
}
|
|
pfVar2 = (float *)((int)pvParm1 + 0xc5);
|
|
if (*pfVar2 == 0.00000000) {
|
|
if (*(int *)((int)pvParm1 + 0x15) == 0) {
|
|
*pfVar2 = 0.00000000;
|
|
*(undefined4 *)((int)pvParm1 + 0x51) = 0;
|
|
*(undefined4 *)((int)pvParm1 + 0x55) = 0;
|
|
FUN_0101b327(pvParm1,param_1[8]);
|
|
FUN_0101b281((int)pvParm1);
|
|
local_10 = (float)FUN_0101b5a8(*param_1,param_1[1]);
|
|
local_2c = param_1[7];
|
|
if (local_10 == 0.00000000) {
|
|
local_3c = param_1[3];
|
|
local_38 = param_1[4];
|
|
fStack52 = param_1[5];
|
|
local_30 = param_1[6];
|
|
local_48 = *param_1;
|
|
local_44 = param_1[1];
|
|
fStack64 = param_1[2];
|
|
fVar8 = (float10)FUN_0101b43a(&local_48,&local_74);
|
|
pfVar4 = &local_74;
|
|
pfVar2 = (float *)CONCAT22(extraout_var_00,
|
|
(ushort)(fVar8 < (float10)0.00000000) << 8 |
|
|
(ushort)(fVar8 == (float10)0.00000000) << 0xe);
|
|
if (in_PF) {
|
|
pfVar6 = (float *)((int)pvParm1 + 0xdd);
|
|
LAB_0101bab7:
|
|
*pfVar6 = *pfVar4;
|
|
pfVar6[1] = pfVar4[1];
|
|
pfVar6[2] = pfVar4[2];
|
|
}
|
|
else {
|
|
pfVar2 = (float *)((int)pvParm1 + 0xdd);
|
|
*pfVar2 = local_74;
|
|
*(undefined4 *)((int)pvParm1 + 0xe1) = uStack112;
|
|
*(undefined4 *)((int)pvParm1 + 0xe5) = uStack108;
|
|
*pfVar2 = *pfVar2 - local_3c * 0.00001000;
|
|
pfVar2 = (float *)((int)pvParm1 + 0xe1);
|
|
*pfVar2 = *pfVar2 - local_38 * 0.00001000;
|
|
}
|
|
*(float *)((int)pvParm1 + 0xb9) = local_68;
|
|
*(undefined4 *)((int)pvParm1 + 0xbd) = uStack100;
|
|
*(undefined4 *)((int)pvParm1 + 0xc1) = uStack96;
|
|
}
|
|
else {
|
|
FUN_0101cc23(*param_1,param_1[1],param_1[2],*(float *)((int)pvParm1 + 0x21),
|
|
*(float *)((int)pvParm1 + 0x25));
|
|
if (in_PF) {
|
|
FUN_0101cc23(*param_1,param_1[1],param_1[2],DAT_01025708,DAT_0102570c);
|
|
if (in_PF) {
|
|
local_38 = DAT_010256c4;
|
|
local_3c = DAT_010256c0;
|
|
if (local_10 == 0.00000000) {
|
|
local_38 = DAT_01025684;
|
|
local_3c = DAT_01025680;
|
|
}
|
|
local_3c = -local_3c;
|
|
local_38 = -local_38;
|
|
}
|
|
else {
|
|
local_3c = DAT_01025708 - *param_1;
|
|
local_38 = DAT_0102570c - param_1[1];
|
|
FUN_01008ae9(&local_3c);
|
|
}
|
|
}
|
|
else {
|
|
local_3c = *(float *)((int)pvParm1 + 0x21) - *param_1;
|
|
local_38 = *(float *)((int)pvParm1 + 0x25) - param_1[1];
|
|
FUN_01008ae9(&local_3c);
|
|
}
|
|
local_48 = *param_1 - local_3c * 5.00000000;
|
|
local_44 = param_1[1] - local_38 * 5.00000000;
|
|
local_30 = param_1[6] + 10.00000000;
|
|
fVar8 = (float10)FUN_0101b43a(&local_48,&local_74);
|
|
if ((float10)1000000000.00000000 <= fVar8) {
|
|
local_3c = *(float *)((int)pvParm1 + 0x21) - *param_1;
|
|
local_38 = *(float *)((int)pvParm1 + 0x25) - param_1[1];
|
|
FUN_01008ae9(&local_3c);
|
|
local_48 = *param_1 - local_3c * 5.00000000;
|
|
local_44 = param_1[1] - local_38 * 5.00000000;
|
|
fVar7 = (float10)FUN_0101b43a(&local_48,&local_74);
|
|
fVar8 = (float10)1000000000.00000000;
|
|
if (fVar7 >= fVar8) {
|
|
return (float *)CONCAT22(extraout_var,
|
|
(ushort)(fVar7 < fVar8) << 8 | (ushort)(fVar7 == fVar8) << 0xe)
|
|
;
|
|
}
|
|
}
|
|
LAB_0101ba1a:
|
|
*(float *)((int)pvParm1 + 0xdd) = local_74;
|
|
*(undefined4 *)((int)pvParm1 + 0xe1) = uStack112;
|
|
*(undefined4 *)((int)pvParm1 + 0xe5) = uStack108;
|
|
pfVar6 = (float *)((int)pvParm1 + 0xb9);
|
|
pfVar2 = &local_68;
|
|
LAB_0101bc82:
|
|
*pfVar6 = *pfVar2;
|
|
pfVar6[1] = pfVar2[1];
|
|
pfVar6[2] = pfVar2[2];
|
|
*(float *)((int)pvParm1 + 0xdd) = *(float *)((int)pvParm1 + 0xdd) - local_3c * 0.00001000;
|
|
pfVar2 = (float *)((int)pvParm1 + 0xe1);
|
|
*pfVar2 = *pfVar2 - local_38 * 0.00001000;
|
|
}
|
|
}
|
|
else {
|
|
local_8 = *param_1;
|
|
local_14 = *(float *)((int)pvParm1 + 0xb5) * param_1[6];
|
|
local_c = param_1[1];
|
|
local_10 = param_1[8];
|
|
local_18 = *(float *)((int)pvParm1 + 0xb5) * param_1[3];
|
|
local_1c = param_1[4] * *(float *)((int)pvParm1 + 0xb5);
|
|
uVar9 = (ushort)(param_1[9] + param_1[8] < local_10) << 8 |
|
|
(ushort)(param_1[9] + param_1[8] == local_10) << 0xe;
|
|
pfVar2 = (float *)((uint)local_10 & 0xffff0000 | (uint)uVar9);
|
|
while (uVar9 == 0) {
|
|
FUN_0101b327(pvParm1,local_10);
|
|
FUN_0101b281((int)pvParm1);
|
|
iVar3 = FUN_0101b5a8(local_8,local_c);
|
|
if (iVar3 != 0) {
|
|
if ((*(int *)((int)pvParm1 + 0x15) == 1) && (iVar3 != 5)) {
|
|
puVar5 = &DAT_01025680;
|
|
local_38 = DAT_01025684;
|
|
local_3c = DAT_01025680;
|
|
}
|
|
else {
|
|
if ((*(int *)((int)pvParm1 + 0x15) != 2) || (iVar3 == 4)) {
|
|
local_3c = *(float *)((int)pvParm1 + 0x21) - local_8;
|
|
*(undefined4 *)((int)pvParm1 + 0x51) = 0;
|
|
*(undefined4 *)((int)pvParm1 + 0x55) = 1;
|
|
local_38 = *(float *)((int)pvParm1 + 0x25) - local_c;
|
|
FUN_01008ae9(&local_3c);
|
|
local_48 = local_8 - local_3c * 5.00000000;
|
|
local_44 = local_c - local_38 * 5.00000000;
|
|
local_30 = param_1[6] + 10.00000000;
|
|
fVar8 = (float10)FUN_0101b43a(&local_48,&local_74);
|
|
if ((float10)1000000000.00000000 <= fVar8) {
|
|
*(float *)((int)pvParm1 + 0xdd) = local_8;
|
|
*(float *)((int)pvParm1 + 0xb9) = -local_3c;
|
|
*(float *)((int)pvParm1 + 0xe1) = local_c;
|
|
*(float *)((int)pvParm1 + 0xbd) = -local_38;
|
|
return (float *)local_c;
|
|
}
|
|
goto LAB_0101ba1a;
|
|
}
|
|
puVar5 = &DAT_010256c0;
|
|
local_38 = DAT_010256c4;
|
|
local_3c = DAT_010256c0;
|
|
}
|
|
local_3c = -local_3c;
|
|
local_38 = -local_38;
|
|
*(undefined4 *)((int)pvParm1 + 0x59) = *puVar5;
|
|
*(undefined4 *)((int)pvParm1 + 0x5d) = puVar5[1];
|
|
*(undefined4 *)((int)pvParm1 + 0x61) = puVar5[2];
|
|
*(undefined4 *)((int)pvParm1 + 0x55) = 0;
|
|
*(undefined4 *)((int)pvParm1 + 0x51) = 1;
|
|
local_2c = 0.00200000;
|
|
local_48 = *param_1 - local_3c * 5.00000000;
|
|
local_44 = param_1[1] - local_38 * 5.00000000;
|
|
local_30 = param_1[6] + 10.00000000;
|
|
fVar7 = (float10)FUN_0101b43a(&local_48,&local_74);
|
|
fVar8 = (float10)1000000000.00000000;
|
|
*(float *)((int)pvParm1 + 0xb9) = local_68;
|
|
*(undefined4 *)((int)pvParm1 + 0xbd) = uStack100;
|
|
*(undefined4 *)((int)pvParm1 + 0xc1) = uStack96;
|
|
if (fVar7 >= fVar8) {
|
|
return (float *)CONCAT22(extraout_var_01,
|
|
(ushort)(fVar7 < fVar8) << 8 | (ushort)(fVar7 == fVar8) << 0xe)
|
|
;
|
|
}
|
|
pfVar6 = (float *)((int)pvParm1 + 0xdd);
|
|
pfVar2 = &local_74;
|
|
goto LAB_0101bc82;
|
|
}
|
|
local_3c = param_1[3];
|
|
local_38 = param_1[4];
|
|
fStack52 = param_1[5];
|
|
local_2c = param_1[7];
|
|
local_48 = *param_1;
|
|
local_44 = param_1[1];
|
|
fStack64 = param_1[2];
|
|
local_30 = local_14;
|
|
FUN_0101b43a(&local_48,&local_74);
|
|
if (!in_PF) {
|
|
pfVar2 = (float *)((int)pvParm1 + 0xdd);
|
|
*pfVar2 = local_74;
|
|
*(undefined4 *)((int)pvParm1 + 0xe1) = uStack112;
|
|
*(undefined4 *)((int)pvParm1 + 0xe5) = uStack108;
|
|
*pfVar2 = *pfVar2 - local_3c * 0.00001000;
|
|
*(float *)((int)pvParm1 + 0xe1) = *(float *)((int)pvParm1 + 0xe1) - local_38 * 0.00001000;
|
|
bVar1 = (ushort)((ushort)(*(float *)((int)pvParm1 + 0x45) < 0.00000000) << 8 |
|
|
(ushort)(*(float *)((int)pvParm1 + 0x45) == 0.00000000) << 0xe) == 0;
|
|
pfVar2 = (float *)(uint)bVar1;
|
|
pfVar6 = (float *)((int)pvParm1 + 0x59);
|
|
if (*(int *)((int)pvParm1 + 0x15) == 2) {
|
|
pfVar4 = (float *)&DAT_010256c0;
|
|
*(uint *)((int)pvParm1 + 0x51) = (uint)!bVar1;
|
|
}
|
|
else {
|
|
*(float **)((int)pvParm1 + 0x51) = pfVar2;
|
|
pfVar4 = (float *)&DAT_01025680;
|
|
}
|
|
goto LAB_0101bab7;
|
|
}
|
|
local_10 = local_10 + *(float *)((int)pvParm1 + 0xb5);
|
|
local_8 = local_8 + local_18;
|
|
local_c = local_c + local_1c;
|
|
uVar9 = (ushort)(param_1[9] + param_1[8] < local_10) << 8 |
|
|
(ushort)(param_1[9] + param_1[8] == local_10) << 0xe;
|
|
pfVar2 = (float *)((uint)param_1 & 0xffff0000 | (uint)uVar9);
|
|
}
|
|
}
|
|
}
|
|
else {
|
|
*pfVar2 = 0.00000000;
|
|
}
|
|
return pfVar2;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
|
|
|
|
void __thiscall FUN_0101be06(int iParm1,int param_1)
|
|
|
|
{
|
|
bool in_PF;
|
|
float10 fVar1;
|
|
float local_1c;
|
|
float local_18;
|
|
float local_14;
|
|
float local_10;
|
|
|
|
*(undefined4 *)(iParm1 + 0xc5) = 1;
|
|
if (*(int *)(iParm1 + 0x15) == 0) {
|
|
LAB_0101be63:
|
|
fVar1 = (float10)0;
|
|
}
|
|
else {
|
|
if (*(int *)(iParm1 + 0x51) == 0) {
|
|
if ((*(int *)(iParm1 + 0x15) != 0) && (*(int *)(iParm1 + 0x55) != 0)) {
|
|
local_1c = *(float *)(iParm1 + 0xdd) - *(float *)(iParm1 + 0x21);
|
|
local_10 = *(float *)(iParm1 + 0xe1) - *(float *)(iParm1 + 0x25);
|
|
local_1c = local_1c * local_1c + local_10 * local_10;
|
|
if (_DAT_0102566c * 1.00999999 < local_1c) {
|
|
local_1c = (1.00000000 - SQRT(local_1c / *(float *)(iParm1 + 0xb1))) *
|
|
*(float *)(iParm1 + 0x19);
|
|
}
|
|
else {
|
|
local_1c = *(float *)(iParm1 + 0x19);
|
|
}
|
|
local_10 = 0.00000000;
|
|
local_14 = 1000000000.00000000;
|
|
local_18 = *(float *)(iParm1 + 0x1d);
|
|
goto LAB_0101bf84;
|
|
}
|
|
goto LAB_0101be63;
|
|
}
|
|
local_1c = *(float *)(iParm1 + 0xdd) - *(float *)(iParm1 + 0x21);
|
|
local_10 = *(float *)(iParm1 + 0xe1) - *(float *)(iParm1 + 0x25);
|
|
local_1c = local_1c * local_1c + local_10 * local_10;
|
|
if (local_1c <= _DAT_0102566c * 1.00999999) goto LAB_0101be63;
|
|
local_10 = *(float *)(iParm1 + 0xb1);
|
|
local_14 = *(float *)(iParm1 + 0x45);
|
|
local_18 = *(float *)(iParm1 + 0xd1);
|
|
fVar1 = FUN_0101cc4b((float *)(iParm1 + 0x59),(float *)(iParm1 + 0xb9));
|
|
if (in_PF) {
|
|
fVar1 = fVar1 * (float10)((ABS(local_14) / local_18) * SQRT(local_1c / local_10));
|
|
}
|
|
else {
|
|
fVar1 = (float10)0;
|
|
}
|
|
fVar1 = fVar1 * (float10)*(float *)(iParm1 + 0x95);
|
|
}
|
|
local_10 = (float)fVar1;
|
|
local_14 = (float)fVar1;
|
|
local_18 = *(float *)(iParm1 + 0x1d);
|
|
local_1c = *(float *)(iParm1 + 0x19);
|
|
LAB_0101bf84:
|
|
FUN_01017883(param_1,(undefined4 *)(iParm1 + 0xdd),(float *)(iParm1 + 0xb9),local_1c,local_18,
|
|
local_14,local_10);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void __thiscall FUN_0101bf98(void *this,int param_1,undefined4 param_2)
|
|
|
|
{
|
|
undefined4 uVar1;
|
|
void *extraout_ECX;
|
|
void *extraout_ECX_00;
|
|
float10 fVar2;
|
|
|
|
if (param_1 == 1) {
|
|
fVar2 = (float10)FUN_0101b1f7(param_2);
|
|
*(float *)((int)extraout_ECX_00 + 0x49) = (float)fVar2;
|
|
*(undefined4 *)((int)extraout_ECX_00 + 0x4d) = *(undefined4 *)((int)extraout_ECX_00 + 0x45);
|
|
uVar1 = *(undefined4 *)((int)extraout_ECX_00 + 0xd5);
|
|
this = extraout_ECX_00;
|
|
}
|
|
else {
|
|
if (param_1 != 2) {
|
|
if (param_1 == 0x400) {
|
|
*(undefined4 *)((int)this + 0x15) = 0;
|
|
*(undefined4 *)((int)this + 0x4d) = 0;
|
|
return;
|
|
}
|
|
goto LAB_0101bff8;
|
|
}
|
|
fVar2 = (float10)FUN_0101b1f7(param_2);
|
|
uVar1 = *(undefined4 *)((int)extraout_ECX + 0xd9);
|
|
*(float *)((int)extraout_ECX + 0x49) = (float)fVar2;
|
|
*(undefined4 *)((int)extraout_ECX + 0x4d) = 0;
|
|
this = extraout_ECX;
|
|
}
|
|
*(undefined4 *)((int)this + 0xd1) = uVar1;
|
|
LAB_0101bff8:
|
|
if (*(int *)((int)this + 0x15) == 0) {
|
|
*(undefined4 *)((int)this + 0xc9) = param_2;
|
|
}
|
|
*(int *)((int)this + 0x15) = param_1;
|
|
*(float *)((int)this + 0xcd) = *(float *)((int)this + 0xd1) + *(float *)((int)this + 0xc9);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void __fastcall FUN_0101c047(undefined4 *param_1)
|
|
|
|
{
|
|
*param_1 = 0x1002838;
|
|
operator_delete(*(void **)((int)param_1 + 0x52));
|
|
FUN_01019172(param_1);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
|
|
|
|
void FUN_0101c070(undefined4 param_1,int param_2)
|
|
|
|
{
|
|
int iVar1;
|
|
int iVar2;
|
|
int iVar3;
|
|
int local_8;
|
|
|
|
local_8 = 0;
|
|
floor((double)((_DAT_01025630 - *(float *)(param_2 + 0x66)) / *(float *)(param_2 + 0x62) +
|
|
0.50000000));
|
|
iVar3 = *(int *)(param_2 + 0x22);
|
|
iVar2 = _ftol();
|
|
if (iVar2 == 0) {
|
|
iVar2 = 1;
|
|
}
|
|
iVar1 = *(int *)(param_2 + 6);
|
|
if (iVar1 == 1) {
|
|
*(int *)(param_2 + 0x4e) = *(int *)(param_2 + 0x4e) + iVar2;
|
|
iVar3 = *(int *)(*(int *)(iVar3 + 4) + 4) + -1;
|
|
if (iVar3 <= *(int *)(param_2 + 0x4e)) {
|
|
*(int *)(param_2 + 0x4e) = iVar3;
|
|
local_8 = iVar1;
|
|
}
|
|
}
|
|
if ((iVar1 == 2) &&
|
|
(*(int *)(param_2 + 0x4e) = *(int *)(param_2 + 0x4e) - iVar2, *(int *)(param_2 + 0x4e) < 1)) {
|
|
*(undefined4 *)(param_2 + 0x4e) = 0;
|
|
local_8 = 1;
|
|
}
|
|
iVar3 = 0;
|
|
if (local_8 == 0) {
|
|
iVar3 = FUN_010074b7(*(undefined4 *)(param_2 + 0x62),param_2,(int)FUN_0101c070);
|
|
}
|
|
else {
|
|
*(undefined4 *)(param_2 + 6) = 0;
|
|
}
|
|
*(int *)(param_2 + 0x56) = iVar3;
|
|
iVar3 = *(int *)(param_2 + 0x4e) * 4 + 8;
|
|
iVar2 = *(int *)(iVar3 + *(int *)(*(int *)(param_2 + 0x22) + 4));
|
|
FUN_01013974(*(undefined4 **)(param_2 + 0x1a),iVar2,
|
|
*(undefined4 *)(*(int *)(*(int *)(param_2 + 0x26) + 4) + iVar3),
|
|
*(int *)(iVar2 + 0x1d) - *(int *)(*(int *)(param_2 + 0x1e) + 0xea),
|
|
*(int *)(iVar2 + 0x21) - *(int *)(*(int *)(param_2 + 0x1e) + 0xee));
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
undefined4 __thiscall FUN_0101c178(undefined **ppuParm1,int param_1,float param_2)
|
|
|
|
{
|
|
float fVar1;
|
|
int iVar2;
|
|
bool in_PF;
|
|
double dVar3;
|
|
|
|
if (param_1 == 1) {
|
|
FUN_01011ec9(1,ppuParm1);
|
|
*(undefined4 *)((int)ppuParm1 + 0x62) = *(undefined4 *)((int)ppuParm1 + 0x5a);
|
|
iVar2 = *(int *)((int)ppuParm1 + 0x4a);
|
|
LAB_0101c217:
|
|
if (iVar2 != 0) {
|
|
FUN_01009895(iVar2);
|
|
}
|
|
}
|
|
else {
|
|
if (param_1 == 2) {
|
|
*(undefined4 *)((int)ppuParm1 + 0x62) = *(undefined4 *)((int)ppuParm1 + 0x5e);
|
|
iVar2 = *(int *)((int)ppuParm1 + 0x46);
|
|
goto LAB_0101c217;
|
|
}
|
|
if (param_1 < 0x3f1) {
|
|
return 0;
|
|
}
|
|
if (0x3f3 < param_1) {
|
|
if (param_1 != 0x3fc) {
|
|
if (param_1 == 0x3fe) goto LAB_0101c1f0;
|
|
if (param_1 != 0x400) {
|
|
return 0;
|
|
}
|
|
}
|
|
if (*(int *)((int)ppuParm1 + 6) == 0) {
|
|
return 0;
|
|
}
|
|
if (*(int *)((int)ppuParm1 + 0x56) != 0) {
|
|
FUN_01007659(*(int *)((int)ppuParm1 + 0x56));
|
|
}
|
|
*(undefined4 *)((int)ppuParm1 + 0x4e) = 0xffffffff;
|
|
*(undefined4 *)((int)ppuParm1 + 6) = 2;
|
|
FUN_0101c070(*(undefined4 *)((int)ppuParm1 + 0x56),(int)ppuParm1);
|
|
goto LAB_0101c290;
|
|
}
|
|
LAB_0101c1f0:
|
|
param_1 = 2;
|
|
*(undefined4 *)((int)ppuParm1 + 0x62) = *(undefined4 *)((int)ppuParm1 + 0x5e);
|
|
}
|
|
if (*(int *)((int)ppuParm1 + 0x56) != 0) {
|
|
FUN_01007659(*(int *)((int)ppuParm1 + 0x56));
|
|
*(undefined4 *)((int)ppuParm1 + 0x56) = 0;
|
|
}
|
|
if (*(int *)((int)ppuParm1 + 6) == 0) {
|
|
fVar1 = *(float *)((int)ppuParm1 + 0x62);
|
|
}
|
|
else {
|
|
fVar1 = param_2 - *(float *)(*(int *)((int)ppuParm1 + 0x52) + 0xc9);
|
|
dVar3 = floor((double)(fVar1 / *(float *)((int)ppuParm1 + 0x62)));
|
|
fVar1 = fVar1 - (float)dVar3 * *(float *)((int)ppuParm1 + 0x62);
|
|
if (!in_PF) {
|
|
fVar1 = 0.00000000;
|
|
}
|
|
}
|
|
*(int *)((int)ppuParm1 + 6) = param_1;
|
|
*(float *)((int)ppuParm1 + 0x66) = param_2;
|
|
iVar2 = FUN_010074b7(fVar1,(int)ppuParm1,(int)FUN_0101c070);
|
|
*(int *)((int)ppuParm1 + 0x56) = iVar2;
|
|
LAB_0101c290:
|
|
FUN_0101bf98(*(void **)((int)ppuParm1 + 0x52),param_1,param_2);
|
|
return 0;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Could not reconcile some variable overlaps
|
|
|
|
undefined4 * __thiscall
|
|
FUN_0101c2ba(undefined4 *puParm1,undefined4 param_1,undefined4 param_2,undefined4 param_3,
|
|
int param_4,float *param_5,float *param_6,float *param_7,undefined4 param_8,
|
|
undefined4 param_9,undefined4 param_10,undefined4 param_11,undefined4 param_12)
|
|
|
|
{
|
|
float fVar1;
|
|
float fVar2;
|
|
float fVar3;
|
|
undefined4 *extraout_ECX;
|
|
bool in_PF;
|
|
float10 fVar4;
|
|
float local_58;
|
|
float fStack84;
|
|
float local_50;
|
|
float local_4c;
|
|
float local_48;
|
|
float fStack68;
|
|
float local_40;
|
|
float local_3c;
|
|
float local_38;
|
|
float local_34;
|
|
float local_30;
|
|
undefined4 local_2c;
|
|
float local_28;
|
|
float local_24;
|
|
float local_1c;
|
|
float local_18;
|
|
float local_14;
|
|
float local_10;
|
|
undefined8 local_c;
|
|
|
|
FUN_01015866(puParm1,param_1,param_2,param_3);
|
|
*(undefined4 *)((int)puParm1 + 0x19) = param_11;
|
|
*(undefined4 *)((int)puParm1 + 0x1d) = param_12;
|
|
*puParm1 = 0x1002854;
|
|
local_1c = *param_5;
|
|
local_18 = param_5[1];
|
|
local_14 = param_5[2];
|
|
local_10 = *param_6;
|
|
local_24 = param_6[1];
|
|
fVar1 = param_6[2];
|
|
local_c = *(double *)(param_6 + 1);
|
|
local_4c = *param_7;
|
|
local_48 = param_7[1];
|
|
fStack68 = param_7[2];
|
|
*(undefined4 *)((int)puParm1 + 0xd5) = param_8;
|
|
*(undefined4 *)((int)puParm1 + 0xd9) = param_9;
|
|
*(undefined4 *)((int)puParm1 + 0x95) = param_10;
|
|
*(float *)((int)puParm1 + 0x31) = fVar1 + *(float *)(param_4 + 0x11a);
|
|
fVar2 = local_14 + *(float *)(param_4 + 0x11a);
|
|
*(float *)((int)puParm1 + 0x99) = local_10;
|
|
*(float *)((int)puParm1 + 0x9d) = local_24;
|
|
*(float *)((int)puParm1 + 0x2d) = fVar2;
|
|
fVar3 = *(float *)((int)puParm1 + 0x31) * 1.00999999;
|
|
*(float *)((int)puParm1 + 0xa1) = fVar1;
|
|
fVar2 = fVar2 * 1.00999999;
|
|
*(float *)((int)puParm1 + 0x41) = fVar3 * fVar3;
|
|
*(float *)((int)puParm1 + 0xa5) = local_4c;
|
|
*(float *)((int)puParm1 + 0xa9) = local_48;
|
|
*(float *)((int)puParm1 + 0x3d) = fVar2 * fVar2;
|
|
*(float *)((int)puParm1 + 0x21) = local_1c;
|
|
*(float *)((int)puParm1 + 0xad) = fStack68;
|
|
*(float *)((int)puParm1 + 0x25) = local_18;
|
|
*(float *)((int)puParm1 + 0x39) =
|
|
*(float *)((int)puParm1 + 0x31) * *(float *)((int)puParm1 + 0x31);
|
|
*(float *)((int)puParm1 + 0x35) =
|
|
*(float *)((int)puParm1 + 0x2d) * *(float *)((int)puParm1 + 0x2d);
|
|
local_28 = local_10 - local_1c;
|
|
local_24 = local_24 - local_18;
|
|
local_40 = local_28;
|
|
local_3c = local_24;
|
|
FUN_01008ae9(&local_40);
|
|
local_34 = local_4c - local_1c;
|
|
local_30 = local_48 - local_18;
|
|
FUN_01008ae9(&local_34);
|
|
local_2c = 0;
|
|
local_38 = 0.00000000;
|
|
FUN_0101cc4b(&local_40,&local_34);
|
|
fVar4 = (float10)_CIacos();
|
|
*(float *)((int)puParm1 + 0x45) = (float)fVar4;
|
|
FUN_01008db8(&local_40,&local_34,&local_58);
|
|
if (!in_PF) {
|
|
*(float *)((int)puParm1 + 0x45) = -*(float *)((int)puParm1 + 0x45);
|
|
}
|
|
*(undefined4 *)((int)puParm1 + 0x15) = 0;
|
|
*(undefined4 *)((int)puParm1 + 0x4d) = 0;
|
|
FUN_01008ae9(&local_28);
|
|
fVar1 = -local_24;
|
|
*(float *)((int)puParm1 + 0x71) = fVar1 * *(float *)((int)puParm1 + 0x2d) + local_1c;
|
|
*(float *)((int)puParm1 + 0x75) = local_28 * *(float *)((int)puParm1 + 0x2d) + local_18;
|
|
*(float *)((int)puParm1 + 0x65) = fVar1 * *(float *)((int)puParm1 + 0x31) + local_10;
|
|
*(float *)((int)puParm1 + 0x69) = local_28 * *(float *)((int)puParm1 + 0x31) + (float)local_c;
|
|
local_24 = -local_28;
|
|
local_28 = -fVar1;
|
|
*(float *)((int)puParm1 + 0x7d) = local_28 * *(float *)((int)puParm1 + 0x2d) + local_1c;
|
|
*(float *)((int)puParm1 + 0x81) = local_24 * *(float *)((int)puParm1 + 0x2d) + local_18;
|
|
*(float *)((int)puParm1 + 0x89) = local_28 * *(float *)((int)puParm1 + 0x31) + local_10;
|
|
*(float *)((int)puParm1 + 0x8d) = local_24 * *(float *)((int)puParm1 + 0x31) + (float)local_c;
|
|
if (!in_PF) {
|
|
FUN_0101b0a4((float *)((int)puParm1 + 0x65),(float *)((int)puParm1 + 0x7d));
|
|
FUN_0101b0a4(extraout_ECX,(float *)((int)puParm1 + 0x89));
|
|
}
|
|
fVar1 = local_10 - *(float *)((int)puParm1 + 0x21);
|
|
fVar2 = (float)local_c - *(float *)((int)puParm1 + 0x25);
|
|
local_40 = local_10;
|
|
local_3c = (float)local_c;
|
|
local_38 = local_c._4_4_;
|
|
local_58 = local_4c;
|
|
fStack84 = local_48;
|
|
local_50 = fStack68;
|
|
local_c._4_4_ = SQRT(fVar1 * fVar1 + fVar2 * fVar2) + *(float *)(param_4 + 0x11a) + local_c._4_4_;
|
|
*(float *)((int)puParm1 + 0xb1) = local_c._4_4_ * local_c._4_4_;
|
|
if (in_PF) {
|
|
fVar1 = *(float *)((int)puParm1 + 0xd9);
|
|
}
|
|
else {
|
|
fVar1 = *(float *)((int)puParm1 + 0xd5);
|
|
}
|
|
local_c = (double)fVar1;
|
|
fVar4 = FUN_0101cbf5(&local_40,&local_58);
|
|
fVar4 = fVar4 / (float10)*(float *)((int)puParm1 + 0x31);
|
|
*(float *)((int)puParm1 + 0xb5) = (float)((float10)local_c / (fVar4 + fVar4));
|
|
FUN_0101b0d4();
|
|
*(undefined4 *)((int)puParm1 + 0xc5) = 0;
|
|
*(undefined4 *)((int)puParm1 + 0xc9) = 0;
|
|
*(undefined4 *)((int)puParm1 + 0x51) = 0;
|
|
*(undefined4 *)((int)puParm1 + 0xcd) = 0;
|
|
*(undefined4 *)((int)puParm1 + 0xd1) = 0;
|
|
return puParm1;
|
|
}
|
|
|
|
|
|
|
|
undefined4 * __thiscall FUN_0101c59d(void *this,int param_1,int param_2)
|
|
|
|
{
|
|
float *pfVar1;
|
|
float *pfVar2;
|
|
float *pfVar3;
|
|
int iVar4;
|
|
float local_74;
|
|
float local_70;
|
|
float local_6c;
|
|
undefined4 local_68;
|
|
undefined4 local_64;
|
|
undefined4 local_54;
|
|
undefined4 local_50;
|
|
undefined4 local_20;
|
|
undefined4 local_1c;
|
|
undefined4 local_18;
|
|
void *local_c;
|
|
float *local_8;
|
|
|
|
FUN_010190b3(this,param_1,param_2,0);
|
|
*(undefined4 *)this = 0x1002838;
|
|
FUN_0100950a(param_2,0,&local_54);
|
|
*(undefined4 *)((int)this + 0x4a) = local_1c;
|
|
*(undefined4 *)((int)this + 0x46) = local_18;
|
|
*(undefined4 *)((int)this + 0x36) = local_50;
|
|
*(undefined4 *)((int)this + 0x56) = 0;
|
|
*(undefined4 *)((int)this + 0x3a) = local_54;
|
|
local_c = operator_new(0xe9);
|
|
if (local_c == (void *)0x0) {
|
|
iVar4 = 0;
|
|
}
|
|
else {
|
|
pfVar1 = FUN_0100978e(param_2,0,0x323);
|
|
local_8 = FUN_0100978e(param_2,0,0x325);
|
|
pfVar2 = FUN_0100978e(param_2,0,0x324);
|
|
local_64 = *(undefined4 *)((int)this + 0x3a);
|
|
local_68 = *(undefined4 *)((int)this + 0x36);
|
|
local_6c = *pfVar1;
|
|
local_70 = *local_8;
|
|
local_74 = *pfVar2;
|
|
pfVar1 = FUN_0100978e(param_2,0,0x322);
|
|
pfVar2 = FUN_0100978e(param_2,0,0x321);
|
|
pfVar3 = FUN_0100978e(param_2,0,800);
|
|
iVar4 = FUN_0101c2ba(this,(int)this + 5,local_20,param_1,pfVar3,pfVar2,pfVar1,local_74,local_70,
|
|
local_6c,local_68,local_64);
|
|
}
|
|
*(int *)((int)this + 0x52) = iVar4;
|
|
if (iVar4 != 0) {
|
|
*(float *)((int)this + 0x5a) =
|
|
*(float *)(iVar4 + 0xd5) /
|
|
(float)(*(int *)(*(int *)(*(int *)((int)this + 0x22) + 4) + 4) + -1);
|
|
*(float *)((int)this + 0x5e) =
|
|
*(float *)(iVar4 + 0xd9) /
|
|
(float)(*(int *)(*(int *)(*(int *)((int)this + 0x22) + 4) + 4) + -1);
|
|
}
|
|
*(undefined4 *)((int)this + 0x4e) = 0;
|
|
*(undefined4 *)((int)this + 0x66) = 0;
|
|
return (undefined4 *)this;
|
|
}
|
|
|
|
|
|
|
|
undefined4 * __thiscall FUN_0101c6d7(void *this,byte param_1)
|
|
|
|
{
|
|
FUN_0101c047((undefined4 *)this);
|
|
if ((param_1 & 1) != 0) {
|
|
operator_delete(this);
|
|
}
|
|
return (undefined4 *)this;
|
|
}
|
|
|
|
|
|
|
|
undefined4 * __thiscall
|
|
FUN_0101c6fd(void *this,undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
|
|
undefined4 param_5,undefined4 param_6,undefined4 param_7)
|
|
|
|
{
|
|
FUN_01015866(this,param_1,param_2,param_3);
|
|
*(undefined4 *)((int)this + 0x45) = param_4;
|
|
*(undefined4 *)((int)this + 0x49) = param_5;
|
|
*(undefined4 *)((int)this + 0x4d) = param_6;
|
|
*(undefined4 *)((int)this + 0x51) = param_7;
|
|
*(undefined4 *)this = 0x1002864;
|
|
FUN_01008beb((int)this + 0x15,param_4,param_5,param_6,param_7);
|
|
return (undefined4 *)this;
|
|
}
|
|
|
|
|
|
|
|
void __thiscall FUN_0101c764(void *this,undefined4 param_1)
|
|
|
|
{
|
|
FUN_01008c8f(param_1,(int)this + 0x15);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
undefined4 * __thiscall
|
|
FUN_0101c77e(void *this,undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 *param_4
|
|
,undefined4 *param_5)
|
|
|
|
{
|
|
undefined4 uVar1;
|
|
|
|
FUN_01015866(this,param_1,param_2,param_3);
|
|
*(undefined4 *)this = 0x1002864;
|
|
*(undefined4 *)((int)this + 0x45) = *param_4;
|
|
*(undefined4 *)((int)this + 0x49) = param_4[1];
|
|
*(undefined4 *)((int)this + 0x4d) = *param_5;
|
|
uVar1 = param_5[1];
|
|
*(undefined4 *)((int)this + 0x51) = uVar1;
|
|
FUN_01008beb((int)this + 0x15,*(undefined4 *)((int)this + 0x45),*(undefined4 *)((int)this + 0x49),
|
|
*(undefined4 *)((int)this + 0x4d),uVar1);
|
|
return (undefined4 *)this;
|
|
}
|
|
|
|
|
|
|
|
void __thiscall FUN_0101c7e6(void *this,undefined4 param_1,undefined4 param_2)
|
|
|
|
{
|
|
(**(code **)(**(int **)((int)this + 4) + 0x14))
|
|
(param_1,(int)this + 0x39,(int)this + 0x15,param_2,this);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void __thiscall FUN_0101c813(void *this,float param_1)
|
|
|
|
{
|
|
float fVar1;
|
|
float fVar2;
|
|
float fVar3;
|
|
|
|
fVar1 = param_1 * *(float *)((int)this + 0x15);
|
|
param_1 = param_1 * *(float *)((int)this + 0x19);
|
|
fVar2 = fVar1 + *(float *)((int)this + 0x45);
|
|
*(float *)((int)this + 0x45) = fVar2;
|
|
fVar3 = param_1 + *(float *)((int)this + 0x49);
|
|
*(float *)((int)this + 0x49) = fVar3;
|
|
fVar1 = fVar1 + *(float *)((int)this + 0x4d);
|
|
*(float *)((int)this + 0x4d) = fVar1;
|
|
param_1 = param_1 + *(float *)((int)this + 0x51);
|
|
*(float *)((int)this + 0x51) = param_1;
|
|
FUN_01008beb((float *)((int)this + 0x15),fVar2,fVar3,fVar1,param_1);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
uint __fastcall FUN_0101c87b(int iParm1)
|
|
|
|
{
|
|
float fVar1;
|
|
float fVar2;
|
|
float fVar3;
|
|
float fVar4;
|
|
int iVar5;
|
|
uint uVar6;
|
|
uint uVar7;
|
|
bool in_PF;
|
|
bool bVar8;
|
|
int local_1c;
|
|
int local_18;
|
|
int local_c;
|
|
uint local_8;
|
|
|
|
local_c = FUN_0100b0f4(*(undefined4 *)(iParm1 + 0x45));
|
|
local_8 = FUN_0100b1ae(*(undefined4 *)(iParm1 + 0x49));
|
|
iVar5 = FUN_0100b0f4(*(undefined4 *)(iParm1 + 0x4d));
|
|
uVar6 = FUN_0100b1ae(*(undefined4 *)(iParm1 + 0x51));
|
|
if (in_PF) {
|
|
local_18 = -1;
|
|
}
|
|
else {
|
|
local_18 = 1;
|
|
}
|
|
uVar7 = uVar6 & 0xffff0000 |
|
|
(uint)(ushort)((ushort)(*(float *)(iParm1 + 0x49) < *(float *)(iParm1 + 0x51)) << 8 |
|
|
(ushort)(*(float *)(iParm1 + 0x49) == *(float *)(iParm1 + 0x51)) << 0xe);
|
|
if (in_PF) {
|
|
local_1c = -1;
|
|
}
|
|
else {
|
|
local_1c = 1;
|
|
}
|
|
if (local_8 == uVar6) {
|
|
if (local_18 == 1) {
|
|
while (local_c <= iVar5) {
|
|
uVar7 = FUN_0100b961(DAT_0102503c,local_c,local_8,iParm1);
|
|
local_c = local_c + 1;
|
|
}
|
|
}
|
|
else {
|
|
while (iVar5 <= local_c) {
|
|
uVar7 = FUN_0100b961(DAT_0102503c,local_c,local_8,iParm1);
|
|
local_c = local_c + -1;
|
|
}
|
|
}
|
|
}
|
|
else {
|
|
if (local_c == iVar5) {
|
|
if (local_1c == 1) {
|
|
while ((int)local_8 <= (int)uVar6) {
|
|
uVar7 = FUN_0100b961(DAT_0102503c,local_c,local_8,iParm1);
|
|
local_8 = local_8 + 1;
|
|
}
|
|
}
|
|
else {
|
|
while ((int)uVar6 <= (int)local_8) {
|
|
uVar7 = FUN_0100b961(DAT_0102503c,local_c,local_8,iParm1);
|
|
local_8 = local_8 - 1;
|
|
}
|
|
}
|
|
}
|
|
else {
|
|
fVar1 = (*(float *)(iParm1 + 0x49) - *(float *)(iParm1 + 0x51)) /
|
|
(*(float *)(iParm1 + 0x45) - *(float *)(iParm1 + 0x4d));
|
|
fVar2 = *(float *)(iParm1 + 0x49) - fVar1 * *(float *)(iParm1 + 0x45);
|
|
FUN_0100b961(DAT_0102503c,local_c,local_8,iParm1);
|
|
if (local_18 == 1) {
|
|
bVar8 = local_1c == 1;
|
|
local_1c = local_c + 1;
|
|
if (bVar8) {
|
|
do {
|
|
if (in_PF) {
|
|
if (!in_PF) {
|
|
local_c = local_c + 1;
|
|
}
|
|
local_8 = local_8 + 1;
|
|
}
|
|
else {
|
|
local_c = local_c + 1;
|
|
}
|
|
uVar7 = FUN_0100b961(DAT_0102503c,local_c,local_8,iParm1);
|
|
} while ((local_c != iVar5) || (local_8 != uVar6));
|
|
}
|
|
else {
|
|
do {
|
|
fVar3 = (float)local_8 * DAT_0102503c[1] + DAT_0102503c[7];
|
|
fVar4 = ((float)local_1c * *DAT_0102503c + DAT_0102503c[6]) * fVar1 + fVar2;
|
|
if ((ushort)((ushort)(fVar4 < fVar3) << 8 | (ushort)(fVar4 == fVar3) << 0xe) == 0) {
|
|
local_c = local_c + 1;
|
|
local_1c = local_1c + 1;
|
|
}
|
|
else {
|
|
if (!in_PF) {
|
|
local_c = local_c + 1;
|
|
local_1c = local_1c + 1;
|
|
}
|
|
local_8 = local_8 - 1;
|
|
}
|
|
uVar7 = FUN_0100b961(DAT_0102503c,local_c,local_8,iParm1);
|
|
} while ((local_c != iVar5) || (local_8 != uVar6));
|
|
}
|
|
}
|
|
else {
|
|
if (local_1c == 1) {
|
|
do {
|
|
if (in_PF) {
|
|
if (!in_PF) {
|
|
local_c = local_c + -1;
|
|
}
|
|
local_8 = local_8 + 1;
|
|
}
|
|
else {
|
|
local_c = local_c + -1;
|
|
}
|
|
uVar7 = FUN_0100b961(DAT_0102503c,local_c,local_8,iParm1);
|
|
} while ((local_c != iVar5) || (local_8 != uVar6));
|
|
}
|
|
else {
|
|
do {
|
|
fVar3 = (float)local_8 * DAT_0102503c[1] + DAT_0102503c[7];
|
|
fVar4 = ((float)local_c * *DAT_0102503c + DAT_0102503c[6]) * fVar1 + fVar2;
|
|
if ((ushort)((ushort)(fVar4 < fVar3) << 8 | (ushort)(fVar4 == fVar3) << 0xe) == 0) {
|
|
local_c = local_c + -1;
|
|
}
|
|
else {
|
|
if (!in_PF) {
|
|
local_c = local_c + -1;
|
|
}
|
|
local_8 = local_8 - 1;
|
|
}
|
|
uVar7 = FUN_0100b961(DAT_0102503c,local_c,local_8,iParm1);
|
|
} while ((local_c != iVar5) || (local_8 != uVar6));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return uVar7;
|
|
}
|
|
|
|
|
|
|
|
void FUN_0101cb8e(float *param_1,float *param_2)
|
|
|
|
{
|
|
*param_1 = *param_1 + *param_2;
|
|
param_1[1] = param_2[1] + param_1[1];
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_0101cbb1(float *param_1,float param_2,float param_3,float *param_4)
|
|
|
|
{
|
|
float fVar1;
|
|
float fVar2;
|
|
float fVar3;
|
|
|
|
fVar1 = *param_1;
|
|
fVar2 = *param_4;
|
|
fVar3 = param_4[1];
|
|
*param_1 = ((fVar1 - fVar2) * param_3 - (param_1[1] - fVar3) * param_2) + *param_4;
|
|
param_1[1] = (param_1[1] - fVar3) * param_3 + (fVar1 - fVar2) * param_2 + param_4[1];
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
float10 FUN_0101cbf5(float *param_1,float *param_2)
|
|
|
|
{
|
|
return SQRT(((float10)*param_1 - (float10)*param_2) * ((float10)*param_1 - (float10)*param_2) +
|
|
((float10)param_1[1] - (float10)param_2[1]) *
|
|
((float10)param_1[1] - (float10)param_2[1]));
|
|
}
|
|
|
|
|
|
|
|
float10 FUN_0101cc23(float param_1,float param_2,undefined4 param_3,float param_4,float param_5)
|
|
|
|
{
|
|
return ((float10)param_1 - (float10)param_4) * ((float10)param_1 - (float10)param_4) +
|
|
((float10)param_2 - (float10)param_5) * ((float10)param_2 - (float10)param_5);
|
|
}
|
|
|
|
|
|
|
|
float10 FUN_0101cc4b(float *param_1,float *param_2)
|
|
|
|
{
|
|
return (float10)*param_1 * (float10)*param_2 + (float10)param_1[1] * (float10)param_2[1];
|
|
}
|
|
|
|
|
|
|
|
void FUN_0101cc6b(float param_1,float *param_2,float *param_3)
|
|
|
|
{
|
|
float10 fVar1;
|
|
|
|
fVar1 = (float10)fsin((float10)param_1);
|
|
*param_2 = (float)fVar1;
|
|
fVar1 = (float10)fcos((float10)param_1);
|
|
*param_3 = (float)fVar1;
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void __thiscall FUN_0101cc8d(void *this,int param_1,float param_2)
|
|
|
|
{
|
|
undefined4 extraout_EDX;
|
|
float local_1c;
|
|
float local_18;
|
|
float local_10;
|
|
float local_c;
|
|
|
|
local_10 = param_2 * *(float *)(param_1 + 0x36) + *(float *)(param_1 + 0x2a);
|
|
local_c = param_2 * *(float *)(param_1 + 0x3a) + *(float *)(param_1 + 0x2e);
|
|
local_1c = local_10 - *(float *)((int)this + 0x15);
|
|
local_18 = local_c - *(float *)((int)this + 0x19);
|
|
FUN_01008ae9(&local_1c);
|
|
(**(code **)(**(int **)((int)this + 4) + 0x14))(extraout_EDX,&local_10,&local_1c,param_2,this);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_0101ccf3(float *param_1,float param_2)
|
|
|
|
{
|
|
float10 fVar1;
|
|
float10 fVar2;
|
|
float10 fVar3;
|
|
|
|
fVar1 = (float10)fsin((float10)param_2);
|
|
fVar2 = (float10)fcos((float10)param_2);
|
|
fVar3 = fVar2 * (float10)*param_1 - fVar1 * (float10)param_1[1];
|
|
*param_1 = (float)fVar3;
|
|
param_1[1] = (float)(fVar2 * (float10)param_1[1] + fVar3 * fVar1);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
// Library Function - Single Match
|
|
// Name: ___security_init_cookie
|
|
// Library: Visual Studio 2005 Release
|
|
|
|
void __cdecl ___security_init_cookie(void)
|
|
|
|
{
|
|
DWORD DVar1;
|
|
DWORD DVar2;
|
|
DWORD DVar3;
|
|
uint local_14;
|
|
uint local_10;
|
|
_FILETIME local_c;
|
|
|
|
if ((DAT_01024778 == 0) || (DAT_01024778 == 0xbb40)) {
|
|
GetSystemTimeAsFileTime((LPFILETIME)&local_c);
|
|
DVar1 = GetCurrentProcessId();
|
|
DVar2 = GetCurrentThreadId();
|
|
DVar3 = GetTickCount();
|
|
QueryPerformanceCounter((LARGE_INTEGER *)&local_14);
|
|
DAT_01024778 = (local_10 ^ local_14 ^
|
|
local_c.dwHighDateTime ^ local_c.dwLowDateTime ^ DVar1 ^ DVar2 ^ DVar3) & 0xffff;
|
|
if (DAT_01024778 == 0) {
|
|
DAT_01024778 = 0xbb40;
|
|
}
|
|
}
|
|
DAT_01024774 = ~DAT_01024778;
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void __fastcall FUN_0101cd9e(uint uParm1,undefined4 uParm2)
|
|
|
|
{
|
|
HANDLE hProcess;
|
|
int iVar1;
|
|
EXCEPTION_RECORD *pEVar2;
|
|
byte in_PF;
|
|
byte in_AF;
|
|
byte in_TF;
|
|
byte in_IF;
|
|
byte in_NT;
|
|
byte in_AC;
|
|
byte in_VIF;
|
|
byte in_VIP;
|
|
byte in_ID;
|
|
UINT uExitCode;
|
|
EXCEPTION_RECORD local_334;
|
|
uint local_2e4;
|
|
undefined4 local_2e0;
|
|
undefined4 local_2dc [39];
|
|
undefined4 local_234;
|
|
uint local_230;
|
|
uint local_21c;
|
|
_EXCEPTION_POINTERS local_c;
|
|
|
|
if ((uParm1 == DAT_01024778) && ((uParm1 & 0xffff0000) == 0)) {
|
|
return;
|
|
}
|
|
local_21c = (uint)(in_NT & 1) * 0x4000 | (uint)SBORROW4((int)&stack0xfffffffc,0x330) * 0x800 |
|
|
(uint)(in_IF & 1) * 0x200 | (uint)(in_TF & 1) * 0x100 |
|
|
(uint)((int)&local_334 < 0) * 0x80 |
|
|
(uint)((undefined *)register0x00000010 == (undefined *)0x334) * 0x40 |
|
|
(uint)(in_AF & 1) * 0x10 | (uint)(in_PF & 1) * 4 |
|
|
(uint)(&stack0xfffffffc < (undefined *)0x330) | (uint)(in_ID & 1) * 0x200000 |
|
|
(uint)(in_VIP & 1) * 0x100000 | (uint)(in_VIF & 1) * 0x80000 |
|
|
(uint)(in_AC & 1) * 0x40000;
|
|
local_2dc[0] = 0x10001;
|
|
iVar1 = 0x14;
|
|
pEVar2 = &local_334;
|
|
while (iVar1 != 0) {
|
|
iVar1 = iVar1 + -1;
|
|
pEVar2->ExceptionCode = 0;
|
|
pEVar2 = (EXCEPTION_RECORD *)&pEVar2->ExceptionFlags;
|
|
}
|
|
local_334.ExceptionCode = 0xc0000409;
|
|
local_c.ExceptionRecord = &local_334;
|
|
local_c.ContextRecord = (PCONTEXT)local_2dc;
|
|
local_2e4 = DAT_01024778;
|
|
local_2e0 = DAT_01024774;
|
|
local_234 = uParm2;
|
|
local_230 = uParm1;
|
|
SetUnhandledExceptionFilter((LPTOP_LEVEL_EXCEPTION_FILTER)0x0);
|
|
UnhandledExceptionFilter(&local_c);
|
|
uExitCode = 0x502;
|
|
hProcess = GetCurrentProcess();
|
|
TerminateProcess(hProcess,uExitCode);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
// Library Function - Single Match
|
|
// Name: ?GetRegisteredLocation@@YGHPAD@Z
|
|
// Library: Visual Studio 2005 Release
|
|
// int __stdcall GetRegisteredLocation(char *)
|
|
|
|
int GetRegisteredLocation(char *param_1)
|
|
|
|
{
|
|
LSTATUS LVar1;
|
|
uint uVar2;
|
|
DWORD local_c;
|
|
HKEY local_8;
|
|
|
|
LVar1 = RegOpenKeyExA((HKEY)0x80000000,
|
|
"CLSID\\{ADB880A6-D8FF-11CF-9377-00AA003B7A11}\\InprocServer32",0,0x20019,
|
|
(PHKEY)&local_8);
|
|
if (LVar1 == 0) {
|
|
local_c = 0x104;
|
|
LVar1 = RegQueryValueExA(local_8,"",(LPDWORD)0x0,(LPDWORD)0x0,(LPBYTE)param_1,&local_c);
|
|
uVar2 = (uint)(LVar1 == 0);
|
|
RegCloseKey(local_8);
|
|
}
|
|
else {
|
|
uVar2 = 0;
|
|
}
|
|
return uVar2;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
|
|
// Library Function - Single Match
|
|
// Name: _HtmlHelpA@16
|
|
// Library: Visual Studio 2005 Release
|
|
|
|
void _HtmlHelpA_16(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)
|
|
|
|
{
|
|
int iVar1;
|
|
char local_10c [260];
|
|
undefined4 local_8;
|
|
|
|
local_8 = DAT_01024778;
|
|
if ((DAT_0102572c == (HMODULE)0x0) && (_DAT_01025728 == 0)) {
|
|
iVar1 = GetRegisteredLocation(local_10c);
|
|
if (iVar1 != 0) {
|
|
DAT_0102572c = LoadLibraryA(local_10c);
|
|
}
|
|
if (DAT_0102572c != (HMODULE)0x0) goto LAB_0101cf89;
|
|
DAT_0102572c = LoadLibraryA("hhctrl.ocx");
|
|
if (DAT_0102572c != (HMODULE)0x0) goto LAB_0101cf89;
|
|
LAB_0101cfa4:
|
|
_DAT_01025728 = 1;
|
|
}
|
|
else {
|
|
LAB_0101cf89:
|
|
if (DAT_01025720 == (FARPROC)0x0) {
|
|
DAT_01025720 = GetProcAddress(DAT_0102572c,(LPCSTR)0xe);
|
|
if (DAT_01025720 == (FARPROC)0x0) goto LAB_0101cfa4;
|
|
}
|
|
(*DAT_01025720)(param_1,param_2,param_3,param_4);
|
|
}
|
|
FUN_0101cd9e();
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
short * FUN_0101cfd0(short *param_1)
|
|
|
|
{
|
|
if (((param_1 == (short *)0x0) || (*param_1 != 0x5432)) || (param_1[0xde] != 0x5432)) {
|
|
MessageBeep(0xffffffff);
|
|
wsprintfA(s_WaveMix_V_2_3_by_Angel_M__Diaz__J_01024780,
|
|
"Invalid session handle 0x%04X passed to WaveMix API",param_1);
|
|
MessageBoxA((HWND)0x0,s_WaveMix_V_2_3_by_Angel_M__Diaz__J_01024780,"WavMix32",0x30);
|
|
param_1 = (short *)0x0;
|
|
}
|
|
return param_1;
|
|
}
|
|
|
|
|
|
|
|
uint FUN_0101d02c(uint param_1)
|
|
|
|
{
|
|
if (param_1 != 0) {
|
|
param_1 = (uint)(*(short *)(param_1 + 0x40) == 0x5432);
|
|
}
|
|
return param_1;
|
|
}
|
|
|
|
|
|
|
|
uint FUN_0101d04e(int *param_1)
|
|
|
|
{
|
|
int iVar1;
|
|
int *piVar2;
|
|
bool bVar3;
|
|
|
|
iVar1 = 4;
|
|
bVar3 = true;
|
|
piVar2 = (int *)(DAT_01027be0 + 0x17c);
|
|
do {
|
|
if (iVar1 == 0) break;
|
|
iVar1 = iVar1 + -1;
|
|
bVar3 = *param_1 == *piVar2;
|
|
param_1 = param_1 + 1;
|
|
piVar2 = piVar2 + 1;
|
|
} while (bVar3);
|
|
return (uint)bVar3;
|
|
}
|
|
|
|
|
|
|
|
undefined4 FUN_0101d079(undefined4 param_1)
|
|
|
|
{
|
|
DWORD DVar1;
|
|
|
|
DVar1 = GetVersion();
|
|
if ((0x7fffffff < DVar1) && (DVar1 = GetVersion(), 3 < (byte)DVar1)) {
|
|
param_1 = 0;
|
|
}
|
|
return param_1;
|
|
}
|
|
|
|
|
|
|
|
void FUN_0101d0a5(UINT_PTR param_1)
|
|
|
|
{
|
|
UINT UVar1;
|
|
tagWAVEOUTCAPSA local_3c;
|
|
undefined4 local_8;
|
|
|
|
local_8 = DAT_01024778;
|
|
UVar1 = waveOutGetNumDevs();
|
|
if ((((int)param_1 <= (int)UVar1) && (-1 < (int)param_1)) && (UVar1 != 0)) {
|
|
waveOutGetDevCapsA(param_1,(LPWAVEOUTCAPSA)&local_3c,0x34);
|
|
}
|
|
FUN_0101cd9e();
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_0101d0fc(HWAVEOUT param_1,int param_2)
|
|
|
|
{
|
|
UINT local_14;
|
|
undefined4 local_10;
|
|
undefined4 local_8;
|
|
|
|
local_8 = DAT_01024778;
|
|
if (param_2 == 0) {
|
|
timeGetTime();
|
|
}
|
|
else {
|
|
local_14 = 4;
|
|
waveOutGetPosition(param_1,(LPMMTIME)&local_14,0xc);
|
|
(**(code **)(DAT_01027be0 + 0x1b4))(local_10,*(undefined4 *)(DAT_01027be0 + 0x1a8));
|
|
}
|
|
FUN_0101cd9e();
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
int FUN_0101d178(int param_1,int param_2)
|
|
|
|
{
|
|
return param_2 + param_1;
|
|
}
|
|
|
|
|
|
|
|
int FUN_0101d18e(int param_1,int param_2)
|
|
|
|
{
|
|
return param_1 - param_2;
|
|
}
|
|
|
|
|
|
|
|
void FUN_0101d1a2(uint param_1)
|
|
|
|
{
|
|
uint *puVar1;
|
|
int iVar2;
|
|
DWORD DVar3;
|
|
UINT local_14;
|
|
uint local_10;
|
|
undefined4 local_8;
|
|
|
|
local_8 = DAT_01024778;
|
|
local_14 = 4;
|
|
if (*(HWAVEOUT *)(DAT_01027be0 + 0xc) == (HWAVEOUT)0x0) {
|
|
local_10 = 0;
|
|
}
|
|
else {
|
|
waveOutGetPosition(*(HWAVEOUT *)(DAT_01027be0 + 0xc),(LPMMTIME)&local_14,0xc);
|
|
}
|
|
iVar2 = DAT_01027be0;
|
|
if (local_10 < param_1) {
|
|
*(int *)(DAT_01027be0 + 0x1a8) = param_1 - local_10;
|
|
*(undefined4 *)(iVar2 + 0x1b4) = 0x101d178;
|
|
}
|
|
else {
|
|
*(int *)(DAT_01027be0 + 0x1a8) = local_10 - param_1;
|
|
*(undefined4 *)(iVar2 + 0x1b4) = 0x101d18e;
|
|
}
|
|
DVar3 = timeGetTime();
|
|
iVar2 = DAT_01027be0;
|
|
puVar1 = (uint *)(DAT_01027be0 + 0x184);
|
|
*(uint *)(DAT_01027be0 + 0x19c) = param_1;
|
|
*(int *)(iVar2 + 0x1a0) = DVar3 - (param_1 * 1000) / *puVar1;
|
|
FUN_0101cd9e();
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_0101d251(HWAVEOUT param_1)
|
|
|
|
{
|
|
uint uVar1;
|
|
|
|
uVar1 = FUN_0101d0fc(param_1,*(int *)(DAT_01027be0 + 0x1a4));
|
|
waveOutReset(param_1);
|
|
FUN_0101d1a2(uVar1);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_0101d285(undefined *param_1,byte **param_2,ushort *param_3,int param_4,ushort param_5)
|
|
|
|
{
|
|
ushort *puVar1;
|
|
int *piVar2;
|
|
ushort uVar3;
|
|
ushort uVar4;
|
|
ushort *puVar5;
|
|
undefined uVar6;
|
|
uint uVar7;
|
|
undefined uVar8;
|
|
byte *pbVar9;
|
|
uint local_c;
|
|
|
|
if (*(short *)(DAT_01027be0 + 0x17e) == 2) {
|
|
if (param_4 == 1) {
|
|
pbVar9 = *param_2;
|
|
uVar3 = *param_3;
|
|
uVar4 = param_3[1];
|
|
if (param_5 != 0) {
|
|
uVar7 = (uint)(ushort)((param_5 - 1 >> 1) + 1);
|
|
do {
|
|
*param_1 = (&DAT_01025970)[(uint)uVar3 * 0x100 + (uint)*pbVar9];
|
|
param_1[1] = (&DAT_01025970)[(uint)uVar4 * 0x100 + (uint)pbVar9[1]];
|
|
param_1 = param_1 + 2;
|
|
pbVar9 = pbVar9 + 2;
|
|
uVar7 = uVar7 - 1;
|
|
} while (uVar7 != 0);
|
|
}
|
|
}
|
|
else {
|
|
uVar3 = 0;
|
|
if (param_5 != 0) {
|
|
local_c = (uint)(ushort)((param_5 - 1 >> 1) + 1);
|
|
do {
|
|
_uVar6 = 0x80;
|
|
uVar6 = 0x80;
|
|
_uVar8 = 0x80;
|
|
uVar8 = 0x80;
|
|
if (0 < param_4) {
|
|
_param_5 = param_4;
|
|
puVar5 = param_3;
|
|
do {
|
|
pbVar9 = (byte *)((uint)uVar3 +
|
|
*(int *)((int)((int)param_2 - (int)param_3) + (int)puVar5));
|
|
_uVar8 = _uVar8 + -0x80 +
|
|
(uint)(byte)(&DAT_01025970)[(uint)*pbVar9 + (uint)*puVar5 * 0x100];
|
|
uVar8 = (undefined)_uVar8;
|
|
puVar1 = puVar5 + 1;
|
|
puVar5 = puVar5 + 2;
|
|
_param_5 = _param_5 + -1;
|
|
_uVar6 = _uVar6 + -0x80 +
|
|
(uint)(byte)(&DAT_01025970)[(uint)pbVar9[1] + (uint)*puVar1 * 0x100];
|
|
uVar6 = (undefined)_uVar6;
|
|
} while (_param_5 != 0);
|
|
if (_uVar8 < 0) {
|
|
uVar8 = 0;
|
|
}
|
|
else {
|
|
if (0xff < _uVar8) {
|
|
uVar8 = 0xff;
|
|
}
|
|
}
|
|
if (_uVar6 < 0) {
|
|
uVar6 = 0;
|
|
}
|
|
else {
|
|
if (0xff < _uVar6) {
|
|
uVar6 = 0xff;
|
|
}
|
|
}
|
|
}
|
|
uVar3 = uVar3 + 2;
|
|
*param_1 = uVar8;
|
|
param_1[1] = uVar6;
|
|
param_1 = param_1 + 2;
|
|
local_c = local_c - 1;
|
|
} while (local_c != 0);
|
|
}
|
|
}
|
|
}
|
|
else {
|
|
if (param_4 == 1) {
|
|
pbVar9 = *param_2;
|
|
uVar3 = param_3[1];
|
|
uVar4 = *param_3;
|
|
if (param_5 != 0) {
|
|
uVar7 = (uint)param_5;
|
|
do {
|
|
*param_1 = (&DAT_01025970)
|
|
[((int)((uint)uVar3 + (uint)uVar4) / 2 & 0xffffU) * 0x100 + (uint)*pbVar9];
|
|
param_1 = param_1 + 1;
|
|
pbVar9 = pbVar9 + 1;
|
|
uVar7 = uVar7 - 1;
|
|
} while (uVar7 != 0);
|
|
}
|
|
}
|
|
else {
|
|
uVar3 = 0;
|
|
if (param_5 != 0) {
|
|
local_c = (uint)param_5;
|
|
do {
|
|
_uVar8 = 0x80;
|
|
uVar8 = 0x80;
|
|
if (0 < param_4) {
|
|
_param_5 = param_4;
|
|
puVar5 = param_3;
|
|
do {
|
|
uVar4 = *puVar5;
|
|
puVar1 = puVar5 + 1;
|
|
piVar2 = (int *)((int)puVar5 + (int)((int)param_2 - (int)param_3));
|
|
puVar5 = puVar5 + 2;
|
|
_param_5 = _param_5 + -1;
|
|
_uVar8 = _uVar8 + -0x80 +
|
|
(uint)(byte)(&DAT_01025970)
|
|
[(uint)*(byte *)(*piVar2 + (uint)uVar3) +
|
|
((int)((uint)*puVar1 + (uint)uVar4) / 2 & 0xffffU) * 0x100];
|
|
uVar8 = (undefined)_uVar8;
|
|
} while (_param_5 != 0);
|
|
if (_uVar8 < 0) {
|
|
uVar8 = 0;
|
|
}
|
|
else {
|
|
if (0xff < _uVar8) {
|
|
uVar8 = 0xff;
|
|
}
|
|
}
|
|
}
|
|
uVar3 = uVar3 + 1;
|
|
local_c = local_c - 1;
|
|
*param_1 = uVar8;
|
|
param_1 = param_1 + 1;
|
|
} while (local_c != 0);
|
|
}
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
|
|
|
|
void FUN_0101d491(void)
|
|
|
|
{
|
|
undefined4 *puVar1;
|
|
undefined4 *puVar2;
|
|
|
|
puVar2 = &DAT_01026470;
|
|
do {
|
|
puVar1 = puVar2 + 0xf;
|
|
*(undefined4 **)puVar2 = puVar1;
|
|
puVar2 = puVar1;
|
|
} while ((int)puVar1 < 0x1027b68);
|
|
DAT_01025964 = &DAT_01026470;
|
|
_DAT_01027ba4 = 0;
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_0101d4b9(void)
|
|
|
|
{
|
|
undefined4 uVar1;
|
|
|
|
if (DAT_01025964 == (undefined4 *)0x0) {
|
|
return;
|
|
}
|
|
uVar1 = *DAT_01025964;
|
|
*DAT_01025964 = 0;
|
|
DAT_01025964 = (undefined4 *)uVar1;
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_0101d4d4(undefined4 *param_1)
|
|
|
|
{
|
|
if (param_1 != (undefined4 *)0x0) {
|
|
*(undefined4 **)param_1 = DAT_01025964;
|
|
DAT_01025964 = param_1;
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_0101d4f6(HWAVEOUT param_1,int param_2)
|
|
|
|
{
|
|
LPWAVEHDR *ppwVar1;
|
|
HGLOBAL hMem;
|
|
int iVar2;
|
|
|
|
iVar2 = 0;
|
|
do {
|
|
ppwVar1 = (LPWAVEHDR *)(param_2 + iVar2 * 4);
|
|
if (*ppwVar1 != (LPWAVEHDR)0x0) {
|
|
waveOutUnprepareHeader(param_1,*ppwVar1,0x20);
|
|
hMem = GlobalHandle(*ppwVar1);
|
|
GlobalUnlock(hMem);
|
|
hMem = GlobalHandle(*ppwVar1);
|
|
GlobalFree(hMem);
|
|
*ppwVar1 = (LPWAVEHDR)0x0;
|
|
}
|
|
iVar2 = iVar2 + 1;
|
|
} while (iVar2 < 10);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
|
|
|
|
undefined4 FUN_0101d549(HWAVEOUT param_1,int param_2)
|
|
|
|
{
|
|
uint *puVar1;
|
|
int **ppiVar2;
|
|
HGLOBAL hMem;
|
|
int *piVar3;
|
|
MMRESULT MVar4;
|
|
int iVar5;
|
|
|
|
iVar5 = 0;
|
|
do {
|
|
hMem = GlobalAlloc(0x2000,0x2b41);
|
|
piVar3 = (int *)GlobalLock(hMem);
|
|
ppiVar2 = (int **)(param_2 + iVar5 * 4);
|
|
*ppiVar2 = piVar3;
|
|
if (piVar3 == (int *)0x0) {
|
|
if (_DAT_01027be4 != 0) {
|
|
MessageBoxA((HWND)0x0,
|
|
|
|
"Unable to allocate memory for waveform data. Try making more memory available by closing other applications."
|
|
,"WavMix32",0x30);
|
|
}
|
|
while (iVar5 = iVar5 + -1, -1 < iVar5) {
|
|
hMem = GlobalHandle(*(LPCVOID *)(param_2 + iVar5 * 4));
|
|
GlobalUnlock(hMem);
|
|
hMem = GlobalHandle(*(LPCVOID *)(param_2 + iVar5 * 4));
|
|
GlobalFree(hMem);
|
|
*(undefined4 *)(param_2 + iVar5 * 4) = 0;
|
|
}
|
|
return 0;
|
|
}
|
|
*(int **)piVar3 = piVar3 + 0xc;
|
|
(*ppiVar2)[1] = *(int *)(DAT_01027be0 + 0x18c);
|
|
(*ppiVar2)[4] = 0;
|
|
(*ppiVar2)[5] = 0;
|
|
(*ppiVar2)[8] = 1;
|
|
iVar5 = iVar5 + 1;
|
|
(*ppiVar2)[9] = 0;
|
|
} while (iVar5 < 10);
|
|
iVar5 = 0;
|
|
do {
|
|
MVar4 = waveOutPrepareHeader(param_1,*(LPWAVEHDR *)(param_2 + iVar5 * 4),0x20);
|
|
if (MVar4 != 0) {
|
|
if (_DAT_01027be4 != 0) {
|
|
MessageBoxA((HWND)0x0,"Unable to prepare wave header.","WavMix32",0x30);
|
|
}
|
|
FUN_0101d4f6(param_1,param_2);
|
|
return 0;
|
|
}
|
|
puVar1 = (uint *)(*(int *)(param_2 + iVar5 * 4) + 0x10);
|
|
*puVar1 = *puVar1 | 1;
|
|
iVar5 = iVar5 + 1;
|
|
} while (iVar5 < 10);
|
|
return 1;
|
|
}
|
|
|
|
|
|
|
|
void FUN_0101d649(void)
|
|
|
|
{
|
|
undefined4 *puVar1;
|
|
|
|
puVar1 = (undefined4 *)(DAT_01027be0 + 0x198);
|
|
if ((undefined *)*puVar1 == &DAT_010257e4) {
|
|
*puVar1 = 0x1025770;
|
|
return;
|
|
}
|
|
*puVar1 = 0x10257e4;
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
int * FUN_0101d66b(void)
|
|
|
|
{
|
|
int iVar1;
|
|
int iVar2;
|
|
int *piVar3;
|
|
|
|
iVar1 = *(int *)(DAT_01027be0 + 400);
|
|
iVar2 = 0;
|
|
if (0 < iVar1) {
|
|
piVar3 = *(int **)(DAT_01027be0 + 0x198);
|
|
do {
|
|
if (*(int *)(*piVar3 + 0x20) != 0) break;
|
|
iVar2 = iVar2 + 1;
|
|
piVar3 = piVar3 + 1;
|
|
} while (iVar2 < iVar1);
|
|
}
|
|
if (iVar2 < iVar1) {
|
|
iVar1 = *(int *)(DAT_01027be0 + 0x18c);
|
|
piVar3 = *(int **)(*(int *)(DAT_01027be0 + 0x198) + iVar2 * 4);
|
|
piVar3[8] = 0;
|
|
piVar3[1] = iVar1;
|
|
*(int **)piVar3 = piVar3 + 0xc;
|
|
piVar3[10] = DAT_01025798;
|
|
return piVar3;
|
|
}
|
|
return (int *)0x0;
|
|
}
|
|
|
|
|
|
|
|
int FUN_0101d6c8(int param_1)
|
|
|
|
{
|
|
int iVar1;
|
|
int iVar2;
|
|
int iVar3;
|
|
bool bVar4;
|
|
|
|
if (DAT_01027bec != 0) {
|
|
if (param_1 == DAT_01027bec) {
|
|
DAT_01027bec = *(int *)(param_1 + 0x2c);
|
|
if (DAT_01027bec == 0) {
|
|
DAT_01027bf0 = 0;
|
|
}
|
|
LAB_0101d727:
|
|
*(undefined4 *)(param_1 + 0x2c) = 0;
|
|
return param_1;
|
|
}
|
|
iVar2 = *(int *)(DAT_01027bec + 0x2c);
|
|
iVar3 = DAT_01027bec;
|
|
if (*(int *)(DAT_01027bec + 0x2c) != 0) {
|
|
do {
|
|
iVar1 = iVar2;
|
|
iVar2 = iVar1;
|
|
if (iVar1 == param_1) break;
|
|
iVar2 = *(int *)(iVar1 + 0x2c);
|
|
iVar3 = iVar1;
|
|
} while (iVar2 != 0);
|
|
if (iVar2 != 0) {
|
|
bVar4 = iVar2 == DAT_01027bf0;
|
|
*(undefined4 *)(iVar3 + 0x2c) = *(undefined4 *)(iVar2 + 0x2c);
|
|
if (bVar4) {
|
|
DAT_01027bf0 = iVar3;
|
|
}
|
|
goto LAB_0101d727;
|
|
}
|
|
}
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
|
|
|
|
void thunk_FUN_0101d743(void)
|
|
|
|
{
|
|
int iVar1;
|
|
|
|
while (iVar1 = DAT_01027bec, DAT_01027bec != 0) {
|
|
*(undefined4 *)(DAT_01027bec + 0x20) = 1;
|
|
FUN_0101d6c8(iVar1);
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_0101d743(void)
|
|
|
|
{
|
|
int iVar1;
|
|
|
|
while (iVar1 = DAT_01027bec, DAT_01027bec != 0) {
|
|
*(undefined4 *)(DAT_01027bec + 0x20) = 1;
|
|
FUN_0101d6c8(iVar1);
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_0101d752(int param_1)
|
|
|
|
{
|
|
if ((*(int *)(param_1 + 0x10) != 0) && (*(HWAVEOUT *)(param_1 + 0xc) != (HWAVEOUT)0x0)) {
|
|
FUN_0101d251(*(HWAVEOUT *)(param_1 + 0xc));
|
|
thunk_FUN_0101d743();
|
|
FUN_0101d4f6(*(HWAVEOUT *)(param_1 + 0xc),(int)&DAT_010257e4);
|
|
FUN_0101d4f6(*(HWAVEOUT *)(param_1 + 0xc),(int)&DAT_01025770);
|
|
waveOutClose(*(HWAVEOUT *)(param_1 + 0xc));
|
|
*(undefined4 *)(param_1 + 0xc) = 0;
|
|
DestroyWindow(*(HWND *)(param_1 + 4));
|
|
*(undefined4 *)(param_1 + 4) = 0;
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
|
|
|
|
MMRESULT FUN_0101d7b1(void)
|
|
|
|
{
|
|
HWND *ppHVar1;
|
|
HWND pHVar2;
|
|
int iVar3;
|
|
MMRESULT MVar4;
|
|
WAVEFORMATEX local_18;
|
|
|
|
if (*(int *)(DAT_01027be0 + 0xc) == 0) {
|
|
pHVar2 = CreateWindowExA(0,"WavMix32","",0x8000000,0,0,0,0,(HWND)0x0,(HMENU)0x0,DAT_010257e0,
|
|
(LPVOID)0x0);
|
|
iVar3 = DAT_01027be0;
|
|
*(HWND *)(DAT_01027be0 + 4) = pHVar2;
|
|
if (pHVar2 == (HWND)0x0) {
|
|
if (_DAT_01027be4 != 0) {
|
|
MessageBoxA((HWND)0x0,"Failed to create callback window.","WavMix32",0x30);
|
|
}
|
|
}
|
|
else {
|
|
local_18.wFormatTag = *(WORD *)(iVar3 + 0x17c);
|
|
local_18.nChannels = *(WORD *)(iVar3 + 0x17e);
|
|
local_18.nSamplesPerSec = *(DWORD *)(iVar3 + 0x180);
|
|
local_18.nAvgBytesPerSec = *(DWORD *)(iVar3 + 0x184);
|
|
local_18.nBlockAlign = *(WORD *)(iVar3 + 0x188);
|
|
local_18.wBitsPerSample = *(WORD *)(iVar3 + 0x18a);
|
|
local_18.cbSize = 0;
|
|
MVar4 = waveOutOpen((LPHWAVEOUT)(iVar3 + 0xc),0xffffffff,(LPCWAVEFORMATEX)&local_18,
|
|
*(DWORD_PTR *)(iVar3 + 4),0,0x10000);
|
|
if (MVar4 != 0) {
|
|
DestroyWindow(*(HWND *)(DAT_01027be0 + 4));
|
|
*(undefined4 *)(DAT_01027be0 + 4) = 0;
|
|
return MVar4;
|
|
}
|
|
iVar3 = FUN_0101d549(*(HWAVEOUT *)(DAT_01027be0 + 0xc),(int)&DAT_010257e4);
|
|
if ((iVar3 != 0) &&
|
|
(iVar3 = FUN_0101d549(*(HWAVEOUT *)(DAT_01027be0 + 0xc),(int)&DAT_01025770), iVar3 != 0)) {
|
|
*(undefined4 *)(DAT_01027be0 + 0x198) = 0x10257e4;
|
|
goto LAB_0101d8cc;
|
|
}
|
|
FUN_0101d4f6(*(HWAVEOUT *)(DAT_01027be0 + 0xc),(int)&DAT_010257e4);
|
|
FUN_0101d4f6(*(HWAVEOUT *)(DAT_01027be0 + 0xc),(int)&DAT_01025770);
|
|
waveOutClose(*(HWAVEOUT *)(DAT_01027be0 + 0xc));
|
|
ppHVar1 = (HWND *)(DAT_01027be0 + 4);
|
|
*(undefined4 *)(DAT_01027be0 + 0xc) = 0;
|
|
DestroyWindow(*ppHVar1);
|
|
}
|
|
MVar4 = 1;
|
|
}
|
|
else {
|
|
LAB_0101d8cc:
|
|
MVar4 = 0;
|
|
}
|
|
return MVar4;
|
|
}
|
|
|
|
|
|
|
|
undefined4 FUN_0101d918(short *param_1,int param_2,uint param_3)
|
|
|
|
{
|
|
short *psVar1;
|
|
int *piVar2;
|
|
undefined4 uVar3;
|
|
|
|
psVar1 = FUN_0101cfd0(param_1);
|
|
if (psVar1 == (short *)0x0) {
|
|
DAT_01027be0 = psVar1;
|
|
return 5;
|
|
}
|
|
if (param_3 < 3) {
|
|
if (param_3 == 0) {
|
|
if (param_2 < 0x10) {
|
|
LAB_0101d959:
|
|
if (param_3 == 0) {
|
|
if (*(int *)(psVar1 + param_2 * 2 + 0x7a) == -1) {
|
|
DAT_01027be0 = psVar1;
|
|
*(int *)(psVar1 + param_2 * 2 + 0x7a) = 0;
|
|
psVar1[param_2 * 2 + 0x5a] = psVar1[0x58];
|
|
psVar1[param_2 * 2 + 0x5b] = psVar1[0x59];
|
|
*(int *)(psVar1 + 0x9a) = *(int *)(psVar1 + 0x9a) + 1;
|
|
return 0;
|
|
}
|
|
DAT_01027be0 = psVar1;
|
|
return 4;
|
|
}
|
|
if (param_3 == 1) {
|
|
param_2 = 0x10;
|
|
LAB_0101d96c:
|
|
DAT_01027be0 = psVar1;
|
|
if (-1 < param_2 + -1) {
|
|
piVar2 = (int *)(psVar1 + (param_2 + -1) * 2 + 0x7a);
|
|
DAT_01027be0 = psVar1;
|
|
do {
|
|
if (*piVar2 == -1) {
|
|
*piVar2 = 0;
|
|
*(short *)(piVar2 + -0x10) = psVar1[0x58];
|
|
*(short *)((int)piVar2 + -0x3e) = psVar1[0x59];
|
|
*(int *)(psVar1 + 0x9a) = *(int *)(psVar1 + 0x9a) + 1;
|
|
}
|
|
piVar2 = piVar2 + -1;
|
|
param_2 = param_2 + -1;
|
|
} while (param_2 != 0);
|
|
}
|
|
return 0;
|
|
}
|
|
if (param_3 == 2) goto LAB_0101d96c;
|
|
goto LAB_0101d964;
|
|
}
|
|
}
|
|
else {
|
|
if ((param_3 != 2) || ((param_2 < 0x11 && (0 < param_2)))) goto LAB_0101d959;
|
|
}
|
|
uVar3 = 0xb;
|
|
}
|
|
else {
|
|
LAB_0101d964:
|
|
uVar3 = 10;
|
|
}
|
|
DAT_01027be0 = psVar1;
|
|
return uVar3;
|
|
}
|
|
|
|
|
|
|
|
void FUN_0101d9e7(int param_1)
|
|
|
|
{
|
|
int iVar1;
|
|
|
|
iVar1 = DAT_01027bec;
|
|
*(undefined4 *)(param_1 + 0x2c) = 0;
|
|
if (iVar1 == 0) {
|
|
DAT_01027bec = param_1;
|
|
}
|
|
else {
|
|
*(int *)(DAT_01027bf0 + 0x2c) = param_1;
|
|
}
|
|
DAT_01027bf0 = param_1;
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
|
|
|
|
undefined4 FUN_0101da1d(LPWAVEHDR param_1,int param_2)
|
|
|
|
{
|
|
uint *puVar1;
|
|
DWORD *pDVar2;
|
|
undefined4 uVar3;
|
|
int *piVar4;
|
|
uint uVar5;
|
|
uint uVar6;
|
|
int **ppiVar7;
|
|
MMRESULT MVar8;
|
|
uint uVar9;
|
|
int iVar10;
|
|
uint uVar11;
|
|
int iVar12;
|
|
undefined4 *puVar13;
|
|
uint local_20;
|
|
uint local_1c;
|
|
uint local_18;
|
|
undefined4 *local_14;
|
|
int local_10;
|
|
uint local_c;
|
|
uint local_8;
|
|
|
|
iVar12 = DAT_01027be0;
|
|
if (param_1 == (LPWAVEHDR)0x0) {
|
|
uVar3 = 0;
|
|
}
|
|
else {
|
|
local_c = 0xffffffff;
|
|
local_8 = 0;
|
|
ppiVar7 = (int **)(DAT_01027be0 + 0xf4);
|
|
iVar10 = 0x10;
|
|
do {
|
|
piVar4 = *ppiVar7;
|
|
if ((piVar4 != (int *)0xffffffff) && (piVar4 != (int *)0x0)) {
|
|
do {
|
|
if (*(uint *)(iVar12 + 0x19c) <= (uint)piVar4[0xb] &&
|
|
piVar4[0xb] != *(uint *)(iVar12 + 0x19c)) break;
|
|
piVar4 = (int *)*piVar4;
|
|
} while (piVar4 != (int *)0x0);
|
|
if (piVar4 != (int *)0x0) {
|
|
if ((uint)piVar4[10] < local_c) {
|
|
local_c = piVar4[10];
|
|
}
|
|
*(int **)(&DAT_01025730 + local_8) = piVar4;
|
|
local_8 = local_8 + 1;
|
|
}
|
|
}
|
|
ppiVar7 = ppiVar7 + 1;
|
|
iVar10 = iVar10 + -1;
|
|
} while (iVar10 != 0);
|
|
if (local_8 == 0) {
|
|
if (param_2 != 0) {
|
|
param_1[1].lpData = (LPSTR)0x1;
|
|
}
|
|
uVar3 = 0;
|
|
}
|
|
else {
|
|
local_14 = (undefined4 *)param_1->lpData;
|
|
uVar11 = *(undefined4 *)(iVar12 + 0x19c);
|
|
local_18 = (uint)*(ushort *)(iVar12 + 0x18c);
|
|
local_20 = uVar11;
|
|
LAB_0101dc1d:
|
|
if ((short)local_18 != 0) {
|
|
if (uVar11 < local_c) {
|
|
uVar5 = local_18 & 0xffff;
|
|
if (local_c <= uVar5 + uVar11) {
|
|
uVar5 = local_c - uVar11;
|
|
}
|
|
uVar9 = (uVar5 & 0xffff) >> 2;
|
|
puVar13 = local_14;
|
|
while (uVar9 != 0) {
|
|
uVar9 = uVar9 - 1;
|
|
*puVar13 = 0x80808080;
|
|
puVar13 = puVar13 + 1;
|
|
}
|
|
uVar9 = uVar5 & 3;
|
|
while (uVar9 != 0) {
|
|
uVar9 = uVar9 - 1;
|
|
*(undefined *)puVar13 = 0x80;
|
|
puVar13 = (undefined4 *)((int)puVar13 + 1);
|
|
}
|
|
local_14 = (undefined4 *)((int)local_14 + uVar5);
|
|
uVar11 = uVar11 + uVar5;
|
|
local_18 = local_18 - uVar5;
|
|
local_20 = uVar11;
|
|
}
|
|
else {
|
|
local_1c = 0;
|
|
local_10 = 0;
|
|
uVar5 = (local_18 & 0xffff) + uVar11;
|
|
if (local_8 != 0) {
|
|
do {
|
|
iVar10 = (&DAT_01025730)[local_1c];
|
|
uVar9 = *(uint *)(iVar10 + 0x28);
|
|
if (uVar11 < uVar9) {
|
|
if (uVar9 < uVar5) {
|
|
uVar5 = uVar9;
|
|
}
|
|
}
|
|
else {
|
|
if (*(uint *)(iVar10 + 0x2c) < uVar5) {
|
|
uVar5 = *(uint *)(iVar10 + 0x2c);
|
|
}
|
|
uVar9 = uVar11 - uVar9;
|
|
if (*(short *)(iVar10 + 0x1a) != 0) {
|
|
uVar9 = uVar9 % *(uint *)(iVar10 + 0x24);
|
|
uVar6 = (*(uint *)(iVar10 + 0x24) - uVar9) + local_20;
|
|
uVar11 = local_20;
|
|
if (uVar6 < uVar5) {
|
|
uVar5 = uVar6;
|
|
uVar11 = local_20;
|
|
}
|
|
}
|
|
*(uint *)(&DAT_010257a0 + local_10 * 4) = *(int *)(iVar10 + 0x30) + uVar9;
|
|
*(undefined2 *)(&DAT_01025810 + local_10 * 4) = *(undefined2 *)(iVar10 + 0x38);
|
|
*(undefined2 *)(&DAT_01025812 + local_10 * 4) = *(undefined2 *)(iVar10 + 0x3a);
|
|
local_10 = local_10 + 1;
|
|
}
|
|
local_1c = local_1c + 1;
|
|
} while (local_1c < local_8);
|
|
if (local_10 != 0) {
|
|
iVar10 = uVar5 - uVar11;
|
|
(**(code **)(iVar12 + 0x1ac))(local_14,&DAT_010257a0,&DAT_01025810,local_10,iVar10);
|
|
local_14 = (undefined4 *)((int)local_14 + iVar10);
|
|
local_18 = local_18 - iVar10;
|
|
local_c = 0xffffffff;
|
|
uVar11 = uVar11 + iVar10;
|
|
uVar5 = 0;
|
|
ppiVar7 = (int **)&DAT_01025730;
|
|
do {
|
|
if (*ppiVar7 == (int *)0x0) {
|
|
LAB_0101dbea:
|
|
local_8 = local_8 - 1;
|
|
*ppiVar7 = (int *)(&DAT_01025730)[local_8];
|
|
iVar12 = DAT_01027be0;
|
|
local_20 = uVar11;
|
|
if (local_8 == 0) break;
|
|
}
|
|
else {
|
|
do {
|
|
puVar1 = (uint *)(*ppiVar7 + 0xb);
|
|
if (uVar11 <= *puVar1 && *puVar1 != uVar11) break;
|
|
piVar4 = (int *)**ppiVar7;
|
|
*ppiVar7 = piVar4;
|
|
} while (piVar4 != (int *)0x0);
|
|
if (*ppiVar7 == (int *)0x0) goto LAB_0101dbea;
|
|
uVar9 = (*ppiVar7)[10];
|
|
if (uVar9 < local_c) {
|
|
local_c = uVar9;
|
|
}
|
|
uVar5 = uVar5 + 1;
|
|
ppiVar7 = ppiVar7 + 1;
|
|
}
|
|
iVar12 = DAT_01027be0;
|
|
local_20 = uVar11;
|
|
} while (uVar5 < local_8);
|
|
}
|
|
}
|
|
}
|
|
goto LAB_0101dc1d;
|
|
}
|
|
pDVar2 = (DWORD *)(iVar12 + 0x19c);
|
|
param_1[1].dwBufferLength = *pDVar2;
|
|
*pDVar2 = *pDVar2 + *(int *)(iVar12 + 0x18c);
|
|
uVar3 = 1;
|
|
if (param_2 != 0) {
|
|
FUN_0101d9e7((int)param_1);
|
|
MVar8 = waveOutWrite(*(HWAVEOUT *)(iVar12 + 0xc),param_1,0x20);
|
|
if (MVar8 != 0) {
|
|
if (_DAT_01027be4 != 0) {
|
|
MessageBoxA((HWND)0x0,"Failed to write block to device","WavMix32",0x30);
|
|
}
|
|
param_1[1].lpData = (LPSTR)0x1;
|
|
FUN_0101d6c8((int)param_1);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return uVar3;
|
|
}
|
|
|
|
|
|
|
|
void FUN_0101dc8c(void)
|
|
|
|
{
|
|
uint uVar1;
|
|
int iVar2;
|
|
int lParam;
|
|
undefined4 *puVar3;
|
|
WPARAM local_8;
|
|
|
|
uVar1 = FUN_0101d0fc(*(HWAVEOUT *)(DAT_01027be0 + 0xc),*(int *)(DAT_01027be0 + 0x1a4));
|
|
local_8 = 0;
|
|
iVar2 = 0xf4;
|
|
lParam = DAT_01027be0;
|
|
do {
|
|
puVar3 = *(undefined4 **)(iVar2 + lParam);
|
|
if ((puVar3 != (undefined4 *)0x0) && (puVar3 != (undefined4 *)0xffffffff)) {
|
|
do {
|
|
if (uVar1 < (uint)puVar3[0xb]) break;
|
|
*(undefined4 *)(iVar2 + lParam) = *puVar3;
|
|
if (*(HWND *)((int)puVar3 + 0x12) != (HWND)0x0) {
|
|
PostMessageA(*(HWND *)((int)puVar3 + 0x12),0x3bd,local_8,puVar3[8]);
|
|
lParam = DAT_01027be0;
|
|
}
|
|
FUN_0101d4d4(puVar3);
|
|
puVar3 = *(undefined4 **)(iVar2 + lParam);
|
|
} while (puVar3 != (undefined4 *)0x0);
|
|
}
|
|
local_8 = local_8 + 1;
|
|
iVar2 = iVar2 + 4;
|
|
if (0x133 < iVar2) {
|
|
if ((*(int *)(lParam + 0x1a4) == 0) && (DAT_01027bec == 0)) {
|
|
iVar2 = 0xf4;
|
|
do {
|
|
if ((*(int *)(iVar2 + lParam) != 0) && (*(int *)(iVar2 + lParam) != -1)) {
|
|
PostMessageA(*(HWND *)(lParam + 4),0x400,0,lParam);
|
|
lParam = DAT_01027be0;
|
|
}
|
|
iVar2 = iVar2 + 4;
|
|
} while (iVar2 < 0x134);
|
|
}
|
|
return;
|
|
}
|
|
} while( true );
|
|
}
|
|
|
|
|
|
|
|
void FUN_0101dd5d(void)
|
|
|
|
{
|
|
LPWAVEHDR pwVar1;
|
|
int iVar2;
|
|
|
|
DAT_01027be0 = DAT_01025798;
|
|
iVar2 = DAT_01027bec;
|
|
if (DAT_01025798 != 0) {
|
|
while (iVar2 != 0) {
|
|
if ((*(byte *)(iVar2 + 0x10) & 1) == 0) {
|
|
iVar2 = *(int *)(iVar2 + 0x2c);
|
|
}
|
|
else {
|
|
FUN_0101d6c8(iVar2);
|
|
*(undefined4 *)(iVar2 + 0x20) = 1;
|
|
iVar2 = DAT_01027bec;
|
|
}
|
|
}
|
|
FUN_0101dc8c();
|
|
do {
|
|
iVar2 = 1;
|
|
pwVar1 = (LPWAVEHDR)FUN_0101d66b();
|
|
iVar2 = FUN_0101da1d(pwVar1,iVar2);
|
|
} while (iVar2 != 0);
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
LRESULT FUN_0101ddad(HWND param_1,UINT param_2,WPARAM param_3,LPARAM param_4)
|
|
|
|
{
|
|
LRESULT LVar1;
|
|
|
|
if ((param_2 != 0x3bd) && (param_2 != 0x400)) {
|
|
// WARNING: Could not recover jumptable at 0x0101ddc2. Too many branches
|
|
// WARNING: Treating indirect jump as call
|
|
LVar1 = DefWindowProcA(param_1,param_2,param_3,param_4);
|
|
return LVar1;
|
|
}
|
|
FUN_0101dd5d();
|
|
return 0;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
|
|
|
|
undefined4 FUN_0101dde8(undefined4 param_1)
|
|
|
|
{
|
|
int *piVar1;
|
|
undefined4 uVar2;
|
|
bool bVar3;
|
|
int iVar4;
|
|
LPWAVEHDR pwh;
|
|
MMRESULT MVar5;
|
|
int local_8;
|
|
|
|
*(undefined4 *)(DAT_01027be0 + 0x19c) = param_1;
|
|
thunk_FUN_0101d743();
|
|
FUN_0101d649();
|
|
do {
|
|
pwh = (LPWAVEHDR)FUN_0101d66b();
|
|
if (pwh == (LPWAVEHDR)0x0) {
|
|
LAB_0101de3a:
|
|
uVar2 = *(undefined4 *)(DAT_01027be0 + 0x19c);
|
|
FUN_0101d251(*(HWAVEOUT *)(DAT_01027be0 + 0xc));
|
|
iVar4 = DAT_01027be0;
|
|
piVar1 = (int *)(DAT_01027be0 + 0x194);
|
|
*(undefined4 *)(DAT_01027be0 + 0x19c) = uVar2;
|
|
bVar3 = 0 < *piVar1;
|
|
if (bVar3) {
|
|
waveOutPause(*(HWAVEOUT *)(iVar4 + 0xc));
|
|
iVar4 = DAT_01027be0;
|
|
}
|
|
local_8 = 0;
|
|
pwh = DAT_01027bec;
|
|
while (pwh != (LPWAVEHDR)0x0) {
|
|
MVar5 = waveOutWrite(*(HWAVEOUT *)(iVar4 + 0xc),pwh,0x20);
|
|
if (MVar5 != 0) {
|
|
if (_DAT_01027be4 != 0) {
|
|
MessageBoxA((HWND)0x0,"Failed to write block to device","WavMix32",0x30);
|
|
}
|
|
pwh[1].lpData = (LPSTR)0x1;
|
|
FUN_0101d6c8((int)pwh);
|
|
}
|
|
if ((bVar3) && (local_8 = local_8 + 1, *(int *)(DAT_01027be0 + 0x194) <= local_8)) {
|
|
waveOutRestart(*(HWAVEOUT *)(DAT_01027be0 + 0xc));
|
|
bVar3 = false;
|
|
}
|
|
pwh = (LPWAVEHDR)pwh[1].dwUser;
|
|
iVar4 = DAT_01027be0;
|
|
}
|
|
if (bVar3) {
|
|
waveOutRestart(*(HWAVEOUT *)(iVar4 + 0xc));
|
|
}
|
|
return 1;
|
|
}
|
|
iVar4 = FUN_0101da1d(pwh,0);
|
|
if (iVar4 == 0) {
|
|
pwh[1].lpData = (LPSTR)0x1;
|
|
goto LAB_0101de3a;
|
|
}
|
|
FUN_0101d9e7((int)pwh);
|
|
} while( true );
|
|
}
|
|
|
|
|
|
|
|
void FUN_0101df07(void)
|
|
|
|
{
|
|
int *piVar1;
|
|
int iVar2;
|
|
|
|
if (DAT_01027bec == 0) {
|
|
iVar2 = 0;
|
|
piVar1 = (int *)(DAT_01027be0 + 0xf4);
|
|
do {
|
|
if ((*piVar1 != 0) && (*piVar1 != -1)) {
|
|
return;
|
|
}
|
|
iVar2 = iVar2 + 1;
|
|
piVar1 = piVar1 + 1;
|
|
} while (iVar2 < 0x10);
|
|
FUN_0101d1a2(0);
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
|
|
|
|
undefined4 FUN_0101df3d(undefined4 *param_1)
|
|
|
|
{
|
|
bool bVar1;
|
|
short *psVar2;
|
|
uint uVar3;
|
|
uint *puVar4;
|
|
undefined4 *puVar5;
|
|
uint uVar6;
|
|
undefined4 *puVar7;
|
|
LPWAVEHDR pwVar8;
|
|
int iVar9;
|
|
int iVar10;
|
|
short sVar11;
|
|
int *piVar12;
|
|
undefined4 *puVar13;
|
|
bool bVar14;
|
|
undefined8 uVar15;
|
|
HWND hWnd;
|
|
char *lpText;
|
|
undefined4 local_8;
|
|
|
|
iVar10 = _DAT_01027bf8;
|
|
_DAT_01027bf8 = _DAT_01027bf8 + 1;
|
|
local_8 = 0xc;
|
|
bVar1 = false;
|
|
if (iVar10 != 0 && 0 < _DAT_01027bf8) goto LAB_0101e360;
|
|
if (param_1 == (undefined4 *)0x0) {
|
|
if (_DAT_01027be4 != 0) {
|
|
MessageBoxA((HWND)0x0,"NULL parameters pointer passed to WaveMixPlay!","WavMix32",0x30);
|
|
}
|
|
local_8 = 5;
|
|
goto LAB_0101e360;
|
|
}
|
|
psVar2 = FUN_0101cfd0(*(short **)((int)param_1 + 2));
|
|
if (psVar2 == (short *)0x0) {
|
|
DAT_01027be0 = psVar2;
|
|
if (_DAT_01027be4 != 0) {
|
|
lpText = "Invalid session handle passed to WaveMixPlay";
|
|
DAT_01027be0 = psVar2;
|
|
LAB_0101dfc0:
|
|
hWnd = (HWND)0x0;
|
|
LAB_0101dfc1:
|
|
MessageBoxA(hWnd,lpText,"WavMix32",0x30);
|
|
}
|
|
}
|
|
else {
|
|
piVar12 = *(int **)((int)param_1 + 10);
|
|
DAT_01027be0 = psVar2;
|
|
hWnd = (HWND)FUN_0101d02c((uint)piVar12);
|
|
if (hWnd == (HWND)0x0) {
|
|
if (_DAT_01027be4 != 0) {
|
|
lpText = "Invalid or NULL wave pointer passed to WaveMixPlay!";
|
|
goto LAB_0101dfc1;
|
|
}
|
|
}
|
|
else {
|
|
uVar3 = FUN_0101d04e(piVar12);
|
|
if (uVar3 == 0) {
|
|
wsprintfA(s_WaveMix_V_2_3_by_Angel_M__Diaz__J_01024780,
|
|
|
|
"The LPMIXWAVE 0x%lx is not in the current output format, close the wave and reopen it."
|
|
,piVar12);
|
|
if (_DAT_01027be4 != 0) {
|
|
MessageBoxA((HWND)0x0,s_WaveMix_V_2_3_by_Angel_M__Diaz__J_01024780,"WavMix32",0x30);
|
|
}
|
|
local_8 = 8;
|
|
goto LAB_0101e360;
|
|
}
|
|
if (*(int *)(psVar2 + 8) == 0) {
|
|
if (_DAT_01027be4 != 0) {
|
|
MessageBoxA((HWND)0x0,"Wave device not allocated, call WaveMixActivate(hMixSession,TRUE)",
|
|
"WavMix32",0x30);
|
|
}
|
|
local_8 = 4;
|
|
goto LAB_0101e360;
|
|
}
|
|
if (*(int *)(psVar2 + 0x9a) == 0) {
|
|
if (_DAT_01027be4 != 0) {
|
|
lpText = "You must open a channel before you can play a wave!";
|
|
goto LAB_0101dfc0;
|
|
}
|
|
}
|
|
else {
|
|
if ((*(byte *)((int)param_1 + 0x12) & 2) == 0) {
|
|
iVar10 = *(int *)((int)param_1 + 6);
|
|
}
|
|
else {
|
|
iVar10 = 0;
|
|
iVar9 = 0;
|
|
puVar4 = (uint *)(psVar2 + 0x9c);
|
|
do {
|
|
if (puVar4[-0x11] != 0xffffffff) {
|
|
if (*(int *)(psVar2 + iVar10 * 2 + 0x7a) == 0) break;
|
|
if ((iVar9 != iVar10) && (*puVar4 < *(uint *)(psVar2 + iVar10 * 2 + 0x9c))) {
|
|
iVar10 = iVar9;
|
|
}
|
|
}
|
|
iVar9 = iVar9 + 1;
|
|
puVar4 = puVar4 + 1;
|
|
} while (iVar9 < 0x10);
|
|
*(int *)((int)param_1 + 6) = iVar10;
|
|
}
|
|
piVar12 = (int *)(psVar2 + 0xbc);
|
|
*piVar12 = *piVar12 + 1;
|
|
*(int *)(psVar2 + iVar10 * 2 + 0x9c) = *piVar12;
|
|
if (*(int *)(psVar2 + iVar10 * 2 + 0x7a) != -1) {
|
|
uVar15 = FUN_0101d4b9();
|
|
puVar5 = (undefined4 *)uVar15;
|
|
if (puVar5 == (undefined4 *)0x0) goto LAB_0101e360;
|
|
iVar10 = 7;
|
|
puVar13 = puVar5;
|
|
while (puVar13 = puVar13 + 1, iVar10 != 0) {
|
|
iVar10 = iVar10 + -1;
|
|
*puVar13 = *param_1;
|
|
param_1 = param_1 + 1;
|
|
}
|
|
iVar10 = *(int *)((int)puVar5 + 0xe);
|
|
puVar5[8] = iVar10;
|
|
puVar5[9] = *(undefined4 *)(iVar10 + 0x14);
|
|
iVar10 = *(int *)(iVar10 + 0x10);
|
|
puVar5[0xc] = iVar10;
|
|
piVar12 = (int *)(psVar2 + 0xdc);
|
|
puVar5[0xd] = (iVar10 - (uint)(ushort)psVar2[0xc4]) + puVar5[9];
|
|
*(undefined4 *)((int)puVar5 + 10) = (int)((ulonglong)uVar15 >> 0x20);
|
|
if ((undefined4 *)*piVar12 == (undefined4 *)0x0) {
|
|
*(undefined4 **)piVar12 = puVar5;
|
|
*(undefined4 **)puVar5 = puVar5;
|
|
}
|
|
else {
|
|
*puVar5 = *(undefined4 *)*piVar12;
|
|
*(undefined4 **)*piVar12 = puVar5;
|
|
*(undefined4 **)piVar12 = puVar5;
|
|
}
|
|
if ((*(byte *)((int)puVar5 + 0x16) & 8) == 0) {
|
|
FUN_0101df07();
|
|
if (*(code **)(DAT_01027be0 + 0xd8) == FUN_0101dde8) {
|
|
uVar3 = FUN_0101d0fc(*(HWAVEOUT *)(DAT_01027be0 + 6),*(int *)(DAT_01027be0 + 0xd2));
|
|
}
|
|
else {
|
|
uVar3 = *(uint *)(DAT_01027be0 + 0xce);
|
|
}
|
|
psVar2 = DAT_01027be0;
|
|
if (*(int *)(DAT_01027be0 + 0xdc) != 0) {
|
|
do {
|
|
puVar5 = *(undefined4 **)(psVar2 + 0xdc);
|
|
puVar13 = (undefined4 *)*puVar5;
|
|
if (puVar13 == puVar5) {
|
|
*(undefined4 *)(psVar2 + 0xdc) = 0;
|
|
}
|
|
else {
|
|
*puVar5 = *puVar13;
|
|
}
|
|
iVar10 = *(int *)((int)puVar13 + 10);
|
|
*puVar13 = 0;
|
|
if ((*(uint *)((int)puVar13 + 0x16) & 0x10) == 0) {
|
|
*(short *)(puVar13 + 0xe) = psVar2[iVar10 * 2 + 0x5a];
|
|
sVar11 = psVar2[iVar10 * 2 + 0x5b];
|
|
}
|
|
else {
|
|
*(undefined2 *)(puVar13 + 0xe) = *(undefined2 *)(puVar13 + 7);
|
|
sVar11 = *(short *)((int)puVar13 + 0x1e);
|
|
}
|
|
*(short *)((int)puVar13 + 0x3a) = sVar11;
|
|
if (10 < *(ushort *)(puVar13 + 0xe)) {
|
|
*(undefined2 *)(puVar13 + 0xe) = 10;
|
|
}
|
|
if (10 < *(ushort *)((int)puVar13 + 0x3a)) {
|
|
*(undefined2 *)((int)puVar13 + 0x3a) = 10;
|
|
}
|
|
if ((*(uint *)((int)puVar13 + 0x16) & 1) == 0) {
|
|
puVar5 = *(undefined4 **)(psVar2 + iVar10 * 2 + 0x7a);
|
|
if (puVar5 == (undefined4 *)0x0) {
|
|
*(undefined4 **)(psVar2 + iVar10 * 2 + 0x7a) = puVar13;
|
|
uVar6 = uVar3;
|
|
if ((*(byte *)((int)puVar13 + 0x16) & 4) == 0) {
|
|
uVar6 = *(uint *)(psVar2 + 0xce);
|
|
}
|
|
}
|
|
else {
|
|
do {
|
|
puVar7 = puVar5;
|
|
puVar5 = (undefined4 *)*puVar7;
|
|
} while ((undefined4 *)*puVar7 != (undefined4 *)0x0);
|
|
*(undefined4 **)puVar7 = puVar13;
|
|
uVar6 = puVar7[0xb];
|
|
if ((*(byte *)((int)puVar13 + 0x16) & 4) == 0) {
|
|
if (uVar6 < *(uint *)(psVar2 + 0xce)) {
|
|
uVar6 = *(uint *)(psVar2 + 0xce);
|
|
}
|
|
}
|
|
else {
|
|
if (uVar6 <= uVar3) {
|
|
uVar6 = uVar3;
|
|
}
|
|
}
|
|
}
|
|
puVar13[10] = uVar6;
|
|
if ((uint)puVar13[10] <= *(uint *)(psVar2 + 0xce) &&
|
|
*(uint *)(psVar2 + 0xce) != puVar13[10]) {
|
|
bVar1 = true;
|
|
}
|
|
}
|
|
else {
|
|
puVar5 = *(undefined4 **)(psVar2 + iVar10 * 2 + 0x7a);
|
|
while (puVar5 != (undefined4 *)0x0) {
|
|
puVar7 = (undefined4 *)*puVar5;
|
|
FUN_0101d4d4(puVar5);
|
|
puVar5 = puVar7;
|
|
}
|
|
bVar14 = DAT_01027bec != 0;
|
|
*(undefined4 **)(psVar2 + iVar10 * 2 + 0x7a) = puVar13;
|
|
if (bVar14) {
|
|
bVar1 = true;
|
|
}
|
|
uVar6 = uVar3;
|
|
if ((*(byte *)((int)puVar13 + 0x16) & 4) == 0) {
|
|
uVar6 = *(uint *)(psVar2 + 0xce);
|
|
}
|
|
puVar13[10] = uVar6;
|
|
}
|
|
if (*(ushort *)((int)puVar13 + 0x1a) == 0xffff) {
|
|
puVar13[0xb] = 0xffffffff;
|
|
}
|
|
else {
|
|
puVar13[0xb] = (((uint)*(ushort *)((int)puVar13 + 0x1a) + 1) * puVar13[9] -
|
|
(uint)(ushort)psVar2[0xc4]) + puVar13[10];
|
|
}
|
|
} while (*(int *)(psVar2 + 0xdc) != 0);
|
|
if ((bVar1) &&
|
|
(iVar10 = (**(code **)(psVar2 + 0xd8))(uVar3,0), psVar2 = DAT_01027be0, iVar10 != 0
|
|
)) goto LAB_0101e35a;
|
|
}
|
|
iVar10 = 0;
|
|
if ((DAT_01027bec == 0) && (0 < *(int *)(psVar2 + 0xca))) {
|
|
waveOutPause(*(HWAVEOUT *)(psVar2 + 6));
|
|
bVar1 = true;
|
|
}
|
|
else {
|
|
bVar1 = false;
|
|
}
|
|
iVar9 = 1;
|
|
pwVar8 = (LPWAVEHDR)FUN_0101d66b();
|
|
iVar9 = FUN_0101da1d(pwVar8,iVar9);
|
|
while (iVar9 != 0) {
|
|
if ((bVar1) && (iVar10 = iVar10 + 1, *(int *)(DAT_01027be0 + 0xca) <= iVar10)) {
|
|
waveOutRestart(*(HWAVEOUT *)(DAT_01027be0 + 6));
|
|
bVar1 = false;
|
|
}
|
|
iVar9 = 1;
|
|
pwVar8 = (LPWAVEHDR)FUN_0101d66b();
|
|
iVar9 = FUN_0101da1d(pwVar8,iVar9);
|
|
}
|
|
if (bVar1) {
|
|
waveOutRestart(*(HWAVEOUT *)(DAT_01027be0 + 6));
|
|
}
|
|
}
|
|
LAB_0101e35a:
|
|
local_8 = 0;
|
|
goto LAB_0101e360;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
local_8 = 5;
|
|
LAB_0101e360:
|
|
_DAT_01027bf8 = _DAT_01027bf8 + -1;
|
|
return local_8;
|
|
}
|
|
|
|
|
|
|
|
undefined4 FUN_0101e373(short *param_1,int param_2,byte param_3)
|
|
|
|
{
|
|
short *psVar1;
|
|
int iVar2;
|
|
int *piVar3;
|
|
undefined4 uVar4;
|
|
int *piVar5;
|
|
int **ppiVar6;
|
|
int *local_8;
|
|
|
|
piVar5 = (int *)0x0;
|
|
local_8 = (int *)0x0;
|
|
psVar1 = FUN_0101cfd0(param_1);
|
|
if (psVar1 == (short *)0x0) {
|
|
LAB_0101e3b7:
|
|
uVar4 = 5;
|
|
DAT_01027be0 = psVar1;
|
|
}
|
|
else {
|
|
if ((param_3 & 1) == 0) {
|
|
if ((param_2 < 0) || (0xf < param_2)) {
|
|
DAT_01027be0 = psVar1;
|
|
return 0xb;
|
|
}
|
|
if (*(int *)(psVar1 + param_2 * 2 + 0x7a) == -1) goto LAB_0101e3b7;
|
|
iVar2 = param_2 + 1;
|
|
DAT_01027be0 = psVar1;
|
|
if (param_2 < iVar2) goto LAB_0101e3c2;
|
|
}
|
|
else {
|
|
param_2 = 0;
|
|
iVar2 = 0x10;
|
|
LAB_0101e3c2:
|
|
param_1 = (short *)(iVar2 - param_2);
|
|
ppiVar6 = (int **)(psVar1 + param_2 * 2 + 0x7a);
|
|
DAT_01027be0 = psVar1;
|
|
do {
|
|
piVar3 = *ppiVar6;
|
|
if ((piVar3 != (int *)0xffffffff) && (*ppiVar6 = piVar5, piVar3 != piVar5)) {
|
|
local_8 = (int *)0x1;
|
|
do {
|
|
piVar5 = (int *)*piVar3;
|
|
FUN_0101d4d4(piVar3);
|
|
piVar3 = piVar5;
|
|
} while (piVar5 != (int *)0x0);
|
|
}
|
|
ppiVar6 = ppiVar6 + 1;
|
|
param_1 = (short *)((int)param_1 + -1);
|
|
} while (param_1 != (short *)0x0);
|
|
if (((local_8 != piVar5) && ((param_3 & 2) == 0)) && (*(int **)(psVar1 + 8) != piVar5)) {
|
|
uVar4 = FUN_0101d0fc(*(HWAVEOUT *)(psVar1 + 6),*(int *)(psVar1 + 0xd2));
|
|
(**(code **)(psVar1 + 0xd8))(uVar4,piVar5);
|
|
}
|
|
}
|
|
uVar4 = 0;
|
|
}
|
|
return uVar4;
|
|
}
|
|
|
|
|
|
|
|
int FUN_0101e434(short *param_1,int param_2,byte param_3)
|
|
|
|
{
|
|
short *psVar1;
|
|
int iVar2;
|
|
int *piVar3;
|
|
|
|
DAT_01027be0 = FUN_0101cfd0(param_1);
|
|
if (DAT_01027be0 == (short *)0x0) {
|
|
return 5;
|
|
}
|
|
iVar2 = FUN_0101e373(param_1,param_2,param_3 | 2);
|
|
psVar1 = DAT_01027be0;
|
|
if (iVar2 == 0) {
|
|
if ((param_3 & 1) == 0) {
|
|
iVar2 = param_2 + 1;
|
|
if (iVar2 <= param_2) {
|
|
return 0;
|
|
}
|
|
}
|
|
else {
|
|
param_2 = 0;
|
|
iVar2 = 0x10;
|
|
}
|
|
piVar3 = (int *)(DAT_01027be0 + param_2 * 2 + 0x7a);
|
|
iVar2 = iVar2 - param_2;
|
|
do {
|
|
if (*piVar3 != -1) {
|
|
*piVar3 = -1;
|
|
*(int *)(psVar1 + 0x9a) = *(int *)(psVar1 + 0x9a) + -1;
|
|
}
|
|
piVar3 = piVar3 + 1;
|
|
iVar2 = iVar2 + -1;
|
|
} while (iVar2 != 0);
|
|
return 0;
|
|
}
|
|
return iVar2;
|
|
}
|
|
|
|
|
|
|
|
undefined4 FUN_0101e4a9(int **param_1,int *param_2)
|
|
|
|
{
|
|
int *pMem;
|
|
int **ppiVar1;
|
|
short *psVar2;
|
|
undefined4 uVar3;
|
|
uint uVar4;
|
|
HGLOBAL hMem;
|
|
int **ppiVar5;
|
|
int **ppiVar6;
|
|
|
|
pMem = param_2;
|
|
psVar2 = FUN_0101cfd0((short *)param_1);
|
|
if (psVar2 == (short *)0x0) {
|
|
uVar3 = 5;
|
|
}
|
|
else {
|
|
uVar4 = FUN_0101d02c((uint)param_2);
|
|
if (uVar4 == 0) {
|
|
uVar3 = 5;
|
|
}
|
|
else {
|
|
ppiVar5 = (int **)(psVar2 + 0x7a);
|
|
param_2 = (int *)0x10;
|
|
do {
|
|
if ((int **)*ppiVar5 != (int **)0xffffffff) {
|
|
param_1 = (int **)0x0;
|
|
ppiVar1 = (int **)*ppiVar5;
|
|
while (ppiVar6 = ppiVar1, ppiVar6 != (int **)0x0) {
|
|
if (ppiVar6[8] == pMem) {
|
|
if (param_1 == (int **)0x0) {
|
|
ppiVar1 = (int **)*ppiVar6;
|
|
FUN_0101d4d4(*ppiVar5);
|
|
*(int ***)ppiVar5 = ppiVar1;
|
|
}
|
|
else {
|
|
*param_1 = *ppiVar6;
|
|
FUN_0101d4d4(ppiVar6);
|
|
ppiVar1 = (int **)*param_1;
|
|
}
|
|
}
|
|
else {
|
|
ppiVar1 = (int **)*ppiVar6;
|
|
param_1 = ppiVar6;
|
|
}
|
|
}
|
|
}
|
|
ppiVar5 = ppiVar5 + 1;
|
|
param_2 = (int *)((int)param_2 + -1);
|
|
} while (param_2 != (int *)0x0);
|
|
if ((LPCVOID)pMem[4] != (LPCVOID)0x0) {
|
|
hMem = GlobalHandle((LPCVOID)pMem[4]);
|
|
GlobalUnlock(hMem);
|
|
hMem = GlobalHandle((LPCVOID)pMem[4]);
|
|
GlobalFree(hMem);
|
|
}
|
|
*(undefined2 *)(pMem + 0x10) = 0;
|
|
hMem = GlobalHandle(pMem);
|
|
GlobalUnlock(hMem);
|
|
hMem = GlobalHandle(pMem);
|
|
GlobalFree(hMem);
|
|
uVar3 = 0;
|
|
}
|
|
}
|
|
return uVar3;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
|
|
|
|
short * FUN_0101e579(short *param_1,ushort param_2,ushort param_3,uint *param_4)
|
|
|
|
{
|
|
short *psVar1;
|
|
short *psVar2;
|
|
uint uVar3;
|
|
SIZE_T dwBytes;
|
|
HGLOBAL hMem;
|
|
short *psVar4;
|
|
|
|
if (param_2 != param_3) {
|
|
if (((param_2 == 8) || (param_2 == 0x10)) && ((param_3 == 8 || (param_3 == 0x10)))) {
|
|
uVar3 = *param_4 / (uint)(param_2 >> 3);
|
|
dwBytes = (uint)(param_3 >> 3) * uVar3;
|
|
*param_4 = dwBytes;
|
|
hMem = GlobalAlloc(0x2002,dwBytes);
|
|
psVar4 = (short *)GlobalLock(hMem);
|
|
if (psVar4 == (short *)0x0) {
|
|
if (_DAT_01027be4 != 0) {
|
|
MessageBoxA((HWND)0x0,
|
|
|
|
"Unable to allocate memory for waveform data. Try making more memory available by closing other applications."
|
|
,"WavMix32",0x40);
|
|
}
|
|
psVar4 = (short *)0x0;
|
|
}
|
|
else {
|
|
psVar1 = param_1;
|
|
psVar2 = psVar4;
|
|
if (param_3 >> 3 < param_2 >> 3) {
|
|
while (uVar3 != 0) {
|
|
*(char *)psVar2 = (char)((int)*psVar1 / 0x100) + -0x80;
|
|
uVar3 = uVar3 - 1;
|
|
psVar1 = psVar1 + 1;
|
|
psVar2 = (short *)((int)psVar2 + 1);
|
|
}
|
|
}
|
|
else {
|
|
while (uVar3 != 0) {
|
|
*psVar2 = ((short)*(char *)psVar1 + -0x80) * 0x100;
|
|
uVar3 = uVar3 - 1;
|
|
psVar1 = (short *)((int)psVar1 + 1);
|
|
psVar2 = psVar2 + 1;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else {
|
|
psVar4 = (short *)0x0;
|
|
}
|
|
hMem = GlobalHandle(param_1);
|
|
GlobalUnlock(hMem);
|
|
hMem = GlobalHandle(param_1);
|
|
GlobalFree(hMem);
|
|
param_1 = psVar4;
|
|
}
|
|
return param_1;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
|
|
|
|
short * FUN_0101e686(short *param_1,ushort param_2,ushort param_3,ushort param_4,uint *param_5)
|
|
|
|
{
|
|
short *psVar1;
|
|
short *psVar2;
|
|
int iVar3;
|
|
SIZE_T dwBytes;
|
|
HGLOBAL hMem;
|
|
short *psVar4;
|
|
|
|
if (param_2 != param_3) {
|
|
iVar3 = (int)(((ulonglong)*param_5 / (ulonglong)(uint)param_4) / (ulonglong)param_2);
|
|
dwBytes = (uint)param_3 * (uint)param_4 * iVar3;
|
|
*param_5 = dwBytes;
|
|
hMem = GlobalAlloc(0x2002,dwBytes);
|
|
psVar4 = (short *)GlobalLock(hMem);
|
|
if (psVar4 == (short *)0x0) {
|
|
if (_DAT_01027be4 != 0) {
|
|
MessageBoxA((HWND)0x0,
|
|
|
|
"Unable to allocate memory for waveform data. Try making more memory available by closing other applications."
|
|
,"WavMix32",0x40);
|
|
}
|
|
psVar4 = (short *)0x0;
|
|
}
|
|
else {
|
|
if (param_2 < param_3) {
|
|
psVar1 = param_1;
|
|
psVar2 = psVar4;
|
|
if (param_4 == 1) {
|
|
while (iVar3 != 0) {
|
|
*(undefined *)psVar2 = *(undefined *)psVar1;
|
|
*(undefined *)((int)psVar2 + 1) = *(undefined *)psVar1;
|
|
iVar3 = iVar3 + -1;
|
|
psVar1 = (short *)((int)psVar1 + 1);
|
|
psVar2 = psVar2 + 1;
|
|
}
|
|
}
|
|
else {
|
|
while (iVar3 != 0) {
|
|
*psVar2 = *psVar1;
|
|
psVar2[1] = *psVar1;
|
|
iVar3 = iVar3 + -1;
|
|
psVar1 = psVar1 + 1;
|
|
psVar2 = psVar2 + 2;
|
|
}
|
|
}
|
|
}
|
|
else {
|
|
psVar1 = param_1;
|
|
psVar2 = psVar4;
|
|
if (param_4 == 1) {
|
|
while (iVar3 != 0) {
|
|
*(char *)psVar2 =
|
|
(char)((int)((uint)*(byte *)((int)psVar1 + 1) + (uint)*(byte *)psVar1) / 2);
|
|
iVar3 = iVar3 + -1;
|
|
psVar1 = psVar1 + 1;
|
|
psVar2 = (short *)((int)psVar2 + 1);
|
|
}
|
|
}
|
|
else {
|
|
while (iVar3 != 0) {
|
|
*psVar2 = (short)(((int)psVar1[1] + (int)*psVar1) / 2);
|
|
iVar3 = iVar3 + -1;
|
|
psVar1 = psVar1 + 2;
|
|
psVar2 = psVar2 + 1;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
hMem = GlobalHandle(param_1);
|
|
GlobalUnlock(hMem);
|
|
hMem = GlobalHandle(param_1);
|
|
GlobalFree(hMem);
|
|
param_1 = psVar4;
|
|
}
|
|
return param_1;
|
|
}
|
|
|
|
|
|
|
|
void FUN_0101e7b0(undefined2 *param_1,short *param_2,int param_3,int param_4,int param_5)
|
|
|
|
{
|
|
byte bVar1;
|
|
int iVar2;
|
|
short *psVar3;
|
|
int iVar4;
|
|
int iVar5;
|
|
short *psVar6;
|
|
|
|
psVar3 = param_2;
|
|
if (param_4 == 1) {
|
|
iVar5 = param_5;
|
|
if (0 < param_5) {
|
|
do {
|
|
psVar3 = (short *)((int)param_2 + 1);
|
|
iVar2 = 0;
|
|
iVar4 = param_3;
|
|
if (0 < param_3) {
|
|
do {
|
|
bVar1 = *(byte *)param_2;
|
|
param_2 = (short *)((int)param_2 + param_5);
|
|
iVar4 = iVar4 + -1;
|
|
iVar2 = iVar2 + -0x80 + (uint)bVar1;
|
|
} while (iVar4 != 0);
|
|
}
|
|
*(char *)param_1 = (char)(iVar2 / param_3) + -0x80;
|
|
param_1 = (undefined2 *)((int)param_1 + 1);
|
|
iVar5 = iVar5 + -1;
|
|
param_2 = psVar3;
|
|
} while (iVar5 != 0);
|
|
}
|
|
}
|
|
else {
|
|
if (0 < param_5) {
|
|
param_2 = (short *)param_5;
|
|
do {
|
|
iVar2 = 0;
|
|
psVar6 = psVar3 + 1;
|
|
iVar5 = param_3;
|
|
if (0 < param_3) {
|
|
do {
|
|
iVar2 = iVar2 + (int)*psVar3;
|
|
psVar3 = psVar3 + param_5;
|
|
iVar5 = iVar5 + -1;
|
|
} while (iVar5 != 0);
|
|
}
|
|
param_2 = (short *)((int)param_2 + -1);
|
|
*param_1 = (short)(iVar2 / param_3);
|
|
psVar3 = psVar6;
|
|
} while (param_2 != (short *)0x0);
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_0101e83a(short *param_1,short *param_2,int param_3,short *param_4,int param_5)
|
|
|
|
{
|
|
byte bVar1;
|
|
short sVar2;
|
|
short sVar3;
|
|
byte bVar4;
|
|
int iVar5;
|
|
uint uVar6;
|
|
int iVar7;
|
|
short *psVar8;
|
|
|
|
iVar5 = param_5;
|
|
if (param_4 == (short *)0x1) {
|
|
if (0 < param_5) {
|
|
do {
|
|
bVar4 = *(byte *)param_2;
|
|
bVar1 = *(byte *)((int)param_2 + iVar5);
|
|
psVar8 = (short *)((int)param_1 + 1);
|
|
uVar6 = (uint)bVar4;
|
|
*(byte *)param_1 = bVar4;
|
|
if (1 < param_3) {
|
|
iVar7 = param_3 + -1;
|
|
do {
|
|
param_1 = (short *)((int)param_1 + iVar5);
|
|
bVar4 = bVar4 + (char)((int)((uint)bVar1 - uVar6) / param_3);
|
|
*(byte *)param_1 = bVar4;
|
|
iVar7 = iVar7 + -1;
|
|
} while (iVar7 != 0);
|
|
}
|
|
param_2 = (short *)((int)param_2 + 1);
|
|
param_5 = param_5 + -1;
|
|
param_1 = psVar8;
|
|
} while (param_5 != 0);
|
|
}
|
|
}
|
|
else {
|
|
param_4 = param_2;
|
|
param_2 = param_1;
|
|
if (0 < param_5) {
|
|
param_1 = (short *)param_5;
|
|
do {
|
|
sVar2 = *param_4;
|
|
psVar8 = param_2 + param_5;
|
|
sVar3 = *psVar8;
|
|
*param_2 = sVar2;
|
|
iVar5 = (int)sVar2;
|
|
if (1 < param_3) {
|
|
iVar7 = param_3 + -1;
|
|
do {
|
|
iVar5 = iVar5 + ((int)sVar3 - (int)sVar2) / param_3;
|
|
*psVar8 = (short)iVar5;
|
|
psVar8 = psVar8 + param_5;
|
|
iVar7 = iVar7 + -1;
|
|
} while (iVar7 != 0);
|
|
}
|
|
param_4 = param_4 + 1;
|
|
param_1 = (short *)((int)param_1 + -1);
|
|
param_2 = param_2 + 1;
|
|
} while (param_1 != (short *)0x0);
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
|
|
|
|
short * FUN_0101e8f5(short *param_1,uint param_2,uint param_3,ushort param_4,ushort param_5,
|
|
uint *param_6)
|
|
|
|
{
|
|
short *pMem;
|
|
uint uVar1;
|
|
HGLOBAL hMem;
|
|
short *psVar2;
|
|
short *psVar3;
|
|
short *psVar4;
|
|
uint uVar5;
|
|
uint uVar6;
|
|
|
|
pMem = param_1;
|
|
if (param_2 != param_3) {
|
|
uVar6 = (uint)param_5 * (uint)param_4;
|
|
uVar1 = *param_6 / uVar6;
|
|
if (param_2 < param_3) {
|
|
param_2 = param_3 / param_2;
|
|
param_3 = 0;
|
|
uVar5 = param_2 * uVar1;
|
|
}
|
|
else {
|
|
param_3 = param_2 / param_3;
|
|
param_2 = 0;
|
|
uVar5 = uVar1 / param_3;
|
|
}
|
|
*param_6 = uVar5 * uVar6;
|
|
hMem = GlobalAlloc(0x2002,uVar5 * uVar6);
|
|
psVar2 = (short *)GlobalLock(hMem);
|
|
if (psVar2 == (short *)0x0) {
|
|
if (_DAT_01027be4 != 0) {
|
|
MessageBoxA((HWND)0x0,
|
|
|
|
"Unable to allocate memory for waveform data. Try making more memory available by closing other applications."
|
|
,"WavMix32",0x40);
|
|
}
|
|
hMem = GlobalHandle(param_1);
|
|
GlobalUnlock(hMem);
|
|
hMem = GlobalHandle(param_1);
|
|
GlobalFree(hMem);
|
|
param_1 = (short *)0x0;
|
|
}
|
|
else {
|
|
if ((int)param_2 < 1) {
|
|
param_2 = uVar5 - 1;
|
|
psVar4 = psVar2;
|
|
if (param_2 != 0) {
|
|
psVar4 = psVar2;
|
|
do {
|
|
FUN_0101e7b0(psVar4,param_1,param_3,(uint)param_4,(uint)param_5);
|
|
param_1 = (short *)((int)param_1 + param_3 * uVar6);
|
|
psVar4 = (short *)((int)psVar4 + uVar6);
|
|
param_2 = param_2 - 1;
|
|
} while (param_2 != 0);
|
|
}
|
|
if (0 < (int)uVar6) {
|
|
do {
|
|
*(undefined *)psVar4 = *(undefined *)param_1;
|
|
psVar4 = (short *)((int)psVar4 + 1);
|
|
param_1 = (short *)((int)param_1 + 1);
|
|
uVar6 = uVar6 - 1;
|
|
} while (uVar6 != 0);
|
|
}
|
|
}
|
|
else {
|
|
param_3 = uVar1 - 1;
|
|
psVar4 = psVar2;
|
|
if (param_3 != 0) {
|
|
psVar4 = psVar2;
|
|
do {
|
|
FUN_0101e83a(psVar4,param_1,param_2,(short *)(uint)param_4,(uint)param_5);
|
|
param_1 = (short *)((int)param_1 + uVar6);
|
|
psVar4 = (short *)((int)psVar4 + param_2 * uVar6);
|
|
param_3 = param_3 - 1;
|
|
} while (param_3 != 0);
|
|
}
|
|
if (0 < (int)param_2) {
|
|
do {
|
|
psVar3 = param_1;
|
|
uVar1 = uVar6;
|
|
if (0 < (int)uVar6) {
|
|
do {
|
|
*(undefined *)psVar4 = *(undefined *)psVar3;
|
|
psVar4 = (short *)((int)psVar4 + 1);
|
|
uVar1 = uVar1 - 1;
|
|
psVar3 = (short *)((int)psVar3 + 1);
|
|
} while (uVar1 != 0);
|
|
}
|
|
param_2 = param_2 - 1;
|
|
} while (param_2 != 0);
|
|
}
|
|
}
|
|
hMem = GlobalHandle(pMem);
|
|
GlobalUnlock(hMem);
|
|
hMem = GlobalHandle(pMem);
|
|
GlobalFree(hMem);
|
|
param_1 = psVar2;
|
|
}
|
|
}
|
|
return param_1;
|
|
}
|
|
|
|
|
|
|
|
short * FUN_0101ea82(int param_1,int param_2,short *param_3,uint *param_4)
|
|
|
|
{
|
|
short *psVar1;
|
|
|
|
if (((*(short *)(param_2 + 2) != *(short *)(param_1 + 2)) ||
|
|
(*(int *)(param_2 + 4) != *(int *)(param_1 + 4))) ||
|
|
(*(short *)(param_2 + 0xe) != *(short *)(param_1 + 0xe))) {
|
|
psVar1 = FUN_0101e579(param_3,*(ushort *)(param_2 + 0xe),*(ushort *)(param_1 + 0xe),param_4);
|
|
if ((psVar1 == (short *)0x0) ||
|
|
(psVar1 = FUN_0101e686(psVar1,*(ushort *)(param_2 + 2),*(ushort *)(param_1 + 2),
|
|
*(ushort *)(param_1 + 0xe) >> 3,param_4), psVar1 == (short *)0x0)) {
|
|
param_3 = (short *)0x0;
|
|
}
|
|
else {
|
|
param_3 = FUN_0101e8f5(psVar1,*(uint *)(param_2 + 4),*(uint *)(param_1 + 4),
|
|
*(ushort *)(param_1 + 0xe) >> 3,*(ushort *)(param_1 + 2),param_4);
|
|
}
|
|
}
|
|
return param_3;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
|
|
|
|
short * FUN_0101eb23(short *param_1,DWORD *param_2,HMMIO param_3,uint param_4)
|
|
|
|
{
|
|
short sVar1;
|
|
MMRESULT MVar2;
|
|
HGLOBAL hMem;
|
|
short *_Dst;
|
|
HRSRC hResInfo;
|
|
LONG LVar3;
|
|
uint uVar4;
|
|
short *pch;
|
|
short *_Src;
|
|
int iVar5;
|
|
DWORD *pDVar6;
|
|
_MMIOINFO *p_Var7;
|
|
char *lpText;
|
|
UINT uType;
|
|
_MMIOINFO local_94;
|
|
_MMCKINFO local_4c;
|
|
HWAVEOUT local_38;
|
|
_MMCKINFO local_34;
|
|
WAVEFORMATEX local_20;
|
|
short *local_c;
|
|
HGLOBAL local_8;
|
|
|
|
local_8 = (HGLOBAL)0x0;
|
|
local_c = (short *)0x0;
|
|
DAT_01027be0 = FUN_0101cfd0(param_1);
|
|
local_20.wFormatTag = DAT_01027be0[0xbe];
|
|
local_20.nChannels = DAT_01027be0[0xbf];
|
|
local_20.nSamplesPerSec = *(DWORD *)(DAT_01027be0 + 0xc0);
|
|
local_20.nAvgBytesPerSec = *(DWORD *)(DAT_01027be0 + 0xc2);
|
|
local_20.nBlockAlign = DAT_01027be0[0xc4];
|
|
local_20.wBitsPerSample = DAT_01027be0[0xc5];
|
|
local_20.cbSize = 0;
|
|
MVar2 = waveOutOpen((LPHWAVEOUT)&local_38,0xffffffff,(LPCWAVEFORMATEX)&local_20,0,0,1);
|
|
if (MVar2 != 0) {
|
|
if (_DAT_01027be4 != 0) {
|
|
MessageBoxA((HWND)0x0,"The waveform device can\'t play this format.","WavMix32",0x30);
|
|
}
|
|
return (short *)0x0;
|
|
}
|
|
hMem = GlobalAlloc(0x2040,0x42);
|
|
_Dst = (short *)GlobalLock(hMem);
|
|
if (_Dst == (short *)0x0) {
|
|
if (_DAT_01027be4 != 0) {
|
|
MessageBoxA((HWND)0x0,
|
|
|
|
"Unable to allocate memory for waveform data. Try making more memory available by closing other applications."
|
|
,"WavMix32",0x40);
|
|
}
|
|
return (short *)0x0;
|
|
}
|
|
sVar1 = (short)((uint)param_2 >> 0x10);
|
|
if ((param_4 & 2) == 0) {
|
|
if ((param_4 & 4) == 0) {
|
|
param_3 = mmioOpenA((LPSTR)param_2,(LPMMIOINFO)0x0,0x10000);
|
|
if (param_3 != (HMMIO)0x0) goto LAB_0101ee26;
|
|
if (_DAT_01027be4 == 0) goto LAB_0101ed88;
|
|
wsprintfA(s_WaveMix_V_2_3_by_Angel_M__Diaz__J_01024780,"Failed to open wave file %s.",param_2)
|
|
;
|
|
uType = 0x30;
|
|
lpText = s_WaveMix_V_2_3_by_Angel_M__Diaz__J_01024780;
|
|
goto LAB_0101efed;
|
|
}
|
|
iVar5 = 0x12;
|
|
pDVar6 = param_2;
|
|
p_Var7 = &local_94;
|
|
while (iVar5 != 0) {
|
|
iVar5 = iVar5 + -1;
|
|
p_Var7->dwFlags = *pDVar6;
|
|
pDVar6 = pDVar6 + 1;
|
|
p_Var7 = (_MMIOINFO *)&p_Var7->fccIOProc;
|
|
}
|
|
param_3 = mmioOpenA((LPSTR)0x0,(LPMMIOINFO)&local_94,0);
|
|
if (param_3 == (HMMIO)0x0) {
|
|
if (_DAT_01027be4 != 0) {
|
|
lpText =
|
|
"Failed to open memory file, mmioOpen error=%u.\nMay need to make sure memory is read-write"
|
|
;
|
|
LAB_0101ed67:
|
|
wsprintfA(s_WaveMix_V_2_3_by_Angel_M__Diaz__J_01024780,lpText,local_94.wErrorRet);
|
|
MessageBoxA((HWND)0x0,s_WaveMix_V_2_3_by_Angel_M__Diaz__J_01024780,"WavMix32",0x30);
|
|
}
|
|
}
|
|
else {
|
|
LAB_0101ee26:
|
|
local_4c.fccType = 0x45564157;
|
|
MVar2 = mmioDescend(param_3,(LPMMCKINFO)&local_4c,(MMCKINFO *)0x0,0x20);
|
|
if (MVar2 == 0) {
|
|
local_34.ckid = 0x20746d66;
|
|
MVar2 = mmioDescend(param_3,(LPMMCKINFO)&local_34,(MMCKINFO *)&local_4c,0x10);
|
|
if (MVar2 == 0) {
|
|
LVar3 = mmioRead(param_3,(HPSTR)_Dst,0x10);
|
|
if (LVar3 == 0x10) {
|
|
if (*_Dst == 1) {
|
|
mmioAscend(param_3,(LPMMCKINFO)&local_34,0);
|
|
local_34.ckid = 0x61746164;
|
|
MVar2 = mmioDescend(param_3,(LPMMCKINFO)&local_34,(MMCKINFO *)&local_4c,0x10);
|
|
if (MVar2 == 0) {
|
|
param_4 = local_34.cksize;
|
|
if (local_34.cksize == 0) {
|
|
if (_DAT_01027be4 != 0) {
|
|
uType = 0x30;
|
|
lpText = "The data chunk has no data.";
|
|
goto LAB_0101efed;
|
|
}
|
|
}
|
|
else {
|
|
hMem = GlobalAlloc(0x2002,local_34.cksize);
|
|
pch = (short *)GlobalLock(hMem);
|
|
if (pch == (short *)0x0) {
|
|
local_c = pch;
|
|
if (_DAT_01027be4 != 0) {
|
|
uType = 0x40;
|
|
lpText =
|
|
"Unable to allocate memory for waveform data. Try making more memory available by closing other applications."
|
|
;
|
|
local_c = pch;
|
|
goto LAB_0101efed;
|
|
}
|
|
}
|
|
else {
|
|
local_c = pch;
|
|
uVar4 = mmioRead(param_3,(HPSTR)pch,param_4);
|
|
if (uVar4 == param_4) {
|
|
pch = FUN_0101ea82((int)(DAT_01027be0 + 0xbe),(int)_Dst,pch,¶m_4);
|
|
if (pch != (short *)0x0) {
|
|
local_c = pch;
|
|
mmioClose(param_3,0);
|
|
if (local_8 != (HGLOBAL)0x0) {
|
|
FreeResource(local_8);
|
|
}
|
|
*(uint *)(_Dst + 10) = param_4;
|
|
_Src = DAT_01027be0 + 0xbe;
|
|
*(short **)(_Dst + 8) = pch;
|
|
*(undefined4 *)(_Dst + 0x10) = 0;
|
|
*(undefined4 *)(_Dst + 0x12) = 0;
|
|
*(undefined4 *)(_Dst + 0xe) = 0;
|
|
_Dst[0x20] = 0x5432;
|
|
memmove(_Dst,_Src,0x10);
|
|
if (sVar1 == 0) {
|
|
wsprintfA((LPSTR)(_Dst + 0x18),"res#%u",(uint)param_2 & 0xffff);
|
|
return _Dst;
|
|
}
|
|
iVar5 = lstrlenA((LPCSTR)param_2);
|
|
if (iVar5 < 0x10) {
|
|
iVar5 = 0;
|
|
}
|
|
else {
|
|
iVar5 = iVar5 + -0xf;
|
|
}
|
|
lstrcpyA((LPSTR)(_Dst + 0x18),(LPCSTR)(iVar5 + (int)param_2));
|
|
return _Dst;
|
|
}
|
|
local_c = pch;
|
|
if (_DAT_01027be4 != 0) {
|
|
uType = 0x30;
|
|
lpText = "Failed to convert wave format.";
|
|
local_c = pch;
|
|
LAB_0101efed:
|
|
MessageBoxA((HWND)0x0,lpText,"WavMix32",uType);
|
|
}
|
|
}
|
|
else {
|
|
if (_DAT_01027be4 != 0) {
|
|
uType = 0x30;
|
|
lpText = "Failed to read data chunk.";
|
|
goto LAB_0101efed;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else {
|
|
if (_DAT_01027be4 != 0) {
|
|
uType = 0x30;
|
|
lpText = "WAVE file has no data chunk.";
|
|
goto LAB_0101efed;
|
|
}
|
|
}
|
|
}
|
|
else {
|
|
if (_DAT_01027be4 != 0) {
|
|
uType = 0x30;
|
|
lpText = "The file is not a PCM file.";
|
|
goto LAB_0101efed;
|
|
}
|
|
}
|
|
}
|
|
else {
|
|
if (_DAT_01027be4 != 0) {
|
|
uType = 0x30;
|
|
lpText = "Failed to read format chunk.";
|
|
goto LAB_0101efed;
|
|
}
|
|
}
|
|
}
|
|
else {
|
|
if (_DAT_01027be4 != 0) {
|
|
uType = 0x30;
|
|
lpText = "WAVE file is corrupted.";
|
|
goto LAB_0101efed;
|
|
}
|
|
}
|
|
}
|
|
else {
|
|
if (_DAT_01027be4 != 0) {
|
|
uType = 0x30;
|
|
lpText = "This is not a WAVE file.";
|
|
goto LAB_0101efed;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else {
|
|
hResInfo = FindResourceA((HMODULE)param_3,(LPCSTR)param_2,"WAVE");
|
|
if ((hResInfo == (HRSRC)0x0) ||
|
|
(local_8 = LoadResource((HMODULE)param_3,hResInfo), local_8 == (HGLOBAL)0x0)) {
|
|
if (sVar1 == 0) {
|
|
param_2 = (DWORD *)((uint)param_2 & 0xffff);
|
|
lpText = "Failed to open \'WAVE\' resource %u.";
|
|
}
|
|
else {
|
|
lpText = "Failed to open \'WAVE\' resource \'%s\'.";
|
|
}
|
|
wsprintfA(s_WaveMix_V_2_3_by_Angel_M__Diaz__J_01024780,lpText,param_2);
|
|
if (_DAT_01027be4 != 0) {
|
|
MessageBoxA((HWND)0x0,s_WaveMix_V_2_3_by_Angel_M__Diaz__J_01024780,"WavMix32",0x30);
|
|
}
|
|
goto LAB_0101ed97;
|
|
}
|
|
iVar5 = 0x12;
|
|
p_Var7 = &local_94;
|
|
while (iVar5 != 0) {
|
|
iVar5 = iVar5 + -1;
|
|
p_Var7->dwFlags = 0;
|
|
p_Var7 = (_MMIOINFO *)&p_Var7->fccIOProc;
|
|
}
|
|
local_94.pchBuffer = (HPSTR)LockResource(local_8);
|
|
if (local_94.pchBuffer == (HPSTR)0x0) {
|
|
if (_DAT_01027be4 != 0) {
|
|
MessageBoxA((HWND)0x0,"Failed to lock \'WAVE\' resource","WavMix32",0x30);
|
|
}
|
|
FreeResource(local_8);
|
|
local_8 = (HGLOBAL)0x0;
|
|
goto LAB_0101ed97;
|
|
}
|
|
local_94.cchBuffer = SizeofResource((HMODULE)param_3,hResInfo);
|
|
local_94.fccIOProc = 0x204d454d;
|
|
local_94.adwInfo[0] = 0;
|
|
param_3 = mmioOpenA((LPSTR)0x0,(LPMMIOINFO)&local_94,0);
|
|
if (param_3 != (HMMIO)0x0) goto LAB_0101ee26;
|
|
if (_DAT_01027be4 != 0) {
|
|
lpText =
|
|
"Failed to open resource, mmioOpen error=%u.\nMay need to make sure resource is marked read-write"
|
|
;
|
|
goto LAB_0101ed67;
|
|
}
|
|
}
|
|
LAB_0101ed88:
|
|
if (param_3 != (HMMIO)0x0) {
|
|
mmioClose(param_3,0);
|
|
}
|
|
LAB_0101ed97:
|
|
hMem = GlobalHandle(_Dst);
|
|
GlobalUnlock(hMem);
|
|
hMem = GlobalHandle(_Dst);
|
|
GlobalFree(hMem);
|
|
if (local_c != (short *)0x0) {
|
|
hMem = GlobalHandle(local_c);
|
|
GlobalUnlock(hMem);
|
|
hMem = GlobalHandle(local_c);
|
|
GlobalFree(hMem);
|
|
}
|
|
if (local_8 != (HGLOBAL)0x0) {
|
|
FreeResource(local_8);
|
|
}
|
|
return (short *)0x0;
|
|
}
|
|
|
|
|
|
|
|
uint FUN_0101f093(uint param_1,int param_2)
|
|
|
|
{
|
|
uint uVar1;
|
|
|
|
if (param_1 == 0) {
|
|
param_1 = (uint)(*(ushort *)(param_2 + 0xe) >> 3) * (uint)*(ushort *)(param_2 + 2) *
|
|
*(int *)(param_2 + 4) >> 4;
|
|
}
|
|
uVar1 = 0x158;
|
|
if ((param_1 < 0x158) || (uVar1 = 0x2b11, 0x2b11 < param_1)) {
|
|
param_1 = uVar1;
|
|
}
|
|
return param_1;
|
|
}
|
|
|
|
|
|
|
|
int FUN_0101f0d4(LPCSTR param_1)
|
|
|
|
{
|
|
int iVar1;
|
|
LPCSTR pCVar2;
|
|
|
|
if ((param_1 == (LPCSTR)0x0) || (pCVar2 = param_1, *param_1 == '\0')) {
|
|
iVar1 = 0;
|
|
}
|
|
else {
|
|
do {
|
|
iVar1 = isalnum((int)*pCVar2);
|
|
if ((iVar1 == 0) && (iVar1 = isspace((int)*pCVar2), iVar1 == 0)) break;
|
|
pCVar2 = pCVar2 + 1;
|
|
} while (*pCVar2 != '\0');
|
|
do {
|
|
*pCVar2 = '\0';
|
|
pCVar2 = pCVar2 + -1;
|
|
if (pCVar2 < param_1) break;
|
|
iVar1 = isspace((int)*pCVar2);
|
|
} while (iVar1 != 0);
|
|
iVar1 = lstrlenA(param_1);
|
|
}
|
|
return iVar1;
|
|
}
|
|
|
|
|
|
|
|
void FUN_0101f13d(void)
|
|
|
|
{
|
|
UINT UVar1;
|
|
MMRESULT MVar2;
|
|
int iVar3;
|
|
UINT_PTR local_40;
|
|
tagWAVEOUTCAPSA local_3c;
|
|
undefined4 local_8;
|
|
|
|
local_8 = DAT_01024778;
|
|
UVar1 = waveOutGetNumDevs();
|
|
if (UVar1 != 0) {
|
|
wsprintfA(s_WaveMix_V_2_3_by_Angel_M__Diaz__J_01024780,
|
|
"%d waveOut Devices have been detected on your system.",UVar1);
|
|
MessageBoxA((HWND)0x0,s_WaveMix_V_2_3_by_Angel_M__Diaz__J_01024780,"WavMix32",0x40);
|
|
local_40 = 0;
|
|
if (0 < (int)UVar1) {
|
|
do {
|
|
MVar2 = waveOutGetDevCapsA(local_40,(LPWAVEOUTCAPSA)&local_3c,0x34);
|
|
if ((MVar2 == 0) && (iVar3 = FUN_0101f0d4(local_3c.szPname), iVar3 != 0)) {
|
|
wsprintfA(s_WaveMix_V_2_3_by_Angel_M__Diaz__J_01024780,"Device %i: %s\n\tVersion %u.%u",
|
|
local_40,local_3c.szPname,local_3c.vDriverVersion >> 8 & 0xff,
|
|
local_3c.vDriverVersion & 0xff);
|
|
}
|
|
else {
|
|
wsprintfA(s_WaveMix_V_2_3_by_Angel_M__Diaz__J_01024780,
|
|
"waveOutGetDevCaps failed (err %u) for device %d",1,local_40);
|
|
}
|
|
MessageBoxA((HWND)0x0,s_WaveMix_V_2_3_by_Angel_M__Diaz__J_01024780,"WavMix32",0x40);
|
|
local_40 = local_40 + 1;
|
|
} while ((int)local_40 < (int)UVar1);
|
|
}
|
|
}
|
|
FUN_0101cd9e();
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
char * FUN_0101f20f(void)
|
|
|
|
{
|
|
DWORD DVar1;
|
|
char *pcVar2;
|
|
|
|
DVar1 = GetVersion();
|
|
if (DVar1 < 0x80000000) {
|
|
pcVar2 = "WinNT:";
|
|
}
|
|
else {
|
|
DVar1 = GetVersion();
|
|
if ((0x7fffffff < DVar1) && (DVar1 = GetVersion(), 3 < (byte)DVar1)) {
|
|
return "Win95:";
|
|
}
|
|
DVar1 = GetVersion();
|
|
if ((0x7fffffff < DVar1) && (DVar1 = GetVersion(), (byte)DVar1 < 4)) {
|
|
return "Win31:";
|
|
}
|
|
pcVar2 = "OS_X:";
|
|
}
|
|
return pcVar2;
|
|
}
|
|
|
|
|
|
|
|
void FUN_0101f25c(undefined4 param_1,LPSTR param_2,int param_3)
|
|
|
|
{
|
|
char *lpString;
|
|
int iVar1;
|
|
LSTATUS LVar2;
|
|
int local_48;
|
|
undefined4 local_44;
|
|
HKEY local_40;
|
|
CHAR local_3c [52];
|
|
undefined4 local_8;
|
|
|
|
local_44 = 0;
|
|
local_8 = DAT_01024778;
|
|
lpString = FUN_0101f20f();
|
|
iVar1 = lstrlenA(lpString);
|
|
if (iVar1 + 10 <= param_3) {
|
|
wsprintfA(local_3c,"Device%u",param_1);
|
|
LVar2 = RegOpenKeyA((HKEY)0x80000002,"SOFTWARE\\Microsoft\\WaveMix",(PHKEY)&local_40);
|
|
if (LVar2 == 0) {
|
|
lpString = FUN_0101f20f();
|
|
lstrcpyA(param_2,lpString);
|
|
local_48 = param_3 - iVar1;
|
|
LVar2 = RegQueryValueA(local_40,local_3c,param_2 + iVar1,&local_48);
|
|
if ((LVar2 == 0) && (0 < local_48)) {
|
|
local_44 = 1;
|
|
}
|
|
RegCloseKey(local_40);
|
|
}
|
|
}
|
|
FUN_0101cd9e();
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_0101f315(HKEY param_1,LPCSTR param_2)
|
|
|
|
{
|
|
LSTATUS LVar1;
|
|
LONG local_18;
|
|
CHAR local_14 [12];
|
|
undefined4 local_8;
|
|
|
|
local_8 = DAT_01024778;
|
|
if (param_1 != (HKEY)0x0) {
|
|
local_18 = 10;
|
|
LVar1 = RegQueryValueA(param_1,param_2,local_14,&local_18);
|
|
if (LVar1 == 0) {
|
|
atol(local_14);
|
|
}
|
|
}
|
|
FUN_0101cd9e();
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_0101f36b(int param_1)
|
|
|
|
{
|
|
uint uVar1;
|
|
undefined2 uVar2;
|
|
short sVar3;
|
|
UINT UVar4;
|
|
LSTATUS LVar5;
|
|
LPWAVEOUTCAPSA pwoc;
|
|
HKEY local_40;
|
|
CHAR local_3c [52];
|
|
undefined4 local_8;
|
|
|
|
uVar1 = *(uint *)(param_1 + 2);
|
|
local_8 = DAT_01024778;
|
|
if (((uVar1 & 0x400) != 0) && (*(int *)(param_1 + 0x1a) != 0)) {
|
|
if ((char)uVar1 < '\0') {
|
|
UVar4 = waveOutGetNumDevs();
|
|
if (UVar4 <= (uint)*(ushort *)(param_1 + 0x14)) {
|
|
*(undefined2 *)(param_1 + 0x14) = 0;
|
|
}
|
|
}
|
|
else {
|
|
*(undefined2 *)(param_1 + 0x14) = *(undefined2 *)(DAT_01027be0 + 0x18);
|
|
}
|
|
wsprintfA(local_3c,"WaveMix\\Device%u",(uint)*(ushort *)(param_1 + 0x14));
|
|
LVar5 = RegOpenKeyA(*(HKEY *)(param_1 + 0x1a),local_3c,(PHKEY)&local_40);
|
|
if (LVar5 == 0) {
|
|
if ((uVar1 & 1) == 0) {
|
|
uVar2 = FUN_0101f315(local_40,"Channels");
|
|
*(undefined2 *)(param_1 + 6) = uVar2;
|
|
}
|
|
if ((uVar1 & 2) == 0) {
|
|
uVar2 = FUN_0101f315(local_40,"SamplesPerSec");
|
|
*(undefined2 *)(param_1 + 8) = uVar2;
|
|
}
|
|
if ((uVar1 & 4) == 0) {
|
|
uVar2 = FUN_0101f315(local_40,"WaveBlocks");
|
|
*(undefined2 *)(param_1 + 10) = uVar2;
|
|
}
|
|
if ((uVar1 & 8) == 0) {
|
|
uVar2 = FUN_0101f315(local_40,"WaveBlockLen");
|
|
*(undefined2 *)(param_1 + 0xc) = uVar2;
|
|
}
|
|
*(undefined2 *)(param_1 + 0xe) = 1;
|
|
if ((uVar1 & 0x20) == 0) {
|
|
sVar3 = FUN_0101f315(local_40,"Remix");
|
|
*(ushort *)(param_1 + 0x10) = (ushort)(sVar3 != 2);
|
|
}
|
|
if ((uVar1 & 0x40) == 0) {
|
|
FUN_0101d0a5((uint)*(ushort *)(param_1 + 0x14));
|
|
sVar3 = FUN_0101f315(local_40,"GoodWavePos");
|
|
*(ushort *)(param_1 + 0x12) = (ushort)(sVar3 != 0);
|
|
}
|
|
if ((uVar1 & 0x100) == 0) {
|
|
uVar2 = FUN_0101f315(local_40,"ShowDebugDialogs");
|
|
*(undefined2 *)(param_1 + 0x18) = uVar2;
|
|
}
|
|
if ((uVar1 & 0x200) == 0) {
|
|
FUN_0101d079((uint)*(ushort *)(param_1 + 10));
|
|
uVar2 = FUN_0101f315(local_40,"PauseBlocks");
|
|
*(undefined2 *)(param_1 + 0x16) = uVar2;
|
|
}
|
|
pwoc = (LPWAVEOUTCAPSA)(DAT_01027be0 + 0x7c);
|
|
*(undefined4 *)(param_1 + 2) = 0x3ff;
|
|
waveOutGetDevCapsA((uint)*(ushort *)(param_1 + 0x14),pwoc,0x34);
|
|
RegCloseKey(local_40);
|
|
}
|
|
}
|
|
FUN_0101cd9e();
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_0101f50b(void)
|
|
|
|
{
|
|
MMRESULT MVar1;
|
|
int iVar2;
|
|
char *pcVar3;
|
|
char *pcVar4;
|
|
char *pcVar5;
|
|
tagWAVEOUTCAPSA local_3c;
|
|
undefined4 local_8;
|
|
|
|
local_8 = DAT_01024778;
|
|
MVar1 = waveOutGetDevCapsA(*(UINT_PTR *)(DAT_01027be0 + 0x18),(LPWAVEOUTCAPSA)&local_3c,0x34);
|
|
if (MVar1 == 0) {
|
|
iVar2 = FUN_0101f0d4(local_3c.szPname);
|
|
if (iVar2 != 0) goto LAB_0101f54f;
|
|
}
|
|
lstrcpyA(local_3c.szPname,"Unknown Device");
|
|
LAB_0101f54f:
|
|
pcVar5 = "cmixit";
|
|
if (*(code **)(DAT_01027be0 + 0x1ac) != FUN_0101d285) {
|
|
pcVar5 = "386 mixit";
|
|
}
|
|
pcVar4 = "TRUE";
|
|
if (*(int *)(DAT_01027be0 + 0x1a4) == 0) {
|
|
pcVar4 = "FALSE";
|
|
}
|
|
pcVar3 = "Reset";
|
|
if (*(code **)(DAT_01027be0 + 0x1b0) != FUN_0101dde8) {
|
|
pcVar3 = "NoReset";
|
|
}
|
|
wsprintfA(s_WaveMix_V_2_3_by_Angel_M__Diaz__J_01024780,
|
|
|
|
"Using:\t%s.\n\tRemix = %s\n\tGoodGetPos=%s\n\t%d ping pong wave blocks\n\tWave block len = %lu bytes\n\tpfnMixit=%s\n\tSamplesPerSec=%lu,\n\tChannels=%d\n\tPauseBlocks=%d"
|
|
,local_3c.szPname,pcVar3,pcVar4,*(undefined4 *)(DAT_01027be0 + 400),
|
|
*(undefined4 *)(DAT_01027be0 + 0x18c),pcVar5,*(undefined4 *)(DAT_01027be0 + 0x180),
|
|
(uint)*(ushort *)(DAT_01027be0 + 0x17e),*(undefined4 *)(DAT_01027be0 + 0x194));
|
|
MessageBoxA((HWND)0x0,s_WaveMix_V_2_3_by_Angel_M__Diaz__J_01024780,"WavMix32",0x40);
|
|
FUN_0101cd9e();
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_0101f5f1(HWND param_1,undefined4 param_2,int param_3)
|
|
|
|
{
|
|
HWND hWnd;
|
|
MMRESULT MVar1;
|
|
uint wParam;
|
|
UINT Msg;
|
|
UINT Msg_00;
|
|
WPARAM wParam_00;
|
|
CHAR *lpString;
|
|
LPARAM lParam;
|
|
BOOL bEnable;
|
|
int nMaxCount;
|
|
char *lpString_00;
|
|
UINT_PTR local_148;
|
|
tagWAVEOUTCAPSA local_13c;
|
|
CHAR local_108 [256];
|
|
undefined4 local_8;
|
|
|
|
local_8 = DAT_01024778;
|
|
GetWindowTextA(param_1,local_108,0x100);
|
|
wsprintfA(s_WaveMix_V_2_3_by_Angel_M__Diaz__J_01024780,local_108,2,0x51);
|
|
SetWindowTextA(param_1,s_WaveMix_V_2_3_by_Angel_M__Diaz__J_01024780);
|
|
SetWindowLongA(param_1,-0x15,param_3);
|
|
lParam = 0;
|
|
wParam = (uint)(1 < *(ushort *)(param_3 + 6));
|
|
Msg = 0xf1;
|
|
hWnd = GetDlgItem(param_1,1000);
|
|
SendMessageA(hWnd,Msg,wParam,lParam);
|
|
lParam = 0;
|
|
wParam = (uint)(*(short *)(param_3 + 0x10) != 0);
|
|
Msg = 0xf1;
|
|
hWnd = GetDlgItem(param_1,0x3e9);
|
|
SendMessageA(hWnd,Msg,wParam,lParam);
|
|
lParam = 0;
|
|
wParam = (uint)(*(short *)(param_3 + 0x12) != 0);
|
|
Msg = 0xf1;
|
|
hWnd = GetDlgItem(param_1,0x3ec);
|
|
SendMessageA(hWnd,Msg,wParam,lParam);
|
|
lParam = 0;
|
|
wParam = (uint)(*(short *)(param_3 + 0xe) != 0);
|
|
Msg = 0xf1;
|
|
hWnd = GetDlgItem(param_1,0x3ed);
|
|
SendMessageA(hWnd,Msg,wParam,lParam);
|
|
lParam = 0;
|
|
wParam = (uint)(*(short *)(param_3 + 0x18) != 0);
|
|
Msg = 0xf1;
|
|
hWnd = GetDlgItem(param_1,0x3f2);
|
|
SendMessageA(hWnd,Msg,wParam,lParam);
|
|
bEnable = 0;
|
|
hWnd = GetDlgItem(param_1,0x3ed);
|
|
EnableWindow(hWnd,bEnable);
|
|
lParam = 0;
|
|
wParam_00 = 2;
|
|
Msg = 0xc5;
|
|
hWnd = GetDlgItem(param_1,0x3eb);
|
|
SendMessageA(hWnd,Msg,wParam_00,lParam);
|
|
lParam = 0;
|
|
wParam_00 = 4;
|
|
Msg = 0xc5;
|
|
hWnd = GetDlgItem(param_1,0x3ef);
|
|
SendMessageA(hWnd,Msg,wParam_00,lParam);
|
|
lParam = 0;
|
|
wParam_00 = 2;
|
|
Msg = 0xc5;
|
|
hWnd = GetDlgItem(param_1,0x3f0);
|
|
SendMessageA(hWnd,Msg,wParam_00,lParam);
|
|
lParam = 0;
|
|
wParam_00 = 2;
|
|
Msg = 0xc5;
|
|
hWnd = GetDlgItem(param_1,0x3f3);
|
|
SendMessageA(hWnd,Msg,wParam_00,lParam);
|
|
nMaxCount = 100;
|
|
lpString = local_108;
|
|
hWnd = GetDlgItem(param_1,0x3f4);
|
|
GetWindowTextA(hWnd,lpString,nMaxCount);
|
|
wsprintfA(s_WaveMix_V_2_3_by_Angel_M__Diaz__J_01024780,local_108,2,10);
|
|
lpString_00 = s_WaveMix_V_2_3_by_Angel_M__Diaz__J_01024780;
|
|
hWnd = GetDlgItem(param_1,0x3f4);
|
|
SetWindowTextA(hWnd,lpString_00);
|
|
nMaxCount = 100;
|
|
lpString = local_108;
|
|
hWnd = GetDlgItem(param_1,0x3f5);
|
|
GetWindowTextA(hWnd,lpString,nMaxCount);
|
|
wsprintfA(s_WaveMix_V_2_3_by_Angel_M__Diaz__J_01024780,local_108,0x158,0x2b11);
|
|
lpString_00 = s_WaveMix_V_2_3_by_Angel_M__Diaz__J_01024780;
|
|
hWnd = GetDlgItem(param_1,0x3f5);
|
|
SetWindowTextA(hWnd,lpString_00);
|
|
nMaxCount = 100;
|
|
lpString = local_108;
|
|
hWnd = GetDlgItem(param_1,0x3f6);
|
|
GetWindowTextA(hWnd,lpString,nMaxCount);
|
|
wsprintfA(s_WaveMix_V_2_3_by_Angel_M__Diaz__J_01024780,local_108,0,10);
|
|
lpString_00 = s_WaveMix_V_2_3_by_Angel_M__Diaz__J_01024780;
|
|
hWnd = GetDlgItem(param_1,0x3f6);
|
|
SetWindowTextA(hWnd,lpString_00);
|
|
nMaxCount = 100;
|
|
lpString = local_108;
|
|
hWnd = GetDlgItem(param_1,0x3f7);
|
|
GetWindowTextA(hWnd,lpString,nMaxCount);
|
|
wsprintfA(s_WaveMix_V_2_3_by_Angel_M__Diaz__J_01024780,local_108,0x10);
|
|
lpString_00 = s_WaveMix_V_2_3_by_Angel_M__Diaz__J_01024780;
|
|
hWnd = GetDlgItem(param_1,0x3f7);
|
|
SetWindowTextA(hWnd,lpString_00);
|
|
wsprintfA(s_WaveMix_V_2_3_by_Angel_M__Diaz__J_01024780,"%d",(uint)*(ushort *)(param_3 + 10));
|
|
lpString_00 = s_WaveMix_V_2_3_by_Angel_M__Diaz__J_01024780;
|
|
hWnd = GetDlgItem(param_1,0x3eb);
|
|
SetWindowTextA(hWnd,lpString_00);
|
|
wsprintfA(s_WaveMix_V_2_3_by_Angel_M__Diaz__J_01024780,"%d",(uint)*(ushort *)(param_3 + 0xc));
|
|
lpString_00 = s_WaveMix_V_2_3_by_Angel_M__Diaz__J_01024780;
|
|
hWnd = GetDlgItem(param_1,0x3ef);
|
|
SetWindowTextA(hWnd,lpString_00);
|
|
wsprintfA(s_WaveMix_V_2_3_by_Angel_M__Diaz__J_01024780,"%d",(uint)*(ushort *)(param_3 + 8));
|
|
lpString_00 = s_WaveMix_V_2_3_by_Angel_M__Diaz__J_01024780;
|
|
hWnd = GetDlgItem(param_1,0x3f0);
|
|
SetWindowTextA(hWnd,lpString_00);
|
|
wsprintfA(s_WaveMix_V_2_3_by_Angel_M__Diaz__J_01024780,"%d",(uint)*(ushort *)(param_3 + 0x16));
|
|
lpString_00 = s_WaveMix_V_2_3_by_Angel_M__Diaz__J_01024780;
|
|
hWnd = GetDlgItem(param_1,0x3f3);
|
|
SetWindowTextA(hWnd,lpString_00);
|
|
Msg = waveOutGetNumDevs();
|
|
local_148 = 0;
|
|
if (0 < (int)Msg) {
|
|
do {
|
|
MVar1 = waveOutGetDevCapsA(local_148,(LPWAVEOUTCAPSA)&local_13c,0x34);
|
|
if (MVar1 == 0) {
|
|
wsprintfA(s_WaveMix_V_2_3_by_Angel_M__Diaz__J_01024780,"%d: %s",local_148,local_13c.szPname)
|
|
;
|
|
lpString_00 = s_WaveMix_V_2_3_by_Angel_M__Diaz__J_01024780;
|
|
wParam_00 = 0;
|
|
Msg_00 = 0x143;
|
|
hWnd = GetDlgItem(param_1,0x3f1);
|
|
SendMessageA(hWnd,Msg_00,wParam_00,(LPARAM)lpString_00);
|
|
}
|
|
else {
|
|
wsprintfA(s_WaveMix_V_2_3_by_Angel_M__Diaz__J_01024780,
|
|
"waveOutGetDevCaps failed (err %u) for device %d",MVar1,local_148);
|
|
MessageBoxA((HWND)0x0,s_WaveMix_V_2_3_by_Angel_M__Diaz__J_01024780,"WavMix32",0x40);
|
|
}
|
|
local_148 = local_148 + 1;
|
|
} while ((int)local_148 < (int)Msg);
|
|
}
|
|
wParam = (uint)*(ushort *)(param_3 + 0x14);
|
|
lParam = 0;
|
|
Msg = 0x14e;
|
|
hWnd = GetDlgItem(param_1,0x3f1);
|
|
SendMessageA(hWnd,Msg,wParam,lParam);
|
|
FUN_0101cd9e();
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
undefined4 FUN_0101fa63(HWND param_1,int param_2)
|
|
|
|
{
|
|
undefined2 uVar1;
|
|
LONG LVar2;
|
|
HWND hWnd;
|
|
LRESULT LVar3;
|
|
UINT Msg;
|
|
WPARAM wParam;
|
|
char *lpString;
|
|
LPARAM lParam;
|
|
int nMaxCount;
|
|
int nMaxCount_00;
|
|
|
|
LVar2 = GetWindowLongA(param_1,-0x15);
|
|
if (param_2 == 1) {
|
|
if (LVar2 != 0) {
|
|
lParam = 0;
|
|
wParam = 0;
|
|
Msg = 0xf0;
|
|
hWnd = GetDlgItem(param_1,1000);
|
|
LVar3 = SendMessageA(hWnd,Msg,wParam,lParam);
|
|
lParam = 0;
|
|
wParam = 0;
|
|
Msg = 0xf0;
|
|
*(short *)(LVar2 + 6) = (ushort)(LVar3 != 0) + 1;
|
|
hWnd = GetDlgItem(param_1,0x3e9);
|
|
LVar3 = SendMessageA(hWnd,Msg,wParam,lParam);
|
|
lParam = 0;
|
|
wParam = 0;
|
|
Msg = 0xf0;
|
|
*(ushort *)(LVar2 + 0x10) = (ushort)(LVar3 != 0);
|
|
hWnd = GetDlgItem(param_1,0x3ec);
|
|
LVar3 = SendMessageA(hWnd,Msg,wParam,lParam);
|
|
lParam = 0;
|
|
wParam = 0;
|
|
Msg = 0xf0;
|
|
*(ushort *)(LVar2 + 0x12) = (ushort)(LVar3 != 0);
|
|
hWnd = GetDlgItem(param_1,0x3f2);
|
|
LVar3 = SendMessageA(hWnd,Msg,wParam,lParam);
|
|
lParam = 0;
|
|
wParam = 0;
|
|
Msg = 0xf0;
|
|
*(ushort *)(LVar2 + 0x18) = (ushort)(LVar3 != 0);
|
|
hWnd = GetDlgItem(param_1,0x3ed);
|
|
LVar3 = SendMessageA(hWnd,Msg,wParam,lParam);
|
|
nMaxCount = 10;
|
|
lpString = s_WaveMix_V_2_3_by_Angel_M__Diaz__J_01024780;
|
|
*(ushort *)(LVar2 + 0xe) = (ushort)(LVar3 != 0);
|
|
hWnd = GetDlgItem(param_1,0x3eb);
|
|
GetWindowTextA(hWnd,lpString,nMaxCount);
|
|
nMaxCount = atoi(s_WaveMix_V_2_3_by_Angel_M__Diaz__J_01024780);
|
|
nMaxCount_00 = 10;
|
|
lpString = s_WaveMix_V_2_3_by_Angel_M__Diaz__J_01024780;
|
|
*(undefined2 *)(LVar2 + 10) = (short)nMaxCount;
|
|
hWnd = GetDlgItem(param_1,0x3ef);
|
|
GetWindowTextA(hWnd,lpString,nMaxCount_00);
|
|
nMaxCount = atoi(s_WaveMix_V_2_3_by_Angel_M__Diaz__J_01024780);
|
|
nMaxCount_00 = 10;
|
|
lpString = s_WaveMix_V_2_3_by_Angel_M__Diaz__J_01024780;
|
|
*(undefined2 *)(LVar2 + 0xc) = (short)nMaxCount;
|
|
hWnd = GetDlgItem(param_1,0x3f0);
|
|
GetWindowTextA(hWnd,lpString,nMaxCount_00);
|
|
nMaxCount = atoi(s_WaveMix_V_2_3_by_Angel_M__Diaz__J_01024780);
|
|
nMaxCount_00 = 10;
|
|
lpString = s_WaveMix_V_2_3_by_Angel_M__Diaz__J_01024780;
|
|
*(undefined2 *)(LVar2 + 8) = (short)nMaxCount;
|
|
hWnd = GetDlgItem(param_1,0x3f3);
|
|
GetWindowTextA(hWnd,lpString,nMaxCount_00);
|
|
nMaxCount = atoi(s_WaveMix_V_2_3_by_Angel_M__Diaz__J_01024780);
|
|
nMaxCount_00 = 10;
|
|
lpString = s_WaveMix_V_2_3_by_Angel_M__Diaz__J_01024780;
|
|
*(undefined2 *)(LVar2 + 0x16) = (short)nMaxCount;
|
|
hWnd = GetDlgItem(param_1,0x3f1);
|
|
GetWindowTextA(hWnd,lpString,nMaxCount_00);
|
|
nMaxCount = isdigit((int)s_WaveMix_V_2_3_by_Angel_M__Diaz__J_01024780[0]);
|
|
if (nMaxCount == 0) {
|
|
uVar1 = 0;
|
|
}
|
|
else {
|
|
nMaxCount = atoi(s_WaveMix_V_2_3_by_Angel_M__Diaz__J_01024780);
|
|
uVar1 = (undefined2)nMaxCount;
|
|
}
|
|
*(undefined2 *)(LVar2 + 0x14) = uVar1;
|
|
EndDialog(param_1,1);
|
|
}
|
|
}
|
|
else {
|
|
if (param_2 != 2) {
|
|
return 0;
|
|
}
|
|
EndDialog(param_1,0);
|
|
}
|
|
return 1;
|
|
}
|
|
|
|
|
|
|
|
undefined4 FUN_0101fc24(HWND param_1,int param_2,uint param_3,int param_4)
|
|
|
|
{
|
|
undefined4 uVar1;
|
|
|
|
if (param_2 == 0x110) {
|
|
uVar1 = FUN_0101f5f1(param_1,param_3,param_4);
|
|
}
|
|
else {
|
|
if (param_2 == 0x111) {
|
|
FUN_0101fa63(param_1,param_3 & 0xffff);
|
|
uVar1 = 1;
|
|
}
|
|
else {
|
|
uVar1 = 0;
|
|
}
|
|
}
|
|
return uVar1;
|
|
}
|
|
|
|
|
|
|
|
uint * FUN_0101fc6d(uint *param_1,uint param_2,undefined2 param_3,undefined2 param_4,
|
|
undefined2 param_5,undefined2 param_6,undefined4 *param_7)
|
|
|
|
{
|
|
size_t sVar1;
|
|
HGLOBAL hMem;
|
|
uint *puVar2;
|
|
uint uVar3;
|
|
uint uVar4;
|
|
undefined4 *puVar5;
|
|
|
|
sVar1 = wcslen((wchar_t *)param_7);
|
|
uVar4 = sVar1 * 2 + 0x18;
|
|
*param_1 = uVar4;
|
|
if ((uVar4 & 3) != 0) {
|
|
*param_1 = (uVar4 - (uVar4 & 3)) + 4;
|
|
}
|
|
hMem = GlobalAlloc(0x42,*param_1);
|
|
puVar2 = (uint *)GlobalLock(hMem);
|
|
if (puVar2 != (uint *)0x0) {
|
|
puVar2[1] = 0;
|
|
*(undefined2 *)(puVar2 + 2) = 0;
|
|
*puVar2 = param_2 | 0x10000000;
|
|
*(undefined2 *)((int)puVar2 + 10) = param_3;
|
|
*(undefined2 *)(puVar2 + 3) = param_4;
|
|
*(undefined2 *)((int)puVar2 + 0xe) = param_5;
|
|
*(undefined2 *)(puVar2 + 4) = param_6;
|
|
sVar1 = wcslen((wchar_t *)param_7);
|
|
uVar4 = sVar1 * 2 + 2;
|
|
uVar3 = uVar4 >> 2;
|
|
puVar5 = (undefined4 *)((int)puVar2 + 0x16);
|
|
while (uVar3 != 0) {
|
|
uVar3 = uVar3 - 1;
|
|
*puVar5 = *param_7;
|
|
param_7 = param_7 + 1;
|
|
puVar5 = puVar5 + 1;
|
|
}
|
|
uVar4 = uVar4 & 3;
|
|
while (uVar4 != 0) {
|
|
uVar4 = uVar4 - 1;
|
|
*(undefined *)puVar5 = *(undefined *)param_7;
|
|
param_7 = (undefined4 *)((int)param_7 + 1);
|
|
puVar5 = (undefined4 *)((int)puVar5 + 1);
|
|
}
|
|
}
|
|
return puVar2;
|
|
}
|
|
|
|
|
|
|
|
LPVOID FUN_0101fd0e(uint *param_1,LPVOID param_2,ushort param_3,uint param_4,undefined2 param_5,
|
|
undefined2 param_6,undefined2 param_7,undefined2 param_8,undefined2 param_9,
|
|
wchar_t *param_10)
|
|
|
|
{
|
|
uint uVar1;
|
|
size_t sVar2;
|
|
HGLOBAL hMem;
|
|
uint *puVar3;
|
|
uint dwBytes;
|
|
UINT uFlags;
|
|
|
|
if (param_2 != (LPVOID)0x0) {
|
|
uVar1 = *param_1;
|
|
sVar2 = wcslen(param_10);
|
|
*param_1 = *param_1 + sVar2 * 2 + 0x19;
|
|
dwBytes = *param_1 & 3;
|
|
if (dwBytes != 0) {
|
|
*param_1 = (*param_1 - dwBytes) + 4;
|
|
}
|
|
hMem = GlobalHandle(param_2);
|
|
GlobalUnlock(hMem);
|
|
uFlags = 0x42;
|
|
dwBytes = *param_1;
|
|
hMem = GlobalHandle(param_2);
|
|
hMem = GlobalReAlloc(hMem,dwBytes,uFlags);
|
|
param_2 = GlobalLock(hMem);
|
|
if (param_2 != (LPVOID)0x0) {
|
|
puVar3 = (uint *)(uVar1 + (int)param_2);
|
|
puVar3[1] = 0;
|
|
*puVar3 = param_4 | 0x50000000;
|
|
*(undefined2 *)(puVar3 + 2) = param_6;
|
|
*(undefined2 *)((int)puVar3 + 10) = param_7;
|
|
*(undefined2 *)(puVar3 + 3) = param_8;
|
|
*(undefined2 *)((int)puVar3 + 0xe) = param_9;
|
|
*(undefined2 *)(puVar3 + 4) = param_5;
|
|
*(uint *)((int)puVar3 + 0x12) = (uint)param_3 << 0x10 | 0xffff;
|
|
wcscpy((wchar_t *)((int)puVar3 + 0x16),param_10);
|
|
*(short *)((int)param_2 + 8) = *(short *)((int)param_2 + 8) + 1;
|
|
}
|
|
}
|
|
return param_2;
|
|
}
|
|
|
|
|
|
|
|
void FUN_0101fde1(void)
|
|
|
|
{
|
|
uint *puVar1;
|
|
LPVOID pvVar2;
|
|
uint local_8;
|
|
|
|
local_8 = 0;
|
|
puVar1 = FUN_0101fc6d(&local_8,0x80c80080,0,0,0xd4,0x84,
|
|
(undefined4 *)L"WavMix32 Settings (Ver %X.%X Static)");
|
|
pvVar2 = FUN_0101fd0e(&local_8,puVar1,0x80,0x10001,1,0x9b,5,0x32,0xe,L"&Ok");
|
|
pvVar2 = FUN_0101fd0e(&local_8,pvVar2,0x80,0x10000,2,0x9b,0x19,0x32,0xe,L"&Cancel");
|
|
pvVar2 = FUN_0101fd0e(&local_8,pvVar2,0x82,0,0x3f4,5,5,0x73,8,L"Number of WaveBlocks (%d-%d):");
|
|
pvVar2 = FUN_0101fd0e(&local_8,pvVar2,0x82,0,0x3f5,5,0x14,0x73,8,L"Size of WaveBlocks (%d-%d):");
|
|
pvVar2 = FUN_0101fd0e(&local_8,pvVar2,0x82,0,0xffff,5,0x23,0x66,8,
|
|
L"Playback Frequency (11,22,44):");
|
|
pvVar2 = FUN_0101fd0e(&local_8,pvVar2,0x82,0,0xffff,5,0x50,0x39,8,L"Playback Device:");
|
|
pvVar2 = FUN_0101fd0e(&local_8,pvVar2,0x82,0,0x3f6,5,0x32,0x73,8,
|
|
L"Number of Pause Blocks (%d-%d):");
|
|
pvVar2 = FUN_0101fd0e(&local_8,pvVar2,0x82,0,0x3f7,5,0x41,0x3f,8,L"Max Channels = %d");
|
|
pvVar2 = FUN_0101fd0e(&local_8,pvVar2,0x81,0x810080,0x3eb,0x7d,5,0x19,0xc,L"-1");
|
|
pvVar2 = FUN_0101fd0e(&local_8,pvVar2,0x81,0x810080,0x3ef,0x7d,0x14,0x19,0xc,L"-1");
|
|
pvVar2 = FUN_0101fd0e(&local_8,pvVar2,0x81,0x810080,0x3f0,0x7d,0x23,0x19,0xc,L"-1");
|
|
pvVar2 = FUN_0101fd0e(&local_8,pvVar2,0x81,0x810080,0x3f3,0x7d,0x32,0x19,0xc,L"-1");
|
|
pvVar2 = FUN_0101fd0e(&local_8,pvVar2,0x85,0x210102,0x3f1,0x41,0x50,0x8c,0x3c,L"No Devices");
|
|
pvVar2 = FUN_0101fd0e(&local_8,pvVar2,0x80,0x10003,1000,5,0x65,0x28,10,L"Stereo");
|
|
pvVar2 = FUN_0101fd0e(&local_8,pvVar2,0x80,0x10003,0x3e9,0x37,0x65,0x3c,10,L"Reset Remix");
|
|
pvVar2 = FUN_0101fd0e(&local_8,pvVar2,0x80,0x10003,0x3f2,0x7d,0x65,0x4e,10,L"Show Debug Dialogs");
|
|
pvVar2 = FUN_0101fd0e(&local_8,pvVar2,0x80,0x10003,0x3ed,5,0x75,0x28,10,L"CMixit");
|
|
FUN_0101fd0e(&local_8,pvVar2,0x80,0x10003,0x3ec,0x37,0x75,0x4b,10,L"Good Get Position");
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_01020059(LPCVOID param_1)
|
|
|
|
{
|
|
HGLOBAL hMem;
|
|
|
|
if (param_1 != (LPCVOID)0x0) {
|
|
hMem = GlobalHandle(param_1);
|
|
GlobalUnlock(hMem);
|
|
hMem = GlobalHandle(param_1);
|
|
GlobalFree(hMem);
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
|
|
|
|
undefined4 FUN_0102008d(short *param_1,int param_2)
|
|
|
|
{
|
|
uint uVar1;
|
|
short *psVar2;
|
|
undefined4 uVar3;
|
|
|
|
psVar2 = FUN_0101cfd0(param_1);
|
|
if (psVar2 == (short *)0x0) {
|
|
uVar3 = 5;
|
|
DAT_01027be0 = psVar2;
|
|
}
|
|
else {
|
|
if (param_2 == 0) {
|
|
uVar3 = 0xb;
|
|
DAT_01027be0 = psVar2;
|
|
}
|
|
else {
|
|
uVar1 = *(uint *)(param_2 + 2);
|
|
DAT_01027be0 = psVar2;
|
|
if ((uVar1 & 1) != 0) {
|
|
DAT_01027be0 = psVar2;
|
|
*(short *)(param_2 + 6) = psVar2[0xbf];
|
|
}
|
|
if ((uVar1 & 2) != 0) {
|
|
*(short *)(param_2 + 8) = (short)(*(uint *)(psVar2 + 0xc0) / 0x2b11) * 0xb;
|
|
}
|
|
if ((uVar1 & 4) != 0) {
|
|
*(short *)(param_2 + 10) = psVar2[200];
|
|
}
|
|
if ((uVar1 & 8) != 0) {
|
|
*(short *)(param_2 + 0xc) = psVar2[0xc6];
|
|
}
|
|
if ((uVar1 & 0x10) != 0) {
|
|
*(ushort *)(param_2 + 0xe) = (ushort)(*(code **)(psVar2 + 0xd6) == FUN_0101d285);
|
|
}
|
|
if ((uVar1 & 0x20) != 0) {
|
|
*(ushort *)(param_2 + 0x10) = (ushort)(*(code **)(psVar2 + 0xd8) == FUN_0101dde8);
|
|
}
|
|
if ((uVar1 & 0x40) != 0) {
|
|
*(short *)(param_2 + 0x12) = psVar2[0xd2];
|
|
}
|
|
if ((char)uVar1 < '\0') {
|
|
*(short *)(param_2 + 0x14) = psVar2[0xc];
|
|
}
|
|
if ((uVar1 & 0x100) != 0) {
|
|
*(ushort *)(param_2 + 0x18) = (ushort)(_DAT_01027be4 != 0);
|
|
}
|
|
if ((uVar1 & 0x200) != 0) {
|
|
*(short *)(param_2 + 0x16) = psVar2[0xca];
|
|
}
|
|
uVar3 = 0;
|
|
}
|
|
}
|
|
return uVar3;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
|
|
|
|
void FUN_0102018c(uint param_1)
|
|
|
|
{
|
|
if ((param_1 & 0x80) != 0) {
|
|
wsprintfA(s_WaveMix_V_2_3_by_Angel_M__Diaz__J_01024780,"%d",*(undefined4 *)(DAT_01027be0 + 0x18)
|
|
);
|
|
WritePrivateProfileStringA
|
|
("general","WaveOutDevice",s_WaveMix_V_2_3_by_Angel_M__Diaz__J_01024780,&DAT_01025850)
|
|
;
|
|
}
|
|
if ((param_1 & 1) != 0) {
|
|
wsprintfA(s_WaveMix_V_2_3_by_Angel_M__Diaz__J_01024780,"%d",
|
|
(uint)*(ushort *)(DAT_01027be0 + 0x17e));
|
|
WritePrivateProfileStringA
|
|
((LPCSTR)(DAT_01027be0 + 0x1c),"Channels",s_WaveMix_V_2_3_by_Angel_M__Diaz__J_01024780
|
|
,&DAT_01025850);
|
|
}
|
|
if ((param_1 & 2) != 0) {
|
|
wsprintfA(s_WaveMix_V_2_3_by_Angel_M__Diaz__J_01024780,"%d",
|
|
(*(uint *)(DAT_01027be0 + 0x180) / 0x2b11) * 0xb & 0xffff);
|
|
WritePrivateProfileStringA
|
|
((LPCSTR)(DAT_01027be0 + 0x1c),"SamplesPerSec",
|
|
s_WaveMix_V_2_3_by_Angel_M__Diaz__J_01024780,&DAT_01025850);
|
|
}
|
|
if ((param_1 & 4) != 0) {
|
|
wsprintfA(s_WaveMix_V_2_3_by_Angel_M__Diaz__J_01024780,"%d",*(undefined4 *)(DAT_01027be0 + 400))
|
|
;
|
|
WritePrivateProfileStringA
|
|
((LPCSTR)(DAT_01027be0 + 0x1c),"WaveBlocks",
|
|
s_WaveMix_V_2_3_by_Angel_M__Diaz__J_01024780,&DAT_01025850);
|
|
}
|
|
if ((param_1 & 8) != 0) {
|
|
wsprintfA(s_WaveMix_V_2_3_by_Angel_M__Diaz__J_01024780,"%d",
|
|
(uint)*(ushort *)(DAT_01027be0 + 0x18c));
|
|
WritePrivateProfileStringA
|
|
((LPCSTR)(DAT_01027be0 + 0x1c),"WaveBlockLen",
|
|
s_WaveMix_V_2_3_by_Angel_M__Diaz__J_01024780,&DAT_01025850);
|
|
}
|
|
if ((param_1 & 0x10) != 0) {
|
|
wsprintfA(s_WaveMix_V_2_3_by_Angel_M__Diaz__J_01024780,"%d",
|
|
(uint)(*(code **)(DAT_01027be0 + 0x1ac) == FUN_0101d285));
|
|
WritePrivateProfileStringA
|
|
((LPCSTR)(DAT_01027be0 + 0x1c),"CMixit",s_WaveMix_V_2_3_by_Angel_M__Diaz__J_01024780,
|
|
&DAT_01025850);
|
|
}
|
|
if ((param_1 & 0x20) != 0) {
|
|
wsprintfA(s_WaveMix_V_2_3_by_Angel_M__Diaz__J_01024780,"%d",
|
|
(uint)(*(code **)(DAT_01027be0 + 0x1b0) != FUN_0101dde8) + 1);
|
|
WritePrivateProfileStringA
|
|
((LPCSTR)(DAT_01027be0 + 0x1c),"Remix",s_WaveMix_V_2_3_by_Angel_M__Diaz__J_01024780,
|
|
&DAT_01025850);
|
|
}
|
|
if ((param_1 & 0x40) != 0) {
|
|
wsprintfA(s_WaveMix_V_2_3_by_Angel_M__Diaz__J_01024780,"%d",
|
|
(uint)(*(int *)(DAT_01027be0 + 0x1a4) == 0));
|
|
WritePrivateProfileStringA
|
|
((LPCSTR)(DAT_01027be0 + 0x1c),"GoodWavePos",
|
|
s_WaveMix_V_2_3_by_Angel_M__Diaz__J_01024780,&DAT_01025850);
|
|
}
|
|
if ((param_1 & 0x100) != 0) {
|
|
wsprintfA(s_WaveMix_V_2_3_by_Angel_M__Diaz__J_01024780,"%d",(uint)(_DAT_01027be4 != 0));
|
|
WritePrivateProfileStringA
|
|
("general","ShowDebugDialogs",s_WaveMix_V_2_3_by_Angel_M__Diaz__J_01024780,
|
|
&DAT_01025850);
|
|
}
|
|
if ((param_1 & 0x200) != 0) {
|
|
wsprintfA(s_WaveMix_V_2_3_by_Angel_M__Diaz__J_01024780,"%d",
|
|
*(undefined4 *)(DAT_01027be0 + 0x194));
|
|
WritePrivateProfileStringA
|
|
((LPCSTR)(DAT_01027be0 + 0x1c),"PauseBlocks",
|
|
s_WaveMix_V_2_3_by_Angel_M__Diaz__J_01024780,&DAT_01025850);
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
DWORD FUN_010203cd(HMODULE param_1)
|
|
|
|
{
|
|
DWORD DVar1;
|
|
LPSTR lpString1;
|
|
|
|
DVar1 = GetModuleFileNameA(param_1,&DAT_01025850,0x104);
|
|
if (DVar1 != 0) {
|
|
lpString1 = &DAT_01025850 + DVar1;
|
|
while (*lpString1 != '\\') {
|
|
lpString1 = lpString1 + -1;
|
|
}
|
|
*lpString1 = '\0';
|
|
lstrcpyA(lpString1,"\\WAVEMIX.INF");
|
|
DVar1 = 1;
|
|
}
|
|
return DVar1;
|
|
}
|
|
|
|
|
|
|
|
void FUN_01020412(void)
|
|
|
|
{
|
|
int iVar1;
|
|
undefined *puVar2;
|
|
int local_10;
|
|
int local_c;
|
|
int local_8;
|
|
|
|
local_c = 0;
|
|
local_10 = 0;
|
|
puVar2 = &DAT_010259f0;
|
|
do {
|
|
iVar1 = -0x80;
|
|
local_8 = local_10;
|
|
do {
|
|
puVar2[iVar1] = (char)(local_8 / 10) + -0x80;
|
|
local_8 = local_8 + local_c;
|
|
iVar1 = iVar1 + 1;
|
|
} while (iVar1 < 0x80);
|
|
local_c = local_c + 1;
|
|
local_10 = local_10 + -0x80;
|
|
puVar2 = puVar2 + 0x100;
|
|
} while ((int)puVar2 < 0x10263f1);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
|
|
|
|
undefined4 FUN_0102046f(HMODULE param_1)
|
|
|
|
{
|
|
ATOM AVar1;
|
|
undefined4 uVar2;
|
|
DWORD DVar3;
|
|
WNDCLASSA local_2c;
|
|
|
|
if (_DAT_01027bf4 == 0) {
|
|
DVar3 = FUN_010203cd(param_1);
|
|
if (DVar3 != 0) {
|
|
FUN_01020412();
|
|
_DAT_01027be8 = GetPrivateProfileIntA("general","debug",0,&DAT_01025850);
|
|
DAT_01025968 = FUN_0101d285;
|
|
DAT_010257e0 = param_1;
|
|
local_2c.hCursor = LoadCursorA((HINSTANCE)0x0,(LPCSTR)0x7f00);
|
|
local_2c.hIcon = (HICON)0x0;
|
|
local_2c.lpszMenuName = (LPCSTR)0x0;
|
|
local_2c.lpszClassName = "WavMix32";
|
|
local_2c.hbrBackground = (HBRUSH)GetStockObject(1);
|
|
local_2c.hInstance = DAT_010257e0;
|
|
local_2c.style = 0;
|
|
local_2c.lpfnWndProc = FUN_0101ddad;
|
|
local_2c.cbWndExtra = 0;
|
|
local_2c.cbClsExtra = 0;
|
|
AVar1 = RegisterClassA(&local_2c);
|
|
if (AVar1 != 0) {
|
|
FUN_0101d491();
|
|
_DAT_01027bf4 = 1;
|
|
return 1;
|
|
}
|
|
}
|
|
uVar2 = 0;
|
|
}
|
|
else {
|
|
uVar2 = 1;
|
|
}
|
|
return uVar2;
|
|
}
|
|
|
|
|
|
|
|
MMRESULT FUN_0102053b(short *param_1,int param_2)
|
|
|
|
{
|
|
uint *puVar1;
|
|
short *psVar2;
|
|
MMRESULT MVar3;
|
|
LPWAVEHDR pwVar4;
|
|
undefined4 uVar5;
|
|
bool bVar6;
|
|
int iVar7;
|
|
|
|
psVar2 = FUN_0101cfd0(param_1);
|
|
if (psVar2 == (short *)0x0) {
|
|
DAT_01027be0 = psVar2;
|
|
return 5;
|
|
}
|
|
if (param_2 == 0) {
|
|
DAT_01027be0 = psVar2;
|
|
if (*(int *)(psVar2 + 8) != 0) {
|
|
DAT_01027be0 = psVar2;
|
|
uVar5 = FUN_0101d0fc(*(HWAVEOUT *)(psVar2 + 6),*(int *)(psVar2 + 0xd2));
|
|
psVar2 = DAT_01027be0;
|
|
*(undefined4 *)(DAT_01027be0 + 0xce) = uVar5;
|
|
}
|
|
FUN_0101d752((int)psVar2);
|
|
bVar6 = DAT_01027be0 == DAT_01025798;
|
|
*(undefined4 *)(DAT_01027be0 + 8) = 0;
|
|
if (bVar6) {
|
|
DAT_01025798 = (short *)0x0;
|
|
}
|
|
}
|
|
else {
|
|
if (DAT_01025798 != (short *)0x0) {
|
|
DAT_01027be0 = psVar2;
|
|
return -(uint)(psVar2 != DAT_01025798) & 4;
|
|
}
|
|
if (*(int *)(psVar2 + 10) != 0) {
|
|
DAT_01027be0 = psVar2;
|
|
return 0xc;
|
|
}
|
|
DAT_01025798 = psVar2;
|
|
DAT_01027be0 = psVar2;
|
|
sndPlaySoundA((LPCSTR)0x0,0);
|
|
MVar3 = FUN_0101d7b1();
|
|
if (MVar3 != 0) {
|
|
DAT_01025798 = (short *)0x0;
|
|
return MVar3;
|
|
}
|
|
puVar1 = (uint *)(DAT_01027be0 + 0xce);
|
|
*(undefined4 *)(DAT_01027be0 + 8) = 1;
|
|
FUN_0101d1a2(*puVar1);
|
|
do {
|
|
iVar7 = 1;
|
|
pwVar4 = (LPWAVEHDR)FUN_0101d66b();
|
|
iVar7 = FUN_0101da1d(pwVar4,iVar7);
|
|
} while (iVar7 != 0);
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
|
|
|
|
void FUN_01020615(short *param_1,HWND param_2,undefined2 *param_3,int *param_4,int param_5)
|
|
|
|
{
|
|
int *piVar1;
|
|
uint *puVar2;
|
|
ushort uVar3;
|
|
short *psVar4;
|
|
undefined2 *puVar5;
|
|
LPCDLGTEMPLATEA hDialogTemplate;
|
|
INT_PTR IVar6;
|
|
MMRESULT MVar7;
|
|
char *lpString2;
|
|
uint uVar8;
|
|
code *pcVar9;
|
|
int iVar10;
|
|
undefined4 uVar11;
|
|
uint uVar12;
|
|
tagWAVEOUTCAPSA *ptVar13;
|
|
undefined4 *puVar14;
|
|
undefined2 local_70;
|
|
uint local_6e;
|
|
ushort local_64;
|
|
int *local_50;
|
|
short *local_4c;
|
|
uint local_48;
|
|
undefined2 *local_44;
|
|
int local_40;
|
|
tagWAVEOUTCAPSA local_3c;
|
|
undefined4 local_8;
|
|
|
|
local_8 = DAT_01024778;
|
|
local_44 = param_3;
|
|
local_4c = param_1;
|
|
local_50 = param_4;
|
|
local_40 = 0;
|
|
DAT_01027be0 = FUN_0101cfd0(param_1);
|
|
if (((DAT_01027be0 == (short *)0x0) || (*(int *)(DAT_01027be0 + 8) != 0)) ||
|
|
(*(int *)(DAT_01027be0 + 10) != 0)) goto LAB_01020a22;
|
|
FUN_0101e373(param_1,-1,1);
|
|
if (local_44 == (undefined2 *)0x0) {
|
|
local_70 = 0x1e;
|
|
local_6e = 0x3ff;
|
|
FUN_0102008d(param_1,(int)&local_70);
|
|
hDialogTemplate = (LPCDLGTEMPLATEA)FUN_0101fde1();
|
|
if (hDialogTemplate == (LPCDLGTEMPLATEA)0x0) goto LAB_01020a22;
|
|
*(undefined4 *)(DAT_01027be0 + 10) = 1;
|
|
IVar6 = DialogBoxIndirectParamA
|
|
(DAT_010257e0,hDialogTemplate,param_2,FUN_0101fc24,(LPARAM)&local_70);
|
|
FUN_01020059(hDialogTemplate);
|
|
psVar4 = DAT_01027be0;
|
|
*(undefined4 *)(DAT_01027be0 + 10) = 0;
|
|
if (IVar6 != 1) goto LAB_01020a22;
|
|
if (*(uint *)(psVar4 + 0xc6) == (uint)local_64) {
|
|
local_6e = local_6e & 0xfffffff7;
|
|
}
|
|
local_44 = &local_70;
|
|
param_1 = local_4c;
|
|
}
|
|
if ((*(int *)(local_44 + 1) == 0) ||
|
|
(DAT_01027be0 = FUN_0101cfd0(param_1), DAT_01027be0 == (short *)0x0)) goto LAB_01020a22;
|
|
local_48 = *(uint *)(local_44 + 1);
|
|
if ((local_48 & 0x100) != 0) {
|
|
_DAT_01027be4 = (uint)(local_44[0xc] != 0);
|
|
}
|
|
if (((char)local_48 < '\0') && ((uint)(ushort)local_44[10] != *(uint *)(DAT_01027be0 + 0xc))) {
|
|
MVar7 = waveOutGetDevCapsA((uint)(ushort)local_44[10],(LPWAVEOUTCAPSA)&local_3c,0x34);
|
|
psVar4 = DAT_01027be0;
|
|
if (MVar7 != 0) goto LAB_01020a22;
|
|
iVar10 = 0xd;
|
|
ptVar13 = &local_3c;
|
|
puVar14 = (undefined4 *)(DAT_01027be0 + 0x3e);
|
|
while (iVar10 != 0) {
|
|
iVar10 = iVar10 + -1;
|
|
*puVar14 = *(undefined4 *)ptVar13;
|
|
ptVar13 = (tagWAVEOUTCAPSA *)&ptVar13->vDriverVersion;
|
|
puVar14 = puVar14 + 1;
|
|
}
|
|
*(uint *)(psVar4 + 0xc) = (uint)(ushort)local_44[10];
|
|
if ((psVar4[0x54] == 1) && (psVar4[0xbf] == 2)) {
|
|
psVar4[0xbf] = 1;
|
|
local_40 = 1;
|
|
psVar4[0xc4] = 1;
|
|
*(undefined4 *)(psVar4 + 0xc2) = *(undefined4 *)(psVar4 + 0xc0);
|
|
}
|
|
lstrcpyA((LPSTR)(psVar4 + 0xe),local_3c.szPname);
|
|
iVar10 = FUN_0101f0d4((LPCSTR)(DAT_01027be0 + 0xe));
|
|
if (iVar10 == 0) {
|
|
lstrcpyA((LPSTR)(DAT_01027be0 + 0xe),"Unkown Device");
|
|
}
|
|
iVar10 = FUN_0101f25c(*(undefined4 *)(DAT_01027be0 + 0xc),(LPSTR)(DAT_01027be0 + 0xe),0x60);
|
|
if (iVar10 == 0) {
|
|
lpString2 = FUN_0101f20f();
|
|
lstrcpyA((LPSTR)(DAT_01027be0 + 0xe),lpString2);
|
|
lstrcatA((LPSTR)(DAT_01027be0 + 0xe),(LPCSTR)(DAT_01027be0 + 0x42));
|
|
}
|
|
}
|
|
puVar5 = local_44;
|
|
psVar4 = DAT_01027be0;
|
|
if ((local_48 & 1) != 0) {
|
|
if ((ushort)local_44[3] < 2) {
|
|
if (DAT_01027be0[0xbf] == 2) {
|
|
local_40 = 1;
|
|
}
|
|
DAT_01027be0[0xbf] = 1;
|
|
iVar10 = *(int *)(psVar4 + 0xc0);
|
|
psVar4[0xc4] = 1;
|
|
}
|
|
else {
|
|
if ((ushort)DAT_01027be0[0x54] < 2) goto LAB_0102087f;
|
|
if (DAT_01027be0[0xbf] == 1) {
|
|
local_40 = 1;
|
|
}
|
|
DAT_01027be0[0xbf] = 2;
|
|
psVar4[0xc4] = 2;
|
|
iVar10 = *(int *)(psVar4 + 0xc0) << 1;
|
|
}
|
|
*(int *)(psVar4 + 0xc2) = iVar10;
|
|
}
|
|
LAB_0102087f:
|
|
if ((local_48 & 2) != 0) {
|
|
if (local_44[4] == 0x16) {
|
|
if (*(int *)(psVar4 + 0xc0) != 0x5622) {
|
|
local_40 = 1;
|
|
}
|
|
*(int *)(psVar4 + 0xc0) = 0x5622;
|
|
iVar10 = (uint)(ushort)psVar4[0xbf] * 0x5622;
|
|
}
|
|
else {
|
|
piVar1 = (int *)(psVar4 + 0xc0);
|
|
if (local_44[4] == 0x2c) {
|
|
if (*piVar1 != 0xac44) {
|
|
local_40 = 1;
|
|
}
|
|
*piVar1 = 0xac44;
|
|
iVar10 = (uint)(ushort)psVar4[0xbf] * 0xac44;
|
|
}
|
|
else {
|
|
if (*piVar1 != 0x2b11) {
|
|
local_40 = 1;
|
|
}
|
|
*piVar1 = 0x2b11;
|
|
iVar10 = (uint)(ushort)psVar4[0xbf] * 0x2b11;
|
|
}
|
|
}
|
|
*(int *)(psVar4 + 0xc2) = iVar10;
|
|
}
|
|
if ((local_48 & 4) != 0) {
|
|
uVar3 = local_44[5];
|
|
uVar11 = 2;
|
|
*(uint *)(psVar4 + 200) = (uint)uVar3;
|
|
if ((uVar3 < 2) || (uVar11 = 10, 10 < uVar3)) {
|
|
*(undefined4 *)(psVar4 + 200) = uVar11;
|
|
}
|
|
piVar1 = (int *)(psVar4 + 0xca);
|
|
if (*piVar1 < 0) {
|
|
*piVar1 = 0;
|
|
}
|
|
else {
|
|
if (*(int *)(psVar4 + 200) < *piVar1) {
|
|
*piVar1 = *(int *)(psVar4 + 200);
|
|
}
|
|
}
|
|
}
|
|
if (local_40 != 0) {
|
|
uVar8 = FUN_0101f093(0,(int)(psVar4 + 0xbe));
|
|
*(uint *)(psVar4 + 0xc6) = uVar8;
|
|
}
|
|
if (((local_48 & 8) != 0) && (puVar5[6] != 0)) {
|
|
*(uint *)(psVar4 + 0xc6) = (uint)(ushort)puVar5[6];
|
|
}
|
|
uVar8 = *(uint *)(psVar4 + 0xc6);
|
|
uVar12 = 0x158;
|
|
if ((uVar8 < 0x158) || (uVar12 = 0x2b11, 0x2b11 < uVar8)) {
|
|
*(uint *)(psVar4 + 0xc6) = uVar12;
|
|
}
|
|
if ((local_48 & 0x10) != 0) {
|
|
*(undefined4 *)(psVar4 + 0xd6) = 0x101d285;
|
|
}
|
|
if ((local_48 & 0x20) != 0) {
|
|
pcVar9 = FUN_0101dde8;
|
|
if (puVar5[8] == 0) {
|
|
pcVar9 = (code *)&LAB_0101ddd8;
|
|
}
|
|
*(code **)(psVar4 + 0xd8) = pcVar9;
|
|
}
|
|
if ((local_48 & 0x40) != 0) {
|
|
*(uint *)(psVar4 + 0xd2) = (uint)(puVar5[9] != 0);
|
|
}
|
|
if ((local_48 & 0x200) != 0) {
|
|
uVar8 = (uint)(ushort)puVar5[0xb];
|
|
puVar2 = (uint *)(psVar4 + 0xca);
|
|
*puVar2 = uVar8;
|
|
if ((int)uVar8 < 0) {
|
|
*puVar2 = 0;
|
|
}
|
|
else {
|
|
if ((int)*(uint *)(psVar4 + 200) < (int)uVar8) {
|
|
*puVar2 = *(uint *)(psVar4 + 200);
|
|
}
|
|
}
|
|
}
|
|
FUN_0102008d(local_4c,(int)puVar5);
|
|
if (local_50 != (int *)0x0) {
|
|
*local_50 = local_40;
|
|
}
|
|
if (param_5 != 0) {
|
|
FUN_0102018c(local_48);
|
|
}
|
|
if (_DAT_01027be4 != 0) {
|
|
FUN_0101f50b();
|
|
}
|
|
LAB_01020a22:
|
|
FUN_0101cd9e();
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
|
|
|
|
undefined4 FUN_01020a36(undefined2 *param_1)
|
|
|
|
{
|
|
ushort extraout_AX;
|
|
UINT nDefault;
|
|
int iVar1;
|
|
uint uVar2;
|
|
MMRESULT MVar3;
|
|
char *lpString2;
|
|
INT nDefault_00;
|
|
UINT nDefault_01;
|
|
UINT nDefault_02;
|
|
UINT nDefault_03;
|
|
UINT UVar4;
|
|
code *pcVar5;
|
|
undefined4 uVar6;
|
|
uint *puVar7;
|
|
LPCSTR lpFileName;
|
|
short *psVar8;
|
|
|
|
nDefault = waveOutGetNumDevs();
|
|
if (nDefault == 0) {
|
|
return 0;
|
|
}
|
|
if (((*(byte *)((int)param_1 + 3) & 4) != 0) && (iVar1 = FUN_0101f36b((int)param_1), iVar1 != 0))
|
|
{
|
|
FUN_01020615(DAT_01027be0,(HWND)0x0,param_1,(int *)0x0,0);
|
|
return 1;
|
|
}
|
|
psVar8 = DAT_01027be0;
|
|
if ((*(byte *)(param_1 + 1) & 0x80) == 0) {
|
|
uVar2 = GetPrivateProfileIntA("general","WaveOutDevice",0,&DAT_01025850);
|
|
}
|
|
else {
|
|
uVar2 = (uint)(ushort)param_1[10];
|
|
}
|
|
puVar7 = (uint *)(psVar8 + 0xc);
|
|
*puVar7 = uVar2;
|
|
if (nDefault <= *puVar7) {
|
|
*puVar7 = 0;
|
|
}
|
|
MVar3 = waveOutGetDevCapsA(*puVar7,(LPWAVEOUTCAPSA)(DAT_01027be0 + 0x3e),0x34);
|
|
if ((MVar3 != 0) || (iVar1 = FUN_0101f0d4((LPCSTR)(DAT_01027be0 + 0x42)), iVar1 == 0)) {
|
|
lstrcpyA((LPSTR)(DAT_01027be0 + 0x42),"Unkown Device");
|
|
}
|
|
iVar1 = FUN_0101f25c(*(undefined4 *)(DAT_01027be0 + 0xc),(LPSTR)(DAT_01027be0 + 0xe),0x60);
|
|
if (iVar1 == 0) {
|
|
lpString2 = FUN_0101f20f();
|
|
lstrcpyA((LPSTR)(DAT_01027be0 + 0xe),lpString2);
|
|
lstrcatA((LPSTR)(DAT_01027be0 + 0xe),(LPCSTR)(DAT_01027be0 + 0x42));
|
|
}
|
|
nDefault = GetPrivateProfileIntA("default","Remix",1,&DAT_01025850);
|
|
lpFileName = &DAT_01025850;
|
|
nDefault_00 = FUN_0101d0a5(*(UINT_PTR *)(DAT_01027be0 + 0xc));
|
|
nDefault_01 = GetPrivateProfileIntA("default","GoodWavePos",nDefault_00,lpFileName);
|
|
nDefault_02 = GetPrivateProfileIntA("default","WaveBlocks",3,&DAT_01025850);
|
|
nDefault_03 = GetPrivateProfileIntA("default","SamplesPerSec",0xb,&DAT_01025850);
|
|
if ((*(byte *)(DAT_01027be0 + 0x56) & 0x10) == 0) {
|
|
UVar4 = GetPrivateProfileIntA("not compatible",(LPCSTR)(DAT_01027be0 + 0xe),0,&DAT_01025850);
|
|
if (UVar4 == 0) {
|
|
nDefault = GetPrivateProfileIntA((LPCSTR)(DAT_01027be0 + 0xe),"Remix",nDefault,&DAT_01025850);
|
|
psVar8 = DAT_01027be0;
|
|
pcVar5 = (code *)&LAB_0101ddd8;
|
|
if (nDefault != 2) {
|
|
pcVar5 = FUN_0101dde8;
|
|
}
|
|
*(code **)(DAT_01027be0 + 0xd8) = pcVar5;
|
|
nDefault = GetPrivateProfileIntA
|
|
((LPCSTR)(psVar8 + 0xe),"GoodWavePos",nDefault_01,&DAT_01025850);
|
|
psVar8 = DAT_01027be0;
|
|
*(uint *)(DAT_01027be0 + 0xd2) = (uint)(nDefault != 0);
|
|
nDefault = GetPrivateProfileIntA
|
|
((LPCSTR)(psVar8 + 0xe),"WaveBlocks",nDefault_02,&DAT_01025850);
|
|
psVar8 = DAT_01027be0;
|
|
uVar6 = 2;
|
|
*(UINT *)(DAT_01027be0 + 200) = nDefault;
|
|
if (((int)nDefault < 2) || (uVar6 = 10, 10 < (int)nDefault)) {
|
|
*(undefined4 *)(psVar8 + 200) = uVar6;
|
|
}
|
|
lpFileName = &DAT_01025850;
|
|
nDefault_00 = FUN_0101d079(*(undefined4 *)(psVar8 + 200));
|
|
nDefault = GetPrivateProfileIntA
|
|
((LPCSTR)(DAT_01027be0 + 0xe),"PauseBlocks",nDefault_00,lpFileName);
|
|
psVar8 = DAT_01027be0;
|
|
*(UINT *)(DAT_01027be0 + 0xca) = nDefault;
|
|
if ((int)nDefault < 0) {
|
|
*(undefined4 *)(psVar8 + 0xca) = 0;
|
|
}
|
|
else {
|
|
if (*(int *)(psVar8 + 200) < (int)nDefault) {
|
|
*(int *)(psVar8 + 0xca) = *(int *)(psVar8 + 200);
|
|
}
|
|
}
|
|
nDefault = GetPrivateProfileIntA
|
|
((LPCSTR)(psVar8 + 0xe),"SamplesPerSec",nDefault_03,&DAT_01025850);
|
|
nDefault_01 = GetPrivateProfileIntA((LPCSTR)(DAT_01027be0 + 0xe),"Channels",1,&DAT_01025850);
|
|
psVar8 = DAT_01027be0;
|
|
extraout_AX = (ushort)nDefault_01;
|
|
DAT_01027be0[0xbf] = extraout_AX;
|
|
if (extraout_AX == 0) {
|
|
psVar8[0xbf] = 1;
|
|
}
|
|
else {
|
|
if (2 < extraout_AX) {
|
|
psVar8[0xbf] = 2;
|
|
}
|
|
}
|
|
uVar2 = (uint)(ushort)psVar8[0xbf];
|
|
if (nDefault == 0x16) {
|
|
*(undefined4 *)(psVar8 + 0xc0) = 0x5622;
|
|
iVar1 = uVar2 * 0x5622;
|
|
}
|
|
else {
|
|
if (nDefault == 0x2c) {
|
|
*(undefined4 *)(psVar8 + 0xc0) = 0xac44;
|
|
iVar1 = uVar2 * 0xac44;
|
|
}
|
|
else {
|
|
iVar1 = uVar2 * 0x2b11;
|
|
}
|
|
}
|
|
*(int *)(psVar8 + 0xc2) = iVar1;
|
|
nDefault = GetPrivateProfileIntA("default","WaveBlockLen",0,&DAT_01025850);
|
|
psVar8 = DAT_01027be0;
|
|
uVar2 = FUN_0101f093(nDefault,(int)(DAT_01027be0 + 0xbe));
|
|
*(uint *)(psVar8 + 0xc6) = uVar2;
|
|
FUN_01020615(psVar8,(HWND)0x0,param_1,(int *)0x0,0);
|
|
return 1;
|
|
}
|
|
if (_DAT_01027be4 == 0) {
|
|
return 0;
|
|
}
|
|
psVar8 = DAT_01027be0 + 0xe;
|
|
lpString2 = "%s is not compatible with the realtime wavemixer.";
|
|
}
|
|
else {
|
|
if (_DAT_01027be4 == 0) {
|
|
return 0;
|
|
}
|
|
psVar8 = DAT_01027be0 + 0x42;
|
|
lpString2 =
|
|
"%s is a syncronous (blocking) wave output device. This will not permit audio to play while other applications are running."
|
|
;
|
|
}
|
|
wsprintfA(s_WaveMix_V_2_3_by_Angel_M__Diaz__J_01024780,lpString2,psVar8);
|
|
MessageBoxA((HWND)0x0,s_WaveMix_V_2_3_by_Angel_M__Diaz__J_01024780,"WavMix32",0x40);
|
|
return 0;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
|
|
|
|
undefined2 * FUN_01020d99(undefined4 *param_1)
|
|
|
|
{
|
|
HMODULE pHVar1;
|
|
UINT UVar2;
|
|
undefined2 *hMem;
|
|
int iVar3;
|
|
uint uVar4;
|
|
uint uVar5;
|
|
undefined4 *puVar6;
|
|
bool bVar7;
|
|
undefined2 local_24;
|
|
byte local_21;
|
|
short local_c;
|
|
|
|
iVar3 = 7;
|
|
puVar6 = (undefined4 *)&local_24;
|
|
while (iVar3 != 0) {
|
|
iVar3 = iVar3 + -1;
|
|
*puVar6 = 0;
|
|
puVar6 = puVar6 + 1;
|
|
}
|
|
uVar4 = 0x1e;
|
|
*(undefined2 *)puVar6 = 0;
|
|
local_24 = 0x1e;
|
|
if (param_1 != (undefined4 *)0x0) {
|
|
if (*(ushort *)param_1 < 0x1e) {
|
|
uVar4 = (uint)*(ushort *)param_1;
|
|
}
|
|
uVar5 = uVar4 >> 2;
|
|
puVar6 = (undefined4 *)&local_24;
|
|
while (uVar5 != 0) {
|
|
uVar5 = uVar5 - 1;
|
|
*puVar6 = *param_1;
|
|
param_1 = param_1 + 1;
|
|
puVar6 = puVar6 + 1;
|
|
}
|
|
uVar4 = uVar4 & 3;
|
|
while (uVar4 != 0) {
|
|
uVar4 = uVar4 - 1;
|
|
*(undefined *)puVar6 = *(undefined *)param_1;
|
|
param_1 = (undefined4 *)((int)param_1 + 1);
|
|
puVar6 = (undefined4 *)((int)puVar6 + 1);
|
|
}
|
|
}
|
|
if (_DAT_01027bf4 == 0) {
|
|
pHVar1 = GetModuleHandleA((LPCSTR)0x0);
|
|
iVar3 = FUN_0102046f(pHVar1);
|
|
if (iVar3 == 0) {
|
|
return (undefined2 *)0x0;
|
|
}
|
|
}
|
|
if ((local_21 & 1) == 0) {
|
|
UVar2 = GetPrivateProfileIntA("general","ShowDebugDialogs",0,&DAT_01025850);
|
|
bVar7 = UVar2 != 0;
|
|
}
|
|
else {
|
|
bVar7 = local_c != 0;
|
|
}
|
|
_DAT_01027be4 = (uint)bVar7;
|
|
UVar2 = waveOutGetNumDevs();
|
|
if (UVar2 == 0) {
|
|
if (_DAT_01027be4 != 0) {
|
|
wsprintfA(s_WaveMix_V_2_3_by_Angel_M__Diaz__J_01024780,
|
|
"This system does not have a valid wave output device.");
|
|
MessageBoxA((HWND)0x0,s_WaveMix_V_2_3_by_Angel_M__Diaz__J_01024780,"WavMix32",0x40);
|
|
}
|
|
}
|
|
else {
|
|
UVar2 = GetPrivateProfileIntA("general","ShowDevices",0,&DAT_01025850);
|
|
if (UVar2 != 0) {
|
|
FUN_0101f13d();
|
|
}
|
|
hMem = (undefined2 *)LocalAlloc(0x40,0x1c0);
|
|
DAT_01027be0 = hMem;
|
|
if (hMem != (undefined2 *)0x0) {
|
|
iVar3 = 0x10;
|
|
DAT_01027be0 = hMem;
|
|
*(undefined4 *)(hMem + 0xd6) = DAT_01025968;
|
|
hMem[0xde] = 0x5432;
|
|
*hMem = 0x5432;
|
|
*(undefined4 *)(hMem + 0xcc) = 0;
|
|
*(undefined4 *)(hMem + 10) = 0;
|
|
hMem[0x58] = 10;
|
|
hMem[0x59] = 10;
|
|
puVar6 = (undefined4 *)(hMem + 0x7a);
|
|
while (iVar3 != 0) {
|
|
iVar3 = iVar3 + -1;
|
|
*puVar6 = 0xffffffff;
|
|
puVar6 = puVar6 + 1;
|
|
}
|
|
memmove(hMem + 0xbe,&DAT_010028c0,0x10);
|
|
iVar3 = FUN_01020a36(&local_24);
|
|
hMem = DAT_01027be0;
|
|
if (iVar3 != 0) {
|
|
return DAT_01027be0;
|
|
}
|
|
DAT_01027be0[0xde] = 0;
|
|
*hMem = 0;
|
|
LocalFree(hMem);
|
|
DAT_01027be0 = (undefined2 *)0x0;
|
|
return (undefined2 *)0x0;
|
|
}
|
|
}
|
|
return (undefined2 *)0x0;
|
|
}
|
|
|
|
|
|
|
|
void FUN_01020f2d(void)
|
|
|
|
{
|
|
FUN_01020d99((undefined4 *)0x0);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
undefined4 FUN_01020f3a(short *param_1)
|
|
|
|
{
|
|
HLOCAL pvVar1;
|
|
int iVar2;
|
|
undefined4 *puVar3;
|
|
|
|
DAT_01027be0 = (undefined4 *)FUN_0101cfd0(param_1);
|
|
if (DAT_01027be0 != (undefined4 *)0x0) {
|
|
FUN_0102053b(param_1,0);
|
|
FUN_0101e434(param_1,0,1);
|
|
puVar3 = DAT_01027be0;
|
|
DAT_01027be0 = (undefined4 *)0x0;
|
|
iVar2 = 0x70;
|
|
while (iVar2 != 0) {
|
|
iVar2 = iVar2 + -1;
|
|
*puVar3 = 0;
|
|
puVar3 = puVar3 + 1;
|
|
}
|
|
if ((param_1 != (short *)0x0) && (pvVar1 = LocalFree(param_1), pvVar1 == (HLOCAL)0x0)) {
|
|
return 0;
|
|
}
|
|
}
|
|
return 5;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Function: __SEH_prolog replaced with injection: SEH_prolog
|
|
// WARNING: Function: __SEH_epilog replaced with injection: EH_epilog3
|
|
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
|
|
|
|
int entry(void)
|
|
|
|
{
|
|
HMODULE pHVar1;
|
|
undefined4 *puVar2;
|
|
uint uVar3;
|
|
int _Code;
|
|
int *piVar4;
|
|
undefined4 uVar5;
|
|
HINSTANCE pHVar6;
|
|
_STARTUPINFOA local_84;
|
|
int local_40;
|
|
int local_3c;
|
|
int local_38;
|
|
char **local_34;
|
|
char **local_30 [2];
|
|
_startupinfo local_28;
|
|
HINSTANCE local_24;
|
|
uint local_20;
|
|
undefined4 uStack12;
|
|
undefined *local_8;
|
|
|
|
local_8 = &DAT_010033b0;
|
|
uStack12 = 0x1020fa1;
|
|
pHVar1 = GetModuleHandleA((LPCSTR)0x0);
|
|
if ((*(short *)&pHVar1->unused == 0x5a4d) &&
|
|
(piVar4 = (int *)((int)&pHVar1->unused + pHVar1[0xf].unused), *piVar4 == 0x4550)) {
|
|
if (*(short *)(piVar4 + 6) == 0x10b) {
|
|
if (0xe < (uint)piVar4[0x1d]) {
|
|
_Code = piVar4[0x3a];
|
|
goto LAB_01020ff8;
|
|
}
|
|
}
|
|
else {
|
|
if ((*(short *)(piVar4 + 6) == 0x20b) && (0xe < (uint)piVar4[0x21])) {
|
|
_Code = piVar4[0x3e];
|
|
LAB_01020ff8:
|
|
local_20 = (uint)(_Code != 0);
|
|
goto LAB_01020ffe;
|
|
}
|
|
}
|
|
}
|
|
local_20 = 0;
|
|
LAB_01020ffe:
|
|
local_8 = (undefined *)0x0;
|
|
__set_app_type(2);
|
|
_DAT_01028298 = 0xffffffff;
|
|
_DAT_0102829c = 0xffffffff;
|
|
puVar2 = (undefined4 *)__p__fmode();
|
|
*puVar2 = DAT_01027c08;
|
|
puVar2 = (undefined4 *)__p__commode();
|
|
*puVar2 = DAT_01027c04;
|
|
_DAT_010282a0 = *(undefined4 *)_adjust_fdiv_exref;
|
|
FUN_010211d0();
|
|
if (_DAT_01024890 == 0) {
|
|
__setusermatherr(FUN_010211d0);
|
|
}
|
|
FUN_010211b9();
|
|
_initterm(&DAT_0102300c,&DAT_01023010);
|
|
local_28 = DAT_01027c00;
|
|
local_3c = __getmainargs(&local_38,&local_34,local_30,DAT_01027bfc,&local_28);
|
|
_initterm(&DAT_01023000,&DAT_01023008);
|
|
local_24 = *(HINSTANCE *)_acmdln_exref;
|
|
if (*(char *)&local_24->unused != '\"') {
|
|
do {
|
|
if (*(byte *)&local_24->unused < 0x21) goto LAB_010210cc;
|
|
local_24 = (HINSTANCE)((int)&local_24->unused + 1);
|
|
} while( true );
|
|
}
|
|
do {
|
|
local_24 = (HINSTANCE)((int)&local_24->unused + 1);
|
|
if (*(char *)&local_24->unused == '\0') break;
|
|
} while (*(char *)&local_24->unused != '\"');
|
|
if (*(char *)&local_24->unused != '\"') goto LAB_010210cc;
|
|
do {
|
|
local_24 = (HINSTANCE)((int)&local_24->unused + 1);
|
|
LAB_010210cc:
|
|
pHVar6 = local_24;
|
|
} while ((*(byte *)&local_24->unused != 0) && (*(byte *)&local_24->unused < 0x21));
|
|
local_84.dwFlags = 0;
|
|
GetStartupInfoA((LPSTARTUPINFOA)&local_84);
|
|
if ((local_84.dwFlags & 1) == 0) {
|
|
uVar3 = 10;
|
|
}
|
|
else {
|
|
uVar3 = (uint)local_84.wShowWindow;
|
|
}
|
|
uVar5 = 0;
|
|
pHVar1 = GetModuleHandleA((LPCSTR)0x0);
|
|
_Code = FUN_0100833a((HINSTANCE)pHVar1,uVar5,pHVar6,uVar3);
|
|
if (local_20 == 0) {
|
|
local_40 = _Code;
|
|
// WARNING: Subroutine does not return
|
|
exit(_Code);
|
|
}
|
|
local_40 = _Code;
|
|
_cexit();
|
|
return _Code;
|
|
}
|
|
|
|
|
|
|
|
void _ftol(void)
|
|
|
|
{
|
|
// WARNING: Could not recover jumptable at 0x01021166. Too many branches
|
|
// WARNING: Treating indirect jump as call
|
|
_ftol();
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void _CIacos(void)
|
|
|
|
{
|
|
// WARNING: Could not recover jumptable at 0x01021172. Too many branches
|
|
// WARNING: Treating indirect jump as call
|
|
_CIacos();
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Exceeded maximum restarts with more pending
|
|
|
|
void __cdecl operator_delete(void *param_1)
|
|
|
|
{
|
|
// WARNING: Could not recover jumptable at 0x0102117e. Too many branches
|
|
// WARNING: Treating indirect jump as call
|
|
operator_delete();
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Exceeded maximum restarts with more pending
|
|
|
|
void * __cdecl operator_new(uint param_1)
|
|
|
|
{
|
|
void *pvVar1;
|
|
|
|
// WARNING: Could not recover jumptable at 0x0102118a. Too many branches
|
|
// WARNING: Treating indirect jump as call
|
|
pvVar1 = (void *)operator_new();
|
|
return pvVar1;
|
|
}
|
|
|
|
|
|
|
|
void _initterm(void)
|
|
|
|
{
|
|
// WARNING: Could not recover jumptable at 0x010211ae. Too many branches
|
|
// WARNING: Treating indirect jump as call
|
|
_initterm();
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void FUN_010211b9(void)
|
|
|
|
{
|
|
_controlfp(0x10000,0x30000);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
undefined4 FUN_010211d0(void)
|
|
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: This is an inlined function
|
|
// WARNING: Unable to track spacebase fully for stack
|
|
// WARNING: Variable defined which should be unmapped: param_2
|
|
// Library Function - Single Match
|
|
// Name: __SEH_prolog
|
|
// Library: Visual Studio
|
|
|
|
void __cdecl __SEH_prolog(undefined4 param_1,int param_2)
|
|
|
|
{
|
|
undefined4 unaff_EBX;
|
|
undefined4 unaff_ESI;
|
|
undefined4 unaff_EDI;
|
|
int *in_FS_OFFSET;
|
|
undefined4 local_res0;
|
|
undefined4 auStack24 [4];
|
|
undefined local_8 [8];
|
|
|
|
param_2 = -param_2;
|
|
*(undefined4 *)((int)auStack24 + param_2 + 0xc) = unaff_EBX;
|
|
*(undefined4 *)((int)auStack24 + param_2 + 8) = unaff_ESI;
|
|
*(undefined4 *)((int)auStack24 + param_2 + 4) = unaff_EDI;
|
|
*(undefined4 *)((int)auStack24 + param_2) = local_res0;
|
|
*(undefined **)in_FS_OFFSET = local_8;
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: This is an inlined function
|
|
// Library Function - Single Match
|
|
// Name: __SEH_epilog
|
|
// Library: Visual Studio
|
|
|
|
void __SEH_epilog(void)
|
|
|
|
{
|
|
undefined4 *unaff_EBP;
|
|
undefined4 *in_FS_OFFSET;
|
|
undefined4 unaff_retaddr;
|
|
|
|
*in_FS_OFFSET = unaff_EBP[-4];
|
|
*unaff_EBP = unaff_retaddr;
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
// WARNING: Exceeded maximum restarts with more pending
|
|
|
|
uint __cdecl _controlfp(uint _NewValue,uint _Mask)
|
|
|
|
{
|
|
uint uVar1;
|
|
|
|
// WARNING: Could not recover jumptable at 0x01021236. Too many branches
|
|
// WARNING: Treating indirect jump as call
|
|
uVar1 = _controlfp();
|
|
return uVar1;
|
|
}
|
|
|
|
|