Complete decompilation of the retail Asheron's Call client using Ghidra 12.0.4 + pyghidra headless. 22,225 of 22,226 functions successfully decompiled in 75 seconds. Output: docs/research/decompiled/ (54 files, 688,567 lines of C) Key findings already identified: - CLandBlockStruct::ConstructPolygons at chunk_00530000.c:2270 (split direction formula with 0x0CCAC033 constants) - Motion command handlers at chunk_00510000.c (0x45000005 etc) - Motion interpreter at chunk_00520000.c - Portal space UI at chunk_004D0000.c and chunk_00560000.c Next: identify CPhysicsObj, CMotionInterp, collision, and movement functions by cross-referencing against ACE's C# port. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
14680 lines
368 KiB
C
14680 lines
368 KiB
C
// Decompiled from acclient.exe — chunk 0x00510000
|
|
// Ghidra 12.0.4 + pyghidra headless
|
|
|
|
// --- FUN_00510000 at 0x00510000 (size: 33) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
undefined4 FUN_00510000(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
if (_DAT_008eee6c <= *(float *)(param_1 + 8)) {
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00510030 at 0x00510030 (size: 7) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
float10 FUN_00510030(void)
|
|
|
|
|
|
|
|
{
|
|
|
|
return (float10)_DAT_008eee6c;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00510040 at 0x00510040 (size: 63) ---
|
|
|
|
|
|
undefined4 __fastcall FUN_00510040(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
iVar1 = FUN_00518c40();
|
|
|
|
if (iVar1 != 0) {
|
|
|
|
*(uint *)(param_1 + 0xa8) = *(uint *)(param_1 + 0xa8) | 0x10000;
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
*(uint *)(param_1 + 0xa8) = *(uint *)(param_1 + 0xa8) & 0xfffeffff;
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00510080 at 0x00510080 (size: 74) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
undefined4 __thiscall FUN_00510080(int param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
if (((*(byte *)(param_1 + 0xac) & 1) != 0) &&
|
|
|
|
(_DAT_007c78bc <
|
|
|
|
*(float *)(param_1 + 0xe0) * *(float *)(param_1 + 0x130) +
|
|
|
|
*(float *)(param_1 + 0xe4) * *(float *)(param_1 + 0x134) +
|
|
|
|
*(float *)(param_1 + 0xe8) * *(float *)(param_1 + 0x138))) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
return param_2;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005100d0 at 0x005100D0 (size: 111) ---
|
|
|
|
|
|
undefined4
|
|
|
|
FUN_005100d0(undefined4 *param_1,undefined4 *param_2,undefined4 param_3,undefined4 param_4,
|
|
|
|
undefined4 param_5)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
|
|
|
|
if ((int *)param_2[0x4b] != (int *)0x0) {
|
|
|
|
iVar1 = (**(code **)(*(int *)param_2[0x4b] + 0x5c))(param_1);
|
|
|
|
if (iVar1 != 0) {
|
|
|
|
*param_1 = param_2[2];
|
|
|
|
param_1[1] = *param_2;
|
|
|
|
param_1[2] = param_2[1];
|
|
|
|
param_1[3] = param_2[2];
|
|
|
|
FUN_0051c4f0(param_4);
|
|
|
|
FUN_0051c510(param_5);
|
|
|
|
FUN_0051c530(param_3);
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00510140 at 0x00510140 (size: 30) ---
|
|
|
|
|
|
void __fastcall FUN_00510140(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
if (((*(uint *)(param_1 + 0xa8) & 0x1000) == 0) && (*(int *)(param_1 + 0x10) != 0)) {
|
|
|
|
FUN_00519e40(param_1 + 0x50);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00510160 at 0x00510160 (size: 59) ---
|
|
|
|
|
|
undefined4 __thiscall FUN_00510160(int param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 uVar1;
|
|
|
|
|
|
|
|
uVar1 = 0;
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
uVar1 = FUN_00519f00(param_2);
|
|
|
|
}
|
|
|
|
if (((*(uint *)(param_1 + 0xa8) & 0x1000) == 0) && (*(int *)(param_1 + 0x10) != 0)) {
|
|
|
|
FUN_00519e40(param_1 + 0x50);
|
|
|
|
}
|
|
|
|
return uVar1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005101a0 at 0x005101A0 (size: 29) ---
|
|
|
|
|
|
void __thiscall FUN_005101a0(int param_1,undefined4 *param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
*(undefined4 *)(param_1 + 0xf8) = *param_2;
|
|
|
|
*(undefined4 *)(param_1 + 0xfc) = param_2[1];
|
|
|
|
*(undefined4 *)(param_1 + 0x100) = param_2[2];
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005101c0 at 0x005101C0 (size: 97) ---
|
|
|
|
|
|
void __thiscall
|
|
|
|
FUN_005101c0(int param_1,undefined4 param_2,int param_3,undefined4 param_4,undefined4 param_5)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined1 local_14 [4];
|
|
|
|
undefined4 local_10;
|
|
|
|
undefined4 local_c;
|
|
|
|
undefined4 local_4;
|
|
|
|
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
FUN_005268e0();
|
|
|
|
local_10 = param_2;
|
|
|
|
local_4 = param_5;
|
|
|
|
local_c = param_4;
|
|
|
|
if (param_3 != 0) {
|
|
|
|
FUN_005261b0();
|
|
|
|
}
|
|
|
|
FUN_00526110(local_14);
|
|
|
|
FUN_005aebf0();
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00510230 at 0x00510230 (size: 16) ---
|
|
|
|
|
|
void __fastcall FUN_00510230(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
FUN_005259c0();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00510240 at 0x00510240 (size: 15) ---
|
|
|
|
|
|
undefined4 __fastcall FUN_00510240(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 uVar1;
|
|
|
|
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
uVar1 = FUN_00518870();
|
|
|
|
return uVar1;
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00510250 at 0x00510250 (size: 18) ---
|
|
|
|
|
|
undefined4 __fastcall FUN_00510250(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 uVar1;
|
|
|
|
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
uVar1 = FUN_005255d0();
|
|
|
|
return uVar1;
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00510270 at 0x00510270 (size: 194) ---
|
|
|
|
|
|
void __thiscall FUN_00510270(int param_1,float param_2,float param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
float10 fVar2;
|
|
|
|
undefined4 local_8;
|
|
|
|
undefined4 local_4;
|
|
|
|
|
|
|
|
iVar1 = (int)param_2;
|
|
|
|
if (param_3 != 0.0) {
|
|
|
|
if (*(int *)((int)param_2 + 0x10) == 0) {
|
|
|
|
param_2 = 0.0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
fVar2 = (float10)FUN_00518be0();
|
|
|
|
param_2 = (float)fVar2;
|
|
|
|
}
|
|
|
|
if (*(int *)(iVar1 + 0x10) == 0) {
|
|
|
|
param_3 = 0.0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
fVar2 = (float10)FUN_00518bd0();
|
|
|
|
param_3 = (float)fVar2;
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x10) == 0) {
|
|
|
|
local_8 = 0.0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
fVar2 = (float10)FUN_00518be0();
|
|
|
|
local_8 = (float)fVar2;
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x10) == 0) {
|
|
|
|
local_4 = 0.0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
fVar2 = (float10)FUN_00518bd0();
|
|
|
|
local_4 = (float)fVar2;
|
|
|
|
}
|
|
|
|
FUN_005aa8a0(local_4,local_8,param_1 + 0x48,param_3,param_2,iVar1 + 0x48);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
FUN_005aa560((int)param_2 + 0x48);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00510340 at 0x00510340 (size: 123) ---
|
|
|
|
|
|
undefined4 __thiscall FUN_00510340(int param_1,int param_2,undefined4 param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
int iVar2;
|
|
|
|
undefined4 uVar3;
|
|
|
|
|
|
|
|
if (param_2 == param_1) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
iVar1 = FUN_00521f10(param_3);
|
|
|
|
if (iVar1 != 0) {
|
|
|
|
if (*(int *)(param_1 + 0x44) == 0) {
|
|
|
|
iVar2 = FUN_005df0f5(0x24);
|
|
|
|
if (iVar2 == 0) {
|
|
|
|
uVar3 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar3 = FUN_0051bd30();
|
|
|
|
}
|
|
|
|
*(undefined4 *)(param_1 + 0x44) = uVar3;
|
|
|
|
}
|
|
|
|
FUN_0051bda0(param_2,iVar1 + 0x10,*(undefined4 *)(iVar1 + 0xc),param_3);
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005103c0 at 0x005103C0 (size: 108) ---
|
|
|
|
|
|
undefined4 __thiscall FUN_005103c0(int param_1,int param_2,uint param_3,undefined4 param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
undefined4 uVar2;
|
|
|
|
|
|
|
|
if (param_2 == param_1) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
if ((param_3 != 0xffffffff) && (*(uint *)(*(int *)(param_1 + 0x10) + 0x58) <= param_3)) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x44) == 0) {
|
|
|
|
iVar1 = FUN_005df0f5(0x24);
|
|
|
|
if (iVar1 == 0) {
|
|
|
|
uVar2 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar2 = FUN_0051bd30();
|
|
|
|
}
|
|
|
|
*(undefined4 *)(param_1 + 0x44) = uVar2;
|
|
|
|
}
|
|
|
|
FUN_0051bda0(param_2,param_4,param_3,0);
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00510430 at 0x00510430 (size: 52) ---
|
|
|
|
|
|
void __thiscall FUN_00510430(int param_1,float param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
if (param_2 < *(float *)(param_1 + 0xb8)) {
|
|
|
|
param_2 = *(float *)(param_1 + 0xb8);
|
|
|
|
}
|
|
|
|
*(float *)(param_1 + 0xb4) = param_2;
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
FUN_00518e70();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00510470 at 0x00510470 (size: 15) ---
|
|
|
|
|
|
void __fastcall FUN_00510470(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
FUN_00518e30();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00510480 at 0x00510480 (size: 113) ---
|
|
|
|
|
|
undefined4 __thiscall FUN_00510480(int param_1,float param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 uVar1;
|
|
|
|
|
|
|
|
uVar1 = 0;
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
uVar1 = FUN_00519fb0(param_2);
|
|
|
|
}
|
|
|
|
if (*(float *)(param_1 + 0xb4) != DAT_007c7820) {
|
|
|
|
param_2 = *(float *)(param_1 + 0xb4);
|
|
|
|
if (param_2 < *(float *)(param_1 + 0xb8)) {
|
|
|
|
param_2 = *(float *)(param_1 + 0xb8);
|
|
|
|
}
|
|
|
|
*(float *)(param_1 + 0xb4) = param_2;
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
FUN_00518e70(param_2);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return uVar1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00510500 at 0x00510500 (size: 113) ---
|
|
|
|
|
|
undefined4 __thiscall FUN_00510500(int param_1,float param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 uVar1;
|
|
|
|
|
|
|
|
uVar1 = 0;
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
uVar1 = FUN_00519d40(param_2);
|
|
|
|
}
|
|
|
|
if (*(float *)(param_1 + 0xb4) != DAT_007c7820) {
|
|
|
|
param_2 = *(float *)(param_1 + 0xb4);
|
|
|
|
if (param_2 < *(float *)(param_1 + 0xb8)) {
|
|
|
|
param_2 = *(float *)(param_1 + 0xb8);
|
|
|
|
}
|
|
|
|
*(float *)(param_1 + 0xb4) = param_2;
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
FUN_00518e70(param_2);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return uVar1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00510580 at 0x00510580 (size: 158) ---
|
|
|
|
|
|
undefined4 __thiscall FUN_00510580(int param_1,float param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
float fVar1;
|
|
|
|
undefined4 uVar2;
|
|
|
|
|
|
|
|
uVar2 = 0;
|
|
|
|
if ((*(int *)(param_1 + 0x10) != 0) && (*(int *)((int)param_2 + 0x10) != 0)) {
|
|
|
|
uVar2 = FUN_00519870(*(int *)((int)param_2 + 0x10));
|
|
|
|
}
|
|
|
|
*(undefined4 *)(param_1 + 0xb4) = *(undefined4 *)((int)param_2 + 0xb8);
|
|
|
|
fVar1 = *(float *)((int)param_2 + 0xb8);
|
|
|
|
*(float *)(param_1 + 0xb8) = fVar1;
|
|
|
|
if (*(float *)(param_1 + 0xb4) != DAT_007c7820) {
|
|
|
|
param_2 = *(float *)(param_1 + 0xb4);
|
|
|
|
if (param_2 < fVar1) {
|
|
|
|
param_2 = fVar1;
|
|
|
|
}
|
|
|
|
*(float *)(param_1 + 0xb4) = param_2;
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
FUN_00518e70(param_2);
|
|
|
|
*(undefined1 *)(param_1 + 0x2c) = 1;
|
|
|
|
return uVar2;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
*(undefined1 *)(param_1 + 0x2c) = 1;
|
|
|
|
return uVar2;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00510620 at 0x00510620 (size: 193) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void __thiscall
|
|
|
|
FUN_00510620(int param_1,float param_2,float param_3,undefined4 param_4,undefined4 param_5)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
int iVar2;
|
|
|
|
int iVar3;
|
|
|
|
|
|
|
|
if (_DAT_007c78bc <= (float)(double)CONCAT44(param_5,param_4)) {
|
|
|
|
iVar3 = FUN_005df0f5(0x38);
|
|
|
|
if (iVar3 == 0) {
|
|
|
|
iVar3 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar3 = FUN_0051c580(1,DAT_008eee70,DAT_008eee74,param_4,param_5,param_2,param_3,0);
|
|
|
|
}
|
|
|
|
iVar1 = *(int *)(param_1 + 0x104);
|
|
|
|
for (iVar2 = iVar1; iVar2 != 0; iVar2 = *(int *)(iVar2 + 0x24)) {
|
|
|
|
}
|
|
|
|
if (iVar1 != 0) {
|
|
|
|
*(int *)(iVar1 + 0x20) = iVar3;
|
|
|
|
}
|
|
|
|
*(undefined4 *)(iVar3 + 0x24) = *(undefined4 *)(param_1 + 0x104);
|
|
|
|
*(int *)(param_1 + 0x104) = iVar3;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
param_2 = param_3;
|
|
|
|
if (param_3 < *(float *)(param_1 + 0xb8)) {
|
|
|
|
param_2 = *(float *)(param_1 + 0xb8);
|
|
|
|
}
|
|
|
|
*(float *)(param_1 + 0xb4) = param_2;
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
FUN_00518e70(param_2);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005106f0 at 0x005106F0 (size: 15) ---
|
|
|
|
|
|
void __fastcall FUN_005106f0(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
FUN_005197e0();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00510700 at 0x00510700 (size: 15) ---
|
|
|
|
|
|
void __fastcall FUN_00510700(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
FUN_00519830();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00510710 at 0x00510710 (size: 95) ---
|
|
|
|
|
|
undefined4 __thiscall FUN_00510710(int param_1,int param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 uVar1;
|
|
|
|
|
|
|
|
uVar1 = DAT_008379a8;
|
|
|
|
if (param_2 == 0) {
|
|
|
|
*(uint *)(param_1 + 0xac) = *(uint *)(param_1 + 0xac) & 0xffffff7f;
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
if ((*(byte *)(param_1 + 0xa8) & 1) != 0) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
if (-1 < (char)*(uint *)(param_1 + 0xac)) {
|
|
|
|
*(undefined4 *)(param_1 + 0xdc) = DAT_008379ac;
|
|
|
|
*(undefined4 *)(param_1 + 0xd8) = uVar1;
|
|
|
|
}
|
|
|
|
*(uint *)(param_1 + 0xac) = *(uint *)(param_1 + 0xac) | 0x80;
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00510770 at 0x00510770 (size: 76) ---
|
|
|
|
|
|
undefined4 __thiscall FUN_00510770(int param_1,int param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
if (param_2 == 0) {
|
|
|
|
*(uint *)(param_1 + 0xa8) = *(uint *)(param_1 + 0xa8) & 0xffffffdf;
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
FUN_00518e30(0);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*(uint *)(param_1 + 0xa8) = *(uint *)(param_1 + 0xa8) | 0x20;
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
FUN_00518e30(1);
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005107c0 at 0x005107C0 (size: 68) ---
|
|
|
|
|
|
void __thiscall FUN_005107c0(int param_1,int param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
if (param_2 == 0) {
|
|
|
|
*(uint *)(param_1 + 0xa8) = *(uint *)(param_1 + 0xa8) & 0xfffff7ff;
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
FUN_00519ce0();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*(uint *)(param_1 + 0xa8) = *(uint *)(param_1 + 0xa8) | 0x800;
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
FUN_00519730();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00510810 at 0x00510810 (size: 88) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
undefined4 __thiscall FUN_00510810(int param_1,float param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
if (param_2 < (float)_DAT_00795610) {
|
|
|
|
*(undefined4 *)(param_1 + 0xb0) = 0;
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
if (_DAT_007958cc < param_2) {
|
|
|
|
*(undefined4 *)(param_1 + 0xb0) = 0x3dcccccd;
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
*(float *)(param_1 + 0xb0) = param_2;
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00510870 at 0x00510870 (size: 15) ---
|
|
|
|
|
|
void __fastcall FUN_00510870(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
FUN_00518860(1);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00510880 at 0x00510880 (size: 18) ---
|
|
|
|
|
|
void __fastcall FUN_00510880(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
if (*(int *)(param_1 + 0xc4) != 0) {
|
|
|
|
FUN_00524ed0();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005108b0 at 0x005108B0 (size: 18) ---
|
|
|
|
|
|
undefined4 __fastcall FUN_005108b0(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 uVar1;
|
|
|
|
|
|
|
|
if (*(int *)(param_1 + 0xc4) == 0) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
uVar1 = FUN_00524e00();
|
|
|
|
return uVar1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005108d0 at 0x005108D0 (size: 18) ---
|
|
|
|
|
|
undefined4 __fastcall FUN_005108d0(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 uVar1;
|
|
|
|
|
|
|
|
if (*(int *)(param_1 + 0xc4) == 0) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
uVar1 = FUN_00524e30();
|
|
|
|
return uVar1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005108f0 at 0x005108F0 (size: 13) ---
|
|
|
|
|
|
void __fastcall FUN_005108f0(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
FUN_005188a0();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00510900 at 0x00510900 (size: 13) ---
|
|
|
|
|
|
void __fastcall FUN_00510900(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
FUN_00518880();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00510910 at 0x00510910 (size: 27) ---
|
|
|
|
|
|
undefined4 __thiscall FUN_00510910(int param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
FUN_00519a20(param_2);
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00510930 at 0x00510930 (size: 50) ---
|
|
|
|
|
|
undefined2 __thiscall FUN_00510930(int param_1,float param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
|
|
|
|
if (*(char *)(param_1 + 0x2c) != '\0') {
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
if (((*(float *)(param_1 + 0x24) <= param_2) && (*(int **)(param_1 + 0x90) != (int *)0x0)) &&
|
|
|
|
(iVar1 = (**(code **)(**(int **)(param_1 + 0x90) + 0x68))(), iVar1 != 0)) {
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00510970 at 0x00510970 (size: 95) ---
|
|
|
|
|
|
undefined4 __fastcall FUN_00510970(int *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
uint uVar2;
|
|
|
|
|
|
|
|
iVar1 = param_1[2];
|
|
|
|
if (iVar1 == param_1[1]) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
if (iVar1 == 0) {
|
|
|
|
iVar1 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar1 = thunk_FUN_005df0f5(iVar1 << 2);
|
|
|
|
uVar2 = 0;
|
|
|
|
if (iVar1 == 0) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
if (param_1[2] != 0) {
|
|
|
|
do {
|
|
|
|
*(undefined4 *)(iVar1 + uVar2 * 4) = *(undefined4 *)(*param_1 + uVar2 * 4);
|
|
|
|
uVar2 = uVar2 + 1;
|
|
|
|
} while (uVar2 < (uint)param_1[2]);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
operator_delete__((void *)*param_1);
|
|
|
|
*param_1 = iVar1;
|
|
|
|
param_1[1] = param_1[2];
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005109f0 at 0x005109F0 (size: 89) ---
|
|
|
|
|
|
void __thiscall FUN_005109f0(int param_1,undefined4 *param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
|
|
|
|
*(undefined4 *)(param_1 + 0x2a8) = 1;
|
|
|
|
*(undefined4 *)(param_1 + 0x2ac) = *param_2;
|
|
|
|
*(undefined4 *)(param_1 + 0x2b0) = param_2[1];
|
|
|
|
*(undefined4 *)(param_1 + 0x2b4) = 0;
|
|
|
|
iVar1 = FUN_004524a0();
|
|
|
|
if (iVar1 != 0) {
|
|
|
|
*(undefined4 *)(param_1 + 0x2ac) = 0;
|
|
|
|
*(undefined4 *)(param_1 + 0x2b0) = 0;
|
|
|
|
*(undefined4 *)(param_1 + 0x2b4) = 0;
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00510a50 at 0x00510A50 (size: 86) ---
|
|
|
|
|
|
void __thiscall FUN_00510a50(int param_1,undefined4 param_2,int param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 uVar1;
|
|
|
|
uint uVar2;
|
|
|
|
|
|
|
|
*(undefined4 *)(param_1 + 8) = param_2;
|
|
|
|
if (param_3 == 0) {
|
|
|
|
uVar2 = *(uint *)(param_1 + 0xa8) | 1;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar2 = *(uint *)(param_1 + 0xa8) & 0xfffffffe;
|
|
|
|
}
|
|
|
|
*(uint *)(param_1 + 0xa8) = uVar2;
|
|
|
|
*(uint *)(param_1 + 0xac) = *(uint *)(param_1 + 0xac) & 0xffffff7f;
|
|
|
|
uVar1 = DAT_008379a8;
|
|
|
|
*(undefined4 *)(param_1 + 0xdc) = DAT_008379ac;
|
|
|
|
*(undefined4 *)(param_1 + 0xd8) = uVar1;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00510ab0 at 0x00510AB0 (size: 51) ---
|
|
|
|
|
|
undefined4 __fastcall FUN_00510ab0(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
FUN_00519f00(0x65);
|
|
|
|
}
|
|
|
|
if (((*(uint *)(param_1 + 0xa8) & 0x1000) == 0) && (*(int *)(param_1 + 0x10) != 0)) {
|
|
|
|
FUN_00519e40(param_1 + 0x50);
|
|
|
|
}
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00510af0 at 0x00510AF0 (size: 168) ---
|
|
|
|
|
|
undefined4 __thiscall FUN_00510af0(int param_1,undefined4 param_2,undefined4 param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 uVar1;
|
|
|
|
undefined4 local_64;
|
|
|
|
undefined4 local_60;
|
|
|
|
undefined **local_54;
|
|
|
|
undefined4 local_50;
|
|
|
|
undefined4 local_4c;
|
|
|
|
undefined4 local_48;
|
|
|
|
undefined4 local_44;
|
|
|
|
undefined4 local_40;
|
|
|
|
undefined4 local_18;
|
|
|
|
undefined4 local_14;
|
|
|
|
undefined4 local_10;
|
|
|
|
undefined4 local_4;
|
|
|
|
|
|
|
|
*(undefined4 *)(param_1 + 0xcc) = 1;
|
|
|
|
if (*(int *)(param_1 + 0xc4) == 0) {
|
|
|
|
return 7;
|
|
|
|
}
|
|
|
|
local_64 = 0;
|
|
|
|
local_54 = &PTR_LAB_00797910;
|
|
|
|
local_50 = 0;
|
|
|
|
local_4c = 0x3f800000;
|
|
|
|
local_48 = 0;
|
|
|
|
local_44 = 0;
|
|
|
|
local_40 = 0;
|
|
|
|
local_18 = 0;
|
|
|
|
local_14 = 0;
|
|
|
|
local_10 = 0;
|
|
|
|
FUN_00535b30();
|
|
|
|
local_4 = param_3;
|
|
|
|
local_64 = 1;
|
|
|
|
local_60 = param_2;
|
|
|
|
uVar1 = FUN_00524cd0(&local_64);
|
|
|
|
return uVar1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00510ba0 at 0x00510BA0 (size: 168) ---
|
|
|
|
|
|
undefined4 __thiscall FUN_00510ba0(int param_1,undefined4 param_2,undefined4 param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 uVar1;
|
|
|
|
undefined4 local_64;
|
|
|
|
undefined4 local_60;
|
|
|
|
undefined **local_54;
|
|
|
|
undefined4 local_50;
|
|
|
|
undefined4 local_4c;
|
|
|
|
undefined4 local_48;
|
|
|
|
undefined4 local_44;
|
|
|
|
undefined4 local_40;
|
|
|
|
undefined4 local_18;
|
|
|
|
undefined4 local_14;
|
|
|
|
undefined4 local_10;
|
|
|
|
undefined4 local_4;
|
|
|
|
|
|
|
|
*(undefined4 *)(param_1 + 0xcc) = 1;
|
|
|
|
if (*(int *)(param_1 + 0xc4) == 0) {
|
|
|
|
return 7;
|
|
|
|
}
|
|
|
|
local_64 = 0;
|
|
|
|
local_54 = &PTR_LAB_00797910;
|
|
|
|
local_50 = 0;
|
|
|
|
local_4c = 0x3f800000;
|
|
|
|
local_48 = 0;
|
|
|
|
local_44 = 0;
|
|
|
|
local_40 = 0;
|
|
|
|
local_18 = 0;
|
|
|
|
local_14 = 0;
|
|
|
|
local_10 = 0;
|
|
|
|
FUN_00535b30();
|
|
|
|
local_4 = param_3;
|
|
|
|
local_64 = 3;
|
|
|
|
local_60 = param_2;
|
|
|
|
uVar1 = FUN_00524cd0(&local_64);
|
|
|
|
return uVar1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00510c50 at 0x00510C50 (size: 106) ---
|
|
|
|
|
|
void __fastcall FUN_00510c50(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 local_64 [4];
|
|
|
|
undefined **local_54;
|
|
|
|
undefined4 local_50;
|
|
|
|
undefined4 local_4c;
|
|
|
|
undefined4 local_48;
|
|
|
|
undefined4 local_44;
|
|
|
|
undefined4 local_40;
|
|
|
|
undefined4 local_18;
|
|
|
|
undefined4 local_14;
|
|
|
|
undefined4 local_10;
|
|
|
|
|
|
|
|
if (*(int *)(param_1 + 0xc4) != 0) {
|
|
|
|
local_64[0] = 0;
|
|
|
|
local_54 = &PTR_LAB_00797910;
|
|
|
|
local_50 = 0;
|
|
|
|
local_4c = 0x3f800000;
|
|
|
|
local_48 = 0;
|
|
|
|
local_44 = 0;
|
|
|
|
local_40 = 0;
|
|
|
|
local_18 = 0;
|
|
|
|
local_14 = 0;
|
|
|
|
local_10 = 0;
|
|
|
|
FUN_00535b30();
|
|
|
|
local_64[0] = 5;
|
|
|
|
FUN_00524cd0(local_64);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00510cc0 at 0x00510CC0 (size: 18) ---
|
|
|
|
|
|
void __fastcall FUN_00510cc0(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
if (*(int *)(param_1 + 0xc4) != 0) {
|
|
|
|
FUN_00524db0(0x36);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00510ce0 at 0x00510CE0 (size: 84) ---
|
|
|
|
|
|
void __fastcall FUN_00510ce0(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 uVar1;
|
|
|
|
|
|
|
|
if (*(int *)(param_1 + 200) == 0) {
|
|
|
|
uVar1 = FUN_00555ef0(param_1);
|
|
|
|
*(undefined4 *)(param_1 + 200) = uVar1;
|
|
|
|
}
|
|
|
|
uVar1 = DAT_008379ac;
|
|
|
|
if ((*(byte *)(param_1 + 0xa8) & 1) == 0) {
|
|
|
|
if (-1 < (char)*(uint *)(param_1 + 0xac)) {
|
|
|
|
*(undefined4 *)(param_1 + 0xd8) = DAT_008379a8;
|
|
|
|
*(undefined4 *)(param_1 + 0xdc) = uVar1;
|
|
|
|
}
|
|
|
|
*(uint *)(param_1 + 0xac) = *(uint *)(param_1 + 0xac) | 0x80;
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00510d40 at 0x00510D40 (size: 108) ---
|
|
|
|
|
|
void __thiscall FUN_00510d40(int param_1,int param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 uVar1;
|
|
|
|
|
|
|
|
if (*(int *)(param_1 + 0xc4) == 0) {
|
|
|
|
uVar1 = FUN_00524c50(param_1,*(undefined4 *)(param_1 + 300));
|
|
|
|
*(undefined4 *)(param_1 + 0xc4) = uVar1;
|
|
|
|
if (param_2 != 0) {
|
|
|
|
FUN_00524dc0();
|
|
|
|
}
|
|
|
|
uVar1 = DAT_008379ac;
|
|
|
|
if ((*(byte *)(param_1 + 0xa8) & 1) == 0) {
|
|
|
|
if (-1 < (char)*(uint *)(param_1 + 0xac)) {
|
|
|
|
*(undefined4 *)(param_1 + 0xd8) = DAT_008379a8;
|
|
|
|
*(undefined4 *)(param_1 + 0xdc) = uVar1;
|
|
|
|
}
|
|
|
|
*(uint *)(param_1 + 0xac) = *(uint *)(param_1 + 0xac) | 0x80;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00510db0 at 0x00510DB0 (size: 259) ---
|
|
|
|
|
|
void __thiscall
|
|
|
|
FUN_00510db0(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,undefined4 param_5
|
|
|
|
,undefined4 param_6)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 uVar1;
|
|
|
|
undefined4 local_64 [2];
|
|
|
|
undefined4 local_5c;
|
|
|
|
undefined4 local_58;
|
|
|
|
undefined **local_54;
|
|
|
|
undefined4 local_50;
|
|
|
|
undefined4 local_4c;
|
|
|
|
undefined4 local_48;
|
|
|
|
undefined4 local_44;
|
|
|
|
undefined4 local_40;
|
|
|
|
undefined4 local_18;
|
|
|
|
undefined4 local_14;
|
|
|
|
undefined4 local_10;
|
|
|
|
undefined4 local_c;
|
|
|
|
undefined4 local_8;
|
|
|
|
undefined4 local_4;
|
|
|
|
|
|
|
|
if (*(int *)(param_1 + 0xc4) == 0) {
|
|
|
|
uVar1 = FUN_00524c50(param_1,*(undefined4 *)(param_1 + 300));
|
|
|
|
*(undefined4 *)(param_1 + 0xc4) = uVar1;
|
|
|
|
FUN_00524dc0();
|
|
|
|
uVar1 = DAT_008379ac;
|
|
|
|
if ((*(byte *)(param_1 + 0xa8) & 1) == 0) {
|
|
|
|
if (-1 < (char)*(uint *)(param_1 + 0xac)) {
|
|
|
|
*(undefined4 *)(param_1 + 0xd8) = DAT_008379a8;
|
|
|
|
*(undefined4 *)(param_1 + 0xdc) = uVar1;
|
|
|
|
}
|
|
|
|
*(uint *)(param_1 + 0xac) = *(uint *)(param_1 + 0xac) | 0x80;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
local_64[0] = 0;
|
|
|
|
local_54 = &PTR_LAB_00797910;
|
|
|
|
local_50 = 0;
|
|
|
|
local_4c = 0x3f800000;
|
|
|
|
local_48 = 0;
|
|
|
|
local_44 = 0;
|
|
|
|
local_40 = 0;
|
|
|
|
local_18 = 0;
|
|
|
|
local_14 = 0;
|
|
|
|
local_10 = 0;
|
|
|
|
FUN_00535b30();
|
|
|
|
local_58 = param_3;
|
|
|
|
local_c = param_4;
|
|
|
|
local_5c = param_2;
|
|
|
|
local_4 = param_6;
|
|
|
|
local_64[0] = 6;
|
|
|
|
local_8 = param_5;
|
|
|
|
FUN_00524cd0(local_64);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00510ec0 at 0x00510EC0 (size: 243) ---
|
|
|
|
|
|
void __thiscall FUN_00510ec0(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 uVar1;
|
|
|
|
undefined4 local_64 [2];
|
|
|
|
undefined4 local_5c;
|
|
|
|
undefined4 local_58;
|
|
|
|
undefined **local_54;
|
|
|
|
undefined4 local_50;
|
|
|
|
undefined4 local_4c;
|
|
|
|
undefined4 local_48;
|
|
|
|
undefined4 local_44;
|
|
|
|
undefined4 local_40;
|
|
|
|
undefined4 local_18;
|
|
|
|
undefined4 local_14;
|
|
|
|
undefined4 local_10;
|
|
|
|
undefined4 local_4;
|
|
|
|
|
|
|
|
if (*(int *)(param_1 + 0xc4) == 0) {
|
|
|
|
uVar1 = FUN_00524c50(param_1,*(undefined4 *)(param_1 + 300));
|
|
|
|
*(undefined4 *)(param_1 + 0xc4) = uVar1;
|
|
|
|
FUN_00524dc0();
|
|
|
|
uVar1 = DAT_008379ac;
|
|
|
|
if ((*(byte *)(param_1 + 0xa8) & 1) == 0) {
|
|
|
|
if (-1 < (char)*(uint *)(param_1 + 0xac)) {
|
|
|
|
*(undefined4 *)(param_1 + 0xd8) = DAT_008379a8;
|
|
|
|
*(undefined4 *)(param_1 + 0xdc) = uVar1;
|
|
|
|
}
|
|
|
|
*(uint *)(param_1 + 0xac) = *(uint *)(param_1 + 0xac) | 0x80;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
local_64[0] = 0;
|
|
|
|
local_54 = &PTR_LAB_00797910;
|
|
|
|
local_50 = 0;
|
|
|
|
local_4c = 0x3f800000;
|
|
|
|
local_48 = 0;
|
|
|
|
local_44 = 0;
|
|
|
|
local_40 = 0;
|
|
|
|
local_18 = 0;
|
|
|
|
local_14 = 0;
|
|
|
|
local_10 = 0;
|
|
|
|
FUN_00535b30();
|
|
|
|
local_5c = param_2;
|
|
|
|
local_58 = param_3;
|
|
|
|
local_64[0] = 8;
|
|
|
|
local_4 = param_4;
|
|
|
|
FUN_00524cd0(local_64);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00510fc0 at 0x00510FC0 (size: 33) ---
|
|
|
|
|
|
void FUN_00510fc0(undefined4 param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_00510ce0();
|
|
|
|
FUN_00555e10(param_1,param_2);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00510ff0 at 0x00510FF0 (size: 27) ---
|
|
|
|
|
|
void __fastcall FUN_00510ff0(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_00510ce0();
|
|
|
|
if (*(int *)(param_1 + 200) != 0) {
|
|
|
|
FUN_00555ea0();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00511010 at 0x00511010 (size: 134) ---
|
|
|
|
|
|
void __thiscall FUN_00511010(int param_1,int param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 *puVar1;
|
|
|
|
uint uVar2;
|
|
|
|
undefined4 local_c;
|
|
|
|
undefined4 uStack_8;
|
|
|
|
undefined4 uStack_4;
|
|
|
|
|
|
|
|
if (*(int **)(param_1 + 300) != (int *)0x0) {
|
|
|
|
(**(code **)(**(int **)(param_1 + 300) + 0x60))();
|
|
|
|
}
|
|
|
|
uVar2 = 0;
|
|
|
|
if (*(int *)(param_2 + 0x10) != 0) {
|
|
|
|
do {
|
|
|
|
puVar1 = (undefined4 *)(*(int *)(param_2 + 0x14) + uVar2 * 8);
|
|
|
|
if (*(int *)(param_1 + 300) != 0) {
|
|
|
|
FUN_0051c430();
|
|
|
|
uStack_8 = *puVar1;
|
|
|
|
uStack_4 = puVar1[1];
|
|
|
|
local_c = *(undefined4 *)(param_2 + 4);
|
|
|
|
(**(code **)(**(int **)(param_1 + 300) + 0x54))(&local_c);
|
|
|
|
}
|
|
|
|
uVar2 = uVar2 + 1;
|
|
|
|
} while (uVar2 < *(uint *)(param_2 + 0x10));
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x120) != 0) {
|
|
|
|
FUN_0051af20(param_2);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005110a0 at 0x005110A0 (size: 81) ---
|
|
|
|
|
|
void __thiscall FUN_005110a0(int param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 uVar1;
|
|
|
|
|
|
|
|
if (*(int *)(param_1 + 0x11c) != 0) {
|
|
|
|
FUN_0051a530(param_2);
|
|
|
|
uVar1 = DAT_008379ac;
|
|
|
|
if ((*(byte *)(param_1 + 0xa8) & 1) == 0) {
|
|
|
|
if (-1 < (char)*(uint *)(param_1 + 0xac)) {
|
|
|
|
*(undefined4 *)(param_1 + 0xd8) = DAT_008379a8;
|
|
|
|
*(undefined4 *)(param_1 + 0xdc) = uVar1;
|
|
|
|
}
|
|
|
|
*(uint *)(param_1 + 0xac) = *(uint *)(param_1 + 0xac) | 0x80;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00511100 at 0x00511100 (size: 201) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_00511100(undefined4 *param_1,undefined4 *param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
*param_1 = *param_2;
|
|
|
|
param_1[1] = param_2[1];
|
|
|
|
param_1[2] = param_2[2];
|
|
|
|
param_1[4] = param_2[4];
|
|
|
|
param_1[5] = param_2[5];
|
|
|
|
param_1[6] = &PTR_LAB_00797910;
|
|
|
|
param_1[7] = param_2[7];
|
|
|
|
FUN_00425f10(param_2 + 8);
|
|
|
|
param_1[0x18] = &PTR_LAB_00797910;
|
|
|
|
param_1[0x19] = param_2[0x19];
|
|
|
|
FUN_00425f10(param_2 + 0x1a);
|
|
|
|
param_1[0x2a] = param_2[0x2a];
|
|
|
|
param_1[0x2b] = param_2[0x2b];
|
|
|
|
param_1[0x2c] = param_2[0x2c];
|
|
|
|
param_1[0x2d] = param_2[0x2d];
|
|
|
|
param_1[0x2e] = param_2[0x2e];
|
|
|
|
param_1[0x2f] = param_2[0x2f];
|
|
|
|
param_1[0x30] = param_2[0x30];
|
|
|
|
param_1[0x32] = param_2[0x32];
|
|
|
|
param_1[0x33] = param_2[0x33];
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005111d0 at 0x005111D0 (size: 579) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void __thiscall FUN_005111d0(int param_1,float param_2,int param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
float *pfVar1;
|
|
|
|
float fVar2;
|
|
|
|
float fVar3;
|
|
|
|
float fVar4;
|
|
|
|
float fVar5;
|
|
|
|
float local_28;
|
|
|
|
float local_18;
|
|
|
|
float local_14;
|
|
|
|
float local_10;
|
|
|
|
undefined1 local_c [8];
|
|
|
|
float local_4;
|
|
|
|
|
|
|
|
pfVar1 = (float *)(param_1 + 0xe0);
|
|
|
|
local_28 = *(float *)(param_1 + 0xe8) * *(float *)(param_1 + 0xe8) +
|
|
|
|
*(float *)(param_1 + 0xe4) * *(float *)(param_1 + 0xe4) + *pfVar1 * *pfVar1;
|
|
|
|
if (local_28 <= DAT_00796344) {
|
|
|
|
if ((*(int *)(param_1 + 0xc4) == 0) && ((*(uint *)(param_1 + 0xac) & 2) != 0)) {
|
|
|
|
*(uint *)(param_1 + 0xac) = *(uint *)(param_1 + 0xac) & 0xffffff7f;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
fVar2 = _DAT_007c78a4 * _DAT_007c78a4;
|
|
|
|
if (fVar2 < local_28) {
|
|
|
|
FUN_00452440(local_c);
|
|
|
|
*pfVar1 = _DAT_007c78a4 * *pfVar1;
|
|
|
|
*(float *)(param_1 + 0xe4) = _DAT_007c78a4 * *(float *)(param_1 + 0xe4);
|
|
|
|
*(float *)(param_1 + 0xe8) = _DAT_007c78a4 * *(float *)(param_1 + 0xe8);
|
|
|
|
local_28 = fVar2;
|
|
|
|
}
|
|
|
|
FUN_0050f940(param_2,local_28);
|
|
|
|
if (local_28 - _DAT_007c78a0 * _DAT_007c78a0 < _DAT_007c78bc) {
|
|
|
|
*pfVar1 = 0.0;
|
|
|
|
*(undefined4 *)(param_1 + 0xe4) = 0;
|
|
|
|
*(undefined4 *)(param_1 + 0xe8) = 0;
|
|
|
|
}
|
|
|
|
fVar4 = *(float *)(param_1 + 0xf0) * _DAT_007938b8;
|
|
|
|
fVar5 = *(float *)(param_1 + 0xf4) * _DAT_007938b8;
|
|
|
|
fVar2 = *(float *)(param_1 + 0xe4);
|
|
|
|
fVar3 = *(float *)(param_1 + 0xe8);
|
|
|
|
*(float *)(param_3 + 0x34) =
|
|
|
|
param_2 * *pfVar1 + *(float *)(param_1 + 0xec) * _DAT_007938b8 * param_2 * param_2 +
|
|
|
|
*(float *)(param_3 + 0x34);
|
|
|
|
*(float *)(param_3 + 0x38) =
|
|
|
|
param_2 * fVar2 + fVar4 * param_2 * param_2 + *(float *)(param_3 + 0x38);
|
|
|
|
*(float *)(param_3 + 0x3c) =
|
|
|
|
param_2 * fVar3 + fVar5 * param_2 * param_2 + *(float *)(param_3 + 0x3c);
|
|
|
|
}
|
|
|
|
*pfVar1 = param_2 * *(float *)(param_1 + 0xec) + *pfVar1;
|
|
|
|
*(float *)(param_1 + 0xe4) = param_2 * *(float *)(param_1 + 0xf0) + *(float *)(param_1 + 0xe4);
|
|
|
|
*(float *)(param_1 + 0xe8) = param_2 * *(float *)(param_1 + 0xf4) + *(float *)(param_1 + 0xe8);
|
|
|
|
local_18 = param_2 * *(float *)(param_1 + 0xf8);
|
|
|
|
local_14 = param_2 * *(float *)(param_1 + 0xfc);
|
|
|
|
local_10 = param_2 * *(float *)(param_1 + 0x100);
|
|
|
|
local_4 = local_10;
|
|
|
|
FUN_005364e0(&local_18);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00511420 at 0x00511420 (size: 232) ---
|
|
|
|
|
|
void __fastcall FUN_00511420(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 uVar1;
|
|
|
|
|
|
|
|
uVar1 = DAT_0082223c;
|
|
|
|
if ((((*(uint *)(param_1 + 0xac) & 1) != 0) && ((*(uint *)(param_1 + 0xac) & 2) != 0)) &&
|
|
|
|
((*(uint *)(param_1 + 0xa8) & 0x800000) == 0)) {
|
|
|
|
*(undefined4 *)(param_1 + 0xec) = 0;
|
|
|
|
*(undefined4 *)(param_1 + 0xf0) = 0;
|
|
|
|
*(undefined4 *)(param_1 + 0xf4) = 0;
|
|
|
|
*(undefined4 *)(param_1 + 0xf8) = 0;
|
|
|
|
*(undefined4 *)(param_1 + 0xfc) = 0;
|
|
|
|
*(undefined4 *)(param_1 + 0x100) = 0;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
if ((*(uint *)(param_1 + 0xa8) & 0x400) != 0) {
|
|
|
|
*(undefined4 *)(param_1 + 0xec) = 0;
|
|
|
|
*(undefined4 *)(param_1 + 0xf0) = 0;
|
|
|
|
*(undefined4 *)(param_1 + 0xf4) = uVar1;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
*(undefined4 *)(param_1 + 0xec) = 0;
|
|
|
|
*(undefined4 *)(param_1 + 0xf0) = 0;
|
|
|
|
*(undefined4 *)(param_1 + 0xf4) = 0;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00511510 at 0x00511510 (size: 72) ---
|
|
|
|
|
|
undefined4 __fastcall FUN_00511510(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
uint uVar2;
|
|
|
|
int iVar3;
|
|
|
|
|
|
|
|
uVar2 = 0;
|
|
|
|
if (*(int *)(param_1 + 0x94) != 0) {
|
|
|
|
iVar3 = 0;
|
|
|
|
do {
|
|
|
|
if (*(int *)(iVar3 + 0x14 + *(int *)(param_1 + 0x98)) != 0) {
|
|
|
|
iVar1 = FUN_0052c3c0(param_1);
|
|
|
|
if (iVar1 != 0) {
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
uVar2 = uVar2 + 1;
|
|
|
|
iVar3 = iVar3 + 0x18;
|
|
|
|
} while (uVar2 < *(uint *)(param_1 + 0x94));
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00511560 at 0x00511560 (size: 147) ---
|
|
|
|
|
|
undefined4 __thiscall FUN_00511560(int param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
|
|
|
|
if (DAT_00844d64 != 0) {
|
|
|
|
iVar1 = FUN_00508890(param_2);
|
|
|
|
if (iVar1 != 0) {
|
|
|
|
if ((*(uint *)(iVar1 + 0xa8) & 0x200000) == 0) {
|
|
|
|
if (((*(byte *)(param_1 + 0xa8) & 8) != 0) && (*(int **)(param_1 + 300) != (int *)0x0)) {
|
|
|
|
(**(code **)(**(int **)(param_1 + 300) + 0x58))(param_2);
|
|
|
|
}
|
|
|
|
if (((*(byte *)(iVar1 + 0xa8) & 8) != 0) && (*(int **)(iVar1 + 300) != (int *)0x0)) {
|
|
|
|
(**(code **)(**(int **)(iVar1 + 300) + 0x58))(*(undefined4 *)(param_1 + 8));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (((*(byte *)(param_1 + 0xa8) & 8) != 0) && (*(int **)(param_1 + 300) != (int *)0x0)) {
|
|
|
|
(**(code **)(**(int **)(param_1 + 300) + 0x58))(param_2);
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00511600 at 0x00511600 (size: 276) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void __fastcall FUN_00511600(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
float fVar1;
|
|
|
|
float local_1c;
|
|
|
|
float local_18;
|
|
|
|
float local_14;
|
|
|
|
float local_10;
|
|
|
|
float local_c;
|
|
|
|
float local_8;
|
|
|
|
float local_4;
|
|
|
|
|
|
|
|
if ((*(uint *)(param_1 + 0xa8) & 0x1000) == 0) {
|
|
|
|
local_1c = DAT_00867414;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
local_1c = DAT_0086c208;
|
|
|
|
}
|
|
|
|
FUN_0050aa30(&local_18,param_1 + 0x48);
|
|
|
|
fVar1 = SQRT(local_10 * local_10 + local_18 * local_18 + local_14 * local_14);
|
|
|
|
*(float *)(param_1 + 0x24) = fVar1;
|
|
|
|
if (local_1c <= local_18 * local_18 + local_14 * local_14) {
|
|
|
|
if (fVar1 <= _DAT_007c78bc) {
|
|
|
|
local_c = 0.0;
|
|
|
|
local_8 = 0.0;
|
|
|
|
local_4 = 1.0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
local_4 = _DAT_007938b0 / fVar1;
|
|
|
|
local_c = local_18 * local_4;
|
|
|
|
local_8 = local_4 * local_14;
|
|
|
|
local_4 = local_4 * local_10;
|
|
|
|
}
|
|
|
|
local_14 = local_8;
|
|
|
|
local_18 = local_c;
|
|
|
|
local_10 = local_4;
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
FUN_00518dc0(fVar1,&local_18);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
FUN_00518d90();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00511720 at 0x00511720 (size: 53) ---
|
|
|
|
|
|
void __fastcall FUN_00511720(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
ushort *puVar1;
|
|
|
|
ushort uVar2;
|
|
|
|
|
|
|
|
FUN_00511600();
|
|
|
|
puVar1 = *(ushort **)(param_1 + 0x44);
|
|
|
|
if ((puVar1 != (ushort *)0x0) && (uVar2 = 0, *puVar1 != 0)) {
|
|
|
|
do {
|
|
|
|
if (*(int *)(*(int *)(puVar1 + 2) + (uint)uVar2 * 4) != 0) {
|
|
|
|
FUN_00511720();
|
|
|
|
}
|
|
|
|
puVar1 = *(ushort **)(param_1 + 0x44);
|
|
|
|
uVar2 = uVar2 + 1;
|
|
|
|
} while (uVar2 < *puVar1);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00511760 at 0x00511760 (size: 64) ---
|
|
|
|
|
|
void __fastcall FUN_00511760(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
ushort *puVar1;
|
|
|
|
ushort uVar2;
|
|
|
|
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
FUN_00518e00(param_1 + 0x48);
|
|
|
|
}
|
|
|
|
puVar1 = *(ushort **)(param_1 + 0x44);
|
|
|
|
if ((puVar1 != (ushort *)0x0) && (uVar2 = 0, *puVar1 != 0)) {
|
|
|
|
do {
|
|
|
|
if (*(int *)(*(int *)(puVar1 + 2) + (uint)uVar2 * 4) != 0) {
|
|
|
|
FUN_00511760();
|
|
|
|
}
|
|
|
|
puVar1 = *(ushort **)(param_1 + 0x44);
|
|
|
|
uVar2 = uVar2 + 1;
|
|
|
|
} while (uVar2 < *puVar1);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005117a0 at 0x005117A0 (size: 81) ---
|
|
|
|
|
|
undefined4 __thiscall FUN_005117a0(int param_1,int param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
undefined4 uVar2;
|
|
|
|
undefined4 uVar3;
|
|
|
|
|
|
|
|
if (param_2 == 0) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
uVar3 = 0;
|
|
|
|
if (*(int *)(param_1 + 0x30) == 0) {
|
|
|
|
iVar1 = FUN_005df0f5(0x18);
|
|
|
|
if (iVar1 == 0) {
|
|
|
|
uVar2 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar2 = FUN_0051be20(param_1);
|
|
|
|
}
|
|
|
|
*(undefined4 *)(param_1 + 0x30) = uVar2;
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x30) != 0) {
|
|
|
|
uVar3 = FUN_0051bed0(param_2);
|
|
|
|
}
|
|
|
|
return uVar3;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00511800 at 0x00511800 (size: 23) ---
|
|
|
|
|
|
undefined4 __fastcall FUN_00511800(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 uVar1;
|
|
|
|
|
|
|
|
if (*(int *)(param_1 + 0x90) == 0) {
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
uVar1 = FUN_005117a0();
|
|
|
|
return uVar1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00511820 at 0x00511820 (size: 43) ---
|
|
|
|
|
|
void __fastcall FUN_00511820(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
void *pvVar1;
|
|
|
|
|
|
|
|
pvVar1 = *(void **)(param_1 + 0x128);
|
|
|
|
if (pvVar1 != (void *)0x0) {
|
|
|
|
FUN_0051c150();
|
|
|
|
operator_delete(pvVar1);
|
|
|
|
*(undefined4 *)(param_1 + 0x128) = 0;
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00511850 at 0x00511850 (size: 25) ---
|
|
|
|
|
|
void __thiscall FUN_00511850(int param_1,undefined4 param_2,undefined4 param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_00497d70(*(undefined4 *)(param_1 + 0x4c),param_2,param_3);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00511870 at 0x00511870 (size: 87) ---
|
|
|
|
|
|
void __thiscall FUN_00511870(int param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
ushort uVar1;
|
|
|
|
|
|
|
|
*(undefined4 *)(param_1 + 0x4c) = param_2;
|
|
|
|
if (((*(uint *)(param_1 + 0xa8) & 0x1000) == 0) && (*(int *)(param_1 + 0x10) != 0)) {
|
|
|
|
FUN_00518900(param_2);
|
|
|
|
}
|
|
|
|
if ((*(short **)(param_1 + 0x44) != (short *)0x0) &&
|
|
|
|
(uVar1 = 0, **(short **)(param_1 + 0x44) != 0)) {
|
|
|
|
do {
|
|
|
|
if (*(int *)(*(int *)(*(int *)(param_1 + 0x44) + 4) + (uint)uVar1 * 4) != 0) {
|
|
|
|
FUN_00511870(param_2);
|
|
|
|
}
|
|
|
|
uVar1 = uVar1 + 1;
|
|
|
|
} while (uVar1 < **(ushort **)(param_1 + 0x44));
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005118d0 at 0x005118D0 (size: 98) ---
|
|
|
|
|
|
void __thiscall FUN_005118d0(int param_1,int param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
uint uVar2;
|
|
|
|
uint uVar3;
|
|
|
|
int iVar4;
|
|
|
|
|
|
|
|
if (*(int *)(param_1 + 0x90) != 0) {
|
|
|
|
*(undefined4 *)(param_2 + 0x34) = *(undefined4 *)(*(int *)(param_1 + 0x90) + 0x28);
|
|
|
|
}
|
|
|
|
uVar2 = *(uint *)(param_1 + 0x94);
|
|
|
|
uVar3 = 0;
|
|
|
|
if (uVar2 != 0) {
|
|
|
|
iVar4 = 0;
|
|
|
|
do {
|
|
|
|
iVar1 = *(int *)(*(int *)(param_1 + 0x98) + 0x14 + iVar4);
|
|
|
|
if (iVar1 != 0) {
|
|
|
|
(*(code *)**(undefined4 **)(iVar1 + 0x38))(param_2,0,iVar1 + 0x5c,uVar2);
|
|
|
|
}
|
|
|
|
uVar2 = *(uint *)(param_1 + 0x94);
|
|
|
|
uVar3 = uVar3 + 1;
|
|
|
|
iVar4 = iVar4 + 0x18;
|
|
|
|
} while (uVar3 < uVar2);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00511940 at 0x00511940 (size: 87) ---
|
|
|
|
|
|
void __thiscall FUN_00511940(int param_1,int param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
uint uVar2;
|
|
|
|
int iVar3;
|
|
|
|
|
|
|
|
if (*(int *)(param_1 + 0x90) != 0) {
|
|
|
|
*(undefined4 *)(param_2 + 0x34) = *(undefined4 *)(*(int *)(param_1 + 0x90) + 0x28);
|
|
|
|
}
|
|
|
|
uVar2 = 0;
|
|
|
|
if (*(int *)(param_1 + 0x94) != 0) {
|
|
|
|
iVar3 = 0;
|
|
|
|
do {
|
|
|
|
iVar1 = *(int *)(*(int *)(param_1 + 0x98) + 0x14 + iVar3);
|
|
|
|
if (iVar1 != 0) {
|
|
|
|
(**(code **)(*(int *)(iVar1 + 0x38) + 4))(param_2);
|
|
|
|
}
|
|
|
|
uVar2 = uVar2 + 1;
|
|
|
|
iVar3 = iVar3 + 0x18;
|
|
|
|
} while (uVar2 < *(uint *)(param_1 + 0x94));
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005119a0 at 0x005119A0 (size: 120) ---
|
|
|
|
|
|
void __thiscall FUN_005119a0(int param_1,int param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 uVar1;
|
|
|
|
ushort uVar2;
|
|
|
|
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
FUN_0052cb70(param_1);
|
|
|
|
if ((*(short **)(param_1 + 0x44) != (short *)0x0) &&
|
|
|
|
(uVar2 = 0, **(short **)(param_1 + 0x44) != 0)) {
|
|
|
|
do {
|
|
|
|
FUN_005119a0(param_2);
|
|
|
|
uVar2 = uVar2 + 1;
|
|
|
|
} while (uVar2 < **(ushort **)(param_1 + 0x44));
|
|
|
|
}
|
|
|
|
uVar1 = *(undefined4 *)(param_2 + 0x28);
|
|
|
|
*(undefined4 *)(param_1 + 0x4c) = uVar1;
|
|
|
|
if (((*(uint *)(param_1 + 0xa8) & 0x1000) == 0) && (*(int *)(param_1 + 0x10) != 0)) {
|
|
|
|
FUN_00518900(uVar1);
|
|
|
|
}
|
|
|
|
*(int *)(param_1 + 0x90) = param_2;
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
FUN_005189d0(param_2);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00511a20 at 0x00511A20 (size: 101) ---
|
|
|
|
|
|
void __thiscall FUN_00511a20(int param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
ushort uVar1;
|
|
|
|
|
|
|
|
if (*(int *)(param_1 + 0x90) != 0) {
|
|
|
|
FUN_0052cc50(param_1);
|
|
|
|
if ((*(short **)(param_1 + 0x44) != (short *)0x0) &&
|
|
|
|
(uVar1 = 0, **(short **)(param_1 + 0x44) != 0)) {
|
|
|
|
do {
|
|
|
|
FUN_00511a20(param_2);
|
|
|
|
uVar1 = uVar1 + 1;
|
|
|
|
} while (uVar1 < **(ushort **)(param_1 + 0x44));
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
FUN_00518a20(*(undefined4 *)(param_1 + 0x90));
|
|
|
|
}
|
|
|
|
*(undefined4 *)(param_1 + 0x90) = 0;
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00511a90 at 0x00511A90 (size: 101) ---
|
|
|
|
|
|
void __thiscall FUN_00511a90(int param_1,undefined4 *param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
uint uVar2;
|
|
|
|
|
|
|
|
param_2[2] = 0;
|
|
|
|
*param_2 = 0;
|
|
|
|
FUN_006b5f30(*(undefined4 *)(*(int *)(param_1 + 0x90) + 0x28),*(int *)(param_1 + 0x90));
|
|
|
|
if (((*(int *)(param_1 + 0x90) != 0) && (*(int *)(param_1 + 0x10) != 0)) &&
|
|
|
|
(uVar2 = 0, param_2[2] != 0)) {
|
|
|
|
do {
|
|
|
|
iVar1 = *(int *)(param_2[3] + 4 + uVar2 * 8);
|
|
|
|
if (iVar1 != 0) {
|
|
|
|
FUN_00518c90(iVar1,param_2);
|
|
|
|
}
|
|
|
|
uVar2 = uVar2 + 1;
|
|
|
|
} while (uVar2 < (uint)param_2[2]);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00511b00 at 0x00511B00 (size: 509) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
undefined4 __fastcall FUN_00511b00(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
float fVar1;
|
|
|
|
float fVar2;
|
|
|
|
undefined *puVar3;
|
|
|
|
int iVar4;
|
|
|
|
int iVar5;
|
|
|
|
float *pfVar6;
|
|
|
|
uint uVar7;
|
|
|
|
int iVar8;
|
|
|
|
undefined4 uVar9;
|
|
|
|
uint local_14;
|
|
|
|
float local_c;
|
|
|
|
float local_8;
|
|
|
|
|
|
|
|
if ((*(uint *)(param_1 + 0xa8) & 0x10000) == 0) {
|
|
|
|
iVar8 = 0;
|
|
|
|
if ((*(int *)(param_1 + 0x10) == 0) || (iVar4 = FUN_00518bb0(), iVar4 == 0)) {
|
|
|
|
if ((*(int *)(param_1 + 0x10) == 0) || (iVar8 = FUN_00518b90(), iVar8 == 0)) {
|
|
|
|
uVar9 = 0;
|
|
|
|
pfVar6 = (float *)(param_1 + 0x84);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
if (*(int *)(param_1 + 0x10) == 0) {
|
|
|
|
puVar3 = &DAT_00844eec;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
puVar3 = (undefined *)FUN_00519630();
|
|
|
|
}
|
|
|
|
FUN_00452660(&local_c,puVar3);
|
|
|
|
uVar9 = *(undefined4 *)(puVar3 + 0xc);
|
|
|
|
pfVar6 = &local_c;
|
|
|
|
}
|
|
|
|
iVar8 = FUN_0050f2d0(pfVar6,uVar9);
|
|
|
|
if (iVar8 != 0) {
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
if (*(int *)(param_1 + 0x10) == 0) {
|
|
|
|
local_14 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
local_14 = FUN_00518bb0();
|
|
|
|
}
|
|
|
|
uVar7 = 0;
|
|
|
|
if (local_14 == 0) {
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
iVar4 = FUN_00452950();
|
|
|
|
while( true ) {
|
|
|
|
if (*(int *)(param_1 + 0x10) == 0) {
|
|
|
|
iVar5 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar5 = FUN_00518bc0();
|
|
|
|
}
|
|
|
|
fVar2 = *(float *)(iVar4 + 0x10) * *(float *)(iVar8 + iVar5) +
|
|
|
|
*(float *)(iVar8 + 8 + iVar5) * *(float *)(iVar4 + 0x28) +
|
|
|
|
*(float *)(iVar4 + 0x1c) * *(float *)(iVar8 + 4 + iVar5) + *(float *)(iVar4 + 0x34);
|
|
|
|
local_8 = *(float *)(iVar4 + 0x2c) * *(float *)(iVar8 + 8 + iVar5) +
|
|
|
|
*(float *)(iVar4 + 0x14) * *(float *)(iVar8 + iVar5) +
|
|
|
|
*(float *)(iVar4 + 0x20) * *(float *)(iVar8 + 4 + iVar5) +
|
|
|
|
*(float *)(iVar4 + 0x38);
|
|
|
|
fVar1 = *(float *)(iVar8 + 0x10 + iVar5);
|
|
|
|
if (((fVar2 < fVar1) || (local_8 < fVar1)) ||
|
|
|
|
((_DAT_00844d8c - fVar1 <= fVar2 || (_DAT_00844d8c - fVar1 <= local_8)))) break;
|
|
|
|
uVar7 = uVar7 + 1;
|
|
|
|
iVar8 = iVar8 + 0x14;
|
|
|
|
if (local_14 <= uVar7) {
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
if (*(int *)(param_1 + 0x10) == 0) {
|
|
|
|
puVar3 = &DAT_00844eec;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
puVar3 = (undefined *)FUN_00519630();
|
|
|
|
}
|
|
|
|
FUN_00452660(&local_c,puVar3);
|
|
|
|
fVar1 = *(float *)(puVar3 + 0xc);
|
|
|
|
if (((fVar1 <= local_c) && (fVar1 <= local_8)) && (local_c < _DAT_00844d8c - fVar1)) {
|
|
|
|
if (local_8 < _DAT_00844d8c - fVar1) {
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00511d00 at 0x00511D00 (size: 136) ---
|
|
|
|
|
|
void __fastcall FUN_00511d00(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
ushort *puVar2;
|
|
|
|
uint uVar3;
|
|
|
|
int iVar4;
|
|
|
|
uint uVar5;
|
|
|
|
|
|
|
|
uVar5 = 0;
|
|
|
|
if (*(int *)(param_1 + 0x94) != 0) {
|
|
|
|
iVar4 = 0;
|
|
|
|
do {
|
|
|
|
iVar1 = *(int *)(*(int *)(param_1 + 0x98) + 0x14 + iVar4);
|
|
|
|
if ((iVar1 != 0) &&
|
|
|
|
(FUN_0052bee0(*(int *)(param_1 + 0x98) + iVar4), *(int *)(param_1 + 0x10) != 0)) {
|
|
|
|
FUN_00518930(iVar1);
|
|
|
|
}
|
|
|
|
uVar5 = uVar5 + 1;
|
|
|
|
iVar4 = iVar4 + 0x18;
|
|
|
|
} while (uVar5 < *(uint *)(param_1 + 0x94));
|
|
|
|
}
|
|
|
|
uVar5 = 0;
|
|
|
|
*(undefined4 *)(param_1 + 0x94) = 0;
|
|
|
|
while( true ) {
|
|
|
|
puVar2 = *(ushort **)(param_1 + 0x44);
|
|
|
|
if (puVar2 == (ushort *)0x0) {
|
|
|
|
uVar3 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar3 = (uint)*puVar2;
|
|
|
|
}
|
|
|
|
if (uVar3 <= uVar5) break;
|
|
|
|
if (puVar2 == (ushort *)0x0) {
|
|
|
|
FUN_00511d00();
|
|
|
|
uVar5 = uVar5 + 1;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
FUN_00511d00();
|
|
|
|
uVar5 = uVar5 + 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00511d90 at 0x00511D90 (size: 65) ---
|
|
|
|
|
|
undefined4 __fastcall FUN_00511d90(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
uint uVar1;
|
|
|
|
int *piVar2;
|
|
|
|
uint uVar3;
|
|
|
|
|
|
|
|
if (*(int *)(param_1 + 0x90) == 0) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
uVar1 = *(uint *)(param_1 + 0x94);
|
|
|
|
if (uVar1 != 0) {
|
|
|
|
uVar3 = 0;
|
|
|
|
if (uVar1 != 0) {
|
|
|
|
piVar2 = (int *)(*(int *)(param_1 + 0x98) + 0x14);
|
|
|
|
do {
|
|
|
|
if (*piVar2 == 0) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
uVar3 = uVar3 + 1;
|
|
|
|
piVar2 = piVar2 + 6;
|
|
|
|
} while (uVar3 < uVar1);
|
|
|
|
}
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00511de0 at 0x00511DE0 (size: 100) ---
|
|
|
|
|
|
void __thiscall FUN_00511de0(int param_1,int param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
uint uVar1;
|
|
|
|
uint uVar2;
|
|
|
|
|
|
|
|
uVar1 = *(uint *)(param_1 + 0xac);
|
|
|
|
if (param_2 == 0) {
|
|
|
|
uVar2 = uVar1 & 0xfffffffd;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar2 = uVar1 | 2;
|
|
|
|
}
|
|
|
|
*(uint *)(param_1 + 0xac) = uVar2;
|
|
|
|
if ((uVar1 & 2) == 0) {
|
|
|
|
if ((param_2 != 0) && (*(int *)(param_1 + 0xc4) != 0)) {
|
|
|
|
FUN_00524f00();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if ((param_2 == 0) && (*(int *)(param_1 + 0xc4) != 0)) {
|
|
|
|
FUN_00524f20();
|
|
|
|
FUN_00511420();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
FUN_00511420();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00511e50 at 0x00511E50 (size: 59) ---
|
|
|
|
|
|
undefined4 __thiscall FUN_00511e50(int param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 uVar1;
|
|
|
|
|
|
|
|
uVar1 = 0;
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
uVar1 = FUN_00519f00(param_2);
|
|
|
|
}
|
|
|
|
if (((*(uint *)(param_1 + 0xa8) & 0x1000) == 0) && (*(int *)(param_1 + 0x10) != 0)) {
|
|
|
|
FUN_00519e40(param_1 + 0x50);
|
|
|
|
}
|
|
|
|
return uVar1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00511e90 at 0x00511E90 (size: 33) ---
|
|
|
|
|
|
void __thiscall FUN_00511e90(int param_1,undefined4 *param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
*param_2 = *(undefined4 *)(param_1 + 0x150);
|
|
|
|
param_2[1] = *(undefined4 *)(param_1 + 0x154);
|
|
|
|
param_2[2] = *(undefined4 *)(param_1 + 0x158);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00511ec0 at 0x00511EC0 (size: 219) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void __thiscall FUN_00511ec0(int param_1,float *param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
float *pfVar1;
|
|
|
|
undefined4 uVar2;
|
|
|
|
char cVar3;
|
|
|
|
undefined1 local_c [12];
|
|
|
|
|
|
|
|
pfVar1 = (float *)(param_1 + 0xe0);
|
|
|
|
cVar3 = FUN_0045fad0(pfVar1);
|
|
|
|
if (cVar3 != '\0') {
|
|
|
|
*pfVar1 = *param_2;
|
|
|
|
*(float *)(param_1 + 0xe4) = param_2[1];
|
|
|
|
*(float *)(param_1 + 0xe8) = param_2[2];
|
|
|
|
if (_DAT_007c78a4 * _DAT_007c78a4 <
|
|
|
|
*(float *)(param_1 + 0xe8) * *(float *)(param_1 + 0xe8) +
|
|
|
|
*(float *)(param_1 + 0xe4) * *(float *)(param_1 + 0xe4) + *pfVar1 * *pfVar1) {
|
|
|
|
FUN_00452440(local_c);
|
|
|
|
*pfVar1 = _DAT_007c78a4 * *pfVar1;
|
|
|
|
*(float *)(param_1 + 0xe4) = _DAT_007c78a4 * *(float *)(param_1 + 0xe4);
|
|
|
|
*(float *)(param_1 + 0xe8) = _DAT_007c78a4 * *(float *)(param_1 + 0xe8);
|
|
|
|
}
|
|
|
|
*(undefined4 *)(param_1 + 0xd0) = 1;
|
|
|
|
}
|
|
|
|
uVar2 = DAT_008379ac;
|
|
|
|
if ((*(byte *)(param_1 + 0xa8) & 1) == 0) {
|
|
|
|
if (-1 < (char)*(uint *)(param_1 + 0xac)) {
|
|
|
|
*(undefined4 *)(param_1 + 0xd8) = DAT_008379a8;
|
|
|
|
*(undefined4 *)(param_1 + 0xdc) = uVar2;
|
|
|
|
}
|
|
|
|
*(uint *)(param_1 + 0xac) = *(uint *)(param_1 + 0xac) | 0x80;
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00511fa0 at 0x00511FA0 (size: 106) ---
|
|
|
|
|
|
void __thiscall FUN_00511fa0(int param_1,float *param_2,undefined4 param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
float local_c;
|
|
|
|
float local_8;
|
|
|
|
float local_4;
|
|
|
|
|
|
|
|
local_c = *(float *)(param_1 + 0x78) * param_2[2] +
|
|
|
|
*(float *)(param_1 + 0x6c) * param_2[1] + *(float *)(param_1 + 0x60) * *param_2;
|
|
|
|
local_8 = *(float *)(param_1 + 0x7c) * param_2[2] +
|
|
|
|
*(float *)(param_1 + 0x70) * param_2[1] + *(float *)(param_1 + 100) * *param_2;
|
|
|
|
local_4 = *(float *)(param_1 + 0x80) * param_2[2] +
|
|
|
|
*(float *)(param_1 + 0x74) * param_2[1] + *(float *)(param_1 + 0x68) * *param_2;
|
|
|
|
FUN_00511ec0(&local_c,param_3);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00512010 at 0x00512010 (size: 8) ---
|
|
|
|
|
|
void FUN_00512010(void)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_005364a0();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00512020 at 0x00512020 (size: 160) ---
|
|
|
|
|
|
void __fastcall FUN_00512020(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 *puVar1;
|
|
|
|
undefined4 *puVar2;
|
|
|
|
int iVar3;
|
|
|
|
uint uVar4;
|
|
|
|
|
|
|
|
puVar1 = *(undefined4 **)(param_1 + 0x104);
|
|
|
|
while (puVar2 = puVar1, puVar2 != (undefined4 *)0x0) {
|
|
|
|
puVar1 = (undefined4 *)puVar2[9];
|
|
|
|
iVar3 = (**(code **)*puVar2)(param_1);
|
|
|
|
if (iVar3 != 0) {
|
|
|
|
if (puVar2[9] != 0) {
|
|
|
|
*(undefined4 *)(puVar2[9] + 0x20) = puVar2[8];
|
|
|
|
}
|
|
|
|
if (puVar2[8] == 0) {
|
|
|
|
*(undefined4 *)(param_1 + 0x104) = puVar2[9];
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*(undefined4 *)(puVar2[8] + 0x24) = puVar2[9];
|
|
|
|
}
|
|
|
|
puVar2[8] = 0;
|
|
|
|
puVar2[9] = 0;
|
|
|
|
*puVar2 = &PTR_LAB_007c78c0;
|
|
|
|
operator_delete(puVar2);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x110) != 0) {
|
|
|
|
uVar4 = 0;
|
|
|
|
if (*(int *)(param_1 + 0x110) != 0) {
|
|
|
|
do {
|
|
|
|
(**(code **)(**(int **)(*(int *)(param_1 + 0x108) + uVar4 * 4) + 4))(param_1);
|
|
|
|
uVar4 = uVar4 + 1;
|
|
|
|
} while (uVar4 < *(uint *)(param_1 + 0x110));
|
|
|
|
}
|
|
|
|
FUN_00510970();
|
|
|
|
*(undefined4 *)(param_1 + 0x110) = 0;
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005120c0 at 0x005120C0 (size: 193) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void __thiscall FUN_005120c0(int param_1,float param_2,float param_3,undefined4 param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
int iVar2;
|
|
|
|
int iVar3;
|
|
|
|
|
|
|
|
if (_DAT_007c78bc <= (float)(double)CONCAT44(param_4,param_3)) {
|
|
|
|
iVar3 = FUN_005df0f5(0x38);
|
|
|
|
if (iVar3 == 0) {
|
|
|
|
iVar3 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar3 = FUN_0051c580(1,DAT_008eee70,DAT_008eee74,param_3,param_4,0,param_2,0);
|
|
|
|
}
|
|
|
|
iVar1 = *(int *)(param_1 + 0x104);
|
|
|
|
for (iVar2 = iVar1; iVar2 != 0; iVar2 = *(int *)(iVar2 + 0x24)) {
|
|
|
|
}
|
|
|
|
if (iVar1 != 0) {
|
|
|
|
*(int *)(iVar1 + 0x20) = iVar3;
|
|
|
|
}
|
|
|
|
*(undefined4 *)(iVar3 + 0x24) = *(undefined4 *)(param_1 + 0x104);
|
|
|
|
*(int *)(param_1 + 0x104) = iVar3;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
param_3 = param_2;
|
|
|
|
if (param_2 < *(float *)(param_1 + 0xb8)) {
|
|
|
|
param_3 = *(float *)(param_1 + 0xb8);
|
|
|
|
}
|
|
|
|
*(float *)(param_1 + 0xb4) = param_3;
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
FUN_00518e70(param_3);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00512190 at 0x00512190 (size: 109) ---
|
|
|
|
|
|
void __thiscall FUN_00512190(int param_1,float param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
ushort uVar1;
|
|
|
|
undefined4 local_4;
|
|
|
|
|
|
|
|
local_4 = param_2;
|
|
|
|
if (param_2 < *(float *)(param_1 + 0xb8)) {
|
|
|
|
local_4 = *(float *)(param_1 + 0xb8);
|
|
|
|
}
|
|
|
|
*(float *)(param_1 + 0xb4) = local_4;
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
FUN_00518e70(local_4);
|
|
|
|
}
|
|
|
|
for (uVar1 = 0;
|
|
|
|
(*(ushort **)(param_1 + 0x44) != (ushort *)0x0 && (uVar1 < **(ushort **)(param_1 + 0x44)));
|
|
|
|
uVar1 = uVar1 + 1) {
|
|
|
|
FUN_00512190(param_2);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00512200 at 0x00512200 (size: 161) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void __thiscall
|
|
|
|
FUN_00512200(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,undefined4 param_5
|
|
|
|
,undefined4 param_6)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
int iVar2;
|
|
|
|
int iVar3;
|
|
|
|
|
|
|
|
if (_DAT_007c78bc <= (float)(double)CONCAT44(param_6,param_5)) {
|
|
|
|
iVar3 = FUN_005df0f5(0x38);
|
|
|
|
if (iVar3 == 0) {
|
|
|
|
iVar3 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar3 = FUN_0051c580(2,DAT_008eee70,DAT_008eee74,param_5,param_6,param_3,param_4,param_2);
|
|
|
|
}
|
|
|
|
iVar1 = *(int *)(param_1 + 0x104);
|
|
|
|
for (iVar2 = iVar1; iVar2 != 0; iVar2 = *(int *)(iVar2 + 0x24)) {
|
|
|
|
}
|
|
|
|
if (iVar1 != 0) {
|
|
|
|
*(int *)(iVar1 + 0x20) = iVar3;
|
|
|
|
}
|
|
|
|
*(undefined4 *)(iVar3 + 0x24) = *(undefined4 *)(param_1 + 0x104);
|
|
|
|
*(int *)(param_1 + 0x104) = iVar3;
|
|
|
|
}
|
|
|
|
else if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
FUN_00518eb0(param_2,param_4);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005122b0 at 0x005122B0 (size: 161) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void __thiscall
|
|
|
|
FUN_005122b0(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,undefined4 param_5
|
|
|
|
,undefined4 param_6)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
int iVar2;
|
|
|
|
int iVar3;
|
|
|
|
|
|
|
|
if (_DAT_007c78bc <= (float)(double)CONCAT44(param_6,param_5)) {
|
|
|
|
iVar3 = FUN_005df0f5(0x38);
|
|
|
|
if (iVar3 == 0) {
|
|
|
|
iVar3 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar3 = FUN_0051c580(5,DAT_008eee70,DAT_008eee74,param_5,param_6,param_3,param_4,param_2);
|
|
|
|
}
|
|
|
|
iVar1 = *(int *)(param_1 + 0x104);
|
|
|
|
for (iVar2 = iVar1; iVar2 != 0; iVar2 = *(int *)(iVar2 + 0x24)) {
|
|
|
|
}
|
|
|
|
if (iVar1 != 0) {
|
|
|
|
*(int *)(iVar1 + 0x20) = iVar3;
|
|
|
|
}
|
|
|
|
*(undefined4 *)(iVar3 + 0x24) = *(undefined4 *)(param_1 + 0x104);
|
|
|
|
*(int *)(param_1 + 0x104) = iVar3;
|
|
|
|
}
|
|
|
|
else if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
FUN_00518f20(param_2,param_4);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00512360 at 0x00512360 (size: 149) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void __thiscall
|
|
|
|
FUN_00512360(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,undefined4 param_5
|
|
|
|
)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
int iVar2;
|
|
|
|
int iVar3;
|
|
|
|
|
|
|
|
if (_DAT_007c78bc <= (float)(double)CONCAT44(param_5,param_4)) {
|
|
|
|
iVar3 = FUN_005df0f5(0x38);
|
|
|
|
if (iVar3 == 0) {
|
|
|
|
iVar3 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar3 = FUN_0051c580(3,DAT_008eee70,DAT_008eee74,param_4,param_5,param_2,param_3,0);
|
|
|
|
}
|
|
|
|
iVar1 = *(int *)(param_1 + 0x104);
|
|
|
|
for (iVar2 = iVar1; iVar2 != 0; iVar2 = *(int *)(iVar2 + 0x24)) {
|
|
|
|
}
|
|
|
|
if (iVar1 != 0) {
|
|
|
|
*(int *)(iVar1 + 0x20) = iVar3;
|
|
|
|
}
|
|
|
|
*(undefined4 *)(iVar3 + 0x24) = *(undefined4 *)(param_1 + 0x104);
|
|
|
|
*(int *)(param_1 + 0x104) = iVar3;
|
|
|
|
}
|
|
|
|
else if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
FUN_00518ee0(param_3);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00512400 at 0x00512400 (size: 161) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void __thiscall
|
|
|
|
FUN_00512400(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,undefined4 param_5
|
|
|
|
,undefined4 param_6)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
int iVar2;
|
|
|
|
int iVar3;
|
|
|
|
|
|
|
|
if (_DAT_007c78bc <= (float)(double)CONCAT44(param_6,param_5)) {
|
|
|
|
iVar3 = FUN_005df0f5(0x38);
|
|
|
|
if (iVar3 == 0) {
|
|
|
|
iVar3 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar3 = FUN_0051c580(6,DAT_008eee70,DAT_008eee74,param_5,param_6,param_3,param_4,param_2);
|
|
|
|
}
|
|
|
|
iVar1 = *(int *)(param_1 + 0x104);
|
|
|
|
for (iVar2 = iVar1; iVar2 != 0; iVar2 = *(int *)(iVar2 + 0x24)) {
|
|
|
|
}
|
|
|
|
if (iVar1 != 0) {
|
|
|
|
*(int *)(iVar1 + 0x20) = iVar3;
|
|
|
|
}
|
|
|
|
*(undefined4 *)(iVar3 + 0x24) = *(undefined4 *)(param_1 + 0x104);
|
|
|
|
*(int *)(param_1 + 0x104) = iVar3;
|
|
|
|
}
|
|
|
|
else if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
FUN_00518f90(param_2,param_4);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005124b0 at 0x005124B0 (size: 149) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void __thiscall
|
|
|
|
FUN_005124b0(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,undefined4 param_5
|
|
|
|
)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
int iVar2;
|
|
|
|
int iVar3;
|
|
|
|
|
|
|
|
if (_DAT_007c78bc <= (float)(double)CONCAT44(param_5,param_4)) {
|
|
|
|
iVar3 = FUN_005df0f5(0x38);
|
|
|
|
if (iVar3 == 0) {
|
|
|
|
iVar3 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar3 = FUN_0051c580(4,DAT_008eee70,DAT_008eee74,param_4,param_5,param_2,param_3,0);
|
|
|
|
}
|
|
|
|
iVar1 = *(int *)(param_1 + 0x104);
|
|
|
|
for (iVar2 = iVar1; iVar2 != 0; iVar2 = *(int *)(iVar2 + 0x24)) {
|
|
|
|
}
|
|
|
|
if (iVar1 != 0) {
|
|
|
|
*(int *)(iVar1 + 0x20) = iVar3;
|
|
|
|
}
|
|
|
|
*(undefined4 *)(iVar3 + 0x24) = *(undefined4 *)(param_1 + 0x104);
|
|
|
|
*(int *)(param_1 + 0x104) = iVar3;
|
|
|
|
}
|
|
|
|
else if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
FUN_00518f50(param_3);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00512550 at 0x00512550 (size: 15) ---
|
|
|
|
|
|
void __fastcall FUN_00512550(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
FUN_00518fc0();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00512560 at 0x00512560 (size: 17) ---
|
|
|
|
|
|
undefined4 __fastcall FUN_00512560(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 uVar1;
|
|
|
|
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
uVar1 = FUN_00519000();
|
|
|
|
return uVar1;
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00512580 at 0x00512580 (size: 13) ---
|
|
|
|
|
|
void __fastcall FUN_00512580(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
FUN_00519040();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00512590 at 0x00512590 (size: 40) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void __thiscall FUN_00512590(int param_1,undefined4 param_2,float param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
if (((float)_DAT_007938c0 <= param_3) && (*(int *)(param_1 + 0x90) != 0)) {
|
|
|
|
FUN_005117a0(param_2);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005125c0 at 0x005125C0 (size: 177) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void __thiscall FUN_005125c0(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
int iVar2;
|
|
|
|
int iVar3;
|
|
|
|
float10 fVar4;
|
|
|
|
|
|
|
|
if (_DAT_007c78bc <= (float)(double)CONCAT44(param_4,param_3)) {
|
|
|
|
fVar4 = (float10)FUN_0042c860(0,(float)(double)CONCAT44(param_4,param_3));
|
|
|
|
iVar3 = FUN_005df0f5(0x38);
|
|
|
|
if (iVar3 == 0) {
|
|
|
|
iVar3 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar3 = FUN_0051c580(7,DAT_008eee70,DAT_008eee74,(double)(float)fVar4,0,0x3f800000,param_2);
|
|
|
|
}
|
|
|
|
iVar1 = *(int *)(param_1 + 0x104);
|
|
|
|
for (iVar2 = iVar1; iVar2 != 0; iVar2 = *(int *)(iVar2 + 0x24)) {
|
|
|
|
}
|
|
|
|
if (iVar1 != 0) {
|
|
|
|
*(int *)(iVar1 + 0x20) = iVar3;
|
|
|
|
}
|
|
|
|
*(undefined4 *)(iVar3 + 0x24) = *(undefined4 *)(param_1 + 0x104);
|
|
|
|
*(int *)(param_1 + 0x104) = iVar3;
|
|
|
|
}
|
|
|
|
else if (*(int *)(param_1 + 0x90) != 0) {
|
|
|
|
FUN_005117a0(param_2);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00512680 at 0x00512680 (size: 50) ---
|
|
|
|
|
|
void __thiscall FUN_00512680(int param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 local_c;
|
|
|
|
undefined4 local_8;
|
|
|
|
undefined4 local_4;
|
|
|
|
|
|
|
|
*(undefined4 *)(param_1 + 0x114) = param_2;
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
local_8 = param_2;
|
|
|
|
local_c = param_2;
|
|
|
|
local_4 = param_2;
|
|
|
|
FUN_00519530(&local_c);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005126c0 at 0x005126C0 (size: 76) ---
|
|
|
|
|
|
void __fastcall FUN_005126c0(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
uint uVar1;
|
|
|
|
|
|
|
|
*(uint *)(param_1 + 0xac) = *(uint *)(param_1 + 0xac) & 0xfffffffe;
|
|
|
|
FUN_00511420();
|
|
|
|
uVar1 = *(uint *)(param_1 + 0xac);
|
|
|
|
*(uint *)(param_1 + 0xac) = uVar1 & 0xfffffff5;
|
|
|
|
if (((uVar1 & 2) != 0) && (*(int *)(param_1 + 0xc4) != 0)) {
|
|
|
|
FUN_00524f20();
|
|
|
|
}
|
|
|
|
FUN_00511420();
|
|
|
|
*(uint *)(param_1 + 0xac) = *(uint *)(param_1 + 0xac) & 0xfffffe0b;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00512710 at 0x00512710 (size: 126) ---
|
|
|
|
|
|
undefined4 __thiscall FUN_00512710(int param_1,int param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
|
|
|
|
if (param_2 == 0) {
|
|
|
|
*(uint *)(param_1 + 0xa8) = *(uint *)(param_1 + 0xa8) & 0xfffffffb;
|
|
|
|
if ((*(int *)(param_1 + 0x40) == 0) && (*(int *)(param_1 + 0x90) != 0)) {
|
|
|
|
iVar1 = FUN_00511510();
|
|
|
|
if (iVar1 != 0) {
|
|
|
|
*(uint *)(param_1 + 0xa8) = *(uint *)(param_1 + 0xa8) | 4;
|
|
|
|
*(uint *)(param_1 + 0xac) = *(uint *)(param_1 + 0xac) | 0x100;
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*(uint *)(param_1 + 0xa8) = *(uint *)(param_1 + 0xa8) | 4;
|
|
|
|
}
|
|
|
|
*(uint *)(param_1 + 0xac) = *(uint *)(param_1 + 0xac) & 0xfffffeff;
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00512790 at 0x00512790 (size: 187) ---
|
|
|
|
|
|
uint __thiscall FUN_00512790(int param_1,undefined4 param_2,int param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
uint uVar2;
|
|
|
|
uint uVar3;
|
|
|
|
uint uVar4;
|
|
|
|
undefined8 uVar5;
|
|
|
|
|
|
|
|
uVar3 = 0;
|
|
|
|
if ((*(uint *)(param_1 + 0xa8) & 0x400000) != 0) {
|
|
|
|
uVar3 = 0x200;
|
|
|
|
}
|
|
|
|
uVar4 = uVar3;
|
|
|
|
if (param_3 == 0) {
|
|
|
|
if ((*(uint *)(param_1 + 0xac) & 1) != 0) {
|
|
|
|
uVar5 = FUN_00510080(1);
|
|
|
|
uVar2 = (uint)((ulonglong)uVar5 >> 0x20) & 8;
|
|
|
|
if ((int)uVar5 == 0) {
|
|
|
|
FUN_0050f3b0(*(undefined4 *)(param_1 + 0x140),param_1 + 0x130,uVar2);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
FUN_0050f320(*(undefined4 *)(param_1 + 0x140),param_1 + 0x130,uVar2);
|
|
|
|
uVar4 = uVar3 | 1;
|
|
|
|
if ((*(byte *)(param_1 + 0xac) & 2) != 0) {
|
|
|
|
uVar4 = uVar3 | 3;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if ((*(byte *)(param_1 + 0xac) & 4) != 0) {
|
|
|
|
FUN_005109f0(param_1 + 0x144);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if ((*(int *)(param_1 + 0x10) != 0) && (iVar1 = FUN_00518bf0(), iVar1 != 0)) {
|
|
|
|
uVar4 = uVar4 | 0x10;
|
|
|
|
}
|
|
|
|
if ((*(byte *)(param_1 + 0xa8) & 0x40) != 0) {
|
|
|
|
uVar4 = uVar4 | 8;
|
|
|
|
}
|
|
|
|
return uVar4;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00512850 at 0x00512850 (size: 271) ---
|
|
|
|
|
|
undefined4
|
|
|
|
FUN_00512850(int param_1,undefined4 param_2,int *param_3,undefined4 param_4,undefined4 param_5)
|
|
|
|
|
|
|
|
{
|
|
|
|
uint *puVar1;
|
|
|
|
uint uVar2;
|
|
|
|
int iVar3;
|
|
|
|
int iVar4;
|
|
|
|
undefined4 uVar5;
|
|
|
|
undefined1 local_c [12];
|
|
|
|
|
|
|
|
puVar1 = (uint *)(param_1 + 4);
|
|
|
|
uVar2 = *(uint *)(param_1 + 4) & 0xffff;
|
|
|
|
if ((((uVar2 == 0) || (0x40 < uVar2)) && ((uVar2 < 0x100 || (0xfffd < uVar2)))) &&
|
|
|
|
(uVar2 != 0xffff)) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
uVar5 = 0;
|
|
|
|
*param_3 = 0;
|
|
|
|
if ((*puVar1 & 0xffff) < 0x100) {
|
|
|
|
FUN_005aac70(puVar1,param_1 + 0x3c);
|
|
|
|
if (*puVar1 != 0) {
|
|
|
|
iVar3 = FUN_0052b950(*puVar1);
|
|
|
|
*param_3 = iVar3;
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar3 = FUN_0052b950(*puVar1);
|
|
|
|
if (iVar3 != 0) {
|
|
|
|
FUN_004562a0(local_c,param_1,param_2);
|
|
|
|
iVar4 = FUN_0052e8b0(local_c,param_5);
|
|
|
|
if (iVar4 != 0) {
|
|
|
|
*puVar1 = *(uint *)(iVar4 + 0x28);
|
|
|
|
*param_3 = iVar4;
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
if (*(int *)(iVar3 + 0xe8) != 0) {
|
|
|
|
FUN_005054a0();
|
|
|
|
if (*puVar1 != 0) {
|
|
|
|
iVar3 = FUN_0052b950(*puVar1);
|
|
|
|
*param_3 = iVar3;
|
|
|
|
uVar5 = 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return uVar5;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00512960 at 0x00512960 (size: 163) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
undefined4 FUN_00512960(int param_1,int param_2,int param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
int unaff_EBP;
|
|
|
|
|
|
|
|
FUN_0050a930(param_1,0,param_2);
|
|
|
|
if ((*(byte *)(param_1 + 0x48) & 0x10) == 0) {
|
|
|
|
*(undefined4 *)(param_3 + 0x26c) = 0;
|
|
|
|
}
|
|
|
|
iVar1 = FUN_0050cde0();
|
|
|
|
if (iVar1 == 0) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
if ((*(byte *)(param_1 + 0x48) & 0x10) == 0) {
|
|
|
|
if (_DAT_007c7828 <= *(float *)(param_3 + 0xfc) - *(float *)(param_2 + 0x3c)) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
if (_DAT_007c7828 <= *(float *)(param_3 + 0x100) - *(float *)(param_2 + 0x40)) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
if (*(int *)(param_3 + 0xc4) != *(int *)(unaff_EBP + 0x28)) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
*(undefined4 *)(param_2 + 0x3c) = *(undefined4 *)(param_3 + 0xfc);
|
|
|
|
*(undefined4 *)(param_2 + 0x40) = *(undefined4 *)(param_3 + 0x100);
|
|
|
|
*(undefined4 *)(param_2 + 0x44) = *(undefined4 *)(param_3 + 0x104);
|
|
|
|
}
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00512a10 at 0x00512A10 (size: 95) ---
|
|
|
|
|
|
undefined4 __fastcall FUN_00512a10(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
ushort *puVar1;
|
|
|
|
ushort uVar2;
|
|
|
|
|
|
|
|
FUN_00511d00();
|
|
|
|
FUN_00508a80(param_1);
|
|
|
|
FUN_00511a20(0);
|
|
|
|
FUN_00509a40(*(undefined4 *)(param_1 + 8));
|
|
|
|
for (uVar2 = 0;
|
|
|
|
(puVar1 = *(ushort **)(param_1 + 0x44), puVar1 != (ushort *)0x0 && (uVar2 < *puVar1));
|
|
|
|
uVar2 = uVar2 + 1) {
|
|
|
|
FUN_00509a40(*(undefined4 *)(*(int *)(*(int *)(puVar1 + 2) + (uint)uVar2 * 4) + 8));
|
|
|
|
}
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00512a70 at 0x00512A70 (size: 152) ---
|
|
|
|
|
|
void __fastcall FUN_00512a70(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
ushort *puVar1;
|
|
|
|
undefined4 uVar2;
|
|
|
|
ushort uVar3;
|
|
|
|
|
|
|
|
uVar2 = DAT_008379ac;
|
|
|
|
*(undefined4 *)(param_1 + 0xd8) = DAT_008379a8;
|
|
|
|
*(undefined4 *)(param_1 + 0xdc) = uVar2;
|
|
|
|
FUN_00508a80(param_1);
|
|
|
|
FUN_00508f10(*(undefined4 *)(param_1 + 8));
|
|
|
|
for (uVar3 = 0;
|
|
|
|
(uVar2 = DAT_008379ac, puVar1 = *(ushort **)(param_1 + 0x44), puVar1 != (ushort *)0x0 &&
|
|
|
|
(uVar3 < *puVar1)); uVar3 = uVar3 + 1) {
|
|
|
|
FUN_00508f10(*(undefined4 *)(*(int *)(*(int *)(puVar1 + 2) + (uint)uVar3 * 4) + 8));
|
|
|
|
}
|
|
|
|
if ((*(byte *)(param_1 + 0xa8) & 1) == 0) {
|
|
|
|
if (-1 < (char)*(uint *)(param_1 + 0xac)) {
|
|
|
|
*(undefined4 *)(param_1 + 0xd8) = DAT_008379a8;
|
|
|
|
*(undefined4 *)(param_1 + 0xdc) = uVar2;
|
|
|
|
}
|
|
|
|
*(uint *)(param_1 + 0xac) = *(uint *)(param_1 + 0xac) | 0x80;
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00512b10 at 0x00512B10 (size: 115) ---
|
|
|
|
|
|
void __thiscall FUN_00512b10(int param_1,undefined4 param_2,undefined4 param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 uVar1;
|
|
|
|
|
|
|
|
if (*(int *)(param_1 + 0xc4) == 0) {
|
|
|
|
uVar1 = FUN_00524c50(param_1,*(undefined4 *)(param_1 + 300));
|
|
|
|
*(undefined4 *)(param_1 + 0xc4) = uVar1;
|
|
|
|
uVar1 = DAT_008379ac;
|
|
|
|
if ((*(byte *)(param_1 + 0xa8) & 1) == 0) {
|
|
|
|
if (-1 < (char)*(uint *)(param_1 + 0xac)) {
|
|
|
|
*(undefined4 *)(param_1 + 0xd8) = DAT_008379a8;
|
|
|
|
*(undefined4 *)(param_1 + 0xdc) = uVar1;
|
|
|
|
}
|
|
|
|
*(uint *)(param_1 + 0xac) = *(uint *)(param_1 + 0xac) | 0x80;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
FUN_00525040(param_2,param_3);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00512b90 at 0x00512B90 (size: 108) ---
|
|
|
|
|
|
void __fastcall FUN_00512b90(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 uVar1;
|
|
|
|
|
|
|
|
if (*(int *)(param_1 + 0xc4) == 0) {
|
|
|
|
uVar1 = FUN_00524c50(param_1,*(undefined4 *)(param_1 + 300));
|
|
|
|
*(undefined4 *)(param_1 + 0xc4) = uVar1;
|
|
|
|
FUN_00524dc0();
|
|
|
|
uVar1 = DAT_008379ac;
|
|
|
|
if ((*(byte *)(param_1 + 0xa8) & 1) == 0) {
|
|
|
|
if (-1 < (char)*(uint *)(param_1 + 0xac)) {
|
|
|
|
*(undefined4 *)(param_1 + 0xd8) = DAT_008379a8;
|
|
|
|
*(undefined4 *)(param_1 + 0xdc) = uVar1;
|
|
|
|
}
|
|
|
|
*(uint *)(param_1 + 0xac) = *(uint *)(param_1 + 0xac) | 0x80;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
FUN_00524ea0();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00512c00 at 0x00512C00 (size: 16) ---
|
|
|
|
|
|
undefined4 __fastcall FUN_00512c00(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_00510ce0();
|
|
|
|
return *(undefined4 *)(param_1 + 200);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00512c10 at 0x00512C10 (size: 141) ---
|
|
|
|
|
|
void __thiscall FUN_00512c10(int param_1,float *param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
float fVar1;
|
|
|
|
float fVar2;
|
|
|
|
float fVar3;
|
|
|
|
float fVar4;
|
|
|
|
float fVar5;
|
|
|
|
float fVar6;
|
|
|
|
float fVar7;
|
|
|
|
float fVar8;
|
|
|
|
float fVar9;
|
|
|
|
float fVar10;
|
|
|
|
float fVar11;
|
|
|
|
float fVar12;
|
|
|
|
|
|
|
|
fVar1 = *(float *)(param_1 + 0x70);
|
|
|
|
fVar2 = *(float *)(param_1 + 0xe4);
|
|
|
|
fVar3 = *(float *)(param_1 + 0x6c);
|
|
|
|
fVar4 = *(float *)(param_1 + 0xe0);
|
|
|
|
fVar5 = *(float *)(param_1 + 0x74);
|
|
|
|
fVar6 = *(float *)(param_1 + 0xe8);
|
|
|
|
fVar7 = *(float *)(param_1 + 0x7c);
|
|
|
|
fVar8 = *(float *)(param_1 + 0xe4);
|
|
|
|
fVar9 = *(float *)(param_1 + 0x78);
|
|
|
|
fVar10 = *(float *)(param_1 + 0xe0);
|
|
|
|
fVar11 = *(float *)(param_1 + 0x80);
|
|
|
|
fVar12 = *(float *)(param_1 + 0xe8);
|
|
|
|
*param_2 = *(float *)(param_1 + 0x68) * *(float *)(param_1 + 0xe8) +
|
|
|
|
*(float *)(param_1 + 0x60) * *(float *)(param_1 + 0xe0) +
|
|
|
|
*(float *)(param_1 + 100) * *(float *)(param_1 + 0xe4);
|
|
|
|
param_2[1] = fVar5 * fVar6 + fVar3 * fVar4 + fVar1 * fVar2;
|
|
|
|
param_2[2] = fVar11 * fVar12 + fVar9 * fVar10 + fVar7 * fVar8;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00512d10 at 0x00512D10 (size: 143) ---
|
|
|
|
|
|
int __thiscall FUN_00512d10(int param_1,int param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
int *piVar1;
|
|
|
|
uint uVar2;
|
|
|
|
int iVar3;
|
|
|
|
int iVar4;
|
|
|
|
uint uVar5;
|
|
|
|
int iVar6;
|
|
|
|
|
|
|
|
uVar2 = *(uint *)(param_2 + 8);
|
|
|
|
iVar6 = 0;
|
|
|
|
uVar5 = (uVar2 >> ((byte)*(undefined4 *)(param_1 + 8) & 0x1f) ^ uVar2) & *(uint *)(param_1 + 4);
|
|
|
|
piVar1 = (int *)(*(int *)(param_1 + 0xc) + uVar5 * 4);
|
|
|
|
iVar3 = *piVar1;
|
|
|
|
if (iVar3 == 0) {
|
|
|
|
*piVar1 = param_2;
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
iVar4 = iVar3;
|
|
|
|
if (*(uint *)(iVar3 + 8) != uVar2) {
|
|
|
|
do {
|
|
|
|
iVar6 = iVar4;
|
|
|
|
iVar4 = *(int *)(iVar6 + 4);
|
|
|
|
if (iVar4 == 0) {
|
|
|
|
*(int *)(param_2 + 4) = iVar3;
|
|
|
|
*(int *)(*(int *)(param_1 + 0xc) + uVar5 * 4) = param_2;
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
} while (*(int *)(iVar4 + 8) != *(int *)(param_2 + 8));
|
|
|
|
}
|
|
|
|
if (iVar4 != param_2) {
|
|
|
|
if (iVar6 == 0) {
|
|
|
|
*(undefined4 *)(param_2 + 4) = *(undefined4 *)(iVar4 + 4);
|
|
|
|
*(int *)(*(int *)(param_1 + 0xc) + uVar5 * 4) = param_2;
|
|
|
|
return iVar4;
|
|
|
|
}
|
|
|
|
*(int *)(iVar6 + 4) = param_2;
|
|
|
|
*(undefined4 *)(param_2 + 4) = *(undefined4 *)(iVar4 + 4);
|
|
|
|
}
|
|
|
|
return iVar4;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00512de0 at 0x00512DE0 (size: 266) ---
|
|
|
|
|
|
void __thiscall FUN_00512de0(int param_1,float *param_2,float *param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
float fVar1;
|
|
|
|
float fVar2;
|
|
|
|
float fVar3;
|
|
|
|
float fVar4;
|
|
|
|
float fVar5;
|
|
|
|
float fVar6;
|
|
|
|
float fVar7;
|
|
|
|
float fVar8;
|
|
|
|
float fVar9;
|
|
|
|
float fVar10;
|
|
|
|
float fVar11;
|
|
|
|
float fVar12;
|
|
|
|
float fVar13;
|
|
|
|
float fVar14;
|
|
|
|
|
|
|
|
fVar1 = param_2[0xb];
|
|
|
|
fVar2 = param_3[0xf];
|
|
|
|
fVar3 = param_2[5];
|
|
|
|
fVar4 = param_3[0xd];
|
|
|
|
fVar5 = param_2[8];
|
|
|
|
fVar6 = param_3[0xe];
|
|
|
|
fVar7 = param_2[0xe];
|
|
|
|
fVar8 = param_2[0xc];
|
|
|
|
fVar9 = param_3[0xf];
|
|
|
|
fVar10 = param_2[6];
|
|
|
|
fVar11 = param_3[0xd];
|
|
|
|
fVar12 = param_2[9];
|
|
|
|
fVar13 = param_3[0xe];
|
|
|
|
fVar14 = param_2[0xf];
|
|
|
|
*(float *)(param_1 + 0x34) =
|
|
|
|
param_2[7] * param_3[0xe] + param_2[4] * param_3[0xd] + param_2[10] * param_3[0xf] +
|
|
|
|
param_2[0xd];
|
|
|
|
*(float *)(param_1 + 0x38) = fVar5 * fVar6 + fVar3 * fVar4 + fVar1 * fVar2 + fVar7;
|
|
|
|
*(float *)(param_1 + 0x3c) = fVar12 * fVar13 + fVar10 * fVar11 + fVar8 * fVar9 + fVar14;
|
|
|
|
FUN_00535dc0(((*param_2 * *param_3 - param_3[1] * param_2[1]) - param_3[2] * param_2[2]) -
|
|
|
|
param_3[3] * param_2[3],
|
|
|
|
(*param_3 * param_2[1] + param_3[3] * param_2[2] + *param_2 * param_3[1]) -
|
|
|
|
param_3[2] * param_2[3],
|
|
|
|
param_2[2] * *param_3 +
|
|
|
|
param_2[3] * param_3[1] + (param_3[2] * *param_2 - param_3[3] * param_2[1]),
|
|
|
|
param_2[3] * *param_3 +
|
|
|
|
((param_3[3] * *param_2 + param_3[2] * param_2[1]) - param_2[2] * param_3[1]));
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00512ef0 at 0x00512EF0 (size: 520) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
undefined4 * __fastcall FUN_00512ef0(undefined4 *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
float fVar1;
|
|
|
|
undefined4 uVar2;
|
|
|
|
undefined4 uVar3;
|
|
|
|
undefined4 *puVar4;
|
|
|
|
undefined4 *puVar5;
|
|
|
|
|
|
|
|
param_1[1] = 0;
|
|
|
|
param_1[2] = 0;
|
|
|
|
*param_1 = &PTR_FUN_007c78ec;
|
|
|
|
param_1[3] = 0;
|
|
|
|
param_1[4] = 0;
|
|
|
|
param_1[5] = 0;
|
|
|
|
param_1[6] = 0;
|
|
|
|
param_1[7] = 0x3f800000;
|
|
|
|
param_1[10] = 0;
|
|
|
|
*(undefined1 *)(param_1 + 0xb) = 0;
|
|
|
|
param_1[0xc] = 0;
|
|
|
|
param_1[0xd] = 0;
|
|
|
|
param_1[0xe] = 0;
|
|
|
|
param_1[0xf] = 0;
|
|
|
|
param_1[0x10] = 0;
|
|
|
|
param_1[0x11] = 0;
|
|
|
|
param_1[8] = 0x7f7fffff;
|
|
|
|
param_1[9] = 0x7f7fffff;
|
|
|
|
param_1[0x12] = &PTR_LAB_00797910;
|
|
|
|
param_1[0x13] = 0;
|
|
|
|
param_1[0x14] = 0x3f800000;
|
|
|
|
param_1[0x15] = 0;
|
|
|
|
param_1[0x16] = 0;
|
|
|
|
param_1[0x17] = 0;
|
|
|
|
param_1[0x21] = 0;
|
|
|
|
param_1[0x22] = 0;
|
|
|
|
param_1[0x23] = 0;
|
|
|
|
FUN_00535b30();
|
|
|
|
param_1[0x24] = 0;
|
|
|
|
param_1[0x25] = 0;
|
|
|
|
puVar4 = (undefined4 *)thunk_FUN_005df0f5(100);
|
|
|
|
if (puVar4 == (undefined4 *)0x0) {
|
|
|
|
puVar5 = (undefined4 *)0x0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
puVar5 = puVar4 + 1;
|
|
|
|
*puVar4 = 4;
|
|
|
|
FUN_00401000(puVar5,0x18,4,&LAB_005109d0);
|
|
|
|
}
|
|
|
|
fVar1 = _DAT_007938b0;
|
|
|
|
param_1[0x26] = puVar5;
|
|
|
|
fVar1 = fVar1 / _DAT_007c7824;
|
|
|
|
param_1[0x28] = 0;
|
|
|
|
param_1[0x29] = 4;
|
|
|
|
param_1[0x27] = 4;
|
|
|
|
uVar3 = DAT_007c7820;
|
|
|
|
param_1[0x2c] = DAT_007c781c;
|
|
|
|
uVar2 = DAT_007c7818;
|
|
|
|
param_1[0x2b] = 0;
|
|
|
|
param_1[0x2d] = uVar3;
|
|
|
|
param_1[0x2f] = uVar2;
|
|
|
|
param_1[0x31] = 0;
|
|
|
|
param_1[0x32] = 0;
|
|
|
|
param_1[0x33] = 0;
|
|
|
|
param_1[0x34] = 0;
|
|
|
|
param_1[0x2a] = &DAT_00400c08;
|
|
|
|
param_1[0x2e] = uVar3;
|
|
|
|
param_1[0x30] = fVar1;
|
|
|
|
param_1[0x38] = 0;
|
|
|
|
param_1[0x39] = 0;
|
|
|
|
param_1[0x3a] = 0;
|
|
|
|
param_1[0x3b] = 0;
|
|
|
|
param_1[0x3c] = 0;
|
|
|
|
param_1[0x3d] = 0;
|
|
|
|
param_1[0x3e] = 0;
|
|
|
|
param_1[0x3f] = 0;
|
|
|
|
param_1[0x40] = 0;
|
|
|
|
param_1[0x41] = 0;
|
|
|
|
param_1[0x42] = 0;
|
|
|
|
param_1[0x43] = 0;
|
|
|
|
param_1[0x44] = 0;
|
|
|
|
param_1[0x46] = 0;
|
|
|
|
param_1[0x47] = 0;
|
|
|
|
param_1[0x48] = 0;
|
|
|
|
param_1[0x49] = 0;
|
|
|
|
param_1[0x4a] = 0;
|
|
|
|
param_1[0x4b] = 0;
|
|
|
|
param_1[0x50] = 0;
|
|
|
|
param_1[0x45] = 0x3f800000;
|
|
|
|
param_1[0x51] = 0;
|
|
|
|
param_1[0x52] = 0;
|
|
|
|
param_1[0x53] = 0;
|
|
|
|
param_1[0x54] = 0;
|
|
|
|
param_1[0x55] = 0;
|
|
|
|
param_1[0x56] = 0;
|
|
|
|
param_1[0x57] = 0;
|
|
|
|
param_1[0x58] = 0;
|
|
|
|
param_1[0x59] = 0;
|
|
|
|
param_1[0x5a] = 0;
|
|
|
|
param_1[0x5b] = 0;
|
|
|
|
param_1[0x5c] = 0;
|
|
|
|
*(undefined2 *)(param_1 + 0x5d) = 0;
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00513100 at 0x00513100 (size: 61) ---
|
|
|
|
|
|
undefined4 * FUN_00513100(undefined4 param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
undefined4 *extraout_ECX;
|
|
|
|
|
|
|
|
iVar1 = FUN_005df0f5(0x178);
|
|
|
|
if (iVar1 != 0) {
|
|
|
|
iVar1 = FUN_00512ef0();
|
|
|
|
if (iVar1 != 0) {
|
|
|
|
iVar1 = FUN_00510a50(param_1,param_2);
|
|
|
|
if (iVar1 != 0) {
|
|
|
|
return extraout_ECX;
|
|
|
|
}
|
|
|
|
(**(code **)*extraout_ECX)(1);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return (undefined4 *)0x0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00513140 at 0x00513140 (size: 98) ---
|
|
|
|
|
|
undefined4 * FUN_00513140(undefined4 param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
undefined4 *puVar2;
|
|
|
|
|
|
|
|
iVar1 = FUN_005df0f5(0x178);
|
|
|
|
if (iVar1 != 0) {
|
|
|
|
puVar2 = (undefined4 *)FUN_00512ef0();
|
|
|
|
if (puVar2 != (undefined4 *)0x0) {
|
|
|
|
puVar2[2] = 0;
|
|
|
|
puVar2[0x2a] = puVar2[0x2a] | 0x1001;
|
|
|
|
iVar1 = FUN_0051a020(puVar2,param_1,param_2);
|
|
|
|
puVar2[4] = iVar1;
|
|
|
|
if (iVar1 != 0) {
|
|
|
|
return puVar2;
|
|
|
|
}
|
|
|
|
(**(code **)*puVar2)(1);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return (undefined4 *)0x0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005131b0 at 0x005131B0 (size: 198) ---
|
|
|
|
|
|
undefined4 __thiscall FUN_005131b0(int param_1,uint param_2,undefined4 param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
bool bVar1;
|
|
|
|
int iVar2;
|
|
|
|
|
|
|
|
if (param_2 == DAT_00844d94) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
bVar1 = false;
|
|
|
|
iVar2 = FUN_0041c280(param_2);
|
|
|
|
if (iVar2 == 6) {
|
|
|
|
iVar2 = FUN_0051a170(param_1,param_2);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
if (iVar2 != 7) {
|
|
|
|
if ((param_2 & 0xff000000) != 0) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
bVar1 = true;
|
|
|
|
iVar2 = FUN_0050f400(param_2 | 0x2000000,param_3);
|
|
|
|
if (iVar2 == 0) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
goto LAB_0051322c;
|
|
|
|
}
|
|
|
|
iVar2 = FUN_0051a0d0(param_1,param_2,param_3);
|
|
|
|
}
|
|
|
|
*(int *)(param_1 + 0x10) = iVar2;
|
|
|
|
if (iVar2 == 0) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
LAB_0051322c:
|
|
|
|
FUN_00510040();
|
|
|
|
if (bVar1) {
|
|
|
|
*(uint *)(param_1 + 0xa8) = *(uint *)(param_1 + 0xa8) | 4;
|
|
|
|
*(uint *)(param_1 + 0xac) = *(uint *)(param_1 + 0xac) & 0xfffffeff;
|
|
|
|
FUN_00510430(0x3e800000);
|
|
|
|
*(uint *)(param_1 + 0xa8) = *(uint *)(param_1 + 0xa8) | 0x10;
|
|
|
|
}
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00513280 at 0x00513280 (size: 93) ---
|
|
|
|
|
|
int __thiscall FUN_00513280(int param_1,int param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
void *pvVar1;
|
|
|
|
int iVar2;
|
|
|
|
|
|
|
|
iVar2 = 0;
|
|
|
|
if ((*(int *)(param_1 + 0x10) != 0) && (iVar2 = FUN_00519210(param_2), iVar2 != 0)) {
|
|
|
|
pvVar1 = *(void **)(param_1 + 0xc4);
|
|
|
|
if (pvVar1 != (void *)0x0) {
|
|
|
|
FUN_00524ff0();
|
|
|
|
operator_delete(pvVar1);
|
|
|
|
}
|
|
|
|
*(undefined4 *)(param_1 + 0xc4) = 0;
|
|
|
|
if (param_2 != DAT_00844d94) {
|
|
|
|
FUN_00510d40(1);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return iVar2;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005132e0 at 0x005132E0 (size: 128) ---
|
|
|
|
|
|
void FUN_005132e0(float param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
float10 fVar2;
|
|
|
|
undefined4 local_4;
|
|
|
|
|
|
|
|
FUN_00510ce0();
|
|
|
|
if (DAT_00844d64 != 0) {
|
|
|
|
iVar1 = FUN_00508890(param_1);
|
|
|
|
if (iVar1 != 0) {
|
|
|
|
if (*(int *)(iVar1 + 0x40) != 0) {
|
|
|
|
iVar1 = *(int *)(iVar1 + 0x40);
|
|
|
|
}
|
|
|
|
if (*(int *)(iVar1 + 0x10) == 0) {
|
|
|
|
param_1 = 0.0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
fVar2 = (float10)FUN_00518be0();
|
|
|
|
param_1 = (float)fVar2;
|
|
|
|
}
|
|
|
|
if (*(int *)(iVar1 + 0x10) == 0) {
|
|
|
|
local_4 = 0.0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
fVar2 = (float10)FUN_00518bd0();
|
|
|
|
local_4 = (float)fVar2;
|
|
|
|
}
|
|
|
|
FUN_00555e50(*(undefined4 *)(iVar1 + 8),local_4,param_1);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00513360 at 0x00513360 (size: 222) ---
|
|
|
|
|
|
void __thiscall FUN_00513360(int param_1,float param_2,undefined4 param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 uVar1;
|
|
|
|
undefined4 uVar2;
|
|
|
|
int iVar3;
|
|
|
|
float10 fVar4;
|
|
|
|
float local_4;
|
|
|
|
|
|
|
|
uVar1 = param_2;
|
|
|
|
if (*(int *)(param_1 + 0xc4) == 0) {
|
|
|
|
uVar2 = FUN_00524c50(param_1,*(undefined4 *)(param_1 + 300));
|
|
|
|
*(undefined4 *)(param_1 + 0xc4) = uVar2;
|
|
|
|
FUN_00524dc0();
|
|
|
|
uVar2 = DAT_008379ac;
|
|
|
|
if ((*(byte *)(param_1 + 0xa8) & 1) == 0) {
|
|
|
|
if (-1 < (char)*(uint *)(param_1 + 0xac)) {
|
|
|
|
*(undefined4 *)(param_1 + 0xd8) = DAT_008379a8;
|
|
|
|
*(undefined4 *)(param_1 + 0xdc) = uVar2;
|
|
|
|
}
|
|
|
|
*(uint *)(param_1 + 0xac) = *(uint *)(param_1 + 0xac) | 0x80;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if ((DAT_00844d64 != 0) && (iVar3 = FUN_00508890(param_2), iVar3 != 0)) {
|
|
|
|
if (*(int *)(iVar3 + 0x10) == 0) {
|
|
|
|
param_2 = 0.0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
fVar4 = (float10)FUN_00518be0();
|
|
|
|
param_2 = (float)fVar4;
|
|
|
|
}
|
|
|
|
if (*(int *)(iVar3 + 0x10) == 0) {
|
|
|
|
local_4 = 0.0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
fVar4 = (float10)FUN_00518bd0();
|
|
|
|
local_4 = (float)fVar4;
|
|
|
|
}
|
|
|
|
if (*(int *)(iVar3 + 0x40) != 0) {
|
|
|
|
iVar3 = *(int *)(iVar3 + 0x40);
|
|
|
|
}
|
|
|
|
FUN_00510db0(uVar1,*(undefined4 *)(iVar3 + 8),local_4,param_2,param_3);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00513440 at 0x00513440 (size: 61) ---
|
|
|
|
|
|
void FUN_00513440(undefined4 param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
|
|
|
|
if ((DAT_00844d64 != 0) && (iVar1 = FUN_00508890(param_1), iVar1 != 0)) {
|
|
|
|
if (*(int *)(iVar1 + 0x40) != 0) {
|
|
|
|
iVar1 = *(int *)(iVar1 + 0x40);
|
|
|
|
}
|
|
|
|
FUN_00510ec0(param_1,*(undefined4 *)(iVar1 + 8),param_2);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00513480 at 0x00513480 (size: 227) ---
|
|
|
|
|
|
void __thiscall FUN_00513480(int param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 uVar1;
|
|
|
|
undefined4 local_64 [4];
|
|
|
|
undefined **local_54;
|
|
|
|
undefined4 local_50;
|
|
|
|
undefined4 local_4c;
|
|
|
|
undefined4 local_48;
|
|
|
|
undefined4 local_44;
|
|
|
|
undefined4 local_40;
|
|
|
|
undefined4 local_18;
|
|
|
|
undefined4 local_14;
|
|
|
|
undefined4 local_10;
|
|
|
|
undefined4 local_4;
|
|
|
|
|
|
|
|
if (*(int *)(param_1 + 0xc4) == 0) {
|
|
|
|
uVar1 = FUN_00524c50(param_1,*(undefined4 *)(param_1 + 300));
|
|
|
|
*(undefined4 *)(param_1 + 0xc4) = uVar1;
|
|
|
|
FUN_00524dc0();
|
|
|
|
uVar1 = DAT_008379ac;
|
|
|
|
if ((*(byte *)(param_1 + 0xa8) & 1) == 0) {
|
|
|
|
if (-1 < (char)*(uint *)(param_1 + 0xac)) {
|
|
|
|
*(undefined4 *)(param_1 + 0xd8) = DAT_008379a8;
|
|
|
|
*(undefined4 *)(param_1 + 0xdc) = uVar1;
|
|
|
|
}
|
|
|
|
*(uint *)(param_1 + 0xac) = *(uint *)(param_1 + 0xac) | 0x80;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
local_64[0] = 0;
|
|
|
|
local_54 = &PTR_LAB_00797910;
|
|
|
|
local_50 = 0;
|
|
|
|
local_4c = 0x3f800000;
|
|
|
|
local_48 = 0;
|
|
|
|
local_44 = 0;
|
|
|
|
local_40 = 0;
|
|
|
|
local_18 = 0;
|
|
|
|
local_14 = 0;
|
|
|
|
local_10 = 0;
|
|
|
|
FUN_00535b30();
|
|
|
|
local_64[0] = 9;
|
|
|
|
local_4 = param_2;
|
|
|
|
FUN_00524cd0(local_64);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00513570 at 0x00513570 (size: 333) ---
|
|
|
|
|
|
void __thiscall FUN_00513570(int param_1,undefined4 *param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 *puVar1;
|
|
|
|
int iVar2;
|
|
|
|
undefined4 uVar3;
|
|
|
|
undefined4 local_2c;
|
|
|
|
undefined4 local_28;
|
|
|
|
float local_24;
|
|
|
|
float local_20;
|
|
|
|
undefined1 local_1c [4];
|
|
|
|
undefined4 local_18;
|
|
|
|
uint local_14;
|
|
|
|
int local_10;
|
|
|
|
|
|
|
|
puVar1 = param_2;
|
|
|
|
if (*(int *)(*(int *)(param_1 + 0x90) + 0x28) != DAT_00844d94) {
|
|
|
|
if (*(int *)(param_1 + 0x120) == 0) {
|
|
|
|
iVar2 = FUN_005df0f5(0x10);
|
|
|
|
if (iVar2 == 0) {
|
|
|
|
uVar3 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar3 = FUN_0051add0();
|
|
|
|
}
|
|
|
|
*(undefined4 *)(param_1 + 0x120) = uVar3;
|
|
|
|
}
|
|
|
|
local_24 = (float)param_2[6] * *(float *)(param_1 + 0x114);
|
|
|
|
local_2c = 0;
|
|
|
|
local_28 = 0;
|
|
|
|
local_20 = DAT_00796344;
|
|
|
|
if (*(float **)(param_1 + 0x120) != (float *)0x0) {
|
|
|
|
local_20 = **(float **)(param_1 + 0x120);
|
|
|
|
}
|
|
|
|
local_20 = *(float *)(param_1 + 0x114) * (float)param_2[5] + local_20;
|
|
|
|
FUN_0050b3f0();
|
|
|
|
local_18 = 1;
|
|
|
|
FUN_0052c5a0(param_1 + 0x48,&local_2c,local_1c,0);
|
|
|
|
iVar2 = FUN_0051aea0(*param_2);
|
|
|
|
param_2 = (undefined4 *)0x0;
|
|
|
|
if (local_14 != 0) {
|
|
|
|
do {
|
|
|
|
if (*(int *)(local_10 + 4 + (int)param_2 * 8) != 0) {
|
|
|
|
FUN_0052c420(*(undefined4 *)(param_1 + 8),param_1 + 0x48,*(undefined4 *)(param_1 + 0x114),
|
|
|
|
puVar1,iVar2);
|
|
|
|
}
|
|
|
|
param_2 = (undefined4 *)((int)param_2 + 1);
|
|
|
|
} while (param_2 < local_14);
|
|
|
|
}
|
|
|
|
if (*(int *)(iVar2 + 0xc) == 0) {
|
|
|
|
FUN_00511010(iVar2);
|
|
|
|
}
|
|
|
|
if (local_10 != 0) {
|
|
|
|
operator_delete__((void *)(local_10 + -4));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005136c0 at 0x005136C0 (size: 99) ---
|
|
|
|
|
|
void __thiscall FUN_005136c0(int param_1,int param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
if (param_2 == 0) {
|
|
|
|
if (*(int *)(param_1 + 0xc4) != 0) {
|
|
|
|
FUN_00511100(¶m_2);
|
|
|
|
FUN_00525390();
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 200) != 0) {
|
|
|
|
FUN_00511100(¶m_2);
|
|
|
|
FUN_00555ff0();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00513730 at 0x00513730 (size: 283) ---
|
|
|
|
|
|
void __thiscall FUN_00513730(int param_1,float param_2,undefined4 param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
float fVar1;
|
|
|
|
undefined4 local_40;
|
|
|
|
undefined4 local_3c;
|
|
|
|
undefined4 local_38;
|
|
|
|
undefined4 local_34;
|
|
|
|
float local_c;
|
|
|
|
float local_8;
|
|
|
|
float local_4;
|
|
|
|
|
|
|
|
local_40 = 0x3f800000;
|
|
|
|
local_3c = 0;
|
|
|
|
local_38 = 0;
|
|
|
|
local_34 = 0;
|
|
|
|
local_c = 0.0;
|
|
|
|
local_8 = 0.0;
|
|
|
|
local_4 = 0.0;
|
|
|
|
FUN_00535b30();
|
|
|
|
if ((*(uint *)(param_1 + 0xa8) & 0x4000) == 0) {
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
FUN_005188e0(param_2,&local_40);
|
|
|
|
}
|
|
|
|
if ((*(byte *)(param_1 + 0xac) & 2) == 0) {
|
|
|
|
local_c = local_c * DAT_00796344;
|
|
|
|
local_8 = local_8 * DAT_00796344;
|
|
|
|
local_4 = local_4 * DAT_00796344;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
fVar1 = *(float *)(param_1 + 0x114);
|
|
|
|
local_c = local_c * fVar1;
|
|
|
|
local_8 = local_8 * fVar1;
|
|
|
|
local_4 = local_4 * fVar1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 200) != 0) {
|
|
|
|
FUN_00555db0(&local_40,(double)param_2);
|
|
|
|
}
|
|
|
|
FUN_00512de0(param_1 + 0x50,&local_40);
|
|
|
|
if ((*(uint *)(param_1 + 0xa8) & 0x4000) == 0) {
|
|
|
|
FUN_005111d0(param_2,param_3);
|
|
|
|
}
|
|
|
|
FUN_00512020();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00513850 at 0x00513850 (size: 100) ---
|
|
|
|
|
|
void __thiscall FUN_00513850(int param_1,int param_2,uint param_3,undefined4 param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined1 local_40 [64];
|
|
|
|
|
|
|
|
if (param_3 < *(uint *)(*(int *)(param_1 + 0x10) + 0x58)) {
|
|
|
|
param_1 = *(int *)(*(int *)(*(int *)(param_1 + 0x10) + 0x5c) + param_3 * 4) + 0x38;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
param_1 = param_1 + 0x50;
|
|
|
|
}
|
|
|
|
FUN_00512de0(param_1,param_4);
|
|
|
|
FUN_00514b90(local_40);
|
|
|
|
if (*(int *)(param_2 + 0x128) != 0) {
|
|
|
|
FUN_0051c330();
|
|
|
|
}
|
|
|
|
if (*(int *)(param_2 + 0x30) != 0) {
|
|
|
|
FUN_0051bfb0();
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005138c0 at 0x005138C0 (size: 265) ---
|
|
|
|
|
|
int __thiscall FUN_005138c0(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
uint uVar1;
|
|
|
|
int iVar2;
|
|
|
|
undefined4 uVar3;
|
|
|
|
int iVar4;
|
|
|
|
undefined4 uVar5;
|
|
|
|
undefined4 uVar6;
|
|
|
|
undefined4 unaff_ESI;
|
|
|
|
undefined4 unaff_EDI;
|
|
|
|
|
|
|
|
iVar2 = FUN_0050bc20();
|
|
|
|
if (iVar2 == 0) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
uVar3 = FUN_00512790(iVar2,param_4);
|
|
|
|
thunk_FUN_0050da00(param_1,uVar3);
|
|
|
|
if ((*(int *)(param_1 + 0x10) == 0) || (iVar4 = FUN_00518b90(), iVar4 == 0)) {
|
|
|
|
FUN_0050a920(1,&DAT_00844eec,0x3f800000);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar3 = *(undefined4 *)(param_1 + 0x114);
|
|
|
|
if (*(int *)(param_1 + 0x10) == 0) {
|
|
|
|
uVar5 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar5 = FUN_00518ba0();
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x10) == 0) {
|
|
|
|
FUN_0050a920(0,uVar5,uVar3);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar6 = FUN_00518b90();
|
|
|
|
FUN_0050a920(uVar6,uVar5,uVar3);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
FUN_0050a930(*(undefined4 *)(param_1 + 0x90),unaff_EDI,unaff_ESI);
|
|
|
|
uVar1 = *(uint *)(param_1 + 0xac);
|
|
|
|
if ((uVar1 & 0x40) == 0) {
|
|
|
|
if ((uVar1 & 0x20) == 0) {
|
|
|
|
if ((uVar1 & 0x10) != 0) {
|
|
|
|
*(undefined4 *)(iVar2 + 0x2f0) = 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*(undefined4 *)(iVar2 + 0x2f0) = 2;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*(undefined4 *)(iVar2 + 0x2f0) = 3;
|
|
|
|
}
|
|
|
|
iVar4 = FUN_0050cde0();
|
|
|
|
FUN_0050a890(iVar2);
|
|
|
|
if (iVar4 == 0) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
return iVar2;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005139d0 at 0x005139D0 (size: 225) ---
|
|
|
|
|
|
undefined4 __fastcall FUN_005139d0(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
undefined4 uVar2;
|
|
|
|
int iVar3;
|
|
|
|
undefined4 uVar4;
|
|
|
|
undefined *puVar5;
|
|
|
|
|
|
|
|
if ((*(byte *)(param_1 + 0xa8) & 1) != 0) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
iVar1 = FUN_0050bc20();
|
|
|
|
if (iVar1 == 0) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
uVar2 = FUN_00512790(iVar1,0);
|
|
|
|
thunk_FUN_0050da00(param_1,uVar2);
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
iVar3 = FUN_00518b90();
|
|
|
|
if (iVar3 != 0) {
|
|
|
|
puVar5 = *(undefined **)(param_1 + 0x114);
|
|
|
|
if (*(int *)(param_1 + 0x10) == 0) {
|
|
|
|
uVar2 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar2 = FUN_00518ba0();
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x10) == 0) {
|
|
|
|
FUN_0050a920(0,uVar2,puVar5);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar4 = FUN_00518b90();
|
|
|
|
FUN_0050a920(uVar4,uVar2,puVar5);
|
|
|
|
}
|
|
|
|
goto LAB_00513a77;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
puVar5 = &DAT_00844eec;
|
|
|
|
FUN_0050a920(1,&DAT_00844eec,0x3f800000);
|
|
|
|
LAB_00513a77:
|
|
|
|
FUN_0050a930(*(undefined4 *)(param_1 + 0x90),param_1 + 0x48,param_1 + 0x48);
|
|
|
|
uVar2 = FUN_0050b4d0(puVar5);
|
|
|
|
FUN_0050a890(iVar1);
|
|
|
|
return uVar2;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00513ac0 at 0x00513AC0 (size: 147) ---
|
|
|
|
|
|
undefined4 __thiscall FUN_00513ac0(int param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 uVar1;
|
|
|
|
undefined4 local_10;
|
|
|
|
undefined4 local_c;
|
|
|
|
undefined4 local_8;
|
|
|
|
|
|
|
|
uVar1 = 0;
|
|
|
|
if (*(int *)(param_1 + 0x160) == 0) {
|
|
|
|
if (((*(byte *)(param_1 + 0xa8) & 8) != 0) && (*(int *)(param_1 + 300) != 0)) {
|
|
|
|
FUN_0051c550();
|
|
|
|
local_10 = *(undefined4 *)(param_1 + 0xe0);
|
|
|
|
local_c = *(undefined4 *)(param_1 + 0xe4);
|
|
|
|
local_8 = *(undefined4 *)(param_1 + 0xe8);
|
|
|
|
FUN_0051c450(param_2);
|
|
|
|
(**(code **)(**(int **)(param_1 + 300) + 0x4c))(&local_10);
|
|
|
|
uVar1 = 1;
|
|
|
|
}
|
|
|
|
*(undefined4 *)(param_1 + 0x160) = 1;
|
|
|
|
if ((*(uint *)(param_1 + 0xa8) & 0x40) != 0) {
|
|
|
|
*(uint *)(param_1 + 0xa8) = *(uint *)(param_1 + 0xa8) & 0xfffffcbf;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return uVar1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00513b60 at 0x00513B60 (size: 504) ---
|
|
|
|
|
|
undefined4 __thiscall FUN_00513b60(int param_1,int param_2,undefined4 param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 uVar1;
|
|
|
|
uint uVar2;
|
|
|
|
float10 fVar3;
|
|
|
|
int iVar4;
|
|
|
|
undefined4 local_34;
|
|
|
|
undefined4 local_30;
|
|
|
|
undefined4 local_2c;
|
|
|
|
float local_28;
|
|
|
|
float local_24;
|
|
|
|
float local_20;
|
|
|
|
undefined1 local_1c [28];
|
|
|
|
|
|
|
|
uVar1 = 0;
|
|
|
|
if ((*(uint *)(param_2 + 0xa8) & 0x200000) != 0) {
|
|
|
|
uVar1 = FUN_00513ac0(param_3);
|
|
|
|
return uVar1;
|
|
|
|
}
|
|
|
|
local_28 = *(float *)(param_1 + 0xe0) - *(float *)(param_2 + 0xe0);
|
|
|
|
uVar2 = *(uint *)(param_1 + 0xa8) & 0x40;
|
|
|
|
local_24 = *(float *)(param_1 + 0xe4) - *(float *)(param_2 + 0xe4);
|
|
|
|
local_20 = *(float *)(param_1 + 0xe8) - *(float *)(param_2 + 0xe8);
|
|
|
|
if ((*(uint *)(param_2 + 0xa8) & 0x10) == 0) {
|
|
|
|
if (((*(uint *)(param_1 + 0xa8) & 8) != 0) && (*(int *)(param_1 + 300) != 0)) {
|
|
|
|
if (uVar2 == 0) {
|
|
|
|
FUN_0051c560();
|
|
|
|
FUN_005100d0(local_1c,param_2,&local_28,param_3,*(uint *)(param_2 + 0xa8) & 0x40,
|
|
|
|
*(uint *)(param_2 + 0xac) & 1);
|
|
|
|
(**(code **)(**(int **)(param_1 + 300) + 0x50))(local_1c);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar4 = param_1 + 0x48;
|
|
|
|
fVar3 = (float10)FUN_0050f4b0(iVar4);
|
|
|
|
uVar1 = FUN_005aa630((float)fVar3,iVar4);
|
|
|
|
FUN_0051c430();
|
|
|
|
local_30 = *(undefined4 *)(param_2 + 8);
|
|
|
|
local_34 = 0xffffffff;
|
|
|
|
local_2c = uVar1;
|
|
|
|
(**(code **)(**(int **)(param_1 + 300) + 0x54))(&local_34);
|
|
|
|
}
|
|
|
|
uVar1 = 1;
|
|
|
|
}
|
|
|
|
if (uVar2 != 0) {
|
|
|
|
*(uint *)(param_1 + 0xa8) = *(uint *)(param_1 + 0xa8) & 0xfffffcbf;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if ((((*(uint *)(param_2 + 0xa8) & 8) != 0) && ((*(byte *)(param_1 + 0xa8) & 0x10) == 0)) &&
|
|
|
|
(*(int *)(param_2 + 300) != 0)) {
|
|
|
|
if ((*(uint *)(param_2 + 0xa8) & 0x40) != 0) {
|
|
|
|
iVar4 = param_2 + 0x48;
|
|
|
|
fVar3 = (float10)FUN_0050f4b0(iVar4);
|
|
|
|
uVar1 = FUN_005aa630((float)fVar3,iVar4);
|
|
|
|
FUN_0051c430();
|
|
|
|
local_30 = *(undefined4 *)(param_1 + 8);
|
|
|
|
local_34 = 0xffffffff;
|
|
|
|
local_2c = uVar1;
|
|
|
|
(**(code **)(**(int **)(param_2 + 300) + 0x54))(&local_34);
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
FUN_0051c560();
|
|
|
|
FUN_005100d0(local_1c,param_1,&local_28,*(uint *)(param_2 + 0xac) & 1,param_3,uVar2);
|
|
|
|
(**(code **)(**(int **)(param_2 + 300) + 0x50))(local_1c);
|
|
|
|
uVar1 = 1;
|
|
|
|
}
|
|
|
|
return uVar1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00513d60 at 0x00513D60 (size: 67) ---
|
|
|
|
|
|
undefined4 __thiscall FUN_00513d60(int param_1,undefined4 param_2,undefined4 param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 uVar1;
|
|
|
|
|
|
|
|
if (*(int *)(param_1 + 0x90) == 0) {
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
uVar1 = 0;
|
|
|
|
if (*(int *)(param_1 + 0x34) != 0) {
|
|
|
|
FUN_00522990(¶m_3,param_2,param_3);
|
|
|
|
uVar1 = FUN_005117a0(param_3);
|
|
|
|
}
|
|
|
|
return uVar1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00513db0 at 0x00513DB0 (size: 67) ---
|
|
|
|
|
|
undefined4 __fastcall FUN_00513db0(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 uVar1;
|
|
|
|
int local_4;
|
|
|
|
|
|
|
|
if (*(int *)(param_1 + 0x90) == 0) {
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
uVar1 = 0;
|
|
|
|
if (*(int *)(param_1 + 0x34) != 0) {
|
|
|
|
local_4 = param_1;
|
|
|
|
FUN_00522990(&local_4,*(undefined4 *)(param_1 + 0x38),*(undefined4 *)(param_1 + 0x3c));
|
|
|
|
uVar1 = FUN_005117a0(local_4);
|
|
|
|
}
|
|
|
|
return uVar1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00513e00 at 0x00513E00 (size: 130) ---
|
|
|
|
|
|
undefined4 __thiscall FUN_00513e00(int param_1,int param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
ushort *puVar1;
|
|
|
|
int iVar2;
|
|
|
|
undefined4 uVar3;
|
|
|
|
ushort uVar4;
|
|
|
|
|
|
|
|
puVar1 = *(ushort **)(param_1 + 0x44);
|
|
|
|
if (puVar1 != (ushort *)0x0) {
|
|
|
|
for (uVar4 = 0; uVar4 < *puVar1; uVar4 = uVar4 + 1) {
|
|
|
|
if ((*(int *)((uint)uVar4 * 4 + *(int *)(puVar1 + 10)) == param_2) &&
|
|
|
|
(*(int *)((uint)uVar4 * 4 + *(int *)(puVar1 + 2)) != 0)) {
|
|
|
|
iVar2 = *(int *)(*(int *)(puVar1 + 2) + (uint)uVar4 * 4);
|
|
|
|
if (*(int *)(iVar2 + 0x90) == 0) {
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
if (*(int *)(iVar2 + 0x34) == 0) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
FUN_00522990(¶m_2,*(undefined4 *)(iVar2 + 0x38),*(undefined4 *)(iVar2 + 0x3c));
|
|
|
|
uVar3 = FUN_005117a0(param_2);
|
|
|
|
return uVar3;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00513e90 at 0x00513E90 (size: 86) ---
|
|
|
|
|
|
void __thiscall FUN_00513e90(int param_1,int param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
if (*(int *)(param_1 + 0x90) != 0) {
|
|
|
|
FUN_00511a20(1);
|
|
|
|
}
|
|
|
|
if (param_2 != 0) {
|
|
|
|
FUN_005119a0(param_2);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
*(undefined4 *)(param_1 + 0x4c) = 0;
|
|
|
|
if (((*(uint *)(param_1 + 0xa8) & 0x1000) == 0) && (*(int *)(param_1 + 0x10) != 0)) {
|
|
|
|
FUN_00518900(0);
|
|
|
|
}
|
|
|
|
*(undefined4 *)(param_1 + 0x90) = 0;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00513ef0 at 0x00513EF0 (size: 113) ---
|
|
|
|
|
|
void __thiscall FUN_00513ef0(int param_1,int param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
if (*(int *)(param_1 + 0x90) != 0) {
|
|
|
|
FUN_00511a20(1);
|
|
|
|
}
|
|
|
|
*(undefined4 *)(param_1 + 0x4c) = 0;
|
|
|
|
if (((*(uint *)(param_1 + 0xa8) & 0x1000) == 0) && (*(int *)(param_1 + 0x10) != 0)) {
|
|
|
|
FUN_00518900(0);
|
|
|
|
}
|
|
|
|
*(undefined4 *)(param_1 + 0x90) = 0;
|
|
|
|
if (param_2 != 0) {
|
|
|
|
FUN_0052bee0(*(undefined4 *)(param_1 + 0x98));
|
|
|
|
*(undefined4 *)(param_1 + 0x94) = 0;
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
FUN_00518930(param_2);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00513f70 at 0x00513F70 (size: 101) ---
|
|
|
|
|
|
void __fastcall FUN_00513f70(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 uVar1;
|
|
|
|
|
|
|
|
if (*(int *)(param_1 + 0x40) != 0) {
|
|
|
|
if (*(int *)(*(int *)(param_1 + 0x40) + 0x44) != 0) {
|
|
|
|
FUN_0051bac0(param_1);
|
|
|
|
}
|
|
|
|
if (((*(uint *)(*(int *)(param_1 + 0x40) + 0xa8) & 0x4000) != 0) &&
|
|
|
|
(*(uint *)(param_1 + 0xa8) = *(uint *)(param_1 + 0xa8) & 0xffffffdf,
|
|
|
|
*(int *)(param_1 + 0x10) != 0)) {
|
|
|
|
FUN_00518e30(0);
|
|
|
|
}
|
|
|
|
*(undefined4 *)(param_1 + 0x40) = 0;
|
|
|
|
uVar1 = DAT_008379ac;
|
|
|
|
*(undefined4 *)(param_1 + 0xd8) = DAT_008379a8;
|
|
|
|
*(undefined4 *)(param_1 + 0xdc) = uVar1;
|
|
|
|
FUN_005126c0();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00513fe0 at 0x00513FE0 (size: 212) ---
|
|
|
|
|
|
void __fastcall FUN_00513fe0(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
short *psVar1;
|
|
|
|
int iVar2;
|
|
|
|
uint uVar3;
|
|
|
|
undefined4 uVar4;
|
|
|
|
|
|
|
|
while ((psVar1 = *(short **)(param_1 + 0x44), psVar1 != (short *)0x0 && (*psVar1 != 0))) {
|
|
|
|
iVar2 = **(int **)(psVar1 + 2);
|
|
|
|
if (*(int *)(iVar2 + 0x40) != 0) {
|
|
|
|
if (*(int *)(*(int *)(iVar2 + 0x40) + 0x44) != 0) {
|
|
|
|
FUN_0051bac0(iVar2);
|
|
|
|
}
|
|
|
|
if (((*(uint *)(*(int *)(iVar2 + 0x40) + 0xa8) & 0x4000) != 0) &&
|
|
|
|
(*(uint *)(iVar2 + 0xa8) = *(uint *)(iVar2 + 0xa8) & 0xffffffdf,
|
|
|
|
*(int *)(iVar2 + 0x10) != 0)) {
|
|
|
|
FUN_00518e30(0);
|
|
|
|
}
|
|
|
|
*(undefined4 *)(iVar2 + 0x40) = 0;
|
|
|
|
uVar4 = DAT_008379a8;
|
|
|
|
*(undefined4 *)(iVar2 + 0xdc) = DAT_008379ac;
|
|
|
|
*(undefined4 *)(iVar2 + 0xd8) = uVar4;
|
|
|
|
*(uint *)(iVar2 + 0xac) = *(uint *)(iVar2 + 0xac) & 0xfffffffe;
|
|
|
|
FUN_00511420();
|
|
|
|
uVar3 = *(uint *)(iVar2 + 0xac);
|
|
|
|
*(uint *)(iVar2 + 0xac) = uVar3 & 0xfffffff5;
|
|
|
|
if (((uVar3 & 2) != 0) && (*(int *)(iVar2 + 0xc4) != 0)) {
|
|
|
|
FUN_00524f20();
|
|
|
|
}
|
|
|
|
FUN_00511420();
|
|
|
|
*(uint *)(iVar2 + 0xac) = *(uint *)(iVar2 + 0xac) & 0xfffffe0b;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005140c0 at 0x005140C0 (size: 179) ---
|
|
|
|
|
|
void __thiscall FUN_005140c0(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
switch(param_2) {
|
|
|
|
case 0:
|
|
|
|
FUN_00512680(param_3);
|
|
|
|
return;
|
|
|
|
case 1:
|
|
|
|
FUN_00510430(param_3);
|
|
|
|
return;
|
|
|
|
case 2:
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
FUN_00518eb0(param_4,param_3);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
case 3:
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
FUN_00518ee0(param_3);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
case 4:
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
FUN_00518f50(param_3);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
case 5:
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
FUN_00518f20(param_4,param_3);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
case 6:
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
FUN_00518f90(param_4,param_3);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
case 7:
|
|
|
|
FUN_00512590(param_4,param_3);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005141a0 at 0x005141A0 (size: 196) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void __thiscall FUN_005141a0(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
int iVar2;
|
|
|
|
int iVar3;
|
|
|
|
undefined4 local_c;
|
|
|
|
undefined4 local_8;
|
|
|
|
undefined4 local_4;
|
|
|
|
|
|
|
|
if (_DAT_007c78bc <= (float)(double)CONCAT44(param_4,param_3)) {
|
|
|
|
iVar3 = FUN_005df0f5(0x38);
|
|
|
|
if (iVar3 == 0) {
|
|
|
|
iVar3 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar3 = FUN_0051c580(0,DAT_008eee70,DAT_008eee74,param_3,param_4,
|
|
|
|
*(undefined4 *)(param_1 + 0x114),param_2,0);
|
|
|
|
}
|
|
|
|
iVar1 = *(int *)(param_1 + 0x104);
|
|
|
|
for (iVar2 = iVar1; iVar2 != 0; iVar2 = *(int *)(iVar2 + 0x24)) {
|
|
|
|
}
|
|
|
|
if (iVar1 != 0) {
|
|
|
|
*(int *)(iVar1 + 0x20) = iVar3;
|
|
|
|
}
|
|
|
|
*(undefined4 *)(iVar3 + 0x24) = *(undefined4 *)(param_1 + 0x104);
|
|
|
|
*(int *)(param_1 + 0x104) = iVar3;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*(undefined4 *)(param_1 + 0x114) = param_2;
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
local_8 = param_2;
|
|
|
|
local_c = param_2;
|
|
|
|
local_4 = param_2;
|
|
|
|
FUN_00519530(&local_c);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00514270 at 0x00514270 (size: 122) ---
|
|
|
|
|
|
void __thiscall FUN_00514270(int param_1,int param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
int *piVar1;
|
|
|
|
undefined4 *puVar2;
|
|
|
|
int *piVar3;
|
|
|
|
|
|
|
|
if (*(int *)(param_1 + 0xc) == 0) {
|
|
|
|
puVar2 = (undefined4 *)FUN_005df0f5(8);
|
|
|
|
if (puVar2 == (undefined4 *)0x0) {
|
|
|
|
puVar2 = (undefined4 *)0x0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*puVar2 = 0;
|
|
|
|
puVar2[1] = 0;
|
|
|
|
}
|
|
|
|
*(undefined4 **)(param_1 + 0xc) = puVar2;
|
|
|
|
}
|
|
|
|
InterlockedIncrement((LONG *)(param_2 + 4));
|
|
|
|
piVar1 = *(int **)(param_1 + 0xc);
|
|
|
|
piVar3 = (int *)FUN_005df0f5(8);
|
|
|
|
if (piVar3 == (int *)0x0) {
|
|
|
|
piVar3 = (int *)0x0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*piVar3 = param_2;
|
|
|
|
piVar3[1] = 0;
|
|
|
|
}
|
|
|
|
if (piVar1[1] == 0) {
|
|
|
|
*piVar1 = (int)piVar3;
|
|
|
|
piVar1[1] = (int)piVar3;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
*(int **)(piVar1[1] + 4) = piVar3;
|
|
|
|
piVar1[1] = *(int *)(piVar1[1] + 4);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005142f0 at 0x005142F0 (size: 61) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_005142f0(undefined4 *param_1,int param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 uVar1;
|
|
|
|
|
|
|
|
*param_1 = &PTR_FUN_007c7450;
|
|
|
|
param_1[5] = 0;
|
|
|
|
uVar1 = thunk_FUN_005df0f5(param_2 * 4);
|
|
|
|
param_1[3] = uVar1;
|
|
|
|
FUN_004f7fe0(param_2);
|
|
|
|
*param_1 = &PTR_FUN_007c78f0;
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00514330 at 0x00514330 (size: 144) ---
|
|
|
|
|
|
undefined4 FUN_00514330(undefined4 *param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 uVar1;
|
|
|
|
undefined4 uVar2;
|
|
|
|
undefined4 uVar3;
|
|
|
|
undefined4 uVar4;
|
|
|
|
undefined4 *puVar5;
|
|
|
|
|
|
|
|
puVar5 = (undefined4 *)FUN_005df0f5(0x20);
|
|
|
|
if (puVar5 == (undefined4 *)0x0) {
|
|
|
|
puVar5 = (undefined4 *)0x0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar1 = *param_1;
|
|
|
|
uVar2 = param_1[1];
|
|
|
|
uVar3 = param_1[2];
|
|
|
|
uVar4 = param_1[3];
|
|
|
|
puVar5[2] = param_2;
|
|
|
|
puVar5[4] = uVar1;
|
|
|
|
puVar5[5] = uVar2;
|
|
|
|
puVar5[6] = uVar3;
|
|
|
|
puVar5[7] = uVar4;
|
|
|
|
puVar5[1] = 0;
|
|
|
|
*puVar5 = &PTR_LAB_007c78e0;
|
|
|
|
}
|
|
|
|
puVar5 = (undefined4 *)FUN_00512d10(puVar5);
|
|
|
|
if (puVar5 == (undefined4 *)0x0) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
*param_1 = puVar5[4];
|
|
|
|
param_1[1] = puVar5[5];
|
|
|
|
param_1[2] = puVar5[6];
|
|
|
|
param_1[3] = puVar5[7];
|
|
|
|
(**(code **)*puVar5)(1);
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005143c0 at 0x005143C0 (size: 65) ---
|
|
|
|
|
|
int * __thiscall FUN_005143c0(int *param_1,int param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
|
|
|
|
*param_1 = param_2;
|
|
|
|
param_1[3] = 0;
|
|
|
|
param_1[1] = 0;
|
|
|
|
if (param_2 == 0) {
|
|
|
|
param_1[4] = 1;
|
|
|
|
param_1[2] = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
param_1[4] = 0;
|
|
|
|
iVar1 = **(int **)(param_2 + 0xc);
|
|
|
|
param_1[2] = iVar1;
|
|
|
|
if (iVar1 == 0) {
|
|
|
|
FUN_004d8d00();
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00514410 at 0x00514410 (size: 94) ---
|
|
|
|
|
|
undefined4 __thiscall FUN_00514410(int param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
|
|
|
|
if (*(int *)(param_1 + 0x10) == 0) {
|
|
|
|
iVar1 = FUN_005131b0(param_2,1);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar1 = FUN_00519e60(param_2,1);
|
|
|
|
}
|
|
|
|
if (iVar1 == 0) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
FUN_00519f00(0x65);
|
|
|
|
}
|
|
|
|
if (((*(uint *)(param_1 + 0xa8) & 0x1000) == 0) && (*(int *)(param_1 + 0x10) != 0)) {
|
|
|
|
FUN_00519e40(param_1 + 0x50);
|
|
|
|
}
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00514470 at 0x00514470 (size: 95) ---
|
|
|
|
|
|
undefined4 * FUN_00514470(undefined4 param_1,undefined4 param_2,undefined4 param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
undefined4 *puVar2;
|
|
|
|
|
|
|
|
iVar1 = FUN_005df0f5(0x178);
|
|
|
|
if (iVar1 != 0) {
|
|
|
|
puVar2 = (undefined4 *)FUN_00512ef0();
|
|
|
|
if (puVar2 != (undefined4 *)0x0) {
|
|
|
|
iVar1 = FUN_00510a50(param_2,param_3);
|
|
|
|
if (iVar1 != 0) {
|
|
|
|
iVar1 = FUN_005131b0(param_1,1);
|
|
|
|
if (iVar1 != 0) {
|
|
|
|
iVar1 = FUN_00510ab0();
|
|
|
|
if (iVar1 != 0) {
|
|
|
|
return puVar2;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
(**(code **)*puVar2)(1);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return (undefined4 *)0x0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005144d0 at 0x005144D0 (size: 243) ---
|
|
|
|
|
|
void __thiscall FUN_005144d0(int param_1,int param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
undefined4 uVar2;
|
|
|
|
|
|
|
|
if (*(int *)(param_2 + 200) != 0) {
|
|
|
|
FUN_005117a0(*(int *)(param_2 + 200));
|
|
|
|
}
|
|
|
|
if (*(int *)(param_2 + 0xcc) != 0) {
|
|
|
|
FUN_00513280(*(int *)(param_2 + 0xcc));
|
|
|
|
}
|
|
|
|
iVar1 = *(int *)(param_2 + 0xd0);
|
|
|
|
if (iVar1 != 0) {
|
|
|
|
if (*(int **)(param_1 + 0x28) != (int *)0x0) {
|
|
|
|
(**(code **)(**(int **)(param_1 + 0x28) + 0x14))();
|
|
|
|
*(undefined4 *)(param_1 + 0x28) = 0;
|
|
|
|
}
|
|
|
|
if (iVar1 != 0) {
|
|
|
|
uVar2 = FUN_004220b0(iVar1,0x22);
|
|
|
|
uVar2 = FUN_00415430(uVar2);
|
|
|
|
*(undefined4 *)(param_1 + 0x28) = uVar2;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
iVar1 = *(int *)(param_2 + 0xd4);
|
|
|
|
if (iVar1 != 0) {
|
|
|
|
if (*(int **)(param_1 + 0x34) != (int *)0x0) {
|
|
|
|
(**(code **)(**(int **)(param_1 + 0x34) + 0x14))();
|
|
|
|
*(undefined4 *)(param_1 + 0x34) = 0;
|
|
|
|
}
|
|
|
|
if (iVar1 != 0) {
|
|
|
|
uVar2 = FUN_004220b0(iVar1,0x2c);
|
|
|
|
uVar2 = FUN_00415430(uVar2);
|
|
|
|
*(undefined4 *)(param_1 + 0x34) = uVar2;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if ((*(uint *)(param_1 + 0xa8) & 1) != 0) {
|
|
|
|
if (*(int *)(param_2 + 0xc4) != 0) {
|
|
|
|
*(uint *)(param_1 + 0xa8) = *(uint *)(param_1 + 0xa8) | 0x40000;
|
|
|
|
}
|
|
|
|
if (*(int *)(param_2 + 200) != 0) {
|
|
|
|
*(uint *)(param_1 + 0xa8) = *(uint *)(param_1 + 0xa8) | 0x80000;
|
|
|
|
}
|
|
|
|
if ((*(uint *)(param_1 + 0xa8) & 0xc0000) != 0) {
|
|
|
|
FUN_0050a5c0(param_1);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005145d0 at 0x005145D0 (size: 600) ---
|
|
|
|
|
|
void __fastcall FUN_005145d0(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
void *pvVar1;
|
|
|
|
int iVar2;
|
|
|
|
int *piVar3;
|
|
|
|
undefined4 *puVar4;
|
|
|
|
LONG LVar5;
|
|
|
|
undefined4 *puVar6;
|
|
|
|
|
|
|
|
pvVar1 = *(void **)(param_1 + 0xc4);
|
|
|
|
if (pvVar1 != (void *)0x0) {
|
|
|
|
FUN_00524ff0();
|
|
|
|
operator_delete(pvVar1);
|
|
|
|
}
|
|
|
|
pvVar1 = *(void **)(param_1 + 200);
|
|
|
|
*(undefined4 *)(param_1 + 0xc4) = 0;
|
|
|
|
if (pvVar1 != (void *)0x0) {
|
|
|
|
thunk_FUN_00555f60();
|
|
|
|
operator_delete(pvVar1);
|
|
|
|
}
|
|
|
|
pvVar1 = *(void **)(param_1 + 0x128);
|
|
|
|
*(undefined4 *)(param_1 + 200) = 0;
|
|
|
|
if (pvVar1 != (void *)0x0) {
|
|
|
|
FUN_0051c150();
|
|
|
|
operator_delete(pvVar1);
|
|
|
|
*(undefined4 *)(param_1 + 0x128) = 0;
|
|
|
|
}
|
|
|
|
pvVar1 = *(void **)(param_1 + 0x30);
|
|
|
|
if (pvVar1 != (void *)0x0) {
|
|
|
|
FUN_0051c040();
|
|
|
|
operator_delete(pvVar1);
|
|
|
|
*(undefined4 *)(param_1 + 0x30) = 0;
|
|
|
|
}
|
|
|
|
puVar4 = *(undefined4 **)(param_1 + 0x104);
|
|
|
|
while (puVar4 != (undefined4 *)0x0) {
|
|
|
|
puVar6 = (undefined4 *)puVar4[9];
|
|
|
|
*puVar4 = &PTR_LAB_007c78c0;
|
|
|
|
operator_delete(puVar4);
|
|
|
|
puVar4 = puVar6;
|
|
|
|
}
|
|
|
|
*(undefined4 *)(param_1 + 0x104) = 0;
|
|
|
|
if (((*(uint *)(param_1 + 0xa8) & 1) != 0) && ((*(uint *)(param_1 + 0xa8) & 0xc0000) != 0)) {
|
|
|
|
FUN_0050a230(param_1);
|
|
|
|
}
|
|
|
|
if (*(int **)(param_1 + 0x34) != (int *)0x0) {
|
|
|
|
(**(code **)(**(int **)(param_1 + 0x34) + 0x14))();
|
|
|
|
*(undefined4 *)(param_1 + 0x34) = 0;
|
|
|
|
}
|
|
|
|
if (*(int **)(param_1 + 0xc) != (int *)0x0) {
|
|
|
|
iVar2 = **(int **)(param_1 + 0xc);
|
|
|
|
while (iVar2 != 0) {
|
|
|
|
piVar3 = *(int **)(param_1 + 0xc);
|
|
|
|
puVar4 = (undefined4 *)*piVar3;
|
|
|
|
if (puVar4 == (undefined4 *)0x0) {
|
|
|
|
puVar6 = (undefined4 *)0x0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar2 = puVar4[1];
|
|
|
|
*piVar3 = iVar2;
|
|
|
|
if (iVar2 == 0) {
|
|
|
|
piVar3[1] = 0;
|
|
|
|
}
|
|
|
|
puVar6 = (undefined4 *)*puVar4;
|
|
|
|
operator_delete(puVar4);
|
|
|
|
}
|
|
|
|
LVar5 = InterlockedDecrement(puVar6 + 1);
|
|
|
|
if ((LVar5 == 0) && (puVar6 != (undefined4 *)0x0)) {
|
|
|
|
(**(code **)*puVar6)(1);
|
|
|
|
}
|
|
|
|
iVar2 = **(int **)(param_1 + 0xc);
|
|
|
|
}
|
|
|
|
pvVar1 = *(void **)(param_1 + 0xc);
|
|
|
|
if (pvVar1 != (void *)0x0) {
|
|
|
|
FUN_004c65a0();
|
|
|
|
operator_delete(pvVar1);
|
|
|
|
}
|
|
|
|
*(undefined4 *)(param_1 + 0xc) = 0;
|
|
|
|
}
|
|
|
|
if (*(int **)(param_1 + 0x28) != (int *)0x0) {
|
|
|
|
(**(code **)(**(int **)(param_1 + 0x28) + 0x14))();
|
|
|
|
*(undefined4 *)(param_1 + 0x28) = 0;
|
|
|
|
}
|
|
|
|
*(undefined4 *)(param_1 + 0x4c) = 0;
|
|
|
|
if (((*(uint *)(param_1 + 0xa8) & 0x1000) == 0) && (*(int *)(param_1 + 0x10) != 0)) {
|
|
|
|
FUN_00518900(0);
|
|
|
|
}
|
|
|
|
pvVar1 = *(void **)(param_1 + 0x10);
|
|
|
|
if (pvVar1 != (void *)0x0) {
|
|
|
|
FUN_0051a000();
|
|
|
|
operator_delete(pvVar1);
|
|
|
|
*(undefined4 *)(param_1 + 0x10) = 0;
|
|
|
|
}
|
|
|
|
*(undefined4 *)(param_1 + 0x164) = 0;
|
|
|
|
*(undefined4 *)(param_1 + 0x168) = 0;
|
|
|
|
*(undefined4 *)(param_1 + 0x16c) = 0;
|
|
|
|
*(undefined4 *)(param_1 + 0x170) = 0;
|
|
|
|
*(undefined2 *)(param_1 + 0x174) = 0;
|
|
|
|
*(undefined4 *)(param_1 + 300) = 0;
|
|
|
|
if (*(undefined4 **)(param_1 + 0x15c) != (undefined4 *)0x0) {
|
|
|
|
(**(code **)**(undefined4 **)(param_1 + 0x15c))(1);
|
|
|
|
*(undefined4 *)(param_1 + 0x15c) = 0;
|
|
|
|
}
|
|
|
|
pvVar1 = *(void **)(param_1 + 0x11c);
|
|
|
|
if (pvVar1 != (void *)0x0) {
|
|
|
|
FUN_0051a9d0();
|
|
|
|
operator_delete(pvVar1);
|
|
|
|
*(undefined4 *)(param_1 + 0x11c) = 0;
|
|
|
|
}
|
|
|
|
pvVar1 = *(void **)(param_1 + 0x120);
|
|
|
|
if (pvVar1 != (void *)0x0) {
|
|
|
|
FUN_0051ae10();
|
|
|
|
operator_delete(pvVar1);
|
|
|
|
*(undefined4 *)(param_1 + 0x120) = 0;
|
|
|
|
}
|
|
|
|
pvVar1 = *(void **)(param_1 + 0x124);
|
|
|
|
if (pvVar1 != (void *)0x0) {
|
|
|
|
FUN_0051b700();
|
|
|
|
operator_delete(pvVar1);
|
|
|
|
*(undefined4 *)(param_1 + 0x124) = 0;
|
|
|
|
}
|
|
|
|
pvVar1 = *(void **)(param_1 + 0x44);
|
|
|
|
if (pvVar1 != (void *)0x0) {
|
|
|
|
FUN_0051bd60();
|
|
|
|
operator_delete(pvVar1);
|
|
|
|
*(undefined4 *)(param_1 + 0x44) = 0;
|
|
|
|
}
|
|
|
|
*(undefined4 *)(param_1 + 0xac) = 0;
|
|
|
|
*(undefined **)(param_1 + 0xa8) = &DAT_00400c08;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00514830 at 0x00514830 (size: 105) ---
|
|
|
|
|
|
void __fastcall FUN_00514830(undefined4 *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 *puVar1;
|
|
|
|
|
|
|
|
*param_1 = &PTR_FUN_007c78ec;
|
|
|
|
FUN_005145d0();
|
|
|
|
operator_delete__((void *)param_1[0x42]);
|
|
|
|
puVar1 = (undefined4 *)param_1[0x26];
|
|
|
|
if (puVar1 != (undefined4 *)0x0) {
|
|
|
|
if (puVar1[-1] == 0) {
|
|
|
|
operator_delete__(puVar1 + -1);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
(**(code **)*puVar1)(3);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
param_1[0x26] = 0;
|
|
|
|
param_1[0x12] = &PTR_FUN_0079385c;
|
|
|
|
*param_1 = &PTR_LAB_007c78e0;
|
|
|
|
param_1[1] = 0;
|
|
|
|
param_1[2] = 0;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005148a0 at 0x005148A0 (size: 80) ---
|
|
|
|
|
|
void __fastcall FUN_005148a0(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
ushort *puVar1;
|
|
|
|
uint uVar2;
|
|
|
|
ushort uVar3;
|
|
|
|
|
|
|
|
if (((*(int *)(param_1 + 0x10) != 0) &&
|
|
|
|
(puVar1 = *(ushort **)(param_1 + 0x44), puVar1 != (ushort *)0x0)) && (uVar3 = 0, *puVar1 != 0)
|
|
|
|
) {
|
|
|
|
do {
|
|
|
|
uVar2 = (uint)uVar3;
|
|
|
|
FUN_00513850(*(undefined4 *)(*(int *)(puVar1 + 2) + uVar2 * 4),
|
|
|
|
*(undefined4 *)(*(int *)(puVar1 + 10) + uVar2 * 4),
|
|
|
|
uVar2 * 0x40 + *(int *)(puVar1 + 6));
|
|
|
|
puVar1 = *(ushort **)(param_1 + 0x44);
|
|
|
|
uVar3 = uVar3 + 1;
|
|
|
|
} while (uVar3 < *puVar1);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005148f0 at 0x005148F0 (size: 281) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void __fastcall FUN_005148f0(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 uVar1;
|
|
|
|
float10 fVar2;
|
|
|
|
|
|
|
|
uVar1 = DAT_008379ac;
|
|
|
|
if (*(int *)(param_1 + 0x90) != 0) {
|
|
|
|
DAT_008eee70 = DAT_008379a8;
|
|
|
|
DAT_008eee74 = DAT_008379ac;
|
|
|
|
fVar2 = (float10)(double)CONCAT44(DAT_008379ac,DAT_008379a8) -
|
|
|
|
(float10)*(double *)(param_1 + 0xd8);
|
|
|
|
if (fVar2 < (float10)_DAT_007c78bc == (fVar2 == (float10)_DAT_007c78bc)) {
|
|
|
|
if ((float10)_DAT_00844da0 <= fVar2) {
|
|
|
|
if (fVar2 <= (float10)_DAT_007c7840) {
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
if ((*(uint *)(param_1 + 0xa8) & 0x40000) != 0) {
|
|
|
|
FUN_005188e0((float)fVar2,0);
|
|
|
|
FUN_005364e0(param_1 + 0xf8);
|
|
|
|
FUN_00510140();
|
|
|
|
FUN_005148a0();
|
|
|
|
}
|
|
|
|
if (((*(uint *)(param_1 + 0xa8) & 0x80000) != 0) && (*(int *)(param_1 + 0x30) != 0)) {
|
|
|
|
FUN_0051bfb0();
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x128) != 0) {
|
|
|
|
FUN_0051c330();
|
|
|
|
}
|
|
|
|
FUN_00512020();
|
|
|
|
}
|
|
|
|
uVar1 = DAT_008379ac;
|
|
|
|
*(undefined4 *)(param_1 + 0xd8) = DAT_008379a8;
|
|
|
|
*(undefined4 *)(param_1 + 0xdc) = uVar1;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
*(undefined4 *)(param_1 + 0xd8) = DAT_008379a8;
|
|
|
|
*(undefined4 *)(param_1 + 0xdc) = uVar1;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*(undefined4 *)(param_1 + 0xd8) = DAT_008379a8;
|
|
|
|
*(undefined4 *)(param_1 + 0xdc) = uVar1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00514a10 at 0x00514A10 (size: 190) ---
|
|
|
|
|
|
undefined4 __thiscall FUN_00514a10(int param_1,int param_2,undefined4 param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 uVar1;
|
|
|
|
int iVar2;
|
|
|
|
undefined4 local_10;
|
|
|
|
undefined4 local_c;
|
|
|
|
uint local_8;
|
|
|
|
|
|
|
|
if ((*(byte *)(param_2 + 0xa8) & 1) != 0) {
|
|
|
|
uVar1 = FUN_00513ac0(param_3);
|
|
|
|
return uVar1;
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x15c) == 0) {
|
|
|
|
iVar2 = FUN_005df0f5(0x18);
|
|
|
|
if (iVar2 == 0) {
|
|
|
|
uVar1 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar1 = FUN_005142f0(4);
|
|
|
|
}
|
|
|
|
*(undefined4 *)(param_1 + 0x15c) = uVar1;
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x15c) != 0) {
|
|
|
|
local_10 = DAT_008379a8;
|
|
|
|
local_8 = *(uint *)(param_2 + 0xa8) & 4;
|
|
|
|
local_c = DAT_008379ac;
|
|
|
|
iVar2 = FUN_00514330(&local_10,*(undefined4 *)(param_2 + 8));
|
|
|
|
if (iVar2 != 0) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
uVar1 = FUN_00513b60(param_2,param_3);
|
|
|
|
return uVar1;
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00514ad0 at 0x00514AD0 (size: 183) ---
|
|
|
|
|
|
void __fastcall FUN_00514ad0(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
int iVar2;
|
|
|
|
int iVar3;
|
|
|
|
uint uVar4;
|
|
|
|
undefined4 local_18;
|
|
|
|
|
|
|
|
iVar1 = *(int *)(param_1 + 0x15c);
|
|
|
|
uVar4 = 0;
|
|
|
|
if (iVar1 == 0) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
iVar3 = **(int **)(iVar1 + 0xc);
|
|
|
|
if (iVar3 == 0) {
|
|
|
|
FUN_004d8d00();
|
|
|
|
uVar4 = 0;
|
|
|
|
}
|
|
|
|
do {
|
|
|
|
do {
|
|
|
|
if (iVar3 != 0) {
|
|
|
|
local_18 = *(undefined4 *)(iVar3 + 8);
|
|
|
|
}
|
|
|
|
if ((DAT_00844d64 != 0) && (iVar2 = FUN_00508890(local_18), iVar2 != 0)) {
|
|
|
|
FUN_00513b60(iVar2,*(uint *)(param_1 + 0xac) & 1);
|
|
|
|
}
|
|
|
|
} while ((iVar3 != 0) && (iVar3 = *(int *)(iVar3 + 4), iVar3 != 0));
|
|
|
|
do {
|
|
|
|
uVar4 = uVar4 + 1;
|
|
|
|
if (*(uint *)(iVar1 + 0x10) <= uVar4) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
iVar3 = *(int *)(*(int *)(iVar1 + 0xc) + uVar4 * 4);
|
|
|
|
} while (iVar3 == 0);
|
|
|
|
} while( true );
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00514b90 at 0x00514B90 (size: 133) ---
|
|
|
|
|
|
void __thiscall FUN_00514b90(int param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
undefined4 local_40;
|
|
|
|
undefined4 local_3c;
|
|
|
|
undefined4 local_38;
|
|
|
|
undefined4 local_34;
|
|
|
|
|
|
|
|
FUN_00425f10(param_2);
|
|
|
|
iVar1 = FUN_00535c10();
|
|
|
|
if (iVar1 == 0) {
|
|
|
|
iVar1 = FUN_00535d20();
|
|
|
|
if (iVar1 != 0) {
|
|
|
|
local_40 = 0;
|
|
|
|
local_3c = 0;
|
|
|
|
local_38 = 0;
|
|
|
|
local_34 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
FUN_00425f10(&local_40);
|
|
|
|
if (((*(uint *)(param_1 + 0xa8) & 0x1000) == 0) && (*(int *)(param_1 + 0x10) != 0)) {
|
|
|
|
FUN_00519e40(param_1 + 0x50);
|
|
|
|
}
|
|
|
|
FUN_005148a0();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00514c20 at 0x00514C20 (size: 55) ---
|
|
|
|
|
|
void __thiscall FUN_00514c20(int param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_00425f10(param_2);
|
|
|
|
if (((*(uint *)(param_1 + 0xa8) & 0x1000) == 0) && (*(int *)(param_1 + 0x10) != 0)) {
|
|
|
|
FUN_00519e40(param_1 + 0x50);
|
|
|
|
}
|
|
|
|
FUN_005148a0();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00514c60 at 0x00514C60 (size: 52) ---
|
|
|
|
|
|
void __thiscall FUN_00514c60(int param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined1 local_40 [64];
|
|
|
|
|
|
|
|
FUN_00425f10(param_1 + 0x50);
|
|
|
|
FUN_00536b80(param_2);
|
|
|
|
FUN_00514b90(local_40);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00514ca0 at 0x00514CA0 (size: 126) ---
|
|
|
|
|
|
void __thiscall FUN_00514ca0(int param_1,int param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
uint local_44;
|
|
|
|
undefined1 local_40 [52];
|
|
|
|
undefined1 local_c [12];
|
|
|
|
|
|
|
|
local_44 = *(uint *)(param_2 + 4);
|
|
|
|
FUN_00425f10(param_2 + 8);
|
|
|
|
if ((local_44 & 0xffff) < 0x100) {
|
|
|
|
FUN_005aac70(&local_44,local_c);
|
|
|
|
}
|
|
|
|
*(uint *)(param_1 + 0x4c) = local_44;
|
|
|
|
if (((*(uint *)(param_1 + 0xa8) & 0x1000) == 0) && (*(int *)(param_1 + 0x10) != 0)) {
|
|
|
|
FUN_00518900(local_44);
|
|
|
|
}
|
|
|
|
FUN_00514b90(local_40);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00514d20 at 0x00514D20 (size: 47) ---
|
|
|
|
|
|
void __fastcall FUN_00514d20(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_00512a10();
|
|
|
|
FUN_00514ca0(param_1 + 0x48);
|
|
|
|
FUN_00508ce0(param_1,*(undefined4 *)(param_1 + 0x4c));
|
|
|
|
*(uint *)(param_1 + 0xac) = *(uint *)(param_1 + 0xac) & 0xffffff7f;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00514d50 at 0x00514D50 (size: 203) ---
|
|
|
|
|
|
void __thiscall FUN_00514d50(int *param_1,uint param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 *puVar1;
|
|
|
|
int iVar2;
|
|
|
|
uint *puVar3;
|
|
|
|
uint uVar4;
|
|
|
|
uint *puVar5;
|
|
|
|
|
|
|
|
if (param_2 <= (uint)param_1[3]) {
|
|
|
|
FUN_00514e90(param_2);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
puVar3 = (uint *)thunk_FUN_005df0f5(param_2 * 0x18 + 4);
|
|
|
|
if (puVar3 == (uint *)0x0) {
|
|
|
|
puVar5 = (uint *)0x0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
puVar5 = puVar3 + 1;
|
|
|
|
*puVar3 = param_2;
|
|
|
|
FUN_00401000(puVar5,0x18,param_2,&LAB_005109d0);
|
|
|
|
}
|
|
|
|
uVar4 = 0;
|
|
|
|
if (param_1[3] != 0) {
|
|
|
|
puVar3 = puVar5 + 2;
|
|
|
|
do {
|
|
|
|
iVar2 = *param_1 + (-8 - (int)puVar5);
|
|
|
|
puVar3[-1] = *(uint *)((int)puVar3 + iVar2 + 4);
|
|
|
|
*puVar3 = *(uint *)((int)puVar3 + iVar2 + 8);
|
|
|
|
puVar3[1] = *(uint *)((int)puVar3 + iVar2 + 0xc);
|
|
|
|
puVar3[2] = *(uint *)((int)puVar3 + iVar2 + 0x10);
|
|
|
|
puVar3[3] = *(uint *)((int)puVar3 + iVar2 + 0x14);
|
|
|
|
uVar4 = uVar4 + 1;
|
|
|
|
puVar3 = puVar3 + 6;
|
|
|
|
} while (uVar4 < (uint)param_1[3]);
|
|
|
|
}
|
|
|
|
puVar1 = (undefined4 *)*param_1;
|
|
|
|
if (puVar1 != (undefined4 *)0x0) {
|
|
|
|
if (puVar1[-1] != 0) {
|
|
|
|
(**(code **)*puVar1)(3);
|
|
|
|
*param_1 = (int)puVar5;
|
|
|
|
param_1[3] = param_2;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
operator_delete__(puVar1 + -1);
|
|
|
|
}
|
|
|
|
*param_1 = (int)puVar5;
|
|
|
|
param_1[3] = param_2;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00514e20 at 0x00514E20 (size: 30) ---
|
|
|
|
|
|
void * __thiscall FUN_00514e20(void *param_1,byte param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_00514e40();
|
|
|
|
if ((param_2 & 1) != 0) {
|
|
|
|
operator_delete(param_1);
|
|
|
|
}
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00514e40 at 0x00514E40 (size: 79) ---
|
|
|
|
|
|
void __fastcall FUN_00514e40(undefined4 *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int local_4;
|
|
|
|
|
|
|
|
*param_1 = &PTR_FUN_007c78f0;
|
|
|
|
FUN_005143c0(param_1);
|
|
|
|
if (local_4 == 0) {
|
|
|
|
do {
|
|
|
|
FUN_004f8040();
|
|
|
|
} while( true );
|
|
|
|
}
|
|
|
|
*param_1 = &PTR_FUN_007c7450;
|
|
|
|
if (param_1[5] == 0) {
|
|
|
|
operator_delete__((void *)param_1[3]);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00514e90 at 0x00514E90 (size: 245) ---
|
|
|
|
|
|
void __thiscall FUN_00514e90(int *param_1,uint param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 *puVar1;
|
|
|
|
int iVar2;
|
|
|
|
uint *puVar3;
|
|
|
|
uint uVar4;
|
|
|
|
uint *puVar5;
|
|
|
|
|
|
|
|
if ((uint)param_1[3] < param_2) {
|
|
|
|
FUN_00514d50(param_2);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
puVar5 = (uint *)0x0;
|
|
|
|
if (param_2 == 0) {
|
|
|
|
puVar1 = (undefined4 *)*param_1;
|
|
|
|
param_1[3] = 0;
|
|
|
|
if (puVar1 == (undefined4 *)0x0) goto LAB_00514f75;
|
|
|
|
if (puVar1[-1] != 0) {
|
|
|
|
(**(code **)*puVar1)(3);
|
|
|
|
goto LAB_00514f75;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
puVar3 = (uint *)thunk_FUN_005df0f5(param_2 * 0x18 + 4);
|
|
|
|
if (puVar3 != (uint *)0x0) {
|
|
|
|
puVar5 = puVar3 + 1;
|
|
|
|
*puVar3 = param_2;
|
|
|
|
FUN_00401000(puVar5,0x18,param_2,&LAB_005109d0);
|
|
|
|
}
|
|
|
|
uVar4 = 0;
|
|
|
|
param_1[3] = param_2;
|
|
|
|
if (param_2 != 0) {
|
|
|
|
puVar3 = puVar5 + 2;
|
|
|
|
do {
|
|
|
|
iVar2 = *param_1 + (-8 - (int)puVar5);
|
|
|
|
puVar3[-1] = *(uint *)((int)puVar3 + iVar2 + 4);
|
|
|
|
*puVar3 = *(uint *)((int)puVar3 + iVar2 + 8);
|
|
|
|
puVar3[1] = *(uint *)((int)puVar3 + iVar2 + 0xc);
|
|
|
|
puVar3[2] = *(uint *)((int)puVar3 + iVar2 + 0x10);
|
|
|
|
puVar3[3] = *(uint *)((int)puVar3 + iVar2 + 0x14);
|
|
|
|
uVar4 = uVar4 + 1;
|
|
|
|
puVar3 = puVar3 + 6;
|
|
|
|
} while (uVar4 < (uint)param_1[3]);
|
|
|
|
}
|
|
|
|
puVar1 = (undefined4 *)*param_1;
|
|
|
|
if (puVar1 == (undefined4 *)0x0) goto LAB_00514f75;
|
|
|
|
if (puVar1[-1] != 0) {
|
|
|
|
(**(code **)*puVar1)(3);
|
|
|
|
goto LAB_00514f75;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
operator_delete__(puVar1 + -1);
|
|
|
|
LAB_00514f75:
|
|
|
|
*param_1 = (int)puVar5;
|
|
|
|
if (param_2 < (uint)param_1[2]) {
|
|
|
|
param_1[2] = param_2;
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00514f90 at 0x00514F90 (size: 30) ---
|
|
|
|
|
|
void * __thiscall FUN_00514f90(void *param_1,byte param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_00514830();
|
|
|
|
if ((param_2 & 1) != 0) {
|
|
|
|
operator_delete(param_1);
|
|
|
|
}
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00514fb0 at 0x00514FB0 (size: 105) ---
|
|
|
|
|
|
int FUN_00514fb0(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
int iVar2;
|
|
|
|
|
|
|
|
iVar1 = param_1;
|
|
|
|
if (*(int *)(param_1 + 0x10) == 0) {
|
|
|
|
param_1 = DAT_00844d94;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
FUN_005195f0(¶m_1);
|
|
|
|
}
|
|
|
|
iVar2 = FUN_00514470(param_1,0,1);
|
|
|
|
if (iVar2 != 0) {
|
|
|
|
FUN_00510580(iVar1);
|
|
|
|
if (((*(int *)(iVar2 + 0x10) != 0) &&
|
|
|
|
(iVar1 = *(int *)(*(int *)(iVar2 + 0x10) + 0x54), iVar1 != 0)) &&
|
|
|
|
(iVar1 = *(int *)(iVar1 + 200), iVar1 != 0)) {
|
|
|
|
FUN_005117a0(iVar1);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return iVar2;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00515020 at 0x00515020 (size: 252) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void __fastcall FUN_00515020(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
double dVar1;
|
|
|
|
undefined4 uVar2;
|
|
|
|
undefined1 local_48 [68];
|
|
|
|
|
|
|
|
uVar2 = DAT_008379ac;
|
|
|
|
if (*(int *)(param_1 + 0x40) == 0) {
|
|
|
|
DAT_008eee70 = DAT_008379a8;
|
|
|
|
DAT_008eee74 = DAT_008379ac;
|
|
|
|
dVar1 = (double)CONCAT44(DAT_008379ac,DAT_008379a8) - *(double *)(param_1 + 0xd8);
|
|
|
|
if (dVar1 < (double)_DAT_007c78bc == (dVar1 == (double)_DAT_007c78bc)) {
|
|
|
|
if (_DAT_00844da0 <= dVar1) {
|
|
|
|
if (dVar1 <= _DAT_007c7840) {
|
|
|
|
FUN_00424ce0();
|
|
|
|
FUN_00513730((float)dVar1,local_48);
|
|
|
|
FUN_00514b90(local_48);
|
|
|
|
if (*(int *)(param_1 + 0x128) != 0) {
|
|
|
|
FUN_0051c330();
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x30) != 0) {
|
|
|
|
FUN_0051bfb0();
|
|
|
|
}
|
|
|
|
uVar2 = DAT_008379ac;
|
|
|
|
*(undefined4 *)(param_1 + 0xd8) = DAT_008379a8;
|
|
|
|
*(undefined4 *)(param_1 + 0xdc) = uVar2;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
*(undefined4 *)(param_1 + 0xd8) = DAT_008379a8;
|
|
|
|
*(undefined4 *)(param_1 + 0xdc) = uVar2;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*(undefined4 *)(param_1 + 0xd8) = DAT_008379a8;
|
|
|
|
*(undefined4 *)(param_1 + 0xdc) = uVar2;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00515120 at 0x00515120 (size: 349) ---
|
|
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x00515249) */
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x00515250) */
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x00515266) */
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x00515275) */
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void __thiscall FUN_00515120(int param_1,int param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
double dVar2;
|
|
|
|
int iVar3;
|
|
|
|
int iVar4;
|
|
|
|
int local_28;
|
|
|
|
undefined4 local_24;
|
|
|
|
undefined4 uStack_20;
|
|
|
|
int local_1c;
|
|
|
|
|
|
|
|
if (*(int *)(param_1 + 0x15c) != 0) {
|
|
|
|
iVar1 = **(int **)(*(int *)(param_1 + 0x15c) + 0xc);
|
|
|
|
if (iVar1 == 0) {
|
|
|
|
FUN_004d8d00();
|
|
|
|
}
|
|
|
|
local_28 = 0;
|
|
|
|
FUN_00500570(10);
|
|
|
|
iVar4 = param_2;
|
|
|
|
do {
|
|
|
|
if (iVar1 != 0) {
|
|
|
|
iVar4 = *(int *)(iVar1 + 8);
|
|
|
|
local_24 = *(undefined4 *)(iVar1 + 0x10);
|
|
|
|
uStack_20 = *(undefined4 *)(iVar1 + 0x14);
|
|
|
|
local_1c = *(int *)(iVar1 + 0x18);
|
|
|
|
}
|
|
|
|
dVar2 = _DAT_008379a8 - (double)CONCAT44(uStack_20,local_24);
|
|
|
|
if (((double)_DAT_007938b0 < dVar2) ||
|
|
|
|
(((local_1c != 0 && (_DAT_00795610 < dVar2)) || (param_2 != 0)))) {
|
|
|
|
FUN_004f8040();
|
|
|
|
iVar3 = FUN_00500570(8);
|
|
|
|
if (iVar3 != 0) {
|
|
|
|
*(int *)(local_28 * 4) = iVar4;
|
|
|
|
local_28 = local_28 + 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
FUN_004d8d00();
|
|
|
|
}
|
|
|
|
} while( true );
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00515280 at 0x00515280 (size: 593) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
undefined4 __thiscall FUN_00515280(int param_1,int param_2,undefined4 param_3,int param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
float fVar1;
|
|
|
|
float fVar2;
|
|
|
|
bool bVar3;
|
|
|
|
float fVar4;
|
|
|
|
int iVar5;
|
|
|
|
undefined4 uVar6;
|
|
|
|
uint uVar7;
|
|
|
|
undefined4 local_14;
|
|
|
|
|
|
|
|
uVar7 = 0;
|
|
|
|
if (((param_4 == 0) || ((*(byte *)(param_1 + 0xac) & 2) == 0)) ||
|
|
|
|
(bVar3 = false, (*(uint *)(param_1 + 0xa8) & 0x800000) != 0)) {
|
|
|
|
bVar3 = true;
|
|
|
|
}
|
|
|
|
local_14 = 0;
|
|
|
|
if (*(int *)(param_2 + 100) != 0) {
|
|
|
|
do {
|
|
|
|
iVar5 = *(int *)(*(int *)(param_2 + 0x68) + uVar7 * 4);
|
|
|
|
if ((iVar5 != 0) && (iVar5 = FUN_00514a10(iVar5,param_3), iVar5 != 0)) {
|
|
|
|
local_14 = 1;
|
|
|
|
}
|
|
|
|
uVar7 = uVar7 + 1;
|
|
|
|
} while (uVar7 < *(uint *)(param_2 + 100));
|
|
|
|
}
|
|
|
|
FUN_00515120(0);
|
|
|
|
if (*(int *)(param_1 + 0x160) == 0) {
|
|
|
|
if ((*(int *)(param_2 + 0x7c) == 0) &&
|
|
|
|
((param_4 != 0 || ((*(byte *)(param_1 + 0xac) & 2) == 0)))) goto LAB_00515337;
|
|
|
|
iVar5 = FUN_00513ac0(param_3);
|
|
|
|
uVar6 = 1;
|
|
|
|
if (iVar5 == 0) goto LAB_00515337;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*(uint *)(param_1 + 0x160) = (uint)(*(int *)(param_2 + 0x7c) != 0);
|
|
|
|
LAB_00515337:
|
|
|
|
uVar6 = local_14;
|
|
|
|
}
|
|
|
|
iVar5 = *(int *)(param_2 + 0x80);
|
|
|
|
if (iVar5 < 2) {
|
|
|
|
if ((bVar3) && (*(int *)(param_2 + 0x48) != 0)) {
|
|
|
|
if ((*(uint *)(param_1 + 0xa8) & 0x20000) == 0) {
|
|
|
|
fVar1 = *(float *)(param_2 + 0x4c) * *(float *)(param_1 + 0xe0) +
|
|
|
|
*(float *)(param_1 + 0xe4) * *(float *)(param_2 + 0x50) +
|
|
|
|
*(float *)(param_1 + 0xe8) * *(float *)(param_2 + 0x54);
|
|
|
|
if (fVar1 < (float)_DAT_00795610) {
|
|
|
|
fVar4 = -((*(float *)(param_1 + 0xb0) + _DAT_007938b0) * fVar1);
|
|
|
|
fVar1 = *(float *)(param_2 + 0x50);
|
|
|
|
fVar2 = *(float *)(param_2 + 0x54);
|
|
|
|
*(float *)(param_1 + 0xe0) =
|
|
|
|
fVar4 * *(float *)(param_2 + 0x4c) + *(float *)(param_1 + 0xe0);
|
|
|
|
*(float *)(param_1 + 0xe4) = fVar4 * fVar1 + *(float *)(param_1 + 0xe4);
|
|
|
|
*(float *)(param_1 + 0xe8) = fVar4 * fVar2 + *(float *)(param_1 + 0xe8);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*(undefined4 *)(param_1 + 0xe0) = 0;
|
|
|
|
*(undefined4 *)(param_1 + 0xe4) = 0;
|
|
|
|
*(undefined4 *)(param_1 + 0xe8) = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*(undefined4 *)(param_1 + 0xe0) = 0;
|
|
|
|
*(undefined4 *)(param_1 + 0xe4) = 0;
|
|
|
|
*(undefined4 *)(param_1 + 0xe8) = 0;
|
|
|
|
if (iVar5 == 3) goto LAB_00515467;
|
|
|
|
}
|
|
|
|
if (iVar5 != 0) {
|
|
|
|
uVar7 = *(uint *)(param_1 + 0xac);
|
|
|
|
if (iVar5 == 1) {
|
|
|
|
*(uint *)(param_1 + 0xac) = uVar7 | 0x10;
|
|
|
|
return uVar6;
|
|
|
|
}
|
|
|
|
if (iVar5 != 2) {
|
|
|
|
*(uint *)(param_1 + 0xac) = uVar7 | 0x40;
|
|
|
|
return uVar6;
|
|
|
|
}
|
|
|
|
*(uint *)(param_1 + 0xac) = uVar7 | 0x20;
|
|
|
|
return uVar6;
|
|
|
|
}
|
|
|
|
LAB_00515467:
|
|
|
|
*(uint *)(param_1 + 0xac) = *(uint *)(param_1 + 0xac) & 0xffffff8f;
|
|
|
|
return uVar6;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005154e0 at 0x005154E0 (size: 132) ---
|
|
|
|
|
|
void __thiscall FUN_005154e0(int param_1,int param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
|
|
|
|
iVar1 = *(int *)(param_1 + 0x90);
|
|
|
|
if (iVar1 != 0) {
|
|
|
|
if (param_2 == iVar1) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
FUN_00513ef0(iVar1);
|
|
|
|
}
|
|
|
|
FUN_00513e90(param_2);
|
|
|
|
if (param_2 != 0) {
|
|
|
|
*(undefined4 *)(param_1 + 0x94) = 1;
|
|
|
|
if (*(int *)(param_1 + 0xa4) == 0) {
|
|
|
|
FUN_00514d50(1);
|
|
|
|
}
|
|
|
|
FUN_0051c660(param_1);
|
|
|
|
*(undefined4 *)(*(int *)(param_1 + 0x98) + 0x10) = *(undefined4 *)(param_2 + 0x28);
|
|
|
|
FUN_0052be90(*(undefined4 *)(param_1 + 0x98),1);
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
FUN_00518970(param_2,1);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00515570 at 0x00515570 (size: 108) ---
|
|
|
|
|
|
void __fastcall FUN_00515570(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
*(undefined4 *)(param_1 + 0x94) = 1;
|
|
|
|
if (*(int *)(param_1 + 0xa4) == 0) {
|
|
|
|
FUN_00514d50(1);
|
|
|
|
}
|
|
|
|
FUN_0051c660(param_1);
|
|
|
|
*(undefined4 *)(*(int *)(param_1 + 0x98) + 0x10) =
|
|
|
|
*(undefined4 *)(*(int *)(param_1 + 0x90) + 0x28);
|
|
|
|
FUN_0052be90(*(undefined4 *)(param_1 + 0x98),1);
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
FUN_00518970(*(undefined4 *)(param_1 + 0x90),1);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005155e0 at 0x005155E0 (size: 307) ---
|
|
|
|
|
|
void __thiscall FUN_005155e0(int param_1,int param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
ushort *puVar2;
|
|
|
|
uint uVar3;
|
|
|
|
int iVar4;
|
|
|
|
uint uVar5;
|
|
|
|
|
|
|
|
if ((*(uint *)(param_1 + 0xa8) & 0x1000) == 0) {
|
|
|
|
uVar5 = *(uint *)(param_2 + 8);
|
|
|
|
*(uint *)(param_1 + 0x94) = uVar5;
|
|
|
|
if (*(uint *)(param_1 + 0xa4) < uVar5) {
|
|
|
|
FUN_00514d50(uVar5);
|
|
|
|
}
|
|
|
|
uVar5 = 0;
|
|
|
|
if (*(int *)(param_1 + 0x94) != 0) {
|
|
|
|
iVar4 = 0;
|
|
|
|
do {
|
|
|
|
FUN_0051c660(param_1);
|
|
|
|
*(undefined4 *)(*(int *)(param_1 + 0x98) + 0x10 + iVar4) =
|
|
|
|
*(undefined4 *)(*(int *)(param_2 + 0xc) + uVar5 * 8);
|
|
|
|
uVar5 = uVar5 + 1;
|
|
|
|
iVar4 = iVar4 + 0x18;
|
|
|
|
} while (uVar5 < *(uint *)(param_1 + 0x94));
|
|
|
|
}
|
|
|
|
uVar5 = 0;
|
|
|
|
if (*(int *)(param_1 + 0x94) != 0) {
|
|
|
|
iVar4 = 0;
|
|
|
|
do {
|
|
|
|
iVar1 = *(int *)(*(int *)(param_2 + 0xc) + 4 + uVar5 * 8);
|
|
|
|
if (iVar1 == 0) {
|
|
|
|
*(undefined4 *)(*(int *)(param_1 + 0x98) + 0x14 + iVar4) = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
FUN_0052be90(*(int *)(param_1 + 0x98) + iVar4,*(undefined4 *)(param_2 + 8));
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
FUN_00518970(iVar1,*(undefined4 *)(param_1 + 0x94));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
uVar5 = uVar5 + 1;
|
|
|
|
iVar4 = iVar4 + 0x18;
|
|
|
|
} while (uVar5 < *(uint *)(param_1 + 0x94));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
FUN_00515570();
|
|
|
|
}
|
|
|
|
uVar5 = 0;
|
|
|
|
while( true ) {
|
|
|
|
puVar2 = *(ushort **)(param_1 + 0x44);
|
|
|
|
if (puVar2 == (ushort *)0x0) {
|
|
|
|
uVar3 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar3 = (uint)*puVar2;
|
|
|
|
}
|
|
|
|
if (uVar3 <= uVar5) break;
|
|
|
|
if (puVar2 == (ushort *)0x0) {
|
|
|
|
FUN_005155e0(param_2);
|
|
|
|
uVar5 = uVar5 + 1;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
FUN_005155e0(param_2);
|
|
|
|
uVar5 = uVar5 + 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00515720 at 0x00515720 (size: 62) ---
|
|
|
|
|
|
void __thiscall FUN_00515720(int param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
uint uVar1;
|
|
|
|
int iVar2;
|
|
|
|
|
|
|
|
uVar1 = *(uint *)(param_1 + 0x10c);
|
|
|
|
if (uVar1 <= *(uint *)(param_1 + 0x110)) {
|
|
|
|
if (uVar1 == 0) {
|
|
|
|
iVar2 = 8;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar2 = uVar1 * 2;
|
|
|
|
}
|
|
|
|
iVar2 = FUN_00500570(iVar2);
|
|
|
|
if (iVar2 == 0) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
*(undefined4 *)(*(int *)(param_1 + 0x108) + *(int *)(param_1 + 0x110) * 4) = param_2;
|
|
|
|
*(int *)(param_1 + 0x110) = *(int *)(param_1 + 0x110) + 1;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00515760 at 0x00515760 (size: 357) ---
|
|
|
|
|
|
void __thiscall FUN_00515760(int param_1,int param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
uint *puVar1;
|
|
|
|
ushort *puVar2;
|
|
|
|
int iVar3;
|
|
|
|
uint uVar4;
|
|
|
|
uint uVar5;
|
|
|
|
ushort uVar6;
|
|
|
|
|
|
|
|
if (param_2 == 0) {
|
|
|
|
*(uint *)(param_1 + 0xa8) = *(uint *)(param_1 + 0xa8) & 0xffffbfff;
|
|
|
|
if (*(int *)(param_1 + 0x34) != 0) {
|
|
|
|
FUN_00522990(¶m_2,0x75,0x3f800000);
|
|
|
|
FUN_005117a0(param_2);
|
|
|
|
}
|
|
|
|
for (uVar6 = 0;
|
|
|
|
(puVar2 = *(ushort **)(param_1 + 0x44), puVar2 != (ushort *)0x0 && (uVar6 < *puVar2));
|
|
|
|
uVar6 = uVar6 + 1) {
|
|
|
|
iVar3 = *(int *)(*(int *)(puVar2 + 2) + (uint)uVar6 * 4);
|
|
|
|
puVar1 = (uint *)(iVar3 + 0xa8);
|
|
|
|
*puVar1 = *puVar1 & 0xffffffdf;
|
|
|
|
if (*(int *)(iVar3 + 0x10) != 0) {
|
|
|
|
FUN_00518e30(0);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
uVar4 = *(uint *)(param_1 + 0xa8);
|
|
|
|
uVar5 = uVar4 & 0xffffffef;
|
|
|
|
*(uint *)(param_1 + 0xa8) = uVar5;
|
|
|
|
if ((uVar4 & 8) == 0) {
|
|
|
|
*(uint *)(param_1 + 0xa8) = uVar5 | 8;
|
|
|
|
FUN_00514ad0();
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
FUN_005188a0();
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x90) != 0) {
|
|
|
|
FUN_0052ca50(param_1);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*(uint *)(param_1 + 0xa8) = *(uint *)(param_1 + 0xa8) | 0x4000;
|
|
|
|
if (*(int *)(param_1 + 0x34) != 0) {
|
|
|
|
FUN_00522990(¶m_2,0x76,0x3f800000);
|
|
|
|
FUN_005117a0(param_2);
|
|
|
|
}
|
|
|
|
for (uVar6 = 0;
|
|
|
|
(puVar2 = *(ushort **)(param_1 + 0x44), puVar2 != (ushort *)0x0 && (uVar6 < *puVar2));
|
|
|
|
uVar6 = uVar6 + 1) {
|
|
|
|
iVar3 = *(int *)(*(int *)(puVar2 + 2) + (uint)uVar6 * 4);
|
|
|
|
puVar1 = (uint *)(iVar3 + 0xa8);
|
|
|
|
*puVar1 = *puVar1 | 0x20;
|
|
|
|
if (*(int *)(iVar3 + 0x10) != 0) {
|
|
|
|
FUN_00518e30(1);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if ((*(byte *)(param_1 + 0xa8) & 8) != 0) {
|
|
|
|
FUN_00515120(1);
|
|
|
|
*(uint *)(param_1 + 0xa8) = *(uint *)(param_1 + 0xa8) & 0xfffffff7;
|
|
|
|
}
|
|
|
|
*(uint *)(param_1 + 0xa8) = *(uint *)(param_1 + 0xa8) | 0x10;
|
|
|
|
if (*(int *)(param_1 + 0x90) != 0) {
|
|
|
|
FUN_0052ca40(param_1);
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
FUN_005188a0();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005158d0 at 0x005158D0 (size: 138) ---
|
|
|
|
|
|
undefined4 __thiscall FUN_005158d0(int param_1,uint param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
uint uVar1;
|
|
|
|
|
|
|
|
uVar1 = *(uint *)(param_1 + 0xa8) ^ param_2;
|
|
|
|
*(uint *)(param_1 + 0xa8) = param_2;
|
|
|
|
if ((uVar1 & 0x800) != 0) {
|
|
|
|
if ((param_2 & 0x800) == 0) {
|
|
|
|
*(uint *)(param_1 + 0xa8) = param_2 & 0xfffff7ff;
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
FUN_00519ce0();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*(uint *)(param_1 + 0xa8) = param_2 | 0x800;
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
FUN_00519730();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if ((uVar1 & 0x20) != 0) {
|
|
|
|
FUN_00510770(*(uint *)(param_1 + 0xa8) & 0x20,0);
|
|
|
|
}
|
|
|
|
if ((uVar1 & 0x4000) != 0) {
|
|
|
|
FUN_00515760(*(uint *)(param_1 + 0xa8) & 0x4000,0);
|
|
|
|
}
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00515960 at 0x00515960 (size: 101) ---
|
|
|
|
|
|
void __fastcall FUN_00515960(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
FUN_005188c0();
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0xc4) != 0) {
|
|
|
|
FUN_00524f50();
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 200) != 0) {
|
|
|
|
FUN_00555e00();
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x124) != 0) {
|
|
|
|
FUN_0051b310();
|
|
|
|
FUN_0051b290(2);
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x11c) != 0) {
|
|
|
|
FUN_0051aa80(0);
|
|
|
|
}
|
|
|
|
FUN_00515120(1);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005159d0 at 0x005159D0 (size: 106) ---
|
|
|
|
|
|
void __fastcall FUN_005159d0(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
if (*(int *)(param_1 + 0xc4) != 0) {
|
|
|
|
FUN_00524db0(0x3c);
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 200) != 0) {
|
|
|
|
FUN_00555e00();
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 200) != 0) {
|
|
|
|
FUN_00555e40();
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 200) != 0) {
|
|
|
|
FUN_00555ed0();
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x124) != 0) {
|
|
|
|
FUN_0051b310();
|
|
|
|
FUN_0051b290(3);
|
|
|
|
}
|
|
|
|
FUN_00515120(1);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00515a40 at 0x00515A40 (size: 531) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
undefined4 __thiscall FUN_00515a40(int param_1,float param_2,int param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
float fVar1;
|
|
|
|
bool bVar2;
|
|
|
|
int iVar3;
|
|
|
|
undefined2 uVar4;
|
|
|
|
undefined4 *puVar5;
|
|
|
|
int iVar6;
|
|
|
|
undefined4 uVar7;
|
|
|
|
uint uVar8;
|
|
|
|
undefined2 *puVar9;
|
|
|
|
int iStack_10;
|
|
|
|
undefined4 local_c;
|
|
|
|
undefined4 uStack_8;
|
|
|
|
undefined4 uStack_4;
|
|
|
|
|
|
|
|
iVar3 = (int)param_2;
|
|
|
|
puVar5 = (undefined4 *)FUN_0051e270(¶m_2);
|
|
|
|
iVar6 = FUN_00513280(*puVar5);
|
|
|
|
if (iVar6 != 0) {
|
|
|
|
uVar8 = 0;
|
|
|
|
iVar6 = *(int *)(iVar3 + 0xb0);
|
|
|
|
if (*(int **)(param_1 + 0x28) != (int *)0x0) {
|
|
|
|
(**(code **)(**(int **)(param_1 + 0x28) + 0x14))();
|
|
|
|
*(undefined4 *)(param_1 + 0x28) = 0;
|
|
|
|
}
|
|
|
|
if (iVar6 != 0) {
|
|
|
|
uVar7 = FUN_004220b0(iVar6,0x22);
|
|
|
|
uVar7 = FUN_00415430(uVar7);
|
|
|
|
*(undefined4 *)(param_1 + 0x28) = uVar7;
|
|
|
|
}
|
|
|
|
iVar6 = *(int *)(iVar3 + 0xb4);
|
|
|
|
if (*(int **)(param_1 + 0x34) != (int *)0x0) {
|
|
|
|
(**(code **)(**(int **)(param_1 + 0x34) + 0x14))();
|
|
|
|
*(undefined4 *)(param_1 + 0x34) = 0;
|
|
|
|
}
|
|
|
|
if (iVar6 != 0) {
|
|
|
|
uVar7 = FUN_004220b0(iVar6,0x2c);
|
|
|
|
uVar7 = FUN_00415430(uVar7);
|
|
|
|
*(undefined4 *)(param_1 + 0x34) = uVar7;
|
|
|
|
}
|
|
|
|
iStack_10 = FUN_004f8d90();
|
|
|
|
if (iStack_10 == 0) {
|
|
|
|
uVar7 = FUN_004f32b0();
|
|
|
|
FUN_00510160(uVar7);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar7 = FUN_0051df70();
|
|
|
|
*(undefined4 *)(param_1 + 0xcc) = uVar7;
|
|
|
|
if (param_3 != 0) {
|
|
|
|
uVar7 = FUN_004f8da0();
|
|
|
|
FUN_00512b10(&iStack_10,uVar7);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
FUN_005158d0(*(undefined4 *)(iVar3 + 0x60),1);
|
|
|
|
uVar7 = *(undefined4 *)(iVar3 + 100);
|
|
|
|
*(undefined4 *)(param_1 + 0x114) = uVar7;
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
local_c = uVar7;
|
|
|
|
uStack_8 = uVar7;
|
|
|
|
uStack_4 = uVar7;
|
|
|
|
FUN_00519530(&local_c);
|
|
|
|
}
|
|
|
|
fVar1 = *(float *)(iVar3 + 0x68);
|
|
|
|
if (((float)_DAT_00795610 <= fVar1) && (fVar1 <= (float)_DAT_007938c0)) {
|
|
|
|
*(float *)(param_1 + 0xbc) = fVar1;
|
|
|
|
}
|
|
|
|
FUN_00510810(*(undefined4 *)(iVar3 + 0x6c));
|
|
|
|
param_2 = *(float *)(iVar3 + 0x70);
|
|
|
|
bVar2 = param_2 != DAT_007c7820;
|
|
|
|
*(float *)(param_1 + 0xb8) = param_2;
|
|
|
|
if ((bVar2) && (*(float *)(param_1 + 0xb4) = param_2, *(int *)(param_1 + 0x10) != 0)) {
|
|
|
|
FUN_00518e70(param_2);
|
|
|
|
}
|
|
|
|
local_c = *(undefined4 *)(iVar3 + 0x74);
|
|
|
|
uStack_8 = *(undefined4 *)(iVar3 + 0x78);
|
|
|
|
uStack_4 = *(undefined4 *)(iVar3 + 0x7c);
|
|
|
|
FUN_00511ec0(&local_c,1);
|
|
|
|
local_c = *(undefined4 *)(iVar3 + 0x8c);
|
|
|
|
uStack_8 = *(undefined4 *)(iVar3 + 0x90);
|
|
|
|
uStack_4 = *(undefined4 *)(iVar3 + 0x94);
|
|
|
|
*(undefined4 *)(param_1 + 0xf8) = local_c;
|
|
|
|
*(undefined4 *)(param_1 + 0xfc) = uStack_8;
|
|
|
|
*(undefined4 *)(param_1 + 0x100) = uStack_4;
|
|
|
|
uVar7 = *(undefined4 *)(iVar3 + 0xb8);
|
|
|
|
*(undefined4 *)(param_1 + 0x3c) = *(undefined4 *)(iVar3 + 0xbc);
|
|
|
|
*(undefined4 *)(param_1 + 0x38) = uVar7;
|
|
|
|
puVar9 = (undefined2 *)(param_1 + 0x164);
|
|
|
|
do {
|
|
|
|
uVar4 = FUN_0051df80(uVar8);
|
|
|
|
*puVar9 = uVar4;
|
|
|
|
uVar8 = uVar8 + 1;
|
|
|
|
puVar9 = puVar9 + 1;
|
|
|
|
} while (uVar8 < 9);
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00515c60 at 0x00515C60 (size: 200) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void __fastcall FUN_00515c60(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
undefined4 uVar2;
|
|
|
|
undefined4 uVar3;
|
|
|
|
|
|
|
|
if ((DAT_00844f18 & 1) == 0) {
|
|
|
|
DAT_00844f18 = DAT_00844f18 | 1;
|
|
|
|
FUN_0050b3f0();
|
|
|
|
_atexit((_func_4879 *)&LAB_00768830);
|
|
|
|
}
|
|
|
|
_DAT_00844f04 = 0;
|
|
|
|
_DAT_00844efc = 0;
|
|
|
|
_DAT_00844f00 = 1;
|
|
|
|
if (((*(uint *)(param_1 + 0xa8) & 0x10000) == 0) && (*(int *)(param_1 + 0x10) != 0)) {
|
|
|
|
iVar1 = FUN_00518bb0();
|
|
|
|
if (iVar1 != 0) {
|
|
|
|
if (*(int *)(param_1 + 0x10) == 0) {
|
|
|
|
uVar2 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar2 = FUN_00518bc0();
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x10) == 0) {
|
|
|
|
uVar3 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar3 = FUN_00518bb0();
|
|
|
|
}
|
|
|
|
FUN_0052c600(param_1 + 0x48,uVar3,uVar2,&DAT_00844efc,0);
|
|
|
|
goto LAB_00515d13;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
FUN_00511a90(&DAT_00844efc);
|
|
|
|
LAB_00515d13:
|
|
|
|
FUN_00511d00();
|
|
|
|
FUN_005155e0(&DAT_00844efc);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00515d30 at 0x00515D30 (size: 246) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void __fastcall FUN_00515d30(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
undefined4 uVar2;
|
|
|
|
undefined4 uVar3;
|
|
|
|
undefined *puVar4;
|
|
|
|
|
|
|
|
if ((DAT_00844f38 & 1) == 0) {
|
|
|
|
DAT_00844f38 = DAT_00844f38 | 1;
|
|
|
|
FUN_0050b3f0();
|
|
|
|
_atexit((_func_4879 *)&LAB_00768850);
|
|
|
|
}
|
|
|
|
_DAT_00844f24 = 0;
|
|
|
|
_DAT_00844f1c = 0;
|
|
|
|
_DAT_00844f20 = 0;
|
|
|
|
if ((*(uint *)(param_1 + 0xa8) & 0x10000) == 0) {
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
iVar1 = FUN_00518bb0();
|
|
|
|
if (iVar1 != 0) {
|
|
|
|
if (*(int *)(param_1 + 0x10) == 0) {
|
|
|
|
uVar2 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar2 = FUN_00518bc0();
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x10) == 0) {
|
|
|
|
uVar3 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar3 = FUN_00518bb0();
|
|
|
|
}
|
|
|
|
FUN_0052c600(param_1 + 0x48,uVar3,uVar2,&DAT_00844f1c,0);
|
|
|
|
goto LAB_00515e11;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x10) == 0) {
|
|
|
|
puVar4 = &DAT_00844eec;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
puVar4 = (undefined *)FUN_00519630();
|
|
|
|
}
|
|
|
|
FUN_0052c5a0(param_1 + 0x48,puVar4,&DAT_00844f1c,0);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
FUN_00511a90(&DAT_00844f1c);
|
|
|
|
}
|
|
|
|
LAB_00515e11:
|
|
|
|
FUN_00511d00();
|
|
|
|
FUN_005155e0(&DAT_00844f1c);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00515e30 at 0x00515E30 (size: 614) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
undefined4 __thiscall FUN_00515e30(int param_1,int param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
uint uVar1;
|
|
|
|
int iVar2;
|
|
|
|
undefined4 uVar3;
|
|
|
|
uint uVar4;
|
|
|
|
ushort uVar5;
|
|
|
|
|
|
|
|
uVar1 = *(uint *)(param_1 + 0xac);
|
|
|
|
iVar2 = *(int *)(param_2 + 0xbc);
|
|
|
|
if (iVar2 == 0) {
|
|
|
|
FUN_00512a10();
|
|
|
|
FUN_00514ca0(param_2 + 0xc0);
|
|
|
|
FUN_00508ce0(param_1,*(undefined4 *)(param_1 + 0x4c));
|
|
|
|
*(uint *)(param_1 + 0xac) = *(uint *)(param_1 + 0xac) & 0xffffff7f;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
if (*(int *)(param_1 + 0x90) == iVar2) {
|
|
|
|
uVar3 = *(undefined4 *)(param_2 + 0xc4);
|
|
|
|
*(undefined4 *)(param_1 + 0x4c) = uVar3;
|
|
|
|
if (((*(uint *)(param_1 + 0xa8) & 0x1000) == 0) && (*(int *)(param_1 + 0x10) != 0)) {
|
|
|
|
FUN_00518900(uVar3);
|
|
|
|
}
|
|
|
|
if (*(short **)(param_1 + 0x44) != (short *)0x0) {
|
|
|
|
uVar5 = 0;
|
|
|
|
if (**(short **)(param_1 + 0x44) != 0) {
|
|
|
|
do {
|
|
|
|
iVar2 = *(int *)(*(int *)(*(int *)(param_1 + 0x44) + 4) + (uint)uVar5 * 4);
|
|
|
|
uVar3 = *(undefined4 *)(param_2 + 0xc4);
|
|
|
|
*(undefined4 *)(iVar2 + 0x4c) = uVar3;
|
|
|
|
if (((*(uint *)(iVar2 + 0xa8) & 0x1000) == 0) && (*(int *)(iVar2 + 0x10) != 0)) {
|
|
|
|
FUN_00518900(uVar3);
|
|
|
|
}
|
|
|
|
uVar5 = uVar5 + 1;
|
|
|
|
} while (uVar5 < **(ushort **)(param_1 + 0x44));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
FUN_00513e90(iVar2);
|
|
|
|
}
|
|
|
|
FUN_00514b90(param_2 + 200);
|
|
|
|
iVar2 = *(int *)(param_2 + 0x2a4);
|
|
|
|
*(undefined4 *)(param_1 + 0x140) = *(undefined4 *)(param_2 + 0x29c);
|
|
|
|
*(undefined4 *)(param_1 + 0x130) = *(undefined4 *)(param_2 + 0x28c);
|
|
|
|
*(undefined4 *)(param_1 + 0x134) = *(undefined4 *)(param_2 + 0x290);
|
|
|
|
*(undefined4 *)(param_1 + 0x138) = *(undefined4 *)(param_2 + 0x294);
|
|
|
|
*(undefined4 *)(param_1 + 0x13c) = *(undefined4 *)(param_2 + 0x298);
|
|
|
|
if (*(int *)(param_2 + 0x288) == 0) {
|
|
|
|
uVar4 = *(uint *)(param_1 + 0xac) & 0xfffffffe;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar4 = *(uint *)(param_1 + 0xac) | 1;
|
|
|
|
}
|
|
|
|
*(uint *)(param_1 + 0xac) = uVar4;
|
|
|
|
FUN_00511420();
|
|
|
|
if (iVar2 == 0) {
|
|
|
|
uVar4 = *(uint *)(param_1 + 0xac) & 0xfffffff7;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar4 = *(uint *)(param_1 + 0xac) | 8;
|
|
|
|
}
|
|
|
|
*(uint *)(param_1 + 0xac) = uVar4;
|
|
|
|
if ((uVar4 & 1) == 0) {
|
|
|
|
*(uint *)(param_1 + 0xac) = uVar4 & 0xfffffffd;
|
|
|
|
if (((uVar4 & 2) != 0) && (*(int *)(param_1 + 0xc4) != 0)) {
|
|
|
|
FUN_00524f20();
|
|
|
|
}
|
|
|
|
FUN_00511420();
|
|
|
|
}
|
|
|
|
else if (*(float *)(param_1 + 0x138) < _DAT_008eee6c) {
|
|
|
|
FUN_00511de0(0);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
FUN_00511de0(1);
|
|
|
|
}
|
|
|
|
*(undefined4 *)(param_1 + 0x144) = *(undefined4 *)(param_2 + 0x2ac);
|
|
|
|
*(undefined4 *)(param_1 + 0x148) = *(undefined4 *)(param_2 + 0x2b0);
|
|
|
|
*(undefined4 *)(param_1 + 0x14c) = *(undefined4 *)(param_2 + 0x2b4);
|
|
|
|
if (*(int *)(param_2 + 0x2a8) == 0) {
|
|
|
|
uVar4 = *(uint *)(param_1 + 0xac) & 0xfffffffb;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar4 = *(uint *)(param_1 + 0xac) | 4;
|
|
|
|
}
|
|
|
|
*(uint *)(param_1 + 0xac) = uVar4;
|
|
|
|
FUN_00515280(param_2 + 0x270,uVar1 & 1,uVar1 & 2);
|
|
|
|
if (*(int *)(param_1 + 0x90) != 0) {
|
|
|
|
if ((*(uint *)(param_1 + 0xa8) & 0x10000) != 0) {
|
|
|
|
FUN_00515d30();
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
if (*(int *)(param_2 + 0x2fc) != 0) {
|
|
|
|
FUN_00511d00();
|
|
|
|
FUN_005155e0(param_2 + 0x2f4);
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005160a0 at 0x005160A0 (size: 190) ---
|
|
|
|
|
|
void __fastcall FUN_005160a0(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
uint uVar1;
|
|
|
|
|
|
|
|
FUN_00515120(1);
|
|
|
|
if (DAT_00844d64 != 0) {
|
|
|
|
FUN_00508a80(param_1);
|
|
|
|
FUN_00508f10(*(undefined4 *)(param_1 + 8));
|
|
|
|
}
|
|
|
|
*(uint *)(param_1 + 0xac) = *(uint *)(param_1 + 0xac) & 0xffffff7f;
|
|
|
|
FUN_00511d00();
|
|
|
|
FUN_00511a20(0);
|
|
|
|
*(undefined4 *)(param_1 + 0x4c) = 0;
|
|
|
|
if (((*(uint *)(param_1 + 0xa8) & 0x1000) == 0) && (*(int *)(param_1 + 0x10) != 0)) {
|
|
|
|
FUN_00518900(0);
|
|
|
|
}
|
|
|
|
*(uint *)(param_1 + 0xac) = *(uint *)(param_1 + 0xac) & 0xfffffffe;
|
|
|
|
FUN_00511420();
|
|
|
|
uVar1 = *(uint *)(param_1 + 0xac);
|
|
|
|
*(uint *)(param_1 + 0xac) = uVar1 & 0xfffffff5;
|
|
|
|
if (((uVar1 & 2) != 0) && (*(int *)(param_1 + 0xc4) != 0)) {
|
|
|
|
FUN_00524f20();
|
|
|
|
}
|
|
|
|
FUN_00511420();
|
|
|
|
*(uint *)(param_1 + 0xac) = *(uint *)(param_1 + 0xac) & 0xfffffe0b;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00516160 at 0x00516160 (size: 65) ---
|
|
|
|
|
|
undefined4 __thiscall FUN_00516160(int param_1,int param_2,int param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
if (param_2 != 0) {
|
|
|
|
FUN_00514b90(param_3 + 8);
|
|
|
|
if (*(int *)(param_1 + 0x90) != param_2) {
|
|
|
|
FUN_00513e90(param_2);
|
|
|
|
FUN_00515d30();
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
return 3;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005161b0 at 0x005161B0 (size: 813) ---
|
|
|
|
|
|
void __thiscall FUN_005161b0(int param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
char cVar1;
|
|
|
|
int iVar2;
|
|
|
|
undefined4 *puVar3;
|
|
|
|
float10 fVar4;
|
|
|
|
undefined4 local_60;
|
|
|
|
undefined4 local_5c;
|
|
|
|
undefined4 local_58;
|
|
|
|
undefined1 local_54 [12];
|
|
|
|
undefined **local_48;
|
|
|
|
undefined4 local_44;
|
|
|
|
undefined4 local_40;
|
|
|
|
undefined4 local_3c;
|
|
|
|
undefined4 local_38;
|
|
|
|
undefined4 local_34;
|
|
|
|
undefined4 local_c;
|
|
|
|
undefined4 local_8;
|
|
|
|
undefined4 local_4;
|
|
|
|
|
|
|
|
if ((char)*(uint *)(param_1 + 0xac) < '\0') {
|
|
|
|
if (*(int *)(param_1 + 0x90) == 0) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
if ((*(uint *)(param_1 + 0xac) & 0x100) != 0) {
|
|
|
|
FUN_00512710(0,0);
|
|
|
|
}
|
|
|
|
*(undefined4 *)(param_1 + 0xd0) = 0;
|
|
|
|
local_48 = &PTR_LAB_00797910;
|
|
|
|
local_44 = 0;
|
|
|
|
local_40 = 0x3f800000;
|
|
|
|
local_3c = 0;
|
|
|
|
local_38 = 0;
|
|
|
|
local_34 = 0;
|
|
|
|
local_c = 0;
|
|
|
|
local_8 = 0;
|
|
|
|
local_4 = 0;
|
|
|
|
FUN_00535b30();
|
|
|
|
local_44 = *(undefined4 *)(param_1 + 0x4c);
|
|
|
|
FUN_00513730(param_2,&local_40);
|
|
|
|
if ((*(int *)(param_1 + 0x10) == 0) || (iVar2 = FUN_00518b90(), iVar2 == 0)) {
|
|
|
|
if ((*(int *)(param_1 + 0xc4) == 0) && ((*(uint *)(param_1 + 0xac) & 2) != 0)) {
|
|
|
|
*(uint *)(param_1 + 0xac) = *(uint *)(param_1 + 0xac) & 0xffffff7f;
|
|
|
|
}
|
|
|
|
local_c = *(undefined4 *)(param_1 + 0x84);
|
|
|
|
local_8 = *(undefined4 *)(param_1 + 0x88);
|
|
|
|
local_4 = *(undefined4 *)(param_1 + 0x8c);
|
|
|
|
FUN_00514b90(&local_40);
|
|
|
|
local_60 = 0;
|
|
|
|
*(undefined4 *)(param_1 + 0x150) = 0;
|
|
|
|
local_5c = 0;
|
|
|
|
local_58 = 0;
|
|
|
|
*(undefined4 *)(param_1 + 0x154) = 0;
|
|
|
|
*(undefined4 *)(param_1 + 0x158) = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
puVar3 = (undefined4 *)(param_1 + 0x84);
|
|
|
|
cVar1 = FUN_0050a9e0(puVar3);
|
|
|
|
if (cVar1 == '\0') {
|
|
|
|
if ((*(uint *)(param_1 + 0xa8) & 0x100) == 0) {
|
|
|
|
if (((*(uint *)(param_1 + 0xa8) & 0x800000) != 0) && (iVar2 = FUN_0050f280(), iVar2 == 0))
|
|
|
|
{
|
|
|
|
fVar4 = (float10)FUN_004576f0();
|
|
|
|
FUN_00536b80((float)fVar4);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
FUN_00452500(&local_60,puVar3);
|
|
|
|
FUN_0043e880();
|
|
|
|
FUN_00536af0(&local_60);
|
|
|
|
}
|
|
|
|
iVar2 = FUN_005138c0(param_1 + 0x48,&local_48,0);
|
|
|
|
if (iVar2 == 0) {
|
|
|
|
local_c = *puVar3;
|
|
|
|
local_4 = *(undefined4 *)(param_1 + 0x8c);
|
|
|
|
local_8 = *(undefined4 *)(param_1 + 0x88);
|
|
|
|
FUN_00514b90(&local_40);
|
|
|
|
local_60 = 0;
|
|
|
|
*(undefined4 *)(param_1 + 0x150) = 0;
|
|
|
|
local_5c = 0;
|
|
|
|
local_58 = 0;
|
|
|
|
*(undefined4 *)(param_1 + 0x154) = 0;
|
|
|
|
*(undefined4 *)(param_1 + 0x158) = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
FUN_0050aa30(&local_60,iVar2 + 0xc0);
|
|
|
|
puVar3 = (undefined4 *)FUN_00455f00(local_54,param_2);
|
|
|
|
local_60 = *puVar3;
|
|
|
|
local_5c = puVar3[1];
|
|
|
|
local_58 = puVar3[2];
|
|
|
|
*(undefined4 *)(param_1 + 0x150) = local_60;
|
|
|
|
*(undefined4 *)(param_1 + 0x154) = local_5c;
|
|
|
|
*(undefined4 *)(param_1 + 0x158) = local_58;
|
|
|
|
FUN_00515e30(iVar2);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
local_c = *puVar3;
|
|
|
|
local_8 = *(undefined4 *)(param_1 + 0x88);
|
|
|
|
local_4 = *(undefined4 *)(param_1 + 0x8c);
|
|
|
|
FUN_00514b90(&local_40);
|
|
|
|
local_60 = 0;
|
|
|
|
*(undefined4 *)(param_1 + 0x150) = 0;
|
|
|
|
local_5c = 0;
|
|
|
|
local_58 = 0;
|
|
|
|
*(undefined4 *)(param_1 + 0x154) = 0;
|
|
|
|
*(undefined4 *)(param_1 + 0x158) = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x11c) != 0) {
|
|
|
|
FUN_0051ab00();
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x124) != 0) {
|
|
|
|
FUN_0051b5c0();
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0xc4) != 0) {
|
|
|
|
FUN_00524ef0();
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
FUN_00518890();
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 200) != 0) {
|
|
|
|
FUN_00555d80();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x128) != 0) {
|
|
|
|
FUN_0051c330();
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x30) != 0) {
|
|
|
|
FUN_0051bfb0();
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005164e0 at 0x005164E0 (size: 72) ---
|
|
|
|
|
|
void __thiscall FUN_005164e0(int param_1,undefined4 param_2,undefined4 param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_005119a0(param_2);
|
|
|
|
FUN_00425f10(param_3);
|
|
|
|
if (((*(uint *)(param_1 + 0xa8) & 0x1000) == 0) && (*(int *)(param_1 + 0x10) != 0)) {
|
|
|
|
FUN_00519e40(param_1 + 0x50);
|
|
|
|
}
|
|
|
|
FUN_005148a0();
|
|
|
|
FUN_00515c60();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00516530 at 0x00516530 (size: 84) ---
|
|
|
|
|
|
void __fastcall FUN_00516530(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
ushort uVar1;
|
|
|
|
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
if (*(int *)(param_1 + 0x4c) == 0) {
|
|
|
|
if (*(char *)(param_1 + 0x2c) == '\0') {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
if ((*(uint *)(param_1 + 0xa8) & 0x1000) == 0) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
FUN_00515570();
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
FUN_00515d30();
|
|
|
|
}
|
|
|
|
for (uVar1 = 0;
|
|
|
|
(*(ushort **)(param_1 + 0x44) != (ushort *)0x0 && (uVar1 < **(ushort **)(param_1 + 0x44)));
|
|
|
|
uVar1 = uVar1 + 1) {
|
|
|
|
FUN_00516530();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00516590 at 0x00516590 (size: 192) ---
|
|
|
|
|
|
undefined4 __thiscall FUN_00516590(int param_1,uint param_2,undefined4 param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
uint uVar1;
|
|
|
|
int iVar2;
|
|
|
|
|
|
|
|
uVar1 = param_2;
|
|
|
|
if (param_2 != 0) {
|
|
|
|
iVar2 = FUN_00510340(param_1,param_3);
|
|
|
|
if (iVar2 != 0) {
|
|
|
|
FUN_00513f70();
|
|
|
|
FUN_005160a0();
|
|
|
|
*(uint *)(param_1 + 0x40) = uVar1;
|
|
|
|
if (*(int *)(uVar1 + 0x90) != 0) {
|
|
|
|
FUN_00513e90(*(int *)(uVar1 + 0x90));
|
|
|
|
if (*(int *)(uVar1 + 0x44) != 0) {
|
|
|
|
iVar2 = FUN_0051bbb0(param_1,¶m_2);
|
|
|
|
if (iVar2 != 0) {
|
|
|
|
FUN_00513850(param_1,*(undefined4 *)
|
|
|
|
(*(int *)(*(int *)(uVar1 + 0x44) + 0x14) + (param_2 & 0xffff) * 4)
|
|
|
|
,(param_2 & 0xffff) * 0x40 + *(int *)(*(int *)(uVar1 + 0x44) + 0xc));
|
|
|
|
FUN_00516530();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (((*(uint *)(*(int *)(param_1 + 0x40) + 0xa8) & 0x4000) != 0) &&
|
|
|
|
(*(uint *)(param_1 + 0xa8) = *(uint *)(param_1 + 0xa8) | 0x20,
|
|
|
|
*(int *)(param_1 + 0x10) != 0)) {
|
|
|
|
FUN_00518e30(1);
|
|
|
|
}
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00516650 at 0x00516650 (size: 117) ---
|
|
|
|
|
|
undefined4 __thiscall FUN_00516650(int param_1,int param_2,undefined4 param_3,undefined4 param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
|
|
|
|
if ((param_2 != 0) && (iVar1 = FUN_005103c0(param_1,param_3,param_4), iVar1 != 0)) {
|
|
|
|
*(undefined1 *)(param_1 + 0x2c) = *(undefined1 *)(param_2 + 0x2c);
|
|
|
|
FUN_00513f70();
|
|
|
|
FUN_005160a0();
|
|
|
|
*(int *)(param_1 + 0x40) = param_2;
|
|
|
|
if (*(int *)(param_2 + 0x90) != 0) {
|
|
|
|
FUN_00513e90(*(int *)(param_2 + 0x90));
|
|
|
|
FUN_00513850(param_1,param_3,param_4);
|
|
|
|
FUN_00516530();
|
|
|
|
}
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005166d0 at 0x005166D0 (size: 314) ---
|
|
|
|
|
|
int __thiscall FUN_005166d0(int param_1,undefined4 param_2,int param_3,int param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 uVar1;
|
|
|
|
int iVar2;
|
|
|
|
int iVar3;
|
|
|
|
int iVar4;
|
|
|
|
|
|
|
|
iVar3 = param_4;
|
|
|
|
uVar1 = *(undefined4 *)(param_4 + 0x24);
|
|
|
|
if (*(int *)(param_1 + 0x90) == 0) {
|
|
|
|
FUN_00512a70();
|
|
|
|
}
|
|
|
|
param_4 = 0;
|
|
|
|
FUN_00512850(param_2,uVar1,¶m_4,*(uint *)(param_3 + 0x48) >> 5 & 1,1);
|
|
|
|
iVar4 = param_4;
|
|
|
|
if (param_4 == 0) {
|
|
|
|
FUN_00512a10();
|
|
|
|
FUN_00514ca0(param_2);
|
|
|
|
FUN_00508ce0(param_1,*(undefined4 *)(param_1 + 0x4c));
|
|
|
|
*(uint *)(param_1 + 0xac) = *(uint *)(param_1 + 0xac) & 0xffffff7f;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
if (*(int **)(param_1 + 300) != (int *)0x0) {
|
|
|
|
iVar2 = (**(code **)(**(int **)(param_1 + 300) + 0x74))();
|
|
|
|
if (iVar2 != 0) {
|
|
|
|
LAB_00516754:
|
|
|
|
iVar3 = FUN_00516160(iVar4,param_2);
|
|
|
|
return iVar3;
|
|
|
|
}
|
|
|
|
iVar2 = (**(code **)(**(int **)(param_1 + 300) + 0x78))();
|
|
|
|
if (iVar2 != 0) goto LAB_00516754;
|
|
|
|
iVar2 = (**(code **)(**(int **)(param_1 + 300) + 0x7c))();
|
|
|
|
if (iVar2 != 0) goto LAB_00516754;
|
|
|
|
}
|
|
|
|
if ((*(byte *)(param_3 + 0x48) & 0x20) != 0) {
|
|
|
|
*(undefined4 *)(iVar3 + 0x2f8) = 1;
|
|
|
|
}
|
|
|
|
iVar4 = FUN_00512960(iVar4,param_2,iVar3,param_3);
|
|
|
|
if (iVar4 == 0) {
|
|
|
|
iVar3 = FUN_00515280(iVar3 + 0x270,0,0);
|
|
|
|
return (-(uint)(iVar3 != 0) & 2) + 2;
|
|
|
|
}
|
|
|
|
if (*(int *)(iVar3 + 0xbc) == 0) {
|
|
|
|
return 3;
|
|
|
|
}
|
|
|
|
iVar3 = FUN_00515e30(iVar3);
|
|
|
|
if (iVar3 == 0) {
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00516810 at 0x00516810 (size: 486) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void __fastcall FUN_00516810(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
float fVar1;
|
|
|
|
undefined4 uVar2;
|
|
|
|
float *pfVar3;
|
|
|
|
float10 fVar4;
|
|
|
|
double local_18 [2];
|
|
|
|
|
|
|
|
if (((*(int *)(param_1 + 0x40) != 0) || (*(int *)(param_1 + 0x90) == 0)) ||
|
|
|
|
((*(uint *)(param_1 + 0xa8) & 0x1000000) != 0)) {
|
|
|
|
*(uint *)(param_1 + 0xac) = *(uint *)(param_1 + 0xac) & 0xffffff7f;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
if (DAT_00844d68 != 0) {
|
|
|
|
pfVar3 = (float *)FUN_0050aa30(local_18,param_1 + 0x48);
|
|
|
|
*(float *)(param_1 + 0x14) = *pfVar3;
|
|
|
|
*(float *)(param_1 + 0x18) = pfVar3[1];
|
|
|
|
*(float *)(param_1 + 0x1c) = pfVar3[2];
|
|
|
|
fVar1 = *(float *)(param_1 + 0x14);
|
|
|
|
fVar1 = SQRT(*(float *)(param_1 + 0x1c) * *(float *)(param_1 + 0x1c) +
|
|
|
|
*(float *)(param_1 + 0x18) * *(float *)(param_1 + 0x18) + fVar1 * fVar1);
|
|
|
|
*(float *)(param_1 + 0x20) = fVar1;
|
|
|
|
if ((fVar1 <= _DAT_007c789c) || (*(int *)(DAT_00844d64 + 0x10) == 0)) {
|
|
|
|
FUN_00510710(1);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*(uint *)(param_1 + 0xac) = *(uint *)(param_1 + 0xac) & 0xffffff7f;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
uVar2 = DAT_008379ac;
|
|
|
|
fVar4 = (float10)(double)CONCAT44(DAT_008379ac,DAT_008379a8) -
|
|
|
|
(float10)*(double *)(param_1 + 0xd8);
|
|
|
|
_DAT_008eee70 = *(double *)(param_1 + 0xd8);
|
|
|
|
local_18[0] = (double)fVar4;
|
|
|
|
if (fVar4 < (float10)_DAT_007c78bc != (fVar4 == (float10)_DAT_007c78bc)) {
|
|
|
|
*(undefined4 *)(param_1 + 0xd8) = DAT_008379a8;
|
|
|
|
*(undefined4 *)(param_1 + 0xdc) = uVar2;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
if ((float10)_DAT_007c7840 < fVar4) {
|
|
|
|
*(undefined4 *)(param_1 + 0xd8) = DAT_008379a8;
|
|
|
|
*(undefined4 *)(param_1 + 0xdc) = uVar2;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
if (fVar4 < (float10)_DAT_00844da8 == (fVar4 == (float10)_DAT_00844da8)) {
|
|
|
|
do {
|
|
|
|
_DAT_008eee70 = _DAT_008eee70 + _DAT_00844da8;
|
|
|
|
FUN_005161b0((float)_DAT_00844da8);
|
|
|
|
fVar4 = (float10)local_18[0] - (float10)_DAT_00844da8;
|
|
|
|
local_18[0] = (double)fVar4;
|
|
|
|
} while ((float10)_DAT_00844da8 < fVar4);
|
|
|
|
if (fVar4 <= (float10)_DAT_00844da0) goto LAB_005169c2;
|
|
|
|
}
|
|
|
|
_DAT_008eee70 = (double)((float10)_DAT_008eee70 + fVar4);
|
|
|
|
FUN_005161b0((float)fVar4);
|
|
|
|
LAB_005169c2:
|
|
|
|
uVar2 = DAT_008eee74;
|
|
|
|
*(undefined4 *)(param_1 + 0xd8) = DAT_008eee70;
|
|
|
|
*(undefined4 *)(param_1 + 0xdc) = uVar2;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00516a00 at 0x00516A00 (size: 305) ---
|
|
|
|
|
|
int FUN_00516a00(int param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
float fVar1;
|
|
|
|
float fVar2;
|
|
|
|
int iVar3;
|
|
|
|
float *pfVar4;
|
|
|
|
float10 fVar5;
|
|
|
|
float10 fVar6;
|
|
|
|
uint local_58;
|
|
|
|
undefined **local_48;
|
|
|
|
undefined4 local_44;
|
|
|
|
undefined4 local_40;
|
|
|
|
undefined4 local_3c;
|
|
|
|
undefined4 local_38;
|
|
|
|
undefined4 local_34;
|
|
|
|
undefined4 local_30;
|
|
|
|
undefined4 local_2c;
|
|
|
|
undefined4 local_28;
|
|
|
|
undefined4 local_24;
|
|
|
|
undefined4 local_20;
|
|
|
|
undefined4 local_1c;
|
|
|
|
undefined4 local_18;
|
|
|
|
undefined4 local_14;
|
|
|
|
undefined4 local_10;
|
|
|
|
undefined4 local_c;
|
|
|
|
undefined4 local_8;
|
|
|
|
undefined4 local_4;
|
|
|
|
|
|
|
|
iVar3 = 1;
|
|
|
|
local_58 = 0;
|
|
|
|
if (*(int *)(param_1 + 0x60) != 0) {
|
|
|
|
pfVar4 = (float *)FUN_00507820();
|
|
|
|
do {
|
|
|
|
local_44 = *(undefined4 *)(param_1 + 4);
|
|
|
|
local_c = *(undefined4 *)(param_1 + 0x3c);
|
|
|
|
local_8 = *(undefined4 *)(param_1 + 0x40);
|
|
|
|
local_4 = *(undefined4 *)(param_1 + 0x44);
|
|
|
|
local_40 = *(undefined4 *)(param_1 + 8);
|
|
|
|
local_3c = *(undefined4 *)(param_1 + 0xc);
|
|
|
|
local_38 = *(undefined4 *)(param_1 + 0x10);
|
|
|
|
local_34 = *(undefined4 *)(param_1 + 0x14);
|
|
|
|
local_30 = *(undefined4 *)(param_1 + 0x18);
|
|
|
|
local_2c = *(undefined4 *)(param_1 + 0x1c);
|
|
|
|
local_28 = *(undefined4 *)(param_1 + 0x20);
|
|
|
|
local_24 = *(undefined4 *)(param_1 + 0x24);
|
|
|
|
local_20 = *(undefined4 *)(param_1 + 0x28);
|
|
|
|
local_1c = *(undefined4 *)(param_1 + 0x2c);
|
|
|
|
local_18 = *(undefined4 *)(param_1 + 0x30);
|
|
|
|
local_14 = *(undefined4 *)(param_1 + 0x34);
|
|
|
|
local_10 = *(undefined4 *)(param_1 + 0x38);
|
|
|
|
local_48 = &PTR_LAB_00797910;
|
|
|
|
fVar5 = (float10)FUN_0042c860(0xbf800000,0x3f800000);
|
|
|
|
fVar1 = *(float *)(param_1 + 0x58);
|
|
|
|
fVar6 = (float10)FUN_0042c860(0xbf800000,0x3f800000);
|
|
|
|
fVar2 = *(float *)(param_1 + 0x5c);
|
|
|
|
*pfVar4 = (float)(fVar5 * (float10)fVar1) + *pfVar4;
|
|
|
|
pfVar4[2] = pfVar4[2];
|
|
|
|
pfVar4[1] = (float)(fVar6 * (float10)fVar2 + (float10)pfVar4[1]);
|
|
|
|
iVar3 = FUN_005166d0(&local_48,param_1,param_2);
|
|
|
|
if (iVar3 == 0) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
local_58 = local_58 + 1;
|
|
|
|
} while (local_58 < *(uint *)(param_1 + 0x60));
|
|
|
|
}
|
|
|
|
return iVar3;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00516b40 at 0x00516B40 (size: 115) ---
|
|
|
|
|
|
void FUN_00516b40(int param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
undefined **local_48;
|
|
|
|
undefined4 local_44;
|
|
|
|
|
|
|
|
if ((*(uint *)(param_1 + 0x48) & 0x200) != 0) {
|
|
|
|
FUN_00516a00(param_1,param_2);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
local_44 = *(undefined4 *)(param_1 + 4);
|
|
|
|
local_48 = &PTR_LAB_00797910;
|
|
|
|
FUN_00425f10(param_1 + 8);
|
|
|
|
iVar1 = FUN_005166d0(&local_48,param_1,param_2);
|
|
|
|
if ((iVar1 != 0) && ((*(uint *)(param_1 + 0x48) & 0x100) != 0)) {
|
|
|
|
FUN_00516a00(param_1,param_2);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00516bc0 at 0x00516BC0 (size: 173) ---
|
|
|
|
|
|
undefined4 __fastcall FUN_00516bc0(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
int iVar2;
|
|
|
|
undefined *puVar3;
|
|
|
|
undefined4 uVar4;
|
|
|
|
undefined4 uVar5;
|
|
|
|
undefined4 unaff_EBX;
|
|
|
|
|
|
|
|
iVar1 = FUN_0050bc20();
|
|
|
|
if (iVar1 == 0) {
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
thunk_FUN_0050da00(param_1,0);
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
iVar2 = FUN_00518b90();
|
|
|
|
if (iVar2 != 0) {
|
|
|
|
uVar5 = *(undefined4 *)(param_1 + 0x114);
|
|
|
|
if (*(int *)(param_1 + 0x10) == 0) {
|
|
|
|
puVar3 = (undefined *)0x0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
puVar3 = (undefined *)FUN_00518ba0();
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x10) == 0) {
|
|
|
|
uVar4 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar4 = FUN_00518b90();
|
|
|
|
}
|
|
|
|
goto LAB_00516c3c;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
uVar5 = 0x3f800000;
|
|
|
|
puVar3 = &DAT_00844eec;
|
|
|
|
uVar4 = 1;
|
|
|
|
LAB_00516c3c:
|
|
|
|
FUN_0050a920(uVar4,puVar3,uVar5);
|
|
|
|
uVar5 = FUN_00516b40(unaff_EBX,iVar1);
|
|
|
|
FUN_0050a890(iVar1);
|
|
|
|
return uVar5;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00516c70 at 0x00516C70 (size: 220) ---
|
|
|
|
|
|
undefined4 __thiscall FUN_00516c70(int param_1,int param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
undefined4 uVar2;
|
|
|
|
undefined1 local_64 [100];
|
|
|
|
|
|
|
|
uVar2 = DAT_008379ac;
|
|
|
|
if (*(int *)(param_1 + 0x40) == 0) {
|
|
|
|
*(undefined4 *)(param_1 + 0xd8) = DAT_008379a8;
|
|
|
|
*(undefined4 *)(param_1 + 0xdc) = uVar2;
|
|
|
|
uVar2 = 1;
|
|
|
|
if (param_2 != 0) {
|
|
|
|
uVar2 = 0x11;
|
|
|
|
}
|
|
|
|
FUN_0051c680();
|
|
|
|
FUN_0051c6d0(param_1 + 0x48);
|
|
|
|
FUN_0051c670(uVar2);
|
|
|
|
iVar1 = FUN_00516bc0(local_64);
|
|
|
|
if (iVar1 == 0) {
|
|
|
|
FUN_005aebf0();
|
|
|
|
uVar2 = DAT_008379ac;
|
|
|
|
if ((*(byte *)(param_1 + 0xa8) & 1) == 0) {
|
|
|
|
if (-1 < (char)*(uint *)(param_1 + 0xac)) {
|
|
|
|
*(undefined4 *)(param_1 + 0xd8) = DAT_008379a8;
|
|
|
|
*(undefined4 *)(param_1 + 0xdc) = uVar2;
|
|
|
|
}
|
|
|
|
*(uint *)(param_1 + 0xac) = *(uint *)(param_1 + 0xac) | 0x80;
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
FUN_005188a0();
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0xc4) != 0) {
|
|
|
|
FUN_00524f40();
|
|
|
|
}
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
FUN_005aebf0();
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00516d50 at 0x00516D50 (size: 90) ---
|
|
|
|
|
|
undefined4 __fastcall FUN_00516d50(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
undefined1 local_64 [100];
|
|
|
|
|
|
|
|
FUN_00512a70();
|
|
|
|
FUN_0051c680();
|
|
|
|
FUN_0051c6d0(param_1 + 0x48);
|
|
|
|
FUN_0051c670(0x11);
|
|
|
|
iVar1 = FUN_00516bc0(local_64);
|
|
|
|
if (iVar1 != 0) {
|
|
|
|
FUN_005aebf0();
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
FUN_005aebf0();
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00516db0 at 0x00516DB0 (size: 91) ---
|
|
|
|
|
|
undefined4 FUN_00516db0(undefined4 param_1,int param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 uVar1;
|
|
|
|
undefined1 local_64 [100];
|
|
|
|
|
|
|
|
uVar1 = 0x1002;
|
|
|
|
if (param_2 != 0) {
|
|
|
|
uVar1 = 0x1012;
|
|
|
|
}
|
|
|
|
FUN_0051c680();
|
|
|
|
FUN_0051c6d0(param_1);
|
|
|
|
FUN_0051c670(uVar1);
|
|
|
|
uVar1 = FUN_00516bc0(local_64);
|
|
|
|
FUN_005aebf0();
|
|
|
|
return uVar1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00516e10 at 0x00516E10 (size: 26) ---
|
|
|
|
|
|
void FUN_00516e10(undefined4 param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_00514ca0(param_1);
|
|
|
|
FUN_00516c70(1);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00516e30 at 0x00516E30 (size: 267) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
undefined4 __thiscall FUN_00516e30(int param_1,undefined4 param_2,uint param_3,int param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
ushort uVar1;
|
|
|
|
uint uVar2;
|
|
|
|
int iVar3;
|
|
|
|
undefined4 uVar4;
|
|
|
|
uint uVar5;
|
|
|
|
bool bVar6;
|
|
|
|
undefined1 local_64 [100];
|
|
|
|
|
|
|
|
uVar1 = *(ushort *)(param_1 + 0x16c);
|
|
|
|
uVar2 = (uint)uVar1 - (param_3 & 0xffff);
|
|
|
|
uVar5 = (int)uVar2 >> 0x1f;
|
|
|
|
if ((int)((uVar2 ^ uVar5) - uVar5) < 0x8000) {
|
|
|
|
bVar6 = (ushort)param_3 < uVar1;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
bVar6 = uVar1 < (ushort)param_3;
|
|
|
|
}
|
|
|
|
if (!bVar6) {
|
|
|
|
iVar3 = FUN_00451b50(4,param_3);
|
|
|
|
if ((iVar3 != 0) || (*(int *)(param_1 + 0x90) == 0)) {
|
|
|
|
FUN_005159d0(1);
|
|
|
|
FUN_0051c680();
|
|
|
|
FUN_0051c6d0(param_2);
|
|
|
|
FUN_0051c670(0x1012);
|
|
|
|
FUN_00516bc0(local_64);
|
|
|
|
FUN_005aebf0();
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
if (param_4 != 0) {
|
|
|
|
if (*(float *)(param_1 + 0x20) < _DAT_007c789c) {
|
|
|
|
uVar4 = FUN_0050f5e0();
|
|
|
|
FUN_00510fc0(param_2,uVar4);
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 200) != 0) {
|
|
|
|
FUN_00555e40();
|
|
|
|
}
|
|
|
|
FUN_00516db0(param_2,1);
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00516f40 at 0x00516F40 (size: 253) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
int FUN_00516f40(uint *param_1,int param_2,float *param_3,int param_4,int param_5)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
int iVar2;
|
|
|
|
|
|
|
|
*param_1 = 0;
|
|
|
|
if (((_DAT_007c7944 <= ABS(*param_3)) || (_DAT_007c7944 <= ABS(param_3[1]))) ||
|
|
|
|
(_DAT_007c7944 <= ABS(param_3[2]))) {
|
|
|
|
*param_1 = 1;
|
|
|
|
}
|
|
|
|
if (param_4 != 0) {
|
|
|
|
*param_1 = *param_1 | 2;
|
|
|
|
}
|
|
|
|
if (param_5 != 0) {
|
|
|
|
*param_1 = *param_1 | 4;
|
|
|
|
}
|
|
|
|
iVar1 = FUN_00527450();
|
|
|
|
iVar2 = iVar1 + 4;
|
|
|
|
if (_DAT_007c7944 <= ABS(*(float *)(param_2 + 8))) {
|
|
|
|
iVar2 = iVar1 + 8;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*param_1 = *param_1 | 8;
|
|
|
|
}
|
|
|
|
if (_DAT_007c7944 <= ABS(*(float *)(param_2 + 0xc))) {
|
|
|
|
iVar2 = iVar2 + 4;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*param_1 = *param_1 | 0x10;
|
|
|
|
}
|
|
|
|
if (_DAT_007c7944 <= ABS(*(float *)(param_2 + 0x10))) {
|
|
|
|
iVar2 = iVar2 + 4;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*param_1 = *param_1 | 0x20;
|
|
|
|
}
|
|
|
|
if (_DAT_007c7944 <= ABS(*(float *)(param_2 + 0x14))) {
|
|
|
|
iVar2 = iVar2 + 4;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*param_1 = *param_1 | 0x40;
|
|
|
|
}
|
|
|
|
if ((*param_1 & 1) != 0) {
|
|
|
|
iVar2 = iVar2 + 0xc;
|
|
|
|
}
|
|
|
|
if ((*param_1 & 2) != 0) {
|
|
|
|
iVar2 = iVar2 + 4;
|
|
|
|
}
|
|
|
|
return iVar2 + 8;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00517040 at 0x00517040 (size: 57) ---
|
|
|
|
|
|
undefined4 __thiscall FUN_00517040(undefined4 *param_1,int *param_2,uint param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
|
|
|
|
if (param_3 < 0xc) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
*param_1 = *(undefined4 *)*param_2;
|
|
|
|
iVar1 = *param_2;
|
|
|
|
*param_2 = iVar1 + 4;
|
|
|
|
param_1[1] = *(undefined4 *)(iVar1 + 4);
|
|
|
|
iVar1 = *param_2;
|
|
|
|
*param_2 = iVar1 + 4;
|
|
|
|
param_1[2] = *(undefined4 *)(iVar1 + 4);
|
|
|
|
*param_2 = *param_2 + 4;
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005170c0 at 0x005170C0 (size: 234) ---
|
|
|
|
|
|
void FUN_005170c0(int *param_1,uint param_2,uint param_3,int param_4,undefined4 *param_5,
|
|
|
|
undefined4 param_6,undefined4 param_7,undefined2 param_8,undefined2 param_9,
|
|
|
|
undefined2 param_10,undefined2 param_11)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
|
|
|
|
*(uint *)*param_1 = param_3;
|
|
|
|
*param_1 = *param_1 + 4;
|
|
|
|
FUN_005aa7f0(param_1,param_2);
|
|
|
|
if ((param_3 & 8) == 0) {
|
|
|
|
*(undefined4 *)*param_1 = *(undefined4 *)(param_4 + 8);
|
|
|
|
*param_1 = *param_1 + 4;
|
|
|
|
}
|
|
|
|
if ((param_3 & 0x10) == 0) {
|
|
|
|
*(undefined4 *)*param_1 = *(undefined4 *)(param_4 + 0xc);
|
|
|
|
*param_1 = *param_1 + 4;
|
|
|
|
}
|
|
|
|
if ((param_3 & 0x20) == 0) {
|
|
|
|
*(undefined4 *)*param_1 = *(undefined4 *)(param_4 + 0x10);
|
|
|
|
*param_1 = *param_1 + 4;
|
|
|
|
}
|
|
|
|
if ((param_3 & 0x40) == 0) {
|
|
|
|
*(undefined4 *)*param_1 = *(undefined4 *)(param_4 + 0x14);
|
|
|
|
*param_1 = *param_1 + 4;
|
|
|
|
}
|
|
|
|
if (((param_3 & 1) != 0) && (0xb < param_2)) {
|
|
|
|
*(undefined4 *)*param_1 = *param_5;
|
|
|
|
iVar1 = *param_1;
|
|
|
|
*param_1 = iVar1 + 4;
|
|
|
|
*(undefined4 *)(iVar1 + 4) = param_5[1];
|
|
|
|
iVar1 = *param_1;
|
|
|
|
*param_1 = iVar1 + 4;
|
|
|
|
*(undefined4 *)(iVar1 + 4) = param_5[2];
|
|
|
|
*param_1 = *param_1 + 4;
|
|
|
|
}
|
|
|
|
if ((param_3 & 2) != 0) {
|
|
|
|
*(undefined4 *)*param_1 = param_6;
|
|
|
|
*param_1 = *param_1 + 4;
|
|
|
|
}
|
|
|
|
*(undefined2 *)*param_1 = param_8;
|
|
|
|
iVar1 = *param_1;
|
|
|
|
*param_1 = iVar1 + 2;
|
|
|
|
*(undefined2 *)(iVar1 + 2) = param_9;
|
|
|
|
iVar1 = *param_1;
|
|
|
|
*param_1 = iVar1 + 2;
|
|
|
|
*(undefined2 *)(iVar1 + 2) = param_10;
|
|
|
|
iVar1 = *param_1;
|
|
|
|
*param_1 = iVar1 + 2;
|
|
|
|
*(undefined2 *)(iVar1 + 2) = param_11;
|
|
|
|
*param_1 = *param_1 + 2;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005173a0 at 0x005173A0 (size: 77) ---
|
|
|
|
|
|
uint __fastcall FUN_005173a0(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
uint uVar1;
|
|
|
|
int iVar2;
|
|
|
|
int iVar3;
|
|
|
|
undefined4 local_4;
|
|
|
|
|
|
|
|
local_4 = 0;
|
|
|
|
iVar2 = (**(code **)(*(int *)(param_1 + 4) + 0xc))(&local_4,0);
|
|
|
|
iVar3 = (**(code **)(*(int *)(param_1 + 0x3c) + 0xc))(&stack0xfffffff4,0);
|
|
|
|
uVar1 = iVar2 + 9 + iVar3;
|
|
|
|
if ((uVar1 & 3) != 0) {
|
|
|
|
return (4 - (uVar1 & 3)) + uVar1;
|
|
|
|
}
|
|
|
|
return uVar1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00517570 at 0x00517570 (size: 124) ---
|
|
|
|
|
|
undefined4 * __thiscall
|
|
|
|
FUN_00517570(undefined4 *param_1,int param_2,undefined4 param_3,undefined2 param_4,
|
|
|
|
undefined2 param_5,undefined2 param_6,undefined2 param_7)
|
|
|
|
|
|
|
|
{
|
|
|
|
*param_1 = &PTR_LAB_007c7970;
|
|
|
|
param_1[1] = &PTR_LAB_00797910;
|
|
|
|
param_1[2] = 0;
|
|
|
|
param_1[3] = 0x3f800000;
|
|
|
|
param_1[4] = 0;
|
|
|
|
param_1[5] = 0;
|
|
|
|
param_1[6] = 0;
|
|
|
|
param_1[0x10] = 0;
|
|
|
|
param_1[0x11] = 0;
|
|
|
|
param_1[0x12] = 0;
|
|
|
|
FUN_00535b30();
|
|
|
|
param_1[2] = *(undefined4 *)(param_2 + 4);
|
|
|
|
FUN_00425f10(param_2 + 8);
|
|
|
|
*(undefined2 *)(param_1 + 0x14) = param_4;
|
|
|
|
param_1[0x13] = param_3;
|
|
|
|
*(undefined2 *)((int)param_1 + 0x56) = param_7;
|
|
|
|
*(undefined2 *)((int)param_1 + 0x52) = param_5;
|
|
|
|
*(undefined2 *)(param_1 + 0x15) = param_6;
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00517770 at 0x00517770 (size: 147) ---
|
|
|
|
|
|
undefined4 * __thiscall
|
|
|
|
FUN_00517770(undefined4 *param_1,undefined4 param_2,undefined4 *param_3,int param_4,
|
|
|
|
undefined2 param_5,undefined2 param_6,undefined2 param_7,undefined2 param_8)
|
|
|
|
|
|
|
|
{
|
|
|
|
*param_1 = &PTR_LAB_007c7984;
|
|
|
|
param_1[5] = &PTR_LAB_00797910;
|
|
|
|
param_1[6] = 0;
|
|
|
|
param_1[7] = 0x3f800000;
|
|
|
|
param_1[8] = 0;
|
|
|
|
param_1[9] = 0;
|
|
|
|
param_1[10] = 0;
|
|
|
|
param_1[0x14] = 0;
|
|
|
|
param_1[0x15] = 0;
|
|
|
|
param_1[0x16] = 0;
|
|
|
|
FUN_00535b30();
|
|
|
|
param_1[1] = param_2;
|
|
|
|
param_1[2] = *param_3;
|
|
|
|
param_1[3] = param_3[1];
|
|
|
|
param_1[4] = param_3[2];
|
|
|
|
param_1[6] = *(undefined4 *)(param_4 + 4);
|
|
|
|
FUN_00425f10(param_4 + 8);
|
|
|
|
*(undefined2 *)(param_1 + 0x17) = param_5;
|
|
|
|
*(undefined2 *)((int)param_1 + 0x5e) = param_6;
|
|
|
|
*(undefined2 *)(param_1 + 0x18) = param_7;
|
|
|
|
*(undefined2 *)((int)param_1 + 0x62) = param_8;
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005179f0 at 0x005179F0 (size: 19) ---
|
|
|
|
|
|
void __fastcall FUN_005179f0(undefined4 *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
*param_1 = &PTR_FUN_007c7998;
|
|
|
|
*(undefined2 *)(param_1 + 1) = 0;
|
|
|
|
*(undefined2 *)((int)param_1 + 6) = 0;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00517a50 at 0x00517A50 (size: 63) ---
|
|
|
|
|
|
undefined4 __thiscall FUN_00517a50(int param_1,int *param_2,uint param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
|
|
|
|
if (param_3 < 4) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
*(undefined2 *)(param_1 + 4) = *(undefined2 *)*param_2;
|
|
|
|
iVar1 = *param_2;
|
|
|
|
*param_2 = iVar1 + 2;
|
|
|
|
*(undefined2 *)(param_1 + 6) = *(undefined2 *)(iVar1 + 2);
|
|
|
|
*param_2 = *param_2 + 2;
|
|
|
|
FUN_004fd1b0(param_2);
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00517ac0 at 0x00517AC0 (size: 46) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_00517ac0(undefined4 *param_1,byte param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
param_1[0xf] = &PTR_FUN_0079385c;
|
|
|
|
FUN_005200d0();
|
|
|
|
*param_1 = &PTR_FUN_0079385c;
|
|
|
|
if ((param_2 & 1) != 0) {
|
|
|
|
operator_delete(param_1);
|
|
|
|
}
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00517af0 at 0x00517AF0 (size: 173) ---
|
|
|
|
|
|
undefined4 * __thiscall
|
|
|
|
FUN_00517af0(undefined4 *param_1,undefined4 param_2,int param_3,undefined4 param_4,
|
|
|
|
undefined4 param_5,undefined2 param_6,undefined2 param_7,undefined2 param_8,
|
|
|
|
undefined2 param_9)
|
|
|
|
|
|
|
|
{
|
|
|
|
*param_1 = &PTR_FUN_007c795c;
|
|
|
|
FUN_0051f300();
|
|
|
|
param_1[0xf] = &PTR_LAB_00797910;
|
|
|
|
param_1[0x10] = 0;
|
|
|
|
param_1[0x11] = 0x3f800000;
|
|
|
|
param_1[0x12] = 0;
|
|
|
|
param_1[0x13] = 0;
|
|
|
|
param_1[0x14] = 0;
|
|
|
|
param_1[0x1e] = 0;
|
|
|
|
param_1[0x1f] = 0;
|
|
|
|
param_1[0x20] = 0;
|
|
|
|
FUN_00535b30();
|
|
|
|
FUN_0051f770(param_2);
|
|
|
|
param_1[0x10] = *(undefined4 *)(param_3 + 4);
|
|
|
|
FUN_00425f10(param_3 + 8);
|
|
|
|
param_1[0x22] = param_5;
|
|
|
|
param_1[0x21] = param_4;
|
|
|
|
*(undefined2 *)(param_1 + 0x23) = param_6;
|
|
|
|
*(undefined2 *)(param_1 + 0x24) = param_8;
|
|
|
|
*(undefined2 *)((int)param_1 + 0x8e) = param_7;
|
|
|
|
*(undefined2 *)((int)param_1 + 0x92) = param_9;
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00517c00 at 0x00517C00 (size: 78) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
float10 __fastcall FUN_00517c00(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
float10 fVar1;
|
|
|
|
|
|
|
|
fVar1 = (float10)FUN_0042c860(0xbf800000,0x3f800000);
|
|
|
|
fVar1 = fVar1 * (float10)*(float *)(param_1 + 0xe0) + (float10)*(float *)(param_1 + 0xe4);
|
|
|
|
if (fVar1 < (float10)_DAT_007c7a00) {
|
|
|
|
return (float10)_DAT_007c7a00;
|
|
|
|
}
|
|
|
|
if ((float10)_DAT_007c7a04 < fVar1) {
|
|
|
|
fVar1 = (float10)_DAT_007c7a04;
|
|
|
|
}
|
|
|
|
return fVar1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00517c50 at 0x00517C50 (size: 78) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
float10 __fastcall FUN_00517c50(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
float10 fVar1;
|
|
|
|
|
|
|
|
fVar1 = (float10)FUN_0042c860(0xbf800000,0x3f800000);
|
|
|
|
fVar1 = fVar1 * (float10)*(float *)(param_1 + 0xe0) + (float10)*(float *)(param_1 + 0xe8);
|
|
|
|
if (fVar1 < (float10)_DAT_007c7a00) {
|
|
|
|
return (float10)_DAT_007c7a00;
|
|
|
|
}
|
|
|
|
if ((float10)_DAT_007c7a04 < fVar1) {
|
|
|
|
fVar1 = (float10)_DAT_007c7a04;
|
|
|
|
}
|
|
|
|
return fVar1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00517ca0 at 0x00517CA0 (size: 78) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
float10 __fastcall FUN_00517ca0(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
float10 fVar1;
|
|
|
|
|
|
|
|
fVar1 = (float10)FUN_0042c860(0xbf800000,0x3f800000);
|
|
|
|
fVar1 = fVar1 * (float10)*(float *)(param_1 + 0xec) + (float10)*(float *)(param_1 + 0xf0);
|
|
|
|
if (fVar1 < (float10)DAT_00796344) {
|
|
|
|
return (float10)DAT_00796344;
|
|
|
|
}
|
|
|
|
if ((float10)_DAT_007938b0 < fVar1) {
|
|
|
|
fVar1 = (float10)_DAT_007938b0;
|
|
|
|
}
|
|
|
|
return fVar1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00517cf0 at 0x00517CF0 (size: 78) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
float10 __fastcall FUN_00517cf0(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
float10 fVar1;
|
|
|
|
|
|
|
|
fVar1 = (float10)FUN_0042c860(0xbf800000,0x3f800000);
|
|
|
|
fVar1 = fVar1 * (float10)*(float *)(param_1 + 0xec) + (float10)*(float *)(param_1 + 0xf4);
|
|
|
|
if (fVar1 < (float10)DAT_00796344) {
|
|
|
|
return (float10)DAT_00796344;
|
|
|
|
}
|
|
|
|
if ((float10)_DAT_007938b0 < fVar1) {
|
|
|
|
fVar1 = (float10)_DAT_007938b0;
|
|
|
|
}
|
|
|
|
return fVar1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00517d40 at 0x00517D40 (size: 50) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
float10 __fastcall FUN_00517d40(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
float10 fVar1;
|
|
|
|
|
|
|
|
fVar1 = (float10)FUN_0042c860(0xbf800000,0x3f800000);
|
|
|
|
fVar1 = fVar1 * (float10)*(double *)(param_1 + 0x70) + (float10)*(double *)(param_1 + 0x78);
|
|
|
|
if (fVar1 < (float10)_DAT_00795610) {
|
|
|
|
fVar1 = (float10)DAT_00796344;
|
|
|
|
}
|
|
|
|
return fVar1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00517d80 at 0x00517D80 (size: 305) ---
|
|
|
|
|
|
undefined4 * __fastcall FUN_00517d80(undefined4 *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_00415460(DAT_00844f88);
|
|
|
|
param_1[0xc] = &PTR_FUN_0079385c;
|
|
|
|
param_1[0xe] = 0;
|
|
|
|
param_1[0xf] = 0;
|
|
|
|
param_1[0x10] = 0;
|
|
|
|
*param_1 = &PTR_LAB_007c7a38;
|
|
|
|
param_1[0xc] = &PTR_LAB_007c7a20;
|
|
|
|
param_1[0x11] = DAT_00844f88;
|
|
|
|
param_1[0x12] = DAT_00844f88;
|
|
|
|
param_1[0x14] = 0;
|
|
|
|
param_1[0x15] = 0;
|
|
|
|
param_1[0x16] = 0;
|
|
|
|
param_1[0x17] = 0;
|
|
|
|
param_1[0x18] = 0;
|
|
|
|
param_1[0x1a] = 0;
|
|
|
|
param_1[0x1b] = 0;
|
|
|
|
param_1[0x1c] = 0;
|
|
|
|
param_1[0x1d] = 0;
|
|
|
|
param_1[0x1e] = 0;
|
|
|
|
param_1[0x1f] = 0;
|
|
|
|
param_1[0x23] = 0;
|
|
|
|
param_1[0x20] = 0;
|
|
|
|
param_1[0x21] = 0;
|
|
|
|
param_1[0x22] = 0;
|
|
|
|
param_1[0x24] = 0;
|
|
|
|
param_1[0x25] = 0;
|
|
|
|
param_1[0x26] = 0;
|
|
|
|
param_1[0x27] = 0;
|
|
|
|
param_1[0x28] = 0;
|
|
|
|
param_1[0x29] = 0;
|
|
|
|
param_1[0x2a] = 0;
|
|
|
|
param_1[0x2b] = 0;
|
|
|
|
param_1[0x2c] = 0;
|
|
|
|
param_1[0x2d] = 0;
|
|
|
|
param_1[0x2e] = 0;
|
|
|
|
param_1[0x2f] = 0;
|
|
|
|
param_1[0x30] = 0;
|
|
|
|
param_1[0x31] = 0;
|
|
|
|
param_1[0x38] = 0;
|
|
|
|
param_1[0x3b] = 0;
|
|
|
|
param_1[0x3c] = 0;
|
|
|
|
param_1[0x3d] = 0;
|
|
|
|
param_1[0x32] = 0x3f800000;
|
|
|
|
param_1[0x33] = 0x3f800000;
|
|
|
|
param_1[0x34] = 0x3f800000;
|
|
|
|
param_1[0x35] = 0x3f800000;
|
|
|
|
param_1[0x36] = 0x3f800000;
|
|
|
|
param_1[0x37] = 0x3f800000;
|
|
|
|
param_1[0x39] = 0x3f800000;
|
|
|
|
param_1[0x3a] = 0x3f800000;
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00517ee0 at 0x00517EE0 (size: 99) ---
|
|
|
|
|
|
void __fastcall FUN_00517ee0(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
float fVar1;
|
|
|
|
float fVar2;
|
|
|
|
|
|
|
|
fVar2 = *(float *)(param_1 + 0xcc) * (float)*(double *)(param_1 + 0x78);
|
|
|
|
fVar1 = *(float *)(param_1 + 0xa0);
|
|
|
|
if (*(float *)(param_1 + 0xa0) <= fVar2) {
|
|
|
|
fVar1 = fVar2;
|
|
|
|
}
|
|
|
|
*(float *)(param_1 + 0x8c) = fVar1;
|
|
|
|
*(undefined4 *)(param_1 + 0x80) = 0;
|
|
|
|
*(undefined4 *)(param_1 + 0x84) = 0;
|
|
|
|
*(undefined4 *)(param_1 + 0x88) = 0;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00517f50 at 0x00517F50 (size: 118) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
undefined4 __thiscall
|
|
|
|
FUN_00517f50(int param_1,int param_2,int param_3,float *param_4,double param_5)
|
|
|
|
|
|
|
|
{
|
|
|
|
if (((0 < *(int *)(param_1 + 0x60)) && (*(int *)(param_1 + 0x60) <= param_3)) ||
|
|
|
|
(*(int *)(param_1 + 0x58) <= param_2)) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
if ((*(uint *)(param_1 + 0x38) & 1) == 0) {
|
|
|
|
if ((*(uint *)(param_1 + 0x38) & 2) == 0) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
if ((double)param_4[2] * (double)param_4[2] +
|
|
|
|
(double)param_4[1] * (double)param_4[1] + (double)*param_4 * (double)*param_4 <=
|
|
|
|
*(double *)(param_1 + 0x50) * *(double *)(param_1 + 0x50)) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if (_DAT_008379a8 - param_5 <= *(double *)(param_1 + 0x50)) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00517fd0 at 0x00517FD0 (size: 353) ---
|
|
|
|
|
|
void __thiscall FUN_00517fd0(int param_1,float *param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
float fVar1;
|
|
|
|
float fVar2;
|
|
|
|
float fVar3;
|
|
|
|
float fVar4;
|
|
|
|
int iVar5;
|
|
|
|
float10 fVar6;
|
|
|
|
float10 fVar7;
|
|
|
|
float10 fVar8;
|
|
|
|
float10 fVar9;
|
|
|
|
float local_24;
|
|
|
|
float local_20;
|
|
|
|
|
|
|
|
fVar6 = (float10)FUN_0042c860(0xbf800000,0x3f800000);
|
|
|
|
fVar7 = (float10)FUN_0042c860(0xbf800000,0x3f800000);
|
|
|
|
fVar8 = (float10)FUN_0042c860(0xbf800000,0x3f800000);
|
|
|
|
fVar4 = (float)fVar8 * *(float *)(param_1 + 0x90) +
|
|
|
|
(float)fVar6 * *(float *)(param_1 + 0x98) + (float)fVar7 * *(float *)(param_1 + 0x94);
|
|
|
|
fVar1 = *(float *)(param_1 + 0x90);
|
|
|
|
fVar2 = *(float *)(param_1 + 0x94);
|
|
|
|
fVar3 = *(float *)(param_1 + 0x98);
|
|
|
|
iVar5 = FUN_004524a0();
|
|
|
|
if (iVar5 == 0) {
|
|
|
|
fVar9 = (float10)FUN_0042c860(0,0x3f800000);
|
|
|
|
fVar9 = ((float10)*(float *)(param_1 + 0xa0) - (float10)*(float *)(param_1 + 0x9c)) * fVar9 +
|
|
|
|
(float10)*(float *)(param_1 + 0x9c);
|
|
|
|
local_24 = (float)((float10)((float)fVar8 - fVar4 * fVar1) * fVar9);
|
|
|
|
local_20 = (float)((float10)((float)fVar7 - fVar4 * fVar2) * fVar9);
|
|
|
|
fVar9 = fVar9 * (float10)((float)fVar6 - fVar4 * fVar3);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
fVar9 = (float10)0.0;
|
|
|
|
local_24 = 0.0;
|
|
|
|
local_20 = 0.0;
|
|
|
|
}
|
|
|
|
*param_2 = local_24;
|
|
|
|
param_2[1] = local_20;
|
|
|
|
param_2[2] = (float)fVar9;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00518140 at 0x00518140 (size: 94) ---
|
|
|
|
|
|
void __thiscall FUN_00518140(int param_1,float *param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
float fVar1;
|
|
|
|
float fVar2;
|
|
|
|
float fVar3;
|
|
|
|
float10 fVar4;
|
|
|
|
|
|
|
|
fVar4 = (float10)FUN_0042c860(0,0x3f800000);
|
|
|
|
fVar1 = (float)(((float10)*(float *)(param_1 + 0xcc) - (float10)*(float *)(param_1 + 200)) * fVar4
|
|
|
|
+ (float10)*(float *)(param_1 + 200));
|
|
|
|
fVar2 = *(float *)(param_1 + 0xa8);
|
|
|
|
fVar3 = *(float *)(param_1 + 0xac);
|
|
|
|
*param_2 = fVar1 * *(float *)(param_1 + 0xa4);
|
|
|
|
param_2[1] = fVar1 * fVar2;
|
|
|
|
param_2[2] = fVar1 * fVar3;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005181a0 at 0x005181A0 (size: 94) ---
|
|
|
|
|
|
void __thiscall FUN_005181a0(int param_1,float *param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
float fVar1;
|
|
|
|
float fVar2;
|
|
|
|
float fVar3;
|
|
|
|
float10 fVar4;
|
|
|
|
|
|
|
|
fVar4 = (float10)FUN_0042c860(0,0x3f800000);
|
|
|
|
fVar1 = (float)(((float10)*(float *)(param_1 + 0xd4) - (float10)*(float *)(param_1 + 0xd0)) *
|
|
|
|
fVar4 + (float10)*(float *)(param_1 + 0xd0));
|
|
|
|
fVar2 = *(float *)(param_1 + 0xb4);
|
|
|
|
fVar3 = *(float *)(param_1 + 0xb8);
|
|
|
|
*param_2 = fVar1 * *(float *)(param_1 + 0xb0);
|
|
|
|
param_2[1] = fVar1 * fVar2;
|
|
|
|
param_2[2] = fVar1 * fVar3;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00518200 at 0x00518200 (size: 94) ---
|
|
|
|
|
|
void __thiscall FUN_00518200(int param_1,float *param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
float fVar1;
|
|
|
|
float fVar2;
|
|
|
|
float fVar3;
|
|
|
|
float10 fVar4;
|
|
|
|
|
|
|
|
fVar4 = (float10)FUN_0042c860(0,0x3f800000);
|
|
|
|
fVar1 = (float)(((float10)*(float *)(param_1 + 0xdc) - (float10)*(float *)(param_1 + 0xd8)) *
|
|
|
|
fVar4 + (float10)*(float *)(param_1 + 0xd8));
|
|
|
|
fVar2 = *(float *)(param_1 + 0xc0);
|
|
|
|
fVar3 = *(float *)(param_1 + 0xc4);
|
|
|
|
*param_2 = fVar1 * *(float *)(param_1 + 0xbc);
|
|
|
|
param_2[1] = fVar1 * fVar2;
|
|
|
|
param_2[2] = fVar1 * fVar3;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00518270 at 0x00518270 (size: 50) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_00518270(undefined4 *param_1,byte param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
*param_1 = &PTR_LAB_007c7a38;
|
|
|
|
param_1[0xc] = &PTR_LAB_007c7a20;
|
|
|
|
param_1[0xc] = &PTR_FUN_0079385c;
|
|
|
|
FUN_004154b0();
|
|
|
|
if ((param_2 & 1) != 0) {
|
|
|
|
operator_delete(param_1);
|
|
|
|
}
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005182b0 at 0x005182B0 (size: 609) ---
|
|
|
|
|
|
undefined4 __thiscall FUN_005182b0(int param_1,int *param_2,uint param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
undefined4 *puVar2;
|
|
|
|
|
|
|
|
if (0xab < param_3) {
|
|
|
|
*(undefined4 *)*param_2 = 0;
|
|
|
|
iVar1 = *param_2;
|
|
|
|
*param_2 = iVar1 + 4;
|
|
|
|
*(undefined4 *)(iVar1 + 4) = *(undefined4 *)(param_1 + 8);
|
|
|
|
iVar1 = *param_2;
|
|
|
|
*param_2 = iVar1 + 4;
|
|
|
|
*(undefined4 *)(iVar1 + 4) = *(undefined4 *)(param_1 + 0xc);
|
|
|
|
iVar1 = *param_2;
|
|
|
|
*param_2 = iVar1 + 4;
|
|
|
|
*(undefined4 *)(iVar1 + 4) = *(undefined4 *)(param_1 + 0x14);
|
|
|
|
iVar1 = *param_2;
|
|
|
|
*param_2 = iVar1 + 4;
|
|
|
|
*(undefined4 *)(iVar1 + 4) = *(undefined4 *)(param_1 + 0x18);
|
|
|
|
iVar1 = *param_2;
|
|
|
|
*param_2 = iVar1 + 4;
|
|
|
|
*(undefined8 *)(iVar1 + 4) = *(undefined8 *)(param_1 + 0x20);
|
|
|
|
iVar1 = *param_2;
|
|
|
|
*param_2 = iVar1 + 8;
|
|
|
|
*(undefined4 *)(iVar1 + 8) = *(undefined4 *)(param_1 + 0x28);
|
|
|
|
iVar1 = *param_2;
|
|
|
|
*param_2 = iVar1 + 4;
|
|
|
|
*(undefined4 *)(iVar1 + 4) = *(undefined4 *)(param_1 + 0x2c);
|
|
|
|
iVar1 = *param_2;
|
|
|
|
*param_2 = iVar1 + 4;
|
|
|
|
*(undefined4 *)(iVar1 + 4) = *(undefined4 *)(param_1 + 0x30);
|
|
|
|
iVar1 = *param_2;
|
|
|
|
*param_2 = iVar1 + 4;
|
|
|
|
*(undefined8 *)(iVar1 + 4) = *(undefined8 *)(param_1 + 0x38);
|
|
|
|
iVar1 = *param_2;
|
|
|
|
*param_2 = iVar1 + 8;
|
|
|
|
*(undefined8 *)(iVar1 + 8) = *(undefined8 *)(param_1 + 0x48);
|
|
|
|
iVar1 = *param_2;
|
|
|
|
*param_2 = iVar1 + 8;
|
|
|
|
*(undefined8 *)(iVar1 + 8) = *(undefined8 *)(param_1 + 0x40);
|
|
|
|
iVar1 = *param_2;
|
|
|
|
*param_2 = iVar1 + 8;
|
|
|
|
if (0xb < param_3) {
|
|
|
|
*(undefined4 *)(iVar1 + 8) = *(undefined4 *)(param_1 + 0x60);
|
|
|
|
iVar1 = *param_2;
|
|
|
|
*param_2 = iVar1 + 4;
|
|
|
|
*(undefined4 *)(iVar1 + 4) = *(undefined4 *)(param_1 + 100);
|
|
|
|
iVar1 = *param_2;
|
|
|
|
*param_2 = iVar1 + 4;
|
|
|
|
*(undefined4 *)(iVar1 + 4) = *(undefined4 *)(param_1 + 0x68);
|
|
|
|
*param_2 = *param_2 + 4;
|
|
|
|
}
|
|
|
|
*(undefined4 *)*param_2 = *(undefined4 *)(param_1 + 0x6c);
|
|
|
|
iVar1 = *param_2;
|
|
|
|
*param_2 = iVar1 + 4;
|
|
|
|
*(undefined4 *)(iVar1 + 4) = *(undefined4 *)(param_1 + 0x70);
|
|
|
|
puVar2 = (undefined4 *)(*param_2 + 4);
|
|
|
|
*param_2 = (int)puVar2;
|
|
|
|
if (0xb < param_3) {
|
|
|
|
*puVar2 = *(undefined4 *)(param_1 + 0x74);
|
|
|
|
iVar1 = *param_2;
|
|
|
|
*param_2 = iVar1 + 4;
|
|
|
|
*(undefined4 *)(iVar1 + 4) = *(undefined4 *)(param_1 + 0x78);
|
|
|
|
iVar1 = *param_2;
|
|
|
|
*param_2 = iVar1 + 4;
|
|
|
|
*(undefined4 *)(iVar1 + 4) = *(undefined4 *)(param_1 + 0x7c);
|
|
|
|
puVar2 = (undefined4 *)(*param_2 + 4);
|
|
|
|
*param_2 = (int)puVar2;
|
|
|
|
}
|
|
|
|
*puVar2 = *(undefined4 *)(param_1 + 0x98);
|
|
|
|
iVar1 = *param_2;
|
|
|
|
*param_2 = iVar1 + 4;
|
|
|
|
*(undefined4 *)(iVar1 + 4) = *(undefined4 *)(param_1 + 0x9c);
|
|
|
|
puVar2 = (undefined4 *)(*param_2 + 4);
|
|
|
|
*param_2 = (int)puVar2;
|
|
|
|
if (0xb < param_3) {
|
|
|
|
*puVar2 = *(undefined4 *)(param_1 + 0x80);
|
|
|
|
iVar1 = *param_2;
|
|
|
|
*param_2 = iVar1 + 4;
|
|
|
|
*(undefined4 *)(iVar1 + 4) = *(undefined4 *)(param_1 + 0x84);
|
|
|
|
iVar1 = *param_2;
|
|
|
|
*param_2 = iVar1 + 4;
|
|
|
|
*(undefined4 *)(iVar1 + 4) = *(undefined4 *)(param_1 + 0x88);
|
|
|
|
puVar2 = (undefined4 *)(*param_2 + 4);
|
|
|
|
*param_2 = (int)puVar2;
|
|
|
|
}
|
|
|
|
*puVar2 = *(undefined4 *)(param_1 + 0xa0);
|
|
|
|
iVar1 = *param_2;
|
|
|
|
*param_2 = iVar1 + 4;
|
|
|
|
*(undefined4 *)(iVar1 + 4) = *(undefined4 *)(param_1 + 0xa4);
|
|
|
|
puVar2 = (undefined4 *)(*param_2 + 4);
|
|
|
|
*param_2 = (int)puVar2;
|
|
|
|
if (0xb < param_3) {
|
|
|
|
*puVar2 = *(undefined4 *)(param_1 + 0x8c);
|
|
|
|
iVar1 = *param_2;
|
|
|
|
*param_2 = iVar1 + 4;
|
|
|
|
*(undefined4 *)(iVar1 + 4) = *(undefined4 *)(param_1 + 0x90);
|
|
|
|
iVar1 = *param_2;
|
|
|
|
*param_2 = iVar1 + 4;
|
|
|
|
*(undefined4 *)(iVar1 + 4) = *(undefined4 *)(param_1 + 0x94);
|
|
|
|
puVar2 = (undefined4 *)(*param_2 + 4);
|
|
|
|
*param_2 = (int)puVar2;
|
|
|
|
}
|
|
|
|
*puVar2 = *(undefined4 *)(param_1 + 0xa8);
|
|
|
|
iVar1 = *param_2;
|
|
|
|
*param_2 = iVar1 + 4;
|
|
|
|
*(undefined4 *)(iVar1 + 4) = *(undefined4 *)(param_1 + 0xac);
|
|
|
|
iVar1 = *param_2;
|
|
|
|
*param_2 = iVar1 + 4;
|
|
|
|
*(undefined4 *)(iVar1 + 4) = *(undefined4 *)(param_1 + 0xb4);
|
|
|
|
iVar1 = *param_2;
|
|
|
|
*param_2 = iVar1 + 4;
|
|
|
|
*(undefined4 *)(iVar1 + 4) = *(undefined4 *)(param_1 + 0xb8);
|
|
|
|
iVar1 = *param_2;
|
|
|
|
*param_2 = iVar1 + 4;
|
|
|
|
*(undefined4 *)(iVar1 + 4) = *(undefined4 *)(param_1 + 0xb0);
|
|
|
|
iVar1 = *param_2;
|
|
|
|
*param_2 = iVar1 + 4;
|
|
|
|
*(undefined4 *)(iVar1 + 4) = *(undefined4 *)(param_1 + 0xc0);
|
|
|
|
iVar1 = *param_2;
|
|
|
|
*param_2 = iVar1 + 4;
|
|
|
|
*(undefined4 *)(iVar1 + 4) = *(undefined4 *)(param_1 + 0xc4);
|
|
|
|
iVar1 = *param_2;
|
|
|
|
*param_2 = iVar1 + 4;
|
|
|
|
*(undefined4 *)(iVar1 + 4) = *(undefined4 *)(param_1 + 0xbc);
|
|
|
|
iVar1 = *param_2;
|
|
|
|
*param_2 = iVar1 + 4;
|
|
|
|
*(undefined4 *)(iVar1 + 4) = *(undefined4 *)(param_1 + 0x10);
|
|
|
|
*param_2 = *param_2 + 4;
|
|
|
|
}
|
|
|
|
return 0xac;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00518790 at 0x00518790 (size: 163) ---
|
|
|
|
|
|
void __thiscall FUN_00518790(uint *param_1,undefined4 *param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 *puVar1;
|
|
|
|
int iVar2;
|
|
|
|
uint local_4;
|
|
|
|
|
|
|
|
iVar2 = 0;
|
|
|
|
local_4 = 0;
|
|
|
|
if (*param_1 != 0) {
|
|
|
|
do {
|
|
|
|
puVar1 = (undefined4 *)(param_1[1] + 4 + iVar2);
|
|
|
|
puVar1[0xd] = param_2[0xd];
|
|
|
|
puVar1[0xe] = param_2[0xe];
|
|
|
|
puVar1[0xf] = param_2[0xf];
|
|
|
|
*puVar1 = *param_2;
|
|
|
|
puVar1[1] = param_2[1];
|
|
|
|
puVar1[2] = param_2[2];
|
|
|
|
puVar1[3] = param_2[3];
|
|
|
|
puVar1[4] = param_2[4];
|
|
|
|
puVar1[5] = param_2[5];
|
|
|
|
puVar1[6] = param_2[6];
|
|
|
|
puVar1[7] = param_2[7];
|
|
|
|
puVar1[8] = param_2[8];
|
|
|
|
puVar1[9] = param_2[9];
|
|
|
|
puVar1[10] = param_2[10];
|
|
|
|
puVar1[0xb] = param_2[0xb];
|
|
|
|
puVar1[0xc] = param_2[0xc];
|
|
|
|
local_4 = local_4 + 1;
|
|
|
|
iVar2 = iVar2 + 0x48;
|
|
|
|
} while (local_4 < *param_1);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00518840 at 0x00518840 (size: 19) ---
|
|
|
|
|
|
void __fastcall FUN_00518840(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
if (*(int *)(param_1 + 0x50) != 0) {
|
|
|
|
FUN_0051cb60(param_1 + 8);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00518860 at 0x00518860 (size: 15) ---
|
|
|
|
|
|
void __fastcall FUN_00518860(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
if (*(int *)(param_1 + 0x50) != 0) {
|
|
|
|
FUN_0051c810();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00518870 at 0x00518870 (size: 8) ---
|
|
|
|
|
|
void FUN_00518870(void)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_005257d0();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00518880 at 0x00518880 (size: 13) ---
|
|
|
|
|
|
void __fastcall FUN_00518880(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
if (*(int *)(param_1 + 0x50) != 0) {
|
|
|
|
FUN_0051c900();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00518890 at 0x00518890 (size: 13) ---
|
|
|
|
|
|
void __fastcall FUN_00518890(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
if (*(int *)(param_1 + 0x50) != 0) {
|
|
|
|
thunk_FUN_0051c900();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005188a0 at 0x005188A0 (size: 19) ---
|
|
|
|
|
|
void __fastcall FUN_005188a0(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
if (*(int *)(param_1 + 0x50) != 0) {
|
|
|
|
FUN_0051cad0(param_1 + 8);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005188c0 at 0x005188C0 (size: 19) ---
|
|
|
|
|
|
void __fastcall FUN_005188c0(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
if (*(int *)(param_1 + 0x50) != 0) {
|
|
|
|
FUN_0051c8d0(param_1 + 8);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005188e0 at 0x005188E0 (size: 26) ---
|
|
|
|
|
|
void FUN_005188e0(float param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_00526780((double)param_1,param_2);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00518900 at 0x00518900 (size: 41) ---
|
|
|
|
|
|
void __thiscall FUN_00518900(int param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
uint uVar2;
|
|
|
|
|
|
|
|
uVar2 = 0;
|
|
|
|
if (*(int *)(param_1 + 0x58) != 0) {
|
|
|
|
do {
|
|
|
|
iVar1 = *(int *)(*(int *)(param_1 + 0x5c) + uVar2 * 4);
|
|
|
|
if (iVar1 != 0) {
|
|
|
|
*(undefined4 *)(iVar1 + 0x34) = param_2;
|
|
|
|
}
|
|
|
|
uVar2 = uVar2 + 1;
|
|
|
|
} while (uVar2 < *(uint *)(param_1 + 0x58));
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00518930 at 0x00518930 (size: 52) ---
|
|
|
|
|
|
void __thiscall FUN_00518930(int param_1,int param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
uint uVar2;
|
|
|
|
|
|
|
|
uVar2 = 0;
|
|
|
|
if (*(int *)(param_1 + 0x58) != 0) {
|
|
|
|
do {
|
|
|
|
iVar1 = *(int *)(*(int *)(param_1 + 0x5c) + uVar2 * 4);
|
|
|
|
if (iVar1 != 0) {
|
|
|
|
(**(code **)(*(int *)(param_2 + 0x38) + 4))(iVar1);
|
|
|
|
}
|
|
|
|
uVar2 = uVar2 + 1;
|
|
|
|
} while (uVar2 < *(uint *)(param_1 + 0x58));
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00518970 at 0x00518970 (size: 89) ---
|
|
|
|
|
|
void __thiscall FUN_00518970(int param_1,int param_2,uint param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
undefined4 uVar2;
|
|
|
|
uint uVar3;
|
|
|
|
|
|
|
|
uVar2 = 0;
|
|
|
|
if (1 < param_3) {
|
|
|
|
uVar2 = *(undefined4 *)(param_2 + 0xdc);
|
|
|
|
}
|
|
|
|
uVar3 = 0;
|
|
|
|
if (*(int *)(param_1 + 0x58) != 0) {
|
|
|
|
do {
|
|
|
|
iVar1 = *(int *)(*(int *)(param_1 + 0x5c) + uVar3 * 4);
|
|
|
|
if (iVar1 != 0) {
|
|
|
|
(*(code *)**(undefined4 **)(param_2 + 0x38))(iVar1,uVar2,param_2 + 0x5c,param_3);
|
|
|
|
}
|
|
|
|
uVar3 = uVar3 + 1;
|
|
|
|
} while (uVar3 < *(uint *)(param_1 + 0x58));
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005189d0 at 0x005189D0 (size: 65) ---
|
|
|
|
|
|
void __thiscall FUN_005189d0(int param_1,int param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
uint *puVar1;
|
|
|
|
uint uVar2;
|
|
|
|
int iVar3;
|
|
|
|
|
|
|
|
if (((param_2 != 0) && (puVar1 = *(uint **)(param_1 + 0x70), puVar1 != (uint *)0x0)) &&
|
|
|
|
(uVar2 = 0, *puVar1 != 0)) {
|
|
|
|
iVar3 = 0;
|
|
|
|
do {
|
|
|
|
FUN_0052bde0(puVar1[1] + iVar3);
|
|
|
|
puVar1 = *(uint **)(param_1 + 0x70);
|
|
|
|
uVar2 = uVar2 + 1;
|
|
|
|
iVar3 = iVar3 + 0x48;
|
|
|
|
} while (uVar2 < *puVar1);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00518a20 at 0x00518A20 (size: 65) ---
|
|
|
|
|
|
void __thiscall FUN_00518a20(int param_1,int param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
uint *puVar1;
|
|
|
|
uint uVar2;
|
|
|
|
int iVar3;
|
|
|
|
|
|
|
|
if (((param_2 != 0) && (puVar1 = *(uint **)(param_1 + 0x70), puVar1 != (uint *)0x0)) &&
|
|
|
|
(uVar2 = 0, *puVar1 != 0)) {
|
|
|
|
iVar3 = 0;
|
|
|
|
do {
|
|
|
|
FUN_0052be20(puVar1[1] + iVar3);
|
|
|
|
puVar1 = *(uint **)(param_1 + 0x70);
|
|
|
|
uVar2 = uVar2 + 1;
|
|
|
|
iVar3 = iVar3 + 0x48;
|
|
|
|
} while (uVar2 < *puVar1);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00518a70 at 0x00518A70 (size: 279) ---
|
|
|
|
|
|
undefined4 __fastcall FUN_00518a70(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
int iVar2;
|
|
|
|
uint uVar3;
|
|
|
|
undefined4 uVar4;
|
|
|
|
uint uVar5;
|
|
|
|
undefined4 *puVar6;
|
|
|
|
|
|
|
|
iVar2 = *(int *)(*(int *)(param_1 + 0x54) + 0x38);
|
|
|
|
*(int *)(param_1 + 0x58) = iVar2;
|
|
|
|
if (iVar2 != 0) {
|
|
|
|
iVar2 = thunk_FUN_005df0f5(iVar2 * 4);
|
|
|
|
*(int *)(param_1 + 0x5c) = iVar2;
|
|
|
|
if (iVar2 != 0) {
|
|
|
|
uVar3 = 0;
|
|
|
|
if (*(int *)(param_1 + 0x58) != 0) {
|
|
|
|
do {
|
|
|
|
*(undefined4 *)(*(int *)(param_1 + 0x5c) + uVar3 * 4) = 0;
|
|
|
|
uVar3 = uVar3 + 1;
|
|
|
|
} while (uVar3 < *(uint *)(param_1 + 0x58));
|
|
|
|
}
|
|
|
|
if (*(int *)(*(int *)(param_1 + 0x54) + 0x3c) != 0) {
|
|
|
|
uVar3 = 0;
|
|
|
|
if (*(int *)(param_1 + 0x58) != 0) {
|
|
|
|
do {
|
|
|
|
uVar4 = FUN_0050f230(*(undefined4 *)
|
|
|
|
(*(int *)(*(int *)(param_1 + 0x54) + 0x3c) + uVar3 * 4));
|
|
|
|
*(undefined4 *)(*(int *)(param_1 + 0x5c) + uVar3 * 4) = uVar4;
|
|
|
|
if (*(int *)(*(int *)(param_1 + 0x5c) + uVar3 * 4) == 0) break;
|
|
|
|
uVar3 = uVar3 + 1;
|
|
|
|
} while (uVar3 < *(uint *)(param_1 + 0x58));
|
|
|
|
}
|
|
|
|
uVar5 = 0;
|
|
|
|
if (uVar3 != *(uint *)(param_1 + 0x58)) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
if (*(uint *)(param_1 + 0x58) != 0) {
|
|
|
|
do {
|
|
|
|
*(undefined4 *)(*(int *)(*(int *)(param_1 + 0x5c) + uVar5 * 4) + 0xe0) =
|
|
|
|
*(undefined4 *)(param_1 + 4);
|
|
|
|
*(uint *)(*(int *)(*(int *)(param_1 + 0x5c) + uVar5 * 4) + 0xe4) = uVar5;
|
|
|
|
uVar5 = uVar5 + 1;
|
|
|
|
} while (uVar5 < *(uint *)(param_1 + 0x58));
|
|
|
|
}
|
|
|
|
if ((*(int *)(*(int *)(param_1 + 0x54) + 0x44) != 0) &&
|
|
|
|
(uVar3 = 0, *(int *)(param_1 + 0x58) != 0)) {
|
|
|
|
iVar2 = 0;
|
|
|
|
do {
|
|
|
|
iVar1 = *(int *)(*(int *)(param_1 + 0x5c) + uVar3 * 4);
|
|
|
|
puVar6 = (undefined4 *)(*(int *)(*(int *)(param_1 + 0x54) + 0x44) + iVar2);
|
|
|
|
*(undefined4 *)(iVar1 + 0x24) = *puVar6;
|
|
|
|
*(undefined4 *)(iVar1 + 0x28) = puVar6[1];
|
|
|
|
*(undefined4 *)(iVar1 + 0x2c) = puVar6[2];
|
|
|
|
uVar3 = uVar3 + 1;
|
|
|
|
iVar2 = iVar2 + 0xc;
|
|
|
|
} while (uVar3 < *(uint *)(param_1 + 0x58));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00518b90 at 0x00518B90 (size: 7) ---
|
|
|
|
|
|
undefined4 __fastcall FUN_00518b90(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
return *(undefined4 *)(*(int *)(param_1 + 0x54) + 0x50);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00518ba0 at 0x00518BA0 (size: 7) ---
|
|
|
|
|
|
undefined4 __fastcall FUN_00518ba0(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
return *(undefined4 *)(*(int *)(param_1 + 0x54) + 0x54);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00518bb0 at 0x00518BB0 (size: 7) ---
|
|
|
|
|
|
undefined4 __fastcall FUN_00518bb0(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
return *(undefined4 *)(*(int *)(param_1 + 0x54) + 0x48);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00518bc0 at 0x00518BC0 (size: 7) ---
|
|
|
|
|
|
undefined4 __fastcall FUN_00518bc0(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
return *(undefined4 *)(*(int *)(param_1 + 0x54) + 0x4c);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00518bd0 at 0x00518BD0 (size: 10) ---
|
|
|
|
|
|
float10 __fastcall FUN_00518bd0(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
return (float10)*(float *)(*(int *)(param_1 + 0x54) + 100) * (float10)*(float *)(param_1 + 0x68);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00518be0 at 0x00518BE0 (size: 10) ---
|
|
|
|
|
|
float10 __fastcall FUN_00518be0(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
return (float10)*(float *)(*(int *)(param_1 + 0x54) + 0x60) * (float10)*(float *)(param_1 + 0x68);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00518bf0 at 0x00518BF0 (size: 7) ---
|
|
|
|
|
|
undefined4 __fastcall FUN_00518bf0(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
return *(undefined4 *)(*(int *)(param_1 + 0x54) + 0x5c);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00518c00 at 0x00518C00 (size: 21) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
float10 __fastcall FUN_00518c00(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
if (*(int *)(param_1 + 0x54) != 0) {
|
|
|
|
return (float10)*(float *)(*(int *)(param_1 + 0x54) + 0x6c) *
|
|
|
|
(float10)*(float *)(param_1 + 0x68);
|
|
|
|
}
|
|
|
|
return (float10)_DAT_007a1870;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00518c20 at 0x00518C20 (size: 21) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
float10 __fastcall FUN_00518c20(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
if (*(int *)(param_1 + 0x54) != 0) {
|
|
|
|
return (float10)*(float *)(*(int *)(param_1 + 0x54) + 0x68) *
|
|
|
|
(float10)*(float *)(param_1 + 0x68);
|
|
|
|
}
|
|
|
|
return (float10)_DAT_007a1870;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00518c40 at 0x00518C40 (size: 72) ---
|
|
|
|
|
|
undefined4 __fastcall FUN_00518c40(uint *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
uint uVar1;
|
|
|
|
int *piVar2;
|
|
|
|
|
|
|
|
uVar1 = 0;
|
|
|
|
if (param_1[0x16] != 0) {
|
|
|
|
piVar2 = (int *)param_1[0x17];
|
|
|
|
do {
|
|
|
|
if (*(int *)(**(int **)(*piVar2 + 0x20) + 0x78) != 0) {
|
|
|
|
*param_1 = *param_1 | 0x10000;
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
uVar1 = uVar1 + 1;
|
|
|
|
piVar2 = piVar2 + 1;
|
|
|
|
} while (uVar1 < param_1[0x16]);
|
|
|
|
}
|
|
|
|
*param_1 = *param_1 & 0xfffeffff;
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00518c90 at 0x00518C90 (size: 29) ---
|
|
|
|
|
|
void __thiscall FUN_00518c90(int param_1,int *param_2,undefined4 param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
(**(code **)(*param_2 + 0x7c))
|
|
|
|
(*(undefined4 *)(param_1 + 0x58),*(undefined4 *)(param_1 + 0x5c),param_3);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00518cb0 at 0x00518CB0 (size: 58) ---
|
|
|
|
|
|
int __thiscall FUN_00518cb0(int param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
uint uVar2;
|
|
|
|
|
|
|
|
uVar2 = 0;
|
|
|
|
iVar1 = 1;
|
|
|
|
if (*(int *)(param_1 + 0x58) != 0) {
|
|
|
|
do {
|
|
|
|
if ((*(int *)(*(int *)(param_1 + 0x5c) + uVar2 * 4) != 0) &&
|
|
|
|
(iVar1 = FUN_0050e3a0(param_2), iVar1 != 1)) {
|
|
|
|
return iVar1;
|
|
|
|
}
|
|
|
|
uVar2 = uVar2 + 1;
|
|
|
|
} while (uVar2 < *(uint *)(param_1 + 0x58));
|
|
|
|
}
|
|
|
|
return iVar1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00518cf0 at 0x00518CF0 (size: 77) ---
|
|
|
|
|
|
undefined4 __fastcall FUN_00518cf0(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
uint uVar2;
|
|
|
|
|
|
|
|
if (*(int *)(param_1 + 0x6c) == 0) {
|
|
|
|
iVar1 = thunk_FUN_005df0f5(*(int *)(param_1 + 0x58) << 2);
|
|
|
|
*(int *)(param_1 + 0x6c) = iVar1;
|
|
|
|
if (iVar1 == 0) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
uVar2 = 0;
|
|
|
|
if (*(int *)(param_1 + 0x58) != 0) {
|
|
|
|
do {
|
|
|
|
*(undefined4 *)(*(int *)(param_1 + 0x6c) + uVar2 * 4) = 0;
|
|
|
|
uVar2 = uVar2 + 1;
|
|
|
|
} while (uVar2 < *(uint *)(param_1 + 0x58));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00518d40 at 0x00518D40 (size: 79) ---
|
|
|
|
|
|
void __fastcall FUN_00518d40(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
uint uVar2;
|
|
|
|
|
|
|
|
if (*(int *)(param_1 + 0x6c) != 0) {
|
|
|
|
uVar2 = 0;
|
|
|
|
if (*(int *)(param_1 + 0x58) != 0) {
|
|
|
|
do {
|
|
|
|
iVar1 = *(int *)(*(int *)(param_1 + 0x6c) + uVar2 * 4);
|
|
|
|
if (iVar1 != 0) {
|
|
|
|
FUN_0053ed10(iVar1);
|
|
|
|
*(undefined4 *)(*(int *)(param_1 + 0x6c) + uVar2 * 4) = 0;
|
|
|
|
}
|
|
|
|
uVar2 = uVar2 + 1;
|
|
|
|
} while (uVar2 < *(uint *)(param_1 + 0x58));
|
|
|
|
}
|
|
|
|
operator_delete__(*(void **)(param_1 + 0x6c));
|
|
|
|
*(undefined4 *)(param_1 + 0x6c) = 0;
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00518d90 at 0x00518D90 (size: 42) ---
|
|
|
|
|
|
void __fastcall FUN_00518d90(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
uint uVar1;
|
|
|
|
|
|
|
|
uVar1 = 0;
|
|
|
|
if (*(int *)(param_1 + 0x58) != 0) {
|
|
|
|
do {
|
|
|
|
if (*(int *)(*(int *)(param_1 + 0x5c) + uVar1 * 4) != 0) {
|
|
|
|
FUN_0050eb00();
|
|
|
|
}
|
|
|
|
uVar1 = uVar1 + 1;
|
|
|
|
} while (uVar1 < *(uint *)(param_1 + 0x58));
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00518dc0 at 0x00518DC0 (size: 55) ---
|
|
|
|
|
|
void __thiscall FUN_00518dc0(int param_1,undefined4 param_2,undefined4 param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
uint uVar1;
|
|
|
|
|
|
|
|
uVar1 = 0;
|
|
|
|
if (*(int *)(param_1 + 0x58) != 0) {
|
|
|
|
do {
|
|
|
|
if (*(int *)(*(int *)(param_1 + 0x5c) + uVar1 * 4) != 0) {
|
|
|
|
FUN_0050ec70(param_2,param_3);
|
|
|
|
}
|
|
|
|
uVar1 = uVar1 + 1;
|
|
|
|
} while (uVar1 < *(uint *)(param_1 + 0x58));
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00518e00 at 0x00518E00 (size: 46) ---
|
|
|
|
|
|
void __fastcall FUN_00518e00(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
uint uVar1;
|
|
|
|
|
|
|
|
uVar1 = 0;
|
|
|
|
if (*(int *)(param_1 + 0x58) != 0) {
|
|
|
|
do {
|
|
|
|
if (*(int *)(*(int *)(param_1 + 0x5c) + uVar1 * 4) != 0) {
|
|
|
|
FUN_0050e270(0);
|
|
|
|
}
|
|
|
|
uVar1 = uVar1 + 1;
|
|
|
|
} while (uVar1 < *(uint *)(param_1 + 0x58));
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00518e30 at 0x00518E30 (size: 62) ---
|
|
|
|
|
|
void __thiscall FUN_00518e30(int param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
uint uVar1;
|
|
|
|
|
|
|
|
if ((*(int *)(param_1 + 0x54) != 0) && (uVar1 = 0, *(int *)(param_1 + 0x58) != 0)) {
|
|
|
|
do {
|
|
|
|
if (*(int *)(*(int *)(param_1 + 0x5c) + uVar1 * 4) != 0) {
|
|
|
|
FUN_0050e0e0(param_2);
|
|
|
|
}
|
|
|
|
uVar1 = uVar1 + 1;
|
|
|
|
} while (uVar1 < *(uint *)(param_1 + 0x58));
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00518e70 at 0x00518E70 (size: 62) ---
|
|
|
|
|
|
void __thiscall FUN_00518e70(int param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
uint uVar1;
|
|
|
|
|
|
|
|
if ((*(int *)(param_1 + 0x54) != 0) && (uVar1 = 0, *(int *)(param_1 + 0x58) != 0)) {
|
|
|
|
do {
|
|
|
|
if (*(int *)(*(int *)(param_1 + 0x5c) + uVar1 * 4) != 0) {
|
|
|
|
FUN_0050f140(param_2);
|
|
|
|
}
|
|
|
|
uVar1 = uVar1 + 1;
|
|
|
|
} while (uVar1 < *(uint *)(param_1 + 0x58));
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00518eb0 at 0x00518EB0 (size: 39) ---
|
|
|
|
|
|
void __thiscall FUN_00518eb0(int param_1,uint param_2,undefined4 param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
if (((*(int *)(param_1 + 0x54) != 0) && (param_2 < *(uint *)(param_1 + 0x58))) &&
|
|
|
|
(*(int *)(*(int *)(param_1 + 0x5c) + param_2 * 4) != 0)) {
|
|
|
|
FUN_0050f140(param_3);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00518ee0 at 0x00518EE0 (size: 62) ---
|
|
|
|
|
|
void __thiscall FUN_00518ee0(int param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
uint uVar1;
|
|
|
|
|
|
|
|
if ((*(int *)(param_1 + 0x54) != 0) && (uVar1 = 0, *(int *)(param_1 + 0x58) != 0)) {
|
|
|
|
do {
|
|
|
|
if (*(int *)(*(int *)(param_1 + 0x5c) + uVar1 * 4) != 0) {
|
|
|
|
FUN_0050f0c0(param_2);
|
|
|
|
}
|
|
|
|
uVar1 = uVar1 + 1;
|
|
|
|
} while (uVar1 < *(uint *)(param_1 + 0x58));
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00518f20 at 0x00518F20 (size: 39) ---
|
|
|
|
|
|
void __thiscall FUN_00518f20(int param_1,uint param_2,undefined4 param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
if (((*(int *)(param_1 + 0x54) != 0) && (param_2 < *(uint *)(param_1 + 0x58))) &&
|
|
|
|
(*(int *)(*(int *)(param_1 + 0x5c) + param_2 * 4) != 0)) {
|
|
|
|
FUN_0050f0c0(param_3);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00518f50 at 0x00518F50 (size: 62) ---
|
|
|
|
|
|
void __thiscall FUN_00518f50(int param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
uint uVar1;
|
|
|
|
|
|
|
|
if ((*(int *)(param_1 + 0x54) != 0) && (uVar1 = 0, *(int *)(param_1 + 0x58) != 0)) {
|
|
|
|
do {
|
|
|
|
if (*(int *)(*(int *)(param_1 + 0x5c) + uVar1 * 4) != 0) {
|
|
|
|
FUN_0050f040(param_2);
|
|
|
|
}
|
|
|
|
uVar1 = uVar1 + 1;
|
|
|
|
} while (uVar1 < *(uint *)(param_1 + 0x58));
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00518f90 at 0x00518F90 (size: 39) ---
|
|
|
|
|
|
void __thiscall FUN_00518f90(int param_1,uint param_2,undefined4 param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
if (((*(int *)(param_1 + 0x54) != 0) && (param_2 < *(uint *)(param_1 + 0x58))) &&
|
|
|
|
(*(int *)(*(int *)(param_1 + 0x5c) + param_2 * 4) != 0)) {
|
|
|
|
FUN_0050f040(param_3);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00518fc0 at 0x00518FC0 (size: 64) ---
|
|
|
|
|
|
void __thiscall FUN_00518fc0(int param_1,undefined4 param_2,undefined4 param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
uint uVar1;
|
|
|
|
|
|
|
|
if ((*(int *)(param_1 + 0x54) != 0) && (uVar1 = 0, *(int *)(param_1 + 0x58) != 0)) {
|
|
|
|
do {
|
|
|
|
if (*(int *)(*(int *)(param_1 + 0x5c) + uVar1 * 4) != 0) {
|
|
|
|
FUN_0050eed0(param_2,param_3);
|
|
|
|
}
|
|
|
|
uVar1 = uVar1 + 1;
|
|
|
|
} while (uVar1 < *(uint *)(param_1 + 0x58));
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00519000 at 0x00519000 (size: 54) ---
|
|
|
|
|
|
undefined4 __thiscall FUN_00519000(int param_1,uint param_2,undefined4 param_3,undefined4 param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
if ((*(int *)(param_1 + 0x54) != 0) && (param_2 < *(uint *)(param_1 + 0x58))) {
|
|
|
|
if (*(int *)(*(int *)(param_1 + 0x5c) + param_2 * 4) != 0) {
|
|
|
|
FUN_0050eed0(param_3,param_4);
|
|
|
|
}
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00519040 at 0x00519040 (size: 46) ---
|
|
|
|
|
|
void __fastcall FUN_00519040(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
uint uVar1;
|
|
|
|
|
|
|
|
if ((*(int *)(param_1 + 0x54) != 0) && (uVar1 = 0, *(int *)(param_1 + 0x58) != 0)) {
|
|
|
|
do {
|
|
|
|
if (*(int *)(*(int *)(param_1 + 0x5c) + uVar1 * 4) != 0) {
|
|
|
|
FUN_0050ef70();
|
|
|
|
}
|
|
|
|
uVar1 = uVar1 + 1;
|
|
|
|
} while (uVar1 < *(uint *)(param_1 + 0x58));
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00519070 at 0x00519070 (size: 61) ---
|
|
|
|
|
|
undefined4 __fastcall FUN_00519070(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
undefined4 uVar2;
|
|
|
|
uint uVar3;
|
|
|
|
|
|
|
|
uVar2 = 0;
|
|
|
|
if ((*(int *)(param_1 + 0x54) != 0) && (uVar3 = 0, *(int *)(param_1 + 0x58) != 0)) {
|
|
|
|
do {
|
|
|
|
if (*(int *)(*(int *)(param_1 + 0x5c) + uVar3 * 4) != 0) {
|
|
|
|
iVar1 = FUN_0050ee80();
|
|
|
|
if (iVar1 != 0) {
|
|
|
|
uVar2 = 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
uVar3 = uVar3 + 1;
|
|
|
|
} while (uVar3 < *(uint *)(param_1 + 0x58));
|
|
|
|
}
|
|
|
|
return uVar2;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005190b0 at 0x005190B0 (size: 89) ---
|
|
|
|
|
|
undefined4 __thiscall FUN_005190b0(int param_1,int param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
undefined4 uVar2;
|
|
|
|
|
|
|
|
uVar2 = 1;
|
|
|
|
if (*(int *)(param_1 + 0x54) != 0) {
|
|
|
|
for (; param_2 != 0; param_2 = *(int *)(param_2 + 0x10)) {
|
|
|
|
if (((*(uint *)(param_1 + 0x58) <= *(uint *)(param_2 + 4)) ||
|
|
|
|
(*(int *)(*(int *)(param_1 + 0x5c) + *(uint *)(param_2 + 4) * 4) == 0)) ||
|
|
|
|
(iVar1 = FUN_0050f1d0(*(undefined4 *)(param_2 + 8)), iVar1 == 0)) {
|
|
|
|
uVar2 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return uVar2;
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00519110 at 0x00519110 (size: 91) ---
|
|
|
|
|
|
undefined4 __thiscall FUN_00519110(int param_1,int param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
undefined4 uVar2;
|
|
|
|
|
|
|
|
uVar2 = 1;
|
|
|
|
if (*(int *)(param_1 + 0x54) != 0) {
|
|
|
|
for (; param_2 != 0; param_2 = *(int *)(param_2 + 0x14)) {
|
|
|
|
if (((*(uint *)(param_1 + 0x58) <= *(uint *)(param_2 + 4)) ||
|
|
|
|
(*(int *)(*(int *)(param_1 + 0x5c) + *(uint *)(param_2 + 4) * 4) == 0)) ||
|
|
|
|
(iVar1 = FUN_0050e900(*(undefined4 *)(param_2 + 8),*(undefined4 *)(param_2 + 0xc)),
|
|
|
|
iVar1 == 0)) {
|
|
|
|
uVar2 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return uVar2;
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00519170 at 0x00519170 (size: 146) ---
|
|
|
|
|
|
int * __thiscall FUN_00519170(int *param_1,int param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
int *piVar1;
|
|
|
|
int *piVar2;
|
|
|
|
int *piVar3;
|
|
|
|
|
|
|
|
*param_1 = param_2;
|
|
|
|
piVar1 = (int *)thunk_FUN_005df0f5(param_2 * 0x48 + 4);
|
|
|
|
if (piVar1 == (int *)0x0) {
|
|
|
|
param_1[1] = 0;
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
*piVar1 = param_2;
|
|
|
|
if (-1 < param_2 + -1) {
|
|
|
|
piVar3 = piVar1 + 0x11;
|
|
|
|
piVar2 = piVar1 + 1;
|
|
|
|
do {
|
|
|
|
*piVar2 = 0;
|
|
|
|
piVar3[-0xf] = 0x3f800000;
|
|
|
|
piVar3[-0xe] = 0;
|
|
|
|
piVar3[-0xd] = 0;
|
|
|
|
piVar3[-0xc] = 0;
|
|
|
|
piVar3[-2] = 0;
|
|
|
|
piVar3[-1] = 0;
|
|
|
|
*piVar3 = 0;
|
|
|
|
FUN_00535b30();
|
|
|
|
piVar3[1] = 0;
|
|
|
|
piVar2 = piVar2 + 0x12;
|
|
|
|
piVar3 = piVar3 + 0x12;
|
|
|
|
param_2 = param_2 + -1;
|
|
|
|
} while (param_2 != 0);
|
|
|
|
}
|
|
|
|
param_1[1] = (int)(piVar1 + 1);
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00519210 at 0x00519210 (size: 109) ---
|
|
|
|
|
|
undefined4 __thiscall FUN_00519210(int param_1,int param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
void *pvVar1;
|
|
|
|
int *piVar2;
|
|
|
|
int iVar3;
|
|
|
|
|
|
|
|
iVar3 = param_2;
|
|
|
|
if (*(int *)(param_1 + 0x50) != 0) {
|
|
|
|
piVar2 = (int *)FUN_0051c740(¶m_2);
|
|
|
|
if (*piVar2 == iVar3) {
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
pvVar1 = *(void **)(param_1 + 0x50);
|
|
|
|
if (pvVar1 != (void *)0x0) {
|
|
|
|
FUN_0051ca00();
|
|
|
|
operator_delete(pvVar1);
|
|
|
|
}
|
|
|
|
*(undefined4 *)(param_1 + 0x50) = 0;
|
|
|
|
}
|
|
|
|
if (iVar3 != 0) {
|
|
|
|
iVar3 = FUN_0051c780(iVar3);
|
|
|
|
*(int *)(param_1 + 0x50) = iVar3;
|
|
|
|
if (iVar3 == 0) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
FUN_0051c6f0(*(undefined4 *)(param_1 + 4));
|
|
|
|
}
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00519280 at 0x00519280 (size: 156) ---
|
|
|
|
|
|
undefined4 __thiscall FUN_00519280(int param_1,undefined4 param_2,undefined4 param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 uVar1;
|
|
|
|
undefined4 local_64;
|
|
|
|
undefined4 local_60;
|
|
|
|
undefined **local_54;
|
|
|
|
undefined4 local_50;
|
|
|
|
undefined4 local_4c;
|
|
|
|
undefined4 local_48;
|
|
|
|
undefined4 local_44;
|
|
|
|
undefined4 local_40;
|
|
|
|
undefined4 local_18;
|
|
|
|
undefined4 local_14;
|
|
|
|
undefined4 local_10;
|
|
|
|
undefined4 local_4;
|
|
|
|
|
|
|
|
if (*(int *)(param_1 + 0x50) == 0) {
|
|
|
|
return 7;
|
|
|
|
}
|
|
|
|
local_64 = 0;
|
|
|
|
local_54 = &PTR_LAB_00797910;
|
|
|
|
local_50 = 0;
|
|
|
|
local_4c = 0x3f800000;
|
|
|
|
local_48 = 0;
|
|
|
|
local_44 = 0;
|
|
|
|
local_40 = 0;
|
|
|
|
local_18 = 0;
|
|
|
|
local_14 = 0;
|
|
|
|
local_10 = 0;
|
|
|
|
FUN_00535b30();
|
|
|
|
local_60 = param_2;
|
|
|
|
local_4 = param_3;
|
|
|
|
local_64 = 2;
|
|
|
|
uVar1 = FUN_0051cbe0(&local_64,param_1 + 8);
|
|
|
|
return uVar1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00519320 at 0x00519320 (size: 156) ---
|
|
|
|
|
|
undefined4 __thiscall FUN_00519320(int param_1,undefined4 param_2,undefined4 param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 uVar1;
|
|
|
|
undefined4 local_64;
|
|
|
|
undefined4 local_60;
|
|
|
|
undefined **local_54;
|
|
|
|
undefined4 local_50;
|
|
|
|
undefined4 local_4c;
|
|
|
|
undefined4 local_48;
|
|
|
|
undefined4 local_44;
|
|
|
|
undefined4 local_40;
|
|
|
|
undefined4 local_18;
|
|
|
|
undefined4 local_14;
|
|
|
|
undefined4 local_10;
|
|
|
|
undefined4 local_4;
|
|
|
|
|
|
|
|
if (*(int *)(param_1 + 0x50) == 0) {
|
|
|
|
return 7;
|
|
|
|
}
|
|
|
|
local_64 = 0;
|
|
|
|
local_54 = &PTR_LAB_00797910;
|
|
|
|
local_50 = 0;
|
|
|
|
local_4c = 0x3f800000;
|
|
|
|
local_48 = 0;
|
|
|
|
local_44 = 0;
|
|
|
|
local_40 = 0;
|
|
|
|
local_18 = 0;
|
|
|
|
local_14 = 0;
|
|
|
|
local_10 = 0;
|
|
|
|
FUN_00535b30();
|
|
|
|
local_60 = param_2;
|
|
|
|
local_4 = param_3;
|
|
|
|
local_64 = 4;
|
|
|
|
uVar1 = FUN_0051cbe0(&local_64,param_1 + 8);
|
|
|
|
return uVar1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005193c0 at 0x005193C0 (size: 136) ---
|
|
|
|
|
|
undefined4 __fastcall FUN_005193c0(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 uVar1;
|
|
|
|
undefined4 local_64 [4];
|
|
|
|
undefined **local_54;
|
|
|
|
undefined4 local_50;
|
|
|
|
undefined4 local_4c;
|
|
|
|
undefined4 local_48;
|
|
|
|
undefined4 local_44;
|
|
|
|
undefined4 local_40;
|
|
|
|
undefined4 local_18;
|
|
|
|
undefined4 local_14;
|
|
|
|
undefined4 local_10;
|
|
|
|
|
|
|
|
if (*(int *)(param_1 + 0x50) == 0) {
|
|
|
|
return 7;
|
|
|
|
}
|
|
|
|
local_64[0] = 0;
|
|
|
|
local_54 = &PTR_LAB_00797910;
|
|
|
|
local_50 = 0;
|
|
|
|
local_4c = 0x3f800000;
|
|
|
|
local_48 = 0;
|
|
|
|
local_44 = 0;
|
|
|
|
local_40 = 0;
|
|
|
|
local_18 = 0;
|
|
|
|
local_14 = 0;
|
|
|
|
local_10 = 0;
|
|
|
|
FUN_00535b30();
|
|
|
|
local_64[0] = 5;
|
|
|
|
uVar1 = FUN_0051cbe0(local_64,param_1 + 8);
|
|
|
|
return uVar1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00519450 at 0x00519450 (size: 95) ---
|
|
|
|
|
|
void __fastcall FUN_00519450(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
void *pvVar1;
|
|
|
|
uint uVar2;
|
|
|
|
|
|
|
|
if (*(int *)(param_1 + 0x5c) != 0) {
|
|
|
|
uVar2 = 0;
|
|
|
|
if (*(int *)(param_1 + 0x58) != 0) {
|
|
|
|
do {
|
|
|
|
pvVar1 = *(void **)(*(int *)(param_1 + 0x5c) + uVar2 * 4);
|
|
|
|
if (pvVar1 != (void *)0x0) {
|
|
|
|
FUN_0050ed40();
|
|
|
|
operator_delete(pvVar1);
|
|
|
|
*(undefined4 *)(*(int *)(param_1 + 0x5c) + uVar2 * 4) = 0;
|
|
|
|
}
|
|
|
|
uVar2 = uVar2 + 1;
|
|
|
|
} while (uVar2 < *(uint *)(param_1 + 0x58));
|
|
|
|
}
|
|
|
|
operator_delete__(*(void **)(param_1 + 0x5c));
|
|
|
|
*(undefined4 *)(param_1 + 0x5c) = 0;
|
|
|
|
}
|
|
|
|
*(undefined4 *)(param_1 + 0x58) = 0;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005194b0 at 0x005194B0 (size: 119) ---
|
|
|
|
|
|
void __fastcall FUN_005194b0(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined1 local_14 [4];
|
|
|
|
undefined4 local_10;
|
|
|
|
undefined4 local_c;
|
|
|
|
undefined4 local_8;
|
|
|
|
undefined4 local_4;
|
|
|
|
|
|
|
|
if (*(int *)(*(int *)(param_1 + 0x54) + 0xc4) != 0) {
|
|
|
|
FUN_005259c0();
|
|
|
|
FUN_005268e0();
|
|
|
|
local_10 = *(undefined4 *)(*(int *)(param_1 + 0x54) + 0xc4);
|
|
|
|
local_c = 0;
|
|
|
|
local_8 = 0xffffffff;
|
|
|
|
local_4 = 0x41f00000;
|
|
|
|
FUN_00526110(local_14);
|
|
|
|
FUN_005aebf0();
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 4) != 0) {
|
|
|
|
FUN_005144d0(*(undefined4 *)(param_1 + 0x54));
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00519530 at 0x00519530 (size: 172) ---
|
|
|
|
|
|
undefined4 __thiscall FUN_00519530(int param_1,float *param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
float *pfVar1;
|
|
|
|
float fVar2;
|
|
|
|
float fVar3;
|
|
|
|
int iVar4;
|
|
|
|
int iVar5;
|
|
|
|
float fVar6;
|
|
|
|
uint uVar7;
|
|
|
|
int iVar8;
|
|
|
|
|
|
|
|
pfVar1 = (float *)(param_1 + 0x60);
|
|
|
|
*pfVar1 = *param_2;
|
|
|
|
*(float *)(param_1 + 100) = param_2[1];
|
|
|
|
*(float *)(param_1 + 0x68) = param_2[2];
|
|
|
|
uVar7 = 0;
|
|
|
|
if (*(int *)(param_1 + 0x58) != 0) {
|
|
|
|
iVar8 = 0;
|
|
|
|
do {
|
|
|
|
iVar4 = *(int *)(*(int *)(param_1 + 0x5c) + uVar7 * 4);
|
|
|
|
if (iVar4 != 0) {
|
|
|
|
iVar5 = *(int *)(*(int *)(param_1 + 0x54) + 0x44);
|
|
|
|
if (iVar5 == 0) {
|
|
|
|
*(float *)(iVar4 + 0x24) = *pfVar1;
|
|
|
|
*(undefined4 *)(iVar4 + 0x28) = *(undefined4 *)(param_1 + 100);
|
|
|
|
fVar6 = *(float *)(param_1 + 0x68);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
fVar2 = *(float *)(iVar8 + 4 + iVar5);
|
|
|
|
fVar3 = *(float *)(param_1 + 100);
|
|
|
|
fVar6 = *(float *)(iVar8 + 8 + iVar5) * *(float *)(param_1 + 0x68);
|
|
|
|
*(float *)(iVar4 + 0x24) = *(float *)(iVar8 + iVar5) * *pfVar1;
|
|
|
|
*(float *)(iVar4 + 0x28) = fVar2 * fVar3;
|
|
|
|
}
|
|
|
|
*(float *)(iVar4 + 0x2c) = fVar6;
|
|
|
|
}
|
|
|
|
uVar7 = uVar7 + 1;
|
|
|
|
iVar8 = iVar8 + 0xc;
|
|
|
|
} while (uVar7 < *(uint *)(param_1 + 0x58));
|
|
|
|
}
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005195e0 at 0x005195E0 (size: 15) ---
|
|
|
|
|
|
void __thiscall FUN_005195e0(int param_1,undefined4 *param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
*param_2 = *(undefined4 *)(*(int *)(param_1 + 0x54) + 0x28);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005195f0 at 0x005195F0 (size: 56) ---
|
|
|
|
|
|
void __thiscall FUN_005195f0(int param_1,int *param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
|
|
|
|
iVar1 = *(int *)(*(int *)(param_1 + 0x54) + 0x28);
|
|
|
|
if (iVar1 == DAT_00844fe0) {
|
|
|
|
if (*(int *)(param_1 + 0x58) != 1) {
|
|
|
|
*param_2 = DAT_00844fe0;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
iVar1 = *(int *)(**(int **)(**(int **)(param_1 + 0x5c) + 0x20) + 0x28);
|
|
|
|
}
|
|
|
|
*param_2 = iVar1;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00519630 at 0x00519630 (size: 127) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
undefined * __fastcall FUN_00519630(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
if ((_DAT_00844fb0 & 1) == 0) {
|
|
|
|
_DAT_00844fb0 = _DAT_00844fb0 | 1;
|
|
|
|
_DAT_00844fa0 = 0;
|
|
|
|
_DAT_00844fa4 = 0;
|
|
|
|
_DAT_00844fa8 = 0;
|
|
|
|
_DAT_00844fac = 0;
|
|
|
|
_atexit((_func_4879 *)&DAT_00768890);
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x54) != 0) {
|
|
|
|
return (undefined *)(*(int *)(param_1 + 0x54) + 0x70);
|
|
|
|
}
|
|
|
|
return &DAT_00844fa0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005196b0 at 0x005196B0 (size: 121) ---
|
|
|
|
|
|
undefined4 __thiscall FUN_005196b0(int param_1,float *param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
float fVar1;
|
|
|
|
float fVar2;
|
|
|
|
float fVar3;
|
|
|
|
float fVar4;
|
|
|
|
int iVar5;
|
|
|
|
|
|
|
|
iVar5 = *(int *)(param_1 + 0x54);
|
|
|
|
if (iVar5 != 0) {
|
|
|
|
fVar1 = *(float *)(param_1 + 100);
|
|
|
|
fVar2 = *(float *)(iVar5 + 0x84);
|
|
|
|
fVar3 = *(float *)(param_1 + 0x68);
|
|
|
|
fVar4 = *(float *)(iVar5 + 0x88);
|
|
|
|
*param_2 = *(float *)(param_1 + 0x60) * *(float *)(iVar5 + 0x80);
|
|
|
|
param_2[1] = fVar1 * fVar2;
|
|
|
|
param_2[2] = fVar3 * fVar4;
|
|
|
|
param_2[3] = *(float *)(*(int *)(param_1 + 0x54) + 0x8c) * *(float *)(param_1 + 0x68);
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00519730 at 0x00519730 (size: 168) ---
|
|
|
|
|
|
undefined4 __fastcall FUN_00519730(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
uint *puVar1;
|
|
|
|
uint uVar2;
|
|
|
|
int iVar3;
|
|
|
|
int *piVar4;
|
|
|
|
uint uVar5;
|
|
|
|
int iVar6;
|
|
|
|
|
|
|
|
if ((*(int *)(param_1 + 4) != 0) && (*(int *)(*(int *)(param_1 + 0x54) + 0x90) != 0)) {
|
|
|
|
iVar3 = FUN_005df0f5(8);
|
|
|
|
if (iVar3 == 0) {
|
|
|
|
piVar4 = (int *)0x0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
piVar4 = (int *)FUN_00519170(*(undefined4 *)(*(int *)(param_1 + 0x54) + 0x90));
|
|
|
|
}
|
|
|
|
*(int **)(param_1 + 0x70) = piVar4;
|
|
|
|
uVar5 = 0;
|
|
|
|
if (*piVar4 != 0) {
|
|
|
|
iVar6 = 0;
|
|
|
|
iVar3 = 0;
|
|
|
|
do {
|
|
|
|
uVar2 = *(uint *)(*(int *)(param_1 + 4) + 0xa8);
|
|
|
|
piVar4 = (int *)(*(int *)(*(int *)(param_1 + 0x70) + 4) + iVar3);
|
|
|
|
*piVar4 = *(int *)(*(int *)(param_1 + 0x54) + 0x94) + iVar6;
|
|
|
|
if ((uVar2 & 1) != 0) {
|
|
|
|
puVar1 = (uint *)(piVar4 + 0x11);
|
|
|
|
*puVar1 = *puVar1 | 1;
|
|
|
|
}
|
|
|
|
uVar5 = uVar5 + 1;
|
|
|
|
iVar3 = iVar3 + 0x48;
|
|
|
|
iVar6 = iVar6 + 0x68;
|
|
|
|
} while (uVar5 < **(uint **)(param_1 + 0x70));
|
|
|
|
}
|
|
|
|
FUN_005189d0(*(undefined4 *)(*(int *)(param_1 + 4) + 0x90));
|
|
|
|
}
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005197e0 at 0x005197E0 (size: 67) ---
|
|
|
|
|
|
void __thiscall FUN_005197e0(int param_1,undefined4 param_2,undefined4 param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
uint uVar2;
|
|
|
|
|
|
|
|
uVar2 = 0;
|
|
|
|
if (*(int *)(param_1 + 0x58) != 0) {
|
|
|
|
do {
|
|
|
|
iVar1 = *(int *)(*(int *)(param_1 + 0x5c) + uVar2 * 4);
|
|
|
|
if (iVar1 != 0) {
|
|
|
|
FUN_0050a630(*(undefined4 *)(**(int **)(iVar1 + 0x20) + 0x28),param_2,param_3);
|
|
|
|
}
|
|
|
|
uVar2 = uVar2 + 1;
|
|
|
|
} while (uVar2 < *(uint *)(param_1 + 0x58));
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00519830 at 0x00519830 (size: 49) ---
|
|
|
|
|
|
void __thiscall FUN_00519830(int param_1,uint param_2,undefined4 param_3,undefined4 param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
|
|
|
|
if ((param_2 < *(uint *)(param_1 + 0x58)) &&
|
|
|
|
(iVar1 = *(int *)(*(int *)(param_1 + 0x5c) + param_2 * 4), iVar1 != 0)) {
|
|
|
|
FUN_0050a630(*(undefined4 *)(**(int **)(iVar1 + 0x20) + 0x28),param_3,param_4);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00519870 at 0x00519870 (size: 194) ---
|
|
|
|
|
|
undefined4 __thiscall FUN_00519870(int param_1,int param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
int *piVar1;
|
|
|
|
int iVar2;
|
|
|
|
undefined4 uVar3;
|
|
|
|
uint uVar4;
|
|
|
|
|
|
|
|
FUN_00519450();
|
|
|
|
piVar1 = *(int **)(param_2 + 0x54);
|
|
|
|
*(int **)(param_1 + 0x54) = piVar1;
|
|
|
|
if (piVar1 != (int *)0x0) {
|
|
|
|
(**(code **)(*piVar1 + 0x10))();
|
|
|
|
}
|
|
|
|
*(undefined4 *)(param_1 + 0x60) = *(undefined4 *)(param_2 + 0x60);
|
|
|
|
*(undefined4 *)(param_1 + 100) = *(undefined4 *)(param_2 + 100);
|
|
|
|
*(undefined4 *)(param_1 + 0x68) = *(undefined4 *)(param_2 + 0x68);
|
|
|
|
iVar2 = *(int *)(param_2 + 0x58);
|
|
|
|
*(int *)(param_1 + 0x58) = iVar2;
|
|
|
|
uVar3 = thunk_FUN_005df0f5(iVar2 * 4);
|
|
|
|
*(undefined4 *)(param_1 + 0x5c) = uVar3;
|
|
|
|
FUN_00518cf0();
|
|
|
|
uVar4 = 0;
|
|
|
|
if (*(int *)(param_1 + 0x58) != 0) {
|
|
|
|
do {
|
|
|
|
uVar3 = FUN_0050ed00(*(undefined4 *)(*(int *)(param_2 + 0x5c) + uVar4 * 4));
|
|
|
|
*(undefined4 *)(*(int *)(param_1 + 0x5c) + uVar4 * 4) = uVar3;
|
|
|
|
*(undefined4 *)(*(int *)(*(int *)(param_1 + 0x5c) + uVar4 * 4) + 0xe0) =
|
|
|
|
*(undefined4 *)(param_1 + 4);
|
|
|
|
*(uint *)(*(int *)(*(int *)(param_1 + 0x5c) + uVar4 * 4) + 0xe4) = uVar4;
|
|
|
|
if (*(int *)(param_2 + 0x6c) != 0) {
|
|
|
|
*(undefined4 *)(*(int *)(param_1 + 0x6c) + uVar4 * 4) =
|
|
|
|
*(undefined4 *)(*(int *)(param_2 + 0x6c) + uVar4 * 4);
|
|
|
|
piVar1 = *(int **)(*(int *)(param_1 + 0x6c) + uVar4 * 4);
|
|
|
|
if (piVar1 != (int *)0x0) {
|
|
|
|
(**(code **)(*piVar1 + 0x10))();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
uVar4 = uVar4 + 1;
|
|
|
|
} while (uVar4 < *(uint *)(param_1 + 0x58));
|
|
|
|
}
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00519940 at 0x00519940 (size: 210) ---
|
|
|
|
|
|
undefined4 __thiscall FUN_00519940(int param_1,int param_2,undefined4 param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
undefined4 uVar2;
|
|
|
|
undefined4 uVar3;
|
|
|
|
int iVar4;
|
|
|
|
int *piVar5;
|
|
|
|
uint uVar6;
|
|
|
|
uint uVar7;
|
|
|
|
|
|
|
|
if (*(int *)(param_1 + 0x54) == 0) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
FUN_00518cf0();
|
|
|
|
uVar2 = param_3;
|
|
|
|
iVar1 = param_2;
|
|
|
|
if (param_2 != DAT_00844fe0) {
|
|
|
|
uVar7 = 0;
|
|
|
|
if (*(int *)(param_1 + 0x58) != 0) {
|
|
|
|
do {
|
|
|
|
iVar4 = *(int *)(*(int *)(param_1 + 0x6c) + uVar7 * 4);
|
|
|
|
if (iVar4 == 0) {
|
|
|
|
uVar3 = FUN_0053f120(iVar1,uVar2);
|
|
|
|
*(undefined4 *)(*(int *)(param_1 + 0x6c) + uVar7 * 4) = uVar3;
|
|
|
|
iVar4 = *(int *)(*(int *)(param_1 + 0x6c) + uVar7 * 4);
|
|
|
|
LAB_005199ad:
|
|
|
|
if (iVar4 != 0) break;
|
|
|
|
}
|
|
|
|
else if (*(int *)(iVar4 + 0x28) == iVar1) {
|
|
|
|
iVar4 = FUN_0053ef50(uVar2);
|
|
|
|
goto LAB_005199ad;
|
|
|
|
}
|
|
|
|
uVar7 = uVar7 + 1;
|
|
|
|
} while (uVar7 < *(uint *)(param_1 + 0x58));
|
|
|
|
}
|
|
|
|
if (uVar7 != *(uint *)(param_1 + 0x58)) {
|
|
|
|
uVar6 = 0;
|
|
|
|
if (*(uint *)(param_1 + 0x58) != 0) {
|
|
|
|
do {
|
|
|
|
if (((*(int *)(*(int *)(param_1 + 0x5c) + uVar6 * 4) != 0) &&
|
|
|
|
(*(int *)(*(int *)(param_1 + 0x6c) + uVar7 * 4) != 0)) &&
|
|
|
|
(piVar5 = (int *)FUN_0050e070(¶m_2), *piVar5 == iVar1)) {
|
|
|
|
FUN_0050e9a0(*(undefined4 *)(*(int *)(param_1 + 0x6c) + uVar7 * 4));
|
|
|
|
}
|
|
|
|
uVar6 = uVar6 + 1;
|
|
|
|
} while (uVar6 < *(uint *)(param_1 + 0x58));
|
|
|
|
}
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00519a20 at 0x00519A20 (size: 217) ---
|
|
|
|
|
|
void __thiscall FUN_00519a20(int param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
uint uVar1;
|
|
|
|
|
|
|
|
uVar1 = 0;
|
|
|
|
if (*(int *)(param_1 + 0x58) != 0) {
|
|
|
|
do {
|
|
|
|
if (*(int *)(*(int *)(param_1 + 0x5c) + uVar1 * 4) != 0) {
|
|
|
|
FUN_0050e0d0();
|
|
|
|
FUN_005b3490(*(int *)(*(int *)(param_1 + 0x5c) + uVar1 * 4) + 0x30);
|
|
|
|
FUN_005b2e20(param_2);
|
|
|
|
}
|
|
|
|
uVar1 = uVar1 + 1;
|
|
|
|
} while (uVar1 < *(uint *)(param_1 + 0x58));
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00519b00 at 0x00519B00 (size: 279) ---
|
|
|
|
|
|
void __thiscall FUN_00519b00(int param_1,float *param_2,float *param_3,float *param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
float fVar1;
|
|
|
|
float fVar2;
|
|
|
|
float fVar3;
|
|
|
|
float fVar4;
|
|
|
|
float fVar5;
|
|
|
|
float fVar6;
|
|
|
|
float fVar7;
|
|
|
|
float fVar8;
|
|
|
|
float fVar9;
|
|
|
|
float fVar10;
|
|
|
|
float fVar11;
|
|
|
|
|
|
|
|
fVar9 = *param_3 * *param_4;
|
|
|
|
fVar10 = param_3[1] * param_4[1];
|
|
|
|
fVar11 = param_3[2] * param_4[2];
|
|
|
|
fVar1 = param_2[5];
|
|
|
|
fVar2 = param_2[0xb];
|
|
|
|
fVar3 = param_2[8];
|
|
|
|
fVar4 = param_2[0xe];
|
|
|
|
fVar5 = param_2[6];
|
|
|
|
fVar6 = param_2[0xc];
|
|
|
|
fVar7 = param_2[9];
|
|
|
|
fVar8 = param_2[0xf];
|
|
|
|
*(float *)(param_1 + 0x34) =
|
|
|
|
fVar10 * param_2[7] + fVar11 * param_2[10] + fVar9 * param_2[4] + param_2[0xd];
|
|
|
|
*(float *)(param_1 + 0x38) = fVar10 * fVar3 + fVar11 * fVar2 + fVar9 * fVar1 + fVar4;
|
|
|
|
*(float *)(param_1 + 0x3c) = fVar10 * fVar7 + fVar11 * fVar6 + fVar9 * fVar5 + fVar8;
|
|
|
|
FUN_00535dc0(((param_3[3] * *param_2 - param_3[4] * param_2[1]) - param_3[5] * param_2[2]) -
|
|
|
|
param_3[6] * param_2[3],
|
|
|
|
(param_3[6] * param_2[2] + param_3[3] * param_2[1] + param_3[4] * *param_2) -
|
|
|
|
param_3[5] * param_2[3],
|
|
|
|
param_3[3] * param_2[2] +
|
|
|
|
param_3[4] * param_2[3] + (*param_2 * param_3[5] - param_2[1] * param_3[6]),
|
|
|
|
param_3[3] * param_2[3] +
|
|
|
|
((param_2[1] * param_3[5] + *param_2 * param_3[6]) - param_3[4] * param_2[2]));
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00519c20 at 0x00519C20 (size: 93) ---
|
|
|
|
|
|
void __thiscall FUN_00519c20(int param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
int *piVar1;
|
|
|
|
uint uVar2;
|
|
|
|
uint uVar3;
|
|
|
|
int iVar4;
|
|
|
|
|
|
|
|
piVar1 = (int *)FUN_00525570();
|
|
|
|
if (piVar1 != (int *)0x0) {
|
|
|
|
uVar2 = *(uint *)(param_1 + 0x58);
|
|
|
|
if ((uint)piVar1[3] < *(uint *)(param_1 + 0x58)) {
|
|
|
|
uVar2 = piVar1[3];
|
|
|
|
}
|
|
|
|
uVar3 = 0;
|
|
|
|
if (uVar2 != 0) {
|
|
|
|
iVar4 = 0;
|
|
|
|
do {
|
|
|
|
FUN_00519b00(param_2,*piVar1 + iVar4,param_1 + 0x60);
|
|
|
|
uVar3 = uVar3 + 1;
|
|
|
|
iVar4 = iVar4 + 0x1c;
|
|
|
|
} while (uVar3 < uVar2);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00519c80 at 0x00519C80 (size: 94) ---
|
|
|
|
|
|
undefined4 __thiscall FUN_00519c80(int param_1,int param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
|
|
|
|
if (param_2 == DAT_00844fe0) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
iVar1 = FUN_00520bb0(param_2);
|
|
|
|
if (iVar1 != 0) {
|
|
|
|
FUN_00519450();
|
|
|
|
if (*(int **)(param_1 + 0x54) != (int *)0x0) {
|
|
|
|
(**(code **)(**(int **)(param_1 + 0x54) + 0x14))();
|
|
|
|
*(undefined4 *)(param_1 + 0x54) = 0;
|
|
|
|
}
|
|
|
|
*(int *)(param_1 + 0x54) = iVar1;
|
|
|
|
iVar1 = FUN_00518a70();
|
|
|
|
if (iVar1 != 0) {
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00519ce0 at 0x00519CE0 (size: 90) ---
|
|
|
|
|
|
void __fastcall FUN_00519ce0(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 *puVar1;
|
|
|
|
|
|
|
|
if ((*(int *)(param_1 + 4) != 0) && (*(int *)(param_1 + 0x70) != 0)) {
|
|
|
|
FUN_00518a20(*(undefined4 *)(*(int *)(param_1 + 4) + 0x90));
|
|
|
|
puVar1 = *(undefined4 **)(param_1 + 0x70);
|
|
|
|
if (puVar1 != (undefined4 *)0x0) {
|
|
|
|
if (puVar1[1] != 0) {
|
|
|
|
operator_delete__((void *)(puVar1[1] + -4));
|
|
|
|
puVar1[1] = 0;
|
|
|
|
}
|
|
|
|
*puVar1 = 0;
|
|
|
|
operator_delete(puVar1);
|
|
|
|
}
|
|
|
|
*(undefined4 *)(param_1 + 0x70) = 0;
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00519d40 at 0x00519D40 (size: 133) ---
|
|
|
|
|
|
bool FUN_00519d40(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
bool bVar1;
|
|
|
|
int iVar2;
|
|
|
|
bool bVar3;
|
|
|
|
|
|
|
|
bVar3 = true;
|
|
|
|
bVar1 = 0 < *(int *)(param_1 + 0x28);
|
|
|
|
if (bVar1) {
|
|
|
|
iVar2 = FUN_005190b0(*(undefined4 *)(param_1 + 0x20));
|
|
|
|
bVar3 = iVar2 != 0;
|
|
|
|
}
|
|
|
|
if (0 < *(int *)(param_1 + 0x1c)) {
|
|
|
|
iVar2 = FUN_00519110(*(undefined4 *)(param_1 + 0x14));
|
|
|
|
if (iVar2 == 0) {
|
|
|
|
bVar3 = false;
|
|
|
|
}
|
|
|
|
bVar1 = true;
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x10) < 1) {
|
|
|
|
if (!bVar1) {
|
|
|
|
return bVar3;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar2 = FUN_00519940(*(undefined4 *)(param_1 + 4),*(undefined4 *)(param_1 + 8));
|
|
|
|
if (iVar2 == 0) {
|
|
|
|
bVar3 = false;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
iVar2 = FUN_00519070();
|
|
|
|
if (iVar2 != 0) {
|
|
|
|
return bVar3;
|
|
|
|
}
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00519dd0 at 0x00519DD0 (size: 100) ---
|
|
|
|
|
|
void __fastcall FUN_00519dd0(undefined4 *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
void *pvVar1;
|
|
|
|
|
|
|
|
pvVar1 = (void *)param_1[0x14];
|
|
|
|
if (pvVar1 != (void *)0x0) {
|
|
|
|
FUN_0051ca00();
|
|
|
|
operator_delete(pvVar1);
|
|
|
|
}
|
|
|
|
param_1[0x14] = 0;
|
|
|
|
FUN_00518d40();
|
|
|
|
FUN_00519ce0();
|
|
|
|
FUN_00519450();
|
|
|
|
if ((int *)param_1[0x15] != (int *)0x0) {
|
|
|
|
(**(code **)(*(int *)param_1[0x15] + 0x14))();
|
|
|
|
param_1[0x15] = 0;
|
|
|
|
}
|
|
|
|
*param_1 = 0;
|
|
|
|
param_1[1] = 0;
|
|
|
|
FUN_00525420(0);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00519e40 at 0x00519E40 (size: 32) ---
|
|
|
|
|
|
void __thiscall FUN_00519e40(int param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_00519c20(param_2);
|
|
|
|
if (*(int *)(param_1 + 0x70) != 0) {
|
|
|
|
FUN_00518790(param_2);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00519e60 at 0x00519E60 (size: 149) ---
|
|
|
|
|
|
undefined4 __thiscall FUN_00519e60(int param_1,int param_2,int param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 uVar1;
|
|
|
|
int iVar2;
|
|
|
|
|
|
|
|
if ((*(int *)(param_1 + 0x54) == 0) || (*(int *)(*(int *)(param_1 + 0x54) + 0x28) != param_2)) {
|
|
|
|
uVar1 = FUN_004220b0(param_2,7);
|
|
|
|
iVar2 = FUN_00415430(uVar1);
|
|
|
|
if (iVar2 == 0) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
FUN_00518d40();
|
|
|
|
FUN_00519ce0();
|
|
|
|
FUN_00519450();
|
|
|
|
if (*(int **)(param_1 + 0x54) != (int *)0x0) {
|
|
|
|
(**(code **)(**(int **)(param_1 + 0x54) + 0x14))();
|
|
|
|
*(undefined4 *)(param_1 + 0x54) = 0;
|
|
|
|
}
|
|
|
|
*(int *)(param_1 + 0x54) = iVar2;
|
|
|
|
if ((param_3 != 0) && (iVar2 = FUN_00518a70(), iVar2 == 0)) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
FUN_00519730();
|
|
|
|
FUN_005194b0();
|
|
|
|
}
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00519f00 at 0x00519F00 (size: 161) ---
|
|
|
|
|
|
undefined4 __thiscall FUN_00519f00(int param_1,uint param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
int iVar2;
|
|
|
|
|
|
|
|
iVar1 = *(int *)(param_1 + 0x54);
|
|
|
|
for (iVar2 = *(int *)(*(int *)(iVar1 + 0xb8) +
|
|
|
|
((param_2 >> ((byte)*(undefined4 *)(iVar1 + 0xb4) & 0x1f) ^ param_2) &
|
|
|
|
*(uint *)(iVar1 + 0xb0)) * 4); iVar2 != 0; iVar2 = *(int *)(iVar2 + 4)) {
|
|
|
|
if (param_2 == *(uint *)(iVar2 + 8)) {
|
|
|
|
if (iVar2 != 0) goto LAB_00519f8e;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
iVar2 = *(int *)(*(int *)(iVar1 + 0xb8) +
|
|
|
|
(0U >> ((byte)*(undefined4 *)(iVar1 + 0xb4) & 0x1f) & *(uint *)(iVar1 + 0xb0)) * 4
|
|
|
|
);
|
|
|
|
do {
|
|
|
|
if (iVar2 == 0) {
|
|
|
|
LAB_00519f6e:
|
|
|
|
FUN_005255b0(0,0);
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
if (*(int *)(iVar2 + 8) == 0) {
|
|
|
|
if (iVar2 != 0) {
|
|
|
|
param_2 = 0;
|
|
|
|
LAB_00519f8e:
|
|
|
|
FUN_005255b0(iVar2 + 0xc,param_2);
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
goto LAB_00519f6e;
|
|
|
|
}
|
|
|
|
iVar2 = *(int *)(iVar2 + 4);
|
|
|
|
} while( true );
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00519fb0 at 0x00519FB0 (size: 80) ---
|
|
|
|
|
|
undefined4 __thiscall FUN_00519fb0(int param_1,int param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 uVar1;
|
|
|
|
uint uVar2;
|
|
|
|
|
|
|
|
if ((*(int *)(param_1 + 0x54) != 0) && (uVar2 = 0, *(int *)(param_1 + 0x58) != 0)) {
|
|
|
|
do {
|
|
|
|
if (*(int *)(*(int *)(param_1 + 0x5c) + uVar2 * 4) != 0) {
|
|
|
|
FUN_0050e080();
|
|
|
|
}
|
|
|
|
uVar2 = uVar2 + 1;
|
|
|
|
} while (uVar2 < *(uint *)(param_1 + 0x58));
|
|
|
|
}
|
|
|
|
FUN_00518d40();
|
|
|
|
if (param_2 == 0) {
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
uVar1 = FUN_00519d40(param_2);
|
|
|
|
return uVar1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051a000 at 0x0051A000 (size: 17) ---
|
|
|
|
|
|
void FUN_0051a000(void)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_00519dd0();
|
|
|
|
FUN_00525630();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051a020 at 0x0051A020 (size: 161) ---
|
|
|
|
|
|
undefined4 * FUN_0051a020(undefined4 param_1,undefined4 param_2,undefined4 param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 *puVar1;
|
|
|
|
int iVar2;
|
|
|
|
|
|
|
|
puVar1 = (undefined4 *)FUN_005df0f5(0x78);
|
|
|
|
if (puVar1 != (undefined4 *)0x0) {
|
|
|
|
*puVar1 = 0;
|
|
|
|
puVar1[1] = 0;
|
|
|
|
FUN_005255f0();
|
|
|
|
puVar1[0x14] = 0;
|
|
|
|
puVar1[0x15] = 0;
|
|
|
|
puVar1[0x16] = 0;
|
|
|
|
puVar1[0x17] = 0;
|
|
|
|
puVar1[0x18] = 0x3f800000;
|
|
|
|
puVar1[0x19] = 0x3f800000;
|
|
|
|
puVar1[0x1a] = 0x3f800000;
|
|
|
|
puVar1[0x1b] = 0;
|
|
|
|
puVar1[0x1c] = 0;
|
|
|
|
puVar1[0x1d] = 0;
|
|
|
|
puVar1[1] = param_1;
|
|
|
|
FUN_00525420(param_1);
|
|
|
|
iVar2 = FUN_00520d10(param_2,param_3);
|
|
|
|
puVar1[0x15] = iVar2;
|
|
|
|
if (iVar2 != 0) {
|
|
|
|
iVar2 = FUN_00518a70();
|
|
|
|
if (iVar2 != 0) {
|
|
|
|
return puVar1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
FUN_00519dd0();
|
|
|
|
FUN_00525630();
|
|
|
|
operator_delete(puVar1);
|
|
|
|
}
|
|
|
|
return (undefined4 *)0x0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051a0d0 at 0x0051A0D0 (size: 149) ---
|
|
|
|
|
|
undefined4 * FUN_0051a0d0(undefined4 param_1,undefined4 param_2,undefined4 param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 *puVar1;
|
|
|
|
int iVar2;
|
|
|
|
|
|
|
|
puVar1 = (undefined4 *)FUN_005df0f5(0x78);
|
|
|
|
if (puVar1 != (undefined4 *)0x0) {
|
|
|
|
*puVar1 = 0;
|
|
|
|
puVar1[1] = 0;
|
|
|
|
FUN_005255f0();
|
|
|
|
puVar1[0x14] = 0;
|
|
|
|
puVar1[0x15] = 0;
|
|
|
|
puVar1[0x16] = 0;
|
|
|
|
puVar1[0x17] = 0;
|
|
|
|
puVar1[0x18] = 0x3f800000;
|
|
|
|
puVar1[0x19] = 0x3f800000;
|
|
|
|
puVar1[0x1a] = 0x3f800000;
|
|
|
|
puVar1[0x1b] = 0;
|
|
|
|
puVar1[0x1c] = 0;
|
|
|
|
puVar1[0x1d] = 0;
|
|
|
|
puVar1[1] = param_1;
|
|
|
|
FUN_00525420(param_1);
|
|
|
|
iVar2 = FUN_00519e60(param_2,param_3);
|
|
|
|
if (iVar2 != 0) {
|
|
|
|
FUN_00519f00(0x65);
|
|
|
|
return puVar1;
|
|
|
|
}
|
|
|
|
FUN_00519dd0();
|
|
|
|
FUN_00525630();
|
|
|
|
operator_delete(puVar1);
|
|
|
|
}
|
|
|
|
return (undefined4 *)0x0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051a170 at 0x0051A170 (size: 144) ---
|
|
|
|
|
|
undefined4 * FUN_0051a170(undefined4 param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 *puVar1;
|
|
|
|
int iVar2;
|
|
|
|
|
|
|
|
puVar1 = (undefined4 *)FUN_005df0f5(0x78);
|
|
|
|
if (puVar1 != (undefined4 *)0x0) {
|
|
|
|
*puVar1 = 0;
|
|
|
|
puVar1[1] = 0;
|
|
|
|
FUN_005255f0();
|
|
|
|
puVar1[0x14] = 0;
|
|
|
|
puVar1[0x15] = 0;
|
|
|
|
puVar1[0x16] = 0;
|
|
|
|
puVar1[0x17] = 0;
|
|
|
|
puVar1[0x18] = 0x3f800000;
|
|
|
|
puVar1[0x19] = 0x3f800000;
|
|
|
|
puVar1[0x1a] = 0x3f800000;
|
|
|
|
puVar1[0x1b] = 0;
|
|
|
|
puVar1[0x1c] = 0;
|
|
|
|
puVar1[0x1d] = 0;
|
|
|
|
puVar1[1] = param_1;
|
|
|
|
FUN_00525420(param_1);
|
|
|
|
iVar2 = FUN_00519c80(param_2);
|
|
|
|
if (iVar2 != 0) {
|
|
|
|
FUN_00519f00(0x65);
|
|
|
|
return puVar1;
|
|
|
|
}
|
|
|
|
FUN_00519dd0();
|
|
|
|
FUN_00525630();
|
|
|
|
operator_delete(puVar1);
|
|
|
|
}
|
|
|
|
return (undefined4 *)0x0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051a200 at 0x0051A200 (size: 105) ---
|
|
|
|
|
|
undefined4 FUN_0051a200(int param_1,int param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
float fVar1;
|
|
|
|
float10 fVar2;
|
|
|
|
float10 fVar3;
|
|
|
|
|
|
|
|
fVar1 = *(float *)(param_1 + 4);
|
|
|
|
fVar2 = (float10)FUN_005aa560(param_2 + 0x48);
|
|
|
|
fVar3 = (float10)FUN_0050f490();
|
|
|
|
if (fVar3 + (float10)fVar1 <= (float10)(float)fVar2) {
|
|
|
|
if (*(int *)(param_1 + 8) != 0) {
|
|
|
|
*(undefined4 *)(param_1 + 8) = 0;
|
|
|
|
return 2;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if (*(int *)(param_1 + 8) == 0) {
|
|
|
|
*(undefined4 *)(param_1 + 8) = 1;
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051a270 at 0x0051A270 (size: 87) ---
|
|
|
|
|
|
void __thiscall FUN_0051a270(undefined4 *param_1,int *param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
|
|
|
|
*param_1 = param_2;
|
|
|
|
param_1[1] = 0xffffffff;
|
|
|
|
param_1[2] = 0;
|
|
|
|
param_1[3] = 0;
|
|
|
|
if (param_2 == (int *)0x0) {
|
|
|
|
param_1[3] = 1;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
do {
|
|
|
|
iVar1 = param_1[1] + 1;
|
|
|
|
param_1[1] = iVar1;
|
|
|
|
if (param_2[1] <= iVar1) {
|
|
|
|
param_1[3] = 1;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
iVar1 = *(int *)(*param_2 + iVar1 * 4);
|
|
|
|
param_1[2] = iVar1;
|
|
|
|
} while (iVar1 == 0);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051a2d0 at 0x0051A2D0 (size: 62) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_0051a2d0(undefined4 *param_1,int param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 *puVar1;
|
|
|
|
uint uVar2;
|
|
|
|
int iVar3;
|
|
|
|
|
|
|
|
param_1[1] = param_2;
|
|
|
|
*param_1 = 0;
|
|
|
|
puVar1 = (undefined4 *)thunk_FUN_005df0f5(param_2 << 2);
|
|
|
|
*param_1 = puVar1;
|
|
|
|
for (uVar2 = param_1[1] & 0x3fffffff; uVar2 != 0; uVar2 = uVar2 - 1) {
|
|
|
|
*puVar1 = 0;
|
|
|
|
puVar1 = puVar1 + 1;
|
|
|
|
}
|
|
|
|
for (iVar3 = 0; iVar3 != 0; iVar3 = iVar3 + -1) {
|
|
|
|
*(undefined1 *)puVar1 = 0;
|
|
|
|
puVar1 = (undefined4 *)((int)puVar1 + 1);
|
|
|
|
}
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051a310 at 0x0051A310 (size: 92) ---
|
|
|
|
|
|
void __fastcall FUN_0051a310(int *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 *puVar1;
|
|
|
|
undefined4 *puVar2;
|
|
|
|
undefined4 *puVar3;
|
|
|
|
|
|
|
|
puVar3 = (undefined4 *)*param_1;
|
|
|
|
if (puVar3 < puVar3 + param_1[1]) {
|
|
|
|
do {
|
|
|
|
puVar2 = (undefined4 *)*puVar3;
|
|
|
|
while (puVar2 != (undefined4 *)0x0) {
|
|
|
|
puVar1 = (undefined4 *)*puVar2;
|
|
|
|
if ((void *)puVar2[1] != (void *)0x0) {
|
|
|
|
operator_delete((void *)puVar2[1]);
|
|
|
|
}
|
|
|
|
operator_delete(puVar2);
|
|
|
|
puVar2 = puVar1;
|
|
|
|
}
|
|
|
|
*puVar3 = 0;
|
|
|
|
puVar3 = puVar3 + 1;
|
|
|
|
} while (puVar3 < (undefined4 *)(*param_1 + param_1[1] * 4));
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051a370 at 0x0051A370 (size: 65) ---
|
|
|
|
|
|
void __fastcall FUN_0051a370(int *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 *puVar1;
|
|
|
|
undefined4 *puVar2;
|
|
|
|
undefined4 *puVar3;
|
|
|
|
|
|
|
|
puVar3 = (undefined4 *)*param_1;
|
|
|
|
if (puVar3 < puVar3 + param_1[1]) {
|
|
|
|
do {
|
|
|
|
puVar2 = (undefined4 *)*puVar3;
|
|
|
|
while (puVar2 != (undefined4 *)0x0) {
|
|
|
|
puVar1 = (undefined4 *)*puVar2;
|
|
|
|
operator_delete(puVar2);
|
|
|
|
puVar2 = puVar1;
|
|
|
|
}
|
|
|
|
*puVar3 = 0;
|
|
|
|
puVar3 = puVar3 + 1;
|
|
|
|
} while (puVar3 < (undefined4 *)(*param_1 + param_1[1] * 4));
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051a3c0 at 0x0051A3C0 (size: 98) ---
|
|
|
|
|
|
void __thiscall FUN_0051a3c0(int *param_1,int param_2,int param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 local_10;
|
|
|
|
undefined4 local_c;
|
|
|
|
undefined4 local_8;
|
|
|
|
undefined4 local_4;
|
|
|
|
|
|
|
|
local_10 = 0;
|
|
|
|
local_c = 0;
|
|
|
|
local_8 = 0;
|
|
|
|
local_4 = *(undefined4 *)(param_2 + 4);
|
|
|
|
*(undefined4 *)(param_3 + 4) = 1;
|
|
|
|
FUN_0052c5a0(*param_1 + 0x48,&local_10,param_3,0);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051a430 at 0x0051A430 (size: 80) ---
|
|
|
|
|
|
undefined4 __thiscall FUN_0051a430(int *param_1,undefined4 param_2,uint param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 *puVar1;
|
|
|
|
undefined4 *puVar2;
|
|
|
|
|
|
|
|
puVar1 = (undefined4 *)(*param_1 + ((param_3 >> 0x10 ^ param_3) % (uint)param_1[1]) * 4);
|
|
|
|
puVar2 = (undefined4 *)FUN_005df0f5(0xc);
|
|
|
|
if (puVar2 != (undefined4 *)0x0) {
|
|
|
|
*puVar2 = 0;
|
|
|
|
puVar2[1] = 0;
|
|
|
|
puVar2[2] = 0;
|
|
|
|
puVar2[2] = param_3;
|
|
|
|
puVar2[1] = param_2;
|
|
|
|
*puVar2 = *puVar1;
|
|
|
|
*puVar1 = puVar2;
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051a480 at 0x0051A480 (size: 166) ---
|
|
|
|
|
|
undefined4 __thiscall FUN_0051a480(int *param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
uint uVar2;
|
|
|
|
|
|
|
|
if ((param_1[1] == 0) && (param_1[3] == 0)) {
|
|
|
|
iVar1 = FUN_005df0f5(8);
|
|
|
|
if (iVar1 == 0) {
|
|
|
|
iVar1 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar1 = FUN_0051a2d0(0x20);
|
|
|
|
}
|
|
|
|
param_1[1] = iVar1;
|
|
|
|
iVar1 = FUN_005df0f5(0x1c);
|
|
|
|
if (iVar1 == 0) {
|
|
|
|
iVar1 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar1 = FUN_0050b3f0();
|
|
|
|
}
|
|
|
|
param_1[3] = iVar1;
|
|
|
|
FUN_0051a3c0(param_2,iVar1);
|
|
|
|
if (*(int *)(param_1[3] + 8) != 0) {
|
|
|
|
uVar2 = 0;
|
|
|
|
do {
|
|
|
|
if (*(int *)(*(int *)(param_1[3] + 0xc) + 4 + uVar2 * 8) != 0) {
|
|
|
|
FUN_0052c770(*(undefined4 *)(*param_1 + 8),param_2);
|
|
|
|
}
|
|
|
|
uVar2 = uVar2 + 1;
|
|
|
|
} while (uVar2 < *(uint *)(param_1[3] + 8));
|
|
|
|
}
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051a530 at 0x0051A530 (size: 238) ---
|
|
|
|
|
|
void __thiscall FUN_0051a530(int param_1,uint *param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
int *piVar1;
|
|
|
|
uint uVar2;
|
|
|
|
uint uVar3;
|
|
|
|
int iVar4;
|
|
|
|
uint *puVar5;
|
|
|
|
|
|
|
|
piVar1 = *(int **)(param_1 + 4);
|
|
|
|
if (piVar1 != (int *)0x0) {
|
|
|
|
uVar2 = *param_2;
|
|
|
|
piVar1 = *(int **)(*piVar1 + ((uVar2 >> 0x10 ^ uVar2) % (uint)piVar1[1]) * 4);
|
|
|
|
if (piVar1 != (int *)0x0) {
|
|
|
|
uVar3 = piVar1[2];
|
|
|
|
while (uVar3 != uVar2) {
|
|
|
|
piVar1 = (int *)*piVar1;
|
|
|
|
if (piVar1 == (int *)0x0) goto LAB_0051a5e2;
|
|
|
|
uVar3 = piVar1[2];
|
|
|
|
}
|
|
|
|
iVar4 = piVar1[1];
|
|
|
|
if (iVar4 != 0) {
|
|
|
|
if (param_2[1] != 1) {
|
|
|
|
if (*(int *)(iVar4 + 4) != 1) {
|
|
|
|
*(undefined4 *)(iVar4 + 4) = 2;
|
|
|
|
*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
FUN_0051ad60(uVar2);
|
|
|
|
if (*(int *)(param_1 + 8) == 0) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + -1;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
if (*(int *)(iVar4 + 4) != 2) {
|
|
|
|
*(undefined4 *)(iVar4 + 4) = 1;
|
|
|
|
*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
*(undefined4 *)(iVar4 + 4) = 0;
|
|
|
|
if (*(int *)(param_1 + 8) == 0) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + -1;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
LAB_0051a5e2:
|
|
|
|
puVar5 = (uint *)FUN_005df0f5(8);
|
|
|
|
if (puVar5 == (uint *)0x0) {
|
|
|
|
puVar5 = (uint *)0x0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*puVar5 = 0;
|
|
|
|
puVar5[1] = 0;
|
|
|
|
}
|
|
|
|
uVar2 = *param_2;
|
|
|
|
*puVar5 = uVar2;
|
|
|
|
puVar5[1] = param_2[1];
|
|
|
|
FUN_0051a430(puVar5,uVar2);
|
|
|
|
*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051a620 at 0x0051A620 (size: 312) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void __thiscall FUN_0051a620(int *param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 *puVar1;
|
|
|
|
int iVar2;
|
|
|
|
uint uVar3;
|
|
|
|
float10 fVar4;
|
|
|
|
undefined1 local_1c [8];
|
|
|
|
uint local_14;
|
|
|
|
int local_10;
|
|
|
|
|
|
|
|
if (((param_1[3] != 0) || (FUN_0051a480(param_2), param_1[3] != 0)) &&
|
|
|
|
(fVar4 = (float10)FUN_005aa560(*param_1 + 0x48), (float10)_DAT_007b817c <= fVar4)) {
|
|
|
|
param_1[7] = *(int *)(*param_1 + 0x4c);
|
|
|
|
FUN_00425f10(*param_1 + 0x50);
|
|
|
|
FUN_0050b3f0();
|
|
|
|
FUN_0051a3c0(param_2,local_1c);
|
|
|
|
uVar3 = 0;
|
|
|
|
if (local_14 != 0) {
|
|
|
|
do {
|
|
|
|
if (*(int *)(local_10 + 4 + uVar3 * 8) != 0) {
|
|
|
|
FUN_0052c770(*(undefined4 *)(*param_1 + 8),param_2);
|
|
|
|
}
|
|
|
|
uVar3 = uVar3 + 1;
|
|
|
|
} while (uVar3 < local_14);
|
|
|
|
}
|
|
|
|
iVar2 = param_1[3];
|
|
|
|
uVar3 = 0;
|
|
|
|
if (*(int *)(iVar2 + 8) != 0) {
|
|
|
|
do {
|
|
|
|
iVar2 = FUN_0052b950(*(undefined4 *)(*(int *)(iVar2 + 0xc) + uVar3 * 8));
|
|
|
|
if (iVar2 != 0) {
|
|
|
|
FUN_0052c8a0(*(undefined4 *)(*param_1 + 8),param_2);
|
|
|
|
}
|
|
|
|
iVar2 = param_1[3];
|
|
|
|
uVar3 = uVar3 + 1;
|
|
|
|
} while (uVar3 < *(uint *)(iVar2 + 8));
|
|
|
|
}
|
|
|
|
puVar1 = (undefined4 *)param_1[3];
|
|
|
|
puVar1[2] = 0;
|
|
|
|
*puVar1 = 0;
|
|
|
|
puVar1[1] = 0;
|
|
|
|
uVar3 = 0;
|
|
|
|
if (local_14 != 0) {
|
|
|
|
do {
|
|
|
|
FUN_006b5f30(*(undefined4 *)(local_10 + uVar3 * 8),0);
|
|
|
|
uVar3 = uVar3 + 1;
|
|
|
|
} while (uVar3 < local_14);
|
|
|
|
}
|
|
|
|
if (local_10 != 0) {
|
|
|
|
operator_delete__((void *)(local_10 + -4));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051a760 at 0x0051A760 (size: 199) ---
|
|
|
|
|
|
void __thiscall FUN_0051a760(int param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 *puVar1;
|
|
|
|
int *local_10;
|
|
|
|
int local_c;
|
|
|
|
undefined4 *local_8;
|
|
|
|
int local_4;
|
|
|
|
|
|
|
|
FUN_0051a270(*(undefined4 *)(param_1 + 4));
|
|
|
|
do {
|
|
|
|
if (local_4 != 0) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
if (local_8 == (undefined4 *)0x0) {
|
|
|
|
puVar1 = (undefined4 *)0x0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
puVar1 = (undefined4 *)local_8[1];
|
|
|
|
}
|
|
|
|
local_8 = (undefined4 *)*local_8;
|
|
|
|
while (local_8 == (undefined4 *)0x0) {
|
|
|
|
local_c = local_c + 1;
|
|
|
|
if (local_10[1] <= local_c) {
|
|
|
|
local_4 = 1;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
local_8 = *(undefined4 **)(*local_10 + local_c * 4);
|
|
|
|
}
|
|
|
|
if (puVar1[1] == 1) {
|
|
|
|
FUN_004f64c0(param_2,puVar1);
|
|
|
|
}
|
|
|
|
else if (puVar1[1] == 2) {
|
|
|
|
FUN_004f64c0(param_2,puVar1);
|
|
|
|
}
|
|
|
|
if (puVar1[1] == 2) {
|
|
|
|
FUN_0051ad60(*puVar1);
|
|
|
|
operator_delete(puVar1);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
puVar1[1] = 0;
|
|
|
|
}
|
|
|
|
} while( true );
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051a830 at 0x0051A830 (size: 175) ---
|
|
|
|
|
|
void __thiscall FUN_0051a830(int *param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 *puVar1;
|
|
|
|
void *pvVar2;
|
|
|
|
int iVar3;
|
|
|
|
uint uVar4;
|
|
|
|
|
|
|
|
if (param_1[1] != 0) {
|
|
|
|
FUN_0051a310();
|
|
|
|
puVar1 = (undefined4 *)param_1[1];
|
|
|
|
if (puVar1 != (undefined4 *)0x0) {
|
|
|
|
FUN_0051a370();
|
|
|
|
operator_delete__((void *)*puVar1);
|
|
|
|
*puVar1 = 0;
|
|
|
|
operator_delete(puVar1);
|
|
|
|
}
|
|
|
|
param_1[1] = 0;
|
|
|
|
param_1[2] = 0;
|
|
|
|
}
|
|
|
|
if (param_1[3] != 0) {
|
|
|
|
uVar4 = 0;
|
|
|
|
if (*(int *)(param_1[3] + 8) != 0) {
|
|
|
|
do {
|
|
|
|
iVar3 = FUN_0052b950(*(undefined4 *)(*(int *)(param_1[3] + 0xc) + uVar4 * 8));
|
|
|
|
if (iVar3 != 0) {
|
|
|
|
FUN_0052c8a0(*(undefined4 *)(*param_1 + 8),param_2);
|
|
|
|
}
|
|
|
|
uVar4 = uVar4 + 1;
|
|
|
|
} while (uVar4 < *(uint *)(param_1[3] + 8));
|
|
|
|
}
|
|
|
|
pvVar2 = (void *)param_1[3];
|
|
|
|
if (pvVar2 != (void *)0x0) {
|
|
|
|
if (*(int *)((int)pvVar2 + 0xc) != 0) {
|
|
|
|
operator_delete__((void *)(*(int *)((int)pvVar2 + 0xc) + -4));
|
|
|
|
}
|
|
|
|
*(undefined4 *)((int)pvVar2 + 0xc) = 0;
|
|
|
|
operator_delete(pvVar2);
|
|
|
|
}
|
|
|
|
param_1[3] = 0;
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051a8e0 at 0x0051A8E0 (size: 92) ---
|
|
|
|
|
|
void __fastcall FUN_0051a8e0(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
uint uVar1;
|
|
|
|
void *pvVar2;
|
|
|
|
uint uVar3;
|
|
|
|
|
|
|
|
uVar1 = *(uint *)(param_1 + 0x70);
|
|
|
|
while (uVar1 = uVar1 - 1, -1 < (int)uVar1) {
|
|
|
|
pvVar2 = (void *)FUN_0051ad60(*(undefined4 *)(*(int *)(param_1 + 0x68) + uVar1 * 4));
|
|
|
|
if (pvVar2 != (void *)0x0) {
|
|
|
|
if (*(int *)((int)pvVar2 + 0xc) == 0) {
|
|
|
|
FUN_0051a830(pvVar2);
|
|
|
|
}
|
|
|
|
operator_delete(pvVar2);
|
|
|
|
}
|
|
|
|
if (uVar1 < *(uint *)(param_1 + 0x70)) {
|
|
|
|
uVar3 = *(uint *)(param_1 + 0x70) - 1;
|
|
|
|
*(uint *)(param_1 + 0x70) = uVar3;
|
|
|
|
if (uVar1 != uVar3) {
|
|
|
|
*(undefined4 *)(*(int *)(param_1 + 0x68) + uVar1 * 4) =
|
|
|
|
*(undefined4 *)(*(int *)(param_1 + 0x68) + uVar3 * 4);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051a940 at 0x0051A940 (size: 131) ---
|
|
|
|
|
|
void __thiscall FUN_0051a940(int param_1,undefined4 *param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
undefined4 uVar2;
|
|
|
|
|
|
|
|
if (param_2[3] == 0) {
|
|
|
|
FUN_0051a620(param_2);
|
|
|
|
FUN_0051a760(*param_2);
|
|
|
|
*(undefined4 *)(param_1 + 8) = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar1 = FUN_0050ff60(param_2[3]);
|
|
|
|
if (iVar1 == 0) {
|
|
|
|
param_2[4] = 2;
|
|
|
|
iVar1 = param_2[4];
|
|
|
|
uVar2 = *param_2;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar2 = FUN_0051a200(param_2,iVar1);
|
|
|
|
param_2[4] = uVar2;
|
|
|
|
iVar1 = param_2[4];
|
|
|
|
uVar2 = *param_2;
|
|
|
|
}
|
|
|
|
if (iVar1 == 1) {
|
|
|
|
FUN_004f64c0(uVar2,param_2 + 3);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
if (iVar1 == 2) {
|
|
|
|
FUN_004f64c0(uVar2,param_2 + 3);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051a9d0 at 0x0051A9D0 (size: 170) ---
|
|
|
|
|
|
void __fastcall FUN_0051a9d0(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
void *pvVar1;
|
|
|
|
int *local_10;
|
|
|
|
int local_c;
|
|
|
|
undefined4 *local_8;
|
|
|
|
int local_4;
|
|
|
|
|
|
|
|
FUN_0051a8e0();
|
|
|
|
FUN_0051a270(param_1 + 0x60);
|
|
|
|
if (local_4 == 0) {
|
|
|
|
if (local_8 == (undefined4 *)0x0) goto LAB_0051aa2c;
|
|
|
|
do {
|
|
|
|
pvVar1 = (void *)local_8[1];
|
|
|
|
if (pvVar1 != (void *)0x0) {
|
|
|
|
if (*(int *)((int)pvVar1 + 0xc) == 0) {
|
|
|
|
FUN_0051a830(pvVar1);
|
|
|
|
}
|
|
|
|
operator_delete(pvVar1);
|
|
|
|
}
|
|
|
|
LAB_0051aa2c:
|
|
|
|
local_8 = (undefined4 *)*local_8;
|
|
|
|
while (local_8 == (undefined4 *)0x0) {
|
|
|
|
local_c = local_c + 1;
|
|
|
|
if (local_10[1] <= local_c) goto LAB_0051aa46;
|
|
|
|
local_8 = *(undefined4 **)(*local_10 + local_c * 4);
|
|
|
|
}
|
|
|
|
} while( true );
|
|
|
|
}
|
|
|
|
LAB_0051aa46:
|
|
|
|
operator_delete__(*(void **)(param_1 + 0x68));
|
|
|
|
FUN_0051a370();
|
|
|
|
operator_delete__(*(void **)(param_1 + 0x60));
|
|
|
|
*(undefined4 *)(param_1 + 0x60) = 0;
|
|
|
|
*(undefined ***)(param_1 + 0x18) = &PTR_FUN_0079385c;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051aa80 at 0x0051AA80 (size: 114) ---
|
|
|
|
|
|
undefined4 __thiscall FUN_0051aa80(int param_1,uint param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
int *piVar1;
|
|
|
|
uint uVar2;
|
|
|
|
int iVar3;
|
|
|
|
|
|
|
|
piVar1 = *(int **)(*(int *)(param_1 + 0x60) +
|
|
|
|
((param_2 >> 0x10 ^ param_2) % *(uint *)(param_1 + 100)) * 4);
|
|
|
|
if (piVar1 == (int *)0x0) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
uVar2 = piVar1[2];
|
|
|
|
while (uVar2 != param_2) {
|
|
|
|
piVar1 = (int *)*piVar1;
|
|
|
|
if (piVar1 == (int *)0x0) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
uVar2 = piVar1[2];
|
|
|
|
}
|
|
|
|
if (piVar1[1] != 0) {
|
|
|
|
uVar2 = *(uint *)(param_1 + 0x6c);
|
|
|
|
if (uVar2 <= *(uint *)(param_1 + 0x70)) {
|
|
|
|
if (uVar2 == 0) {
|
|
|
|
iVar3 = 8;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar3 = uVar2 * 2;
|
|
|
|
}
|
|
|
|
iVar3 = FUN_00500570(iVar3);
|
|
|
|
if (iVar3 == 0) {
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
*(uint *)(*(int *)(param_1 + 0x68) + *(int *)(param_1 + 0x70) * 4) = param_2;
|
|
|
|
*(int *)(param_1 + 0x70) = *(int *)(param_1 + 0x70) + 1;
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051ab00 at 0x0051AB00 (size: 164) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void __fastcall FUN_0051ab00(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
bool bVar1;
|
|
|
|
undefined4 uVar2;
|
|
|
|
int *local_10;
|
|
|
|
int local_c;
|
|
|
|
undefined4 *local_8;
|
|
|
|
int local_4;
|
|
|
|
|
|
|
|
FUN_0051a8e0();
|
|
|
|
if (_DAT_007c7bd8 <= (double)CONCAT44(DAT_008eee74,DAT_008eee70) - *(double *)(param_1 + 0x10)) {
|
|
|
|
FUN_0051a270(param_1 + 0x60);
|
|
|
|
if (local_4 == 0) {
|
|
|
|
bVar1 = false;
|
|
|
|
do {
|
|
|
|
if (local_8 == (undefined4 *)0x0) {
|
|
|
|
uVar2 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar2 = local_8[1];
|
|
|
|
}
|
|
|
|
if (!bVar1) {
|
|
|
|
local_8 = (undefined4 *)*local_8;
|
|
|
|
while (local_8 == (undefined4 *)0x0) {
|
|
|
|
local_c = local_c + 1;
|
|
|
|
if (local_10[1] <= local_c) {
|
|
|
|
bVar1 = true;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
local_8 = *(undefined4 **)(*local_10 + local_c * 4);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
FUN_0051a940(uVar2);
|
|
|
|
} while (!bVar1);
|
|
|
|
}
|
|
|
|
uVar2 = DAT_008eee74;
|
|
|
|
*(undefined4 *)(param_1 + 0x10) = DAT_008eee70;
|
|
|
|
*(undefined4 *)(param_1 + 0x14) = uVar2;
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051abb0 at 0x0051ABB0 (size: 98) ---
|
|
|
|
|
|
void __thiscall FUN_0051abb0(int *param_1,uint param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
int iVar2;
|
|
|
|
uint uVar3;
|
|
|
|
|
|
|
|
if (param_2 <= (uint)param_1[3]) {
|
|
|
|
FUN_0051ac20(param_2);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
iVar2 = thunk_FUN_005df0f5(param_2 * 8);
|
|
|
|
uVar3 = 0;
|
|
|
|
if (param_1[3] != 0) {
|
|
|
|
do {
|
|
|
|
iVar1 = *param_1;
|
|
|
|
*(undefined4 *)(iVar2 + uVar3 * 8) = *(undefined4 *)(iVar1 + uVar3 * 8);
|
|
|
|
*(undefined4 *)(iVar2 + 4 + uVar3 * 8) = *(undefined4 *)(iVar1 + 4 + uVar3 * 8);
|
|
|
|
uVar3 = uVar3 + 1;
|
|
|
|
} while (uVar3 < (uint)param_1[3]);
|
|
|
|
}
|
|
|
|
operator_delete__((void *)*param_1);
|
|
|
|
*param_1 = iVar2;
|
|
|
|
param_1[3] = param_2;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051ac20 at 0x0051AC20 (size: 131) ---
|
|
|
|
|
|
void __thiscall FUN_0051ac20(int *param_1,uint param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
int iVar2;
|
|
|
|
uint uVar3;
|
|
|
|
|
|
|
|
if (param_2 <= (uint)param_1[3]) {
|
|
|
|
if (param_2 == 0) {
|
|
|
|
param_1[3] = 0;
|
|
|
|
operator_delete__((void *)*param_1);
|
|
|
|
*param_1 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar2 = thunk_FUN_005df0f5(param_2 * 8);
|
|
|
|
uVar3 = 0;
|
|
|
|
param_1[3] = param_2;
|
|
|
|
if (param_2 != 0) {
|
|
|
|
do {
|
|
|
|
iVar1 = *param_1;
|
|
|
|
*(undefined4 *)(iVar2 + uVar3 * 8) = *(undefined4 *)(iVar1 + uVar3 * 8);
|
|
|
|
*(undefined4 *)(iVar2 + 4 + uVar3 * 8) = *(undefined4 *)(iVar1 + 4 + uVar3 * 8);
|
|
|
|
uVar3 = uVar3 + 1;
|
|
|
|
} while (uVar3 < (uint)param_1[3]);
|
|
|
|
}
|
|
|
|
operator_delete__((void *)*param_1);
|
|
|
|
*param_1 = iVar2;
|
|
|
|
}
|
|
|
|
if (param_2 < (uint)param_1[2]) {
|
|
|
|
param_1[2] = param_2;
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
FUN_0051abb0(param_2);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051acb0 at 0x0051ACB0 (size: 74) ---
|
|
|
|
|
|
undefined4 * __thiscall
|
|
|
|
FUN_0051acb0(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 uVar1;
|
|
|
|
|
|
|
|
*param_1 = param_2;
|
|
|
|
param_1[1] = param_3;
|
|
|
|
param_1[2] = param_4;
|
|
|
|
param_1[3] = 0;
|
|
|
|
param_1[4] = 0;
|
|
|
|
uVar1 = thunk_FUN_005df0f5(0x20);
|
|
|
|
param_1[5] = uVar1;
|
|
|
|
param_1[8] = 4;
|
|
|
|
param_1[6] = 4;
|
|
|
|
param_1[7] = 0;
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051ad00 at 0x0051AD00 (size: 87) ---
|
|
|
|
|
|
void __thiscall FUN_0051ad00(int param_1,int param_2,undefined4 param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
uint uVar1;
|
|
|
|
int *piVar2;
|
|
|
|
|
|
|
|
uVar1 = 0;
|
|
|
|
if (*(uint *)(param_1 + 0x10) != 0) {
|
|
|
|
piVar2 = *(int **)(param_1 + 0x14);
|
|
|
|
do {
|
|
|
|
if (param_2 == *piVar2) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
uVar1 = uVar1 + 1;
|
|
|
|
piVar2 = piVar2 + 2;
|
|
|
|
} while (uVar1 < *(uint *)(param_1 + 0x10));
|
|
|
|
}
|
|
|
|
if (*(uint *)(param_1 + 0x20) <= *(uint *)(param_1 + 0x10)) {
|
|
|
|
FUN_0051abb0(*(uint *)(param_1 + 0x20) + 4);
|
|
|
|
}
|
|
|
|
*(int *)(*(int *)(param_1 + 0x14) + *(int *)(param_1 + 0x10) * 8) = param_2;
|
|
|
|
*(undefined4 *)(*(int *)(param_1 + 0x14) + 4 + *(int *)(param_1 + 0x10) * 8) = param_3;
|
|
|
|
*(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + 1;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051ad60 at 0x0051AD60 (size: 104) ---
|
|
|
|
|
|
int __thiscall FUN_0051ad60(int *param_1,uint param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
int *piVar1;
|
|
|
|
int iVar2;
|
|
|
|
int *piVar3;
|
|
|
|
int *piVar4;
|
|
|
|
|
|
|
|
piVar1 = (int *)(*param_1 + ((param_2 >> 0x10 ^ param_2) % (uint)param_1[1]) * 4);
|
|
|
|
piVar4 = (int *)*piVar1;
|
|
|
|
if (piVar4 == (int *)0x0) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
if (piVar4[2] != param_2) {
|
|
|
|
do {
|
|
|
|
piVar3 = piVar4;
|
|
|
|
piVar4 = (int *)*piVar3;
|
|
|
|
if (piVar4 == (int *)0x0) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
} while (piVar4[2] != param_2);
|
|
|
|
if (piVar3 != (int *)0x0) {
|
|
|
|
*piVar3 = *piVar4;
|
|
|
|
iVar2 = piVar4[1];
|
|
|
|
operator_delete(piVar4);
|
|
|
|
return iVar2;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
*piVar1 = *piVar4;
|
|
|
|
iVar2 = piVar4[1];
|
|
|
|
operator_delete(piVar4);
|
|
|
|
return iVar2;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051add0 at 0x0051ADD0 (size: 63) ---
|
|
|
|
|
|
undefined4 * __fastcall FUN_0051add0(undefined4 *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 *puVar1;
|
|
|
|
uint uVar2;
|
|
|
|
int iVar3;
|
|
|
|
|
|
|
|
*param_1 = 0;
|
|
|
|
param_1[1] = 0;
|
|
|
|
param_1[2] = 0;
|
|
|
|
param_1[3] = 2;
|
|
|
|
puVar1 = (undefined4 *)thunk_FUN_005df0f5(8);
|
|
|
|
param_1[2] = puVar1;
|
|
|
|
for (uVar2 = param_1[3] & 0x3fffffff; uVar2 != 0; uVar2 = uVar2 - 1) {
|
|
|
|
*puVar1 = 0;
|
|
|
|
puVar1 = puVar1 + 1;
|
|
|
|
}
|
|
|
|
for (iVar3 = 0; iVar3 != 0; iVar3 = iVar3 + -1) {
|
|
|
|
*(undefined1 *)puVar1 = 0;
|
|
|
|
puVar1 = (undefined4 *)((int)puVar1 + 1);
|
|
|
|
}
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051ae10 at 0x0051AE10 (size: 138) ---
|
|
|
|
|
|
void __fastcall FUN_0051ae10(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 *puVar1;
|
|
|
|
void *pvVar2;
|
|
|
|
int *local_10;
|
|
|
|
int local_c;
|
|
|
|
undefined4 *local_8;
|
|
|
|
int local_4;
|
|
|
|
|
|
|
|
puVar1 = (undefined4 *)(param_1 + 8);
|
|
|
|
FUN_0051a270(puVar1);
|
|
|
|
if (local_4 == 0) {
|
|
|
|
if (local_8 == (undefined4 *)0x0) goto LAB_0051ae60;
|
|
|
|
do {
|
|
|
|
pvVar2 = (void *)local_8[1];
|
|
|
|
if (pvVar2 != (void *)0x0) {
|
|
|
|
operator_delete__(*(void **)((int)pvVar2 + 0x14));
|
|
|
|
*(undefined4 *)((int)pvVar2 + 0x14) = 0;
|
|
|
|
operator_delete(pvVar2);
|
|
|
|
}
|
|
|
|
LAB_0051ae60:
|
|
|
|
local_8 = (undefined4 *)*local_8;
|
|
|
|
while (local_8 == (undefined4 *)0x0) {
|
|
|
|
local_c = local_c + 1;
|
|
|
|
if (local_10[1] <= local_c) goto LAB_0051ae7d;
|
|
|
|
local_8 = *(undefined4 **)(*local_10 + local_c * 4);
|
|
|
|
}
|
|
|
|
} while( true );
|
|
|
|
}
|
|
|
|
LAB_0051ae7d:
|
|
|
|
FUN_0051a370();
|
|
|
|
operator_delete__((void *)*puVar1);
|
|
|
|
*puVar1 = 0;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051aea0 at 0x0051AEA0 (size: 118) ---
|
|
|
|
|
|
undefined4 __thiscall FUN_0051aea0(undefined4 *param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 *puVar1;
|
|
|
|
uint uVar2;
|
|
|
|
int iVar3;
|
|
|
|
undefined4 uVar4;
|
|
|
|
undefined4 *puVar5;
|
|
|
|
|
|
|
|
iVar3 = FUN_005df0f5(0x24);
|
|
|
|
if (iVar3 == 0) {
|
|
|
|
uVar4 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar4 = FUN_0051acb0(param_1[1],param_2,*param_1);
|
|
|
|
}
|
|
|
|
uVar2 = param_1[1];
|
|
|
|
puVar1 = (undefined4 *)(param_1[2] + ((uVar2 >> 0x10 ^ uVar2) % (uint)param_1[3]) * 4);
|
|
|
|
puVar5 = (undefined4 *)FUN_005df0f5(0xc);
|
|
|
|
if (puVar5 != (undefined4 *)0x0) {
|
|
|
|
*puVar5 = 0;
|
|
|
|
puVar5[1] = 0;
|
|
|
|
puVar5[2] = 0;
|
|
|
|
puVar5[1] = uVar4;
|
|
|
|
puVar5[2] = uVar2;
|
|
|
|
*puVar5 = *puVar1;
|
|
|
|
*puVar1 = puVar5;
|
|
|
|
}
|
|
|
|
param_1[1] = param_1[1] + 1;
|
|
|
|
return uVar4;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051af20 at 0x0051AF20 (size: 45) ---
|
|
|
|
|
|
void FUN_0051af20(undefined4 *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_0051ad60(*param_1);
|
|
|
|
operator_delete__((void *)param_1[5]);
|
|
|
|
param_1[5] = 0;
|
|
|
|
operator_delete(param_1);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051af50 at 0x0051AF50 (size: 25) ---
|
|
|
|
|
|
void __thiscall FUN_0051af50(undefined4 *param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
*param_1 = param_2;
|
|
|
|
param_1[1] = 0;
|
|
|
|
param_1[2] = 0;
|
|
|
|
param_1[4] = 0;
|
|
|
|
param_1[5] = 0;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051af70 at 0x0051AF70 (size: 65) ---
|
|
|
|
|
|
void __fastcall FUN_0051af70(int *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
|
|
|
|
if (param_1[3] == 0) {
|
|
|
|
param_1[2] = *(int *)param_1[2];
|
|
|
|
do {
|
|
|
|
if (param_1[2] != 0) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
iVar1 = param_1[1] + 1;
|
|
|
|
param_1[1] = iVar1;
|
|
|
|
if (iVar1 < ((int *)*param_1)[1]) {
|
|
|
|
param_1[2] = *(int *)(*(int *)*param_1 + iVar1 * 4);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
param_1[3] = 1;
|
|
|
|
}
|
|
|
|
} while (param_1[3] == 0);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051afc0 at 0x0051AFC0 (size: 127) ---
|
|
|
|
|
|
undefined4 * __fastcall FUN_0051afc0(undefined4 *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
*param_1 = 0;
|
|
|
|
param_1[1] = 0;
|
|
|
|
param_1[2] = 0;
|
|
|
|
param_1[4] = 0;
|
|
|
|
param_1[5] = 0;
|
|
|
|
param_1[6] = &PTR_LAB_00797910;
|
|
|
|
param_1[7] = 0;
|
|
|
|
param_1[8] = 0x3f800000;
|
|
|
|
param_1[9] = 0;
|
|
|
|
param_1[10] = 0;
|
|
|
|
param_1[0xb] = 0;
|
|
|
|
param_1[0x15] = 0;
|
|
|
|
param_1[0x16] = 0;
|
|
|
|
param_1[0x17] = 0;
|
|
|
|
FUN_00535b30();
|
|
|
|
param_1[0x18] = &PTR_LAB_00797910;
|
|
|
|
param_1[0x19] = 0;
|
|
|
|
param_1[0x1a] = 0x3f800000;
|
|
|
|
param_1[0x1b] = 0;
|
|
|
|
param_1[0x1c] = 0;
|
|
|
|
param_1[0x1d] = 0;
|
|
|
|
param_1[0x27] = 0;
|
|
|
|
param_1[0x28] = 0;
|
|
|
|
param_1[0x29] = 0;
|
|
|
|
FUN_00535b30();
|
|
|
|
param_1[0x30] = 0;
|
|
|
|
param_1[0x32] = 0;
|
|
|
|
param_1[0x33] = 0;
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051b040 at 0x0051B040 (size: 79) ---
|
|
|
|
|
|
void __thiscall FUN_0051b040(int *param_1,undefined4 param_2,undefined4 param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
|
|
|
|
iVar1 = param_1[1];
|
|
|
|
if (iVar1 != 0) {
|
|
|
|
*(undefined4 *)(iVar1 + 0x10) = param_2;
|
|
|
|
*(undefined4 *)(iVar1 + 0x14) = param_3;
|
|
|
|
iVar1 = FUN_0050ff60(*(undefined4 *)(param_1[1] + 4));
|
|
|
|
if (iVar1 != 0) {
|
|
|
|
FUN_0050f8d0(*(undefined4 *)(*param_1 + 8),*(undefined4 *)(param_1[1] + 8),
|
|
|
|
(float)*(double *)(param_1[1] + 0x10));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051b090 at 0x0051B090 (size: 229) ---
|
|
|
|
|
|
void __thiscall FUN_0051b090(int *param_1,undefined4 *param_2,int param_3,undefined4 param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 *puVar1;
|
|
|
|
int iVar2;
|
|
|
|
undefined1 local_dc [12];
|
|
|
|
undefined4 local_d0;
|
|
|
|
undefined4 local_cc;
|
|
|
|
undefined4 local_c8;
|
|
|
|
undefined4 local_c0;
|
|
|
|
undefined4 local_bc;
|
|
|
|
undefined4 local_b4;
|
|
|
|
undefined4 local_6c;
|
|
|
|
undefined4 local_1c;
|
|
|
|
undefined4 local_18;
|
|
|
|
undefined4 local_14;
|
|
|
|
undefined4 local_10;
|
|
|
|
|
|
|
|
param_2[6] = *(undefined4 *)(param_3 + 4);
|
|
|
|
FUN_00425f10(param_3 + 8);
|
|
|
|
FUN_0051afc0();
|
|
|
|
iVar2 = *param_1;
|
|
|
|
local_c0 = param_2[2];
|
|
|
|
local_c8 = param_2[4];
|
|
|
|
local_d0 = 0;
|
|
|
|
local_cc = *(undefined4 *)(iVar2 + 8);
|
|
|
|
local_bc = param_2[3];
|
|
|
|
local_b4 = *(undefined4 *)(iVar2 + 0x4c);
|
|
|
|
FUN_00425f10(iVar2 + 0x50);
|
|
|
|
local_6c = *(undefined4 *)(param_3 + 4);
|
|
|
|
FUN_00425f10(param_3 + 8);
|
|
|
|
puVar1 = (undefined4 *)FUN_00511e90(local_dc);
|
|
|
|
local_1c = *puVar1;
|
|
|
|
local_18 = puVar1[1];
|
|
|
|
local_14 = puVar1[2];
|
|
|
|
local_10 = param_4;
|
|
|
|
iVar2 = FUN_0050ff60(*param_2);
|
|
|
|
if (iVar2 != 0) {
|
|
|
|
FUN_0050f8b0(&local_d0);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051b180 at 0x0051B180 (size: 110) ---
|
|
|
|
|
|
void __thiscall FUN_0051b180(int *param_1,double param_2,int param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
float fVar1;
|
|
|
|
float fVar2;
|
|
|
|
int iVar3;
|
|
|
|
float fVar4;
|
|
|
|
float *pfVar5;
|
|
|
|
undefined1 local_c [12];
|
|
|
|
|
|
|
|
iVar3 = *param_1;
|
|
|
|
*(undefined4 *)(param_3 + 4) = *(undefined4 *)(iVar3 + 0x4c);
|
|
|
|
FUN_00425f10(iVar3 + 0x50);
|
|
|
|
fVar4 = (float)param_2;
|
|
|
|
pfVar5 = (float *)FUN_00511e90(local_c);
|
|
|
|
fVar1 = pfVar5[1];
|
|
|
|
fVar2 = pfVar5[2];
|
|
|
|
*(float *)(param_3 + 0x3c) = fVar4 * *pfVar5 + *(float *)(param_3 + 0x3c);
|
|
|
|
*(float *)(param_3 + 0x40) = fVar4 * fVar1 + *(float *)(param_3 + 0x40);
|
|
|
|
*(float *)(param_3 + 0x44) = fVar4 * fVar2 + *(float *)(param_3 + 0x44);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051b1f0 at 0x0051B1F0 (size: 158) ---
|
|
|
|
|
|
void FUN_0051b1f0(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
float10 fVar1;
|
|
|
|
undefined **local_48;
|
|
|
|
undefined4 local_44;
|
|
|
|
undefined4 local_40;
|
|
|
|
undefined4 local_3c;
|
|
|
|
undefined4 local_38;
|
|
|
|
undefined4 local_34;
|
|
|
|
undefined4 local_c;
|
|
|
|
undefined4 local_8;
|
|
|
|
undefined4 local_4;
|
|
|
|
|
|
|
|
local_48 = &PTR_LAB_00797910;
|
|
|
|
local_44 = 0;
|
|
|
|
local_40 = 0x3f800000;
|
|
|
|
local_3c = 0;
|
|
|
|
local_38 = 0;
|
|
|
|
local_34 = 0;
|
|
|
|
local_c = 0;
|
|
|
|
local_8 = 0;
|
|
|
|
local_4 = 0;
|
|
|
|
FUN_00535b30();
|
|
|
|
FUN_0051b180(*(undefined4 *)(param_1 + 8),*(undefined4 *)(param_1 + 0xc),&local_48);
|
|
|
|
fVar1 = (float10)FUN_005aa560(param_1 + 0x14);
|
|
|
|
if ((float10)*(float *)(param_1 + 0x10) < fVar1) {
|
|
|
|
FUN_0051b090(param_1,&local_48,1);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051b290 at 0x0051B290 (size: 126) ---
|
|
|
|
|
|
void __thiscall FUN_0051b290(int *param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
bool bVar1;
|
|
|
|
undefined4 uVar2;
|
|
|
|
int *local_10;
|
|
|
|
int local_c;
|
|
|
|
undefined4 *local_8;
|
|
|
|
int local_4;
|
|
|
|
|
|
|
|
if ((param_1[2] != 0) && (FUN_0051a270(param_1[2]), local_4 == 0)) {
|
|
|
|
bVar1 = false;
|
|
|
|
do {
|
|
|
|
if (local_8 == (undefined4 *)0x0) {
|
|
|
|
uVar2 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar2 = local_8[1];
|
|
|
|
}
|
|
|
|
if (!bVar1) {
|
|
|
|
local_8 = (undefined4 *)*local_8;
|
|
|
|
while (local_8 == (undefined4 *)0x0) {
|
|
|
|
local_c = local_c + 1;
|
|
|
|
if (local_10[1] <= local_c) {
|
|
|
|
bVar1 = true;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
local_8 = *(undefined4 **)(*local_10 + local_c * 4);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
FUN_0051b090(uVar2,*param_1 + 0x48,param_2);
|
|
|
|
} while (!bVar1);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051b310 at 0x0051B310 (size: 75) ---
|
|
|
|
|
|
void __fastcall FUN_0051b310(int *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
void *pvVar1;
|
|
|
|
int iVar2;
|
|
|
|
|
|
|
|
if (param_1[1] != 0) {
|
|
|
|
iVar2 = FUN_0050ff60(*(undefined4 *)(param_1[1] + 4));
|
|
|
|
if (iVar2 != 0) {
|
|
|
|
FUN_0050f920(*(undefined4 *)(*param_1 + 8));
|
|
|
|
}
|
|
|
|
pvVar1 = (void *)param_1[1];
|
|
|
|
if (pvVar1 != (void *)0x0) {
|
|
|
|
*(undefined ***)((int)pvVar1 + 0x60) = &PTR_FUN_0079385c;
|
|
|
|
*(undefined ***)((int)pvVar1 + 0x18) = &PTR_FUN_0079385c;
|
|
|
|
operator_delete(pvVar1);
|
|
|
|
}
|
|
|
|
param_1[1] = 0;
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051b360 at 0x0051B360 (size: 254) ---
|
|
|
|
|
|
void __thiscall FUN_0051b360(int *param_1,uint param_2,uint param_3,uint param_4,uint param_5)
|
|
|
|
|
|
|
|
{
|
|
|
|
int *piVar1;
|
|
|
|
uint uVar2;
|
|
|
|
int iVar3;
|
|
|
|
uint *puVar4;
|
|
|
|
|
|
|
|
piVar1 = (int *)param_1[2];
|
|
|
|
if (piVar1 == (int *)0x0) {
|
|
|
|
iVar3 = FUN_005df0f5(8);
|
|
|
|
if (iVar3 == 0) {
|
|
|
|
iVar3 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar3 = FUN_0051a2d0(4);
|
|
|
|
}
|
|
|
|
param_1[2] = iVar3;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
piVar1 = *(int **)(*piVar1 + ((param_2 >> 0x10 ^ param_2) % (uint)piVar1[1]) * 4);
|
|
|
|
if (piVar1 != (int *)0x0) {
|
|
|
|
uVar2 = piVar1[2];
|
|
|
|
while (uVar2 != param_2) {
|
|
|
|
piVar1 = (int *)*piVar1;
|
|
|
|
if (piVar1 == (int *)0x0) goto LAB_0051b3db;
|
|
|
|
uVar2 = piVar1[2];
|
|
|
|
}
|
|
|
|
iVar3 = piVar1[1];
|
|
|
|
if (iVar3 != 0) {
|
|
|
|
*(uint *)(iVar3 + 0x10) = param_3;
|
|
|
|
*(uint *)(iVar3 + 8) = param_4;
|
|
|
|
*(uint *)(iVar3 + 0xc) = param_5;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
LAB_0051b3db:
|
|
|
|
puVar4 = (uint *)FUN_005df0f5(0x60);
|
|
|
|
if (puVar4 == (uint *)0x0) {
|
|
|
|
puVar4 = (uint *)0x0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*puVar4 = 0;
|
|
|
|
puVar4[2] = 0;
|
|
|
|
puVar4[3] = 0;
|
|
|
|
puVar4[4] = 0;
|
|
|
|
puVar4[5] = (uint)&PTR_LAB_00797910;
|
|
|
|
puVar4[6] = 0;
|
|
|
|
puVar4[7] = 0x3f800000;
|
|
|
|
puVar4[8] = 0;
|
|
|
|
puVar4[9] = 0;
|
|
|
|
puVar4[10] = 0;
|
|
|
|
puVar4[0x14] = 0;
|
|
|
|
puVar4[0x15] = 0;
|
|
|
|
puVar4[0x16] = 0;
|
|
|
|
FUN_00535b30();
|
|
|
|
}
|
|
|
|
*puVar4 = param_2;
|
|
|
|
puVar4[4] = param_3;
|
|
|
|
puVar4[2] = param_4;
|
|
|
|
puVar4[3] = param_5;
|
|
|
|
FUN_0051a430(puVar4,param_2);
|
|
|
|
FUN_0051b090(puVar4,*param_1 + 0x48,1);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051b460 at 0x0051B460 (size: 346) ---
|
|
|
|
|
|
void __thiscall FUN_0051b460(int param_1,int param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 uVar1;
|
|
|
|
undefined4 *puVar2;
|
|
|
|
int iVar3;
|
|
|
|
undefined4 local_c;
|
|
|
|
undefined4 local_8;
|
|
|
|
undefined4 local_4;
|
|
|
|
|
|
|
|
iVar3 = *(int *)(param_1 + 4);
|
|
|
|
if (iVar3 != 0) {
|
|
|
|
if (*(int *)(param_2 + 4) == *(int *)(iVar3 + 4)) {
|
|
|
|
*(int *)(iVar3 + 4) = *(int *)(param_2 + 4);
|
|
|
|
*(undefined4 *)(*(int *)(param_1 + 4) + 8) = *(undefined4 *)(param_2 + 8);
|
|
|
|
iVar3 = *(int *)(param_1 + 4);
|
|
|
|
*(undefined4 *)(iVar3 + 0x10) = *(undefined4 *)(param_2 + 0x10);
|
|
|
|
*(undefined4 *)(iVar3 + 0x14) = *(undefined4 *)(param_2 + 0x14);
|
|
|
|
*(undefined4 *)(*(int *)(param_1 + 4) + 0x1c) = *(undefined4 *)(param_2 + 0x1c);
|
|
|
|
FUN_00425f10(param_2 + 0x20);
|
|
|
|
*(undefined4 *)(*(int *)(param_1 + 4) + 100) = *(undefined4 *)(param_2 + 100);
|
|
|
|
FUN_00425f10(param_2 + 0x68);
|
|
|
|
iVar3 = *(int *)(param_1 + 4);
|
|
|
|
*(undefined4 *)(iVar3 + 0xb4) = *(undefined4 *)(param_2 + 0xb4);
|
|
|
|
*(undefined4 *)(iVar3 + 0xb8) = *(undefined4 *)(param_2 + 0xb8);
|
|
|
|
*(undefined4 *)(iVar3 + 0xbc) = *(undefined4 *)(param_2 + 0xbc);
|
|
|
|
*(undefined4 *)(*(int *)(param_1 + 4) + 0xc0) = *(undefined4 *)(param_2 + 0xc0);
|
|
|
|
uVar1 = DAT_008379ac;
|
|
|
|
iVar3 = *(int *)(param_1 + 4);
|
|
|
|
*(undefined4 *)(iVar3 + 200) = DAT_008379a8;
|
|
|
|
*(undefined4 *)(iVar3 + 0xcc) = uVar1;
|
|
|
|
puVar2 = (undefined4 *)FUN_0050aa30(&local_c,*(int *)(param_1 + 4) + 0x60);
|
|
|
|
iVar3 = *(int *)(param_1 + 4);
|
|
|
|
*(undefined4 *)(iVar3 + 0xa8) = *puVar2;
|
|
|
|
*(undefined4 *)(iVar3 + 0xac) = puVar2[1];
|
|
|
|
*(undefined4 *)(iVar3 + 0xb0) = puVar2[2];
|
|
|
|
iVar3 = FUN_004524a0();
|
|
|
|
if (iVar3 != 0) {
|
|
|
|
iVar3 = *(int *)(param_1 + 4);
|
|
|
|
local_c = 0;
|
|
|
|
*(undefined4 *)(iVar3 + 0xa8) = 0;
|
|
|
|
local_8 = 0;
|
|
|
|
local_4 = 0x3f800000;
|
|
|
|
*(undefined4 *)(iVar3 + 0xac) = 0;
|
|
|
|
*(undefined4 *)(iVar3 + 0xb0) = 0x3f800000;
|
|
|
|
}
|
|
|
|
FUN_00511100(*(undefined4 *)(param_1 + 4));
|
|
|
|
FUN_005136c0();
|
|
|
|
if (*(int *)(param_2 + 0xc0) == 2) {
|
|
|
|
FUN_0051b310();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051b5c0 at 0x0051B5C0 (size: 200) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void __fastcall FUN_0051b5c0(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
undefined4 uVar2;
|
|
|
|
undefined4 local_8;
|
|
|
|
undefined4 local_4;
|
|
|
|
|
|
|
|
if (_DAT_007c7c90 <= (double)CONCAT44(DAT_008eee74,DAT_008eee70) - *(double *)(param_1 + 0x10)) {
|
|
|
|
iVar1 = *(int *)(param_1 + 4);
|
|
|
|
if (((iVar1 != 0) && (*(int *)(iVar1 + 0xc0) == 0)) &&
|
|
|
|
(_DAT_007c7c88 + *(double *)(iVar1 + 200) < _DAT_008379a8)) {
|
|
|
|
*(undefined4 *)(iVar1 + 0xc0) = 6;
|
|
|
|
FUN_00511100(*(undefined4 *)(param_1 + 4));
|
|
|
|
FUN_005136c0();
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 8) != 0) {
|
|
|
|
FUN_0051a270(*(int *)(param_1 + 8));
|
|
|
|
while (local_4 == 0) {
|
|
|
|
if (local_8 == 0) {
|
|
|
|
uVar2 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar2 = *(undefined4 *)(local_8 + 4);
|
|
|
|
}
|
|
|
|
FUN_0051af70(0);
|
|
|
|
FUN_0051b1f0(uVar2);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
uVar2 = DAT_008eee74;
|
|
|
|
*(undefined4 *)(param_1 + 0x10) = DAT_008eee70;
|
|
|
|
*(undefined4 *)(param_1 + 0x14) = uVar2;
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051b690 at 0x0051B690 (size: 99) ---
|
|
|
|
|
|
void __fastcall FUN_0051b690(int *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
void *pvVar1;
|
|
|
|
undefined4 *puVar2;
|
|
|
|
undefined4 *puVar3;
|
|
|
|
undefined4 *puVar4;
|
|
|
|
|
|
|
|
puVar4 = (undefined4 *)*param_1;
|
|
|
|
if (puVar4 < puVar4 + param_1[1]) {
|
|
|
|
do {
|
|
|
|
puVar3 = (undefined4 *)*puVar4;
|
|
|
|
while (puVar3 != (undefined4 *)0x0) {
|
|
|
|
pvVar1 = (void *)puVar3[1];
|
|
|
|
puVar2 = (undefined4 *)*puVar3;
|
|
|
|
if (pvVar1 != (void *)0x0) {
|
|
|
|
*(undefined ***)((int)pvVar1 + 0x14) = &PTR_FUN_0079385c;
|
|
|
|
operator_delete(pvVar1);
|
|
|
|
}
|
|
|
|
operator_delete(puVar3);
|
|
|
|
puVar3 = puVar2;
|
|
|
|
}
|
|
|
|
*puVar4 = 0;
|
|
|
|
puVar4 = puVar4 + 1;
|
|
|
|
} while (puVar4 < (undefined4 *)(*param_1 + param_1[1] * 4));
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051b700 at 0x0051B700 (size: 88) ---
|
|
|
|
|
|
void __fastcall FUN_0051b700(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
void *pvVar1;
|
|
|
|
undefined4 *puVar2;
|
|
|
|
|
|
|
|
pvVar1 = *(void **)(param_1 + 4);
|
|
|
|
if (pvVar1 != (void *)0x0) {
|
|
|
|
*(undefined ***)((int)pvVar1 + 0x60) = &PTR_FUN_0079385c;
|
|
|
|
*(undefined ***)((int)pvVar1 + 0x18) = &PTR_FUN_0079385c;
|
|
|
|
operator_delete(pvVar1);
|
|
|
|
*(undefined4 *)(param_1 + 4) = 0;
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 8) != 0) {
|
|
|
|
FUN_0051b690();
|
|
|
|
puVar2 = *(undefined4 **)(param_1 + 8);
|
|
|
|
if (puVar2 != (undefined4 *)0x0) {
|
|
|
|
FUN_0051a370();
|
|
|
|
operator_delete__((void *)*puVar2);
|
|
|
|
*puVar2 = 0;
|
|
|
|
operator_delete(puVar2);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051b760 at 0x0051B760 (size: 349) ---
|
|
|
|
|
|
void __thiscall
|
|
|
|
FUN_0051b760(int *param_1,undefined4 param_2,int param_3,undefined4 param_4,undefined4 param_5,
|
|
|
|
undefined4 param_6)
|
|
|
|
|
|
|
|
{
|
|
|
|
void *pvVar1;
|
|
|
|
undefined4 uVar2;
|
|
|
|
int iVar3;
|
|
|
|
undefined4 *puVar4;
|
|
|
|
undefined4 local_d0;
|
|
|
|
undefined4 local_cc;
|
|
|
|
undefined4 local_10;
|
|
|
|
|
|
|
|
if (param_1[1] != 0) {
|
|
|
|
iVar3 = FUN_0050ff60(*(undefined4 *)(param_1[1] + 4));
|
|
|
|
if (iVar3 != 0) {
|
|
|
|
FUN_0050f920(*(undefined4 *)(*param_1 + 8));
|
|
|
|
}
|
|
|
|
pvVar1 = (void *)param_1[1];
|
|
|
|
if (pvVar1 != (void *)0x0) {
|
|
|
|
*(undefined ***)((int)pvVar1 + 0x60) = &PTR_FUN_0079385c;
|
|
|
|
*(undefined ***)((int)pvVar1 + 0x18) = &PTR_FUN_0079385c;
|
|
|
|
operator_delete(pvVar1);
|
|
|
|
}
|
|
|
|
param_1[1] = 0;
|
|
|
|
}
|
|
|
|
if (param_3 == 0) {
|
|
|
|
FUN_0051afc0();
|
|
|
|
local_d0 = param_2;
|
|
|
|
local_cc = 0;
|
|
|
|
local_10 = 6;
|
|
|
|
FUN_00511100(&local_d0);
|
|
|
|
FUN_005136c0();
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar3 = FUN_005df0f5(0xd0);
|
|
|
|
if (iVar3 == 0) {
|
|
|
|
puVar4 = (undefined4 *)0x0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
puVar4 = (undefined4 *)FUN_0051afc0();
|
|
|
|
}
|
|
|
|
param_1[1] = (int)puVar4;
|
|
|
|
*puVar4 = param_2;
|
|
|
|
*(int *)(param_1[1] + 4) = param_3;
|
|
|
|
*(undefined4 *)(param_1[1] + 8) = param_4;
|
|
|
|
iVar3 = param_1[1];
|
|
|
|
*(undefined4 *)(iVar3 + 0x10) = param_5;
|
|
|
|
*(undefined4 *)(iVar3 + 0x14) = param_6;
|
|
|
|
uVar2 = DAT_008379ac;
|
|
|
|
iVar3 = param_1[1];
|
|
|
|
*(undefined4 *)(iVar3 + 200) = DAT_008379a8;
|
|
|
|
*(undefined4 *)(iVar3 + 0xcc) = uVar2;
|
|
|
|
iVar3 = FUN_0050ff60(*(undefined4 *)(param_1[1] + 4));
|
|
|
|
if (iVar3 != 0) {
|
|
|
|
FUN_0050f8d0(*(undefined4 *)(*param_1 + 8),*(undefined4 *)(param_1[1] + 8),
|
|
|
|
(float)*(double *)(param_1[1] + 0x10));
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051b8c0 at 0x0051B8C0 (size: 50) ---
|
|
|
|
|
|
undefined4 __thiscall FUN_0051b8c0(int param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
void *pvVar1;
|
|
|
|
|
|
|
|
if (*(int *)(param_1 + 8) != 0) {
|
|
|
|
pvVar1 = (void *)FUN_0051ad60(param_2);
|
|
|
|
if (pvVar1 != (void *)0x0) {
|
|
|
|
*(undefined ***)((int)pvVar1 + 0x14) = &PTR_FUN_0079385c;
|
|
|
|
operator_delete(pvVar1);
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051b900 at 0x0051B900 (size: 95) ---
|
|
|
|
|
|
void __thiscall FUN_0051b900(int *param_1,uint param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
uint uVar2;
|
|
|
|
ushort uVar3;
|
|
|
|
|
|
|
|
if ((ushort)param_2 <= *(ushort *)(param_1 + 1)) {
|
|
|
|
FUN_0051b9c0(param_2);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
iVar1 = thunk_FUN_005df0f5((param_2 & 0xffff) << 2);
|
|
|
|
uVar3 = 0;
|
|
|
|
if ((short)param_1[1] != 0) {
|
|
|
|
do {
|
|
|
|
uVar2 = (uint)uVar3;
|
|
|
|
uVar3 = uVar3 + 1;
|
|
|
|
*(undefined4 *)(uVar2 * 4 + iVar1) = *(undefined4 *)(uVar2 * 4 + *param_1);
|
|
|
|
} while (uVar3 < *(ushort *)(param_1 + 1));
|
|
|
|
}
|
|
|
|
operator_delete__((void *)*param_1);
|
|
|
|
*param_1 = iVar1;
|
|
|
|
*(ushort *)(param_1 + 1) = (ushort)param_2;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051b960 at 0x0051B960 (size: 95) ---
|
|
|
|
|
|
void __thiscall FUN_0051b960(int *param_1,uint param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
uint uVar2;
|
|
|
|
ushort uVar3;
|
|
|
|
|
|
|
|
if ((ushort)param_2 <= *(ushort *)(param_1 + 1)) {
|
|
|
|
FUN_0051ba40(param_2);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
iVar1 = thunk_FUN_005df0f5((param_2 & 0xffff) << 2);
|
|
|
|
uVar3 = 0;
|
|
|
|
if ((short)param_1[1] != 0) {
|
|
|
|
do {
|
|
|
|
uVar2 = (uint)uVar3;
|
|
|
|
uVar3 = uVar3 + 1;
|
|
|
|
*(undefined4 *)(uVar2 * 4 + iVar1) = *(undefined4 *)(uVar2 * 4 + *param_1);
|
|
|
|
} while (uVar3 < *(ushort *)(param_1 + 1));
|
|
|
|
}
|
|
|
|
operator_delete__((void *)*param_1);
|
|
|
|
*param_1 = iVar1;
|
|
|
|
*(ushort *)(param_1 + 1) = (ushort)param_2;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051b9c0 at 0x0051B9C0 (size: 125) ---
|
|
|
|
|
|
void __thiscall FUN_0051b9c0(int *param_1,uint param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
uint uVar2;
|
|
|
|
ushort uVar3;
|
|
|
|
ushort uVar4;
|
|
|
|
|
|
|
|
uVar4 = (ushort)param_2;
|
|
|
|
if (*(ushort *)(param_1 + 1) < uVar4) {
|
|
|
|
FUN_0051b900(param_2);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
if (uVar4 == 0) {
|
|
|
|
operator_delete__((void *)*param_1);
|
|
|
|
*(undefined2 *)(param_1 + 1) = 0;
|
|
|
|
*param_1 = 0;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
iVar1 = thunk_FUN_005df0f5((param_2 & 0xffff) << 2);
|
|
|
|
uVar3 = 0;
|
|
|
|
*(ushort *)(param_1 + 1) = uVar4;
|
|
|
|
if (uVar4 != 0) {
|
|
|
|
do {
|
|
|
|
uVar2 = (uint)uVar3;
|
|
|
|
uVar3 = uVar3 + 1;
|
|
|
|
*(undefined4 *)(uVar2 * 4 + iVar1) = *(undefined4 *)(uVar2 * 4 + *param_1);
|
|
|
|
} while (uVar3 < *(ushort *)(param_1 + 1));
|
|
|
|
}
|
|
|
|
operator_delete__((void *)*param_1);
|
|
|
|
*param_1 = iVar1;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051ba40 at 0x0051BA40 (size: 125) ---
|
|
|
|
|
|
void __thiscall FUN_0051ba40(int *param_1,uint param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
uint uVar2;
|
|
|
|
ushort uVar3;
|
|
|
|
ushort uVar4;
|
|
|
|
|
|
|
|
uVar4 = (ushort)param_2;
|
|
|
|
if (*(ushort *)(param_1 + 1) < uVar4) {
|
|
|
|
FUN_0051b960(param_2);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
if (uVar4 == 0) {
|
|
|
|
operator_delete__((void *)*param_1);
|
|
|
|
*(undefined2 *)(param_1 + 1) = 0;
|
|
|
|
*param_1 = 0;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
iVar1 = thunk_FUN_005df0f5((param_2 & 0xffff) << 2);
|
|
|
|
uVar3 = 0;
|
|
|
|
*(ushort *)(param_1 + 1) = uVar4;
|
|
|
|
if (uVar4 != 0) {
|
|
|
|
do {
|
|
|
|
uVar2 = (uint)uVar3;
|
|
|
|
uVar3 = uVar3 + 1;
|
|
|
|
*(undefined4 *)(uVar2 * 4 + iVar1) = *(undefined4 *)(uVar2 * 4 + *param_1);
|
|
|
|
} while (uVar3 < *(ushort *)(param_1 + 1));
|
|
|
|
}
|
|
|
|
operator_delete__((void *)*param_1);
|
|
|
|
*param_1 = iVar1;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051bac0 at 0x0051BAC0 (size: 231) ---
|
|
|
|
|
|
void __thiscall FUN_0051bac0(ushort *param_1,int param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
ushort uVar1;
|
|
|
|
undefined4 *puVar2;
|
|
|
|
ushort uVar3;
|
|
|
|
uint uVar4;
|
|
|
|
undefined4 *puVar5;
|
|
|
|
uint uVar6;
|
|
|
|
|
|
|
|
uVar1 = 0;
|
|
|
|
if (*param_1 != 0) {
|
|
|
|
do {
|
|
|
|
if (*(int *)(*(int *)(param_1 + 2) + (uint)uVar1 * 4) == param_2) break;
|
|
|
|
uVar1 = uVar1 + 1;
|
|
|
|
} while (uVar1 < *param_1);
|
|
|
|
}
|
|
|
|
uVar3 = *param_1 - 1;
|
|
|
|
*param_1 = uVar3;
|
|
|
|
if (uVar1 < uVar3) {
|
|
|
|
do {
|
|
|
|
uVar3 = uVar1 + 1;
|
|
|
|
uVar6 = (uint)uVar3;
|
|
|
|
uVar4 = (uint)uVar1;
|
|
|
|
*(undefined4 *)(*(int *)(param_1 + 2) + uVar4 * 4) =
|
|
|
|
*(undefined4 *)(*(int *)(param_1 + 2) + uVar6 * 4);
|
|
|
|
puVar2 = (undefined4 *)(uVar6 * 0x40 + *(int *)(param_1 + 6));
|
|
|
|
puVar5 = (undefined4 *)(uVar4 * 0x40 + *(int *)(param_1 + 6));
|
|
|
|
puVar5[0xd] = puVar2[0xd];
|
|
|
|
puVar5[0xe] = puVar2[0xe];
|
|
|
|
puVar5[0xf] = puVar2[0xf];
|
|
|
|
*puVar5 = *puVar2;
|
|
|
|
puVar5[1] = puVar2[1];
|
|
|
|
puVar5[2] = puVar2[2];
|
|
|
|
puVar5[3] = puVar2[3];
|
|
|
|
puVar5[4] = puVar2[4];
|
|
|
|
puVar5[5] = puVar2[5];
|
|
|
|
puVar5[6] = puVar2[6];
|
|
|
|
puVar5[7] = puVar2[7];
|
|
|
|
puVar5[8] = puVar2[8];
|
|
|
|
puVar5[9] = puVar2[9];
|
|
|
|
puVar5[10] = puVar2[10];
|
|
|
|
puVar5[0xb] = puVar2[0xb];
|
|
|
|
puVar5[0xc] = puVar2[0xc];
|
|
|
|
*(undefined4 *)(*(int *)(param_1 + 10) + uVar4 * 4) =
|
|
|
|
*(undefined4 *)(*(int *)(param_1 + 10) + uVar6 * 4);
|
|
|
|
*(undefined4 *)(*(int *)(param_1 + 0xe) + uVar4 * 4) =
|
|
|
|
*(undefined4 *)(*(int *)(param_1 + 0xe) + uVar6 * 4);
|
|
|
|
uVar1 = uVar3;
|
|
|
|
} while (uVar3 < *param_1);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051bbb0 at 0x0051BBB0 (size: 57) ---
|
|
|
|
|
|
undefined4 __thiscall FUN_0051bbb0(ushort *param_1,int param_2,ushort *param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
ushort uVar1;
|
|
|
|
|
|
|
|
uVar1 = 0;
|
|
|
|
if (*param_1 != 0) {
|
|
|
|
do {
|
|
|
|
if (*(int *)(*(int *)(param_1 + 2) + (uint)uVar1 * 4) == param_2) {
|
|
|
|
*param_3 = uVar1;
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
uVar1 = uVar1 + 1;
|
|
|
|
} while (uVar1 < *param_1);
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051bbf0 at 0x0051BBF0 (size: 139) ---
|
|
|
|
|
|
void __thiscall FUN_0051bbf0(int *param_1,uint param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
uint *puVar1;
|
|
|
|
uint *puVar2;
|
|
|
|
ushort uVar3;
|
|
|
|
uint uVar4;
|
|
|
|
|
|
|
|
if ((ushort)param_2 <= *(ushort *)(param_1 + 1)) {
|
|
|
|
FUN_0051bc80(param_2);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
uVar4 = param_2 & 0xffff;
|
|
|
|
puVar1 = (uint *)thunk_FUN_005df0f5(uVar4 * 0x40 + 4);
|
|
|
|
if (puVar1 == (uint *)0x0) {
|
|
|
|
puVar2 = (uint *)0x0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
puVar2 = puVar1 + 1;
|
|
|
|
*puVar1 = uVar4;
|
|
|
|
FUN_00401000(puVar2,0x40,uVar4,FUN_00424ce0);
|
|
|
|
}
|
|
|
|
uVar3 = 0;
|
|
|
|
if ((short)param_1[1] != 0) {
|
|
|
|
do {
|
|
|
|
FUN_00425f10(*param_1 + (uint)uVar3 * 0x40);
|
|
|
|
uVar3 = uVar3 + 1;
|
|
|
|
} while (uVar3 < *(ushort *)(param_1 + 1));
|
|
|
|
}
|
|
|
|
if (*param_1 != 0) {
|
|
|
|
operator_delete__((void *)(*param_1 + -4));
|
|
|
|
}
|
|
|
|
*param_1 = (int)puVar2;
|
|
|
|
*(ushort *)(param_1 + 1) = (ushort)param_2;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051bc80 at 0x0051BC80 (size: 171) ---
|
|
|
|
|
|
void __thiscall FUN_0051bc80(int *param_1,uint param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
uint *puVar1;
|
|
|
|
ushort uVar2;
|
|
|
|
uint *puVar3;
|
|
|
|
ushort uVar4;
|
|
|
|
|
|
|
|
uVar2 = (ushort)param_2;
|
|
|
|
if (*(ushort *)(param_1 + 1) < uVar2) {
|
|
|
|
FUN_0051bbf0(param_2);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
puVar3 = (uint *)0x0;
|
|
|
|
if (uVar2 == 0) {
|
|
|
|
if (*param_1 != 0) {
|
|
|
|
operator_delete__((void *)(*param_1 + -4));
|
|
|
|
}
|
|
|
|
*(undefined2 *)(param_1 + 1) = 0;
|
|
|
|
*param_1 = 0;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
param_2 = param_2 & 0xffff;
|
|
|
|
puVar1 = (uint *)thunk_FUN_005df0f5(param_2 * 0x40 + 4);
|
|
|
|
if (puVar1 != (uint *)0x0) {
|
|
|
|
puVar3 = puVar1 + 1;
|
|
|
|
*puVar1 = param_2;
|
|
|
|
FUN_00401000(puVar3,0x40,param_2,FUN_00424ce0);
|
|
|
|
}
|
|
|
|
uVar4 = 0;
|
|
|
|
*(ushort *)(param_1 + 1) = uVar2;
|
|
|
|
if (uVar2 != 0) {
|
|
|
|
do {
|
|
|
|
FUN_00425f10(*param_1 + (uint)uVar4 * 0x40);
|
|
|
|
uVar4 = uVar4 + 1;
|
|
|
|
} while (uVar4 < *(ushort *)(param_1 + 1));
|
|
|
|
}
|
|
|
|
if (*param_1 != 0) {
|
|
|
|
operator_delete__((void *)(*param_1 + -4));
|
|
|
|
}
|
|
|
|
*param_1 = (int)puVar3;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051bd30 at 0x0051BD30 (size: 36) ---
|
|
|
|
|
|
void __fastcall FUN_0051bd30(undefined2 *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
*param_1 = 0;
|
|
|
|
*(undefined4 *)(param_1 + 2) = 0;
|
|
|
|
param_1[4] = 0;
|
|
|
|
*(undefined4 *)(param_1 + 6) = 0;
|
|
|
|
param_1[8] = 0;
|
|
|
|
*(undefined4 *)(param_1 + 10) = 0;
|
|
|
|
param_1[0xc] = 0;
|
|
|
|
*(undefined4 *)(param_1 + 0xe) = 0;
|
|
|
|
param_1[0x10] = 0;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051bd60 at 0x0051BD60 (size: 57) ---
|
|
|
|
|
|
void __fastcall FUN_0051bd60(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
operator_delete__(*(void **)(param_1 + 0x1c));
|
|
|
|
operator_delete__(*(void **)(param_1 + 0x14));
|
|
|
|
if (*(int *)(param_1 + 0xc) != 0) {
|
|
|
|
operator_delete__((void *)(*(int *)(param_1 + 0xc) + -4));
|
|
|
|
}
|
|
|
|
operator_delete__(*(void **)(param_1 + 4));
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051bda0 at 0x0051BDA0 (size: 122) ---
|
|
|
|
|
|
void __thiscall
|
|
|
|
FUN_0051bda0(ushort *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
|
|
|
|
undefined4 param_5)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
|
|
|
|
if (param_1[4] <= *param_1) {
|
|
|
|
iVar1 = param_1[4] + 4;
|
|
|
|
FUN_0051b900(iVar1);
|
|
|
|
FUN_0051bbf0(iVar1);
|
|
|
|
FUN_0051b960(iVar1);
|
|
|
|
FUN_0051b960(iVar1);
|
|
|
|
}
|
|
|
|
*(undefined4 *)(*(int *)(param_1 + 2) + (uint)*param_1 * 4) = param_2;
|
|
|
|
FUN_00425f10(param_3);
|
|
|
|
*(undefined4 *)(*(int *)(param_1 + 10) + (uint)*param_1 * 4) = param_4;
|
|
|
|
*(undefined4 *)(*(int *)(param_1 + 0xe) + (uint)*param_1 * 4) = param_5;
|
|
|
|
*param_1 = *param_1 + 1;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051be20 at 0x0051BE20 (size: 32) ---
|
|
|
|
|
|
void __thiscall FUN_0051be20(undefined4 *param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
*param_1 = param_2;
|
|
|
|
param_1[1] = 0;
|
|
|
|
param_1[2] = 0;
|
|
|
|
param_1[3] = 0xffffffff;
|
|
|
|
param_1[4] = 0;
|
|
|
|
param_1[5] = 0;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051be40 at 0x0051BE40 (size: 138) ---
|
|
|
|
|
|
undefined4 __thiscall FUN_0051be40(int param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
double *pdVar1;
|
|
|
|
undefined4 uVar2;
|
|
|
|
double *pdVar3;
|
|
|
|
|
|
|
|
pdVar3 = (double *)FUN_005df0f5(0x10);
|
|
|
|
if (pdVar3 == (double *)0x0) {
|
|
|
|
pdVar3 = (double *)0x0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*(undefined4 *)pdVar3 = 0;
|
|
|
|
*(undefined4 *)((int)pdVar3 + 4) = 0;
|
|
|
|
*(undefined4 *)(pdVar3 + 1) = 0;
|
|
|
|
*(undefined4 *)((int)pdVar3 + 0xc) = 0;
|
|
|
|
}
|
|
|
|
uVar2 = DAT_008379ac;
|
|
|
|
pdVar1 = *(double **)(param_1 + 8);
|
|
|
|
if (pdVar1 == (double *)0x0) {
|
|
|
|
*(undefined4 *)pdVar3 = DAT_008379a8;
|
|
|
|
*(undefined4 *)((int)pdVar3 + 4) = uVar2;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*pdVar3 = *(double *)(*(int *)(pdVar1 + 1) + 0x48) + *pdVar1;
|
|
|
|
}
|
|
|
|
*(undefined4 *)(pdVar3 + 1) = param_2;
|
|
|
|
if (*(int *)(param_1 + 8) != 0) {
|
|
|
|
*(double **)(*(int *)(param_1 + 8) + 0xc) = pdVar3;
|
|
|
|
*(double **)(param_1 + 8) = pdVar3;
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
*(double **)(param_1 + 4) = pdVar3;
|
|
|
|
*(double **)(param_1 + 8) = pdVar3;
|
|
|
|
*(undefined4 *)(param_1 + 0xc) = 0xffffffff;
|
|
|
|
*(double *)(param_1 + 0x10) = *(double *)**(undefined4 **)(*(int *)(pdVar3 + 1) + 0x38) + *pdVar3;
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051bed0 at 0x0051BED0 (size: 65) ---
|
|
|
|
|
|
undefined4 FUN_0051bed0(undefined4 param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 uVar1;
|
|
|
|
int iVar2;
|
|
|
|
|
|
|
|
uVar1 = FUN_004220b0(param_1,0x2b);
|
|
|
|
iVar2 = FUN_00415430(uVar1);
|
|
|
|
if ((iVar2 != 0) && (iVar2 = FUN_0051be40(iVar2), iVar2 != 0)) {
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051bf20 at 0x0051BF20 (size: 133) ---
|
|
|
|
|
|
undefined4 __fastcall FUN_0051bf20(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
double *pdVar2;
|
|
|
|
int iVar3;
|
|
|
|
double *pdVar4;
|
|
|
|
int iVar5;
|
|
|
|
|
|
|
|
iVar1 = *(int *)(param_1 + 0xc);
|
|
|
|
iVar5 = iVar1 + 1;
|
|
|
|
*(int *)(param_1 + 0xc) = iVar5;
|
|
|
|
pdVar2 = *(double **)(param_1 + 4);
|
|
|
|
iVar3 = *(int *)(*(int *)(pdVar2 + 1) + 0x44);
|
|
|
|
if (iVar3 <= iVar5) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
if (iVar1 + 2 < iVar3) {
|
|
|
|
*(double *)(param_1 + 0x10) =
|
|
|
|
**(double **)(*(int *)(*(int *)(pdVar2 + 1) + 0x38) + 4 + iVar5 * 4) + *pdVar2;
|
|
|
|
return *(undefined4 *)(*(int *)(*(int *)(*(int *)(pdVar2 + 1) + 0x38) + iVar5 * 4) + 8);
|
|
|
|
}
|
|
|
|
pdVar4 = *(double **)((int)pdVar2 + 0xc);
|
|
|
|
if (pdVar4 != (double *)0x0) {
|
|
|
|
*(double *)(param_1 + 0x10) =
|
|
|
|
*(double *)**(undefined4 **)(*(int *)(pdVar4 + 1) + 0x38) + *pdVar4;
|
|
|
|
return *(undefined4 *)(*(int *)(*(int *)(*(int *)(pdVar2 + 1) + 0x38) + iVar5 * 4) + 8);
|
|
|
|
}
|
|
|
|
*(undefined4 *)(param_1 + 0x10) = 0;
|
|
|
|
*(undefined4 *)(param_1 + 0x14) = 0xbff00000;
|
|
|
|
return *(undefined4 *)(*(int *)(*(int *)(*(int *)(pdVar2 + 1) + 0x38) + iVar5 * 4) + 8);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051bfb0 at 0x0051BFB0 (size: 141) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void __fastcall FUN_0051bfb0(undefined4 *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
void *pvVar2;
|
|
|
|
double *pdVar3;
|
|
|
|
int *piVar4;
|
|
|
|
|
|
|
|
iVar1 = param_1[1];
|
|
|
|
while ((iVar1 != 0 && (*(double *)(param_1 + 4) <= _DAT_008379a8))) {
|
|
|
|
piVar4 = (int *)FUN_0051bf20();
|
|
|
|
if (piVar4 == (int *)0x0) {
|
|
|
|
pvVar2 = (void *)param_1[1];
|
|
|
|
pdVar3 = *(double **)((int)pvVar2 + 0xc);
|
|
|
|
param_1[1] = pdVar3;
|
|
|
|
param_1[3] = 0xffffffff;
|
|
|
|
if (pdVar3 == (double *)0x0) {
|
|
|
|
param_1[4] = 0;
|
|
|
|
param_1[5] = 0xbff00000;
|
|
|
|
param_1[2] = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*(double *)(param_1 + 4) =
|
|
|
|
*(double *)**(undefined4 **)(*(int *)(pdVar3 + 1) + 0x38) + *pdVar3;
|
|
|
|
}
|
|
|
|
if (pvVar2 != (void *)0x0) {
|
|
|
|
if (*(int **)((int)pvVar2 + 8) != (int *)0x0) {
|
|
|
|
(**(code **)(**(int **)((int)pvVar2 + 8) + 0x14))();
|
|
|
|
}
|
|
|
|
operator_delete(pvVar2);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
(**(code **)(*piVar4 + 4))(*param_1);
|
|
|
|
}
|
|
|
|
iVar1 = param_1[1];
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051c040 at 0x0051C040 (size: 102) ---
|
|
|
|
|
|
void __fastcall FUN_0051c040(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
void *pvVar2;
|
|
|
|
double *pdVar3;
|
|
|
|
|
|
|
|
iVar1 = *(int *)(param_1 + 4);
|
|
|
|
while (iVar1 != 0) {
|
|
|
|
pvVar2 = *(void **)(param_1 + 4);
|
|
|
|
pdVar3 = *(double **)((int)pvVar2 + 0xc);
|
|
|
|
*(double **)(param_1 + 4) = pdVar3;
|
|
|
|
*(undefined4 *)(param_1 + 0xc) = 0xffffffff;
|
|
|
|
if (pdVar3 == (double *)0x0) {
|
|
|
|
*(undefined4 *)(param_1 + 0x10) = 0;
|
|
|
|
*(undefined4 *)(param_1 + 0x14) = 0xbff00000;
|
|
|
|
*(undefined4 *)(param_1 + 8) = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*(double *)(param_1 + 0x10) =
|
|
|
|
*(double *)**(undefined4 **)(*(int *)(pdVar3 + 1) + 0x38) + *pdVar3;
|
|
|
|
}
|
|
|
|
if (pvVar2 != (void *)0x0) {
|
|
|
|
if (*(int **)((int)pvVar2 + 8) != (int *)0x0) {
|
|
|
|
(**(code **)(**(int **)((int)pvVar2 + 8) + 0x14))();
|
|
|
|
}
|
|
|
|
operator_delete(pvVar2);
|
|
|
|
}
|
|
|
|
iVar1 = *(int *)(param_1 + 4);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051c0b0 at 0x0051C0B0 (size: 74) ---
|
|
|
|
|
|
int __fastcall FUN_0051c0b0(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
int *local_10;
|
|
|
|
int local_c;
|
|
|
|
undefined4 *local_8;
|
|
|
|
int local_4;
|
|
|
|
|
|
|
|
iVar1 = 0;
|
|
|
|
FUN_0051a270(param_1 + 4);
|
|
|
|
if (local_4 != 0) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
do {
|
|
|
|
iVar1 = iVar1 + 1;
|
|
|
|
local_8 = (undefined4 *)*local_8;
|
|
|
|
while (local_8 == (undefined4 *)0x0) {
|
|
|
|
local_c = local_c + 1;
|
|
|
|
if (local_10[1] <= local_c) {
|
|
|
|
return iVar1;
|
|
|
|
}
|
|
|
|
local_8 = *(undefined4 **)(*local_10 + local_c * 4);
|
|
|
|
}
|
|
|
|
} while( true );
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051c100 at 0x0051C100 (size: 66) ---
|
|
|
|
|
|
undefined4 * __fastcall FUN_0051c100(undefined4 *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 *puVar1;
|
|
|
|
uint uVar2;
|
|
|
|
int iVar3;
|
|
|
|
|
|
|
|
*param_1 = 0xffff0000;
|
|
|
|
param_1[1] = 0;
|
|
|
|
param_1[2] = 2;
|
|
|
|
puVar1 = (undefined4 *)thunk_FUN_005df0f5(8);
|
|
|
|
param_1[1] = puVar1;
|
|
|
|
for (uVar2 = param_1[2] & 0x3fffffff; uVar2 != 0; uVar2 = uVar2 - 1) {
|
|
|
|
*puVar1 = 0;
|
|
|
|
puVar1 = puVar1 + 1;
|
|
|
|
}
|
|
|
|
for (iVar3 = 0; iVar3 != 0; iVar3 = iVar3 + -1) {
|
|
|
|
*(undefined1 *)puVar1 = 0;
|
|
|
|
puVar1 = (undefined4 *)((int)puVar1 + 1);
|
|
|
|
}
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051c150 at 0x0051C150 (size: 156) ---
|
|
|
|
|
|
void __fastcall FUN_0051c150(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 *puVar1;
|
|
|
|
void *pvVar2;
|
|
|
|
int *local_10;
|
|
|
|
int local_c;
|
|
|
|
undefined4 *local_8;
|
|
|
|
int local_4;
|
|
|
|
|
|
|
|
puVar1 = (undefined4 *)(param_1 + 4);
|
|
|
|
FUN_0051a270(puVar1);
|
|
|
|
do {
|
|
|
|
if (local_4 != 0) {
|
|
|
|
FUN_0051a370();
|
|
|
|
operator_delete__((void *)*puVar1);
|
|
|
|
*puVar1 = 0;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
if (local_8 == (undefined4 *)0x0) {
|
|
|
|
pvVar2 = (void *)0x0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
pvVar2 = (void *)local_8[1];
|
|
|
|
}
|
|
|
|
local_8 = (undefined4 *)*local_8;
|
|
|
|
while (local_8 == (undefined4 *)0x0) {
|
|
|
|
local_c = local_c + 1;
|
|
|
|
if (local_10[1] <= local_c) {
|
|
|
|
local_4 = 1;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
local_8 = *(undefined4 **)(*local_10 + local_c * 4);
|
|
|
|
}
|
|
|
|
if (pvVar2 != (void *)0x0) {
|
|
|
|
thunk_FUN_0051d8e0();
|
|
|
|
operator_delete(pvVar2);
|
|
|
|
}
|
|
|
|
} while( true );
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051c1f0 at 0x0051C1F0 (size: 166) ---
|
|
|
|
|
|
int __thiscall
|
|
|
|
FUN_0051c1f0(int *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
|
|
|
|
undefined4 param_5,int param_6)
|
|
|
|
|
|
|
|
{
|
|
|
|
void *pvVar1;
|
|
|
|
int *piVar2;
|
|
|
|
int iVar3;
|
|
|
|
|
|
|
|
if (param_6 != 0) {
|
|
|
|
pvVar1 = (void *)FUN_0051ad60(param_6);
|
|
|
|
if (pvVar1 != (void *)0x0) {
|
|
|
|
thunk_FUN_0051d8e0();
|
|
|
|
operator_delete(pvVar1);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
piVar2 = (int *)FUN_0051d8b0(param_2);
|
|
|
|
if (piVar2 != (int *)0x0) {
|
|
|
|
iVar3 = FUN_0051def0(param_3);
|
|
|
|
if (iVar3 != 0) {
|
|
|
|
iVar3 = FUN_0051ccc0(param_4,param_5);
|
|
|
|
if (iVar3 != 0) {
|
|
|
|
iVar3 = FUN_0051df30();
|
|
|
|
if (iVar3 != 0) {
|
|
|
|
if (param_6 == 0) {
|
|
|
|
param_6 = *param_1;
|
|
|
|
*param_1 = param_6 + 1;
|
|
|
|
}
|
|
|
|
*piVar2 = param_6;
|
|
|
|
FUN_0051a430(piVar2,param_6);
|
|
|
|
return param_6;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
thunk_FUN_0051d8e0();
|
|
|
|
operator_delete(piVar2);
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051c2a0 at 0x0051C2A0 (size: 58) ---
|
|
|
|
|
|
undefined4 FUN_0051c2a0(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
void *pvVar1;
|
|
|
|
|
|
|
|
if (param_1 == 0) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
pvVar1 = (void *)FUN_0051ad60(param_1);
|
|
|
|
if (pvVar1 != (void *)0x0) {
|
|
|
|
thunk_FUN_0051d8e0();
|
|
|
|
operator_delete(pvVar1);
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051c2e0 at 0x0051C2E0 (size: 75) ---
|
|
|
|
|
|
undefined4 __thiscall FUN_0051c2e0(int param_1,uint param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
int *piVar1;
|
|
|
|
uint uVar2;
|
|
|
|
|
|
|
|
if ((param_2 != 0) &&
|
|
|
|
(piVar1 = *(int **)(*(int *)(param_1 + 4) +
|
|
|
|
((param_2 >> 0x10 ^ param_2) % *(uint *)(param_1 + 8)) * 4),
|
|
|
|
piVar1 != (int *)0x0)) {
|
|
|
|
uVar2 = piVar1[2];
|
|
|
|
while (uVar2 != param_2) {
|
|
|
|
piVar1 = (int *)*piVar1;
|
|
|
|
if (piVar1 == (int *)0x0) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
uVar2 = piVar1[2];
|
|
|
|
}
|
|
|
|
if (piVar1[1] != 0) {
|
|
|
|
*(undefined4 *)(piVar1[1] + 0x8c) = 1;
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051c330 at 0x0051C330 (size: 152) ---
|
|
|
|
|
|
void __fastcall FUN_0051c330(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
undefined4 *puVar2;
|
|
|
|
int *local_10;
|
|
|
|
int local_c;
|
|
|
|
undefined4 *local_8;
|
|
|
|
int local_4;
|
|
|
|
|
|
|
|
FUN_0051a270(param_1 + 4);
|
|
|
|
do {
|
|
|
|
if (local_4 != 0) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
if (local_8 == (undefined4 *)0x0) {
|
|
|
|
puVar2 = (undefined4 *)0x0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
puVar2 = (undefined4 *)local_8[1];
|
|
|
|
}
|
|
|
|
local_8 = (undefined4 *)*local_8;
|
|
|
|
while (local_8 == (undefined4 *)0x0) {
|
|
|
|
local_c = local_c + 1;
|
|
|
|
if (local_10[1] <= local_c) {
|
|
|
|
local_4 = 1;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
local_8 = *(undefined4 **)(*local_10 + local_c * 4);
|
|
|
|
}
|
|
|
|
iVar1 = FUN_0051dcb0();
|
|
|
|
if (iVar1 == 0) {
|
|
|
|
FUN_0051ad60(*puVar2);
|
|
|
|
thunk_FUN_0051d8e0();
|
|
|
|
operator_delete(puVar2);
|
|
|
|
}
|
|
|
|
} while( true );
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051c3d0 at 0x0051C3D0 (size: 90) ---
|
|
|
|
|
|
undefined4 __thiscall
|
|
|
|
FUN_0051c3d0(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,undefined4 param_5
|
|
|
|
,uint param_6)
|
|
|
|
|
|
|
|
{
|
|
|
|
int *piVar1;
|
|
|
|
uint uVar2;
|
|
|
|
undefined4 uVar3;
|
|
|
|
|
|
|
|
if ((param_6 != 0) &&
|
|
|
|
(piVar1 = *(int **)(*(int *)(param_1 + 4) +
|
|
|
|
((param_6 >> 0x10 ^ param_6) % *(uint *)(param_1 + 8)) * 4),
|
|
|
|
piVar1 != (int *)0x0)) {
|
|
|
|
uVar2 = piVar1[2];
|
|
|
|
while (uVar2 != param_6) {
|
|
|
|
piVar1 = (int *)*piVar1;
|
|
|
|
if (piVar1 == (int *)0x0) goto LAB_0051c40c;
|
|
|
|
uVar2 = piVar1[2];
|
|
|
|
}
|
|
|
|
if (piVar1[1] != 0) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
LAB_0051c40c:
|
|
|
|
uVar3 = FUN_0051c1f0(param_2,param_3,param_4,param_5,param_6);
|
|
|
|
return uVar3;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051c430 at 0x0051C430 (size: 17) ---
|
|
|
|
|
|
void __fastcall FUN_0051c430(undefined4 *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
*param_1 = 0xffffffff;
|
|
|
|
param_1[1] = 0;
|
|
|
|
param_1[2] = 0;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051c450 at 0x0051C450 (size: 29) ---
|
|
|
|
|
|
void __thiscall FUN_0051c450(int param_1,int param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
if (param_2 != 0) {
|
|
|
|
*(uint *)(param_1 + 0xc) = *(uint *)(param_1 + 0xc) | 1;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
*(uint *)(param_1 + 0xc) = *(uint *)(param_1 + 0xc) & 0xfffffffe;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051c470 at 0x0051C470 (size: 29) ---
|
|
|
|
|
|
void __thiscall FUN_0051c470(int param_1,int param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
if (param_2 != 0) {
|
|
|
|
*(uint *)(param_1 + 0x18) = *(uint *)(param_1 + 0x18) | 1;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
*(uint *)(param_1 + 0x18) = *(uint *)(param_1 + 0x18) & 0xfffffffe;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051c490 at 0x0051C490 (size: 29) ---
|
|
|
|
|
|
void __thiscall FUN_0051c490(int param_1,int param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
if (param_2 != 0) {
|
|
|
|
*(uint *)(param_1 + 0x18) = *(uint *)(param_1 + 0x18) | 2;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
*(uint *)(param_1 + 0x18) = *(uint *)(param_1 + 0x18) & 0xfffffffd;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051c4b0 at 0x0051C4B0 (size: 29) ---
|
|
|
|
|
|
void __thiscall FUN_0051c4b0(int param_1,int param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
if (param_2 != 0) {
|
|
|
|
*(uint *)(param_1 + 0x18) = *(uint *)(param_1 + 0x18) | 0x40;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
*(uint *)(param_1 + 0x18) = *(uint *)(param_1 + 0x18) & 0xffffffbf;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051c4d0 at 0x0051C4D0 (size: 29) ---
|
|
|
|
|
|
void __thiscall FUN_0051c4d0(int param_1,int param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
if (param_2 != 0) {
|
|
|
|
*(uint *)(param_1 + 0x18) = *(uint *)(param_1 + 0x18) | 4;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
*(uint *)(param_1 + 0x18) = *(uint *)(param_1 + 0x18) & 0xfffffffb;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051c4f0 at 0x0051C4F0 (size: 29) ---
|
|
|
|
|
|
void __thiscall FUN_0051c4f0(int param_1,int param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
if (param_2 != 0) {
|
|
|
|
*(uint *)(param_1 + 0x18) = *(uint *)(param_1 + 0x18) | 8;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
*(uint *)(param_1 + 0x18) = *(uint *)(param_1 + 0x18) & 0xfffffff7;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051c510 at 0x0051C510 (size: 29) ---
|
|
|
|
|
|
void __thiscall FUN_0051c510(int param_1,int param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
if (param_2 != 0) {
|
|
|
|
*(uint *)(param_1 + 0x18) = *(uint *)(param_1 + 0x18) | 0x10;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
*(uint *)(param_1 + 0x18) = *(uint *)(param_1 + 0x18) & 0xffffffef;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051c530 at 0x0051C530 (size: 29) ---
|
|
|
|
|
|
void __thiscall FUN_0051c530(int param_1,int param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
if (param_2 != 0) {
|
|
|
|
*(uint *)(param_1 + 0x18) = *(uint *)(param_1 + 0x18) | 0x20;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
*(uint *)(param_1 + 0x18) = *(uint *)(param_1 + 0x18) & 0xffffffdf;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051c550 at 0x0051C550 (size: 10) ---
|
|
|
|
|
|
void __fastcall FUN_0051c550(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
*(undefined4 *)(param_1 + 0xc) = 0;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051c560 at 0x0051C560 (size: 22) ---
|
|
|
|
|
|
void __fastcall FUN_0051c560(undefined4 *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
*param_1 = 0;
|
|
|
|
param_1[4] = DAT_00845120;
|
|
|
|
param_1[5] = 0;
|
|
|
|
param_1[6] = 0;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051c580 at 0x0051C580 (size: 75) ---
|
|
|
|
|
|
void __thiscall
|
|
|
|
FUN_0051c580(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
|
|
|
|
undefined4 param_5,undefined4 param_6,undefined4 param_7,undefined4 param_8,
|
|
|
|
undefined4 param_9)
|
|
|
|
|
|
|
|
{
|
|
|
|
param_1[2] = param_2;
|
|
|
|
param_1[4] = param_3;
|
|
|
|
param_1[5] = param_4;
|
|
|
|
param_1[6] = param_5;
|
|
|
|
param_1[7] = param_6;
|
|
|
|
param_1[8] = 0;
|
|
|
|
param_1[9] = 0;
|
|
|
|
param_1[10] = param_9;
|
|
|
|
*param_1 = &PTR_LAB_007c7dd0;
|
|
|
|
param_1[0xc] = param_7;
|
|
|
|
param_1[0xd] = param_8;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051c660 at 0x0051C660 (size: 16) ---
|
|
|
|
|
|
void __thiscall FUN_0051c660(int param_1,int param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
*(int *)(param_1 + 0xc) = param_2;
|
|
|
|
*(undefined4 *)(param_1 + 8) = *(undefined4 *)(param_2 + 8);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051c670 at 0x0051C670 (size: 10) ---
|
|
|
|
|
|
void __thiscall FUN_0051c670(int param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
*(undefined4 *)(param_1 + 0x48) = param_2;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051c680 at 0x0051C680 (size: 73) ---
|
|
|
|
|
|
undefined4 * __fastcall FUN_0051c680(undefined4 *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
*param_1 = &PTR_LAB_00797910;
|
|
|
|
param_1[1] = 0;
|
|
|
|
param_1[2] = 0x3f800000;
|
|
|
|
param_1[3] = 0;
|
|
|
|
param_1[4] = 0;
|
|
|
|
param_1[5] = 0;
|
|
|
|
param_1[0xf] = 0;
|
|
|
|
param_1[0x10] = 0;
|
|
|
|
param_1[0x11] = 0;
|
|
|
|
FUN_00535b30();
|
|
|
|
param_1[0x12] = 0;
|
|
|
|
param_1[0x13] = 0;
|
|
|
|
param_1[0x14] = 0;
|
|
|
|
param_1[0x15] = 0;
|
|
|
|
param_1[0x16] = 0;
|
|
|
|
param_1[0x17] = 0;
|
|
|
|
param_1[0x18] = 0;
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051c6d0 at 0x0051C6D0 (size: 25) ---
|
|
|
|
|
|
void __thiscall FUN_0051c6d0(int param_1,int param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
*(undefined4 *)(param_1 + 4) = *(undefined4 *)(param_2 + 4);
|
|
|
|
FUN_00425f10();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051c6f0 at 0x0051C6F0 (size: 9) ---
|
|
|
|
|
|
void __thiscall FUN_0051c6f0(undefined4 *param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
*param_1 = param_2;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051c700 at 0x0051C700 (size: 62) ---
|
|
|
|
|
|
bool __thiscall FUN_0051c700(int param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 uVar1;
|
|
|
|
int iVar2;
|
|
|
|
|
|
|
|
if (*(int **)(param_1 + 4) != (int *)0x0) {
|
|
|
|
(**(code **)(**(int **)(param_1 + 4) + 0x14))();
|
|
|
|
}
|
|
|
|
uVar1 = FUN_004220b0(param_2,0xe);
|
|
|
|
iVar2 = FUN_00415430(uVar1);
|
|
|
|
*(int *)(param_1 + 4) = iVar2;
|
|
|
|
return iVar2 != 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051c740 at 0x0051C740 (size: 56) ---
|
|
|
|
|
|
void __thiscall FUN_0051c740(int param_1,undefined4 *param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
if (*(int *)(param_1 + 4) != 0) {
|
|
|
|
*param_2 = *(undefined4 *)(*(int *)(param_1 + 4) + 0x28);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
*param_2 = DAT_008451f4;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051c780 at 0x0051C780 (size: 72) ---
|
|
|
|
|
|
undefined4 * FUN_0051c780(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 *puVar1;
|
|
|
|
|
|
|
|
puVar1 = (undefined4 *)FUN_005df0f5(0x2c);
|
|
|
|
if (puVar1 != (undefined4 *)0x0) {
|
|
|
|
*puVar1 = 0;
|
|
|
|
puVar1[1] = 0;
|
|
|
|
FUN_00526bd0();
|
|
|
|
puVar1[8] = 0;
|
|
|
|
puVar1[9] = 0;
|
|
|
|
puVar1[10] = 0;
|
|
|
|
if (param_1 != DAT_008451f4) {
|
|
|
|
FUN_0051c700(param_1);
|
|
|
|
}
|
|
|
|
return puVar1;
|
|
|
|
}
|
|
|
|
return (undefined4 *)0x0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051c7d0 at 0x0051C7D0 (size: 55) ---
|
|
|
|
|
|
void __thiscall FUN_0051c7d0(int param_1,int param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
int iVar2;
|
|
|
|
int iVar3;
|
|
|
|
|
|
|
|
if (param_2 != 0) {
|
|
|
|
iVar3 = 0;
|
|
|
|
for (iVar1 = *(int *)(param_1 + 0x28); iVar1 != param_2; iVar1 = *(int *)(iVar1 + 4)) {
|
|
|
|
if (iVar1 == 0) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
iVar2 = *(int *)(iVar1 + 0xc);
|
|
|
|
*(undefined4 *)(iVar1 + 0xc) = 0;
|
|
|
|
iVar3 = iVar3 + iVar2;
|
|
|
|
}
|
|
|
|
FUN_005257e0(iVar3);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051c810 at 0x0051C810 (size: 184) ---
|
|
|
|
|
|
void __thiscall FUN_0051c810(int param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
int *piVar1;
|
|
|
|
undefined4 *puVar2;
|
|
|
|
int iVar3;
|
|
|
|
|
|
|
|
iVar3 = *(int *)(param_1 + 0x24);
|
|
|
|
if (iVar3 != 0) {
|
|
|
|
*(int *)(param_1 + 0x20) = *(int *)(param_1 + 0x20) + 1;
|
|
|
|
do {
|
|
|
|
if (*(uint *)(param_1 + 0x20) < *(uint *)(iVar3 + 0xc)) break;
|
|
|
|
if ((*(uint *)(iVar3 + 8) & 0x10000000) != 0) {
|
|
|
|
FUN_00526d20();
|
|
|
|
}
|
|
|
|
FUN_00510880(*(undefined4 *)(iVar3 + 8),param_2);
|
|
|
|
*(int *)(param_1 + 0x20) = *(int *)(param_1 + 0x20) - *(int *)(iVar3 + 0xc);
|
|
|
|
piVar1 = *(int **)(param_1 + 0x24);
|
|
|
|
if (piVar1 != (int *)0x0) {
|
|
|
|
if ((int *)piVar1[1] == (int *)0x0) {
|
|
|
|
iVar3 = *piVar1;
|
|
|
|
*(int *)(param_1 + 0x24) = iVar3;
|
|
|
|
if (iVar3 != 0) {
|
|
|
|
*(undefined4 *)(iVar3 + 4) = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*(int *)piVar1[1] = *piVar1;
|
|
|
|
}
|
|
|
|
if (*piVar1 == 0) {
|
|
|
|
puVar2 = *(undefined4 **)(*(int *)(param_1 + 0x28) + 4);
|
|
|
|
*(undefined4 **)(param_1 + 0x28) = puVar2;
|
|
|
|
if (puVar2 != (undefined4 *)0x0) {
|
|
|
|
*puVar2 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*(int *)(*piVar1 + 4) = piVar1[1];
|
|
|
|
}
|
|
|
|
*piVar1 = 0;
|
|
|
|
piVar1[1] = 0;
|
|
|
|
if (piVar1 != (int *)0x0) {
|
|
|
|
operator_delete(piVar1);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
iVar3 = *(int *)(param_1 + 0x24);
|
|
|
|
} while (iVar3 != 0);
|
|
|
|
if ((*(int *)(param_1 + 0x20) != 0) && (iVar3 == 0)) {
|
|
|
|
*(undefined4 *)(param_1 + 0x20) = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051c8d0 at 0x0051C8D0 (size: 36) ---
|
|
|
|
|
|
void __fastcall FUN_0051c8d0(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
|
|
|
|
iVar1 = *(int *)(param_1 + 0x24);
|
|
|
|
while (iVar1 != 0) {
|
|
|
|
FUN_0051c810(0);
|
|
|
|
iVar1 = *(int *)(param_1 + 0x24);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051c900 at 0x0051C900 (size: 141) ---
|
|
|
|
|
|
void __fastcall FUN_0051c900(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
int *piVar2;
|
|
|
|
undefined4 *puVar3;
|
|
|
|
|
|
|
|
iVar1 = *(int *)(param_1 + 0x24);
|
|
|
|
while ((iVar1 != 0 && (*(int *)(iVar1 + 0xc) == 0))) {
|
|
|
|
if ((*(uint *)(iVar1 + 8) & 0x10000000) != 0) {
|
|
|
|
FUN_00526d20();
|
|
|
|
}
|
|
|
|
FUN_00510880(*(undefined4 *)(iVar1 + 8),1);
|
|
|
|
piVar2 = *(int **)(param_1 + 0x24);
|
|
|
|
if (piVar2 != (int *)0x0) {
|
|
|
|
if ((int *)piVar2[1] == (int *)0x0) {
|
|
|
|
iVar1 = *piVar2;
|
|
|
|
*(int *)(param_1 + 0x24) = iVar1;
|
|
|
|
if (iVar1 != 0) {
|
|
|
|
*(undefined4 *)(iVar1 + 4) = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*(int *)piVar2[1] = *piVar2;
|
|
|
|
}
|
|
|
|
if (*piVar2 == 0) {
|
|
|
|
puVar3 = *(undefined4 **)(*(int *)(param_1 + 0x28) + 4);
|
|
|
|
*(undefined4 **)(param_1 + 0x28) = puVar3;
|
|
|
|
if (puVar3 != (undefined4 *)0x0) {
|
|
|
|
*puVar3 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*(int *)(*piVar2 + 4) = piVar2[1];
|
|
|
|
}
|
|
|
|
*piVar2 = 0;
|
|
|
|
piVar2[1] = 0;
|
|
|
|
if (piVar2 != (int *)0x0) {
|
|
|
|
operator_delete(piVar2);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
iVar1 = *(int *)(param_1 + 0x24);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051c990 at 0x0051C990 (size: 105) ---
|
|
|
|
|
|
void __fastcall FUN_0051c990(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int *piVar1;
|
|
|
|
int iVar2;
|
|
|
|
undefined4 *puVar3;
|
|
|
|
|
|
|
|
while (piVar1 = *(int **)(param_1 + 0x24), piVar1 != (int *)0x0) {
|
|
|
|
if ((int *)piVar1[1] == (int *)0x0) {
|
|
|
|
iVar2 = *piVar1;
|
|
|
|
*(int *)(param_1 + 0x24) = iVar2;
|
|
|
|
if (iVar2 != 0) {
|
|
|
|
*(undefined4 *)(iVar2 + 4) = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*(int *)piVar1[1] = *piVar1;
|
|
|
|
}
|
|
|
|
if (*piVar1 == 0) {
|
|
|
|
puVar3 = *(undefined4 **)(*(int *)(param_1 + 0x28) + 4);
|
|
|
|
*(undefined4 **)(param_1 + 0x28) = puVar3;
|
|
|
|
if (puVar3 != (undefined4 *)0x0) {
|
|
|
|
*puVar3 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*(int *)(*piVar1 + 4) = piVar1[1];
|
|
|
|
}
|
|
|
|
*piVar1 = 0;
|
|
|
|
piVar1[1] = 0;
|
|
|
|
if (piVar1 == (int *)0x0) break;
|
|
|
|
operator_delete(piVar1);
|
|
|
|
}
|
|
|
|
if (*(int **)(param_1 + 4) != (int *)0x0) {
|
|
|
|
(**(code **)(**(int **)(param_1 + 4) + 0x14))();
|
|
|
|
*(undefined4 *)(param_1 + 4) = 0;
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051ca00 at 0x0051CA00 (size: 17) ---
|
|
|
|
|
|
void FUN_0051ca00(void)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_0051c990();
|
|
|
|
thunk_FUN_00526ee0();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051ca20 at 0x0051CA20 (size: 163) ---
|
|
|
|
|
|
void __thiscall FUN_0051ca20(int param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
uint uVar1;
|
|
|
|
int iVar2;
|
|
|
|
|
|
|
|
iVar2 = *(int *)(param_1 + 0x28);
|
|
|
|
if (iVar2 != 0) {
|
|
|
|
while (*(int *)(iVar2 + 0xc) == 0) {
|
|
|
|
iVar2 = *(int *)(iVar2 + 4);
|
|
|
|
if (iVar2 == 0) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
uVar1 = *(uint *)(iVar2 + 8);
|
|
|
|
if (((uVar1 & 0x40000000) == 0) || ((uVar1 & 0x20000000) != 0)) {
|
|
|
|
if (-1 < (int)uVar1) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
iVar2 = *(int *)(iVar2 + 4);
|
|
|
|
if (iVar2 == 0) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
while (*(uint *)(iVar2 + 8) != uVar1) {
|
|
|
|
if ((*(int *)(iVar2 + 0xc) != 0) && ((*(uint *)(iVar2 + 8) & 0x70000000) != 0)) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
iVar2 = *(int *)(iVar2 + 4);
|
|
|
|
if (iVar2 == 0) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar2 = *(int *)(iVar2 + 4);
|
|
|
|
if (iVar2 == 0) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
while ((*(uint *)(iVar2 + 8) != uVar1 || (*(int *)(iVar2 + 0xc) == 0))) {
|
|
|
|
if ((*(int *)(iVar2 + 0xc) != 0) && ((*(uint *)(iVar2 + 8) & 0xb0000000) != 0)) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
iVar2 = *(int *)(iVar2 + 4);
|
|
|
|
if (iVar2 == 0) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
FUN_0051c7d0(iVar2,param_2);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051cad0 at 0x0051CAD0 (size: 39) ---
|
|
|
|
|
|
void __fastcall FUN_0051cad0(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
|
|
|
|
FUN_005258a0();
|
|
|
|
iVar1 = *(int *)(param_1 + 0x24);
|
|
|
|
while (iVar1 != 0) {
|
|
|
|
FUN_0051c810(0);
|
|
|
|
iVar1 = *(int *)(param_1 + 0x24);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- thunk_FUN_0051c900 at 0x0051CB00 (size: 5) ---
|
|
|
|
|
|
void __fastcall thunk_FUN_0051c900(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
int *piVar2;
|
|
|
|
undefined4 *puVar3;
|
|
|
|
|
|
|
|
iVar1 = *(int *)(param_1 + 0x24);
|
|
|
|
while ((iVar1 != 0 && (*(int *)(iVar1 + 0xc) == 0))) {
|
|
|
|
if ((*(uint *)(iVar1 + 8) & 0x10000000) != 0) {
|
|
|
|
FUN_00526d20();
|
|
|
|
}
|
|
|
|
FUN_00510880(*(undefined4 *)(iVar1 + 8),1);
|
|
|
|
piVar2 = *(int **)(param_1 + 0x24);
|
|
|
|
if (piVar2 != (int *)0x0) {
|
|
|
|
if ((int *)piVar2[1] == (int *)0x0) {
|
|
|
|
iVar1 = *piVar2;
|
|
|
|
*(int *)(param_1 + 0x24) = iVar1;
|
|
|
|
if (iVar1 != 0) {
|
|
|
|
*(undefined4 *)(iVar1 + 4) = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*(int *)piVar2[1] = *piVar2;
|
|
|
|
}
|
|
|
|
if (*piVar2 == 0) {
|
|
|
|
puVar3 = *(undefined4 **)(*(int *)(param_1 + 0x28) + 4);
|
|
|
|
*(undefined4 **)(param_1 + 0x28) = puVar3;
|
|
|
|
if (puVar3 != (undefined4 *)0x0) {
|
|
|
|
*puVar3 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*(int *)(*piVar2 + 4) = piVar2[1];
|
|
|
|
}
|
|
|
|
*piVar2 = 0;
|
|
|
|
piVar2[1] = 0;
|
|
|
|
if (piVar2 != (int *)0x0) {
|
|
|
|
operator_delete(piVar2);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
iVar1 = *(int *)(param_1 + 0x24);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051cb10 at 0x0051CB10 (size: 77) ---
|
|
|
|
|
|
void __thiscall FUN_0051cb10(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 *puVar1;
|
|
|
|
|
|
|
|
puVar1 = (undefined4 *)FUN_005df0f5(0x10);
|
|
|
|
if (puVar1 == (undefined4 *)0x0) {
|
|
|
|
puVar1 = (undefined4 *)0x0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*puVar1 = 0;
|
|
|
|
puVar1[1] = 0;
|
|
|
|
puVar1[2] = param_2;
|
|
|
|
puVar1[3] = param_3;
|
|
|
|
}
|
|
|
|
FUN_00410820(puVar1,*(undefined4 *)(param_1 + 0x28));
|
|
|
|
FUN_0051ca20(param_4);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051cb60 at 0x0051CB60 (size: 123) ---
|
|
|
|
|
|
void __thiscall FUN_0051cb60(int param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 uVar1;
|
|
|
|
undefined4 *puVar2;
|
|
|
|
undefined4 local_4;
|
|
|
|
|
|
|
|
local_4 = 0;
|
|
|
|
if (*(int *)(param_1 + 4) == 0) {
|
|
|
|
local_4 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
FUN_00523c40(param_1 + 8,param_2,&local_4);
|
|
|
|
}
|
|
|
|
uVar1 = local_4;
|
|
|
|
puVar2 = (undefined4 *)FUN_005df0f5(0x10);
|
|
|
|
if (puVar2 == (undefined4 *)0x0) {
|
|
|
|
puVar2 = (undefined4 *)0x0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*puVar2 = 0;
|
|
|
|
puVar2[1] = 0;
|
|
|
|
puVar2[2] = 0x41000003;
|
|
|
|
puVar2[3] = uVar1;
|
|
|
|
}
|
|
|
|
FUN_00410820(puVar2,*(undefined4 *)(param_1 + 0x28));
|
|
|
|
FUN_0051ca20(param_2);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051cbe0 at 0x0051CBE0 (size: 220) ---
|
|
|
|
|
|
undefined4 __thiscall FUN_0051cbe0(int param_1,int *param_2,undefined4 param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
undefined4 local_4;
|
|
|
|
|
|
|
|
if (*(int *)(param_1 + 4) == 0) {
|
|
|
|
return 7;
|
|
|
|
}
|
|
|
|
iVar1 = *param_2;
|
|
|
|
local_4 = 0;
|
|
|
|
if (iVar1 != 2) {
|
|
|
|
if (iVar1 == 4) {
|
|
|
|
iVar1 = thunk_FUN_00523b60(param_2[1],*(undefined4 *)(param_2[0x18] + 0x14),param_1 + 8,
|
|
|
|
param_3,&local_4);
|
|
|
|
if (iVar1 == 0) {
|
|
|
|
return 0x43;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
if (iVar1 != 5) {
|
|
|
|
return param_3;
|
|
|
|
}
|
|
|
|
FUN_00524ad0(param_1 + 8,param_3,&local_4);
|
|
|
|
}
|
|
|
|
FUN_0051cb10(0x41000003,local_4,param_3);
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
iVar1 = FUN_00524a90(param_2[1],param_1 + 8,param_3,*(undefined4 *)(param_2[0x18] + 0x14),&local_4
|
|
|
|
);
|
|
|
|
if (iVar1 == 0) {
|
|
|
|
return 0x43;
|
|
|
|
}
|
|
|
|
FUN_0051cb10(param_2[1],local_4,param_3);
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051ccc0 at 0x0051CCC0 (size: 71) ---
|
|
|
|
|
|
undefined4 __thiscall FUN_0051ccc0(int param_1,undefined4 param_2,undefined4 param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
|
|
|
|
if (*(int *)(param_1 + 0x4c) != 0) {
|
|
|
|
iVar1 = FUN_00516650(*(undefined4 *)(param_1 + 4),param_2,param_3);
|
|
|
|
if (iVar1 != 0) {
|
|
|
|
*(undefined4 *)(param_1 + 8) = param_2;
|
|
|
|
FUN_00425f10(param_3);
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051cd10 at 0x0051CD10 (size: 77) ---
|
|
|
|
|
|
undefined4 __thiscall FUN_0051cd10(int param_1,int param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
|
|
|
|
iVar1 = param_2 * 0x98 + *(int *)(param_1 + 0x54);
|
|
|
|
if (*(double *)(iVar1 + 8) <= *(double *)(iVar1 + 0x10)) {
|
|
|
|
FUN_00511940(*(undefined4 *)(*(int *)(param_1 + 0x5c) + param_2 * 4));
|
|
|
|
*(undefined4 *)(*(int *)(param_1 + 0x5c) + param_2 * 4) = 0;
|
|
|
|
*(int *)(param_1 + 0x70) = *(int *)(param_1 + 0x70) + -1;
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051cd60 at 0x0051CD60 (size: 87) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
undefined4 __fastcall FUN_0051cd60(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
|
|
|
|
if (*(int *)(param_1 + 0x8c) == 0) {
|
|
|
|
iVar1 = *(int *)(param_1 + 0x50);
|
|
|
|
if ((_DAT_00795610 < *(double *)(iVar1 + 0x68)) &&
|
|
|
|
(*(double *)(param_1 + 0x68) + *(double *)(iVar1 + 0x68) < _DAT_008eee70)) {
|
|
|
|
*(undefined4 *)(param_1 + 0x8c) = 1;
|
|
|
|
}
|
|
|
|
if ((*(int *)(iVar1 + 0x60) != 0) && (*(int *)(iVar1 + 0x60) <= *(int *)(param_1 + 0x74))) {
|
|
|
|
*(undefined4 *)(param_1 + 0x8c) = 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return *(undefined4 *)(param_1 + 0x8c);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051cdc0 at 0x0051CDC0 (size: 1306) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void __thiscall FUN_0051cdc0(double *param_1,undefined4 param_2,int param_3,int param_4,int param_5)
|
|
|
|
|
|
|
|
{
|
|
|
|
float fVar1;
|
|
|
|
float fVar2;
|
|
|
|
float fVar3;
|
|
|
|
float fVar4;
|
|
|
|
float fVar5;
|
|
|
|
float fVar6;
|
|
|
|
float fVar7;
|
|
|
|
float fVar8;
|
|
|
|
float fVar9;
|
|
|
|
float fVar10;
|
|
|
|
float fVar11;
|
|
|
|
undefined4 uVar12;
|
|
|
|
undefined4 uVar13;
|
|
|
|
float fVar14;
|
|
|
|
double dVar15;
|
|
|
|
undefined4 *puVar16;
|
|
|
|
float10 fVar17;
|
|
|
|
float10 fVar18;
|
|
|
|
float10 fVar19;
|
|
|
|
float10 fVar20;
|
|
|
|
undefined1 local_60 [4];
|
|
|
|
float local_5c;
|
|
|
|
float local_58;
|
|
|
|
float local_54;
|
|
|
|
float local_50;
|
|
|
|
float local_4c;
|
|
|
|
undefined1 local_48 [52];
|
|
|
|
float local_14;
|
|
|
|
float local_10;
|
|
|
|
float local_c;
|
|
|
|
|
|
|
|
dVar15 = (double)CONCAT44(DAT_008eee74,DAT_008eee70) - *param_1;
|
|
|
|
if (param_3 == 0) {
|
|
|
|
param_1[2] = dVar15;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
param_1[2] = dVar15 + param_1[2];
|
|
|
|
uVar12 = DAT_008eee74;
|
|
|
|
*(undefined4 *)param_1 = DAT_008eee70;
|
|
|
|
*(undefined4 *)((int)param_1 + 4) = uVar12;
|
|
|
|
}
|
|
|
|
switch(param_2) {
|
|
|
|
case 1:
|
|
|
|
puVar16 = (undefined4 *)FUN_0043d8b0(local_60,param_1 + 0xb);
|
|
|
|
uVar12 = puVar16[1];
|
|
|
|
uVar13 = puVar16[2];
|
|
|
|
*(undefined4 *)(param_4 + 0x6c) = *puVar16;
|
|
|
|
*(undefined4 *)(param_4 + 0x70) = uVar12;
|
|
|
|
*(undefined4 *)(param_4 + 0x74) = uVar13;
|
|
|
|
break;
|
|
|
|
case 2:
|
|
|
|
case 0xc:
|
|
|
|
fVar4 = (float)param_1[2];
|
|
|
|
fVar1 = *(float *)(param_1 + 0xd);
|
|
|
|
fVar2 = *(float *)((int)param_1 + 0x5c);
|
|
|
|
fVar3 = *(float *)(param_5 + 0x38);
|
|
|
|
local_4c = *(float *)(param_1 + 0xc) + *(float *)(param_5 + 0x3c) +
|
|
|
|
fVar4 * *(float *)((int)param_1 + 0x6c);
|
|
|
|
*(float *)(param_4 + 0x6c) =
|
|
|
|
*(float *)(param_5 + 0x34) + *(float *)(param_1 + 0xb) +
|
|
|
|
fVar4 * *(float *)((int)param_1 + 100);
|
|
|
|
*(float *)(param_4 + 0x70) = fVar2 + fVar3 + fVar4 * fVar1;
|
|
|
|
*(float *)(param_4 + 0x74) = local_4c;
|
|
|
|
break;
|
|
|
|
case 3:
|
|
|
|
case 8:
|
|
|
|
case 10:
|
|
|
|
fVar2 = *(float *)((int)param_1 + 0x74) * _DAT_007938b8;
|
|
|
|
fVar1 = (float)param_1[2];
|
|
|
|
local_5c = fVar1 * *(float *)(param_1 + 0xd);
|
|
|
|
local_58 = fVar1 * *(float *)((int)param_1 + 0x6c);
|
|
|
|
local_50 = *(float *)((int)param_1 + 0x5c) + *(float *)(param_5 + 0x38) + local_5c;
|
|
|
|
local_4c = *(float *)(param_1 + 0xc) + *(float *)(param_5 + 0x3c) + local_58 +
|
|
|
|
*(float *)(param_1 + 0xf) * _DAT_007938b8 * fVar1 * fVar1;
|
|
|
|
*(float *)(param_4 + 0x6c) =
|
|
|
|
*(float *)(param_1 + 0xb) + *(float *)(param_5 + 0x34) +
|
|
|
|
fVar1 * *(float *)((int)param_1 + 100) +
|
|
|
|
*(float *)(param_1 + 0xe) * _DAT_007938b8 * fVar1 * fVar1;
|
|
|
|
*(float *)(param_4 + 0x70) = local_50 + fVar2 * fVar1 * fVar1;
|
|
|
|
*(float *)(param_4 + 0x74) = local_4c;
|
|
|
|
break;
|
|
|
|
case 4:
|
|
|
|
case 9:
|
|
|
|
case 0xb:
|
|
|
|
FUN_00425f10(param_5);
|
|
|
|
local_58 = (float)param_1[2];
|
|
|
|
local_5c = local_58 * *(float *)(param_1 + 0xd) + *(float *)((int)param_1 + 0x5c);
|
|
|
|
local_14 = local_14 +
|
|
|
|
local_58 * *(float *)((int)param_1 + 100) + *(float *)(param_1 + 0xb) +
|
|
|
|
*(float *)(param_1 + 0xe) * _DAT_007938b8 * local_58 * local_58;
|
|
|
|
local_10 = local_10 +
|
|
|
|
local_5c + *(float *)((int)param_1 + 0x74) * _DAT_007938b8 * local_58 * local_58;
|
|
|
|
local_c = local_c + local_58 * *(float *)((int)param_1 + 0x6c) + *(float *)(param_1 + 0xc) +
|
|
|
|
*(float *)(param_1 + 0xf) * _DAT_007938b8 * local_58 * local_58;
|
|
|
|
local_54 = local_58 * *(float *)((int)param_1 + 0x7c);
|
|
|
|
local_50 = local_58 * *(float *)(param_1 + 0x10);
|
|
|
|
local_58 = local_58 * *(float *)((int)param_1 + 0x84);
|
|
|
|
local_4c = local_58;
|
|
|
|
FUN_004525f0(&local_54);
|
|
|
|
FUN_00425f10(local_48);
|
|
|
|
break;
|
|
|
|
case 5:
|
|
|
|
fVar19 = (float10)param_1[2];
|
|
|
|
fVar20 = (float10)fcos((float10)*(float *)(param_1 + 0xe) * (float10)param_1[2]);
|
|
|
|
fVar17 = (float10)fsin((float10)*(float *)((int)param_1 + 0x74) * (float10)param_1[2]);
|
|
|
|
fVar1 = *(float *)(param_1 + 0x10);
|
|
|
|
fVar2 = *(float *)(param_1 + 0xd);
|
|
|
|
fVar3 = *(float *)((int)param_1 + 0x5c);
|
|
|
|
fVar4 = *(float *)(param_5 + 0x38);
|
|
|
|
fVar18 = (float10)fcos((float10)*(float *)(param_1 + 0xf) * (float10)param_1[2]);
|
|
|
|
fVar5 = *(float *)((int)param_1 + 0x84);
|
|
|
|
fVar6 = *(float *)((int)param_1 + 0x6c);
|
|
|
|
fVar7 = *(float *)(param_1 + 0xc);
|
|
|
|
fVar8 = *(float *)(param_5 + 0x3c);
|
|
|
|
*(float *)(param_4 + 0x6c) =
|
|
|
|
(float)(fVar19 * (float10)*(float *)((int)param_1 + 100) +
|
|
|
|
fVar20 * (float10)*(float *)((int)param_1 + 0x7c) +
|
|
|
|
(float10)*(float *)(param_1 + 0xb) + (float10)*(float *)(param_5 + 0x34));
|
|
|
|
*(float *)(param_4 + 0x70) =
|
|
|
|
(float)(fVar19 * (float10)fVar2 + fVar17 * (float10)fVar1 + (float10)fVar3 + (float10)fVar4
|
|
|
|
);
|
|
|
|
*(float *)(param_4 + 0x74) =
|
|
|
|
(float)(fVar19 * (float10)fVar6 + fVar18 * (float10)fVar5 + (float10)fVar7 + (float10)fVar8
|
|
|
|
);
|
|
|
|
break;
|
|
|
|
case 6:
|
|
|
|
fVar14 = (float)param_1[2];
|
|
|
|
fVar1 = *(float *)((int)param_1 + 0x74);
|
|
|
|
fVar2 = *(float *)(param_1 + 0x10);
|
|
|
|
fVar3 = *(float *)((int)param_1 + 100);
|
|
|
|
fVar4 = *(float *)((int)param_1 + 0x5c);
|
|
|
|
fVar5 = *(float *)(param_5 + 0x38);
|
|
|
|
fVar6 = *(float *)(param_1 + 0xf);
|
|
|
|
fVar7 = *(float *)((int)param_1 + 0x84);
|
|
|
|
fVar8 = *(float *)((int)param_1 + 100);
|
|
|
|
fVar9 = *(float *)((int)param_1 + 0x6c);
|
|
|
|
fVar10 = *(float *)(param_1 + 0xc);
|
|
|
|
fVar11 = *(float *)(param_5 + 0x3c);
|
|
|
|
*(float *)(param_4 + 0x6c) =
|
|
|
|
(*(float *)((int)param_1 + 0x7c) * *(float *)((int)param_1 + 100) +
|
|
|
|
fVar14 * *(float *)(param_1 + 0xe)) * fVar14 + *(float *)(param_1 + 0xb) +
|
|
|
|
*(float *)(param_5 + 0x34);
|
|
|
|
*(float *)(param_4 + 0x70) = (fVar2 * fVar3 + fVar14 * fVar1) * fVar14 + fVar4 + fVar5;
|
|
|
|
*(float *)(param_4 + 0x74) = (fVar7 * fVar8 + fVar14 * fVar6 + fVar9) * fVar14 + fVar10 + fVar11
|
|
|
|
;
|
|
|
|
break;
|
|
|
|
case 7:
|
|
|
|
fVar19 = (float10)fcos((float10)*(float *)((int)param_1 + 100) * (float10)param_1[2]);
|
|
|
|
fVar20 = (float10)param_1[2] * (float10)param_1[2];
|
|
|
|
fVar1 = *(float *)(param_1 + 0x10);
|
|
|
|
fVar2 = *(float *)((int)param_1 + 0x74);
|
|
|
|
fVar3 = *(float *)((int)param_1 + 0x5c);
|
|
|
|
fVar4 = *(float *)(param_5 + 0x38);
|
|
|
|
fVar5 = *(float *)((int)param_1 + 0x84);
|
|
|
|
fVar6 = *(float *)(param_1 + 0xf);
|
|
|
|
fVar7 = *(float *)(param_1 + 0xc);
|
|
|
|
fVar8 = *(float *)(param_5 + 0x3c);
|
|
|
|
*(float *)(param_4 + 0x6c) =
|
|
|
|
(float)(fVar20 * (float10)*(float *)(param_1 + 0xe) +
|
|
|
|
fVar19 * (float10)*(float *)((int)param_1 + 0x7c) +
|
|
|
|
(float10)*(float *)(param_1 + 0xb) + (float10)*(float *)(param_5 + 0x34));
|
|
|
|
*(float *)(param_4 + 0x70) =
|
|
|
|
(float)(fVar20 * (float10)fVar2 + fVar19 * (float10)fVar1 + (float10)fVar3 + (float10)fVar4
|
|
|
|
);
|
|
|
|
*(float *)(param_4 + 0x74) =
|
|
|
|
(float)(fVar20 * (float10)fVar6 + fVar19 * (float10)fVar5 + (float10)fVar7 + (float10)fVar8
|
|
|
|
);
|
|
|
|
}
|
|
|
|
if (param_1[2] < param_1[1]) {
|
|
|
|
fVar19 = (float10)param_1[2] / (float10)param_1[1];
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
fVar19 = (float10)_DAT_007938b0;
|
|
|
|
}
|
|
|
|
fVar20 = ((float10)*(float *)((int)param_1 + 0x8c) - (float10)*(float *)(param_1 + 0x11)) * fVar19
|
|
|
|
+ (float10)*(float *)(param_1 + 0x11);
|
|
|
|
*(float *)(param_4 + 0x24) = (float)fVar20;
|
|
|
|
*(float *)(param_4 + 0x28) = (float)fVar20;
|
|
|
|
*(float *)(param_4 + 0x2c) = (float)fVar20;
|
|
|
|
FUN_0050f140((float)(((float10)*(float *)((int)param_1 + 0x94) -
|
|
|
|
(float10)*(float *)(param_1 + 0x12)) * fVar19 +
|
|
|
|
(float10)*(float *)(param_1 + 0x12)));
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051d310 at 0x0051D310 (size: 135) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_0051d310(undefined4 *param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 uVar1;
|
|
|
|
|
|
|
|
param_1[1] = param_2;
|
|
|
|
param_1[2] = 0xffffffff;
|
|
|
|
*param_1 = 0;
|
|
|
|
param_1[3] = 0x3f800000;
|
|
|
|
param_1[4] = 0;
|
|
|
|
param_1[5] = 0;
|
|
|
|
param_1[6] = 0;
|
|
|
|
param_1[0x10] = 0;
|
|
|
|
param_1[0x11] = 0;
|
|
|
|
param_1[0x12] = 0;
|
|
|
|
FUN_00535b30();
|
|
|
|
param_1[0x13] = 0;
|
|
|
|
param_1[0x14] = 0;
|
|
|
|
param_1[0x15] = 0;
|
|
|
|
param_1[0x16] = 0;
|
|
|
|
param_1[0x17] = 0;
|
|
|
|
param_1[0x18] = 0;
|
|
|
|
param_1[0x19] = 0;
|
|
|
|
param_1[0x1c] = 0;
|
|
|
|
param_1[0x1d] = 0;
|
|
|
|
param_1[0x23] = 0;
|
|
|
|
uVar1 = DAT_008379ac;
|
|
|
|
param_1[0x24] = DAT_008379a8;
|
|
|
|
param_1[0x25] = uVar1;
|
|
|
|
uVar1 = DAT_008379ac;
|
|
|
|
param_1[0x1e] = DAT_008379a8;
|
|
|
|
param_1[0x1f] = uVar1;
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051d3a0 at 0x0051D3A0 (size: 56) ---
|
|
|
|
|
|
void __fastcall FUN_0051d3a0(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
undefined4 uVar2;
|
|
|
|
|
|
|
|
*(int *)(param_1 + 0x70) = *(int *)(param_1 + 0x70) + 1;
|
|
|
|
iVar1 = *(int *)(param_1 + 0x4c);
|
|
|
|
*(int *)(param_1 + 0x74) = *(int *)(param_1 + 0x74) + 1;
|
|
|
|
*(undefined4 *)(param_1 + 0x80) = *(undefined4 *)(iVar1 + 0x84);
|
|
|
|
*(undefined4 *)(param_1 + 0x84) = *(undefined4 *)(iVar1 + 0x88);
|
|
|
|
*(undefined4 *)(param_1 + 0x88) = *(undefined4 *)(iVar1 + 0x8c);
|
|
|
|
uVar2 = DAT_008eee74;
|
|
|
|
*(undefined4 *)(param_1 + 0x78) = DAT_008eee70;
|
|
|
|
*(undefined4 *)(param_1 + 0x7c) = uVar2;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051d3e0 at 0x0051D3E0 (size: 121) ---
|
|
|
|
|
|
void __fastcall FUN_0051d3e0(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
float local_c;
|
|
|
|
float local_8;
|
|
|
|
float local_4;
|
|
|
|
|
|
|
|
if ((*(byte *)(*(int *)(param_1 + 0x50) + 0x38) & 2) != 0) {
|
|
|
|
iVar1 = *(int *)(param_1 + 0x4c);
|
|
|
|
local_c = *(float *)(iVar1 + 0x84) - *(float *)(param_1 + 0x80);
|
|
|
|
local_8 = *(float *)(iVar1 + 0x88) - *(float *)(param_1 + 0x84);
|
|
|
|
local_4 = *(float *)(iVar1 + 0x8c) - *(float *)(param_1 + 0x88);
|
|
|
|
}
|
|
|
|
FUN_00517f50(*(undefined4 *)(param_1 + 0x70),*(undefined4 *)(param_1 + 0x74),&local_c,
|
|
|
|
*(undefined4 *)(param_1 + 0x78),*(undefined4 *)(param_1 + 0x7c));
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051d460 at 0x0051D460 (size: 1048) ---
|
|
|
|
|
|
void __thiscall
|
|
|
|
FUN_0051d460(undefined4 *param_1,int param_2,int param_3,int param_4,int param_5,float *param_6,
|
|
|
|
undefined4 param_7,undefined4 param_8,float *param_9,undefined4 *param_10,
|
|
|
|
float *param_11,float param_12,undefined4 param_13,undefined4 param_14,
|
|
|
|
undefined4 param_15,undefined4 param_16,undefined4 param_17)
|
|
|
|
|
|
|
|
{
|
|
|
|
float fVar1;
|
|
|
|
float fVar2;
|
|
|
|
undefined4 uVar3;
|
|
|
|
undefined4 uVar4;
|
|
|
|
undefined4 *puVar5;
|
|
|
|
int iVar6;
|
|
|
|
float *pfVar7;
|
|
|
|
float fVar8;
|
|
|
|
float *pfVar9;
|
|
|
|
float10 fVar10;
|
|
|
|
unkbyte10 Var11;
|
|
|
|
float10 fVar12;
|
|
|
|
float10 fVar13;
|
|
|
|
float local_3c;
|
|
|
|
float local_38;
|
|
|
|
float local_34;
|
|
|
|
undefined1 local_30 [12];
|
|
|
|
undefined1 local_24 [12];
|
|
|
|
float local_18 [3];
|
|
|
|
undefined1 local_c [12];
|
|
|
|
|
|
|
|
uVar4 = DAT_008eee74;
|
|
|
|
uVar3 = DAT_008eee70;
|
|
|
|
param_1[4] = 0;
|
|
|
|
param_1[5] = 0;
|
|
|
|
param_1[1] = uVar4;
|
|
|
|
*param_1 = uVar3;
|
|
|
|
param_1[2] = param_16;
|
|
|
|
param_1[3] = param_17;
|
|
|
|
if (param_3 == -1) {
|
|
|
|
param_2 = param_2 + 0x50;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
param_2 = *(int *)(*(int *)(*(int *)(param_2 + 0x10) + 0x5c) + param_3 * 4) + 0x38;
|
|
|
|
}
|
|
|
|
FUN_00425f10(param_2);
|
|
|
|
fVar8 = *param_6 + *(float *)(param_4 + 0x34);
|
|
|
|
fVar2 = *(float *)(param_4 + 0x38) + param_6[1];
|
|
|
|
pfVar7 = (float *)(param_1 + 0x16);
|
|
|
|
fVar1 = *(float *)(param_4 + 0x3c) + param_6[2];
|
|
|
|
local_3c = fVar8 * (float)param_1[10] + fVar2 * (float)param_1[0xd] + fVar1 * (float)param_1[0x10]
|
|
|
|
;
|
|
|
|
local_38 = fVar8 * (float)param_1[0xb] +
|
|
|
|
fVar2 * (float)param_1[0xe] + fVar1 * (float)param_1[0x11];
|
|
|
|
*pfVar7 = local_3c;
|
|
|
|
param_1[0x17] = local_38;
|
|
|
|
local_34 = fVar8 * (float)param_1[0xc] +
|
|
|
|
fVar2 * (float)param_1[0xf] + fVar1 * (float)param_1[0x12];
|
|
|
|
param_1[0x18] = local_34;
|
|
|
|
switch(param_7) {
|
|
|
|
case 1:
|
|
|
|
break;
|
|
|
|
case 4:
|
|
|
|
param_1[0x1f] = *param_11;
|
|
|
|
param_1[0x20] = param_11[1];
|
|
|
|
param_1[0x21] = param_11[2];
|
|
|
|
case 3:
|
|
|
|
param_1[0x1c] = *param_10;
|
|
|
|
param_1[0x1d] = param_10[1];
|
|
|
|
param_1[0x1e] = param_10[2];
|
|
|
|
case 2:
|
|
|
|
pfVar7 = &local_3c;
|
|
|
|
goto LAB_0051d5d4;
|
|
|
|
case 5:
|
|
|
|
puVar5 = (undefined4 *)FUN_00452530(local_c,param_9);
|
|
|
|
param_1[0x19] = *puVar5;
|
|
|
|
param_1[0x1a] = puVar5[1];
|
|
|
|
param_1[0x1b] = puVar5[2];
|
|
|
|
param_1[0x1c] = *param_10;
|
|
|
|
param_1[0x1d] = param_10[1];
|
|
|
|
param_1[0x1e] = param_10[2];
|
|
|
|
param_1[0x1f] = *param_11;
|
|
|
|
param_1[0x20] = param_11[1];
|
|
|
|
param_1[0x21] = param_11[2];
|
|
|
|
break;
|
|
|
|
case 6:
|
|
|
|
param_1[0x19] = *param_9;
|
|
|
|
param_1[0x1a] = param_9[1];
|
|
|
|
param_1[0x1b] = param_9[2];
|
|
|
|
param_1[0x1c] = *param_10;
|
|
|
|
param_1[0x1d] = param_10[1];
|
|
|
|
param_1[0x1e] = param_10[2];
|
|
|
|
fVar10 = (float10)FUN_0042c860(0xc0490fdb,0x40490fdb);
|
|
|
|
Var11 = FUN_0042c860(0xc0490fdb,0x40490fdb);
|
|
|
|
fVar12 = (float10)fcos(Var11);
|
|
|
|
fVar13 = (float10)fcos((float10)(float)fVar10);
|
|
|
|
local_3c = (float)(fVar13 * (float10)*param_11 * fVar12);
|
|
|
|
fVar10 = (float10)fsin((float10)(float)fVar10);
|
|
|
|
local_38 = (float)(fVar10 * (float10)param_11[1] * fVar12);
|
|
|
|
fVar10 = (float10)fsin(Var11);
|
|
|
|
fVar8 = param_11[2];
|
|
|
|
param_1[0x1f] = local_3c;
|
|
|
|
local_34 = (float)(fVar10 * (float10)fVar8);
|
|
|
|
param_1[0x20] = local_38;
|
|
|
|
param_1[0x21] = local_34;
|
|
|
|
iVar6 = FUN_004524a0();
|
|
|
|
if (iVar6 != 0) {
|
|
|
|
param_1[0x1f] = 0.0;
|
|
|
|
param_1[0x20] = 0;
|
|
|
|
param_1[0x21] = 0;
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
case 7:
|
|
|
|
param_1[0x19] = *param_9;
|
|
|
|
param_1[0x1a] = param_9[1];
|
|
|
|
param_1[0x1b] = param_9[2];
|
|
|
|
param_1[0x1c] = *param_10;
|
|
|
|
param_1[0x1d] = param_10[1];
|
|
|
|
param_1[0x1e] = param_10[2];
|
|
|
|
pfVar9 = (float *)(param_1 + 0x1f);
|
|
|
|
*pfVar7 = *param_11 * *pfVar7;
|
|
|
|
param_1[0x17] = param_11[1] * (float)param_1[0x17];
|
|
|
|
param_1[0x18] = param_11[2] * (float)param_1[0x18];
|
|
|
|
*pfVar9 = *pfVar7;
|
|
|
|
fVar8 = (float)param_1[0x17];
|
|
|
|
goto LAB_0051d7f7;
|
|
|
|
case 9:
|
|
|
|
puVar5 = (undefined4 *)FUN_00452530(local_30,param_11);
|
|
|
|
param_1[0x1f] = *puVar5;
|
|
|
|
param_1[0x20] = puVar5[1];
|
|
|
|
param_1[0x21] = puVar5[2];
|
|
|
|
case 8:
|
|
|
|
puVar5 = (undefined4 *)FUN_00452530(local_24,param_10);
|
|
|
|
param_1[0x1c] = *puVar5;
|
|
|
|
param_1[0x1d] = puVar5[1];
|
|
|
|
param_1[0x1e] = puVar5[2];
|
|
|
|
pfVar7 = local_18;
|
|
|
|
LAB_0051d5d4:
|
|
|
|
puVar5 = (undefined4 *)FUN_00452530(pfVar7,param_9);
|
|
|
|
param_1[0x19] = *puVar5;
|
|
|
|
param_1[0x1a] = puVar5[1];
|
|
|
|
param_1[0x1b] = puVar5[2];
|
|
|
|
break;
|
|
|
|
case 0xb:
|
|
|
|
param_1[0x1f] = *param_11;
|
|
|
|
param_1[0x20] = param_11[1];
|
|
|
|
param_1[0x21] = param_11[2];
|
|
|
|
case 10:
|
|
|
|
param_1[0x1c] = *param_10;
|
|
|
|
param_1[0x1d] = param_10[1];
|
|
|
|
param_1[0x1e] = param_10[2];
|
|
|
|
case 0xc:
|
|
|
|
pfVar9 = (float *)(param_1 + 0x19);
|
|
|
|
param_11 = param_9;
|
|
|
|
goto LAB_0051d7f0;
|
|
|
|
default:
|
|
|
|
param_1[0x19] = *param_9;
|
|
|
|
param_1[0x1a] = param_9[1];
|
|
|
|
param_1[0x1b] = param_9[2];
|
|
|
|
param_1[0x1c] = *param_10;
|
|
|
|
param_1[0x1d] = param_10[1];
|
|
|
|
param_1[0x1e] = param_10[2];
|
|
|
|
pfVar9 = (float *)(param_1 + 0x1f);
|
|
|
|
LAB_0051d7f0:
|
|
|
|
*pfVar9 = *param_11;
|
|
|
|
fVar8 = param_11[1];
|
|
|
|
pfVar7 = param_11;
|
|
|
|
LAB_0051d7f7:
|
|
|
|
pfVar9[1] = fVar8;
|
|
|
|
pfVar9[2] = pfVar7[2];
|
|
|
|
}
|
|
|
|
param_1[0x22] = param_12;
|
|
|
|
param_1[0x23] = param_13;
|
|
|
|
param_1[0x25] = param_15;
|
|
|
|
param_1[0x24] = param_14;
|
|
|
|
local_3c = param_12;
|
|
|
|
*(float *)(param_5 + 0x24) = param_12;
|
|
|
|
*(float *)(param_5 + 0x28) = param_12;
|
|
|
|
local_34 = param_12;
|
|
|
|
*(float *)(param_5 + 0x2c) = param_12;
|
|
|
|
local_38 = param_12;
|
|
|
|
FUN_0050f140(param_1[0x24]);
|
|
|
|
FUN_0051cdc0(param_7,param_8,param_5,param_1 + 6);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051d8b0 at 0x0051D8B0 (size: 42) ---
|
|
|
|
|
|
int FUN_0051d8b0(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
|
|
|
|
if (((param_1 != 0) && (iVar1 = FUN_005df0f5(0x98), iVar1 != 0)) &&
|
|
|
|
(iVar1 = FUN_0051d310(param_1), iVar1 != 0)) {
|
|
|
|
return iVar1;
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051d8e0 at 0x0051D8E0 (size: 210) ---
|
|
|
|
|
|
void __fastcall FUN_0051d8e0(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
void *pvVar1;
|
|
|
|
int *piVar2;
|
|
|
|
undefined4 uVar3;
|
|
|
|
undefined4 uVar4;
|
|
|
|
uint uVar5;
|
|
|
|
|
|
|
|
if (*(int *)(param_1 + 0x4c) != 0) {
|
|
|
|
FUN_00513f70();
|
|
|
|
FUN_005160a0();
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x58) != 0) {
|
|
|
|
uVar5 = 0;
|
|
|
|
if (*(int *)(*(int *)(param_1 + 0x50) + 0x58) != 0) {
|
|
|
|
do {
|
|
|
|
pvVar1 = *(void **)(*(int *)(param_1 + 0x58) + uVar5 * 4);
|
|
|
|
if (pvVar1 != (void *)0x0) {
|
|
|
|
FUN_0050ed40();
|
|
|
|
operator_delete(pvVar1);
|
|
|
|
}
|
|
|
|
*(undefined4 *)(*(int *)(param_1 + 0x58) + uVar5 * 4) = 0;
|
|
|
|
*(undefined4 *)(*(int *)(param_1 + 0x5c) + uVar5 * 4) = 0;
|
|
|
|
uVar5 = uVar5 + 1;
|
|
|
|
} while (uVar5 < *(uint *)(*(int *)(param_1 + 0x50) + 0x58));
|
|
|
|
}
|
|
|
|
operator_delete__(*(void **)(param_1 + 0x58));
|
|
|
|
*(undefined4 *)(param_1 + 0x58) = 0;
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x54) != 0) {
|
|
|
|
operator_delete__((void *)(*(int *)(param_1 + 0x54) + -4));
|
|
|
|
*(undefined4 *)(param_1 + 0x54) = 0;
|
|
|
|
}
|
|
|
|
piVar2 = *(int **)(param_1 + 0x50);
|
|
|
|
if (piVar2 != (int *)0x0) {
|
|
|
|
if (piVar2[10] != DAT_0084527c) {
|
|
|
|
(**(code **)(*piVar2 + 0x14))();
|
|
|
|
}
|
|
|
|
*(undefined4 *)(param_1 + 0x50) = 0;
|
|
|
|
}
|
|
|
|
if (*(undefined4 **)(param_1 + 0x4c) != (undefined4 *)0x0) {
|
|
|
|
(**(code **)**(undefined4 **)(param_1 + 0x4c))(1);
|
|
|
|
*(undefined4 *)(param_1 + 0x4c) = 0;
|
|
|
|
}
|
|
|
|
*(undefined4 *)(param_1 + 0x5c) = 0;
|
|
|
|
uVar4 = DAT_008eee74;
|
|
|
|
uVar3 = DAT_008eee70;
|
|
|
|
*(undefined4 *)(param_1 + 0x70) = 0;
|
|
|
|
*(undefined4 *)(param_1 + 0x90) = uVar3;
|
|
|
|
*(undefined4 *)(param_1 + 0x94) = uVar4;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051d9c0 at 0x0051D9C0 (size: 369) ---
|
|
|
|
|
|
undefined4 __thiscall FUN_0051d9c0(int param_1,int param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
undefined4 uVar2;
|
|
|
|
int *piVar3;
|
|
|
|
int *piVar4;
|
|
|
|
int iVar5;
|
|
|
|
float10 fVar6;
|
|
|
|
|
|
|
|
FUN_0051d8e0();
|
|
|
|
*(int *)(param_1 + 0x50) = param_2;
|
|
|
|
iVar5 = *(int *)(param_2 + 0x48);
|
|
|
|
if (iVar5 == DAT_0084527c) {
|
|
|
|
FUN_0051d8e0();
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
iVar1 = FUN_00513140(*(undefined4 *)(param_2 + 0x58),param_2 + 0x80);
|
|
|
|
*(int *)(param_1 + 0x4c) = iVar1;
|
|
|
|
if (iVar1 != 0) {
|
|
|
|
*(undefined4 *)(param_1 + 0x80) = *(undefined4 *)(iVar1 + 0x84);
|
|
|
|
*(undefined4 *)(param_1 + 0x84) = *(undefined4 *)(iVar1 + 0x88);
|
|
|
|
*(undefined4 *)(param_1 + 0x88) = *(undefined4 *)(iVar1 + 0x8c);
|
|
|
|
*(undefined4 *)(param_1 + 0x5c) = *(undefined4 *)(*(int *)(iVar1 + 0x10) + 0x5c);
|
|
|
|
iVar1 = thunk_FUN_005df0f5(*(int *)(*(int *)(param_1 + 0x50) + 0x58) * 4);
|
|
|
|
*(int *)(param_1 + 0x58) = iVar1;
|
|
|
|
if (iVar1 != 0) {
|
|
|
|
iVar1 = 0;
|
|
|
|
if (0 < *(int *)(*(int *)(param_1 + 0x50) + 0x58)) {
|
|
|
|
do {
|
|
|
|
*(undefined4 *)(*(int *)(param_1 + 0x58) + iVar1 * 4) = 0;
|
|
|
|
iVar1 = iVar1 + 1;
|
|
|
|
} while (iVar1 < *(int *)(*(int *)(param_1 + 0x50) + 0x58));
|
|
|
|
}
|
|
|
|
iVar1 = 0;
|
|
|
|
if (0 < *(int *)(*(int *)(param_1 + 0x50) + 0x58)) {
|
|
|
|
do {
|
|
|
|
uVar2 = FUN_0050f230(iVar5);
|
|
|
|
*(undefined4 *)(*(int *)(param_1 + 0x58) + iVar1 * 4) = uVar2;
|
|
|
|
if (*(int *)(*(int *)(param_1 + 0x58) + iVar1 * 4) == 0) goto LAB_0051da06;
|
|
|
|
iVar1 = iVar1 + 1;
|
|
|
|
} while (iVar1 < *(int *)(*(int *)(param_1 + 0x50) + 0x58));
|
|
|
|
}
|
|
|
|
fVar6 = (float10)FUN_0050dfe0();
|
|
|
|
*(float *)(param_1 + 100) = (float)fVar6;
|
|
|
|
iVar5 = *(int *)(*(int *)(param_1 + 0x50) + 0x58);
|
|
|
|
piVar3 = (int *)thunk_FUN_005df0f5(iVar5 * 0x98 + 4);
|
|
|
|
if (piVar3 == (int *)0x0) {
|
|
|
|
piVar4 = (int *)0x0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*piVar3 = iVar5;
|
|
|
|
piVar4 = piVar3 + 1;
|
|
|
|
if (-1 < iVar5 + -1) {
|
|
|
|
piVar3 = piVar3 + 0x16;
|
|
|
|
do {
|
|
|
|
piVar3[-0xf] = 0x3f800000;
|
|
|
|
piVar3[-0xe] = 0;
|
|
|
|
piVar3[-0xd] = 0;
|
|
|
|
piVar3[-0xc] = 0;
|
|
|
|
piVar3[-2] = 0;
|
|
|
|
piVar3[-1] = 0;
|
|
|
|
*piVar3 = 0;
|
|
|
|
FUN_00535b30();
|
|
|
|
piVar3 = piVar3 + 0x26;
|
|
|
|
iVar5 = iVar5 + -1;
|
|
|
|
} while (iVar5 != 0);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
*(int **)(param_1 + 0x54) = piVar4;
|
|
|
|
if (piVar4 != (int *)0x0) {
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
LAB_0051da06:
|
|
|
|
FUN_0051d8e0();
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051db40 at 0x0051DB40 (size: 353) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void __fastcall FUN_0051db40(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
int *piVar2;
|
|
|
|
undefined4 uVar3;
|
|
|
|
undefined4 uVar4;
|
|
|
|
undefined4 uVar5;
|
|
|
|
undefined4 uVar6;
|
|
|
|
undefined4 uVar7;
|
|
|
|
int iVar8;
|
|
|
|
float10 fVar9;
|
|
|
|
undefined4 uVar10;
|
|
|
|
float fVar11;
|
|
|
|
float fVar12;
|
|
|
|
float fVar13;
|
|
|
|
float fVar14;
|
|
|
|
double dVar15;
|
|
|
|
undefined1 local_30 [12];
|
|
|
|
undefined1 local_24 [12];
|
|
|
|
undefined1 local_18 [12];
|
|
|
|
undefined1 local_c [12];
|
|
|
|
|
|
|
|
iVar1 = *(int *)(*(int *)(param_1 + 0x50) + 0x58);
|
|
|
|
iVar8 = 0;
|
|
|
|
if (0 < iVar1) {
|
|
|
|
piVar2 = *(int **)(param_1 + 0x5c);
|
|
|
|
do {
|
|
|
|
if (*piVar2 == 0) break;
|
|
|
|
iVar8 = iVar8 + 1;
|
|
|
|
piVar2 = piVar2 + 1;
|
|
|
|
} while (iVar8 < *(int *)(*(int *)(param_1 + 0x50) + 0x58));
|
|
|
|
}
|
|
|
|
if ((iVar8 != iVar1) &&
|
|
|
|
(*(undefined4 *)(*(int *)(param_1 + 0x5c) + iVar8 * 4) =
|
|
|
|
*(undefined4 *)(*(int *)(param_1 + 0x58) + iVar8 * 4),
|
|
|
|
*(int *)(*(int *)(param_1 + 0x5c) + iVar8 * 4) != 0)) {
|
|
|
|
iVar1 = *(int *)(param_1 + 0x50);
|
|
|
|
if ((*(int *)(iVar1 + 0x60) == 0) && (*(double *)(iVar1 + 0x68) == _DAT_00795610)) {
|
|
|
|
uVar7 = 1;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar7 = 0;
|
|
|
|
}
|
|
|
|
uVar10 = *(undefined4 *)(iVar1 + 0x3c);
|
|
|
|
fVar9 = (float10)FUN_00517d40();
|
|
|
|
dVar15 = (double)fVar9;
|
|
|
|
fVar9 = (float10)FUN_00517cf0(dVar15);
|
|
|
|
fVar14 = (float)fVar9;
|
|
|
|
fVar9 = (float10)FUN_00517ca0(fVar14);
|
|
|
|
fVar13 = (float)fVar9;
|
|
|
|
fVar9 = (float10)FUN_00517c50(fVar13);
|
|
|
|
fVar12 = (float)fVar9;
|
|
|
|
fVar9 = (float10)FUN_00517c00(fVar12);
|
|
|
|
fVar11 = (float)fVar9;
|
|
|
|
uVar3 = FUN_00518200(local_30);
|
|
|
|
uVar4 = FUN_005181a0(local_24);
|
|
|
|
uVar5 = FUN_00518140(local_18);
|
|
|
|
uVar6 = FUN_00517fd0(local_c);
|
|
|
|
FUN_0051d460(*(undefined4 *)(param_1 + 4),*(undefined4 *)(param_1 + 8),param_1 + 0xc,
|
|
|
|
*(undefined4 *)(*(int *)(param_1 + 0x5c) + iVar8 * 4),uVar6,uVar10,uVar7,uVar5,
|
|
|
|
uVar4,uVar3,fVar11,fVar12,fVar13,fVar14,dVar15);
|
|
|
|
FUN_005118d0();
|
|
|
|
iVar1 = *(int *)(param_1 + 0x4c);
|
|
|
|
*(int *)(param_1 + 0x70) = *(int *)(param_1 + 0x70) + 1;
|
|
|
|
*(int *)(param_1 + 0x74) = *(int *)(param_1 + 0x74) + 1;
|
|
|
|
*(undefined4 *)(param_1 + 0x80) = *(undefined4 *)(iVar1 + 0x84);
|
|
|
|
*(undefined4 *)(param_1 + 0x84) = *(undefined4 *)(iVar1 + 0x88);
|
|
|
|
*(undefined4 *)(param_1 + 0x88) = *(undefined4 *)(iVar1 + 0x8c);
|
|
|
|
uVar7 = DAT_008eee74;
|
|
|
|
*(undefined4 *)(param_1 + 0x78) = DAT_008eee70;
|
|
|
|
*(undefined4 *)(param_1 + 0x7c) = uVar7;
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051dcb0 at 0x0051DCB0 (size: 548) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
bool __fastcall FUN_0051dcb0(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
int iVar2;
|
|
|
|
char cVar3;
|
|
|
|
undefined4 uVar4;
|
|
|
|
int iVar5;
|
|
|
|
int iVar6;
|
|
|
|
uint uVar7;
|
|
|
|
bool bVar8;
|
|
|
|
|
|
|
|
uVar7 = 0;
|
|
|
|
if ((*(int *)(param_1 + 0x50) == 0) || (*(int *)(param_1 + 0x4c) == 0)) {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
cVar3 = FUN_00510930(*(undefined4 *)(param_1 + 100));
|
|
|
|
if (cVar3 != '\0') {
|
|
|
|
if (*(int *)(param_1 + 0x60) != 0) {
|
|
|
|
*(undefined4 *)(param_1 + 0x60) = 0;
|
|
|
|
FUN_00510470(0);
|
|
|
|
}
|
|
|
|
if (*(int *)(*(int *)(param_1 + 0x50) + 0x58) != 0) {
|
|
|
|
iVar5 = 0;
|
|
|
|
do {
|
|
|
|
iVar1 = *(int *)(*(int *)(param_1 + 0x5c) + uVar7 * 4);
|
|
|
|
if (iVar1 != 0) {
|
|
|
|
iVar2 = *(int *)(param_1 + 0x50);
|
|
|
|
if (*(int *)(iVar2 + 0x40) == 0) {
|
|
|
|
iVar6 = *(int *)(param_1 + 0x54) + 0x18 + iVar5;
|
|
|
|
}
|
|
|
|
else if (*(int *)(param_1 + 8) == -1) {
|
|
|
|
iVar6 = *(int *)(param_1 + 4) + 0x50;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar6 = *(int *)(*(int *)(*(int *)(*(int *)(param_1 + 4) + 0x10) + 0x5c) +
|
|
|
|
*(int *)(param_1 + 8) * 4) + 0x38;
|
|
|
|
}
|
|
|
|
if ((*(int *)(iVar2 + 0x60) == 0) && (*(double *)(iVar2 + 0x68) == _DAT_00795610)) {
|
|
|
|
uVar4 = 1;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar4 = 0;
|
|
|
|
}
|
|
|
|
FUN_0051cdc0(*(undefined4 *)(iVar2 + 0x3c),uVar4,iVar1,iVar6);
|
|
|
|
FUN_0051cd10(uVar7);
|
|
|
|
}
|
|
|
|
uVar7 = uVar7 + 1;
|
|
|
|
iVar5 = iVar5 + 0x98;
|
|
|
|
} while (uVar7 < *(uint *)(*(int *)(param_1 + 0x50) + 0x58));
|
|
|
|
}
|
|
|
|
bVar8 = true;
|
|
|
|
if (*(int *)(param_1 + 0x8c) == 0) {
|
|
|
|
iVar5 = FUN_0051d3e0();
|
|
|
|
if (iVar5 != 0) {
|
|
|
|
FUN_0051db40();
|
|
|
|
}
|
|
|
|
FUN_0051cd60();
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
bVar8 = *(int *)(param_1 + 0x70) != 0;
|
|
|
|
}
|
|
|
|
uVar4 = DAT_008eee74;
|
|
|
|
*(undefined4 *)(param_1 + 0x90) = DAT_008eee70;
|
|
|
|
*(undefined4 *)(param_1 + 0x94) = uVar4;
|
|
|
|
return bVar8;
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x60) == 0) {
|
|
|
|
FUN_00510470(1);
|
|
|
|
*(undefined4 *)(param_1 + 0x60) = 1;
|
|
|
|
}
|
|
|
|
uVar4 = DAT_008eee74;
|
|
|
|
*(undefined4 *)(param_1 + 0x90) = DAT_008eee70;
|
|
|
|
iVar5 = *(int *)(param_1 + 0x50);
|
|
|
|
*(undefined4 *)(param_1 + 0x94) = uVar4;
|
|
|
|
if ((*(int *)(iVar5 + 0x60) == 0) && (*(double *)(iVar5 + 0x68) == _DAT_00795610)) {
|
|
|
|
uVar7 = 0;
|
|
|
|
if (*(int *)(iVar5 + 0x58) != 0) {
|
|
|
|
iVar5 = 0;
|
|
|
|
do {
|
|
|
|
*(ulonglong *)(iVar5 + *(int *)(param_1 + 0x54)) = CONCAT44(DAT_008eee74,DAT_008eee70);
|
|
|
|
uVar7 = uVar7 + 1;
|
|
|
|
iVar5 = iVar5 + 0x98;
|
|
|
|
} while (uVar7 < *(uint *)(*(int *)(param_1 + 0x50) + 0x58));
|
|
|
|
}
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
if (*(int *)(iVar5 + 0x58) != 0) {
|
|
|
|
iVar5 = 0;
|
|
|
|
uVar7 = 0;
|
|
|
|
do {
|
|
|
|
if (*(int *)(*(int *)(param_1 + 0x5c) + uVar7 * 4) != 0) {
|
|
|
|
*(double *)(*(int *)(param_1 + 0x54) + iVar5 + 0x10) =
|
|
|
|
(double)CONCAT44(DAT_008eee74,DAT_008eee70) -
|
|
|
|
*(double *)(*(int *)(param_1 + 0x54) + iVar5);
|
|
|
|
FUN_0051cd10(uVar7);
|
|
|
|
}
|
|
|
|
uVar7 = uVar7 + 1;
|
|
|
|
iVar5 = iVar5 + 0x98;
|
|
|
|
} while (uVar7 < *(uint *)(*(int *)(param_1 + 0x50) + 0x58));
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x8c) != 0) {
|
|
|
|
return *(int *)(param_1 + 0x70) != 0;
|
|
|
|
}
|
|
|
|
iVar5 = FUN_0051d3e0();
|
|
|
|
if (iVar5 != 0) {
|
|
|
|
FUN_0051d3a0();
|
|
|
|
}
|
|
|
|
FUN_0051cd60();
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- thunk_FUN_0051d8e0 at 0x0051DEE0 (size: 5) ---
|
|
|
|
|
|
void __fastcall thunk_FUN_0051d8e0(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
void *pvVar1;
|
|
|
|
int *piVar2;
|
|
|
|
undefined4 uVar3;
|
|
|
|
undefined4 uVar4;
|
|
|
|
uint uVar5;
|
|
|
|
|
|
|
|
if (*(int *)(param_1 + 0x4c) != 0) {
|
|
|
|
FUN_00513f70();
|
|
|
|
FUN_005160a0();
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x58) != 0) {
|
|
|
|
uVar5 = 0;
|
|
|
|
if (*(int *)(*(int *)(param_1 + 0x50) + 0x58) != 0) {
|
|
|
|
do {
|
|
|
|
pvVar1 = *(void **)(*(int *)(param_1 + 0x58) + uVar5 * 4);
|
|
|
|
if (pvVar1 != (void *)0x0) {
|
|
|
|
FUN_0050ed40();
|
|
|
|
operator_delete(pvVar1);
|
|
|
|
}
|
|
|
|
*(undefined4 *)(*(int *)(param_1 + 0x58) + uVar5 * 4) = 0;
|
|
|
|
*(undefined4 *)(*(int *)(param_1 + 0x5c) + uVar5 * 4) = 0;
|
|
|
|
uVar5 = uVar5 + 1;
|
|
|
|
} while (uVar5 < *(uint *)(*(int *)(param_1 + 0x50) + 0x58));
|
|
|
|
}
|
|
|
|
operator_delete__(*(void **)(param_1 + 0x58));
|
|
|
|
*(undefined4 *)(param_1 + 0x58) = 0;
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x54) != 0) {
|
|
|
|
operator_delete__((void *)(*(int *)(param_1 + 0x54) + -4));
|
|
|
|
*(undefined4 *)(param_1 + 0x54) = 0;
|
|
|
|
}
|
|
|
|
piVar2 = *(int **)(param_1 + 0x50);
|
|
|
|
if (piVar2 != (int *)0x0) {
|
|
|
|
if (piVar2[10] != DAT_0084527c) {
|
|
|
|
(**(code **)(*piVar2 + 0x14))();
|
|
|
|
}
|
|
|
|
*(undefined4 *)(param_1 + 0x50) = 0;
|
|
|
|
}
|
|
|
|
if (*(undefined4 **)(param_1 + 0x4c) != (undefined4 *)0x0) {
|
|
|
|
(**(code **)**(undefined4 **)(param_1 + 0x4c))(1);
|
|
|
|
*(undefined4 *)(param_1 + 0x4c) = 0;
|
|
|
|
}
|
|
|
|
*(undefined4 *)(param_1 + 0x5c) = 0;
|
|
|
|
uVar4 = DAT_008eee74;
|
|
|
|
uVar3 = DAT_008eee70;
|
|
|
|
*(undefined4 *)(param_1 + 0x70) = 0;
|
|
|
|
*(undefined4 *)(param_1 + 0x90) = uVar3;
|
|
|
|
*(undefined4 *)(param_1 + 0x94) = uVar4;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051def0 at 0x0051DEF0 (size: 63) ---
|
|
|
|
|
|
undefined4 FUN_0051def0(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 uVar1;
|
|
|
|
int iVar2;
|
|
|
|
|
|
|
|
if (param_1 != 0) {
|
|
|
|
uVar1 = FUN_004220b0(param_1,0x2a);
|
|
|
|
iVar2 = FUN_00415430(uVar1);
|
|
|
|
if (iVar2 != 0) {
|
|
|
|
uVar1 = FUN_0051d9c0(iVar2);
|
|
|
|
return uVar1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051df30 at 0x0051DF30 (size: 59) ---
|
|
|
|
|
|
undefined4 __fastcall FUN_0051df30(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 uVar1;
|
|
|
|
int iVar2;
|
|
|
|
|
|
|
|
uVar1 = DAT_008379ac;
|
|
|
|
*(undefined4 *)(param_1 + 0x68) = DAT_008379a8;
|
|
|
|
*(undefined4 *)(param_1 + 0x6c) = uVar1;
|
|
|
|
iVar2 = 0;
|
|
|
|
if (0 < *(int *)(*(int *)(param_1 + 0x50) + 0x5c)) {
|
|
|
|
do {
|
|
|
|
FUN_0051db40();
|
|
|
|
iVar2 = iVar2 + 1;
|
|
|
|
} while (iVar2 < *(int *)(*(int *)(param_1 + 0x50) + 0x5c));
|
|
|
|
}
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051df70 at 0x0051DF70 (size: 4) ---
|
|
|
|
|
|
undefined4 __fastcall FUN_0051df70(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
return *(undefined4 *)(param_1 + 0x10);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051df80 at 0x0051DF80 (size: 15) ---
|
|
|
|
|
|
undefined2 __thiscall FUN_0051df80(int param_1,int param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
return *(undefined2 *)(param_1 + 0xc4 + param_2 * 2);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051df90 at 0x0051DF90 (size: 7) ---
|
|
|
|
|
|
undefined4 __fastcall FUN_0051df90(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
return *(undefined4 *)(param_1 + 0xa4);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051dfa0 at 0x0051DFA0 (size: 7) ---
|
|
|
|
|
|
undefined4 __fastcall FUN_0051dfa0(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
return *(undefined4 *)(param_1 + 0xa8);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051dfb0 at 0x0051DFB0 (size: 7) ---
|
|
|
|
|
|
undefined4 __fastcall FUN_0051dfb0(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
return *(undefined4 *)(param_1 + 0x98);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051dfc0 at 0x0051DFC0 (size: 16) ---
|
|
|
|
|
|
undefined4 __thiscall FUN_0051dfc0(int param_1,int param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
return *(undefined4 *)(*(int *)(param_1 + 0x9c) + param_2 * 4);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051dfd0 at 0x0051DFD0 (size: 16) ---
|
|
|
|
|
|
undefined4 __thiscall FUN_0051dfd0(int param_1,int param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
return *(undefined4 *)(*(int *)(param_1 + 0xa0) + param_2 * 4);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051dfe0 at 0x0051DFE0 (size: 252) ---
|
|
|
|
|
|
undefined4 * __fastcall FUN_0051dfe0(undefined4 *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 uVar1;
|
|
|
|
undefined4 uVar2;
|
|
|
|
|
|
|
|
*param_1 = &PTR_FUN_007c8044;
|
|
|
|
param_1[1] = 0;
|
|
|
|
param_1[2] = 0;
|
|
|
|
param_1[3] = 0;
|
|
|
|
param_1[4] = 0;
|
|
|
|
param_1[5] = 0;
|
|
|
|
param_1[6] = &PTR_LAB_00797910;
|
|
|
|
param_1[7] = 0;
|
|
|
|
param_1[8] = 0x3f800000;
|
|
|
|
param_1[9] = 0;
|
|
|
|
param_1[10] = 0;
|
|
|
|
param_1[0xb] = 0;
|
|
|
|
param_1[0x15] = 0;
|
|
|
|
param_1[0x16] = 0;
|
|
|
|
param_1[0x17] = 0;
|
|
|
|
FUN_00535b30();
|
|
|
|
uVar2 = DAT_007c8028;
|
|
|
|
uVar1 = DAT_007c8024;
|
|
|
|
param_1[0x1a] = DAT_007c8020;
|
|
|
|
param_1[0x18] = &DAT_00400c08;
|
|
|
|
param_1[0x19] = 0x3f800000;
|
|
|
|
param_1[0x1b] = uVar1;
|
|
|
|
param_1[0x1c] = uVar2;
|
|
|
|
param_1[0x1d] = 0;
|
|
|
|
param_1[0x1e] = 0;
|
|
|
|
param_1[0x1f] = 0;
|
|
|
|
param_1[0x20] = 0;
|
|
|
|
param_1[0x21] = 0;
|
|
|
|
param_1[0x22] = 0;
|
|
|
|
param_1[0x23] = 0;
|
|
|
|
param_1[0x24] = 0;
|
|
|
|
param_1[0x25] = 0;
|
|
|
|
param_1[0x26] = 0;
|
|
|
|
param_1[0x27] = 0;
|
|
|
|
param_1[0x28] = 0;
|
|
|
|
param_1[0x29] = 0;
|
|
|
|
param_1[0x2b] = 0;
|
|
|
|
param_1[0x2c] = 0;
|
|
|
|
param_1[0x2d] = 0;
|
|
|
|
param_1[0x2e] = 0;
|
|
|
|
param_1[0x2f] = 0;
|
|
|
|
param_1[0x30] = 0;
|
|
|
|
param_1[0x31] = 0;
|
|
|
|
param_1[0x32] = 0;
|
|
|
|
param_1[0x33] = 0;
|
|
|
|
param_1[0x34] = 0;
|
|
|
|
*(undefined2 *)(param_1 + 0x35) = 0;
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051e0e0 at 0x0051E0E0 (size: 362) ---
|
|
|
|
|
|
void __fastcall FUN_0051e0e0(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
if (*(void **)(param_1 + 0x9c) != (void *)0x0) {
|
|
|
|
operator_delete__(*(void **)(param_1 + 0x9c));
|
|
|
|
*(undefined4 *)(param_1 + 0x9c) = 0;
|
|
|
|
}
|
|
|
|
if (*(void **)(param_1 + 0xa0) != (void *)0x0) {
|
|
|
|
operator_delete__(*(void **)(param_1 + 0xa0));
|
|
|
|
*(undefined4 *)(param_1 + 0xa0) = 0;
|
|
|
|
}
|
|
|
|
*(undefined4 *)(param_1 + 0x98) = 0;
|
|
|
|
operator_delete__(*(void **)(param_1 + 8));
|
|
|
|
*(undefined4 *)(param_1 + 8) = 0;
|
|
|
|
*(undefined4 *)(param_1 + 0xc) = 0;
|
|
|
|
*(undefined4 *)(param_1 + 0x14) = 0;
|
|
|
|
*(undefined4 *)(param_1 + 0x1c) = 0;
|
|
|
|
*(undefined4 *)(param_1 + 0x98) = 0;
|
|
|
|
*(undefined4 *)(param_1 + 0x9c) = 0;
|
|
|
|
*(undefined4 *)(param_1 + 0xa0) = 0;
|
|
|
|
*(undefined4 *)(param_1 + 0xa4) = 0;
|
|
|
|
*(undefined **)(param_1 + 0x60) = &DAT_00400c08;
|
|
|
|
*(undefined4 *)(param_1 + 0xac) = DAT_008452d4;
|
|
|
|
*(undefined4 *)(param_1 + 0xb0) = DAT_008452d4;
|
|
|
|
*(undefined4 *)(param_1 + 0xb4) = DAT_008452d4;
|
|
|
|
*(undefined4 *)(param_1 + 0xc0) = DAT_008452d4;
|
|
|
|
*(undefined4 *)(param_1 + 0x74) = 0;
|
|
|
|
*(undefined4 *)(param_1 + 0x78) = 0;
|
|
|
|
*(undefined4 *)(param_1 + 0x7c) = 0;
|
|
|
|
*(undefined4 *)(param_1 + 0x80) = 0;
|
|
|
|
*(undefined4 *)(param_1 + 0x84) = 0;
|
|
|
|
*(undefined4 *)(param_1 + 0x88) = 0;
|
|
|
|
*(undefined4 *)(param_1 + 0x8c) = 0;
|
|
|
|
*(undefined4 *)(param_1 + 0x90) = 0;
|
|
|
|
*(undefined4 *)(param_1 + 0xb8) = 0;
|
|
|
|
*(undefined4 *)(param_1 + 0xbc) = 0;
|
|
|
|
*(undefined4 *)(param_1 + 100) = 0x3f800000;
|
|
|
|
*(undefined4 *)(param_1 + 0x94) = 0;
|
|
|
|
*(undefined4 *)(param_1 + 0xc4) = 0;
|
|
|
|
*(undefined4 *)(param_1 + 200) = 0;
|
|
|
|
*(undefined4 *)(param_1 + 0xcc) = 0;
|
|
|
|
*(undefined4 *)(param_1 + 0xd0) = 0;
|
|
|
|
*(undefined2 *)(param_1 + 0xd4) = 0;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051e250 at 0x0051E250 (size: 29) ---
|
|
|
|
|
|
void __fastcall FUN_0051e250(undefined4 *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
*param_1 = &PTR_FUN_007c8044;
|
|
|
|
FUN_0051e0e0();
|
|
|
|
param_1[6] = &PTR_FUN_0079385c;
|
|
|
|
*param_1 = &PTR_FUN_0079385c;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051e270 at 0x0051E270 (size: 15) ---
|
|
|
|
|
|
void __thiscall FUN_0051e270(int param_1,undefined4 *param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
*param_2 = *(undefined4 *)(param_1 + 0xac);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051e280 at 0x0051E280 (size: 15) ---
|
|
|
|
|
|
void __thiscall FUN_0051e280(int param_1,undefined4 *param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
*param_2 = *(undefined4 *)(param_1 + 0xc0);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051e290 at 0x0051E290 (size: 49) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_0051e290(undefined4 *param_1,byte param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
*param_1 = &PTR_FUN_007c8044;
|
|
|
|
FUN_0051e0e0();
|
|
|
|
param_1[6] = &PTR_FUN_0079385c;
|
|
|
|
*param_1 = &PTR_FUN_0079385c;
|
|
|
|
if ((param_2 & 1) != 0) {
|
|
|
|
operator_delete(param_1);
|
|
|
|
}
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051e8e0 at 0x0051E8E0 (size: 1212) ---
|
|
|
|
|
|
undefined4 __thiscall FUN_0051e8e0(int param_1,uint *param_2,uint param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 *puVar1;
|
|
|
|
undefined4 uVar2;
|
|
|
|
uint uVar3;
|
|
|
|
uint uVar4;
|
|
|
|
undefined4 *puVar5;
|
|
|
|
int iVar6;
|
|
|
|
undefined4 local_40;
|
|
|
|
undefined4 local_3c;
|
|
|
|
undefined4 local_38;
|
|
|
|
undefined4 local_34;
|
|
|
|
undefined4 local_c;
|
|
|
|
undefined4 local_8;
|
|
|
|
undefined4 local_4;
|
|
|
|
|
|
|
|
FUN_0051e0e0();
|
|
|
|
*(undefined4 *)(param_1 + 4) = *(undefined4 *)*param_2;
|
|
|
|
uVar4 = *param_2;
|
|
|
|
*param_2 = uVar4 + 4;
|
|
|
|
*(undefined4 *)(param_1 + 0x60) = *(undefined4 *)(uVar4 + 4);
|
|
|
|
uVar4 = *param_2;
|
|
|
|
*param_2 = uVar4 + 4;
|
|
|
|
if ((*(uint *)(param_1 + 4) & 0x10000) == 0) {
|
|
|
|
*(undefined4 *)(param_1 + 8) = 0;
|
|
|
|
if ((*(uint *)(param_1 + 4) & 0x20000) == 0) {
|
|
|
|
*(undefined4 *)(param_1 + 0x14) = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*(undefined4 *)(param_1 + 0x14) = *(undefined4 *)*param_2;
|
|
|
|
*param_2 = *param_2 + 4;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*(undefined4 *)(param_1 + 0xc) = *(undefined4 *)(uVar4 + 4);
|
|
|
|
*param_2 = *param_2 + 4;
|
|
|
|
if (*(int *)(param_1 + 0xc) != 0) {
|
|
|
|
puVar1 = (undefined4 *)thunk_FUN_005df0f5(*(int *)(param_1 + 0xc));
|
|
|
|
uVar4 = *(uint *)(param_1 + 0xc);
|
|
|
|
*(undefined4 **)(param_1 + 8) = puVar1;
|
|
|
|
puVar5 = (undefined4 *)*param_2;
|
|
|
|
for (uVar3 = uVar4 >> 2; uVar3 != 0; uVar3 = uVar3 - 1) {
|
|
|
|
*puVar1 = *puVar5;
|
|
|
|
puVar5 = puVar5 + 1;
|
|
|
|
puVar1 = puVar1 + 1;
|
|
|
|
}
|
|
|
|
for (uVar4 = uVar4 & 3; uVar4 != 0; uVar4 = uVar4 - 1) {
|
|
|
|
*(undefined1 *)puVar1 = *(undefined1 *)puVar5;
|
|
|
|
puVar5 = (undefined4 *)((int)puVar5 + 1);
|
|
|
|
puVar1 = (undefined4 *)((int)puVar1 + 1);
|
|
|
|
}
|
|
|
|
puVar5 = (undefined4 *)(*param_2 + *(int *)(param_1 + 0xc));
|
|
|
|
*param_2 = (uint)puVar5;
|
|
|
|
*(undefined4 *)(param_1 + 0x10) = *puVar5;
|
|
|
|
*param_2 = *param_2 + 4;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if ((char)((uint)*(undefined4 *)(param_1 + 4) >> 8) < '\0') {
|
|
|
|
(**(code **)(*(int *)(param_1 + 0x18) + 0x10))(param_2,param_3);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
local_40 = 0x3f800000;
|
|
|
|
local_3c = 0;
|
|
|
|
local_38 = 0;
|
|
|
|
local_34 = 0;
|
|
|
|
local_c = 0;
|
|
|
|
local_8 = 0;
|
|
|
|
local_4 = 0;
|
|
|
|
FUN_00535b30();
|
|
|
|
*(undefined4 *)(param_1 + 0x1c) = 0;
|
|
|
|
FUN_00425f10(&local_40);
|
|
|
|
}
|
|
|
|
if ((*(byte *)(param_1 + 4) & 2) == 0) {
|
|
|
|
*(undefined4 *)(param_1 + 0xac) = DAT_008452d4;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar2 = *(undefined4 *)*param_2;
|
|
|
|
*param_2 = (uint)((undefined4 *)*param_2 + 1);
|
|
|
|
*(undefined4 *)(param_1 + 0xac) = uVar2;
|
|
|
|
}
|
|
|
|
if ((*(uint *)(param_1 + 4) & 0x800) == 0) {
|
|
|
|
*(undefined4 *)(param_1 + 0xb0) = DAT_008452d4;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar2 = *(undefined4 *)*param_2;
|
|
|
|
*param_2 = (uint)((undefined4 *)*param_2 + 1);
|
|
|
|
*(undefined4 *)(param_1 + 0xb0) = uVar2;
|
|
|
|
}
|
|
|
|
uVar2 = DAT_008452d4;
|
|
|
|
if ((*(uint *)(param_1 + 4) & 0x1000) != 0) {
|
|
|
|
uVar2 = *(undefined4 *)*param_2;
|
|
|
|
*param_2 = (uint)((undefined4 *)*param_2 + 1);
|
|
|
|
}
|
|
|
|
*(undefined4 *)(param_1 + 0xb4) = uVar2;
|
|
|
|
if ((*(byte *)(param_1 + 4) & 1) == 0) {
|
|
|
|
*(undefined4 *)(param_1 + 0xc0) = DAT_008452d4;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar2 = *(undefined4 *)*param_2;
|
|
|
|
*param_2 = (uint)((undefined4 *)*param_2 + 1);
|
|
|
|
*(undefined4 *)(param_1 + 0xc0) = uVar2;
|
|
|
|
}
|
|
|
|
if ((*(byte *)(param_1 + 4) & 0x20) == 0) {
|
|
|
|
*(undefined4 *)(param_1 + 0xa4) = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*(undefined4 *)(param_1 + 0xa4) = *(undefined4 *)*param_2;
|
|
|
|
uVar4 = *param_2;
|
|
|
|
*param_2 = uVar4 + 4;
|
|
|
|
*(undefined4 *)(param_1 + 0xa8) = *(undefined4 *)(uVar4 + 4);
|
|
|
|
*param_2 = *param_2 + 4;
|
|
|
|
}
|
|
|
|
if ((*(byte *)(param_1 + 4) & 0x40) == 0) {
|
|
|
|
*(undefined4 *)(param_1 + 0x9c) = 0;
|
|
|
|
*(undefined4 *)(param_1 + 0xa0) = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*(undefined4 *)(param_1 + 0x98) = *(undefined4 *)*param_2;
|
|
|
|
*param_2 = *param_2 + 4;
|
|
|
|
uVar2 = thunk_FUN_005df0f5(*(int *)(param_1 + 0x98) << 2);
|
|
|
|
*(undefined4 *)(param_1 + 0x9c) = uVar2;
|
|
|
|
uVar2 = thunk_FUN_005df0f5(*(int *)(param_1 + 0x98) << 2);
|
|
|
|
*(undefined4 *)(param_1 + 0xa0) = uVar2;
|
|
|
|
uVar4 = 0;
|
|
|
|
if (*(int *)(param_1 + 0x98) != 0) {
|
|
|
|
do {
|
|
|
|
*(undefined4 *)(*(int *)(param_1 + 0x9c) + uVar4 * 4) = *(undefined4 *)*param_2;
|
|
|
|
uVar3 = *param_2;
|
|
|
|
*param_2 = uVar3 + 4;
|
|
|
|
*(undefined4 *)(*(int *)(param_1 + 0xa0) + uVar4 * 4) = *(undefined4 *)(uVar3 + 4);
|
|
|
|
*param_2 = *param_2 + 4;
|
|
|
|
uVar4 = uVar4 + 1;
|
|
|
|
} while (uVar4 < *(uint *)(param_1 + 0x98));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (*(char *)(param_1 + 4) < '\0') {
|
|
|
|
*(undefined4 *)(param_1 + 100) = *(undefined4 *)*param_2;
|
|
|
|
*param_2 = *param_2 + 4;
|
|
|
|
}
|
|
|
|
if ((*(uint *)(param_1 + 4) & 0x100) != 0) {
|
|
|
|
*(undefined4 *)(param_1 + 0x68) = *(undefined4 *)*param_2;
|
|
|
|
*param_2 = *param_2 + 4;
|
|
|
|
}
|
|
|
|
if ((*(uint *)(param_1 + 4) & 0x200) != 0) {
|
|
|
|
*(undefined4 *)(param_1 + 0x6c) = *(undefined4 *)*param_2;
|
|
|
|
*param_2 = *param_2 + 4;
|
|
|
|
}
|
|
|
|
if ((*(uint *)(param_1 + 4) & 0x40000) != 0) {
|
|
|
|
*(undefined4 *)(param_1 + 0x70) = *(undefined4 *)*param_2;
|
|
|
|
*param_2 = *param_2 + 4;
|
|
|
|
}
|
|
|
|
if (((*(byte *)(param_1 + 4) & 4) != 0) && (0xb < param_3)) {
|
|
|
|
*(undefined4 *)(param_1 + 0x74) = *(undefined4 *)*param_2;
|
|
|
|
uVar4 = *param_2;
|
|
|
|
*param_2 = uVar4 + 4;
|
|
|
|
*(undefined4 *)(param_1 + 0x78) = *(undefined4 *)(uVar4 + 4);
|
|
|
|
uVar4 = *param_2;
|
|
|
|
*param_2 = uVar4 + 4;
|
|
|
|
*(undefined4 *)(param_1 + 0x7c) = *(undefined4 *)(uVar4 + 4);
|
|
|
|
*param_2 = *param_2 + 4;
|
|
|
|
}
|
|
|
|
if (((*(byte *)(param_1 + 4) & 8) != 0) && (0xb < param_3)) {
|
|
|
|
*(undefined4 *)(param_1 + 0x80) = *(undefined4 *)*param_2;
|
|
|
|
uVar4 = *param_2;
|
|
|
|
*param_2 = uVar4 + 4;
|
|
|
|
*(undefined4 *)(param_1 + 0x84) = *(undefined4 *)(uVar4 + 4);
|
|
|
|
uVar4 = *param_2;
|
|
|
|
*param_2 = uVar4 + 4;
|
|
|
|
*(undefined4 *)(param_1 + 0x88) = *(undefined4 *)(uVar4 + 4);
|
|
|
|
*param_2 = *param_2 + 4;
|
|
|
|
}
|
|
|
|
if (((*(byte *)(param_1 + 4) & 0x10) != 0) && (0xb < param_3)) {
|
|
|
|
*(undefined4 *)(param_1 + 0x8c) = *(undefined4 *)*param_2;
|
|
|
|
uVar4 = *param_2;
|
|
|
|
*param_2 = uVar4 + 4;
|
|
|
|
*(undefined4 *)(param_1 + 0x90) = *(undefined4 *)(uVar4 + 4);
|
|
|
|
uVar4 = *param_2;
|
|
|
|
*param_2 = uVar4 + 4;
|
|
|
|
*(undefined4 *)(param_1 + 0x94) = *(undefined4 *)(uVar4 + 4);
|
|
|
|
*param_2 = *param_2 + 4;
|
|
|
|
}
|
|
|
|
if ((*(uint *)(param_1 + 4) & 0x2000) == 0) {
|
|
|
|
*(undefined4 *)(param_1 + 0xb8) = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*(undefined4 *)(param_1 + 0xb8) = *(undefined4 *)*param_2;
|
|
|
|
*param_2 = *param_2 + 4;
|
|
|
|
}
|
|
|
|
if ((*(uint *)(param_1 + 4) & 0x4000) == 0) {
|
|
|
|
*(undefined4 *)(param_1 + 0xbc) = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*(undefined4 *)(param_1 + 0xbc) = *(undefined4 *)*param_2;
|
|
|
|
*param_2 = *param_2 + 4;
|
|
|
|
}
|
|
|
|
*(undefined2 *)(param_1 + 0xc4) = *(undefined2 *)*param_2;
|
|
|
|
uVar4 = *param_2;
|
|
|
|
*param_2 = uVar4 + 2;
|
|
|
|
*(undefined2 *)(param_1 + 0xc6) = *(undefined2 *)(uVar4 + 2);
|
|
|
|
uVar4 = *param_2;
|
|
|
|
*param_2 = uVar4 + 2;
|
|
|
|
*(undefined2 *)(param_1 + 200) = *(undefined2 *)(uVar4 + 2);
|
|
|
|
uVar4 = *param_2;
|
|
|
|
*param_2 = uVar4 + 2;
|
|
|
|
*(undefined2 *)(param_1 + 0xca) = *(undefined2 *)(uVar4 + 2);
|
|
|
|
uVar4 = *param_2;
|
|
|
|
*param_2 = uVar4 + 2;
|
|
|
|
*(undefined2 *)(param_1 + 0xcc) = *(undefined2 *)(uVar4 + 2);
|
|
|
|
uVar4 = *param_2;
|
|
|
|
*param_2 = uVar4 + 2;
|
|
|
|
*(undefined2 *)(param_1 + 0xce) = *(undefined2 *)(uVar4 + 2);
|
|
|
|
uVar4 = *param_2;
|
|
|
|
*param_2 = uVar4 + 2;
|
|
|
|
*(undefined2 *)(param_1 + 0xd0) = *(undefined2 *)(uVar4 + 2);
|
|
|
|
uVar4 = *param_2;
|
|
|
|
*param_2 = uVar4 + 2;
|
|
|
|
*(undefined2 *)(param_1 + 0xd2) = *(undefined2 *)(uVar4 + 2);
|
|
|
|
uVar4 = *param_2;
|
|
|
|
*param_2 = uVar4 + 2;
|
|
|
|
*(undefined2 *)(param_1 + 0xd4) = *(undefined2 *)(uVar4 + 2);
|
|
|
|
uVar4 = *param_2;
|
|
|
|
*param_2 = uVar4 + 2;
|
|
|
|
uVar4 = uVar4 + 2 & 0x80000003;
|
|
|
|
if ((int)uVar4 < 0) {
|
|
|
|
uVar4 = (uVar4 - 1 | 0xfffffffc) + 1;
|
|
|
|
}
|
|
|
|
if (uVar4 != 0) {
|
|
|
|
for (iVar6 = 4 - uVar4; iVar6 != 0; iVar6 = iVar6 + -1) {
|
|
|
|
*(undefined1 *)*param_2 = 0;
|
|
|
|
*param_2 = *param_2 + 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051eda0 at 0x0051EDA0 (size: 46) ---
|
|
|
|
|
|
undefined4 * __fastcall FUN_0051eda0(undefined4 *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_00415460(DAT_00845358);
|
|
|
|
param_1[0xc] = &PTR_FUN_0079385c;
|
|
|
|
param_1[0xe] = 0;
|
|
|
|
param_1[0xf] = 0;
|
|
|
|
*param_1 = &PTR_LAB_007c80a8;
|
|
|
|
param_1[0xc] = &PTR_LAB_007c8094;
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051ede0 at 0x0051EDE0 (size: 26) ---
|
|
|
|
|
|
float10 __fastcall FUN_0051ede0(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
if (2 < *(uint *)(param_1 + 0x38)) {
|
|
|
|
return (float10)*(float *)(*(int *)(param_1 + 0x3c) + -0x18 + *(uint *)(param_1 + 0x38) * 0x14);
|
|
|
|
}
|
|
|
|
return (float10)*(float *)(*(int *)(param_1 + 0x3c) + 0x10);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051ee20 at 0x0051EE20 (size: 38) ---
|
|
|
|
|
|
void __fastcall FUN_0051ee20(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
if (*(int *)(param_1 + 0x3c) != 0) {
|
|
|
|
operator_delete__((void *)(*(int *)(param_1 + 0x3c) + -4));
|
|
|
|
*(undefined4 *)(param_1 + 0x3c) = 0;
|
|
|
|
}
|
|
|
|
*(undefined4 *)(param_1 + 0x38) = 0;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051ef10 at 0x0051EF10 (size: 168) ---
|
|
|
|
|
|
undefined4 __thiscall FUN_0051ef10(int param_1,int *param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 uVar1;
|
|
|
|
int iVar2;
|
|
|
|
int *piVar3;
|
|
|
|
int iVar4;
|
|
|
|
uint uVar5;
|
|
|
|
int iVar6;
|
|
|
|
|
|
|
|
(**(code **)(*(int *)(param_1 + -0x30) + 0x3c))();
|
|
|
|
*(undefined4 *)(param_1 + 8) = *(undefined4 *)*param_2;
|
|
|
|
*param_2 = *param_2 + 4;
|
|
|
|
iVar6 = *(int *)(param_1 + 8);
|
|
|
|
piVar3 = (int *)thunk_FUN_005df0f5(iVar6 * 0x14 + 4);
|
|
|
|
if (piVar3 == (int *)0x0) {
|
|
|
|
piVar3 = (int *)0x0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*piVar3 = iVar6;
|
|
|
|
piVar3 = piVar3 + 1;
|
|
|
|
}
|
|
|
|
*(int **)(param_1 + 0xc) = piVar3;
|
|
|
|
uVar5 = 0;
|
|
|
|
if (*(int *)(param_1 + 8) != 0) {
|
|
|
|
iVar6 = 0;
|
|
|
|
do {
|
|
|
|
uVar1 = *(undefined4 *)*param_2;
|
|
|
|
iVar4 = *(int *)(param_1 + 0xc);
|
|
|
|
*param_2 = (int)((undefined4 *)*param_2 + 1);
|
|
|
|
*(undefined4 *)(iVar4 + iVar6) = uVar1;
|
|
|
|
iVar4 = iVar4 + iVar6;
|
|
|
|
*(undefined4 *)(iVar4 + 4) = *(undefined4 *)*param_2;
|
|
|
|
iVar2 = *param_2;
|
|
|
|
*param_2 = iVar2 + 4;
|
|
|
|
*(undefined4 *)(iVar4 + 8) = *(undefined4 *)(iVar2 + 4);
|
|
|
|
iVar2 = *param_2;
|
|
|
|
*param_2 = iVar2 + 4;
|
|
|
|
*(undefined4 *)(iVar4 + 0xc) = *(undefined4 *)(iVar2 + 4);
|
|
|
|
iVar2 = *param_2;
|
|
|
|
*param_2 = iVar2 + 4;
|
|
|
|
*(undefined4 *)(iVar4 + 0x10) = *(undefined4 *)(iVar2 + 4);
|
|
|
|
*param_2 = *param_2 + 4;
|
|
|
|
uVar5 = uVar5 + 1;
|
|
|
|
iVar6 = iVar6 + 0x14;
|
|
|
|
} while (uVar5 < *(uint *)(param_1 + 8));
|
|
|
|
}
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051efc0 at 0x0051EFC0 (size: 372) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void __thiscall FUN_0051efc0(int param_1,float param_2,uint *param_3,undefined4 *param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
uint uVar1;
|
|
|
|
float *pfVar2;
|
|
|
|
uint uVar3;
|
|
|
|
float *pfVar4;
|
|
|
|
float local_4;
|
|
|
|
|
|
|
|
pfVar2 = &local_4;
|
|
|
|
if (DAT_008452f4 != 0) {
|
|
|
|
*param_3 = 0;
|
|
|
|
*param_4 = *(undefined4 *)(*(int *)(param_1 + 0x3c) + 4);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
if (DAT_0081fc7c != 0xffffffff) {
|
|
|
|
if ((int)DAT_0081fc7c < *(int *)(param_1 + 0x38)) {
|
|
|
|
*param_3 = DAT_0081fc7c;
|
|
|
|
*param_4 = *(undefined4 *)(*(int *)(param_1 + 0x3c) + 4 + DAT_0081fc7c * 0x14);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
*param_3 = *(int *)(param_1 + 0x38) - 1;
|
|
|
|
*param_4 = *(undefined4 *)(*(int *)(param_1 + 0x3c) + -0x10 + *(int *)(param_1 + 0x38) * 0x14);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
local_4 = 0.0;
|
|
|
|
if (DAT_00796344 <= ABS(param_2) - _DAT_0081fc68) {
|
|
|
|
pfVar2 = ¶m_2;
|
|
|
|
}
|
|
|
|
if (DAT_0081fc78 == '\0') {
|
|
|
|
local_4 = DAT_00867318;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
local_4 = DAT_0086731c;
|
|
|
|
}
|
|
|
|
uVar1 = *(uint *)(param_1 + 0x38);
|
|
|
|
uVar3 = 0;
|
|
|
|
if (DAT_00796344 <= local_4) {
|
|
|
|
if (uVar1 != 0) {
|
|
|
|
pfVar4 = (float *)(*(int *)(param_1 + 0x3c) + 0x10);
|
|
|
|
do {
|
|
|
|
if (*pfVar2 < pfVar4[-1] - (pfVar4[-1] - *pfVar4) * local_4) goto LAB_0051f0c6;
|
|
|
|
uVar3 = uVar3 + 1;
|
|
|
|
pfVar4 = pfVar4 + 5;
|
|
|
|
} while (uVar3 < uVar1);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if (uVar1 != 0) {
|
|
|
|
pfVar4 = (float *)(*(int *)(param_1 + 0x3c) + 0xc);
|
|
|
|
do {
|
|
|
|
if (*pfVar2 < (*pfVar4 - pfVar4[-1]) * local_4 + *pfVar4) {
|
|
|
|
LAB_0051f0c6:
|
|
|
|
*param_3 = uVar3;
|
|
|
|
*param_4 = *(undefined4 *)(*(int *)(param_1 + 0x3c) + 4 + uVar3 * 0x14);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
uVar3 = uVar3 + 1;
|
|
|
|
pfVar4 = pfVar4 + 5;
|
|
|
|
} while (uVar3 < uVar1);
|
|
|
|
}
|
|
|
|
*param_3 = uVar1 - 1;
|
|
|
|
*param_4 = *(undefined4 *)(*(int *)(param_1 + 0x3c) + -0x10 + *(int *)(param_1 + 0x38) * 0x14);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051f190 at 0x0051F190 (size: 85) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_0051f190(undefined4 *param_1,byte param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
*param_1 = &PTR_LAB_007c80a8;
|
|
|
|
param_1[0xc] = &PTR_LAB_007c8094;
|
|
|
|
if (param_1[0xf] != 0) {
|
|
|
|
operator_delete__((void *)(param_1[0xf] + -4));
|
|
|
|
param_1[0xf] = 0;
|
|
|
|
}
|
|
|
|
param_1[0xe] = 0;
|
|
|
|
param_1[0xc] = &PTR_FUN_0079385c;
|
|
|
|
FUN_004154b0();
|
|
|
|
if ((param_2 & 1) != 0) {
|
|
|
|
operator_delete(param_1);
|
|
|
|
}
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051f1f0 at 0x0051F1F0 (size: 90) ---
|
|
|
|
|
|
void __thiscall FUN_0051f1f0(int param_1,uint param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
switch(param_2) {
|
|
|
|
case 0x6500000d:
|
|
|
|
case 0x6500000e:
|
|
|
|
*(undefined4 *)(param_1 + 0x2c) = 0;
|
|
|
|
return;
|
|
|
|
case 0x6500000f:
|
|
|
|
case 0x65000010:
|
|
|
|
*(undefined4 *)(param_1 + 0x20) = 0;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
if ((param_2 & 0x40000000) == 0) {
|
|
|
|
if (((int)param_2 < 0) && (param_2 == *(uint *)(param_1 + 0x10))) {
|
|
|
|
*(undefined4 *)(param_1 + 0x10) = 0x8000003d;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if (param_2 == *(uint *)(param_1 + 0x14)) {
|
|
|
|
*(undefined4 *)(param_1 + 0x14) = 0x41000003;
|
|
|
|
*(undefined4 *)(param_1 + 0x1c) = 0x3f800000;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051f260 at 0x0051F260 (size: 49) ---
|
|
|
|
|
|
void __thiscall FUN_0051f260(int param_1,int param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
*(undefined4 *)(param_1 + 4) = *(undefined4 *)(param_2 + 4);
|
|
|
|
*(undefined4 *)(param_1 + 8) = *(undefined4 *)(param_2 + 8);
|
|
|
|
*(undefined4 *)(param_1 + 0xc) = *(undefined4 *)(param_2 + 0xc);
|
|
|
|
*(undefined4 *)(param_1 + 0x10) = *(undefined4 *)(param_2 + 0x10);
|
|
|
|
*(undefined4 *)(param_1 + 0x14) = *(undefined4 *)(param_2 + 0x14);
|
|
|
|
*(undefined4 *)(param_1 + 0x18) = *(undefined4 *)(param_2 + 0x18);
|
|
|
|
*(undefined4 *)(param_1 + 0x1c) = *(undefined4 *)(param_2 + 0x1c);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051f2a0 at 0x0051F2A0 (size: 87) ---
|
|
|
|
|
|
void __thiscall FUN_0051f2a0(int param_1,uint param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
if (param_2 == 0x6500000d) {
|
|
|
|
*(undefined4 *)(param_1 + 0x18) = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
if (param_2 == 0x6500000f) {
|
|
|
|
*(undefined4 *)(param_1 + 0x10) = 0;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
if ((param_2 & 0x40000000) == 0) {
|
|
|
|
if (((int)param_2 < 0) && (param_2 == *(uint *)(param_1 + 4))) {
|
|
|
|
*(undefined4 *)(param_1 + 4) = 0x8000003d;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if (param_2 == *(uint *)(param_1 + 8)) {
|
|
|
|
*(undefined4 *)(param_1 + 8) = 0x41000003;
|
|
|
|
*(undefined4 *)(param_1 + 0xc) = 0x3f800000;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051f300 at 0x0051F300 (size: 67) ---
|
|
|
|
|
|
void __fastcall FUN_0051f300(undefined4 *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
*param_1 = &PTR_FUN_007c8804;
|
|
|
|
param_1[1] = 0;
|
|
|
|
param_1[2] = 0;
|
|
|
|
param_1[3] = 1;
|
|
|
|
param_1[4] = 0x8000003d;
|
|
|
|
param_1[5] = 0x41000003;
|
|
|
|
param_1[6] = 0;
|
|
|
|
param_1[7] = 0x3f800000;
|
|
|
|
param_1[8] = 0;
|
|
|
|
param_1[9] = 0;
|
|
|
|
param_1[10] = 0x3f800000;
|
|
|
|
param_1[0xb] = 0;
|
|
|
|
param_1[0xc] = 0;
|
|
|
|
param_1[0xd] = 0x3f800000;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051f350 at 0x0051F350 (size: 81) ---
|
|
|
|
|
|
void __thiscall
|
|
|
|
FUN_0051f350(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,undefined4 param_5
|
|
|
|
)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 *puVar1;
|
|
|
|
|
|
|
|
puVar1 = (undefined4 *)FUN_005df0f5(0x14);
|
|
|
|
if (puVar1 == (undefined4 *)0x0) {
|
|
|
|
puVar1 = (undefined4 *)0x0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
puVar1[1] = param_2;
|
|
|
|
puVar1[2] = param_3;
|
|
|
|
*puVar1 = 0;
|
|
|
|
puVar1[3] = param_4;
|
|
|
|
puVar1[4] = param_5;
|
|
|
|
}
|
|
|
|
if (*(undefined4 **)(param_1 + 8) != (undefined4 *)0x0) {
|
|
|
|
**(undefined4 **)(param_1 + 8) = puVar1;
|
|
|
|
*(undefined4 **)(param_1 + 8) = puVar1;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
*(undefined4 **)(param_1 + 4) = puVar1;
|
|
|
|
*(undefined4 **)(param_1 + 8) = puVar1;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051f3b0 at 0x0051F3B0 (size: 44) ---
|
|
|
|
|
|
int __fastcall FUN_0051f3b0(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int *piVar1;
|
|
|
|
int iVar2;
|
|
|
|
|
|
|
|
piVar1 = *(int **)(param_1 + 4);
|
|
|
|
iVar2 = 0;
|
|
|
|
if (piVar1 != (int *)0x0) {
|
|
|
|
iVar2 = *piVar1;
|
|
|
|
*(int *)(param_1 + 4) = iVar2;
|
|
|
|
if (iVar2 == 0) {
|
|
|
|
*(undefined4 *)(param_1 + 8) = 0;
|
|
|
|
}
|
|
|
|
*piVar1 = 0;
|
|
|
|
iVar2 = piVar1[1];
|
|
|
|
operator_delete(piVar1);
|
|
|
|
}
|
|
|
|
return iVar2;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051f3e0 at 0x0051F3E0 (size: 51) ---
|
|
|
|
|
|
void __fastcall FUN_0051f3e0(undefined4 *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
*param_1 = &PTR_FUN_007c8818;
|
|
|
|
param_1[1] = 0x8000003d;
|
|
|
|
param_1[2] = 0x41000003;
|
|
|
|
param_1[3] = 0x3f800000;
|
|
|
|
param_1[4] = 0;
|
|
|
|
param_1[5] = 0x3f800000;
|
|
|
|
param_1[6] = 0;
|
|
|
|
param_1[7] = 0x3f800000;
|
|
|
|
param_1[8] = 0;
|
|
|
|
param_1[9] = 0;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051f420 at 0x0051F420 (size: 59) ---
|
|
|
|
|
|
void __fastcall FUN_0051f420(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
int *piVar2;
|
|
|
|
|
|
|
|
iVar1 = *(int *)(param_1 + 0x20);
|
|
|
|
while (iVar1 != 0) {
|
|
|
|
piVar2 = *(int **)(param_1 + 0x20);
|
|
|
|
if (piVar2 != (int *)0x0) {
|
|
|
|
iVar1 = *piVar2;
|
|
|
|
*(int *)(param_1 + 0x20) = iVar1;
|
|
|
|
if (iVar1 == 0) {
|
|
|
|
*(undefined4 *)(param_1 + 0x24) = 0;
|
|
|
|
}
|
|
|
|
*piVar2 = 0;
|
|
|
|
operator_delete(piVar2);
|
|
|
|
}
|
|
|
|
iVar1 = *(int *)(param_1 + 0x20);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051f460 at 0x0051F460 (size: 142) ---
|
|
|
|
|
|
int __thiscall FUN_0051f460(int param_1,int param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 *puVar1;
|
|
|
|
undefined4 *puVar2;
|
|
|
|
|
|
|
|
FUN_0051f420();
|
|
|
|
*(undefined4 *)(param_1 + 4) = *(undefined4 *)(param_2 + 4);
|
|
|
|
*(undefined4 *)(param_1 + 8) = *(undefined4 *)(param_2 + 8);
|
|
|
|
*(undefined4 *)(param_1 + 0xc) = *(undefined4 *)(param_2 + 0xc);
|
|
|
|
*(undefined4 *)(param_1 + 0x10) = *(undefined4 *)(param_2 + 0x10);
|
|
|
|
*(undefined4 *)(param_1 + 0x14) = *(undefined4 *)(param_2 + 0x14);
|
|
|
|
*(undefined4 *)(param_1 + 0x18) = *(undefined4 *)(param_2 + 0x18);
|
|
|
|
*(undefined4 *)(param_1 + 0x1c) = *(undefined4 *)(param_2 + 0x1c);
|
|
|
|
for (puVar1 = *(undefined4 **)(param_2 + 0x20); puVar1 != (undefined4 *)0x0;
|
|
|
|
puVar1 = (undefined4 *)*puVar1) {
|
|
|
|
puVar2 = (undefined4 *)FUN_005df0f5(0x14);
|
|
|
|
if (puVar2 == (undefined4 *)0x0) {
|
|
|
|
puVar2 = (undefined4 *)0x0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*puVar2 = 0;
|
|
|
|
puVar2[1] = puVar1[1];
|
|
|
|
puVar2[2] = puVar1[2];
|
|
|
|
puVar2[3] = puVar1[3];
|
|
|
|
puVar2[4] = puVar1[4];
|
|
|
|
}
|
|
|
|
if (*(undefined4 **)(param_1 + 0x24) == (undefined4 *)0x0) {
|
|
|
|
*(undefined4 **)(param_1 + 0x20) = puVar2;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
**(undefined4 **)(param_1 + 0x24) = puVar2;
|
|
|
|
}
|
|
|
|
*(undefined4 **)(param_1 + 0x24) = puVar2;
|
|
|
|
}
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051f4f0 at 0x0051F4F0 (size: 81) ---
|
|
|
|
|
|
void __thiscall
|
|
|
|
FUN_0051f4f0(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,undefined4 param_5
|
|
|
|
)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 *puVar1;
|
|
|
|
|
|
|
|
puVar1 = (undefined4 *)FUN_005df0f5(0x14);
|
|
|
|
if (puVar1 == (undefined4 *)0x0) {
|
|
|
|
puVar1 = (undefined4 *)0x0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
puVar1[1] = param_2;
|
|
|
|
puVar1[2] = param_3;
|
|
|
|
*puVar1 = 0;
|
|
|
|
puVar1[3] = param_4;
|
|
|
|
puVar1[4] = param_5;
|
|
|
|
}
|
|
|
|
if (*(undefined4 **)(param_1 + 0x24) != (undefined4 *)0x0) {
|
|
|
|
**(undefined4 **)(param_1 + 0x24) = puVar1;
|
|
|
|
*(undefined4 **)(param_1 + 0x24) = puVar1;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
*(undefined4 **)(param_1 + 0x20) = puVar1;
|
|
|
|
*(undefined4 **)(param_1 + 0x24) = puVar1;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051f550 at 0x0051F550 (size: 139) ---
|
|
|
|
|
|
void __thiscall FUN_0051f550(int param_1,uint param_2,int param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
if (param_2 == 0x6500000d) {
|
|
|
|
*(undefined4 *)(param_1 + 0x18) = 0x6500000d;
|
|
|
|
*(undefined4 *)(param_1 + 0x1c) = *(undefined4 *)(param_3 + 0x14);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
if (param_2 == 0x6500000f) {
|
|
|
|
*(undefined4 *)(param_1 + 0x10) = 0x6500000f;
|
|
|
|
*(undefined4 *)(param_1 + 0x14) = *(undefined4 *)(param_3 + 0x14);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
if ((param_2 & 0x40000000) != 0) {
|
|
|
|
*(uint *)(param_1 + 8) = param_2;
|
|
|
|
*(undefined4 *)(param_1 + 0xc) = *(undefined4 *)(param_3 + 0x14);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
if ((int)param_2 < 0) {
|
|
|
|
*(undefined4 *)(param_1 + 8) = 0x41000003;
|
|
|
|
*(uint *)(param_1 + 4) = param_2;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
if ((param_2 & 0x10000000) != 0) {
|
|
|
|
FUN_0051f4f0(param_2,*(undefined4 *)(param_3 + 0x14),*(undefined4 *)(param_3 + 0x28),
|
|
|
|
*(uint *)(param_3 + 4) >> 0xc & 1);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051f5e0 at 0x0051F5E0 (size: 44) ---
|
|
|
|
|
|
int __fastcall FUN_0051f5e0(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int *piVar1;
|
|
|
|
int iVar2;
|
|
|
|
|
|
|
|
piVar1 = *(int **)(param_1 + 0x20);
|
|
|
|
iVar2 = 0;
|
|
|
|
if (piVar1 != (int *)0x0) {
|
|
|
|
iVar2 = *piVar1;
|
|
|
|
*(int *)(param_1 + 0x20) = iVar2;
|
|
|
|
if (iVar2 == 0) {
|
|
|
|
*(undefined4 *)(param_1 + 0x24) = 0;
|
|
|
|
}
|
|
|
|
*piVar1 = 0;
|
|
|
|
iVar2 = piVar1[1];
|
|
|
|
operator_delete(piVar1);
|
|
|
|
}
|
|
|
|
return iVar2;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051f610 at 0x0051F610 (size: 24) ---
|
|
|
|
|
|
int __fastcall FUN_0051f610(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 *puVar1;
|
|
|
|
int iVar2;
|
|
|
|
|
|
|
|
iVar2 = 0;
|
|
|
|
for (puVar1 = *(undefined4 **)(param_1 + 0x20); puVar1 != (undefined4 *)0x0;
|
|
|
|
puVar1 = (undefined4 *)*puVar1) {
|
|
|
|
iVar2 = iVar2 + 1;
|
|
|
|
}
|
|
|
|
return iVar2;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051f630 at 0x0051F630 (size: 59) ---
|
|
|
|
|
|
void __fastcall FUN_0051f630(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
int *piVar2;
|
|
|
|
|
|
|
|
iVar1 = *(int *)(param_1 + 4);
|
|
|
|
while (iVar1 != 0) {
|
|
|
|
piVar2 = *(int **)(param_1 + 4);
|
|
|
|
if (piVar2 != (int *)0x0) {
|
|
|
|
iVar1 = *piVar2;
|
|
|
|
*(int *)(param_1 + 4) = iVar1;
|
|
|
|
if (iVar1 == 0) {
|
|
|
|
*(undefined4 *)(param_1 + 8) = 0;
|
|
|
|
}
|
|
|
|
*piVar2 = 0;
|
|
|
|
operator_delete(piVar2);
|
|
|
|
}
|
|
|
|
iVar1 = *(int *)(param_1 + 4);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051f670 at 0x0051F670 (size: 236) ---
|
|
|
|
|
|
void __thiscall FUN_0051f670(int param_1,uint param_2,int param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
switch(param_2) {
|
|
|
|
case 0x6500000d:
|
|
|
|
case 0x6500000e:
|
|
|
|
break;
|
|
|
|
case 0x6500000f:
|
|
|
|
case 0x65000010:
|
|
|
|
*(uint *)(param_1 + 0x20) = param_2;
|
|
|
|
if ((*(uint *)(param_3 + 4) & 0x800) == 0) {
|
|
|
|
*(undefined4 *)(param_1 + 0x24) = *(undefined4 *)(param_3 + 0x24);
|
|
|
|
*(undefined4 *)(param_1 + 0x28) = *(undefined4 *)(param_3 + 0x14);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
*(undefined4 *)(param_1 + 0x24) = 0;
|
|
|
|
*(undefined4 *)(param_1 + 0x28) = *(undefined4 *)(param_3 + 0x14);
|
|
|
|
return;
|
|
|
|
default:
|
|
|
|
if ((param_2 & 0x40000000) == 0) {
|
|
|
|
if ((int)param_2 < 0) {
|
|
|
|
if (*(uint *)(param_1 + 0x10) != param_2) {
|
|
|
|
*(undefined4 *)(param_1 + 0x14) = 0x41000003;
|
|
|
|
*(uint *)(param_1 + 0x10) = param_2;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if ((param_2 & 0x10000000) != 0) {
|
|
|
|
FUN_0051f350(param_2,*(undefined4 *)(param_3 + 0x14),*(undefined4 *)(param_3 + 0x28),
|
|
|
|
*(uint *)(param_3 + 4) >> 0xc & 1);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if (param_2 != 0x44000007) {
|
|
|
|
*(uint *)(param_1 + 0x14) = param_2;
|
|
|
|
if ((*(uint *)(param_3 + 4) & 0x800) == 0) {
|
|
|
|
*(undefined4 *)(param_1 + 0x18) = *(undefined4 *)(param_3 + 0x24);
|
|
|
|
*(undefined4 *)(param_1 + 0x1c) = *(undefined4 *)(param_3 + 0x14);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
*(undefined4 *)(param_1 + 0x18) = 0;
|
|
|
|
*(undefined4 *)(param_1 + 0x1c) = *(undefined4 *)(param_3 + 0x14);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
*(uint *)(param_1 + 0x2c) = param_2;
|
|
|
|
if ((*(uint *)(param_3 + 4) & 0x800) == 0) {
|
|
|
|
*(undefined4 *)(param_1 + 0x30) = *(undefined4 *)(param_3 + 0x24);
|
|
|
|
*(undefined4 *)(param_1 + 0x34) = *(undefined4 *)(param_3 + 0x14);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
*(undefined4 *)(param_1 + 0x30) = 0;
|
|
|
|
*(undefined4 *)(param_1 + 0x34) = *(undefined4 *)(param_3 + 0x14);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051f770 at 0x0051F770 (size: 164) ---
|
|
|
|
|
|
int __thiscall FUN_0051f770(int param_1,int param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 *puVar1;
|
|
|
|
undefined4 *puVar2;
|
|
|
|
|
|
|
|
FUN_0051f630();
|
|
|
|
*(undefined4 *)(param_1 + 0xc) = *(undefined4 *)(param_2 + 0xc);
|
|
|
|
*(undefined4 *)(param_1 + 0x10) = *(undefined4 *)(param_2 + 0x10);
|
|
|
|
*(undefined4 *)(param_1 + 0x14) = *(undefined4 *)(param_2 + 0x14);
|
|
|
|
*(undefined4 *)(param_1 + 0x18) = *(undefined4 *)(param_2 + 0x18);
|
|
|
|
*(undefined4 *)(param_1 + 0x1c) = *(undefined4 *)(param_2 + 0x1c);
|
|
|
|
*(undefined4 *)(param_1 + 0x20) = *(undefined4 *)(param_2 + 0x20);
|
|
|
|
*(undefined4 *)(param_1 + 0x24) = *(undefined4 *)(param_2 + 0x24);
|
|
|
|
*(undefined4 *)(param_1 + 0x28) = *(undefined4 *)(param_2 + 0x28);
|
|
|
|
*(undefined4 *)(param_1 + 0x2c) = *(undefined4 *)(param_2 + 0x2c);
|
|
|
|
*(undefined4 *)(param_1 + 0x30) = *(undefined4 *)(param_2 + 0x30);
|
|
|
|
*(undefined4 *)(param_1 + 0x34) = *(undefined4 *)(param_2 + 0x34);
|
|
|
|
for (puVar1 = *(undefined4 **)(param_2 + 4); puVar1 != (undefined4 *)0x0;
|
|
|
|
puVar1 = (undefined4 *)*puVar1) {
|
|
|
|
puVar2 = (undefined4 *)FUN_005df0f5(0x14);
|
|
|
|
if (puVar2 == (undefined4 *)0x0) {
|
|
|
|
puVar2 = (undefined4 *)0x0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*puVar2 = 0;
|
|
|
|
puVar2[1] = puVar1[1];
|
|
|
|
puVar2[2] = puVar1[2];
|
|
|
|
puVar2[3] = puVar1[3];
|
|
|
|
puVar2[4] = puVar1[4];
|
|
|
|
}
|
|
|
|
if (*(undefined4 **)(param_1 + 8) == (undefined4 *)0x0) {
|
|
|
|
*(undefined4 **)(param_1 + 4) = puVar2;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
**(undefined4 **)(param_1 + 8) = puVar2;
|
|
|
|
}
|
|
|
|
*(undefined4 **)(param_1 + 8) = puVar2;
|
|
|
|
}
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051fc90 at 0x0051FC90 (size: 33) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_0051fc90(undefined4 *param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
*param_1 = &PTR_FUN_007c8818;
|
|
|
|
param_1[8] = 0;
|
|
|
|
param_1[9] = 0;
|
|
|
|
FUN_0051f460(param_2);
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051fcc0 at 0x0051FCC0 (size: 22) ---
|
|
|
|
|
|
void __fastcall FUN_0051fcc0(undefined4 *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
*param_1 = &PTR_FUN_007c8818;
|
|
|
|
FUN_0051f420();
|
|
|
|
*param_1 = &PTR_FUN_0079385c;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051fce0 at 0x0051FCE0 (size: 552) ---
|
|
|
|
|
|
void __thiscall FUN_0051fce0(int param_1,uint *param_2,uint param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 *puVar1;
|
|
|
|
uint uVar2;
|
|
|
|
uint uVar3;
|
|
|
|
ushort uVar4;
|
|
|
|
int iVar5;
|
|
|
|
|
|
|
|
uVar2 = 4;
|
|
|
|
uVar3 = param_3 ^ (*(int *)(param_1 + 4) != -0x7fffffc3 ^ param_3) & 1;
|
|
|
|
if ((uVar3 & 1) != 0) {
|
|
|
|
uVar2 = 6;
|
|
|
|
}
|
|
|
|
uVar3 = uVar3 ^ ((uint)(*(int *)(param_1 + 8) != 0x41000003) << 1 ^ uVar3) & 2;
|
|
|
|
if ((uVar3 & 2) != 0) {
|
|
|
|
uVar2 = uVar2 + 2;
|
|
|
|
}
|
|
|
|
uVar3 = uVar3 ^ ((uint)(*(int *)(param_1 + 0x10) != 0) << 3 ^ uVar3) & 8;
|
|
|
|
if ((uVar3 & 8) != 0) {
|
|
|
|
uVar2 = uVar2 + 2;
|
|
|
|
}
|
|
|
|
uVar3 = uVar3 ^ ((uint)(*(int *)(param_1 + 0x18) != 0) << 5 ^ uVar3) & 0x20;
|
|
|
|
if ((uVar3 & 0x20) != 0) {
|
|
|
|
uVar2 = uVar2 + 2;
|
|
|
|
}
|
|
|
|
uVar3 = uVar3 ^ ((uint)(*(int *)(param_1 + 0xc) != 0x3f800000) << 2 ^ uVar3) & 4;
|
|
|
|
if ((uVar3 & 4) != 0) {
|
|
|
|
uVar2 = uVar2 + 4;
|
|
|
|
}
|
|
|
|
uVar3 = uVar3 ^ ((uint)(*(int *)(param_1 + 0x14) != 0x3f800000) << 4 ^ uVar3) & 0x10;
|
|
|
|
if ((uVar3 & 0x10) != 0) {
|
|
|
|
uVar2 = uVar2 + 4;
|
|
|
|
}
|
|
|
|
uVar3 = uVar3 ^ ((uint)(*(int *)(param_1 + 0x1c) != 0x3f800000) << 6 ^ uVar3) & 0x40;
|
|
|
|
if ((uVar3 & 0x40) != 0) {
|
|
|
|
uVar2 = uVar2 + 4;
|
|
|
|
}
|
|
|
|
iVar5 = 0;
|
|
|
|
for (puVar1 = *(undefined4 **)(param_1 + 0x20); puVar1 != (undefined4 *)0x0;
|
|
|
|
puVar1 = (undefined4 *)*puVar1) {
|
|
|
|
uVar2 = uVar2 + 8;
|
|
|
|
iVar5 = iVar5 + 1;
|
|
|
|
}
|
|
|
|
uVar3 = uVar3 ^ (iVar5 << 7 ^ uVar3) & 0xf80;
|
|
|
|
if ((uVar2 & 3) == 0) {
|
|
|
|
iVar5 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar5 = 4 - (uVar2 & 3);
|
|
|
|
}
|
|
|
|
if (uVar2 + iVar5 <= param_3) {
|
|
|
|
if (3 < param_3) {
|
|
|
|
*(uint *)*param_2 = uVar3;
|
|
|
|
*param_2 = *param_2 + 4;
|
|
|
|
}
|
|
|
|
if ((uVar3 & 1) != 0) {
|
|
|
|
*(undefined2 *)*param_2 = *(undefined2 *)(param_1 + 4);
|
|
|
|
*param_2 = *param_2 + 2;
|
|
|
|
}
|
|
|
|
if ((uVar3 & 2) != 0) {
|
|
|
|
*(undefined2 *)*param_2 = *(undefined2 *)(param_1 + 8);
|
|
|
|
*param_2 = *param_2 + 2;
|
|
|
|
}
|
|
|
|
if ((uVar3 & 8) != 0) {
|
|
|
|
*(undefined2 *)*param_2 = *(undefined2 *)(param_1 + 0x10);
|
|
|
|
*param_2 = *param_2 + 2;
|
|
|
|
}
|
|
|
|
if ((uVar3 & 0x20) != 0) {
|
|
|
|
*(undefined2 *)*param_2 = *(undefined2 *)(param_1 + 0x18);
|
|
|
|
*param_2 = *param_2 + 2;
|
|
|
|
}
|
|
|
|
if ((uVar3 & 4) != 0) {
|
|
|
|
*(undefined4 *)*param_2 = *(undefined4 *)(param_1 + 0xc);
|
|
|
|
*param_2 = *param_2 + 4;
|
|
|
|
}
|
|
|
|
if ((uVar3 & 0x10) != 0) {
|
|
|
|
*(undefined4 *)*param_2 = *(undefined4 *)(param_1 + 0x14);
|
|
|
|
*param_2 = *param_2 + 4;
|
|
|
|
}
|
|
|
|
if ((uVar3 & 0x40) != 0) {
|
|
|
|
*(undefined4 *)*param_2 = *(undefined4 *)(param_1 + 0x1c);
|
|
|
|
*param_2 = *param_2 + 4;
|
|
|
|
}
|
|
|
|
for (puVar1 = *(undefined4 **)(param_1 + 0x20); puVar1 != (undefined4 *)0x0;
|
|
|
|
puVar1 = (undefined4 *)*puVar1) {
|
|
|
|
if (7 < param_3) {
|
|
|
|
uVar4 = *(ushort *)(puVar1 + 3) & 0x7fff;
|
|
|
|
if (puVar1[4] != 0) {
|
|
|
|
uVar4 = uVar4 | 0x8000;
|
|
|
|
}
|
|
|
|
*(undefined2 *)*param_2 = *(undefined2 *)(puVar1 + 1);
|
|
|
|
uVar2 = *param_2;
|
|
|
|
*param_2 = uVar2 + 2;
|
|
|
|
*(ushort *)(uVar2 + 2) = uVar4;
|
|
|
|
uVar2 = *param_2;
|
|
|
|
*param_2 = uVar2 + 2;
|
|
|
|
*(undefined4 *)(uVar2 + 2) = puVar1[2];
|
|
|
|
*param_2 = *param_2 + 4;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
uVar2 = *param_2 & 0x80000003;
|
|
|
|
if ((int)uVar2 < 0) {
|
|
|
|
uVar2 = (uVar2 - 1 | 0xfffffffc) + 1;
|
|
|
|
}
|
|
|
|
if (uVar2 != 0) {
|
|
|
|
for (iVar5 = 4 - uVar2; iVar5 != 0; iVar5 = iVar5 + -1) {
|
|
|
|
*(undefined1 *)*param_2 = 0;
|
|
|
|
*param_2 = *param_2 + 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0051ff10 at 0x0051FF10 (size: 446) ---
|
|
|
|
|
|
undefined4 __thiscall FUN_0051ff10(int param_1,uint *param_2,uint param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
ushort uVar1;
|
|
|
|
undefined4 *puVar2;
|
|
|
|
int iVar3;
|
|
|
|
uint uVar4;
|
|
|
|
ushort *puVar5;
|
|
|
|
|
|
|
|
FUN_0051f420();
|
|
|
|
uVar4 = param_3;
|
|
|
|
if (3 < param_3) {
|
|
|
|
uVar4 = *(uint *)*param_2;
|
|
|
|
*param_2 = (uint)((uint *)*param_2 + 1);
|
|
|
|
}
|
|
|
|
if ((uVar4 & 1) == 0) {
|
|
|
|
*(undefined4 *)(param_1 + 4) = 0x8000003d;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar1 = *(ushort *)*param_2;
|
|
|
|
*param_2 = (uint)((ushort *)*param_2 + 1);
|
|
|
|
*(undefined4 *)(param_1 + 4) = *(undefined4 *)(&DAT_007c8190 + (uint)uVar1 * 4);
|
|
|
|
}
|
|
|
|
if ((uVar4 & 2) == 0) {
|
|
|
|
*(undefined4 *)(param_1 + 8) = 0x41000003;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar1 = *(ushort *)*param_2;
|
|
|
|
*param_2 = (uint)((ushort *)*param_2 + 1);
|
|
|
|
*(undefined4 *)(param_1 + 8) = *(undefined4 *)(&DAT_007c8190 + (uint)uVar1 * 4);
|
|
|
|
}
|
|
|
|
if ((uVar4 & 8) == 0) {
|
|
|
|
*(undefined4 *)(param_1 + 0x10) = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar1 = *(ushort *)*param_2;
|
|
|
|
*param_2 = (uint)((ushort *)*param_2 + 1);
|
|
|
|
*(undefined4 *)(param_1 + 0x10) = *(undefined4 *)(&DAT_007c8190 + (uint)uVar1 * 4);
|
|
|
|
}
|
|
|
|
if ((uVar4 & 0x20) == 0) {
|
|
|
|
*(undefined4 *)(param_1 + 0x18) = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar1 = *(ushort *)*param_2;
|
|
|
|
*param_2 = (uint)((ushort *)*param_2 + 1);
|
|
|
|
*(undefined4 *)(param_1 + 0x18) = *(undefined4 *)(&DAT_007c8190 + (uint)uVar1 * 4);
|
|
|
|
}
|
|
|
|
if ((uVar4 & 4) == 0) {
|
|
|
|
*(undefined4 *)(param_1 + 0xc) = 0x3f800000;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*(undefined4 *)(param_1 + 0xc) = *(undefined4 *)*param_2;
|
|
|
|
*param_2 = *param_2 + 4;
|
|
|
|
}
|
|
|
|
if ((uVar4 & 0x10) == 0) {
|
|
|
|
*(undefined4 *)(param_1 + 0x14) = 0x3f800000;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*(undefined4 *)(param_1 + 0x14) = *(undefined4 *)*param_2;
|
|
|
|
*param_2 = *param_2 + 4;
|
|
|
|
}
|
|
|
|
if ((uVar4 & 0x40) == 0) {
|
|
|
|
*(undefined4 *)(param_1 + 0x1c) = 0x3f800000;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*(undefined4 *)(param_1 + 0x1c) = *(undefined4 *)*param_2;
|
|
|
|
*param_2 = *param_2 + 4;
|
|
|
|
}
|
|
|
|
for (uVar4 = uVar4 >> 7 & 0x1f; uVar4 != 0; uVar4 = uVar4 - 1) {
|
|
|
|
puVar2 = (undefined4 *)FUN_005df0f5(0x14);
|
|
|
|
if (puVar2 == (undefined4 *)0x0) {
|
|
|
|
puVar2 = (undefined4 *)0x0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*puVar2 = 0;
|
|
|
|
puVar2[1] = 0;
|
|
|
|
puVar2[2] = 0x3f800000;
|
|
|
|
puVar2[3] = 0;
|
|
|
|
puVar2[4] = 0;
|
|
|
|
}
|
|
|
|
if (7 < param_3) {
|
|
|
|
uVar1 = *(ushort *)*param_2;
|
|
|
|
*param_2 = (uint)((ushort *)*param_2 + 1);
|
|
|
|
puVar2[1] = *(undefined4 *)(&DAT_007c8190 + (uint)uVar1 * 4);
|
|
|
|
puVar5 = (ushort *)*param_2 + 1;
|
|
|
|
uVar1 = *(ushort *)*param_2;
|
|
|
|
*param_2 = (uint)puVar5;
|
|
|
|
puVar2[2] = *(undefined4 *)puVar5;
|
|
|
|
*param_2 = *param_2 + 4;
|
|
|
|
puVar2[3] = uVar1 & 0x7fff;
|
|
|
|
puVar2[4] = (uint)(uVar1 >> 0xf);
|
|
|
|
}
|
|
|
|
if (*(undefined4 **)(param_1 + 0x24) == (undefined4 *)0x0) {
|
|
|
|
*(undefined4 **)(param_1 + 0x20) = puVar2;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
**(undefined4 **)(param_1 + 0x24) = puVar2;
|
|
|
|
}
|
|
|
|
*(undefined4 **)(param_1 + 0x24) = puVar2;
|
|
|
|
}
|
|
|
|
uVar4 = *param_2 & 0x80000003;
|
|
|
|
if ((int)uVar4 < 0) {
|
|
|
|
uVar4 = (uVar4 - 1 | 0xfffffffc) + 1;
|
|
|
|
}
|
|
|
|
if (uVar4 != 0) {
|
|
|
|
for (iVar3 = 4 - uVar4; iVar3 != 0; iVar3 = iVar3 + -1) {
|
|
|
|
*(undefined1 *)*param_2 = 0;
|
|
|
|
*param_2 = *param_2 + 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|