Files
3d-pinball-space-cadet/pinball_04.c
T
2019-07-21 19:34:10 +00:00

2050 lines
50 KiB
C

#include "pinball.h"
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;
}