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>
11369 lines
283 KiB
C
11369 lines
283 KiB
C
// Decompiled from acclient.exe — chunk 0x004F0000
|
|
// Ghidra 12.0.4 + pyghidra headless
|
|
|
|
// --- FUN_004f0010 at 0x004F0010 (size: 83) ---
|
|
|
|
|
|
bool __thiscall FUN_004f0010(int *param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 uVar1;
|
|
|
|
int iVar2;
|
|
|
|
int *piVar3;
|
|
|
|
|
|
|
|
if (*param_1 == 0) {
|
|
|
|
piVar3 = (int *)0x0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
piVar3 = (int *)(*param_1 + 0x78);
|
|
|
|
}
|
|
|
|
uVar1 = FUN_004220b0(param_2,0x31);
|
|
|
|
iVar2 = FUN_00415430(uVar1);
|
|
|
|
if (iVar2 == 0) {
|
|
|
|
iVar2 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar2 = iVar2 + -0x78;
|
|
|
|
}
|
|
|
|
*param_1 = iVar2;
|
|
|
|
if (piVar3 != (int *)0x0) {
|
|
|
|
(**(code **)(*piVar3 + 0x14))();
|
|
|
|
}
|
|
|
|
return *param_1 != 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f0160 at 0x004F0160 (size: 629) ---
|
|
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x004f019d) */
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x004f01bb) */
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x004f01c0) */
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x004f01e3) */
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x004f01e7) */
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x004f0200) */
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x004f0211) */
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x004f0229) */
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x004f0230) */
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x004f0238) */
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x004f024e) */
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x004f025e) */
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x004f027a) */
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x004f027e) */
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x004f028f) */
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x004f0398) */
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x004f0299) */
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x004f02a1) */
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x004f02b0) */
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x004f02b6) */
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x004f02be) */
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x004f02c2) */
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x004f02cf) */
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x004f02d5) */
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x004f02d9) */
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x004f02dd) */
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x004f02e1) */
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x004f02ee) */
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x004f02f6) */
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x004f0307) */
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x004f030d) */
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x004f0319) */
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x004f031d) */
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x004f032e) */
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x004f0334) */
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x004f033c) */
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x004f0340) */
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x004f0348) */
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x004f0359) */
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x004f035f) */
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x004f0367) */
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x004f036b) */
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x004f037a) */
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x004f0380) */
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x004f0384) */
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x004f01c8) */
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x004f01cf) */
|
|
|
|
|
|
|
|
uint FUN_004f0160(void)
|
|
|
|
|
|
|
|
{
|
|
|
|
uint uVar1;
|
|
|
|
undefined4 local_28 [9];
|
|
|
|
|
|
|
|
FUN_00413bc0(local_28,0x15,2);
|
|
|
|
uVar1 = FUN_004f0010(local_28[0]);
|
|
|
|
return uVar1 & 0xffffff00;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f03e0 at 0x004F03E0 (size: 382) ---
|
|
|
|
|
|
undefined1 FUN_004f03e0(undefined4 param_1,undefined4 param_2,undefined4 param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
char cVar2;
|
|
|
|
undefined1 local_11;
|
|
|
|
undefined4 *local_10;
|
|
|
|
int *local_c;
|
|
|
|
undefined4 *local_8;
|
|
|
|
int *local_4;
|
|
|
|
|
|
|
|
local_11 = 1;
|
|
|
|
local_8 = (undefined4 *)0x0;
|
|
|
|
local_4 = (int *)0x0;
|
|
|
|
cVar2 = FUN_004f0160(param_1,&local_8);
|
|
|
|
if (cVar2 == '\0') {
|
|
|
|
if (local_8 != (undefined4 *)0x0) {
|
|
|
|
iVar1 = local_8[1];
|
|
|
|
local_8[1] = iVar1 + -1;
|
|
|
|
if (iVar1 + -1 == 0) {
|
|
|
|
(**(code **)*local_8)(1);
|
|
|
|
}
|
|
|
|
local_8 = (undefined4 *)0x0;
|
|
|
|
}
|
|
|
|
if (local_4 != (int *)0x0) {
|
|
|
|
iVar1 = local_4[1];
|
|
|
|
local_4[1] = iVar1 + -1;
|
|
|
|
if (iVar1 + -1 == 0) {
|
|
|
|
(**(code **)*local_4)(1);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
local_10 = (undefined4 *)0x0;
|
|
|
|
local_c = (int *)0x0;
|
|
|
|
if (local_4 == (int *)0x0) {
|
|
|
|
LAB_004f0492:
|
|
|
|
local_11 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
cVar2 = (**(code **)(*local_4 + 0x118))(0xd4,&local_10);
|
|
|
|
if (cVar2 == '\0') goto LAB_004f0492;
|
|
|
|
if (local_c != (int *)0x0) {
|
|
|
|
(**(code **)(*local_c + 0xc0))(param_2);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (local_4 != (int *)0x0) {
|
|
|
|
cVar2 = (**(code **)(*local_4 + 0x118))(0xd5,&local_10);
|
|
|
|
if (cVar2 != '\0') {
|
|
|
|
if (local_c != (int *)0x0) {
|
|
|
|
(**(code **)(*local_c + 0xc0))(param_3);
|
|
|
|
}
|
|
|
|
goto LAB_004f04d5;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
local_11 = 0;
|
|
|
|
LAB_004f04d5:
|
|
|
|
if (local_10 != (undefined4 *)0x0) {
|
|
|
|
iVar1 = local_10[1];
|
|
|
|
local_10[1] = iVar1 + -1;
|
|
|
|
if (iVar1 + -1 == 0) {
|
|
|
|
(**(code **)*local_10)(1);
|
|
|
|
}
|
|
|
|
local_10 = (undefined4 *)0x0;
|
|
|
|
}
|
|
|
|
if (local_c != (int *)0x0) {
|
|
|
|
iVar1 = local_c[1];
|
|
|
|
local_c[1] = iVar1 + -1;
|
|
|
|
if (iVar1 + -1 == 0) {
|
|
|
|
(**(code **)*local_c)(1);
|
|
|
|
}
|
|
|
|
local_c = (int *)0x0;
|
|
|
|
}
|
|
|
|
if (local_8 != (undefined4 *)0x0) {
|
|
|
|
iVar1 = local_8[1];
|
|
|
|
local_8[1] = iVar1 + -1;
|
|
|
|
if (iVar1 + -1 == 0) {
|
|
|
|
(**(code **)*local_8)(1);
|
|
|
|
}
|
|
|
|
local_8 = (undefined4 *)0x0;
|
|
|
|
}
|
|
|
|
if (local_4 != (int *)0x0) {
|
|
|
|
iVar1 = local_4[1];
|
|
|
|
local_4[1] = iVar1 + -1;
|
|
|
|
if (iVar1 + -1 == 0) {
|
|
|
|
(**(code **)*local_4)(1);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return local_11;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f0560 at 0x004F0560 (size: 108) ---
|
|
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x004f059c) */
|
|
|
|
|
|
|
|
uint FUN_004f0560(void)
|
|
|
|
|
|
|
|
{
|
|
|
|
uint uVar1;
|
|
|
|
undefined4 local_4;
|
|
|
|
|
|
|
|
FUN_00413bc0(&local_4,0x16,2);
|
|
|
|
uVar1 = FUN_004f0010(local_4);
|
|
|
|
return uVar1 & 0xffffff00;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f05d0 at 0x004F05D0 (size: 582) ---
|
|
|
|
|
|
void __fastcall FUN_004f05d0(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
undefined4 uVar2;
|
|
|
|
undefined4 uVar3;
|
|
|
|
undefined4 *local_11c;
|
|
|
|
int *local_118;
|
|
|
|
undefined4 uStack_114;
|
|
|
|
undefined1 local_110 [120];
|
|
|
|
undefined1 auStack_98 [148];
|
|
|
|
|
|
|
|
FUN_006823d0();
|
|
|
|
local_11c = (undefined4 *)0x0;
|
|
|
|
local_118 = (int *)0x0;
|
|
|
|
FUN_0042a2d0(0x8e);
|
|
|
|
if (local_118 != (int *)0x0) {
|
|
|
|
FUN_00429b10();
|
|
|
|
(**(code **)(*local_118 + 0xac))(1);
|
|
|
|
}
|
|
|
|
uStack_114 = FUN_00429a00();
|
|
|
|
FUN_0042c290(&uStack_114,&local_11c);
|
|
|
|
FUN_0042a2d0(0xc3);
|
|
|
|
if (local_118 != (int *)0x0) {
|
|
|
|
FUN_00429b10();
|
|
|
|
(**(code **)(*local_118 + 0xac))(1);
|
|
|
|
}
|
|
|
|
uStack_114 = FUN_00429a00();
|
|
|
|
FUN_0042c290(&uStack_114,&local_11c);
|
|
|
|
FUN_0042dc80();
|
|
|
|
uVar3 = 0x10000004;
|
|
|
|
uVar2 = FUN_004016b0("ID_Option_ConfirmChange",0x10000004);
|
|
|
|
FUN_0042c9c0(uVar2,uVar3);
|
|
|
|
FUN_0042a2d0(0xc5);
|
|
|
|
if (local_118 != (int *)0x0) {
|
|
|
|
FUN_00429b10();
|
|
|
|
(**(code **)(*local_118 + 0xc4))(auStack_98);
|
|
|
|
}
|
|
|
|
uStack_114 = FUN_00429a00();
|
|
|
|
FUN_0042c290(&uStack_114,&local_11c);
|
|
|
|
FUN_0042a2d0(0xc6);
|
|
|
|
uStack_114 = DAT_007c46f8;
|
|
|
|
if (local_118 != (int *)0x0) {
|
|
|
|
FUN_00429b10();
|
|
|
|
(**(code **)(*local_118 + 0x8c))(uStack_114);
|
|
|
|
}
|
|
|
|
uStack_114 = FUN_00429a00();
|
|
|
|
FUN_0042c290(&uStack_114,&local_11c);
|
|
|
|
FUN_0042a2d0(0xac);
|
|
|
|
if (local_118 != (int *)0x0) {
|
|
|
|
FUN_00429b10();
|
|
|
|
(**(code **)(*local_118 + 0x74))(1);
|
|
|
|
}
|
|
|
|
uStack_114 = FUN_00429a00();
|
|
|
|
FUN_0042c290(&uStack_114,&local_11c);
|
|
|
|
uVar2 = FUN_00478810(local_110);
|
|
|
|
*(undefined4 *)(param_1 + 8) = uVar2;
|
|
|
|
FUN_0042e590();
|
|
|
|
if (local_11c != (undefined4 *)0x0) {
|
|
|
|
iVar1 = local_11c[1];
|
|
|
|
local_11c[1] = iVar1 + -1;
|
|
|
|
if (iVar1 + -1 == 0) {
|
|
|
|
(**(code **)*local_11c)(1);
|
|
|
|
}
|
|
|
|
local_11c = (undefined4 *)0x0;
|
|
|
|
}
|
|
|
|
if (local_118 != (int *)0x0) {
|
|
|
|
iVar1 = local_118[1];
|
|
|
|
local_118[1] = iVar1 + -1;
|
|
|
|
if (iVar1 + -1 == 0) {
|
|
|
|
(**(code **)*local_118)(1);
|
|
|
|
}
|
|
|
|
local_118 = (int *)0x0;
|
|
|
|
}
|
|
|
|
FUN_00681f60();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f0820 at 0x004F0820 (size: 78) ---
|
|
|
|
|
|
void __thiscall FUN_004f0820(int param_1,char param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
if ((*(char *)(param_1 + 4) != '\0') && (param_2 != '\0')) {
|
|
|
|
FUN_004f05d0();
|
|
|
|
}
|
|
|
|
if (*(char *)(param_1 + 0xc) != '\0') {
|
|
|
|
FUN_006a3680();
|
|
|
|
}
|
|
|
|
if (*(char *)(param_1 + 0xd) != '\0') {
|
|
|
|
FUN_0047a2b0();
|
|
|
|
}
|
|
|
|
if (*(code **)(param_1 + 0x10) != (code *)0x0) {
|
|
|
|
(**(code **)(param_1 + 0x10))();
|
|
|
|
}
|
|
|
|
if ((*(undefined4 **)(param_1 + 0x14) != (undefined4 *)0x0) && (param_2 != '\0')) {
|
|
|
|
(**(code **)**(undefined4 **)(param_1 + 0x14))(param_1);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f0a20 at 0x004F0A20 (size: 647) ---
|
|
|
|
|
|
void __fastcall FUN_004f0a20(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
int *piVar2;
|
|
|
|
undefined4 uVar3;
|
|
|
|
|
|
|
|
FUN_004639a0();
|
|
|
|
piVar2 = (int *)FUN_00463c00(0x10000231);
|
|
|
|
if (piVar2 == (int *)0x0) {
|
|
|
|
uVar3 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar3 = (**(code **)(*piVar2 + 0x94))(0xc);
|
|
|
|
}
|
|
|
|
*(undefined4 *)(param_1 + 0x600) = uVar3;
|
|
|
|
piVar2 = (int *)FUN_00463c00(0x10000232);
|
|
|
|
if (piVar2 == (int *)0x0) {
|
|
|
|
uVar3 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar3 = (**(code **)(*piVar2 + 0x94))(0xc);
|
|
|
|
}
|
|
|
|
*(undefined4 *)(param_1 + 0x604) = uVar3;
|
|
|
|
piVar2 = (int *)FUN_00463c00(0x10000233);
|
|
|
|
if (piVar2 == (int *)0x0) {
|
|
|
|
uVar3 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar3 = (**(code **)(*piVar2 + 0x94))(0xc);
|
|
|
|
}
|
|
|
|
*(undefined4 *)(param_1 + 0x608) = uVar3;
|
|
|
|
piVar2 = (int *)FUN_00463c00(0x1000023b);
|
|
|
|
if (piVar2 == (int *)0x0) {
|
|
|
|
uVar3 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar3 = (**(code **)(*piVar2 + 0x94))(0xc);
|
|
|
|
}
|
|
|
|
*(undefined4 *)(param_1 + 0x60c) = uVar3;
|
|
|
|
piVar2 = (int *)FUN_00463c00(0x10000235);
|
|
|
|
if (piVar2 == (int *)0x0) {
|
|
|
|
uVar3 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar3 = (**(code **)(*piVar2 + 0x94))(0xc);
|
|
|
|
}
|
|
|
|
*(undefined4 *)(param_1 + 0x610) = uVar3;
|
|
|
|
piVar2 = (int *)FUN_00463c00(0x10000238);
|
|
|
|
if (piVar2 == (int *)0x0) {
|
|
|
|
uVar3 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar3 = (**(code **)(*piVar2 + 0x94))(0xc);
|
|
|
|
}
|
|
|
|
*(undefined4 *)(param_1 + 0x614) = uVar3;
|
|
|
|
piVar2 = (int *)FUN_00463c00(0x100005c5);
|
|
|
|
if (piVar2 == (int *)0x0) {
|
|
|
|
uVar3 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar3 = (**(code **)(*piVar2 + 0x94))(0xc);
|
|
|
|
}
|
|
|
|
*(undefined4 *)(param_1 + 0x618) = uVar3;
|
|
|
|
piVar2 = (int *)FUN_00463c00(0x100005c6);
|
|
|
|
if (piVar2 == (int *)0x0) {
|
|
|
|
uVar3 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar3 = (**(code **)(*piVar2 + 0x94))(0xc);
|
|
|
|
}
|
|
|
|
*(undefined4 *)(param_1 + 0x61c) = uVar3;
|
|
|
|
piVar2 = (int *)FUN_00463c00(0x10000236);
|
|
|
|
if (piVar2 == (int *)0x0) {
|
|
|
|
uVar3 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar3 = (**(code **)(*piVar2 + 0x94))(7);
|
|
|
|
}
|
|
|
|
*(undefined4 *)(param_1 + 0x620) = uVar3;
|
|
|
|
piVar2 = (int *)FUN_00463c00(0x1000023d);
|
|
|
|
if (piVar2 == (int *)0x0) {
|
|
|
|
uVar3 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar3 = (**(code **)(*piVar2 + 0x94))(5);
|
|
|
|
}
|
|
|
|
*(undefined4 *)(param_1 + 0x624) = uVar3;
|
|
|
|
piVar2 = (int *)FUN_0043c680();
|
|
|
|
iVar1 = param_1 + 0x5f8;
|
|
|
|
(**(code **)(*piVar2 + 4))(0x4dd1f0,iVar1);
|
|
|
|
(**(code **)(*piVar2 + 4))(0x4dd201,iVar1);
|
|
|
|
(**(code **)(*piVar2 + 4))(0x4dd277,iVar1);
|
|
|
|
(**(code **)(*piVar2 + 4))(0x4dd278,iVar1);
|
|
|
|
param_1 = param_1 + 0x5fc;
|
|
|
|
(**(code **)(*DAT_008f958c + 8))(1,0x19,param_1);
|
|
|
|
(**(code **)(*DAT_008f958c + 8))(1,0x18,param_1);
|
|
|
|
(**(code **)(*DAT_008f958c + 8))(1,0x1e,param_1);
|
|
|
|
(**(code **)(*DAT_008f958c + 8))(1,0x86,param_1);
|
|
|
|
(**(code **)(*DAT_008f958c + 8))(1,0xbc,param_1);
|
|
|
|
(**(code **)(*DAT_008f958c + 8))(1,0x71,param_1);
|
|
|
|
(**(code **)(*DAT_008f958c + 8))(0xe,1,param_1);
|
|
|
|
(**(code **)(*DAT_008f958c + 8))(0xe,2,param_1);
|
|
|
|
(**(code **)(*DAT_008f958c + 8))(0xe,6,param_1);
|
|
|
|
(**(code **)(*DAT_008f958c + 8))(0xe,7,param_1);
|
|
|
|
(**(code **)(*DAT_008f958c + 8))(5,1,param_1);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f0cb0 at 0x004F0CB0 (size: 118) ---
|
|
|
|
|
|
undefined4 __thiscall FUN_004f0cb0(int *param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
uint uVar1;
|
|
|
|
|
|
|
|
if (((uint)param_1[0x29] >> 1 & 1) != 0) {
|
|
|
|
(**(code **)(*param_1 + 0x140))(param_2);
|
|
|
|
(**(code **)(*param_1 + 0x144))(param_2);
|
|
|
|
(**(code **)(*param_1 + 0x148))(param_2);
|
|
|
|
uVar1 = 0;
|
|
|
|
if (param_1[0x18c] != 0) {
|
|
|
|
do {
|
|
|
|
(**(code **)(**(int **)(param_1[0x18a] + uVar1 * 4) + 0x20))(param_2);
|
|
|
|
uVar1 = uVar1 + 1;
|
|
|
|
} while (uVar1 < (uint)param_1[0x18c]);
|
|
|
|
}
|
|
|
|
(**(code **)(*param_1 + 0x150))();
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f0e00 at 0x004F0E00 (size: 76) ---
|
|
|
|
|
|
undefined4 __fastcall FUN_004f0e00(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int *piVar1;
|
|
|
|
undefined4 uVar2;
|
|
|
|
|
|
|
|
if (*(int *)(param_1 + 0x400) == 0x10000012) {
|
|
|
|
uVar2 = 0x10000241;
|
|
|
|
}
|
|
|
|
else if (*(int *)(param_1 + 0x400) == 0x10000013) {
|
|
|
|
uVar2 = 0x10000247;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar2 = 0x10000240;
|
|
|
|
}
|
|
|
|
FUN_00463c00(uVar2);
|
|
|
|
piVar1 = (int *)FUN_00463c00(0x1000024e);
|
|
|
|
if (piVar1 != (int *)0x0) {
|
|
|
|
uVar2 = (**(code **)(*piVar1 + 0x94))(0xc);
|
|
|
|
return uVar2;
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f0e50 at 0x004F0E50 (size: 76) ---
|
|
|
|
|
|
undefined4 __fastcall FUN_004f0e50(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int *piVar1;
|
|
|
|
undefined4 uVar2;
|
|
|
|
|
|
|
|
if (*(int *)(param_1 + 0x400) == 0x10000012) {
|
|
|
|
uVar2 = 0x10000241;
|
|
|
|
}
|
|
|
|
else if (*(int *)(param_1 + 0x400) == 0x10000013) {
|
|
|
|
uVar2 = 0x10000247;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar2 = 0x10000240;
|
|
|
|
}
|
|
|
|
FUN_00463c00(uVar2);
|
|
|
|
piVar1 = (int *)FUN_00463c00(0x10000242);
|
|
|
|
if (piVar1 != (int *)0x0) {
|
|
|
|
uVar2 = (**(code **)(*piVar1 + 0x94))(0xc);
|
|
|
|
return uVar2;
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f0ea0 at 0x004F0EA0 (size: 76) ---
|
|
|
|
|
|
undefined4 __fastcall FUN_004f0ea0(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int *piVar1;
|
|
|
|
undefined4 uVar2;
|
|
|
|
|
|
|
|
if (*(int *)(param_1 + 0x400) == 0x10000012) {
|
|
|
|
uVar2 = 0x10000241;
|
|
|
|
}
|
|
|
|
else if (*(int *)(param_1 + 0x400) == 0x10000013) {
|
|
|
|
uVar2 = 0x10000247;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar2 = 0x10000240;
|
|
|
|
}
|
|
|
|
FUN_00463c00(uVar2);
|
|
|
|
piVar1 = (int *)FUN_00463c00(0x10000243);
|
|
|
|
if (piVar1 != (int *)0x0) {
|
|
|
|
uVar2 = (**(code **)(*piVar1 + 0x94))(0xc);
|
|
|
|
return uVar2;
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f0ef0 at 0x004F0EF0 (size: 76) ---
|
|
|
|
|
|
undefined4 __fastcall FUN_004f0ef0(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int *piVar1;
|
|
|
|
undefined4 uVar2;
|
|
|
|
|
|
|
|
if (*(int *)(param_1 + 0x400) == 0x10000012) {
|
|
|
|
uVar2 = 0x10000241;
|
|
|
|
}
|
|
|
|
else if (*(int *)(param_1 + 0x400) == 0x10000013) {
|
|
|
|
uVar2 = 0x10000247;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar2 = 0x10000240;
|
|
|
|
}
|
|
|
|
FUN_00463c00(uVar2);
|
|
|
|
piVar1 = (int *)FUN_00463c00(0x10000247);
|
|
|
|
if (piVar1 != (int *)0x0) {
|
|
|
|
uVar2 = (**(code **)(*piVar1 + 0x94))(7);
|
|
|
|
return uVar2;
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f0f40 at 0x004F0F40 (size: 76) ---
|
|
|
|
|
|
undefined4 __fastcall FUN_004f0f40(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int *piVar1;
|
|
|
|
undefined4 uVar2;
|
|
|
|
|
|
|
|
if (*(int *)(param_1 + 0x400) == 0x10000012) {
|
|
|
|
uVar2 = 0x10000241;
|
|
|
|
}
|
|
|
|
else if (*(int *)(param_1 + 0x400) == 0x10000013) {
|
|
|
|
uVar2 = 0x10000247;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar2 = 0x10000240;
|
|
|
|
}
|
|
|
|
FUN_00463c00(uVar2);
|
|
|
|
piVar1 = (int *)FUN_00463c00(0x10000244);
|
|
|
|
if (piVar1 != (int *)0x0) {
|
|
|
|
uVar2 = (**(code **)(*piVar1 + 0x94))(0xc);
|
|
|
|
return uVar2;
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f0f90 at 0x004F0F90 (size: 76) ---
|
|
|
|
|
|
undefined4 __fastcall FUN_004f0f90(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int *piVar1;
|
|
|
|
undefined4 uVar2;
|
|
|
|
|
|
|
|
if (*(int *)(param_1 + 0x400) == 0x10000012) {
|
|
|
|
uVar2 = 0x10000241;
|
|
|
|
}
|
|
|
|
else if (*(int *)(param_1 + 0x400) == 0x10000013) {
|
|
|
|
uVar2 = 0x10000247;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar2 = 0x10000240;
|
|
|
|
}
|
|
|
|
FUN_00463c00(uVar2);
|
|
|
|
piVar1 = (int *)FUN_00463c00(0x10000245);
|
|
|
|
if (piVar1 != (int *)0x0) {
|
|
|
|
uVar2 = (**(code **)(*piVar1 + 0x94))(0xc);
|
|
|
|
return uVar2;
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f0fe0 at 0x004F0FE0 (size: 76) ---
|
|
|
|
|
|
undefined4 __fastcall FUN_004f0fe0(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int *piVar1;
|
|
|
|
undefined4 uVar2;
|
|
|
|
|
|
|
|
if (*(int *)(param_1 + 0x400) == 0x10000012) {
|
|
|
|
uVar2 = 0x10000241;
|
|
|
|
}
|
|
|
|
else if (*(int *)(param_1 + 0x400) == 0x10000013) {
|
|
|
|
uVar2 = 0x10000247;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar2 = 0x10000240;
|
|
|
|
}
|
|
|
|
FUN_00463c00(uVar2);
|
|
|
|
piVar1 = (int *)FUN_00463c00(0x10000246);
|
|
|
|
if (piVar1 != (int *)0x0) {
|
|
|
|
uVar2 = (**(code **)(*piVar1 + 0x94))(1);
|
|
|
|
return uVar2;
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f1030 at 0x004F1030 (size: 76) ---
|
|
|
|
|
|
undefined4 __fastcall FUN_004f1030(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int *piVar1;
|
|
|
|
undefined4 uVar2;
|
|
|
|
|
|
|
|
if (*(int *)(param_1 + 0x400) == 0x10000012) {
|
|
|
|
uVar2 = 0x10000241;
|
|
|
|
}
|
|
|
|
else if (*(int *)(param_1 + 0x400) == 0x10000013) {
|
|
|
|
uVar2 = 0x10000247;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar2 = 0x10000240;
|
|
|
|
}
|
|
|
|
FUN_00463c00(uVar2);
|
|
|
|
piVar1 = (int *)FUN_00463c00(0x100005eb);
|
|
|
|
if (piVar1 != (int *)0x0) {
|
|
|
|
uVar2 = (**(code **)(*piVar1 + 0x94))(1);
|
|
|
|
return uVar2;
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f1080 at 0x004F1080 (size: 164) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_004f1080(undefined4 *param_1,undefined4 param_2,undefined4 param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_00472670(param_2,param_3);
|
|
|
|
param_1[0x17e] = &PTR_FUN_007ccb60;
|
|
|
|
param_1[0x17f] = &PTR_LAB_007a6af4;
|
|
|
|
param_1[0x180] = 0;
|
|
|
|
param_1[0x181] = 0;
|
|
|
|
param_1[0x182] = 0;
|
|
|
|
param_1[0x183] = 0;
|
|
|
|
param_1[0x184] = 0;
|
|
|
|
param_1[0x185] = 0;
|
|
|
|
param_1[0x186] = 0;
|
|
|
|
param_1[0x187] = 0;
|
|
|
|
param_1[0x188] = 0;
|
|
|
|
param_1[0x189] = 0;
|
|
|
|
*param_1 = &PTR_FUN_007c4b18;
|
|
|
|
param_1[0x17e] = &PTR_FUN_007a8ba0;
|
|
|
|
param_1[0x17f] = &PTR_LAB_007c4b0c;
|
|
|
|
param_1[0x18a] = 0;
|
|
|
|
param_1[0x18b] = 0;
|
|
|
|
param_1[0x18c] = 0;
|
|
|
|
*(undefined1 *)(param_1 + 0x18d) = 0;
|
|
|
|
param_1[0x18e] = 0;
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f11e0 at 0x004F11E0 (size: 133) ---
|
|
|
|
|
|
undefined4 __fastcall FUN_004f11e0(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int *piVar1;
|
|
|
|
uint uVar2;
|
|
|
|
|
|
|
|
FUN_0046e460();
|
|
|
|
uVar2 = 0;
|
|
|
|
if (*(int *)(param_1 + 0x630) != 0) {
|
|
|
|
do {
|
|
|
|
piVar1 = *(int **)(*(int *)(param_1 + 0x628) + uVar2 * 4);
|
|
|
|
if (piVar1 != (int *)0x0) {
|
|
|
|
(**(code **)(*piVar1 + 8))(1);
|
|
|
|
}
|
|
|
|
*(undefined4 *)(*(int *)(param_1 + 0x628) + uVar2 * 4) = 0;
|
|
|
|
uVar2 = uVar2 + 1;
|
|
|
|
} while (uVar2 < *(uint *)(param_1 + 0x630));
|
|
|
|
}
|
|
|
|
uVar2 = 0;
|
|
|
|
if (*(int *)(param_1 + 0x630) != 0) {
|
|
|
|
do {
|
|
|
|
*(undefined4 *)(*(int *)(param_1 + 0x628) + uVar2 * 4) = 0;
|
|
|
|
uVar2 = uVar2 + 1;
|
|
|
|
} while (uVar2 < *(uint *)(param_1 + 0x630));
|
|
|
|
}
|
|
|
|
*(undefined4 *)(param_1 + 0x630) = 0;
|
|
|
|
return CONCAT31((int3)((uint)(param_1 + 0x628) >> 8),1);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f1270 at 0x004F1270 (size: 363) ---
|
|
|
|
|
|
void __fastcall FUN_004f1270(undefined4 *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 *puVar1;
|
|
|
|
undefined4 *puVar2;
|
|
|
|
int *piVar3;
|
|
|
|
|
|
|
|
puVar1 = param_1 + 0x17e;
|
|
|
|
puVar2 = param_1 + 0x17f;
|
|
|
|
*param_1 = &PTR_FUN_007c4b18;
|
|
|
|
*puVar1 = &PTR_FUN_007a8ba0;
|
|
|
|
*puVar2 = &PTR_LAB_007c4b0c;
|
|
|
|
FUN_004f11e0();
|
|
|
|
param_1[0x180] = 0;
|
|
|
|
param_1[0x181] = 0;
|
|
|
|
param_1[0x182] = 0;
|
|
|
|
param_1[0x183] = 0;
|
|
|
|
param_1[0x184] = 0;
|
|
|
|
param_1[0x185] = 0;
|
|
|
|
param_1[0x186] = 0;
|
|
|
|
param_1[0x187] = 0;
|
|
|
|
param_1[0x188] = 0;
|
|
|
|
param_1[0x189] = 0;
|
|
|
|
piVar3 = (int *)FUN_0043c680();
|
|
|
|
if (piVar3 != (int *)0x0) {
|
|
|
|
(**(code **)(*piVar3 + 0xc))(puVar1);
|
|
|
|
}
|
|
|
|
(**(code **)(*DAT_008f958c + 0x10))(1,0x19,puVar2);
|
|
|
|
(**(code **)(*DAT_008f958c + 0x10))(1,0x18,puVar2);
|
|
|
|
(**(code **)(*DAT_008f958c + 0x10))(1,0x1e,puVar2);
|
|
|
|
(**(code **)(*DAT_008f958c + 0x10))(1,0x86,puVar2);
|
|
|
|
(**(code **)(*DAT_008f958c + 0x10))(1,0xbc,puVar2);
|
|
|
|
(**(code **)(*DAT_008f958c + 0x10))(1,0x71,puVar2);
|
|
|
|
(**(code **)(*DAT_008f958c + 0x10))(0xe,1,puVar2);
|
|
|
|
(**(code **)(*DAT_008f958c + 0x10))(0xe,2,puVar2);
|
|
|
|
(**(code **)(*DAT_008f958c + 0x10))(0xe,6,puVar2);
|
|
|
|
(**(code **)(*DAT_008f958c + 0x10))(0xe,7,puVar2);
|
|
|
|
(**(code **)(*DAT_008f958c + 0x10))(5,1,puVar2);
|
|
|
|
if ((param_1[0x18b] & 0x80000000) == 0x80000000) {
|
|
|
|
operator_delete__((void *)param_1[0x18a]);
|
|
|
|
}
|
|
|
|
*puVar1 = &PTR_FUN_007ccb60;
|
|
|
|
FUN_0043c610();
|
|
|
|
FUN_004726c0();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f13e0 at 0x004F13E0 (size: 30) ---
|
|
|
|
|
|
void * __thiscall FUN_004f13e0(void *param_1,byte param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_004f1270();
|
|
|
|
if ((param_2 & 1) != 0) {
|
|
|
|
operator_delete(param_1);
|
|
|
|
}
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f1b00 at 0x004F1B00 (size: 21) ---
|
|
|
|
|
|
void __fastcall FUN_004f1b00(undefined4 *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
*param_1 = &PTR_FUN_007c4ea0;
|
|
|
|
(**(code **)(*DAT_008f958c + 0x14))(param_1);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f1b20 at 0x004F1B20 (size: 4) ---
|
|
|
|
|
|
undefined4 __fastcall FUN_004f1b20(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
return *(undefined4 *)(param_1 + 4);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f1b30 at 0x004F1B30 (size: 5) ---
|
|
|
|
|
|
undefined4 FUN_004f1b30(void)
|
|
|
|
|
|
|
|
{
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f1b40 at 0x004F1B40 (size: 37) ---
|
|
|
|
|
|
void __fastcall FUN_004f1b40(int *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 uVar1;
|
|
|
|
|
|
|
|
uVar1 = (**(code **)(*param_1 + 0x18))();
|
|
|
|
FUN_00460410(0x10000004,param_1[1],uVar1);
|
|
|
|
(**(code **)(*param_1 + 0x24))();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f1cc0 at 0x004F1CC0 (size: 43) ---
|
|
|
|
|
|
undefined4 * __fastcall FUN_004f1cc0(undefined4 *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
byte unaff_retaddr;
|
|
|
|
|
|
|
|
*param_1 = &PTR_FUN_007c4ea0;
|
|
|
|
(**(code **)(*DAT_008f958c + 0x14))(param_1);
|
|
|
|
if ((unaff_retaddr & 1) != 0) {
|
|
|
|
operator_delete(param_1);
|
|
|
|
}
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f1cf0 at 0x004F1CF0 (size: 160) ---
|
|
|
|
|
|
void __thiscall FUN_004f1cf0(int param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
undefined4 *unaff_ESI;
|
|
|
|
undefined4 *local_8;
|
|
|
|
int *local_4;
|
|
|
|
|
|
|
|
local_8 = (undefined4 *)0x0;
|
|
|
|
local_4 = (int *)0x0;
|
|
|
|
FUN_0042a2d0(0x1000003a);
|
|
|
|
if (local_4 != (int *)0x0) {
|
|
|
|
FUN_00429b10();
|
|
|
|
(**(code **)(*local_4 + 0x7c))(param_2);
|
|
|
|
}
|
|
|
|
(**(code **)(**(int **)(param_1 + 8) + 0xd4))(&local_8);
|
|
|
|
if ((unaff_ESI != (undefined4 *)0x0) &&
|
|
|
|
(iVar1 = unaff_ESI[1], unaff_ESI[1] = iVar1 + -1, iVar1 + -1 == 0)) {
|
|
|
|
(**(code **)*unaff_ESI)(1);
|
|
|
|
}
|
|
|
|
if ((local_8 != (undefined4 *)0x0) &&
|
|
|
|
(iVar1 = local_8[1], local_8[1] = iVar1 + -1, iVar1 + -1 == 0)) {
|
|
|
|
(**(code **)*local_8)(1);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f1d90 at 0x004F1D90 (size: 154) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
int __fastcall FUN_004f1d90(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
int local_58;
|
|
|
|
float local_54;
|
|
|
|
undefined1 local_50 [76];
|
|
|
|
float local_4;
|
|
|
|
|
|
|
|
FUN_005cbdd0();
|
|
|
|
iVar1 = FUN_0058fe60(local_50);
|
|
|
|
if ((iVar1 != 0) && (local_4 < (float)_DAT_007938c0)) {
|
|
|
|
local_58 = 0;
|
|
|
|
FUN_00592d20(*(undefined4 *)(param_1 + 0x18),&local_58,1);
|
|
|
|
local_54 = (float)local_58;
|
|
|
|
if (local_58 < 0) {
|
|
|
|
local_54 = local_54 + _DAT_0079920c;
|
|
|
|
}
|
|
|
|
FUN_005cbc40(&local_54);
|
|
|
|
iVar1 = FUN_005df4c4();
|
|
|
|
return iVar1 - local_58;
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f1e30 at 0x004F1E30 (size: 188) ---
|
|
|
|
|
|
undefined4 __thiscall FUN_004f1e30(int param_1,int param_2,int param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
if (param_2 == 1) {
|
|
|
|
*(undefined4 *)(param_3 + 8) = *(undefined4 *)(param_1 + 0x40);
|
|
|
|
*(undefined4 *)(param_3 + 0xc) = *(undefined4 *)(param_1 + 0x44);
|
|
|
|
*(undefined4 *)(param_3 + 0x10) = *(undefined4 *)(param_1 + 0x48);
|
|
|
|
*(undefined4 *)(param_3 + 0x14) = *(undefined4 *)(param_1 + 0x4c);
|
|
|
|
*(undefined4 *)(param_3 + 0x18) = *(undefined4 *)(param_1 + 0x50);
|
|
|
|
*(undefined4 *)(param_3 + 0x1c) = *(undefined4 *)(param_1 + 0x54);
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
if (param_2 != 3) {
|
|
|
|
if (param_2 != 5) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
*(undefined4 *)(param_3 + 8) = *(undefined4 *)(param_1 + 0x80);
|
|
|
|
*(undefined4 *)(param_3 + 0xc) = *(undefined4 *)(param_1 + 0x84);
|
|
|
|
*(undefined4 *)(param_3 + 0x10) = *(undefined4 *)(param_1 + 0x88);
|
|
|
|
*(undefined4 *)(param_3 + 0x14) = *(undefined4 *)(param_1 + 0x8c);
|
|
|
|
*(undefined4 *)(param_3 + 0x18) = *(undefined4 *)(param_1 + 0x90);
|
|
|
|
*(undefined4 *)(param_3 + 0x1c) = *(undefined4 *)(param_1 + 0x94);
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
*(undefined4 *)(param_3 + 8) = *(undefined4 *)(param_1 + 0x60);
|
|
|
|
*(undefined4 *)(param_3 + 0xc) = *(undefined4 *)(param_1 + 100);
|
|
|
|
*(undefined4 *)(param_3 + 0x10) = *(undefined4 *)(param_1 + 0x68);
|
|
|
|
*(undefined4 *)(param_3 + 0x14) = *(undefined4 *)(param_1 + 0x6c);
|
|
|
|
*(undefined4 *)(param_3 + 0x18) = *(undefined4 *)(param_1 + 0x70);
|
|
|
|
*(undefined4 *)(param_3 + 0x1c) = *(undefined4 *)(param_1 + 0x74);
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f1ef0 at 0x004F1EF0 (size: 127) ---
|
|
|
|
|
|
undefined4 * __fastcall FUN_004f1ef0(undefined4 *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 uVar1;
|
|
|
|
LONG *pLVar2;
|
|
|
|
|
|
|
|
*param_1 = &PTR_FUN_007c4ed0;
|
|
|
|
pLVar2 = (LONG *)(DAT_008ef11c + 4);
|
|
|
|
param_1[1] = DAT_008ef11c;
|
|
|
|
InterlockedIncrement(pLVar2);
|
|
|
|
pLVar2 = (LONG *)(DAT_008ef11c + 4);
|
|
|
|
param_1[2] = DAT_008ef11c;
|
|
|
|
InterlockedIncrement(pLVar2);
|
|
|
|
uVar1 = DAT_00841e74;
|
|
|
|
param_1[4] = 0;
|
|
|
|
param_1[5] = 0;
|
|
|
|
param_1[6] = 0;
|
|
|
|
param_1[7] = 0;
|
|
|
|
param_1[8] = 0;
|
|
|
|
param_1[3] = uVar1;
|
|
|
|
param_1[10] = 0;
|
|
|
|
param_1[0xb] = 0;
|
|
|
|
param_1[0xc] = 0;
|
|
|
|
param_1[0xe] = 0;
|
|
|
|
param_1[0xf] = 0;
|
|
|
|
param_1[9] = &PTR_FUN_007a11bc;
|
|
|
|
param_1[0xd] = 1;
|
|
|
|
param_1[0x10] = 0;
|
|
|
|
param_1[0x11] = 0;
|
|
|
|
param_1[0x12] = 0;
|
|
|
|
param_1[0x13] = 0;
|
|
|
|
param_1[0x14] = 0;
|
|
|
|
param_1[0x15] = 0;
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f1f70 at 0x004F1F70 (size: 78) ---
|
|
|
|
|
|
void __fastcall FUN_004f1f70(undefined4 *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 *puVar1;
|
|
|
|
LONG LVar2;
|
|
|
|
|
|
|
|
puVar1 = (undefined4 *)param_1[2];
|
|
|
|
param_1[9] = &PTR_FUN_0079385c;
|
|
|
|
LVar2 = InterlockedDecrement(puVar1 + 1);
|
|
|
|
if ((LVar2 == 0) && (puVar1 != (undefined4 *)0x0)) {
|
|
|
|
(**(code **)*puVar1)(1);
|
|
|
|
}
|
|
|
|
puVar1 = (undefined4 *)param_1[1];
|
|
|
|
LVar2 = InterlockedDecrement(puVar1 + 1);
|
|
|
|
if ((LVar2 == 0) && (puVar1 != (undefined4 *)0x0)) {
|
|
|
|
(**(code **)*puVar1)(1);
|
|
|
|
}
|
|
|
|
*param_1 = &PTR_FUN_0079385c;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f1fc0 at 0x004F1FC0 (size: 227) ---
|
|
|
|
|
|
int __thiscall FUN_004f1fc0(int param_1,int param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 *puVar1;
|
|
|
|
int iVar2;
|
|
|
|
LONG LVar3;
|
|
|
|
|
|
|
|
puVar1 = *(undefined4 **)(param_1 + 4);
|
|
|
|
if (puVar1 != *(undefined4 **)(param_2 + 4)) {
|
|
|
|
LVar3 = InterlockedDecrement(puVar1 + 1);
|
|
|
|
if ((LVar3 == 0) && (puVar1 != (undefined4 *)0x0)) {
|
|
|
|
(**(code **)*puVar1)(1);
|
|
|
|
}
|
|
|
|
iVar2 = *(int *)(param_2 + 4);
|
|
|
|
*(int *)(param_1 + 4) = iVar2;
|
|
|
|
InterlockedIncrement((LONG *)(iVar2 + 4));
|
|
|
|
}
|
|
|
|
puVar1 = *(undefined4 **)(param_1 + 8);
|
|
|
|
if (puVar1 != *(undefined4 **)(param_2 + 8)) {
|
|
|
|
LVar3 = InterlockedDecrement(puVar1 + 1);
|
|
|
|
if ((LVar3 == 0) && (puVar1 != (undefined4 *)0x0)) {
|
|
|
|
(**(code **)*puVar1)(1);
|
|
|
|
}
|
|
|
|
iVar2 = *(int *)(param_2 + 8);
|
|
|
|
*(int *)(param_1 + 8) = iVar2;
|
|
|
|
InterlockedIncrement((LONG *)(iVar2 + 4));
|
|
|
|
}
|
|
|
|
*(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 + 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);
|
|
|
|
*(undefined4 *)(param_1 + 0x38) = *(undefined4 *)(param_2 + 0x38);
|
|
|
|
*(undefined4 *)(param_1 + 0x3c) = *(undefined4 *)(param_2 + 0x3c);
|
|
|
|
*(undefined4 *)(param_1 + 0x40) = *(undefined4 *)(param_2 + 0x40);
|
|
|
|
*(undefined4 *)(param_1 + 0x44) = *(undefined4 *)(param_2 + 0x44);
|
|
|
|
*(undefined4 *)(param_1 + 0x48) = *(undefined4 *)(param_2 + 0x48);
|
|
|
|
*(undefined4 *)(param_1 + 0x4c) = *(undefined4 *)(param_2 + 0x4c);
|
|
|
|
*(undefined4 *)(param_1 + 0x50) = *(undefined4 *)(param_2 + 0x50);
|
|
|
|
*(undefined4 *)(param_1 + 0x54) = *(undefined4 *)(param_2 + 0x54);
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f20b0 at 0x004F20B0 (size: 214) ---
|
|
|
|
|
|
undefined4 * __thiscall
|
|
|
|
FUN_004f20b0(undefined4 *param_1,int param_2,int param_3,undefined4 param_4,undefined4 param_5,
|
|
|
|
undefined4 param_6,int param_7)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
int *piVar2;
|
|
|
|
undefined4 uVar3;
|
|
|
|
|
|
|
|
*param_1 = &PTR_FUN_007c4ea0;
|
|
|
|
param_1[1] = param_5;
|
|
|
|
param_1[2] = 0;
|
|
|
|
param_1[3] = 0;
|
|
|
|
param_1[4] = 0;
|
|
|
|
if (param_2 != 0) {
|
|
|
|
if (param_3 == -1) {
|
|
|
|
iVar1 = FUN_0046f670(0,0);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar1 = FUN_0046f770(0,param_3);
|
|
|
|
}
|
|
|
|
param_1[2] = iVar1;
|
|
|
|
if (iVar1 != 0) {
|
|
|
|
piVar2 = (int *)FUN_00463c00(0x1000012a);
|
|
|
|
if (piVar2 == (int *)0x0) {
|
|
|
|
uVar3 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar3 = (**(code **)(*piVar2 + 0x94))(0xc);
|
|
|
|
}
|
|
|
|
param_1[3] = uVar3;
|
|
|
|
piVar2 = (int *)FUN_00463c00(0x1000012b);
|
|
|
|
if (piVar2 == (int *)0x0) {
|
|
|
|
uVar3 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar3 = (**(code **)(*piVar2 + 0x94))(0xc);
|
|
|
|
}
|
|
|
|
param_1[4] = uVar3;
|
|
|
|
if (param_7 != DAT_00841e74) {
|
|
|
|
iVar1 = FUN_00463c00(0x10000129);
|
|
|
|
if (iVar1 != 0) {
|
|
|
|
FUN_006a07e0(param_7,3);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
FUN_004f1cf0(param_4);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f2190 at 0x004F2190 (size: 331) ---
|
|
|
|
|
|
undefined4 * __thiscall
|
|
|
|
FUN_004f2190(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
|
|
|
|
undefined4 param_5,char param_6)
|
|
|
|
|
|
|
|
{
|
|
|
|
char cVar1;
|
|
|
|
LONG LVar2;
|
|
|
|
undefined4 *puVar3;
|
|
|
|
undefined *local_94;
|
|
|
|
undefined1 auStack_90 [144];
|
|
|
|
|
|
|
|
FUN_004f20b0(param_2,0xffffffff,param_3,8,param_4,param_5);
|
|
|
|
*param_1 = &PTR_FUN_007c4ee4;
|
|
|
|
param_1[5] = param_4;
|
|
|
|
if (param_1[3] != 0) {
|
|
|
|
local_94 = PTR_DAT_00818340;
|
|
|
|
InterlockedIncrement((LONG *)(PTR_DAT_00818340 + -0x10));
|
|
|
|
cVar1 = FUN_005c9d70(param_1[5],&local_94);
|
|
|
|
if (cVar1 != '\0') {
|
|
|
|
FUN_0046a740(&local_94);
|
|
|
|
}
|
|
|
|
puVar3 = (undefined4 *)(local_94 + -0x14);
|
|
|
|
LVar2 = InterlockedDecrement((LONG *)(local_94 + -0x10));
|
|
|
|
if ((LVar2 == 0) && (puVar3 != (undefined4 *)0x0)) {
|
|
|
|
(**(code **)*puVar3)(1);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (param_1[2] != 0) {
|
|
|
|
local_94 = PTR_DAT_00818340;
|
|
|
|
InterlockedIncrement((LONG *)(PTR_DAT_00818340 + -0x10));
|
|
|
|
cVar1 = FUN_005c9e10(param_1[5],&local_94);
|
|
|
|
if (cVar1 != '\0') {
|
|
|
|
FUN_0042dc80();
|
|
|
|
FUN_0042cbe0(&local_94,1);
|
|
|
|
FUN_004618a0(auStack_90);
|
|
|
|
(**(code **)(*(int *)param_1[2] + 0x110))(1);
|
|
|
|
FUN_0042e590();
|
|
|
|
}
|
|
|
|
puVar3 = (undefined4 *)(local_94 + -0x14);
|
|
|
|
LVar2 = InterlockedDecrement((LONG *)(local_94 + -0x10));
|
|
|
|
if ((LVar2 == 0) && (puVar3 != (undefined4 *)0x0)) {
|
|
|
|
(**(code **)*puVar3)(1);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (param_6 != '\0') {
|
|
|
|
(**(code **)(*DAT_008f958c + 8))(8,param_1[5],param_1);
|
|
|
|
}
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f22e0 at 0x004F22E0 (size: 507) ---
|
|
|
|
|
|
undefined4 * __thiscall
|
|
|
|
FUN_004f22e0(undefined4 *param_1,undefined4 param_2,undefined4 param_3,int param_4,
|
|
|
|
undefined1 param_5,undefined4 param_6,char param_7)
|
|
|
|
|
|
|
|
{
|
|
|
|
char cVar1;
|
|
|
|
LONG LVar2;
|
|
|
|
int *piVar3;
|
|
|
|
undefined4 *puVar4;
|
|
|
|
undefined *local_b4;
|
|
|
|
int iStack_b0;
|
|
|
|
int iStack_ac;
|
|
|
|
|
|
|
|
FUN_004f20b0(param_2,0xffffffff,param_3,9,param_4);
|
|
|
|
*(undefined1 *)(param_1 + 7) = param_5;
|
|
|
|
param_1[5] = param_4;
|
|
|
|
*param_1 = &PTR_FUN_007c4f14;
|
|
|
|
param_1[6] = param_4 + -1;
|
|
|
|
if (param_1[3] != 0) {
|
|
|
|
local_b4 = PTR_DAT_00818340;
|
|
|
|
InterlockedIncrement((LONG *)(PTR_DAT_00818340 + -0x10));
|
|
|
|
cVar1 = FUN_005c9eb0(param_1[5]);
|
|
|
|
if (cVar1 != '\0') {
|
|
|
|
FUN_0046a740();
|
|
|
|
}
|
|
|
|
puVar4 = (undefined4 *)(local_b4 + -0x14);
|
|
|
|
LVar2 = InterlockedDecrement((LONG *)(local_b4 + -0x10));
|
|
|
|
if ((LVar2 == 0) && (puVar4 != (undefined4 *)0x0)) {
|
|
|
|
(**(code **)*puVar4)();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (param_1[2] != 0) {
|
|
|
|
local_b4 = PTR_DAT_00818340;
|
|
|
|
InterlockedIncrement((LONG *)(PTR_DAT_00818340 + -0x10));
|
|
|
|
cVar1 = FUN_005c9f50(param_1[5]);
|
|
|
|
if (cVar1 != '\0') {
|
|
|
|
FUN_0042dc80();
|
|
|
|
FUN_0042cbe0(&local_b4);
|
|
|
|
FUN_004618a0();
|
|
|
|
(**(code **)(*(int *)param_1[2] + 0x110))();
|
|
|
|
FUN_0042e590();
|
|
|
|
}
|
|
|
|
puVar4 = (undefined4 *)(local_b4 + -0x14);
|
|
|
|
LVar2 = InterlockedDecrement((LONG *)(local_b4 + -0x10));
|
|
|
|
if ((LVar2 == 0) && (puVar4 != (undefined4 *)0x0)) {
|
|
|
|
(**(code **)*puVar4)();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (param_7 != '\0') {
|
|
|
|
(**(code **)(*DAT_008f958c + 8))(9,param_1[5]);
|
|
|
|
(**(code **)(*DAT_008f958c + 8))(9,param_1[6],param_1);
|
|
|
|
piVar3 = (int *)FUN_00415730(1,2,0x10000003);
|
|
|
|
if (piVar3 != (int *)0x0) {
|
|
|
|
local_b4 = (undefined *)0x1;
|
|
|
|
iStack_b0 = 0;
|
|
|
|
iStack_ac = 0;
|
|
|
|
FUN_004f1e30(param_1[6],&stack0xffffff38);
|
|
|
|
if (iStack_b0 != 0) {
|
|
|
|
(**(code **)(*DAT_008f958c + 8))(9,iStack_b0,param_1);
|
|
|
|
}
|
|
|
|
if (iStack_ac != 0) {
|
|
|
|
(**(code **)(*DAT_008f958c + 8))(9,iStack_ac,param_1);
|
|
|
|
}
|
|
|
|
(**(code **)(*piVar3 + 0x14))();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f24e0 at 0x004F24E0 (size: 4) ---
|
|
|
|
|
|
undefined4 __fastcall FUN_004f24e0(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
return *(undefined4 *)(param_1 + 0x18);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f24f0 at 0x004F24F0 (size: 30) ---
|
|
|
|
|
|
void * __thiscall FUN_004f24f0(void *param_1,byte param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_004f1f70();
|
|
|
|
if ((param_2 & 1) != 0) {
|
|
|
|
operator_delete(param_1);
|
|
|
|
}
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f2510 at 0x004F2510 (size: 85) ---
|
|
|
|
|
|
undefined4 __thiscall FUN_004f2510(int param_1,uint param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
uint *puVar1;
|
|
|
|
|
|
|
|
if ((*(uint *)(param_1 + 0x44) != 0) && (*(int *)(param_1 + 0x40) != 0)) {
|
|
|
|
puVar1 = *(uint **)(*(int *)(param_1 + 0x40) + (param_2 % *(uint *)(param_1 + 0x44)) * 4);
|
|
|
|
if (puVar1 != (uint *)0x0) {
|
|
|
|
while (param_2 != *puVar1) {
|
|
|
|
puVar1 = (uint *)puVar1[0x18];
|
|
|
|
if (puVar1 == (uint *)0x0) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (puVar1 + 2 != (uint *)0x0) {
|
|
|
|
FUN_004f1fc0(puVar1 + 2);
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f2c40 at 0x004F2C40 (size: 341) ---
|
|
|
|
|
|
undefined4 __thiscall FUN_004f2c40(int param_1,int *param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
char cVar1;
|
|
|
|
int *piVar2;
|
|
|
|
LONG LVar3;
|
|
|
|
int iVar4;
|
|
|
|
undefined4 *puVar5;
|
|
|
|
code *pcVar6;
|
|
|
|
undefined *local_10;
|
|
|
|
undefined *local_c;
|
|
|
|
int local_8;
|
|
|
|
int local_4;
|
|
|
|
|
|
|
|
local_c = PTR_DAT_00818340;
|
|
|
|
InterlockedIncrement((LONG *)(PTR_DAT_00818340 + -0x10));
|
|
|
|
cVar1 = FUN_005c9c90(*(undefined4 *)(param_1 + 0x14),&local_c);
|
|
|
|
pcVar6 = InterlockedDecrement_exref;
|
|
|
|
if (cVar1 != '\0') {
|
|
|
|
FUN_00402730(&DAT_0079d2e0);
|
|
|
|
piVar2 = (int *)FUN_004086c0(&local_4,&local_8);
|
|
|
|
iVar4 = *param_2;
|
|
|
|
if (iVar4 != *piVar2) {
|
|
|
|
LVar3 = InterlockedDecrement((LONG *)(iVar4 + -0x10));
|
|
|
|
if ((LVar3 == 0) && ((undefined4 *)(iVar4 + -0x14) != (undefined4 *)0x0)) {
|
|
|
|
(*(code *)**(undefined4 **)(iVar4 + -0x14))(1);
|
|
|
|
}
|
|
|
|
iVar4 = *piVar2;
|
|
|
|
*param_2 = iVar4;
|
|
|
|
InterlockedIncrement((LONG *)(iVar4 + -0x10));
|
|
|
|
}
|
|
|
|
pcVar6 = InterlockedDecrement_exref;
|
|
|
|
LVar3 = InterlockedDecrement((LONG *)(local_4 + -0x10));
|
|
|
|
if ((LVar3 == 0) && ((undefined4 *)(local_4 + -0x14) != (undefined4 *)0x0)) {
|
|
|
|
(*(code *)**(undefined4 **)(local_4 + -0x14))(1);
|
|
|
|
}
|
|
|
|
LVar3 = InterlockedDecrement((LONG *)(local_8 + -0x10));
|
|
|
|
if ((LVar3 == 0) && ((undefined4 *)(local_8 + -0x14) != (undefined4 *)0x0)) {
|
|
|
|
(*(code *)**(undefined4 **)(local_8 + -0x14))(1);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
local_10 = PTR_DAT_00818340;
|
|
|
|
InterlockedIncrement((LONG *)(PTR_DAT_00818340 + -0x10));
|
|
|
|
FUN_005c9d00(*(undefined4 *)(param_1 + 0x14),&local_10);
|
|
|
|
if (*(int *)(local_10 + -4) != 1) {
|
|
|
|
FUN_00402490(local_10,*(int *)(local_10 + -4) + -1);
|
|
|
|
}
|
|
|
|
puVar5 = (undefined4 *)(local_10 + -0x14);
|
|
|
|
iVar4 = (*pcVar6)(local_10 + -0x10);
|
|
|
|
if ((iVar4 == 0) && (puVar5 != (undefined4 *)0x0)) {
|
|
|
|
(**(code **)*puVar5)(1);
|
|
|
|
}
|
|
|
|
puVar5 = (undefined4 *)(local_10 + -0x14);
|
|
|
|
iVar4 = (*pcVar6)(local_10 + -0x10);
|
|
|
|
if ((iVar4 == 0) && (puVar5 != (undefined4 *)0x0)) {
|
|
|
|
(**(code **)*puVar5)(1);
|
|
|
|
}
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f2da0 at 0x004F2DA0 (size: 586) ---
|
|
|
|
|
|
undefined4 * __thiscall
|
|
|
|
FUN_004f2da0(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
|
|
|
|
undefined4 param_5,undefined4 param_6,char param_7)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
char cVar2;
|
|
|
|
LONG LVar3;
|
|
|
|
int *piVar4;
|
|
|
|
int *piVar5;
|
|
|
|
undefined1 *puVar6;
|
|
|
|
undefined *puVar7;
|
|
|
|
int **ppiVar8;
|
|
|
|
undefined4 uVar9;
|
|
|
|
int *local_a4;
|
|
|
|
int *piStack_a0;
|
|
|
|
undefined4 uStack_9c;
|
|
|
|
undefined1 auStack_98 [4];
|
|
|
|
undefined1 auStack_94 [4];
|
|
|
|
undefined1 auStack_90 [56];
|
|
|
|
int iStack_58;
|
|
|
|
int iStack_54;
|
|
|
|
|
|
|
|
FUN_004f20b0(param_2,param_3,param_4,4,param_5,param_6);
|
|
|
|
*param_1 = &PTR_FUN_007c4fa4;
|
|
|
|
param_1[5] = param_5;
|
|
|
|
param_1[6] = 0;
|
|
|
|
if (param_1[3] != 0) {
|
|
|
|
local_a4 = (int *)PTR_DAT_00818340;
|
|
|
|
InterlockedIncrement((LONG *)(PTR_DAT_00818340 + -0x10));
|
|
|
|
cVar2 = FUN_005c9920(param_1[5],&local_a4);
|
|
|
|
if (cVar2 != '\0') {
|
|
|
|
FUN_0046a740(&local_a4);
|
|
|
|
}
|
|
|
|
piVar4 = local_a4 + -5;
|
|
|
|
LVar3 = InterlockedDecrement(local_a4 + -4);
|
|
|
|
if ((LVar3 == 0) && (piVar4 != (int *)0x0)) {
|
|
|
|
(**(code **)*piVar4)(1);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (param_1[2] != 0) {
|
|
|
|
local_a4 = (int *)PTR_DAT_00818340;
|
|
|
|
InterlockedIncrement((LONG *)(PTR_DAT_00818340 + -0x10));
|
|
|
|
cVar2 = FUN_004f2c40(&local_a4);
|
|
|
|
if (cVar2 != '\0') {
|
|
|
|
FUN_0042dc80();
|
|
|
|
FUN_0042cbe0(&local_a4,1);
|
|
|
|
FUN_004618a0(auStack_90);
|
|
|
|
(**(code **)(*(int *)param_1[2] + 0x110))(1);
|
|
|
|
FUN_0042e590();
|
|
|
|
}
|
|
|
|
piVar4 = local_a4 + -5;
|
|
|
|
LVar3 = InterlockedDecrement(local_a4 + -4);
|
|
|
|
if ((LVar3 == 0) && (piVar4 != (int *)0x0)) {
|
|
|
|
(**(code **)*piVar4)(1);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (param_7 != '\0') {
|
|
|
|
(**(code **)(*DAT_008f958c + 8))(4,param_1[5],param_1);
|
|
|
|
piVar4 = (int *)FUN_00415730(4,2,0x10000004);
|
|
|
|
if (piVar4 != (int *)0x0) {
|
|
|
|
FUN_004f1ef0();
|
|
|
|
FUN_004f2510(param_1[5],auStack_90);
|
|
|
|
if (iStack_58 != 0) {
|
|
|
|
(**(code **)(*DAT_008f958c + 8))(4,iStack_58,param_1);
|
|
|
|
}
|
|
|
|
if (iStack_54 != 0) {
|
|
|
|
(**(code **)(*DAT_008f958c + 8))(4,iStack_54,param_1);
|
|
|
|
}
|
|
|
|
FUN_004f1f70();
|
|
|
|
(**(code **)(*piVar4 + 0x14))();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
ppiVar8 = &local_a4;
|
|
|
|
puVar6 = auStack_94;
|
|
|
|
puVar7 = &DAT_007c4ddc;
|
|
|
|
local_a4 = (int *)0x0;
|
|
|
|
FUN_00406d10(puVar6,&DAT_007c4ddc,ppiVar8);
|
|
|
|
FUN_00406570(puVar6,puVar7,ppiVar8);
|
|
|
|
piVar4 = local_a4;
|
|
|
|
uVar9 = 0;
|
|
|
|
piStack_a0 = (int *)0x0;
|
|
|
|
uStack_9c = 0;
|
|
|
|
piVar5 = local_a4;
|
|
|
|
if (local_a4 != (int *)0x0) {
|
|
|
|
(**(code **)(*local_a4 + 0x10))(local_a4,0);
|
|
|
|
}
|
|
|
|
piVar5 = (int *)FUN_0048bb00(auStack_98,piVar5,uVar9);
|
|
|
|
iVar1 = *piVar5;
|
|
|
|
if (piVar4 != (int *)0x0) {
|
|
|
|
(**(code **)(*piVar4 + 0x14))();
|
|
|
|
}
|
|
|
|
piVar4 = piStack_a0;
|
|
|
|
if (piStack_a0 != (int *)0x0) {
|
|
|
|
if (-1 < iVar1) {
|
|
|
|
FUN_00592b70(param_1[5],param_1 + 6);
|
|
|
|
}
|
|
|
|
(**(code **)(*piVar4 + 0x14))();
|
|
|
|
}
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f2ff0 at 0x004F2FF0 (size: 169) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
float10 __fastcall FUN_004f2ff0(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
double dVar1;
|
|
|
|
int iVar2;
|
|
|
|
int iVar3;
|
|
|
|
undefined **local_60;
|
|
|
|
int local_5c;
|
|
|
|
undefined4 local_58;
|
|
|
|
undefined4 local_54;
|
|
|
|
double local_38;
|
|
|
|
double local_30;
|
|
|
|
|
|
|
|
local_60 = &PTR_FUN_007b26fc;
|
|
|
|
local_5c = 0;
|
|
|
|
local_58 = 0;
|
|
|
|
local_54 = 0;
|
|
|
|
iVar2 = FUN_0058fd80(&local_60);
|
|
|
|
iVar3 = local_5c;
|
|
|
|
if (iVar2 != 0) {
|
|
|
|
for (; iVar3 != 0; iVar3 = *(int *)(iVar3 + 0x50)) {
|
|
|
|
if (*(uint *)(param_1 + 0x14) == (*(uint *)(iVar3 + 4) & 0xffff)) {
|
|
|
|
FUN_004b8a00(iVar3);
|
|
|
|
local_60 = &PTR_FUN_007b26fc;
|
|
|
|
dVar1 = (local_38 + local_30) - _DAT_008379a8;
|
|
|
|
FUN_004b86f0();
|
|
|
|
return (float10)dVar1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
local_60 = &PTR_FUN_007b26fc;
|
|
|
|
FUN_004b86f0();
|
|
|
|
return (float10)_DAT_00795610;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f30a0 at 0x004F30A0 (size: 186) ---
|
|
|
|
|
|
undefined4 __thiscall FUN_004f30a0(int param_1,int *param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
int *piVar2;
|
|
|
|
LONG LVar3;
|
|
|
|
int local_8;
|
|
|
|
undefined4 *local_4;
|
|
|
|
|
|
|
|
iVar1 = FUN_00567c00();
|
|
|
|
if (iVar1 == 0) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
piVar2 = (int *)FUN_00567ef0(&local_4,*(undefined4 *)(param_1 + 0x14));
|
|
|
|
FUN_00404a40(0,*piVar2 + 0x14);
|
|
|
|
LVar3 = InterlockedDecrement(local_4 + 1);
|
|
|
|
if ((LVar3 == 0) && (local_4 != (undefined4 *)0x0)) {
|
|
|
|
(**(code **)*local_4)(1);
|
|
|
|
}
|
|
|
|
iVar1 = *param_2;
|
|
|
|
if (iVar1 != local_8) {
|
|
|
|
LVar3 = InterlockedDecrement((LONG *)(iVar1 + -0x10));
|
|
|
|
if ((LVar3 == 0) && ((undefined4 *)(iVar1 + -0x14) != (undefined4 *)0x0)) {
|
|
|
|
(*(code *)**(undefined4 **)(iVar1 + -0x14))(1);
|
|
|
|
}
|
|
|
|
*param_2 = local_8;
|
|
|
|
InterlockedIncrement((LONG *)(local_8 + -0x10));
|
|
|
|
}
|
|
|
|
LVar3 = InterlockedDecrement((LONG *)(local_8 + -0x10));
|
|
|
|
if ((LVar3 == 0) && ((undefined4 *)(local_8 + -0x14) != (undefined4 *)0x0)) {
|
|
|
|
(*(code *)**(undefined4 **)(local_8 + -0x14))(1);
|
|
|
|
}
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f31c0 at 0x004F31C0 (size: 236) ---
|
|
|
|
|
|
undefined4 * __thiscall
|
|
|
|
FUN_004f31c0(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined *param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
char cVar1;
|
|
|
|
LONG LVar2;
|
|
|
|
int iVar3;
|
|
|
|
int iVar4;
|
|
|
|
undefined4 uVar5;
|
|
|
|
undefined4 *puVar6;
|
|
|
|
undefined *puVar7;
|
|
|
|
|
|
|
|
puVar7 = param_4;
|
|
|
|
FUN_004f20b0(param_2,param_3,param_3,0,param_4,DAT_00841e74);
|
|
|
|
*param_1 = &PTR_FUN_007c4fd4;
|
|
|
|
param_1[5] = puVar7;
|
|
|
|
if (param_1[3] != 0) {
|
|
|
|
param_4 = PTR_DAT_00818340;
|
|
|
|
InterlockedIncrement((LONG *)(PTR_DAT_00818340 + -0x10));
|
|
|
|
cVar1 = FUN_004f30a0(¶m_4);
|
|
|
|
if (cVar1 != '\0') {
|
|
|
|
FUN_0046a740(¶m_4);
|
|
|
|
}
|
|
|
|
puVar6 = (undefined4 *)(param_4 + -0x14);
|
|
|
|
LVar2 = InterlockedDecrement((LONG *)(param_4 + -0x10));
|
|
|
|
if ((LVar2 == 0) && (puVar6 != (undefined4 *)0x0)) {
|
|
|
|
(**(code **)*puVar6)(1);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
iVar3 = FUN_00463c00(0x10000129);
|
|
|
|
if (iVar3 != 0) {
|
|
|
|
FUN_00567c00(puVar7);
|
|
|
|
iVar3 = FUN_00569990(puVar7);
|
|
|
|
if (iVar3 != 0) {
|
|
|
|
FUN_006a0570(1);
|
|
|
|
iVar4 = FUN_005df0f5(0xc);
|
|
|
|
if (iVar4 != 0) {
|
|
|
|
uVar5 = FUN_00694a00(iVar3);
|
|
|
|
FUN_006a0610(uVar5);
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
FUN_006a0610(0);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f32b0 at 0x004F32B0 (size: 4) ---
|
|
|
|
|
|
undefined4 __fastcall FUN_004f32b0(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
return *(undefined4 *)(param_1 + 0x14);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f32c0 at 0x004F32C0 (size: 30) ---
|
|
|
|
|
|
void * __thiscall FUN_004f32c0(void *param_1,byte param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_004f1b00();
|
|
|
|
if ((param_2 & 1) != 0) {
|
|
|
|
operator_delete(param_1);
|
|
|
|
}
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f32e0 at 0x004F32E0 (size: 52) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_004f32e0(undefined4 *param_1,undefined4 param_2,undefined4 param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_004f3a00(param_2,param_3);
|
|
|
|
*param_1 = &PTR_FUN_007c51f8;
|
|
|
|
param_1[0x17c] = &PTR_FUN_007aa43c;
|
|
|
|
param_1[0x180] = 0;
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f3320 at 0x004F3320 (size: 21) ---
|
|
|
|
|
|
void __fastcall FUN_004f3320(undefined4 *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
*param_1 = &PTR_FUN_007c51f8;
|
|
|
|
param_1[0x17c] = &PTR_FUN_007aa43c;
|
|
|
|
FUN_004f3a50();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f3340 at 0x004F3340 (size: 46) ---
|
|
|
|
|
|
void __thiscall FUN_004f3340(int *param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_00463830(param_2);
|
|
|
|
if ((char)param_2 != '\0') {
|
|
|
|
(**(code **)(*param_1 + 0x138))();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
(**(code **)(*param_1 + 0x140))();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f3370 at 0x004F3370 (size: 26) ---
|
|
|
|
|
|
void FUN_004f3370(void)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_0055e1d0();
|
|
|
|
FUN_0059b670(0);
|
|
|
|
FUN_004f38c0();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f3390 at 0x004F3390 (size: 29) ---
|
|
|
|
|
|
uint __fastcall FUN_004f3390(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
uint in_EAX;
|
|
|
|
int iVar1;
|
|
|
|
|
|
|
|
if (*(int *)(param_1 + 0x600) != 0) {
|
|
|
|
iVar1 = FUN_0046f670(1,0);
|
|
|
|
return (uint)(iVar1 != 0);
|
|
|
|
}
|
|
|
|
return in_EAX & 0xffffff00;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f33b0 at 0x004F33B0 (size: 114) ---
|
|
|
|
|
|
void FUN_004f33b0(int *param_1,undefined4 param_2,undefined4 param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined1 local_90 [144];
|
|
|
|
|
|
|
|
FUN_0042dc80();
|
|
|
|
FUN_0042c9c0(param_2,0x10000003);
|
|
|
|
FUN_0046a350(local_90);
|
|
|
|
FUN_0042c9c0(param_3,0x10000003);
|
|
|
|
(**(code **)(*param_1 + 0x2b4))(local_90);
|
|
|
|
FUN_0042e590();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f3430 at 0x004F3430 (size: 124) ---
|
|
|
|
|
|
void FUN_004f3430(void)
|
|
|
|
|
|
|
|
{
|
|
|
|
char cVar1;
|
|
|
|
int *piVar2;
|
|
|
|
int *piVar3;
|
|
|
|
|
|
|
|
piVar2 = (int *)FUN_00463c00(0x100001fc);
|
|
|
|
piVar3 = (int *)FUN_00463c00(0x100001fd);
|
|
|
|
cVar1 = FUN_004f39c0();
|
|
|
|
if (cVar1 == '\0') {
|
|
|
|
if (piVar2 != (int *)0x0) {
|
|
|
|
(**(code **)(*piVar2 + 0x9c))(0xd);
|
|
|
|
}
|
|
|
|
if (piVar3 != (int *)0x0) {
|
|
|
|
(**(code **)(*piVar3 + 0x9c))(0xd);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
if (piVar2 != (int *)0x0) {
|
|
|
|
(**(code **)(*piVar2 + 0x9c))(1);
|
|
|
|
}
|
|
|
|
if (piVar3 != (int *)0x0) {
|
|
|
|
(**(code **)(*piVar3 + 0x9c))(1);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f34e0 at 0x004F34E0 (size: 46) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_004f34e0(undefined4 *param_1,byte param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
*param_1 = &PTR_FUN_007c51f8;
|
|
|
|
param_1[0x17c] = &PTR_FUN_007aa43c;
|
|
|
|
FUN_004f3a50();
|
|
|
|
if ((param_2 & 1) != 0) {
|
|
|
|
operator_delete(param_1);
|
|
|
|
}
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f3510 at 0x004F3510 (size: 127) ---
|
|
|
|
|
|
uint __fastcall FUN_004f3510(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
char cVar1;
|
|
|
|
uint in_EAX;
|
|
|
|
int *piVar2;
|
|
|
|
int iVar3;
|
|
|
|
undefined4 unaff_retaddr;
|
|
|
|
|
|
|
|
if (*(int *)(param_1 + 0x600) != 0) {
|
|
|
|
piVar2 = (int *)FUN_0046f670(0,0);
|
|
|
|
in_EAX = 0;
|
|
|
|
if (piVar2 != (int *)0x0) {
|
|
|
|
iVar3 = (**(code **)(*piVar2 + 0x94))(0xc);
|
|
|
|
in_EAX = 0;
|
|
|
|
if (iVar3 != 0) {
|
|
|
|
FUN_0042dc80();
|
|
|
|
FUN_0042c9c0(unaff_retaddr,0x10000003);
|
|
|
|
cVar1 = FUN_0042ce00(1);
|
|
|
|
if (cVar1 != '\0') {
|
|
|
|
FUN_0046a350(&stack0xffffff6c);
|
|
|
|
}
|
|
|
|
in_EAX = FUN_0042e590();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return in_EAX & 0xffffff00;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f3590 at 0x004F3590 (size: 93) ---
|
|
|
|
|
|
int __thiscall FUN_004f3590(int param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
int *piVar1;
|
|
|
|
int iVar2;
|
|
|
|
undefined4 unaff_retaddr;
|
|
|
|
|
|
|
|
iVar2 = 0;
|
|
|
|
if (*(int *)(param_1 + 0x600) != 0) {
|
|
|
|
piVar1 = (int *)FUN_0046f670(5,0);
|
|
|
|
if (piVar1 != (int *)0x0) {
|
|
|
|
iVar2 = (**(code **)(*piVar1 + 0x94))(0x10000036);
|
|
|
|
if (iVar2 == 0) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
iVar2 = iVar2 + -0x1c;
|
|
|
|
if (iVar2 != 0) {
|
|
|
|
FUN_00484b90(unaff_retaddr,param_2);
|
|
|
|
FUN_004f3af0(iVar2);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return iVar2;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f35f0 at 0x004F35F0 (size: 104) ---
|
|
|
|
|
|
int __fastcall FUN_004f35f0(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
int *piVar2;
|
|
|
|
int iVar3;
|
|
|
|
undefined4 unaff_retaddr;
|
|
|
|
|
|
|
|
iVar3 = 0;
|
|
|
|
if (*(int *)(param_1 + 0x600) != 0) {
|
|
|
|
iVar1 = FUN_0046f670(2,0);
|
|
|
|
if (iVar1 != 0) {
|
|
|
|
piVar2 = (int *)FUN_00463c00(0x10000219);
|
|
|
|
if (piVar2 != (int *)0x0) {
|
|
|
|
iVar3 = (**(code **)(*piVar2 + 0x94))(0x10000035);
|
|
|
|
if (iVar3 == 0) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
iVar3 = iVar3 + -0x20;
|
|
|
|
if (iVar3 != 0) {
|
|
|
|
FUN_00486f50(unaff_retaddr);
|
|
|
|
FUN_004f3af0(iVar3);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return iVar3;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f3660 at 0x004F3660 (size: 104) ---
|
|
|
|
|
|
int __fastcall FUN_004f3660(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
int *piVar2;
|
|
|
|
int iVar3;
|
|
|
|
undefined4 unaff_retaddr;
|
|
|
|
|
|
|
|
iVar3 = 0;
|
|
|
|
if (*(int *)(param_1 + 0x600) != 0) {
|
|
|
|
iVar1 = FUN_0046f670(2,0);
|
|
|
|
if (iVar1 != 0) {
|
|
|
|
piVar2 = (int *)FUN_00463c00(0x10000219);
|
|
|
|
if (piVar2 != (int *)0x0) {
|
|
|
|
iVar3 = (**(code **)(*piVar2 + 0x94))(0x10000035);
|
|
|
|
if (iVar3 == 0) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
iVar3 = iVar3 + -0x20;
|
|
|
|
if (iVar3 != 0) {
|
|
|
|
FUN_00487240(unaff_retaddr);
|
|
|
|
FUN_004f3af0(iVar3);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return iVar3;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f36d0 at 0x004F36D0 (size: 117) ---
|
|
|
|
|
|
int __thiscall FUN_004f36d0(int param_1,undefined4 param_2,char param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
int *piVar2;
|
|
|
|
int iVar3;
|
|
|
|
undefined4 unaff_retaddr;
|
|
|
|
|
|
|
|
iVar3 = 0;
|
|
|
|
if (*(int *)(param_1 + 0x600) != 0) {
|
|
|
|
iVar1 = FUN_0046f670((-(param_3 != '\0') & 3U) + 3,0);
|
|
|
|
if (iVar1 != 0) {
|
|
|
|
piVar2 = (int *)FUN_00463c00(0x1000021c);
|
|
|
|
if (piVar2 != (int *)0x0) {
|
|
|
|
iVar3 = (**(code **)(*piVar2 + 0x94))(0x10000037);
|
|
|
|
if (iVar3 == 0) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
iVar3 = iVar3 + -0x20;
|
|
|
|
if (iVar3 != 0) {
|
|
|
|
FUN_00485090(unaff_retaddr);
|
|
|
|
FUN_004f3af0(iVar3);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return iVar3;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f3750 at 0x004F3750 (size: 139) ---
|
|
|
|
|
|
int __thiscall FUN_004f3750(int param_1,char param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
int *piVar2;
|
|
|
|
int iVar3;
|
|
|
|
undefined4 unaff_retaddr;
|
|
|
|
|
|
|
|
iVar3 = 0;
|
|
|
|
if (*(int *)(param_1 + 0x600) != 0) {
|
|
|
|
iVar1 = FUN_0046f670(4,0);
|
|
|
|
if (iVar1 != 0) {
|
|
|
|
piVar2 = (int *)FUN_00463c00(0x10000224);
|
|
|
|
if (piVar2 != (int *)0x0) {
|
|
|
|
iVar3 = (**(code **)(*piVar2 + 0x94))(0x10000038);
|
|
|
|
if (iVar3 == 0) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
iVar3 = iVar3 + -0x20;
|
|
|
|
if (iVar3 != 0) {
|
|
|
|
if (param_2 != '\0') {
|
|
|
|
FUN_00484740(unaff_retaddr);
|
|
|
|
FUN_004f3af0(iVar3);
|
|
|
|
return iVar3;
|
|
|
|
}
|
|
|
|
FUN_004845c0(unaff_retaddr);
|
|
|
|
FUN_004f3af0(iVar3);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return iVar3;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f37e0 at 0x004F37E0 (size: 217) ---
|
|
|
|
|
|
void FUN_004f37e0(int param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
int *piVar2;
|
|
|
|
undefined1 auStack_90 [144];
|
|
|
|
|
|
|
|
iVar1 = (**(code **)(*(int *)(param_1 + 0x20) + 0xa0))();
|
|
|
|
if (iVar1 != 0) {
|
|
|
|
piVar2 = (int *)FUN_00463c00(0x1000021e);
|
|
|
|
if ((piVar2 != (int *)0x0) && (iVar1 = (**(code **)(*piVar2 + 0x94))(0xc), iVar1 != 0)) {
|
|
|
|
FUN_0042dc80();
|
|
|
|
FUN_0042c9c0(param_2,0x10000003);
|
|
|
|
FUN_0046a350(auStack_90);
|
|
|
|
FUN_0042e590();
|
|
|
|
}
|
|
|
|
piVar2 = (int *)FUN_00463c00(0x1000021f);
|
|
|
|
if ((piVar2 != (int *)0x0) && (iVar1 = (**(code **)(*piVar2 + 0x94))(0xc), iVar1 != 0)) {
|
|
|
|
FUN_0042dc80();
|
|
|
|
FUN_0042c9c0(param_2,0x10000003);
|
|
|
|
FUN_0046a350(&stack0xffffff6c);
|
|
|
|
FUN_0042e590();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f38c0 at 0x004F38C0 (size: 75) ---
|
|
|
|
|
|
byte __fastcall FUN_004f38c0(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int *piVar1;
|
|
|
|
byte bVar2;
|
|
|
|
byte bVar3;
|
|
|
|
uint uVar4;
|
|
|
|
|
|
|
|
uVar4 = 0;
|
|
|
|
bVar3 = 1;
|
|
|
|
if (*(int *)(param_1 + 0x5fc) != 0) {
|
|
|
|
do {
|
|
|
|
piVar1 = *(int **)(*(int *)(param_1 + 0x5f4) + uVar4 * 4);
|
|
|
|
if (piVar1 != (int *)0x0) {
|
|
|
|
bVar2 = (**(code **)(*piVar1 + 0x2c8))();
|
|
|
|
bVar3 = bVar3 & bVar2;
|
|
|
|
}
|
|
|
|
uVar4 = uVar4 + 1;
|
|
|
|
} while (uVar4 < *(uint *)(param_1 + 0x5fc));
|
|
|
|
}
|
|
|
|
(*(code *)**(undefined4 **)(param_1 + 0x5f0))(0);
|
|
|
|
return bVar3;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f3910 at 0x004F3910 (size: 75) ---
|
|
|
|
|
|
byte __fastcall FUN_004f3910(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int *piVar1;
|
|
|
|
byte bVar2;
|
|
|
|
byte bVar3;
|
|
|
|
uint uVar4;
|
|
|
|
|
|
|
|
uVar4 = 0;
|
|
|
|
bVar3 = 1;
|
|
|
|
if (*(int *)(param_1 + 0x5fc) != 0) {
|
|
|
|
do {
|
|
|
|
piVar1 = *(int **)(*(int *)(param_1 + 0x5f4) + uVar4 * 4);
|
|
|
|
if (piVar1 != (int *)0x0) {
|
|
|
|
bVar2 = (**(code **)(*piVar1 + 0x2c4))();
|
|
|
|
bVar3 = bVar3 & bVar2;
|
|
|
|
}
|
|
|
|
uVar4 = uVar4 + 1;
|
|
|
|
} while (uVar4 < *(uint *)(param_1 + 0x5fc));
|
|
|
|
}
|
|
|
|
(*(code *)**(undefined4 **)(param_1 + 0x5f0))(0);
|
|
|
|
return bVar3;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f3960 at 0x004F3960 (size: 96) ---
|
|
|
|
|
|
byte __fastcall FUN_004f3960(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int *piVar1;
|
|
|
|
char cVar2;
|
|
|
|
byte bVar3;
|
|
|
|
byte bVar4;
|
|
|
|
uint uVar5;
|
|
|
|
|
|
|
|
uVar5 = 0;
|
|
|
|
bVar4 = 1;
|
|
|
|
if (*(int *)(param_1 + 0x5fc) != 0) {
|
|
|
|
do {
|
|
|
|
piVar1 = *(int **)(*(int *)(param_1 + 0x5f4) + uVar5 * 4);
|
|
|
|
if (piVar1 != (int *)0x0) {
|
|
|
|
cVar2 = (**(code **)(*piVar1 + 700))();
|
|
|
|
if (cVar2 != '\0') {
|
|
|
|
bVar3 = (**(code **)(**(int **)(*(int *)(param_1 + 0x5f4) + uVar5 * 4) + 0x2c0))();
|
|
|
|
bVar4 = bVar4 & bVar3;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
uVar5 = uVar5 + 1;
|
|
|
|
} while (uVar5 < *(uint *)(param_1 + 0x5fc));
|
|
|
|
}
|
|
|
|
(*(code *)**(undefined4 **)(param_1 + 0x5f0))(0);
|
|
|
|
return bVar4;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f39c0 at 0x004F39C0 (size: 62) ---
|
|
|
|
|
|
undefined4 __fastcall FUN_004f39c0(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int *piVar1;
|
|
|
|
char cVar2;
|
|
|
|
uint uVar3;
|
|
|
|
|
|
|
|
uVar3 = 0;
|
|
|
|
if (*(int *)(param_1 + 0x5fc) != 0) {
|
|
|
|
do {
|
|
|
|
piVar1 = *(int **)(*(int *)(param_1 + 0x5f4) + uVar3 * 4);
|
|
|
|
if (piVar1 != (int *)0x0) {
|
|
|
|
cVar2 = (**(code **)(*piVar1 + 700))();
|
|
|
|
if (cVar2 != '\0') {
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
uVar3 = uVar3 + 1;
|
|
|
|
} while (uVar3 < *(uint *)(param_1 + 0x5fc));
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f3a00 at 0x004F3A00 (size: 72) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_004f3a00(undefined4 *param_1,undefined4 param_2,undefined4 param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_00464900(param_2,param_3);
|
|
|
|
param_1[0x17c] = &PTR_LAB_007c538c;
|
|
|
|
*param_1 = &PTR_FUN_007c5398;
|
|
|
|
param_1[0x17c] = &PTR_LAB_007c538c;
|
|
|
|
param_1[0x17d] = 0;
|
|
|
|
param_1[0x17e] = 0;
|
|
|
|
param_1[0x17f] = 0;
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f3a50 at 0x004F3A50 (size: 60) ---
|
|
|
|
|
|
void __fastcall FUN_004f3a50(undefined4 *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
*param_1 = &PTR_FUN_007c5398;
|
|
|
|
param_1[0x17c] = &PTR_LAB_007c538c;
|
|
|
|
if ((param_1[0x17e] & 0x80000000) == 0x80000000) {
|
|
|
|
operator_delete__((void *)param_1[0x17d]);
|
|
|
|
}
|
|
|
|
FUN_00464e00();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f3a90 at 0x004F3A90 (size: 81) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_004f3a90(undefined4 *param_1,byte param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
*param_1 = &PTR_FUN_007c5398;
|
|
|
|
param_1[0x17c] = &PTR_LAB_007c538c;
|
|
|
|
if ((param_1[0x17e] & 0x80000000) == 0x80000000) {
|
|
|
|
operator_delete__((void *)param_1[0x17d]);
|
|
|
|
}
|
|
|
|
FUN_00464e00();
|
|
|
|
if ((param_2 & 1) != 0) {
|
|
|
|
operator_delete(param_1);
|
|
|
|
}
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f3af0 at 0x004F3AF0 (size: 117) ---
|
|
|
|
|
|
void __thiscall FUN_004f3af0(int param_1,int *param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
char cVar1;
|
|
|
|
uint uVar2;
|
|
|
|
undefined4 uVar3;
|
|
|
|
|
|
|
|
if (param_2 == (int *)0x0) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
uVar2 = *(uint *)(param_1 + 0x5f8) & 0x7fffffff;
|
|
|
|
if (uVar2 <= *(uint *)(param_1 + 0x5fc)) {
|
|
|
|
uVar3 = FUN_00453850(uVar2 + 1);
|
|
|
|
cVar1 = FUN_004180a0(uVar3);
|
|
|
|
if (cVar1 == '\0') goto LAB_004f3b38;
|
|
|
|
}
|
|
|
|
*(int **)(*(int *)(param_1 + 0x5f4) + *(int *)(param_1 + 0x5fc) * 4) = param_2;
|
|
|
|
*(int *)(param_1 + 0x5fc) = *(int *)(param_1 + 0x5fc) + 1;
|
|
|
|
LAB_004f3b38:
|
|
|
|
if (param_1 == 0) {
|
|
|
|
(**(code **)(*param_2 + 0x2cc))(0);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
(**(code **)(*param_2 + 0x2cc))(param_1 + 0x5f0);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f3b70 at 0x004F3B70 (size: 57) ---
|
|
|
|
|
|
undefined4 __fastcall FUN_004f3b70(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined8 uVar1;
|
|
|
|
|
|
|
|
uVar1 = __allshl();
|
|
|
|
if (((*(uint *)(param_1 + 0x618) & (uint)uVar1) == 0) &&
|
|
|
|
((*(uint *)(param_1 + 0x61c) & (uint)((ulonglong)uVar1 >> 0x20)) == 0)) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f3bf0 at 0x004F3BF0 (size: 43) ---
|
|
|
|
|
|
void __fastcall FUN_004f3bf0(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
(**(code **)(**(int **)(param_1 + 0x60c) + 0xfc))();
|
|
|
|
(**(code **)(**(int **)(param_1 + 0x60c) + 0x104))();
|
|
|
|
FUN_0047a600(1);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f3c20 at 0x004F3C20 (size: 43) ---
|
|
|
|
|
|
void __fastcall FUN_004f3c20(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
(**(code **)(**(int **)(param_1 + 0x60c) + 0x108))();
|
|
|
|
(**(code **)(**(int **)(param_1 + 0x60c) + 0x100))();
|
|
|
|
FUN_0047a600(0);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f3c50 at 0x004F3C50 (size: 170) ---
|
|
|
|
|
|
void __thiscall FUN_004f3c50(int param_1,int param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
char cVar1;
|
|
|
|
undefined1 local_90 [4];
|
|
|
|
undefined4 local_8c;
|
|
|
|
|
|
|
|
FUN_0042dc80();
|
|
|
|
local_8c = DAT_00842194;
|
|
|
|
if (param_2 != 0x10000028) {
|
|
|
|
local_8c = DAT_00842198;
|
|
|
|
}
|
|
|
|
FUN_0042c980(6);
|
|
|
|
cVar1 = FUN_0042ce00(1);
|
|
|
|
if ((cVar1 != '\0') && (*(int **)(param_1 + 0x60c) != (int *)0x0)) {
|
|
|
|
(**(code **)(**(int **)(param_1 + 0x60c) + 0xfc))();
|
|
|
|
(**(code **)(**(int **)(param_1 + 0x60c) + 0x104))();
|
|
|
|
FUN_0047a600(1);
|
|
|
|
FUN_0046a350(local_90);
|
|
|
|
FUN_00467bc0();
|
|
|
|
FUN_00469100();
|
|
|
|
}
|
|
|
|
FUN_0042e590();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f3d00 at 0x004F3D00 (size: 56) ---
|
|
|
|
|
|
undefined4 __fastcall FUN_004f3d00(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
int iVar2;
|
|
|
|
|
|
|
|
iVar2 = *(int *)(DAT_0083e03c + 0x32c);
|
|
|
|
if (iVar2 != 0) {
|
|
|
|
iVar1 = FUN_0045fb30();
|
|
|
|
if (iVar2 == iVar1) {
|
|
|
|
iVar2 = FUN_00460330();
|
|
|
|
if (iVar2 == *(int *)(param_1 + 0x60c)) {
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f3d40 at 0x004F3D40 (size: 61) ---
|
|
|
|
|
|
void __thiscall FUN_004f3d40(int param_1,int param_2,int param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
|
|
|
|
iVar1 = FUN_00429a00();
|
|
|
|
if (((iVar1 == 0x1000007f) && (param_3 == *(int *)(param_1 + 0x5fc))) &&
|
|
|
|
(*(int **)(param_2 + 4) != (int *)0x0)) {
|
|
|
|
(**(code **)(**(int **)(param_2 + 4) + 0xe8))(param_1 + 0x618);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f3d80 at 0x004F3D80 (size: 60) ---
|
|
|
|
|
|
void __thiscall FUN_004f3d80(int param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
int *piVar1;
|
|
|
|
|
|
|
|
*(undefined4 *)(param_1 + 0x608) = param_2;
|
|
|
|
piVar1 = *(int **)(param_1 + 0xb4);
|
|
|
|
if (piVar1 == (int *)0x0) {
|
|
|
|
if (*(int *)(param_1 + 0xb0) == 0) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
piVar1 = (int *)FUN_004592b0();
|
|
|
|
if (piVar1 == (int *)0x0) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
piVar1 = (int *)(**(code **)(*piVar1 + 0x1c))();
|
|
|
|
if (piVar1 == (int *)0x0) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
/* WARNING: Could not recover jumptable at 0x004f3db6. Too many branches */
|
|
|
|
/* WARNING: Treating indirect jump as call */
|
|
|
|
(**(code **)(*piVar1 + 0x48))();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f3e20 at 0x004F3E20 (size: 1659) ---
|
|
|
|
|
|
void __fastcall FUN_004f3e20(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
undefined4 *puStack_1c;
|
|
|
|
undefined4 *local_18;
|
|
|
|
int *local_14;
|
|
|
|
undefined4 *local_10;
|
|
|
|
int *local_c;
|
|
|
|
|
|
|
|
if (*(int *)(param_1 + 0x610) != 0) {
|
|
|
|
local_18 = (undefined4 *)0x0;
|
|
|
|
local_14 = (int *)0x0;
|
|
|
|
FUN_0042a2d0(0x1b);
|
|
|
|
local_10 = (undefined4 *)0x0;
|
|
|
|
local_c = (int *)0x0;
|
|
|
|
FUN_0042a2d0(0x19);
|
|
|
|
if (local_c != (int *)0x0) {
|
|
|
|
FUN_00429b10();
|
|
|
|
(**(code **)(*local_c + 0x9c))(&DAT_0081d588);
|
|
|
|
}
|
|
|
|
iVar1 = 0x22;
|
|
|
|
do {
|
|
|
|
if (local_14 != (int *)0x0) {
|
|
|
|
FUN_00429b10();
|
|
|
|
(**(code **)(*local_14 + 0xfc))(&local_10);
|
|
|
|
}
|
|
|
|
iVar1 = iVar1 + -1;
|
|
|
|
} while (iVar1 != 0);
|
|
|
|
if (local_c != (int *)0x0) {
|
|
|
|
FUN_00429b10();
|
|
|
|
(**(code **)(*local_c + 0x9c))(&DAT_0081d4c8);
|
|
|
|
}
|
|
|
|
if (local_14 != (int *)0x0) {
|
|
|
|
FUN_00429b10();
|
|
|
|
(**(code **)(*local_14 + 0xf8))(2,&local_10);
|
|
|
|
}
|
|
|
|
if (local_c != (int *)0x0) {
|
|
|
|
FUN_00429b10();
|
|
|
|
(**(code **)(*local_c + 0x9c))(&DAT_0081d568);
|
|
|
|
}
|
|
|
|
if (local_14 != (int *)0x0) {
|
|
|
|
FUN_00429b10();
|
|
|
|
(**(code **)(*local_14 + 0xf8))(0xc,&local_10);
|
|
|
|
}
|
|
|
|
if (local_c != (int *)0x0) {
|
|
|
|
FUN_00429b10();
|
|
|
|
(**(code **)(*local_c + 0x9c))(&DAT_0081d4d8);
|
|
|
|
}
|
|
|
|
if (local_14 != (int *)0x0) {
|
|
|
|
FUN_00429b10();
|
|
|
|
(**(code **)(*local_14 + 0xf8))(3,&local_10);
|
|
|
|
if (local_14 != (int *)0x0) {
|
|
|
|
FUN_00429b10();
|
|
|
|
(**(code **)(*local_14 + 0xf8))(0x1f,&local_10);
|
|
|
|
if (local_14 != (int *)0x0) {
|
|
|
|
FUN_00429b10();
|
|
|
|
(**(code **)(*local_14 + 0xf8))(10,&local_10);
|
|
|
|
if (local_14 != (int *)0x0) {
|
|
|
|
FUN_00429b10();
|
|
|
|
(**(code **)(*local_14 + 0xf8))(0x13,&local_10);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (local_c != (int *)0x0) {
|
|
|
|
FUN_00429b10();
|
|
|
|
(**(code **)(*local_c + 0x9c))(&DAT_0081d4e8);
|
|
|
|
}
|
|
|
|
if (local_14 != (int *)0x0) {
|
|
|
|
FUN_00429b10();
|
|
|
|
(**(code **)(*local_14 + 0xf8))(4,&local_10);
|
|
|
|
if (local_14 != (int *)0x0) {
|
|
|
|
FUN_00429b10();
|
|
|
|
(**(code **)(*local_14 + 0xf8))(0xb,&local_10);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (local_c != (int *)0x0) {
|
|
|
|
FUN_00429b10();
|
|
|
|
(**(code **)(*local_c + 0x9c))(&DAT_0081d538);
|
|
|
|
}
|
|
|
|
if (local_14 != (int *)0x0) {
|
|
|
|
FUN_00429b10();
|
|
|
|
(**(code **)(*local_14 + 0xf8))(8,&local_10);
|
|
|
|
if (local_14 != (int *)0x0) {
|
|
|
|
FUN_00429b10();
|
|
|
|
(**(code **)(*local_14 + 0xf8))(9,&local_10);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (local_c != (int *)0x0) {
|
|
|
|
FUN_00429b10();
|
|
|
|
(**(code **)(*local_c + 0x9c))(&DAT_0081d578);
|
|
|
|
}
|
|
|
|
if (local_14 != (int *)0x0) {
|
|
|
|
FUN_00429b10();
|
|
|
|
(**(code **)(*local_14 + 0xf8))(0x12,&local_10);
|
|
|
|
if (local_14 != (int *)0x0) {
|
|
|
|
FUN_00429b10();
|
|
|
|
(**(code **)(*local_14 + 0xf8))(0x21,&local_10);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (local_c != (int *)0x0) {
|
|
|
|
FUN_00429b10();
|
|
|
|
(**(code **)(*local_c + 0x9c))(&DAT_0081d558);
|
|
|
|
}
|
|
|
|
if (local_14 != (int *)0x0) {
|
|
|
|
FUN_00429b10();
|
|
|
|
(**(code **)(*local_14 + 0xf8))(0x1b,&local_10);
|
|
|
|
if (local_14 != (int *)0x0) {
|
|
|
|
FUN_00429b10();
|
|
|
|
(**(code **)(*local_14 + 0xf8))(0x1c,&local_10);
|
|
|
|
if (local_14 != (int *)0x0) {
|
|
|
|
FUN_00429b10();
|
|
|
|
(**(code **)(*local_14 + 0xf8))(0x1d,&local_10);
|
|
|
|
if (local_14 != (int *)0x0) {
|
|
|
|
FUN_00429b10();
|
|
|
|
(**(code **)(*local_14 + 0xf8))(0x1e,&local_10);
|
|
|
|
if (local_14 != (int *)0x0) {
|
|
|
|
FUN_00429b10();
|
|
|
|
(**(code **)(*local_14 + 0xf8))(0x20,&local_10);
|
|
|
|
if (local_14 != (int *)0x0) {
|
|
|
|
FUN_00429b10();
|
|
|
|
(**(code **)(*local_14 + 0xf8))(0xe,&local_10);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (local_c != (int *)0x0) {
|
|
|
|
FUN_00429b10();
|
|
|
|
(**(code **)(*local_c + 0x9c))(&DAT_0081d508);
|
|
|
|
}
|
|
|
|
if (local_14 != (int *)0x0) {
|
|
|
|
FUN_00429b10();
|
|
|
|
(**(code **)(*local_14 + 0xf8))(0xf,&local_10);
|
|
|
|
if (local_14 != (int *)0x0) {
|
|
|
|
FUN_00429b10();
|
|
|
|
(**(code **)(*local_14 + 0xf8))(6,&local_10);
|
|
|
|
if (local_14 != (int *)0x0) {
|
|
|
|
FUN_00429b10();
|
|
|
|
(**(code **)(*local_14 + 0xf8))(0x15,&local_10);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (local_c != (int *)0x0) {
|
|
|
|
FUN_00429b10();
|
|
|
|
(**(code **)(*local_c + 0x9c))(&DAT_0081d518);
|
|
|
|
}
|
|
|
|
if (local_14 != (int *)0x0) {
|
|
|
|
FUN_00429b10();
|
|
|
|
(**(code **)(*local_14 + 0xf8))(0x16,&local_10);
|
|
|
|
}
|
|
|
|
if (local_c != (int *)0x0) {
|
|
|
|
FUN_00429b10();
|
|
|
|
(**(code **)(*local_c + 0x9c))(&DAT_0081d528);
|
|
|
|
}
|
|
|
|
if (local_14 != (int *)0x0) {
|
|
|
|
FUN_00429b10();
|
|
|
|
(**(code **)(*local_14 + 0xf8))(7,&local_10);
|
|
|
|
if (local_14 != (int *)0x0) {
|
|
|
|
FUN_00429b10();
|
|
|
|
(**(code **)(*local_14 + 0xf8))(0x11,&local_10);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (local_c != (int *)0x0) {
|
|
|
|
FUN_00429b10();
|
|
|
|
(**(code **)(*local_c + 0x9c))(&DAT_0081d548);
|
|
|
|
}
|
|
|
|
if (local_14 != (int *)0x0) {
|
|
|
|
FUN_00429b10();
|
|
|
|
(**(code **)(*local_14 + 0xf8))(0xd,&local_10);
|
|
|
|
}
|
|
|
|
if (local_c != (int *)0x0) {
|
|
|
|
FUN_00429b10();
|
|
|
|
(**(code **)(*local_c + 0x9c))(&DAT_0081d4f8);
|
|
|
|
}
|
|
|
|
if (local_14 != (int *)0x0) {
|
|
|
|
FUN_00429b10();
|
|
|
|
(**(code **)(*local_14 + 0xf8))(5,&local_10);
|
|
|
|
}
|
|
|
|
if (local_c != (int *)0x0) {
|
|
|
|
FUN_00429b10();
|
|
|
|
(**(code **)(*local_c + 0x9c))(&DAT_0081d4b8);
|
|
|
|
}
|
|
|
|
if (local_14 != (int *)0x0) {
|
|
|
|
FUN_00429b10();
|
|
|
|
(**(code **)(*local_14 + 0xf8))(0x1a,&local_10);
|
|
|
|
}
|
|
|
|
(**(code **)(**(int **)(param_1 + 0x610) + 0xd4))(&local_18);
|
|
|
|
if (local_14 != (int *)0x0) {
|
|
|
|
iVar1 = local_14[1];
|
|
|
|
local_14[1] = iVar1 + -1;
|
|
|
|
if (iVar1 + -1 == 0) {
|
|
|
|
(**(code **)*local_14)(1);
|
|
|
|
}
|
|
|
|
local_14 = (int *)0x0;
|
|
|
|
}
|
|
|
|
if (local_10 != (undefined4 *)0x0) {
|
|
|
|
iVar1 = local_10[1];
|
|
|
|
local_10[1] = iVar1 + -1;
|
|
|
|
if (iVar1 + -1 == 0) {
|
|
|
|
(**(code **)*local_10)(1);
|
|
|
|
}
|
|
|
|
local_10 = (undefined4 *)0x0;
|
|
|
|
}
|
|
|
|
if ((puStack_1c != (undefined4 *)0x0) &&
|
|
|
|
(iVar1 = puStack_1c[1], puStack_1c[1] = iVar1 + -1, iVar1 + -1 == 0)) {
|
|
|
|
(**(code **)*puStack_1c)(1);
|
|
|
|
}
|
|
|
|
if ((local_18 != (undefined4 *)0x0) &&
|
|
|
|
(iVar1 = local_18[1], local_18[1] = iVar1 + -1, iVar1 + -1 == 0)) {
|
|
|
|
(**(code **)*local_18)(1);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f44a0 at 0x004F44A0 (size: 222) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void __thiscall FUN_004f44a0(int param_1,int param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 uVar1;
|
|
|
|
float fVar2;
|
|
|
|
bool bVar3;
|
|
|
|
char cVar4;
|
|
|
|
int *piVar5;
|
|
|
|
|
|
|
|
if (param_2 != 3) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
if ((*(uint *)(param_1 + 0xa4) >> 4 & 1) == 0) {
|
|
|
|
cVar4 = FUN_004f3d00();
|
|
|
|
bVar3 = false;
|
|
|
|
if (cVar4 != '\0') goto LAB_004f44c7;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
LAB_004f44c7:
|
|
|
|
bVar3 = true;
|
|
|
|
}
|
|
|
|
fVar2 = ABS(*(float *)(param_1 + 0x600) - *(float *)(param_1 + 0x5fc)) * _DAT_007c56dc;
|
|
|
|
if (bVar3) {
|
|
|
|
fVar2 = fVar2 + *(float *)(param_1 + 0x604);
|
|
|
|
*(float *)(param_1 + 0x604) = fVar2;
|
|
|
|
if (fVar2 < *(float *)(param_1 + 0x600)) goto LAB_004f4536;
|
|
|
|
*(undefined4 *)(param_1 + 0x604) = *(undefined4 *)(param_1 + 0x600);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
fVar2 = *(float *)(param_1 + 0x604) - fVar2;
|
|
|
|
*(float *)(param_1 + 0x604) = fVar2;
|
|
|
|
if (fVar2 < *(float *)(param_1 + 0x5fc) == (fVar2 == *(float *)(param_1 + 0x5fc)))
|
|
|
|
goto LAB_004f4536;
|
|
|
|
*(undefined4 *)(param_1 + 0x604) = *(undefined4 *)(param_1 + 0x5fc);
|
|
|
|
}
|
|
|
|
FUN_00465fb0(3);
|
|
|
|
LAB_004f4536:
|
|
|
|
uVar1 = *(undefined4 *)(param_1 + 0x604);
|
|
|
|
*(undefined4 *)(param_1 + 0x604) = uVar1;
|
|
|
|
piVar5 = *(int **)(param_1 + 0xb0);
|
|
|
|
if (piVar5 == (int *)0x0) {
|
|
|
|
if (*(int *)(param_1 + 0xac) == 0) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
piVar5 = (int *)FUN_004592b0();
|
|
|
|
if (piVar5 == (int *)0x0) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
piVar5 = (int *)(**(code **)(*piVar5 + 0x1c))();
|
|
|
|
if (piVar5 != (int *)0x0) {
|
|
|
|
(**(code **)(*piVar5 + 0x48))(uVar1);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f4580 at 0x004F4580 (size: 183) ---
|
|
|
|
|
|
void __fastcall FUN_004f4580(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
char cVar1;
|
|
|
|
int iVar2;
|
|
|
|
undefined4 *local_8;
|
|
|
|
int *local_4;
|
|
|
|
|
|
|
|
if (*(int *)(param_1 + 0x5fc) != 0) {
|
|
|
|
iVar2 = FUN_0055e1d0();
|
|
|
|
if (iVar2 != 0) {
|
|
|
|
FUN_0055e1d0();
|
|
|
|
local_8 = (undefined4 *)0x0;
|
|
|
|
local_4 = (int *)0x0;
|
|
|
|
cVar1 = FUN_005d6690(*(undefined4 *)(param_1 + 0x5fc),0x1000007f,&local_8);
|
|
|
|
if ((cVar1 != '\0') && (local_4 != (int *)0x0)) {
|
|
|
|
(**(code **)(*local_4 + 0xe8))(param_1 + 0x618);
|
|
|
|
}
|
|
|
|
if (local_8 != (undefined4 *)0x0) {
|
|
|
|
iVar2 = local_8[1];
|
|
|
|
local_8[1] = iVar2 + -1;
|
|
|
|
if (iVar2 + -1 == 0) {
|
|
|
|
(**(code **)*local_8)(1);
|
|
|
|
}
|
|
|
|
local_8 = (undefined4 *)0x0;
|
|
|
|
}
|
|
|
|
if ((local_4 != (int *)0x0) && (iVar2 = local_4[1], local_4[1] = iVar2 + -1, iVar2 + -1 == 0))
|
|
|
|
{
|
|
|
|
(**(code **)*local_4)(1);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f4640 at 0x004F4640 (size: 67) ---
|
|
|
|
|
|
void __thiscall FUN_004f4640(int param_1,undefined4 param_2,undefined4 param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
char cVar1;
|
|
|
|
|
|
|
|
cVar1 = '\0';
|
|
|
|
if (*(int *)(param_1 + 0x60c) != 0) {
|
|
|
|
cVar1 = FUN_004695e0();
|
|
|
|
}
|
|
|
|
FUN_00463d60(param_2,param_3);
|
|
|
|
if (cVar1 != '\0') {
|
|
|
|
FUN_00469440(*(undefined4 *)(*(int *)(param_1 + 0x60c) + 0x61c));
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f4690 at 0x004F4690 (size: 251) ---
|
|
|
|
|
|
void __thiscall FUN_004f4690(int param_1,int param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
uint uVar1;
|
|
|
|
uint uVar2;
|
|
|
|
char cVar3;
|
|
|
|
LONG LVar4;
|
|
|
|
undefined4 *puVar5;
|
|
|
|
|
|
|
|
uVar1 = *(uint *)(param_1 + 0x630);
|
|
|
|
if ((char)param_2 == '\0') {
|
|
|
|
if (uVar1 == 0xffffffff) {
|
|
|
|
puVar5 = &DAT_0083774c;
|
|
|
|
FUN_00466830(¶m_2);
|
|
|
|
cVar3 = FUN_00494e10(puVar5);
|
|
|
|
puVar5 = (undefined4 *)(param_2 + -0x14);
|
|
|
|
LVar4 = InterlockedDecrement((LONG *)(param_2 + -0x10));
|
|
|
|
if ((LVar4 == 0) && (puVar5 != (undefined4 *)0x0)) {
|
|
|
|
(**(code **)*puVar5)(1);
|
|
|
|
}
|
|
|
|
if (cVar3 == '\0') {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
FUN_0046a740(&DAT_0083774c);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
*(uint *)(param_1 + 0x630) = uVar1 + 1;
|
|
|
|
if (*(uint *)(param_1 + 0x62c) <= uVar1 + 1) {
|
|
|
|
FUN_0046a740(&DAT_0083774c);
|
|
|
|
*(undefined4 *)(param_1 + 0x630) = 0xffffffff;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar2 = *(uint *)(param_1 + 0x62c);
|
|
|
|
if (uVar1 < uVar2) {
|
|
|
|
if (uVar1 == 0) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
*(uint *)(param_1 + 0x630) = uVar1 - 1;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
if (uVar2 == 0) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
*(uint *)(param_1 + 0x630) = uVar2 - 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
FUN_0046a740(*(int *)(param_1 + 0x624) + *(int *)(param_1 + 0x630) * 4);
|
|
|
|
param_2 = *(undefined4 *)(*(int *)(param_1 + 0x60c) + 0x61c);
|
|
|
|
FUN_00469440();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f4790 at 0x004F4790 (size: 133) ---
|
|
|
|
|
|
undefined4 __fastcall FUN_004f4790(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
int *piVar2;
|
|
|
|
int iVar3;
|
|
|
|
int *piVar4;
|
|
|
|
|
|
|
|
iVar1 = *(int *)(DAT_0083e03c + 0x32c);
|
|
|
|
if (iVar1 != 0) {
|
|
|
|
iVar3 = FUN_0045fb30();
|
|
|
|
if (iVar1 == iVar3) {
|
|
|
|
piVar2 = *(int **)(param_1 + 0x60c);
|
|
|
|
piVar4 = (int *)FUN_00460330();
|
|
|
|
if (piVar4 == piVar2) {
|
|
|
|
(**(code **)(*piVar2 + 0x108))();
|
|
|
|
(**(code **)(**(int **)(param_1 + 0x60c) + 0x100))();
|
|
|
|
FUN_0047a600(0);
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
(**(code **)(**(int **)(param_1 + 0x60c) + 0xfc))();
|
|
|
|
(**(code **)(**(int **)(param_1 + 0x60c) + 0x104))();
|
|
|
|
FUN_0047a600(1);
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f4820 at 0x004F4820 (size: 118) ---
|
|
|
|
|
|
void __thiscall FUN_004f4820(int param_1,float param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
int iVar2;
|
|
|
|
|
|
|
|
*(float *)(param_1 + 0x600) = param_2;
|
|
|
|
if (*(float *)(param_1 + 0x604) < param_2) {
|
|
|
|
FUN_004f48a0(param_2);
|
|
|
|
}
|
|
|
|
if (((*(uint *)(param_1 + 0xa8) >> 4 & 1) == 0) &&
|
|
|
|
(((iVar2 = *(int *)(DAT_0083e03c + 0x32c), iVar2 == 0 ||
|
|
|
|
(iVar1 = FUN_0045fb30(), iVar2 != iVar1)) ||
|
|
|
|
(iVar2 = FUN_00460330(), iVar2 != *(int *)(param_1 + 0x60c))))) {
|
|
|
|
FUN_004f3d80(*(undefined4 *)(param_1 + 0x600));
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f48a0 at 0x004F48A0 (size: 177) ---
|
|
|
|
|
|
void __thiscall FUN_004f48a0(int param_1,float param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
int iVar2;
|
|
|
|
int *piVar3;
|
|
|
|
|
|
|
|
*(float *)(param_1 + 0x604) = param_2;
|
|
|
|
if (param_2 < *(float *)(param_1 + 0x600)) {
|
|
|
|
FUN_004f4820(param_2);
|
|
|
|
}
|
|
|
|
if ((*(uint *)(param_1 + 0xa8) >> 4 & 1) == 0) {
|
|
|
|
iVar2 = *(int *)(DAT_0083e03c + 0x32c);
|
|
|
|
if (iVar2 == 0) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
iVar1 = FUN_0045fb30();
|
|
|
|
if (iVar2 != iVar1) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
iVar2 = FUN_00460330();
|
|
|
|
if (iVar2 != *(int *)(param_1 + 0x60c)) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
*(undefined4 *)(param_1 + 0x608) = *(undefined4 *)(param_1 + 0x604);
|
|
|
|
piVar3 = *(int **)(param_1 + 0xb4);
|
|
|
|
if (piVar3 == (int *)0x0) {
|
|
|
|
if (*(int *)(param_1 + 0xb0) == 0) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
piVar3 = (int *)FUN_004592b0();
|
|
|
|
if (piVar3 == (int *)0x0) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
piVar3 = (int *)(**(code **)(*piVar3 + 0x1c))();
|
|
|
|
if (piVar3 == (int *)0x0) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
/* WARNING: Could not recover jumptable at 0x004f4949. Too many branches */
|
|
|
|
/* WARNING: Treating indirect jump as call */
|
|
|
|
(**(code **)(*piVar3 + 0x48))();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f4960 at 0x004F4960 (size: 208) ---
|
|
|
|
|
|
undefined4 __thiscall FUN_004f4960(int *param_1,uint param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
int iVar2;
|
|
|
|
undefined *puVar3;
|
|
|
|
undefined *puVar4;
|
|
|
|
int iVar5;
|
|
|
|
LONG LVar6;
|
|
|
|
int *piVar7;
|
|
|
|
|
|
|
|
if ((uint)param_1[2] <= param_2) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
iVar1 = *param_1;
|
|
|
|
iVar5 = param_1[2] - 1;
|
|
|
|
param_1[2] = iVar5;
|
|
|
|
puVar4 = PTR_DAT_00818340;
|
|
|
|
for (piVar7 = (int *)(iVar1 + param_2 * 4); PTR_DAT_00818340 = puVar4,
|
|
|
|
piVar7 < (int *)(iVar1 + iVar5 * 4); piVar7 = piVar7 + 1) {
|
|
|
|
iVar2 = *piVar7;
|
|
|
|
if (iVar2 != piVar7[1]) {
|
|
|
|
LVar6 = InterlockedDecrement((LONG *)(iVar2 + -0x10));
|
|
|
|
if ((LVar6 == 0) && ((undefined4 *)(iVar2 + -0x14) != (undefined4 *)0x0)) {
|
|
|
|
(*(code *)**(undefined4 **)(iVar2 + -0x14))(1);
|
|
|
|
}
|
|
|
|
*piVar7 = piVar7[1];
|
|
|
|
InterlockedIncrement((LONG *)(piVar7[1] + -0x10));
|
|
|
|
}
|
|
|
|
puVar4 = PTR_DAT_00818340;
|
|
|
|
}
|
|
|
|
InterlockedIncrement((LONG *)(puVar4 + -0x10));
|
|
|
|
piVar7 = (int *)(*param_1 + param_1[2] * 4);
|
|
|
|
puVar3 = (undefined *)*piVar7;
|
|
|
|
if (puVar3 != puVar4) {
|
|
|
|
LVar6 = InterlockedDecrement((LONG *)(puVar3 + -0x10));
|
|
|
|
if ((LVar6 == 0) && ((undefined4 *)(puVar3 + -0x14) != (undefined4 *)0x0)) {
|
|
|
|
(*(code *)**(undefined4 **)(puVar3 + -0x14))(1);
|
|
|
|
}
|
|
|
|
*piVar7 = (int)puVar4;
|
|
|
|
InterlockedIncrement((LONG *)(puVar4 + -0x10));
|
|
|
|
}
|
|
|
|
LVar6 = InterlockedDecrement((LONG *)(puVar4 + -0x10));
|
|
|
|
if ((LVar6 == 0) && ((undefined4 *)(puVar4 + -0x14) != (undefined4 *)0x0)) {
|
|
|
|
(*(code *)**(undefined4 **)(puVar4 + -0x14))(1);
|
|
|
|
}
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f4a30 at 0x004F4A30 (size: 365) ---
|
|
|
|
|
|
void __fastcall FUN_004f4a30(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
int *piVar2;
|
|
|
|
undefined4 uVar3;
|
|
|
|
|
|
|
|
FUN_004639a0();
|
|
|
|
FUN_00460990(0x1000007e,(undefined4 *)(param_1 + 0x5f8));
|
|
|
|
switch(*(undefined4 *)(param_1 + 0x5f8)) {
|
|
|
|
case 1:
|
|
|
|
case 8:
|
|
|
|
*(undefined4 *)(param_1 + 0x614) = 0xfbffffff;
|
|
|
|
break;
|
|
|
|
case 2:
|
|
|
|
*(undefined4 *)(param_1 + 0x614) = 0x101c;
|
|
|
|
break;
|
|
|
|
case 3:
|
|
|
|
*(undefined4 *)(param_1 + 0x614) = 0x40c00;
|
|
|
|
break;
|
|
|
|
case 4:
|
|
|
|
*(undefined4 *)(param_1 + 0x614) = 0x80000;
|
|
|
|
break;
|
|
|
|
case 5:
|
|
|
|
*(undefined4 *)(param_1 + 0x614) = 0x78000000;
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
goto switchD_004f4a59_caseD_6;
|
|
|
|
}
|
|
|
|
*(undefined4 *)(param_1 + 0x618) = 0;
|
|
|
|
switchD_004f4a59_caseD_6:
|
|
|
|
piVar2 = (int *)FUN_00463c00(0x10000011);
|
|
|
|
if (piVar2 == (int *)0x0) {
|
|
|
|
uVar3 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar3 = (**(code **)(*piVar2 + 0x94))(0xc);
|
|
|
|
}
|
|
|
|
*(undefined4 *)(param_1 + 0x60c) = uVar3;
|
|
|
|
uVar3 = FUN_00463c00(0x1000048c);
|
|
|
|
*(undefined4 *)(param_1 + 0x610) = uVar3;
|
|
|
|
piVar2 = (int *)FUN_00463c00(0x10000016);
|
|
|
|
if (piVar2 == (int *)0x0) {
|
|
|
|
uVar3 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar3 = (**(code **)(*piVar2 + 0x94))(0xc);
|
|
|
|
}
|
|
|
|
*(undefined4 *)(param_1 + 0x608) = uVar3;
|
|
|
|
piVar2 = (int *)FUN_0043c680();
|
|
|
|
if (piVar2 != (int *)0x0) {
|
|
|
|
iVar1 = param_1 + -4;
|
|
|
|
(**(code **)(*piVar2 + 4))(0x186b6,iVar1);
|
|
|
|
(**(code **)(*piVar2 + 4))(0x4dd252,iVar1);
|
|
|
|
(**(code **)(*piVar2 + 4))(0x4dd267,iVar1);
|
|
|
|
(**(code **)(*piVar2 + 4))(0x4dd26e,iVar1);
|
|
|
|
(**(code **)(*piVar2 + 4))(0x4dd1f0,iVar1);
|
|
|
|
}
|
|
|
|
FUN_00465f90(1);
|
|
|
|
piVar2 = (int *)FUN_0056f230();
|
|
|
|
*(int **)(param_1 + 0x630) = piVar2;
|
|
|
|
if (piVar2 != (int *)0x0) {
|
|
|
|
(**(code **)(*piVar2 + 0x10))();
|
|
|
|
}
|
|
|
|
FUN_004f3e20();
|
|
|
|
(**(code **)(*(int *)(param_1 + -4) + 0x224))(DAT_0081820c,DAT_00818210);
|
|
|
|
/* WARNING: Could not recover jumptable at 0x004f4b97. Too many branches */
|
|
|
|
/* WARNING: Treating indirect jump as call */
|
|
|
|
(**(code **)(*(int *)(param_1 + -4) + 0x2a8))();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f4c40 at 0x004F4C40 (size: 156) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_004f4c40(int *param_1,undefined4 *param_2,uint param_3,uint param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
undefined *puVar2;
|
|
|
|
LONG LVar3;
|
|
|
|
uint uVar4;
|
|
|
|
|
|
|
|
puVar2 = PTR_DAT_00818340;
|
|
|
|
InterlockedIncrement((LONG *)(PTR_DAT_00818340 + -0x10));
|
|
|
|
iVar1 = *(int *)(*param_1 + -4);
|
|
|
|
uVar4 = iVar1 - 1;
|
|
|
|
if (param_3 < uVar4) {
|
|
|
|
if (uVar4 <= param_4) {
|
|
|
|
param_4 = iVar1 - 2;
|
|
|
|
}
|
|
|
|
FUN_00402490(*param_1 + param_3 * 2,(param_4 - param_3) + 1);
|
|
|
|
*param_2 = puVar2;
|
|
|
|
InterlockedIncrement((LONG *)(puVar2 + -0x10));
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*param_2 = puVar2;
|
|
|
|
InterlockedIncrement((LONG *)(puVar2 + -0x10));
|
|
|
|
}
|
|
|
|
LVar3 = InterlockedDecrement((LONG *)(puVar2 + -0x10));
|
|
|
|
if ((LVar3 == 0) && ((undefined4 *)(puVar2 + -0x14) != (undefined4 *)0x0)) {
|
|
|
|
(*(code *)**(undefined4 **)(puVar2 + -0x14))(1);
|
|
|
|
}
|
|
|
|
return param_2;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f4ce0 at 0x004F4CE0 (size: 215) ---
|
|
|
|
|
|
undefined4 __thiscall FUN_004f4ce0(int *param_1,undefined4 param_2,char param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
char cVar1;
|
|
|
|
short sVar2;
|
|
|
|
int iVar3;
|
|
|
|
undefined4 uVar4;
|
|
|
|
uint uVar5;
|
|
|
|
undefined4 uVar6;
|
|
|
|
|
|
|
|
if (param_3 == '\0') {
|
|
|
|
iVar3 = param_1[1];
|
|
|
|
uVar4 = (**(code **)(*param_1 + 8))(iVar3,0);
|
|
|
|
cVar1 = FUN_0040b620(uVar4,iVar3);
|
|
|
|
while( true ) {
|
|
|
|
if (cVar1 != '\0') {
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
iVar3 = param_1[1];
|
|
|
|
uVar5 = (**(code **)*param_1)();
|
|
|
|
if (uVar5 < iVar3 + 1U) {
|
|
|
|
iVar3 = (**(code **)*param_1)();
|
|
|
|
param_1[1] = iVar3;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
param_1[1] = iVar3 + 1U;
|
|
|
|
}
|
|
|
|
iVar3 = param_1[1];
|
|
|
|
sVar2 = (**(code **)(*param_1 + 8))(iVar3);
|
|
|
|
if (sVar2 == 0) break;
|
|
|
|
uVar4 = (**(code **)(*param_1 + 8))(param_1[1],0);
|
|
|
|
cVar1 = FUN_0040b620(uVar4,iVar3);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
while (param_1[1] != 0) {
|
|
|
|
iVar3 = param_1[1] + -1;
|
|
|
|
uVar6 = 0;
|
|
|
|
param_1[1] = iVar3;
|
|
|
|
uVar4 = (**(code **)(*param_1 + 8))(iVar3,0);
|
|
|
|
cVar1 = FUN_0040b620(uVar4,uVar6);
|
|
|
|
if (cVar1 != '\0') {
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
param_1[1] = 0;
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f4dc0 at 0x004F4DC0 (size: 134) ---
|
|
|
|
|
|
void __fastcall FUN_004f4dc0(undefined4 *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 *puVar1;
|
|
|
|
int *piVar2;
|
|
|
|
|
|
|
|
puVar1 = param_1 + -1;
|
|
|
|
*puVar1 = &PTR_FUN_007c5818;
|
|
|
|
*param_1 = &PTR_FUN_007c56e0;
|
|
|
|
FUN_00465fb0(1);
|
|
|
|
piVar2 = (int *)FUN_0043c680();
|
|
|
|
if (piVar2 != (int *)0x0) {
|
|
|
|
(**(code **)(*piVar2 + 0xc))(puVar1);
|
|
|
|
}
|
|
|
|
if ((int *)param_1[0x18c] != (int *)0x0) {
|
|
|
|
(**(code **)(*(int *)param_1[0x18c] + 0x14))();
|
|
|
|
param_1[0x18c] = 0;
|
|
|
|
}
|
|
|
|
if (((param_1[0x189] & 0x80000000) == 0x80000000) && (param_1[0x188] != 0)) {
|
|
|
|
FUN_00407920(3);
|
|
|
|
}
|
|
|
|
FUN_004726c0();
|
|
|
|
*puVar1 = &PTR_FUN_007ccb60;
|
|
|
|
FUN_0043c610();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f4e50 at 0x004F4E50 (size: 151) ---
|
|
|
|
|
|
void __thiscall FUN_004f4e50(int param_1,undefined4 *param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
LONG LVar1;
|
|
|
|
undefined4 *puVar2;
|
|
|
|
|
|
|
|
FUN_00480980(¶m_2,0,L"@tell %s, ",*param_2);
|
|
|
|
(**(code **)(**(int **)(param_1 + 0x60c) + 0xfc))();
|
|
|
|
(**(code **)(**(int **)(param_1 + 0x60c) + 0x104))();
|
|
|
|
FUN_0047a600(1);
|
|
|
|
FUN_0046a740(¶m_2);
|
|
|
|
FUN_00469120(param_2[-1]);
|
|
|
|
FUN_00466540();
|
|
|
|
puVar2 = param_2 + -5;
|
|
|
|
LVar1 = InterlockedDecrement(param_2 + -4);
|
|
|
|
if ((LVar1 == 0) && (puVar2 != (undefined4 *)0x0)) {
|
|
|
|
(**(code **)*puVar2)(1);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f4ef0 at 0x004F4EF0 (size: 462) ---
|
|
|
|
|
|
void __thiscall FUN_004f4ef0(int param_1,uint param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
char cVar1;
|
|
|
|
int iVar2;
|
|
|
|
LONG LVar3;
|
|
|
|
undefined4 *puVar4;
|
|
|
|
int local_18;
|
|
|
|
int local_14;
|
|
|
|
undefined **local_10;
|
|
|
|
int local_c;
|
|
|
|
undefined4 local_8;
|
|
|
|
int *local_4;
|
|
|
|
|
|
|
|
if (*(int *)(param_1 + 0x610) != 0) {
|
|
|
|
local_14 = param_1;
|
|
|
|
FUN_00466830(&local_18);
|
|
|
|
if (param_2 < *(uint *)(local_18 + -4)) {
|
|
|
|
iVar2 = *(uint *)(local_18 + -4) - param_2;
|
|
|
|
local_4 = &local_18;
|
|
|
|
local_10 = &PTR_FUN_0079549c;
|
|
|
|
local_8 = 0;
|
|
|
|
local_c = 0;
|
|
|
|
if (iVar2 != 0) {
|
|
|
|
FUN_0040b150(iVar2);
|
|
|
|
}
|
|
|
|
FUN_00402730(&DAT_0079d2e0);
|
|
|
|
cVar1 = FUN_004f4ce0(¶m_2,1);
|
|
|
|
puVar4 = (undefined4 *)(param_2 - 0x14);
|
|
|
|
LVar3 = InterlockedDecrement((LONG *)(param_2 - 0x10));
|
|
|
|
if ((LVar3 == 0) && (puVar4 != (undefined4 *)0x0)) {
|
|
|
|
(**(code **)*puVar4)(1);
|
|
|
|
}
|
|
|
|
if ((cVar1 == '\0') || (*(uint *)(local_18 + -4) / 10 <= (uint)(iVar2 - local_c))) {
|
|
|
|
local_c = 0;
|
|
|
|
if (iVar2 != 0) {
|
|
|
|
FUN_0040b150(iVar2);
|
|
|
|
}
|
|
|
|
FUN_00402730(&DAT_0079d2e0);
|
|
|
|
cVar1 = FUN_004f4ce0(¶m_2,0);
|
|
|
|
puVar4 = (undefined4 *)(param_2 - 0x14);
|
|
|
|
LVar3 = InterlockedDecrement((LONG *)(param_2 - 0x10));
|
|
|
|
if ((LVar3 == 0) && (puVar4 != (undefined4 *)0x0)) {
|
|
|
|
(**(code **)*puVar4)(1);
|
|
|
|
}
|
|
|
|
if ((cVar1 == '\0') || (*(uint *)(local_18 + -4) / 10 <= (uint)(local_c - iVar2))) {
|
|
|
|
FUN_00469c00(iVar2,1);
|
|
|
|
local_10 = &PTR_LAB_00795478;
|
|
|
|
LVar3 = InterlockedDecrement((LONG *)(local_18 + -0x10));
|
|
|
|
if (LVar3 != 0) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
if ((undefined4 *)(local_18 + -0x14) == (undefined4 *)0x0) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
(*(code *)**(undefined4 **)(local_18 + -0x14))(1);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
FUN_00469c00(local_c + 1,1);
|
|
|
|
local_10 = &PTR_LAB_00795478;
|
|
|
|
FUN_004011b0();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
LVar3 = InterlockedDecrement((LONG *)(local_18 + -0x10));
|
|
|
|
if ((LVar3 == 0) && ((undefined4 *)(local_18 + -0x14) != (undefined4 *)0x0)) {
|
|
|
|
(*(code *)**(undefined4 **)(local_18 + -0x14))(1);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f51b0 at 0x004F51B0 (size: 182) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_004f51b0(undefined4 *param_1,undefined4 param_2,undefined4 param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
*param_1 = &PTR_FUN_007ccb60;
|
|
|
|
FUN_00472670(param_2,param_3);
|
|
|
|
param_1[0x17f] = 0;
|
|
|
|
param_1[0x183] = 0;
|
|
|
|
param_1[0x184] = 0;
|
|
|
|
param_1[0x185] = 0;
|
|
|
|
param_1[0x188] = 0;
|
|
|
|
*param_1 = &PTR_FUN_007c5818;
|
|
|
|
param_1[1] = &PTR_FUN_007c56e0;
|
|
|
|
param_1[0x180] = 0x3f000000;
|
|
|
|
param_1[0x182] = 0x3f000000;
|
|
|
|
param_1[0x181] = 0x3f800000;
|
|
|
|
param_1[0x186] = 0xffffffff;
|
|
|
|
param_1[0x187] = 0xffffffff;
|
|
|
|
param_1[0x189] = 0;
|
|
|
|
param_1[0x18a] = 0;
|
|
|
|
param_1[0x18b] = 0;
|
|
|
|
param_1[0x18d] = 0;
|
|
|
|
param_1[0x18c] = 0xffffffff;
|
|
|
|
param_1[0x186] = param_1[0x186] & 0xfbffffff;
|
|
|
|
param_1[0x187] = param_1[0x187];
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f5270 at 0x004F5270 (size: 34) ---
|
|
|
|
|
|
int __thiscall FUN_004f5270(int param_1,byte param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_004f4dc0();
|
|
|
|
if ((param_2 & 1) != 0) {
|
|
|
|
operator_delete((void *)(param_1 + -4));
|
|
|
|
}
|
|
|
|
return param_1 + -4;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f53c0 at 0x004F53C0 (size: 1030) ---
|
|
|
|
|
|
uint FUN_004f53c0(void)
|
|
|
|
|
|
|
|
{
|
|
|
|
char cVar1;
|
|
|
|
int *piVar2;
|
|
|
|
uint uVar3;
|
|
|
|
LONG LVar4;
|
|
|
|
undefined4 *puVar5;
|
|
|
|
int iVar6;
|
|
|
|
short *psVar7;
|
|
|
|
wchar_t *pwVar8;
|
|
|
|
short *local_24;
|
|
|
|
int iStack_20;
|
|
|
|
wchar_t *local_1c;
|
|
|
|
int aiStack_18 [2];
|
|
|
|
undefined **ppuStack_10;
|
|
|
|
undefined4 uStack_c;
|
|
|
|
undefined4 uStack_8;
|
|
|
|
short **ppsStack_4;
|
|
|
|
|
|
|
|
piVar2 = (int *)FUN_0058a380(&local_1c);
|
|
|
|
iVar6 = *(int *)(*piVar2 + -4);
|
|
|
|
pwVar8 = local_1c + -10;
|
|
|
|
uVar3 = InterlockedDecrement((LONG *)(local_1c + -8));
|
|
|
|
if ((uVar3 == 0) && (pwVar8 != (wchar_t *)0x0)) {
|
|
|
|
uVar3 = (*(code *)**(undefined4 **)pwVar8)(1);
|
|
|
|
}
|
|
|
|
if (iVar6 != 1) {
|
|
|
|
FUN_00466830(&local_24);
|
|
|
|
iVar6 = DAT_00837750;
|
|
|
|
InterlockedIncrement((LONG *)(DAT_00837750 + -0x10));
|
|
|
|
FUN_004d68c0(1,0,iVar6);
|
|
|
|
iVar6 = *(int *)(local_24 + -2);
|
|
|
|
psVar7 = local_24 + iVar6 + -1;
|
|
|
|
if (iVar6 != 0) {
|
|
|
|
psVar7 = local_24;
|
|
|
|
}
|
|
|
|
if (*psVar7 != 0x2f) {
|
|
|
|
psVar7 = local_24 + iVar6 + -1;
|
|
|
|
if (iVar6 != 0) {
|
|
|
|
psVar7 = local_24;
|
|
|
|
}
|
|
|
|
if (*psVar7 != 0x40) {
|
|
|
|
uVar3 = InterlockedDecrement((LONG *)(local_24 + -8));
|
|
|
|
if ((uVar3 == 0) && (local_24 + -10 != (short *)0x0)) {
|
|
|
|
uVar3 = (*(code *)**(undefined4 **)(local_24 + -10))(1);
|
|
|
|
return uVar3 & 0xffffff00;
|
|
|
|
}
|
|
|
|
goto LAB_004f57bc;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
piVar2 = (int *)FUN_004f4c40(&local_1c,1,*(undefined4 *)(local_24 + -2));
|
|
|
|
if (local_24 != (short *)*piVar2) {
|
|
|
|
LVar4 = InterlockedDecrement((LONG *)(local_24 + -8));
|
|
|
|
if ((LVar4 == 0) && (local_24 + -10 != (short *)0x0)) {
|
|
|
|
(*(code *)**(undefined4 **)(local_24 + -10))(1);
|
|
|
|
}
|
|
|
|
local_24 = (short *)*piVar2;
|
|
|
|
InterlockedIncrement((LONG *)(local_24 + -8));
|
|
|
|
}
|
|
|
|
pwVar8 = local_1c + -10;
|
|
|
|
LVar4 = InterlockedDecrement((LONG *)(local_1c + -8));
|
|
|
|
if ((LVar4 == 0) && (pwVar8 != (wchar_t *)0x0)) {
|
|
|
|
(*(code *)**(undefined4 **)pwVar8)(1);
|
|
|
|
}
|
|
|
|
ppsStack_4 = &local_24;
|
|
|
|
ppuStack_10 = &PTR_FUN_0079549c;
|
|
|
|
uStack_c = 0;
|
|
|
|
uStack_8 = 0;
|
|
|
|
FUN_00402730(&DAT_007c5b18);
|
|
|
|
puVar5 = (undefined4 *)FUN_004f4c40(aiStack_18,0,1);
|
|
|
|
iVar6 = _wcsicmp((wchar_t *)*puVar5,local_1c);
|
|
|
|
puVar5 = (undefined4 *)(aiStack_18[0] + -0x14);
|
|
|
|
LVar4 = InterlockedDecrement((LONG *)(aiStack_18[0] + -0x10));
|
|
|
|
if ((LVar4 == 0) && (puVar5 != (undefined4 *)0x0)) {
|
|
|
|
(**(code **)*puVar5)(1);
|
|
|
|
}
|
|
|
|
pwVar8 = local_1c + -10;
|
|
|
|
LVar4 = InterlockedDecrement((LONG *)(local_1c + -8));
|
|
|
|
if ((LVar4 == 0) && (pwVar8 != (wchar_t *)0x0)) {
|
|
|
|
(*(code *)**(undefined4 **)pwVar8)(1);
|
|
|
|
}
|
|
|
|
if (iVar6 == 0) {
|
|
|
|
iVar6 = (*(code *)*ppuStack_10)();
|
|
|
|
if (iVar6 == 0) {
|
|
|
|
uStack_8 = (*(code *)*ppuStack_10)();
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uStack_8 = 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
FUN_00402730(&DAT_007c5b10);
|
|
|
|
puVar5 = (undefined4 *)FUN_004f4c40(aiStack_18,0,2);
|
|
|
|
iVar6 = _wcsicmp((wchar_t *)*puVar5,local_1c);
|
|
|
|
puVar5 = (undefined4 *)(aiStack_18[0] + -0x14);
|
|
|
|
LVar4 = InterlockedDecrement((LONG *)(aiStack_18[0] + -0x10));
|
|
|
|
if ((LVar4 == 0) && (puVar5 != (undefined4 *)0x0)) {
|
|
|
|
(**(code **)*puVar5)(1);
|
|
|
|
}
|
|
|
|
pwVar8 = local_1c + -10;
|
|
|
|
LVar4 = InterlockedDecrement((LONG *)(local_1c + -8));
|
|
|
|
if ((LVar4 == 0) && (pwVar8 != (wchar_t *)0x0)) {
|
|
|
|
(*(code *)**(undefined4 **)pwVar8)(1);
|
|
|
|
}
|
|
|
|
if (iVar6 == 0) {
|
|
|
|
uVar3 = (*(code *)*ppuStack_10)();
|
|
|
|
if (uVar3 < 2) {
|
|
|
|
uStack_8 = (*(code *)*ppuStack_10)();
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uStack_8 = 2;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
FUN_00402730(L"reply ");
|
|
|
|
puVar5 = (undefined4 *)FUN_004f4c40(aiStack_18,0,5);
|
|
|
|
iVar6 = _wcsicmp((wchar_t *)*puVar5,local_1c);
|
|
|
|
puVar5 = (undefined4 *)(aiStack_18[0] + -0x14);
|
|
|
|
LVar4 = InterlockedDecrement((LONG *)(aiStack_18[0] + -0x10));
|
|
|
|
if ((LVar4 == 0) && (puVar5 != (undefined4 *)0x0)) {
|
|
|
|
(**(code **)*puVar5)(1);
|
|
|
|
}
|
|
|
|
LVar4 = InterlockedDecrement((LONG *)(local_1c + -8));
|
|
|
|
if ((LVar4 == 0) && (local_1c + -10 != (wchar_t *)0x0)) {
|
|
|
|
(*(code *)**(undefined4 **)(local_1c + -10))(1);
|
|
|
|
}
|
|
|
|
if (iVar6 != 0) {
|
|
|
|
ppuStack_10 = &PTR_LAB_00795478;
|
|
|
|
uVar3 = FUN_004011b0();
|
|
|
|
goto LAB_004f57bc;
|
|
|
|
}
|
|
|
|
FUN_0040b1b0(5);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
puVar5 = (undefined4 *)FUN_0058a380(aiStack_18);
|
|
|
|
FUN_00480980(&iStack_20,0,L"@tell %hs,",*puVar5);
|
|
|
|
LVar4 = InterlockedDecrement((LONG *)(aiStack_18[0] + -0x10));
|
|
|
|
if ((LVar4 == 0) && ((undefined4 *)(aiStack_18[0] + -0x14) != (undefined4 *)0x0)) {
|
|
|
|
(*(code *)**(undefined4 **)(aiStack_18[0] + -0x14))(1);
|
|
|
|
}
|
|
|
|
cVar1 = FUN_0040bdf0(&iStack_20);
|
|
|
|
if (cVar1 != '\0') {
|
|
|
|
FUN_0046a740(&local_24);
|
|
|
|
FUN_00469120(*(undefined4 *)(iStack_20 + -4));
|
|
|
|
FUN_00466540();
|
|
|
|
}
|
|
|
|
LVar4 = InterlockedDecrement((LONG *)(iStack_20 + -0x10));
|
|
|
|
if ((LVar4 == 0) && ((undefined4 *)(iStack_20 + -0x14) != (undefined4 *)0x0)) {
|
|
|
|
(*(code *)**(undefined4 **)(iStack_20 + -0x14))(1);
|
|
|
|
}
|
|
|
|
psVar7 = local_24 + -10;
|
|
|
|
ppuStack_10 = &PTR_LAB_00795478;
|
|
|
|
uVar3 = InterlockedDecrement((LONG *)(local_24 + -8));
|
|
|
|
if ((uVar3 == 0) && (psVar7 != (short *)0x0)) {
|
|
|
|
uVar3 = (*(code *)**(undefined4 **)psVar7)(1);
|
|
|
|
return uVar3 & 0xffffff00;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
LAB_004f57bc:
|
|
|
|
return uVar3 & 0xffffff00;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f57d0 at 0x004F57D0 (size: 684) ---
|
|
|
|
|
|
uint FUN_004f57d0(void)
|
|
|
|
|
|
|
|
{
|
|
|
|
short *psVar1;
|
|
|
|
char cVar2;
|
|
|
|
int *piVar3;
|
|
|
|
uint uVar4;
|
|
|
|
LONG LVar5;
|
|
|
|
undefined4 *puVar6;
|
|
|
|
int iVar7;
|
|
|
|
short *psVar8;
|
|
|
|
wchar_t *pwVar9;
|
|
|
|
short *local_24;
|
|
|
|
int iStack_20;
|
|
|
|
wchar_t *local_1c;
|
|
|
|
undefined4 *apuStack_18 [2];
|
|
|
|
undefined **ppuStack_10;
|
|
|
|
undefined4 uStack_c;
|
|
|
|
undefined4 uStack_8;
|
|
|
|
short **ppsStack_4;
|
|
|
|
|
|
|
|
piVar3 = (int *)FUN_0058a440(&local_1c);
|
|
|
|
pwVar9 = local_1c;
|
|
|
|
iVar7 = *(int *)(*piVar3 + 8);
|
|
|
|
uVar4 = InterlockedDecrement((LONG *)(local_1c + 2));
|
|
|
|
if ((uVar4 == 0) && (pwVar9 != (wchar_t *)0x0)) {
|
|
|
|
uVar4 = (*(code *)**(undefined4 **)pwVar9)(1);
|
|
|
|
}
|
|
|
|
if (iVar7 == 1) goto LAB_004f5a72;
|
|
|
|
FUN_00466830(&local_24);
|
|
|
|
iVar7 = DAT_00837750;
|
|
|
|
InterlockedIncrement((LONG *)(DAT_00837750 + -0x10));
|
|
|
|
FUN_004d68c0(1,0,iVar7);
|
|
|
|
psVar1 = local_24;
|
|
|
|
iVar7 = *(int *)(local_24 + -2);
|
|
|
|
psVar8 = local_24 + iVar7 + -1;
|
|
|
|
if (iVar7 != 0) {
|
|
|
|
psVar8 = local_24;
|
|
|
|
}
|
|
|
|
if (*psVar8 == 0x2f) {
|
|
|
|
LAB_004f5894:
|
|
|
|
piVar3 = (int *)FUN_004f4c40(&local_1c,1,*(undefined4 *)(local_24 + -2));
|
|
|
|
if (local_24 != (short *)*piVar3) {
|
|
|
|
LVar5 = InterlockedDecrement((LONG *)(local_24 + -8));
|
|
|
|
if ((LVar5 == 0) && (local_24 + -10 != (short *)0x0)) {
|
|
|
|
(*(code *)**(undefined4 **)(local_24 + -10))(1);
|
|
|
|
}
|
|
|
|
local_24 = (short *)*piVar3;
|
|
|
|
InterlockedIncrement((LONG *)(local_24 + -8));
|
|
|
|
}
|
|
|
|
pwVar9 = local_1c + -10;
|
|
|
|
LVar5 = InterlockedDecrement((LONG *)(local_1c + -8));
|
|
|
|
if ((LVar5 == 0) && (pwVar9 != (wchar_t *)0x0)) {
|
|
|
|
(*(code *)**(undefined4 **)pwVar9)(1);
|
|
|
|
}
|
|
|
|
ppsStack_4 = &local_24;
|
|
|
|
ppuStack_10 = &PTR_FUN_0079549c;
|
|
|
|
uStack_c = 0;
|
|
|
|
uStack_8 = 0;
|
|
|
|
FUN_00402730(&DAT_007c5b20);
|
|
|
|
puVar6 = (undefined4 *)FUN_004f4c40(apuStack_18,0,2);
|
|
|
|
iVar7 = _wcsicmp((wchar_t *)*puVar6,local_1c);
|
|
|
|
puVar6 = apuStack_18[0] + -5;
|
|
|
|
LVar5 = InterlockedDecrement(apuStack_18[0] + -4);
|
|
|
|
if ((LVar5 == 0) && (puVar6 != (undefined4 *)0x0)) {
|
|
|
|
(**(code **)*puVar6)(1);
|
|
|
|
}
|
|
|
|
LVar5 = InterlockedDecrement((LONG *)(local_1c + -8));
|
|
|
|
if ((LVar5 == 0) && (local_1c + -10 != (wchar_t *)0x0)) {
|
|
|
|
(*(code *)**(undefined4 **)(local_1c + -10))(1);
|
|
|
|
}
|
|
|
|
if (iVar7 == 0) {
|
|
|
|
uVar4 = (*(code *)*ppuStack_10)();
|
|
|
|
if (uVar4 < 2) {
|
|
|
|
uStack_8 = (*(code *)*ppuStack_10)();
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uStack_8 = 2;
|
|
|
|
}
|
|
|
|
piVar3 = (int *)FUN_0058a440(apuStack_18);
|
|
|
|
FUN_00480980(&iStack_20,0,L"@tell %hs,",*piVar3 + 0x14);
|
|
|
|
LVar5 = InterlockedDecrement(apuStack_18[0] + 1);
|
|
|
|
if ((LVar5 == 0) && (apuStack_18[0] != (undefined4 *)0x0)) {
|
|
|
|
(**(code **)*apuStack_18[0])(1);
|
|
|
|
}
|
|
|
|
cVar2 = FUN_0040bdf0(&iStack_20);
|
|
|
|
if (cVar2 != '\0') {
|
|
|
|
FUN_0046a740(&local_24);
|
|
|
|
FUN_00469120(*(undefined4 *)(iStack_20 + -4));
|
|
|
|
FUN_00466540();
|
|
|
|
}
|
|
|
|
LVar5 = InterlockedDecrement((LONG *)(iStack_20 + -0x10));
|
|
|
|
if ((LVar5 == 0) && ((undefined4 *)(iStack_20 + -0x14) != (undefined4 *)0x0)) {
|
|
|
|
(*(code *)**(undefined4 **)(iStack_20 + -0x14))(1);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
psVar1 = local_24;
|
|
|
|
ppuStack_10 = &PTR_LAB_00795478;
|
|
|
|
uVar4 = InterlockedDecrement((LONG *)(local_24 + -8));
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
psVar8 = local_24 + iVar7 + -1;
|
|
|
|
if (iVar7 != 0) {
|
|
|
|
psVar8 = local_24;
|
|
|
|
}
|
|
|
|
if (*psVar8 == 0x40) goto LAB_004f5894;
|
|
|
|
uVar4 = InterlockedDecrement((LONG *)(local_24 + -8));
|
|
|
|
}
|
|
|
|
if ((uVar4 == 0) && (psVar1 + -10 != (short *)0x0)) {
|
|
|
|
uVar4 = (*(code *)**(undefined4 **)(psVar1 + -10))(1);
|
|
|
|
}
|
|
|
|
LAB_004f5a72:
|
|
|
|
return uVar4 & 0xffffff00;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f5a80 at 0x004F5A80 (size: 684) ---
|
|
|
|
|
|
uint FUN_004f5a80(void)
|
|
|
|
|
|
|
|
{
|
|
|
|
short *psVar1;
|
|
|
|
char cVar2;
|
|
|
|
int *piVar3;
|
|
|
|
uint uVar4;
|
|
|
|
LONG LVar5;
|
|
|
|
undefined4 *puVar6;
|
|
|
|
int iVar7;
|
|
|
|
short *psVar8;
|
|
|
|
wchar_t *pwVar9;
|
|
|
|
short *local_24;
|
|
|
|
int iStack_20;
|
|
|
|
wchar_t *local_1c;
|
|
|
|
undefined4 *apuStack_18 [2];
|
|
|
|
undefined **ppuStack_10;
|
|
|
|
undefined4 uStack_c;
|
|
|
|
undefined4 uStack_8;
|
|
|
|
short **ppsStack_4;
|
|
|
|
|
|
|
|
piVar3 = (int *)FUN_0058a500(&local_1c);
|
|
|
|
pwVar9 = local_1c;
|
|
|
|
iVar7 = *(int *)(*piVar3 + 8);
|
|
|
|
uVar4 = InterlockedDecrement((LONG *)(local_1c + 2));
|
|
|
|
if ((uVar4 == 0) && (pwVar9 != (wchar_t *)0x0)) {
|
|
|
|
uVar4 = (*(code *)**(undefined4 **)pwVar9)(1);
|
|
|
|
}
|
|
|
|
if (iVar7 == 1) goto LAB_004f5d22;
|
|
|
|
FUN_00466830(&local_24);
|
|
|
|
iVar7 = DAT_00837750;
|
|
|
|
InterlockedIncrement((LONG *)(DAT_00837750 + -0x10));
|
|
|
|
FUN_004d68c0(1,0,iVar7);
|
|
|
|
psVar1 = local_24;
|
|
|
|
iVar7 = *(int *)(local_24 + -2);
|
|
|
|
psVar8 = local_24 + iVar7 + -1;
|
|
|
|
if (iVar7 != 0) {
|
|
|
|
psVar8 = local_24;
|
|
|
|
}
|
|
|
|
if (*psVar8 == 0x2f) {
|
|
|
|
LAB_004f5b44:
|
|
|
|
piVar3 = (int *)FUN_004f4c40(&local_1c,1,*(undefined4 *)(local_24 + -2));
|
|
|
|
if (local_24 != (short *)*piVar3) {
|
|
|
|
LVar5 = InterlockedDecrement((LONG *)(local_24 + -8));
|
|
|
|
if ((LVar5 == 0) && (local_24 + -10 != (short *)0x0)) {
|
|
|
|
(*(code *)**(undefined4 **)(local_24 + -10))(1);
|
|
|
|
}
|
|
|
|
local_24 = (short *)*piVar3;
|
|
|
|
InterlockedIncrement((LONG *)(local_24 + -8));
|
|
|
|
}
|
|
|
|
pwVar9 = local_1c + -10;
|
|
|
|
LVar5 = InterlockedDecrement((LONG *)(local_1c + -8));
|
|
|
|
if ((LVar5 == 0) && (pwVar9 != (wchar_t *)0x0)) {
|
|
|
|
(*(code *)**(undefined4 **)pwVar9)(1);
|
|
|
|
}
|
|
|
|
ppsStack_4 = &local_24;
|
|
|
|
ppuStack_10 = &PTR_FUN_0079549c;
|
|
|
|
uStack_c = 0;
|
|
|
|
uStack_8 = 0;
|
|
|
|
FUN_00402730(&DAT_007c5b28);
|
|
|
|
puVar6 = (undefined4 *)FUN_004f4c40(apuStack_18,0,2);
|
|
|
|
iVar7 = _wcsicmp((wchar_t *)*puVar6,local_1c);
|
|
|
|
puVar6 = apuStack_18[0] + -5;
|
|
|
|
LVar5 = InterlockedDecrement(apuStack_18[0] + -4);
|
|
|
|
if ((LVar5 == 0) && (puVar6 != (undefined4 *)0x0)) {
|
|
|
|
(**(code **)*puVar6)(1);
|
|
|
|
}
|
|
|
|
LVar5 = InterlockedDecrement((LONG *)(local_1c + -8));
|
|
|
|
if ((LVar5 == 0) && (local_1c + -10 != (wchar_t *)0x0)) {
|
|
|
|
(*(code *)**(undefined4 **)(local_1c + -10))(1);
|
|
|
|
}
|
|
|
|
if (iVar7 == 0) {
|
|
|
|
uVar4 = (*(code *)*ppuStack_10)();
|
|
|
|
if (uVar4 < 2) {
|
|
|
|
uStack_8 = (*(code *)*ppuStack_10)();
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uStack_8 = 2;
|
|
|
|
}
|
|
|
|
piVar3 = (int *)FUN_0058a500(apuStack_18);
|
|
|
|
FUN_00480980(&iStack_20,0,L"@tell %hs,",*piVar3 + 0x14);
|
|
|
|
LVar5 = InterlockedDecrement(apuStack_18[0] + 1);
|
|
|
|
if ((LVar5 == 0) && (apuStack_18[0] != (undefined4 *)0x0)) {
|
|
|
|
(**(code **)*apuStack_18[0])(1);
|
|
|
|
}
|
|
|
|
cVar2 = FUN_0040bdf0(&iStack_20);
|
|
|
|
if (cVar2 != '\0') {
|
|
|
|
FUN_0046a740(&local_24);
|
|
|
|
FUN_00469120(*(undefined4 *)(iStack_20 + -4));
|
|
|
|
FUN_00466540();
|
|
|
|
}
|
|
|
|
LVar5 = InterlockedDecrement((LONG *)(iStack_20 + -0x10));
|
|
|
|
if ((LVar5 == 0) && ((undefined4 *)(iStack_20 + -0x14) != (undefined4 *)0x0)) {
|
|
|
|
(*(code *)**(undefined4 **)(iStack_20 + -0x14))(1);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
psVar1 = local_24;
|
|
|
|
ppuStack_10 = &PTR_LAB_00795478;
|
|
|
|
uVar4 = InterlockedDecrement((LONG *)(local_24 + -8));
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
psVar8 = local_24 + iVar7 + -1;
|
|
|
|
if (iVar7 != 0) {
|
|
|
|
psVar8 = local_24;
|
|
|
|
}
|
|
|
|
if (*psVar8 == 0x40) goto LAB_004f5b44;
|
|
|
|
uVar4 = InterlockedDecrement((LONG *)(local_24 + -8));
|
|
|
|
}
|
|
|
|
if ((uVar4 == 0) && (psVar1 + -10 != (short *)0x0)) {
|
|
|
|
uVar4 = (*(code *)**(undefined4 **)(psVar1 + -10))(1);
|
|
|
|
}
|
|
|
|
LAB_004f5d22:
|
|
|
|
return uVar4 & 0xffffff00;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f5d30 at 0x004F5D30 (size: 43) ---
|
|
|
|
|
|
void __fastcall FUN_004f5d30(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
char cVar1;
|
|
|
|
|
|
|
|
if (*(int *)(param_1 + 0x60c) != 0) {
|
|
|
|
cVar1 = FUN_004f53c0();
|
|
|
|
if (cVar1 == '\0') {
|
|
|
|
cVar1 = FUN_004f57d0();
|
|
|
|
if (cVar1 == '\0') {
|
|
|
|
FUN_004f5a80();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f5d60 at 0x004F5D60 (size: 184) ---
|
|
|
|
|
|
void __fastcall FUN_004f5d60(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
uint uVar1;
|
|
|
|
int iVar2;
|
|
|
|
int iVar3;
|
|
|
|
int local_4;
|
|
|
|
|
|
|
|
if (*(int *)(param_1 + 0x60c) != 0) {
|
|
|
|
local_4 = param_1;
|
|
|
|
FUN_004668a0(&local_4);
|
|
|
|
iVar2 = local_4;
|
|
|
|
if (*(int *)(local_4 + -4) == 1) {
|
|
|
|
iVar3 = InterlockedDecrement((LONG *)(local_4 + -0x10));
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
if (*(int *)(param_1 + 0x634) != 0) {
|
|
|
|
FUN_005821a0(&local_4,*(undefined4 *)(param_1 + 0x5fc));
|
|
|
|
}
|
|
|
|
FUN_00408e40(&local_4);
|
|
|
|
uVar1 = *(uint *)(param_1 + 0x62c);
|
|
|
|
*(undefined4 *)(param_1 + 0x630) = 0xffffffff;
|
|
|
|
while (100 < uVar1) {
|
|
|
|
FUN_004f4960(0);
|
|
|
|
uVar1 = *(uint *)(param_1 + 0x62c);
|
|
|
|
}
|
|
|
|
FUN_00467ae0();
|
|
|
|
iVar2 = local_4;
|
|
|
|
iVar3 = InterlockedDecrement((LONG *)(local_4 + -0x10));
|
|
|
|
}
|
|
|
|
if ((iVar3 == 0) && ((undefined4 *)(iVar2 + -0x14) != (undefined4 *)0x0)) {
|
|
|
|
(*(code *)**(undefined4 **)(iVar2 + -0x14))(1);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f5e20 at 0x004F5E20 (size: 199) ---
|
|
|
|
|
|
void __thiscall FUN_004f5e20(int param_1,int *param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
switch(param_2[2]) {
|
|
|
|
case 1:
|
|
|
|
if (*param_2 == 0x10000019) {
|
|
|
|
FUN_004f5d60();
|
|
|
|
FUN_00462420(param_2);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
if ((*param_2 == 0x1000048c) && (*(int *)(param_1 + 0x60c) != 0)) {
|
|
|
|
FUN_00469440(*(undefined4 *)(*(int *)(param_1 + 0x60c) + 0x61c));
|
|
|
|
(**(code **)(**(int **)(param_1 + 0x610) + 0x9c))(0xd);
|
|
|
|
FUN_00462420(param_2);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
case 0x12:
|
|
|
|
if ((param_2[1] == *(int *)(param_1 + 0x608)) && ((short)param_2[3] == 0x20)) {
|
|
|
|
FUN_004f5d30();
|
|
|
|
FUN_00462420(param_2);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
case 0x29:
|
|
|
|
case 0x2a:
|
|
|
|
case 0x2f:
|
|
|
|
if (param_2[1] != *(int *)(param_1 + 0x608)) break;
|
|
|
|
case 0x1b:
|
|
|
|
case 0x1f:
|
|
|
|
FUN_00465f90(3);
|
|
|
|
}
|
|
|
|
FUN_00462420(param_2);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f5f30 at 0x004F5F30 (size: 113) ---
|
|
|
|
|
|
void __fastcall FUN_004f5f30(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
char cVar1;
|
|
|
|
int iVar2;
|
|
|
|
int iVar3;
|
|
|
|
|
|
|
|
iVar3 = *(int *)(DAT_0083e03c + 0x32c);
|
|
|
|
if (iVar3 != 0) {
|
|
|
|
iVar2 = FUN_0045fb30();
|
|
|
|
if (iVar3 == iVar2) {
|
|
|
|
iVar3 = FUN_00460330();
|
|
|
|
if (iVar3 == *(int *)(param_1 + 0x60c)) {
|
|
|
|
FUN_0055e1d0();
|
|
|
|
cVar1 = FUN_005d3df0();
|
|
|
|
if (cVar1 == '\0') {
|
|
|
|
(**(code **)(**(int **)(param_1 + 0x60c) + 0x108))();
|
|
|
|
(**(code **)(**(int **)(param_1 + 0x60c) + 0x100))();
|
|
|
|
FUN_0047a600(0);
|
|
|
|
}
|
|
|
|
FUN_004f5d60();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f5fb0 at 0x004F5FB0 (size: 566) ---
|
|
|
|
|
|
void __thiscall FUN_004f5fb0(int param_1,int param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined *puVar1;
|
|
|
|
char cVar2;
|
|
|
|
undefined4 uVar3;
|
|
|
|
LONG LVar4;
|
|
|
|
int *piVar5;
|
|
|
|
undefined4 *puVar6;
|
|
|
|
LONG *lpAddend;
|
|
|
|
undefined *puVar7;
|
|
|
|
undefined4 *local_138;
|
|
|
|
int local_134;
|
|
|
|
int local_130;
|
|
|
|
undefined4 *local_12c;
|
|
|
|
int local_128;
|
|
|
|
int local_124;
|
|
|
|
undefined1 local_120 [144];
|
|
|
|
undefined1 local_90 [144];
|
|
|
|
|
|
|
|
FUN_0042dc80();
|
|
|
|
FUN_0042c9c0(DAT_0084219c,6);
|
|
|
|
FUN_0042dc80();
|
|
|
|
FUN_0042c9c0(DAT_00842194,6);
|
|
|
|
FUN_0042e660(DAT_008421a0,local_90);
|
|
|
|
puVar1 = PTR_DAT_00818340;
|
|
|
|
InterlockedIncrement((LONG *)(PTR_DAT_00818340 + -0x10));
|
|
|
|
if (param_2 == 0x10000020) {
|
|
|
|
piVar5 = (int *)FUN_0058a440(&local_12c);
|
|
|
|
uVar3 = FUN_00404a40(0,*piVar5 + 0x14);
|
|
|
|
FUN_00402070(uVar3);
|
|
|
|
LVar4 = InterlockedDecrement((LONG *)(local_134 + -0x10));
|
|
|
|
puVar6 = local_12c;
|
|
|
|
if ((LVar4 == 0) && ((undefined4 *)(local_134 + -0x14) != (undefined4 *)0x0)) {
|
|
|
|
(*(code *)**(undefined4 **)(local_134 + -0x14))(1);
|
|
|
|
puVar6 = local_12c;
|
|
|
|
}
|
|
|
|
LAB_004f612a:
|
|
|
|
lpAddend = puVar6 + 1;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
if (param_2 == 0x10000021) {
|
|
|
|
piVar5 = (int *)FUN_0058a500(&local_138);
|
|
|
|
uVar3 = FUN_00404a40(0,*piVar5 + 0x14);
|
|
|
|
FUN_00402070(uVar3);
|
|
|
|
LVar4 = InterlockedDecrement((LONG *)(local_124 + -0x10));
|
|
|
|
puVar6 = local_138;
|
|
|
|
if ((LVar4 == 0) && ((undefined4 *)(local_124 + -0x14) != (undefined4 *)0x0)) {
|
|
|
|
(*(code *)**(undefined4 **)(local_124 + -0x14))(1);
|
|
|
|
puVar6 = local_138;
|
|
|
|
}
|
|
|
|
goto LAB_004f612a;
|
|
|
|
}
|
|
|
|
if (param_2 != 0x10000022) goto LAB_004f6144;
|
|
|
|
uVar3 = FUN_0058a380(&local_130);
|
|
|
|
uVar3 = FUN_004a2170(0,uVar3);
|
|
|
|
FUN_00402070(uVar3);
|
|
|
|
LVar4 = InterlockedDecrement((LONG *)(local_128 + -0x10));
|
|
|
|
if ((LVar4 == 0) && ((undefined4 *)(local_128 + -0x14) != (undefined4 *)0x0)) {
|
|
|
|
(*(code *)**(undefined4 **)(local_128 + -0x14))(1);
|
|
|
|
}
|
|
|
|
puVar6 = (undefined4 *)(local_130 + -0x14);
|
|
|
|
lpAddend = (LONG *)(local_130 + -0x10);
|
|
|
|
}
|
|
|
|
LVar4 = InterlockedDecrement(lpAddend);
|
|
|
|
if ((LVar4 == 0) && (puVar6 != (undefined4 *)0x0)) {
|
|
|
|
(**(code **)*puVar6)(1);
|
|
|
|
}
|
|
|
|
LAB_004f6144:
|
|
|
|
if (*(int *)(puVar1 + -4) != 1) {
|
|
|
|
puVar7 = puVar1;
|
|
|
|
InterlockedIncrement((LONG *)(puVar1 + -0x10));
|
|
|
|
FUN_0042e8e0(DAT_008421a4,puVar7);
|
|
|
|
cVar2 = FUN_0042ce00(1);
|
|
|
|
if ((cVar2 != '\0') && (*(int *)(param_1 + 0x60c) != 0)) {
|
|
|
|
FUN_004f3bf0();
|
|
|
|
FUN_0046a350(local_120);
|
|
|
|
FUN_00467bc0();
|
|
|
|
FUN_00469100();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
LVar4 = InterlockedDecrement((LONG *)(puVar1 + -0x10));
|
|
|
|
if ((LVar4 == 0) && ((undefined4 *)(puVar1 + -0x14) != (undefined4 *)0x0)) {
|
|
|
|
(*(code *)**(undefined4 **)(puVar1 + -0x14))(1);
|
|
|
|
}
|
|
|
|
FUN_0042e590();
|
|
|
|
FUN_0042e590();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f64c0 at 0x004F64C0 (size: 3) ---
|
|
|
|
|
|
void FUN_004f64c0(void)
|
|
|
|
|
|
|
|
{
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f64f0 at 0x004F64F0 (size: 109) ---
|
|
|
|
|
|
void __thiscall FUN_004f64f0(int param_1,int param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
int *piVar1;
|
|
|
|
uint uVar2;
|
|
|
|
|
|
|
|
if (*(int *)(param_2 + 8) == 0x18) {
|
|
|
|
uVar2 = 0;
|
|
|
|
if (*(uint *)(param_1 + 0x604) != 0) {
|
|
|
|
piVar1 = *(int **)(param_1 + 0x5fc);
|
|
|
|
while ((*piVar1 == 0 || (*piVar1 != *(int *)(param_2 + 4)))) {
|
|
|
|
uVar2 = uVar2 + 1;
|
|
|
|
piVar1 = piVar1 + 3;
|
|
|
|
if (*(uint *)(param_1 + 0x604) <= uVar2) {
|
|
|
|
FUN_00462420(param_2);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
FUN_0047a4a0(piVar1[1],*(uint *)(*piVar1 + 0xa4) >> 1 & 0xffffff01);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
FUN_00462420(param_2);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f6680 at 0x004F6680 (size: 187) ---
|
|
|
|
|
|
undefined4 __thiscall FUN_004f6680(int *param_1,uint param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 *puVar1;
|
|
|
|
uint uVar2;
|
|
|
|
int iVar3;
|
|
|
|
int iVar4;
|
|
|
|
undefined4 *puVar5;
|
|
|
|
|
|
|
|
uVar2 = param_2;
|
|
|
|
if (param_2 < (uint)param_1[2]) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
if ((param_1[1] & 0x7fffffffU) < param_2) {
|
|
|
|
if (param_2 == 0) {
|
|
|
|
FUN_004cd4c0();
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
iVar3 = thunk_FUN_005df0f5(param_2 * 0xc);
|
|
|
|
if (iVar3 == 0) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
if (*param_1 != 0) {
|
|
|
|
param_2 = param_1[2];
|
|
|
|
if (-1 < (int)(param_2 + -1)) {
|
|
|
|
iVar4 = (param_2 + -1) * 0xc;
|
|
|
|
do {
|
|
|
|
puVar5 = (undefined4 *)(*param_1 + iVar4);
|
|
|
|
puVar1 = (undefined4 *)(iVar4 + iVar3);
|
|
|
|
*puVar1 = *puVar5;
|
|
|
|
puVar1[1] = puVar5[1];
|
|
|
|
puVar1[2] = puVar5[2];
|
|
|
|
iVar4 = iVar4 + -0xc;
|
|
|
|
param_2 = param_2 + -1;
|
|
|
|
} while (param_2 != 0);
|
|
|
|
}
|
|
|
|
if ((param_1[1] & 0x80000000U) == 0x80000000) {
|
|
|
|
operator_delete__((void *)*param_1);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
*param_1 = iVar3;
|
|
|
|
param_1[1] = uVar2 | 0x80000000;
|
|
|
|
}
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f6740 at 0x004F6740 (size: 84) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_004f6740(undefined4 *param_1,undefined4 param_2,undefined4 param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_00472670(param_2,param_3);
|
|
|
|
param_1[0x17e] = &PTR_FUN_007ccb60;
|
|
|
|
*param_1 = &PTR_FUN_007c5fb8;
|
|
|
|
param_1[0x17e] = &PTR_FUN_007c5d10;
|
|
|
|
param_1[0x17f] = 0;
|
|
|
|
param_1[0x180] = 0;
|
|
|
|
param_1[0x181] = 0;
|
|
|
|
param_1[0x182] = 0;
|
|
|
|
param_1[0x183] = 0;
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f67d0 at 0x004F67D0 (size: 102) ---
|
|
|
|
|
|
void __fastcall FUN_004f67d0(undefined4 *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 *puVar1;
|
|
|
|
int *piVar2;
|
|
|
|
|
|
|
|
puVar1 = param_1 + 0x17e;
|
|
|
|
*param_1 = &PTR_FUN_007c5fb8;
|
|
|
|
*puVar1 = &PTR_FUN_007c5d10;
|
|
|
|
FUN_004cd4c0();
|
|
|
|
piVar2 = (int *)FUN_0043c680();
|
|
|
|
if (piVar2 != (int *)0x0) {
|
|
|
|
(**(code **)(*piVar2 + 0xc))(puVar1);
|
|
|
|
}
|
|
|
|
if ((param_1[0x180] & 0x80000000) == 0x80000000) {
|
|
|
|
operator_delete__((void *)param_1[0x17f]);
|
|
|
|
}
|
|
|
|
*puVar1 = &PTR_FUN_007ccb60;
|
|
|
|
FUN_0043c610();
|
|
|
|
FUN_004726c0();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f6840 at 0x004F6840 (size: 83) ---
|
|
|
|
|
|
undefined4 __thiscall FUN_004f6840(int *param_1,undefined4 *param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 *puVar1;
|
|
|
|
undefined4 uVar2;
|
|
|
|
|
|
|
|
if ((param_1[1] & 0x7fffffffU) <= (uint)param_1[2]) {
|
|
|
|
uVar2 = FUN_00453850((param_1[1] & 0x7fffffffU) + 1);
|
|
|
|
uVar2 = FUN_004f6680(uVar2);
|
|
|
|
if ((char)uVar2 == '\0') {
|
|
|
|
return uVar2;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
puVar1 = (undefined4 *)(*param_1 + param_1[2] * 0xc);
|
|
|
|
*puVar1 = *param_2;
|
|
|
|
puVar1[1] = param_2[1];
|
|
|
|
uVar2 = param_2[2];
|
|
|
|
puVar1[2] = uVar2;
|
|
|
|
param_1[2] = param_1[2] + 1;
|
|
|
|
return CONCAT31((int3)((uint)uVar2 >> 8),1);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f68a0 at 0x004F68A0 (size: 30) ---
|
|
|
|
|
|
void * __thiscall FUN_004f68a0(void *param_1,byte param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_004f67d0();
|
|
|
|
if ((param_2 & 1) != 0) {
|
|
|
|
operator_delete(param_1);
|
|
|
|
}
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f68c0 at 0x004F68C0 (size: 166) ---
|
|
|
|
|
|
void __fastcall FUN_004f68c0(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
uint uVar2;
|
|
|
|
undefined4 local_c;
|
|
|
|
undefined1 local_8 [4];
|
|
|
|
undefined1 local_4;
|
|
|
|
|
|
|
|
local_c = FUN_00463c00(0x1000005c);
|
|
|
|
FUN_00460990(0x10000029,local_8);
|
|
|
|
local_4 = 0;
|
|
|
|
FUN_004f6840(&local_c);
|
|
|
|
local_c = FUN_00463c00(0x10000061);
|
|
|
|
FUN_00460990(0x10000029,local_8);
|
|
|
|
local_4 = 0;
|
|
|
|
FUN_004f6840(&local_c);
|
|
|
|
uVar2 = 0;
|
|
|
|
if (*(int *)(param_1 + 0x604) != 0) {
|
|
|
|
iVar1 = 0;
|
|
|
|
do {
|
|
|
|
(**(code **)(**(int **)(*(int *)(param_1 + 0x5fc) + iVar1) + 0x18))(0);
|
|
|
|
uVar2 = uVar2 + 1;
|
|
|
|
iVar1 = iVar1 + 0xc;
|
|
|
|
} while (uVar2 < *(uint *)(param_1 + 0x604));
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f6970 at 0x004F6970 (size: 16) ---
|
|
|
|
|
|
void FUN_004f6970(void)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_004639a0();
|
|
|
|
FUN_004f68c0();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f6980 at 0x004F6980 (size: 227) ---
|
|
|
|
|
|
void __thiscall FUN_004f6980(int param_1,int param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
int iVar2;
|
|
|
|
undefined4 *puVar3;
|
|
|
|
undefined1 auStack_10 [16];
|
|
|
|
|
|
|
|
if (DAT_0083da58 == 0) {
|
|
|
|
iVar1 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar1 = *(int *)(DAT_0083da58 + 0xf4);
|
|
|
|
}
|
|
|
|
if (iVar1 == param_2) {
|
|
|
|
param_2 = 0;
|
|
|
|
}
|
|
|
|
iVar1 = FUN_005583f0(param_2);
|
|
|
|
if (iVar1 != 0) {
|
|
|
|
iVar2 = FUN_0058df90();
|
|
|
|
if ((iVar2 == 0) && (*(int *)(iVar1 + 0x68) != 2)) goto LAB_004f69c9;
|
|
|
|
}
|
|
|
|
param_2 = 0;
|
|
|
|
iVar1 = 0;
|
|
|
|
LAB_004f69c9:
|
|
|
|
if (param_2 != *(int *)(param_1 + 8)) {
|
|
|
|
iVar2 = FUN_005583f0(*(int *)(param_1 + 8));
|
|
|
|
if (iVar2 != 0) {
|
|
|
|
(**(code **)(*(int *)(iVar2 + 0xc) + 0xc))(param_1);
|
|
|
|
}
|
|
|
|
*(int *)(param_1 + 8) = param_2;
|
|
|
|
if (iVar1 != 0) {
|
|
|
|
(**(code **)(*(int *)(iVar1 + 0xc) + 4))(0x4dd245,param_1);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (DAT_0083da58 != 0) {
|
|
|
|
FUN_00451d60(param_2);
|
|
|
|
}
|
|
|
|
if (*(char *)(param_1 + 0x60) != '\0') {
|
|
|
|
if (param_2 == 0) {
|
|
|
|
(**(code **)(**(int **)(param_1 + 0x50) + 0x18))(0);
|
|
|
|
(**(code **)(**(int **)(param_1 + 0x4c) + 0x18))(0);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
puVar3 = (undefined4 *)FUN_004d9070(auStack_10,param_2);
|
|
|
|
*(undefined4 *)(param_1 + 0xc) = *puVar3;
|
|
|
|
*(undefined4 *)(param_1 + 0x10) = puVar3[1];
|
|
|
|
*(undefined4 *)(param_1 + 0x14) = puVar3[2];
|
|
|
|
*(undefined4 *)(param_1 + 0x18) = puVar3[3];
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f6a70 at 0x004F6A70 (size: 350) ---
|
|
|
|
|
|
undefined4 FUN_004f6a70(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 uVar1;
|
|
|
|
char cVar2;
|
|
|
|
int *piVar3;
|
|
|
|
undefined4 uVar4;
|
|
|
|
int iVar5;
|
|
|
|
undefined4 uVar6;
|
|
|
|
undefined4 unaff_EBX;
|
|
|
|
|
|
|
|
piVar3 = (int *)(**(code **)(*DAT_00870340 + 0xc))();
|
|
|
|
if (piVar3 != (int *)0x0) {
|
|
|
|
iVar5 = *piVar3;
|
|
|
|
uVar6 = *(undefined4 *)(param_1 + 0xa0);
|
|
|
|
uVar1 = *(undefined4 *)(param_1 + 0xa4);
|
|
|
|
uVar4 = FUN_0054fe80(1);
|
|
|
|
cVar2 = (**(code **)(iVar5 + 0x58))(uVar6,uVar1,uVar4);
|
|
|
|
if (cVar2 != '\0') {
|
|
|
|
switch(DAT_0081d640) {
|
|
|
|
case 1:
|
|
|
|
FUN_00442c70(param_1 + 0xac,0,0x3f800000);
|
|
|
|
FUN_00442c90(0,4,unaff_EBX);
|
|
|
|
break;
|
|
|
|
case 2:
|
|
|
|
FUN_00442c70(param_1 + 0xac,0,0x3f800000);
|
|
|
|
FUN_00442c90(0,3,unaff_EBX);
|
|
|
|
break;
|
|
|
|
case 3:
|
|
|
|
FUN_00442c70(param_1 + 0xac,0,0x3f800000);
|
|
|
|
FUN_00442c90(0,5,unaff_EBX);
|
|
|
|
break;
|
|
|
|
case 4:
|
|
|
|
uVar6 = FUN_00424000();
|
|
|
|
FUN_004428b0(param_1 + 0xac,0,0x3f800000,0,3,uVar6);
|
|
|
|
}
|
|
|
|
iVar5 = FUN_005df0f5(0xc);
|
|
|
|
if (iVar5 != 0) {
|
|
|
|
uVar6 = FUN_00694d80(piVar3);
|
|
|
|
(**(code **)(*piVar3 + 0x14))();
|
|
|
|
return uVar6;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
(**(code **)(*piVar3 + 0x14))();
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f6bf0 at 0x004F6BF0 (size: 65) ---
|
|
|
|
|
|
void __fastcall FUN_004f6bf0(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
char cVar1;
|
|
|
|
|
|
|
|
FUN_0055e1d0();
|
|
|
|
cVar1 = FUN_005d3ee0();
|
|
|
|
*(char *)(param_1 + 0x60) = cVar1;
|
|
|
|
if ((*(char *)(param_1 + 0x61) != '\0') && (cVar1 != '\0')) {
|
|
|
|
FUN_004f6980(*(undefined4 *)(param_1 + 8));
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
(**(code **)(**(int **)(param_1 + 0x50) + 0x18))(0);
|
|
|
|
(**(code **)(**(int **)(param_1 + 0x4c) + 0x18))(0);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f6c40 at 0x004F6C40 (size: 69) ---
|
|
|
|
|
|
void __fastcall FUN_004f6c40(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
char cVar1;
|
|
|
|
|
|
|
|
FUN_0055e1d0();
|
|
|
|
cVar1 = FUN_005d3ee0();
|
|
|
|
*(char *)(param_1 + 0x60) = cVar1;
|
|
|
|
if ((*(char *)(param_1 + 0x61) != '\0') && (cVar1 != '\0')) {
|
|
|
|
FUN_004f6980(*(undefined4 *)(param_1 + 8));
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
(**(code **)(**(int **)(param_1 + 0x50) + 0x18))(0);
|
|
|
|
(**(code **)(**(int **)(param_1 + 0x4c) + 0x18))(0);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f6ce0 at 0x004F6CE0 (size: 84) ---
|
|
|
|
|
|
void __thiscall FUN_004f6ce0(int param_1,char param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
char cVar1;
|
|
|
|
|
|
|
|
if (*(char *)(param_1 + 0x61) != param_2) {
|
|
|
|
*(char *)(param_1 + 0x61) = param_2;
|
|
|
|
FUN_0055e1d0();
|
|
|
|
cVar1 = FUN_005d3ee0();
|
|
|
|
*(char *)(param_1 + 0x60) = cVar1;
|
|
|
|
if ((*(char *)(param_1 + 0x61) == '\0') || (cVar1 == '\0')) {
|
|
|
|
(**(code **)(**(int **)(param_1 + 0x50) + 0x18))(0);
|
|
|
|
/* WARNING: Could not recover jumptable at 0x004f6d31. Too many branches */
|
|
|
|
/* WARNING: Treating indirect jump as call */
|
|
|
|
(**(code **)(**(int **)(param_1 + 0x4c) + 0x18))();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
FUN_004f6980(*(undefined4 *)(param_1 + 8));
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f6d80 at 0x004F6D80 (size: 103) ---
|
|
|
|
|
|
void __thiscall FUN_004f6d80(int param_1,int param_2,undefined4 *param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
char cVar1;
|
|
|
|
undefined4 uVar2;
|
|
|
|
|
|
|
|
if ((param_2 == *(int *)(param_1 + 0x1c)) && (cVar1 = FUN_00423f40(param_1 + 0x30), cVar1 != '\0')
|
|
|
|
) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
uVar2 = FUN_004f6a70(*(undefined4 *)(*(int *)(param_1 + 0x40) + param_2 * 4),param_3);
|
|
|
|
FUN_006a0660();
|
|
|
|
FUN_006a0610(uVar2);
|
|
|
|
*(undefined4 *)(param_1 + 0x30) = *param_3;
|
|
|
|
*(undefined4 *)(param_1 + 0x34) = param_3[1];
|
|
|
|
*(undefined4 *)(param_1 + 0x38) = param_3[2];
|
|
|
|
*(undefined4 *)(param_1 + 0x3c) = param_3[3];
|
|
|
|
*(int *)(param_1 + 0x1c) = param_2;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f6df0 at 0x004F6DF0 (size: 118) ---
|
|
|
|
|
|
void __thiscall FUN_004f6df0(int param_1,undefined4 *param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
char cVar1;
|
|
|
|
undefined4 uVar2;
|
|
|
|
uint uVar3;
|
|
|
|
|
|
|
|
cVar1 = FUN_00423f40((undefined4 *)(param_1 + 0x20));
|
|
|
|
if (cVar1 == '\0') {
|
|
|
|
uVar3 = 4;
|
|
|
|
do {
|
|
|
|
uVar2 = FUN_004f6a70(*(undefined4 *)(*(int *)(param_1 + 0x40) + uVar3),param_2);
|
|
|
|
FUN_006a0660();
|
|
|
|
FUN_006a0610(uVar2);
|
|
|
|
uVar3 = uVar3 + 4;
|
|
|
|
} while (uVar3 < 0x11);
|
|
|
|
*(undefined4 *)(param_1 + 0x20) = *param_2;
|
|
|
|
*(undefined4 *)(param_1 + 0x24) = param_2[1];
|
|
|
|
*(undefined4 *)(param_1 + 0x28) = param_2[2];
|
|
|
|
*(undefined4 *)(param_1 + 0x2c) = param_2[3];
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f6e70 at 0x004F6E70 (size: 127) ---
|
|
|
|
|
|
void __fastcall FUN_004f6e70(undefined4 *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int *piVar1;
|
|
|
|
|
|
|
|
*param_1 = &PTR_FUN_007c6218;
|
|
|
|
param_1[1] = &PTR_LAB_007c620c;
|
|
|
|
DAT_00842234 = 0;
|
|
|
|
(**(code **)(*DAT_008f958c + 0x14))(param_1 + 1);
|
|
|
|
piVar1 = (int *)FUN_0043c680();
|
|
|
|
if (piVar1 != (int *)0x0) {
|
|
|
|
(**(code **)(*piVar1 + 0xc))(param_1);
|
|
|
|
}
|
|
|
|
if ((param_1[0x16] & 0x80000000) == 0x80000000) {
|
|
|
|
operator_delete__((void *)param_1[0x15]);
|
|
|
|
}
|
|
|
|
if ((param_1[0x11] & 0x80000000) == 0x80000000) {
|
|
|
|
operator_delete__((void *)param_1[0x10]);
|
|
|
|
}
|
|
|
|
*param_1 = &PTR_FUN_007ccb60;
|
|
|
|
FUN_0043c610();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f6ef0 at 0x004F6EF0 (size: 2083) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void __thiscall FUN_004f6ef0(int param_1,float param_2,int param_3,int *param_4,float param_5)
|
|
|
|
|
|
|
|
{
|
|
|
|
float fVar1;
|
|
|
|
int iVar2;
|
|
|
|
int iVar3;
|
|
|
|
int iVar4;
|
|
|
|
int iVar5;
|
|
|
|
int iVar6;
|
|
|
|
int iVar7;
|
|
|
|
int unaff_EBP;
|
|
|
|
int iVar8;
|
|
|
|
float10 fVar9;
|
|
|
|
float10 fVar10;
|
|
|
|
float10 fVar11;
|
|
|
|
float10 fVar12;
|
|
|
|
undefined4 uVar13;
|
|
|
|
|
|
|
|
if (((*(char *)(param_1 + 0x61) == '\0') || (*(char *)(param_1 + 0x60) == '\0')) ||
|
|
|
|
(param_2 == 0.0)) {
|
|
|
|
uVar13 = 0;
|
|
|
|
LAB_004f76f7:
|
|
|
|
(**(code **)(**(int **)(param_1 + 0x50) + 0x18))(uVar13);
|
|
|
|
(**(code **)(**(int **)(param_1 + 0x4c) + 0x18))(0);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
if (param_3 == 1) {
|
|
|
|
FUN_004f6df0(param_1 + 0xc);
|
|
|
|
iVar3 = FUN_0069fe60();
|
|
|
|
iVar4 = FUN_0069fe70();
|
|
|
|
iVar5 = (*(int *)(DAT_00870340 + 0x98) - iVar4) + -8;
|
|
|
|
iVar7 = param_4[2];
|
|
|
|
iVar8 = *param_4 - iVar3;
|
|
|
|
iVar6 = (*(int *)(DAT_00870340 + 0x94) - iVar3) + -8;
|
|
|
|
iVar2 = param_4[1] - iVar4;
|
|
|
|
if (iVar7 < iVar8) {
|
|
|
|
iVar8 = iVar7 + -1;
|
|
|
|
}
|
|
|
|
if (param_4[3] < iVar2) {
|
|
|
|
iVar2 = param_4[3] + -1;
|
|
|
|
}
|
|
|
|
if (iVar8 < 8) {
|
|
|
|
iVar8 = 8;
|
|
|
|
}
|
|
|
|
if (iVar2 < 8) {
|
|
|
|
iVar2 = 8;
|
|
|
|
}
|
|
|
|
if (iVar7 < iVar3 + 8) {
|
|
|
|
iVar7 = iVar3 + 8;
|
|
|
|
}
|
|
|
|
if (iVar6 - iVar3 < iVar8) {
|
|
|
|
iVar8 = iVar6 - iVar3;
|
|
|
|
}
|
|
|
|
iVar3 = iVar5 - iVar4;
|
|
|
|
if (iVar3 < iVar2) {
|
|
|
|
iVar2 = iVar3;
|
|
|
|
}
|
|
|
|
if (iVar6 < iVar7) {
|
|
|
|
iVar7 = iVar6;
|
|
|
|
}
|
|
|
|
(**(code **)(**(int **)(param_1 + 0x50) + 0x2c))(iVar8,iVar2);
|
|
|
|
(**(code **)(**(int **)(param_1 + 0x50) + 0x30))
|
|
|
|
((iVar7 - iVar8) + iVar4,(iVar5 - iVar2) + unaff_EBP);
|
|
|
|
uVar13 = 1;
|
|
|
|
goto LAB_004f76f7;
|
|
|
|
}
|
|
|
|
if (param_3 != 2) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
if (((float)_DAT_007c6540 <= param_5) || (param_5 < (float)_DAT_007c6538)) {
|
|
|
|
uVar13 = 6;
|
|
|
|
LAB_004f708d:
|
|
|
|
FUN_004f6d80(uVar13,param_1 + 0xc);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
if (((float)_DAT_007c6538 <= param_5) && (param_5 < (float)_DAT_007c6530)) {
|
|
|
|
uVar13 = 7;
|
|
|
|
goto LAB_004f708d;
|
|
|
|
}
|
|
|
|
if (((float)_DAT_007c6530 <= param_5) && (param_5 < (float)_DAT_007c6528)) {
|
|
|
|
uVar13 = 9;
|
|
|
|
goto LAB_004f708d;
|
|
|
|
}
|
|
|
|
if (((float)_DAT_007c6528 <= param_5) && (param_5 < (float)_DAT_007c6520)) {
|
|
|
|
uVar13 = 0xc;
|
|
|
|
goto LAB_004f708d;
|
|
|
|
}
|
|
|
|
if (((float)_DAT_007c6520 <= param_5) && (param_5 < (float)_DAT_007c6518)) {
|
|
|
|
uVar13 = 0xb;
|
|
|
|
goto LAB_004f708d;
|
|
|
|
}
|
|
|
|
if (((float)_DAT_007c6518 <= param_5) && (param_5 < (float)_DAT_007c6510)) {
|
|
|
|
uVar13 = 10;
|
|
|
|
goto LAB_004f708d;
|
|
|
|
}
|
|
|
|
if (((float)_DAT_007c6510 <= param_5) && (param_5 < (float)_DAT_007c6508)) {
|
|
|
|
uVar13 = 8;
|
|
|
|
goto LAB_004f708d;
|
|
|
|
}
|
|
|
|
if (((float)_DAT_007c6508 <= param_5) && (param_5 < (float)_DAT_007c6540)) {
|
|
|
|
uVar13 = 5;
|
|
|
|
goto LAB_004f708d;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x4c) == 0) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
iVar2 = FUN_0069fe60();
|
|
|
|
param_2 = (float)FUN_0069fe70();
|
|
|
|
iVar8 = DAT_00870340;
|
|
|
|
fVar9 = (float10)(int)param_2;
|
|
|
|
if (param_5 < (float)_DAT_007c6500 == (param_5 == (float)_DAT_007c6500)) {
|
|
|
|
if (((float)_DAT_007c6500 < param_5) &&
|
|
|
|
(param_5 < (float)_DAT_007c64f8 != (param_5 == (float)_DAT_007c64f8))) {
|
|
|
|
fVar1 = (float)*(int *)(DAT_00870340 + 0x94);
|
|
|
|
if (*(int *)(DAT_00870340 + 0x94) < 0) {
|
|
|
|
fVar1 = fVar1 + _DAT_0079920c;
|
|
|
|
}
|
|
|
|
param_2 = (fVar1 - DAT_007c61f4) - (float)iVar2;
|
|
|
|
fVar10 = (float10)*(int *)(DAT_00870340 + 0x98);
|
|
|
|
if (*(int *)(DAT_00870340 + 0x98) < 0) {
|
|
|
|
fVar10 = fVar10 + (float10)_DAT_0079920c;
|
|
|
|
}
|
|
|
|
fVar11 = (float10)fptan(((float10)_DAT_007c64f0 - (float10)param_5) * (float10)_DAT_007c61f0);
|
|
|
|
param_5 = (float)((fVar10 * (float10)_DAT_007938b8 -
|
|
|
|
(float10)fVar1 * (float10)_DAT_007938b8 * fVar11) -
|
|
|
|
fVar9 * (float10)_DAT_007938b8);
|
|
|
|
goto LAB_004f7553;
|
|
|
|
}
|
|
|
|
if (((float)_DAT_007c64f8 < param_5) &&
|
|
|
|
(param_5 < (float)_DAT_007c64e8 != (param_5 == (float)_DAT_007c64e8))) {
|
|
|
|
fVar10 = (float10)*(int *)(DAT_00870340 + 0x94);
|
|
|
|
if (*(int *)(DAT_00870340 + 0x94) < 0) {
|
|
|
|
fVar10 = fVar10 + (float10)_DAT_0079920c;
|
|
|
|
}
|
|
|
|
param_2 = (float)((fVar10 - (float10)DAT_007c61f4) - (float10)iVar2);
|
|
|
|
fVar11 = (float10)fptan(((float10)param_5 - (float10)_DAT_007c64f0) * (float10)_DAT_007c61f0);
|
|
|
|
fVar12 = (float10)*(int *)(DAT_00870340 + 0x98);
|
|
|
|
if (*(int *)(DAT_00870340 + 0x98) < 0) {
|
|
|
|
fVar12 = fVar12 + (float10)_DAT_0079920c;
|
|
|
|
}
|
|
|
|
param_5 = (float)((fVar12 * (float10)_DAT_007938b8 + fVar10 * (float10)_DAT_007938b8 * fVar11)
|
|
|
|
- fVar9 * (float10)_DAT_007938b8);
|
|
|
|
goto LAB_004f7553;
|
|
|
|
}
|
|
|
|
if (((float)_DAT_007c64e8 < param_5) &&
|
|
|
|
(param_5 < (float)_DAT_007c64e0 != (param_5 == (float)_DAT_007c64e0))) {
|
|
|
|
fVar10 = (float10)*(int *)(DAT_00870340 + 0x98);
|
|
|
|
if (*(int *)(DAT_00870340 + 0x98) < 0) {
|
|
|
|
fVar10 = fVar10 + (float10)_DAT_0079920c;
|
|
|
|
}
|
|
|
|
fVar11 = (float10)fptan(((float10)_DAT_0079cc8c - (float10)param_5) * (float10)_DAT_007c61f0);
|
|
|
|
fVar12 = (float10)*(int *)(DAT_00870340 + 0x94);
|
|
|
|
if (*(int *)(DAT_00870340 + 0x94) < 0) {
|
|
|
|
fVar12 = fVar12 + (float10)_DAT_0079920c;
|
|
|
|
}
|
|
|
|
param_2 = (float)((fVar12 * (float10)_DAT_007938b8 + fVar10 * (float10)_DAT_007938b8 * fVar11)
|
|
|
|
- (float10)iVar2 * (float10)_DAT_007938b8);
|
|
|
|
param_5 = (float)((fVar10 - (float10)DAT_007c61f4) - fVar9);
|
|
|
|
goto LAB_004f7553;
|
|
|
|
}
|
|
|
|
if (((float)_DAT_007c64e0 < param_5) &&
|
|
|
|
(param_5 < (float)_DAT_007c64d8 != (param_5 == (float)_DAT_007c64d8))) {
|
|
|
|
fVar10 = (float10)*(int *)(DAT_00870340 + 0x98);
|
|
|
|
if (*(int *)(DAT_00870340 + 0x98) < 0) {
|
|
|
|
fVar10 = fVar10 + (float10)_DAT_0079920c;
|
|
|
|
}
|
|
|
|
fVar11 = (float10)*(int *)(DAT_00870340 + 0x94);
|
|
|
|
if (*(int *)(DAT_00870340 + 0x94) < 0) {
|
|
|
|
fVar11 = fVar11 + (float10)_DAT_0079920c;
|
|
|
|
}
|
|
|
|
fVar12 = (float10)fptan(((float10)param_5 - (float10)_DAT_0079cc8c) * (float10)_DAT_007c61f0);
|
|
|
|
param_2 = (float)((fVar11 * (float10)_DAT_007938b8 - fVar10 * (float10)_DAT_007938b8 * fVar12)
|
|
|
|
- (float10)iVar2 * (float10)_DAT_007938b8);
|
|
|
|
param_5 = (float)((fVar10 - (float10)DAT_007c61f4) - fVar9);
|
|
|
|
goto LAB_004f7553;
|
|
|
|
}
|
|
|
|
if (((float)_DAT_007c64d8 < param_5) &&
|
|
|
|
(param_5 < (float)_DAT_007c64d0 != (param_5 == (float)_DAT_007c64d0))) {
|
|
|
|
param_2 = DAT_007c61f4;
|
|
|
|
fVar10 = (float10)fptan(((float10)_DAT_007c64c8 - (float10)param_5) * (float10)_DAT_007c61f0);
|
|
|
|
fVar11 = (float10)*(int *)(DAT_00870340 + 0x94);
|
|
|
|
if (*(int *)(DAT_00870340 + 0x94) < 0) {
|
|
|
|
fVar11 = fVar11 + (float10)_DAT_0079920c;
|
|
|
|
}
|
|
|
|
fVar12 = (float10)*(int *)(DAT_00870340 + 0x98);
|
|
|
|
if (*(int *)(DAT_00870340 + 0x98) < 0) {
|
|
|
|
fVar12 = fVar12 + (float10)_DAT_0079920c;
|
|
|
|
}
|
|
|
|
param_5 = (float)((fVar12 * (float10)_DAT_007938b8 + fVar11 * (float10)_DAT_007938b8 * fVar10)
|
|
|
|
- fVar9 * (float10)_DAT_007938b8);
|
|
|
|
goto LAB_004f7553;
|
|
|
|
}
|
|
|
|
if (((float)_DAT_007c64d0 < param_5) &&
|
|
|
|
(param_5 < (float)_DAT_007c64c0 != (param_5 == (float)_DAT_007c64c0))) {
|
|
|
|
fVar10 = (float10)*(int *)(DAT_00870340 + 0x98);
|
|
|
|
param_2 = DAT_007c61f4;
|
|
|
|
if (*(int *)(DAT_00870340 + 0x98) < 0) {
|
|
|
|
fVar10 = fVar10 + (float10)_DAT_0079920c;
|
|
|
|
}
|
|
|
|
fVar11 = (float10)fptan(((float10)param_5 - (float10)_DAT_007c64c8) * (float10)_DAT_007c61f0);
|
|
|
|
fVar12 = (float10)*(int *)(DAT_00870340 + 0x94);
|
|
|
|
if (*(int *)(DAT_00870340 + 0x94) < 0) {
|
|
|
|
fVar12 = fVar12 + (float10)_DAT_0079920c;
|
|
|
|
}
|
|
|
|
param_5 = (float)((fVar10 * (float10)_DAT_007938b8 - fVar12 * (float10)_DAT_007938b8 * fVar11)
|
|
|
|
- fVar9 * (float10)_DAT_007938b8);
|
|
|
|
goto LAB_004f7553;
|
|
|
|
}
|
|
|
|
if (param_5 <= (float)_DAT_007c64c0) goto LAB_004f7553;
|
|
|
|
fVar10 = (float10)*(int *)(DAT_00870340 + 0x94);
|
|
|
|
if (*(int *)(DAT_00870340 + 0x94) < 0) {
|
|
|
|
fVar10 = fVar10 + (float10)_DAT_0079920c;
|
|
|
|
}
|
|
|
|
fVar11 = (float10)fptan(((float10)_DAT_0079cc60 - (float10)param_5) * (float10)_DAT_007c61f0);
|
|
|
|
fVar12 = (float10)*(int *)(DAT_00870340 + 0x98);
|
|
|
|
if (*(int *)(DAT_00870340 + 0x98) < 0) {
|
|
|
|
fVar12 = fVar12 + (float10)_DAT_0079920c;
|
|
|
|
}
|
|
|
|
fVar10 = fVar10 * (float10)_DAT_007938b8 - fVar12 * (float10)_DAT_007938b8 * fVar11;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
fVar10 = (float10)fptan((float10)_DAT_007c61f0 * (float10)param_5);
|
|
|
|
fVar11 = (float10)*(int *)(DAT_00870340 + 0x98);
|
|
|
|
if (*(int *)(DAT_00870340 + 0x98) < 0) {
|
|
|
|
fVar11 = fVar11 + (float10)_DAT_0079920c;
|
|
|
|
}
|
|
|
|
fVar12 = (float10)*(int *)(DAT_00870340 + 0x94);
|
|
|
|
if (*(int *)(DAT_00870340 + 0x94) < 0) {
|
|
|
|
fVar12 = fVar12 + (float10)_DAT_0079920c;
|
|
|
|
}
|
|
|
|
fVar10 = fVar12 * (float10)_DAT_007938b8 + fVar11 * (float10)_DAT_007938b8 * fVar10;
|
|
|
|
}
|
|
|
|
param_5 = DAT_007c61f4;
|
|
|
|
param_2 = (float)(fVar10 - (float10)iVar2 * (float10)_DAT_007938b8);
|
|
|
|
LAB_004f7553:
|
|
|
|
fVar10 = (float10)*(int *)(DAT_00870340 + 0x98);
|
|
|
|
iVar7 = **(int **)(param_1 + 0x4c);
|
|
|
|
if (*(int *)(DAT_00870340 + 0x98) < 0) {
|
|
|
|
fVar10 = fVar10 + (float10)_DAT_0079920c;
|
|
|
|
}
|
|
|
|
FUN_004523e0(param_5,DAT_007c61f4,(float)((fVar10 - (float10)DAT_007c61f4) - fVar9));
|
|
|
|
uVar13 = FUN_005df4c4();
|
|
|
|
fVar1 = (float)*(int *)(iVar8 + 0x94);
|
|
|
|
if (*(int *)(iVar8 + 0x94) < 0) {
|
|
|
|
fVar1 = fVar1 + _DAT_0079920c;
|
|
|
|
}
|
|
|
|
FUN_004523e0(param_2,DAT_007c61f4,(fVar1 - DAT_007c61f4) - (float)iVar2,uVar13);
|
|
|
|
uVar13 = FUN_005df4c4();
|
|
|
|
(**(code **)(iVar7 + 0x2c))(uVar13);
|
|
|
|
(**(code **)(**(int **)(param_1 + 0x50) + 0x18))(0);
|
|
|
|
(**(code **)(**(int **)(param_1 + 0x4c) + 0x18))(1);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f7720 at 0x004F7720 (size: 321) ---
|
|
|
|
|
|
undefined4 * __fastcall FUN_004f7720(undefined4 *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
char cVar1;
|
|
|
|
undefined4 uVar2;
|
|
|
|
uint uVar3;
|
|
|
|
|
|
|
|
*param_1 = &PTR_FUN_00801670;
|
|
|
|
*param_1 = &PTR_FUN_007ccb60;
|
|
|
|
param_1[1] = &PTR_LAB_007a6af4;
|
|
|
|
*param_1 = &PTR_FUN_007c6218;
|
|
|
|
param_1[1] = &PTR_LAB_007c620c;
|
|
|
|
param_1[0x10] = 0;
|
|
|
|
param_1[0x11] = 0;
|
|
|
|
param_1[0x12] = 0;
|
|
|
|
param_1[0x13] = 0;
|
|
|
|
param_1[0x14] = 0;
|
|
|
|
param_1[0x15] = 0;
|
|
|
|
param_1[0x16] = 0;
|
|
|
|
param_1[0x17] = 0;
|
|
|
|
*(undefined1 *)(param_1 + 0x18) = 0;
|
|
|
|
*(undefined1 *)((int)param_1 + 0x61) = 1;
|
|
|
|
DAT_00842234 = param_1;
|
|
|
|
if ((param_1[0x11] & 0x7fffffff) < 0xd) {
|
|
|
|
cVar1 = FUN_004180a0(0xd);
|
|
|
|
if (cVar1 != '\0') goto LAB_004f77dd;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar3 = 0xd;
|
|
|
|
if (0xd < (uint)param_1[0x12]) {
|
|
|
|
do {
|
|
|
|
*(undefined4 *)(param_1[0x10] + uVar3 * 4) = 0;
|
|
|
|
uVar3 = uVar3 + 1;
|
|
|
|
} while (uVar3 < (uint)param_1[0x12]);
|
|
|
|
}
|
|
|
|
LAB_004f77dd:
|
|
|
|
param_1[0x12] = 0xd;
|
|
|
|
}
|
|
|
|
if ((param_1[0x16] & 0x7fffffff) < 5) {
|
|
|
|
cVar1 = FUN_004180a0(5);
|
|
|
|
if (cVar1 == '\0') goto LAB_004f7828;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar3 = 5;
|
|
|
|
if (5 < (uint)param_1[0x17]) {
|
|
|
|
do {
|
|
|
|
*(undefined4 *)(param_1[0x15] + uVar3 * 4) = 0;
|
|
|
|
uVar3 = uVar3 + 1;
|
|
|
|
} while (uVar3 < (uint)param_1[0x17]);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
param_1[0x17] = 5;
|
|
|
|
LAB_004f7828:
|
|
|
|
uVar3 = 1;
|
|
|
|
do {
|
|
|
|
uVar2 = FUN_00415730(uVar3,0x10000009,0xc);
|
|
|
|
if (uVar3 < (uint)param_1[0x12]) {
|
|
|
|
*(undefined4 *)(param_1[0x10] + uVar3 * 4) = uVar2;
|
|
|
|
}
|
|
|
|
uVar3 = uVar3 + 1;
|
|
|
|
} while (uVar3 < 0xd);
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f78a0 at 0x004F78A0 (size: 429) ---
|
|
|
|
|
|
undefined4 __fastcall FUN_004f78a0(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
undefined4 uVar2;
|
|
|
|
int *piVar3;
|
|
|
|
|
|
|
|
uVar2 = FUN_00463ba0(0x10000045);
|
|
|
|
*(undefined4 *)(param_1 + 0x4c) = uVar2;
|
|
|
|
uVar2 = FUN_00463ba0(0x10000038);
|
|
|
|
*(undefined4 *)(param_1 + 0x50) = uVar2;
|
|
|
|
uVar2 = FUN_00463ba0(0x10000039);
|
|
|
|
if (1 < *(uint *)(param_1 + 0x5c)) {
|
|
|
|
*(undefined4 *)(*(int *)(param_1 + 0x54) + 4) = uVar2;
|
|
|
|
}
|
|
|
|
uVar2 = FUN_00463ba0(0x1000003a);
|
|
|
|
if (2 < *(uint *)(param_1 + 0x5c)) {
|
|
|
|
*(undefined4 *)(*(int *)(param_1 + 0x54) + 8) = uVar2;
|
|
|
|
}
|
|
|
|
uVar2 = FUN_00463ba0(0x1000003b);
|
|
|
|
if (3 < *(uint *)(param_1 + 0x5c)) {
|
|
|
|
*(undefined4 *)(*(int *)(param_1 + 0x54) + 0xc) = uVar2;
|
|
|
|
}
|
|
|
|
uVar2 = FUN_00463ba0(0x1000003c);
|
|
|
|
if (4 < *(uint *)(param_1 + 0x5c)) {
|
|
|
|
*(undefined4 *)(*(int *)(param_1 + 0x54) + 0x10) = uVar2;
|
|
|
|
}
|
|
|
|
if ((((*(int *)(param_1 + 0x4c) != 0) && (*(int *)(param_1 + 0x50) != 0)) &&
|
|
|
|
(iVar1 = *(int *)(param_1 + 0x54), *(int *)(iVar1 + 4) != 0)) &&
|
|
|
|
(((*(int *)(iVar1 + 8) != 0 && (*(int *)(iVar1 + 0xc) != 0)) && (*(int *)(iVar1 + 0x10) != 0)))
|
|
|
|
) {
|
|
|
|
piVar3 = (int *)FUN_0043c680();
|
|
|
|
if (piVar3 != (int *)0x0) {
|
|
|
|
(**(code **)(*piVar3 + 4))(0x4dd1ef,param_1);
|
|
|
|
(**(code **)(*piVar3 + 4))(0x4dd1f0,param_1);
|
|
|
|
(**(code **)(*piVar3 + 4))(0x4dd21f,param_1);
|
|
|
|
(**(code **)(*piVar3 + 4))(0x186a8,param_1);
|
|
|
|
}
|
|
|
|
param_1 = param_1 + 4;
|
|
|
|
(**(code **)(*DAT_008f958c + 8))(7,0x1a,param_1);
|
|
|
|
(**(code **)(*DAT_008f958c + 4))(0,7,0x1a,param_1);
|
|
|
|
(**(code **)(*DAT_008f958c + 4))(0,1,0x86,param_1);
|
|
|
|
(**(code **)(*DAT_008f958c + 4))(0,1,0x5f,param_1);
|
|
|
|
(**(code **)(*DAT_008f958c + 4))(0,1,0x85,param_1);
|
|
|
|
(**(code **)(*DAT_008f958c + 4))(0,5,1,param_1);
|
|
|
|
FUN_004f6bf0();
|
|
|
|
if (DAT_0083da58 != 0) {
|
|
|
|
FUN_00451d50(&LAB_004f7870);
|
|
|
|
}
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
*(undefined1 *)(param_1 + 0x60) = 0;
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f7a90 at 0x004F7A90 (size: 95) ---
|
|
|
|
|
|
undefined4 * __thiscall
|
|
|
|
FUN_004f7a90(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 uVar1;
|
|
|
|
|
|
|
|
*param_1 = &PTR_FUN_00793b3c;
|
|
|
|
param_1[1] = 0;
|
|
|
|
param_1[2] = 0;
|
|
|
|
FUN_00406d60();
|
|
|
|
param_1[6] = 0;
|
|
|
|
param_1[7] = 0;
|
|
|
|
param_1[8] = 0;
|
|
|
|
*param_1 = &PTR_FUN_00793b50;
|
|
|
|
uVar1 = FUN_00407060(param_3,param_4);
|
|
|
|
FUN_0040b020(&PTR_PTR_008183b8,uVar1);
|
|
|
|
FUN_00406f90();
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f7b10 at 0x004F7B10 (size: 27) ---
|
|
|
|
|
|
undefined4 FUN_004f7b10(void)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
undefined4 uVar2;
|
|
|
|
|
|
|
|
iVar1 = FUN_005df0f5(0xb8);
|
|
|
|
if (iVar1 != 0) {
|
|
|
|
uVar2 = FUN_00535240();
|
|
|
|
return uVar2;
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f7b70 at 0x004F7B70 (size: 30) ---
|
|
|
|
|
|
undefined4 FUN_004f7b70(void)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
undefined4 uVar2;
|
|
|
|
|
|
|
|
iVar1 = FUN_005df0f5(0x48);
|
|
|
|
if (iVar1 != 0) {
|
|
|
|
uVar2 = FUN_0053ee60(0x800);
|
|
|
|
return uVar2;
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f7bd0 at 0x004F7BD0 (size: 35) ---
|
|
|
|
|
|
undefined4 FUN_004f7bd0(void)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
undefined4 uVar2;
|
|
|
|
|
|
|
|
iVar1 = FUN_005df0f5(0xa0);
|
|
|
|
if (iVar1 != 0) {
|
|
|
|
uVar2 = FUN_005526c0(DAT_008423b4);
|
|
|
|
return uVar2;
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f7c20 at 0x004F7C20 (size: 32) ---
|
|
|
|
|
|
undefined4 FUN_004f7c20(void)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
undefined4 uVar2;
|
|
|
|
|
|
|
|
iVar1 = FUN_005df0f5(0x60);
|
|
|
|
if (iVar1 != 0) {
|
|
|
|
uVar2 = FUN_004fe5a0(DAT_008423b4);
|
|
|
|
return uVar2;
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f7c40 at 0x004F7C40 (size: 32) ---
|
|
|
|
|
|
undefined4 FUN_004f7c40(void)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
undefined4 uVar2;
|
|
|
|
|
|
|
|
iVar1 = FUN_005df0f5(0x50);
|
|
|
|
if (iVar1 != 0) {
|
|
|
|
uVar2 = FUN_004fd360(DAT_008423b4);
|
|
|
|
return uVar2;
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f7c60 at 0x004F7C60 (size: 32) ---
|
|
|
|
|
|
undefined4 FUN_004f7c60(void)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
undefined4 uVar2;
|
|
|
|
|
|
|
|
iVar1 = FUN_005df0f5(0x50);
|
|
|
|
if (iVar1 != 0) {
|
|
|
|
uVar2 = FUN_004fe830(DAT_008423b4);
|
|
|
|
return uVar2;
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f7c80 at 0x004F7C80 (size: 27) ---
|
|
|
|
|
|
undefined4 FUN_004f7c80(void)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
undefined4 uVar2;
|
|
|
|
|
|
|
|
iVar1 = FUN_005df0f5(0xa8);
|
|
|
|
if (iVar1 != 0) {
|
|
|
|
uVar2 = FUN_00683730();
|
|
|
|
return uVar2;
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f7d00 at 0x004F7D00 (size: 30) ---
|
|
|
|
|
|
void * __thiscall FUN_004f7d00(void *param_1,byte param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_004f7d20();
|
|
|
|
if ((param_2 & 1) != 0) {
|
|
|
|
operator_delete(param_1);
|
|
|
|
}
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f7d20 at 0x004F7D20 (size: 31) ---
|
|
|
|
|
|
void __fastcall FUN_004f7d20(undefined4 *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
*param_1 = &PTR_LAB_007c66b0;
|
|
|
|
param_1[0xc] = &PTR_FUN_007ff210;
|
|
|
|
FUN_0067c1f0();
|
|
|
|
FUN_004154b0();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f7d40 at 0x004F7D40 (size: 27) ---
|
|
|
|
|
|
undefined4 FUN_004f7d40(void)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
undefined4 uVar2;
|
|
|
|
|
|
|
|
iVar1 = FUN_005df0f5(0xa8);
|
|
|
|
if (iVar1 != 0) {
|
|
|
|
uVar2 = FUN_00680640();
|
|
|
|
return uVar2;
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f7d60 at 0x004F7D60 (size: 32) ---
|
|
|
|
|
|
undefined4 FUN_004f7d60(void)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
undefined4 uVar2;
|
|
|
|
|
|
|
|
iVar1 = FUN_005df0f5(0x40);
|
|
|
|
if (iVar1 != 0) {
|
|
|
|
uVar2 = FUN_005ad5e0(DAT_008423b4);
|
|
|
|
return uVar2;
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f7dc0 at 0x004F7DC0 (size: 32) ---
|
|
|
|
|
|
undefined4 FUN_004f7dc0(void)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
undefined4 uVar2;
|
|
|
|
|
|
|
|
iVar1 = FUN_005df0f5(0x48);
|
|
|
|
if (iVar1 != 0) {
|
|
|
|
uVar2 = FUN_005a6fd0(DAT_008423b4);
|
|
|
|
return uVar2;
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f7e00 at 0x004F7E00 (size: 27) ---
|
|
|
|
|
|
undefined4 FUN_004f7e00(void)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
undefined4 uVar2;
|
|
|
|
|
|
|
|
iVar1 = FUN_005df0f5(0x148);
|
|
|
|
if (iVar1 != 0) {
|
|
|
|
uVar2 = FUN_0068f710();
|
|
|
|
return uVar2;
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f7e70 at 0x004F7E70 (size: 32) ---
|
|
|
|
|
|
undefined4 FUN_004f7e70(void)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
undefined4 uVar2;
|
|
|
|
|
|
|
|
iVar1 = FUN_005df0f5(0x38);
|
|
|
|
if (iVar1 != 0) {
|
|
|
|
uVar2 = FUN_005af240(DAT_008423b4);
|
|
|
|
return uVar2;
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f7e90 at 0x004F7E90 (size: 27) ---
|
|
|
|
|
|
undefined4 FUN_004f7e90(void)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
undefined4 uVar2;
|
|
|
|
|
|
|
|
iVar1 = FUN_005df0f5(0xf8);
|
|
|
|
if (iVar1 != 0) {
|
|
|
|
uVar2 = FUN_00517d80();
|
|
|
|
return uVar2;
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f7eb0 at 0x004F7EB0 (size: 24) ---
|
|
|
|
|
|
undefined4 FUN_004f7eb0(void)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
undefined4 uVar2;
|
|
|
|
|
|
|
|
iVar1 = FUN_005df0f5(0x50);
|
|
|
|
if (iVar1 != 0) {
|
|
|
|
uVar2 = FUN_005221b0();
|
|
|
|
return uVar2;
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f7ef0 at 0x004F7EF0 (size: 35) ---
|
|
|
|
|
|
int FUN_004f7ef0(void)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
|
|
|
|
iVar1 = FUN_005df0f5(0xa8);
|
|
|
|
if (iVar1 != 0) {
|
|
|
|
iVar1 = FUN_00682450();
|
|
|
|
if (iVar1 != 0) {
|
|
|
|
return iVar1 + 0x78;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f7f20 at 0x004F7F20 (size: 32) ---
|
|
|
|
|
|
int FUN_004f7f20(void)
|
|
|
|
|
|
|
|
{
|
|
|
|
uint uVar1;
|
|
|
|
int iVar2;
|
|
|
|
|
|
|
|
uVar1 = FUN_00406db0();
|
|
|
|
if (4 < uVar1) {
|
|
|
|
iVar2 = FUN_00406db0();
|
|
|
|
return iVar2 + -4;
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f7f70 at 0x004F7F70 (size: 13) ---
|
|
|
|
|
|
void __thiscall FUN_004f7f70(int param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
*(undefined4 *)(param_1 + 0x300) = param_2;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f7fc0 at 0x004F7FC0 (size: 24) ---
|
|
|
|
|
|
void __fastcall FUN_004f7fc0(undefined4 *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
*param_1 = &PTR_FUN_007c7450;
|
|
|
|
if (param_1[5] == 0) {
|
|
|
|
operator_delete__((void *)param_1[3]);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f7fe0 at 0x004F7FE0 (size: 85) ---
|
|
|
|
|
|
void __thiscall FUN_004f7fe0(int param_1,uint param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
uint uVar1;
|
|
|
|
uint uVar2;
|
|
|
|
|
|
|
|
uVar1 = 1;
|
|
|
|
*(uint *)(param_1 + 0x10) = param_2;
|
|
|
|
*(undefined4 *)(param_1 + 8) = 8;
|
|
|
|
*(undefined4 *)(param_1 + 4) = 0;
|
|
|
|
if (1 < param_2) {
|
|
|
|
do {
|
|
|
|
uVar2 = *(uint *)(param_1 + 4) | uVar1;
|
|
|
|
uVar1 = uVar1 << 1;
|
|
|
|
*(uint *)(param_1 + 4) = uVar2;
|
|
|
|
} while ((uVar2 | uVar1) < *(uint *)(param_1 + 0x10));
|
|
|
|
}
|
|
|
|
uVar1 = 0;
|
|
|
|
if (param_2 != 0) {
|
|
|
|
do {
|
|
|
|
*(undefined4 *)(*(int *)(param_1 + 0xc) + uVar1 * 4) = 0;
|
|
|
|
uVar1 = uVar1 + 1;
|
|
|
|
} while (uVar1 < *(uint *)(param_1 + 0x10));
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f8040 at 0x004F8040 (size: 136) ---
|
|
|
|
|
|
void __fastcall FUN_004f8040(int *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
uint uVar1;
|
|
|
|
int iVar2;
|
|
|
|
|
|
|
|
if (param_1[4] == 0) {
|
|
|
|
if (param_1[3] == 0) {
|
|
|
|
*(undefined4 *)(*(int *)(*param_1 + 0xc) + param_1[1] * 4) = *(undefined4 *)(param_1[2] + 4);
|
|
|
|
iVar2 = *(int *)(*(int *)(*param_1 + 0xc) + param_1[1] * 4);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*(undefined4 *)(param_1[3] + 4) = *(undefined4 *)(param_1[2] + 4);
|
|
|
|
iVar2 = *(int *)(param_1[3] + 4);
|
|
|
|
}
|
|
|
|
if ((undefined4 *)param_1[2] != (undefined4 *)0x0) {
|
|
|
|
(*(code *)**(undefined4 **)param_1[2])(1);
|
|
|
|
}
|
|
|
|
if (iVar2 == 0) {
|
|
|
|
do {
|
|
|
|
uVar1 = param_1[1] + 1;
|
|
|
|
param_1[3] = 0;
|
|
|
|
param_1[1] = uVar1;
|
|
|
|
if (*(uint *)(*param_1 + 0x10) <= uVar1) {
|
|
|
|
param_1[4] = 1;
|
|
|
|
param_1[2] = 0;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
iVar2 = *(int *)(*(int *)(*param_1 + 0xc) + uVar1 * 4);
|
|
|
|
} while (iVar2 == 0);
|
|
|
|
}
|
|
|
|
param_1[2] = iVar2;
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f8190 at 0x004F8190 (size: 31) ---
|
|
|
|
|
|
void __fastcall FUN_004f8190(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
if (param_1 != 0) {
|
|
|
|
*(undefined ***)(param_1 + 0x30) = &PTR_FUN_0079385c;
|
|
|
|
FUN_004154b0();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
ppuRam00000000 = &PTR_FUN_0079385c;
|
|
|
|
FUN_004154b0();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f8210 at 0x004F8210 (size: 88) ---
|
|
|
|
|
|
void __fastcall FUN_004f8210(undefined4 *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
LONG LVar1;
|
|
|
|
undefined4 *puVar2;
|
|
|
|
|
|
|
|
*param_1 = &PTR_LAB_007c6778;
|
|
|
|
FUN_00443450();
|
|
|
|
puVar2 = (undefined4 *)(param_1[0x16] + -0x14);
|
|
|
|
LVar1 = InterlockedDecrement((LONG *)(param_1[0x16] + -0x10));
|
|
|
|
if ((LVar1 == 0) && (puVar2 != (undefined4 *)0x0)) {
|
|
|
|
(**(code **)*puVar2)(1);
|
|
|
|
}
|
|
|
|
puVar2 = (undefined4 *)(param_1[0x13] + -0x14);
|
|
|
|
LVar1 = InterlockedDecrement((LONG *)(param_1[0x13] + -0x10));
|
|
|
|
if ((LVar1 == 0) && (puVar2 != (undefined4 *)0x0)) {
|
|
|
|
(**(code **)*puVar2)(1);
|
|
|
|
}
|
|
|
|
FUN_004154b0();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f8290 at 0x004F8290 (size: 30) ---
|
|
|
|
|
|
void * __thiscall FUN_004f8290(void *param_1,byte param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_004f8210();
|
|
|
|
if ((param_2 & 1) != 0) {
|
|
|
|
operator_delete(param_1);
|
|
|
|
}
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f82b0 at 0x004F82B0 (size: 78) ---
|
|
|
|
|
|
undefined4 * __fastcall FUN_004f82b0(undefined4 *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
LONG *pLVar1;
|
|
|
|
|
|
|
|
FUN_00415460(DAT_008423b4);
|
|
|
|
*param_1 = &PTR_LAB_007c6778;
|
|
|
|
pLVar1 = (LONG *)(PTR_DAT_00818344 + -0x10);
|
|
|
|
param_1[0x13] = PTR_DAT_00818344;
|
|
|
|
InterlockedIncrement(pLVar1);
|
|
|
|
pLVar1 = (LONG *)(PTR_DAT_00818344 + -0x10);
|
|
|
|
param_1[0x16] = PTR_DAT_00818344;
|
|
|
|
InterlockedIncrement(pLVar1);
|
|
|
|
FUN_00443960();
|
|
|
|
*param_1 = &PTR_LAB_007c67d0;
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f8310 at 0x004F8310 (size: 62) ---
|
|
|
|
|
|
void __thiscall FUN_004f8310(int param_1,int param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 *puVar1;
|
|
|
|
|
|
|
|
if ((*(byte *)(param_2 + 4) & 1) != 0) {
|
|
|
|
FUN_0040ad10(4);
|
|
|
|
puVar1 = (undefined4 *)FUN_0040acf0(4);
|
|
|
|
if (puVar1 != (undefined4 *)0x0) {
|
|
|
|
if ((*(byte *)(param_2 + 4) & 1) != 0) {
|
|
|
|
*puVar1 = *(undefined4 *)(param_1 + 4);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
*(undefined4 *)(param_1 + 4) = *puVar1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f8350 at 0x004F8350 (size: 36) ---
|
|
|
|
|
|
undefined4 * __fastcall FUN_004f8350(undefined4 *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
param_1[1] = 0xf7e2;
|
|
|
|
*param_1 = &PTR_FUN_007c6828;
|
|
|
|
param_1[6] = 0;
|
|
|
|
param_1[7] = 0;
|
|
|
|
FUN_00406d60();
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f85b0 at 0x004F85B0 (size: 164) ---
|
|
|
|
|
|
undefined4 * FUN_004f85b0(undefined4 param_1,undefined4 *param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
char cVar1;
|
|
|
|
undefined4 uVar2;
|
|
|
|
undefined4 *unaff_retaddr;
|
|
|
|
uint local_24 [9];
|
|
|
|
|
|
|
|
FUN_00401600(0);
|
|
|
|
(**(code **)*param_2)(local_24);
|
|
|
|
if ((local_24[0] >> 2 & 1) == 0) {
|
|
|
|
FUN_0040a900(&stack0xffffffcc);
|
|
|
|
uVar2 = FUN_00406db0();
|
|
|
|
uVar2 = FUN_00406d80(uVar2);
|
|
|
|
cVar1 = FUN_00547520(uVar2);
|
|
|
|
if (cVar1 != '\0') {
|
|
|
|
FUN_00406d90();
|
|
|
|
*unaff_retaddr = 0;
|
|
|
|
FUN_00406f90();
|
|
|
|
FUN_0040b060();
|
|
|
|
return unaff_retaddr;
|
|
|
|
}
|
|
|
|
FUN_00406f90();
|
|
|
|
}
|
|
|
|
*unaff_retaddr = 0x80004005;
|
|
|
|
FUN_0040b060();
|
|
|
|
return unaff_retaddr;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f8660 at 0x004F8660 (size: 64) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_004f8660(undefined4 *param_1,byte param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
*param_1 = &PTR_FUN_007c6834;
|
|
|
|
if ((undefined4 *)param_1[0x18] != param_1 + 1) {
|
|
|
|
operator_delete__((undefined4 *)param_1[0x18]);
|
|
|
|
}
|
|
|
|
param_1[0x18] = 0;
|
|
|
|
param_1[0x19] = 0;
|
|
|
|
param_1[0x1a] = 0;
|
|
|
|
param_1[0x1b] = 0;
|
|
|
|
if ((param_2 & 1) != 0) {
|
|
|
|
operator_delete(param_1);
|
|
|
|
}
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f86a0 at 0x004F86A0 (size: 64) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_004f86a0(undefined4 *param_1,byte param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
*param_1 = &PTR_FUN_007c6838;
|
|
|
|
if ((undefined4 *)param_1[0x18] != param_1 + 1) {
|
|
|
|
operator_delete__((undefined4 *)param_1[0x18]);
|
|
|
|
}
|
|
|
|
param_1[0x18] = 0;
|
|
|
|
param_1[0x19] = 0;
|
|
|
|
param_1[0x1a] = 0;
|
|
|
|
param_1[0x1b] = 0;
|
|
|
|
if ((param_2 & 1) != 0) {
|
|
|
|
operator_delete(param_1);
|
|
|
|
}
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f86e0 at 0x004F86E0 (size: 64) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_004f86e0(undefined4 *param_1,byte param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
*param_1 = &PTR_FUN_007c683c;
|
|
|
|
if ((undefined4 *)param_1[0x18] != param_1 + 1) {
|
|
|
|
operator_delete__((undefined4 *)param_1[0x18]);
|
|
|
|
}
|
|
|
|
param_1[0x18] = 0;
|
|
|
|
param_1[0x19] = 0;
|
|
|
|
param_1[0x1a] = 0;
|
|
|
|
param_1[0x1b] = 0;
|
|
|
|
if ((param_2 & 1) != 0) {
|
|
|
|
operator_delete(param_1);
|
|
|
|
}
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f8720 at 0x004F8720 (size: 102) ---
|
|
|
|
|
|
int * __thiscall
|
|
|
|
FUN_004f8720(int *param_1,int *param_2,int *param_3,int param_4,int param_5,int param_6,int param_7,
|
|
|
|
int param_8,int param_9,int param_10,undefined1 param_11)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
|
|
|
|
iVar1 = *param_2;
|
|
|
|
*param_1 = iVar1;
|
|
|
|
InterlockedIncrement((LONG *)(iVar1 + -0x10));
|
|
|
|
iVar1 = *param_3;
|
|
|
|
param_1[1] = iVar1;
|
|
|
|
InterlockedIncrement((LONG *)(iVar1 + -0x10));
|
|
|
|
param_1[3] = param_5;
|
|
|
|
param_1[2] = param_4;
|
|
|
|
param_1[6] = param_8;
|
|
|
|
param_1[4] = param_6;
|
|
|
|
param_1[5] = param_7;
|
|
|
|
*(undefined1 *)(param_1 + 9) = param_11;
|
|
|
|
param_1[7] = param_9;
|
|
|
|
param_1[8] = param_10;
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f8790 at 0x004F8790 (size: 36) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_004f8790(undefined4 *param_1,byte param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
*param_1 = &PTR_FUN_007c6840;
|
|
|
|
FUN_00418150();
|
|
|
|
if ((param_2 & 1) != 0) {
|
|
|
|
operator_delete(param_1);
|
|
|
|
}
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f87c0 at 0x004F87C0 (size: 49) ---
|
|
|
|
|
|
void * __thiscall FUN_004f87c0(void *param_1,byte param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 *puVar1;
|
|
|
|
|
|
|
|
if (param_1 == (void *)0x0) {
|
|
|
|
puVar1 = (undefined4 *)0x0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
puVar1 = (undefined4 *)((int)param_1 + 0x30);
|
|
|
|
}
|
|
|
|
*puVar1 = &PTR_FUN_0079385c;
|
|
|
|
FUN_004154b0();
|
|
|
|
if ((param_2 & 1) != 0) {
|
|
|
|
operator_delete(param_1);
|
|
|
|
}
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f8820 at 0x004F8820 (size: 156) ---
|
|
|
|
|
|
void __thiscall FUN_004f8820(int param_1,int param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 *puVar1;
|
|
|
|
|
|
|
|
if ((*(byte *)(param_2 + 4) & 1) != 0) {
|
|
|
|
FUN_0040ad10(4);
|
|
|
|
puVar1 = (undefined4 *)FUN_0040acf0(4);
|
|
|
|
if (puVar1 != (undefined4 *)0x0) {
|
|
|
|
if ((*(byte *)(param_2 + 4) & 1) == 0) {
|
|
|
|
*(undefined4 *)(param_1 + 4) = *puVar1;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*puVar1 = *(undefined4 *)(param_1 + 4);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
FUN_004254b0(param_1 + 8,param_2);
|
|
|
|
FUN_0040ad10(8);
|
|
|
|
puVar1 = (undefined4 *)FUN_0040acf0(8);
|
|
|
|
if (puVar1 != (undefined4 *)0x0) {
|
|
|
|
if ((*(byte *)(param_2 + 4) & 1) == 0) {
|
|
|
|
*(undefined4 *)(param_1 + 0x10) = *puVar1;
|
|
|
|
*(undefined4 *)(param_1 + 0x14) = puVar1[1];
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*puVar1 = *(undefined4 *)(param_1 + 0x10);
|
|
|
|
puVar1[1] = *(undefined4 *)(param_1 + 0x14);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
FUN_004449f0(param_1 + 0x2c,param_2);
|
|
|
|
FUN_00422250(param_1 + 0x30,param_2);
|
|
|
|
FUN_004f88c0(param_2);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f88c0 at 0x004F88C0 (size: 303) ---
|
|
|
|
|
|
void __thiscall FUN_004f88c0(int param_1,int param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 *puVar1;
|
|
|
|
uint uVar2;
|
|
|
|
int iVar3;
|
|
|
|
undefined4 uVar4;
|
|
|
|
int *piVar5;
|
|
|
|
int iVar6;
|
|
|
|
undefined1 *puVar7;
|
|
|
|
undefined1 local_18 [12];
|
|
|
|
undefined1 local_c [12];
|
|
|
|
|
|
|
|
iVar3 = param_2;
|
|
|
|
FUN_0040ad10(4);
|
|
|
|
puVar1 = (undefined4 *)FUN_0040acf0(4);
|
|
|
|
if (puVar1 != (undefined4 *)0x0) {
|
|
|
|
if ((*(byte *)(iVar3 + 4) & 1) == 0) {
|
|
|
|
*(undefined4 *)(param_1 + 4) = *puVar1;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*puVar1 = *(undefined4 *)(param_1 + 4);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if ((*(byte *)(iVar3 + 4) & 1) == 0) {
|
|
|
|
uVar4 = FUN_0040a8d0();
|
|
|
|
FUN_0040ad10(4);
|
|
|
|
piVar5 = (int *)FUN_0040acf0(4);
|
|
|
|
iVar6 = param_2;
|
|
|
|
if (piVar5 != (int *)0x0) {
|
|
|
|
if ((*(byte *)(iVar3 + 4) & 1) == 0) {
|
|
|
|
iVar6 = *piVar5;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*piVar5 = param_2;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if ((~(byte)(*(uint *)(iVar3 + 4) >> 2) & 1) != 0) {
|
|
|
|
FUN_0040a8e0(uVar4);
|
|
|
|
uVar4 = 0;
|
|
|
|
puVar7 = local_18;
|
|
|
|
iVar3 = iVar6;
|
|
|
|
FUN_0040a920(local_c);
|
|
|
|
uVar4 = FUN_00407140(puVar7,uVar4,iVar3);
|
|
|
|
FUN_004070d0(uVar4);
|
|
|
|
FUN_00406f90();
|
|
|
|
FUN_00406f90();
|
|
|
|
FUN_0040acf0(iVar6);
|
|
|
|
puVar1 = (undefined4 *)FUN_00406d80();
|
|
|
|
*puVar1 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
param_2 = FUN_00406db0();
|
|
|
|
FUN_004449f0(¶m_2,iVar3);
|
|
|
|
uVar2 = FUN_00406db0();
|
|
|
|
if (3 < uVar2) {
|
|
|
|
iVar3 = FUN_00406db0(iVar3);
|
|
|
|
iVar3 = FUN_00406d80(iVar3 + -4);
|
|
|
|
FUN_00401590(iVar3 + 4);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f89f0 at 0x004F89F0 (size: 114) ---
|
|
|
|
|
|
void __thiscall FUN_004f89f0(int param_1,int param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 *puVar1;
|
|
|
|
|
|
|
|
if ((*(byte *)(param_2 + 4) & 1) != 0) {
|
|
|
|
FUN_0040ad10(4);
|
|
|
|
puVar1 = (undefined4 *)FUN_0040acf0(4);
|
|
|
|
if (puVar1 != (undefined4 *)0x0) {
|
|
|
|
if ((*(byte *)(param_2 + 4) & 1) == 0) {
|
|
|
|
*(undefined4 *)(param_1 + 4) = *puVar1;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*puVar1 = *(undefined4 *)(param_1 + 4);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
FUN_0040ad10(8);
|
|
|
|
puVar1 = (undefined4 *)FUN_0040acf0(8);
|
|
|
|
if (puVar1 != (undefined4 *)0x0) {
|
|
|
|
if ((*(byte *)(param_2 + 4) & 1) != 0) {
|
|
|
|
*puVar1 = *(undefined4 *)(param_1 + 8);
|
|
|
|
puVar1[1] = *(undefined4 *)(param_1 + 0xc);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
*(undefined4 *)(param_1 + 8) = *puVar1;
|
|
|
|
*(undefined4 *)(param_1 + 0xc) = puVar1[1];
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f8a70 at 0x004F8A70 (size: 140) ---
|
|
|
|
|
|
void __thiscall FUN_004f8a70(int param_1,int param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 *puVar1;
|
|
|
|
|
|
|
|
if ((*(byte *)(param_2 + 4) & 1) != 0) {
|
|
|
|
FUN_0040ad10(4);
|
|
|
|
puVar1 = (undefined4 *)FUN_0040acf0(4);
|
|
|
|
if (puVar1 != (undefined4 *)0x0) {
|
|
|
|
if ((*(byte *)(param_2 + 4) & 1) == 0) {
|
|
|
|
*(undefined4 *)(param_1 + 4) = *puVar1;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*puVar1 = *(undefined4 *)(param_1 + 4);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
FUN_0040ad10(8);
|
|
|
|
puVar1 = (undefined4 *)FUN_0040acf0(8);
|
|
|
|
if (puVar1 != (undefined4 *)0x0) {
|
|
|
|
if ((*(byte *)(param_2 + 4) & 1) != 0) {
|
|
|
|
*puVar1 = *(undefined4 *)(param_1 + 8);
|
|
|
|
puVar1[1] = *(undefined4 *)(param_1 + 0xc);
|
|
|
|
FUN_004449f0(param_1 + 0x10,param_2);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
*(undefined4 *)(param_1 + 8) = *puVar1;
|
|
|
|
*(undefined4 *)(param_1 + 0xc) = puVar1[1];
|
|
|
|
}
|
|
|
|
FUN_004449f0(param_1 + 0x10,param_2);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f8b00 at 0x004F8B00 (size: 66) ---
|
|
|
|
|
|
undefined1 __thiscall
|
|
|
|
FUN_004f8b00(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,undefined4 param_5
|
|
|
|
)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined1 uVar1;
|
|
|
|
|
|
|
|
(**(code **)(*(int *)(param_1 + 0x750) + 4))();
|
|
|
|
uVar1 = FUN_00671b60(param_2,param_3,param_4,param_5);
|
|
|
|
FUN_0065e910();
|
|
|
|
return uVar1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f8b50 at 0x004F8B50 (size: 61) ---
|
|
|
|
|
|
undefined1 __thiscall
|
|
|
|
FUN_004f8b50(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined1 uVar1;
|
|
|
|
|
|
|
|
(**(code **)(*(int *)(param_1 + 0x750) + 4))();
|
|
|
|
uVar1 = FUN_00672060(param_2,param_3,param_4);
|
|
|
|
FUN_0065e910();
|
|
|
|
return uVar1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f8b90 at 0x004F8B90 (size: 56) ---
|
|
|
|
|
|
undefined1 __thiscall FUN_004f8b90(int param_1,undefined4 param_2,undefined4 param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined1 uVar1;
|
|
|
|
|
|
|
|
(**(code **)(*(int *)(param_1 + 0x750) + 4))();
|
|
|
|
uVar1 = FUN_00671d00(param_2,param_3);
|
|
|
|
FUN_0065e910();
|
|
|
|
return uVar1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f8bd0 at 0x004F8BD0 (size: 56) ---
|
|
|
|
|
|
undefined1 __thiscall FUN_004f8bd0(int param_1,undefined4 param_2,undefined4 param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined1 uVar1;
|
|
|
|
|
|
|
|
(**(code **)(*(int *)(param_1 + 0x750) + 4))();
|
|
|
|
uVar1 = FUN_006722b0(param_2,param_3);
|
|
|
|
FUN_0065e910();
|
|
|
|
return uVar1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f8c10 at 0x004F8C10 (size: 26) ---
|
|
|
|
|
|
void __fastcall FUN_004f8c10(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
if ((*(uint *)(param_1 + 8) & 0x80000000) == 0x80000000) {
|
|
|
|
operator_delete__(*(void **)(param_1 + 4));
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f8c30 at 0x004F8C30 (size: 26) ---
|
|
|
|
|
|
void __fastcall FUN_004f8c30(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
if ((*(uint *)(param_1 + 0x18) & 0x80000000) == 0x80000000) {
|
|
|
|
operator_delete__(*(void **)(param_1 + 0x14));
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f8cb0 at 0x004F8CB0 (size: 53) ---
|
|
|
|
|
|
void __thiscall FUN_004f8cb0(int param_1,undefined4 param_2,undefined4 param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
|
|
|
|
for (iVar1 = *(int *)(param_1 + 0x1dc); iVar1 != 0; iVar1 = iVar1 + -1) {
|
|
|
|
(**(code **)(**(int **)(*(int *)(param_1 + 0x1d4) + -4 + iVar1 * 4) + 8))(param_2,param_3);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f8d10 at 0x004F8D10 (size: 75) ---
|
|
|
|
|
|
void __fastcall FUN_004f8d10(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
if (((*(uint *)(param_1 + 0x24) & 0x80000000) == 0x80000000) && (*(int *)(param_1 + 0x20) != 0)) {
|
|
|
|
operator_delete__((void *)(*(int *)(param_1 + 0x20) + -4));
|
|
|
|
}
|
|
|
|
if (((*(uint *)(param_1 + 0x18) & 0x80000000) == 0x80000000) && (*(int *)(param_1 + 0x14) != 0)) {
|
|
|
|
operator_delete__((void *)(*(int *)(param_1 + 0x14) + -4));
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f8d60 at 0x004F8D60 (size: 40) ---
|
|
|
|
|
|
undefined4 * __fastcall FUN_004f8d60(undefined4 *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_00671f80();
|
|
|
|
*param_1 = &PTR_FUN_007c6860;
|
|
|
|
FUN_0065e8b0();
|
|
|
|
FUN_00670fc0();
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f8d90 at 0x004F8D90 (size: 4) ---
|
|
|
|
|
|
undefined4 __fastcall FUN_004f8d90(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
return *(undefined4 *)(param_1 + 8);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f8da0 at 0x004F8DA0 (size: 4) ---
|
|
|
|
|
|
undefined4 __fastcall FUN_004f8da0(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
return *(undefined4 *)(param_1 + 0xc);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f8e10 at 0x004F8E10 (size: 25) ---
|
|
|
|
|
|
undefined4 __thiscall FUN_004f8e10(int param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_004139a0(param_1 + 0x73c);
|
|
|
|
return param_2;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f8e50 at 0x004F8E50 (size: 54) ---
|
|
|
|
|
|
void * __thiscall FUN_004f8e50(void *param_1,byte param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_004f8c10();
|
|
|
|
FUN_0065e8d0();
|
|
|
|
FUN_00671fe0();
|
|
|
|
if ((param_2 & 1) != 0) {
|
|
|
|
operator_delete(param_1);
|
|
|
|
}
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f8f80 at 0x004F8F80 (size: 212) ---
|
|
|
|
|
|
void * __thiscall FUN_004f8f80(void *param_1,byte param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
uint uVar1;
|
|
|
|
int iVar2;
|
|
|
|
uint *puVar3;
|
|
|
|
|
|
|
|
if ((param_2 & 2) == 0) {
|
|
|
|
FUN_004f8d10();
|
|
|
|
if ((param_2 & 1) != 0) {
|
|
|
|
operator_delete(param_1);
|
|
|
|
}
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
iVar2 = *(int *)((int)param_1 + -4);
|
|
|
|
if (-1 < iVar2 + -1) {
|
|
|
|
puVar3 = (uint *)((int)param_1 + iVar2 * 0x30 + 0x18);
|
|
|
|
do {
|
|
|
|
if (((puVar3[-9] & 0x80000000) == 0x80000000) && (uVar1 = puVar3[-10], uVar1 != 0)) {
|
|
|
|
FUN_00401030(uVar1,8,*(undefined4 *)(uVar1 - 4),FUN_00695670);
|
|
|
|
operator_delete__((void *)(uVar1 - 4));
|
|
|
|
}
|
|
|
|
if (((puVar3[-0xc] & 0x80000000) == 0x80000000) && (uVar1 = puVar3[-0xd], uVar1 != 0)) {
|
|
|
|
FUN_00401030(uVar1,8,*(undefined4 *)(uVar1 - 4),FUN_00695670);
|
|
|
|
operator_delete__((void *)(uVar1 - 4));
|
|
|
|
}
|
|
|
|
iVar2 = iVar2 + -1;
|
|
|
|
puVar3 = puVar3 + -0xc;
|
|
|
|
} while (iVar2 != 0);
|
|
|
|
}
|
|
|
|
if ((param_2 & 1) != 0) {
|
|
|
|
operator_delete__((void *)((int)param_1 + -4));
|
|
|
|
}
|
|
|
|
return (void *)((int)param_1 + -4);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f9060 at 0x004F9060 (size: 143) ---
|
|
|
|
|
|
void * __thiscall FUN_004f9060(void *param_1,byte param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
uint *puVar1;
|
|
|
|
int iVar2;
|
|
|
|
undefined4 *puVar3;
|
|
|
|
|
|
|
|
if ((param_2 & 2) == 0) {
|
|
|
|
if ((*(uint *)((int)param_1 + 0x18) & 0x80000000) == 0x80000000) {
|
|
|
|
operator_delete__(*(void **)((int)param_1 + 0x14));
|
|
|
|
}
|
|
|
|
if ((param_2 & 1) != 0) {
|
|
|
|
operator_delete(param_1);
|
|
|
|
}
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
iVar2 = *(int *)((int)param_1 + -4);
|
|
|
|
if (-1 < iVar2 + -1) {
|
|
|
|
puVar3 = (undefined4 *)((int)param_1 + iVar2 * 0x28 + 0x14);
|
|
|
|
do {
|
|
|
|
puVar1 = puVar3 + -9;
|
|
|
|
puVar3 = puVar3 + -10;
|
|
|
|
if ((*puVar1 & 0x80000000) == 0x80000000) {
|
|
|
|
operator_delete__((void *)*puVar3);
|
|
|
|
}
|
|
|
|
iVar2 = iVar2 + -1;
|
|
|
|
} while (iVar2 != 0);
|
|
|
|
}
|
|
|
|
if ((param_2 & 1) != 0) {
|
|
|
|
operator_delete__((void *)((int)param_1 + -4));
|
|
|
|
}
|
|
|
|
return (void *)((int)param_1 + -4);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f90f0 at 0x004F90F0 (size: 153) ---
|
|
|
|
|
|
int * __thiscall FUN_004f90f0(int *param_1,int *param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
char cVar2;
|
|
|
|
undefined4 *puVar3;
|
|
|
|
undefined4 *puVar4;
|
|
|
|
undefined4 *puVar5;
|
|
|
|
uint uVar6;
|
|
|
|
|
|
|
|
if ((param_1[1] & 0x7fffffffU) < (param_2[1] & 0x7fffffffU)) {
|
|
|
|
param_1[2] = 0;
|
|
|
|
cVar2 = FUN_0044b740(param_2[1] & 0x7fffffff);
|
|
|
|
if (cVar2 == '\0') {
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
puVar3 = (undefined4 *)*param_2;
|
|
|
|
puVar4 = puVar3 + param_2[2] * 2;
|
|
|
|
puVar5 = (undefined4 *)*param_1;
|
|
|
|
for (; puVar3 < puVar4; puVar3 = puVar3 + 2) {
|
|
|
|
*puVar5 = *puVar3;
|
|
|
|
puVar5[1] = puVar3[1];
|
|
|
|
puVar5 = puVar5 + 2;
|
|
|
|
}
|
|
|
|
uVar6 = param_2[2];
|
|
|
|
if (uVar6 < (uint)param_1[2]) {
|
|
|
|
puVar4 = (undefined4 *)FUN_0050a140();
|
|
|
|
do {
|
|
|
|
iVar1 = *param_1;
|
|
|
|
*(undefined4 *)(iVar1 + uVar6 * 8) = *puVar4;
|
|
|
|
*(undefined4 *)(iVar1 + 4 + uVar6 * 8) = puVar4[1];
|
|
|
|
uVar6 = uVar6 + 1;
|
|
|
|
} while (uVar6 < (uint)param_1[2]);
|
|
|
|
}
|
|
|
|
param_1[2] = param_2[2];
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f9190 at 0x004F9190 (size: 202) ---
|
|
|
|
|
|
void __thiscall FUN_004f9190(int param_1,int param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 *puVar1;
|
|
|
|
|
|
|
|
if ((*(byte *)(param_2 + 4) & 1) != 0) {
|
|
|
|
FUN_0040ad10(4);
|
|
|
|
puVar1 = (undefined4 *)FUN_0040acf0(4);
|
|
|
|
if (puVar1 != (undefined4 *)0x0) {
|
|
|
|
if ((*(byte *)(param_2 + 4) & 1) == 0) {
|
|
|
|
*(undefined4 *)(param_1 + 4) = *puVar1;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*puVar1 = *(undefined4 *)(param_1 + 4);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
FUN_0040ad10(4);
|
|
|
|
puVar1 = (undefined4 *)FUN_0040acf0(4);
|
|
|
|
if (puVar1 != (undefined4 *)0x0) {
|
|
|
|
if ((*(byte *)(param_2 + 4) & 1) == 0) {
|
|
|
|
*(undefined4 *)(param_1 + 8) = *puVar1;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*puVar1 = *(undefined4 *)(param_1 + 8);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
FUN_0040ad10(4);
|
|
|
|
puVar1 = (undefined4 *)FUN_0040acf0(4);
|
|
|
|
if (puVar1 != (undefined4 *)0x0) {
|
|
|
|
if ((*(byte *)(param_2 + 4) & 1) == 0) {
|
|
|
|
*(undefined4 *)(param_1 + 0xc) = *puVar1;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*puVar1 = *(undefined4 *)(param_1 + 0xc);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
FUN_0040ad10(4);
|
|
|
|
puVar1 = (undefined4 *)FUN_0040acf0(4);
|
|
|
|
if (puVar1 != (undefined4 *)0x0) {
|
|
|
|
if ((*(byte *)(param_2 + 4) & 1) != 0) {
|
|
|
|
*puVar1 = *(undefined4 *)(param_1 + 0x10);
|
|
|
|
FUN_0042fc00(param_2);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
*(undefined4 *)(param_1 + 0x10) = *puVar1;
|
|
|
|
}
|
|
|
|
FUN_0042fc00(param_2);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f9260 at 0x004F9260 (size: 108) ---
|
|
|
|
|
|
byte __thiscall FUN_004f9260(int *param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
byte bVar1;
|
|
|
|
byte bVar2;
|
|
|
|
undefined *puStack_20;
|
|
|
|
undefined *puStack_1c;
|
|
|
|
undefined4 uStack_14;
|
|
|
|
int *piStack_10;
|
|
|
|
|
|
|
|
piStack_10 = (int *)param_2;
|
|
|
|
uStack_14 = 0x4f926f;
|
|
|
|
bVar1 = FUN_006723d0();
|
|
|
|
bVar2 = 0;
|
|
|
|
if (bVar1 != 0) {
|
|
|
|
piStack_10 = param_1 + 0x1dd;
|
|
|
|
uStack_14 = 0x4f9283;
|
|
|
|
bVar2 = (**(code **)(*param_1 + 0x28))();
|
|
|
|
bVar2 = bVar1 & bVar2;
|
|
|
|
if (bVar2 == 0) {
|
|
|
|
uStack_14 = 0;
|
|
|
|
puStack_1c = &DAT_00795320;
|
|
|
|
puStack_20 = (undefined *)0x4f9296;
|
|
|
|
FUN_00402730();
|
|
|
|
puStack_20 = &DAT_00795320;
|
|
|
|
FUN_00402730();
|
|
|
|
FUN_00403350(&puStack_20,0);
|
|
|
|
FUN_0043d090(0xce);
|
|
|
|
uStack_14 = 0x4f92c4;
|
|
|
|
FUN_00671360();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return bVar2;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f9ae0 at 0x004F9AE0 (size: 57) ---
|
|
|
|
|
|
int __thiscall FUN_004f9ae0(int param_1,int param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
*(undefined4 *)(param_1 + 8) = *(undefined4 *)(param_2 + 8);
|
|
|
|
*(undefined4 *)(param_1 + 0xc) = *(undefined4 *)(param_2 + 0xc);
|
|
|
|
*(undefined4 *)(param_1 + 0x10) = *(undefined4 *)(param_2 + 0x10);
|
|
|
|
FUN_004f90f0(param_2 + 0x14);
|
|
|
|
FUN_004f90f0(param_2 + 0x20);
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f9b20 at 0x004F9B20 (size: 30) ---
|
|
|
|
|
|
void __fastcall FUN_004f9b20(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
if (((*(uint *)(param_1 + 0x10) & 0x80000000) == 0x80000000) && (*(int *)(param_1 + 0xc) != 0)) {
|
|
|
|
FUN_004f8f80(3);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f9c70 at 0x004F9C70 (size: 61) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_004f9c70(undefined4 *param_1,byte param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
*param_1 = &PTR_FUN_007c6854;
|
|
|
|
FUN_00524910();
|
|
|
|
*param_1 = &PTR_FUN_007c7450;
|
|
|
|
if (param_1[5] == 0) {
|
|
|
|
operator_delete__((void *)param_1[3]);
|
|
|
|
}
|
|
|
|
if ((param_2 & 1) != 0) {
|
|
|
|
operator_delete(param_1);
|
|
|
|
}
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f9cb0 at 0x004F9CB0 (size: 61) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_004f9cb0(undefined4 *param_1,byte param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
*param_1 = &PTR_FUN_007c6858;
|
|
|
|
FUN_00524910();
|
|
|
|
*param_1 = &PTR_FUN_007c7450;
|
|
|
|
if (param_1[5] == 0) {
|
|
|
|
operator_delete__((void *)param_1[3]);
|
|
|
|
}
|
|
|
|
if ((param_2 & 1) != 0) {
|
|
|
|
operator_delete(param_1);
|
|
|
|
}
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f9cf0 at 0x004F9CF0 (size: 143) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_004f9cf0(undefined4 *param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined *puVar1;
|
|
|
|
uint *puVar2;
|
|
|
|
undefined4 uVar3;
|
|
|
|
uint uVar4;
|
|
|
|
int iVar5;
|
|
|
|
undefined4 *puVar6;
|
|
|
|
|
|
|
|
param_1[0x18] = 0;
|
|
|
|
param_1[0x19] = 0;
|
|
|
|
param_1[0x1a] = 0;
|
|
|
|
param_1[0x1b] = 0;
|
|
|
|
*param_1 = &PTR_FUN_007c6838;
|
|
|
|
puVar1 = PTR_DAT_00818558;
|
|
|
|
puVar2 = (uint *)FUN_00422d20(PTR_DAT_00818554,PTR_DAT_00818558,¶m_2,param_2,0);
|
|
|
|
if (puVar2 == (uint *)puVar1) {
|
|
|
|
puVar2 = puVar2 + -1;
|
|
|
|
}
|
|
|
|
uVar4 = *puVar2;
|
|
|
|
param_1[0x1a] = uVar4;
|
|
|
|
if (uVar4 < 0x18) {
|
|
|
|
param_1[0x18] = param_1 + 1;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar3 = thunk_FUN_005df0f5(uVar4 << 2);
|
|
|
|
param_1[0x18] = uVar3;
|
|
|
|
}
|
|
|
|
param_1[0x19] = (undefined4 *)param_1[0x18] + param_1[0x1a];
|
|
|
|
puVar6 = (undefined4 *)param_1[0x18];
|
|
|
|
for (uVar4 = param_1[0x1a] & 0x3fffffff; uVar4 != 0; uVar4 = uVar4 - 1) {
|
|
|
|
*puVar6 = 0;
|
|
|
|
puVar6 = puVar6 + 1;
|
|
|
|
}
|
|
|
|
for (iVar5 = 0; iVar5 != 0; iVar5 = iVar5 + -1) {
|
|
|
|
*(undefined1 *)puVar6 = 0;
|
|
|
|
puVar6 = (undefined4 *)((int)puVar6 + 1);
|
|
|
|
}
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f9d80 at 0x004F9D80 (size: 143) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_004f9d80(undefined4 *param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined *puVar1;
|
|
|
|
uint *puVar2;
|
|
|
|
undefined4 uVar3;
|
|
|
|
uint uVar4;
|
|
|
|
int iVar5;
|
|
|
|
undefined4 *puVar6;
|
|
|
|
|
|
|
|
param_1[0x18] = 0;
|
|
|
|
param_1[0x19] = 0;
|
|
|
|
param_1[0x1a] = 0;
|
|
|
|
param_1[0x1b] = 0;
|
|
|
|
*param_1 = &PTR_FUN_007c683c;
|
|
|
|
puVar1 = PTR_DAT_00818558;
|
|
|
|
puVar2 = (uint *)FUN_00422d20(PTR_DAT_00818554,PTR_DAT_00818558,¶m_2,param_2,0);
|
|
|
|
if (puVar2 == (uint *)puVar1) {
|
|
|
|
puVar2 = puVar2 + -1;
|
|
|
|
}
|
|
|
|
uVar4 = *puVar2;
|
|
|
|
param_1[0x1a] = uVar4;
|
|
|
|
if (uVar4 < 0x18) {
|
|
|
|
param_1[0x18] = param_1 + 1;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar3 = thunk_FUN_005df0f5(uVar4 << 2);
|
|
|
|
param_1[0x18] = uVar3;
|
|
|
|
}
|
|
|
|
param_1[0x19] = (undefined4 *)param_1[0x18] + param_1[0x1a];
|
|
|
|
puVar6 = (undefined4 *)param_1[0x18];
|
|
|
|
for (uVar4 = param_1[0x1a] & 0x3fffffff; uVar4 != 0; uVar4 = uVar4 - 1) {
|
|
|
|
*puVar6 = 0;
|
|
|
|
puVar6 = puVar6 + 1;
|
|
|
|
}
|
|
|
|
for (iVar5 = 0; iVar5 != 0; iVar5 = iVar5 + -1) {
|
|
|
|
*(undefined1 *)puVar6 = 0;
|
|
|
|
puVar6 = (undefined4 *)((int)puVar6 + 1);
|
|
|
|
}
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f9e10 at 0x004F9E10 (size: 143) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_004f9e10(undefined4 *param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined *puVar1;
|
|
|
|
uint *puVar2;
|
|
|
|
undefined4 uVar3;
|
|
|
|
uint uVar4;
|
|
|
|
int iVar5;
|
|
|
|
undefined4 *puVar6;
|
|
|
|
|
|
|
|
param_1[0x18] = 0;
|
|
|
|
param_1[0x19] = 0;
|
|
|
|
param_1[0x1a] = 0;
|
|
|
|
param_1[0x1b] = 0;
|
|
|
|
*param_1 = &PTR_FUN_007c6834;
|
|
|
|
puVar1 = PTR_DAT_00818558;
|
|
|
|
puVar2 = (uint *)FUN_00422d20(PTR_DAT_00818554,PTR_DAT_00818558,¶m_2,param_2,0);
|
|
|
|
if (puVar2 == (uint *)puVar1) {
|
|
|
|
puVar2 = puVar2 + -1;
|
|
|
|
}
|
|
|
|
uVar4 = *puVar2;
|
|
|
|
param_1[0x1a] = uVar4;
|
|
|
|
if (uVar4 < 0x18) {
|
|
|
|
param_1[0x18] = param_1 + 1;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar3 = thunk_FUN_005df0f5(uVar4 << 2);
|
|
|
|
param_1[0x18] = uVar3;
|
|
|
|
}
|
|
|
|
param_1[0x19] = (undefined4 *)param_1[0x18] + param_1[0x1a];
|
|
|
|
puVar6 = (undefined4 *)param_1[0x18];
|
|
|
|
for (uVar4 = param_1[0x1a] & 0x3fffffff; uVar4 != 0; uVar4 = uVar4 - 1) {
|
|
|
|
*puVar6 = 0;
|
|
|
|
puVar6 = puVar6 + 1;
|
|
|
|
}
|
|
|
|
for (iVar5 = 0; iVar5 != 0; iVar5 = iVar5 + -1) {
|
|
|
|
*(undefined1 *)puVar6 = 0;
|
|
|
|
puVar6 = (undefined4 *)((int)puVar6 + 1);
|
|
|
|
}
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f9ea0 at 0x004F9EA0 (size: 208) ---
|
|
|
|
|
|
void __fastcall FUN_004f9ea0(int *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
int iVar2;
|
|
|
|
uint local_34;
|
|
|
|
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;
|
|
|
|
|
|
|
|
param_1[2] = 0;
|
|
|
|
if ((param_1[1] & 0x80000000U) != 0x80000000) {
|
|
|
|
if (*param_1 != 0) {
|
|
|
|
local_34 = param_1[1] & 0x7fffffff;
|
|
|
|
if (-1 < (int)(local_34 - 1)) {
|
|
|
|
iVar1 = (local_34 - 1) * 0x30;
|
|
|
|
do {
|
|
|
|
iVar2 = *param_1 + iVar1;
|
|
|
|
*(undefined4 *)(iVar2 + 8) = local_28;
|
|
|
|
*(undefined4 *)(iVar2 + 0x10) = local_20;
|
|
|
|
local_1c = 0;
|
|
|
|
local_18 = 0;
|
|
|
|
local_14 = 0;
|
|
|
|
local_10 = 0;
|
|
|
|
local_c = 0;
|
|
|
|
local_8 = 0;
|
|
|
|
*(undefined4 *)(iVar2 + 0xc) = local_24;
|
|
|
|
FUN_004f90f0(&local_1c);
|
|
|
|
FUN_004f90f0(&local_10);
|
|
|
|
FUN_004f8d10();
|
|
|
|
iVar1 = iVar1 + -0x30;
|
|
|
|
local_34 = local_34 - 1;
|
|
|
|
} while (local_34 != 0);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
if (*param_1 != 0) {
|
|
|
|
FUN_004f8f80(3);
|
|
|
|
}
|
|
|
|
*param_1 = 0;
|
|
|
|
param_1[1] = 0;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f9f80 at 0x004F9F80 (size: 36) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_004f9f80(undefined4 *param_1,byte param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
*param_1 = &PTR_FUN_007c6918;
|
|
|
|
FUN_0049f850();
|
|
|
|
if ((param_2 & 1) != 0) {
|
|
|
|
operator_delete(param_1);
|
|
|
|
}
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004f9fb0 at 0x004F9FB0 (size: 203) ---
|
|
|
|
|
|
undefined4 __thiscall FUN_004f9fb0(int *param_1,uint param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
uint *puVar1;
|
|
|
|
uint uVar2;
|
|
|
|
uint *puVar3;
|
|
|
|
int iVar4;
|
|
|
|
|
|
|
|
uVar2 = param_2;
|
|
|
|
if ((uint)param_1[2] <= param_2) {
|
|
|
|
if (param_2 <= (param_1[1] & 0x7fffffffU)) {
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
if (param_2 == 0) {
|
|
|
|
FUN_004f9ea0();
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
puVar3 = (uint *)thunk_FUN_005df0f5(param_2 * 0x30 + 4);
|
|
|
|
if (puVar3 != (uint *)0x0) {
|
|
|
|
puVar1 = puVar3 + 1;
|
|
|
|
*puVar3 = param_2;
|
|
|
|
FUN_00401000(puVar1,0x30,param_2,&LAB_004f8cf0);
|
|
|
|
if (puVar1 != (uint *)0x0) {
|
|
|
|
if (*param_1 != 0) {
|
|
|
|
param_2 = param_1[2];
|
|
|
|
if (-1 < (int)(param_2 + -1)) {
|
|
|
|
iVar4 = (param_2 + -1) * 0x30;
|
|
|
|
do {
|
|
|
|
FUN_004f9ae0(*param_1 + iVar4);
|
|
|
|
iVar4 = iVar4 + -0x30;
|
|
|
|
param_2 = param_2 + -1;
|
|
|
|
} while (param_2 != 0);
|
|
|
|
}
|
|
|
|
if (((param_1[1] & 0x80000000U) == 0x80000000) && (*param_1 != 0)) {
|
|
|
|
FUN_004f8f80(3);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
*param_1 = (int)puVar1;
|
|
|
|
param_1[1] = uVar2 | 0x80000000;
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004fa080 at 0x004FA080 (size: 446) ---
|
|
|
|
|
|
undefined4 * __fastcall FUN_004fa080(undefined4 *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 uVar1;
|
|
|
|
uint uVar2;
|
|
|
|
uint uVar3;
|
|
|
|
|
|
|
|
FUN_00415460(DAT_008423b4);
|
|
|
|
param_1[0xc] = &PTR_FUN_0079385c;
|
|
|
|
*param_1 = &PTR_LAB_007c6930;
|
|
|
|
param_1[0xc] = &PTR_LAB_007c691c;
|
|
|
|
param_1[0xe] = &PTR_FUN_007c7450;
|
|
|
|
param_1[0x13] = 0;
|
|
|
|
uVar1 = thunk_FUN_005df0f5(0x100);
|
|
|
|
param_1[0x11] = uVar1;
|
|
|
|
param_1[0x12] = 0x40;
|
|
|
|
param_1[0x10] = 8;
|
|
|
|
param_1[0xf] = 0;
|
|
|
|
uVar2 = 1;
|
|
|
|
do {
|
|
|
|
uVar3 = param_1[0xf] | uVar2;
|
|
|
|
uVar2 = uVar2 << 1;
|
|
|
|
param_1[0xf] = uVar3;
|
|
|
|
} while ((uVar3 | uVar2) < (uint)param_1[0x12]);
|
|
|
|
uVar2 = 0;
|
|
|
|
do {
|
|
|
|
*(undefined4 *)(param_1[0x11] + uVar2 * 4) = 0;
|
|
|
|
uVar2 = uVar2 + 1;
|
|
|
|
} while (uVar2 < (uint)param_1[0x12]);
|
|
|
|
param_1[0xe] = &PTR_FUN_007c6854;
|
|
|
|
param_1[0x14] = &PTR_FUN_007c7450;
|
|
|
|
param_1[0x19] = 0;
|
|
|
|
uVar1 = thunk_FUN_005df0f5(0x100);
|
|
|
|
param_1[0x17] = uVar1;
|
|
|
|
param_1[0x18] = 0x40;
|
|
|
|
param_1[0x16] = 8;
|
|
|
|
param_1[0x15] = 0;
|
|
|
|
uVar2 = 1;
|
|
|
|
do {
|
|
|
|
uVar3 = param_1[0x15] | uVar2;
|
|
|
|
uVar2 = uVar2 << 1;
|
|
|
|
param_1[0x15] = uVar3;
|
|
|
|
} while ((uVar3 | uVar2) < (uint)param_1[0x18]);
|
|
|
|
uVar2 = 0;
|
|
|
|
do {
|
|
|
|
*(undefined4 *)(param_1[0x17] + uVar2 * 4) = 0;
|
|
|
|
uVar2 = uVar2 + 1;
|
|
|
|
} while (uVar2 < (uint)param_1[0x18]);
|
|
|
|
param_1[0x14] = &PTR_FUN_007c7450;
|
|
|
|
param_1[0x1a] = &PTR_FUN_007c7450;
|
|
|
|
param_1[0x1f] = 0;
|
|
|
|
uVar1 = thunk_FUN_005df0f5(0x40);
|
|
|
|
param_1[0x1d] = uVar1;
|
|
|
|
param_1[0x1e] = 0x10;
|
|
|
|
param_1[0x1c] = 8;
|
|
|
|
param_1[0x1b] = 0;
|
|
|
|
uVar2 = 1;
|
|
|
|
do {
|
|
|
|
uVar3 = param_1[0x1b] | uVar2;
|
|
|
|
uVar2 = uVar2 << 1;
|
|
|
|
param_1[0x1b] = uVar3;
|
|
|
|
} while ((uVar3 | uVar2) < (uint)param_1[0x1e]);
|
|
|
|
uVar2 = 0;
|
|
|
|
do {
|
|
|
|
*(undefined4 *)(param_1[0x1d] + uVar2 * 4) = 0;
|
|
|
|
uVar2 = uVar2 + 1;
|
|
|
|
} while (uVar2 < (uint)param_1[0x1e]);
|
|
|
|
param_1[0x1a] = &PTR_FUN_007c7450;
|
|
|
|
param_1[0x20] = &PTR_FUN_007c7450;
|
|
|
|
param_1[0x25] = 0;
|
|
|
|
uVar1 = thunk_FUN_005df0f5(0x100);
|
|
|
|
param_1[0x23] = uVar1;
|
|
|
|
param_1[0x24] = 0x40;
|
|
|
|
param_1[0x22] = 8;
|
|
|
|
param_1[0x21] = 0;
|
|
|
|
uVar2 = 1;
|
|
|
|
do {
|
|
|
|
uVar3 = param_1[0x21] | uVar2;
|
|
|
|
uVar2 = uVar2 << 1;
|
|
|
|
param_1[0x21] = uVar3;
|
|
|
|
} while ((uVar3 | uVar2) < (uint)param_1[0x24]);
|
|
|
|
uVar2 = 0;
|
|
|
|
do {
|
|
|
|
*(undefined4 *)(param_1[0x23] + uVar2 * 4) = 0;
|
|
|
|
uVar2 = uVar2 + 1;
|
|
|
|
} while (uVar2 < (uint)param_1[0x24]);
|
|
|
|
param_1[0x20] = &PTR_FUN_007c6858;
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004fa250 at 0x004FA250 (size: 30) ---
|
|
|
|
|
|
void * __thiscall FUN_004fa250(void *param_1,byte param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_00524b50();
|
|
|
|
if ((param_2 & 1) != 0) {
|
|
|
|
operator_delete(param_1);
|
|
|
|
}
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004fa350 at 0x004FA350 (size: 319) ---
|
|
|
|
|
|
undefined4 __thiscall FUN_004fa350(int param_1,int param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
int iVar2;
|
|
|
|
int *piVar3;
|
|
|
|
undefined4 *puVar4;
|
|
|
|
int *piVar5;
|
|
|
|
int *piVar6;
|
|
|
|
undefined4 *puVar7;
|
|
|
|
int *piVar8;
|
|
|
|
uint uVar9;
|
|
|
|
int *piVar10;
|
|
|
|
|
|
|
|
iVar2 = param_2;
|
|
|
|
if (param_2 == *(int *)(param_1 + 0x68)) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
iVar1 = *(int *)(param_1 + 0x6c);
|
|
|
|
piVar3 = (int *)0x0;
|
|
|
|
do {
|
|
|
|
if (iVar1 == 0) {
|
|
|
|
if (*(void **)(param_1 + 0x60) != (void *)(param_1 + 4)) {
|
|
|
|
operator_delete__(*(void **)(param_1 + 0x60));
|
|
|
|
}
|
|
|
|
*(undefined4 *)(param_1 + 0x60) = 0;
|
|
|
|
*(undefined4 *)(param_1 + 100) = 0;
|
|
|
|
*(undefined4 *)(param_1 + 0x68) = 0;
|
|
|
|
*(undefined4 *)(param_1 + 0x6c) = 0;
|
|
|
|
FUN_00693b20(iVar2);
|
|
|
|
puVar4 = (undefined4 *)PTR_DAT_00818558;
|
|
|
|
while (piVar3 != (int *)0x0) {
|
|
|
|
param_2 = *(int *)(param_1 + 0x68);
|
|
|
|
piVar10 = (int *)piVar3[2];
|
|
|
|
PTR_DAT_00818558 = (undefined *)puVar4;
|
|
|
|
if (param_2 * 2 < *(int *)(param_1 + 0x6c) + 1) {
|
|
|
|
puVar7 = (undefined4 *)FUN_00422d20(PTR_DAT_00818554,puVar4,¶m_2,param_2,0);
|
|
|
|
if ((puVar7 != puVar4) || (puVar7 = puVar7 + -1, puVar7 != puVar4)) {
|
|
|
|
puVar7 = puVar7 + 1;
|
|
|
|
}
|
|
|
|
FUN_004fa350(*puVar7);
|
|
|
|
}
|
|
|
|
uVar9 = (uint)(piVar3[1] + *piVar3) % *(uint *)(param_1 + 0x68);
|
|
|
|
iVar2 = *(int *)(param_1 + 0x60);
|
|
|
|
piVar3[2] = *(int *)(iVar2 + uVar9 * 4);
|
|
|
|
*(int **)(iVar2 + uVar9 * 4) = piVar3;
|
|
|
|
uVar9 = iVar2 + uVar9 * 4;
|
|
|
|
if (uVar9 < *(uint *)(param_1 + 100)) {
|
|
|
|
*(uint *)(param_1 + 100) = uVar9;
|
|
|
|
}
|
|
|
|
*(int *)(param_1 + 0x6c) = *(int *)(param_1 + 0x6c) + 1;
|
|
|
|
puVar4 = (undefined4 *)PTR_DAT_00818558;
|
|
|
|
piVar3 = piVar10;
|
|
|
|
}
|
|
|
|
PTR_DAT_00818558 = (undefined *)puVar4;
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
piVar10 = *(int **)(param_1 + 100);
|
|
|
|
while (piVar10 != (int *)(*(int *)(param_1 + 0x60) + *(int *)(param_1 + 0x68) * 4)) {
|
|
|
|
if (**(int **)(param_1 + 100) != 0) {
|
|
|
|
piVar10 = *(int **)(param_1 + 100);
|
|
|
|
piVar8 = (int *)*piVar10;
|
|
|
|
goto LAB_004fa39f;
|
|
|
|
}
|
|
|
|
piVar10 = *(int **)(param_1 + 100) + 1;
|
|
|
|
*(int **)(param_1 + 100) = piVar10;
|
|
|
|
}
|
|
|
|
piVar10 = (int *)0x0;
|
|
|
|
piVar8 = (int *)0x0;
|
|
|
|
LAB_004fa39f:
|
|
|
|
piVar6 = (int *)*piVar10;
|
|
|
|
if (piVar6 == piVar8) {
|
|
|
|
LAB_004fa3b2:
|
|
|
|
*piVar10 = piVar6[2];
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
do {
|
|
|
|
piVar5 = piVar6;
|
|
|
|
piVar6 = (int *)piVar5[2];
|
|
|
|
} while (piVar6 != piVar8);
|
|
|
|
if (piVar5 == (int *)0x0) goto LAB_004fa3b2;
|
|
|
|
piVar5[2] = piVar6[2];
|
|
|
|
}
|
|
|
|
*(int *)(param_1 + 0x6c) = *(int *)(param_1 + 0x6c) + -1;
|
|
|
|
piVar8[2] = (int)piVar3;
|
|
|
|
iVar1 = *(int *)(param_1 + 0x6c);
|
|
|
|
piVar3 = piVar8;
|
|
|
|
} while( true );
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004fa490 at 0x004FA490 (size: 303) ---
|
|
|
|
|
|
int * __thiscall FUN_004fa490(int *param_1,uint *param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
char cVar1;
|
|
|
|
uint uVar2;
|
|
|
|
int iVar3;
|
|
|
|
undefined4 *puVar4;
|
|
|
|
uint uVar5;
|
|
|
|
int iVar6;
|
|
|
|
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;
|
|
|
|
|
|
|
|
if ((param_1[1] & 0x7fffffffU) < (param_2[1] & 0x7fffffff)) {
|
|
|
|
param_1[2] = 0;
|
|
|
|
cVar1 = FUN_004f9fb0(param_2[1] & 0x7fffffff);
|
|
|
|
if (cVar1 == '\0') {
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
uVar5 = *param_2;
|
|
|
|
uVar2 = param_2[2] * 0x30 + uVar5;
|
|
|
|
if (uVar5 < uVar2) {
|
|
|
|
puVar4 = (undefined4 *)(*param_1 + 0x10);
|
|
|
|
do {
|
|
|
|
puVar4[-2] = *(undefined4 *)(uVar5 + 8);
|
|
|
|
puVar4[-1] = *(undefined4 *)(uVar5 + 0xc);
|
|
|
|
*puVar4 = *(undefined4 *)(uVar5 + 0x10);
|
|
|
|
FUN_004f90f0(uVar5 + 0x14);
|
|
|
|
FUN_004f90f0(uVar5 + 0x20);
|
|
|
|
uVar5 = uVar5 + 0x30;
|
|
|
|
puVar4 = puVar4 + 0xc;
|
|
|
|
} while (uVar5 < uVar2);
|
|
|
|
}
|
|
|
|
uVar5 = param_2[2];
|
|
|
|
if (uVar5 < (uint)param_1[2]) {
|
|
|
|
iVar3 = uVar5 * 0x30;
|
|
|
|
do {
|
|
|
|
iVar6 = *param_1 + iVar3;
|
|
|
|
*(undefined4 *)(iVar6 + 8) = local_28;
|
|
|
|
*(undefined4 *)(iVar6 + 0x10) = local_20;
|
|
|
|
local_1c = 0;
|
|
|
|
local_18 = 0;
|
|
|
|
local_14 = 0;
|
|
|
|
local_10 = 0;
|
|
|
|
local_c = 0;
|
|
|
|
local_8 = 0;
|
|
|
|
*(undefined4 *)(iVar6 + 0xc) = local_24;
|
|
|
|
FUN_004f90f0(&local_1c);
|
|
|
|
FUN_004f90f0(&local_10);
|
|
|
|
uVar5 = uVar5 + 1;
|
|
|
|
iVar3 = iVar3 + 0x30;
|
|
|
|
} while (uVar5 < (uint)param_1[2]);
|
|
|
|
}
|
|
|
|
param_1[2] = param_2[2];
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004fa5c0 at 0x004FA5C0 (size: 158) ---
|
|
|
|
|
|
void __fastcall FUN_004fa5c0(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_0065eb00();
|
|
|
|
operator_delete__(*(void **)(param_1 + 0x188));
|
|
|
|
*(undefined4 *)(param_1 + 0x188) = 0;
|
|
|
|
FUN_0065e8d0();
|
|
|
|
*(undefined ***)(param_1 + 0x198) = &PTR_FUN_007c6918;
|
|
|
|
FUN_0049f850();
|
|
|
|
operator_delete__(*(void **)(param_1 + 0x140));
|
|
|
|
*(undefined4 *)(param_1 + 0x140) = 0;
|
|
|
|
FUN_0065e8d0();
|
|
|
|
*(undefined ***)(param_1 + 0x150) = &PTR_FUN_007c6918;
|
|
|
|
FUN_0049f850();
|
|
|
|
if (param_1 != 0) {
|
|
|
|
FUN_0065e960();
|
|
|
|
FUN_004151b0();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
FUN_0065e960();
|
|
|
|
FUN_004151b0();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004fa660 at 0x004FA660 (size: 124) ---
|
|
|
|
|
|
void __thiscall FUN_004fa660(int param_1,int param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
undefined4 *puVar2;
|
|
|
|
|
|
|
|
*(undefined4 *)(param_1 + 500) = 2;
|
|
|
|
FUN_004fa490(param_2 + 0xc);
|
|
|
|
iVar1 = *(int *)(param_2 + 8) - *(int *)(param_1 + 0x2f8);
|
|
|
|
if (iVar1 != 0) {
|
|
|
|
FUN_004f8cb0(3,iVar1);
|
|
|
|
}
|
|
|
|
puVar2 = (undefined4 *)FUN_005df0f5(0x28);
|
|
|
|
if (puVar2 != (undefined4 *)0x0) {
|
|
|
|
puVar2[1] = 1;
|
|
|
|
puVar2[2] = 0;
|
|
|
|
puVar2[6] = 0;
|
|
|
|
puVar2[7] = 0;
|
|
|
|
puVar2[8] = 0;
|
|
|
|
puVar2[9] = 0;
|
|
|
|
*puVar2 = &PTR_FUN_007c6840;
|
|
|
|
puVar2[3] = 3;
|
|
|
|
}
|
|
|
|
/* WARNING: Could not recover jumptable at 0x004fa6d9. Too many branches */
|
|
|
|
/* WARNING: Treating indirect jump as call */
|
|
|
|
(**(code **)(*(int *)(param_1 + 4) + 0x50))();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004fa6e0 at 0x004FA6E0 (size: 81) ---
|
|
|
|
|
|
void __thiscall FUN_004fa6e0(int param_1,int param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 *puVar1;
|
|
|
|
|
|
|
|
if ((*(byte *)(param_2 + 4) & 1) != 0) {
|
|
|
|
FUN_0040ad10(4);
|
|
|
|
puVar1 = (undefined4 *)FUN_0040acf0(4);
|
|
|
|
if (puVar1 != (undefined4 *)0x0) {
|
|
|
|
if ((*(byte *)(param_2 + 4) & 1) == 0) {
|
|
|
|
*(undefined4 *)(param_1 + 4) = *puVar1;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*puVar1 = *(undefined4 *)(param_1 + 4);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
FUN_004449f0(param_1 + 8,param_2);
|
|
|
|
FUN_004fa740(param_2);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004fa740 at 0x004FA740 (size: 140) ---
|
|
|
|
|
|
void __thiscall FUN_004fa740(int *param_1,int param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
uint *puVar1;
|
|
|
|
uint uVar2;
|
|
|
|
uint uVar3;
|
|
|
|
int iVar4;
|
|
|
|
|
|
|
|
uVar3 = param_1[2];
|
|
|
|
FUN_0040ad10(4);
|
|
|
|
puVar1 = (uint *)FUN_0040acf0(4);
|
|
|
|
iVar4 = 0;
|
|
|
|
if (puVar1 != (uint *)0x0) {
|
|
|
|
if ((*(byte *)(param_2 + 4) & 1) == 0) {
|
|
|
|
uVar3 = *puVar1;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*puVar1 = uVar3;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if ((~*(byte *)(param_2 + 4) & 1) != 0) {
|
|
|
|
uVar2 = FUN_0040a8f0();
|
|
|
|
if (uVar2 < uVar3) {
|
|
|
|
FUN_0040aa50();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
param_1[2] = 0;
|
|
|
|
FUN_004fa7d0(uVar3,1);
|
|
|
|
}
|
|
|
|
uVar3 = 0;
|
|
|
|
if (param_1[2] != 0) {
|
|
|
|
do {
|
|
|
|
(*(code *)**(undefined4 **)(*param_1 + iVar4))(param_2);
|
|
|
|
uVar3 = uVar3 + 1;
|
|
|
|
iVar4 = iVar4 + 0x30;
|
|
|
|
} while (uVar3 < (uint)param_1[2]);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004fa7d0 at 0x004FA7D0 (size: 214) ---
|
|
|
|
|
|
undefined1 __thiscall FUN_004fa7d0(int *param_1,uint param_2,char param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
char cVar1;
|
|
|
|
uint uVar2;
|
|
|
|
int iVar3;
|
|
|
|
int iVar4;
|
|
|
|
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;
|
|
|
|
|
|
|
|
if ((param_1[1] & 0x7fffffffU) < param_2) {
|
|
|
|
uVar2 = param_2;
|
|
|
|
if (param_3 == '\0') {
|
|
|
|
uVar2 = FUN_00453850(param_2);
|
|
|
|
}
|
|
|
|
cVar1 = FUN_004f9fb0(uVar2);
|
|
|
|
if (cVar1 == '\0') {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
_param_3 = param_2;
|
|
|
|
if (param_2 < (uint)param_1[2]) {
|
|
|
|
iVar3 = param_2 * 0x30;
|
|
|
|
do {
|
|
|
|
iVar4 = *param_1 + iVar3;
|
|
|
|
*(undefined4 *)(iVar4 + 8) = local_28;
|
|
|
|
local_1c = 0;
|
|
|
|
local_18 = 0;
|
|
|
|
local_14 = 0;
|
|
|
|
local_10 = 0;
|
|
|
|
local_c = 0;
|
|
|
|
local_8 = 0;
|
|
|
|
*(undefined4 *)(iVar4 + 0xc) = local_24;
|
|
|
|
*(undefined4 *)(iVar4 + 0x10) = local_20;
|
|
|
|
FUN_004f90f0(&local_1c);
|
|
|
|
FUN_004f90f0(&local_10);
|
|
|
|
_param_3 = _param_3 + 1;
|
|
|
|
iVar3 = iVar3 + 0x30;
|
|
|
|
} while (_param_3 < (uint)param_1[2]);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
param_1[2] = param_2;
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004fa8b0 at 0x004FA8B0 (size: 1332) ---
|
|
|
|
|
|
undefined1 __thiscall
|
|
|
|
FUN_004fa8b0(int *param_1,int *param_2,undefined1 param_3,undefined4 param_4,char param_5,
|
|
|
|
undefined4 param_6,int param_7,int param_8)
|
|
|
|
|
|
|
|
{
|
|
|
|
int *piVar1;
|
|
|
|
int iVar2;
|
|
|
|
int *piVar3;
|
|
|
|
undefined4 uVar4;
|
|
|
|
char cVar5;
|
|
|
|
undefined1 uVar6;
|
|
|
|
byte bVar7;
|
|
|
|
uint uVar8;
|
|
|
|
int *piVar9;
|
|
|
|
LONG LVar10;
|
|
|
|
undefined4 *puVar11;
|
|
|
|
int iVar12;
|
|
|
|
int iVar13;
|
|
|
|
code *pcVar14;
|
|
|
|
bool bVar15;
|
|
|
|
longlong lVar16;
|
|
|
|
undefined8 uVar17;
|
|
|
|
undefined *puVar18;
|
|
|
|
undefined4 uVar19;
|
|
|
|
undefined4 uStack_48;
|
|
|
|
uint local_40;
|
|
|
|
int *piStack_3c;
|
|
|
|
int iStack_38;
|
|
|
|
undefined *local_34;
|
|
|
|
undefined *local_30;
|
|
|
|
undefined *local_2c;
|
|
|
|
int iStack_28;
|
|
|
|
int iStack_24;
|
|
|
|
undefined4 uStack_20;
|
|
|
|
undefined4 uStack_1c;
|
|
|
|
uint uStack_18;
|
|
|
|
undefined4 uStack_14;
|
|
|
|
undefined4 uStack_10;
|
|
|
|
undefined4 uStack_c;
|
|
|
|
undefined4 uStack_8;
|
|
|
|
undefined1 uStack_4;
|
|
|
|
|
|
|
|
FUN_004141e0(0,&PTR_DAT_008183b4);
|
|
|
|
*(undefined1 *)(param_1 + 0x7b) = param_3;
|
|
|
|
*(undefined1 *)((int)param_1 + 0x1ed) = (undefined1)param_6;
|
|
|
|
if ((param_1[0x79] & 0x7fffffffU) < 4) {
|
|
|
|
cVar5 = FUN_004180a0(4);
|
|
|
|
if (cVar5 == '\0') goto LAB_004fa934;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar8 = 4;
|
|
|
|
if (4 < (uint)param_1[0x7a]) {
|
|
|
|
do {
|
|
|
|
*(undefined4 *)(param_1[0x78] + uVar8 * 4) = 0;
|
|
|
|
uVar8 = uVar8 + 1;
|
|
|
|
} while (uVar8 < (uint)param_1[0x7a]);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
param_1[0x7a] = 4;
|
|
|
|
LAB_004fa934:
|
|
|
|
param_1[0x7d] = 0;
|
|
|
|
uVar8 = 0;
|
|
|
|
if (param_1[0x7a] != 0) {
|
|
|
|
do {
|
|
|
|
*(undefined4 *)(param_1[0x78] + uVar8 * 4) = 0;
|
|
|
|
uVar8 = uVar8 + 1;
|
|
|
|
} while (uVar8 < (uint)param_1[0x7a]);
|
|
|
|
}
|
|
|
|
local_34 = PTR_DAT_00818340;
|
|
|
|
InterlockedIncrement((LONG *)(PTR_DAT_00818340 + -0x10));
|
|
|
|
local_30 = PTR_DAT_00818344;
|
|
|
|
InterlockedIncrement((LONG *)(PTR_DAT_00818344 + -0x10));
|
|
|
|
local_2c = PTR_DAT_00818344;
|
|
|
|
InterlockedIncrement((LONG *)(PTR_DAT_00818344 + -0x10));
|
|
|
|
uVar19 = 1;
|
|
|
|
puVar18 = PTR_DAT_008183b4;
|
|
|
|
InterlockedIncrement((LONG *)(PTR_DAT_008183b4 + -0x10));
|
|
|
|
iVar13 = *param_2;
|
|
|
|
InterlockedIncrement((LONG *)(iVar13 + -0x10));
|
|
|
|
cVar5 = FUN_00672b70(iVar13,puVar18,uVar19);
|
|
|
|
uStack_48 = (int *)CONCAT13(cVar5,(undefined3)uStack_48);
|
|
|
|
piVar9 = (int *)FUN_006727f0(&local_40);
|
|
|
|
iVar13 = param_1[0xc1];
|
|
|
|
if (iVar13 != *piVar9) {
|
|
|
|
LVar10 = InterlockedDecrement((LONG *)(iVar13 + -0x10));
|
|
|
|
if ((LVar10 == 0) && ((undefined4 *)(iVar13 + -0x14) != (undefined4 *)0x0)) {
|
|
|
|
(*(code *)**(undefined4 **)(iVar13 + -0x14))(1);
|
|
|
|
}
|
|
|
|
iVar13 = *piVar9;
|
|
|
|
param_1[0xc1] = iVar13;
|
|
|
|
InterlockedIncrement((LONG *)(iVar13 + -0x10));
|
|
|
|
}
|
|
|
|
LVar10 = InterlockedDecrement((LONG *)(local_40 - 0x10));
|
|
|
|
if ((LVar10 == 0) && ((undefined4 *)(local_40 - 0x14) != (undefined4 *)0x0)) {
|
|
|
|
(*(code *)**(undefined4 **)(local_40 - 0x14))(1);
|
|
|
|
}
|
|
|
|
uVar4 = DAT_008185f0;
|
|
|
|
uVar19 = DAT_008185e8;
|
|
|
|
local_40 = (param_5 != '\0') + 2;
|
|
|
|
if ((char)param_1[0x7b] == '\0') {
|
|
|
|
local_40 = local_40 & 0xfffffffb;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
local_40 = local_40 | 4;
|
|
|
|
}
|
|
|
|
uVar6 = *(undefined1 *)((int)param_1 + 0x1ed);
|
|
|
|
piStack_3c = (int *)FUN_006727f0(&iStack_38);
|
|
|
|
iStack_28 = *param_2;
|
|
|
|
InterlockedIncrement((LONG *)(iStack_28 + -0x10));
|
|
|
|
iStack_24 = *piStack_3c;
|
|
|
|
InterlockedIncrement((LONG *)(iStack_24 + -0x10));
|
|
|
|
pcVar14 = InterlockedDecrement_exref;
|
|
|
|
uStack_c = uVar19;
|
|
|
|
uStack_20 = 1;
|
|
|
|
uStack_1c = 0;
|
|
|
|
uStack_18 = local_40;
|
|
|
|
uStack_14 = 0;
|
|
|
|
uStack_10 = 0;
|
|
|
|
uStack_8 = uVar4;
|
|
|
|
uStack_4 = uVar6;
|
|
|
|
LVar10 = InterlockedDecrement((LONG *)(iStack_38 + -0x10));
|
|
|
|
if ((LVar10 == 0) && ((undefined4 *)(iStack_38 + -0x14) != (undefined4 *)0x0)) {
|
|
|
|
(*(code *)**(undefined4 **)(iStack_38 + -0x14))(1);
|
|
|
|
}
|
|
|
|
if (cVar5 != '\0') {
|
|
|
|
puVar11 = (undefined4 *)FUN_005df0f5(0x788);
|
|
|
|
if (puVar11 == (undefined4 *)0x0) {
|
|
|
|
puVar11 = (undefined4 *)0x0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
FUN_00671f80();
|
|
|
|
*puVar11 = &PTR_FUN_007c6860;
|
|
|
|
FUN_0065e8b0();
|
|
|
|
FUN_00670fc0();
|
|
|
|
}
|
|
|
|
*(undefined4 **)param_1[0x78] = puVar11;
|
|
|
|
piVar9 = *(int **)param_1[0x78];
|
|
|
|
uStack_48 = (int *)CONCAT13(piVar9 != (int *)0x0,(undefined3)uStack_48);
|
|
|
|
if (piVar9 != (int *)0x0) {
|
|
|
|
cVar5 = (**(code **)(*piVar9 + 4))(&iStack_28);
|
|
|
|
uStack_48 = (int *)CONCAT13(cVar5,(undefined3)uStack_48);
|
|
|
|
if (cVar5 != '\0') {
|
|
|
|
puVar11 = (undefined4 *)FUN_005df0f5(0x788);
|
|
|
|
if (puVar11 == (undefined4 *)0x0) {
|
|
|
|
puVar11 = (undefined4 *)0x0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
FUN_00671f80();
|
|
|
|
*puVar11 = &PTR_FUN_007c6860;
|
|
|
|
FUN_0065e8b0();
|
|
|
|
FUN_00670fc0();
|
|
|
|
}
|
|
|
|
*(undefined4 **)(param_1[0x78] + 0xc) = puVar11;
|
|
|
|
bVar15 = *(int *)(param_1[0x78] + 0xc) != 0;
|
|
|
|
uStack_48 = (int *)CONCAT13(bVar15,(undefined3)uStack_48);
|
|
|
|
if (bVar15) {
|
|
|
|
puVar11 = (undefined4 *)(**(code **)(**(int **)param_1[0x78] + 0x48))(&iStack_38);
|
|
|
|
FUN_00413b60(&local_40,*puVar11);
|
|
|
|
(**(code **)(*uStack_48 + 0x6c))();
|
|
|
|
if (param_8 != 0) {
|
|
|
|
uVar6 = (**(code **)(*param_1 + 0x40))(param_8);
|
|
|
|
uStack_48 = (int *)CONCAT13(uVar6,(undefined3)uStack_48);
|
|
|
|
}
|
|
|
|
if ((uStack_48._3_1_ != '\0') && (param_7 != 0)) {
|
|
|
|
bVar7 = (**(code **)(*param_1 + 0x4c))(param_7,param_6);
|
|
|
|
uStack_48 = (int *)((uint)bVar7 << 0x18);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
local_40 = 0;
|
|
|
|
do {
|
|
|
|
uVar8 = local_40;
|
|
|
|
if ((*(int **)(local_40 + param_1[0x78]) != (int *)0x0) &&
|
|
|
|
(lVar16 = (**(code **)(**(int **)(local_40 + param_1[0x78]) + 0x38))(), lVar16 != 0)) {
|
|
|
|
uVar17 = (**(code **)(**(int **)(uVar8 + param_1[0x78]) + 0x38))();
|
|
|
|
iVar13 = param_1[0x78];
|
|
|
|
piVar9 = (int *)FUN_005df0f5(0x18);
|
|
|
|
if (piVar9 == (int *)0x0) {
|
|
|
|
piVar9 = (int *)0x0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*(undefined8 *)piVar9 = uVar17;
|
|
|
|
piVar9[2] = 0;
|
|
|
|
piVar9[4] = *(int *)(iVar13 + uVar8);
|
|
|
|
}
|
|
|
|
iVar13 = piVar9[1];
|
|
|
|
iVar2 = *piVar9;
|
|
|
|
iVar12 = __aullrem(iVar2,iVar13,param_1[0xb9],0);
|
|
|
|
piVar1 = (int *)(param_1[0xb7] + iVar12 * 4);
|
|
|
|
for (piVar3 = (int *)*piVar1; piVar3 != (int *)0x0; piVar3 = (int *)piVar3[2]) {
|
|
|
|
if ((*piVar3 == iVar2) && (piVar3[1] == iVar13)) {
|
|
|
|
if (piVar3 != (int *)0x0) {
|
|
|
|
operator_delete(piVar9);
|
|
|
|
uVar8 = local_40;
|
|
|
|
pcVar14 = InterlockedDecrement_exref;
|
|
|
|
goto LAB_004fad25;
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
piVar9[2] = *piVar1;
|
|
|
|
*piVar1 = (int)piVar9;
|
|
|
|
if (piVar1 < (int *)param_1[0xb8]) {
|
|
|
|
param_1[0xb8] = (int)piVar1;
|
|
|
|
}
|
|
|
|
param_1[0xba] = param_1[0xba] + 1;
|
|
|
|
uVar8 = local_40;
|
|
|
|
pcVar14 = InterlockedDecrement_exref;
|
|
|
|
}
|
|
|
|
LAB_004fad25:
|
|
|
|
local_40 = uVar8 + 4;
|
|
|
|
if (0xf < (int)local_40) {
|
|
|
|
DAT_00837ba8 = uStack_48._3_1_;
|
|
|
|
FUN_0065e9a0();
|
|
|
|
puVar11 = (undefined4 *)(iStack_24 + -0x14);
|
|
|
|
iVar13 = (*pcVar14)(iStack_24 + -0x10);
|
|
|
|
if ((iVar13 == 0) && (puVar11 != (undefined4 *)0x0)) {
|
|
|
|
(**(code **)*puVar11)(1);
|
|
|
|
}
|
|
|
|
puVar11 = (undefined4 *)(local_2c + -0x14);
|
|
|
|
iVar13 = (*pcVar14)(local_2c + -0x10);
|
|
|
|
if ((iVar13 == 0) && (puVar11 != (undefined4 *)0x0)) {
|
|
|
|
(**(code **)*puVar11)(1);
|
|
|
|
}
|
|
|
|
puVar11 = (undefined4 *)(local_34 + -0x14);
|
|
|
|
iVar13 = (*pcVar14)(local_34 + -0x10);
|
|
|
|
if ((iVar13 == 0) && (puVar11 != (undefined4 *)0x0)) {
|
|
|
|
(**(code **)*puVar11)(1);
|
|
|
|
}
|
|
|
|
piVar9 = piStack_3c + -5;
|
|
|
|
iVar13 = (*pcVar14)(piStack_3c + -4);
|
|
|
|
if ((iVar13 == 0) && (piVar9 != (int *)0x0)) {
|
|
|
|
(**(code **)*piVar9)(1);
|
|
|
|
}
|
|
|
|
iVar13 = (*pcVar14)(param_1 + -4);
|
|
|
|
if ((iVar13 == 0) && (param_1 + -5 != (int *)0x0)) {
|
|
|
|
(**(code **)param_1[-5])(1);
|
|
|
|
}
|
|
|
|
return uStack_48._3_1_;
|
|
|
|
}
|
|
|
|
} while( true );
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004fadf0 at 0x004FADF0 (size: 385) ---
|
|
|
|
|
|
void __fastcall FUN_004fadf0(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
char cVar1;
|
|
|
|
undefined4 uVar2;
|
|
|
|
LONG LVar3;
|
|
|
|
undefined4 *puVar4;
|
|
|
|
undefined4 uVar5;
|
|
|
|
undefined4 uVar6;
|
|
|
|
int iVar7;
|
|
|
|
undefined4 uVar8;
|
|
|
|
undefined4 uVar9;
|
|
|
|
int local_40;
|
|
|
|
undefined8 local_3c;
|
|
|
|
undefined *local_34;
|
|
|
|
undefined *local_30;
|
|
|
|
undefined *local_2c;
|
|
|
|
|
|
|
|
if (*(int *)(*(int *)(param_1 + 0x1e0) + 0xc) != 0) {
|
|
|
|
FUN_00401340();
|
|
|
|
local_34 = PTR_DAT_00818340;
|
|
|
|
InterlockedIncrement((LONG *)(PTR_DAT_00818340 + -0x10));
|
|
|
|
local_30 = PTR_DAT_00818344;
|
|
|
|
InterlockedIncrement((LONG *)(PTR_DAT_00818344 + -0x10));
|
|
|
|
local_2c = PTR_DAT_00818344;
|
|
|
|
InterlockedIncrement((LONG *)(PTR_DAT_00818344 + -0x10));
|
|
|
|
InterlockedIncrement((LONG *)(*(int *)(param_1 + 0x304) + -0x10));
|
|
|
|
FUN_00403350(&stack0xffffffa8,0);
|
|
|
|
cVar1 = FUN_00672900();
|
|
|
|
if (cVar1 != '\0') {
|
|
|
|
iVar7 = (uint)(*(char *)(param_1 + 0x1ec) != '\0') * 4 + 2;
|
|
|
|
uVar9 = 0;
|
|
|
|
uVar8 = 0;
|
|
|
|
uVar6 = 0x69466948;
|
|
|
|
uVar5 = 1;
|
|
|
|
uVar2 = FUN_006727f0(&local_3c);
|
|
|
|
FUN_004f8720(&local_40,uVar2,uVar5,uVar6,iVar7,uVar8,uVar9);
|
|
|
|
puVar4 = (undefined4 *)((int)local_3c + -0x14);
|
|
|
|
LVar3 = InterlockedDecrement((LONG *)((int)local_3c + -0x10));
|
|
|
|
if ((LVar3 == 0) && (puVar4 != (undefined4 *)0x0)) {
|
|
|
|
(**(code **)*puVar4)();
|
|
|
|
}
|
|
|
|
cVar1 = (**(code **)(**(int **)(*(int *)(param_1 + 0x1e0) + 0xc) + 4))();
|
|
|
|
if (cVar1 != '\0') {
|
|
|
|
local_3c = (**(code **)(**(int **)(*(int *)(param_1 + 0x1e0) + 0xc) + 0x38))();
|
|
|
|
FUN_00694490();
|
|
|
|
}
|
|
|
|
FUN_004374c0();
|
|
|
|
}
|
|
|
|
FUN_00493530();
|
|
|
|
LVar3 = InterlockedDecrement((LONG *)(local_40 + -0x10));
|
|
|
|
if ((LVar3 == 0) && ((undefined4 *)(local_40 + -0x14) != (undefined4 *)0x0)) {
|
|
|
|
(*(code *)**(undefined4 **)(local_40 + -0x14))();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004faf80 at 0x004FAF80 (size: 515) ---
|
|
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x004fb0eb) */
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x004fb093) */
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x004fb09b) */
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x004fb0aa) */
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x004fb0b0) */
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x004fb0be) */
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x004fb0c9) */
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x004fb0cc) */
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x004fb0f7) */
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x004fb106) */
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x004fb110) */
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x004fb11e) */
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x004fb129) */
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x004fb12c) */
|
|
|
|
|
|
|
|
void __thiscall FUN_004faf80(int *param_1,int param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
char cVar1;
|
|
|
|
char cVar2;
|
|
|
|
undefined4 uVar3;
|
|
|
|
undefined4 extraout_ECX;
|
|
|
|
undefined4 extraout_ECX_00;
|
|
|
|
undefined4 extraout_ECX_01;
|
|
|
|
uint uVar4;
|
|
|
|
undefined8 uVar5;
|
|
|
|
undefined4 uVar6;
|
|
|
|
undefined4 uVar7;
|
|
|
|
undefined4 uVar8;
|
|
|
|
|
|
|
|
uVar4 = 0;
|
|
|
|
param_1[0x7d] = 1;
|
|
|
|
param_1[0xbd] = 0;
|
|
|
|
param_1[0xbe] = 0;
|
|
|
|
if ((*(byte *)(param_2 + 0x10) & 4) != 0) {
|
|
|
|
FUN_004fadf0();
|
|
|
|
}
|
|
|
|
param_1[0x7c] = *(int *)(param_2 + 8);
|
|
|
|
cVar1 = (**(code **)(*param_1 + 0x40))(*(undefined4 *)(param_2 + 8));
|
|
|
|
if (cVar1 == '\0') {
|
|
|
|
uVar8 = 0;
|
|
|
|
uVar7 = extraout_ECX;
|
|
|
|
FUN_00402730(&DAT_00795320);
|
|
|
|
uVar6 = extraout_ECX_00;
|
|
|
|
FUN_00402730(&DAT_00795320);
|
|
|
|
uVar3 = extraout_ECX_01;
|
|
|
|
FUN_00402730(&DAT_00795320);
|
|
|
|
FUN_0043d090(0xc9,uVar3,uVar6,uVar7,uVar8);
|
|
|
|
FUN_00405eb0();
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
if (param_1[0x7a] != 0) {
|
|
|
|
do {
|
|
|
|
cVar2 = (**(code **)(**(int **)(param_1[0x78] + uVar4 * 4) + 0x3c))();
|
|
|
|
if (cVar2 != '\0') {
|
|
|
|
uVar5 = (**(code **)(**(int **)(param_1[0x78] + uVar4 * 4) + 0x38))();
|
|
|
|
uVar3 = FUN_00679100(uVar5);
|
|
|
|
cVar2 = (**(code **)(**(int **)(param_1[0x78] + uVar4 * 4) + 0x28))(uVar3);
|
|
|
|
if (cVar2 == '\0') {
|
|
|
|
cVar1 = '\0';
|
|
|
|
}
|
|
|
|
}
|
|
|
|
uVar4 = uVar4 + 1;
|
|
|
|
} while (uVar4 < (uint)param_1[0x7a]);
|
|
|
|
}
|
|
|
|
FUN_00413b00();
|
|
|
|
param_1[0xbf] = *(int *)(param_2 + 0xc);
|
|
|
|
if (cVar1 != '\0') {
|
|
|
|
FUN_004f85b0(&stack0x00000000,&stack0xffffffcc);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004fb190 at 0x004FB190 (size: 58) ---
|
|
|
|
|
|
void __fastcall FUN_004fb190(undefined4 *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
*param_1 = &PTR_FUN_007c6990;
|
|
|
|
FUN_005870f0();
|
|
|
|
param_1[1] = &PTR_FUN_007c683c;
|
|
|
|
if ((undefined4 *)param_1[0x19] != param_1 + 2) {
|
|
|
|
operator_delete__((undefined4 *)param_1[0x19]);
|
|
|
|
}
|
|
|
|
param_1[0x19] = 0;
|
|
|
|
param_1[0x1a] = 0;
|
|
|
|
param_1[0x1b] = 0;
|
|
|
|
param_1[0x1c] = 0;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004fb1d0 at 0x004FB1D0 (size: 82) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_004fb1d0(undefined4 *param_1,byte param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
*param_1 = &PTR_FUN_007c698c;
|
|
|
|
FUN_0041a390();
|
|
|
|
param_1[1] = &PTR_FUN_007c6838;
|
|
|
|
if ((undefined4 *)param_1[0x19] != param_1 + 2) {
|
|
|
|
operator_delete__((undefined4 *)param_1[0x19]);
|
|
|
|
}
|
|
|
|
param_1[0x19] = 0;
|
|
|
|
param_1[0x1a] = 0;
|
|
|
|
param_1[0x1b] = 0;
|
|
|
|
param_1[0x1c] = 0;
|
|
|
|
if ((param_2 & 1) != 0) {
|
|
|
|
operator_delete(param_1);
|
|
|
|
}
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004fb230 at 0x004FB230 (size: 82) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_004fb230(undefined4 *param_1,byte param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
*param_1 = &PTR_FUN_007c6990;
|
|
|
|
FUN_005870f0();
|
|
|
|
param_1[1] = &PTR_FUN_007c683c;
|
|
|
|
if ((undefined4 *)param_1[0x19] != param_1 + 2) {
|
|
|
|
operator_delete__((undefined4 *)param_1[0x19]);
|
|
|
|
}
|
|
|
|
param_1[0x19] = 0;
|
|
|
|
param_1[0x1a] = 0;
|
|
|
|
param_1[0x1b] = 0;
|
|
|
|
param_1[0x1c] = 0;
|
|
|
|
if ((param_2 & 1) != 0) {
|
|
|
|
operator_delete(param_1);
|
|
|
|
}
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004fb290 at 0x004FB290 (size: 444) ---
|
|
|
|
|
|
undefined4 __thiscall FUN_004fb290(undefined **param_1,int *param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
int iVar2;
|
|
|
|
int iVar3;
|
|
|
|
int *piVar4;
|
|
|
|
uint uVar5;
|
|
|
|
int *piVar6;
|
|
|
|
int *piVar7;
|
|
|
|
uint uVar8;
|
|
|
|
undefined **local_14;
|
|
|
|
undefined4 local_10;
|
|
|
|
undefined1 local_c [4];
|
|
|
|
undefined4 uStack_8;
|
|
|
|
int local_4;
|
|
|
|
|
|
|
|
piVar7 = param_2;
|
|
|
|
local_14 = param_1;
|
|
|
|
FUN_00414190(local_c,param_2);
|
|
|
|
if (local_4 == 0) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
iVar1 = *(int *)(local_4 + 0xc);
|
|
|
|
uVar5 = 0;
|
|
|
|
if (*(uint *)(iVar1 + 0x1c) != 0) {
|
|
|
|
piVar6 = (int *)(*(int *)(iVar1 + 0x14) + 4);
|
|
|
|
do {
|
|
|
|
if (*piVar6 == piVar7[1]) {
|
|
|
|
if (uVar5 != 0xffffffff) {
|
|
|
|
if (uVar5 < *(uint *)(iVar1 + 0x1c)) {
|
|
|
|
uVar8 = *(uint *)(iVar1 + 0x1c) - 1;
|
|
|
|
*(uint *)(iVar1 + 0x1c) = uVar8;
|
|
|
|
if (uVar5 != uVar8) {
|
|
|
|
iVar2 = *(int *)(iVar1 + 0x14);
|
|
|
|
*(undefined4 *)(iVar2 + uVar5 * 8) = *(undefined4 *)(iVar2 + uVar8 * 8);
|
|
|
|
*(undefined4 *)(iVar2 + 4 + uVar5 * 8) = *(undefined4 *)(iVar2 + 4 + uVar8 * 8);
|
|
|
|
iVar2 = *(int *)(iVar1 + 0x1c);
|
|
|
|
iVar3 = *(int *)(iVar1 + 0x14);
|
|
|
|
*(undefined ***)(iVar3 + iVar2 * 8) = local_14;
|
|
|
|
*(undefined4 *)(iVar3 + 4 + iVar2 * 8) = local_10;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (*(int *)(iVar1 + 0x1c) == 0) {
|
|
|
|
piVar6 = (int *)(**(code **)(param_1[1] + 0x98))
|
|
|
|
(piVar7,*(undefined4 *)(iVar1 + 8),
|
|
|
|
*(undefined4 *)(iVar1 + 0xc));
|
|
|
|
uStack_8 = *(undefined4 *)(iVar1 + 0x10);
|
|
|
|
(**(code **)(piVar6[0x1d4] + 4))();
|
|
|
|
FUN_00671280(uStack_8);
|
|
|
|
FUN_00670f20();
|
|
|
|
(**(code **)(*piVar6 + 0x2c))(piVar6 + 0x1dd);
|
|
|
|
FUN_0065e910();
|
|
|
|
param_1 = local_14;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
uVar5 = uVar5 + 1;
|
|
|
|
piVar6 = piVar6 + 2;
|
|
|
|
} while (uVar5 < *(uint *)(iVar1 + 0x1c));
|
|
|
|
}
|
|
|
|
uVar5 = (uint)(piVar7[1] + *piVar7) % (uint)param_1[0x9c];
|
|
|
|
piVar6 = *(int **)(param_1[0x9a] + uVar5 * 4);
|
|
|
|
piVar4 = piVar6;
|
|
|
|
do {
|
|
|
|
if (piVar4 == (int *)0x0) {
|
|
|
|
LAB_004fb400:
|
|
|
|
if (param_1[0x9d] == (undefined *)0x0) {
|
|
|
|
param_1[0x7d] = (undefined *)0x3;
|
|
|
|
local_10 = 0xf7ea;
|
|
|
|
local_14 = &PTR_FUN_007c6708;
|
|
|
|
FUN_004f85b0(¶m_2,&local_14);
|
|
|
|
}
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
if ((*piVar4 == *piVar7) && (piVar4[1] == piVar7[1])) {
|
|
|
|
if (piVar4 != (int *)0x0) {
|
|
|
|
if (piVar6 == piVar4) goto LAB_004fb3dd;
|
|
|
|
do {
|
|
|
|
piVar7 = piVar6;
|
|
|
|
piVar6 = (int *)piVar7[2];
|
|
|
|
} while (piVar6 != piVar4);
|
|
|
|
if (piVar7 == (int *)0x0) {
|
|
|
|
LAB_004fb3dd:
|
|
|
|
*(int *)(param_1[0x9a] + uVar5 * 4) = piVar6[2];
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
piVar7[2] = piVar6[2];
|
|
|
|
}
|
|
|
|
param_1[0x9d] = param_1[0x9d] + -1;
|
|
|
|
operator_delete(piVar4);
|
|
|
|
}
|
|
|
|
goto LAB_004fb400;
|
|
|
|
}
|
|
|
|
piVar4 = (int *)piVar4[2];
|
|
|
|
} while( true );
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004fb450 at 0x004FB450 (size: 141) ---
|
|
|
|
|
|
void __fastcall FUN_004fb450(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 local_10;
|
|
|
|
undefined1 local_c [4];
|
|
|
|
undefined **local_8;
|
|
|
|
undefined4 local_4;
|
|
|
|
|
|
|
|
FUN_004f9ea0();
|
|
|
|
FUN_0041a390();
|
|
|
|
FUN_0044b6c0();
|
|
|
|
if (*(int *)(param_1 + 500) == 1) {
|
|
|
|
*(undefined4 *)(param_1 + 500) = 3;
|
|
|
|
local_4 = 0xf7ea;
|
|
|
|
local_8 = &PTR_FUN_007c6708;
|
|
|
|
FUN_004f85b0(local_c,&local_8);
|
|
|
|
}
|
|
|
|
*(undefined4 *)(param_1 + 500) = 4;
|
|
|
|
local_10 = 0;
|
|
|
|
FUN_00413a50(&local_10);
|
|
|
|
FUN_004f8cb0(4,local_10);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004fb820 at 0x004FB820 (size: 43) ---
|
|
|
|
|
|
void * __thiscall FUN_004fb820(void *param_1,byte param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_004fb190();
|
|
|
|
FUN_00416710();
|
|
|
|
if ((param_2 & 1) != 0) {
|
|
|
|
operator_delete(param_1);
|
|
|
|
}
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004fb850 at 0x004FB850 (size: 4469) ---
|
|
|
|
|
|
void FUN_004fb850(void)
|
|
|
|
|
|
|
|
{
|
|
|
|
char cVar1;
|
|
|
|
int iVar2;
|
|
|
|
undefined4 uVar3;
|
|
|
|
undefined4 *puVar4;
|
|
|
|
|
|
|
|
iVar2 = FUN_005df0f5(0x114);
|
|
|
|
if (iVar2 == 0) {
|
|
|
|
uVar3 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar3 = FUN_004fd0a0(&LAB_004f7a70,1);
|
|
|
|
}
|
|
|
|
puVar4 = (undefined4 *)FUN_005df0f5(0xc);
|
|
|
|
if (puVar4 == (undefined4 *)0x0) {
|
|
|
|
puVar4 = (undefined4 *)0x0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
puVar4[2] = uVar3;
|
|
|
|
*puVar4 = 1;
|
|
|
|
puVar4[1] = 0;
|
|
|
|
}
|
|
|
|
cVar1 = FUN_0042bd40(puVar4);
|
|
|
|
if ((cVar1 == '\0') && (puVar4 != (undefined4 *)0x0)) {
|
|
|
|
operator_delete(puVar4);
|
|
|
|
}
|
|
|
|
iVar2 = FUN_005df0f5(0x114);
|
|
|
|
if (iVar2 == 0) {
|
|
|
|
uVar3 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar3 = FUN_004fd0a0(&LAB_004f7a50,2);
|
|
|
|
}
|
|
|
|
puVar4 = (undefined4 *)FUN_005df0f5(0xc);
|
|
|
|
if (puVar4 == (undefined4 *)0x0) {
|
|
|
|
puVar4 = (undefined4 *)0x0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
puVar4[2] = uVar3;
|
|
|
|
*puVar4 = 2;
|
|
|
|
puVar4[1] = 0;
|
|
|
|
}
|
|
|
|
cVar1 = FUN_0042bd40(puVar4);
|
|
|
|
if ((cVar1 == '\0') && (puVar4 != (undefined4 *)0x0)) {
|
|
|
|
operator_delete(puVar4);
|
|
|
|
}
|
|
|
|
iVar2 = FUN_005df0f5(0x114);
|
|
|
|
if (iVar2 == 0) {
|
|
|
|
uVar3 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar3 = FUN_004fd0a0(&LAB_004f7af0,3);
|
|
|
|
}
|
|
|
|
puVar4 = (undefined4 *)FUN_005df0f5(0xc);
|
|
|
|
if (puVar4 == (undefined4 *)0x0) {
|
|
|
|
puVar4 = (undefined4 *)0x0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
puVar4[2] = uVar3;
|
|
|
|
*puVar4 = 3;
|
|
|
|
puVar4[1] = 0;
|
|
|
|
}
|
|
|
|
cVar1 = FUN_0042bd40(puVar4);
|
|
|
|
if ((cVar1 == '\0') && (puVar4 != (undefined4 *)0x0)) {
|
|
|
|
operator_delete(puVar4);
|
|
|
|
}
|
|
|
|
iVar2 = FUN_005df0f5(0x114);
|
|
|
|
if (iVar2 == 0) {
|
|
|
|
uVar3 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar3 = FUN_004fd0a0(FUN_004f7b10,6);
|
|
|
|
}
|
|
|
|
puVar4 = (undefined4 *)FUN_005df0f5(0xc);
|
|
|
|
if (puVar4 == (undefined4 *)0x0) {
|
|
|
|
puVar4 = (undefined4 *)0x0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
puVar4[2] = uVar3;
|
|
|
|
*puVar4 = 6;
|
|
|
|
puVar4[1] = 0;
|
|
|
|
}
|
|
|
|
cVar1 = FUN_0042bd40(puVar4);
|
|
|
|
if ((cVar1 == '\0') && (puVar4 != (undefined4 *)0x0)) {
|
|
|
|
operator_delete(puVar4);
|
|
|
|
}
|
|
|
|
iVar2 = FUN_005df0f5(0x114);
|
|
|
|
if (iVar2 == 0) {
|
|
|
|
uVar3 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar3 = FUN_004fd0a0(&LAB_004f7b50,7);
|
|
|
|
}
|
|
|
|
puVar4 = (undefined4 *)FUN_005df0f5(0xc);
|
|
|
|
if (puVar4 == (undefined4 *)0x0) {
|
|
|
|
puVar4 = (undefined4 *)0x0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
puVar4[2] = uVar3;
|
|
|
|
*puVar4 = 7;
|
|
|
|
puVar4[1] = 0;
|
|
|
|
}
|
|
|
|
cVar1 = FUN_0042bd40(puVar4);
|
|
|
|
if ((cVar1 == '\0') && (puVar4 != (undefined4 *)0x0)) {
|
|
|
|
operator_delete(puVar4);
|
|
|
|
}
|
|
|
|
iVar2 = FUN_005df0f5(0x114);
|
|
|
|
if (iVar2 == 0) {
|
|
|
|
uVar3 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar3 = FUN_004fd0a0(&LAB_004f7b30,8);
|
|
|
|
}
|
|
|
|
puVar4 = (undefined4 *)FUN_005df0f5(0xc);
|
|
|
|
if (puVar4 == (undefined4 *)0x0) {
|
|
|
|
puVar4 = (undefined4 *)0x0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
puVar4[2] = uVar3;
|
|
|
|
*puVar4 = 8;
|
|
|
|
puVar4[1] = 0;
|
|
|
|
}
|
|
|
|
cVar1 = FUN_0042bd40(puVar4);
|
|
|
|
if ((cVar1 == '\0') && (puVar4 != (undefined4 *)0x0)) {
|
|
|
|
operator_delete(puVar4);
|
|
|
|
}
|
|
|
|
iVar2 = FUN_005df0f5(0x114);
|
|
|
|
if (iVar2 == 0) {
|
|
|
|
uVar3 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar3 = FUN_004fd0a0(FUN_004f7b70,10);
|
|
|
|
}
|
|
|
|
puVar4 = (undefined4 *)FUN_005df0f5(0xc);
|
|
|
|
if (puVar4 == (undefined4 *)0x0) {
|
|
|
|
puVar4 = (undefined4 *)0x0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
puVar4[2] = uVar3;
|
|
|
|
*puVar4 = 10;
|
|
|
|
puVar4[1] = 0;
|
|
|
|
}
|
|
|
|
cVar1 = FUN_0042bd40(puVar4);
|
|
|
|
if ((cVar1 == '\0') && (puVar4 != (undefined4 *)0x0)) {
|
|
|
|
operator_delete(puVar4);
|
|
|
|
}
|
|
|
|
iVar2 = FUN_005df0f5(0x114);
|
|
|
|
if (iVar2 == 0) {
|
|
|
|
uVar3 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar3 = FUN_004fd0a0(&LAB_004f7b90,0xb);
|
|
|
|
}
|
|
|
|
puVar4 = (undefined4 *)FUN_005df0f5(0xc);
|
|
|
|
if (puVar4 == (undefined4 *)0x0) {
|
|
|
|
puVar4 = (undefined4 *)0x0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
puVar4[2] = uVar3;
|
|
|
|
*puVar4 = 0xb;
|
|
|
|
puVar4[1] = 0;
|
|
|
|
}
|
|
|
|
cVar1 = FUN_0042bd40(puVar4);
|
|
|
|
if ((cVar1 == '\0') && (puVar4 != (undefined4 *)0x0)) {
|
|
|
|
operator_delete(puVar4);
|
|
|
|
}
|
|
|
|
iVar2 = FUN_005df0f5(0x114);
|
|
|
|
if (iVar2 == 0) {
|
|
|
|
uVar3 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar3 = FUN_004fd0a0(&LAB_00444500,0xc);
|
|
|
|
}
|
|
|
|
puVar4 = (undefined4 *)FUN_005df0f5(0xc);
|
|
|
|
if (puVar4 == (undefined4 *)0x0) {
|
|
|
|
puVar4 = (undefined4 *)0x0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
puVar4[2] = uVar3;
|
|
|
|
*puVar4 = 0xc;
|
|
|
|
puVar4[1] = 0;
|
|
|
|
}
|
|
|
|
cVar1 = FUN_0042bd40(puVar4);
|
|
|
|
if ((cVar1 == '\0') && (puVar4 != (undefined4 *)0x0)) {
|
|
|
|
operator_delete(puVar4);
|
|
|
|
}
|
|
|
|
iVar2 = FUN_005df0f5(0x114);
|
|
|
|
if (iVar2 == 0) {
|
|
|
|
uVar3 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar3 = FUN_004fd0a0(&LAB_004f7bb0,0xd);
|
|
|
|
}
|
|
|
|
puVar4 = (undefined4 *)FUN_005df0f5(0xc);
|
|
|
|
if (puVar4 == (undefined4 *)0x0) {
|
|
|
|
puVar4 = (undefined4 *)0x0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
puVar4[2] = uVar3;
|
|
|
|
*puVar4 = 0xd;
|
|
|
|
puVar4[1] = 0;
|
|
|
|
}
|
|
|
|
cVar1 = FUN_0042bd40(puVar4);
|
|
|
|
if ((cVar1 == '\0') && (puVar4 != (undefined4 *)0x0)) {
|
|
|
|
operator_delete(puVar4);
|
|
|
|
}
|
|
|
|
iVar2 = FUN_005df0f5(0x114);
|
|
|
|
if (iVar2 == 0) {
|
|
|
|
uVar3 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar3 = FUN_004fd0a0(&LAB_004fa280,0xe);
|
|
|
|
}
|
|
|
|
puVar4 = (undefined4 *)FUN_005df0f5(0xc);
|
|
|
|
if (puVar4 == (undefined4 *)0x0) {
|
|
|
|
puVar4 = (undefined4 *)0x0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
puVar4[2] = uVar3;
|
|
|
|
*puVar4 = 0xe;
|
|
|
|
puVar4[1] = 0;
|
|
|
|
}
|
|
|
|
cVar1 = FUN_0042bd40(puVar4);
|
|
|
|
if ((cVar1 == '\0') && (puVar4 != (undefined4 *)0x0)) {
|
|
|
|
operator_delete(puVar4);
|
|
|
|
}
|
|
|
|
iVar2 = FUN_005df0f5(0x114);
|
|
|
|
if (iVar2 == 0) {
|
|
|
|
uVar3 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar3 = FUN_004fd0a0(FUN_004f7bd0,0xf);
|
|
|
|
}
|
|
|
|
puVar4 = (undefined4 *)FUN_005df0f5(0xc);
|
|
|
|
if (puVar4 == (undefined4 *)0x0) {
|
|
|
|
puVar4 = (undefined4 *)0x0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
puVar4[2] = uVar3;
|
|
|
|
*puVar4 = 0xf;
|
|
|
|
puVar4[1] = 0;
|
|
|
|
}
|
|
|
|
cVar1 = FUN_0042bd40(puVar4);
|
|
|
|
if ((cVar1 == '\0') && (puVar4 != (undefined4 *)0x0)) {
|
|
|
|
operator_delete(puVar4);
|
|
|
|
}
|
|
|
|
iVar2 = FUN_005df0f5(0x114);
|
|
|
|
if (iVar2 == 0) {
|
|
|
|
uVar3 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar3 = FUN_004fd0a0(&LAB_004f7c00,0x10);
|
|
|
|
}
|
|
|
|
puVar4 = (undefined4 *)FUN_005df0f5(0xc);
|
|
|
|
if (puVar4 == (undefined4 *)0x0) {
|
|
|
|
puVar4 = (undefined4 *)0x0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
puVar4[2] = uVar3;
|
|
|
|
*puVar4 = 0x10;
|
|
|
|
puVar4[1] = 0;
|
|
|
|
}
|
|
|
|
cVar1 = FUN_0042bd40(puVar4);
|
|
|
|
if ((cVar1 == '\0') && (puVar4 != (undefined4 *)0x0)) {
|
|
|
|
operator_delete(puVar4);
|
|
|
|
}
|
|
|
|
iVar2 = FUN_005df0f5(0x114);
|
|
|
|
if (iVar2 == 0) {
|
|
|
|
uVar3 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar3 = FUN_004fd0a0(FUN_004f7c20,0x11);
|
|
|
|
}
|
|
|
|
puVar4 = (undefined4 *)FUN_005df0f5(0xc);
|
|
|
|
if (puVar4 == (undefined4 *)0x0) {
|
|
|
|
puVar4 = (undefined4 *)0x0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
puVar4[2] = uVar3;
|
|
|
|
*puVar4 = 0x11;
|
|
|
|
puVar4[1] = 0;
|
|
|
|
}
|
|
|
|
cVar1 = FUN_0042bd40(puVar4);
|
|
|
|
if ((cVar1 == '\0') && (puVar4 != (undefined4 *)0x0)) {
|
|
|
|
operator_delete(puVar4);
|
|
|
|
}
|
|
|
|
iVar2 = FUN_005df0f5(0x114);
|
|
|
|
if (iVar2 == 0) {
|
|
|
|
uVar3 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar3 = FUN_004fd0a0(FUN_004f7c40,0x12);
|
|
|
|
}
|
|
|
|
puVar4 = (undefined4 *)FUN_005df0f5(0xc);
|
|
|
|
if (puVar4 == (undefined4 *)0x0) {
|
|
|
|
puVar4 = (undefined4 *)0x0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
puVar4[2] = uVar3;
|
|
|
|
*puVar4 = 0x12;
|
|
|
|
puVar4[1] = 0;
|
|
|
|
}
|
|
|
|
cVar1 = FUN_0042bd40(puVar4);
|
|
|
|
if ((cVar1 == '\0') && (puVar4 != (undefined4 *)0x0)) {
|
|
|
|
operator_delete(puVar4);
|
|
|
|
}
|
|
|
|
iVar2 = FUN_005df0f5(0x114);
|
|
|
|
if (iVar2 == 0) {
|
|
|
|
uVar3 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar3 = FUN_004fd0a0(FUN_004f7c60,0x13);
|
|
|
|
}
|
|
|
|
puVar4 = (undefined4 *)FUN_005df0f5(0xc);
|
|
|
|
if (puVar4 == (undefined4 *)0x0) {
|
|
|
|
puVar4 = (undefined4 *)0x0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
puVar4[2] = uVar3;
|
|
|
|
*puVar4 = 0x13;
|
|
|
|
puVar4[1] = 0;
|
|
|
|
}
|
|
|
|
cVar1 = FUN_0042bd40(puVar4);
|
|
|
|
if ((cVar1 == '\0') && (puVar4 != (undefined4 *)0x0)) {
|
|
|
|
operator_delete(puVar4);
|
|
|
|
}
|
|
|
|
iVar2 = FUN_005df0f5(0x114);
|
|
|
|
if (iVar2 == 0) {
|
|
|
|
uVar3 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar3 = FUN_004fd0a0(FUN_004f7c80,0x14);
|
|
|
|
}
|
|
|
|
puVar4 = (undefined4 *)FUN_005df0f5(0xc);
|
|
|
|
if (puVar4 == (undefined4 *)0x0) {
|
|
|
|
puVar4 = (undefined4 *)0x0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
puVar4[2] = uVar3;
|
|
|
|
*puVar4 = 0x14;
|
|
|
|
puVar4[1] = 0;
|
|
|
|
}
|
|
|
|
cVar1 = FUN_0042bd40(puVar4);
|
|
|
|
if ((cVar1 == '\0') && (puVar4 != (undefined4 *)0x0)) {
|
|
|
|
operator_delete(puVar4);
|
|
|
|
}
|
|
|
|
iVar2 = FUN_005df0f5(0x114);
|
|
|
|
if (iVar2 == 0) {
|
|
|
|
uVar3 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar3 = FUN_004fd0a0(&LAB_004f7ca0,0x15);
|
|
|
|
}
|
|
|
|
puVar4 = (undefined4 *)FUN_005df0f5(0xc);
|
|
|
|
if (puVar4 == (undefined4 *)0x0) {
|
|
|
|
puVar4 = (undefined4 *)0x0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
puVar4[2] = uVar3;
|
|
|
|
*puVar4 = 0x15;
|
|
|
|
puVar4[1] = 0;
|
|
|
|
}
|
|
|
|
cVar1 = FUN_0042bd40(puVar4);
|
|
|
|
if ((cVar1 == '\0') && (puVar4 != (undefined4 *)0x0)) {
|
|
|
|
operator_delete(puVar4);
|
|
|
|
}
|
|
|
|
iVar2 = FUN_005df0f5(0x114);
|
|
|
|
if (iVar2 == 0) {
|
|
|
|
uVar3 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar3 = FUN_004fd0a0(FUN_004f7d40,0x16);
|
|
|
|
}
|
|
|
|
puVar4 = (undefined4 *)FUN_005df0f5(0xc);
|
|
|
|
if (puVar4 == (undefined4 *)0x0) {
|
|
|
|
puVar4 = (undefined4 *)0x0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
puVar4[2] = uVar3;
|
|
|
|
*puVar4 = 0x16;
|
|
|
|
puVar4[1] = 0;
|
|
|
|
}
|
|
|
|
cVar1 = FUN_0042bd40(puVar4);
|
|
|
|
if ((cVar1 == '\0') && (puVar4 != (undefined4 *)0x0)) {
|
|
|
|
operator_delete(puVar4);
|
|
|
|
}
|
|
|
|
iVar2 = FUN_005df0f5(0x114);
|
|
|
|
if (iVar2 == 0) {
|
|
|
|
uVar3 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar3 = FUN_004fd0a0(FUN_004f7d60,0x18);
|
|
|
|
}
|
|
|
|
puVar4 = (undefined4 *)FUN_005df0f5(0xc);
|
|
|
|
if (puVar4 == (undefined4 *)0x0) {
|
|
|
|
puVar4 = (undefined4 *)0x0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
puVar4[2] = uVar3;
|
|
|
|
*puVar4 = 0x18;
|
|
|
|
puVar4[1] = 0;
|
|
|
|
}
|
|
|
|
cVar1 = FUN_0042bd40(puVar4);
|
|
|
|
if ((cVar1 == '\0') && (puVar4 != (undefined4 *)0x0)) {
|
|
|
|
operator_delete(puVar4);
|
|
|
|
}
|
|
|
|
iVar2 = FUN_005df0f5(0x114);
|
|
|
|
if (iVar2 == 0) {
|
|
|
|
uVar3 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar3 = FUN_004fd0a0(&LAB_004f7d80,0x19);
|
|
|
|
}
|
|
|
|
puVar4 = (undefined4 *)FUN_005df0f5(0xc);
|
|
|
|
if (puVar4 == (undefined4 *)0x0) {
|
|
|
|
puVar4 = (undefined4 *)0x0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
puVar4[2] = uVar3;
|
|
|
|
*puVar4 = 0x19;
|
|
|
|
puVar4[1] = 0;
|
|
|
|
}
|
|
|
|
cVar1 = FUN_0042bd40(puVar4);
|
|
|
|
if ((cVar1 == '\0') && (puVar4 != (undefined4 *)0x0)) {
|
|
|
|
operator_delete(puVar4);
|
|
|
|
}
|
|
|
|
iVar2 = FUN_005df0f5(0x114);
|
|
|
|
if (iVar2 == 0) {
|
|
|
|
uVar3 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar3 = FUN_004fd0a0(&LAB_004f7da0,0x1a);
|
|
|
|
}
|
|
|
|
puVar4 = (undefined4 *)FUN_005df0f5(0xc);
|
|
|
|
if (puVar4 == (undefined4 *)0x0) {
|
|
|
|
puVar4 = (undefined4 *)0x0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
puVar4[2] = uVar3;
|
|
|
|
*puVar4 = 0x1a;
|
|
|
|
puVar4[1] = 0;
|
|
|
|
}
|
|
|
|
cVar1 = FUN_0042bd40(puVar4);
|
|
|
|
if ((cVar1 == '\0') && (puVar4 != (undefined4 *)0x0)) {
|
|
|
|
operator_delete(puVar4);
|
|
|
|
}
|
|
|
|
iVar2 = FUN_005df0f5(0x114);
|
|
|
|
if (iVar2 == 0) {
|
|
|
|
uVar3 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar3 = FUN_004fd0a0(FUN_004f7dc0,0x1b);
|
|
|
|
}
|
|
|
|
puVar4 = (undefined4 *)FUN_005df0f5(0xc);
|
|
|
|
if (puVar4 == (undefined4 *)0x0) {
|
|
|
|
puVar4 = (undefined4 *)0x0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
puVar4[2] = uVar3;
|
|
|
|
*puVar4 = 0x1b;
|
|
|
|
puVar4[1] = 0;
|
|
|
|
}
|
|
|
|
cVar1 = FUN_0042bd40(puVar4);
|
|
|
|
if ((cVar1 == '\0') && (puVar4 != (undefined4 *)0x0)) {
|
|
|
|
operator_delete(puVar4);
|
|
|
|
}
|
|
|
|
iVar2 = FUN_005df0f5(0x114);
|
|
|
|
if (iVar2 == 0) {
|
|
|
|
uVar3 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar3 = FUN_004fd0a0(&LAB_004f7de0,0x1c);
|
|
|
|
}
|
|
|
|
puVar4 = (undefined4 *)FUN_005df0f5(0xc);
|
|
|
|
if (puVar4 == (undefined4 *)0x0) {
|
|
|
|
puVar4 = (undefined4 *)0x0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
puVar4[2] = uVar3;
|
|
|
|
*puVar4 = 0x1c;
|
|
|
|
puVar4[1] = 0;
|
|
|
|
}
|
|
|
|
cVar1 = FUN_0042bd40(puVar4);
|
|
|
|
if ((cVar1 == '\0') && (puVar4 != (undefined4 *)0x0)) {
|
|
|
|
operator_delete(puVar4);
|
|
|
|
}
|
|
|
|
iVar2 = FUN_005df0f5(0x114);
|
|
|
|
if (iVar2 == 0) {
|
|
|
|
uVar3 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar3 = FUN_004fd0a0(FUN_004f7e00,0x1d);
|
|
|
|
}
|
|
|
|
puVar4 = (undefined4 *)FUN_005df0f5(0xc);
|
|
|
|
if (puVar4 == (undefined4 *)0x0) {
|
|
|
|
puVar4 = (undefined4 *)0x0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
puVar4[2] = uVar3;
|
|
|
|
*puVar4 = 0x1d;
|
|
|
|
puVar4[1] = 0;
|
|
|
|
}
|
|
|
|
cVar1 = FUN_0042bd40(puVar4);
|
|
|
|
if ((cVar1 == '\0') && (puVar4 != (undefined4 *)0x0)) {
|
|
|
|
operator_delete(puVar4);
|
|
|
|
}
|
|
|
|
iVar2 = FUN_005df0f5(0x114);
|
|
|
|
if (iVar2 == 0) {
|
|
|
|
uVar3 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar3 = FUN_004fd0a0(&LAB_0044c660,0x1e);
|
|
|
|
}
|
|
|
|
puVar4 = (undefined4 *)FUN_005df0f5(0xc);
|
|
|
|
if (puVar4 == (undefined4 *)0x0) {
|
|
|
|
puVar4 = (undefined4 *)0x0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
puVar4[2] = uVar3;
|
|
|
|
*puVar4 = 0x1e;
|
|
|
|
puVar4[1] = 0;
|
|
|
|
}
|
|
|
|
cVar1 = FUN_0042bd40(puVar4);
|
|
|
|
if ((cVar1 == '\0') && (puVar4 != (undefined4 *)0x0)) {
|
|
|
|
operator_delete(puVar4);
|
|
|
|
}
|
|
|
|
iVar2 = FUN_005df0f5(0x114);
|
|
|
|
if (iVar2 == 0) {
|
|
|
|
uVar3 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar3 = FUN_004fd0a0(&LAB_00449950,0x1f);
|
|
|
|
}
|
|
|
|
puVar4 = (undefined4 *)FUN_005df0f5(0xc);
|
|
|
|
if (puVar4 == (undefined4 *)0x0) {
|
|
|
|
puVar4 = (undefined4 *)0x0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
puVar4[2] = uVar3;
|
|
|
|
*puVar4 = 0x1f;
|
|
|
|
puVar4[1] = 0;
|
|
|
|
}
|
|
|
|
cVar1 = FUN_0042bd40(puVar4);
|
|
|
|
if ((cVar1 == '\0') && (puVar4 != (undefined4 *)0x0)) {
|
|
|
|
operator_delete(puVar4);
|
|
|
|
}
|
|
|
|
iVar2 = FUN_005df0f5(0x114);
|
|
|
|
if (iVar2 == 0) {
|
|
|
|
uVar3 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar3 = FUN_004fd0a0(&LAB_004505a0,0x20);
|
|
|
|
}
|
|
|
|
puVar4 = (undefined4 *)FUN_005df0f5(0xc);
|
|
|
|
if (puVar4 == (undefined4 *)0x0) {
|
|
|
|
puVar4 = (undefined4 *)0x0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
puVar4[2] = uVar3;
|
|
|
|
*puVar4 = 0x20;
|
|
|
|
puVar4[1] = 0;
|
|
|
|
}
|
|
|
|
cVar1 = FUN_0042bd40(puVar4);
|
|
|
|
if ((cVar1 == '\0') && (puVar4 != (undefined4 *)0x0)) {
|
|
|
|
operator_delete(puVar4);
|
|
|
|
}
|
|
|
|
iVar2 = FUN_005df0f5(0x114);
|
|
|
|
if (iVar2 == 0) {
|
|
|
|
uVar3 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar3 = FUN_004fd0a0(&LAB_0044d3f0,0x21);
|
|
|
|
}
|
|
|
|
puVar4 = (undefined4 *)FUN_005df0f5(0xc);
|
|
|
|
if (puVar4 == (undefined4 *)0x0) {
|
|
|
|
puVar4 = (undefined4 *)0x0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
puVar4[2] = uVar3;
|
|
|
|
*puVar4 = 0x21;
|
|
|
|
puVar4[1] = 0;
|
|
|
|
}
|
|
|
|
cVar1 = FUN_0042bd40(puVar4);
|
|
|
|
if ((cVar1 == '\0') && (puVar4 != (undefined4 *)0x0)) {
|
|
|
|
operator_delete(puVar4);
|
|
|
|
}
|
|
|
|
iVar2 = FUN_005df0f5(0x114);
|
|
|
|
if (iVar2 == 0) {
|
|
|
|
uVar3 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar3 = FUN_004fd0a0(&LAB_00445520,0x43);
|
|
|
|
}
|
|
|
|
puVar4 = (undefined4 *)FUN_005df0f5(0xc);
|
|
|
|
if (puVar4 == (undefined4 *)0x0) {
|
|
|
|
puVar4 = (undefined4 *)0x0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
puVar4[2] = uVar3;
|
|
|
|
*puVar4 = 0x43;
|
|
|
|
puVar4[1] = 0;
|
|
|
|
}
|
|
|
|
cVar1 = FUN_0042bd40(puVar4);
|
|
|
|
if ((cVar1 == '\0') && (puVar4 != (undefined4 *)0x0)) {
|
|
|
|
operator_delete(puVar4);
|
|
|
|
}
|
|
|
|
iVar2 = FUN_005df0f5(0x114);
|
|
|
|
if (iVar2 == 0) {
|
|
|
|
uVar3 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar3 = FUN_004fd0a0(&LAB_004f7e20,0x22);
|
|
|
|
}
|
|
|
|
puVar4 = (undefined4 *)FUN_005df0f5(0xc);
|
|
|
|
if (puVar4 == (undefined4 *)0x0) {
|
|
|
|
puVar4 = (undefined4 *)0x0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
puVar4[2] = uVar3;
|
|
|
|
*puVar4 = 0x22;
|
|
|
|
puVar4[1] = 0;
|
|
|
|
}
|
|
|
|
cVar1 = FUN_0042bd40(puVar4);
|
|
|
|
if ((cVar1 == '\0') && (puVar4 != (undefined4 *)0x0)) {
|
|
|
|
operator_delete(puVar4);
|
|
|
|
}
|
|
|
|
iVar2 = FUN_005df0f5(0x114);
|
|
|
|
if (iVar2 == 0) {
|
|
|
|
uVar3 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar3 = FUN_004fd0a0(&LAB_00459340,0x23);
|
|
|
|
}
|
|
|
|
puVar4 = (undefined4 *)FUN_005df0f5(0xc);
|
|
|
|
if (puVar4 == (undefined4 *)0x0) {
|
|
|
|
puVar4 = (undefined4 *)0x0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
puVar4[2] = uVar3;
|
|
|
|
*puVar4 = 0x23;
|
|
|
|
puVar4[1] = 0;
|
|
|
|
}
|
|
|
|
cVar1 = FUN_0042bd40(puVar4);
|
|
|
|
if ((cVar1 == '\0') && (puVar4 != (undefined4 *)0x0)) {
|
|
|
|
operator_delete(puVar4);
|
|
|
|
}
|
|
|
|
iVar2 = FUN_005df0f5(0x114);
|
|
|
|
if (iVar2 == 0) {
|
|
|
|
uVar3 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar3 = FUN_004fd0a0(&LAB_0041c0f0,0x24);
|
|
|
|
}
|
|
|
|
puVar4 = (undefined4 *)FUN_005df0f5(0xc);
|
|
|
|
if (puVar4 == (undefined4 *)0x0) {
|
|
|
|
puVar4 = (undefined4 *)0x0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
puVar4[2] = uVar3;
|
|
|
|
*puVar4 = 0x24;
|
|
|
|
puVar4[1] = 0;
|
|
|
|
}
|
|
|
|
cVar1 = FUN_0042bd40(puVar4);
|
|
|
|
if ((cVar1 == '\0') && (puVar4 != (undefined4 *)0x0)) {
|
|
|
|
operator_delete(puVar4);
|
|
|
|
}
|
|
|
|
iVar2 = FUN_005df0f5(0x114);
|
|
|
|
if (iVar2 == 0) {
|
|
|
|
uVar3 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar3 = FUN_004fd0a0(&LAB_00430960,0x25);
|
|
|
|
}
|
|
|
|
puVar4 = (undefined4 *)FUN_005df0f5(0xc);
|
|
|
|
if (puVar4 == (undefined4 *)0x0) {
|
|
|
|
puVar4 = (undefined4 *)0x0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
puVar4[2] = uVar3;
|
|
|
|
*puVar4 = 0x25;
|
|
|
|
puVar4[1] = 0;
|
|
|
|
}
|
|
|
|
cVar1 = FUN_0042bd40(puVar4);
|
|
|
|
if ((cVar1 == '\0') && (puVar4 != (undefined4 *)0x0)) {
|
|
|
|
operator_delete(puVar4);
|
|
|
|
}
|
|
|
|
iVar2 = FUN_005df0f5(0x114);
|
|
|
|
if (iVar2 == 0) {
|
|
|
|
uVar3 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar3 = FUN_004fd0a0(&LAB_00416850,0x26);
|
|
|
|
}
|
|
|
|
puVar4 = (undefined4 *)FUN_005df0f5(0xc);
|
|
|
|
if (puVar4 == (undefined4 *)0x0) {
|
|
|
|
puVar4 = (undefined4 *)0x0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
puVar4[2] = uVar3;
|
|
|
|
*puVar4 = 0x26;
|
|
|
|
puVar4[1] = 0;
|
|
|
|
}
|
|
|
|
cVar1 = FUN_0042bd40(puVar4);
|
|
|
|
if ((cVar1 == '\0') && (puVar4 != (undefined4 *)0x0)) {
|
|
|
|
operator_delete(puVar4);
|
|
|
|
}
|
|
|
|
iVar2 = FUN_005df0f5(0x114);
|
|
|
|
if (iVar2 == 0) {
|
|
|
|
uVar3 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar3 = FUN_004fd0a0(&LAB_004f7e50,0x27);
|
|
|
|
}
|
|
|
|
puVar4 = (undefined4 *)FUN_005df0f5(0xc);
|
|
|
|
if (puVar4 == (undefined4 *)0x0) {
|
|
|
|
puVar4 = (undefined4 *)0x0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
puVar4[2] = uVar3;
|
|
|
|
*puVar4 = 0x27;
|
|
|
|
puVar4[1] = 0;
|
|
|
|
}
|
|
|
|
cVar1 = FUN_0042bd40(puVar4);
|
|
|
|
if ((cVar1 == '\0') && (puVar4 != (undefined4 *)0x0)) {
|
|
|
|
operator_delete(puVar4);
|
|
|
|
}
|
|
|
|
iVar2 = FUN_005df0f5(0x114);
|
|
|
|
if (iVar2 == 0) {
|
|
|
|
uVar3 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar3 = FUN_004fd0a0(&LAB_004fb7e0,0x28);
|
|
|
|
}
|
|
|
|
puVar4 = (undefined4 *)FUN_005df0f5(0xc);
|
|
|
|
if (puVar4 == (undefined4 *)0x0) {
|
|
|
|
puVar4 = (undefined4 *)0x0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
puVar4[2] = uVar3;
|
|
|
|
*puVar4 = 0x28;
|
|
|
|
puVar4[1] = 0;
|
|
|
|
}
|
|
|
|
cVar1 = FUN_0042bd40(puVar4);
|
|
|
|
if ((cVar1 == '\0') && (puVar4 != (undefined4 *)0x0)) {
|
|
|
|
operator_delete(puVar4);
|
|
|
|
}
|
|
|
|
iVar2 = FUN_005df0f5(0x114);
|
|
|
|
if (iVar2 == 0) {
|
|
|
|
uVar3 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar3 = FUN_004fd0a0(FUN_004f7e70,0x29);
|
|
|
|
}
|
|
|
|
puVar4 = (undefined4 *)FUN_005df0f5(0xc);
|
|
|
|
if (puVar4 == (undefined4 *)0x0) {
|
|
|
|
puVar4 = (undefined4 *)0x0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
puVar4[2] = uVar3;
|
|
|
|
*puVar4 = 0x29;
|
|
|
|
puVar4[1] = 0;
|
|
|
|
}
|
|
|
|
cVar1 = FUN_0042bd40(puVar4);
|
|
|
|
if ((cVar1 == '\0') && (puVar4 != (undefined4 *)0x0)) {
|
|
|
|
operator_delete(puVar4);
|
|
|
|
}
|
|
|
|
iVar2 = FUN_005df0f5(0x114);
|
|
|
|
if (iVar2 == 0) {
|
|
|
|
uVar3 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar3 = FUN_004fd0a0(FUN_004f7e90,0x2a);
|
|
|
|
}
|
|
|
|
puVar4 = (undefined4 *)FUN_005df0f5(0xc);
|
|
|
|
if (puVar4 == (undefined4 *)0x0) {
|
|
|
|
puVar4 = (undefined4 *)0x0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
puVar4[2] = uVar3;
|
|
|
|
*puVar4 = 0x2a;
|
|
|
|
puVar4[1] = 0;
|
|
|
|
}
|
|
|
|
cVar1 = FUN_0042bd40(puVar4);
|
|
|
|
if ((cVar1 == '\0') && (puVar4 != (undefined4 *)0x0)) {
|
|
|
|
operator_delete(puVar4);
|
|
|
|
}
|
|
|
|
iVar2 = FUN_005df0f5(0x114);
|
|
|
|
if (iVar2 == 0) {
|
|
|
|
uVar3 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar3 = FUN_004fd0a0(FUN_004f7eb0,0x2b);
|
|
|
|
}
|
|
|
|
puVar4 = (undefined4 *)FUN_005df0f5(0xc);
|
|
|
|
if (puVar4 == (undefined4 *)0x0) {
|
|
|
|
puVar4 = (undefined4 *)0x0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
puVar4[2] = uVar3;
|
|
|
|
*puVar4 = 0x2b;
|
|
|
|
puVar4[1] = 0;
|
|
|
|
}
|
|
|
|
cVar1 = FUN_0042bd40(puVar4);
|
|
|
|
if ((cVar1 == '\0') && (puVar4 != (undefined4 *)0x0)) {
|
|
|
|
operator_delete(puVar4);
|
|
|
|
}
|
|
|
|
iVar2 = FUN_005df0f5(0x114);
|
|
|
|
if (iVar2 == 0) {
|
|
|
|
uVar3 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar3 = FUN_004fd0a0(&LAB_004f7ed0,0x2c);
|
|
|
|
}
|
|
|
|
puVar4 = (undefined4 *)FUN_005df0f5(0xc);
|
|
|
|
if (puVar4 == (undefined4 *)0x0) {
|
|
|
|
puVar4 = (undefined4 *)0x0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
puVar4[2] = uVar3;
|
|
|
|
*puVar4 = 0x2c;
|
|
|
|
puVar4[1] = 0;
|
|
|
|
}
|
|
|
|
cVar1 = FUN_0042bd40(puVar4);
|
|
|
|
if ((cVar1 == '\0') && (puVar4 != (undefined4 *)0x0)) {
|
|
|
|
operator_delete(puVar4);
|
|
|
|
}
|
|
|
|
iVar2 = FUN_005df0f5(0x114);
|
|
|
|
if (iVar2 == 0) {
|
|
|
|
uVar3 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar3 = FUN_004fd0a0(&LAB_00428f50,0x2d);
|
|
|
|
}
|
|
|
|
puVar4 = (undefined4 *)FUN_005df0f5(0xc);
|
|
|
|
if (puVar4 == (undefined4 *)0x0) {
|
|
|
|
puVar4 = (undefined4 *)0x0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
puVar4[2] = uVar3;
|
|
|
|
*puVar4 = 0x2d;
|
|
|
|
puVar4[1] = 0;
|
|
|
|
}
|
|
|
|
cVar1 = FUN_0042bd40(puVar4);
|
|
|
|
if ((cVar1 == '\0') && (puVar4 != (undefined4 *)0x0)) {
|
|
|
|
operator_delete(puVar4);
|
|
|
|
}
|
|
|
|
iVar2 = FUN_005df0f5(0x114);
|
|
|
|
if (iVar2 == 0) {
|
|
|
|
uVar3 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar3 = FUN_004fd0a0(&LAB_004f8270,0x2e);
|
|
|
|
}
|
|
|
|
puVar4 = (undefined4 *)FUN_005df0f5(0xc);
|
|
|
|
if (puVar4 == (undefined4 *)0x0) {
|
|
|
|
puVar4 = (undefined4 *)0x0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
puVar4[2] = uVar3;
|
|
|
|
*puVar4 = 0x2e;
|
|
|
|
puVar4[1] = 0;
|
|
|
|
}
|
|
|
|
cVar1 = FUN_0042bd40(puVar4);
|
|
|
|
if ((cVar1 == '\0') && (puVar4 != (undefined4 *)0x0)) {
|
|
|
|
operator_delete(puVar4);
|
|
|
|
}
|
|
|
|
iVar2 = FUN_005df0f5(0x114);
|
|
|
|
if (iVar2 == 0) {
|
|
|
|
uVar3 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar3 = FUN_004fd0a0(&LAB_004f8800,0x2f);
|
|
|
|
}
|
|
|
|
puVar4 = (undefined4 *)FUN_005df0f5(0xc);
|
|
|
|
if (puVar4 == (undefined4 *)0x0) {
|
|
|
|
puVar4 = (undefined4 *)0x0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
puVar4[2] = uVar3;
|
|
|
|
*puVar4 = 0x2f;
|
|
|
|
puVar4[1] = 0;
|
|
|
|
}
|
|
|
|
cVar1 = FUN_0042bd40(puVar4);
|
|
|
|
if ((cVar1 == '\0') && (puVar4 != (undefined4 *)0x0)) {
|
|
|
|
operator_delete(puVar4);
|
|
|
|
}
|
|
|
|
iVar2 = FUN_005df0f5(0x114);
|
|
|
|
if (iVar2 == 0) {
|
|
|
|
uVar3 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar3 = FUN_004fd0a0(&LAB_004224d0,0x30);
|
|
|
|
}
|
|
|
|
puVar4 = (undefined4 *)FUN_005df0f5(0xc);
|
|
|
|
if (puVar4 == (undefined4 *)0x0) {
|
|
|
|
puVar4 = (undefined4 *)0x0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
puVar4[2] = uVar3;
|
|
|
|
*puVar4 = 0x30;
|
|
|
|
puVar4[1] = 0;
|
|
|
|
}
|
|
|
|
cVar1 = FUN_0042bd40(puVar4);
|
|
|
|
if ((cVar1 == '\0') && (puVar4 != (undefined4 *)0x0)) {
|
|
|
|
operator_delete(puVar4);
|
|
|
|
}
|
|
|
|
iVar2 = FUN_005df0f5(0x114);
|
|
|
|
if (iVar2 == 0) {
|
|
|
|
uVar3 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar3 = FUN_004fd0a0(FUN_004f7ef0,0x31);
|
|
|
|
}
|
|
|
|
puVar4 = (undefined4 *)FUN_005df0f5(0xc);
|
|
|
|
if (puVar4 == (undefined4 *)0x0) {
|
|
|
|
puVar4 = (undefined4 *)0x0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
puVar4[2] = uVar3;
|
|
|
|
*puVar4 = 0x31;
|
|
|
|
puVar4[1] = 0;
|
|
|
|
}
|
|
|
|
cVar1 = FUN_0042bd40(puVar4);
|
|
|
|
if ((cVar1 == '\0') && (puVar4 != (undefined4 *)0x0)) {
|
|
|
|
operator_delete(puVar4);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004fc9d0 at 0x004FC9D0 (size: 442) ---
|
|
|
|
|
|
void __fastcall FUN_004fc9d0(undefined4 *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
LONG LVar1;
|
|
|
|
uint uVar2;
|
|
|
|
undefined4 *puVar3;
|
|
|
|
|
|
|
|
*param_1 = &PTR_LAB_007c6a18;
|
|
|
|
param_1[1] = &PTR_LAB_007e4258;
|
|
|
|
param_1[0x4c] = &PTR_LAB_007c6a08;
|
|
|
|
FUN_00415040();
|
|
|
|
uVar2 = 0;
|
|
|
|
if (param_1[0x7a] != 0) {
|
|
|
|
do {
|
|
|
|
puVar3 = *(undefined4 **)(param_1[0x78] + uVar2 * 4);
|
|
|
|
if (puVar3 != (undefined4 *)0x0) {
|
|
|
|
(**(code **)*puVar3)(1);
|
|
|
|
}
|
|
|
|
*(undefined4 *)(param_1[0x78] + uVar2 * 4) = 0;
|
|
|
|
uVar2 = uVar2 + 1;
|
|
|
|
} while (uVar2 < (uint)param_1[0x7a]);
|
|
|
|
}
|
|
|
|
puVar3 = (undefined4 *)(param_1[0xc1] + -0x14);
|
|
|
|
param_1[0x7a] = 0;
|
|
|
|
LVar1 = InterlockedDecrement((LONG *)(param_1[0xc1] + -0x10));
|
|
|
|
if ((LVar1 == 0) && (puVar3 != (undefined4 *)0x0)) {
|
|
|
|
(**(code **)*puVar3)(1);
|
|
|
|
}
|
|
|
|
if (((param_1[0xbc] & 0x80000000) == 0x80000000) && (param_1[0xbb] != 0)) {
|
|
|
|
operator_delete__((void *)(param_1[0xbb] + -4));
|
|
|
|
}
|
|
|
|
param_1[0x9e] = &PTR_FUN_007c698c;
|
|
|
|
FUN_0041a390();
|
|
|
|
param_1[0x9f] = &PTR_FUN_007c6838;
|
|
|
|
if ((undefined4 *)param_1[0xb7] != param_1 + 0xa0) {
|
|
|
|
operator_delete__((undefined4 *)param_1[0xb7]);
|
|
|
|
}
|
|
|
|
param_1[0xb7] = 0;
|
|
|
|
param_1[0xb8] = 0;
|
|
|
|
param_1[0xb9] = 0;
|
|
|
|
param_1[0xba] = 0;
|
|
|
|
param_1[0x81] = &PTR_FUN_007c6994;
|
|
|
|
FUN_0041a390();
|
|
|
|
param_1[0x82] = &PTR_FUN_007c6834;
|
|
|
|
if ((undefined4 *)param_1[0x9a] != param_1 + 0x83) {
|
|
|
|
operator_delete__((undefined4 *)param_1[0x9a]);
|
|
|
|
}
|
|
|
|
param_1[0x9a] = 0;
|
|
|
|
param_1[0x9b] = 0;
|
|
|
|
param_1[0x9c] = 0;
|
|
|
|
param_1[0x9d] = 0;
|
|
|
|
if (((param_1[0x7f] & 0x80000000) == 0x80000000) && (param_1[0x7e] != 0)) {
|
|
|
|
FUN_004f8f80(3);
|
|
|
|
}
|
|
|
|
if ((param_1[0x79] & 0x80000000) == 0x80000000) {
|
|
|
|
operator_delete__((void *)param_1[0x78]);
|
|
|
|
}
|
|
|
|
uVar2 = 0;
|
|
|
|
if (param_1[0x77] != 0) {
|
|
|
|
do {
|
|
|
|
*(undefined4 *)(*(int *)(param_1[0x75] + uVar2 * 4) + 4) = 0;
|
|
|
|
uVar2 = uVar2 + 1;
|
|
|
|
} while (uVar2 < (uint)param_1[0x77]);
|
|
|
|
}
|
|
|
|
param_1[0x77] = 0;
|
|
|
|
if ((param_1[0x76] & 0x80000000) == 0x80000000) {
|
|
|
|
operator_delete__((void *)param_1[0x75]);
|
|
|
|
}
|
|
|
|
FUN_004fa5c0();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004fcf30 at 0x004FCF30 (size: 82) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_004fcf30(undefined4 *param_1,byte param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
*param_1 = &PTR_FUN_007c6994;
|
|
|
|
FUN_0041a390();
|
|
|
|
param_1[1] = &PTR_FUN_007c6834;
|
|
|
|
if ((undefined4 *)param_1[0x19] != param_1 + 2) {
|
|
|
|
operator_delete__((undefined4 *)param_1[0x19]);
|
|
|
|
}
|
|
|
|
param_1[0x19] = 0;
|
|
|
|
param_1[0x1a] = 0;
|
|
|
|
param_1[0x1b] = 0;
|
|
|
|
param_1[0x1c] = 0;
|
|
|
|
if ((param_2 & 1) != 0) {
|
|
|
|
operator_delete(param_1);
|
|
|
|
}
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004fcf90 at 0x004FCF90 (size: 225) ---
|
|
|
|
|
|
undefined4 * __fastcall FUN_004fcf90(undefined4 *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
LONG *lpAddend;
|
|
|
|
|
|
|
|
FUN_00678b50();
|
|
|
|
param_1[0x75] = 0;
|
|
|
|
param_1[0x76] = 0;
|
|
|
|
param_1[0x77] = 0;
|
|
|
|
*param_1 = &PTR_LAB_007c6a18;
|
|
|
|
param_1[1] = &PTR_LAB_007e4258;
|
|
|
|
param_1[0x4c] = &PTR_LAB_007c6a08;
|
|
|
|
param_1[0x78] = 0;
|
|
|
|
param_1[0x79] = 0;
|
|
|
|
param_1[0x7a] = 0;
|
|
|
|
*(undefined1 *)(param_1 + 0x7b) = 1;
|
|
|
|
param_1[0x7c] = 0;
|
|
|
|
param_1[0x7e] = 0;
|
|
|
|
param_1[0x7f] = 0;
|
|
|
|
param_1[0x80] = 0;
|
|
|
|
param_1[0x81] = &PTR_FUN_007c6994;
|
|
|
|
FUN_004f9e10(0);
|
|
|
|
param_1[0x81] = &PTR_FUN_007c6994;
|
|
|
|
param_1[0x9e] = &PTR_FUN_007c698c;
|
|
|
|
FUN_004f9cf0(0x17);
|
|
|
|
param_1[0xbb] = 0;
|
|
|
|
param_1[0xbc] = 0;
|
|
|
|
param_1[0xbd] = 0;
|
|
|
|
param_1[0xbf] = 1;
|
|
|
|
param_1[0xc0] = 0;
|
|
|
|
lpAddend = (LONG *)(PTR_DAT_00818340 + -0x10);
|
|
|
|
param_1[0xc1] = PTR_DAT_00818340;
|
|
|
|
InterlockedIncrement(lpAddend);
|
|
|
|
*(undefined1 *)((int)param_1 + 0x129) = 1;
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004fd080 at 0x004FD080 (size: 30) ---
|
|
|
|
|
|
void * __thiscall FUN_004fd080(void *param_1,byte param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_004fc9d0();
|
|
|
|
if ((param_2 & 1) != 0) {
|
|
|
|
operator_delete(param_1);
|
|
|
|
}
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004fd0a0 at 0x004FD0A0 (size: 32) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_004fd0a0(undefined4 *param_1,undefined4 param_2,undefined4 param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_00417510(param_2,param_3);
|
|
|
|
*param_1 = &PTR_FUN_007c6a98;
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- thunk_FUN_00693860 at 0x004FD0C0 (size: 5) ---
|
|
|
|
|
|
undefined4 thunk_FUN_00693860(void)
|
|
|
|
|
|
|
|
{
|
|
|
|
int *piVar1;
|
|
|
|
int *piVar2;
|
|
|
|
int iVar3;
|
|
|
|
undefined4 unaff_retaddr;
|
|
|
|
|
|
|
|
piVar2 = (int *)FUN_0043c680();
|
|
|
|
iVar3 = (**(code **)(*piVar2 + 0x10))(0x186a9);
|
|
|
|
if (iVar3 != 0) {
|
|
|
|
piVar2 = *(int **)(iVar3 + 4);
|
|
|
|
while (piVar2 != (int *)0x0) {
|
|
|
|
piVar1 = (int *)*piVar2;
|
|
|
|
piVar2 = (int *)piVar2[1];
|
|
|
|
if (piVar1 != (int *)0x0) {
|
|
|
|
(**(code **)(*piVar1 + 0x14))(unaff_retaddr);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- thunk_FUN_00693910 at 0x004FD0D0 (size: 5) ---
|
|
|
|
|
|
undefined4 thunk_FUN_00693910(undefined4 param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int *piVar1;
|
|
|
|
int *piVar2;
|
|
|
|
int iVar3;
|
|
|
|
undefined4 unaff_retaddr;
|
|
|
|
|
|
|
|
piVar2 = (int *)FUN_0043c680();
|
|
|
|
iVar3 = (**(code **)(*piVar2 + 0x10))(0x186aa);
|
|
|
|
if (iVar3 != 0) {
|
|
|
|
piVar2 = *(int **)(iVar3 + 4);
|
|
|
|
while (piVar2 != (int *)0x0) {
|
|
|
|
piVar1 = (int *)*piVar2;
|
|
|
|
piVar2 = (int *)piVar2[1];
|
|
|
|
if (piVar1 != (int *)0x0) {
|
|
|
|
(**(code **)(*piVar1 + 0x1c))(unaff_retaddr,param_1);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- thunk_FUN_00693810 at 0x004FD0E0 (size: 5) ---
|
|
|
|
|
|
undefined4 thunk_FUN_00693810(undefined4 param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int *piVar1;
|
|
|
|
int *piVar2;
|
|
|
|
int iVar3;
|
|
|
|
undefined4 unaff_retaddr;
|
|
|
|
|
|
|
|
piVar2 = (int *)FUN_0043c680();
|
|
|
|
iVar3 = (**(code **)(*piVar2 + 0x10))(0x186ab);
|
|
|
|
if (iVar3 != 0) {
|
|
|
|
piVar2 = *(int **)(iVar3 + 4);
|
|
|
|
while (piVar2 != (int *)0x0) {
|
|
|
|
piVar1 = (int *)*piVar2;
|
|
|
|
piVar2 = (int *)piVar2[1];
|
|
|
|
if (piVar1 != (int *)0x0) {
|
|
|
|
(**(code **)(*piVar1 + 0x10))(unaff_retaddr,param_1);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004fd0f0 at 0x004FD0F0 (size: 83) ---
|
|
|
|
|
|
void FUN_004fd0f0(undefined4 param_1,int param_2,undefined4 param_3,undefined4 param_4,int param_5,
|
|
|
|
undefined4 param_6,undefined4 param_7,undefined4 param_8)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_006938a0(param_1,param_2,param_3,param_4,param_5,param_6,param_7,param_8);
|
|
|
|
if (param_2 != 0) {
|
|
|
|
FUN_00693810(param_2,0);
|
|
|
|
}
|
|
|
|
if (param_5 != 0) {
|
|
|
|
FUN_00693810(param_5,0);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004fd150 at 0x004FD150 (size: 7) ---
|
|
|
|
|
|
void __fastcall FUN_004fd150(undefined4 *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
*param_1 = &PTR_LAB_007c6b24;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004fd160 at 0x004FD160 (size: 11) ---
|
|
|
|
|
|
void FUN_004fd160(void)
|
|
|
|
|
|
|
|
{
|
|
|
|
DAT_00842454 = 0;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004fd170 at 0x004FD170 (size: 14) ---
|
|
|
|
|
|
void __fastcall FUN_004fd170(undefined4 *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
*param_1 = &PTR_LAB_007c6b24;
|
|
|
|
DAT_00842454 = param_1;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004fd180 at 0x004FD180 (size: 40) ---
|
|
|
|
|
|
undefined4 FUN_004fd180(undefined4 *param_1,int *param_2,uint *param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
if (*param_3 < 4) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
*param_1 = *(undefined4 *)*param_2;
|
|
|
|
*param_2 = *param_2 + 4;
|
|
|
|
*param_3 = *param_3 - 4;
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004fd1b0 at 0x004FD1B0 (size: 51) ---
|
|
|
|
|
|
int FUN_004fd1b0(uint *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
uint uVar2;
|
|
|
|
int iVar3;
|
|
|
|
|
|
|
|
uVar2 = *param_1 & 0x80000003;
|
|
|
|
if ((int)uVar2 < 0) {
|
|
|
|
uVar2 = (uVar2 - 1 | 0xfffffffc) + 1;
|
|
|
|
}
|
|
|
|
if ((uVar2 != 0) && (iVar1 = 4 - uVar2, iVar3 = iVar1, iVar1 != 0)) {
|
|
|
|
do {
|
|
|
|
*(undefined1 *)*param_1 = 0;
|
|
|
|
iVar3 = iVar3 + -1;
|
|
|
|
*param_1 = *param_1 + 1;
|
|
|
|
} while (iVar3 != 0);
|
|
|
|
return iVar1;
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004fd1f0 at 0x004FD1F0 (size: 46) ---
|
|
|
|
|
|
uint __fastcall FUN_004fd1f0(int *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
uint uVar1;
|
|
|
|
int iVar2;
|
|
|
|
|
|
|
|
uVar1 = *(int *)(*param_1 + 8) - 1;
|
|
|
|
iVar2 = 0;
|
|
|
|
if (0xfffe < uVar1) {
|
|
|
|
iVar2 = 4;
|
|
|
|
}
|
|
|
|
uVar1 = iVar2 + 2 + uVar1;
|
|
|
|
if ((uVar1 & 3) != 0) {
|
|
|
|
return (4 - (uVar1 & 3)) + uVar1;
|
|
|
|
}
|
|
|
|
return uVar1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004fd220 at 0x004FD220 (size: 106) ---
|
|
|
|
|
|
void __fastcall FUN_004fd220(int *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
uint uVar1;
|
|
|
|
int iVar2;
|
|
|
|
void *pvVar3;
|
|
|
|
undefined4 *puVar4;
|
|
|
|
uint uVar5;
|
|
|
|
LONG LVar6;
|
|
|
|
|
|
|
|
uVar1 = param_1[2];
|
|
|
|
while (uVar1 = uVar1 - 1, -1 < (int)uVar1) {
|
|
|
|
iVar2 = *param_1;
|
|
|
|
pvVar3 = *(void **)(iVar2 + uVar1 * 4);
|
|
|
|
if (uVar1 < (uint)param_1[2]) {
|
|
|
|
uVar5 = param_1[2] - 1;
|
|
|
|
param_1[2] = uVar5;
|
|
|
|
if (uVar1 != uVar5) {
|
|
|
|
*(undefined4 *)(iVar2 + uVar1 * 4) = *(undefined4 *)(iVar2 + uVar5 * 4);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (pvVar3 != (void *)0x0) {
|
|
|
|
FUN_004fd220();
|
|
|
|
operator_delete(pvVar3);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
puVar4 = (undefined4 *)param_1[3];
|
|
|
|
LVar6 = InterlockedDecrement(puVar4 + 1);
|
|
|
|
if ((LVar6 == 0) && (puVar4 != (undefined4 *)0x0)) {
|
|
|
|
(**(code **)*puVar4)(1);
|
|
|
|
}
|
|
|
|
operator_delete__((void *)*param_1);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004fd290 at 0x004FD290 (size: 205) ---
|
|
|
|
|
|
uint __thiscall FUN_004fd290(int *param_1,int *param_2,uint param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
uint uVar1;
|
|
|
|
undefined4 *puVar2;
|
|
|
|
int iVar3;
|
|
|
|
uint uVar4;
|
|
|
|
LONG LVar5;
|
|
|
|
uint uVar6;
|
|
|
|
undefined4 *puVar7;
|
|
|
|
undefined4 *puVar8;
|
|
|
|
|
|
|
|
uVar6 = *(int *)(*param_1 + 8) - 1;
|
|
|
|
iVar3 = 0;
|
|
|
|
if (0xfffe < uVar6) {
|
|
|
|
iVar3 = 4;
|
|
|
|
}
|
|
|
|
uVar1 = iVar3 + 2 + uVar6;
|
|
|
|
uVar4 = uVar1 & 3;
|
|
|
|
if (uVar4 == 0) {
|
|
|
|
iVar3 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar3 = 4 - uVar4;
|
|
|
|
}
|
|
|
|
uVar1 = iVar3 + uVar1;
|
|
|
|
if (uVar1 <= param_3) {
|
|
|
|
uVar4 = uVar6;
|
|
|
|
if (0xfffe < uVar6) {
|
|
|
|
uVar4 = 0xffff;
|
|
|
|
}
|
|
|
|
*(short *)*param_2 = (short)uVar4;
|
|
|
|
iVar3 = *param_2;
|
|
|
|
*param_2 = iVar3 + 2;
|
|
|
|
if ((short)uVar4 == -1) {
|
|
|
|
*(uint *)(iVar3 + 2) = uVar6;
|
|
|
|
*param_2 = *param_2 + 4;
|
|
|
|
}
|
|
|
|
puVar2 = (undefined4 *)*param_1;
|
|
|
|
InterlockedIncrement(puVar2 + 1);
|
|
|
|
puVar7 = puVar2 + 5;
|
|
|
|
puVar8 = (undefined4 *)*param_2;
|
|
|
|
for (uVar4 = uVar6 >> 2; uVar4 != 0; uVar4 = uVar4 - 1) {
|
|
|
|
*puVar8 = *puVar7;
|
|
|
|
puVar7 = puVar7 + 1;
|
|
|
|
puVar8 = puVar8 + 1;
|
|
|
|
}
|
|
|
|
for (uVar4 = uVar6 & 3; uVar4 != 0; uVar4 = uVar4 - 1) {
|
|
|
|
*(undefined1 *)puVar8 = *(undefined1 *)puVar7;
|
|
|
|
puVar7 = (undefined4 *)((int)puVar7 + 1);
|
|
|
|
puVar8 = (undefined4 *)((int)puVar8 + 1);
|
|
|
|
}
|
|
|
|
*param_2 = *param_2 + uVar6;
|
|
|
|
FUN_004fd1b0(param_2);
|
|
|
|
LVar5 = InterlockedDecrement(puVar2 + 1);
|
|
|
|
if ((LVar5 == 0) && (puVar2 != (undefined4 *)0x0)) {
|
|
|
|
(**(code **)*puVar2)(1);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return uVar1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004fd360 at 0x004FD360 (size: 81) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_004fd360(undefined4 *param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
LONG *lpAddend;
|
|
|
|
|
|
|
|
param_1[0xe] = 0;
|
|
|
|
param_1[0xf] = 0;
|
|
|
|
param_1[0x10] = 0;
|
|
|
|
lpAddend = (LONG *)(DAT_008ef11c + 4);
|
|
|
|
param_1[0x11] = DAT_008ef11c;
|
|
|
|
InterlockedIncrement(lpAddend);
|
|
|
|
param_1[0x12] = DAT_00842460;
|
|
|
|
FUN_00415460(param_2);
|
|
|
|
param_1[0xc] = &PTR_FUN_0079385c;
|
|
|
|
*param_1 = &PTR_LAB_007c6b68;
|
|
|
|
param_1[0xc] = &PTR_LAB_007c6b54;
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004fd3d0 at 0x004FD3D0 (size: 142) ---
|
|
|
|
|
|
uint __thiscall FUN_004fd3d0(int param_1,uint *param_2,uint param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
uint uVar1;
|
|
|
|
int iVar2;
|
|
|
|
uint uVar3;
|
|
|
|
|
|
|
|
uVar1 = FUN_004fd590();
|
|
|
|
if (uVar1 <= param_3) {
|
|
|
|
FUN_004fd290(param_2,param_3);
|
|
|
|
*(undefined4 *)*param_2 = *(undefined4 *)(param_1 + 0x10);
|
|
|
|
uVar3 = *param_2;
|
|
|
|
*param_2 = uVar3 + 4;
|
|
|
|
*(undefined4 *)(uVar3 + 4) = *(undefined4 *)(param_1 + 8);
|
|
|
|
*param_2 = *param_2 + 4;
|
|
|
|
uVar3 = 0;
|
|
|
|
if (*(int *)(param_1 + 8) != 0) {
|
|
|
|
do {
|
|
|
|
FUN_004fd3d0(param_2,param_3);
|
|
|
|
uVar3 = uVar3 + 1;
|
|
|
|
} while (uVar3 < *(uint *)(param_1 + 8));
|
|
|
|
}
|
|
|
|
uVar3 = *param_2 & 0x80000003;
|
|
|
|
if ((int)uVar3 < 0) {
|
|
|
|
uVar3 = (uVar3 - 1 | 0xfffffffc) + 1;
|
|
|
|
}
|
|
|
|
if (uVar3 != 0) {
|
|
|
|
for (iVar2 = 4 - uVar3; iVar2 != 0; iVar2 = iVar2 + -1) {
|
|
|
|
*(undefined1 *)*param_2 = 0;
|
|
|
|
*param_2 = *param_2 + 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return uVar1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004fd460 at 0x004FD460 (size: 237) ---
|
|
|
|
|
|
undefined4 __thiscall FUN_004fd460(int *param_1,uint *param_2,uint param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
ushort uVar1;
|
|
|
|
ushort *puVar2;
|
|
|
|
int iVar3;
|
|
|
|
uint uVar4;
|
|
|
|
uint uVar5;
|
|
|
|
undefined4 *puVar6;
|
|
|
|
undefined4 *puVar7;
|
|
|
|
|
|
|
|
if (param_3 < 2) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
puVar2 = (ushort *)*param_2;
|
|
|
|
uVar1 = *puVar2;
|
|
|
|
uVar4 = param_3 - 2;
|
|
|
|
*param_2 = (uint)(puVar2 + 1);
|
|
|
|
uVar5 = (uint)uVar1;
|
|
|
|
if (uVar1 == 0xffff) {
|
|
|
|
if (uVar4 < 4) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
uVar5 = *(uint *)(puVar2 + 1);
|
|
|
|
*param_2 = (uint)(puVar2 + 3);
|
|
|
|
uVar4 = param_3 - 6;
|
|
|
|
}
|
|
|
|
if (uVar4 < uVar5) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
if (uVar5 == 0) {
|
|
|
|
FUN_004ab990();
|
|
|
|
}
|
|
|
|
else if ((uVar5 == 1) && (*(char *)*param_2 == '\0')) {
|
|
|
|
FUN_0048a0a0(&DAT_008ef120);
|
|
|
|
*param_2 = *param_2 + 1;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
FUN_004010a0();
|
|
|
|
FUN_00403560(uVar5);
|
|
|
|
puVar6 = (undefined4 *)*param_2;
|
|
|
|
puVar7 = (undefined4 *)(*param_1 + 0x14);
|
|
|
|
for (uVar4 = uVar5 >> 2; uVar4 != 0; uVar4 = uVar4 - 1) {
|
|
|
|
*puVar7 = *puVar6;
|
|
|
|
puVar6 = puVar6 + 1;
|
|
|
|
puVar7 = puVar7 + 1;
|
|
|
|
}
|
|
|
|
for (uVar4 = uVar5 & 3; uVar4 != 0; uVar4 = uVar4 - 1) {
|
|
|
|
*(undefined1 *)puVar7 = *(undefined1 *)puVar6;
|
|
|
|
puVar6 = (undefined4 *)((int)puVar6 + 1);
|
|
|
|
puVar7 = (undefined4 *)((int)puVar7 + 1);
|
|
|
|
}
|
|
|
|
*param_2 = *param_2 + uVar5;
|
|
|
|
*(undefined1 *)(*(int *)(*param_1 + 8) + 0x13 + *param_1) = 0;
|
|
|
|
iVar3 = *param_1;
|
|
|
|
if (*(char *)(*(int *)(iVar3 + 8) + 0x12 + iVar3) == '\0') {
|
|
|
|
*(int *)(iVar3 + 8) = *(int *)(iVar3 + 8) + -1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
uVar5 = *param_2 & 0x80000003;
|
|
|
|
if ((int)uVar5 < 0) {
|
|
|
|
uVar5 = (uVar5 - 1 | 0xfffffffc) + 1;
|
|
|
|
}
|
|
|
|
if (uVar5 != 0) {
|
|
|
|
*param_2 = (*param_2 - uVar5) + 4;
|
|
|
|
}
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004fd560 at 0x004FD560 (size: 46) ---
|
|
|
|
|
|
void * __thiscall FUN_004fd560(void *param_1,byte param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_004f8190();
|
|
|
|
FUN_004fd220();
|
|
|
|
if ((param_2 & 1) != 0) {
|
|
|
|
operator_delete(param_1);
|
|
|
|
}
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004fd590 at 0x004FD590 (size: 102) ---
|
|
|
|
|
|
uint __fastcall FUN_004fd590(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
uint uVar2;
|
|
|
|
uint uVar3;
|
|
|
|
undefined4 local_4;
|
|
|
|
|
|
|
|
local_4 = 0;
|
|
|
|
iVar1 = FUN_004fd290(&local_4,0);
|
|
|
|
uVar2 = iVar1 + 8;
|
|
|
|
uVar3 = 0;
|
|
|
|
if (*(int *)(param_1 + 8) != 0) {
|
|
|
|
do {
|
|
|
|
iVar1 = FUN_004fd3d0(&local_4,0);
|
|
|
|
uVar2 = uVar2 + iVar1;
|
|
|
|
uVar3 = uVar3 + 1;
|
|
|
|
} while (uVar3 < *(uint *)(param_1 + 8));
|
|
|
|
}
|
|
|
|
if ((uVar2 & 3) == 0) {
|
|
|
|
return uVar2;
|
|
|
|
}
|
|
|
|
return (4 - (uVar2 & 3)) + uVar2;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004fd600 at 0x004FD600 (size: 274) ---
|
|
|
|
|
|
undefined4 __thiscall FUN_004fd600(int *param_1,uint *param_2,uint param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
uint *puVar1;
|
|
|
|
uint uVar2;
|
|
|
|
undefined4 *puVar3;
|
|
|
|
int iVar4;
|
|
|
|
uint uVar5;
|
|
|
|
LONG *lpAddend;
|
|
|
|
|
|
|
|
puVar1 = param_2;
|
|
|
|
uVar5 = *param_2;
|
|
|
|
uVar2 = FUN_004fd590();
|
|
|
|
if (uVar2 <= param_3) {
|
|
|
|
FUN_004fd460(param_2,param_3);
|
|
|
|
iVar4 = *(int *)*param_2;
|
|
|
|
*param_2 = (uint)((int *)*param_2 + 1);
|
|
|
|
param_1[4] = iVar4;
|
|
|
|
iVar4 = *(int *)*param_2;
|
|
|
|
*param_2 = (uint)((int *)*param_2 + 1);
|
|
|
|
param_2 = (uint *)iVar4;
|
|
|
|
if (0 < iVar4) {
|
|
|
|
do {
|
|
|
|
puVar3 = (undefined4 *)FUN_005df0f5(0x14);
|
|
|
|
if (puVar3 == (undefined4 *)0x0) {
|
|
|
|
puVar3 = (undefined4 *)0x0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*puVar3 = 0;
|
|
|
|
puVar3[1] = 0;
|
|
|
|
puVar3[2] = 0;
|
|
|
|
lpAddend = (LONG *)(DAT_008ef11c + 4);
|
|
|
|
puVar3[3] = DAT_008ef11c;
|
|
|
|
InterlockedIncrement(lpAddend);
|
|
|
|
puVar3[4] = DAT_00842460;
|
|
|
|
}
|
|
|
|
FUN_004fd600(puVar1,param_3);
|
|
|
|
uVar2 = param_1[1];
|
|
|
|
if ((uint)param_1[2] < uVar2) {
|
|
|
|
LAB_004fd6b5:
|
|
|
|
*(undefined4 **)(*param_1 + param_1[2] * 4) = puVar3;
|
|
|
|
param_1[2] = param_1[2] + 1;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
if (uVar2 == 0) {
|
|
|
|
iVar4 = 8;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar4 = uVar2 * 2;
|
|
|
|
}
|
|
|
|
iVar4 = FUN_00500570(iVar4);
|
|
|
|
if (iVar4 != 0) goto LAB_004fd6b5;
|
|
|
|
}
|
|
|
|
param_2 = (uint *)((int)param_2 + -1);
|
|
|
|
} while (param_2 != (uint *)0x0);
|
|
|
|
}
|
|
|
|
if (*puVar1 - uVar5 <= param_3) {
|
|
|
|
uVar5 = *puVar1 & 0x80000003;
|
|
|
|
if ((int)uVar5 < 0) {
|
|
|
|
uVar5 = (uVar5 - 1 | 0xfffffffc) + 1;
|
|
|
|
}
|
|
|
|
if (uVar5 != 0) {
|
|
|
|
for (iVar4 = 4 - uVar5; iVar4 != 0; iVar4 = iVar4 + -1) {
|
|
|
|
*(undefined1 *)*puVar1 = 0;
|
|
|
|
*puVar1 = *puVar1 + 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
*puVar1 = uVar5;
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004fd750 at 0x004FD750 (size: 68) ---
|
|
|
|
|
|
undefined4 FUN_004fd750(int *param_1,uint param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
uint uVar2;
|
|
|
|
|
|
|
|
iVar1 = *param_1;
|
|
|
|
uVar2 = FUN_004fd590();
|
|
|
|
if (uVar2 <= param_2) {
|
|
|
|
FUN_004fd600(param_1,param_2);
|
|
|
|
if ((uint)(*param_1 - iVar1) <= param_2) {
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
*param_1 = iVar1;
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004fd7a0 at 0x004FD7A0 (size: 56) ---
|
|
|
|
|
|
int FUN_004fd7a0(int param_1,int param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
if (param_1 < 1) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
param_2 = param_2 * 0x1e;
|
|
|
|
if (param_2 < 0) {
|
|
|
|
return param_1 * 0x96;
|
|
|
|
}
|
|
|
|
if (0x96 < param_2) {
|
|
|
|
param_2 = 0x96;
|
|
|
|
}
|
|
|
|
return param_2 * param_1 + param_1 * 0x96;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004fd7e0 at 0x004FD7E0 (size: 39) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
float10 FUN_004fd7e0(int param_1,int param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
if (param_1 < 1) {
|
|
|
|
return (float10)_DAT_007c6bc0;
|
|
|
|
}
|
|
|
|
if (param_2 < 0) {
|
|
|
|
return (float10)DAT_00796344;
|
|
|
|
}
|
|
|
|
return (float10)param_2 / (float10)param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004fd810 at 0x004FD810 (size: 59) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
float10 FUN_004fd810(float param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
if (param_1 < _DAT_007938b0) {
|
|
|
|
return (float10)_DAT_007938b0;
|
|
|
|
}
|
|
|
|
if (param_1 < _DAT_007c6bc4) {
|
|
|
|
return (float10)_DAT_007c6bc4 - (float10)param_1;
|
|
|
|
}
|
|
|
|
return (float10)DAT_00796344;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004fd850 at 0x004FD850 (size: 11) ---
|
|
|
|
|
|
void __thiscall FUN_004fd850(undefined4 *param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
*param_1 = param_2;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004fd860 at 0x004FD860 (size: 8) ---
|
|
|
|
|
|
uint __fastcall FUN_004fd860(uint *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
return ~*param_1 & 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004fd870 at 0x004FD870 (size: 49) ---
|
|
|
|
|
|
byte __fastcall FUN_004fd870(uint *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
uint uVar1;
|
|
|
|
|
|
|
|
uVar1 = *param_1;
|
|
|
|
if ((uVar1 & 0x20) != 0) {
|
|
|
|
return 0x20;
|
|
|
|
}
|
|
|
|
if ((uVar1 & 0x10) != 0) {
|
|
|
|
return 0x10;
|
|
|
|
}
|
|
|
|
if ((uVar1 & 8) != 0) {
|
|
|
|
return 8;
|
|
|
|
}
|
|
|
|
if ((uVar1 & 4) != 0) {
|
|
|
|
return 4;
|
|
|
|
}
|
|
|
|
return (byte)uVar1 & 2;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004fd8b0 at 0x004FD8B0 (size: 25) ---
|
|
|
|
|
|
uint __fastcall FUN_004fd8b0(uint *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
uint uVar1;
|
|
|
|
uint uVar2;
|
|
|
|
|
|
|
|
uVar2 = 0xffff;
|
|
|
|
uVar1 = *param_1 & 0xffff0000;
|
|
|
|
do {
|
|
|
|
uVar2 = uVar2 >> 1;
|
|
|
|
uVar1 = uVar1 >> 1;
|
|
|
|
} while (uVar2 != 0);
|
|
|
|
return uVar1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004fd8d0 at 0x004FD8D0 (size: 28) ---
|
|
|
|
|
|
uint __fastcall FUN_004fd8d0(uint *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
uint uVar1;
|
|
|
|
uint uVar2;
|
|
|
|
|
|
|
|
uVar2 = 0xffff;
|
|
|
|
uVar1 = *param_1 & 0xffff0000;
|
|
|
|
do {
|
|
|
|
uVar2 = uVar2 >> 1;
|
|
|
|
uVar1 = uVar1 >> 1;
|
|
|
|
} while (uVar2 != 0);
|
|
|
|
return uVar1 & 2;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004fd8f0 at 0x004FD8F0 (size: 83) ---
|
|
|
|
|
|
uint __fastcall FUN_004fd8f0(uint *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
uint uVar1;
|
|
|
|
uint uVar2;
|
|
|
|
|
|
|
|
uVar2 = 0xffff;
|
|
|
|
uVar1 = *param_1 & 0xffff0000;
|
|
|
|
do {
|
|
|
|
uVar2 = uVar2 >> 1;
|
|
|
|
uVar1 = uVar1 >> 1;
|
|
|
|
} while (uVar2 != 0);
|
|
|
|
if ((uVar1 & 0x20) != 0) {
|
|
|
|
return 0x20;
|
|
|
|
}
|
|
|
|
if ((uVar1 & 0x10) != 0) {
|
|
|
|
return 0x10;
|
|
|
|
}
|
|
|
|
if ((uVar1 & 8) != 0) {
|
|
|
|
return 8;
|
|
|
|
}
|
|
|
|
if ((uVar1 & 4) != 0) {
|
|
|
|
return 4;
|
|
|
|
}
|
|
|
|
if ((uVar1 & 2) != 0) {
|
|
|
|
return 2;
|
|
|
|
}
|
|
|
|
return uVar1 & 0x80;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004fd9d0 at 0x004FD9D0 (size: 71) ---
|
|
|
|
|
|
void __fastcall FUN_004fd9d0(undefined4 *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 *puVar1;
|
|
|
|
LONG LVar2;
|
|
|
|
|
|
|
|
puVar1 = (undefined4 *)param_1[2];
|
|
|
|
LVar2 = InterlockedDecrement(puVar1 + 1);
|
|
|
|
if ((LVar2 == 0) && (puVar1 != (undefined4 *)0x0)) {
|
|
|
|
(**(code **)*puVar1)(1);
|
|
|
|
}
|
|
|
|
puVar1 = (undefined4 *)param_1[1];
|
|
|
|
LVar2 = InterlockedDecrement(puVar1 + 1);
|
|
|
|
if ((LVar2 == 0) && (puVar1 != (undefined4 *)0x0)) {
|
|
|
|
(**(code **)*puVar1)(1);
|
|
|
|
}
|
|
|
|
*param_1 = &PTR_FUN_0079385c;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004fda20 at 0x004FDA20 (size: 45) ---
|
|
|
|
|
|
int FUN_004fda20(undefined4 param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
int iVar2;
|
|
|
|
|
|
|
|
iVar1 = FUN_004fd290(param_1,param_2);
|
|
|
|
iVar2 = FUN_004fd290(param_1,param_2);
|
|
|
|
return iVar2 + iVar1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004fda50 at 0x004FDA50 (size: 176) ---
|
|
|
|
|
|
void __fastcall FUN_004fda50(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 *puVar1;
|
|
|
|
int *piVar2;
|
|
|
|
int *piVar3;
|
|
|
|
LONG LVar4;
|
|
|
|
uint local_8;
|
|
|
|
|
|
|
|
if ((*(int *)(param_1 + 8) != 0) && (local_8 = 0, *(int *)(param_1 + 0xc) != 0)) {
|
|
|
|
do {
|
|
|
|
piVar3 = *(int **)(*(int *)(param_1 + 8) + local_8 * 4);
|
|
|
|
while (piVar3 != (int *)0x0) {
|
|
|
|
puVar1 = (undefined4 *)piVar3[1];
|
|
|
|
piVar2 = (int *)piVar3[2];
|
|
|
|
LVar4 = InterlockedDecrement(puVar1 + 1);
|
|
|
|
if ((LVar4 == 0) && (puVar1 != (undefined4 *)0x0)) {
|
|
|
|
(**(code **)*puVar1)(1);
|
|
|
|
}
|
|
|
|
puVar1 = (undefined4 *)*piVar3;
|
|
|
|
LVar4 = InterlockedDecrement(puVar1 + 1);
|
|
|
|
if ((LVar4 == 0) && (puVar1 != (undefined4 *)0x0)) {
|
|
|
|
(**(code **)*puVar1)(1);
|
|
|
|
}
|
|
|
|
operator_delete(piVar3);
|
|
|
|
piVar3 = piVar2;
|
|
|
|
}
|
|
|
|
*(undefined4 *)(*(int *)(param_1 + 8) + local_8 * 4) = 0;
|
|
|
|
local_8 = local_8 + 1;
|
|
|
|
} while (local_8 < *(uint *)(param_1 + 0xc));
|
|
|
|
}
|
|
|
|
*(undefined4 *)(param_1 + 0x10) = 0;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004fdb00 at 0x004FDB00 (size: 212) ---
|
|
|
|
|
|
void __fastcall FUN_004fdb00(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 *puVar1;
|
|
|
|
int *piVar2;
|
|
|
|
int *piVar3;
|
|
|
|
LONG LVar4;
|
|
|
|
uint local_8;
|
|
|
|
|
|
|
|
if ((*(int *)(param_1 + 8) != 0) && (local_8 = 0, *(int *)(param_1 + 0xc) != 0)) {
|
|
|
|
do {
|
|
|
|
piVar3 = *(int **)(*(int *)(param_1 + 8) + local_8 * 4);
|
|
|
|
while (piVar3 != (int *)0x0) {
|
|
|
|
puVar1 = (undefined4 *)piVar3[3];
|
|
|
|
piVar2 = (int *)piVar3[4];
|
|
|
|
LVar4 = InterlockedDecrement(puVar1 + 1);
|
|
|
|
if ((LVar4 == 0) && (puVar1 != (undefined4 *)0x0)) {
|
|
|
|
(**(code **)*puVar1)(1);
|
|
|
|
}
|
|
|
|
puVar1 = (undefined4 *)piVar3[2];
|
|
|
|
LVar4 = InterlockedDecrement(puVar1 + 1);
|
|
|
|
if ((LVar4 == 0) && (puVar1 != (undefined4 *)0x0)) {
|
|
|
|
(**(code **)*puVar1)(1);
|
|
|
|
}
|
|
|
|
piVar3[1] = (int)&PTR_FUN_0079385c;
|
|
|
|
puVar1 = (undefined4 *)*piVar3;
|
|
|
|
LVar4 = InterlockedDecrement(puVar1 + 1);
|
|
|
|
if ((LVar4 == 0) && (puVar1 != (undefined4 *)0x0)) {
|
|
|
|
(**(code **)*puVar1)(1);
|
|
|
|
}
|
|
|
|
operator_delete(piVar3);
|
|
|
|
piVar3 = piVar2;
|
|
|
|
}
|
|
|
|
*(undefined4 *)(*(int *)(param_1 + 8) + local_8 * 4) = 0;
|
|
|
|
local_8 = local_8 + 1;
|
|
|
|
} while (local_8 < *(uint *)(param_1 + 0xc));
|
|
|
|
}
|
|
|
|
*(undefined4 *)(param_1 + 0x10) = 0;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004fdbe0 at 0x004FDBE0 (size: 60) ---
|
|
|
|
|
|
undefined4 FUN_004fdbe0(undefined4 param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
|
|
|
|
iVar1 = FUN_004fd460(param_1,param_2);
|
|
|
|
if (iVar1 != 0) {
|
|
|
|
iVar1 = FUN_004fd460(param_1,param_2);
|
|
|
|
if (iVar1 != 0) {
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004fdcb0 at 0x004FDCB0 (size: 104) ---
|
|
|
|
|
|
int __fastcall FUN_004fdcb0(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
int iVar2;
|
|
|
|
int iVar3;
|
|
|
|
uint uVar4;
|
|
|
|
int iVar5;
|
|
|
|
undefined4 local_4;
|
|
|
|
|
|
|
|
uVar4 = 0;
|
|
|
|
iVar5 = 4;
|
|
|
|
local_4 = 0;
|
|
|
|
if (*(int *)(param_1 + 0xc) != 0) {
|
|
|
|
do {
|
|
|
|
for (iVar1 = *(int *)(*(int *)(param_1 + 8) + uVar4 * 4); iVar1 != 0;
|
|
|
|
iVar1 = *(int *)(iVar1 + 8)) {
|
|
|
|
iVar2 = FUN_004fd290(&local_4,0);
|
|
|
|
iVar3 = FUN_004fd290(&local_4,0);
|
|
|
|
iVar5 = iVar5 + iVar2 + iVar3;
|
|
|
|
}
|
|
|
|
uVar4 = uVar4 + 1;
|
|
|
|
} while (uVar4 < *(uint *)(param_1 + 0xc));
|
|
|
|
}
|
|
|
|
return iVar5;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004fddb0 at 0x004FDDB0 (size: 105) ---
|
|
|
|
|
|
int __fastcall FUN_004fddb0(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
int iVar2;
|
|
|
|
int iVar3;
|
|
|
|
uint uVar4;
|
|
|
|
int iVar5;
|
|
|
|
undefined4 local_4;
|
|
|
|
|
|
|
|
uVar4 = 0;
|
|
|
|
iVar5 = 4;
|
|
|
|
local_4 = 0;
|
|
|
|
if (*(int *)(param_1 + 0xc) != 0) {
|
|
|
|
do {
|
|
|
|
for (iVar1 = *(int *)(*(int *)(param_1 + 8) + uVar4 * 4); iVar1 != 0;
|
|
|
|
iVar1 = *(int *)(iVar1 + 0x10)) {
|
|
|
|
iVar2 = FUN_004fd290(&local_4,0);
|
|
|
|
iVar3 = (**(code **)(*(int *)(iVar1 + 4) + 0xc))(&local_4,0);
|
|
|
|
iVar5 = iVar5 + iVar2 + iVar3;
|
|
|
|
}
|
|
|
|
uVar4 = uVar4 + 1;
|
|
|
|
} while (uVar4 < *(uint *)(param_1 + 0xc));
|
|
|
|
}
|
|
|
|
return iVar5;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004fde20 at 0x004FDE20 (size: 52) ---
|
|
|
|
|
|
void __fastcall FUN_004fde20(undefined4 *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
*param_1 = &PTR_FUN_007c6bc8;
|
|
|
|
FUN_004fda50();
|
|
|
|
if ((void *)param_1[2] != (void *)0x0) {
|
|
|
|
operator_delete__((void *)param_1[2]);
|
|
|
|
param_1[2] = 0;
|
|
|
|
}
|
|
|
|
param_1[3] = 0;
|
|
|
|
*param_1 = &PTR_FUN_0079385c;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004fdfc0 at 0x004FDFC0 (size: 132) ---
|
|
|
|
|
|
undefined4 __thiscall FUN_004fdfc0(int param_1,undefined4 param_2,undefined4 param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
uint uVar1;
|
|
|
|
int iVar2;
|
|
|
|
uint uVar3;
|
|
|
|
|
|
|
|
iVar2 = FUN_004fe0a0(param_2);
|
|
|
|
if (iVar2 != 0) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
iVar2 = FUN_005df0f5(0x10);
|
|
|
|
if (iVar2 != 0) {
|
|
|
|
uVar1 = *(uint *)(param_1 + 0xc);
|
|
|
|
FUN_00480760(param_2);
|
|
|
|
FUN_00480760(param_3);
|
|
|
|
*(undefined4 *)(iVar2 + 8) = 0;
|
|
|
|
uVar3 = FUN_004fe050();
|
|
|
|
uVar3 = uVar3 % uVar1;
|
|
|
|
*(uint *)(iVar2 + 0xc) = uVar3;
|
|
|
|
*(undefined4 *)(iVar2 + 8) = *(undefined4 *)(*(int *)(param_1 + 8) + uVar3 * 4);
|
|
|
|
*(int *)(*(int *)(param_1 + 8) + uVar3 * 4) = iVar2;
|
|
|
|
*(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + 1;
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004fe050 at 0x004FE050 (size: 75) ---
|
|
|
|
|
|
uint __fastcall FUN_004fe050(int *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
char *pcVar1;
|
|
|
|
char cVar2;
|
|
|
|
int iVar3;
|
|
|
|
uint uVar4;
|
|
|
|
int iVar5;
|
|
|
|
|
|
|
|
iVar5 = *param_1 + 0x14;
|
|
|
|
uVar4 = 0;
|
|
|
|
cVar2 = *(char *)(*param_1 + 0x14);
|
|
|
|
while (cVar2 != '\0') {
|
|
|
|
iVar3 = tolower((int)cVar2);
|
|
|
|
uVar4 = uVar4 * 0x10 + (int)(char)iVar3;
|
|
|
|
if ((uVar4 & 0xf0000000) != 0) {
|
|
|
|
uVar4 = ((uVar4 & 0xf0000000) >> 0x18 ^ uVar4) & 0xfffffff;
|
|
|
|
}
|
|
|
|
pcVar1 = (char *)(iVar5 + 1);
|
|
|
|
iVar5 = iVar5 + 1;
|
|
|
|
cVar2 = *pcVar1;
|
|
|
|
}
|
|
|
|
return uVar4;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004fe0a0 at 0x004FE0A0 (size: 86) ---
|
|
|
|
|
|
int __fastcall FUN_004fe0a0(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
uint uVar1;
|
|
|
|
int iVar2;
|
|
|
|
char cVar3;
|
|
|
|
uint uVar4;
|
|
|
|
|
|
|
|
uVar1 = *(uint *)(param_1 + 0xc);
|
|
|
|
if ((uVar1 != 0) && (*(int *)(param_1 + 8) != 0)) {
|
|
|
|
uVar4 = FUN_004fe050();
|
|
|
|
for (iVar2 = *(int *)(*(int *)(param_1 + 8) + (uVar4 % uVar1) * 4); iVar2 != 0;
|
|
|
|
iVar2 = *(int *)(iVar2 + 8)) {
|
|
|
|
cVar3 = FUN_004ac350(iVar2,0);
|
|
|
|
if (cVar3 != '\0') {
|
|
|
|
return iVar2 + 4;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004fe100 at 0x004FE100 (size: 52) ---
|
|
|
|
|
|
void __fastcall FUN_004fe100(undefined4 *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
*param_1 = &PTR_FUN_007c6bdc;
|
|
|
|
FUN_004fdb00();
|
|
|
|
if ((void *)param_1[2] != (void *)0x0) {
|
|
|
|
operator_delete__((void *)param_1[2]);
|
|
|
|
param_1[2] = 0;
|
|
|
|
}
|
|
|
|
param_1[3] = 0;
|
|
|
|
*param_1 = &PTR_FUN_0079385c;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004fe2a0 at 0x004FE2A0 (size: 54) ---
|
|
|
|
|
|
undefined4 * __fastcall FUN_004fe2a0(undefined4 *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
LONG *pLVar1;
|
|
|
|
|
|
|
|
*param_1 = &PTR_LAB_007c6bf0;
|
|
|
|
pLVar1 = (LONG *)(DAT_008ef11c + 4);
|
|
|
|
param_1[1] = DAT_008ef11c;
|
|
|
|
InterlockedIncrement(pLVar1);
|
|
|
|
pLVar1 = (LONG *)(DAT_008ef11c + 4);
|
|
|
|
param_1[2] = DAT_008ef11c;
|
|
|
|
InterlockedIncrement(pLVar1);
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004fe340 at 0x004FE340 (size: 91) ---
|
|
|
|
|
|
undefined4 __thiscall FUN_004fe340(int param_1,undefined4 param_2,undefined4 param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
|
|
|
|
iVar1 = FUN_004fe3a0(param_2);
|
|
|
|
if (iVar1 == 0) {
|
|
|
|
iVar1 = FUN_005df0f5(0x18);
|
|
|
|
if (iVar1 != 0) {
|
|
|
|
iVar1 = FUN_004fe490(param_2,param_3,*(undefined4 *)(param_1 + 0xc));
|
|
|
|
if (iVar1 != 0) {
|
|
|
|
*(undefined4 *)(iVar1 + 0x10) =
|
|
|
|
*(undefined4 *)(*(int *)(param_1 + 8) + *(int *)(iVar1 + 0x14) * 4);
|
|
|
|
*(int *)(*(int *)(param_1 + 8) + *(int *)(iVar1 + 0x14) * 4) = iVar1;
|
|
|
|
*(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + 1;
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004fe3a0 at 0x004FE3A0 (size: 155) ---
|
|
|
|
|
|
int * __thiscall FUN_004fe3a0(int param_1,int *param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
byte bVar1;
|
|
|
|
uint uVar2;
|
|
|
|
uint uVar3;
|
|
|
|
byte *pbVar4;
|
|
|
|
int iVar5;
|
|
|
|
int *piVar6;
|
|
|
|
byte *pbVar7;
|
|
|
|
bool bVar8;
|
|
|
|
|
|
|
|
uVar2 = *(uint *)(param_1 + 0xc);
|
|
|
|
if ((uVar2 != 0) && (*(int *)(param_1 + 8) != 0)) {
|
|
|
|
uVar3 = *(uint *)(*param_2 + 0x10);
|
|
|
|
if (uVar3 == 0xffffffff) {
|
|
|
|
uVar3 = FUN_004fe440();
|
|
|
|
*(uint *)(*param_2 + 0x10) = uVar3;
|
|
|
|
}
|
|
|
|
piVar6 = *(int **)(*(int *)(param_1 + 8) + (uVar3 % uVar2) * 4);
|
|
|
|
if (piVar6 != (int *)0x0) {
|
|
|
|
do {
|
|
|
|
pbVar4 = (byte *)(*piVar6 + 0x14);
|
|
|
|
pbVar7 = (byte *)(*param_2 + 0x14);
|
|
|
|
do {
|
|
|
|
bVar1 = *pbVar7;
|
|
|
|
bVar8 = bVar1 < *pbVar4;
|
|
|
|
if (bVar1 != *pbVar4) {
|
|
|
|
LAB_004fe418:
|
|
|
|
iVar5 = (1 - (uint)bVar8) - (uint)(bVar8 != 0);
|
|
|
|
goto LAB_004fe41d;
|
|
|
|
}
|
|
|
|
if (bVar1 == 0) break;
|
|
|
|
bVar1 = pbVar7[1];
|
|
|
|
bVar8 = bVar1 < pbVar4[1];
|
|
|
|
if (bVar1 != pbVar4[1]) goto LAB_004fe418;
|
|
|
|
pbVar7 = pbVar7 + 2;
|
|
|
|
pbVar4 = pbVar4 + 2;
|
|
|
|
} while (bVar1 != 0);
|
|
|
|
iVar5 = 0;
|
|
|
|
LAB_004fe41d:
|
|
|
|
if (iVar5 == 0) {
|
|
|
|
return piVar6 + 1;
|
|
|
|
}
|
|
|
|
piVar6 = (int *)piVar6[4];
|
|
|
|
} while (piVar6 != (int *)0x0);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return (int *)0x0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004fe440 at 0x004FE440 (size: 66) ---
|
|
|
|
|
|
uint __fastcall FUN_004fe440(int *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
uint uVar1;
|
|
|
|
char cVar2;
|
|
|
|
int iVar3;
|
|
|
|
|
|
|
|
cVar2 = *(char *)(*param_1 + 0x14);
|
|
|
|
iVar3 = *param_1 + 0x14;
|
|
|
|
uVar1 = 0;
|
|
|
|
if (cVar2 != '\0') {
|
|
|
|
do {
|
|
|
|
uVar1 = uVar1 * 0x10 + (int)cVar2;
|
|
|
|
if ((uVar1 & 0xf0000000) != 0) {
|
|
|
|
uVar1 = ((uVar1 & 0xf0000000) >> 0x18 ^ uVar1) & 0xfffffff;
|
|
|
|
}
|
|
|
|
cVar2 = *(char *)(iVar3 + 1);
|
|
|
|
iVar3 = iVar3 + 1;
|
|
|
|
} while (cVar2 != '\0');
|
|
|
|
if (uVar1 == 0xffffffff) {
|
|
|
|
uVar1 = 0xfffffffe;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return uVar1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004fe490 at 0x004FE490 (size: 102) ---
|
|
|
|
|
|
int * __thiscall FUN_004fe490(int *param_1,int *param_2,int param_3,uint param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
uint uVar2;
|
|
|
|
|
|
|
|
iVar1 = *param_2;
|
|
|
|
*param_1 = iVar1;
|
|
|
|
InterlockedIncrement((LONG *)(iVar1 + 4));
|
|
|
|
param_1[1] = (int)&PTR_LAB_007c6bf0;
|
|
|
|
FUN_00480760(param_3 + 4);
|
|
|
|
FUN_00480760(param_3 + 8);
|
|
|
|
param_1[4] = 0;
|
|
|
|
iVar1 = *param_2;
|
|
|
|
uVar2 = *(uint *)(iVar1 + 0x10);
|
|
|
|
if (uVar2 == 0xffffffff) {
|
|
|
|
uVar2 = FUN_004fe440();
|
|
|
|
*(uint *)(iVar1 + 0x10) = uVar2;
|
|
|
|
}
|
|
|
|
param_1[5] = uVar2 % param_4;
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004fe500 at 0x004FE500 (size: 72) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_004fe500(undefined4 *param_1,byte param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
*param_1 = &PTR_FUN_007c6bc8;
|
|
|
|
FUN_004fda50();
|
|
|
|
if ((void *)param_1[2] != (void *)0x0) {
|
|
|
|
operator_delete__((void *)param_1[2]);
|
|
|
|
param_1[2] = 0;
|
|
|
|
}
|
|
|
|
param_1[3] = 0;
|
|
|
|
*param_1 = &PTR_FUN_0079385c;
|
|
|
|
if ((param_2 & 1) != 0) {
|
|
|
|
operator_delete(param_1);
|
|
|
|
}
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004fe550 at 0x004FE550 (size: 72) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_004fe550(undefined4 *param_1,byte param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
*param_1 = &PTR_FUN_007c6bdc;
|
|
|
|
FUN_004fdb00();
|
|
|
|
if ((void *)param_1[2] != (void *)0x0) {
|
|
|
|
operator_delete__((void *)param_1[2]);
|
|
|
|
param_1[2] = 0;
|
|
|
|
}
|
|
|
|
param_1[3] = 0;
|
|
|
|
*param_1 = &PTR_FUN_0079385c;
|
|
|
|
if ((param_2 & 1) != 0) {
|
|
|
|
operator_delete(param_1);
|
|
|
|
}
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004fe5a0 at 0x004FE5A0 (size: 103) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_004fe5a0(undefined4 *param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_00415460(param_2);
|
|
|
|
param_1[0xc] = &PTR_FUN_0079385c;
|
|
|
|
*param_1 = &PTR_LAB_007c6c18;
|
|
|
|
param_1[0xc] = &PTR_LAB_007c6c04;
|
|
|
|
param_1[0xe] = &PTR_FUN_007c6bc8;
|
|
|
|
param_1[0xf] = 0;
|
|
|
|
param_1[0x10] = 0;
|
|
|
|
param_1[0x11] = 0x20;
|
|
|
|
param_1[0x12] = 0;
|
|
|
|
FUN_005a8440();
|
|
|
|
param_1[0x13] = &PTR_FUN_007c6bdc;
|
|
|
|
param_1[0x14] = 0;
|
|
|
|
param_1[0x15] = 0;
|
|
|
|
param_1[0x16] = 0x20;
|
|
|
|
param_1[0x17] = 0;
|
|
|
|
FUN_005a8440();
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004fe640 at 0x004FE640 (size: 48) ---
|
|
|
|
|
|
void * __thiscall FUN_004fe640(void *param_1,byte param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_004fe100();
|
|
|
|
FUN_004fde20();
|
|
|
|
FUN_004f8190();
|
|
|
|
if ((param_2 & 1) != 0) {
|
|
|
|
operator_delete(param_1);
|
|
|
|
}
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004fe670 at 0x004FE670 (size: 52) ---
|
|
|
|
|
|
void __fastcall FUN_004fe670(undefined4 *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
*param_1 = &PTR_FUN_007c6c70;
|
|
|
|
FUN_005d59a0();
|
|
|
|
if ((void *)param_1[2] != (void *)0x0) {
|
|
|
|
operator_delete__((void *)param_1[2]);
|
|
|
|
param_1[2] = 0;
|
|
|
|
}
|
|
|
|
param_1[3] = 0;
|
|
|
|
*param_1 = &PTR_FUN_0079385c;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004fe7e0 at 0x004FE7E0 (size: 72) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_004fe7e0(undefined4 *param_1,byte param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
*param_1 = &PTR_FUN_007c6c70;
|
|
|
|
FUN_005d59a0();
|
|
|
|
if ((void *)param_1[2] != (void *)0x0) {
|
|
|
|
operator_delete__((void *)param_1[2]);
|
|
|
|
param_1[2] = 0;
|
|
|
|
}
|
|
|
|
param_1[3] = 0;
|
|
|
|
*param_1 = &PTR_FUN_0079385c;
|
|
|
|
if ((param_2 & 1) != 0) {
|
|
|
|
operator_delete(param_1);
|
|
|
|
}
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004fe830 at 0x004FE830 (size: 71) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_004fe830(undefined4 *param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_00415460(param_2);
|
|
|
|
param_1[0xc] = &PTR_FUN_0079385c;
|
|
|
|
*param_1 = &PTR_LAB_007c6c98;
|
|
|
|
param_1[0xc] = &PTR_LAB_007c6c84;
|
|
|
|
param_1[0xe] = &PTR_FUN_007c6c70;
|
|
|
|
param_1[0xf] = 0;
|
|
|
|
param_1[0x10] = 0;
|
|
|
|
param_1[0x11] = 0x20;
|
|
|
|
param_1[0x12] = 0;
|
|
|
|
FUN_005a8440();
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004fe8a0 at 0x004FE8A0 (size: 40) ---
|
|
|
|
|
|
void * __thiscall FUN_004fe8a0(void *param_1,byte param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_004fe670();
|
|
|
|
FUN_004f8190();
|
|
|
|
if ((param_2 & 1) != 0) {
|
|
|
|
operator_delete(param_1);
|
|
|
|
}
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004fe8d0 at 0x004FE8D0 (size: 64) ---
|
|
|
|
|
|
void __fastcall FUN_004fe8d0(int *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 *puVar1;
|
|
|
|
|
|
|
|
puVar1 = (undefined4 *)*param_1;
|
|
|
|
param_1[2] = 0;
|
|
|
|
param_1[1] = 0;
|
|
|
|
if (puVar1 != (undefined4 *)0x0) {
|
|
|
|
if (puVar1[-1] != 0) {
|
|
|
|
(**(code **)*puVar1)(3);
|
|
|
|
*param_1 = 0;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
operator_delete__(puVar1 + -1);
|
|
|
|
}
|
|
|
|
*param_1 = 0;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004fe910 at 0x004FE910 (size: 67) ---
|
|
|
|
|
|
undefined4 __thiscall FUN_004fe910(int *param_1,uint param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
int iVar2;
|
|
|
|
uint uVar3;
|
|
|
|
|
|
|
|
if (param_2 < (uint)param_1[2]) {
|
|
|
|
iVar2 = param_1[2] - 1;
|
|
|
|
param_1[2] = iVar2;
|
|
|
|
iVar1 = *param_1;
|
|
|
|
uVar3 = param_2 * 0x10 + iVar1;
|
|
|
|
while (uVar3 < (uint)(iVar2 * 0x10 + iVar1)) {
|
|
|
|
uVar3 = uVar3 + 0x10;
|
|
|
|
FUN_004ff2a0(uVar3);
|
|
|
|
}
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004fe960 at 0x004FE960 (size: 28) ---
|
|
|
|
|
|
void __thiscall FUN_004fe960(int param_1,uint param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
if ((-1 < (int)param_2) && (param_2 < *(uint *)(param_1 + 0x14))) {
|
|
|
|
FUN_004fe910();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004fe980 at 0x004FE980 (size: 42) ---
|
|
|
|
|
|
int __thiscall FUN_004fe980(int param_1,uint param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
|
|
|
|
if (((param_2 < *(uint *)(param_1 + 0x14)) &&
|
|
|
|
(iVar1 = param_2 * 0x10 + *(int *)(param_1 + 0xc), *(int *)(iVar1 + 4) != 0)) && (iVar1 != 0))
|
|
|
|
{
|
|
|
|
return *(int *)(iVar1 + 8) + 0x14;
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004fe9b0 at 0x004FE9B0 (size: 39) ---
|
|
|
|
|
|
undefined4 __thiscall FUN_004fe9b0(int param_1,uint param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
|
|
|
|
if (((param_2 < *(uint *)(param_1 + 0x14)) &&
|
|
|
|
(iVar1 = param_2 * 0x10 + *(int *)(param_1 + 0xc), *(int *)(iVar1 + 4) != 0)) && (iVar1 != 0))
|
|
|
|
{
|
|
|
|
return *(undefined4 *)(iVar1 + 4);
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004fe9e0 at 0x004FE9E0 (size: 62) ---
|
|
|
|
|
|
uint __thiscall FUN_004fe9e0(int param_1,int param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
uint uVar1;
|
|
|
|
int *piVar2;
|
|
|
|
|
|
|
|
uVar1 = 0;
|
|
|
|
if (*(uint *)(param_1 + 0x14) != 0) {
|
|
|
|
piVar2 = (int *)(*(int *)(param_1 + 0xc) + 4);
|
|
|
|
while (*piVar2 != param_2) {
|
|
|
|
uVar1 = uVar1 + 1;
|
|
|
|
piVar2 = piVar2 + 4;
|
|
|
|
if (*(uint *)(param_1 + 0x14) <= uVar1) {
|
|
|
|
return 0xffffffff;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (*(int *)(uVar1 * 0x10 + 4 + *(int *)(param_1 + 0xc)) != 0) {
|
|
|
|
return uVar1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return 0xffffffff;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004fea20 at 0x004FEA20 (size: 50) ---
|
|
|
|
|
|
undefined4 __thiscall FUN_004fea20(int param_1,uint param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
|
|
|
|
if (((-1 < (int)param_2) &&
|
|
|
|
((((int)param_2 < *(int *)(param_1 + 0x28) || (*(int *)(param_1 + 0x28) < 1)) &&
|
|
|
|
(param_2 < *(uint *)(param_1 + 0x14))))) &&
|
|
|
|
(iVar1 = param_2 * 0x10 + *(int *)(param_1 + 0xc), *(int *)(iVar1 + 4) != 0)) {
|
|
|
|
return *(undefined4 *)(iVar1 + 0xc);
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004fea60 at 0x004FEA60 (size: 214) ---
|
|
|
|
|
|
undefined4 __thiscall FUN_004fea60(int *param_1,uint param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
uint *puVar1;
|
|
|
|
undefined4 *puVar2;
|
|
|
|
uint *puVar3;
|
|
|
|
uint uVar4;
|
|
|
|
int iVar5;
|
|
|
|
|
|
|
|
if ((uint)param_1[2] <= param_2) {
|
|
|
|
if (param_2 <= (uint)param_1[1]) {
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
if (param_2 == 0) {
|
|
|
|
FUN_004fe8d0();
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
puVar3 = (uint *)thunk_FUN_005df0f5(param_2 * 0x10 + 4);
|
|
|
|
if (puVar3 != (uint *)0x0) {
|
|
|
|
puVar1 = puVar3 + 1;
|
|
|
|
*puVar3 = param_2;
|
|
|
|
FUN_00401000(puVar1,0x10,param_2,FUN_004ff180);
|
|
|
|
if (puVar1 != (uint *)0x0) {
|
|
|
|
if (*param_1 != 0) {
|
|
|
|
uVar4 = 0;
|
|
|
|
if (param_1[2] != 0) {
|
|
|
|
iVar5 = 0;
|
|
|
|
do {
|
|
|
|
FUN_004ff2a0(*param_1 + iVar5);
|
|
|
|
uVar4 = uVar4 + 1;
|
|
|
|
iVar5 = iVar5 + 0x10;
|
|
|
|
} while (uVar4 < (uint)param_1[2]);
|
|
|
|
}
|
|
|
|
puVar2 = (undefined4 *)*param_1;
|
|
|
|
if (puVar2 != (undefined4 *)0x0) {
|
|
|
|
if (puVar2[-1] != 0) {
|
|
|
|
(**(code **)*puVar2)(3);
|
|
|
|
param_1[1] = param_2;
|
|
|
|
*param_1 = (int)puVar1;
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
operator_delete__(puVar2 + -1);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
*param_1 = (int)puVar1;
|
|
|
|
param_1[1] = param_2;
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004feb40 at 0x004FEB40 (size: 48) ---
|
|
|
|
|
|
void __fastcall FUN_004feb40(undefined4 *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 *puVar1;
|
|
|
|
LONG LVar2;
|
|
|
|
|
|
|
|
puVar1 = (undefined4 *)param_1[2];
|
|
|
|
*param_1 = &PTR_LAB_007c6cf0;
|
|
|
|
LVar2 = InterlockedDecrement(puVar1 + 1);
|
|
|
|
if ((LVar2 == 0) && (puVar1 != (undefined4 *)0x0)) {
|
|
|
|
(**(code **)*puVar1)(1);
|
|
|
|
}
|
|
|
|
*param_1 = &PTR_FUN_0079385c;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004fec30 at 0x004FEC30 (size: 164) ---
|
|
|
|
|
|
int __fastcall FUN_004fec30(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
uint uVar2;
|
|
|
|
int iVar3;
|
|
|
|
int iVar4;
|
|
|
|
int iVar5;
|
|
|
|
|
|
|
|
iVar3 = 0;
|
|
|
|
iVar4 = 8;
|
|
|
|
if (0 < *(int *)(param_1 + 0x14)) {
|
|
|
|
iVar5 = 0;
|
|
|
|
do {
|
|
|
|
if (*(int *)(iVar5 + *(int *)(param_1 + 0xc) + 4) != 0) {
|
|
|
|
iVar1 = FUN_004ff1b0();
|
|
|
|
iVar4 = iVar4 + iVar1;
|
|
|
|
}
|
|
|
|
iVar3 = iVar3 + 1;
|
|
|
|
iVar5 = iVar5 + 0x10;
|
|
|
|
} while (iVar3 < *(int *)(param_1 + 0x14));
|
|
|
|
}
|
|
|
|
iVar4 = iVar4 + 4;
|
|
|
|
iVar3 = 0;
|
|
|
|
if (0 < *(int *)(param_1 + 0x20)) {
|
|
|
|
iVar5 = 0;
|
|
|
|
do {
|
|
|
|
if (*(int *)(*(int *)(param_1 + 0x18) + 4 + iVar5) != 0) {
|
|
|
|
iVar1 = FUN_004ff1b0();
|
|
|
|
iVar4 = iVar4 + iVar1;
|
|
|
|
}
|
|
|
|
iVar3 = iVar3 + 1;
|
|
|
|
iVar5 = iVar5 + 0x10;
|
|
|
|
} while (iVar3 < *(int *)(param_1 + 0x20));
|
|
|
|
}
|
|
|
|
uVar2 = *(int *)(*(int *)(param_1 + 0x2c) + 8) - 1;
|
|
|
|
iVar3 = 0;
|
|
|
|
if (0xfffe < uVar2) {
|
|
|
|
iVar3 = 4;
|
|
|
|
}
|
|
|
|
uVar2 = iVar3 + 2 + uVar2;
|
|
|
|
if ((uVar2 & 3) != 0) {
|
|
|
|
return (uVar2 - (uVar2 & 3)) + 0xc + iVar4 + 4;
|
|
|
|
}
|
|
|
|
return uVar2 + 8 + iVar4 + 4;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004fedc0 at 0x004FEDC0 (size: 421) ---
|
|
|
|
|
|
undefined4 __thiscall FUN_004fedc0(int param_1,int *param_2,undefined4 param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 *puVar1;
|
|
|
|
uint uVar2;
|
|
|
|
int iVar3;
|
|
|
|
LONG LVar4;
|
|
|
|
int *piVar5;
|
|
|
|
int iVar6;
|
|
|
|
undefined **local_10 [2];
|
|
|
|
undefined4 *puStack_8;
|
|
|
|
|
|
|
|
*(undefined4 *)(param_1 + 0x24) = *(undefined4 *)*param_2;
|
|
|
|
iVar3 = *param_2;
|
|
|
|
piVar5 = (int *)(iVar3 + 4);
|
|
|
|
*param_2 = (int)piVar5;
|
|
|
|
iVar6 = *piVar5;
|
|
|
|
*param_2 = iVar3 + 8;
|
|
|
|
FUN_004ff180();
|
|
|
|
puVar1 = *(undefined4 **)(param_1 + 0xc);
|
|
|
|
*(undefined4 *)(param_1 + 0x14) = 0;
|
|
|
|
*(undefined4 *)(param_1 + 0x10) = 0;
|
|
|
|
if (puVar1 != (undefined4 *)0x0) {
|
|
|
|
if (puVar1[-1] == 0) {
|
|
|
|
operator_delete__(puVar1 + -1);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
(**(code **)*puVar1)(3);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
*(undefined4 *)(param_1 + 0xc) = 0;
|
|
|
|
if (0 < iVar6) {
|
|
|
|
do {
|
|
|
|
FUN_004ff300(param_2,param_3);
|
|
|
|
uVar2 = *(uint *)(param_1 + 0x10);
|
|
|
|
if (*(uint *)(param_1 + 0x14) < uVar2) {
|
|
|
|
LAB_004fee52:
|
|
|
|
FUN_004ff2a0(local_10);
|
|
|
|
*(int *)(param_1 + 0x14) = *(int *)(param_1 + 0x14) + 1;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
if (uVar2 == 0) {
|
|
|
|
iVar3 = 8;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar3 = uVar2 * 2;
|
|
|
|
}
|
|
|
|
iVar3 = FUN_004fea60(iVar3);
|
|
|
|
if (iVar3 != 0) goto LAB_004fee52;
|
|
|
|
}
|
|
|
|
iVar6 = iVar6 + -1;
|
|
|
|
} while (iVar6 != 0);
|
|
|
|
}
|
|
|
|
iVar3 = *(int *)*param_2;
|
|
|
|
*param_2 = (int)((int *)*param_2 + 1);
|
|
|
|
puVar1 = *(undefined4 **)(param_1 + 0x18);
|
|
|
|
*(undefined4 *)(param_1 + 0x20) = 0;
|
|
|
|
*(undefined4 *)(param_1 + 0x1c) = 0;
|
|
|
|
if (puVar1 != (undefined4 *)0x0) {
|
|
|
|
if (puVar1[-1] == 0) {
|
|
|
|
operator_delete__(puVar1 + -1);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
(**(code **)*puVar1)(3);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
*(int *)(param_1 + 0x18) = 0;
|
|
|
|
if (0 < iVar3) {
|
|
|
|
do {
|
|
|
|
FUN_004ff300(param_2,param_3);
|
|
|
|
uVar2 = *(uint *)(param_1 + 0x1c);
|
|
|
|
if (*(uint *)(param_1 + 0x20) < uVar2) {
|
|
|
|
LAB_004feee0:
|
|
|
|
FUN_004ff2a0(local_10);
|
|
|
|
*(int *)(param_1 + 0x20) = *(int *)(param_1 + 0x20) + 1;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
if (uVar2 == 0) {
|
|
|
|
iVar6 = 8;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar6 = uVar2 * 2;
|
|
|
|
}
|
|
|
|
iVar6 = FUN_004fea60(iVar6);
|
|
|
|
if (iVar6 != 0) goto LAB_004feee0;
|
|
|
|
}
|
|
|
|
iVar3 = iVar3 + -1;
|
|
|
|
} while (iVar3 != 0);
|
|
|
|
}
|
|
|
|
*(undefined4 *)(param_1 + 0x28) = *(undefined4 *)*param_2;
|
|
|
|
*param_2 = *param_2 + 4;
|
|
|
|
FUN_004fd460(param_2,param_3);
|
|
|
|
*(undefined4 *)(param_1 + 0x3c) = *(undefined4 *)*param_2;
|
|
|
|
iVar3 = *param_2;
|
|
|
|
*param_2 = iVar3 + 4;
|
|
|
|
*(undefined4 *)(param_1 + 0x40) = *(undefined4 *)(iVar3 + 4);
|
|
|
|
*param_2 = *param_2 + 4;
|
|
|
|
local_10[0] = &PTR_LAB_007c6cf0;
|
|
|
|
LVar4 = InterlockedDecrement(puStack_8 + 1);
|
|
|
|
if ((LVar4 == 0) && (puStack_8 != (undefined4 *)0x0)) {
|
|
|
|
(**(code **)*puStack_8)(1);
|
|
|
|
}
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004fef70 at 0x004FEF70 (size: 118) ---
|
|
|
|
|
|
undefined4 __thiscall FUN_004fef70(int param_1,int param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
uint uVar1;
|
|
|
|
int *piVar2;
|
|
|
|
int iVar3;
|
|
|
|
|
|
|
|
iVar3 = 0;
|
|
|
|
if (0 < *(int *)(param_1 + 0x14)) {
|
|
|
|
piVar2 = (int *)(*(int *)(param_1 + 0xc) + 4);
|
|
|
|
do {
|
|
|
|
if (*piVar2 == *(int *)(param_2 + 4)) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
iVar3 = iVar3 + 1;
|
|
|
|
piVar2 = piVar2 + 4;
|
|
|
|
} while (iVar3 < *(int *)(param_1 + 0x14));
|
|
|
|
}
|
|
|
|
uVar1 = *(uint *)(param_1 + 0x10);
|
|
|
|
if (uVar1 <= *(uint *)(param_1 + 0x14)) {
|
|
|
|
if (uVar1 == 0) {
|
|
|
|
iVar3 = 8;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar3 = uVar1 * 2;
|
|
|
|
}
|
|
|
|
iVar3 = FUN_004fea60(iVar3);
|
|
|
|
if (iVar3 == 0) {
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
FUN_004ff2a0(param_2);
|
|
|
|
*(int *)(param_1 + 0x14) = *(int *)(param_1 + 0x14) + 1;
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004feff0 at 0x004FEFF0 (size: 393) ---
|
|
|
|
|
|
int __thiscall FUN_004feff0(int param_1,int param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
int *piVar1;
|
|
|
|
undefined4 *puVar2;
|
|
|
|
uint uVar3;
|
|
|
|
int iVar4;
|
|
|
|
int iVar5;
|
|
|
|
int iVar6;
|
|
|
|
int iVar7;
|
|
|
|
int iStack_8;
|
|
|
|
|
|
|
|
iVar4 = param_2;
|
|
|
|
if (param_1 != param_2) {
|
|
|
|
puVar2 = *(undefined4 **)(param_1 + 0xc);
|
|
|
|
*(undefined4 *)(param_1 + 0x14) = 0;
|
|
|
|
*(undefined4 *)(param_1 + 0x10) = 0;
|
|
|
|
if (puVar2 != (undefined4 *)0x0) {
|
|
|
|
if (puVar2[-1] == 0) {
|
|
|
|
operator_delete__(puVar2 + -1);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
(**(code **)*puVar2)(3);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
*(undefined4 *)(param_1 + 0xc) = 0;
|
|
|
|
puVar2 = *(undefined4 **)(param_1 + 0x18);
|
|
|
|
*(undefined4 *)(param_1 + 0x20) = 0;
|
|
|
|
*(undefined4 *)(param_1 + 0x1c) = 0;
|
|
|
|
if (puVar2 != (undefined4 *)0x0) {
|
|
|
|
if (puVar2[-1] == 0) {
|
|
|
|
operator_delete__(puVar2 + -1);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
(**(code **)*puVar2)(3);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
*(int *)(param_1 + 0x18) = 0;
|
|
|
|
piVar1 = (int *)(param_2 + 0x14);
|
|
|
|
param_2 = 0;
|
|
|
|
if (0 < *piVar1) {
|
|
|
|
iStack_8 = 0;
|
|
|
|
do {
|
|
|
|
iVar7 = *(int *)(iVar4 + 0xc);
|
|
|
|
uVar3 = *(uint *)(param_1 + 0x10);
|
|
|
|
if (*(uint *)(param_1 + 0x14) < uVar3) {
|
|
|
|
LAB_004ff09f:
|
|
|
|
FUN_004ff2a0(iVar7 + iStack_8);
|
|
|
|
*(int *)(param_1 + 0x14) = *(int *)(param_1 + 0x14) + 1;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
if (uVar3 == 0) {
|
|
|
|
iVar5 = 8;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar5 = uVar3 * 2;
|
|
|
|
}
|
|
|
|
iVar5 = FUN_004fea60(iVar5);
|
|
|
|
if (iVar5 != 0) goto LAB_004ff09f;
|
|
|
|
}
|
|
|
|
param_2 = param_2 + 1;
|
|
|
|
iStack_8 = iStack_8 + 0x10;
|
|
|
|
} while (param_2 < *(int *)(iVar4 + 0x14));
|
|
|
|
}
|
|
|
|
param_2 = 0;
|
|
|
|
if (0 < *(int *)(iVar4 + 0x20)) {
|
|
|
|
iVar7 = 0;
|
|
|
|
do {
|
|
|
|
iVar5 = *(int *)(iVar4 + 0x18);
|
|
|
|
uVar3 = *(uint *)(param_1 + 0x1c);
|
|
|
|
if (*(uint *)(param_1 + 0x20) < uVar3) {
|
|
|
|
LAB_004ff108:
|
|
|
|
FUN_004ff2a0(iVar5 + iVar7);
|
|
|
|
*(int *)(param_1 + 0x20) = *(int *)(param_1 + 0x20) + 1;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
if (uVar3 == 0) {
|
|
|
|
iVar6 = 8;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar6 = uVar3 * 2;
|
|
|
|
}
|
|
|
|
iVar6 = FUN_004fea60(iVar6);
|
|
|
|
if (iVar6 != 0) goto LAB_004ff108;
|
|
|
|
}
|
|
|
|
param_2 = param_2 + 1;
|
|
|
|
iVar7 = iVar7 + 0x10;
|
|
|
|
} while (param_2 < *(int *)(iVar4 + 0x20));
|
|
|
|
}
|
|
|
|
*(undefined4 *)(param_1 + 0x24) = *(undefined4 *)(iVar4 + 0x24);
|
|
|
|
*(undefined4 *)(param_1 + 0x28) = *(undefined4 *)(iVar4 + 0x28);
|
|
|
|
FUN_004034c0(*(int *)(iVar4 + 0x2c) + 0x14);
|
|
|
|
*(undefined4 *)(param_1 + 0x30) = *(undefined4 *)(iVar4 + 0x30);
|
|
|
|
*(undefined4 *)(param_1 + 0x34) = *(undefined4 *)(iVar4 + 0x34);
|
|
|
|
*(undefined4 *)(param_1 + 0x38) = *(undefined4 *)(iVar4 + 0x38);
|
|
|
|
*(undefined4 *)(param_1 + 0x3c) = *(undefined4 *)(iVar4 + 0x3c);
|
|
|
|
*(undefined4 *)(param_1 + 0x40) = *(undefined4 *)(iVar4 + 0x40);
|
|
|
|
}
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004ff180 at 0x004FF180 (size: 47) ---
|
|
|
|
|
|
undefined4 * __fastcall FUN_004ff180(undefined4 *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
LONG *lpAddend;
|
|
|
|
|
|
|
|
*param_1 = &PTR_LAB_007c6cf0;
|
|
|
|
param_1[1] = 0;
|
|
|
|
lpAddend = (LONG *)(DAT_008ef11c + 4);
|
|
|
|
param_1[2] = DAT_008ef11c;
|
|
|
|
InterlockedIncrement(lpAddend);
|
|
|
|
param_1[3] = 0;
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004ff1b0 at 0x004FF1B0 (size: 70) ---
|
|
|
|
|
|
uint __fastcall FUN_004ff1b0(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
uint uVar1;
|
|
|
|
uint uVar2;
|
|
|
|
int iVar3;
|
|
|
|
|
|
|
|
uVar1 = *(int *)(*(int *)(param_1 + 8) + 8) - 1;
|
|
|
|
iVar3 = 0;
|
|
|
|
if (0xfffe < uVar1) {
|
|
|
|
iVar3 = 4;
|
|
|
|
}
|
|
|
|
uVar1 = iVar3 + 2 + uVar1;
|
|
|
|
uVar2 = uVar1 & 3;
|
|
|
|
if (uVar2 == 0) {
|
|
|
|
iVar3 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar3 = 4 - uVar2;
|
|
|
|
}
|
|
|
|
uVar1 = iVar3 + 8 + uVar1;
|
|
|
|
if ((uVar1 & 3) != 0) {
|
|
|
|
return (4 - (uVar1 & 3)) + uVar1;
|
|
|
|
}
|
|
|
|
return uVar1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004ff200 at 0x004FF200 (size: 148) ---
|
|
|
|
|
|
uint __thiscall FUN_004ff200(int param_1,int *param_2,uint param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 *puVar1;
|
|
|
|
uint uVar2;
|
|
|
|
uint uVar3;
|
|
|
|
int iVar4;
|
|
|
|
|
|
|
|
puVar1 = (undefined4 *)*param_2;
|
|
|
|
uVar2 = *(int *)(*(int *)(param_1 + 8) + 8) - 1;
|
|
|
|
iVar4 = 0;
|
|
|
|
if (0xfffe < uVar2) {
|
|
|
|
iVar4 = 4;
|
|
|
|
}
|
|
|
|
uVar2 = iVar4 + 2 + uVar2;
|
|
|
|
uVar3 = uVar2 & 3;
|
|
|
|
if (uVar3 == 0) {
|
|
|
|
iVar4 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar4 = 4 - uVar3;
|
|
|
|
}
|
|
|
|
uVar2 = iVar4 + 8 + uVar2;
|
|
|
|
uVar3 = uVar2 & 3;
|
|
|
|
if (uVar3 == 0) {
|
|
|
|
iVar4 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar4 = 4 - uVar3;
|
|
|
|
}
|
|
|
|
uVar2 = iVar4 + uVar2;
|
|
|
|
if (uVar2 <= param_3) {
|
|
|
|
*puVar1 = *(undefined4 *)(param_1 + 4);
|
|
|
|
*param_2 = *param_2 + 4;
|
|
|
|
FUN_004fd290(param_2,param_3 - 4);
|
|
|
|
*(undefined4 *)*param_2 = *(undefined4 *)(param_1 + 0xc);
|
|
|
|
*param_2 = *param_2 + 4;
|
|
|
|
FUN_004fd1b0(param_2);
|
|
|
|
uVar2 = *param_2 - (int)puVar1;
|
|
|
|
}
|
|
|
|
return uVar2;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004ff2a0 at 0x004FF2A0 (size: 81) ---
|
|
|
|
|
|
int __thiscall FUN_004ff2a0(int param_1,int param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 *puVar1;
|
|
|
|
int iVar2;
|
|
|
|
LONG LVar3;
|
|
|
|
|
|
|
|
*(undefined4 *)(param_1 + 4) = *(undefined4 *)(param_2 + 4);
|
|
|
|
puVar1 = *(undefined4 **)(param_1 + 8);
|
|
|
|
if (puVar1 != *(undefined4 **)(param_2 + 8)) {
|
|
|
|
LVar3 = InterlockedDecrement(puVar1 + 1);
|
|
|
|
if ((LVar3 == 0) && (puVar1 != (undefined4 *)0x0)) {
|
|
|
|
(**(code **)*puVar1)(1);
|
|
|
|
}
|
|
|
|
iVar2 = *(int *)(param_2 + 8);
|
|
|
|
*(int *)(param_1 + 8) = iVar2;
|
|
|
|
InterlockedIncrement((LONG *)(iVar2 + 4));
|
|
|
|
}
|
|
|
|
*(undefined4 *)(param_1 + 0xc) = *(undefined4 *)(param_2 + 0xc);
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004ff300 at 0x004FF300 (size: 98) ---
|
|
|
|
|
|
undefined4 __thiscall FUN_004ff300(int param_1,int *param_2,int param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 *puVar1;
|
|
|
|
int iVar2;
|
|
|
|
|
|
|
|
puVar1 = (undefined4 *)*param_2;
|
|
|
|
*(undefined4 *)(param_1 + 4) = *puVar1;
|
|
|
|
*param_2 = *param_2 + 4;
|
|
|
|
iVar2 = FUN_004fd460(param_2,param_3 + -4);
|
|
|
|
if (iVar2 == 0) {
|
|
|
|
printf("CharacterIdentity: Unpack failed for name_");
|
|
|
|
*param_2 = (int)puVar1;
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
*(undefined4 *)(param_1 + 0xc) = *(undefined4 *)*param_2;
|
|
|
|
*param_2 = *param_2 + 4;
|
|
|
|
FUN_004fd1b0(param_2);
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004ff370 at 0x004FF370 (size: 53) ---
|
|
|
|
|
|
undefined4 FUN_004ff370(undefined4 param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
|
|
|
|
iVar1 = FUN_00415730(param_1,0xb,0x1c);
|
|
|
|
if (iVar1 == 0) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
if (DAT_0084247c != (int *)0x0) {
|
|
|
|
(**(code **)(*DAT_0084247c + 0x14))();
|
|
|
|
}
|
|
|
|
DAT_0084247c = (int *)iVar1;
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004ff3b0 at 0x004FF3B0 (size: 44) ---
|
|
|
|
|
|
void FUN_004ff3b0(void)
|
|
|
|
|
|
|
|
{
|
|
|
|
if (DAT_0084247c != (int *)0x0) {
|
|
|
|
FUN_004144e0(1);
|
|
|
|
(**(code **)(*DAT_0084247c + 0x14))();
|
|
|
|
}
|
|
|
|
DAT_0084247c = (int *)0x0;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004ff3e0 at 0x004FF3E0 (size: 8) ---
|
|
|
|
|
|
void FUN_004ff3e0(void)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_00502f80();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004ff3f0 at 0x004FF3F0 (size: 8) ---
|
|
|
|
|
|
void FUN_004ff3f0(void)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_00502fa0();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004ff400 at 0x004FF400 (size: 20) ---
|
|
|
|
|
|
bool FUN_004ff400(void)
|
|
|
|
|
|
|
|
{
|
|
|
|
int *piVar1;
|
|
|
|
|
|
|
|
piVar1 = (int *)FUN_006b5980();
|
|
|
|
return *piVar1 != 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004ff420 at 0x004FF420 (size: 22) ---
|
|
|
|
|
|
void FUN_004ff420(void)
|
|
|
|
|
|
|
|
{
|
|
|
|
if ((DAT_0084247c != 0) && (*(int *)(DAT_0084247c + 0x50) != 0)) {
|
|
|
|
FUN_00501990();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004ff440 at 0x004FF440 (size: 55) ---
|
|
|
|
|
|
undefined4
|
|
|
|
FUN_004ff440(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
|
|
|
|
undefined4 param_5)
|
|
|
|
|
|
|
|
{
|
|
|
|
if ((DAT_0084247c != 0) && (*(int *)(DAT_0084247c + 0x50) != 0)) {
|
|
|
|
FUN_00501600(param_1,param_2,param_3,param_4,param_5);
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004ff480 at 0x004FF480 (size: 45) ---
|
|
|
|
|
|
undefined4 FUN_004ff480(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 uVar1;
|
|
|
|
|
|
|
|
if ((DAT_0084247c != 0) && (*(int *)(DAT_0084247c + 0x50) != 0)) {
|
|
|
|
uVar1 = FUN_00501860(param_1,param_2,param_3,param_4);
|
|
|
|
return uVar1;
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004ff4b0 at 0x004FF4B0 (size: 35) ---
|
|
|
|
|
|
undefined4 FUN_004ff4b0(undefined4 param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 uVar1;
|
|
|
|
|
|
|
|
if ((DAT_0084247c != 0) && (*(int *)(DAT_0084247c + 0x50) != 0)) {
|
|
|
|
uVar1 = FUN_00502a10(param_1,param_2);
|
|
|
|
return uVar1;
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004ff4e0 at 0x004FF4E0 (size: 75) ---
|
|
|
|
|
|
undefined4 __fastcall FUN_004ff4e0(int *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 uVar1;
|
|
|
|
int iVar2;
|
|
|
|
|
|
|
|
if ((param_1[1] == 0) && (*param_1 != DAT_00842498)) {
|
|
|
|
uVar1 = FUN_004220b0(*param_1,0x22);
|
|
|
|
iVar2 = FUN_00415430(uVar1);
|
|
|
|
param_1[5] = iVar2;
|
|
|
|
if (iVar2 != 0) {
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
param_1[1] = 1;
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004ff530 at 0x004FF530 (size: 55) ---
|
|
|
|
|
|
int FUN_004ff530(undefined4 param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
int iVar2;
|
|
|
|
|
|
|
|
iVar1 = FUN_00502f50(param_1,param_2);
|
|
|
|
if (iVar1 == 0) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
if ((*(int *)(iVar1 + 0x14) == 0) && (iVar2 = FUN_004ff4e0(), iVar2 == 0)) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
return iVar1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004ff570 at 0x004FF570 (size: 35) ---
|
|
|
|
|
|
undefined4 FUN_004ff570(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_00502fd0(param_1,param_2,param_3,param_4);
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004ff5a0 at 0x004FF5A0 (size: 158) ---
|
|
|
|
|
|
uint __thiscall FUN_004ff5a0(undefined4 *param_1,int *param_2,uint *param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
uint uVar1;
|
|
|
|
|
|
|
|
if (3 < *param_3) {
|
|
|
|
*(undefined4 *)*param_2 = *param_1;
|
|
|
|
*param_2 = *param_2 + 4;
|
|
|
|
uVar1 = *param_3;
|
|
|
|
*param_3 = uVar1 - 4;
|
|
|
|
if (3 < uVar1 - 4) {
|
|
|
|
*(undefined4 *)*param_2 = param_1[1];
|
|
|
|
*param_2 = *param_2 + 4;
|
|
|
|
uVar1 = *param_3;
|
|
|
|
*param_3 = uVar1 - 4;
|
|
|
|
if (3 < uVar1 - 4) {
|
|
|
|
*(undefined4 *)*param_2 = param_1[2];
|
|
|
|
*param_2 = *param_2 + 4;
|
|
|
|
uVar1 = *param_3;
|
|
|
|
*param_3 = uVar1 - 4;
|
|
|
|
if (3 < uVar1 - 4) {
|
|
|
|
*(undefined4 *)*param_2 = param_1[3];
|
|
|
|
*param_2 = *param_2 + 4;
|
|
|
|
uVar1 = *param_3;
|
|
|
|
*param_3 = uVar1 - 4;
|
|
|
|
if (3 < uVar1 - 4) {
|
|
|
|
*(undefined4 *)*param_2 = param_1[4];
|
|
|
|
*param_2 = *param_2 + 4;
|
|
|
|
uVar1 = *param_3;
|
|
|
|
*param_3 = uVar1 - 4;
|
|
|
|
if (3 < uVar1 - 4) {
|
|
|
|
*(undefined4 *)*param_2 = param_1[5];
|
|
|
|
*param_2 = *param_2 + 4;
|
|
|
|
*param_3 = *param_3 - 4;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return *param_3;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004ff640 at 0x004FF640 (size: 151) ---
|
|
|
|
|
|
undefined4 __thiscall FUN_004ff640(undefined4 *param_1,int *param_2,uint *param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
uint uVar1;
|
|
|
|
undefined4 uVar2;
|
|
|
|
|
|
|
|
if (3 < *param_3) {
|
|
|
|
*param_1 = *(undefined4 *)*param_2;
|
|
|
|
*param_2 = *param_2 + 4;
|
|
|
|
uVar1 = *param_3;
|
|
|
|
*param_3 = uVar1 - 4;
|
|
|
|
if (3 < uVar1 - 4) {
|
|
|
|
uVar2 = *(undefined4 *)*param_2;
|
|
|
|
*param_2 = (int)((undefined4 *)*param_2 + 1);
|
|
|
|
*param_3 = *param_3 - 4;
|
|
|
|
param_1[1] = uVar2;
|
|
|
|
if (3 < *param_3) {
|
|
|
|
uVar2 = *(undefined4 *)*param_2;
|
|
|
|
*param_2 = (int)((undefined4 *)*param_2 + 1);
|
|
|
|
*param_3 = *param_3 - 4;
|
|
|
|
param_1[2] = uVar2;
|
|
|
|
if (3 < *param_3) {
|
|
|
|
param_1[3] = *(undefined4 *)*param_2;
|
|
|
|
*param_2 = *param_2 + 4;
|
|
|
|
uVar1 = *param_3;
|
|
|
|
*param_3 = uVar1 - 4;
|
|
|
|
if (3 < uVar1 - 4) {
|
|
|
|
uVar2 = *(undefined4 *)*param_2;
|
|
|
|
*param_2 = (int)((undefined4 *)*param_2 + 1);
|
|
|
|
*param_3 = *param_3 - 4;
|
|
|
|
param_1[4] = uVar2;
|
|
|
|
if (3 < *param_3) {
|
|
|
|
uVar2 = *(undefined4 *)*param_2;
|
|
|
|
*param_2 = (int)((undefined4 *)*param_2 + 1);
|
|
|
|
*param_3 = *param_3 - 4;
|
|
|
|
param_1[5] = uVar2;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004ff6e0 at 0x004FF6E0 (size: 117) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_004ff6e0(undefined4 *param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
LONG *lpAddend;
|
|
|
|
|
|
|
|
FUN_00415460(param_2);
|
|
|
|
param_1[0xc] = &PTR_FUN_0079385c;
|
|
|
|
*param_1 = &PTR_LAB_007c6da0;
|
|
|
|
param_1[0xc] = &PTR_LAB_007c6d88;
|
|
|
|
param_1[0xe] = 0;
|
|
|
|
lpAddend = (LONG *)(DAT_008ef11c + 4);
|
|
|
|
param_1[0xf] = DAT_008ef11c;
|
|
|
|
InterlockedIncrement(lpAddend);
|
|
|
|
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;
|
|
|
|
param_1[0x19] = 0;
|
|
|
|
param_1[0x1a] = 0;
|
|
|
|
param_1[0x1b] = 0;
|
|
|
|
param_1[0x1c] = 0;
|
|
|
|
param_1[0x1d] = 0;
|
|
|
|
param_1[0x10] = 0xffffffff;
|
|
|
|
param_1[0x11] = 1;
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004ff770 at 0x004FF770 (size: 193) ---
|
|
|
|
|
|
void __fastcall FUN_004ff770(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
void *pvVar1;
|
|
|
|
|
|
|
|
pvVar1 = *(void **)(param_1 + 0x4c);
|
|
|
|
*(undefined4 *)(param_1 + 0x40) = 0xffffffff;
|
|
|
|
if (pvVar1 != (void *)0x0) {
|
|
|
|
FUN_00501450();
|
|
|
|
operator_delete(pvVar1);
|
|
|
|
*(undefined4 *)(param_1 + 0x4c) = 0;
|
|
|
|
}
|
|
|
|
pvVar1 = *(void **)(param_1 + 0x50);
|
|
|
|
if (pvVar1 != (void *)0x0) {
|
|
|
|
FUN_00502da0();
|
|
|
|
operator_delete(pvVar1);
|
|
|
|
*(undefined4 *)(param_1 + 0x50) = 0;
|
|
|
|
}
|
|
|
|
pvVar1 = *(void **)(param_1 + 0x58);
|
|
|
|
if (pvVar1 != (void *)0x0) {
|
|
|
|
FUN_00502e50();
|
|
|
|
operator_delete(pvVar1);
|
|
|
|
*(undefined4 *)(param_1 + 0x58) = 0;
|
|
|
|
}
|
|
|
|
pvVar1 = *(void **)(param_1 + 0x5c);
|
|
|
|
if (pvVar1 != (void *)0x0) {
|
|
|
|
FUN_005031c0();
|
|
|
|
operator_delete(pvVar1);
|
|
|
|
*(undefined4 *)(param_1 + 0x5c) = 0;
|
|
|
|
}
|
|
|
|
if (*(void **)(param_1 + 0x74) != (void *)0x0) {
|
|
|
|
operator_delete(*(void **)(param_1 + 0x74));
|
|
|
|
*(undefined4 *)(param_1 + 0x74) = 0;
|
|
|
|
}
|
|
|
|
pvVar1 = *(void **)(param_1 + 0x54);
|
|
|
|
if (pvVar1 != (void *)0x0) {
|
|
|
|
FUN_00503310();
|
|
|
|
operator_delete(pvVar1);
|
|
|
|
*(undefined4 *)(param_1 + 0x54) = 0;
|
|
|
|
}
|
|
|
|
pvVar1 = *(void **)(param_1 + 0x60);
|
|
|
|
if (pvVar1 != (void *)0x0) {
|
|
|
|
thunk_FUN_00503440();
|
|
|
|
operator_delete(pvVar1);
|
|
|
|
*(undefined4 *)(param_1 + 0x60) = 0;
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004ff8d0 at 0x004FF8D0 (size: 151) ---
|
|
|
|
|
|
int __fastcall FUN_004ff8d0(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
uint uVar1;
|
|
|
|
int iVar2;
|
|
|
|
int iVar3;
|
|
|
|
uint uVar4;
|
|
|
|
|
|
|
|
uVar1 = *(int *)(*(int *)(param_1 + 0x3c) + 8) - 1;
|
|
|
|
iVar3 = 0;
|
|
|
|
if (0xfffe < uVar1) {
|
|
|
|
iVar3 = 4;
|
|
|
|
}
|
|
|
|
uVar1 = iVar3 + 2 + uVar1;
|
|
|
|
uVar4 = uVar1 & 3;
|
|
|
|
if (uVar4 == 0) {
|
|
|
|
iVar3 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar3 = 4 - uVar4;
|
|
|
|
}
|
|
|
|
iVar3 = iVar3 + 0x42c + uVar1;
|
|
|
|
if (DAT_008ee9c8 != 0) {
|
|
|
|
iVar2 = FUN_005a7a60();
|
|
|
|
iVar3 = iVar3 + iVar2;
|
|
|
|
}
|
|
|
|
if ((*(byte *)(param_1 + 0x48) & 0x10) != 0) {
|
|
|
|
iVar2 = FUN_00502500();
|
|
|
|
iVar3 = iVar3 + iVar2;
|
|
|
|
}
|
|
|
|
if ((*(byte *)(param_1 + 0x48) & 1) != 0) {
|
|
|
|
iVar2 = FUN_00503250();
|
|
|
|
iVar3 = iVar3 + iVar2;
|
|
|
|
}
|
|
|
|
if ((*(byte *)(param_1 + 0x48) & 2) != 0) {
|
|
|
|
iVar2 = FUN_00502e20();
|
|
|
|
iVar3 = iVar3 + iVar2;
|
|
|
|
}
|
|
|
|
if ((*(byte *)(param_1 + 0x48) & 4) != 0) {
|
|
|
|
iVar2 = FUN_00503150();
|
|
|
|
iVar3 = iVar3 + iVar2;
|
|
|
|
}
|
|
|
|
if ((*(uint *)(param_1 + 0x48) & 0x200) != 0) {
|
|
|
|
iVar3 = iVar3 + 0x18;
|
|
|
|
}
|
|
|
|
return iVar3;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004ffec0 at 0x004FFEC0 (size: 1435) ---
|
|
|
|
|
|
/* WARNING: Function: __chkstk replaced with injection: alloca_probe */
|
|
|
|
|
|
|
|
int * __thiscall FUN_004ffec0(int param_1,int *param_2,uint param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
void *pvVar1;
|
|
|
|
int *piVar2;
|
|
|
|
void *pvVar3;
|
|
|
|
int iVar4;
|
|
|
|
uint uVar5;
|
|
|
|
uint uVar6;
|
|
|
|
void *pvVar7;
|
|
|
|
undefined4 uVar8;
|
|
|
|
int iVar9;
|
|
|
|
int *piVar10;
|
|
|
|
uint *puVar11;
|
|
|
|
undefined4 *puVar12;
|
|
|
|
int *apiStack_430 [255];
|
|
|
|
char *pcStack_34;
|
|
|
|
uint local_20;
|
|
|
|
uint local_18;
|
|
|
|
int local_14;
|
|
|
|
uint local_10;
|
|
|
|
uint local_c;
|
|
|
|
|
|
|
|
piVar2 = param_2;
|
|
|
|
pcStack_34 = (char *)0x4ffeda;
|
|
|
|
(**(code **)(*(int *)(param_1 + -0x30) + 0x3c))();
|
|
|
|
uVar5 = param_3;
|
|
|
|
if (3 < param_3) {
|
|
|
|
*(undefined4 *)(param_1 + 8) = *(undefined4 *)*param_2;
|
|
|
|
iVar4 = *param_2;
|
|
|
|
*param_2 = iVar4 + 4;
|
|
|
|
uVar5 = param_3 - 4;
|
|
|
|
if (3 < param_3 - 4) {
|
|
|
|
*(undefined4 *)(param_1 + 0x10) = *(undefined4 *)(iVar4 + 4);
|
|
|
|
*param_2 = *param_2 + 4;
|
|
|
|
uVar5 = param_3 - 8;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
param_3 = uVar5;
|
|
|
|
if (*(uint *)(param_1 + 0x10) != 3) {
|
|
|
|
if (*(uint *)(param_1 + 0x10) < 4) {
|
|
|
|
pcStack_34 =
|
|
|
|
"Error: The executable has a more recent verion than the data files. You will need to update in order to run\n"
|
|
|
|
;
|
|
|
|
apiStack_430[0xfe] = (int *)0x4fff3f;
|
|
|
|
FUN_00555860();
|
|
|
|
return (int *)0x0;
|
|
|
|
}
|
|
|
|
pcStack_34 =
|
|
|
|
"Error: The data files have a more recent verion than the executable. You will need to update in order to run\n"
|
|
|
|
;
|
|
|
|
apiStack_430[0xfe] = (int *)0x4fff24;
|
|
|
|
FUN_00555860();
|
|
|
|
return (int *)0x0;
|
|
|
|
}
|
|
|
|
apiStack_430[0xfe] = param_2;
|
|
|
|
apiStack_430[0xfd] = (int *)0x4fff5c;
|
|
|
|
pcStack_34 = (char *)param_3;
|
|
|
|
iVar4 = FUN_004fd460();
|
|
|
|
if (iVar4 == 0) {
|
|
|
|
return (int *)0x0;
|
|
|
|
}
|
|
|
|
uVar5 = *(int *)(*(int *)(param_1 + 0xc) + 8) - 1;
|
|
|
|
iVar4 = 0;
|
|
|
|
if (0xfffe < uVar5) {
|
|
|
|
iVar4 = 4;
|
|
|
|
}
|
|
|
|
uVar5 = iVar4 + 2 + uVar5;
|
|
|
|
uVar6 = uVar5 & 3;
|
|
|
|
if (uVar6 == 0) {
|
|
|
|
iVar4 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar4 = 4 - uVar6;
|
|
|
|
}
|
|
|
|
uVar5 = param_3 - (iVar4 + uVar5);
|
|
|
|
param_3 = uVar5;
|
|
|
|
if (3 < uVar5) {
|
|
|
|
iVar4 = *param_2;
|
|
|
|
param_3 = uVar5 - 4;
|
|
|
|
*param_2 = iVar4 + 4;
|
|
|
|
if (3 < param_3) {
|
|
|
|
param_3 = uVar5 - 8;
|
|
|
|
*param_2 = iVar4 + 8;
|
|
|
|
if (3 < param_3) {
|
|
|
|
param_3 = uVar5 - 0xc;
|
|
|
|
*param_2 = iVar4 + 0xc;
|
|
|
|
if (3 < param_3) {
|
|
|
|
param_3 = uVar5 - 0x10;
|
|
|
|
*param_2 = iVar4 + 0x10;
|
|
|
|
if (3 < param_3) {
|
|
|
|
param_3 = uVar5 - 0x14;
|
|
|
|
*param_2 = iVar4 + 0x14;
|
|
|
|
if (3 < param_3) {
|
|
|
|
param_3 = uVar5 - 0x18;
|
|
|
|
*param_2 = iVar4 + 0x18;
|
|
|
|
if (3 < param_3) {
|
|
|
|
param_3 = uVar5 - 0x1c;
|
|
|
|
*param_2 = iVar4 + 0x1c;
|
|
|
|
if (3 < param_3) {
|
|
|
|
param_3 = uVar5 - 0x20;
|
|
|
|
*param_2 = iVar4 + 0x20;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
pcStack_34 = (char *)0x500020;
|
|
|
|
uVar6 = 0;
|
|
|
|
uVar5 = param_3;
|
|
|
|
do {
|
|
|
|
if (3 < uVar5) {
|
|
|
|
apiStack_430[uVar6] = *(int **)*param_2;
|
|
|
|
*param_2 = *param_2 + 4;
|
|
|
|
uVar5 = param_3 - 4;
|
|
|
|
param_3 = uVar5;
|
|
|
|
}
|
|
|
|
uVar6 = uVar6 + 1;
|
|
|
|
} while (uVar6 < 0x100);
|
|
|
|
FUN_005aaa90(apiStack_430);
|
|
|
|
iVar4 = FUN_005df0f5(0x88);
|
|
|
|
pvVar3 = DAT_008ee9c8;
|
|
|
|
if ((((iVar4 != 0) &&
|
|
|
|
(pvVar7 = (void *)FUN_005a7770(), pvVar3 = DAT_008ee9c8, pvVar7 != (void *)0x0)) &&
|
|
|
|
(iVar4 = FUN_005a7fd0(param_2,¶m_3), pvVar1 = DAT_008ee9c8, pvVar3 = DAT_008ee9c8,
|
|
|
|
iVar4 != 0)) && (pvVar3 = pvVar7, DAT_008ee9c8 != (void *)0x0)) {
|
|
|
|
FUN_005a7f80();
|
|
|
|
operator_delete(pvVar1);
|
|
|
|
}
|
|
|
|
DAT_008ee9c8 = pvVar3;
|
|
|
|
if (3 < param_3) {
|
|
|
|
*(undefined4 *)(param_1 + 0x18) = *(undefined4 *)*param_2;
|
|
|
|
param_3 = param_3 - 4;
|
|
|
|
*param_2 = *param_2 + 4;
|
|
|
|
}
|
|
|
|
if ((*(byte *)(param_1 + 0x18) & 0x10) != 0) {
|
|
|
|
iVar4 = FUN_005df0f5(0x28);
|
|
|
|
if (iVar4 == 0) {
|
|
|
|
uVar8 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar8 = FUN_005015d0();
|
|
|
|
}
|
|
|
|
*(undefined4 *)(param_1 + 0x20) = uVar8;
|
|
|
|
param_2 = (int *)FUN_00502820(param_2,¶m_3);
|
|
|
|
}
|
|
|
|
if (((*(byte *)(param_1 + 0x18) & 1) != 0) && (param_2 != (int *)0x0)) {
|
|
|
|
iVar4 = FUN_005df0f5(0xc);
|
|
|
|
if (iVar4 == 0) {
|
|
|
|
uVar8 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar8 = FUN_005031e0();
|
|
|
|
}
|
|
|
|
*(undefined4 *)(param_1 + 0x24) = uVar8;
|
|
|
|
param_2 = (int *)FUN_00503380(piVar2,¶m_3);
|
|
|
|
}
|
|
|
|
if ((*(byte *)(param_1 + 0x18) & 2) != 0) {
|
|
|
|
if (param_2 == (int *)0x0) goto LAB_005003e5;
|
|
|
|
iVar4 = FUN_005df0f5(0xc);
|
|
|
|
if (iVar4 == 0) {
|
|
|
|
uVar8 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar8 = FUN_005031e0();
|
|
|
|
}
|
|
|
|
*(undefined4 *)(param_1 + 0x28) = uVar8;
|
|
|
|
if (3 < param_3) {
|
|
|
|
local_10 = *(uint *)*piVar2;
|
|
|
|
*piVar2 = (int)((uint *)*piVar2 + 1);
|
|
|
|
param_3 = param_3 - 4;
|
|
|
|
}
|
|
|
|
FUN_00500570(local_10);
|
|
|
|
local_c = 0;
|
|
|
|
uVar5 = param_3;
|
|
|
|
if (local_10 != 0) {
|
|
|
|
do {
|
|
|
|
iVar4 = FUN_005df0f5(0x14);
|
|
|
|
if (iVar4 == 0) {
|
|
|
|
iVar4 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar4 = FUN_00503c90();
|
|
|
|
}
|
|
|
|
if (3 < param_3) {
|
|
|
|
uVar5 = *(uint *)*piVar2;
|
|
|
|
*piVar2 = (int)((uint *)*piVar2 + 1);
|
|
|
|
param_3 = param_3 - 4;
|
|
|
|
}
|
|
|
|
if (uVar5 == 0xffffffff) {
|
|
|
|
*(undefined4 *)(iVar4 + 0x10) = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*(undefined4 *)(iVar4 + 0x10) = *(undefined4 *)(**(int **)(param_1 + 0x24) + uVar5 * 4);
|
|
|
|
}
|
|
|
|
iVar9 = FUN_00503d20(piVar2,¶m_3);
|
|
|
|
if (iVar9 == 0) {
|
|
|
|
return (int *)0x0;
|
|
|
|
}
|
|
|
|
FUN_00502ef0(iVar4);
|
|
|
|
local_c = local_c + 1;
|
|
|
|
} while (local_c < local_10);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (param_2 != (int *)0x0) {
|
|
|
|
iVar4 = FUN_005df0f5(0x10);
|
|
|
|
if (iVar4 == 0) {
|
|
|
|
uVar8 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar8 = FUN_00502f40();
|
|
|
|
}
|
|
|
|
*(undefined4 *)(param_1 + 0x2c) = uVar8;
|
|
|
|
if (3 < param_3) {
|
|
|
|
local_20 = *(uint *)*piVar2;
|
|
|
|
*piVar2 = (int)((uint *)*piVar2 + 1);
|
|
|
|
param_3 = param_3 - 4;
|
|
|
|
}
|
|
|
|
FUN_00500570(local_20);
|
|
|
|
local_c = 0;
|
|
|
|
if (local_20 != 0) {
|
|
|
|
do {
|
|
|
|
iVar4 = FUN_005df0f5(0x14);
|
|
|
|
if (iVar4 == 0) {
|
|
|
|
piVar10 = (int *)0x0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
piVar10 = (int *)FUN_00503010();
|
|
|
|
}
|
|
|
|
iVar4 = FUN_004fd460(piVar2,param_3);
|
|
|
|
if (iVar4 == 0) {
|
|
|
|
return (int *)0x0;
|
|
|
|
}
|
|
|
|
uVar5 = *(int *)(*piVar10 + 8) - 1;
|
|
|
|
iVar4 = 0;
|
|
|
|
if (0xfffe < uVar5) {
|
|
|
|
iVar4 = 4;
|
|
|
|
}
|
|
|
|
uVar5 = iVar4 + 2 + uVar5;
|
|
|
|
uVar6 = uVar5 & 3;
|
|
|
|
if (uVar6 == 0) {
|
|
|
|
iVar4 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar4 = 4 - uVar6;
|
|
|
|
}
|
|
|
|
uVar5 = param_3 - (iVar4 + uVar5);
|
|
|
|
param_3 = uVar5;
|
|
|
|
if (3 < uVar5) {
|
|
|
|
piVar10[1] = *(int *)*piVar2;
|
|
|
|
iVar4 = *piVar2;
|
|
|
|
param_3 = uVar5 - 4;
|
|
|
|
puVar11 = (uint *)(iVar4 + 4);
|
|
|
|
*piVar2 = (int)puVar11;
|
|
|
|
if (3 < param_3) {
|
|
|
|
local_10 = *puVar11;
|
|
|
|
*piVar2 = iVar4 + 8;
|
|
|
|
param_3 = uVar5 - 8;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
FUN_00500570(local_10);
|
|
|
|
if (local_10 != 0) {
|
|
|
|
local_18 = local_10;
|
|
|
|
do {
|
|
|
|
if (3 < param_3) {
|
|
|
|
local_14 = *(int *)*piVar2;
|
|
|
|
*piVar2 = (int)((int *)*piVar2 + 1);
|
|
|
|
param_3 = param_3 - 4;
|
|
|
|
}
|
|
|
|
if (local_14 == -1) {
|
|
|
|
uVar8 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar8 = *(undefined4 *)(**(int **)(param_1 + 0x28) + local_14 * 4);
|
|
|
|
}
|
|
|
|
uVar5 = piVar10[3];
|
|
|
|
if ((uint)piVar10[4] < uVar5) {
|
|
|
|
LAB_0050037c:
|
|
|
|
*(undefined4 *)(piVar10[2] + piVar10[4] * 4) = uVar8;
|
|
|
|
piVar10[4] = piVar10[4] + 1;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
if (uVar5 == 0) {
|
|
|
|
iVar4 = 8;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar4 = uVar5 * 2;
|
|
|
|
}
|
|
|
|
iVar4 = FUN_00500570(iVar4);
|
|
|
|
if (iVar4 != 0) goto LAB_0050037c;
|
|
|
|
}
|
|
|
|
local_18 = local_18 - 1;
|
|
|
|
} while (local_18 != 0);
|
|
|
|
}
|
|
|
|
FUN_00503100(piVar10);
|
|
|
|
local_c = local_c + 1;
|
|
|
|
} while (local_c < local_20);
|
|
|
|
}
|
|
|
|
iVar4 = FUN_005df0f5(0x2c);
|
|
|
|
if (iVar4 == 0) {
|
|
|
|
uVar8 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar8 = FUN_00503830();
|
|
|
|
}
|
|
|
|
**(undefined4 **)(param_1 + 0x2c) = uVar8;
|
|
|
|
iVar4 = FUN_005036d0(piVar2,¶m_3);
|
|
|
|
if (iVar4 == 0) {
|
|
|
|
return (int *)0x0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
LAB_005003e5:
|
|
|
|
puVar12 = (undefined4 *)FUN_005df0f5(0x18);
|
|
|
|
if (puVar12 == (undefined4 *)0x0) {
|
|
|
|
puVar12 = (undefined4 *)0x0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*puVar12 = 0;
|
|
|
|
puVar12[1] = 0x600127d;
|
|
|
|
puVar12[2] = 0x6000261;
|
|
|
|
puVar12[3] = 4;
|
|
|
|
puVar12[4] = 0;
|
|
|
|
puVar12[5] = 0;
|
|
|
|
}
|
|
|
|
*(undefined4 **)(param_1 + 0x44) = puVar12;
|
|
|
|
if (((*(uint *)(param_1 + 0x18) & 0x200) != 0) && (param_2 != (int *)0x0)) {
|
|
|
|
FUN_004ff640(piVar2,¶m_3);
|
|
|
|
return param_2;
|
|
|
|
}
|
|
|
|
*(uint *)(param_1 + 0x18) = *(uint *)(param_1 + 0x18) | 0x200;
|
|
|
|
return param_2;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|