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

2062 lines
51 KiB
C

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