1998 lines
50 KiB
C
1998 lines
50 KiB
C
#include "pinball.h"
|
|
|
|
|
|
// 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;
|
|
}
|
|
|
|
|