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>
11458 lines
290 KiB
C
11458 lines
290 KiB
C
// Decompiled from acclient.exe — chunk 0x00470000
|
|
// Ghidra 12.0.4 + pyghidra headless
|
|
|
|
// --- FUN_004703b0 at 0x004703B0 (size: 140) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_004703b0(undefined4 *param_1,undefined4 param_2,undefined4 param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 uVar1;
|
|
|
|
undefined4 uVar2;
|
|
|
|
|
|
|
|
FUN_00471f10(param_2,param_3);
|
|
|
|
uVar2 = DAT_0079e13c;
|
|
|
|
uVar1 = DAT_0079e138;
|
|
|
|
param_1[0x1c8] = 0;
|
|
|
|
param_1[0x1ca] = 0;
|
|
|
|
param_1[0x1cb] = 0;
|
|
|
|
param_1[0x1cc] = 0;
|
|
|
|
param_1[0x1cd] = 0;
|
|
|
|
param_1[0x1ce] = 0;
|
|
|
|
param_1[0x1cf] = 0;
|
|
|
|
param_1[0x1d0] = 0;
|
|
|
|
param_1[0x1d1] = 0;
|
|
|
|
param_1[0x1dc] = 0;
|
|
|
|
param_1[0x1dd] = 0;
|
|
|
|
param_1[0x1de] = 0;
|
|
|
|
*param_1 = &PTR_FUN_0079e140;
|
|
|
|
param_1[0x182] = &PTR_FUN_0079d180;
|
|
|
|
param_1[0x1d2] = uVar1;
|
|
|
|
param_1[0x1d3] = uVar2;
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00470510 at 0x00470510 (size: 100) ---
|
|
|
|
|
|
void FUN_00470510(undefined4 param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
char cVar1;
|
|
|
|
|
|
|
|
FUN_00460820(0xf,1);
|
|
|
|
cVar1 = FUN_00460bf0(0x10,¶m_1);
|
|
|
|
if (cVar1 == '\0') {
|
|
|
|
param_1 = 0x3f000000;
|
|
|
|
FUN_00460760(0x10,0x3f000000);
|
|
|
|
}
|
|
|
|
cVar1 = FUN_00460bf0(0x11,¶m_1);
|
|
|
|
if (cVar1 == '\0') {
|
|
|
|
param_1 = 0x3e000000;
|
|
|
|
FUN_00460760(0x11,0x3e000000);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00470580 at 0x00470580 (size: 146) ---
|
|
|
|
|
|
undefined4 FUN_00470580(void)
|
|
|
|
|
|
|
|
{
|
|
|
|
char cVar1;
|
|
|
|
undefined4 uVar2;
|
|
|
|
char local_5;
|
|
|
|
int local_4;
|
|
|
|
|
|
|
|
local_4 = 1;
|
|
|
|
cVar1 = FUN_00460b30(0x7d,&local_4);
|
|
|
|
if ((cVar1 != '\0') && (local_4 != 0)) {
|
|
|
|
uVar2 = 0;
|
|
|
|
local_5 = '\0';
|
|
|
|
FUN_00460cc0(0x7e,&local_5);
|
|
|
|
if (local_5 != '\0') {
|
|
|
|
uVar2 = FUN_005df4c4();
|
|
|
|
return uVar2;
|
|
|
|
}
|
|
|
|
if (1 < local_4) {
|
|
|
|
local_4 = local_4 + -1;
|
|
|
|
uVar2 = FUN_005df4c4();
|
|
|
|
}
|
|
|
|
return uVar2;
|
|
|
|
}
|
|
|
|
return 0xffffffff;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00470620 at 0x00470620 (size: 63) ---
|
|
|
|
|
|
void __thiscall FUN_00470620(int param_1,int *param_2,int param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
int iVar2;
|
|
|
|
int iVar3;
|
|
|
|
|
|
|
|
iVar2 = *(int *)(param_3 + 0x20);
|
|
|
|
iVar3 = *(int *)(param_3 + 0x1c);
|
|
|
|
iVar1 = (**(code **)(**(int **)(param_3 + 4) + 0xa0))();
|
|
|
|
if (iVar1 == param_1) {
|
|
|
|
iVar3 = iVar3 + *(int *)(*(int *)(param_3 + 4) + 0x7c);
|
|
|
|
iVar2 = iVar2 + *(int *)(*(int *)(param_3 + 4) + 0x80);
|
|
|
|
}
|
|
|
|
*param_2 = iVar3;
|
|
|
|
param_2[1] = iVar2;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00470660 at 0x00470660 (size: 133) ---
|
|
|
|
|
|
void __thiscall FUN_00470660(int param_1,int *param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
int iVar2;
|
|
|
|
int iVar3;
|
|
|
|
char local_9;
|
|
|
|
int local_8;
|
|
|
|
|
|
|
|
iVar1 = *(int *)(param_1 + 0x76c) - *(int *)(param_1 + 0x764);
|
|
|
|
iVar2 = 0;
|
|
|
|
iVar3 = *(int *)(param_1 + 0x768) - *(int *)(param_1 + 0x760);
|
|
|
|
if (*(int *)(param_1 + 0x720) == 0) {
|
|
|
|
local_8 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
local_8 = FUN_0069fe60();
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x720) != 0) {
|
|
|
|
iVar2 = FUN_0069fe70();
|
|
|
|
}
|
|
|
|
local_9 = '\0';
|
|
|
|
FUN_00460cc0(0x7e,&local_9);
|
|
|
|
if (local_9 == '\0') {
|
|
|
|
iVar3 = iVar3 - local_8;
|
|
|
|
iVar1 = iVar1 - iVar2;
|
|
|
|
}
|
|
|
|
*param_2 = iVar3;
|
|
|
|
param_2[1] = iVar1;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004706f0 at 0x004706F0 (size: 52) ---
|
|
|
|
|
|
void __thiscall FUN_004706f0(int param_1,char param_2,uint param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
if (param_2 != '\0') {
|
|
|
|
*(uint *)(param_1 + 0x778) = *(uint *)(param_1 + 0x778) | param_3;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
*(uint *)(param_1 + 0x778) = *(uint *)(param_1 + 0x778) & ~param_3;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00470730 at 0x00470730 (size: 38) ---
|
|
|
|
|
|
void __thiscall FUN_00470730(int param_1,char param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
if (param_2 != '\0') {
|
|
|
|
*(uint *)(param_1 + 0x778) = *(uint *)(param_1 + 0x778) | 1;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
*(uint *)(param_1 + 0x778) = *(uint *)(param_1 + 0x778) & 0xfffffffe;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00470760 at 0x00470760 (size: 38) ---
|
|
|
|
|
|
void __thiscall FUN_00470760(int param_1,char param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
if (param_2 != '\0') {
|
|
|
|
*(uint *)(param_1 + 0x778) = *(uint *)(param_1 + 0x778) | 2;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
*(uint *)(param_1 + 0x778) = *(uint *)(param_1 + 0x778) & 0xfffffffd;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00470790 at 0x00470790 (size: 38) ---
|
|
|
|
|
|
void __thiscall FUN_00470790(int param_1,char param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
if (param_2 != '\0') {
|
|
|
|
*(uint *)(param_1 + 0x778) = *(uint *)(param_1 + 0x778) | 4;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
*(uint *)(param_1 + 0x778) = *(uint *)(param_1 + 0x778) & 0xfffffffb;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004707c0 at 0x004707C0 (size: 38) ---
|
|
|
|
|
|
void __thiscall FUN_004707c0(int param_1,char param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
if (param_2 != '\0') {
|
|
|
|
*(uint *)(param_1 + 0x778) = *(uint *)(param_1 + 0x778) | 8;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
*(uint *)(param_1 + 0x778) = *(uint *)(param_1 + 0x778) & 0xfffffff7;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004707f0 at 0x004707F0 (size: 38) ---
|
|
|
|
|
|
void __thiscall FUN_004707f0(int param_1,char param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
if (param_2 != '\0') {
|
|
|
|
*(uint *)(param_1 + 0x778) = *(uint *)(param_1 + 0x778) | 0x10;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
*(uint *)(param_1 + 0x778) = *(uint *)(param_1 + 0x778) & 0xffffffef;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00470820 at 0x00470820 (size: 38) ---
|
|
|
|
|
|
void __thiscall FUN_00470820(int param_1,char param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
if (param_2 != '\0') {
|
|
|
|
*(uint *)(param_1 + 0x778) = *(uint *)(param_1 + 0x778) | 0x20;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
*(uint *)(param_1 + 0x778) = *(uint *)(param_1 + 0x778) & 0xffffffdf;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00470850 at 0x00470850 (size: 38) ---
|
|
|
|
|
|
void __thiscall FUN_00470850(int param_1,char param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
if (param_2 != '\0') {
|
|
|
|
*(uint *)(param_1 + 0x778) = *(uint *)(param_1 + 0x778) | 0x40;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
*(uint *)(param_1 + 0x778) = *(uint *)(param_1 + 0x778) & 0xffffffbf;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00470880 at 0x00470880 (size: 42) ---
|
|
|
|
|
|
void __thiscall FUN_00470880(int param_1,char param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
if (param_2 != '\0') {
|
|
|
|
*(uint *)(param_1 + 0x778) = *(uint *)(param_1 + 0x778) | 0x100;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
*(uint *)(param_1 + 0x778) = *(uint *)(param_1 + 0x778) & 0xfffffeff;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004708b0 at 0x004708B0 (size: 28) ---
|
|
|
|
|
|
undefined4 __thiscall FUN_004708b0(int param_1,undefined4 *param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
if ((*(byte *)(param_1 + 0x778) & 1) != 0) {
|
|
|
|
return param_2[1];
|
|
|
|
}
|
|
|
|
return *param_2;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004708d0 at 0x004708D0 (size: 16) ---
|
|
|
|
|
|
void FUN_004708d0(void)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_00460270(0xb,&LAB_00470470);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00470910 at 0x00470910 (size: 200) ---
|
|
|
|
|
|
void __fastcall FUN_00470910(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 *puVar1;
|
|
|
|
uint uVar2;
|
|
|
|
undefined4 uVar3;
|
|
|
|
char cVar4;
|
|
|
|
float local_4;
|
|
|
|
|
|
|
|
uVar2 = *(uint *)(param_1 + 0x778);
|
|
|
|
local_4 = 0.0;
|
|
|
|
cVar4 = FUN_00460bf0(0x84,&local_4);
|
|
|
|
if ((cVar4 != '\0') && (ABS(local_4) < DAT_0079e130 == (ABS(local_4) == DAT_0079e130))) {
|
|
|
|
puVar1 = (undefined4 *)(param_1 + 0x738);
|
|
|
|
*puVar1 = 0;
|
|
|
|
FUN_00460bf0(0x86,puVar1);
|
|
|
|
*(undefined4 *)(param_1 + 0x73c) = *puVar1;
|
|
|
|
FUN_00460bf0(0x85,(undefined4 *)(param_1 + 0x73c));
|
|
|
|
uVar3 = DAT_008379a8;
|
|
|
|
*(undefined4 *)(param_1 + 0x72c) = DAT_008379ac;
|
|
|
|
*(undefined4 *)(param_1 + 0x728) = uVar3;
|
|
|
|
*(uint *)(param_1 + 0x778) = *(uint *)(param_1 + 0x778) | 0x400000;
|
|
|
|
*(double *)(param_1 + 0x730) = (double)(local_4 + (float)*(double *)(param_1 + 0x728));
|
|
|
|
if ((uVar2 & 0x400000) != 0x400000) {
|
|
|
|
FUN_00465f90(3);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004709e0 at 0x004709E0 (size: 94) ---
|
|
|
|
|
|
int __thiscall FUN_004709e0(int param_1,char param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
int *piVar2;
|
|
|
|
int iVar3;
|
|
|
|
|
|
|
|
iVar1 = 0;
|
|
|
|
if (param_2 == '\0') {
|
|
|
|
iVar3 = *(int *)(param_1 + 0x774);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar3 = *(int *)(param_1 + 0x770);
|
|
|
|
}
|
|
|
|
if ((iVar3 != 0) &&
|
|
|
|
(((piVar2 = (int *)FUN_00464690(iVar3), piVar2 == (int *)0x0 ||
|
|
|
|
(iVar1 = (**(code **)(*piVar2 + 0x94))(1), iVar1 == 0)) ||
|
|
|
|
(iVar3 = FUN_00464690(*(undefined4 *)(param_1 + 0x2e4)), iVar3 != param_1)))) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
return iVar1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00470a40 at 0x00470A40 (size: 76) ---
|
|
|
|
|
|
void __thiscall FUN_00470a40(int param_1,char param_2,undefined4 param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
|
|
|
|
if (param_2 == '\0') {
|
|
|
|
*(undefined4 *)(param_1 + 0x774) = param_3;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*(undefined4 *)(param_1 + 0x770) = param_3;
|
|
|
|
}
|
|
|
|
iVar1 = FUN_00463c00(param_3);
|
|
|
|
if (iVar1 == 0) {
|
|
|
|
*(uint *)(param_1 + 0x778) = *(uint *)(param_1 + 0x778) | 0x800000;
|
|
|
|
FUN_00465f90(3);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
FUN_00470510(iVar1);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00470a90 at 0x00470A90 (size: 162) ---
|
|
|
|
|
|
void __thiscall FUN_00470a90(int param_1,int param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
int iVar2;
|
|
|
|
int iVar3;
|
|
|
|
int iVar4;
|
|
|
|
uint uVar5;
|
|
|
|
int iVar6;
|
|
|
|
int iVar7;
|
|
|
|
int iVar8;
|
|
|
|
|
|
|
|
iVar1 = *(int *)(param_1 + 0x720);
|
|
|
|
if (iVar1 != 0) {
|
|
|
|
iVar7 = *(int *)(iVar1 + 0x7c);
|
|
|
|
iVar1 = *(int *)(iVar1 + 0x80);
|
|
|
|
iVar3 = FUN_0069fe60();
|
|
|
|
iVar4 = FUN_0069fe70();
|
|
|
|
uVar5 = *(uint *)(param_1 + 0x778) & 1;
|
|
|
|
if (uVar5 == 0) {
|
|
|
|
iVar8 = *(int *)(param_2 + 0x20);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar8 = *(int *)(param_2 + 0x1c);
|
|
|
|
}
|
|
|
|
iVar6 = iVar7;
|
|
|
|
if (uVar5 != 1) {
|
|
|
|
iVar6 = iVar1;
|
|
|
|
}
|
|
|
|
if (uVar5 == 1) {
|
|
|
|
iVar2 = *(int *)(param_2 + 0x1c);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar2 = *(int *)(param_2 + 0x20);
|
|
|
|
iVar3 = iVar4;
|
|
|
|
iVar7 = iVar1;
|
|
|
|
}
|
|
|
|
if ((iVar8 < iVar6) || (iVar3 + iVar7 < iVar2)) {
|
|
|
|
FUN_00460410(0x10 - (uint)(iVar8 < iVar6),0,0);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00470b40 at 0x00470B40 (size: 168) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
float10 FUN_00470b40(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
char cVar1;
|
|
|
|
char local_5;
|
|
|
|
int local_4;
|
|
|
|
|
|
|
|
local_4 = 1;
|
|
|
|
cVar1 = FUN_00460b30(0x7d,&local_4);
|
|
|
|
if ((cVar1 == '\0') || (local_4 == 0)) {
|
|
|
|
return (float10)_DAT_0079a1a0;
|
|
|
|
}
|
|
|
|
if (param_1 < 0) {
|
|
|
|
param_1 = 0;
|
|
|
|
}
|
|
|
|
else if (local_4 + -1 < param_1) {
|
|
|
|
param_1 = local_4 + -1;
|
|
|
|
}
|
|
|
|
local_5 = '\0';
|
|
|
|
FUN_00460cc0(0x7e,&local_5);
|
|
|
|
if (local_5 != '\0') {
|
|
|
|
return ((float10)param_1 + (float10)_DAT_007938b8) / (float10)local_4;
|
|
|
|
}
|
|
|
|
if (1 < local_4) {
|
|
|
|
return (float10)param_1 / (float10)(local_4 + -1);
|
|
|
|
}
|
|
|
|
return (float10)_DAT_007938b8;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00470bf0 at 0x00470BF0 (size: 92) ---
|
|
|
|
|
|
void FUN_00470bf0(undefined4 param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 uVar1;
|
|
|
|
float10 fVar2;
|
|
|
|
|
|
|
|
fVar2 = (float10)FUN_00470b40(param_1);
|
|
|
|
if ((float10)DAT_00796344 <= fVar2) {
|
|
|
|
FUN_004606b0(0x87,param_1);
|
|
|
|
FUN_00460760(0x86,(float)fVar2);
|
|
|
|
uVar1 = FUN_005df4c4(param_1);
|
|
|
|
FUN_00460410(10,uVar1,param_1);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00470c50 at 0x00470C50 (size: 264) ---
|
|
|
|
|
|
float10 __thiscall FUN_00470c50(int param_1,int *param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
uint uVar1;
|
|
|
|
int iVar2;
|
|
|
|
int iVar3;
|
|
|
|
int iVar4;
|
|
|
|
char local_11;
|
|
|
|
int local_10;
|
|
|
|
int local_c;
|
|
|
|
int local_8;
|
|
|
|
|
|
|
|
FUN_00470660(&local_10);
|
|
|
|
iVar2 = 0;
|
|
|
|
if (*(int *)(param_1 + 0x720) == 0) {
|
|
|
|
local_8 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
local_8 = FUN_0069fe60();
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x720) != 0) {
|
|
|
|
iVar2 = FUN_0069fe70();
|
|
|
|
}
|
|
|
|
local_10 = local_10 + -1;
|
|
|
|
iVar3 = *param_2 - *(int *)(param_1 + 0x760);
|
|
|
|
local_c = local_c + -1;
|
|
|
|
iVar4 = param_2[1] - *(int *)(param_1 + 0x764);
|
|
|
|
local_11 = '\0';
|
|
|
|
FUN_00460cc0(0x7e,&local_11);
|
|
|
|
if (local_11 == '\0') {
|
|
|
|
iVar3 = iVar3 - local_8 / 2;
|
|
|
|
iVar4 = iVar4 - iVar2 / 2;
|
|
|
|
if (iVar3 < 0) {
|
|
|
|
iVar3 = 0;
|
|
|
|
}
|
|
|
|
else if (local_10 < iVar3) {
|
|
|
|
iVar3 = local_10;
|
|
|
|
}
|
|
|
|
if (iVar4 < 0) {
|
|
|
|
iVar4 = 0;
|
|
|
|
}
|
|
|
|
else if (local_c < iVar4) {
|
|
|
|
iVar4 = local_c;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
uVar1 = *(uint *)(param_1 + 0x778) & 1;
|
|
|
|
param_2 = (int *)iVar3;
|
|
|
|
if (uVar1 == 0) {
|
|
|
|
param_2 = (int *)iVar4;
|
|
|
|
}
|
|
|
|
if (uVar1 != 1) {
|
|
|
|
local_10 = local_c;
|
|
|
|
}
|
|
|
|
if (1 < local_10) {
|
|
|
|
return (float10)(int)param_2 / (float10)local_10;
|
|
|
|
}
|
|
|
|
return (float10)DAT_00796344;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00470d60 at 0x00470D60 (size: 253) ---
|
|
|
|
|
|
void __thiscall FUN_00470d60(int param_1,int *param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
int iVar2;
|
|
|
|
uint uVar3;
|
|
|
|
char local_19;
|
|
|
|
undefined4 local_18;
|
|
|
|
undefined4 local_14;
|
|
|
|
int local_10;
|
|
|
|
int local_c;
|
|
|
|
int local_4;
|
|
|
|
|
|
|
|
FUN_00470660(&local_18);
|
|
|
|
local_4 = *(int *)(param_1 + 0x764);
|
|
|
|
iVar2 = *(int *)(param_1 + 0x760);
|
|
|
|
if (*(int *)(param_1 + 0x720) == 0) {
|
|
|
|
local_10 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
local_10 = FUN_0069fe60();
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x720) == 0) {
|
|
|
|
local_c = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
local_c = FUN_0069fe70();
|
|
|
|
}
|
|
|
|
uVar3 = *(uint *)(param_1 + 0x778) & 1;
|
|
|
|
if (uVar3 == 0) {
|
|
|
|
local_18 = local_14;
|
|
|
|
}
|
|
|
|
iVar1 = FUN_005df4c4();
|
|
|
|
if (uVar3 != 1) {
|
|
|
|
iVar2 = local_4;
|
|
|
|
}
|
|
|
|
iVar1 = iVar1 + iVar2;
|
|
|
|
local_19 = '\0';
|
|
|
|
FUN_00460cc0(0x7e,&local_19);
|
|
|
|
if (local_19 != '\0') {
|
|
|
|
if ((*(byte *)(param_1 + 0x778) & 1) == 0) {
|
|
|
|
local_10 = local_c;
|
|
|
|
}
|
|
|
|
iVar1 = iVar1 - local_10 / 2;
|
|
|
|
}
|
|
|
|
if ((*(byte *)(param_1 + 0x778) & 1) == 0) {
|
|
|
|
*param_2 = 0;
|
|
|
|
param_2[1] = iVar1;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
*param_2 = iVar1;
|
|
|
|
param_2[1] = 0;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00470e60 at 0x00470E60 (size: 177) ---
|
|
|
|
|
|
void __fastcall FUN_00470e60(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 uVar1;
|
|
|
|
int *piVar2;
|
|
|
|
int iVar3;
|
|
|
|
|
|
|
|
*(undefined4 *)(param_1 + 0x764) = 0;
|
|
|
|
*(undefined4 *)(param_1 + 0x760) = 0;
|
|
|
|
uVar1 = FUN_0069fe60();
|
|
|
|
*(undefined4 *)(param_1 + 0x768) = uVar1;
|
|
|
|
uVar1 = FUN_0069fe70();
|
|
|
|
*(undefined4 *)(param_1 + 0x76c) = uVar1;
|
|
|
|
piVar2 = (int *)FUN_004709e0(1);
|
|
|
|
if (piVar2 != (int *)0x0) {
|
|
|
|
iVar3 = FUN_0069fe70();
|
|
|
|
*(int *)(param_1 + 0x764) = *(int *)(param_1 + 0x764) + iVar3;
|
|
|
|
iVar3 = FUN_0069fe60();
|
|
|
|
*(int *)(param_1 + 0x760) = *(int *)(param_1 + 0x760) + iVar3;
|
|
|
|
(**(code **)(*piVar2 + 0x2c))(0,0);
|
|
|
|
}
|
|
|
|
piVar2 = (int *)FUN_004709e0(0);
|
|
|
|
if (piVar2 != (int *)0x0) {
|
|
|
|
iVar3 = FUN_0069fe60();
|
|
|
|
*(int *)(param_1 + 0x768) = *(int *)(param_1 + 0x768) - iVar3;
|
|
|
|
iVar3 = FUN_0069fe70();
|
|
|
|
iVar3 = *(int *)(param_1 + 0x76c) - iVar3;
|
|
|
|
*(int *)(param_1 + 0x76c) = iVar3;
|
|
|
|
(**(code **)(*piVar2 + 0x2c))(*(undefined4 *)(param_1 + 0x768),iVar3);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00470f20 at 0x00470F20 (size: 89) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void __thiscall FUN_00470f20(int param_1,float *param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 uVar1;
|
|
|
|
float10 fVar2;
|
|
|
|
|
|
|
|
if ((*(uint *)(param_1 + 0x778) & 0x100) != 0) {
|
|
|
|
uVar1 = FUN_00470580(*param_2);
|
|
|
|
fVar2 = (float10)FUN_00470b40(uVar1);
|
|
|
|
*param_2 = (float)fVar2;
|
|
|
|
}
|
|
|
|
if (*param_2 < DAT_00796344) {
|
|
|
|
*param_2 = 0.0;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
if (_DAT_007938b0 < *param_2) {
|
|
|
|
*param_2 = 1.0;
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00470f80 at 0x00470F80 (size: 135) ---
|
|
|
|
|
|
void __fastcall FUN_00470f80(undefined4 *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
|
|
|
|
*param_1 = &PTR_FUN_0079e140;
|
|
|
|
param_1[0x182] = &PTR_FUN_0079d180;
|
|
|
|
param_1[0x1dc] = 0;
|
|
|
|
iVar1 = FUN_00463c00(0);
|
|
|
|
if (iVar1 == 0) {
|
|
|
|
param_1[0x1de] = param_1[0x1de] | 0x800000;
|
|
|
|
FUN_00465f90(3);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
FUN_00470510(iVar1);
|
|
|
|
}
|
|
|
|
param_1[0x1dd] = 0;
|
|
|
|
iVar1 = FUN_00463c00(0);
|
|
|
|
if (iVar1 == 0) {
|
|
|
|
param_1[0x1de] = param_1[0x1de] | 0x800000;
|
|
|
|
FUN_00465f90(3);
|
|
|
|
FUN_00471f80();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
FUN_00470510(iVar1);
|
|
|
|
FUN_00471f80();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00471010 at 0x00471010 (size: 77) ---
|
|
|
|
|
|
bool FUN_00471010(int *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
char cVar1;
|
|
|
|
char cVar2;
|
|
|
|
|
|
|
|
cVar1 = FUN_00472620(param_1);
|
|
|
|
FUN_00425ba0();
|
|
|
|
if (param_1 == (int *)0x0) {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
cVar2 = FUN_00427240(0x12,param_1);
|
|
|
|
(**(code **)(*param_1 + 0x14))();
|
|
|
|
return cVar2 != '\0' && cVar1 != '\0';
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00471060 at 0x00471060 (size: 344) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void __fastcall FUN_00471060(int *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int *piVar1;
|
|
|
|
int iVar2;
|
|
|
|
int iVar3;
|
|
|
|
int unaff_ESI;
|
|
|
|
float10 fVar4;
|
|
|
|
int iVar5;
|
|
|
|
float local_4;
|
|
|
|
|
|
|
|
if ((param_1[0x1de] & 0x800000U) != 0) {
|
|
|
|
param_1[0x1de] = param_1[0x1de] & 0xff7fffff;
|
|
|
|
iVar5 = param_1[0x1dc];
|
|
|
|
(**(code **)(*param_1 + 0xa0))(iVar5);
|
|
|
|
piVar1 = (int *)FUN_00463c00(iVar5);
|
|
|
|
if (piVar1 != (int *)0x0) {
|
|
|
|
FUN_0069fe60();
|
|
|
|
FUN_0069fe70();
|
|
|
|
(**(code **)(*piVar1 + 0x44))(param_1);
|
|
|
|
(**(code **)(*piVar1 + 0x2c))(0,0);
|
|
|
|
FUN_00470510(piVar1);
|
|
|
|
}
|
|
|
|
iVar5 = param_1[0x1dd];
|
|
|
|
(**(code **)(*param_1 + 0xa0))(iVar5);
|
|
|
|
piVar1 = (int *)FUN_00463c00(iVar5);
|
|
|
|
if (piVar1 != (int *)0x0) {
|
|
|
|
iVar2 = FUN_0069fe60();
|
|
|
|
FUN_0069fe70();
|
|
|
|
(**(code **)(*piVar1 + 0x44))(param_1);
|
|
|
|
iVar5 = *piVar1;
|
|
|
|
iVar3 = FUN_0069fe70();
|
|
|
|
iVar3 = FUN_0069fe60(iVar3 - unaff_ESI);
|
|
|
|
(**(code **)(iVar5 + 0x2c))(iVar3 - iVar2);
|
|
|
|
FUN_00470510(piVar1);
|
|
|
|
}
|
|
|
|
FUN_00470e60();
|
|
|
|
FUN_00465fb0(3);
|
|
|
|
}
|
|
|
|
if ((param_1[0x1de] & 0x400000U) != 0) {
|
|
|
|
fVar4 = ((float10)_DAT_008379a8 - (float10)*(double *)(param_1 + 0x1ca)) /
|
|
|
|
((float10)*(double *)(param_1 + 0x1cc) - (float10)*(double *)(param_1 + 0x1ca));
|
|
|
|
local_4 = (float)fVar4;
|
|
|
|
if ((float10)_DAT_007938b0 <= fVar4) {
|
|
|
|
param_1[0x1de] = param_1[0x1de] & 0xffbfffff;
|
|
|
|
local_4 = 1.0;
|
|
|
|
FUN_00465fb0(3);
|
|
|
|
}
|
|
|
|
FUN_00460760(0x86,((float)param_1[0x1cf] - (float)param_1[0x1ce]) * local_4 +
|
|
|
|
(float)param_1[0x1ce]);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004711f0 at 0x004711F0 (size: 88) ---
|
|
|
|
|
|
void FUN_004711f0(undefined4 param_1,int param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
char cVar1;
|
|
|
|
int local_4;
|
|
|
|
|
|
|
|
local_4 = 0;
|
|
|
|
cVar1 = FUN_00460b30(0x87,&local_4);
|
|
|
|
if (cVar1 != '\0') {
|
|
|
|
local_4 = local_4 + param_2;
|
|
|
|
FUN_00470bf0(local_4,1);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
FUN_00460410((param_2 < 1) + '\r',param_2,0);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00471250 at 0x00471250 (size: 34) ---
|
|
|
|
|
|
void __thiscall FUN_00471250(int param_1,int *param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_004711f0(0x86,(-(uint)(*param_2 != *(int *)(param_1 + 0x770)) & 0xfffffffe) + 1);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00471280 at 0x00471280 (size: 135) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void FUN_00471280(float param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
undefined4 uVar2;
|
|
|
|
undefined4 uVar3;
|
|
|
|
|
|
|
|
if (DAT_00796344 <= param_1) {
|
|
|
|
if (_DAT_007938b0 < param_1) {
|
|
|
|
param_1 = 1.0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
param_1 = 0.0;
|
|
|
|
}
|
|
|
|
iVar1 = FUN_00470580(param_1);
|
|
|
|
if (-1 < iVar1) {
|
|
|
|
FUN_00470bf0(iVar1,param_2);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
FUN_00460760(0x86,param_1);
|
|
|
|
uVar3 = 0xffffffff;
|
|
|
|
uVar2 = FUN_005df4c4(0xffffffff);
|
|
|
|
FUN_00460410(10,uVar2,uVar3);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00471310 at 0x00471310 (size: 96) ---
|
|
|
|
|
|
void __thiscall FUN_00471310(int param_1,int param_2,undefined4 param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
int iVar2;
|
|
|
|
int iVar3;
|
|
|
|
float10 fVar4;
|
|
|
|
int iStack_8;
|
|
|
|
int iStack_4;
|
|
|
|
|
|
|
|
iVar2 = *(int *)(param_2 + 0x20);
|
|
|
|
iVar3 = *(int *)(param_2 + 0x1c);
|
|
|
|
iVar1 = (**(code **)(**(int **)(param_2 + 4) + 0xa0))();
|
|
|
|
if (iVar1 == param_1) {
|
|
|
|
iVar3 = iVar3 + *(int *)(*(int *)(param_2 + 4) + 0x7c);
|
|
|
|
iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 4) + 0x80);
|
|
|
|
}
|
|
|
|
iStack_8 = iVar3;
|
|
|
|
iStack_4 = iVar2;
|
|
|
|
fVar4 = (float10)FUN_00470c50(&iStack_8);
|
|
|
|
FUN_00471280((float)fVar4,param_3);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00471370 at 0x00471370 (size: 109) ---
|
|
|
|
|
|
void __thiscall FUN_00471370(int param_1,int param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
int iVar2;
|
|
|
|
int iVar3;
|
|
|
|
|
|
|
|
if ((*(byte *)(param_1 + 0x778) & 0x40) != 0) {
|
|
|
|
FUN_00471310(param_2,1);
|
|
|
|
}
|
|
|
|
iVar2 = *(int *)(param_2 + 0x1c);
|
|
|
|
iVar3 = *(int *)(param_2 + 0x20);
|
|
|
|
iVar1 = (**(code **)(**(int **)(param_2 + 4) + 0xa0))();
|
|
|
|
if (iVar1 == param_1) {
|
|
|
|
iVar2 = iVar2 + *(int *)(*(int *)(param_2 + 4) + 0x7c);
|
|
|
|
iVar3 = iVar3 + *(int *)(*(int *)(param_2 + 4) + 0x80);
|
|
|
|
}
|
|
|
|
*(int *)(param_1 + 0x750) = iVar2;
|
|
|
|
*(int *)(param_1 + 0x754) = iVar3;
|
|
|
|
FUN_00460bf0(0x86,param_1 + 0x758);
|
|
|
|
*(undefined1 *)(param_1 + 0x75c) = 1;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004713e0 at 0x004713E0 (size: 129) ---
|
|
|
|
|
|
void __thiscall FUN_004713e0(int param_1,int *param_2,undefined4 param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
uint uVar1;
|
|
|
|
int local_8;
|
|
|
|
int local_4;
|
|
|
|
|
|
|
|
FUN_00470660(&local_8);
|
|
|
|
uVar1 = *(uint *)(param_1 + 0x778) & 1;
|
|
|
|
if (uVar1 == 0) {
|
|
|
|
local_8 = local_4;
|
|
|
|
}
|
|
|
|
if (local_8 == 0) {
|
|
|
|
FUN_00471280(0,param_3);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
if (uVar1 == 1) {
|
|
|
|
param_2 = (int *)*param_2;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
param_2 = (int *)param_2[1];
|
|
|
|
}
|
|
|
|
FUN_00471280((float)(int)param_2 / (float)local_8 + *(float *)(param_1 + 0x758),param_3);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00471470 at 0x00471470 (size: 30) ---
|
|
|
|
|
|
void * __thiscall FUN_00471470(void *param_1,byte param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_00470f80();
|
|
|
|
if ((param_2 & 1) != 0) {
|
|
|
|
operator_delete(param_1);
|
|
|
|
}
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00471490 at 0x00471490 (size: 857) ---
|
|
|
|
|
|
void __fastcall FUN_00471490(int *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
uint uVar1;
|
|
|
|
bool bVar2;
|
|
|
|
char cVar3;
|
|
|
|
int iVar4;
|
|
|
|
int iVar5;
|
|
|
|
int *piVar6;
|
|
|
|
int iVar7;
|
|
|
|
undefined4 local_24;
|
|
|
|
int local_20;
|
|
|
|
int local_1c;
|
|
|
|
int local_18;
|
|
|
|
int iStack_14;
|
|
|
|
int local_10;
|
|
|
|
undefined1 local_c [8];
|
|
|
|
int local_4;
|
|
|
|
|
|
|
|
if (param_1[0x1c8] == 0) {
|
|
|
|
iVar4 = FUN_00463ba0(1);
|
|
|
|
param_1[0x1c8] = iVar4;
|
|
|
|
}
|
|
|
|
if ((*(byte *)(param_1 + 0x1de) & 0x20) == 0) {
|
|
|
|
local_24 = 0;
|
|
|
|
FUN_00460bf0(0x86,&local_24);
|
|
|
|
local_20 = 1;
|
|
|
|
cVar3 = FUN_00460b30(0x7d,&local_20);
|
|
|
|
if (((cVar3 != '\0') && (local_20 != 0)) && (cVar3 = FUN_00460b30(0x87,local_c), cVar3 == '\0'))
|
|
|
|
{
|
|
|
|
FUN_00471280(local_24,0);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
FUN_00470e60();
|
|
|
|
if (param_1[0x1c8] != 0) {
|
|
|
|
iVar4 = FUN_0069fe60();
|
|
|
|
local_4 = FUN_0069fe70();
|
|
|
|
if ((*(byte *)(param_1 + 0x1de) & 2) != 0) {
|
|
|
|
local_18 = 0x3f800000;
|
|
|
|
FUN_00460bf0(0x88,&local_18);
|
|
|
|
local_10 = 0;
|
|
|
|
FUN_00460b30(0x89,&local_10);
|
|
|
|
uVar1 = param_1[0x1de];
|
|
|
|
local_1c = param_1[0x1da] - param_1[0x1d8];
|
|
|
|
if ((uVar1 & 1) == 0) {
|
|
|
|
local_1c = param_1[0x1db] - param_1[0x1d9];
|
|
|
|
}
|
|
|
|
iVar5 = FUN_005df4c4();
|
|
|
|
if (iVar5 < local_10) {
|
|
|
|
iVar5 = local_10;
|
|
|
|
}
|
|
|
|
if ((uVar1 & 1) == 1) {
|
|
|
|
iVar4 = iVar5;
|
|
|
|
iVar5 = local_4;
|
|
|
|
}
|
|
|
|
local_4 = iVar5;
|
|
|
|
(**(code **)(*(int *)param_1[0x1c8] + 0x30))(iVar4,local_4);
|
|
|
|
}
|
|
|
|
FUN_00470d60(&local_18,local_24);
|
|
|
|
iVar7 = local_18;
|
|
|
|
(**(code **)(*(int *)param_1[0x1c8] + 0x2c))(local_18,iStack_14);
|
|
|
|
iVar5 = param_1[0x1de];
|
|
|
|
iVar7 = iVar4 / 2 + iVar7;
|
|
|
|
local_10 = FUN_0069fe70();
|
|
|
|
piVar6 = (int *)FUN_00463ba0(4);
|
|
|
|
if (piVar6 != (int *)0x0) {
|
|
|
|
(**(code **)(*piVar6 + 0x18))(((byte)iVar5 & 4) != 4);
|
|
|
|
(**(code **)(*piVar6 + 0x2c))(0,0);
|
|
|
|
(**(code **)(*piVar6 + 0x30))(iVar7,local_1c);
|
|
|
|
}
|
|
|
|
iVar4 = param_1[0x1de];
|
|
|
|
local_10 = FUN_0069fe70();
|
|
|
|
iVar5 = FUN_0069fe60();
|
|
|
|
piVar6 = (int *)FUN_00463ba0(6);
|
|
|
|
if (piVar6 != (int *)0x0) {
|
|
|
|
(**(code **)(*piVar6 + 0x18))(((byte)iVar4 & 4) != 4);
|
|
|
|
(**(code **)(*piVar6 + 0x2c))(iVar7,0);
|
|
|
|
(**(code **)(*piVar6 + 0x30))(iVar5 - iVar7,local_1c);
|
|
|
|
}
|
|
|
|
iVar4 = param_1[0x1de];
|
|
|
|
iVar5 = local_4 / 2 + iStack_14;
|
|
|
|
local_10 = FUN_0069fe60();
|
|
|
|
piVar6 = (int *)FUN_00463ba0(5);
|
|
|
|
if (piVar6 != (int *)0x0) {
|
|
|
|
(**(code **)(*piVar6 + 0x18))(((byte)iVar4 & 4) != 4);
|
|
|
|
(**(code **)(*piVar6 + 0x2c))(0,0);
|
|
|
|
(**(code **)(*piVar6 + 0x30))(local_1c,iVar5);
|
|
|
|
}
|
|
|
|
iVar4 = param_1[0x1de];
|
|
|
|
iVar7 = FUN_0069fe70();
|
|
|
|
local_10 = FUN_0069fe60();
|
|
|
|
piVar6 = (int *)FUN_00463ba0(7);
|
|
|
|
if (piVar6 != (int *)0x0) {
|
|
|
|
(**(code **)(*piVar6 + 0x18))(((byte)iVar4 & 4) != 4);
|
|
|
|
(**(code **)(*piVar6 + 0x2c))(0,iVar5);
|
|
|
|
(**(code **)(*piVar6 + 0x30))(local_1c,iVar7 - iVar5);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
uVar1 = param_1[0x1de];
|
|
|
|
if (((uVar1 & 4) == 0) || ((uVar1 & 8) == 0)) {
|
|
|
|
bVar2 = false;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
bVar2 = true;
|
|
|
|
}
|
|
|
|
(**(code **)(*param_1 + 0x18))(CONCAT31((int3)(uVar1 >> 8),!bVar2));
|
|
|
|
if ((param_1[0x1de] & 0x1000000U) != 0) {
|
|
|
|
(**(code **)(*param_1 + 0x9c))((-(uint)(((byte)param_1[0x1de] & 4) != 4) & 0xfffffff4) + 0xd);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00471810 at 0x00471810 (size: 120) ---
|
|
|
|
|
|
void __thiscall FUN_00471810(int param_1,int param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
char cVar1;
|
|
|
|
bool bVar2;
|
|
|
|
|
|
|
|
bVar2 = param_2 == 5;
|
|
|
|
param_2 = 0;
|
|
|
|
cVar1 = FUN_00460bf0(0x86,¶m_2);
|
|
|
|
if (cVar1 != '\0') {
|
|
|
|
if ((*(uint *)(param_1 + 0x778) & 0x100) != 0) {
|
|
|
|
FUN_004711f0(0x86,((-(uint)(((byte)*(uint *)(param_1 + 0x778) & 1) != 1) & 2) - 1) *
|
|
|
|
((uint)bVar2 * 2 + -1));
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
FUN_00460410(0xe - (uint)bVar2,0,0);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00471c30 at 0x00471C30 (size: 681) ---
|
|
|
|
|
|
void __thiscall FUN_00471c30(int param_1,int *param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
bool bVar1;
|
|
|
|
bool bVar2;
|
|
|
|
bool bVar3;
|
|
|
|
int *piVar4;
|
|
|
|
int iVar5;
|
|
|
|
int iVar6;
|
|
|
|
uint uVar7;
|
|
|
|
int local_38;
|
|
|
|
int local_34;
|
|
|
|
int local_30;
|
|
|
|
int local_2c;
|
|
|
|
undefined1 local_28 [20];
|
|
|
|
int iStack_14;
|
|
|
|
int iStack_10;
|
|
|
|
int iStack_c;
|
|
|
|
int iStack_8;
|
|
|
|
|
|
|
|
iVar5 = param_2[1];
|
|
|
|
if ((iVar5 == *(int *)(param_1 + 0x720)) ||
|
|
|
|
((iVar5 == param_1 && ((*(byte *)(param_1 + 0x778) & 0x40) != 0)))) {
|
|
|
|
bVar3 = true;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
bVar3 = false;
|
|
|
|
}
|
|
|
|
for (piVar4 = *(int **)(*(int *)(iVar5 + 400) + (int)(7 % (ulonglong)*(uint *)(iVar5 + 0x198)) * 4
|
|
|
|
); piVar4 != (int *)0x0; piVar4 = (int *)piVar4[1]) {
|
|
|
|
if (*piVar4 == 7) {
|
|
|
|
if (piVar4 != (int *)0x0) goto LAB_00471cc8;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
piVar4 = *(int **)(*(int *)(iVar5 + 400) + (int)(10 % (ulonglong)*(uint *)(iVar5 + 0x198)) * 4);
|
|
|
|
if (piVar4 == (int *)0x0) {
|
|
|
|
LAB_00471cc4:
|
|
|
|
bVar1 = false;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
while (*piVar4 != 10) {
|
|
|
|
piVar4 = (int *)piVar4[1];
|
|
|
|
if (piVar4 == (int *)0x0) goto code_r0x00471cbc;
|
|
|
|
}
|
|
|
|
if (piVar4 == (int *)0x0) goto LAB_00471cc4;
|
|
|
|
LAB_00471cc8:
|
|
|
|
bVar1 = true;
|
|
|
|
}
|
|
|
|
LAB_00471cca:
|
|
|
|
if ((param_2[3] == 7) || (param_2[3] == 10)) {
|
|
|
|
bVar2 = true;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
bVar2 = false;
|
|
|
|
}
|
|
|
|
switch(param_2[2]) {
|
|
|
|
case 2:
|
|
|
|
if ((*param_2 == *(int *)(param_1 + 0x770)) || (*param_2 == *(int *)(param_1 + 0x774))) {
|
|
|
|
FUN_00471250(param_2);
|
|
|
|
FUN_004725d0(param_2);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
if (iVar5 == param_1) {
|
|
|
|
FUN_00459ce0(param_2);
|
|
|
|
iVar5 = (**(code **)(*DAT_00837ff4 + 0x18))();
|
|
|
|
iStack_14 = iVar5;
|
|
|
|
iVar6 = (**(code **)(*DAT_00837ff4 + 0x1c))();
|
|
|
|
iStack_10 = iVar6;
|
|
|
|
iStack_c = FUN_0069fe00();
|
|
|
|
iStack_c = iVar5 - iStack_c;
|
|
|
|
iStack_8 = FUN_0069fe30();
|
|
|
|
iStack_8 = iVar6 - iStack_8;
|
|
|
|
FUN_00470a90(local_28);
|
|
|
|
FUN_004725d0(param_2);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
case 3:
|
|
|
|
case 4:
|
|
|
|
case 5:
|
|
|
|
case 6:
|
|
|
|
case 7:
|
|
|
|
case 8:
|
|
|
|
case 9:
|
|
|
|
case 10:
|
|
|
|
case 0xb:
|
|
|
|
case 0xc:
|
|
|
|
case 0xd:
|
|
|
|
case 0xe:
|
|
|
|
case 0xf:
|
|
|
|
case 0x10:
|
|
|
|
case 0x11:
|
|
|
|
case 0x12:
|
|
|
|
case 0x13:
|
|
|
|
case 0x14:
|
|
|
|
case 0x15:
|
|
|
|
case 0x16:
|
|
|
|
case 0x17:
|
|
|
|
case 0x18:
|
|
|
|
case 0x19:
|
|
|
|
case 0x1a:
|
|
|
|
case 0x1b:
|
|
|
|
break;
|
|
|
|
case 0x1c:
|
|
|
|
if ((bVar3) && (bVar1)) {
|
|
|
|
FUN_00471370(param_2);
|
|
|
|
FUN_004725d0(param_2);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
case 0x1d:
|
|
|
|
if (((bVar3) && (bVar2)) && (*(char *)(param_1 + 0x75c) != '\0')) {
|
|
|
|
*(undefined1 *)(param_1 + 0x75c) = 0;
|
|
|
|
FUN_004725d0(param_2);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
case 0x1e:
|
|
|
|
if ((bVar3) && (bVar1)) {
|
|
|
|
FUN_00470620(&local_38,param_2);
|
|
|
|
uVar7 = FUN_004708b0(&local_38);
|
|
|
|
if ((int)((uVar7 ^ (int)uVar7 >> 0x1f) - ((int)uVar7 >> 0x1f)) < 0x65) {
|
|
|
|
if ((*(byte *)(param_1 + 0x778) & 0x40) == 0) {
|
|
|
|
local_30 = local_38 - *(int *)(param_1 + 0x750);
|
|
|
|
local_2c = local_34 - *(int *)(param_1 + 0x754);
|
|
|
|
FUN_004713e0(&local_30,*(undefined1 *)(param_1 + 0x75c));
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
FUN_00471310(param_2,*(undefined1 *)(param_1 + 0x75c));
|
|
|
|
}
|
|
|
|
*(undefined1 *)(param_1 + 0x75c) = 1;
|
|
|
|
}
|
|
|
|
else if (*(char *)(param_1 + 0x75c) != '\0') {
|
|
|
|
FUN_00471280(*(undefined4 *)(param_1 + 0x758),0);
|
|
|
|
*(undefined1 *)(param_1 + 0x75c) = 0;
|
|
|
|
FUN_004725d0(param_2);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
goto switchD_00471cf4_default;
|
|
|
|
}
|
|
|
|
switchD_00471cf4_default:
|
|
|
|
FUN_004725d0(param_2);
|
|
|
|
return;
|
|
|
|
code_r0x00471cbc:
|
|
|
|
bVar1 = false;
|
|
|
|
goto LAB_00471cca;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00471f10 at 0x00471F10 (size: 68) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_00471f10(undefined4 *param_1,undefined4 param_2,undefined4 param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_00468800(param_2,param_3);
|
|
|
|
*(undefined1 *)(param_1 + 0x1c4) = 0;
|
|
|
|
*(undefined1 *)((int)param_1 + 0x711) = 0;
|
|
|
|
param_1[0x1c6] = 0;
|
|
|
|
param_1[0x1c7] = 0;
|
|
|
|
*param_1 = &PTR_FUN_0079e280;
|
|
|
|
param_1[0x182] = &PTR_FUN_0079d180;
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00471f80 at 0x00471F80 (size: 51) ---
|
|
|
|
|
|
void __fastcall FUN_00471f80(undefined4 *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
*param_1 = &PTR_FUN_0079e280;
|
|
|
|
param_1[0x182] = &PTR_FUN_0079d180;
|
|
|
|
if (*(char *)((int)param_1 + 0x711) != '\0') {
|
|
|
|
*(undefined1 *)((int)param_1 + 0x711) = 0;
|
|
|
|
FUN_00465fb0(3);
|
|
|
|
}
|
|
|
|
FUN_004679f0();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00472020 at 0x00472020 (size: 142) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void __thiscall FUN_00472020(int param_1,int param_2,float param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
double dVar1;
|
|
|
|
byte bVar2;
|
|
|
|
|
|
|
|
FUN_0046a730(param_2,param_3);
|
|
|
|
dVar1 = _DAT_008379a8;
|
|
|
|
if ((param_2 == 3) && (*(char *)(param_1 + 0x711) != '\0')) {
|
|
|
|
bVar2 = *(byte *)(param_1 + 0xa4) & 1;
|
|
|
|
if ((bVar2 == 0) && (*(double *)(param_1 + 0x718) < _DAT_008379a8)) {
|
|
|
|
*(double *)(param_1 + 0x718) = _DAT_008379a8;
|
|
|
|
}
|
|
|
|
if ((bVar2 != 0) && (*(double *)(param_1 + 0x718) <= dVar1)) {
|
|
|
|
FUN_00460410(2,0,0);
|
|
|
|
FUN_00460bf0(0x11,¶m_3);
|
|
|
|
*(double *)(param_1 + 0x718) = (double)(param_3 + (float)*(double *)(param_1 + 0x718));
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004720b0 at 0x004720B0 (size: 175) ---
|
|
|
|
|
|
void __fastcall FUN_004720b0(int *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
char cVar2;
|
|
|
|
undefined4 uStack_4;
|
|
|
|
|
|
|
|
uStack_4 = param_1;
|
|
|
|
FUN_00460cc0(0xd,(int)&uStack_4 + 1);
|
|
|
|
if (uStack_4._1_1_ == '\0') {
|
|
|
|
FUN_00460cc0(0xe,(int)&uStack_4 + 2);
|
|
|
|
FUN_00460cc0(0x13,(int)&uStack_4 + 3);
|
|
|
|
cVar2 = (-(uStack_4._2_1_ != '\0') & 5U) + 1;
|
|
|
|
if (((char)param_1[0x1c4] != '\0') ||
|
|
|
|
((uStack_4._3_1_ != '\0' && ((*(byte *)(param_1 + 0x29) & 1) != 0)))) {
|
|
|
|
cVar2 = (-(uStack_4._2_1_ != '\0') & 5U) + 2;
|
|
|
|
}
|
|
|
|
if (((char)param_1[0x1c4] != '\0') && ((*(byte *)(param_1 + 0x29) & 1) != 0)) {
|
|
|
|
cVar2 = (-(uStack_4._2_1_ != '\0') & 5U) + 3;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
cVar2 = '\r';
|
|
|
|
}
|
|
|
|
iVar1 = FUN_0069bad0(cVar2);
|
|
|
|
if (iVar1 != 0) {
|
|
|
|
(**(code **)(*param_1 + 0x9c))(cVar2);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00472210 at 0x00472210 (size: 125) ---
|
|
|
|
|
|
undefined1 FUN_00472210(void)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 *puVar1;
|
|
|
|
char cVar2;
|
|
|
|
int iVar3;
|
|
|
|
uint local_4c;
|
|
|
|
uint auStack_48 [7];
|
|
|
|
undefined4 uStack_2c;
|
|
|
|
undefined1 uStack_28;
|
|
|
|
|
|
|
|
cVar2 = FUN_00460990(0x12,&local_4c);
|
|
|
|
if (cVar2 == '\0') {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
if ((((local_4c != 1) && (DAT_00837ff4 != (int *)0x0)) &&
|
|
|
|
(iVar3 = (**(code **)(*DAT_00837ff4 + 0x44))(), puVar1 = DAT_0083e03c, iVar3 != 0)) &&
|
|
|
|
(DAT_0083e03c != (undefined4 *)0x0)) {
|
|
|
|
FUN_00430ee0();
|
|
|
|
auStack_48[0] = local_4c;
|
|
|
|
uStack_2c = 3;
|
|
|
|
uStack_28 = 1;
|
|
|
|
(**(code **)*puVar1)(auStack_48);
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00472290 at 0x00472290 (size: 72) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_00472290(undefined4 *param_1,byte param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
*param_1 = &PTR_FUN_0079e280;
|
|
|
|
param_1[0x182] = &PTR_FUN_0079d180;
|
|
|
|
if (*(char *)((int)param_1 + 0x711) != '\0') {
|
|
|
|
*(undefined1 *)((int)param_1 + 0x711) = 0;
|
|
|
|
FUN_00465fb0(3);
|
|
|
|
}
|
|
|
|
FUN_004679f0();
|
|
|
|
if ((param_2 & 1) != 0) {
|
|
|
|
operator_delete(param_1);
|
|
|
|
}
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004722e0 at 0x004722E0 (size: 16) ---
|
|
|
|
|
|
void FUN_004722e0(void)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_00460270(1,&LAB_00471fc0);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004722f0 at 0x004722F0 (size: 16) ---
|
|
|
|
|
|
void FUN_004722f0(void)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_00474870();
|
|
|
|
FUN_004720b0();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00472300 at 0x00472300 (size: 140) ---
|
|
|
|
|
|
void __thiscall FUN_00472300(int *param_1,uint param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
uint uVar2;
|
|
|
|
undefined4 uVar3;
|
|
|
|
|
|
|
|
uVar2 = param_2;
|
|
|
|
FUN_0046a8d0(param_2);
|
|
|
|
uVar3 = FUN_00429a00();
|
|
|
|
switch(uVar3) {
|
|
|
|
case 0xd:
|
|
|
|
FUN_004720b0();
|
|
|
|
iVar1 = *param_1;
|
|
|
|
uVar3 = (**(code **)(iVar1 + 0x124))();
|
|
|
|
(**(code **)(iVar1 + 0x110))(uVar3);
|
|
|
|
return;
|
|
|
|
case 0xe:
|
|
|
|
case 0x13:
|
|
|
|
FUN_004720b0();
|
|
|
|
return;
|
|
|
|
case 0xf:
|
|
|
|
param_2 = param_2 & 0xffffff00;
|
|
|
|
if (*(int **)(uVar2 + 4) != (int *)0x0) {
|
|
|
|
(**(code **)(**(int **)(uVar2 + 4) + 0x70))(¶m_2);
|
|
|
|
}
|
|
|
|
if ((*(char *)((int)param_1 + 0x711) != '\0') && ((char)param_2 == '\0')) {
|
|
|
|
*(undefined1 *)((int)param_1 + 0x711) = 0;
|
|
|
|
FUN_00465fb0(3);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004723b0 at 0x004723B0 (size: 231) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void __thiscall FUN_004723b0(float param_1,undefined4 param_2,undefined4 param_3,int param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
uint uVar1;
|
|
|
|
int iVar2;
|
|
|
|
float local_4;
|
|
|
|
|
|
|
|
iVar2 = param_4;
|
|
|
|
local_4 = param_1;
|
|
|
|
FUN_00469600(param_2,param_3,param_4);
|
|
|
|
uVar1 = *(uint *)((int)param_1 + 0x554);
|
|
|
|
if (((((uVar1 >> 0x17 & 1) == 0) && (iVar2 == 10)) || (iVar2 == 7)) &&
|
|
|
|
(((uVar1 >> 0x13 & 1) == 0 && ((uVar1 >> 0x12 & 1) == 0)))) {
|
|
|
|
*(undefined1 *)((int)param_1 + 0x710) = 1;
|
|
|
|
FUN_004720b0();
|
|
|
|
FUN_00460cc0(0xd,¶m_4);
|
|
|
|
FUN_00460cc0(0xc,¶m_3);
|
|
|
|
if (((char)param_4 == '\0') || ((char)param_3 != '\0')) {
|
|
|
|
FUN_00460cc0(0xf,¶m_2);
|
|
|
|
if ((char)param_2 != '\0') {
|
|
|
|
FUN_00460410(2,iVar2,0);
|
|
|
|
*(undefined1 *)((int)param_1 + 0x711) = 1;
|
|
|
|
FUN_00465f90(3);
|
|
|
|
FUN_00460bf0(0x10,&local_4);
|
|
|
|
*(double *)((int)param_1 + 0x718) = (double)(local_4 + (float)_DAT_008379a8);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004724a0 at 0x004724A0 (size: 259) ---
|
|
|
|
|
|
void __thiscall FUN_004724a0(int param_1,undefined4 param_2,undefined4 param_3,uint param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
bool bVar1;
|
|
|
|
uint uVar2;
|
|
|
|
undefined4 uStack_4;
|
|
|
|
|
|
|
|
uVar2 = param_4;
|
|
|
|
uStack_4 = param_1;
|
|
|
|
FUN_00469780(param_2,param_3,param_4);
|
|
|
|
FUN_00460cc0(0xd,¶m_3);
|
|
|
|
FUN_00460cc0(0xc,(int)&uStack_4 + 3);
|
|
|
|
bVar1 = false;
|
|
|
|
if ((*(char *)(param_1 + 0x710) != '\0') && ((uVar2 == 7 || (uVar2 == 10)))) {
|
|
|
|
if (((*(byte *)(param_1 + 0xa4) & 1) != 0) && ((char)param_3 == '\0')) {
|
|
|
|
param_4 = param_4 & 0xffffff00;
|
|
|
|
FUN_00460cc0(0xb,¶m_4);
|
|
|
|
if ((char)param_4 != '\0') {
|
|
|
|
FUN_00460cc0(0xe,¶m_2);
|
|
|
|
FUN_00460820(0xe,(char)param_2 == '\0');
|
|
|
|
}
|
|
|
|
if ((((char)param_3 == '\0') || (uStack_4._3_1_ != '\0')) &&
|
|
|
|
(*(char *)(param_1 + 0x711) == '\0')) {
|
|
|
|
bVar1 = true;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
bVar1 = false;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
*(undefined1 *)(param_1 + 0x710) = 0;
|
|
|
|
if (*(char *)(param_1 + 0x711) != '\0') {
|
|
|
|
*(undefined1 *)(param_1 + 0x711) = 0;
|
|
|
|
FUN_00465fb0(3);
|
|
|
|
}
|
|
|
|
FUN_004720b0();
|
|
|
|
if (bVar1) {
|
|
|
|
FUN_00460410(1,7,0);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004725d0 at 0x004725D0 (size: 76) ---
|
|
|
|
|
|
undefined4 __thiscall FUN_004725d0(int param_1,int param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
char cVar2;
|
|
|
|
undefined4 uVar3;
|
|
|
|
|
|
|
|
iVar1 = param_2;
|
|
|
|
if ((*(int *)(param_2 + 4) == param_1) && (*(int *)(param_2 + 8) == 1)) {
|
|
|
|
FUN_00460cc0(0xd,¶m_2);
|
|
|
|
if ((char)param_2 == '\0') {
|
|
|
|
cVar2 = FUN_00472210(iVar1);
|
|
|
|
if (cVar2 == '\0') goto LAB_0047260f;
|
|
|
|
}
|
|
|
|
return 2;
|
|
|
|
}
|
|
|
|
LAB_0047260f:
|
|
|
|
uVar3 = FUN_00468a50(iVar1);
|
|
|
|
return uVar3;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00472620 at 0x00472620 (size: 77) ---
|
|
|
|
|
|
bool FUN_00472620(int *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
char cVar1;
|
|
|
|
char cVar2;
|
|
|
|
|
|
|
|
cVar1 = FUN_00467a90(param_1);
|
|
|
|
FUN_00425ba0();
|
|
|
|
if (param_1 == (int *)0x0) {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
cVar2 = FUN_00427240(1,param_1);
|
|
|
|
(**(code **)(*param_1 + 0x14))();
|
|
|
|
return cVar2 != '\0' && cVar1 != '\0';
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00472670 at 0x00472670 (size: 46) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_00472670(undefined4 *param_1,undefined4 param_2,undefined4 param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_00464900(param_2,param_3);
|
|
|
|
*(undefined1 *)(param_1 + 0x17c) = 0;
|
|
|
|
param_1[0x17d] = 0;
|
|
|
|
*param_1 = &PTR_FUN_0079e3c0;
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004726c0 at 0x004726C0 (size: 11) ---
|
|
|
|
|
|
void __fastcall FUN_004726c0(undefined4 *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
*param_1 = &PTR_FUN_0079e3c0;
|
|
|
|
FUN_00464e00();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00472810 at 0x00472810 (size: 53) ---
|
|
|
|
|
|
void __thiscall FUN_00472810(int *param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
if ((char)param_1[0x17c] != '\0') {
|
|
|
|
(**(code **)(*param_1 + 0x9c))(param_1[0x17d]);
|
|
|
|
*(undefined1 *)(param_1 + 0x17c) = 0;
|
|
|
|
}
|
|
|
|
FUN_00461860(param_2);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00472850 at 0x00472850 (size: 36) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_00472850(undefined4 *param_1,byte param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
*param_1 = &PTR_FUN_0079e3c0;
|
|
|
|
FUN_00464e00();
|
|
|
|
if ((param_2 & 1) != 0) {
|
|
|
|
operator_delete(param_1);
|
|
|
|
}
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00472880 at 0x00472880 (size: 16) ---
|
|
|
|
|
|
void FUN_00472880(void)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_00460270(3,&LAB_004726d0);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00472890 at 0x00472890 (size: 77) ---
|
|
|
|
|
|
bool FUN_00472890(int *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
char cVar1;
|
|
|
|
char cVar2;
|
|
|
|
|
|
|
|
cVar1 = FUN_004625b0(param_1);
|
|
|
|
FUN_00425ba0();
|
|
|
|
if (param_1 == (int *)0x0) {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
cVar2 = FUN_00427240(9,param_1);
|
|
|
|
(**(code **)(*param_1 + 0x14))();
|
|
|
|
return cVar2 != '\0' && cVar1 != '\0';
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004728e0 at 0x004728E0 (size: 32) ---
|
|
|
|
|
|
undefined4 FUN_004728e0(short param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
if (((param_1 != 9) && (param_1 != 0xd)) && (param_1 != 0x20)) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00472900 at 0x00472900 (size: 98) ---
|
|
|
|
|
|
undefined4 FUN_00472900(short param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
if (((((param_1 != 0x21) && (param_1 != 0x29)) && (param_1 != 0x2c)) &&
|
|
|
|
((((param_1 != 0x2e && (param_1 != 0x3f)) &&
|
|
|
|
((param_1 != 0x3001 && ((param_1 != 0x3002 && (param_1 != 0x30fc)))))) && (param_1 != -0xff)
|
|
|
|
))) && ((((param_1 != -0xf7 && (param_1 != -0xe1)) && (param_1 != -0x90)) &&
|
|
|
|
((param_1 != -0x62 && (param_1 != -0x61)))))) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00472970 at 0x00472970 (size: 26) ---
|
|
|
|
|
|
undefined4 FUN_00472970(short param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
if ((param_1 != 0x28) && (param_1 != -0xf8)) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00472990 at 0x00472990 (size: 62) ---
|
|
|
|
|
|
undefined4 FUN_00472990(ushort param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
if (((((param_1 < 0x1100) || (0x11ff < param_1)) && ((param_1 < 0x3000 || (0xd7af < param_1)))) &&
|
|
|
|
((param_1 < 0xf900 || (0xfaff < param_1)))) && ((param_1 < 0xff00 || (0xffdc < param_1)))) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004729d0 at 0x004729D0 (size: 122) ---
|
|
|
|
|
|
undefined4 FUN_004729d0(short *param_1,short *param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
short sVar1;
|
|
|
|
short sVar2;
|
|
|
|
char cVar3;
|
|
|
|
|
|
|
|
if (((param_2 == (short *)0x0) || (param_1 == (short *)0x0)) || (param_1 == param_2)) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
sVar1 = *param_1;
|
|
|
|
sVar2 = *param_2;
|
|
|
|
if (sVar1 == 10) {
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
cVar3 = FUN_004728e0(sVar1);
|
|
|
|
if (((cVar3 == '\0') && (cVar3 = FUN_00472990(sVar2), cVar3 == '\0')) &&
|
|
|
|
(cVar3 = FUN_00472990(sVar1), cVar3 == '\0')) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
cVar3 = FUN_00472900(sVar2);
|
|
|
|
if ((cVar3 == '\0') && (cVar3 = FUN_00472970(sVar1), cVar3 == '\0')) {
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00472ab0 at 0x00472AB0 (size: 126) ---
|
|
|
|
|
|
undefined4 __thiscall FUN_00472ab0(int param_1,uint param_2,uint *param_3,undefined4 *param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
uint uVar1;
|
|
|
|
uint uVar2;
|
|
|
|
uint uVar3;
|
|
|
|
int iVar4;
|
|
|
|
|
|
|
|
if (*(uint *)(param_1 + 0x10) < param_2) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
*param_3 = 0;
|
|
|
|
*param_4 = 0;
|
|
|
|
uVar2 = *(uint *)(param_1 + 0x1c);
|
|
|
|
if (uVar2 != 0) {
|
|
|
|
iVar4 = 0;
|
|
|
|
uVar3 = 0;
|
|
|
|
while ((uVar3 != uVar2 - 1 &&
|
|
|
|
((uVar1 = uVar3 + 1, uVar2 <= uVar1 ||
|
|
|
|
(*(uint *)(iVar4 + 0x14 + *(int *)(param_1 + 0x14)) <= param_2))))) {
|
|
|
|
iVar4 = iVar4 + 0x10;
|
|
|
|
uVar3 = uVar1;
|
|
|
|
if (uVar2 <= uVar1) {
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
*param_3 = uVar3;
|
|
|
|
*param_4 = *(undefined4 *)(uVar3 * 0x10 + 4 + *(int *)(param_1 + 0x14));
|
|
|
|
}
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00472b30 at 0x00472B30 (size: 121) ---
|
|
|
|
|
|
undefined4 __thiscall FUN_00472b30(int param_1,uint param_2,uint *param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
uint uVar1;
|
|
|
|
int *piVar2;
|
|
|
|
uint *puVar3;
|
|
|
|
uint uVar4;
|
|
|
|
int iVar5;
|
|
|
|
uint local_4;
|
|
|
|
|
|
|
|
if ((int)param_2 < 1) {
|
|
|
|
*param_3 = 0;
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
uVar1 = *(uint *)(param_1 + 0x1c);
|
|
|
|
iVar5 = 0;
|
|
|
|
uVar4 = 0;
|
|
|
|
if (uVar1 != 0) {
|
|
|
|
piVar2 = (int *)(*(int *)(param_1 + 0x14) + 0xc);
|
|
|
|
do {
|
|
|
|
iVar5 = iVar5 + *piVar2;
|
|
|
|
if ((int)param_2 <= iVar5) {
|
|
|
|
*param_3 = uVar4;
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
uVar4 = uVar4 + 1;
|
|
|
|
piVar2 = piVar2 + 4;
|
|
|
|
} while (uVar4 < uVar1);
|
|
|
|
}
|
|
|
|
local_4 = 0;
|
|
|
|
puVar3 = ¶m_2;
|
|
|
|
if ((int)(uVar1 - 1) < 1) {
|
|
|
|
puVar3 = &local_4;
|
|
|
|
}
|
|
|
|
*param_3 = *puVar3;
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00472bb0 at 0x00472BB0 (size: 70) ---
|
|
|
|
|
|
undefined4 __thiscall FUN_00472bb0(int param_1,int param_2,uint *param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
uint uVar1;
|
|
|
|
uint uVar2;
|
|
|
|
int iVar3;
|
|
|
|
int *piVar4;
|
|
|
|
|
|
|
|
uVar1 = *(uint *)(param_1 + 0x1c);
|
|
|
|
iVar3 = *(int *)(*(int *)(param_1 + 0x14) + 0xc);
|
|
|
|
uVar2 = 1;
|
|
|
|
if (1 < uVar1) {
|
|
|
|
piVar4 = (int *)(*(int *)(param_1 + 0x14) + 0x1c);
|
|
|
|
do {
|
|
|
|
iVar3 = iVar3 + *piVar4;
|
|
|
|
if (param_2 < iVar3) {
|
|
|
|
*param_3 = uVar2 - 1;
|
|
|
|
return CONCAT31((int3)(uVar2 - 1 >> 8),1);
|
|
|
|
}
|
|
|
|
uVar2 = uVar2 + 1;
|
|
|
|
piVar4 = piVar4 + 4;
|
|
|
|
} while (uVar2 < uVar1);
|
|
|
|
}
|
|
|
|
*param_3 = uVar1;
|
|
|
|
return CONCAT31((int3)(uVar2 >> 8),1);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00472c00 at 0x00472C00 (size: 86) ---
|
|
|
|
|
|
undefined4 __thiscall FUN_00472c00(int param_1,undefined4 param_2,int *param_3,undefined4 *param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
int *piVar2;
|
|
|
|
undefined4 *puVar3;
|
|
|
|
char cVar4;
|
|
|
|
int *piVar5;
|
|
|
|
|
|
|
|
puVar3 = param_4;
|
|
|
|
piVar2 = param_3;
|
|
|
|
cVar4 = FUN_00472ab0(param_2,param_3,param_4);
|
|
|
|
if ((cVar4 != '\0') && (*(int *)(param_1 + 0x1c) != 0)) {
|
|
|
|
param_4 = (undefined4 *)(*(int *)(param_1 + 0x1c) - 1);
|
|
|
|
param_3 = (int *)(*piVar2 + 1);
|
|
|
|
piVar5 = (int *)¶m_4;
|
|
|
|
if (param_3 <= param_4) {
|
|
|
|
piVar5 = (int *)¶m_3;
|
|
|
|
}
|
|
|
|
iVar1 = *piVar5;
|
|
|
|
*piVar2 = iVar1;
|
|
|
|
*puVar3 = *(undefined4 *)(iVar1 * 0x10 + 4 + *(int *)(param_1 + 0x14));
|
|
|
|
}
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00472c60 at 0x00472C60 (size: 85) ---
|
|
|
|
|
|
undefined4 __thiscall FUN_00472c60(int param_1,undefined4 param_2,int *param_3,undefined4 *param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
int *piVar2;
|
|
|
|
undefined4 *puVar3;
|
|
|
|
char cVar4;
|
|
|
|
int *piVar5;
|
|
|
|
|
|
|
|
puVar3 = param_4;
|
|
|
|
piVar2 = param_3;
|
|
|
|
cVar4 = FUN_00472ab0(param_2,param_3,param_4);
|
|
|
|
if ((cVar4 != '\0') && (*(int *)(param_1 + 0x1c) != 0)) {
|
|
|
|
param_3 = (int *)(*piVar2 + -1);
|
|
|
|
param_4 = (undefined4 *)0x0;
|
|
|
|
piVar5 = (int *)¶m_4;
|
|
|
|
if (-1 < (int)param_3) {
|
|
|
|
piVar5 = (int *)¶m_3;
|
|
|
|
}
|
|
|
|
iVar1 = *piVar5;
|
|
|
|
*piVar2 = iVar1;
|
|
|
|
*puVar3 = *(undefined4 *)(iVar1 * 0x10 + 4 + *(int *)(param_1 + 0x14));
|
|
|
|
}
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00472cc0 at 0x00472CC0 (size: 41) ---
|
|
|
|
|
|
uint __thiscall FUN_00472cc0(int param_1,uint param_2,undefined4 *param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 uVar1;
|
|
|
|
|
|
|
|
*param_3 = 0;
|
|
|
|
if (param_2 < *(uint *)(param_1 + 0x1c)) {
|
|
|
|
uVar1 = *(undefined4 *)(param_2 * 0x10 + 0xc + *(int *)(param_1 + 0x14));
|
|
|
|
*param_3 = uVar1;
|
|
|
|
return CONCAT31((int3)((uint)uVar1 >> 8),1);
|
|
|
|
}
|
|
|
|
return param_2 & 0xffffff00;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00472cf0 at 0x00472CF0 (size: 41) ---
|
|
|
|
|
|
uint __thiscall FUN_00472cf0(int param_1,uint param_2,undefined4 *param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 uVar1;
|
|
|
|
|
|
|
|
*param_3 = 0;
|
|
|
|
if (param_2 < *(uint *)(param_1 + 0x1c)) {
|
|
|
|
uVar1 = *(undefined4 *)(param_2 * 0x10 + 8 + *(int *)(param_1 + 0x14));
|
|
|
|
*param_3 = uVar1;
|
|
|
|
return CONCAT31((int3)((uint)uVar1 >> 8),1);
|
|
|
|
}
|
|
|
|
return param_2 & 0xffffff00;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00472d20 at 0x00472D20 (size: 106) ---
|
|
|
|
|
|
undefined4 __thiscall FUN_00472d20(int param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
int iVar2;
|
|
|
|
|
|
|
|
iVar1 = FUN_005df0f5(0x2c);
|
|
|
|
if (iVar1 == 0) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
FUN_00474d30(param_2);
|
|
|
|
*(undefined4 *)(iVar1 + 0x24) = 0;
|
|
|
|
*(undefined4 *)(iVar1 + 0x28) = 0;
|
|
|
|
if (*(int *)(param_1 + 4) == 0) {
|
|
|
|
iVar2 = *(int *)(param_1 + 0xc) + 1;
|
|
|
|
*(int *)(param_1 + 4) = iVar1;
|
|
|
|
*(int *)(param_1 + 8) = iVar1;
|
|
|
|
*(int *)(param_1 + 0xc) = iVar2;
|
|
|
|
return CONCAT31((int3)((uint)iVar2 >> 8),1);
|
|
|
|
}
|
|
|
|
iVar2 = *(int *)(param_1 + 8);
|
|
|
|
*(int *)(iVar2 + 0x24) = iVar1;
|
|
|
|
*(int *)(iVar1 + 0x28) = iVar2;
|
|
|
|
iVar2 = *(int *)(param_1 + 0xc) + 1;
|
|
|
|
*(int *)(param_1 + 8) = iVar1;
|
|
|
|
*(int *)(param_1 + 0xc) = iVar2;
|
|
|
|
return CONCAT31((int3)((uint)iVar2 >> 8),1);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00472d90 at 0x00472D90 (size: 132) ---
|
|
|
|
|
|
undefined4 __thiscall FUN_00472d90(int param_1,int param_2,undefined4 param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
|
|
|
|
iVar1 = FUN_005df0f5(0x2c);
|
|
|
|
if (iVar1 == 0) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
FUN_00474d30(param_3);
|
|
|
|
*(undefined4 *)(iVar1 + 0x24) = 0;
|
|
|
|
*(undefined4 *)(iVar1 + 0x28) = 0;
|
|
|
|
if (*(int *)(param_1 + 4) == 0) {
|
|
|
|
*(int *)(param_1 + 4) = iVar1;
|
|
|
|
*(int *)(param_1 + 8) = iVar1;
|
|
|
|
*(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + 1;
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
*(int *)(iVar1 + 0x24) = param_2;
|
|
|
|
*(undefined4 *)(iVar1 + 0x28) = *(undefined4 *)(param_2 + 0x28);
|
|
|
|
if (*(int *)(param_2 + 0x28) != 0) {
|
|
|
|
*(int *)(*(int *)(param_2 + 0x28) + 0x24) = iVar1;
|
|
|
|
*(int *)(param_2 + 0x28) = iVar1;
|
|
|
|
*(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + 1;
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
*(int *)(param_1 + 4) = iVar1;
|
|
|
|
*(int *)(param_2 + 0x28) = iVar1;
|
|
|
|
*(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + 1;
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00472e40 at 0x00472E40 (size: 88) ---
|
|
|
|
|
|
undefined4 __thiscall FUN_00472e40(int param_1,uint param_2,uint *param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
bool bVar1;
|
|
|
|
char cVar2;
|
|
|
|
int iVar3;
|
|
|
|
uint uVar4;
|
|
|
|
|
|
|
|
if (*(uint *)(param_1 + 0x10) < param_2) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
*param_3 = param_2;
|
|
|
|
iVar3 = *(int *)(param_1 + 8);
|
|
|
|
bVar1 = false;
|
|
|
|
uVar4 = 0;
|
|
|
|
if (iVar3 == 0) {
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
while( true ) {
|
|
|
|
if (param_2 <= uVar4) {
|
|
|
|
cVar2 = FUN_00474b90();
|
|
|
|
if (cVar2 == '\0') {
|
|
|
|
if (bVar1) {
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
bVar1 = true;
|
|
|
|
}
|
|
|
|
*param_3 = *param_3 + 1;
|
|
|
|
}
|
|
|
|
uVar4 = uVar4 + 1;
|
|
|
|
if (iVar3 == 0) break;
|
|
|
|
iVar3 = *(int *)(iVar3 + 0x24);
|
|
|
|
if (iVar3 == 0) {
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00472ea0 at 0x00472EA0 (size: 93) ---
|
|
|
|
|
|
undefined4 __thiscall FUN_00472ea0(int param_1,uint param_2,uint *param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
bool bVar1;
|
|
|
|
char cVar2;
|
|
|
|
uint uVar3;
|
|
|
|
int iVar4;
|
|
|
|
uint uVar5;
|
|
|
|
|
|
|
|
if (*(uint *)(param_1 + 0x10) < param_2) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
iVar4 = *(int *)(param_1 + 8);
|
|
|
|
uVar3 = 0;
|
|
|
|
uVar5 = 0;
|
|
|
|
if (iVar4 != 0) {
|
|
|
|
bVar1 = true;
|
|
|
|
while (uVar5 < param_2) {
|
|
|
|
cVar2 = FUN_00474b90();
|
|
|
|
if (cVar2 == '\0') {
|
|
|
|
if (bVar1) {
|
|
|
|
bVar1 = false;
|
|
|
|
uVar3 = uVar5;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
bVar1 = true;
|
|
|
|
}
|
|
|
|
uVar5 = uVar5 + 1;
|
|
|
|
if ((iVar4 == 0) || (iVar4 = *(int *)(iVar4 + 0x24), iVar4 == 0)) break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
*param_3 = uVar3;
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00472f00 at 0x00472F00 (size: 107) ---
|
|
|
|
|
|
uint __thiscall FUN_00472f00(int param_1,uint param_2,int *param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
uint uVar1;
|
|
|
|
int *piVar2;
|
|
|
|
uint in_EAX;
|
|
|
|
uint uVar3;
|
|
|
|
int iVar4;
|
|
|
|
uint uVar5;
|
|
|
|
|
|
|
|
piVar2 = param_3;
|
|
|
|
uVar1 = param_2;
|
|
|
|
if (*(uint *)(param_1 + 0x10) < param_2) {
|
|
|
|
return in_EAX & 0xffffff00;
|
|
|
|
}
|
|
|
|
*param_3 = 0;
|
|
|
|
param_2 = 0;
|
|
|
|
uVar3 = FUN_00472ab0(uVar1,¶m_3,¶m_2);
|
|
|
|
if ((char)uVar3 != '\0') {
|
|
|
|
iVar4 = *(int *)(param_1 + 8);
|
|
|
|
uVar5 = 0;
|
|
|
|
if (iVar4 != 0) {
|
|
|
|
while (uVar5 < uVar1) {
|
|
|
|
if (param_2 <= uVar5) {
|
|
|
|
*piVar2 = *piVar2 + *(int *)(iVar4 + 4);
|
|
|
|
}
|
|
|
|
uVar5 = uVar5 + 1;
|
|
|
|
if (iVar4 == 0) {
|
|
|
|
return uVar3;
|
|
|
|
}
|
|
|
|
iVar4 = *(int *)(iVar4 + 0x24);
|
|
|
|
if (iVar4 == 0) {
|
|
|
|
return uVar3;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return uVar3;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00472f70 at 0x00472F70 (size: 43) ---
|
|
|
|
|
|
void __thiscall FUN_00472f70(int param_1,int param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
|
|
|
|
if (param_2 != 0) {
|
|
|
|
for (iVar1 = *(int *)(param_1 + 8); iVar1 != 0; iVar1 = *(int *)(iVar1 + 0x24)) {
|
|
|
|
if (*(int *)(iVar1 + 0x20) == param_2) {
|
|
|
|
FUN_00474ce0(0);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00472fa0 at 0x00472FA0 (size: 77) ---
|
|
|
|
|
|
void __thiscall FUN_00472fa0(int param_1,undefined4 *param_2,int param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
int iVar2;
|
|
|
|
int iVar3;
|
|
|
|
|
|
|
|
iVar2 = 0;
|
|
|
|
iVar1 = *(int *)(param_1 + 8);
|
|
|
|
while( true ) {
|
|
|
|
if (iVar1 == 0) {
|
|
|
|
param_2[1] = 0;
|
|
|
|
*param_2 = &PTR_LAB_0079d17c;
|
|
|
|
param_2[2] = param_1 + 4;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
if (iVar2 == param_3) break;
|
|
|
|
iVar3 = 0;
|
|
|
|
if (iVar1 != 0) {
|
|
|
|
iVar3 = *(int *)(iVar1 + 0x24);
|
|
|
|
}
|
|
|
|
iVar2 = iVar2 + 1;
|
|
|
|
iVar1 = iVar3;
|
|
|
|
}
|
|
|
|
param_2[1] = iVar1;
|
|
|
|
*param_2 = &PTR_LAB_0079d17c;
|
|
|
|
param_2[2] = param_1 + 4;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00472ff0 at 0x00472FF0 (size: 44) ---
|
|
|
|
|
|
void __thiscall FUN_00472ff0(int param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
|
|
|
|
*(undefined4 *)(param_1 + 0x2c) = 0;
|
|
|
|
for (iVar1 = *(int *)(param_1 + 8); (iVar1 != 0 && (FUN_00474d60(param_2), iVar1 != 0));
|
|
|
|
iVar1 = *(int *)(iVar1 + 0x24)) {
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00473020 at 0x00473020 (size: 107) ---
|
|
|
|
|
|
uint __thiscall FUN_00473020(int param_1,void *param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
uint in_EAX;
|
|
|
|
int iVar1;
|
|
|
|
undefined4 uVar2;
|
|
|
|
|
|
|
|
uVar2 = 0;
|
|
|
|
if ((param_2 == (void *)0x0) || (in_EAX = 0, *(void **)(param_1 + 4) == (void *)0x0)) {
|
|
|
|
return in_EAX & 0xffffff00;
|
|
|
|
}
|
|
|
|
if (param_2 == *(void **)(param_1 + 4)) {
|
|
|
|
iVar1 = *(int *)((int)param_2 + 0x24);
|
|
|
|
*(int *)(param_1 + 4) = iVar1;
|
|
|
|
if (iVar1 == 0) {
|
|
|
|
*(undefined4 *)(param_1 + 8) = 0;
|
|
|
|
goto LAB_0047306d;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*(undefined4 *)(*(int *)((int)param_2 + 0x28) + 0x24) = *(undefined4 *)((int)param_2 + 0x24);
|
|
|
|
iVar1 = *(int *)((int)param_2 + 0x24);
|
|
|
|
if (iVar1 == 0) {
|
|
|
|
*(undefined4 *)(param_1 + 8) = *(undefined4 *)((int)param_2 + 0x28);
|
|
|
|
goto LAB_0047306d;
|
|
|
|
}
|
|
|
|
uVar2 = *(undefined4 *)((int)param_2 + 0x28);
|
|
|
|
}
|
|
|
|
*(undefined4 *)(iVar1 + 0x28) = uVar2;
|
|
|
|
LAB_0047306d:
|
|
|
|
FUN_00474be0();
|
|
|
|
operator_delete(param_2);
|
|
|
|
iVar1 = *(int *)(param_1 + 0xc) + -1;
|
|
|
|
*(int *)(param_1 + 0xc) = iVar1;
|
|
|
|
return CONCAT31((int3)((uint)iVar1 >> 8),1);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00473090 at 0x00473090 (size: 118) ---
|
|
|
|
|
|
void __fastcall FUN_00473090(int *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 *puVar1;
|
|
|
|
uint uVar2;
|
|
|
|
int iVar3;
|
|
|
|
int iVar4;
|
|
|
|
|
|
|
|
param_1[2] = 0;
|
|
|
|
if ((param_1[1] & 0x80000000U) != 0x80000000) {
|
|
|
|
if (*param_1 != 0) {
|
|
|
|
uVar2 = param_1[1] & 0x7fffffff;
|
|
|
|
if (-1 < (int)(uVar2 - 1)) {
|
|
|
|
iVar4 = (uVar2 - 1) * 0x10;
|
|
|
|
do {
|
|
|
|
iVar3 = *param_1 + iVar4;
|
|
|
|
iVar4 = iVar4 + -0x10;
|
|
|
|
uVar2 = uVar2 - 1;
|
|
|
|
*(undefined4 *)(iVar3 + 4) = 0;
|
|
|
|
*(undefined4 *)(iVar3 + 8) = 0;
|
|
|
|
*(undefined4 *)(iVar3 + 0xc) = 0;
|
|
|
|
} while (uVar2 != 0);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
puVar1 = (undefined4 *)*param_1;
|
|
|
|
if (puVar1 != (undefined4 *)0x0) {
|
|
|
|
if (puVar1[-1] != 0) {
|
|
|
|
(**(code **)*puVar1)(3);
|
|
|
|
*param_1 = 0;
|
|
|
|
param_1[1] = 0;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
operator_delete__(puVar1 + -1);
|
|
|
|
}
|
|
|
|
*param_1 = 0;
|
|
|
|
param_1[1] = 0;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00473110 at 0x00473110 (size: 273) ---
|
|
|
|
|
|
undefined4 __thiscall FUN_00473110(int *param_1,uint param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
uint *puVar1;
|
|
|
|
undefined4 *puVar2;
|
|
|
|
int iVar3;
|
|
|
|
uint *puVar4;
|
|
|
|
int iVar5;
|
|
|
|
|
|
|
|
if ((uint)param_1[2] <= param_2) {
|
|
|
|
if (param_2 <= (param_1[1] & 0x7fffffffU)) {
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
if (param_2 == 0) {
|
|
|
|
FUN_00473090();
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
puVar4 = (uint *)thunk_FUN_005df0f5(param_2 * 0x10 + 4);
|
|
|
|
if (puVar4 != (uint *)0x0) {
|
|
|
|
puVar1 = puVar4 + 1;
|
|
|
|
*puVar4 = param_2;
|
|
|
|
FUN_00401000(puVar1,0x10,param_2,&LAB_00472e20);
|
|
|
|
if (puVar1 != (uint *)0x0) {
|
|
|
|
if (*param_1 != 0) {
|
|
|
|
iVar5 = param_1[2];
|
|
|
|
if (-1 < iVar5 + -1) {
|
|
|
|
puVar4 = puVar1 + (iVar5 + -1) * 4 + 2;
|
|
|
|
do {
|
|
|
|
iVar3 = *param_1 + (-8 - (int)puVar1);
|
|
|
|
puVar4[-1] = *(uint *)((int)puVar4 + iVar3 + 4);
|
|
|
|
*puVar4 = *(uint *)((int)puVar4 + iVar3 + 8);
|
|
|
|
puVar4[1] = *(uint *)((int)puVar4 + iVar3 + 0xc);
|
|
|
|
puVar4 = puVar4 + -4;
|
|
|
|
iVar5 = iVar5 + -1;
|
|
|
|
} while (iVar5 != 0);
|
|
|
|
}
|
|
|
|
if (((param_1[1] & 0x80000000U) == 0x80000000) &&
|
|
|
|
(puVar2 = (undefined4 *)*param_1, puVar2 != (undefined4 *)0x0)) {
|
|
|
|
if (puVar2[-1] != 0) {
|
|
|
|
(**(code **)*puVar2)(3);
|
|
|
|
param_1[1] = param_2 | 0x80000000;
|
|
|
|
*param_1 = (int)puVar1;
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
operator_delete__(puVar2 + -1);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
*param_1 = (int)puVar1;
|
|
|
|
param_1[1] = param_2 | 0x80000000;
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00473230 at 0x00473230 (size: 109) ---
|
|
|
|
|
|
bool FUN_00473230(int param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
int iVar2;
|
|
|
|
char cVar3;
|
|
|
|
|
|
|
|
iVar1 = *(int *)(param_1 + 4);
|
|
|
|
if (((iVar1 != 0) && (*(int *)(iVar1 + 0x28) != 0)) &&
|
|
|
|
(iVar2 = *(int *)(*(int *)(iVar1 + 0x28) + 0x20), iVar2 == *(int *)(iVar1 + 0x20))) {
|
|
|
|
FUN_00472f70(iVar2);
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 8) != 0) {
|
|
|
|
if (*(int *)(param_1 + 4) == 0) {
|
|
|
|
cVar3 = FUN_00472d20(param_2);
|
|
|
|
return cVar3 != '\0';
|
|
|
|
}
|
|
|
|
cVar3 = FUN_00472d90(*(int *)(param_1 + 4),param_2);
|
|
|
|
return cVar3 != '\0';
|
|
|
|
}
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004732a0 at 0x004732A0 (size: 101) ---
|
|
|
|
|
|
void __thiscall FUN_004732a0(int param_1,undefined4 param_2,undefined4 *param_3,int *param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 *puVar1;
|
|
|
|
int *piVar2;
|
|
|
|
char cVar3;
|
|
|
|
int iVar4;
|
|
|
|
int iVar5;
|
|
|
|
|
|
|
|
piVar2 = param_4;
|
|
|
|
puVar1 = param_3;
|
|
|
|
*param_3 = 0;
|
|
|
|
*param_4 = 0;
|
|
|
|
param_3 = (undefined4 *)0x0;
|
|
|
|
cVar3 = FUN_00472ab0(param_2,¶m_3,¶m_4);
|
|
|
|
if (cVar3 != '\0') {
|
|
|
|
if (param_3 != (undefined4 *)0x0) {
|
|
|
|
iVar4 = 0;
|
|
|
|
iVar5 = (int)param_3;
|
|
|
|
do {
|
|
|
|
*piVar2 = *piVar2 + *(int *)(iVar4 + 0xc + *(int *)(param_1 + 0x14));
|
|
|
|
iVar4 = iVar4 + 0x10;
|
|
|
|
iVar5 = iVar5 + -1;
|
|
|
|
} while (iVar5 != 0);
|
|
|
|
}
|
|
|
|
FUN_00472f00(param_2,puVar1);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00473310 at 0x00473310 (size: 87) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_00473310(int param_1,undefined4 *param_2,uint param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
if (param_3 < *(uint *)(param_1 + 0x1c)) {
|
|
|
|
FUN_00472fa0(param_2,*(undefined4 *)(param_3 * 0x10 + 4 + *(int *)(param_1 + 0x14)));
|
|
|
|
return param_2;
|
|
|
|
}
|
|
|
|
if (*(uint *)(param_1 + 0x1c) == 0) {
|
|
|
|
param_2[1] = *(undefined4 *)(param_1 + 8);
|
|
|
|
*param_2 = &PTR_LAB_0079d17c;
|
|
|
|
param_2[2] = param_1 + 4;
|
|
|
|
return param_2;
|
|
|
|
}
|
|
|
|
param_2[1] = 0;
|
|
|
|
*param_2 = &PTR_LAB_0079d17c;
|
|
|
|
param_2[2] = param_1 + 4;
|
|
|
|
return param_2;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00473370 at 0x00473370 (size: 106) ---
|
|
|
|
|
|
void __fastcall FUN_00473370(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
void *pvVar1;
|
|
|
|
int iVar2;
|
|
|
|
|
|
|
|
while (*(int *)(param_1 + 4) != 0) {
|
|
|
|
FUN_00474bc0();
|
|
|
|
pvVar1 = *(void **)(param_1 + 4);
|
|
|
|
if (pvVar1 != (void *)0x0) {
|
|
|
|
iVar2 = *(int *)((int)pvVar1 + 0x24);
|
|
|
|
*(int *)(param_1 + 4) = iVar2;
|
|
|
|
if (iVar2 == 0) {
|
|
|
|
*(undefined4 *)(param_1 + 8) = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*(undefined4 *)(iVar2 + 0x28) = 0;
|
|
|
|
}
|
|
|
|
FUN_00474c30(pvVar1);
|
|
|
|
if (pvVar1 != (void *)0x0) {
|
|
|
|
FUN_00474be0();
|
|
|
|
operator_delete(pvVar1);
|
|
|
|
}
|
|
|
|
*(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + -1;
|
|
|
|
}
|
|
|
|
FUN_00474be0();
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004733e0 at 0x004733E0 (size: 36) ---
|
|
|
|
|
|
void __fastcall FUN_004733e0(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_00473370();
|
|
|
|
FUN_00473090();
|
|
|
|
*(undefined4 *)(param_1 + 0x28) = 0xffffffff;
|
|
|
|
*(undefined4 *)(param_1 + 0x2c) = 0;
|
|
|
|
*(undefined1 *)(param_1 + 0x30) = 0;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00473410 at 0x00473410 (size: 69) ---
|
|
|
|
|
|
undefined4 __thiscall FUN_00473410(int param_1,uint param_2,undefined4 param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 uVar1;
|
|
|
|
undefined1 local_c [12];
|
|
|
|
|
|
|
|
if (param_2 <= *(uint *)(param_1 + 0x10)) {
|
|
|
|
if (param_2 < *(uint *)(param_1 + 0x2c)) {
|
|
|
|
*(uint *)(param_1 + 0x2c) = param_2;
|
|
|
|
}
|
|
|
|
FUN_00472fa0(local_c,param_2);
|
|
|
|
uVar1 = FUN_00473230(local_c,param_3);
|
|
|
|
return uVar1;
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00473460 at 0x00473460 (size: 226) ---
|
|
|
|
|
|
int __thiscall FUN_00473460(int param_1,uint param_2,uint param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
int iVar2;
|
|
|
|
uint *puVar3;
|
|
|
|
uint uVar4;
|
|
|
|
uint uVar5;
|
|
|
|
int iVar6;
|
|
|
|
int local_c;
|
|
|
|
uint local_4;
|
|
|
|
|
|
|
|
uVar4 = *(uint *)(param_1 + 0x10);
|
|
|
|
local_4 = uVar4 - 1;
|
|
|
|
puVar3 = &local_4;
|
|
|
|
if ((int)param_2 <= (int)(uVar4 - 1)) {
|
|
|
|
puVar3 = ¶m_2;
|
|
|
|
}
|
|
|
|
param_2 = *puVar3;
|
|
|
|
local_4 = uVar4;
|
|
|
|
puVar3 = &local_4;
|
|
|
|
if ((int)param_3 <= (int)uVar4) {
|
|
|
|
puVar3 = ¶m_3;
|
|
|
|
}
|
|
|
|
param_3 = *puVar3;
|
|
|
|
if (param_2 < *(uint *)(param_1 + 0x2c)) {
|
|
|
|
*(uint *)(param_1 + 0x2c) = param_2;
|
|
|
|
}
|
|
|
|
local_4 = 0;
|
|
|
|
local_c = 0;
|
|
|
|
if (param_3 <= param_2) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
uVar4 = param_3;
|
|
|
|
uVar5 = param_2;
|
|
|
|
iVar6 = *(int *)(param_1 + 8);
|
|
|
|
while ((iVar6 != 0 && (local_4 < uVar4))) {
|
|
|
|
if (local_4 < uVar5) {
|
|
|
|
iVar6 = *(int *)(iVar6 + 0x24);
|
|
|
|
local_4 = local_4 + 1;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar1 = *(int *)(iVar6 + 0x20);
|
|
|
|
if (iVar1 != 0) {
|
|
|
|
for (iVar2 = *(int *)(param_1 + 8); iVar2 != 0; iVar2 = *(int *)(iVar2 + 0x24)) {
|
|
|
|
if (*(int *)(iVar2 + 0x20) == iVar1) {
|
|
|
|
FUN_00474ce0(0);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
iVar1 = *(int *)(iVar6 + 0x24);
|
|
|
|
FUN_00473020(iVar6);
|
|
|
|
local_c = local_c + 1;
|
|
|
|
local_4 = local_4 + 1;
|
|
|
|
uVar4 = param_3;
|
|
|
|
uVar5 = param_2;
|
|
|
|
iVar6 = iVar1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return local_c;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00473550 at 0x00473550 (size: 320) ---
|
|
|
|
|
|
int __thiscall FUN_00473550(int param_1,uint param_2,int *param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
int iVar2;
|
|
|
|
char cVar3;
|
|
|
|
uint uVar4;
|
|
|
|
int iVar5;
|
|
|
|
uint local_1c;
|
|
|
|
int local_18;
|
|
|
|
int local_14;
|
|
|
|
uint local_10;
|
|
|
|
undefined1 local_c [4];
|
|
|
|
int local_8;
|
|
|
|
int local_4;
|
|
|
|
|
|
|
|
local_1c = param_2;
|
|
|
|
local_14 = 0;
|
|
|
|
local_18 = 0;
|
|
|
|
if (param_2 < *(uint *)(param_1 + 0x2c)) {
|
|
|
|
*(uint *)(param_1 + 0x2c) = param_2;
|
|
|
|
}
|
|
|
|
FUN_00472fa0(local_c,param_2);
|
|
|
|
local_10 = 0;
|
|
|
|
if (param_3[2] != 0) {
|
|
|
|
param_2 = 0;
|
|
|
|
do {
|
|
|
|
iVar5 = *param_3;
|
|
|
|
if ((((local_8 != 0) && (*(int *)(local_8 + 0x28) != 0)) &&
|
|
|
|
(iVar1 = *(int *)(*(int *)(local_8 + 0x28) + 0x20), iVar1 == *(int *)(local_8 + 0x20))) &&
|
|
|
|
(iVar1 != 0)) {
|
|
|
|
for (iVar2 = *(int *)(param_1 + 8); iVar2 != 0; iVar2 = *(int *)(iVar2 + 0x24)) {
|
|
|
|
if (*(int *)(iVar2 + 0x20) == iVar1) {
|
|
|
|
FUN_00474ce0(0);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (local_4 == 0) {
|
|
|
|
cVar3 = '\0';
|
|
|
|
}
|
|
|
|
else if (local_8 == 0) {
|
|
|
|
cVar3 = FUN_00472d20(iVar5 + param_2);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
cVar3 = FUN_00472d90(local_8,iVar5 + param_2);
|
|
|
|
}
|
|
|
|
local_18 = local_18 + (uint)(cVar3 != '\0');
|
|
|
|
local_1c = local_1c + (cVar3 != '\0');
|
|
|
|
local_10 = local_10 + 1;
|
|
|
|
param_2 = param_2 + 0x24;
|
|
|
|
} while (local_10 < (uint)param_3[2]);
|
|
|
|
}
|
|
|
|
if (*(uint *)(param_1 + 0x20) < *(uint *)(param_1 + 0x10)) {
|
|
|
|
uVar4 = *(uint *)(param_1 + 0x10) - *(uint *)(param_1 + 0x20);
|
|
|
|
if ((uint)param_3[2] < uVar4) {
|
|
|
|
uVar4 = param_3[2];
|
|
|
|
}
|
|
|
|
if (*(char *)(param_1 + 0x24) == '\0') {
|
|
|
|
iVar5 = local_1c - uVar4;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar5 = 0;
|
|
|
|
local_1c = uVar4;
|
|
|
|
}
|
|
|
|
local_14 = FUN_00473460(iVar5,local_1c);
|
|
|
|
}
|
|
|
|
return local_18 - local_14;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00473690 at 0x00473690 (size: 344) ---
|
|
|
|
|
|
undefined4 __thiscall FUN_00473690(int param_1,int *param_2,int *param_3,int param_4,uint *param_5)
|
|
|
|
|
|
|
|
{
|
|
|
|
int *piVar1;
|
|
|
|
char cVar2;
|
|
|
|
int iVar3;
|
|
|
|
int **ppiVar4;
|
|
|
|
int *piVar5;
|
|
|
|
uint uVar6;
|
|
|
|
int *local_10;
|
|
|
|
undefined1 local_c [4];
|
|
|
|
int local_8;
|
|
|
|
|
|
|
|
uVar6 = (uint)param_3;
|
|
|
|
piVar1 = param_2;
|
|
|
|
if (*(int **)(param_1 + 0x1c) <= param_2) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
iVar3 = (int)param_2 * 0x10;
|
|
|
|
piVar5 = *(int **)(iVar3 + 4 + *(int *)(param_1 + 0x14));
|
|
|
|
*param_5 = (uint)piVar5;
|
|
|
|
local_10 = (int *)((int)param_2 + 1);
|
|
|
|
ppiVar4 = ¶m_2;
|
|
|
|
if ((int)param_2 + 1 <= *(int *)(param_1 + 0x1c) + -1) {
|
|
|
|
ppiVar4 = &local_10;
|
|
|
|
}
|
|
|
|
local_10 = *ppiVar4;
|
|
|
|
if (local_10 == param_2) {
|
|
|
|
param_2 = *(int **)(param_1 + 0x10);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
param_2 = *(int **)((int)local_10 * 0x10 + 4 + *(int *)(param_1 + 0x14));
|
|
|
|
}
|
|
|
|
iVar3 = iVar3 + *(int *)(param_1 + 0x14);
|
|
|
|
if (*(uint *)(iVar3 + 8) < param_3) {
|
|
|
|
param_4 = 0;
|
|
|
|
FUN_00472c00(*(undefined4 *)(iVar3 + 4),&local_10,¶m_4);
|
|
|
|
if (piVar1 == (int *)(*(int *)(param_1 + 0x1c) + -1)) {
|
|
|
|
*param_5 = *(uint *)(param_1 + 0x10);
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
*param_5 = param_4 - 1;
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
local_10 = piVar5;
|
|
|
|
FUN_00473310(local_c,piVar1);
|
|
|
|
param_3 = piVar5;
|
|
|
|
if (local_8 != 0) {
|
|
|
|
while (param_3 = (int *)((int)param_3 + 1), piVar5 < param_2) {
|
|
|
|
cVar2 = FUN_00474bb0();
|
|
|
|
if ((int)uVar6 <= *(int *)(local_8 + 4) / (int)(((char)param_4 != '\0') + 1)) {
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
if ((cVar2 != '\0') && (param_3 == param_2)) {
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
uVar6 = uVar6 - *(int *)(local_8 + 4);
|
|
|
|
piVar5 = (int *)((int)local_10 + 1);
|
|
|
|
*param_5 = *param_5 + 1;
|
|
|
|
piVar1 = (int *)(local_8 + 0x24);
|
|
|
|
local_8 = *piVar1;
|
|
|
|
local_10 = piVar5;
|
|
|
|
if (*piVar1 == 0) {
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004737f0 at 0x004737F0 (size: 63) ---
|
|
|
|
|
|
undefined1 __thiscall FUN_004737f0(int param_1,uint param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined1 uVar1;
|
|
|
|
int iVar2;
|
|
|
|
uint uVar3;
|
|
|
|
|
|
|
|
iVar2 = *(int *)(param_1 + 8);
|
|
|
|
uVar1 = 0;
|
|
|
|
if ((iVar2 != 0) && (param_2 < *(uint *)(param_1 + 0x10))) {
|
|
|
|
uVar3 = 0;
|
|
|
|
while (uVar3 != param_2) {
|
|
|
|
if (iVar2 != 0) {
|
|
|
|
iVar2 = *(int *)(iVar2 + 0x24);
|
|
|
|
}
|
|
|
|
uVar3 = uVar3 + 1;
|
|
|
|
if (iVar2 == 0) {
|
|
|
|
return uVar1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (iVar2 != 0) {
|
|
|
|
FUN_00474c30(iVar2);
|
|
|
|
uVar1 = 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return uVar1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00473830 at 0x00473830 (size: 36) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_00473830(undefined4 *param_1,byte param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
*param_1 = &PTR_FUN_0079e500;
|
|
|
|
FUN_00473370();
|
|
|
|
if ((param_2 & 1) != 0) {
|
|
|
|
operator_delete(param_1);
|
|
|
|
}
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00473860 at 0x00473860 (size: 59) ---
|
|
|
|
|
|
void __fastcall FUN_00473860(undefined4 *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
*param_1 = &PTR_FUN_0079e504;
|
|
|
|
param_1[1] = &PTR_FUN_0079e500;
|
|
|
|
param_1[2] = 0;
|
|
|
|
param_1[3] = 0;
|
|
|
|
param_1[4] = 0;
|
|
|
|
param_1[5] = 0;
|
|
|
|
param_1[6] = 0;
|
|
|
|
param_1[7] = 0;
|
|
|
|
param_1[8] = 0xffff;
|
|
|
|
*(undefined1 *)(param_1 + 9) = 0;
|
|
|
|
param_1[10] = 0xffffffff;
|
|
|
|
param_1[0xb] = 0;
|
|
|
|
*(undefined1 *)(param_1 + 0xc) = 0;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004738a0 at 0x004738A0 (size: 124) ---
|
|
|
|
|
|
void __fastcall FUN_004738a0(undefined4 *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 *puVar1;
|
|
|
|
|
|
|
|
*param_1 = &PTR_FUN_0079e504;
|
|
|
|
FUN_00473370();
|
|
|
|
FUN_00473090();
|
|
|
|
param_1[10] = 0xffffffff;
|
|
|
|
param_1[0xb] = 0;
|
|
|
|
*(undefined1 *)(param_1 + 0xc) = 0;
|
|
|
|
if (((param_1[6] & 0x80000000) == 0x80000000) &&
|
|
|
|
(puVar1 = (undefined4 *)param_1[5], puVar1 != (undefined4 *)0x0)) {
|
|
|
|
if (puVar1[-1] != 0) {
|
|
|
|
(**(code **)*puVar1)(3);
|
|
|
|
param_1[1] = &PTR_FUN_0079e500;
|
|
|
|
FUN_00473370();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
operator_delete__(puVar1 + -1);
|
|
|
|
}
|
|
|
|
param_1[1] = &PTR_FUN_0079e500;
|
|
|
|
FUN_00473370();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00473920 at 0x00473920 (size: 662) ---
|
|
|
|
|
|
undefined4 __thiscall
|
|
|
|
FUN_00473920(int param_1,uint param_2,uint param_3,undefined *param_4,int *param_5)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined *puVar1;
|
|
|
|
uint uVar2;
|
|
|
|
wchar_t *_Source;
|
|
|
|
int iVar3;
|
|
|
|
int *piVar4;
|
|
|
|
int *piVar5;
|
|
|
|
LONG LVar6;
|
|
|
|
uint *puVar7;
|
|
|
|
LONG *lpAddend;
|
|
|
|
undefined4 *puVar8;
|
|
|
|
int *piVar9;
|
|
|
|
uint uStack_10;
|
|
|
|
ushort *puStack_8;
|
|
|
|
|
|
|
|
piVar5 = param_5;
|
|
|
|
puVar1 = (undefined *)*param_5;
|
|
|
|
if (puVar1 != PTR_DAT_00818340) {
|
|
|
|
LVar6 = InterlockedDecrement((LONG *)(puVar1 + -0x10));
|
|
|
|
if ((LVar6 == 0) && ((undefined4 *)(puVar1 + -0x14) != (undefined4 *)0x0)) {
|
|
|
|
(*(code *)**(undefined4 **)(puVar1 + -0x14))(1);
|
|
|
|
}
|
|
|
|
lpAddend = (LONG *)(PTR_DAT_00818340 + -0x10);
|
|
|
|
*piVar5 = (int)PTR_DAT_00818340;
|
|
|
|
InterlockedIncrement(lpAddend);
|
|
|
|
}
|
|
|
|
uVar2 = *(uint *)(param_1 + 0x10);
|
|
|
|
param_5 = (int *)(uVar2 - 1);
|
|
|
|
puVar7 = (uint *)¶m_5;
|
|
|
|
if ((int)param_2 <= (int)(uVar2 - 1)) {
|
|
|
|
puVar7 = ¶m_2;
|
|
|
|
}
|
|
|
|
param_5 = (int *)uVar2;
|
|
|
|
param_2 = *puVar7;
|
|
|
|
puVar7 = (uint *)¶m_5;
|
|
|
|
if ((int)param_3 <= (int)uVar2) {
|
|
|
|
puVar7 = ¶m_3;
|
|
|
|
}
|
|
|
|
param_3 = *puVar7;
|
|
|
|
puStack_8 = *(ushort **)(param_1 + 8);
|
|
|
|
piVar4 = (int *)0x0;
|
|
|
|
for (uStack_10 = 0; (puStack_8 != (ushort *)0x0 && (uStack_10 < param_3));
|
|
|
|
uStack_10 = uStack_10 + 1) {
|
|
|
|
piVar9 = piVar4;
|
|
|
|
if (param_2 <= uStack_10) {
|
|
|
|
piVar9 = *(int **)(puStack_8 + 0x10);
|
|
|
|
if (((char)param_4 != '\0') && (piVar9 != piVar4)) {
|
|
|
|
if (piVar4 != (int *)0x0) {
|
|
|
|
param_5 = (int *)PTR_DAT_00818340;
|
|
|
|
InterlockedIncrement((LONG *)(PTR_DAT_00818340 + -0x10));
|
|
|
|
(**(code **)(*piVar4 + 0xc))(¶m_5);
|
|
|
|
FUN_004300a0(piVar5,&DAT_0079e508,param_5);
|
|
|
|
puVar8 = (undefined4 *)((int)param_5 + -0x14);
|
|
|
|
LVar6 = InterlockedDecrement((LONG *)((int)param_5 + -0x10));
|
|
|
|
if ((LVar6 == 0) && (puVar8 != (undefined4 *)0x0)) {
|
|
|
|
(**(code **)*puVar8)(1);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (piVar9 != (int *)0x0) {
|
|
|
|
param_5 = (int *)PTR_DAT_00818340;
|
|
|
|
InterlockedIncrement((LONG *)(PTR_DAT_00818340 + -0x10));
|
|
|
|
(**(code **)(*piVar9 + 0x10))(¶m_5);
|
|
|
|
FUN_004300a0(piVar5,&DAT_0079e508,param_5);
|
|
|
|
puVar8 = (undefined4 *)((int)param_5 + -0x14);
|
|
|
|
LVar6 = InterlockedDecrement((LONG *)((int)param_5 + -0x10));
|
|
|
|
if ((LVar6 == 0) && (puVar8 != (undefined4 *)0x0)) {
|
|
|
|
(**(code **)*puVar8)(1);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
param_5 = (int *)(uint)*puStack_8;
|
|
|
|
if (*puStack_8 != 0) {
|
|
|
|
_Source = (wchar_t *)*piVar5;
|
|
|
|
iVar3 = *(int *)(_Source + -2);
|
|
|
|
if ((*(int *)(_Source + -8) == 1) && (iVar3 + 1U <= *(uint *)(_Source + -6))) {
|
|
|
|
*(uint *)(_Source + -2) = iVar3 + 1U;
|
|
|
|
*(undefined4 *)(*piVar5 + -8) = 0xffffffff;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
FUN_004022d0(iVar3);
|
|
|
|
wcscpy((wchar_t *)*piVar5,_Source);
|
|
|
|
LVar6 = InterlockedDecrement((LONG *)(_Source + -8));
|
|
|
|
if ((LVar6 == 0) && (_Source + -10 != (wchar_t *)0x0)) {
|
|
|
|
(*(code *)**(undefined4 **)(_Source + -10))(1);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
wcsncpy((wchar_t *)(*piVar5 + -2 + iVar3 * 2),(wchar_t *)¶m_5,1);
|
|
|
|
*(undefined2 *)(*piVar5 + -2 + *(int *)(*piVar5 + -4) * 2) = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (puStack_8 != (ushort *)0x0) {
|
|
|
|
puStack_8 = *(ushort **)(puStack_8 + 0x12);
|
|
|
|
}
|
|
|
|
piVar4 = piVar9;
|
|
|
|
}
|
|
|
|
if (((char)param_4 != '\0') && (piVar4 != (int *)0x0)) {
|
|
|
|
param_4 = PTR_DAT_00818340;
|
|
|
|
InterlockedIncrement((LONG *)(PTR_DAT_00818340 + -0x10));
|
|
|
|
(**(code **)(*piVar4 + 0xc))(¶m_4);
|
|
|
|
FUN_004300a0(piVar5,&DAT_0079e508,param_3);
|
|
|
|
puVar8 = (undefined4 *)(param_3 - 0x14);
|
|
|
|
LVar6 = InterlockedDecrement((LONG *)(param_3 - 0x10));
|
|
|
|
if ((LVar6 == 0) && (puVar8 != (undefined4 *)0x0)) {
|
|
|
|
(**(code **)*puVar8)(1);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00473bc0 at 0x00473BC0 (size: 1344) ---
|
|
|
|
|
|
undefined4 __thiscall FUN_00473bc0(int param_1,int param_2,char param_3,uint *param_4,int *param_5)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 uVar1;
|
|
|
|
bool bVar2;
|
|
|
|
bool bVar3;
|
|
|
|
char cVar4;
|
|
|
|
uint uVar5;
|
|
|
|
int iVar6;
|
|
|
|
int iVar7;
|
|
|
|
uint *puVar8;
|
|
|
|
int iVar9;
|
|
|
|
int iVar10;
|
|
|
|
uint uVar11;
|
|
|
|
int iVar12;
|
|
|
|
uint uVar13;
|
|
|
|
uint uVar14;
|
|
|
|
uint local_44;
|
|
|
|
uint local_40;
|
|
|
|
uint local_3c;
|
|
|
|
uint local_38;
|
|
|
|
uint local_34;
|
|
|
|
uint local_30;
|
|
|
|
int local_2c;
|
|
|
|
uint local_28;
|
|
|
|
uint local_24;
|
|
|
|
uint local_20 [2];
|
|
|
|
int local_18;
|
|
|
|
uint local_c;
|
|
|
|
undefined4 local_4;
|
|
|
|
|
|
|
|
*param_4 = 0;
|
|
|
|
*param_5 = 0;
|
|
|
|
if ((param_2 != *(int *)(param_1 + 0x28)) || (param_3 != *(char *)(param_1 + 0x30))) {
|
|
|
|
*(undefined4 *)(param_1 + 0x2c) = 0;
|
|
|
|
*(int *)(param_1 + 0x28) = param_2;
|
|
|
|
*(char *)(param_1 + 0x30) = param_3;
|
|
|
|
}
|
|
|
|
local_40 = 0;
|
|
|
|
if (*(int *)(param_1 + 0x2c) != 0) {
|
|
|
|
FUN_00472c60(*(int *)(param_1 + 0x2c),&local_40,param_1 + 0x2c);
|
|
|
|
}
|
|
|
|
if (local_40 != 0) {
|
|
|
|
iVar10 = 0;
|
|
|
|
uVar13 = local_40;
|
|
|
|
do {
|
|
|
|
local_24 = *(uint *)(*(int *)(param_1 + 0x14) + 8 + iVar10);
|
|
|
|
iVar9 = *(int *)(param_1 + 0x14) + iVar10;
|
|
|
|
puVar8 = &local_24;
|
|
|
|
if ((int)local_24 <= (int)*param_4) {
|
|
|
|
puVar8 = param_4;
|
|
|
|
}
|
|
|
|
*param_4 = *puVar8;
|
|
|
|
iVar10 = iVar10 + 0x10;
|
|
|
|
uVar13 = uVar13 - 1;
|
|
|
|
*param_5 = *param_5 + *(int *)(iVar9 + 0xc);
|
|
|
|
} while (uVar13 != 0);
|
|
|
|
}
|
|
|
|
uVar13 = *(uint *)(param_1 + 0x2c);
|
|
|
|
uVar14 = *(uint *)(param_1 + 0x1c);
|
|
|
|
local_24 = uVar13;
|
|
|
|
local_c = uVar13;
|
|
|
|
iVar10 = 0;
|
|
|
|
local_3c = 0;
|
|
|
|
local_34 = 0;
|
|
|
|
local_44 = 0;
|
|
|
|
local_28 = 0;
|
|
|
|
local_38 = 0;
|
|
|
|
bVar3 = false;
|
|
|
|
bVar2 = false;
|
|
|
|
local_2c = 0;
|
|
|
|
if (local_40 < uVar14) {
|
|
|
|
local_20[0] = *(uint *)(local_40 * 0x10 + 4 + *(int *)(param_1 + 0x14));
|
|
|
|
local_18 = *(int *)(param_1 + 8);
|
|
|
|
local_30 = 0;
|
|
|
|
while (local_18 != 0) {
|
|
|
|
if (local_30 == local_20[0]) goto LAB_00473dcc;
|
|
|
|
if (local_18 != 0) {
|
|
|
|
local_18 = *(int *)(local_18 + 0x24);
|
|
|
|
}
|
|
|
|
local_30 = local_30 + 1;
|
|
|
|
}
|
|
|
|
LAB_00473cf5:
|
|
|
|
local_18 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
if (uVar14 != 0) goto LAB_00473cf5;
|
|
|
|
local_18 = *(int *)(param_1 + 8);
|
|
|
|
LAB_00473dcc:
|
|
|
|
}
|
|
|
|
uVar14 = uVar14 - 1;
|
|
|
|
uVar11 = local_34;
|
|
|
|
iVar9 = local_18;
|
|
|
|
if ((int)local_40 <= (int)uVar14) {
|
|
|
|
iVar12 = uVar14 * 0x10;
|
|
|
|
do {
|
|
|
|
if (uVar14 < *(uint *)(param_1 + 0x1c)) {
|
|
|
|
uVar5 = *(uint *)(param_1 + 0x1c) - 1;
|
|
|
|
*(uint *)(param_1 + 0x1c) = uVar5;
|
|
|
|
if (uVar14 != uVar5) {
|
|
|
|
iVar7 = *(int *)(param_1 + 0x14);
|
|
|
|
iVar6 = uVar5 * 0x10 + iVar7;
|
|
|
|
*(undefined4 *)(iVar7 + 4 + iVar12) = *(undefined4 *)(uVar5 * 0x10 + 4 + iVar7);
|
|
|
|
*(undefined4 *)(iVar7 + 8 + iVar12) = *(undefined4 *)(iVar6 + 8);
|
|
|
|
*(undefined4 *)(iVar7 + 0xc + iVar12) = *(undefined4 *)(iVar6 + 0xc);
|
|
|
|
iVar7 = *(int *)(param_1 + 0x1c) * 0x10 + *(int *)(param_1 + 0x14);
|
|
|
|
*(undefined4 *)(iVar7 + 4) = 0;
|
|
|
|
*(undefined4 *)(iVar7 + 8) = 0;
|
|
|
|
*(undefined4 *)(iVar7 + 0xc) = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
uVar14 = uVar14 - 1;
|
|
|
|
iVar12 = iVar12 + -0x10;
|
|
|
|
} while ((int)local_40 <= (int)uVar14);
|
|
|
|
}
|
|
|
|
while (local_34 = uVar11, local_24 = uVar13, local_18 = iVar9, iVar9 != 0) {
|
|
|
|
local_30 = *(uint *)(iVar9 + 4);
|
|
|
|
if (param_3 == '\0') {
|
|
|
|
cVar4 = FUN_004729d0(iVar10,iVar9);
|
|
|
|
if (cVar4 == '\0') {
|
|
|
|
cVar4 = FUN_00474b90();
|
|
|
|
if (((cVar4 == '\0') && (cVar4 = FUN_00474bb0(), cVar4 == '\0')) &&
|
|
|
|
(param_2 < (int)(local_30 + local_44))) {
|
|
|
|
local_44 = 0;
|
|
|
|
bVar3 = true;
|
|
|
|
local_38 = uVar11;
|
|
|
|
local_2c = iVar10;
|
|
|
|
local_28 = uVar13;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
local_44 = 0;
|
|
|
|
bVar3 = true;
|
|
|
|
local_38 = uVar11;
|
|
|
|
local_2c = iVar10;
|
|
|
|
local_28 = uVar13;
|
|
|
|
if ((iVar10 != 0) && (cVar4 = FUN_00474bb0(), cVar4 != '\0')) {
|
|
|
|
bVar2 = true;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
uVar13 = local_3c + local_30;
|
|
|
|
local_44 = local_44 + local_30;
|
|
|
|
local_3c = uVar13;
|
|
|
|
cVar4 = FUN_00474b90();
|
|
|
|
if ((cVar4 != '\0') || (cVar4 = FUN_00474bb0(), uVar14 = uVar13, cVar4 != '\0')) {
|
|
|
|
uVar14 = uVar13 - local_30;
|
|
|
|
}
|
|
|
|
iVar12 = local_2c;
|
|
|
|
if ((bVar2) || ((iVar10 = iVar9, bVar3 && (param_2 < (int)uVar14)))) {
|
|
|
|
uVar13 = uVar13 - local_44;
|
|
|
|
local_30 = uVar13;
|
|
|
|
if ((local_2c != 0) &&
|
|
|
|
((cVar4 = FUN_00474b90(), cVar4 != '\0' || (cVar4 = FUN_00474bb0(), cVar4 != '\0')))) {
|
|
|
|
uVar13 = uVar13 - *(int *)(iVar12 + 4);
|
|
|
|
local_30 = uVar13;
|
|
|
|
}
|
|
|
|
uVar14 = *(uint *)(param_1 + 0x18) & 0x7fffffff;
|
|
|
|
if (*(uint *)(param_1 + 0x1c) < uVar14) {
|
|
|
|
LAB_00473f06:
|
|
|
|
iVar10 = *(int *)(param_1 + 0x1c) * 0x10 + *(int *)(param_1 + 0x14);
|
|
|
|
*(uint *)(iVar10 + 4) = local_c;
|
|
|
|
*(uint *)(iVar10 + 8) = uVar13;
|
|
|
|
*(uint *)(iVar10 + 0xc) = local_38;
|
|
|
|
*(int *)(param_1 + 0x1c) = *(int *)(param_1 + 0x1c) + 1;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar14 = uVar14 + 1;
|
|
|
|
if (uVar14 < 9) {
|
|
|
|
uVar14 = 8;
|
|
|
|
}
|
|
|
|
else if (uVar14 < 0x4001) {
|
|
|
|
iVar10 = 0x1f;
|
|
|
|
if (uVar14 != 0) {
|
|
|
|
for (; uVar14 >> iVar10 == 0; iVar10 = iVar10 + -1) {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
uVar11 = 1 << ((byte)iVar10 & 0x1f);
|
|
|
|
local_20[0] = uVar14;
|
|
|
|
if (uVar11 < uVar14) {
|
|
|
|
uVar14 = uVar11 * 2;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if ((uVar14 & 0x3fff) != 0) {
|
|
|
|
uVar14 = uVar14 + (0x4000 - (uVar14 & 0x3fff));
|
|
|
|
}
|
|
|
|
cVar4 = FUN_00473110(uVar14);
|
|
|
|
if (cVar4 != '\0') goto LAB_00473f06;
|
|
|
|
}
|
|
|
|
puVar8 = &local_30;
|
|
|
|
if ((int)uVar13 <= (int)*param_4) {
|
|
|
|
puVar8 = param_4;
|
|
|
|
}
|
|
|
|
*param_4 = *puVar8;
|
|
|
|
*param_5 = *param_5 + local_38;
|
|
|
|
uVar11 = 0;
|
|
|
|
local_c = local_28;
|
|
|
|
local_3c = local_44;
|
|
|
|
local_34 = 0;
|
|
|
|
bVar3 = false;
|
|
|
|
bVar2 = false;
|
|
|
|
iVar10 = local_18;
|
|
|
|
}
|
|
|
|
local_20[0] = *(uint *)(iVar10 + 8);
|
|
|
|
puVar8 = &local_34;
|
|
|
|
if ((int)uVar11 <= (int)*(uint *)(iVar10 + 8)) {
|
|
|
|
puVar8 = local_20;
|
|
|
|
}
|
|
|
|
uVar13 = local_24 + 1;
|
|
|
|
local_34 = *puVar8;
|
|
|
|
local_24 = uVar13;
|
|
|
|
local_18 = *(int *)(iVar10 + 0x24);
|
|
|
|
uVar11 = local_34;
|
|
|
|
iVar9 = *(int *)(iVar10 + 0x24);
|
|
|
|
}
|
|
|
|
uVar13 = *(uint *)(param_1 + 0x18) & 0x7fffffff;
|
|
|
|
if (*(uint *)(param_1 + 0x1c) < uVar13) {
|
|
|
|
LAB_00473fff:
|
|
|
|
iVar9 = *(int *)(param_1 + 0x1c) * 0x10 + *(int *)(param_1 + 0x14);
|
|
|
|
*(uint *)(iVar9 + 4) = local_c;
|
|
|
|
*(uint *)(iVar9 + 8) = local_3c;
|
|
|
|
*(uint *)(iVar9 + 0xc) = uVar11;
|
|
|
|
*(int *)(param_1 + 0x1c) = *(int *)(param_1 + 0x1c) + 1;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar13 = uVar13 + 1;
|
|
|
|
if (uVar13 < 9) {
|
|
|
|
uVar13 = 8;
|
|
|
|
}
|
|
|
|
else if (uVar13 < 0x4001) {
|
|
|
|
iVar9 = 0x1f;
|
|
|
|
if (uVar13 != 0) {
|
|
|
|
for (; uVar13 >> iVar9 == 0; iVar9 = iVar9 + -1) {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
uVar14 = 1 << ((byte)iVar9 & 0x1f);
|
|
|
|
local_20[0] = uVar13;
|
|
|
|
if (uVar14 < uVar13) {
|
|
|
|
uVar13 = uVar14 * 2;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if ((uVar13 & 0x3fff) != 0) {
|
|
|
|
uVar13 = uVar13 + (0x4000 - (uVar13 & 0x3fff));
|
|
|
|
}
|
|
|
|
cVar4 = FUN_00473110(uVar13);
|
|
|
|
if (cVar4 != '\0') goto LAB_00473fff;
|
|
|
|
}
|
|
|
|
puVar8 = &local_3c;
|
|
|
|
if ((int)local_3c <= (int)*param_4) {
|
|
|
|
puVar8 = param_4;
|
|
|
|
}
|
|
|
|
*param_4 = *puVar8;
|
|
|
|
*param_5 = *param_5 + uVar11;
|
|
|
|
if ((iVar10 == 0) || (cVar4 = FUN_00474bb0(), cVar4 == '\0')) goto LAB_004740f2;
|
|
|
|
uVar1 = *(undefined4 *)(param_1 + 0x10);
|
|
|
|
local_4 = *(undefined4 *)(iVar10 + 8);
|
|
|
|
uVar13 = *(uint *)(param_1 + 0x18) & 0x7fffffff;
|
|
|
|
if (*(uint *)(param_1 + 0x1c) < uVar13) {
|
|
|
|
LAB_004740cb:
|
|
|
|
iVar9 = *(int *)(param_1 + 0x1c) * 0x10 + *(int *)(param_1 + 0x14);
|
|
|
|
*(undefined4 *)(iVar9 + 4) = uVar1;
|
|
|
|
*(undefined4 *)(iVar9 + 8) = 0;
|
|
|
|
*(undefined4 *)(iVar9 + 0xc) = local_4;
|
|
|
|
*(int *)(param_1 + 0x1c) = *(int *)(param_1 + 0x1c) + 1;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar13 = uVar13 + 1;
|
|
|
|
if (uVar13 < 9) {
|
|
|
|
uVar13 = 8;
|
|
|
|
}
|
|
|
|
else if (uVar13 < 0x4001) {
|
|
|
|
iVar9 = 0x1f;
|
|
|
|
if (uVar13 != 0) {
|
|
|
|
for (; uVar13 >> iVar9 == 0; iVar9 = iVar9 + -1) {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
uVar14 = 1 << ((byte)iVar9 & 0x1f);
|
|
|
|
local_20[0] = uVar13;
|
|
|
|
if (uVar14 < uVar13) {
|
|
|
|
uVar13 = uVar14 * 2;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if ((uVar13 & 0x3fff) != 0) {
|
|
|
|
uVar13 = uVar13 + (0x4000 - (uVar13 & 0x3fff));
|
|
|
|
}
|
|
|
|
cVar4 = FUN_00473110(uVar13);
|
|
|
|
if (cVar4 != '\0') goto LAB_004740cb;
|
|
|
|
}
|
|
|
|
*param_5 = *param_5 + *(int *)(iVar10 + 8);
|
|
|
|
LAB_004740f2:
|
|
|
|
*(undefined4 *)(param_1 + 0x2c) = *(undefined4 *)(param_1 + 0x10);
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00474110 at 0x00474110 (size: 30) ---
|
|
|
|
|
|
void * __thiscall FUN_00474110(void *param_1,byte param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_004738a0();
|
|
|
|
if ((param_2 & 1) != 0) {
|
|
|
|
operator_delete(param_1);
|
|
|
|
}
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00474130 at 0x00474130 (size: 24) ---
|
|
|
|
|
|
void __thiscall FUN_00474130(int param_1,undefined4 param_2,undefined4 param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_00473920(0,*(undefined4 *)(param_1 + 0x10),param_2,param_3);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00474150 at 0x00474150 (size: 70) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_00474150(undefined4 *param_1,undefined4 param_2,undefined4 param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_00464900(param_2,param_3);
|
|
|
|
param_1[0x17c] = 0;
|
|
|
|
param_1[0x17d] = 0;
|
|
|
|
param_1[0x17e] = 0;
|
|
|
|
param_1[0x17f] = 0;
|
|
|
|
param_1[0x180] = 0;
|
|
|
|
param_1[0x181] = 0;
|
|
|
|
*param_1 = &PTR_FUN_0079e518;
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004741c0 at 0x004741C0 (size: 78) ---
|
|
|
|
|
|
void __thiscall FUN_004741c0(int *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
char cVar1;
|
|
|
|
int *piVar2;
|
|
|
|
|
|
|
|
FUN_00460ff0(param_2,param_3,param_4);
|
|
|
|
piVar2 = (int *)FUN_0045fb30();
|
|
|
|
if (piVar2 != (int *)0x0) {
|
|
|
|
cVar1 = (**(code **)(*piVar2 + 0x10c))();
|
|
|
|
if (cVar1 != '\0') {
|
|
|
|
(**(code **)(*piVar2 + 0xfc))();
|
|
|
|
(**(code **)(*param_1 + 0x104))();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00474210 at 0x00474210 (size: 57) ---
|
|
|
|
|
|
byte __thiscall FUN_00474210(undefined4 param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
byte bVar1;
|
|
|
|
byte bVar2;
|
|
|
|
|
|
|
|
if (DAT_00837ff4 == (int *)0x0) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
bVar1 = FUN_0045fbe0(param_2);
|
|
|
|
bVar2 = (**(code **)(*DAT_00837ff4 + 0x34))(10,param_1,param_2);
|
|
|
|
return bVar2 | bVar1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00474250 at 0x00474250 (size: 45) ---
|
|
|
|
|
|
byte __fastcall FUN_00474250(undefined4 param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
byte bVar1;
|
|
|
|
byte bVar2;
|
|
|
|
|
|
|
|
if (DAT_00837ff4 == (int *)0x0) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
bVar1 = FUN_0045fc50();
|
|
|
|
bVar2 = (**(code **)(*DAT_00837ff4 + 0x38))(10,param_1);
|
|
|
|
return bVar2 | bVar1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00474280 at 0x00474280 (size: 94) ---
|
|
|
|
|
|
int __thiscall FUN_00474280(int param_1,char param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
int *piVar2;
|
|
|
|
int iVar3;
|
|
|
|
|
|
|
|
iVar1 = 0;
|
|
|
|
if (param_2 == '\0') {
|
|
|
|
iVar3 = *(int *)(param_1 + 0x5f4);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar3 = *(int *)(param_1 + 0x5f0);
|
|
|
|
}
|
|
|
|
if ((iVar3 != 0) &&
|
|
|
|
(((piVar2 = (int *)FUN_00464690(iVar3), piVar2 == (int *)0x0 ||
|
|
|
|
(iVar1 = (**(code **)(*piVar2 + 0x94))(0xb), iVar1 == 0)) ||
|
|
|
|
(iVar3 = FUN_00464690(*(undefined4 *)(param_1 + 0x2e4)), iVar3 != param_1)))) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
return iVar1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004742e0 at 0x004742E0 (size: 325) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void __thiscall FUN_004742e0(int param_1,float param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
int iVar2;
|
|
|
|
float fVar3;
|
|
|
|
undefined4 uVar4;
|
|
|
|
int *piVar5;
|
|
|
|
int iVar6;
|
|
|
|
undefined4 *local_c;
|
|
|
|
undefined4 *local_8;
|
|
|
|
int *local_4;
|
|
|
|
|
|
|
|
uVar4 = param_2;
|
|
|
|
piVar5 = (int *)FUN_00474280(param_2);
|
|
|
|
if (piVar5 != (int *)0x0) {
|
|
|
|
if (SUB41(param_2,0) == '\0') {
|
|
|
|
iVar1 = *(int *)(param_1 + 0x5fc);
|
|
|
|
iVar2 = *(int *)(param_1 + 0x604);
|
|
|
|
iVar6 = FUN_0069fe70();
|
|
|
|
local_c = (undefined4 *)(iVar2 - iVar6);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar1 = *(int *)(param_1 + 0x5f8);
|
|
|
|
iVar2 = *(int *)(param_1 + 0x600);
|
|
|
|
iVar6 = FUN_0069fe60();
|
|
|
|
local_c = (undefined4 *)(iVar2 - iVar6);
|
|
|
|
}
|
|
|
|
param_2 = (float)iVar1;
|
|
|
|
fVar3 = ABS((float)(int)local_c);
|
|
|
|
if (fVar3 < _DAT_0079e510 == (fVar3 == _DAT_0079e510)) {
|
|
|
|
param_2 = param_2 / (float)(int)local_c;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
param_2 = 0.0;
|
|
|
|
}
|
|
|
|
FUN_00460820(0x75,1);
|
|
|
|
local_8 = (undefined4 *)0x0;
|
|
|
|
local_4 = (int *)0x0;
|
|
|
|
FUN_0042a2d0(0x86);
|
|
|
|
if (local_4 != (int *)0x0) {
|
|
|
|
FUN_00429b10();
|
|
|
|
(**(code **)(*local_4 + 0x8c))(param_2);
|
|
|
|
}
|
|
|
|
FUN_00460820(0x7b,uVar4);
|
|
|
|
(**(code **)(*piVar5 + 0xd4))(&local_8);
|
|
|
|
FUN_00460820(0x75,0);
|
|
|
|
FUN_00471490();
|
|
|
|
if ((local_c != (undefined4 *)0x0) &&
|
|
|
|
(iVar1 = local_c[1], local_c[1] = iVar1 + -1, iVar1 + -1 == 0)) {
|
|
|
|
(**(code **)*local_c)(1);
|
|
|
|
}
|
|
|
|
if ((local_8 != (undefined4 *)0x0) &&
|
|
|
|
(iVar1 = local_8[1], local_8[1] = iVar1 + -1, iVar1 + -1 == 0)) {
|
|
|
|
(**(code **)*local_8)(1);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00474430 at 0x00474430 (size: 77) ---
|
|
|
|
|
|
bool FUN_00474430(int *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
char cVar1;
|
|
|
|
char cVar2;
|
|
|
|
|
|
|
|
cVar1 = FUN_004625b0(param_1);
|
|
|
|
FUN_00425ba0();
|
|
|
|
if (param_1 == (int *)0x0) {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
cVar2 = FUN_00427240(0x11,param_1);
|
|
|
|
(**(code **)(*param_1 + 0x14))();
|
|
|
|
return cVar2 != '\0' && cVar1 != '\0';
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00474480 at 0x00474480 (size: 224) ---
|
|
|
|
|
|
void __thiscall FUN_00474480(int *param_1,int param_2,int param_3,int param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
int iVar2;
|
|
|
|
int *piVar3;
|
|
|
|
int iVar4;
|
|
|
|
int local_8 [2];
|
|
|
|
|
|
|
|
iVar1 = param_3;
|
|
|
|
iVar4 = param_2;
|
|
|
|
if ((char)param_4 == '\0') {
|
|
|
|
param_4 = CONCAT31(param_4._1_3_,1);
|
|
|
|
FUN_00460cc0(0x73,¶m_4);
|
|
|
|
iVar1 = param_3;
|
|
|
|
iVar4 = param_2;
|
|
|
|
if ((char)param_4 != '\0') {
|
|
|
|
iVar4 = param_1[0x180];
|
|
|
|
iVar1 = FUN_0069fe60();
|
|
|
|
local_8[0] = iVar4 - iVar1;
|
|
|
|
local_8[1] = 0;
|
|
|
|
piVar3 = ¶m_2;
|
|
|
|
if (iVar4 - iVar1 <= param_2) {
|
|
|
|
piVar3 = local_8;
|
|
|
|
}
|
|
|
|
if (*piVar3 < 1) {
|
|
|
|
piVar3 = local_8 + 1;
|
|
|
|
}
|
|
|
|
iVar4 = *piVar3;
|
|
|
|
iVar1 = param_1[0x181];
|
|
|
|
iVar2 = FUN_0069fe70();
|
|
|
|
param_4 = iVar1 - iVar2;
|
|
|
|
param_2 = 0;
|
|
|
|
piVar3 = ¶m_3;
|
|
|
|
if (iVar1 - iVar2 <= param_3) {
|
|
|
|
piVar3 = ¶m_4;
|
|
|
|
}
|
|
|
|
if (*piVar3 < 1) {
|
|
|
|
piVar3 = ¶m_2;
|
|
|
|
}
|
|
|
|
iVar1 = *piVar3;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if ((iVar4 != param_1[0x17e]) || (iVar1 != param_1[0x17f])) {
|
|
|
|
param_1[0x17e] = iVar4;
|
|
|
|
param_1[0x17f] = iVar1;
|
|
|
|
FUN_004742e0(1);
|
|
|
|
FUN_004742e0(0);
|
|
|
|
(**(code **)(*param_1 + 0x138))();
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00474560 at 0x00474560 (size: 458) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void __thiscall FUN_00474560(int *param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
float fVar1;
|
|
|
|
int iVar2;
|
|
|
|
float fVar3;
|
|
|
|
float *pfVar4;
|
|
|
|
uint uVar5;
|
|
|
|
char cVar6;
|
|
|
|
float fVar7;
|
|
|
|
char local_11;
|
|
|
|
undefined4 local_10;
|
|
|
|
float local_c;
|
|
|
|
float local_8;
|
|
|
|
uint local_4;
|
|
|
|
|
|
|
|
iVar2 = FUN_00474280(param_2);
|
|
|
|
if (iVar2 != 0) {
|
|
|
|
cVar6 = (char)param_2;
|
|
|
|
if (cVar6 == '\0') {
|
|
|
|
fVar1 = (float)param_1[0x181];
|
|
|
|
local_8 = fVar1;
|
|
|
|
fVar3 = (float)FUN_0069fe70();
|
|
|
|
pfVar4 = (float *)(param_1 + 0x17f);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
fVar1 = (float)param_1[0x180];
|
|
|
|
local_8 = fVar1;
|
|
|
|
fVar3 = (float)FUN_0069fe60();
|
|
|
|
pfVar4 = (float *)(param_1 + 0x17e);
|
|
|
|
}
|
|
|
|
uVar5 = local_4;
|
|
|
|
local_4 = local_4 & 0xffffff00;
|
|
|
|
fVar7 = fVar1;
|
|
|
|
if ((int)fVar1 <= (int)fVar3) {
|
|
|
|
*pfVar4 = 0.0;
|
|
|
|
local_4 = CONCAT31(SUB43(uVar5,1),1);
|
|
|
|
fVar7 = fVar3;
|
|
|
|
local_8 = fVar3;
|
|
|
|
}
|
|
|
|
if ((int)fVar7 < (int)*pfVar4) {
|
|
|
|
*pfVar4 = fVar7;
|
|
|
|
}
|
|
|
|
if (fVar7 == 0.0) {
|
|
|
|
local_8 = 1.0;
|
|
|
|
local_c = fVar3;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
local_c = 1.0;
|
|
|
|
fVar7 = (float)(int)local_8;
|
|
|
|
local_8 = (float)(int)fVar3 / fVar7;
|
|
|
|
pfVar4 = &local_8;
|
|
|
|
if (_DAT_007938b0 <= (float)(int)fVar3 / fVar7) {
|
|
|
|
pfVar4 = &local_c;
|
|
|
|
}
|
|
|
|
local_8 = *pfVar4;
|
|
|
|
}
|
|
|
|
local_10 = 0;
|
|
|
|
FUN_00460bf0(0x86,&local_10);
|
|
|
|
if ((int)fVar1 <= (int)fVar3) {
|
|
|
|
local_10 = 0;
|
|
|
|
}
|
|
|
|
FUN_00460820(0x75,1);
|
|
|
|
FUN_00460820(0x7b,param_2);
|
|
|
|
FUN_00460820(0x76,local_4);
|
|
|
|
FUN_00460760(0x88,local_8);
|
|
|
|
FUN_00460820(0x75,0);
|
|
|
|
local_11 = '\0';
|
|
|
|
FUN_00460cc0(0x74,&local_11);
|
|
|
|
if (local_11 != '\0') {
|
|
|
|
FUN_00460760(0x86,local_10);
|
|
|
|
if (cVar6 == '\0') {
|
|
|
|
FUN_0069fe70();
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
FUN_0069fe60();
|
|
|
|
}
|
|
|
|
uVar5 = FUN_005df4c4();
|
|
|
|
param_1[0x17e] = -(uint)(cVar6 != '\0') & uVar5;
|
|
|
|
param_1[0x17f] = (cVar6 != '\0') - 1 & uVar5;
|
|
|
|
(**(code **)(*param_1 + 0x138))();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
FUN_004742e0(param_2);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00474730 at 0x00474730 (size: 276) ---
|
|
|
|
|
|
void __thiscall FUN_00474730(int *param_1,undefined4 param_2,uint param_3,int param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
uint uVar1;
|
|
|
|
undefined4 uVar2;
|
|
|
|
char cVar3;
|
|
|
|
|
|
|
|
if (param_4 != 0) {
|
|
|
|
cVar3 = (char)param_2;
|
|
|
|
if (param_3 == 10) {
|
|
|
|
param_4 = 0;
|
|
|
|
FUN_00460bf0(0x86,¶m_4);
|
|
|
|
if (cVar3 == '\0') {
|
|
|
|
FUN_0069fe70();
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
FUN_0069fe60();
|
|
|
|
}
|
|
|
|
uVar1 = FUN_005df4c4();
|
|
|
|
param_1[0x17e] = -(uint)(cVar3 != '\0') & uVar1;
|
|
|
|
param_1[0x17f] = (cVar3 != '\0') - 1 & uVar1;
|
|
|
|
(**(code **)(*param_1 + 0x138))();
|
|
|
|
}
|
|
|
|
else if ((0xc < param_3) && (param_3 < 0x11)) {
|
|
|
|
if ((param_3 == 0xf) || (param_3 == 0x10)) {
|
|
|
|
uVar2 = 1;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar2 = 0;
|
|
|
|
}
|
|
|
|
if ((param_3 == 0xd) || (param_3 == 0xf)) {
|
|
|
|
param_3 = 1;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
param_3 = param_3 & 0xffffff00;
|
|
|
|
}
|
|
|
|
uVar1 = (**(code **)(*param_1 + 0x13c))(param_2,param_3,uVar2);
|
|
|
|
FUN_00474480((-(uint)(cVar3 != '\0') & uVar1) + param_1[0x17e],
|
|
|
|
((cVar3 != '\0') - 1 & uVar1) + param_1[0x17f],0);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00474850 at 0x00474850 (size: 25) ---
|
|
|
|
|
|
void __fastcall FUN_00474850(undefined4 *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
*param_1 = &PTR_FUN_0079e518;
|
|
|
|
param_1[0x17c] = 0;
|
|
|
|
param_1[0x17d] = 0;
|
|
|
|
FUN_00464e00();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00474870 at 0x00474870 (size: 162) ---
|
|
|
|
|
|
void __fastcall FUN_00474870(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int *piVar1;
|
|
|
|
int iVar2;
|
|
|
|
|
|
|
|
FUN_004639a0();
|
|
|
|
if (*(int *)(param_1 + 0x5f0) != 0) {
|
|
|
|
piVar1 = (int *)FUN_00464690(*(int *)(param_1 + 0x5f0));
|
|
|
|
if (piVar1 != (int *)0x0) {
|
|
|
|
iVar2 = (**(code **)(*piVar1 + 0x94))(0xb);
|
|
|
|
if (iVar2 != 0) {
|
|
|
|
iVar2 = FUN_00464690(*(undefined4 *)(param_1 + 0x2e4));
|
|
|
|
if (iVar2 == param_1) {
|
|
|
|
FUN_00464ad0(param_1);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x5f4) != 0) {
|
|
|
|
piVar1 = (int *)FUN_00464690(*(int *)(param_1 + 0x5f4));
|
|
|
|
if (piVar1 != (int *)0x0) {
|
|
|
|
iVar2 = (**(code **)(*piVar1 + 0x94))(0xb);
|
|
|
|
if (iVar2 != 0) {
|
|
|
|
iVar2 = FUN_00464690(*(undefined4 *)(param_1 + 0x2e4));
|
|
|
|
if (iVar2 == param_1) {
|
|
|
|
FUN_00464ad0(param_1);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
FUN_00474560(1);
|
|
|
|
FUN_00474560(0);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00474920 at 0x00474920 (size: 205) ---
|
|
|
|
|
|
undefined4 __thiscall FUN_00474920(int param_1,int *param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
int iVar2;
|
|
|
|
int *piVar3;
|
|
|
|
int iVar4;
|
|
|
|
undefined4 uVar5;
|
|
|
|
|
|
|
|
iVar1 = *param_2;
|
|
|
|
iVar4 = *(int *)(param_1 + 0x5f0);
|
|
|
|
if ((iVar1 == iVar4) || (iVar1 == *(int *)(param_1 + 0x5f4))) {
|
|
|
|
iVar2 = FUN_00474280(iVar1 == iVar4);
|
|
|
|
if (iVar2 == param_2[1]) {
|
|
|
|
FUN_00474730(iVar1 == iVar4,param_2[2],iVar2);
|
|
|
|
return 2;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
iVar1 = param_2[3];
|
|
|
|
if ((((param_2[2] == 0x1c) && (((iVar1 == 5 || (iVar1 == 6)) && (*(int *)(param_1 + 0x5f4) != 0)))
|
|
|
|
) && (((piVar3 = (int *)FUN_00464690(*(int *)(param_1 + 0x5f4)), piVar3 != (int *)0x0 &&
|
|
|
|
(iVar4 = (**(code **)(*piVar3 + 0x94))(0xb), iVar4 != 0)) &&
|
|
|
|
(iVar2 = FUN_00464690(*(undefined4 *)(param_1 + 0x2e4)), iVar2 == param_1)))) &&
|
|
|
|
((*(uint *)(iVar4 + 0xa4) >> 4 & 1) == 0)) {
|
|
|
|
FUN_00471810(iVar1);
|
|
|
|
return 2;
|
|
|
|
}
|
|
|
|
uVar5 = FUN_00462420(param_2);
|
|
|
|
return uVar5;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004749f0 at 0x004749F0 (size: 129) ---
|
|
|
|
|
|
void __thiscall FUN_004749f0(int param_1,int param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
int *piVar1;
|
|
|
|
int iVar2;
|
|
|
|
int iVar3;
|
|
|
|
|
|
|
|
iVar2 = param_2;
|
|
|
|
FUN_00462e60(param_2);
|
|
|
|
iVar3 = FUN_00429a00();
|
|
|
|
if (iVar3 == 0x71) {
|
|
|
|
piVar1 = *(int **)(iVar2 + 4);
|
|
|
|
if (piVar1 != (int *)0x0) {
|
|
|
|
(**(code **)(*piVar1 + 0xa8))(¶m_2);
|
|
|
|
}
|
|
|
|
iVar2 = param_2;
|
|
|
|
if (param_2 != 0) {
|
|
|
|
FUN_00474560(1);
|
|
|
|
}
|
|
|
|
*(int *)(param_1 + 0x5f0) = iVar2;
|
|
|
|
}
|
|
|
|
else if (iVar3 == 0x72) {
|
|
|
|
piVar1 = *(int **)(iVar2 + 4);
|
|
|
|
if (piVar1 != (int *)0x0) {
|
|
|
|
(**(code **)(*piVar1 + 0xa8))(¶m_2);
|
|
|
|
}
|
|
|
|
iVar2 = param_2;
|
|
|
|
if (param_2 != 0) {
|
|
|
|
FUN_00474560(0);
|
|
|
|
}
|
|
|
|
*(int *)(param_1 + 0x5f4) = iVar2;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00474a80 at 0x00474A80 (size: 107) ---
|
|
|
|
|
|
void __thiscall FUN_00474a80(int param_1,undefined4 param_2,undefined4 param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
int iVar2;
|
|
|
|
int iVar3;
|
|
|
|
|
|
|
|
iVar1 = FUN_0069fe60();
|
|
|
|
iVar2 = FUN_0069fe70();
|
|
|
|
FUN_00463d60(param_2,param_3);
|
|
|
|
iVar3 = FUN_0069fe60();
|
|
|
|
if ((iVar1 == iVar3) && (iVar1 = FUN_0069fe70(), iVar2 == iVar1)) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
FUN_00474560(1);
|
|
|
|
FUN_00474560(0);
|
|
|
|
FUN_00474480(*(undefined4 *)(param_1 + 0x5f8),*(undefined4 *)(param_1 + 0x5fc),0);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00474af0 at 0x00474AF0 (size: 84) ---
|
|
|
|
|
|
void __thiscall FUN_00474af0(int param_1,int param_2,int param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
undefined4 uVar2;
|
|
|
|
|
|
|
|
iVar1 = *(int *)(param_1 + 0x600);
|
|
|
|
if ((iVar1 != param_2) || (*(int *)(param_1 + 0x604) != param_3)) {
|
|
|
|
uVar2 = *(undefined4 *)(param_1 + 0x604);
|
|
|
|
*(int *)(param_1 + 0x604) = param_3;
|
|
|
|
*(int *)(param_1 + 0x600) = param_2;
|
|
|
|
FUN_00474560(1);
|
|
|
|
FUN_00474560(0);
|
|
|
|
FUN_00460410(0x32,iVar1,uVar2);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00474b50 at 0x00474B50 (size: 50) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_00474b50(undefined4 *param_1,byte param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
*param_1 = &PTR_FUN_0079e518;
|
|
|
|
param_1[0x17c] = 0;
|
|
|
|
param_1[0x17d] = 0;
|
|
|
|
FUN_00464e00();
|
|
|
|
if ((param_2 & 1) != 0) {
|
|
|
|
operator_delete(param_1);
|
|
|
|
}
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00474b90 at 0x00474B90 (size: 30) ---
|
|
|
|
|
|
undefined4 __fastcall FUN_00474b90(short *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
short sVar1;
|
|
|
|
|
|
|
|
sVar1 = *param_1;
|
|
|
|
if (((sVar1 != 9) && (sVar1 != 0xd)) && (sVar1 != 0x20)) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00474bb0 at 0x00474BB0 (size: 10) ---
|
|
|
|
|
|
bool __fastcall FUN_00474bb0(short *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
return *param_1 == 10;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00474bc0 at 0x00474BC0 (size: 20) ---
|
|
|
|
|
|
void __fastcall FUN_00474bc0(undefined2 *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
*param_1 = 0;
|
|
|
|
*(undefined4 *)(param_1 + 2) = 0;
|
|
|
|
*(undefined4 *)(param_1 + 4) = 0;
|
|
|
|
*(undefined4 *)(param_1 + 0xe) = 0;
|
|
|
|
*(undefined4 *)(param_1 + 0x10) = 0;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00474be0 at 0x00474BE0 (size: 66) ---
|
|
|
|
|
|
void __fastcall FUN_00474be0(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 *puVar1;
|
|
|
|
LONG LVar2;
|
|
|
|
|
|
|
|
puVar1 = *(undefined4 **)(param_1 + 0x20);
|
|
|
|
if (puVar1 != (undefined4 *)0x0) {
|
|
|
|
LVar2 = InterlockedDecrement(puVar1 + 1);
|
|
|
|
if ((LVar2 == 0) && (puVar1 != (undefined4 *)0x0)) {
|
|
|
|
(**(code **)*puVar1)(1);
|
|
|
|
}
|
|
|
|
*(undefined4 *)(param_1 + 0x20) = 0;
|
|
|
|
}
|
|
|
|
if (*(int **)(param_1 + 0x1c) != (int *)0x0) {
|
|
|
|
(**(code **)(**(int **)(param_1 + 0x1c) + 0x14))();
|
|
|
|
*(undefined4 *)(param_1 + 0x1c) = 0;
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00474c30 at 0x00474C30 (size: 170) ---
|
|
|
|
|
|
undefined2 * __thiscall FUN_00474c30(undefined2 *param_1,undefined2 *param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 *puVar1;
|
|
|
|
int *piVar2;
|
|
|
|
LONG LVar3;
|
|
|
|
|
|
|
|
if (param_1 != param_2) {
|
|
|
|
*param_1 = *param_2;
|
|
|
|
*(undefined4 *)(param_1 + 2) = *(undefined4 *)(param_2 + 2);
|
|
|
|
*(undefined4 *)(param_1 + 4) = *(undefined4 *)(param_2 + 4);
|
|
|
|
*(undefined4 *)(param_1 + 6) = *(undefined4 *)(param_2 + 6);
|
|
|
|
*(undefined4 *)(param_1 + 8) = *(undefined4 *)(param_2 + 8);
|
|
|
|
*(undefined4 *)(param_1 + 10) = *(undefined4 *)(param_2 + 10);
|
|
|
|
*(undefined4 *)(param_1 + 0xc) = *(undefined4 *)(param_2 + 0xc);
|
|
|
|
if (*(int **)(param_1 + 0xe) != (int *)0x0) {
|
|
|
|
(**(code **)(**(int **)(param_1 + 0xe) + 0x14))();
|
|
|
|
*(undefined4 *)(param_1 + 0xe) = 0;
|
|
|
|
}
|
|
|
|
puVar1 = *(undefined4 **)(param_1 + 0x10);
|
|
|
|
if (puVar1 != (undefined4 *)0x0) {
|
|
|
|
LVar3 = InterlockedDecrement(puVar1 + 1);
|
|
|
|
if ((LVar3 == 0) && (puVar1 != (undefined4 *)0x0)) {
|
|
|
|
(**(code **)*puVar1)(1);
|
|
|
|
}
|
|
|
|
*(undefined4 *)(param_1 + 0x10) = 0;
|
|
|
|
}
|
|
|
|
piVar2 = *(int **)(param_2 + 0xe);
|
|
|
|
*(int **)(param_1 + 0xe) = piVar2;
|
|
|
|
*(undefined4 *)(param_1 + 0x10) = *(undefined4 *)(param_2 + 0x10);
|
|
|
|
if (piVar2 != (int *)0x0) {
|
|
|
|
(**(code **)(*piVar2 + 0x10))();
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
InterlockedIncrement((LONG *)(*(int *)(param_1 + 0x10) + 4));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00474ce0 at 0x00474CE0 (size: 68) ---
|
|
|
|
|
|
void __thiscall FUN_00474ce0(int param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 *puVar1;
|
|
|
|
LONG LVar2;
|
|
|
|
|
|
|
|
puVar1 = *(undefined4 **)(param_1 + 0x20);
|
|
|
|
if (puVar1 != (undefined4 *)0x0) {
|
|
|
|
LVar2 = InterlockedDecrement(puVar1 + 1);
|
|
|
|
if ((LVar2 == 0) && (puVar1 != (undefined4 *)0x0)) {
|
|
|
|
(**(code **)*puVar1)(1);
|
|
|
|
}
|
|
|
|
*(undefined4 *)(param_1 + 0x20) = 0;
|
|
|
|
*(undefined4 *)(param_1 + 0x20) = param_2;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
*(undefined4 *)(param_1 + 0x20) = param_2;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00474d30 at 0x00474D30 (size: 36) ---
|
|
|
|
|
|
undefined2 * __thiscall FUN_00474d30(undefined2 *param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
*param_1 = 0;
|
|
|
|
*(undefined4 *)(param_1 + 2) = 0;
|
|
|
|
*(undefined4 *)(param_1 + 4) = 0;
|
|
|
|
*(undefined4 *)(param_1 + 0xe) = 0;
|
|
|
|
*(undefined4 *)(param_1 + 0x10) = 0;
|
|
|
|
FUN_00474c30(param_2);
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00474d60 at 0x00474D60 (size: 229) ---
|
|
|
|
|
|
void __thiscall FUN_00474d60(short *param_1,int *param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
short sVar1;
|
|
|
|
char cVar2;
|
|
|
|
int *piVar3;
|
|
|
|
int *piVar4;
|
|
|
|
uint uVar5;
|
|
|
|
|
|
|
|
sVar1 = *param_1;
|
|
|
|
if (*(int **)(param_1 + 0xe) != (int *)0x0) {
|
|
|
|
(**(code **)(**(int **)(param_1 + 0xe) + 0x14))();
|
|
|
|
param_1[0xe] = 0;
|
|
|
|
param_1[0xf] = 0;
|
|
|
|
}
|
|
|
|
if (param_2 != (int *)0x0) {
|
|
|
|
cVar2 = FUN_00443580(*param_1);
|
|
|
|
if ((cVar2 == '\0') && (sVar1 != 10)) {
|
|
|
|
piVar3 = (int *)FUN_00415730(0x14,9,0x2e);
|
|
|
|
if (piVar3 != (int *)0x0) {
|
|
|
|
cVar2 = FUN_00443580(*param_1);
|
|
|
|
if (cVar2 != '\0') {
|
|
|
|
*(int **)(param_1 + 0xe) = piVar3;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
piVar4 = (int *)FUN_00415730(0x16,9,0x2e);
|
|
|
|
if (piVar4 != (int *)0x0) {
|
|
|
|
cVar2 = FUN_00443580(*param_1);
|
|
|
|
if (cVar2 != '\0') {
|
|
|
|
*(int **)(param_1 + 0xe) = piVar4;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (*(int **)(param_1 + 0xe) != (int *)0x0) {
|
|
|
|
(**(code **)(**(int **)(param_1 + 0xe) + 0x10))();
|
|
|
|
}
|
|
|
|
if (piVar4 != (int *)0x0) {
|
|
|
|
(**(code **)(*piVar4 + 0x14))();
|
|
|
|
}
|
|
|
|
if (piVar3 != (int *)0x0) {
|
|
|
|
(**(code **)(*piVar3 + 0x14))();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*(int **)(param_1 + 0xe) = param_2;
|
|
|
|
(**(code **)(*param_2 + 0x10))();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0xe) != 0) {
|
|
|
|
uVar5 = FUN_00443550(*param_1);
|
|
|
|
*(uint *)(param_1 + 2) = uVar5 & 0xff;
|
|
|
|
*(undefined4 *)(param_1 + 4) = *(undefined4 *)(*(int *)(param_1 + 0xe) + 0x30);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00474e50 at 0x00474E50 (size: 103) ---
|
|
|
|
|
|
undefined2 * __thiscall
|
|
|
|
FUN_00474e50(undefined2 *param_1,undefined2 param_2,undefined4 *param_3,undefined4 param_4,
|
|
|
|
undefined4 param_5)
|
|
|
|
|
|
|
|
{
|
|
|
|
*param_1 = param_2;
|
|
|
|
*(undefined4 *)(param_1 + 2) = 0;
|
|
|
|
*(undefined4 *)(param_1 + 4) = 0;
|
|
|
|
*(undefined4 *)(param_1 + 6) = *param_3;
|
|
|
|
*(undefined4 *)(param_1 + 8) = param_3[1];
|
|
|
|
*(undefined4 *)(param_1 + 10) = param_3[2];
|
|
|
|
*(undefined4 *)(param_1 + 0xc) = param_3[3];
|
|
|
|
*(undefined4 *)(param_1 + 0xe) = 0;
|
|
|
|
*(undefined4 *)(param_1 + 0x10) = param_5;
|
|
|
|
FUN_00474d60(param_4);
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
InterlockedIncrement((LONG *)(*(int *)(param_1 + 0x10) + 4));
|
|
|
|
}
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00474ec0 at 0x00474EC0 (size: 103) ---
|
|
|
|
|
|
undefined2 * __thiscall
|
|
|
|
FUN_00474ec0(undefined2 *param_1,undefined2 param_2,undefined4 *param_3,undefined4 param_4,
|
|
|
|
undefined4 param_5,undefined4 param_6,undefined4 param_7)
|
|
|
|
|
|
|
|
{
|
|
|
|
*param_1 = param_2;
|
|
|
|
*(undefined4 *)(param_1 + 2) = param_6;
|
|
|
|
*(undefined4 *)(param_1 + 4) = param_7;
|
|
|
|
*(undefined4 *)(param_1 + 6) = *param_3;
|
|
|
|
*(undefined4 *)(param_1 + 8) = param_3[1];
|
|
|
|
*(undefined4 *)(param_1 + 10) = param_3[2];
|
|
|
|
*(undefined4 *)(param_1 + 0xc) = param_3[3];
|
|
|
|
*(undefined4 *)(param_1 + 0xe) = 0;
|
|
|
|
*(undefined4 *)(param_1 + 0x10) = param_5;
|
|
|
|
FUN_00474d60(param_4);
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
InterlockedIncrement((LONG *)(*(int *)(param_1 + 0x10) + 4));
|
|
|
|
}
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00474f30 at 0x00474F30 (size: 167) ---
|
|
|
|
|
|
undefined1 __fastcall FUN_00474f30(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
undefined1 uVar2;
|
|
|
|
uint uVar3;
|
|
|
|
int iVar4;
|
|
|
|
|
|
|
|
if (*(char *)(param_1 + 0x14c) == '\0') {
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
uVar3 = 0;
|
|
|
|
uVar2 = 1;
|
|
|
|
if (*(int *)(param_1 + 0x98) != 0) {
|
|
|
|
iVar4 = 0;
|
|
|
|
uVar2 = 1;
|
|
|
|
do {
|
|
|
|
iVar1 = *(int *)(iVar4 + 0xa0 + *(int *)(param_1 + 0x90));
|
|
|
|
if ((iVar1 != 0) && (*(char *)(iVar1 + 0x14c) != '\0')) {
|
|
|
|
*(undefined4 *)(param_1 + 0x13c) = 0;
|
|
|
|
FUN_00474f30();
|
|
|
|
uVar2 = 0;
|
|
|
|
}
|
|
|
|
uVar3 = uVar3 + 1;
|
|
|
|
iVar4 = iVar4 + 0xac;
|
|
|
|
} while (uVar3 < *(uint *)(param_1 + 0x98));
|
|
|
|
}
|
|
|
|
if (*(int **)(param_1 + 0x130) != (int *)0x0) {
|
|
|
|
(**(code **)(**(int **)(param_1 + 0x130) + 0x18))(0);
|
|
|
|
if (*(char *)(param_1 + 0x14d) != '\0') {
|
|
|
|
(**(code **)(**(int **)(param_1 + 0x8c) + 0x18))(0);
|
|
|
|
}
|
|
|
|
*(undefined1 *)(param_1 + 0x14c) = 0;
|
|
|
|
return uVar2;
|
|
|
|
}
|
|
|
|
*(undefined1 *)(param_1 + 0x14c) = 0;
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00474ff0 at 0x00474FF0 (size: 48) ---
|
|
|
|
|
|
void __thiscall FUN_00474ff0(int param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
if ((*(char *)(param_1 + 0x14c) != '\0') && ((char)param_2 == '\0')) {
|
|
|
|
FUN_00474f30();
|
|
|
|
}
|
|
|
|
if (*(int **)(param_1 + 0x8c) != (int *)0x0) {
|
|
|
|
(**(code **)(**(int **)(param_1 + 0x8c) + 0x18))(param_2);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004750d0 at 0x004750D0 (size: 36) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_004750d0(undefined4 *param_1,byte param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
*param_1 = &PTR_FUN_0079e678;
|
|
|
|
FUN_00476c60();
|
|
|
|
if ((param_2 & 1) != 0) {
|
|
|
|
operator_delete(param_1);
|
|
|
|
}
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00475100 at 0x00475100 (size: 16) ---
|
|
|
|
|
|
void FUN_00475100(void)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_00460270(0x19,&LAB_00475050);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00475270 at 0x00475270 (size: 36) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_00475270(undefined4 *param_1,byte param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
*param_1 = &PTR_FUN_0079e7c0;
|
|
|
|
FUN_00476c60();
|
|
|
|
if ((param_2 & 1) != 0) {
|
|
|
|
operator_delete(param_1);
|
|
|
|
}
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004752a0 at 0x004752A0 (size: 16) ---
|
|
|
|
|
|
void FUN_004752a0(void)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_00460270(0x18,&LAB_00475230);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004753d0 at 0x004753D0 (size: 38) ---
|
|
|
|
|
|
void FUN_004753d0(undefined4 param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 uVar1;
|
|
|
|
|
|
|
|
uVar1 = param_1;
|
|
|
|
param_1 = FUN_00429a00();
|
|
|
|
FUN_0042c290(¶m_1,uVar1);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004756b0 at 0x004756B0 (size: 36) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_004756b0(undefined4 *param_1,byte param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
*param_1 = &PTR_FUN_0079e908;
|
|
|
|
FUN_00476c60();
|
|
|
|
if ((param_2 & 1) != 0) {
|
|
|
|
operator_delete(param_1);
|
|
|
|
}
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004756e0 at 0x004756E0 (size: 16) ---
|
|
|
|
|
|
void FUN_004756e0(void)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_00460270(0x17,&LAB_00475630);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00475870 at 0x00475870 (size: 36) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_00475870(undefined4 *param_1,byte param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
*param_1 = &PTR_FUN_0079ea50;
|
|
|
|
FUN_00476c60();
|
|
|
|
if ((param_2 & 1) != 0) {
|
|
|
|
operator_delete(param_1);
|
|
|
|
}
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004758a0 at 0x004758A0 (size: 16) ---
|
|
|
|
|
|
void FUN_004758a0(void)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_00460270(0x16,&LAB_00475830);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00475dc0 at 0x00475DC0 (size: 36) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_00475dc0(undefined4 *param_1,byte param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
*param_1 = &PTR_FUN_0079eb98;
|
|
|
|
FUN_00476c60();
|
|
|
|
if ((param_2 & 1) != 0) {
|
|
|
|
operator_delete(param_1);
|
|
|
|
}
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00475df0 at 0x00475DF0 (size: 16) ---
|
|
|
|
|
|
void FUN_00475df0(void)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_00460270(0x15,&LAB_00475d80);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00476230 at 0x00476230 (size: 36) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_00476230(undefined4 *param_1,byte param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
*param_1 = &PTR_FUN_0079ece0;
|
|
|
|
FUN_00476c60();
|
|
|
|
if ((param_2 & 1) != 0) {
|
|
|
|
operator_delete(param_1);
|
|
|
|
}
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00476260 at 0x00476260 (size: 16) ---
|
|
|
|
|
|
void FUN_00476260(void)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_00460270(0x14,&LAB_004761f0);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00476820 at 0x00476820 (size: 37) ---
|
|
|
|
|
|
undefined4 FUN_00476820(undefined4 param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int *piVar1;
|
|
|
|
undefined4 uVar2;
|
|
|
|
|
|
|
|
piVar1 = (int *)FUN_00463c00(param_1);
|
|
|
|
if (piVar1 != (int *)0x0) {
|
|
|
|
/* WARNING: Could not recover jumptable at 0x0047683a. Too many branches */
|
|
|
|
/* WARNING: Treating indirect jump as call */
|
|
|
|
uVar2 = (**(code **)(*piVar1 + 0x94))();
|
|
|
|
return uVar2;
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00476850 at 0x00476850 (size: 36) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_00476850(undefined4 *param_1,byte param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
*param_1 = &PTR_FUN_0079ee28;
|
|
|
|
FUN_00476c60();
|
|
|
|
if ((param_2 & 1) != 0) {
|
|
|
|
operator_delete(param_1);
|
|
|
|
}
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00476880 at 0x00476880 (size: 16) ---
|
|
|
|
|
|
void FUN_00476880(void)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_00460270(0x13,&LAB_004767e0);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00476bf0 at 0x00476BF0 (size: 112) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_00476bf0(undefined4 *param_1,undefined4 param_2,undefined4 param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 uVar1;
|
|
|
|
undefined4 uVar2;
|
|
|
|
|
|
|
|
FUN_00472670(param_2,param_3);
|
|
|
|
*param_1 = &PTR_FUN_0079ef78;
|
|
|
|
param_1[0x17e] = 0;
|
|
|
|
FUN_006823d0();
|
|
|
|
uVar2 = DAT_0079ef74;
|
|
|
|
uVar1 = DAT_0079ef70;
|
|
|
|
param_1[0x19e] = DAT_0079ef70;
|
|
|
|
param_1[0x19f] = uVar2;
|
|
|
|
param_1[0x1a0] = uVar1;
|
|
|
|
param_1[0x1a1] = uVar2;
|
|
|
|
param_1[0x1a2] = 0;
|
|
|
|
param_1[0x1a3] = 0;
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00476c60 at 0x00476C60 (size: 28) ---
|
|
|
|
|
|
void __fastcall FUN_00476c60(undefined4 *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
*param_1 = &PTR_FUN_0079ef78;
|
|
|
|
FUN_00681f60();
|
|
|
|
FUN_004726c0();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00476c80 at 0x00476C80 (size: 40) ---
|
|
|
|
|
|
void __thiscall FUN_00476c80(int *param_1,int param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
if ((*(int *)(param_2 + 8) == 0x24) && (*(int **)(param_2 + 4) == param_1)) {
|
|
|
|
(**(code **)(*param_1 + 0x144))();
|
|
|
|
}
|
|
|
|
FUN_00462420(param_2);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00476cb0 at 0x00476CB0 (size: 49) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_00476cb0(undefined4 *param_1,byte param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
*param_1 = &PTR_FUN_0079ef78;
|
|
|
|
FUN_00681f60();
|
|
|
|
FUN_004726c0();
|
|
|
|
if ((param_2 & 1) != 0) {
|
|
|
|
operator_delete(param_1);
|
|
|
|
}
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00476cf0 at 0x00476CF0 (size: 114) ---
|
|
|
|
|
|
void __fastcall FUN_00476cf0(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
int *piVar2;
|
|
|
|
undefined4 uVar3;
|
|
|
|
|
|
|
|
if ((*(int *)(param_1 + 0x688) != 0) && (*(int *)(param_1 + 0x68c) != 0)) goto LAB_00476d3d;
|
|
|
|
iVar1 = FUN_00463c00(0x33);
|
|
|
|
*(int *)(param_1 + 0x688) = iVar1;
|
|
|
|
if (iVar1 == 0) {
|
|
|
|
LAB_00476d35:
|
|
|
|
uVar3 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
piVar2 = (int *)FUN_00463c00(0x34);
|
|
|
|
if (piVar2 == (int *)0x0) goto LAB_00476d35;
|
|
|
|
uVar3 = (**(code **)(*piVar2 + 0x94))(0xc);
|
|
|
|
}
|
|
|
|
*(undefined4 *)(param_1 + 0x68c) = uVar3;
|
|
|
|
LAB_00476d3d:
|
|
|
|
if (*(int **)(param_1 + 0x688) != (int *)0x0) {
|
|
|
|
/* WARNING: Could not recover jumptable at 0x00476d59. Too many branches */
|
|
|
|
/* WARNING: Treating indirect jump as call */
|
|
|
|
(**(code **)(**(int **)(param_1 + 0x688) + 0x9c))();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00476d70 at 0x00476D70 (size: 146) ---
|
|
|
|
|
|
void FUN_00476d70(void)
|
|
|
|
|
|
|
|
{
|
|
|
|
int *piVar1;
|
|
|
|
int iVar2;
|
|
|
|
int iVar3;
|
|
|
|
int iVar4;
|
|
|
|
undefined4 uVar5;
|
|
|
|
|
|
|
|
piVar1 = (int *)FUN_00463c00(0x3e);
|
|
|
|
if (piVar1 == (int *)0x0) {
|
|
|
|
iVar2 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar2 = (**(code **)(*piVar1 + 0x94))(0xc);
|
|
|
|
}
|
|
|
|
piVar1 = (int *)FUN_00463c00(0x3d);
|
|
|
|
if (piVar1 != (int *)0x0) {
|
|
|
|
FUN_004686b0();
|
|
|
|
iVar2 = *(int *)(iVar2 + 0x604);
|
|
|
|
iVar3 = FUN_0069fe70();
|
|
|
|
iVar4 = FUN_0069fe70();
|
|
|
|
iVar4 = (iVar2 - iVar3) + iVar4;
|
|
|
|
iVar2 = FUN_0069fe70();
|
|
|
|
if (iVar2 < iVar4) {
|
|
|
|
iVar2 = *piVar1;
|
|
|
|
uVar5 = FUN_0069fe60(iVar4);
|
|
|
|
(**(code **)(iVar2 + 0x30))(uVar5);
|
|
|
|
}
|
|
|
|
iVar2 = FUN_0069fe70();
|
|
|
|
iVar2 = iVar2 / 2;
|
|
|
|
iVar3 = FUN_0069fe60(iVar2);
|
|
|
|
FUN_004600d0(iVar3 / 2,iVar2);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00476e10 at 0x00476E10 (size: 318) ---
|
|
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x00476f08) */
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x00476f19) */
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x00476f1f) */
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x00476e84) */
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x00476e95) */
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x00476ea2) */
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x00476eb5) */
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x00476ef6) */
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x00476f2f) */
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x00476f40) */
|
|
|
|
|
|
|
|
void __fastcall FUN_00476e10(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int *piVar1;
|
|
|
|
|
|
|
|
piVar1 = *(int **)(*(int *)(param_1 + 0x664) +
|
|
|
|
(int)(0xc5 % (ulonglong)*(uint *)(param_1 + 0x66c)) * 4);
|
|
|
|
if (piVar1 != (int *)0x0) {
|
|
|
|
while (*piVar1 != 0xc5) {
|
|
|
|
piVar1 = (int *)piVar1[1];
|
|
|
|
if (piVar1 == (int *)0x0) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (piVar1 != (int *)0x0) {
|
|
|
|
FUN_00429ab0(piVar1 + 2);
|
|
|
|
FUN_0042dc80();
|
|
|
|
FUN_0042e590();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00476fa0 at 0x00476FA0 (size: 358) ---
|
|
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x004770c4) */
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x004770d5) */
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x004770db) */
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x0047700e) */
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x0047701e) */
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x00477077) */
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x004770e7) */
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x004770f8) */
|
|
|
|
|
|
|
|
void __thiscall FUN_00476fa0(int param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
int *piVar1;
|
|
|
|
undefined4 uVar2;
|
|
|
|
|
|
|
|
FUN_00682400(param_2);
|
|
|
|
for (piVar1 = *(int **)(*(int *)(param_1 + 0x664) +
|
|
|
|
(int)(0xac % (ulonglong)*(uint *)(param_1 + 0x66c)) * 4);
|
|
|
|
piVar1 != (int *)0x0; piVar1 = (int *)piVar1[1]) {
|
|
|
|
if (*piVar1 == 0xac) {
|
|
|
|
if (piVar1 != (int *)0x0) {
|
|
|
|
FUN_00429ab0(piVar1 + 2);
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
piVar1 = *(int **)(*(int *)(param_1 + 0x664) +
|
|
|
|
(int)(0xc6 % (ulonglong)*(uint *)(param_1 + 0x66c)) * 4);
|
|
|
|
do {
|
|
|
|
if (piVar1 == (int *)0x0) {
|
|
|
|
LAB_004770b5:
|
|
|
|
FUN_00476e10();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
if (*piVar1 == 0xc6) {
|
|
|
|
if (piVar1 != (int *)0x0) {
|
|
|
|
FUN_00429ab0(piVar1 + 2);
|
|
|
|
uVar2 = DAT_008379ac;
|
|
|
|
*(undefined4 *)(param_1 + 0x678) = DAT_008379a8;
|
|
|
|
*(undefined4 *)(param_1 + 0x67c) = uVar2;
|
|
|
|
*(double *)(param_1 + 0x680) = (double)((float)*(double *)(param_1 + 0x678) + 0.0);
|
|
|
|
FUN_00465f90(3);
|
|
|
|
}
|
|
|
|
goto LAB_004770b5;
|
|
|
|
}
|
|
|
|
piVar1 = (int *)piVar1[1];
|
|
|
|
} while( true );
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00477110 at 0x00477110 (size: 64) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_00477110(undefined4 *param_1,byte param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
*param_1 = &PTR_FUN_0079f0dc;
|
|
|
|
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_00477150 at 0x00477150 (size: 64) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_00477150(undefined4 *param_1,byte param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
*param_1 = &PTR_FUN_0079f0e0;
|
|
|
|
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_00477190 at 0x00477190 (size: 64) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_00477190(undefined4 *param_1,byte param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
*param_1 = &PTR_FUN_0079f0e4;
|
|
|
|
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_004771d0 at 0x004771D0 (size: 112) ---
|
|
|
|
|
|
uint __thiscall FUN_004771d0(int param_1,int param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
void *pvVar1;
|
|
|
|
uint in_EAX;
|
|
|
|
int iVar2;
|
|
|
|
|
|
|
|
pvVar1 = *(void **)(param_1 + 4);
|
|
|
|
if (pvVar1 == (void *)0x0) {
|
|
|
|
return in_EAX & 0xffffff00;
|
|
|
|
}
|
|
|
|
iVar2 = *(int *)((int)pvVar1 + 0x84);
|
|
|
|
*(int *)(param_1 + 4) = iVar2;
|
|
|
|
if (iVar2 == 0) {
|
|
|
|
*(undefined4 *)(param_1 + 8) = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*(undefined4 *)(iVar2 + 0x88) = 0;
|
|
|
|
}
|
|
|
|
FUN_00682400(pvVar1);
|
|
|
|
*(undefined4 *)(param_2 + 0x78) = *(undefined4 *)((int)pvVar1 + 0x78);
|
|
|
|
*(undefined4 *)(param_2 + 0x7c) = *(undefined4 *)((int)pvVar1 + 0x7c);
|
|
|
|
*(undefined4 *)(param_2 + 0x80) = *(undefined4 *)((int)pvVar1 + 0x80);
|
|
|
|
FUN_00681f60();
|
|
|
|
operator_delete(pvVar1);
|
|
|
|
iVar2 = *(int *)(param_1 + 0xc) + -1;
|
|
|
|
*(int *)(param_1 + 0xc) = iVar2;
|
|
|
|
return CONCAT31((int3)((uint)iVar2 >> 8),1);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00477240 at 0x00477240 (size: 131) ---
|
|
|
|
|
|
uint __thiscall FUN_00477240(int param_1,void *param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
uint in_EAX;
|
|
|
|
int iVar1;
|
|
|
|
undefined4 uVar2;
|
|
|
|
|
|
|
|
uVar2 = 0;
|
|
|
|
if ((param_2 == (void *)0x0) || (in_EAX = 0, *(void **)(param_1 + 4) == (void *)0x0)) {
|
|
|
|
return in_EAX & 0xffffff00;
|
|
|
|
}
|
|
|
|
if (param_2 == *(void **)(param_1 + 4)) {
|
|
|
|
iVar1 = *(int *)((int)param_2 + 0x84);
|
|
|
|
*(int *)(param_1 + 4) = iVar1;
|
|
|
|
if (iVar1 == 0) {
|
|
|
|
*(undefined4 *)(param_1 + 8) = 0;
|
|
|
|
goto LAB_004772a5;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*(undefined4 *)(*(int *)((int)param_2 + 0x88) + 0x84) = *(undefined4 *)((int)param_2 + 0x84);
|
|
|
|
iVar1 = *(int *)((int)param_2 + 0x84);
|
|
|
|
if (iVar1 == 0) {
|
|
|
|
*(undefined4 *)(param_1 + 8) = *(undefined4 *)((int)param_2 + 0x88);
|
|
|
|
goto LAB_004772a5;
|
|
|
|
}
|
|
|
|
uVar2 = *(undefined4 *)((int)param_2 + 0x88);
|
|
|
|
}
|
|
|
|
*(undefined4 *)(iVar1 + 0x88) = uVar2;
|
|
|
|
LAB_004772a5:
|
|
|
|
FUN_00681f60();
|
|
|
|
operator_delete(param_2);
|
|
|
|
iVar1 = *(int *)(param_1 + 0xc) + -1;
|
|
|
|
*(int *)(param_1 + 0xc) = iVar1;
|
|
|
|
return CONCAT31((int3)((uint)iVar1 >> 8),1);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004772d0 at 0x004772D0 (size: 176) ---
|
|
|
|
|
|
void __fastcall FUN_004772d0(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
void *pvVar1;
|
|
|
|
int iVar2;
|
|
|
|
|
|
|
|
while (*(int *)(param_1 + 4) != 0) {
|
|
|
|
FUN_006823d0();
|
|
|
|
pvVar1 = *(void **)(param_1 + 4);
|
|
|
|
if (pvVar1 != (void *)0x0) {
|
|
|
|
iVar2 = *(int *)((int)pvVar1 + 0x84);
|
|
|
|
*(int *)(param_1 + 4) = iVar2;
|
|
|
|
if (iVar2 == 0) {
|
|
|
|
*(undefined4 *)(param_1 + 8) = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*(undefined4 *)(iVar2 + 0x88) = 0;
|
|
|
|
}
|
|
|
|
FUN_00682400(pvVar1);
|
|
|
|
FUN_00681f60();
|
|
|
|
operator_delete(pvVar1);
|
|
|
|
*(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + -1;
|
|
|
|
}
|
|
|
|
FUN_00681f60();
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00477380 at 0x00477380 (size: 60) ---
|
|
|
|
|
|
uint * __thiscall FUN_00477380(int param_1,uint *param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
uint *puVar1;
|
|
|
|
|
|
|
|
puVar1 = *(uint **)(*(int *)(param_1 + 100) + (*param_2 % *(uint *)(param_1 + 0x6c)) * 4);
|
|
|
|
while( true ) {
|
|
|
|
if (puVar1 == (uint *)0x0) {
|
|
|
|
return (uint *)0x0;
|
|
|
|
}
|
|
|
|
if (*puVar1 == *param_2) break;
|
|
|
|
puVar1 = (uint *)puVar1[1];
|
|
|
|
}
|
|
|
|
if (puVar1 == (uint *)0x0) {
|
|
|
|
return (uint *)0x0;
|
|
|
|
}
|
|
|
|
return puVar1 + 2;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004773c0 at 0x004773C0 (size: 100) ---
|
|
|
|
|
|
undefined4 __thiscall FUN_004773c0(int param_1,uint *param_2,int param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
uint *puVar1;
|
|
|
|
uint uVar2;
|
|
|
|
|
|
|
|
puVar1 = *(uint **)(*(int *)(param_1 + 100) + (*param_2 % *(uint *)(param_1 + 0x6c)) * 4);
|
|
|
|
while( true ) {
|
|
|
|
if (puVar1 == (uint *)0x0) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
if (*puVar1 == *param_2) break;
|
|
|
|
puVar1 = (uint *)puVar1[1];
|
|
|
|
}
|
|
|
|
if (puVar1 == (uint *)0x0) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
FUN_00682400(puVar1 + 2);
|
|
|
|
*(uint *)(param_3 + 0x78) = puVar1[0x20];
|
|
|
|
uVar2 = puVar1[0x21];
|
|
|
|
*(uint *)(param_3 + 0x7c) = uVar2;
|
|
|
|
*(uint *)(param_3 + 0x80) = puVar1[0x22];
|
|
|
|
return CONCAT31((int3)(uVar2 >> 8),1);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00477430 at 0x00477430 (size: 36) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_00477430(undefined4 *param_1,byte param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
*param_1 = &PTR_FUN_0079f0d8;
|
|
|
|
FUN_004772d0();
|
|
|
|
if ((param_2 & 1) != 0) {
|
|
|
|
operator_delete(param_1);
|
|
|
|
}
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00477460 at 0x00477460 (size: 71) ---
|
|
|
|
|
|
undefined4 FUN_00477460(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
|
|
|
|
if (param_1 == 0) {
|
|
|
|
iVar1 = DAT_00819e98;
|
|
|
|
if (DAT_00819f20 != 0) {
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
if (param_1 == 1) {
|
|
|
|
return CONCAT31((int3)((uint)DAT_00819f20 >> 8),DAT_00819f20 != 0);
|
|
|
|
}
|
|
|
|
iVar1 = FUN_00477380(¶m_1);
|
|
|
|
if (iVar1 == 0) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
iVar1 = *(int *)(iVar1 + 0x78);
|
|
|
|
}
|
|
|
|
if (iVar1 == 0) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004774b0 at 0x004774B0 (size: 143) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_004774b0(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_0079f0dc;
|
|
|
|
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_00477540 at 0x00477540 (size: 143) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_00477540(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_0079f0e0;
|
|
|
|
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_004775d0 at 0x004775D0 (size: 143) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_004775d0(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_0079f0e4;
|
|
|
|
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_00477660 at 0x00477660 (size: 136) ---
|
|
|
|
|
|
void __fastcall FUN_00477660(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
void *pvVar2;
|
|
|
|
void *pvVar3;
|
|
|
|
int *piVar4;
|
|
|
|
void *pvVar5;
|
|
|
|
|
|
|
|
iVar1 = *(int *)(param_1 + 0x6c);
|
|
|
|
do {
|
|
|
|
if (iVar1 == 0) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
piVar4 = *(int **)(param_1 + 100);
|
|
|
|
while (piVar4 != (int *)(*(int *)(param_1 + 0x60) + *(int *)(param_1 + 0x68) * 4)) {
|
|
|
|
if (**(int **)(param_1 + 100) != 0) {
|
|
|
|
piVar4 = *(int **)(param_1 + 100);
|
|
|
|
pvVar5 = (void *)*piVar4;
|
|
|
|
goto LAB_0047769f;
|
|
|
|
}
|
|
|
|
piVar4 = *(int **)(param_1 + 100) + 1;
|
|
|
|
*(int **)(param_1 + 100) = piVar4;
|
|
|
|
}
|
|
|
|
piVar4 = (int *)0x0;
|
|
|
|
pvVar5 = (void *)0x0;
|
|
|
|
LAB_0047769f:
|
|
|
|
pvVar3 = (void *)*piVar4;
|
|
|
|
if (pvVar3 == pvVar5) {
|
|
|
|
LAB_004776b2:
|
|
|
|
*piVar4 = *(int *)((int)pvVar3 + 4);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
do {
|
|
|
|
pvVar2 = pvVar3;
|
|
|
|
pvVar3 = *(void **)((int)pvVar2 + 4);
|
|
|
|
} while (pvVar3 != pvVar5);
|
|
|
|
if (pvVar2 == (void *)0x0) goto LAB_004776b2;
|
|
|
|
*(undefined4 *)((int)pvVar2 + 4) = *(undefined4 *)((int)pvVar3 + 4);
|
|
|
|
}
|
|
|
|
*(int *)(param_1 + 0x6c) = *(int *)(param_1 + 0x6c) + -1;
|
|
|
|
if (pvVar5 != (void *)0x0) {
|
|
|
|
*(undefined ***)((int)pvVar5 + 8) = &PTR_FUN_0079f0d8;
|
|
|
|
FUN_004772d0();
|
|
|
|
operator_delete(pvVar5);
|
|
|
|
}
|
|
|
|
iVar1 = *(int *)(param_1 + 0x6c);
|
|
|
|
} while( true );
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004776f0 at 0x004776F0 (size: 130) ---
|
|
|
|
|
|
void __fastcall FUN_004776f0(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
void *pvVar2;
|
|
|
|
void *pvVar3;
|
|
|
|
int *piVar4;
|
|
|
|
void *pvVar5;
|
|
|
|
|
|
|
|
iVar1 = *(int *)(param_1 + 0x6c);
|
|
|
|
do {
|
|
|
|
if (iVar1 == 0) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
piVar4 = *(int **)(param_1 + 100);
|
|
|
|
while (piVar4 != (int *)(*(int *)(param_1 + 0x60) + *(int *)(param_1 + 0x68) * 4)) {
|
|
|
|
if (**(int **)(param_1 + 100) != 0) {
|
|
|
|
piVar4 = *(int **)(param_1 + 100);
|
|
|
|
pvVar5 = (void *)*piVar4;
|
|
|
|
goto LAB_0047772f;
|
|
|
|
}
|
|
|
|
piVar4 = *(int **)(param_1 + 100) + 1;
|
|
|
|
*(int **)(param_1 + 100) = piVar4;
|
|
|
|
}
|
|
|
|
piVar4 = (int *)0x0;
|
|
|
|
pvVar5 = (void *)0x0;
|
|
|
|
LAB_0047772f:
|
|
|
|
pvVar3 = (void *)*piVar4;
|
|
|
|
if (pvVar3 == pvVar5) {
|
|
|
|
LAB_00477742:
|
|
|
|
*piVar4 = *(int *)((int)pvVar3 + 4);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
do {
|
|
|
|
pvVar2 = pvVar3;
|
|
|
|
pvVar3 = *(void **)((int)pvVar2 + 4);
|
|
|
|
} while (pvVar3 != pvVar5);
|
|
|
|
if (pvVar2 == (void *)0x0) goto LAB_00477742;
|
|
|
|
*(undefined4 *)((int)pvVar2 + 4) = *(undefined4 *)((int)pvVar3 + 4);
|
|
|
|
}
|
|
|
|
*(int *)(param_1 + 0x6c) = *(int *)(param_1 + 0x6c) + -1;
|
|
|
|
if (pvVar5 != (void *)0x0) {
|
|
|
|
FUN_00681f60();
|
|
|
|
operator_delete(pvVar5);
|
|
|
|
}
|
|
|
|
iVar1 = *(int *)(param_1 + 0x6c);
|
|
|
|
} while( true );
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00477780 at 0x00477780 (size: 55) ---
|
|
|
|
|
|
undefined4 FUN_00477780(undefined4 param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
void *pvVar1;
|
|
|
|
|
|
|
|
pvVar1 = (void *)FUN_004171e0(param_1);
|
|
|
|
if (pvVar1 != (void *)0x0) {
|
|
|
|
*(undefined ***)((int)pvVar1 + 8) = &PTR_FUN_0079f0d8;
|
|
|
|
FUN_004772d0();
|
|
|
|
operator_delete(pvVar1);
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004777c0 at 0x004777C0 (size: 168) ---
|
|
|
|
|
|
void FUN_004777c0(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 *puVar1;
|
|
|
|
uint *puVar2;
|
|
|
|
int iVar3;
|
|
|
|
undefined4 *puVar4;
|
|
|
|
void *pvVar5;
|
|
|
|
|
|
|
|
iVar3 = param_1;
|
|
|
|
puVar1 = (undefined4 *)(param_1 + 0x80);
|
|
|
|
puVar2 = *(uint **)(DAT_00819f04 + (*(uint *)(param_1 + 0x80) % DAT_00819f0c) * 4);
|
|
|
|
do {
|
|
|
|
if (puVar2 == (uint *)0x0) {
|
|
|
|
LAB_0047782b:
|
|
|
|
FUN_00693450(*puVar1,*(int *)(iVar3 + 0x78) + 0x5fc);
|
|
|
|
param_1 = *(int *)(iVar3 + 0x78);
|
|
|
|
if (param_1 != 0) {
|
|
|
|
(**(code **)(**(int **)(iVar3 + 0x7c) + 0x20))(¶m_1);
|
|
|
|
(**(code **)(**(int **)(iVar3 + 0x78) + 0x138))(0);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
if (*puVar2 == *(uint *)(param_1 + 0x80)) {
|
|
|
|
if (puVar2 != (uint *)0x0) {
|
|
|
|
puVar4 = (undefined4 *)FUN_00477380(puVar1);
|
|
|
|
(*(code *)*puVar4)(*(int *)(iVar3 + 0x78) + 0x5fc);
|
|
|
|
pvVar5 = (void *)FUN_004171e0(puVar1);
|
|
|
|
if (pvVar5 != (void *)0x0) {
|
|
|
|
operator_delete(pvVar5);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
goto LAB_0047782b;
|
|
|
|
}
|
|
|
|
puVar2 = (uint *)puVar2[1];
|
|
|
|
} while( true );
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00477870 at 0x00477870 (size: 82) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_00477870(undefined4 *param_1,byte param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
*param_1 = &PTR_FUN_0079f0e8;
|
|
|
|
FUN_00477660();
|
|
|
|
param_1[1] = &PTR_FUN_0079f0dc;
|
|
|
|
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_004778d0 at 0x004778D0 (size: 82) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_004778d0(undefined4 *param_1,byte param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
*param_1 = &PTR_FUN_0079f0ec;
|
|
|
|
FUN_004776f0();
|
|
|
|
param_1[1] = &PTR_FUN_0079f0e0;
|
|
|
|
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_00477930 at 0x00477930 (size: 82) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_00477930(undefined4 *param_1,byte param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
*param_1 = &PTR_FUN_0079f0f0;
|
|
|
|
FUN_005870f0();
|
|
|
|
param_1[1] = &PTR_FUN_0079f0e4;
|
|
|
|
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_00477990 at 0x00477990 (size: 259) ---
|
|
|
|
|
|
void FUN_00477990(void)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
uint *puVar2;
|
|
|
|
int *piVar3;
|
|
|
|
undefined4 *puVar4;
|
|
|
|
uint *puVar5;
|
|
|
|
undefined1 local_90 [12];
|
|
|
|
undefined **local_84;
|
|
|
|
undefined **local_80;
|
|
|
|
uint local_c;
|
|
|
|
uint local_8;
|
|
|
|
uint local_4;
|
|
|
|
|
|
|
|
piVar3 = (int *)FUN_0052dcf0(local_90);
|
|
|
|
puVar5 = (uint *)piVar3[2];
|
|
|
|
iVar1 = *piVar3;
|
|
|
|
puVar4 = (undefined4 *)piVar3[1];
|
|
|
|
do {
|
|
|
|
if (puVar5 == (uint *)0x0) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
do {
|
|
|
|
local_84 = &PTR_FUN_0079d098;
|
|
|
|
local_80 = &PTR_FUN_00798700;
|
|
|
|
FUN_00428580(0);
|
|
|
|
local_80 = &PTR_FUN_00798700;
|
|
|
|
FUN_00682400(puVar5 + 2);
|
|
|
|
local_c = puVar5[0x20];
|
|
|
|
local_8 = puVar5[0x21];
|
|
|
|
local_4 = puVar5[0x22];
|
|
|
|
if (local_c != 0) {
|
|
|
|
for (puVar2 = *(uint **)(DAT_00819e14 + (*puVar5 % DAT_00819e1c) * 4); puVar2 != (uint *)0x0
|
|
|
|
; puVar2 = (uint *)puVar2[1]) {
|
|
|
|
if (*puVar2 == *puVar5) {
|
|
|
|
if ((puVar2 != (uint *)0x0) && (puVar2 != (uint *)0xfffffff8)) {
|
|
|
|
FUN_00476cf0(puVar2[5]);
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
FUN_00681f60();
|
|
|
|
puVar5 = (uint *)puVar5[1];
|
|
|
|
} while (puVar5 != (uint *)0x0);
|
|
|
|
do {
|
|
|
|
puVar4 = puVar4 + 1;
|
|
|
|
if (puVar4 == (undefined4 *)(*(int *)(iVar1 + 0x60) + *(int *)(iVar1 + 0x68) * 4)) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
puVar5 = (uint *)*puVar4;
|
|
|
|
} while (puVar5 == (uint *)0x0);
|
|
|
|
} while( true );
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00477aa0 at 0x00477AA0 (size: 97) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_00477aa0(undefined4 *param_1,undefined4 *param_2,int param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
*param_1 = *param_2;
|
|
|
|
param_1[1] = 0;
|
|
|
|
param_1[2] = &PTR_FUN_0079d098;
|
|
|
|
param_1[3] = &PTR_FUN_00798700;
|
|
|
|
FUN_00428580(0);
|
|
|
|
param_1[3] = &PTR_FUN_00798700;
|
|
|
|
FUN_00682400(param_3);
|
|
|
|
param_1[0x20] = *(undefined4 *)(param_3 + 0x78);
|
|
|
|
param_1[0x21] = *(undefined4 *)(param_3 + 0x7c);
|
|
|
|
param_1[0x22] = *(undefined4 *)(param_3 + 0x80);
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00477b10 at 0x00477B10 (size: 97) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_00477b10(undefined4 *param_1,int param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
*param_1 = &PTR_FUN_0079d098;
|
|
|
|
param_1[1] = &PTR_FUN_00798700;
|
|
|
|
FUN_00428580(0);
|
|
|
|
param_1[1] = &PTR_FUN_00798700;
|
|
|
|
FUN_00682400(param_2);
|
|
|
|
param_1[0x1e] = *(undefined4 *)(param_2 + 0x78);
|
|
|
|
param_1[0x1f] = *(undefined4 *)(param_2 + 0x7c);
|
|
|
|
param_1[0x20] = *(undefined4 *)(param_2 + 0x80);
|
|
|
|
param_1[0x21] = 0;
|
|
|
|
param_1[0x22] = 0;
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00477b80 at 0x00477B80 (size: 135) ---
|
|
|
|
|
|
undefined4 __thiscall FUN_00477b80(int param_1,int param_2,undefined4 param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
|
|
|
|
iVar1 = FUN_005df0f5(0x8c);
|
|
|
|
if (iVar1 != 0) {
|
|
|
|
iVar1 = FUN_00477b10(param_3);
|
|
|
|
if (iVar1 != 0) {
|
|
|
|
if (*(int *)(param_1 + 4) == 0) {
|
|
|
|
*(int *)(param_1 + 4) = iVar1;
|
|
|
|
*(int *)(param_1 + 8) = iVar1;
|
|
|
|
*(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + 1;
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
*(int *)(iVar1 + 0x84) = param_2;
|
|
|
|
*(undefined4 *)(iVar1 + 0x88) = *(undefined4 *)(param_2 + 0x88);
|
|
|
|
if (*(int *)(param_2 + 0x88) != 0) {
|
|
|
|
*(int *)(*(int *)(param_2 + 0x88) + 0x84) = iVar1;
|
|
|
|
*(int *)(param_2 + 0x88) = iVar1;
|
|
|
|
*(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + 1;
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
*(int *)(param_1 + 4) = iVar1;
|
|
|
|
*(int *)(param_2 + 0x88) = iVar1;
|
|
|
|
*(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + 1;
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00477c10 at 0x00477C10 (size: 92) ---
|
|
|
|
|
|
undefined4 FUN_00477c10(undefined4 param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
char cVar1;
|
|
|
|
int iVar2;
|
|
|
|
void *pvVar3;
|
|
|
|
|
|
|
|
iVar2 = FUN_005df0f5(0x8c);
|
|
|
|
if (iVar2 == 0) {
|
|
|
|
pvVar3 = (void *)0x0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
pvVar3 = (void *)FUN_00477aa0(param_1,param_2);
|
|
|
|
}
|
|
|
|
cVar1 = FUN_0042bd40(pvVar3);
|
|
|
|
if (cVar1 == '\0') {
|
|
|
|
if (pvVar3 != (void *)0x0) {
|
|
|
|
FUN_00681f60();
|
|
|
|
operator_delete(pvVar3);
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00477c70 at 0x00477C70 (size: 91) ---
|
|
|
|
|
|
undefined4 __thiscall FUN_00477c70(int param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
int iVar2;
|
|
|
|
|
|
|
|
iVar2 = FUN_005df0f5(0x8c);
|
|
|
|
if (iVar2 != 0) {
|
|
|
|
iVar2 = FUN_00477b10(param_2);
|
|
|
|
if (iVar2 != 0) {
|
|
|
|
if (*(int *)(param_1 + 4) == 0) {
|
|
|
|
*(int *)(param_1 + 4) = iVar2;
|
|
|
|
*(int *)(param_1 + 8) = iVar2;
|
|
|
|
*(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + 1;
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
iVar1 = *(int *)(param_1 + 8);
|
|
|
|
*(int *)(iVar1 + 0x84) = iVar2;
|
|
|
|
*(int *)(iVar2 + 0x88) = iVar1;
|
|
|
|
*(int *)(param_1 + 8) = iVar2;
|
|
|
|
*(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + 1;
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00477cd0 at 0x00477CD0 (size: 109) ---
|
|
|
|
|
|
int __thiscall FUN_00477cd0(int param_1,int param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
int iVar2;
|
|
|
|
int iVar3;
|
|
|
|
|
|
|
|
if (param_1 != param_2) {
|
|
|
|
FUN_004772d0();
|
|
|
|
for (iVar1 = *(int *)(param_2 + 4); iVar1 != 0; iVar1 = *(int *)(iVar1 + 0x84)) {
|
|
|
|
iVar3 = FUN_005df0f5(0x8c);
|
|
|
|
if ((iVar3 != 0) && (iVar3 = FUN_00477b10(iVar1), iVar3 != 0)) {
|
|
|
|
if (*(int *)(param_1 + 4) == 0) {
|
|
|
|
*(int *)(param_1 + 4) = iVar3;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar2 = *(int *)(param_1 + 8);
|
|
|
|
*(int *)(iVar2 + 0x84) = iVar3;
|
|
|
|
*(int *)(iVar3 + 0x88) = iVar2;
|
|
|
|
}
|
|
|
|
*(int *)(param_1 + 8) = iVar3;
|
|
|
|
*(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + 1;
|
|
|
|
}
|
|
|
|
if (iVar1 == 0) {
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00477d50 at 0x00477D50 (size: 383) ---
|
|
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x00477e67) */
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x00477e74) */
|
|
|
|
|
|
|
|
void FUN_00477d50(void)
|
|
|
|
|
|
|
|
{
|
|
|
|
int *piVar1;
|
|
|
|
int iVar2;
|
|
|
|
|
|
|
|
for (iVar2 = DAT_00819f18; (iVar2 != 0 && (FUN_004777c0(iVar2), iVar2 != 0));
|
|
|
|
iVar2 = *(int *)(iVar2 + 0x84)) {
|
|
|
|
}
|
|
|
|
FUN_004772d0();
|
|
|
|
for (; DAT_00819e90 != (int *)(DAT_00819e8c + DAT_00819e94 * 4); DAT_00819e90 = DAT_00819e90 + 1)
|
|
|
|
{
|
|
|
|
if (*DAT_00819e90 != 0) {
|
|
|
|
iVar2 = *DAT_00819e90;
|
|
|
|
piVar1 = DAT_00819e90;
|
|
|
|
goto joined_r0x00477db5;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
iVar2 = 0;
|
|
|
|
piVar1 = (int *)0x0;
|
|
|
|
joined_r0x00477db5:
|
|
|
|
while (iVar2 != 0) {
|
|
|
|
do {
|
|
|
|
FUN_004777c0(iVar2 + 8);
|
|
|
|
iVar2 = *(int *)(iVar2 + 4);
|
|
|
|
} while (iVar2 != 0);
|
|
|
|
do {
|
|
|
|
piVar1 = piVar1 + 1;
|
|
|
|
if (piVar1 == (int *)(DAT_00819e8c + DAT_00819e94 * 4)) goto LAB_00477deb;
|
|
|
|
iVar2 = *piVar1;
|
|
|
|
} while (iVar2 == 0);
|
|
|
|
}
|
|
|
|
LAB_00477deb:
|
|
|
|
FUN_004776f0();
|
|
|
|
do {
|
|
|
|
if (DAT_00819e18 == (int *)(DAT_00819e14 + DAT_00819e1c * 4)) {
|
|
|
|
iVar2 = 0;
|
|
|
|
piVar1 = (int *)0x0;
|
|
|
|
joined_r0x00477e2d:
|
|
|
|
while (iVar2 != 0) {
|
|
|
|
do {
|
|
|
|
FUN_00477cd0(iVar2 + 8);
|
|
|
|
FUN_004772d0();
|
|
|
|
iVar2 = *(int *)(iVar2 + 4);
|
|
|
|
} while (iVar2 != 0);
|
|
|
|
do {
|
|
|
|
piVar1 = piVar1 + 1;
|
|
|
|
if (piVar1 == (int *)(DAT_00819e14 + DAT_00819e1c * 4)) goto LAB_00477eb4;
|
|
|
|
iVar2 = *piVar1;
|
|
|
|
} while (iVar2 == 0);
|
|
|
|
}
|
|
|
|
LAB_00477eb4:
|
|
|
|
FUN_00477660();
|
|
|
|
FUN_005870f0();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
if (*DAT_00819e18 != 0) {
|
|
|
|
iVar2 = *DAT_00819e18;
|
|
|
|
piVar1 = DAT_00819e18;
|
|
|
|
goto joined_r0x00477e2d;
|
|
|
|
}
|
|
|
|
DAT_00819e18 = DAT_00819e18 + 1;
|
|
|
|
} while( true );
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00477ed0 at 0x00477ED0 (size: 564) ---
|
|
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x0047801a) */
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x00478035) */
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x0047807c) */
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x0047806c) */
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x0047809c) */
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x0047808c) */
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x0047805c) */
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x0047804c) */
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x0047803c) */
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x004780aa) */
|
|
|
|
/* WARNING: Recovered jumptable eliminated as dead code */
|
|
|
|
|
|
|
|
void FUN_00477ed0(int param_1,int param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
int *piVar1;
|
|
|
|
int iVar2;
|
|
|
|
undefined1 local_108 [120];
|
|
|
|
undefined4 local_90;
|
|
|
|
undefined4 local_8c;
|
|
|
|
undefined4 local_88;
|
|
|
|
undefined1 local_84 [120];
|
|
|
|
undefined4 local_c;
|
|
|
|
undefined4 local_8;
|
|
|
|
undefined4 local_4;
|
|
|
|
|
|
|
|
if (param_2 == 0) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
if (param_2 == 1) {
|
|
|
|
FUN_006823d0();
|
|
|
|
local_90 = 0;
|
|
|
|
local_8c = 0;
|
|
|
|
local_88 = 0;
|
|
|
|
FUN_00477c70(local_108);
|
|
|
|
iVar2 = DAT_00819f1c;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar2 = FUN_00477380(¶m_2);
|
|
|
|
if (iVar2 != 0) goto LAB_00477f97;
|
|
|
|
FUN_006823d0();
|
|
|
|
local_c = 0;
|
|
|
|
local_8 = 0;
|
|
|
|
local_4 = 0;
|
|
|
|
FUN_00477c10(¶m_2,local_84);
|
|
|
|
iVar2 = FUN_00477380(¶m_2);
|
|
|
|
}
|
|
|
|
FUN_00681f60();
|
|
|
|
LAB_00477f97:
|
|
|
|
if (*(int *)(iVar2 + 0x78) == 0) {
|
|
|
|
FUN_00682400(param_1);
|
|
|
|
*(undefined4 *)(iVar2 + 0x78) = *(undefined4 *)(param_1 + 0x78);
|
|
|
|
*(undefined4 *)(iVar2 + 0x7c) = *(undefined4 *)(param_1 + 0x7c);
|
|
|
|
*(undefined4 *)(iVar2 + 0x80) = *(undefined4 *)(param_1 + 0x80);
|
|
|
|
for (piVar1 = *(int **)(*(int *)(iVar2 + 0x68) +
|
|
|
|
(int)(0x8e % (ulonglong)*(uint *)(iVar2 + 0x70)) * 4);
|
|
|
|
piVar1 != (int *)0x0; piVar1 = (int *)piVar1[1]) {
|
|
|
|
if (*piVar1 == 0x8e) {
|
|
|
|
if (piVar1 != (int *)0x0) {
|
|
|
|
FUN_00429ab0(piVar1 + 2);
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (*(int **)(iVar2 + 0x78) != (int *)0x0) {
|
|
|
|
(**(code **)(**(int **)(iVar2 + 0x78) + 0x138))(*(undefined4 *)(iVar2 + 0x80));
|
|
|
|
(**(code **)(**(int **)(iVar2 + 0x78) + 0x13c))(iVar2);
|
|
|
|
FUN_0069fca0();
|
|
|
|
FUN_00477990();
|
|
|
|
FUN_006935a0(*(undefined4 *)(iVar2 + 0x80));
|
|
|
|
}
|
|
|
|
FUN_004234d0();
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00478130 at 0x00478130 (size: 212) ---
|
|
|
|
|
|
void FUN_00478130(uint param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
uint uVar1;
|
|
|
|
char cVar2;
|
|
|
|
uint *puVar3;
|
|
|
|
undefined1 local_84 [120];
|
|
|
|
int local_c;
|
|
|
|
undefined4 local_8;
|
|
|
|
undefined4 local_4;
|
|
|
|
|
|
|
|
uVar1 = param_1;
|
|
|
|
if ((param_1 != 1) &&
|
|
|
|
(puVar3 = *(uint **)(DAT_00819e14 + (param_1 % DAT_00819e1c) * 4), puVar3 != (uint *)0x0)) {
|
|
|
|
while (*puVar3 != param_1) {
|
|
|
|
puVar3 = (uint *)puVar3[1];
|
|
|
|
if (puVar3 == (uint *)0x0) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if ((puVar3 != (uint *)0x0) && (puVar3 != (uint *)0xfffffff8)) {
|
|
|
|
FUN_006823d0();
|
|
|
|
local_c = 0;
|
|
|
|
local_8 = 0;
|
|
|
|
local_4 = 0;
|
|
|
|
cVar2 = FUN_004771d0(local_84);
|
|
|
|
if ((cVar2 != '\0') && ((local_c == 0 && (FUN_00477ed0(local_84,uVar1), puVar3[3] == 0)))) {
|
|
|
|
FUN_00477780(¶m_1);
|
|
|
|
}
|
|
|
|
FUN_00681f60();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00478210 at 0x00478210 (size: 122) ---
|
|
|
|
|
|
undefined4 FUN_00478210(undefined4 *param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
char cVar1;
|
|
|
|
undefined4 *puVar2;
|
|
|
|
|
|
|
|
puVar2 = (undefined4 *)FUN_005df0f5(0x18);
|
|
|
|
if (puVar2 == (undefined4 *)0x0) {
|
|
|
|
puVar2 = (undefined4 *)0x0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*puVar2 = *param_1;
|
|
|
|
puVar2[1] = 0;
|
|
|
|
puVar2[2] = &PTR_FUN_0079f0d8;
|
|
|
|
puVar2[3] = 0;
|
|
|
|
puVar2[4] = 0;
|
|
|
|
puVar2[5] = 0;
|
|
|
|
FUN_00477cd0(param_2);
|
|
|
|
}
|
|
|
|
cVar1 = FUN_0042bd40(puVar2);
|
|
|
|
if (cVar1 == '\0') {
|
|
|
|
if (puVar2 != (undefined4 *)0x0) {
|
|
|
|
puVar2[2] = &PTR_FUN_0079f0d8;
|
|
|
|
FUN_004772d0();
|
|
|
|
operator_delete(puVar2);
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00478290 at 0x00478290 (size: 707) ---
|
|
|
|
|
|
int FUN_00478290(undefined4 param_1,int param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
int *piVar1;
|
|
|
|
int iVar2;
|
|
|
|
int iVar3;
|
|
|
|
uint *puVar4;
|
|
|
|
char local_129;
|
|
|
|
uint local_128;
|
|
|
|
undefined4 *local_124;
|
|
|
|
int *local_120;
|
|
|
|
int local_11c;
|
|
|
|
undefined **local_118;
|
|
|
|
undefined4 local_114;
|
|
|
|
undefined4 local_110;
|
|
|
|
undefined4 local_10c;
|
|
|
|
undefined1 local_108 [120];
|
|
|
|
undefined4 local_90;
|
|
|
|
undefined4 local_8c;
|
|
|
|
int local_88;
|
|
|
|
undefined1 local_84 [120];
|
|
|
|
int local_c;
|
|
|
|
int *local_8;
|
|
|
|
undefined4 local_4;
|
|
|
|
|
|
|
|
DAT_0083e718 = DAT_0083e718 + 1;
|
|
|
|
FUN_006823d0();
|
|
|
|
local_90 = 0;
|
|
|
|
local_8c = 0;
|
|
|
|
local_88 = 0;
|
|
|
|
FUN_00682400(param_2);
|
|
|
|
local_8c = param_1;
|
|
|
|
local_90 = 0;
|
|
|
|
local_88 = DAT_0083e718;
|
|
|
|
local_129 = '\0';
|
|
|
|
local_124 = (undefined4 *)0x0;
|
|
|
|
local_120 = (int *)0x0;
|
|
|
|
for (piVar1 = *(int **)(*(int *)(param_2 + 0x68) +
|
|
|
|
(int)(0x8d % (ulonglong)*(uint *)(param_2 + 0x70)) * 4);
|
|
|
|
piVar1 != (int *)0x0; piVar1 = (int *)piVar1[1]) {
|
|
|
|
if (*piVar1 == 0x8d) {
|
|
|
|
if ((piVar1 != (int *)0x0) && (FUN_00429ab0(piVar1 + 2), local_120 != (int *)0x0)) {
|
|
|
|
(**(code **)(*local_120 + 0x70))(&local_129);
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
local_128 = 2;
|
|
|
|
for (piVar1 = *(int **)(*(int *)(param_2 + 0x68) +
|
|
|
|
(int)(0xc3 % (ulonglong)*(uint *)(param_2 + 0x70)) * 4);
|
|
|
|
piVar1 != (int *)0x0; piVar1 = (int *)piVar1[1]) {
|
|
|
|
if (*piVar1 == 0xc3) {
|
|
|
|
if (piVar1 != (int *)0x0) {
|
|
|
|
FUN_00429ab0(piVar1 + 2);
|
|
|
|
if (local_120 != (int *)0x0) {
|
|
|
|
(**(code **)(*local_120 + 0xa8))(&local_128);
|
|
|
|
}
|
|
|
|
if (local_128 == 1) {
|
|
|
|
FUN_00477ed0(local_108,1);
|
|
|
|
goto LAB_004784f7;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
FUN_006823d0();
|
|
|
|
local_c = 0;
|
|
|
|
local_8 = (int *)0x0;
|
|
|
|
local_4 = 0;
|
|
|
|
FUN_004773c0(&local_128,local_84);
|
|
|
|
puVar4 = *(uint **)(DAT_00819e14 + (local_128 % DAT_00819e1c) * 4);
|
|
|
|
do {
|
|
|
|
if (puVar4 == (uint *)0x0) {
|
|
|
|
LAB_00478432:
|
|
|
|
local_118 = &PTR_FUN_0079f0d8;
|
|
|
|
local_114 = 0;
|
|
|
|
local_110 = 0;
|
|
|
|
local_10c = 0;
|
|
|
|
FUN_00478210(&local_128,&local_118);
|
|
|
|
local_118 = &PTR_FUN_0079f0d8;
|
|
|
|
FUN_004772d0();
|
|
|
|
puVar4 = (uint *)FUN_00477380(&local_128);
|
|
|
|
LAB_0047847d:
|
|
|
|
if (local_c == 0) {
|
|
|
|
FUN_00477ed0(local_108,local_128);
|
|
|
|
}
|
|
|
|
else if (local_129 == '\0') {
|
|
|
|
FUN_00477c70(local_108);
|
|
|
|
FUN_00477990();
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
local_11c = local_c;
|
|
|
|
(**(code **)(*local_8 + 0x20))(&local_11c);
|
|
|
|
FUN_00477b80(puVar4[1],local_84);
|
|
|
|
FUN_00477ed0(local_108,local_128);
|
|
|
|
}
|
|
|
|
FUN_00681f60();
|
|
|
|
LAB_004784f7:
|
|
|
|
iVar3 = DAT_0083e718;
|
|
|
|
if (local_124 != (undefined4 *)0x0) {
|
|
|
|
iVar2 = local_124[1];
|
|
|
|
local_124[1] = iVar2 + -1;
|
|
|
|
if (iVar2 + -1 == 0) {
|
|
|
|
(**(code **)*local_124)(1);
|
|
|
|
}
|
|
|
|
local_124 = (undefined4 *)0x0;
|
|
|
|
}
|
|
|
|
if (local_120 != (int *)0x0) {
|
|
|
|
iVar2 = local_120[1];
|
|
|
|
local_120[1] = iVar2 + -1;
|
|
|
|
if (iVar2 + -1 == 0) {
|
|
|
|
(**(code **)*local_120)(1);
|
|
|
|
}
|
|
|
|
local_120 = (int *)0x0;
|
|
|
|
}
|
|
|
|
FUN_00681f60();
|
|
|
|
return iVar3;
|
|
|
|
}
|
|
|
|
if (*puVar4 == local_128) {
|
|
|
|
if ((puVar4 != (uint *)0x0) && (puVar4 = puVar4 + 2, puVar4 != (uint *)0x0))
|
|
|
|
goto LAB_0047847d;
|
|
|
|
goto LAB_00478432;
|
|
|
|
}
|
|
|
|
puVar4 = (uint *)puVar4[1];
|
|
|
|
} while( true );
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00478560 at 0x00478560 (size: 665) ---
|
|
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x00478765) */
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x00478770) */
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x004787d2) */
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x0047877f) */
|
|
|
|
|
|
|
|
void FUN_00478560(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 uVar1;
|
|
|
|
int *piVar2;
|
|
|
|
undefined4 *puVar3;
|
|
|
|
undefined4 *puVar4;
|
|
|
|
undefined4 *puVar5;
|
|
|
|
int *piVar6;
|
|
|
|
int iVar7;
|
|
|
|
undefined **local_84;
|
|
|
|
undefined **local_80;
|
|
|
|
undefined4 local_c;
|
|
|
|
undefined4 local_8;
|
|
|
|
undefined4 local_4;
|
|
|
|
|
|
|
|
iVar7 = DAT_00819f18;
|
|
|
|
if (param_1 != 0) {
|
|
|
|
for (; iVar7 != 0; iVar7 = *(int *)(iVar7 + 0x84)) {
|
|
|
|
if (param_1 == *(int *)(iVar7 + 0x80)) {
|
|
|
|
FUN_004777c0(iVar7);
|
|
|
|
FUN_00477240(iVar7);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
piVar2 = (int *)(DAT_00819e8c + DAT_00819e94 * 4);
|
|
|
|
for (; DAT_00819e90 != piVar2; DAT_00819e90 = DAT_00819e90 + 1) {
|
|
|
|
if (*DAT_00819e90 != 0) {
|
|
|
|
puVar5 = (undefined4 *)*DAT_00819e90;
|
|
|
|
piVar6 = DAT_00819e90;
|
|
|
|
goto joined_r0x004785eb;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
puVar5 = (undefined4 *)0x0;
|
|
|
|
piVar6 = (int *)0x0;
|
|
|
|
joined_r0x004785eb:
|
|
|
|
while (puVar5 != (undefined4 *)0x0) {
|
|
|
|
do {
|
|
|
|
if (param_1 == puVar5[0x22]) {
|
|
|
|
local_84 = &PTR_FUN_0079d098;
|
|
|
|
local_80 = &PTR_FUN_00798700;
|
|
|
|
FUN_00428580(0);
|
|
|
|
local_80 = &PTR_FUN_00798700;
|
|
|
|
FUN_00682400(puVar5 + 2);
|
|
|
|
local_c = puVar5[0x20];
|
|
|
|
local_8 = puVar5[0x21];
|
|
|
|
local_4 = puVar5[0x22];
|
|
|
|
uVar1 = *puVar5;
|
|
|
|
if (puVar5[1] != 0) goto LAB_004786c3;
|
|
|
|
piVar2 = piVar6;
|
|
|
|
goto LAB_004786b7;
|
|
|
|
}
|
|
|
|
puVar5 = (undefined4 *)puVar5[1];
|
|
|
|
} while (puVar5 != (undefined4 *)0x0);
|
|
|
|
do {
|
|
|
|
piVar6 = piVar6 + 1;
|
|
|
|
if (piVar6 == piVar2) goto LAB_00478613;
|
|
|
|
puVar5 = (undefined4 *)*piVar6;
|
|
|
|
} while (puVar5 == (undefined4 *)0x0);
|
|
|
|
}
|
|
|
|
LAB_00478613:
|
|
|
|
for (; DAT_00819e18 != (int *)(DAT_00819e14 + DAT_00819e1c * 4); DAT_00819e18 = DAT_00819e18 + 1
|
|
|
|
) {
|
|
|
|
if (*DAT_00819e18 != 0) {
|
|
|
|
iVar7 = *DAT_00819e18;
|
|
|
|
piVar2 = DAT_00819e18;
|
|
|
|
goto LAB_0047872b;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
iVar7 = 0;
|
|
|
|
piVar2 = (int *)0x0;
|
|
|
|
LAB_0047872b:
|
|
|
|
if (iVar7 != 0) {
|
|
|
|
do {
|
|
|
|
do {
|
|
|
|
FUN_00477cd0(iVar7 + 8);
|
|
|
|
FUN_004772d0();
|
|
|
|
iVar7 = *(int *)(iVar7 + 4);
|
|
|
|
} while (iVar7 != 0);
|
|
|
|
do {
|
|
|
|
piVar2 = piVar2 + 1;
|
|
|
|
if (piVar2 == (int *)(DAT_00819e14 + DAT_00819e1c * 4)) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
iVar7 = *piVar2;
|
|
|
|
} while (iVar7 == 0);
|
|
|
|
} while (iVar7 != 0);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
while (*piVar2 == 0) {
|
|
|
|
LAB_004786b7:
|
|
|
|
piVar2 = piVar2 + 1;
|
|
|
|
if (piVar2 == (int *)(DAT_00819e8c + DAT_00819e94 * 4)) break;
|
|
|
|
}
|
|
|
|
LAB_004786c3:
|
|
|
|
puVar4 = (undefined4 *)*piVar6;
|
|
|
|
if (puVar4 != puVar5) {
|
|
|
|
do {
|
|
|
|
puVar3 = puVar4;
|
|
|
|
puVar4 = (undefined4 *)puVar3[1];
|
|
|
|
} while (puVar4 != puVar5);
|
|
|
|
if (puVar3 != (undefined4 *)0x0) {
|
|
|
|
puVar3[1] = puVar4[1];
|
|
|
|
goto LAB_004786ea;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
*piVar6 = puVar4[1];
|
|
|
|
LAB_004786ea:
|
|
|
|
DAT_00819e98 = DAT_00819e98 + -1;
|
|
|
|
FUN_00681f60();
|
|
|
|
operator_delete(puVar5);
|
|
|
|
FUN_004777c0(&local_84);
|
|
|
|
FUN_00478130(uVar1);
|
|
|
|
FUN_00681f60();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00478810 at 0x00478810 (size: 26) ---
|
|
|
|
|
|
void FUN_00478810(undefined4 param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_00478290(*(undefined4 *)(DAT_0083e72c + 0x94),param_1);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00478830 at 0x00478830 (size: 65) ---
|
|
|
|
|
|
int FUN_00478830(undefined4 param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
int local_4;
|
|
|
|
|
|
|
|
iVar1 = FUN_00478290(*(undefined4 *)(DAT_0083e72c + 0x94),param_1);
|
|
|
|
if (iVar1 == 0) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
local_4 = iVar1;
|
|
|
|
FUN_006891f0(&local_4,&stack0x00000008);
|
|
|
|
return iVar1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00478880 at 0x00478880 (size: 677) ---
|
|
|
|
|
|
int * FUN_00478880(undefined4 *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
short *psVar1;
|
|
|
|
char cVar2;
|
|
|
|
uint uVar3;
|
|
|
|
int iVar4;
|
|
|
|
int *piVar5;
|
|
|
|
undefined4 extraout_ECX;
|
|
|
|
undefined4 extraout_ECX_00;
|
|
|
|
short *psVar6;
|
|
|
|
uint uVar7;
|
|
|
|
undefined4 uVar8;
|
|
|
|
int local_20;
|
|
|
|
int local_1c;
|
|
|
|
int local_18;
|
|
|
|
int local_14;
|
|
|
|
undefined **local_10;
|
|
|
|
uint local_c;
|
|
|
|
uint local_8;
|
|
|
|
undefined4 *local_4;
|
|
|
|
|
|
|
|
psVar1 = (short *)*param_1;
|
|
|
|
uVar3 = *(uint *)(psVar1 + -2);
|
|
|
|
if (uVar3 - 1 < 2) {
|
|
|
|
return (int *)0x0;
|
|
|
|
}
|
|
|
|
psVar6 = psVar1 + (uVar3 - 1);
|
|
|
|
if (uVar3 != 0) {
|
|
|
|
psVar6 = psVar1;
|
|
|
|
}
|
|
|
|
uVar7 = uVar3 - 1;
|
|
|
|
if (uVar3 - 2 < uVar3) {
|
|
|
|
uVar7 = uVar3 - 2;
|
|
|
|
}
|
|
|
|
if (*psVar6 != 0x3c) {
|
|
|
|
return (int *)0x0;
|
|
|
|
}
|
|
|
|
if (psVar1[uVar7] != 0x3e) {
|
|
|
|
return (int *)0x0;
|
|
|
|
}
|
|
|
|
local_10 = &PTR_FUN_0079549c;
|
|
|
|
local_4 = param_1;
|
|
|
|
local_8 = 0;
|
|
|
|
local_c = 0;
|
|
|
|
FUN_0040b150(1);
|
|
|
|
local_8 = local_c;
|
|
|
|
cVar2 = FUN_0040b620(0x3a,0);
|
|
|
|
if (cVar2 == '\0') {
|
|
|
|
return (int *)0x0;
|
|
|
|
}
|
|
|
|
FUN_0040b9a0(¶m_1);
|
|
|
|
if (param_1[-1] == 1) goto LAB_00478aef;
|
|
|
|
piVar5 = &local_14;
|
|
|
|
local_14 = 0;
|
|
|
|
uVar8 = extraout_ECX;
|
|
|
|
FUN_0041ab80(¶m_1);
|
|
|
|
cVar2 = FUN_0041ba30(0x18,uVar8,piVar5);
|
|
|
|
if (cVar2 == '\0') goto LAB_00478aef;
|
|
|
|
uVar7 = local_c + 1;
|
|
|
|
uVar3 = (*(code *)*local_10)();
|
|
|
|
if (uVar3 < uVar7) {
|
|
|
|
uVar7 = (*(code *)*local_10)();
|
|
|
|
}
|
|
|
|
local_c = uVar7;
|
|
|
|
local_8 = uVar7;
|
|
|
|
cVar2 = FUN_0040b620(0x3a,0);
|
|
|
|
if (cVar2 == '\0') goto LAB_00478aef;
|
|
|
|
FUN_0040b9a0(&local_20);
|
|
|
|
if (*(int *)(local_20 + -4) != 1) {
|
|
|
|
piVar5 = &local_18;
|
|
|
|
local_18 = 0;
|
|
|
|
FUN_0041ab80(&local_20);
|
|
|
|
cVar2 = FUN_0041ba30(0x18,local_20,piVar5);
|
|
|
|
if (cVar2 != '\0') {
|
|
|
|
switch(local_18) {
|
|
|
|
case 1:
|
|
|
|
iVar4 = FUN_005df0f5(0x14);
|
|
|
|
if (iVar4 != 0) {
|
|
|
|
piVar5 = (int *)FUN_00478b60();
|
|
|
|
LAB_00478a4b:
|
|
|
|
if (piVar5 != (int *)0x0) {
|
|
|
|
piVar5[2] = local_14;
|
|
|
|
piVar5[3] = local_18;
|
|
|
|
uVar7 = local_c + 1;
|
|
|
|
uVar3 = (*(code *)*local_10)();
|
|
|
|
if (uVar3 < uVar7) {
|
|
|
|
uVar7 = (*(code *)*local_10)();
|
|
|
|
}
|
|
|
|
local_c = uVar7;
|
|
|
|
local_8 = uVar7;
|
|
|
|
iVar4 = (*(code *)*local_10)();
|
|
|
|
if (iVar4 == 0) {
|
|
|
|
local_c = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
local_c = iVar4 - 1;
|
|
|
|
FUN_0040b9a0(&local_1c);
|
|
|
|
if (*(int *)(local_1c + -4) != 1) {
|
|
|
|
iVar4 = *piVar5;
|
|
|
|
uVar8 = extraout_ECX_00;
|
|
|
|
FUN_0041ab80(&local_1c);
|
|
|
|
cVar2 = (**(code **)(iVar4 + 8))(uVar8);
|
|
|
|
if (cVar2 != '\0') {
|
|
|
|
FUN_004011b0();
|
|
|
|
FUN_004011b0();
|
|
|
|
FUN_004011b0();
|
|
|
|
return piVar5;
|
|
|
|
}
|
|
|
|
FUN_00405f70();
|
|
|
|
}
|
|
|
|
FUN_004011b0();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
case 2:
|
|
|
|
iVar4 = FUN_005df0f5(0x14);
|
|
|
|
if (iVar4 != 0) {
|
|
|
|
piVar5 = (int *)FUN_00479260();
|
|
|
|
goto LAB_00478a4b;
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
case 3:
|
|
|
|
iVar4 = FUN_005df0f5(0x18);
|
|
|
|
if (iVar4 != 0) {
|
|
|
|
piVar5 = (int *)FUN_00478f20();
|
|
|
|
goto LAB_00478a4b;
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
case 4:
|
|
|
|
iVar4 = FUN_005df0f5(0x18);
|
|
|
|
if (iVar4 != 0) {
|
|
|
|
piVar5 = (int *)FUN_00478c60();
|
|
|
|
goto LAB_00478a4b;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
FUN_004011b0();
|
|
|
|
LAB_00478aef:
|
|
|
|
FUN_004011b0();
|
|
|
|
return (int *)0x0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00478b60 at 0x00478B60 (size: 26) ---
|
|
|
|
|
|
undefined4 * __fastcall FUN_00478b60(undefined4 *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_00479380();
|
|
|
|
*param_1 = &PTR_FUN_0079f0f4;
|
|
|
|
param_1[4] = DAT_0083e724;
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00478b80 at 0x00478B80 (size: 31) ---
|
|
|
|
|
|
void __fastcall FUN_00478b80(undefined4 *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
wchar_t *_Str;
|
|
|
|
int *piVar1;
|
|
|
|
|
|
|
|
_Str = (wchar_t *)*param_1;
|
|
|
|
piVar1 = _errno();
|
|
|
|
*piVar1 = 0;
|
|
|
|
wcstoul(_Str,(wchar_t **)0x0,0);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00478ba0 at 0x00478BA0 (size: 36) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_00478ba0(undefined4 *param_1,byte param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
*param_1 = &PTR_FUN_0079f0f4;
|
|
|
|
FUN_004793a0();
|
|
|
|
if ((param_2 & 1) != 0) {
|
|
|
|
operator_delete(param_1);
|
|
|
|
}
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00478bd0 at 0x00478BD0 (size: 106) ---
|
|
|
|
|
|
undefined1 FUN_00478bd0(wchar_t *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int *piVar1;
|
|
|
|
LONG LVar2;
|
|
|
|
undefined1 uVar3;
|
|
|
|
wchar_t *local_4;
|
|
|
|
|
|
|
|
local_4 = (wchar_t *)0x0;
|
|
|
|
piVar1 = _errno();
|
|
|
|
*piVar1 = 0;
|
|
|
|
wcstoul(param_1,&local_4,0);
|
|
|
|
if (*local_4 == L'\0') {
|
|
|
|
piVar1 = _errno();
|
|
|
|
if (*piVar1 != 0x22) {
|
|
|
|
uVar3 = 1;
|
|
|
|
goto LAB_00478c16;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
uVar3 = 0;
|
|
|
|
LAB_00478c16:
|
|
|
|
LVar2 = InterlockedDecrement((LONG *)(param_1 + -8));
|
|
|
|
if ((LVar2 == 0) && (param_1 + -10 != (wchar_t *)0x0)) {
|
|
|
|
(*(code *)**(undefined4 **)(param_1 + -10))(1);
|
|
|
|
}
|
|
|
|
return uVar3;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00478c60 at 0x00478C60 (size: 45) ---
|
|
|
|
|
|
undefined4 * __fastcall FUN_00478c60(undefined4 *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
LONG *lpAddend;
|
|
|
|
|
|
|
|
FUN_00479380();
|
|
|
|
*param_1 = &PTR_FUN_0079f120;
|
|
|
|
param_1[4] = 0;
|
|
|
|
lpAddend = (LONG *)(PTR_DAT_00818340 + -0x10);
|
|
|
|
param_1[5] = PTR_DAT_00818340;
|
|
|
|
InterlockedIncrement(lpAddend);
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00478c90 at 0x00478C90 (size: 72) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_00478c90(undefined4 *param_1,byte param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
LONG LVar1;
|
|
|
|
undefined4 *puVar2;
|
|
|
|
|
|
|
|
puVar2 = (undefined4 *)(param_1[5] + -0x14);
|
|
|
|
*param_1 = &PTR_FUN_0079f120;
|
|
|
|
LVar1 = InterlockedDecrement((LONG *)(param_1[5] + -0x10));
|
|
|
|
if ((LVar1 == 0) && (puVar2 != (undefined4 *)0x0)) {
|
|
|
|
(**(code **)*puVar2)(1);
|
|
|
|
}
|
|
|
|
FUN_004793a0();
|
|
|
|
if ((param_2 & 1) != 0) {
|
|
|
|
operator_delete(param_1);
|
|
|
|
}
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00478f20 at 0x00478F20 (size: 26) ---
|
|
|
|
|
|
undefined4 * __fastcall FUN_00478f20(undefined4 *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_00479380();
|
|
|
|
param_1[4] = 0;
|
|
|
|
param_1[5] = 0;
|
|
|
|
*param_1 = &PTR_FUN_0079f154;
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00478f60 at 0x00478F60 (size: 36) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_00478f60(undefined4 *param_1,byte param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
*param_1 = &PTR_FUN_0079f154;
|
|
|
|
FUN_004793a0();
|
|
|
|
if ((param_2 & 1) != 0) {
|
|
|
|
operator_delete(param_1);
|
|
|
|
}
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00479030 at 0x00479030 (size: 550) ---
|
|
|
|
|
|
undefined4 __thiscall FUN_00479030(int param_1,int param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
char cVar1;
|
|
|
|
LONG LVar2;
|
|
|
|
uint uVar3;
|
|
|
|
undefined4 uVar4;
|
|
|
|
undefined4 extraout_ECX;
|
|
|
|
undefined4 *puVar5;
|
|
|
|
uint uVar6;
|
|
|
|
int iVar7;
|
|
|
|
int local_1c;
|
|
|
|
int local_18;
|
|
|
|
undefined4 local_14;
|
|
|
|
undefined **local_10;
|
|
|
|
uint local_c;
|
|
|
|
uint local_8;
|
|
|
|
undefined4 *local_4;
|
|
|
|
|
|
|
|
local_4 = ¶m_2;
|
|
|
|
local_10 = &PTR_FUN_0079549c;
|
|
|
|
local_c = 0;
|
|
|
|
local_8 = 0;
|
|
|
|
cVar1 = FUN_0040b620(0x3a,0);
|
|
|
|
if (cVar1 == '\0') {
|
|
|
|
puVar5 = (undefined4 *)(param_2 + -0x14);
|
|
|
|
local_10 = &PTR_LAB_00795478;
|
|
|
|
LVar2 = InterlockedDecrement((LONG *)(param_2 + -0x10));
|
|
|
|
if ((LVar2 == 0) && (puVar5 != (undefined4 *)0x0)) {
|
|
|
|
(**(code **)*puVar5)(1);
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
FUN_0040b9a0(&local_18);
|
|
|
|
if (*(int *)(local_18 + -4) == 1) {
|
|
|
|
LVar2 = InterlockedDecrement((LONG *)(local_18 + -0x10));
|
|
|
|
if ((LVar2 == 0) && ((undefined4 *)(local_18 + -0x14) != (undefined4 *)0x0)) {
|
|
|
|
(*(code *)**(undefined4 **)(local_18 + -0x14))(1);
|
|
|
|
}
|
|
|
|
puVar5 = (undefined4 *)(param_2 + -0x14);
|
|
|
|
local_10 = &PTR_LAB_00795478;
|
|
|
|
LVar2 = InterlockedDecrement((LONG *)(param_2 + -0x10));
|
|
|
|
if ((LVar2 == 0) && (puVar5 != (undefined4 *)0x0)) {
|
|
|
|
(**(code **)*puVar5)(1);
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar7 = local_18;
|
|
|
|
InterlockedIncrement((LONG *)(local_18 + -0x10));
|
|
|
|
cVar1 = FUN_00478bd0(iVar7);
|
|
|
|
if (cVar1 != '\0') {
|
|
|
|
uVar6 = local_c + 1;
|
|
|
|
uVar3 = (*(code *)*local_10)();
|
|
|
|
if (uVar3 < uVar6) {
|
|
|
|
uVar6 = (*(code *)*local_10)();
|
|
|
|
}
|
|
|
|
local_c = uVar6;
|
|
|
|
local_8 = uVar6;
|
|
|
|
local_c = (*(code *)*local_10)();
|
|
|
|
FUN_0040b9a0(&local_1c);
|
|
|
|
if (*(int *)(local_1c + -4) != 1) {
|
|
|
|
puVar5 = &local_14;
|
|
|
|
local_14 = 0;
|
|
|
|
uVar4 = extraout_ECX;
|
|
|
|
FUN_0041ab80(&local_1c);
|
|
|
|
cVar1 = FUN_0041ba30(0x18,uVar4,puVar5);
|
|
|
|
if (cVar1 != '\0') {
|
|
|
|
uVar4 = FUN_00478b80();
|
|
|
|
*(undefined4 *)(param_1 + 0x10) = uVar4;
|
|
|
|
*(undefined4 *)(param_1 + 0x14) = local_14;
|
|
|
|
FUN_004011b0();
|
|
|
|
FUN_004011b0();
|
|
|
|
local_10 = &PTR_LAB_00795478;
|
|
|
|
FUN_004011b0();
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
FUN_004011b0();
|
|
|
|
FUN_004011b0();
|
|
|
|
local_10 = &PTR_LAB_00795478;
|
|
|
|
FUN_004011b0();
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
LVar2 = InterlockedDecrement((LONG *)(local_18 + -0x10));
|
|
|
|
if ((LVar2 == 0) && ((undefined4 *)(local_18 + -0x14) != (undefined4 *)0x0)) {
|
|
|
|
(*(code *)**(undefined4 **)(local_18 + -0x14))(1);
|
|
|
|
}
|
|
|
|
puVar5 = (undefined4 *)(param_2 + -0x14);
|
|
|
|
local_10 = &PTR_LAB_00795478;
|
|
|
|
LVar2 = InterlockedDecrement((LONG *)(param_2 + -0x10));
|
|
|
|
if ((LVar2 == 0) && (puVar5 != (undefined4 *)0x0)) {
|
|
|
|
(**(code **)*puVar5)(1);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00479260 at 0x00479260 (size: 25) ---
|
|
|
|
|
|
undefined4 * __fastcall FUN_00479260(undefined4 *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_00479380();
|
|
|
|
*param_1 = &PTR_FUN_0079f170;
|
|
|
|
param_1[4] = 0;
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004792a0 at 0x004792A0 (size: 36) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_004792a0(undefined4 *param_1,byte param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
*param_1 = &PTR_FUN_0079f170;
|
|
|
|
FUN_004793a0();
|
|
|
|
if ((param_2 & 1) != 0) {
|
|
|
|
operator_delete(param_1);
|
|
|
|
}
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004792d0 at 0x004792D0 (size: 136) ---
|
|
|
|
|
|
undefined4 __thiscall FUN_004792d0(int param_1,wchar_t *param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
char cVar1;
|
|
|
|
LONG LVar2;
|
|
|
|
int *piVar3;
|
|
|
|
ulong uVar4;
|
|
|
|
wchar_t *pwVar5;
|
|
|
|
|
|
|
|
pwVar5 = param_2;
|
|
|
|
InterlockedIncrement((LONG *)(param_2 + -8));
|
|
|
|
cVar1 = FUN_00478bd0(pwVar5);
|
|
|
|
if (cVar1 == '\0') {
|
|
|
|
LVar2 = InterlockedDecrement((LONG *)(param_2 + -8));
|
|
|
|
if ((LVar2 == 0) && (param_2 + -10 != (wchar_t *)0x0)) {
|
|
|
|
(*(code *)**(undefined4 **)(param_2 + -10))(1);
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
piVar3 = _errno();
|
|
|
|
*piVar3 = 0;
|
|
|
|
uVar4 = wcstoul(param_2,(wchar_t **)0x0,0);
|
|
|
|
*(ulong *)(param_1 + 0x10) = uVar4;
|
|
|
|
LVar2 = InterlockedDecrement((LONG *)(param_2 + -8));
|
|
|
|
if ((LVar2 == 0) && (param_2 + -10 != (wchar_t *)0x0)) {
|
|
|
|
(*(code *)**(undefined4 **)(param_2 + -10))(1);
|
|
|
|
}
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00479380 at 0x00479380 (size: 24) ---
|
|
|
|
|
|
void __fastcall FUN_00479380(undefined4 *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
param_1[1] = 1;
|
|
|
|
*param_1 = &PTR_FUN_0079f18c;
|
|
|
|
param_1[2] = 0;
|
|
|
|
param_1[3] = 0;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004793a0 at 0x004793A0 (size: 7) ---
|
|
|
|
|
|
void __fastcall FUN_004793a0(undefined4 *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
*param_1 = &PTR_FUN_007952f4;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004793b0 at 0x004793B0 (size: 40) ---
|
|
|
|
|
|
uint FUN_004793b0(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
uint uVar1;
|
|
|
|
|
|
|
|
uVar1 = InterlockedDecrement((LONG *)(param_1 + -0x10));
|
|
|
|
if ((uVar1 == 0) && ((undefined4 *)(param_1 + -0x14) != (undefined4 *)0x0)) {
|
|
|
|
uVar1 = (*(code *)**(undefined4 **)(param_1 + -0x14))(1);
|
|
|
|
}
|
|
|
|
return uVar1 & 0xffffff00;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004797c0 at 0x004797C0 (size: 38) ---
|
|
|
|
|
|
void __thiscall FUN_004797c0(int param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
*(undefined4 *)(param_1 + 0x90) = 0;
|
|
|
|
FUN_0042dd10();
|
|
|
|
*(undefined4 *)(param_1 + 0x90) = param_2;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_004797f0 at 0x004797F0 (size: 54) ---
|
|
|
|
|
|
void __thiscall FUN_004797f0(int param_1,undefined4 param_2,undefined4 param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
*(undefined4 *)(param_1 + 0x90) = 0;
|
|
|
|
FUN_0042dd10();
|
|
|
|
*(undefined4 *)(param_1 + 0x90) = param_2;
|
|
|
|
FUN_0042de30(param_3);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00479840 at 0x00479840 (size: 158) ---
|
|
|
|
|
|
void __fastcall FUN_00479840(undefined4 *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
void *pvVar1;
|
|
|
|
|
|
|
|
param_1[-2] = &PTR_LAB_0079f870;
|
|
|
|
param_1[-1] = &PTR_FUN_00801670;
|
|
|
|
*param_1 = &PTR_FUN_0079f24c;
|
|
|
|
DAT_0083e72c = 0;
|
|
|
|
if ((undefined4 *)param_1[0x23] != (undefined4 *)0x0) {
|
|
|
|
(*(code *)**(undefined4 **)param_1[0x23])(1);
|
|
|
|
}
|
|
|
|
pvVar1 = (void *)param_1[0x24];
|
|
|
|
param_1[0x23] = 0;
|
|
|
|
if (pvVar1 != (void *)0x0) {
|
|
|
|
FUN_00479e40();
|
|
|
|
operator_delete(pvVar1);
|
|
|
|
}
|
|
|
|
param_1[0x24] = 0;
|
|
|
|
FUN_00465fb0(3);
|
|
|
|
FUN_0042e590();
|
|
|
|
param_1[0x1f] = &PTR_LAB_00793b6c;
|
|
|
|
FUN_004663b0();
|
|
|
|
FUN_0043c610();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00479950 at 0x00479950 (size: 40) ---
|
|
|
|
|
|
int __fastcall FUN_00479950(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
|
|
|
|
iVar1 = FUN_00401ea0();
|
|
|
|
if ((iVar1 == 0) && (param_1 != 0)) {
|
|
|
|
(*(code *)**(undefined4 **)(param_1 + 8))(1);
|
|
|
|
}
|
|
|
|
return iVar1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00479980 at 0x00479980 (size: 64) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_00479980(undefined4 *param_1,byte param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
*param_1 = &PTR_FUN_0079f264;
|
|
|
|
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_004799c0 at 0x004799C0 (size: 166) ---
|
|
|
|
|
|
undefined4 * __fastcall FUN_004799c0(undefined4 *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
undefined4 uVar2;
|
|
|
|
|
|
|
|
param_1[1] = &PTR_FUN_00801670;
|
|
|
|
FUN_00466380();
|
|
|
|
*param_1 = &PTR_LAB_0079f870;
|
|
|
|
param_1[1] = &PTR_FUN_00801670;
|
|
|
|
param_1[2] = &PTR_FUN_0079f24c;
|
|
|
|
param_1[0x22] = 1;
|
|
|
|
param_1[0x21] = &PTR_LAB_00793b6c;
|
|
|
|
param_1[0x23] = 0;
|
|
|
|
param_1[0x24] = 0;
|
|
|
|
param_1[0x25] = 0;
|
|
|
|
param_1[0x26] = 0;
|
|
|
|
FUN_0042dc80();
|
|
|
|
FUN_00465f90(3);
|
|
|
|
iVar1 = FUN_005df0f5(0x50);
|
|
|
|
if (iVar1 != 0) {
|
|
|
|
uVar2 = FUN_00479e00();
|
|
|
|
param_1[0x26] = uVar2;
|
|
|
|
DAT_0083e72c = param_1;
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
param_1[0x26] = 0;
|
|
|
|
DAT_0083e72c = param_1;
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00479a70 at 0x00479A70 (size: 34) ---
|
|
|
|
|
|
int __thiscall FUN_00479a70(int param_1,byte param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_00479840();
|
|
|
|
if ((param_2 & 1) != 0) {
|
|
|
|
operator_delete((void *)(param_1 + -8));
|
|
|
|
}
|
|
|
|
return param_1 + -8;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00479aa0 at 0x00479AA0 (size: 250) ---
|
|
|
|
|
|
void __fastcall FUN_00479aa0(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
uint uVar1;
|
|
|
|
code *pcVar2;
|
|
|
|
char cVar3;
|
|
|
|
uint *puVar4;
|
|
|
|
int iVar5;
|
|
|
|
undefined1 auStack_90 [144];
|
|
|
|
|
|
|
|
uVar1 = *(uint *)(param_1 + 0x90);
|
|
|
|
if ((uVar1 != 0) &&
|
|
|
|
(puVar4 = *(uint **)(DAT_00819fec + (uVar1 % DAT_00819ff4) * 4), puVar4 != (uint *)0x0)) {
|
|
|
|
while (*puVar4 != uVar1) {
|
|
|
|
puVar4 = (uint *)puVar4[1];
|
|
|
|
if (puVar4 == (uint *)0x0) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (puVar4 != (uint *)0x0) {
|
|
|
|
pcVar2 = (code *)puVar4[2];
|
|
|
|
if (*(int **)(param_1 + 0x94) != (int *)0x0) {
|
|
|
|
(**(code **)(**(int **)(param_1 + 0x94) + 0x24))(0);
|
|
|
|
}
|
|
|
|
if (*(undefined4 **)(param_1 + 0x94) != (undefined4 *)0x0) {
|
|
|
|
(**(code **)**(undefined4 **)(param_1 + 0x94))(1);
|
|
|
|
}
|
|
|
|
*(undefined4 *)(param_1 + 0x8c) = *(undefined4 *)(param_1 + 0x90);
|
|
|
|
*(undefined4 *)(param_1 + 0x94) = 0;
|
|
|
|
*(undefined4 *)(param_1 + 0x90) = 0;
|
|
|
|
FUN_0042e510(param_1 + 0x9c);
|
|
|
|
FUN_0042dd10();
|
|
|
|
if ((pcVar2 != (code *)0x0) && (iVar5 = (*pcVar2)(), iVar5 != 0)) {
|
|
|
|
*(int *)(param_1 + 0x94) = iVar5;
|
|
|
|
cVar3 = FUN_0042ce00(1);
|
|
|
|
if (cVar3 != '\0') {
|
|
|
|
(**(code **)(**(int **)(param_1 + 0x94) + 0x3c))(auStack_90);
|
|
|
|
}
|
|
|
|
(**(code **)(**(int **)(param_1 + 0x94) + 0x24))(1);
|
|
|
|
}
|
|
|
|
FUN_0042e590();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00479bc0 at 0x00479BC0 (size: 143) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_00479bc0(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_0079f264;
|
|
|
|
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_00479c50 at 0x00479C50 (size: 71) ---
|
|
|
|
|
|
void FUN_00479c50(undefined4 param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
char cVar1;
|
|
|
|
undefined4 *puVar2;
|
|
|
|
|
|
|
|
puVar2 = (undefined4 *)FUN_005df0f5(0xc);
|
|
|
|
if (puVar2 == (undefined4 *)0x0) {
|
|
|
|
puVar2 = (undefined4 *)0x0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*puVar2 = param_1;
|
|
|
|
puVar2[1] = 0;
|
|
|
|
puVar2[2] = param_2;
|
|
|
|
}
|
|
|
|
cVar1 = FUN_0042bd40(puVar2);
|
|
|
|
if ((cVar1 == '\0') && (puVar2 != (undefined4 *)0x0)) {
|
|
|
|
operator_delete(puVar2);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00479ca0 at 0x00479CA0 (size: 82) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_00479ca0(undefined4 *param_1,byte param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
*param_1 = &PTR_FUN_0079f268;
|
|
|
|
FUN_005870f0();
|
|
|
|
param_1[1] = &PTR_FUN_0079f264;
|
|
|
|
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_00479d30 at 0x00479D30 (size: 77) ---
|
|
|
|
|
|
undefined4 * __fastcall FUN_00479d30(undefined4 *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
LONG *lpAddend;
|
|
|
|
|
|
|
|
*param_1 = &PTR_FUN_0079f27c;
|
|
|
|
param_1[3] = 0;
|
|
|
|
param_1[4] = 0;
|
|
|
|
param_1[5] = 0;
|
|
|
|
param_1[6] = 0;
|
|
|
|
param_1[7] = 0;
|
|
|
|
param_1[8] = 0;
|
|
|
|
param_1[9] = 0;
|
|
|
|
param_1[10] = 5;
|
|
|
|
lpAddend = (LONG *)(DAT_008ef11c + 4);
|
|
|
|
param_1[0xb] = DAT_008ef11c;
|
|
|
|
InterlockedIncrement(lpAddend);
|
|
|
|
param_1[0xc] = 0;
|
|
|
|
param_1[0xd] = 0;
|
|
|
|
param_1[0xe] = 0;
|
|
|
|
param_1[2] = 0;
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00479d80 at 0x00479D80 (size: 117) ---
|
|
|
|
|
|
void __fastcall FUN_00479d80(undefined4 *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 *puVar1;
|
|
|
|
LONG LVar2;
|
|
|
|
|
|
|
|
puVar1 = (undefined4 *)param_1[0xb];
|
|
|
|
LVar2 = InterlockedDecrement(puVar1 + 1);
|
|
|
|
if ((LVar2 == 0) && (puVar1 != (undefined4 *)0x0)) {
|
|
|
|
(**(code **)*puVar1)(1);
|
|
|
|
}
|
|
|
|
puVar1 = (undefined4 *)param_1[6];
|
|
|
|
if (puVar1 != (undefined4 *)0x0) {
|
|
|
|
if (puVar1[-1] == 0) {
|
|
|
|
operator_delete__(puVar1 + -1);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
(**(code **)*puVar1)(3);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
puVar1 = (undefined4 *)param_1[3];
|
|
|
|
if (puVar1 != (undefined4 *)0x0) {
|
|
|
|
if (puVar1[-1] != 0) {
|
|
|
|
(**(code **)*puVar1)(3);
|
|
|
|
*param_1 = &PTR_FUN_0079385c;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
operator_delete__(puVar1 + -1);
|
|
|
|
}
|
|
|
|
*param_1 = &PTR_FUN_0079385c;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00479e00 at 0x00479E00 (size: 54) ---
|
|
|
|
|
|
undefined4 * __fastcall FUN_00479e00(undefined4 *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int *piVar1;
|
|
|
|
|
|
|
|
*param_1 = &PTR_FUN_0079f290;
|
|
|
|
FUN_00479d30();
|
|
|
|
*(undefined1 *)(param_1 + 0x12) = 0;
|
|
|
|
param_1[0x13] = 0;
|
|
|
|
piVar1 = (int *)FUN_0043c680();
|
|
|
|
if (piVar1 != (int *)0x0) {
|
|
|
|
(**(code **)(*piVar1 + 4))(0x186a6,param_1);
|
|
|
|
}
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00479e40 at 0x00479E40 (size: 42) ---
|
|
|
|
|
|
void __fastcall FUN_00479e40(undefined4 *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int *piVar1;
|
|
|
|
|
|
|
|
*param_1 = &PTR_FUN_0079f290;
|
|
|
|
piVar1 = (int *)FUN_0043c680();
|
|
|
|
if (piVar1 != (int *)0x0) {
|
|
|
|
(**(code **)(*piVar1 + 0xc))(param_1);
|
|
|
|
}
|
|
|
|
FUN_00479d80();
|
|
|
|
FUN_0043c610();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00479e70 at 0x00479E70 (size: 30) ---
|
|
|
|
|
|
void * __thiscall FUN_00479e70(void *param_1,byte param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_00479d80();
|
|
|
|
if ((param_2 & 1) != 0) {
|
|
|
|
operator_delete(param_1);
|
|
|
|
}
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00479e90 at 0x00479E90 (size: 75) ---
|
|
|
|
|
|
undefined4 FUN_00479e90(void)
|
|
|
|
|
|
|
|
{
|
|
|
|
int *piVar1;
|
|
|
|
char cVar2;
|
|
|
|
int *piVar3;
|
|
|
|
int iVar4;
|
|
|
|
undefined4 unaff_retaddr;
|
|
|
|
|
|
|
|
piVar3 = (int *)thunk_FUN_0043c680();
|
|
|
|
iVar4 = (**(code **)(*piVar3 + 0x10))(0x4dd252);
|
|
|
|
if (iVar4 != 0) {
|
|
|
|
piVar3 = *(int **)(iVar4 + 4);
|
|
|
|
while (piVar3 != (int *)0x0) {
|
|
|
|
piVar1 = (int *)*piVar3;
|
|
|
|
piVar3 = (int *)piVar3[1];
|
|
|
|
if ((piVar1 != (int *)0x0) && (cVar2 = (**(code **)*piVar1)(), cVar2 == '\0')) {
|
|
|
|
(**(code **)(*piVar1 + 0x214))(unaff_retaddr);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00479ee0 at 0x00479EE0 (size: 82) ---
|
|
|
|
|
|
undefined4 FUN_00479ee0(undefined4 param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int *piVar1;
|
|
|
|
char cVar2;
|
|
|
|
int *piVar3;
|
|
|
|
int iVar4;
|
|
|
|
undefined4 unaff_retaddr;
|
|
|
|
|
|
|
|
piVar3 = (int *)thunk_FUN_0043c680();
|
|
|
|
iVar4 = (**(code **)(*piVar3 + 0x10))(0x4dd251);
|
|
|
|
if (iVar4 != 0) {
|
|
|
|
piVar3 = *(int **)(iVar4 + 4);
|
|
|
|
while (piVar3 != (int *)0x0) {
|
|
|
|
piVar1 = (int *)*piVar3;
|
|
|
|
piVar3 = (int *)piVar3[1];
|
|
|
|
if ((piVar1 != (int *)0x0) && (cVar2 = (**(code **)*piVar1)(), cVar2 == '\0')) {
|
|
|
|
(**(code **)(*piVar1 + 0x218))(unaff_retaddr,param_1);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00479f40 at 0x00479F40 (size: 75) ---
|
|
|
|
|
|
undefined4 FUN_00479f40(void)
|
|
|
|
|
|
|
|
{
|
|
|
|
int *piVar1;
|
|
|
|
char cVar2;
|
|
|
|
int *piVar3;
|
|
|
|
int iVar4;
|
|
|
|
undefined4 unaff_retaddr;
|
|
|
|
|
|
|
|
piVar3 = (int *)thunk_FUN_0043c680();
|
|
|
|
iVar4 = (**(code **)(*piVar3 + 0x10))(0x4dd1e2);
|
|
|
|
if (iVar4 != 0) {
|
|
|
|
piVar3 = *(int **)(iVar4 + 4);
|
|
|
|
while (piVar3 != (int *)0x0) {
|
|
|
|
piVar1 = (int *)*piVar3;
|
|
|
|
piVar3 = (int *)piVar3[1];
|
|
|
|
if ((piVar1 != (int *)0x0) && (cVar2 = (**(code **)*piVar1)(), cVar2 == '\0')) {
|
|
|
|
(**(code **)(*piVar1 + 0x21c))(unaff_retaddr);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00479f90 at 0x00479F90 (size: 82) ---
|
|
|
|
|
|
undefined4 FUN_00479f90(undefined4 param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int *piVar1;
|
|
|
|
char cVar2;
|
|
|
|
int *piVar3;
|
|
|
|
int iVar4;
|
|
|
|
undefined4 unaff_retaddr;
|
|
|
|
|
|
|
|
piVar3 = (int *)thunk_FUN_0043c680();
|
|
|
|
iVar4 = (**(code **)(*piVar3 + 0x10))(0x4dd259);
|
|
|
|
if (iVar4 != 0) {
|
|
|
|
piVar3 = *(int **)(iVar4 + 4);
|
|
|
|
while (piVar3 != (int *)0x0) {
|
|
|
|
piVar1 = (int *)*piVar3;
|
|
|
|
piVar3 = (int *)piVar3[1];
|
|
|
|
if ((piVar1 != (int *)0x0) && (cVar2 = (**(code **)*piVar1)(), cVar2 == '\0')) {
|
|
|
|
(**(code **)(*piVar1 + 0x220))(unaff_retaddr,param_1);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00479ff0 at 0x00479FF0 (size: 82) ---
|
|
|
|
|
|
undefined4 FUN_00479ff0(undefined4 param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int *piVar1;
|
|
|
|
char cVar2;
|
|
|
|
int *piVar3;
|
|
|
|
int iVar4;
|
|
|
|
undefined4 unaff_retaddr;
|
|
|
|
|
|
|
|
piVar3 = (int *)thunk_FUN_0043c680();
|
|
|
|
iVar4 = (**(code **)(*piVar3 + 0x10))(0x4dd267);
|
|
|
|
if (iVar4 != 0) {
|
|
|
|
piVar3 = *(int **)(iVar4 + 4);
|
|
|
|
while (piVar3 != (int *)0x0) {
|
|
|
|
piVar1 = (int *)*piVar3;
|
|
|
|
piVar3 = (int *)piVar3[1];
|
|
|
|
if ((piVar1 != (int *)0x0) && (cVar2 = (**(code **)*piVar1)(), cVar2 == '\0')) {
|
|
|
|
(**(code **)(*piVar1 + 0x224))(unaff_retaddr,param_1);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0047a050 at 0x0047A050 (size: 82) ---
|
|
|
|
|
|
undefined4 FUN_0047a050(undefined4 param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int *piVar1;
|
|
|
|
char cVar2;
|
|
|
|
int *piVar3;
|
|
|
|
int iVar4;
|
|
|
|
undefined4 unaff_retaddr;
|
|
|
|
|
|
|
|
piVar3 = (int *)thunk_FUN_0043c680();
|
|
|
|
iVar4 = (**(code **)(*piVar3 + 0x10))(0x4dd1e8);
|
|
|
|
if (iVar4 != 0) {
|
|
|
|
piVar3 = *(int **)(iVar4 + 4);
|
|
|
|
while (piVar3 != (int *)0x0) {
|
|
|
|
piVar1 = (int *)*piVar3;
|
|
|
|
piVar3 = (int *)piVar3[1];
|
|
|
|
if ((piVar1 != (int *)0x0) && (cVar2 = (**(code **)*piVar1)(), cVar2 == '\0')) {
|
|
|
|
(**(code **)(*piVar1 + 0x228))(unaff_retaddr,param_1);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0047a0b0 at 0x0047A0B0 (size: 82) ---
|
|
|
|
|
|
undefined4 FUN_0047a0b0(undefined4 param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int *piVar1;
|
|
|
|
char cVar2;
|
|
|
|
int *piVar3;
|
|
|
|
int iVar4;
|
|
|
|
undefined4 unaff_retaddr;
|
|
|
|
|
|
|
|
piVar3 = (int *)thunk_FUN_0043c680();
|
|
|
|
iVar4 = (**(code **)(*piVar3 + 0x10))(0x4dd26e);
|
|
|
|
if (iVar4 != 0) {
|
|
|
|
piVar3 = *(int **)(iVar4 + 4);
|
|
|
|
while (piVar3 != (int *)0x0) {
|
|
|
|
piVar1 = (int *)*piVar3;
|
|
|
|
piVar3 = (int *)piVar3[1];
|
|
|
|
if ((piVar1 != (int *)0x0) && (cVar2 = (**(code **)*piVar1)(), cVar2 == '\0')) {
|
|
|
|
(**(code **)(*piVar1 + 0x22c))(unaff_retaddr,param_1);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0047a110 at 0x0047A110 (size: 75) ---
|
|
|
|
|
|
undefined4 FUN_0047a110(void)
|
|
|
|
|
|
|
|
{
|
|
|
|
int *piVar1;
|
|
|
|
char cVar2;
|
|
|
|
int *piVar3;
|
|
|
|
int iVar4;
|
|
|
|
undefined4 unaff_retaddr;
|
|
|
|
|
|
|
|
piVar3 = (int *)thunk_FUN_0043c680();
|
|
|
|
iVar4 = (**(code **)(*piVar3 + 0x10))(0x4dd284);
|
|
|
|
if (iVar4 != 0) {
|
|
|
|
piVar3 = *(int **)(iVar4 + 4);
|
|
|
|
while (piVar3 != (int *)0x0) {
|
|
|
|
piVar1 = (int *)*piVar3;
|
|
|
|
piVar3 = (int *)piVar3[1];
|
|
|
|
if ((piVar1 != (int *)0x0) && (cVar2 = (**(code **)*piVar1)(), cVar2 == '\0')) {
|
|
|
|
(**(code **)(*piVar1 + 0x230))(unaff_retaddr);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0047a160 at 0x0047A160 (size: 75) ---
|
|
|
|
|
|
undefined4 FUN_0047a160(void)
|
|
|
|
|
|
|
|
{
|
|
|
|
int *piVar1;
|
|
|
|
char cVar2;
|
|
|
|
int *piVar3;
|
|
|
|
int iVar4;
|
|
|
|
undefined4 unaff_retaddr;
|
|
|
|
|
|
|
|
piVar3 = (int *)thunk_FUN_0043c680();
|
|
|
|
iVar4 = (**(code **)(*piVar3 + 0x10))(0x4dd1f6);
|
|
|
|
if (iVar4 != 0) {
|
|
|
|
piVar3 = *(int **)(iVar4 + 4);
|
|
|
|
while (piVar3 != (int *)0x0) {
|
|
|
|
piVar1 = (int *)*piVar3;
|
|
|
|
piVar3 = (int *)piVar3[1];
|
|
|
|
if ((piVar1 != (int *)0x0) && (cVar2 = (**(code **)*piVar1)(), cVar2 == '\0')) {
|
|
|
|
(**(code **)(*piVar1 + 0x238))(unaff_retaddr);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0047a1b0 at 0x0047A1B0 (size: 75) ---
|
|
|
|
|
|
undefined4 FUN_0047a1b0(void)
|
|
|
|
|
|
|
|
{
|
|
|
|
int *piVar1;
|
|
|
|
char cVar2;
|
|
|
|
int *piVar3;
|
|
|
|
int iVar4;
|
|
|
|
undefined4 unaff_retaddr;
|
|
|
|
|
|
|
|
piVar3 = (int *)thunk_FUN_0043c680();
|
|
|
|
iVar4 = (**(code **)(*piVar3 + 0x10))(0x4dd266);
|
|
|
|
if (iVar4 != 0) {
|
|
|
|
piVar3 = *(int **)(iVar4 + 4);
|
|
|
|
while (piVar3 != (int *)0x0) {
|
|
|
|
piVar1 = (int *)*piVar3;
|
|
|
|
piVar3 = (int *)piVar3[1];
|
|
|
|
if ((piVar1 != (int *)0x0) && (cVar2 = (**(code **)*piVar1)(), cVar2 == '\0')) {
|
|
|
|
(**(code **)(*piVar1 + 0x23c))(unaff_retaddr);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0047a200 at 0x0047A200 (size: 82) ---
|
|
|
|
|
|
undefined4 FUN_0047a200(undefined4 param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int *piVar1;
|
|
|
|
char cVar2;
|
|
|
|
int *piVar3;
|
|
|
|
int iVar4;
|
|
|
|
undefined4 unaff_retaddr;
|
|
|
|
|
|
|
|
piVar3 = (int *)thunk_FUN_0043c680();
|
|
|
|
iVar4 = (**(code **)(*piVar3 + 0x10))(0x4dd1f0);
|
|
|
|
if (iVar4 != 0) {
|
|
|
|
piVar3 = *(int **)(iVar4 + 4);
|
|
|
|
while (piVar3 != (int *)0x0) {
|
|
|
|
piVar1 = (int *)*piVar3;
|
|
|
|
piVar3 = (int *)piVar3[1];
|
|
|
|
if ((piVar1 != (int *)0x0) && (cVar2 = (**(code **)*piVar1)(), cVar2 == '\0')) {
|
|
|
|
(**(code **)(*piVar1 + 0x240))(unaff_retaddr,param_1);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0047a260 at 0x0047A260 (size: 75) ---
|
|
|
|
|
|
undefined4 FUN_0047a260(void)
|
|
|
|
|
|
|
|
{
|
|
|
|
int *piVar1;
|
|
|
|
char cVar2;
|
|
|
|
int *piVar3;
|
|
|
|
int iVar4;
|
|
|
|
undefined4 unaff_retaddr;
|
|
|
|
|
|
|
|
piVar3 = (int *)thunk_FUN_0043c680();
|
|
|
|
iVar4 = (**(code **)(*piVar3 + 0x10))(0x4dd21f);
|
|
|
|
if (iVar4 != 0) {
|
|
|
|
piVar3 = *(int **)(iVar4 + 4);
|
|
|
|
while (piVar3 != (int *)0x0) {
|
|
|
|
piVar1 = (int *)*piVar3;
|
|
|
|
piVar3 = (int *)piVar3[1];
|
|
|
|
if ((piVar1 != (int *)0x0) && (cVar2 = (**(code **)*piVar1)(), cVar2 == '\0')) {
|
|
|
|
(**(code **)(*piVar1 + 0x244))(unaff_retaddr);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0047a2b0 at 0x0047A2B0 (size: 70) ---
|
|
|
|
|
|
undefined4 FUN_0047a2b0(void)
|
|
|
|
|
|
|
|
{
|
|
|
|
int *piVar1;
|
|
|
|
char cVar2;
|
|
|
|
int *piVar3;
|
|
|
|
int iVar4;
|
|
|
|
|
|
|
|
piVar3 = (int *)thunk_FUN_0043c680();
|
|
|
|
iVar4 = (**(code **)(*piVar3 + 0x10))(0x4dd217);
|
|
|
|
if (iVar4 != 0) {
|
|
|
|
piVar3 = *(int **)(iVar4 + 4);
|
|
|
|
while (piVar3 != (int *)0x0) {
|
|
|
|
piVar1 = (int *)*piVar3;
|
|
|
|
piVar3 = (int *)piVar3[1];
|
|
|
|
if ((piVar1 != (int *)0x0) && (cVar2 = (**(code **)*piVar1)(), cVar2 == '\0')) {
|
|
|
|
(**(code **)(*piVar1 + 0x248))();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0047a300 at 0x0047A300 (size: 75) ---
|
|
|
|
|
|
undefined4 FUN_0047a300(void)
|
|
|
|
|
|
|
|
{
|
|
|
|
int *piVar1;
|
|
|
|
char cVar2;
|
|
|
|
int *piVar3;
|
|
|
|
int iVar4;
|
|
|
|
undefined4 unaff_retaddr;
|
|
|
|
|
|
|
|
piVar3 = (int *)thunk_FUN_0043c680();
|
|
|
|
iVar4 = (**(code **)(*piVar3 + 0x10))(0x4dd283);
|
|
|
|
if (iVar4 != 0) {
|
|
|
|
piVar3 = *(int **)(iVar4 + 4);
|
|
|
|
while (piVar3 != (int *)0x0) {
|
|
|
|
piVar1 = (int *)*piVar3;
|
|
|
|
piVar3 = (int *)piVar3[1];
|
|
|
|
if ((piVar1 != (int *)0x0) && (cVar2 = (**(code **)*piVar1)(), cVar2 == '\0')) {
|
|
|
|
(**(code **)(*piVar1 + 0x24c))(unaff_retaddr);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0047a350 at 0x0047A350 (size: 70) ---
|
|
|
|
|
|
undefined4 FUN_0047a350(void)
|
|
|
|
|
|
|
|
{
|
|
|
|
int *piVar1;
|
|
|
|
char cVar2;
|
|
|
|
int *piVar3;
|
|
|
|
int iVar4;
|
|
|
|
|
|
|
|
piVar3 = (int *)thunk_FUN_0043c680();
|
|
|
|
iVar4 = (**(code **)(*piVar3 + 0x10))(0x4dd1ef);
|
|
|
|
if (iVar4 != 0) {
|
|
|
|
piVar3 = *(int **)(iVar4 + 4);
|
|
|
|
while (piVar3 != (int *)0x0) {
|
|
|
|
piVar1 = (int *)*piVar3;
|
|
|
|
piVar3 = (int *)piVar3[1];
|
|
|
|
if ((piVar1 != (int *)0x0) && (cVar2 = (**(code **)*piVar1)(), cVar2 == '\0')) {
|
|
|
|
(**(code **)(*piVar1 + 0x250))();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0047a3a0 at 0x0047A3A0 (size: 82) ---
|
|
|
|
|
|
undefined4 FUN_0047a3a0(undefined4 param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int *piVar1;
|
|
|
|
char cVar2;
|
|
|
|
int *piVar3;
|
|
|
|
int iVar4;
|
|
|
|
undefined4 unaff_retaddr;
|
|
|
|
|
|
|
|
piVar3 = (int *)thunk_FUN_0043c680();
|
|
|
|
iVar4 = (**(code **)(*piVar3 + 0x10))(0x4dd270);
|
|
|
|
if (iVar4 != 0) {
|
|
|
|
piVar3 = *(int **)(iVar4 + 4);
|
|
|
|
while (piVar3 != (int *)0x0) {
|
|
|
|
piVar1 = (int *)*piVar3;
|
|
|
|
piVar3 = (int *)piVar3[1];
|
|
|
|
if ((piVar1 != (int *)0x0) && (cVar2 = (**(code **)*piVar1)(), cVar2 == '\0')) {
|
|
|
|
(**(code **)(*piVar1 + 0x254))(unaff_retaddr,param_1);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0047a400 at 0x0047A400 (size: 75) ---
|
|
|
|
|
|
undefined4 FUN_0047a400(void)
|
|
|
|
|
|
|
|
{
|
|
|
|
int *piVar1;
|
|
|
|
char cVar2;
|
|
|
|
int *piVar3;
|
|
|
|
int iVar4;
|
|
|
|
undefined4 unaff_retaddr;
|
|
|
|
|
|
|
|
piVar3 = (int *)thunk_FUN_0043c680();
|
|
|
|
iVar4 = (**(code **)(*piVar3 + 0x10))(0x4dd1f2);
|
|
|
|
if (iVar4 != 0) {
|
|
|
|
piVar3 = *(int **)(iVar4 + 4);
|
|
|
|
while (piVar3 != (int *)0x0) {
|
|
|
|
piVar1 = (int *)*piVar3;
|
|
|
|
piVar3 = (int *)piVar3[1];
|
|
|
|
if ((piVar1 != (int *)0x0) && (cVar2 = (**(code **)*piVar1)(), cVar2 == '\0')) {
|
|
|
|
(**(code **)(*piVar1 + 600))(unaff_retaddr);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0047a450 at 0x0047A450 (size: 75) ---
|
|
|
|
|
|
undefined4 FUN_0047a450(void)
|
|
|
|
|
|
|
|
{
|
|
|
|
int *piVar1;
|
|
|
|
char cVar2;
|
|
|
|
int *piVar3;
|
|
|
|
int iVar4;
|
|
|
|
undefined4 unaff_retaddr;
|
|
|
|
|
|
|
|
piVar3 = (int *)thunk_FUN_0043c680();
|
|
|
|
iVar4 = (**(code **)(*piVar3 + 0x10))(0x4dd1ff);
|
|
|
|
if (iVar4 != 0) {
|
|
|
|
piVar3 = *(int **)(iVar4 + 4);
|
|
|
|
while (piVar3 != (int *)0x0) {
|
|
|
|
piVar1 = (int *)*piVar3;
|
|
|
|
piVar3 = (int *)piVar3[1];
|
|
|
|
if ((piVar1 != (int *)0x0) && (cVar2 = (**(code **)*piVar1)(), cVar2 == '\0')) {
|
|
|
|
(**(code **)(*piVar1 + 0x25c))(unaff_retaddr);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0047a4a0 at 0x0047A4A0 (size: 82) ---
|
|
|
|
|
|
undefined4 FUN_0047a4a0(undefined4 param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int *piVar1;
|
|
|
|
char cVar2;
|
|
|
|
int *piVar3;
|
|
|
|
int iVar4;
|
|
|
|
undefined4 unaff_retaddr;
|
|
|
|
|
|
|
|
piVar3 = (int *)thunk_FUN_0043c680();
|
|
|
|
iVar4 = (**(code **)(*piVar3 + 0x10))(0x4dd1f8);
|
|
|
|
if (iVar4 != 0) {
|
|
|
|
piVar3 = *(int **)(iVar4 + 4);
|
|
|
|
while (piVar3 != (int *)0x0) {
|
|
|
|
piVar1 = (int *)*piVar3;
|
|
|
|
piVar3 = (int *)piVar3[1];
|
|
|
|
if ((piVar1 != (int *)0x0) && (cVar2 = (**(code **)*piVar1)(), cVar2 == '\0')) {
|
|
|
|
(**(code **)(*piVar1 + 0x260))(unaff_retaddr,param_1);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0047a500 at 0x0047A500 (size: 75) ---
|
|
|
|
|
|
undefined4 FUN_0047a500(void)
|
|
|
|
|
|
|
|
{
|
|
|
|
int *piVar1;
|
|
|
|
char cVar2;
|
|
|
|
int *piVar3;
|
|
|
|
int iVar4;
|
|
|
|
undefined4 unaff_retaddr;
|
|
|
|
|
|
|
|
piVar3 = (int *)thunk_FUN_0043c680();
|
|
|
|
iVar4 = (**(code **)(*piVar3 + 0x10))(0x4dd244);
|
|
|
|
if (iVar4 != 0) {
|
|
|
|
piVar3 = *(int **)(iVar4 + 4);
|
|
|
|
while (piVar3 != (int *)0x0) {
|
|
|
|
piVar1 = (int *)*piVar3;
|
|
|
|
piVar3 = (int *)piVar3[1];
|
|
|
|
if ((piVar1 != (int *)0x0) && (cVar2 = (**(code **)*piVar1)(), cVar2 == '\0')) {
|
|
|
|
(**(code **)(*piVar1 + 0x264))(unaff_retaddr);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0047a550 at 0x0047A550 (size: 82) ---
|
|
|
|
|
|
undefined4 FUN_0047a550(undefined4 param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int *piVar1;
|
|
|
|
char cVar2;
|
|
|
|
int *piVar3;
|
|
|
|
int iVar4;
|
|
|
|
undefined4 unaff_retaddr;
|
|
|
|
|
|
|
|
piVar3 = (int *)thunk_FUN_0043c680();
|
|
|
|
iVar4 = (**(code **)(*piVar3 + 0x10))(0x4dd264);
|
|
|
|
if (iVar4 != 0) {
|
|
|
|
piVar3 = *(int **)(iVar4 + 4);
|
|
|
|
while (piVar3 != (int *)0x0) {
|
|
|
|
piVar1 = (int *)*piVar3;
|
|
|
|
piVar3 = (int *)piVar3[1];
|
|
|
|
if ((piVar1 != (int *)0x0) && (cVar2 = (**(code **)*piVar1)(), cVar2 == '\0')) {
|
|
|
|
(**(code **)(*piVar1 + 0x268))(unaff_retaddr,param_1);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0047a5b0 at 0x0047A5B0 (size: 75) ---
|
|
|
|
|
|
undefined4 FUN_0047a5b0(void)
|
|
|
|
|
|
|
|
{
|
|
|
|
int *piVar1;
|
|
|
|
char cVar2;
|
|
|
|
int *piVar3;
|
|
|
|
int iVar4;
|
|
|
|
undefined4 unaff_retaddr;
|
|
|
|
|
|
|
|
piVar3 = (int *)thunk_FUN_0043c680();
|
|
|
|
iVar4 = (**(code **)(*piVar3 + 0x10))(0x4dd271);
|
|
|
|
if (iVar4 != 0) {
|
|
|
|
piVar3 = *(int **)(iVar4 + 4);
|
|
|
|
while (piVar3 != (int *)0x0) {
|
|
|
|
piVar1 = (int *)*piVar3;
|
|
|
|
piVar3 = (int *)piVar3[1];
|
|
|
|
if ((piVar1 != (int *)0x0) && (cVar2 = (**(code **)*piVar1)(), cVar2 == '\0')) {
|
|
|
|
(**(code **)(*piVar1 + 0x26c))(unaff_retaddr);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0047a600 at 0x0047A600 (size: 75) ---
|
|
|
|
|
|
undefined4 FUN_0047a600(void)
|
|
|
|
|
|
|
|
{
|
|
|
|
int *piVar1;
|
|
|
|
char cVar2;
|
|
|
|
int *piVar3;
|
|
|
|
int iVar4;
|
|
|
|
undefined4 unaff_retaddr;
|
|
|
|
|
|
|
|
piVar3 = (int *)thunk_FUN_0043c680();
|
|
|
|
iVar4 = (**(code **)(*piVar3 + 0x10))(0x4dd26d);
|
|
|
|
if (iVar4 != 0) {
|
|
|
|
piVar3 = *(int **)(iVar4 + 4);
|
|
|
|
while (piVar3 != (int *)0x0) {
|
|
|
|
piVar1 = (int *)*piVar3;
|
|
|
|
piVar3 = (int *)piVar3[1];
|
|
|
|
if ((piVar1 != (int *)0x0) && (cVar2 = (**(code **)*piVar1)(), cVar2 == '\0')) {
|
|
|
|
(**(code **)(*piVar1 + 0x270))(unaff_retaddr);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0047a6a0 at 0x0047A6A0 (size: 70) ---
|
|
|
|
|
|
undefined4 FUN_0047a6a0(void)
|
|
|
|
|
|
|
|
{
|
|
|
|
int *piVar1;
|
|
|
|
char cVar2;
|
|
|
|
int *piVar3;
|
|
|
|
int iVar4;
|
|
|
|
|
|
|
|
piVar3 = (int *)thunk_FUN_0043c680();
|
|
|
|
iVar4 = (**(code **)(*piVar3 + 0x10))(0x4dd27c);
|
|
|
|
if (iVar4 != 0) {
|
|
|
|
piVar3 = *(int **)(iVar4 + 4);
|
|
|
|
while (piVar3 != (int *)0x0) {
|
|
|
|
piVar1 = (int *)*piVar3;
|
|
|
|
piVar3 = (int *)piVar3[1];
|
|
|
|
if ((piVar1 != (int *)0x0) && (cVar2 = (**(code **)*piVar1)(), cVar2 == '\0')) {
|
|
|
|
(**(code **)(*piVar1 + 0x27c))();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0047a6f0 at 0x0047A6F0 (size: 70) ---
|
|
|
|
|
|
undefined4 FUN_0047a6f0(void)
|
|
|
|
|
|
|
|
{
|
|
|
|
int *piVar1;
|
|
|
|
char cVar2;
|
|
|
|
int *piVar3;
|
|
|
|
int iVar4;
|
|
|
|
|
|
|
|
piVar3 = (int *)thunk_FUN_0043c680();
|
|
|
|
iVar4 = (**(code **)(*piVar3 + 0x10))(0x4dd25e);
|
|
|
|
if (iVar4 != 0) {
|
|
|
|
piVar3 = *(int **)(iVar4 + 4);
|
|
|
|
while (piVar3 != (int *)0x0) {
|
|
|
|
piVar1 = (int *)*piVar3;
|
|
|
|
piVar3 = (int *)piVar3[1];
|
|
|
|
if ((piVar1 != (int *)0x0) && (cVar2 = (**(code **)*piVar1)(), cVar2 == '\0')) {
|
|
|
|
(**(code **)(*piVar1 + 0x280))();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0047a740 at 0x0047A740 (size: 75) ---
|
|
|
|
|
|
undefined4 FUN_0047a740(void)
|
|
|
|
|
|
|
|
{
|
|
|
|
int *piVar1;
|
|
|
|
char cVar2;
|
|
|
|
int *piVar3;
|
|
|
|
int iVar4;
|
|
|
|
undefined4 unaff_retaddr;
|
|
|
|
|
|
|
|
piVar3 = (int *)thunk_FUN_0043c680();
|
|
|
|
iVar4 = (**(code **)(*piVar3 + 0x10))(0x4dd21e);
|
|
|
|
if (iVar4 != 0) {
|
|
|
|
piVar3 = *(int **)(iVar4 + 4);
|
|
|
|
while (piVar3 != (int *)0x0) {
|
|
|
|
piVar1 = (int *)*piVar3;
|
|
|
|
piVar3 = (int *)piVar3[1];
|
|
|
|
if ((piVar1 != (int *)0x0) && (cVar2 = (**(code **)*piVar1)(), cVar2 == '\0')) {
|
|
|
|
(**(code **)(*piVar1 + 0x284))(unaff_retaddr);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0047a790 at 0x0047A790 (size: 87) ---
|
|
|
|
|
|
undefined4 FUN_0047a790(undefined4 param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
int *piVar1;
|
|
|
|
char cVar2;
|
|
|
|
int *piVar3;
|
|
|
|
int iVar4;
|
|
|
|
undefined4 unaff_retaddr;
|
|
|
|
|
|
|
|
piVar3 = (int *)thunk_FUN_0043c680();
|
|
|
|
iVar4 = (**(code **)(*piVar3 + 0x10))(0x4dd276);
|
|
|
|
if (iVar4 != 0) {
|
|
|
|
piVar3 = *(int **)(iVar4 + 4);
|
|
|
|
while (piVar3 != (int *)0x0) {
|
|
|
|
piVar1 = (int *)*piVar3;
|
|
|
|
piVar3 = (int *)piVar3[1];
|
|
|
|
if ((piVar1 != (int *)0x0) && (cVar2 = (**(code **)*piVar1)(), cVar2 == '\0')) {
|
|
|
|
(**(code **)(*piVar1 + 0x288))(unaff_retaddr,param_1,param_2);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0047a7f0 at 0x0047A7F0 (size: 18) ---
|
|
|
|
|
|
undefined4 * __fastcall FUN_0047a7f0(undefined4 *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_0043c640();
|
|
|
|
*param_1 = &PTR_FUN_0079f33c;
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- thunk_FUN_0043c680 at 0x0047A810 (size: 5) ---
|
|
|
|
|
|
undefined4 thunk_FUN_0043c680(void)
|
|
|
|
|
|
|
|
{
|
|
|
|
return DAT_00838374;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0047a820 at 0x0047A820 (size: 36) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_0047a820(undefined4 *param_1,byte param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
*param_1 = &PTR_FUN_0079f33c;
|
|
|
|
FUN_0043c660();
|
|
|
|
if ((param_2 & 1) != 0) {
|
|
|
|
operator_delete(param_1);
|
|
|
|
}
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0047a860 at 0x0047A860 (size: 420) ---
|
|
|
|
|
|
void FUN_0047a860(void)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_004e7950();
|
|
|
|
FUN_004e76c0();
|
|
|
|
FUN_004e73a0();
|
|
|
|
FUN_004e7180();
|
|
|
|
FUN_004e6f70();
|
|
|
|
FUN_004e6c50();
|
|
|
|
FUN_004e60a0();
|
|
|
|
FUN_004e5400();
|
|
|
|
FUN_004e2000();
|
|
|
|
FUN_004df290();
|
|
|
|
FUN_004ddc00();
|
|
|
|
FUN_004db190();
|
|
|
|
FUN_004d97e0();
|
|
|
|
FUN_004d71e0();
|
|
|
|
FUN_004d6a30();
|
|
|
|
FUN_004d5d10();
|
|
|
|
FUN_004d5720();
|
|
|
|
FUN_004d4b30();
|
|
|
|
FUN_004d3e20();
|
|
|
|
FUN_004d3280();
|
|
|
|
FUN_004d2840();
|
|
|
|
FUN_004d1d10();
|
|
|
|
FUN_004d1240();
|
|
|
|
FUN_004d0450();
|
|
|
|
FUN_004cf9a0();
|
|
|
|
FUN_004cf040();
|
|
|
|
FUN_004cdfc0();
|
|
|
|
FUN_004cd910();
|
|
|
|
FUN_004cd670();
|
|
|
|
FUN_004cd000();
|
|
|
|
FUN_004ccbd0();
|
|
|
|
FUN_004cbf50();
|
|
|
|
FUN_004ca8b0();
|
|
|
|
FUN_004c90c0();
|
|
|
|
FUN_004c6c20();
|
|
|
|
FUN_004c3bf0();
|
|
|
|
FUN_004c0a90();
|
|
|
|
FUN_004c0780();
|
|
|
|
FUN_004be730();
|
|
|
|
FUN_004bd630();
|
|
|
|
FUN_004bcce0();
|
|
|
|
FUN_004bbb00();
|
|
|
|
FUN_004b98b0();
|
|
|
|
FUN_004b84c0();
|
|
|
|
FUN_004abb00();
|
|
|
|
FUN_004ab200();
|
|
|
|
FUN_004a84a0();
|
|
|
|
FUN_004a7ca0();
|
|
|
|
FUN_004a7760();
|
|
|
|
FUN_004a74f0();
|
|
|
|
FUN_004a71f0();
|
|
|
|
FUN_004a6dd0();
|
|
|
|
FUN_004a48d0();
|
|
|
|
FUN_004a2ac0();
|
|
|
|
FUN_004a1ec0();
|
|
|
|
FUN_004a0590();
|
|
|
|
FUN_0049ff00();
|
|
|
|
FUN_0049eb50();
|
|
|
|
FUN_0049e370();
|
|
|
|
FUN_0049cd10();
|
|
|
|
FUN_0049b290();
|
|
|
|
FUN_0049ae10();
|
|
|
|
FUN_00499f60();
|
|
|
|
FUN_00495410();
|
|
|
|
FUN_004945a0();
|
|
|
|
FUN_004914d0();
|
|
|
|
FUN_0048e980();
|
|
|
|
FUN_0048e4f0();
|
|
|
|
FUN_0048d320();
|
|
|
|
FUN_0048b700();
|
|
|
|
FUN_0048b0d0();
|
|
|
|
FUN_00488bf0();
|
|
|
|
FUN_00487000();
|
|
|
|
FUN_00486830();
|
|
|
|
FUN_00486290();
|
|
|
|
FUN_004855e0();
|
|
|
|
FUN_00484df0();
|
|
|
|
FUN_00484720();
|
|
|
|
FUN_004835b0();
|
|
|
|
FUN_00482550();
|
|
|
|
FUN_00481b80();
|
|
|
|
FUN_0047d840();
|
|
|
|
FUN_0047c580();
|
|
|
|
FUN_0047b1c0();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0047aa10 at 0x0047AA10 (size: 269) ---
|
|
|
|
|
|
undefined4 * __fastcall FUN_0047aa10(undefined4 *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 *puVar1;
|
|
|
|
int *piVar2;
|
|
|
|
undefined4 *puStack_4;
|
|
|
|
|
|
|
|
puStack_4 = param_1;
|
|
|
|
FUN_004799c0();
|
|
|
|
param_1[0x4b] = &PTR_FUN_007ccb60;
|
|
|
|
puVar1 = param_1 + 0x4b;
|
|
|
|
*param_1 = &PTR_LAB_0079f870;
|
|
|
|
param_1[1] = &PTR_FUN_0079f810;
|
|
|
|
param_1[2] = &PTR_FUN_0079f7f8;
|
|
|
|
*puVar1 = &PTR_FUN_0079f550;
|
|
|
|
FUN_004ef100();
|
|
|
|
FUN_0047a860();
|
|
|
|
FUN_004ef0e0(0x10000003);
|
|
|
|
FUN_004eeaa0(0x10000001);
|
|
|
|
FUN_004ed780(0x1000000a);
|
|
|
|
FUN_004eb010(0x10000008);
|
|
|
|
FUN_004ea8a0(0x10000009);
|
|
|
|
FUN_004ea770(0x10000002);
|
|
|
|
FUN_004e90d0(0x1000000b);
|
|
|
|
FUN_004e8190(0x10000005);
|
|
|
|
FUN_004797c0(0x10000003);
|
|
|
|
FUN_00415640(&puStack_4,1,6);
|
|
|
|
FUN_0045a910(puStack_4,0,0,1);
|
|
|
|
piVar2 = (int *)FUN_0043c680();
|
|
|
|
if (piVar2 != (int *)0x0) {
|
|
|
|
(**(code **)(*piVar2 + 4))(0x186a1,puVar1);
|
|
|
|
(**(code **)(*piVar2 + 4))(100000,puVar1);
|
|
|
|
if (DAT_00837ff4 != (int *)0x0) {
|
|
|
|
(**(code **)(*DAT_00837ff4 + 0x34))(0xe,param_1 + 2,4000);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0047ab20 at 0x0047AB20 (size: 98) ---
|
|
|
|
|
|
void __fastcall FUN_0047ab20(undefined4 *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 *puVar1;
|
|
|
|
int *piVar2;
|
|
|
|
|
|
|
|
puVar1 = param_1 + 0x49;
|
|
|
|
param_1[-2] = &PTR_LAB_0079f870;
|
|
|
|
param_1[-1] = &PTR_FUN_0079f810;
|
|
|
|
*param_1 = &PTR_FUN_0079f7f8;
|
|
|
|
*puVar1 = &PTR_FUN_0079f550;
|
|
|
|
piVar2 = (int *)FUN_0043c680();
|
|
|
|
if (piVar2 != (int *)0x0) {
|
|
|
|
(**(code **)(*piVar2 + 0xc))(-(uint)(param_1 != (undefined4 *)0x8) & (uint)puVar1);
|
|
|
|
FUN_004ef1b0();
|
|
|
|
}
|
|
|
|
*(undefined ***)(-(uint)(param_1 != (undefined4 *)0x8) & (uint)puVar1) = &PTR_FUN_007ccb60;
|
|
|
|
FUN_0043c610();
|
|
|
|
FUN_00479840();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0047ab90 at 0x0047AB90 (size: 34) ---
|
|
|
|
|
|
int __thiscall FUN_0047ab90(int param_1,byte param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_0047ab20();
|
|
|
|
if ((param_2 & 1) != 0) {
|
|
|
|
operator_delete((void *)(param_1 + -8));
|
|
|
|
}
|
|
|
|
return param_1 + -8;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0047af90 at 0x0047AF90 (size: 145) ---
|
|
|
|
|
|
void __thiscall FUN_0047af90(int *param_1,undefined4 *param_2,int *param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
int *piVar2;
|
|
|
|
int *piVar3;
|
|
|
|
int *unaff_ESI;
|
|
|
|
int *local_4;
|
|
|
|
|
|
|
|
local_4 = param_1;
|
|
|
|
if (param_3 == (int *)0x0) {
|
|
|
|
FUN_00403770(0);
|
|
|
|
*param_2 = 0x80004002;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
iVar1 = *param_3;
|
|
|
|
param_3 = (int *)0x0;
|
|
|
|
piVar3 = (int *)(**(code **)(iVar1 + 0xc))(&local_4,&DAT_0079f538,¶m_3);
|
|
|
|
piVar2 = local_4;
|
|
|
|
iVar1 = *piVar3;
|
|
|
|
piVar3 = (int *)*param_1;
|
|
|
|
if (iVar1 < 0) {
|
|
|
|
if (piVar3 != (int *)0x0) {
|
|
|
|
(**(code **)(*piVar3 + 0x14))();
|
|
|
|
}
|
|
|
|
*param_1 = 0;
|
|
|
|
param_1[1] = 0;
|
|
|
|
*unaff_ESI = iVar1;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
if (piVar3 != (int *)0x0) {
|
|
|
|
(**(code **)(*piVar3 + 0x14))();
|
|
|
|
}
|
|
|
|
*param_1 = (int)piVar2;
|
|
|
|
param_1[1] = 0;
|
|
|
|
*unaff_ESI = iVar1;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0047b030 at 0x0047B030 (size: 108) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_0047b030(undefined4 *param_1,undefined4 param_2,undefined4 param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_00472670(param_2,param_3);
|
|
|
|
param_1[0x17e] = &PTR_FUN_007ccb60;
|
|
|
|
param_1[0x17f] = 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;
|
|
|
|
*(undefined1 *)(param_1 + 0x187) = 0;
|
|
|
|
param_1[0x188] = 0;
|
|
|
|
*param_1 = &PTR_FUN_007a0080;
|
|
|
|
param_1[0x17e] = &PTR_FUN_0079fdd8;
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0047b0d0 at 0x0047B0D0 (size: 55) ---
|
|
|
|
|
|
void __fastcall FUN_0047b0d0(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int *piVar1;
|
|
|
|
|
|
|
|
FUN_004639a0();
|
|
|
|
piVar1 = (int *)FUN_0043c680();
|
|
|
|
if (param_1 != 0) {
|
|
|
|
(**(code **)(*piVar1 + 4))(0x186a4,param_1 + 0x5f8);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
(**(code **)(*piVar1 + 4))(0x186a4,0);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0047b160 at 0x0047B160 (size: 82) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_0047b160(undefined4 *param_1,byte param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 *puVar1;
|
|
|
|
int *piVar2;
|
|
|
|
|
|
|
|
puVar1 = param_1 + 0x17e;
|
|
|
|
*param_1 = &PTR_FUN_007a0080;
|
|
|
|
*puVar1 = &PTR_FUN_0079fdd8;
|
|
|
|
piVar2 = (int *)FUN_0043c680();
|
|
|
|
if (piVar2 != (int *)0x0) {
|
|
|
|
(**(code **)(*piVar2 + 0xc))(puVar1);
|
|
|
|
}
|
|
|
|
*puVar1 = &PTR_FUN_007ccb60;
|
|
|
|
FUN_0043c610();
|
|
|
|
FUN_004726c0();
|
|
|
|
if ((param_2 & 1) != 0) {
|
|
|
|
operator_delete(param_1);
|
|
|
|
}
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0047b1c0 at 0x0047B1C0 (size: 19) ---
|
|
|
|
|
|
void FUN_0047b1c0(void)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_00460270(0x1000003e,&LAB_0047b110);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0047b1e0 at 0x0047B1E0 (size: 780) ---
|
|
|
|
|
|
void FUN_0047b1e0(void)
|
|
|
|
|
|
|
|
{
|
|
|
|
char cVar1;
|
|
|
|
undefined4 uVar2;
|
|
|
|
int iVar3;
|
|
|
|
int iVar4;
|
|
|
|
LONG LVar5;
|
|
|
|
undefined4 *puVar6;
|
|
|
|
char *pcVar7;
|
|
|
|
undefined4 uVar8;
|
|
|
|
undefined *local_1b8;
|
|
|
|
undefined *local_1b4 [109];
|
|
|
|
|
|
|
|
FUN_0042dc80();
|
|
|
|
uVar8 = 0x10000002;
|
|
|
|
uVar2 = FUN_004016b0("ID_CharGen_SummaryHowTo",0x10000002);
|
|
|
|
FUN_0042c9c0(uVar2,uVar8);
|
|
|
|
FUN_0042dc80();
|
|
|
|
uVar8 = 0x10000002;
|
|
|
|
uVar2 = FUN_004016b0("ID_CharGen_SummaryHowToEnd",0x10000002);
|
|
|
|
FUN_0042c9c0(uVar2,uVar8);
|
|
|
|
iVar3 = FUN_0055e1e0();
|
|
|
|
iVar3 = *(int *)(iVar3 + 0xd8);
|
|
|
|
iVar4 = FUN_0055e1e0();
|
|
|
|
uVar2 = *(undefined4 *)(iVar4 + 0xd4);
|
|
|
|
FUN_0042dc80();
|
|
|
|
switch(uVar2) {
|
|
|
|
case 1:
|
|
|
|
if (iVar3 == 2) {
|
|
|
|
pcVar7 = "ID_CharGen_AluFemaleNames";
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
pcVar7 = "ID_CharGen_AluMaleNames";
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
case 2:
|
|
|
|
if (iVar3 == 2) {
|
|
|
|
pcVar7 = "ID_CharGen_GharuFemaleNames";
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
pcVar7 = "ID_CharGen_GharuMaleNames";
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
case 3:
|
|
|
|
if (iVar3 == 2) {
|
|
|
|
pcVar7 = "ID_CharGen_ShoFemaleNames";
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
pcVar7 = "ID_CharGen_ShoMaleNames";
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
case 4:
|
|
|
|
if (iVar3 == 2) {
|
|
|
|
pcVar7 = "ID_CharGen_ViaFemaleNames";
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
pcVar7 = "ID_CharGen_ViaMaleNames";
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
case 5:
|
|
|
|
case 10:
|
|
|
|
uVar2 = 0x10000002;
|
|
|
|
if (iVar3 == 2) {
|
|
|
|
uVar8 = FUN_004016b0("ID_CharGen_ShadFemaleNames",0x10000002);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar8 = FUN_004016b0("ID_CharGen_ShadMaleNames",0x10000002);
|
|
|
|
}
|
|
|
|
goto LAB_0047b3b2;
|
|
|
|
case 6:
|
|
|
|
if (iVar3 == 2) {
|
|
|
|
pcVar7 = "ID_CharGen_GearFemaleNames";
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
pcVar7 = "ID_CharGen_GearMaleNames";
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
case 7:
|
|
|
|
if (iVar3 == 2) {
|
|
|
|
pcVar7 = "ID_CharGen_AunTFemaleNames";
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
pcVar7 = "ID_CharGen_AunTMaleNames";
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
case 8:
|
|
|
|
if (iVar3 == 2) {
|
|
|
|
pcVar7 = "ID_CharGen_LugFemaleNames";
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
pcVar7 = "ID_CharGen_LugMaleNames";
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
case 9:
|
|
|
|
if (iVar3 == 2) {
|
|
|
|
pcVar7 = "ID_CharGen_EmpFemaleNames";
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
pcVar7 = "ID_CharGen_EmpMaleNames";
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
case 0xb:
|
|
|
|
if (iVar3 == 2) {
|
|
|
|
pcVar7 = "ID_CharGen_UndFemaleNames";
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
pcVar7 = "ID_CharGen_UndMaleNames";
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
case 0xc:
|
|
|
|
case 0xd:
|
|
|
|
if (iVar3 == 2) {
|
|
|
|
pcVar7 = "ID_CharGen_OlthoiFemaleNames";
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
pcVar7 = "ID_CharGen_OlthoiMaleNames";
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
goto switchD_0047b278_default;
|
|
|
|
}
|
|
|
|
uVar2 = 0x10000002;
|
|
|
|
uVar8 = FUN_00401a20(pcVar7,0x10000002);
|
|
|
|
LAB_0047b3b2:
|
|
|
|
FUN_0042c9c0(uVar8,uVar2);
|
|
|
|
switchD_0047b278_default:
|
|
|
|
local_1b4[0] = PTR_DAT_00818340;
|
|
|
|
InterlockedIncrement((LONG *)(PTR_DAT_00818340 + -0x10));
|
|
|
|
local_1b8 = PTR_DAT_00818340;
|
|
|
|
InterlockedIncrement((LONG *)(PTR_DAT_00818340 + -0x10));
|
|
|
|
cVar1 = FUN_0042e6b0(&local_1b8,0);
|
|
|
|
if (cVar1 != '\0') {
|
|
|
|
if (*(int *)(local_1b8 + -4) != 1) {
|
|
|
|
FUN_00402490(local_1b8,*(int *)(local_1b8 + -4) + -1);
|
|
|
|
}
|
|
|
|
cVar1 = FUN_0042e6b0(&local_1b8,0);
|
|
|
|
if (cVar1 != '\0') {
|
|
|
|
if (*(int *)(local_1b8 + -4) != 1) {
|
|
|
|
FUN_00402490(local_1b8,*(int *)(local_1b8 + -4) + -1);
|
|
|
|
}
|
|
|
|
cVar1 = FUN_0042e6b0(&local_1b8,0);
|
|
|
|
if (cVar1 != '\0') {
|
|
|
|
if (*(int *)(local_1b8 + -4) != 1) {
|
|
|
|
FUN_00402490(local_1b8,*(int *)(local_1b8 + -4) + -1);
|
|
|
|
}
|
|
|
|
FUN_0046a740(local_1b4);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
puVar6 = (undefined4 *)(local_1b8 + -0x14);
|
|
|
|
LVar5 = InterlockedDecrement((LONG *)(local_1b8 + -0x10));
|
|
|
|
if ((LVar5 == 0) && (puVar6 != (undefined4 *)0x0)) {
|
|
|
|
(**(code **)*puVar6)(1);
|
|
|
|
}
|
|
|
|
puVar6 = (undefined4 *)(local_1b4[0] + -0x14);
|
|
|
|
LVar5 = InterlockedDecrement((LONG *)(local_1b4[0] + -0x10));
|
|
|
|
if ((LVar5 == 0) && (puVar6 != (undefined4 *)0x0)) {
|
|
|
|
(**(code **)*puVar6)(1);
|
|
|
|
}
|
|
|
|
FUN_0042e590();
|
|
|
|
FUN_0042e590();
|
|
|
|
FUN_0042e590();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0047b520 at 0x0047B520 (size: 106) ---
|
|
|
|
|
|
void FUN_0047b520(undefined4 param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 *puVar1;
|
|
|
|
LONG LVar2;
|
|
|
|
undefined *local_4;
|
|
|
|
|
|
|
|
local_4 = PTR_DAT_00818340;
|
|
|
|
InterlockedIncrement((LONG *)(PTR_DAT_00818340 + -0x10));
|
|
|
|
FUN_004027b0(&local_4,&DAT_0079fdd0,param_1);
|
|
|
|
if (*(int *)(local_4 + -4) != 1) {
|
|
|
|
FUN_00402490(local_4,*(int *)(local_4 + -4) + -1);
|
|
|
|
}
|
|
|
|
puVar1 = (undefined4 *)(local_4 + -0x14);
|
|
|
|
LVar2 = InterlockedDecrement((LONG *)(local_4 + -0x10));
|
|
|
|
if ((LVar2 == 0) && (puVar1 != (undefined4 *)0x0)) {
|
|
|
|
(**(code **)*puVar1)(1);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0047b590 at 0x0047B590 (size: 2187) ---
|
|
|
|
|
|
void FUN_0047b590(void)
|
|
|
|
|
|
|
|
{
|
|
|
|
uint uVar1;
|
|
|
|
int iVar2;
|
|
|
|
size_t sVar3;
|
|
|
|
int *piVar4;
|
|
|
|
int iVar5;
|
|
|
|
LONG LVar6;
|
|
|
|
int iVar7;
|
|
|
|
undefined4 uVar8;
|
|
|
|
int *piVar9;
|
|
|
|
int iVar10;
|
|
|
|
undefined4 *puVar11;
|
|
|
|
uint *puVar12;
|
|
|
|
wchar_t *pwVar13;
|
|
|
|
undefined *puStack_1c;
|
|
|
|
undefined *puStack_18;
|
|
|
|
int iStack_14;
|
|
|
|
int iStack_10;
|
|
|
|
int iStack_8;
|
|
|
|
int iStack_4;
|
|
|
|
|
|
|
|
FUN_0046e460();
|
|
|
|
puStack_1c = PTR_DAT_00818340;
|
|
|
|
InterlockedIncrement((LONG *)(PTR_DAT_00818340 + -0x10));
|
|
|
|
iVar2 = FUN_0055e1e0();
|
|
|
|
iVar5 = *(int *)(iVar2 + 0x180);
|
|
|
|
iStack_8 = iVar2;
|
|
|
|
sVar3 = wcslen(L"Profession: ");
|
|
|
|
FUN_00402490(L"Profession: ",sVar3);
|
|
|
|
if ((((-1 < iVar5) && (iVar5 < 7)) &&
|
|
|
|
(pwVar13 = (wchar_t *)(&PTR_u_Custom_0081a1a8)[iVar5], pwVar13 != (wchar_t *)0x0)) &&
|
|
|
|
(*pwVar13 != L'\0')) {
|
|
|
|
sVar3 = wcslen(pwVar13);
|
|
|
|
FUN_00402490(pwVar13,sVar3);
|
|
|
|
}
|
|
|
|
FUN_0046f670(0,0);
|
|
|
|
piVar4 = (int *)FUN_00463c00(0x100002f9);
|
|
|
|
if ((piVar4 != (int *)0x0) && (iVar5 = (**(code **)(*piVar4 + 0x94))(0xc), iVar5 != 0)) {
|
|
|
|
FUN_0046a740(&puStack_1c);
|
|
|
|
if (puStack_1c != PTR_DAT_00818340) {
|
|
|
|
puVar11 = (undefined4 *)(puStack_1c + -0x14);
|
|
|
|
LVar6 = InterlockedDecrement((LONG *)(puStack_1c + -0x10));
|
|
|
|
if ((LVar6 == 0) && (puVar11 != (undefined4 *)0x0)) {
|
|
|
|
(**(code **)*puVar11)(1);
|
|
|
|
}
|
|
|
|
puStack_1c = PTR_DAT_00818340;
|
|
|
|
InterlockedIncrement((LONG *)(PTR_DAT_00818340 + -0x10));
|
|
|
|
}
|
|
|
|
uVar1 = *(uint *)(iVar2 + 0xd8);
|
|
|
|
sVar3 = wcslen(L"Gender: ");
|
|
|
|
FUN_00402490(L"Gender: ",sVar3);
|
|
|
|
if (((uVar1 < 3) && (pwVar13 = (wchar_t *)(&PTR_DAT_0081a1c4)[uVar1], pwVar13 != (wchar_t *)0x0)
|
|
|
|
) && (*pwVar13 != L'\0')) {
|
|
|
|
sVar3 = wcslen(pwVar13);
|
|
|
|
FUN_00402490(pwVar13,sVar3);
|
|
|
|
}
|
|
|
|
FUN_0046f670(0,0);
|
|
|
|
piVar4 = (int *)FUN_00463c00(0x100002f9);
|
|
|
|
if ((piVar4 != (int *)0x0) && (iVar5 = (**(code **)(*piVar4 + 0x94))(0xc), iVar5 != 0)) {
|
|
|
|
FUN_0046a740(&puStack_1c);
|
|
|
|
FUN_0040b220();
|
|
|
|
uVar1 = *(uint *)(iVar2 + 0xd4);
|
|
|
|
sVar3 = wcslen(L"Heritage: ");
|
|
|
|
FUN_00402490(L"Heritage: ",sVar3);
|
|
|
|
if (uVar1 < 5) {
|
|
|
|
FUN_0040b8f0((&PTR_DAT_0081a1d0)[uVar1]);
|
|
|
|
}
|
|
|
|
FUN_0046f670(0,0);
|
|
|
|
piVar4 = (int *)FUN_00463c00(0x100002f9);
|
|
|
|
if ((piVar4 != (int *)0x0) && (iVar5 = (**(code **)(*piVar4 + 0x94))(0xc), iVar5 != 0)) {
|
|
|
|
FUN_0046a740(&puStack_1c);
|
|
|
|
FUN_0040b220();
|
|
|
|
iVar5 = *(int *)(iVar2 + 0x1f8);
|
|
|
|
sVar3 = wcslen(L"Starting Town: ");
|
|
|
|
FUN_00402490(L"Starting Town: ",sVar3);
|
|
|
|
if ((-1 < iVar5) && (iVar5 < 4)) {
|
|
|
|
FUN_0040b8f0((&PTR_u_Holtburg_0081a1e4)[iVar5]);
|
|
|
|
}
|
|
|
|
FUN_0046f670(0,0);
|
|
|
|
piVar4 = (int *)FUN_00463c00(0x100002f9);
|
|
|
|
if ((piVar4 != (int *)0x0) && (iVar5 = (**(code **)(*piVar4 + 0x94))(0xc), iVar5 != 0)) {
|
|
|
|
FUN_0046a740(&puStack_1c);
|
|
|
|
FUN_0040b220();
|
|
|
|
FUN_0040b8f0(L"Attributes");
|
|
|
|
FUN_0046f670(1,0);
|
|
|
|
piVar4 = (int *)FUN_00463c00(0x100000fe);
|
|
|
|
if ((piVar4 != (int *)0x0) && (iVar5 = (**(code **)(*piVar4 + 0x94))(0xc), iVar5 != 0)) {
|
|
|
|
FUN_0046a740(&puStack_1c);
|
|
|
|
FUN_0040b220();
|
|
|
|
iVar10 = 0;
|
|
|
|
iVar5 = iStack_4;
|
|
|
|
do {
|
|
|
|
puStack_18 = PTR_DAT_00818340;
|
|
|
|
InterlockedIncrement((LONG *)(PTR_DAT_00818340 + -0x10));
|
|
|
|
FUN_0040b220();
|
|
|
|
FUN_0040b220();
|
|
|
|
switch(iVar10) {
|
|
|
|
case 0:
|
|
|
|
FUN_0040b8f0(L"Strength");
|
|
|
|
iVar5 = *(int *)(iVar2 + 0x184);
|
|
|
|
break;
|
|
|
|
case 1:
|
|
|
|
FUN_0040b8f0(L"Endurance");
|
|
|
|
iVar5 = *(int *)(iVar2 + 0x188);
|
|
|
|
break;
|
|
|
|
case 2:
|
|
|
|
FUN_0040b8f0(L"Coordination");
|
|
|
|
iVar5 = *(int *)(iVar2 + 0x18c);
|
|
|
|
break;
|
|
|
|
case 3:
|
|
|
|
FUN_0040b8f0(L"Quickness");
|
|
|
|
iVar5 = *(int *)(iVar2 + 400);
|
|
|
|
break;
|
|
|
|
case 4:
|
|
|
|
FUN_0040b8f0(L"Focus");
|
|
|
|
iVar5 = *(int *)(iVar2 + 0x194);
|
|
|
|
break;
|
|
|
|
case 5:
|
|
|
|
FUN_0040b8f0(L"Self");
|
|
|
|
iVar5 = *(int *)(iVar2 + 0x198);
|
|
|
|
break;
|
|
|
|
case 6:
|
|
|
|
FUN_0040b8f0(L"Health");
|
|
|
|
iStack_10 = FUN_005c4990(2);
|
|
|
|
iVar5 = FUN_005df4c4();
|
|
|
|
break;
|
|
|
|
case 7:
|
|
|
|
FUN_0040b8f0(L"Stamina");
|
|
|
|
iVar5 = FUN_005c4990(2);
|
|
|
|
break;
|
|
|
|
case 8:
|
|
|
|
FUN_0040b8f0(L"Mana");
|
|
|
|
iVar5 = FUN_005c4990(6);
|
|
|
|
break;
|
|
|
|
case 9:
|
|
|
|
FUN_0040b8f0(L"Skill Credits");
|
|
|
|
iVar5 = *(int *)(iVar2 + 0x1b8);
|
|
|
|
}
|
|
|
|
FUN_0046f670(2,0);
|
|
|
|
piVar4 = (int *)FUN_00463c00(0x100002fc);
|
|
|
|
if ((piVar4 == (int *)0x0) || (iVar7 = (**(code **)(*piVar4 + 0x94))(0xc), iVar7 == 0)
|
|
|
|
) {
|
|
|
|
LAB_0047bad7:
|
|
|
|
FUN_004011b0();
|
|
|
|
goto LAB_0047bae0;
|
|
|
|
}
|
|
|
|
FUN_0046a740(&puStack_1c);
|
|
|
|
piVar4 = (int *)FUN_00463c00(0x100002fd);
|
|
|
|
if ((piVar4 == (int *)0x0) || (iVar7 = (**(code **)(*piVar4 + 0x94))(0xc), iVar7 == 0)
|
|
|
|
) goto LAB_0047bad7;
|
|
|
|
FUN_0047b520(iVar5);
|
|
|
|
FUN_0046a740(&puStack_18);
|
|
|
|
FUN_004011b0();
|
|
|
|
iVar10 = iVar10 + 1;
|
|
|
|
} while (iVar10 < 10);
|
|
|
|
iStack_4 = *(int *)(iVar2 + 0x248) + 0x38;
|
|
|
|
iStack_10 = 0;
|
|
|
|
do {
|
|
|
|
iVar5 = iStack_10;
|
|
|
|
if (puStack_1c != PTR_DAT_00818340) {
|
|
|
|
puVar11 = (undefined4 *)(puStack_1c + -0x14);
|
|
|
|
LVar6 = InterlockedDecrement((LONG *)(puStack_1c + -0x10));
|
|
|
|
if ((LVar6 == 0) && (puVar11 != (undefined4 *)0x0)) {
|
|
|
|
(**(code **)*puVar11)(1);
|
|
|
|
}
|
|
|
|
puStack_1c = PTR_DAT_00818340;
|
|
|
|
InterlockedIncrement((LONG *)(PTR_DAT_00818340 + -0x10));
|
|
|
|
}
|
|
|
|
switch(iVar5) {
|
|
|
|
case 0:
|
|
|
|
FUN_0040b8f0(L"Specialized Skills");
|
|
|
|
iStack_14 = 3;
|
|
|
|
break;
|
|
|
|
case 1:
|
|
|
|
FUN_0040b8f0(L"Trained Skills");
|
|
|
|
iStack_14 = 2;
|
|
|
|
break;
|
|
|
|
case 2:
|
|
|
|
pwVar13 = L"Useable Untrained Skills";
|
|
|
|
goto LAB_0047bb2d;
|
|
|
|
case 3:
|
|
|
|
pwVar13 = L"Unuseable Untrained Skills";
|
|
|
|
LAB_0047bb2d:
|
|
|
|
FUN_0040b8f0(pwVar13);
|
|
|
|
iStack_14 = 1;
|
|
|
|
}
|
|
|
|
FUN_0046f670(1,0);
|
|
|
|
piVar4 = (int *)FUN_00463c00(0x100000fe);
|
|
|
|
if ((piVar4 == (int *)0x0) || (iVar5 = (**(code **)(*piVar4 + 0x94))(0xc), iVar5 == 0)
|
|
|
|
) {
|
|
|
|
puVar11 = (undefined4 *)(puStack_1c + -0x14);
|
|
|
|
iVar5 = InterlockedDecrement((LONG *)(puStack_1c + -0x10));
|
|
|
|
goto LAB_0047be03;
|
|
|
|
}
|
|
|
|
FUN_0046a740(&puStack_1c);
|
|
|
|
if (puStack_1c != PTR_DAT_00818340) {
|
|
|
|
puVar11 = (undefined4 *)(puStack_1c + -0x14);
|
|
|
|
LVar6 = InterlockedDecrement((LONG *)(puStack_1c + -0x10));
|
|
|
|
if ((LVar6 == 0) && (puVar11 != (undefined4 *)0x0)) {
|
|
|
|
(**(code **)*puVar11)(1);
|
|
|
|
}
|
|
|
|
puStack_1c = PTR_DAT_00818340;
|
|
|
|
InterlockedIncrement((LONG *)(PTR_DAT_00818340 + -0x10));
|
|
|
|
}
|
|
|
|
piVar4 = *(int **)(iStack_8 + 0x1c4);
|
|
|
|
while (piVar4 != (int *)0x0) {
|
|
|
|
puStack_18 = PTR_DAT_00818340;
|
|
|
|
InterlockedIncrement((LONG *)(PTR_DAT_00818340 + -0x10));
|
|
|
|
if (puStack_1c != PTR_DAT_00818340) {
|
|
|
|
puVar11 = (undefined4 *)(puStack_1c + -0x14);
|
|
|
|
LVar6 = InterlockedDecrement((LONG *)(puStack_1c + -0x10));
|
|
|
|
if ((LVar6 == 0) && (puVar11 != (undefined4 *)0x0)) {
|
|
|
|
(**(code **)*puVar11)(1);
|
|
|
|
}
|
|
|
|
puStack_1c = PTR_DAT_00818340;
|
|
|
|
InterlockedIncrement((LONG *)(PTR_DAT_00818340 + -0x10));
|
|
|
|
}
|
|
|
|
if (puStack_18 != PTR_DAT_00818340) {
|
|
|
|
puVar11 = (undefined4 *)(puStack_18 + -0x14);
|
|
|
|
LVar6 = InterlockedDecrement((LONG *)(puStack_18 + -0x10));
|
|
|
|
if ((LVar6 == 0) && (puVar11 != (undefined4 *)0x0)) {
|
|
|
|
(**(code **)*puVar11)(1);
|
|
|
|
}
|
|
|
|
puStack_18 = PTR_DAT_00818340;
|
|
|
|
InterlockedIncrement((LONG *)(PTR_DAT_00818340 + -0x10));
|
|
|
|
}
|
|
|
|
iVar5 = *piVar4;
|
|
|
|
if ((*(uint *)(iStack_4 + 0xc) != 0) && (*(int *)(iStack_4 + 8) != 0)) {
|
|
|
|
for (puVar12 = *(uint **)(*(int *)(iStack_4 + 8) +
|
|
|
|
(*(uint *)(iVar5 + 0x20) % *(uint *)(iStack_4 + 0xc)) * 4
|
|
|
|
); puVar12 != (uint *)0x0;
|
|
|
|
puVar12 = (uint *)puVar12[0x18]) {
|
|
|
|
if (*(uint *)(iVar5 + 0x20) == *puVar12) {
|
|
|
|
puVar12 = puVar12 + 2;
|
|
|
|
goto LAB_0047bc82;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
puVar12 = (uint *)0x0;
|
|
|
|
LAB_0047bc82:
|
|
|
|
iVar2 = FUN_005c4be0(*(undefined4 *)(iVar5 + 0x20));
|
|
|
|
if (iVar2 != iStack_14) goto LAB_0047bd6b;
|
|
|
|
if (iStack_10 < 2) {
|
|
|
|
LAB_0047bcca:
|
|
|
|
FUN_004300a0(&puStack_1c,&DAT_007a0440,iVar5);
|
|
|
|
uVar8 = FUN_005c5b30(*(undefined4 *)(iVar5 + 0x20));
|
|
|
|
FUN_0046f670(2,0);
|
|
|
|
piVar9 = (int *)FUN_00463c00(0x100002fc);
|
|
|
|
if ((piVar9 != (int *)0x0) &&
|
|
|
|
(iVar5 = (**(code **)(*piVar9 + 0x94))(0xc), iVar5 != 0)) {
|
|
|
|
FUN_0046a740(&puStack_1c);
|
|
|
|
piVar9 = (int *)FUN_00463c00(0x100002fd);
|
|
|
|
if ((piVar9 != (int *)0x0) &&
|
|
|
|
(iVar5 = (**(code **)(*piVar9 + 0x94))(0xc), iVar5 != 0)) {
|
|
|
|
FUN_0047b520(uVar8);
|
|
|
|
FUN_0046a740(&puStack_18);
|
|
|
|
goto LAB_0047bd6b;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
puVar11 = (undefined4 *)(puStack_18 + -0x14);
|
|
|
|
LVar6 = InterlockedDecrement((LONG *)(puStack_18 + -0x10));
|
|
|
|
if ((LVar6 == 0) && (puVar11 != (undefined4 *)0x0)) {
|
|
|
|
(**(code **)*puVar11)(1);
|
|
|
|
}
|
|
|
|
puVar11 = (undefined4 *)(puStack_1c + -0x14);
|
|
|
|
iVar5 = InterlockedDecrement((LONG *)(puStack_1c + -0x10));
|
|
|
|
goto LAB_0047be03;
|
|
|
|
}
|
|
|
|
if (iStack_10 == 2) {
|
|
|
|
if ((int)puVar12[8] < 2) goto LAB_0047bcca;
|
|
|
|
}
|
|
|
|
else if ((iStack_10 != 3) || (1 < (int)puVar12[8])) goto LAB_0047bcca;
|
|
|
|
LAB_0047bd6b:
|
|
|
|
piVar4 = (int *)piVar4[1];
|
|
|
|
puVar11 = (undefined4 *)(puStack_18 + -0x14);
|
|
|
|
LVar6 = InterlockedDecrement((LONG *)(puStack_18 + -0x10));
|
|
|
|
if ((LVar6 == 0) && (puVar11 != (undefined4 *)0x0)) {
|
|
|
|
(**(code **)*puVar11)(1);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
iStack_10 = iStack_10 + 1;
|
|
|
|
} while (iStack_10 < 4);
|
|
|
|
goto LAB_0047bdf2;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
LAB_0047bae0:
|
|
|
|
FUN_004011b0();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
LAB_0047bdf2:
|
|
|
|
puVar11 = (undefined4 *)(puStack_1c + -0x14);
|
|
|
|
iVar5 = InterlockedDecrement((LONG *)(puStack_1c + -0x10));
|
|
|
|
LAB_0047be03:
|
|
|
|
if ((iVar5 == 0) && (puVar11 != (undefined4 *)0x0)) {
|
|
|
|
(**(code **)*puVar11)(1);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0047be60 at 0x0047BE60 (size: 331) ---
|
|
|
|
|
|
void __fastcall FUN_0047be60(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
char cVar1;
|
|
|
|
int iVar2;
|
|
|
|
undefined4 uVar3;
|
|
|
|
undefined4 *puVar4;
|
|
|
|
undefined4 *puVar5;
|
|
|
|
undefined4 uVar6;
|
|
|
|
undefined4 local_a8;
|
|
|
|
undefined4 local_a4;
|
|
|
|
undefined4 local_a0;
|
|
|
|
undefined4 local_9c;
|
|
|
|
undefined4 local_98;
|
|
|
|
undefined4 local_94;
|
|
|
|
undefined1 auStack_90 [144];
|
|
|
|
|
|
|
|
cVar1 = FUN_004603a0();
|
|
|
|
if (cVar1 != '\0') {
|
|
|
|
iVar2 = FUN_0055e1e0();
|
|
|
|
if (*(int *)(iVar2 + 0xd4) == 0xc) {
|
|
|
|
puVar5 = &local_9c;
|
|
|
|
puVar4 = &local_a8;
|
|
|
|
local_98 = 0;
|
|
|
|
local_94 = 0;
|
|
|
|
local_a4 = 0xc0733333;
|
|
|
|
local_a0 = 0x3f933333;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
local_a0 = 0;
|
|
|
|
local_a4 = 0;
|
|
|
|
if (*(int *)(iVar2 + 0xd4) == 0xd) {
|
|
|
|
puVar5 = &local_a8;
|
|
|
|
puVar4 = &local_9c;
|
|
|
|
local_98 = 0xc0b66666;
|
|
|
|
local_94 = 0x3fd33333;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
puVar5 = &local_a8;
|
|
|
|
puVar4 = &local_9c;
|
|
|
|
local_98 = 0xc0200000;
|
|
|
|
local_94 = 0x3f733333;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
local_a8 = 0;
|
|
|
|
local_9c = 0;
|
|
|
|
FUN_004ef240(puVar4,puVar5);
|
|
|
|
FUN_005c7110();
|
|
|
|
FUN_0047b590();
|
|
|
|
FUN_0047b1e0();
|
|
|
|
FUN_004ef660();
|
|
|
|
(**(code **)(**(int **)(param_1 + 0x608) + 0x104))();
|
|
|
|
if (*(char *)(param_1 + 0x61c) == '\0') {
|
|
|
|
FUN_0042dc80();
|
|
|
|
uVar6 = 0x10000002;
|
|
|
|
uVar3 = FUN_004016b0("ID_CharGen_NamePrompt",0x10000002);
|
|
|
|
FUN_0042c9c0(uVar3,uVar6);
|
|
|
|
FUN_0046a350(auStack_90);
|
|
|
|
FUN_00467b60();
|
|
|
|
FUN_0042e590();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0047bfb0 at 0x0047BFB0 (size: 397) ---
|
|
|
|
|
|
void __thiscall FUN_0047bfb0(int param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
char cVar1;
|
|
|
|
undefined4 uVar2;
|
|
|
|
int *piVar3;
|
|
|
|
int iVar4;
|
|
|
|
undefined4 uStack_18;
|
|
|
|
undefined4 uStack_14;
|
|
|
|
undefined4 uStack_10;
|
|
|
|
undefined4 uStack_c;
|
|
|
|
undefined4 uStack_8;
|
|
|
|
undefined4 uStack_4;
|
|
|
|
|
|
|
|
*(undefined4 *)(param_1 + 0x600) = param_2;
|
|
|
|
uVar2 = FUN_0055e1d0();
|
|
|
|
*(undefined4 *)(param_1 + 0x5fc) = uVar2;
|
|
|
|
piVar3 = (int *)FUN_00463c00(0x10000400);
|
|
|
|
if (piVar3 == (int *)0x0) {
|
|
|
|
uVar2 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar2 = (**(code **)(*piVar3 + 0x94))(5);
|
|
|
|
}
|
|
|
|
*(undefined4 *)(param_1 + 0x604) = uVar2;
|
|
|
|
piVar3 = (int *)FUN_00463c00(0x10000402);
|
|
|
|
if (piVar3 == (int *)0x0) {
|
|
|
|
iVar4 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar4 = (**(code **)(*piVar3 + 0x94))(0xc);
|
|
|
|
}
|
|
|
|
*(int *)(param_1 + 0x608) = iVar4;
|
|
|
|
*(undefined1 **)(iVar4 + 0x6a0) = &LAB_004664e0;
|
|
|
|
piVar3 = (int *)FUN_00463c00(0x10000404);
|
|
|
|
if (piVar3 == (int *)0x0) {
|
|
|
|
uVar2 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar2 = (**(code **)(*piVar3 + 0x94))(0xc);
|
|
|
|
}
|
|
|
|
*(undefined4 *)(param_1 + 0x60c) = uVar2;
|
|
|
|
piVar3 = (int *)FUN_00463c00(0x10000401);
|
|
|
|
if (piVar3 == (int *)0x0) {
|
|
|
|
uVar2 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar2 = (**(code **)(*piVar3 + 0x94))(0xb);
|
|
|
|
}
|
|
|
|
*(undefined4 *)(param_1 + 0x610) = uVar2;
|
|
|
|
piVar3 = (int *)FUN_00463c00(0x10000406);
|
|
|
|
if (piVar3 == (int *)0x0) {
|
|
|
|
uVar2 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar2 = (**(code **)(*piVar3 + 0x94))(0xd);
|
|
|
|
}
|
|
|
|
*(undefined4 *)(param_1 + 0x614) = uVar2;
|
|
|
|
iVar4 = FUN_005df0f5(0x60);
|
|
|
|
if (iVar4 == 0) {
|
|
|
|
iVar4 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar4 = FUN_004ef310();
|
|
|
|
}
|
|
|
|
*(int *)(param_1 + 0x618) = iVar4;
|
|
|
|
if (iVar4 != 0) {
|
|
|
|
FUN_004ef3f0(*(undefined4 *)(param_1 + 0x614));
|
|
|
|
}
|
|
|
|
uStack_18 = 0;
|
|
|
|
uStack_14 = 0;
|
|
|
|
uStack_10 = 0;
|
|
|
|
uStack_c = 0;
|
|
|
|
uStack_8 = 0xc0200000;
|
|
|
|
uStack_4 = 0x3f733333;
|
|
|
|
FUN_004ef240(&uStack_c,&uStack_18);
|
|
|
|
FUN_004ef220(0x43340000);
|
|
|
|
FUN_004ef290();
|
|
|
|
cVar1 = FUN_004603a0();
|
|
|
|
if (cVar1 != '\0') {
|
|
|
|
FUN_0047be60();
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0047c140 at 0x0047C140 (size: 440) ---
|
|
|
|
|
|
void __fastcall FUN_0047c140(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
undefined4 uVar2;
|
|
|
|
undefined4 uVar3;
|
|
|
|
undefined4 *local_114;
|
|
|
|
int *local_110;
|
|
|
|
undefined4 uStack_10c;
|
|
|
|
undefined1 local_108 [120];
|
|
|
|
undefined1 local_90 [144];
|
|
|
|
|
|
|
|
if (*(int *)(param_1 + 0x620) == 0) {
|
|
|
|
FUN_006823d0();
|
|
|
|
local_114 = (undefined4 *)0x0;
|
|
|
|
local_110 = (int *)0x0;
|
|
|
|
FUN_0042dc80();
|
|
|
|
uVar3 = 0x10000002;
|
|
|
|
uVar2 = FUN_004016b0("ID_CharGen_NameTooLong",0x10000002);
|
|
|
|
FUN_0042c9c0(uVar2,uVar3);
|
|
|
|
FUN_0042a2d0(0x8e);
|
|
|
|
if (local_110 != (int *)0x0) {
|
|
|
|
FUN_00429b10();
|
|
|
|
(**(code **)(*local_110 + 0xac))(3);
|
|
|
|
}
|
|
|
|
uStack_10c = FUN_00429a00();
|
|
|
|
FUN_0042c290(&uStack_10c,&local_114);
|
|
|
|
FUN_0042a2d0(0xac);
|
|
|
|
if (local_110 != (int *)0x0) {
|
|
|
|
FUN_00429b10();
|
|
|
|
(**(code **)(*local_110 + 0x74))(1);
|
|
|
|
}
|
|
|
|
uStack_10c = FUN_00429a00();
|
|
|
|
FUN_0042c290(&uStack_10c,&local_114);
|
|
|
|
FUN_0042a2d0(0xc5);
|
|
|
|
if (local_110 != (int *)0x0) {
|
|
|
|
FUN_00429b10();
|
|
|
|
(**(code **)(*local_110 + 0xc4))(local_90);
|
|
|
|
}
|
|
|
|
uStack_10c = FUN_00429a00();
|
|
|
|
FUN_0042c290(&uStack_10c,&local_114);
|
|
|
|
uVar2 = FUN_00478290(*(undefined4 *)(param_1 + 0x600),local_108);
|
|
|
|
*(undefined4 *)(param_1 + 0x620) = uVar2;
|
|
|
|
FUN_0042e590();
|
|
|
|
if (local_114 != (undefined4 *)0x0) {
|
|
|
|
iVar1 = local_114[1];
|
|
|
|
local_114[1] = iVar1 + -1;
|
|
|
|
if (iVar1 + -1 == 0) {
|
|
|
|
(**(code **)*local_114)(1);
|
|
|
|
}
|
|
|
|
local_114 = (undefined4 *)0x0;
|
|
|
|
}
|
|
|
|
if (local_110 != (int *)0x0) {
|
|
|
|
iVar1 = local_110[1];
|
|
|
|
local_110[1] = iVar1 + -1;
|
|
|
|
if (iVar1 + -1 == 0) {
|
|
|
|
(**(code **)*local_110)(1);
|
|
|
|
}
|
|
|
|
local_110 = (int *)0x0;
|
|
|
|
}
|
|
|
|
FUN_00681f60();
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0047c520 at 0x0047C520 (size: 82) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_0047c520(undefined4 *param_1,byte param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 *puVar1;
|
|
|
|
int *piVar2;
|
|
|
|
|
|
|
|
puVar1 = param_1 + 0x17e;
|
|
|
|
*param_1 = &PTR_FUN_007a0738;
|
|
|
|
*puVar1 = &PTR_FUN_007ccb60;
|
|
|
|
piVar2 = (int *)FUN_0043c680();
|
|
|
|
if (piVar2 != (int *)0x0) {
|
|
|
|
(**(code **)(*piVar2 + 0xc))(puVar1);
|
|
|
|
}
|
|
|
|
*puVar1 = &PTR_FUN_007ccb60;
|
|
|
|
FUN_0043c610();
|
|
|
|
FUN_004726c0();
|
|
|
|
if ((param_2 & 1) != 0) {
|
|
|
|
operator_delete(param_1);
|
|
|
|
}
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0047c580 at 0x0047C580 (size: 19) ---
|
|
|
|
|
|
void FUN_0047c580(void)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_00460270(0x1000003d,&LAB_0047c4c0);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0047c5a0 at 0x0047C5A0 (size: 352) ---
|
|
|
|
|
|
void FUN_0047c5a0(undefined4 param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 uVar1;
|
|
|
|
LONG LVar2;
|
|
|
|
undefined4 *puVar3;
|
|
|
|
char *pcVar4;
|
|
|
|
undefined4 uVar5;
|
|
|
|
undefined *local_128;
|
|
|
|
undefined *local_124 [73];
|
|
|
|
|
|
|
|
FUN_0042dc80();
|
|
|
|
uVar5 = 0x10000002;
|
|
|
|
uVar1 = FUN_004016b0("ID_CharGen_TownHowTo",0x10000002);
|
|
|
|
FUN_0042c9c0(uVar1,uVar5);
|
|
|
|
FUN_0042dc80();
|
|
|
|
switch(param_1) {
|
|
|
|
case 1:
|
|
|
|
pcVar4 = "ID_CharGen_HoltText";
|
|
|
|
break;
|
|
|
|
case 2:
|
|
|
|
pcVar4 = "ID_CharGen_ShoushiText";
|
|
|
|
break;
|
|
|
|
case 3:
|
|
|
|
pcVar4 = "ID_CharGen_YaraqText";
|
|
|
|
break;
|
|
|
|
case 4:
|
|
|
|
pcVar4 = "ID_CharGen_SanamarText";
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
goto switchD_0047c5eb_default;
|
|
|
|
}
|
|
|
|
uVar5 = 0x10000002;
|
|
|
|
uVar1 = FUN_004016b0(pcVar4,0x10000002);
|
|
|
|
FUN_0042c9c0(uVar1,uVar5);
|
|
|
|
switchD_0047c5eb_default:
|
|
|
|
local_128 = PTR_DAT_00818340;
|
|
|
|
InterlockedIncrement((LONG *)(PTR_DAT_00818340 + -0x10));
|
|
|
|
FUN_0042e6b0(&local_128,0);
|
|
|
|
local_124[0] = PTR_DAT_00818340;
|
|
|
|
InterlockedIncrement((LONG *)(PTR_DAT_00818340 + -0x10));
|
|
|
|
FUN_0042e6b0(local_124,0);
|
|
|
|
FUN_004300a0(&local_128,L"\n\n%s\n",local_124[0]);
|
|
|
|
FUN_0046a740(&local_128);
|
|
|
|
puVar3 = (undefined4 *)(local_124[0] + -0x14);
|
|
|
|
LVar2 = InterlockedDecrement((LONG *)(local_124[0] + -0x10));
|
|
|
|
if ((LVar2 == 0) && (puVar3 != (undefined4 *)0x0)) {
|
|
|
|
(**(code **)*puVar3)(1);
|
|
|
|
}
|
|
|
|
puVar3 = (undefined4 *)(local_128 + -0x14);
|
|
|
|
LVar2 = InterlockedDecrement((LONG *)(local_128 + -0x10));
|
|
|
|
if ((LVar2 == 0) && (puVar3 != (undefined4 *)0x0)) {
|
|
|
|
(**(code **)*puVar3)(1);
|
|
|
|
}
|
|
|
|
FUN_0042e590();
|
|
|
|
FUN_0042e590();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0047c710 at 0x0047C710 (size: 233) ---
|
|
|
|
|
|
void __fastcall FUN_0047c710(int *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
int unaff_EDI;
|
|
|
|
undefined4 uVar2;
|
|
|
|
int iVar3;
|
|
|
|
|
|
|
|
(**(code **)(*(int *)param_1[0x181] + 0x9c))(1);
|
|
|
|
(**(code **)(*(int *)param_1[0x182] + 0x9c))(1);
|
|
|
|
(**(code **)(*(int *)param_1[0x183] + 0x9c))(1);
|
|
|
|
(**(code **)(*(int *)param_1[0x184] + 0x9c))(1);
|
|
|
|
iVar3 = unaff_EDI + -1;
|
|
|
|
switch(iVar3) {
|
|
|
|
case 0:
|
|
|
|
(**(code **)(*(int *)param_1[0x182] + 0x9c))(6);
|
|
|
|
iVar1 = *param_1;
|
|
|
|
uVar2 = 0x10000034;
|
|
|
|
break;
|
|
|
|
case 1:
|
|
|
|
(**(code **)(*param_1 + 0x9c))(0x10000037);
|
|
|
|
iVar1 = *(int *)param_1[0x184];
|
|
|
|
uVar2 = 6;
|
|
|
|
break;
|
|
|
|
case 2:
|
|
|
|
(**(code **)(*(int *)param_1[0x183] + 0x9c))(6);
|
|
|
|
iVar1 = *param_1;
|
|
|
|
uVar2 = 0x10000036;
|
|
|
|
break;
|
|
|
|
case 3:
|
|
|
|
(**(code **)(*(int *)param_1[0x181] + 0x9c))(6);
|
|
|
|
iVar1 = *param_1;
|
|
|
|
uVar2 = 0x10000035;
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
goto switchD_0047c761_default;
|
|
|
|
}
|
|
|
|
(**(code **)(iVar1 + 0x9c))(uVar2);
|
|
|
|
switchD_0047c761_default:
|
|
|
|
FUN_0055e1e0(iVar3);
|
|
|
|
FUN_005c4fe0(iVar3);
|
|
|
|
FUN_0047c5a0(unaff_EDI);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0047c810 at 0x0047C810 (size: 31) ---
|
|
|
|
|
|
void FUN_0047c810(void)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
|
|
|
|
iVar1 = FUN_0055e1e0();
|
|
|
|
FUN_0047c710(*(int *)(iVar1 + 0x1f8) + 1);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0047ca80 at 0x0047CA80 (size: 244) ---
|
|
|
|
|
|
void __thiscall FUN_0047ca80(int param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 uVar1;
|
|
|
|
int *piVar2;
|
|
|
|
int iVar3;
|
|
|
|
|
|
|
|
*(undefined4 *)(param_1 + 0x600) = param_2;
|
|
|
|
uVar1 = FUN_0055e1d0();
|
|
|
|
*(undefined4 *)(param_1 + 0x5fc) = uVar1;
|
|
|
|
piVar2 = (int *)FUN_00463c00(0x1000040b);
|
|
|
|
if (piVar2 == (int *)0x0) {
|
|
|
|
uVar1 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar1 = (**(code **)(*piVar2 + 0x94))(1);
|
|
|
|
}
|
|
|
|
*(undefined4 *)(param_1 + 0x604) = uVar1;
|
|
|
|
piVar2 = (int *)FUN_00463c00(0x1000040d);
|
|
|
|
if (piVar2 == (int *)0x0) {
|
|
|
|
uVar1 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar1 = (**(code **)(*piVar2 + 0x94))(1);
|
|
|
|
}
|
|
|
|
*(undefined4 *)(param_1 + 0x608) = uVar1;
|
|
|
|
piVar2 = (int *)FUN_00463c00(0x1000040e);
|
|
|
|
if (piVar2 == (int *)0x0) {
|
|
|
|
uVar1 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar1 = (**(code **)(*piVar2 + 0x94))(1);
|
|
|
|
}
|
|
|
|
*(undefined4 *)(param_1 + 0x60c) = uVar1;
|
|
|
|
piVar2 = (int *)FUN_00463c00(0x1000040f);
|
|
|
|
if (piVar2 == (int *)0x0) {
|
|
|
|
uVar1 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar1 = (**(code **)(*piVar2 + 0x94))(1);
|
|
|
|
}
|
|
|
|
*(undefined4 *)(param_1 + 0x610) = uVar1;
|
|
|
|
piVar2 = (int *)FUN_00463c00(0x10000409);
|
|
|
|
if (piVar2 == (int *)0x0) {
|
|
|
|
uVar1 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar1 = (**(code **)(*piVar2 + 0x94))(0xc);
|
|
|
|
}
|
|
|
|
*(undefined4 *)(param_1 + 0x614) = uVar1;
|
|
|
|
iVar3 = FUN_0055e1e0();
|
|
|
|
FUN_0047c710(*(int *)(iVar3 + 0x1f8) + 1);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0047cb80 at 0x0047CB80 (size: 53) ---
|
|
|
|
|
|
void __fastcall FUN_0047cb80(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int *piVar1;
|
|
|
|
|
|
|
|
FUN_004639a0();
|
|
|
|
piVar1 = (int *)FUN_0043c680();
|
|
|
|
if (param_1 == 0) {
|
|
|
|
param_1 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
param_1 = param_1 + 0x5f8;
|
|
|
|
}
|
|
|
|
(**(code **)(*piVar1 + 4))(0x186b0,param_1);
|
|
|
|
FUN_00465f90(3);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0047cbf0 at 0x0047CBF0 (size: 29) ---
|
|
|
|
|
|
void FUN_0047cbf0(void)
|
|
|
|
|
|
|
|
{
|
|
|
|
char cVar1;
|
|
|
|
|
|
|
|
cVar1 = FUN_004603a0();
|
|
|
|
if (cVar1 != '\0') {
|
|
|
|
FUN_004ef660();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0047cc10 at 0x0047CC10 (size: 213) ---
|
|
|
|
|
|
void __thiscall FUN_0047cc10(int param_1,undefined4 param_2,undefined4 param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
char cVar1;
|
|
|
|
int iVar2;
|
|
|
|
|
|
|
|
FUN_00460760(0x86,(float)(double)CONCAT44(param_3,param_2));
|
|
|
|
iVar2 = FUN_0055e1e0();
|
|
|
|
switch(*(undefined4 *)(param_1 + 0x7d8)) {
|
|
|
|
case 1:
|
|
|
|
FUN_005c4860(param_2,param_3);
|
|
|
|
break;
|
|
|
|
case 3:
|
|
|
|
case 4:
|
|
|
|
case 5:
|
|
|
|
FUN_005c4830(param_2,param_3);
|
|
|
|
break;
|
|
|
|
case 6:
|
|
|
|
*(undefined4 *)(iVar2 + 0x158) = param_2;
|
|
|
|
*(undefined4 *)(iVar2 + 0x15c) = param_3;
|
|
|
|
break;
|
|
|
|
case 7:
|
|
|
|
*(undefined4 *)(iVar2 + 0x160) = param_2;
|
|
|
|
*(undefined4 *)(iVar2 + 0x164) = param_3;
|
|
|
|
break;
|
|
|
|
case 8:
|
|
|
|
*(undefined4 *)(iVar2 + 0x168) = param_2;
|
|
|
|
*(undefined4 *)(iVar2 + 0x16c) = param_3;
|
|
|
|
break;
|
|
|
|
case 9:
|
|
|
|
*(undefined4 *)(iVar2 + 0x170) = param_2;
|
|
|
|
*(undefined4 *)(iVar2 + 0x174) = param_3;
|
|
|
|
}
|
|
|
|
cVar1 = FUN_004603a0();
|
|
|
|
if (cVar1 != '\0') {
|
|
|
|
FUN_004ef660();
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0047cd10 at 0x0047CD10 (size: 276) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void __fastcall FUN_0047cd10(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 uVar1;
|
|
|
|
float10 fVar2;
|
|
|
|
|
|
|
|
if (*(double *)(param_1 + 0x6d8) < _DAT_00795610) {
|
|
|
|
*(undefined4 *)(param_1 + 0x6d8) = 0x33333333;
|
|
|
|
*(undefined4 *)(param_1 + 0x6dc) = 0x3fe33333;
|
|
|
|
uVar1 = DAT_008379ac;
|
|
|
|
*(undefined4 *)(param_1 + 0x6d0) = DAT_008379a8;
|
|
|
|
*(undefined4 *)(param_1 + 0x6d4) = uVar1;
|
|
|
|
}
|
|
|
|
fVar2 = (float10)(double)CONCAT44(DAT_008379ac,DAT_008379a8) -
|
|
|
|
(float10)*(double *)(param_1 + 0x6d0);
|
|
|
|
if ((float10)*(double *)(param_1 + 0x6d8) <= fVar2) {
|
|
|
|
*(undefined1 *)(param_1 + 0x678) = 0;
|
|
|
|
fVar2 = (float10)*(double *)(param_1 + 0x6d8);
|
|
|
|
}
|
|
|
|
fVar2 = fVar2 / (float10)*(double *)(param_1 + 0x6d8);
|
|
|
|
*(float *)(param_1 + 0x694) =
|
|
|
|
(float)(((float10)*(float *)(param_1 + 0x67c) - (float10)*(float *)(param_1 + 0x688)) * fVar2
|
|
|
|
+ (float10)*(float *)(param_1 + 0x688));
|
|
|
|
*(float *)(param_1 + 0x698) =
|
|
|
|
(float)(((float10)*(float *)(param_1 + 0x680) - (float10)*(float *)(param_1 + 0x68c)) * fVar2
|
|
|
|
+ (float10)*(float *)(param_1 + 0x68c));
|
|
|
|
*(float *)(param_1 + 0x69c) =
|
|
|
|
(float)(((float10)*(float *)(param_1 + 0x684) - (float10)*(float *)(param_1 + 0x690)) * fVar2
|
|
|
|
+ (float10)*(float *)(param_1 + 0x690));
|
|
|
|
*(float *)(param_1 + 0x6b8) =
|
|
|
|
(float)(((float10)*(float *)(param_1 + 0x6a0) - (float10)*(float *)(param_1 + 0x6ac)) * fVar2
|
|
|
|
+ (float10)*(float *)(param_1 + 0x6ac));
|
|
|
|
*(float *)(param_1 + 0x6bc) =
|
|
|
|
(float)(((float10)*(float *)(param_1 + 0x6a4) - (float10)*(float *)(param_1 + 0x6b0)) * fVar2
|
|
|
|
+ (float10)*(float *)(param_1 + 0x6b0));
|
|
|
|
*(float *)(param_1 + 0x6c0) =
|
|
|
|
(float)(((float10)*(float *)(param_1 + 0x6a8) - (float10)*(float *)(param_1 + 0x6b4)) * fVar2
|
|
|
|
+ (float10)*(float *)(param_1 + 0x6b4));
|
|
|
|
FUN_004ef240((float *)(param_1 + 0x694),(float *)(param_1 + 0x6b8));
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0047ce30 at 0x0047CE30 (size: 208) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void __fastcall FUN_0047ce30(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
double dVar1;
|
|
|
|
undefined4 uVar2;
|
|
|
|
float10 fVar3;
|
|
|
|
|
|
|
|
uVar2 = DAT_008379ac;
|
|
|
|
if (*(double *)(param_1 + 0x6e0) < _DAT_00795610) {
|
|
|
|
*(undefined4 *)(param_1 + 0x6e0) = DAT_008379a8;
|
|
|
|
*(undefined4 *)(param_1 + 0x6e4) = uVar2;
|
|
|
|
}
|
|
|
|
dVar1 = (double)CONCAT44(DAT_008379ac,DAT_008379a8);
|
|
|
|
fVar3 = (((float10)dVar1 - (float10)*(double *)(param_1 + 0x6e0)) /
|
|
|
|
(float10)*(double *)(param_1 + 0x6e8)) * (float10)_DAT_0079c6b8;
|
|
|
|
if (*(int *)(param_1 + 0x6f4) == 1) {
|
|
|
|
*(float *)(param_1 + 0x6c4) = (float)(fVar3 + (float10)*(float *)(param_1 + 0x6c4));
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*(float *)(param_1 + 0x6c4) = (float)((float10)*(float *)(param_1 + 0x6c4) - fVar3);
|
|
|
|
}
|
|
|
|
if (*(float *)(param_1 + 0x6c4) < DAT_00796344) {
|
|
|
|
*(float *)(param_1 + 0x6c4) = *(float *)(param_1 + 0x6c4) + _DAT_0079cc60;
|
|
|
|
}
|
|
|
|
if (_DAT_0079cc60 < *(float *)(param_1 + 0x6c4)) {
|
|
|
|
*(float *)(param_1 + 0x6c4) = *(float *)(param_1 + 0x6c4) - _DAT_0079cc60;
|
|
|
|
}
|
|
|
|
*(double *)(param_1 + 0x6e0) = dVar1;
|
|
|
|
FUN_004ef220(*(undefined4 *)(param_1 + 0x6c4));
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0047cf00 at 0x0047CF00 (size: 118) ---
|
|
|
|
|
|
void __thiscall FUN_0047cf00(int param_1,int param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
if ((*(char *)(param_1 + 0x679) != '\0') && (param_2 == *(int *)(param_1 + 0x6f4))) {
|
|
|
|
*(undefined1 *)(param_1 + 0x679) = 0;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
if (param_2 == 1) {
|
|
|
|
(**(code **)(**(int **)(param_1 + 0x620) + 0x9c))(1);
|
|
|
|
}
|
|
|
|
else if (param_2 == 2) {
|
|
|
|
(**(code **)(**(int **)(param_1 + 0x61c) + 0x9c))(1);
|
|
|
|
}
|
|
|
|
*(int *)(param_1 + 0x6f4) = param_2;
|
|
|
|
*(undefined4 *)(param_1 + 0x6e0) = 0;
|
|
|
|
*(undefined4 *)(param_1 + 0x6e4) = 0xbff00000;
|
|
|
|
*(undefined1 *)(param_1 + 0x679) = 1;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0047cf80 at 0x0047CF80 (size: 45) ---
|
|
|
|
|
|
float10 FUN_0047cf80(double param_1,double param_2,double param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
if (param_3 < param_1) {
|
|
|
|
return (float10)param_3;
|
|
|
|
}
|
|
|
|
if (param_1 < param_2) {
|
|
|
|
return (float10)param_2;
|
|
|
|
}
|
|
|
|
return (float10)param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0047cfb0 at 0x0047CFB0 (size: 128) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_0047cfb0(undefined4 *param_1,byte param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 *puVar1;
|
|
|
|
int iVar2;
|
|
|
|
|
|
|
|
if ((param_2 & 2) == 0) {
|
|
|
|
*param_1 = &PTR_FUN_007a0ad4;
|
|
|
|
FUN_005aca00();
|
|
|
|
FUN_005aca00();
|
|
|
|
if ((param_2 & 1) != 0) {
|
|
|
|
operator_delete(param_1);
|
|
|
|
}
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
iVar2 = param_1[-1];
|
|
|
|
puVar1 = param_1 + iVar2 * 0x19;
|
|
|
|
if (-1 < iVar2 + -1) {
|
|
|
|
do {
|
|
|
|
puVar1 = puVar1 + -0x19;
|
|
|
|
*puVar1 = &PTR_FUN_007a0ad4;
|
|
|
|
FUN_005aca00();
|
|
|
|
FUN_005aca00();
|
|
|
|
iVar2 = iVar2 + -1;
|
|
|
|
} while (iVar2 != 0);
|
|
|
|
}
|
|
|
|
if ((param_2 & 1) != 0) {
|
|
|
|
operator_delete__(param_1 + -1);
|
|
|
|
}
|
|
|
|
return param_1 + -1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0047d030 at 0x0047D030 (size: 19) ---
|
|
|
|
|
|
bool __fastcall FUN_0047d030(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
return (*(uint *)(param_1 + 4) & 0x80000000) == 0x80000000;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0047d050 at 0x0047D050 (size: 29) ---
|
|
|
|
|
|
void FUN_0047d050(undefined4 param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 uVar1;
|
|
|
|
|
|
|
|
uVar1 = FUN_004220b0(param_1,0x18);
|
|
|
|
FUN_00415430(uVar1);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0047d070 at 0x0047D070 (size: 381) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_0047d070(undefined4 *param_1,undefined4 param_2,undefined4 param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 *puVar1;
|
|
|
|
int iVar2;
|
|
|
|
|
|
|
|
FUN_00472670(param_2,param_3);
|
|
|
|
param_1[0x17e] = &PTR_FUN_007ccb60;
|
|
|
|
*param_1 = &PTR_FUN_007a0d88;
|
|
|
|
param_1[0x17e] = &PTR_FUN_007a0ae0;
|
|
|
|
param_1[0x17f] = 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[0x192] = 0;
|
|
|
|
param_1[0x195] = 0;
|
|
|
|
param_1[0x196] = 0;
|
|
|
|
param_1[0x197] = 0;
|
|
|
|
param_1[0x198] = 0;
|
|
|
|
param_1[0x19b] = 0xffffffff;
|
|
|
|
param_1[0x19d] = 0xfffffc19;
|
|
|
|
*(undefined1 *)(param_1 + 0x19e) = 0;
|
|
|
|
*(undefined1 *)((int)param_1 + 0x679) = 0;
|
|
|
|
param_1[0x19f] = 0;
|
|
|
|
param_1[0x1a0] = 0;
|
|
|
|
param_1[0x1a1] = 0;
|
|
|
|
param_1[0x1a5] = 0;
|
|
|
|
param_1[0x1a6] = 0;
|
|
|
|
param_1[0x1a7] = 0;
|
|
|
|
param_1[0x1a8] = 0;
|
|
|
|
param_1[0x1a9] = 0;
|
|
|
|
param_1[0x1aa] = 0;
|
|
|
|
param_1[0x1ae] = 0;
|
|
|
|
param_1[0x1af] = 0;
|
|
|
|
param_1[0x1b0] = 0;
|
|
|
|
param_1[0x1b1] = 0;
|
|
|
|
param_1[0x1b4] = 0;
|
|
|
|
param_1[0x1b5] = 0;
|
|
|
|
param_1[0x1b6] = 0;
|
|
|
|
param_1[0x1b7] = 0;
|
|
|
|
param_1[0x1ba] = 0;
|
|
|
|
param_1[0x1bb] = 0x40080000;
|
|
|
|
param_1[0x1bd] = 0;
|
|
|
|
puVar1 = param_1 + 0x1c0;
|
|
|
|
iVar2 = 9;
|
|
|
|
do {
|
|
|
|
*puVar1 = 0;
|
|
|
|
puVar1[1] = 0;
|
|
|
|
puVar1[2] = 0;
|
|
|
|
puVar1[3] = 0;
|
|
|
|
puVar1[4] = 0;
|
|
|
|
puVar1[5] = 0;
|
|
|
|
puVar1 = puVar1 + 6;
|
|
|
|
iVar2 = iVar2 + -1;
|
|
|
|
} while (iVar2 != 0);
|
|
|
|
param_1[0x1f6] = 1;
|
|
|
|
puVar1 = param_1 + 0x1f7;
|
|
|
|
iVar2 = 9;
|
|
|
|
do {
|
|
|
|
*puVar1 = 0;
|
|
|
|
puVar1[1] = 0;
|
|
|
|
puVar1[2] = 0;
|
|
|
|
puVar1[3] = 0;
|
|
|
|
puVar1[4] = 0;
|
|
|
|
puVar1[5] = 0;
|
|
|
|
puVar1[6] = 0;
|
|
|
|
puVar1 = puVar1 + 7;
|
|
|
|
iVar2 = iVar2 + -1;
|
|
|
|
} while (iVar2 != 0);
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0047d1f0 at 0x0047D1F0 (size: 82) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_0047d1f0(undefined4 *param_1,byte param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 *puVar1;
|
|
|
|
int *piVar2;
|
|
|
|
|
|
|
|
puVar1 = param_1 + 0x17e;
|
|
|
|
*param_1 = &PTR_FUN_007a0d88;
|
|
|
|
*puVar1 = &PTR_FUN_007a0ae0;
|
|
|
|
piVar2 = (int *)FUN_0043c680();
|
|
|
|
if (piVar2 != (int *)0x0) {
|
|
|
|
(**(code **)(*piVar2 + 0xc))(puVar1);
|
|
|
|
}
|
|
|
|
*puVar1 = &PTR_FUN_007ccb60;
|
|
|
|
FUN_0043c610();
|
|
|
|
FUN_004726c0();
|
|
|
|
if ((param_2 & 1) != 0) {
|
|
|
|
operator_delete(param_1);
|
|
|
|
}
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0047d2b0 at 0x0047D2B0 (size: 325) ---
|
|
|
|
|
|
void __fastcall FUN_0047d2b0(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
|
|
|
|
if (*(char *)(param_1 + 0x67a) == '\0') {
|
|
|
|
*(undefined4 *)(param_1 + 0x6ac) = *(undefined4 *)(param_1 + 0x6b8);
|
|
|
|
*(undefined4 *)(param_1 + 0x6b0) = *(undefined4 *)(param_1 + 0x6bc);
|
|
|
|
*(undefined4 *)(param_1 + 0x6b4) = *(undefined4 *)(param_1 + 0x6c0);
|
|
|
|
*(undefined4 *)(param_1 + 0x688) = *(undefined4 *)(param_1 + 0x694);
|
|
|
|
*(undefined4 *)(param_1 + 0x68c) = *(undefined4 *)(param_1 + 0x698);
|
|
|
|
*(undefined4 *)(param_1 + 0x690) = *(undefined4 *)(param_1 + 0x69c);
|
|
|
|
iVar1 = FUN_0055e1e0();
|
|
|
|
iVar1 = *(int *)(iVar1 + 0xd4);
|
|
|
|
if (iVar1 == 0xc) {
|
|
|
|
*(undefined4 *)(param_1 + 0x680) = 0xbfeccccd;
|
|
|
|
*(undefined4 *)(param_1 + 0x684) = 0x3feccccd;
|
|
|
|
}
|
|
|
|
else if (iVar1 == 0xd) {
|
|
|
|
*(undefined4 *)(param_1 + 0x680) = 0xc0433333;
|
|
|
|
*(undefined4 *)(param_1 + 0x684) = 0x40300000;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*(undefined4 *)(param_1 + 0x684) = 0x3fd33333;
|
|
|
|
if (iVar1 == 7) {
|
|
|
|
*(undefined4 *)(param_1 + 0x680) = 0xbf59999a;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*(undefined4 *)(param_1 + 0x680) = 0xbf0ccccd;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
*(undefined4 *)(param_1 + 0x67c) = 0;
|
|
|
|
*(undefined4 *)(param_1 + 0x6a0) = 0;
|
|
|
|
*(undefined4 *)(param_1 + 0x6a4) = 0;
|
|
|
|
*(undefined4 *)(param_1 + 0x6a8) = 0;
|
|
|
|
*(undefined1 *)(param_1 + 0x678) = 1;
|
|
|
|
*(undefined4 *)(param_1 + 0x6d8) = 0x9999999a;
|
|
|
|
*(undefined4 *)(param_1 + 0x6dc) = 0xbfb99999;
|
|
|
|
(**(code **)(**(int **)(param_1 + 0x614) + 0x9c))(6);
|
|
|
|
(**(code **)(**(int **)(param_1 + 0x618) + 0x9c))(1);
|
|
|
|
FUN_004ef2d0();
|
|
|
|
*(undefined1 *)(param_1 + 0x67a) = 1;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
(**(code **)(**(int **)(param_1 + 0x614) + 0x9c))(6);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0047d400 at 0x0047D400 (size: 305) ---
|
|
|
|
|
|
void __fastcall FUN_0047d400(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
|
|
|
|
if (*(char *)(param_1 + 0x67a) != '\0') {
|
|
|
|
*(undefined4 *)(param_1 + 0x6ac) = *(undefined4 *)(param_1 + 0x6b8);
|
|
|
|
*(undefined4 *)(param_1 + 0x6b0) = *(undefined4 *)(param_1 + 0x6bc);
|
|
|
|
*(undefined4 *)(param_1 + 0x6b4) = *(undefined4 *)(param_1 + 0x6c0);
|
|
|
|
*(undefined4 *)(param_1 + 0x688) = *(undefined4 *)(param_1 + 0x694);
|
|
|
|
*(undefined4 *)(param_1 + 0x68c) = *(undefined4 *)(param_1 + 0x698);
|
|
|
|
*(undefined4 *)(param_1 + 0x690) = *(undefined4 *)(param_1 + 0x69c);
|
|
|
|
iVar1 = FUN_0055e1e0();
|
|
|
|
if (*(int *)(iVar1 + 0xd4) == 0xc) {
|
|
|
|
*(undefined4 *)(param_1 + 0x680) = 0xc0733333;
|
|
|
|
*(undefined4 *)(param_1 + 0x684) = 0x3f933333;
|
|
|
|
}
|
|
|
|
else if (*(int *)(iVar1 + 0xd4) == 0xd) {
|
|
|
|
*(undefined4 *)(param_1 + 0x680) = 0xc0b66666;
|
|
|
|
*(undefined4 *)(param_1 + 0x684) = 0x3fd33333;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*(undefined4 *)(param_1 + 0x680) = 0xc0200000;
|
|
|
|
*(undefined4 *)(param_1 + 0x684) = 0x3f733333;
|
|
|
|
}
|
|
|
|
*(undefined4 *)(param_1 + 0x67c) = 0;
|
|
|
|
*(undefined4 *)(param_1 + 0x6a0) = 0;
|
|
|
|
*(undefined4 *)(param_1 + 0x6a4) = 0;
|
|
|
|
*(undefined4 *)(param_1 + 0x6a8) = 0;
|
|
|
|
*(undefined1 *)(param_1 + 0x678) = 1;
|
|
|
|
*(undefined4 *)(param_1 + 0x6d8) = 0x9999999a;
|
|
|
|
*(undefined4 *)(param_1 + 0x6dc) = 0xbfb99999;
|
|
|
|
(**(code **)(**(int **)(param_1 + 0x614) + 0x9c))(1);
|
|
|
|
(**(code **)(**(int **)(param_1 + 0x618) + 0x9c))(6);
|
|
|
|
FUN_004ef290();
|
|
|
|
*(undefined1 *)(param_1 + 0x67a) = 0;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
(**(code **)(**(int **)(param_1 + 0x618) + 0x9c))(6);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0047d540 at 0x0047D540 (size: 64) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_0047d540(undefined4 *param_1,byte param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
*param_1 = &PTR_FUN_007a0ec4;
|
|
|
|
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_0047d580 at 0x0047D580 (size: 32) ---
|
|
|
|
|
|
void __fastcall FUN_0047d580(int *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
if (((param_1[1] & 0x80000000U) == 0x80000000) && (*param_1 != 0)) {
|
|
|
|
operator_delete__((void *)(*param_1 + -4));
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0047d5a0 at 0x0047D5A0 (size: 64) ---
|
|
|
|
|
|
void __fastcall FUN_0047d5a0(int *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
undefined4 *puVar2;
|
|
|
|
int iVar3;
|
|
|
|
|
|
|
|
if (((param_1[1] & 0x80000000U) == 0x80000000) && (iVar1 = *param_1, iVar1 != 0)) {
|
|
|
|
iVar3 = *(int *)(iVar1 + -4);
|
|
|
|
puVar2 = (undefined4 *)(iVar3 * 0x10 + iVar1);
|
|
|
|
if (-1 < iVar3 + -1) {
|
|
|
|
do {
|
|
|
|
puVar2 = puVar2 + -4;
|
|
|
|
iVar3 = iVar3 + -1;
|
|
|
|
*puVar2 = &PTR_FUN_007a0acc;
|
|
|
|
} while (iVar3 != 0);
|
|
|
|
}
|
|
|
|
operator_delete__((void *)(iVar1 + -4));
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0047d5f0 at 0x0047D5F0 (size: 78) ---
|
|
|
|
|
|
void __fastcall FUN_0047d5f0(int *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
undefined4 *puVar2;
|
|
|
|
int iVar3;
|
|
|
|
|
|
|
|
if (((param_1[1] & 0x80000000U) == 0x80000000) && (iVar1 = *param_1, iVar1 != 0)) {
|
|
|
|
iVar3 = *(int *)(iVar1 + -4);
|
|
|
|
puVar2 = (undefined4 *)(iVar3 * 0x3c + iVar1);
|
|
|
|
if (-1 < iVar3 + -1) {
|
|
|
|
do {
|
|
|
|
puVar2 = puVar2 + -0xf;
|
|
|
|
*puVar2 = &PTR_FUN_007a0ad0;
|
|
|
|
FUN_005aca00();
|
|
|
|
iVar3 = iVar3 + -1;
|
|
|
|
} while (iVar3 != 0);
|
|
|
|
}
|
|
|
|
operator_delete__((void *)(iVar1 + -4));
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0047d650 at 0x0047D650 (size: 86) ---
|
|
|
|
|
|
void __fastcall FUN_0047d650(int *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
undefined4 *puVar2;
|
|
|
|
int iVar3;
|
|
|
|
|
|
|
|
if (((param_1[1] & 0x80000000U) == 0x80000000) && (iVar1 = *param_1, iVar1 != 0)) {
|
|
|
|
iVar3 = *(int *)(iVar1 + -4);
|
|
|
|
puVar2 = (undefined4 *)(iVar3 * 100 + iVar1);
|
|
|
|
if (-1 < iVar3 + -1) {
|
|
|
|
do {
|
|
|
|
puVar2 = puVar2 + -0x19;
|
|
|
|
*puVar2 = &PTR_FUN_007a0ad4;
|
|
|
|
FUN_005aca00();
|
|
|
|
FUN_005aca00();
|
|
|
|
iVar3 = iVar3 + -1;
|
|
|
|
} while (iVar3 != 0);
|
|
|
|
}
|
|
|
|
operator_delete__((void *)(iVar1 + -4));
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0047d6b0 at 0x0047D6B0 (size: 78) ---
|
|
|
|
|
|
void __fastcall FUN_0047d6b0(int *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
undefined4 *puVar2;
|
|
|
|
int iVar3;
|
|
|
|
|
|
|
|
if (((param_1[1] & 0x80000000U) == 0x80000000) && (iVar1 = *param_1, iVar1 != 0)) {
|
|
|
|
iVar3 = *(int *)(iVar1 + -4);
|
|
|
|
puVar2 = (undefined4 *)(iVar3 * 0x34 + iVar1);
|
|
|
|
if (-1 < iVar3 + -1) {
|
|
|
|
do {
|
|
|
|
puVar2 = puVar2 + -0xd;
|
|
|
|
*puVar2 = &PTR_LAB_007a0ad8;
|
|
|
|
FUN_005aca00();
|
|
|
|
iVar3 = iVar3 + -1;
|
|
|
|
} while (iVar3 != 0);
|
|
|
|
}
|
|
|
|
operator_delete__((void *)(iVar1 + -4));
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0047d710 at 0x0047D710 (size: 179) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_0047d710(undefined4 *param_1,byte param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
int *piVar1;
|
|
|
|
LONG LVar2;
|
|
|
|
undefined4 *puVar3;
|
|
|
|
undefined4 *puVar4;
|
|
|
|
int local_4;
|
|
|
|
|
|
|
|
if ((param_2 & 2) == 0) {
|
|
|
|
puVar4 = (undefined4 *)(param_1[1] + -0x14);
|
|
|
|
*param_1 = &PTR_FUN_007a0ec0;
|
|
|
|
LVar2 = InterlockedDecrement((LONG *)(param_1[1] + -0x10));
|
|
|
|
if ((LVar2 == 0) && (puVar4 != (undefined4 *)0x0)) {
|
|
|
|
(**(code **)*puVar4)(1);
|
|
|
|
}
|
|
|
|
if ((param_2 & 1) != 0) {
|
|
|
|
operator_delete(param_1);
|
|
|
|
}
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
local_4 = param_1[-1];
|
|
|
|
puVar4 = param_1 + local_4 * 4;
|
|
|
|
if (-1 < local_4 + -1) {
|
|
|
|
do {
|
|
|
|
piVar1 = puVar4 + -3;
|
|
|
|
puVar4 = puVar4 + -4;
|
|
|
|
puVar3 = (undefined4 *)(*piVar1 + -0x14);
|
|
|
|
*puVar4 = &PTR_FUN_007a0ec0;
|
|
|
|
LVar2 = InterlockedDecrement((LONG *)(*piVar1 + -0x10));
|
|
|
|
if ((LVar2 == 0) && (puVar3 != (undefined4 *)0x0)) {
|
|
|
|
(**(code **)*puVar3)(1);
|
|
|
|
}
|
|
|
|
local_4 = local_4 + -1;
|
|
|
|
} while (local_4 != 0);
|
|
|
|
}
|
|
|
|
if ((param_2 & 1) != 0) {
|
|
|
|
operator_delete__(param_1 + -1);
|
|
|
|
}
|
|
|
|
return param_1 + -1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0047d7d0 at 0x0047D7D0 (size: 99) ---
|
|
|
|
|
|
void __fastcall FUN_0047d7d0(undefined4 *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
LONG LVar1;
|
|
|
|
undefined4 *puVar2;
|
|
|
|
|
|
|
|
*param_1 = &PTR_LAB_007a0ec8;
|
|
|
|
if ((param_1[0xe] & 0x80000000) == 0x80000000) {
|
|
|
|
operator_delete__((void *)param_1[0xd]);
|
|
|
|
}
|
|
|
|
if ((param_1[0xb] & 0x80000000) == 0x80000000) {
|
|
|
|
operator_delete__((void *)param_1[10]);
|
|
|
|
}
|
|
|
|
puVar2 = (undefined4 *)(param_1[1] + -0x14);
|
|
|
|
LVar1 = InterlockedDecrement((LONG *)(param_1[1] + -0x10));
|
|
|
|
if ((LVar1 == 0) && (puVar2 != (undefined4 *)0x0)) {
|
|
|
|
(**(code **)*puVar2)(1);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0047d840 at 0x0047D840 (size: 19) ---
|
|
|
|
|
|
void FUN_0047d840(void)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_00460270(0x1000003c,&LAB_0047d250);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0047d860 at 0x0047D860 (size: 335) ---
|
|
|
|
|
|
void __thiscall FUN_0047d860(int param_1,int param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
undefined4 uVar2;
|
|
|
|
|
|
|
|
*(int *)(param_1 + 0x6f8) = param_2;
|
|
|
|
(**(code **)(**(int **)(param_1 + 0x650) + 0x18))(0);
|
|
|
|
(**(code **)(**(int **)(param_1 + 0x64c) + 0x18))(0);
|
|
|
|
if (param_2 == 1) {
|
|
|
|
(**(code **)(**(int **)(param_1 + 0x60c) + 0x9c))(0x10000017);
|
|
|
|
(**(code **)(**(int **)(param_1 + 0x610) + 0x9c))(0x10000016);
|
|
|
|
iVar1 = FUN_0055e1e0();
|
|
|
|
*(undefined4 *)(param_1 + 0x674) = *(undefined4 *)(iVar1 + 0xf4);
|
|
|
|
uVar2 = 0xffffffff;
|
|
|
|
FUN_0055e1e0(0xffffffff);
|
|
|
|
FUN_005c6330(uVar2);
|
|
|
|
(**(code **)(**(int **)(param_1 + 0x64c) + 0x18))(1);
|
|
|
|
FUN_0047d2b0();
|
|
|
|
}
|
|
|
|
else if (param_2 == 2) {
|
|
|
|
*(undefined4 *)(param_1 + 0x6ac) = *(undefined4 *)(param_1 + 0x6b8);
|
|
|
|
*(undefined4 *)(param_1 + 0x6b0) = *(undefined4 *)(param_1 + 0x6bc);
|
|
|
|
*(undefined4 *)(param_1 + 0x6b4) = *(undefined4 *)(param_1 + 0x6c0);
|
|
|
|
*(undefined4 *)(param_1 + 0x688) = *(undefined4 *)(param_1 + 0x694);
|
|
|
|
*(undefined4 *)(param_1 + 0x68c) = *(undefined4 *)(param_1 + 0x698);
|
|
|
|
*(undefined4 *)(param_1 + 0x690) = *(undefined4 *)(param_1 + 0x69c);
|
|
|
|
(**(code **)(**(int **)(param_1 + 0x60c) + 0x9c))(0x10000016);
|
|
|
|
(**(code **)(**(int **)(param_1 + 0x610) + 0x9c))(0x10000017);
|
|
|
|
iVar1 = *(int *)(param_1 + 0x674);
|
|
|
|
if ((-2 < iVar1) && (iVar1 < *(int *)(param_1 + 0x778))) {
|
|
|
|
FUN_0055e1e0(iVar1);
|
|
|
|
FUN_005c6330(iVar1);
|
|
|
|
}
|
|
|
|
(**(code **)(**(int **)(param_1 + 0x650) + 0x18))(1);
|
|
|
|
FUN_0047d400();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0047d9b0 at 0x0047D9B0 (size: 231) ---
|
|
|
|
|
|
void * __thiscall FUN_0047d9b0(void *param_1,byte param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
LONG LVar1;
|
|
|
|
undefined4 *puVar2;
|
|
|
|
undefined4 *puVar3;
|
|
|
|
uint *puVar4;
|
|
|
|
int local_8;
|
|
|
|
|
|
|
|
if ((param_2 & 2) == 0) {
|
|
|
|
FUN_0047d7d0();
|
|
|
|
if ((param_2 & 1) != 0) {
|
|
|
|
operator_delete(param_1);
|
|
|
|
}
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
local_8 = *(int *)((int)param_1 + -4);
|
|
|
|
puVar2 = (undefined4 *)(local_8 * 0x40 + (int)param_1);
|
|
|
|
if (-1 < local_8 + -1) {
|
|
|
|
puVar4 = puVar2 + 0xb;
|
|
|
|
do {
|
|
|
|
puVar2 = puVar2 + -0x10;
|
|
|
|
*puVar2 = &PTR_LAB_007a0ec8;
|
|
|
|
if ((puVar4[-0xd] & 0x80000000) == 0x80000000) {
|
|
|
|
operator_delete__((void *)puVar4[-0xe]);
|
|
|
|
}
|
|
|
|
if ((puVar4[-0x10] & 0x80000000) == 0x80000000) {
|
|
|
|
operator_delete__((void *)puVar4[-0x11]);
|
|
|
|
}
|
|
|
|
puVar3 = (undefined4 *)(puVar4[-0x1a] - 0x14);
|
|
|
|
LVar1 = InterlockedDecrement((LONG *)(puVar4[-0x1a] - 0x10));
|
|
|
|
if ((LVar1 == 0) && (puVar3 != (undefined4 *)0x0)) {
|
|
|
|
(**(code **)*puVar3)(1);
|
|
|
|
}
|
|
|
|
local_8 = local_8 + -1;
|
|
|
|
puVar4 = puVar4 + -0x10;
|
|
|
|
} while (local_8 != 0);
|
|
|
|
}
|
|
|
|
if ((param_2 & 1) != 0) {
|
|
|
|
operator_delete__((void *)((int)param_1 + -4));
|
|
|
|
}
|
|
|
|
return (void *)((int)param_1 + -4);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0047daa0 at 0x0047DAA0 (size: 338) ---
|
|
|
|
|
|
void __fastcall FUN_0047daa0(undefined4 *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
LONG LVar1;
|
|
|
|
undefined4 *puVar2;
|
|
|
|
|
|
|
|
*param_1 = &PTR_LAB_007a0ecc;
|
|
|
|
if ((param_1[0x35] & 0x80000000) == 0x80000000) {
|
|
|
|
operator_delete__((void *)param_1[0x34]);
|
|
|
|
}
|
|
|
|
if (((param_1[0x32] & 0x80000000) == 0x80000000) && (param_1[0x31] != 0)) {
|
|
|
|
FUN_0047d710(3);
|
|
|
|
}
|
|
|
|
if (((param_1[0x2f] & 0x80000000) == 0x80000000) && (param_1[0x2e] != 0)) {
|
|
|
|
FUN_0047d710(3);
|
|
|
|
}
|
|
|
|
if (((param_1[0x2c] & 0x80000000) == 0x80000000) && (param_1[0x2b] != 0)) {
|
|
|
|
FUN_0047d710(3);
|
|
|
|
}
|
|
|
|
if (((param_1[0x29] & 0x80000000) == 0x80000000) && (param_1[0x28] != 0)) {
|
|
|
|
FUN_0047d710(3);
|
|
|
|
}
|
|
|
|
FUN_0047d6b0();
|
|
|
|
FUN_0047d6b0();
|
|
|
|
FUN_0047d650();
|
|
|
|
if (((param_1[0x1d] & 0x80000000) == 0x80000000) && (param_1[0x1c] != 0)) {
|
|
|
|
operator_delete__((void *)(param_1[0x1c] + -4));
|
|
|
|
}
|
|
|
|
FUN_0047d5f0();
|
|
|
|
if (((param_1[0x17] & 0x80000000) == 0x80000000) && (param_1[0x16] != 0)) {
|
|
|
|
operator_delete__((void *)(param_1[0x16] + -4));
|
|
|
|
}
|
|
|
|
FUN_005aca00();
|
|
|
|
puVar2 = (undefined4 *)(param_1[1] + -0x14);
|
|
|
|
LVar1 = InterlockedDecrement((LONG *)(param_1[1] + -0x10));
|
|
|
|
if ((LVar1 == 0) && (puVar2 != (undefined4 *)0x0)) {
|
|
|
|
(**(code **)*puVar2)(1);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0047dc00 at 0x0047DC00 (size: 565) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void __thiscall FUN_0047dc00(int param_1,int param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 uVar1;
|
|
|
|
int *piVar2;
|
|
|
|
int *piVar3;
|
|
|
|
int *piVar4;
|
|
|
|
int iVar5;
|
|
|
|
int *piVar6;
|
|
|
|
int local_4c;
|
|
|
|
undefined4 local_48;
|
|
|
|
undefined4 local_44;
|
|
|
|
int iStack_40;
|
|
|
|
int iStack_3c;
|
|
|
|
int *piStack_38;
|
|
|
|
int local_34;
|
|
|
|
float fStack_20;
|
|
|
|
float fStack_1c;
|
|
|
|
float fStack_18;
|
|
|
|
undefined4 uStack_14;
|
|
|
|
undefined4 uStack_10;
|
|
|
|
undefined4 uStack_c;
|
|
|
|
undefined4 uStack_8;
|
|
|
|
undefined4 uStack_4;
|
|
|
|
|
|
|
|
local_4c = 0;
|
|
|
|
piVar6 = (int *)(param_1 + 0x7f0);
|
|
|
|
local_34 = param_1;
|
|
|
|
do {
|
|
|
|
FUN_00415640(&local_48,0x1000000d,7);
|
|
|
|
FUN_00415640(&local_44,0x1000000f,7);
|
|
|
|
(**(code **)(*(int *)piVar6[-2] + 0x18))(1);
|
|
|
|
uVar1 = FUN_004220b0(local_48,0xc);
|
|
|
|
piVar2 = (int *)FUN_00415430(uVar1);
|
|
|
|
uVar1 = FUN_004220b0(local_44,0xc);
|
|
|
|
piVar3 = (int *)FUN_00415430(uVar1);
|
|
|
|
piStack_38 = piVar3;
|
|
|
|
if (piVar2 != (int *)0x0) {
|
|
|
|
fStack_20 = (float)piVar6[-5];
|
|
|
|
uStack_10 = 0;
|
|
|
|
uStack_c = 0;
|
|
|
|
uStack_8 = 0;
|
|
|
|
uStack_4 = 0x3f800000;
|
|
|
|
if (piVar6[-5] < 0) {
|
|
|
|
fStack_20 = fStack_20 + _DAT_0079920c;
|
|
|
|
}
|
|
|
|
fStack_20 = fStack_20 * _DAT_00799208;
|
|
|
|
fStack_1c = (float)piVar6[-4];
|
|
|
|
if (piVar6[-4] < 0) {
|
|
|
|
fStack_1c = fStack_1c + _DAT_0079920c;
|
|
|
|
}
|
|
|
|
fStack_1c = fStack_1c * _DAT_00799208;
|
|
|
|
fStack_18 = (float)piVar6[-3];
|
|
|
|
if (piVar6[-3] < 0) {
|
|
|
|
fStack_18 = fStack_18 + _DAT_0079920c;
|
|
|
|
}
|
|
|
|
fStack_18 = fStack_18 * _DAT_00799208;
|
|
|
|
uStack_14 = 0x3f800000;
|
|
|
|
if (*piVar6 == 0) {
|
|
|
|
piVar4 = (int *)(**(code **)(*DAT_00870340 + 0xc))();
|
|
|
|
if (piVar4 != (int *)0x0) {
|
|
|
|
iStack_3c = piVar2[0x28];
|
|
|
|
iStack_40 = piVar2[0x29];
|
|
|
|
iVar5 = *piVar4;
|
|
|
|
uVar1 = FUN_0054fe80(1);
|
|
|
|
(**(code **)(iVar5 + 0x58))(iStack_3c,iStack_40,uVar1);
|
|
|
|
iVar5 = FUN_005df0f5(0xc);
|
|
|
|
if (iVar5 == 0) {
|
|
|
|
iVar5 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar5 = FUN_00694d80(piVar4);
|
|
|
|
}
|
|
|
|
*piVar6 = iVar5;
|
|
|
|
piVar3 = piStack_38;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (local_4c < *(int *)(local_34 + (param_2 * 3 + 0xe1) * 8)) {
|
|
|
|
FUN_00442c70(piVar2 + 0x2b,0,0x3f800000);
|
|
|
|
FUN_004416d0(&uStack_10,&fStack_20);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
FUN_00442c70(piVar3 + 0x2b,0,0x3f800000);
|
|
|
|
}
|
|
|
|
FUN_006a0660();
|
|
|
|
iVar5 = FUN_005df0f5(0xc);
|
|
|
|
if (iVar5 == 0) {
|
|
|
|
uVar1 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar1 = FUN_00694d80(*(undefined4 *)(*piVar6 + 8));
|
|
|
|
}
|
|
|
|
FUN_006a0610(uVar1);
|
|
|
|
}
|
|
|
|
if (piVar3 != (int *)0x0) {
|
|
|
|
(**(code **)(*piVar3 + 0x14))();
|
|
|
|
}
|
|
|
|
if (piVar2 != (int *)0x0) {
|
|
|
|
(**(code **)(*piVar2 + 0x14))();
|
|
|
|
}
|
|
|
|
local_4c = local_4c + 1;
|
|
|
|
piVar6 = piVar6 + 7;
|
|
|
|
} while (local_4c < 9);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0047de40 at 0x0047DE40 (size: 699) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void __thiscall FUN_0047de40(int param_1,char param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
undefined4 uVar2;
|
|
|
|
int *piVar3;
|
|
|
|
int *piVar4;
|
|
|
|
int *piVar5;
|
|
|
|
int iVar6;
|
|
|
|
undefined4 local_2c;
|
|
|
|
undefined4 local_28;
|
|
|
|
int local_24;
|
|
|
|
float local_10;
|
|
|
|
float local_c;
|
|
|
|
float local_8;
|
|
|
|
undefined4 local_4;
|
|
|
|
|
|
|
|
FUN_00415640(&local_2c,0x1000000e,7);
|
|
|
|
FUN_00415640(&local_28,0x10000010,7);
|
|
|
|
uVar2 = FUN_004220b0(local_2c,0xc);
|
|
|
|
piVar3 = (int *)FUN_00415430(uVar2);
|
|
|
|
uVar2 = FUN_004220b0(local_28,0xc);
|
|
|
|
piVar4 = (int *)FUN_00415430(uVar2);
|
|
|
|
if (piVar3 != (int *)0x0) {
|
|
|
|
if (piVar4 == (int *)0x0) goto LAB_0047e0e6;
|
|
|
|
iVar6 = *(int *)(param_1 + 0x66c) * 0x1c;
|
|
|
|
local_10 = (float)*(int *)(iVar6 + 0x7dc + param_1);
|
|
|
|
if (*(int *)(iVar6 + 0x7dc + param_1) < 0) {
|
|
|
|
local_10 = local_10 + _DAT_0079920c;
|
|
|
|
}
|
|
|
|
local_10 = local_10 * _DAT_00799208;
|
|
|
|
iVar1 = *(int *)((*(int *)(param_1 + 0x66c) + 0x48) * 0x1c + param_1);
|
|
|
|
local_c = (float)iVar1;
|
|
|
|
if (iVar1 < 0) {
|
|
|
|
local_c = local_c + _DAT_0079920c;
|
|
|
|
}
|
|
|
|
local_c = local_c * _DAT_00799208;
|
|
|
|
local_24 = *(int *)(iVar6 + param_1 + 0x7e4);
|
|
|
|
local_8 = (float)local_24;
|
|
|
|
if (local_24 < 0) {
|
|
|
|
local_8 = local_8 + _DAT_0079920c;
|
|
|
|
}
|
|
|
|
local_8 = local_8 * _DAT_00799208;
|
|
|
|
local_4 = 0x3f800000;
|
|
|
|
if (*(int *)(param_1 + 0x658) == 0) {
|
|
|
|
piVar5 = (int *)(**(code **)(*DAT_00870340 + 0xc))();
|
|
|
|
if (piVar5 != (int *)0x0) {
|
|
|
|
local_24 = piVar3[0x28];
|
|
|
|
iVar6 = piVar3[0x29];
|
|
|
|
iVar1 = *piVar5;
|
|
|
|
uVar2 = FUN_0054fe80(1);
|
|
|
|
(**(code **)(iVar1 + 0x58))(local_24,iVar6,uVar2);
|
|
|
|
iVar6 = FUN_005df0f5(0xc);
|
|
|
|
if (iVar6 == 0) {
|
|
|
|
uVar2 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar2 = FUN_00694d80(piVar5);
|
|
|
|
}
|
|
|
|
*(undefined4 *)(param_1 + 0x658) = uVar2;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x65c) == 0) {
|
|
|
|
piVar5 = (int *)(**(code **)(*DAT_00870340 + 0xc))();
|
|
|
|
if (piVar5 != (int *)0x0) {
|
|
|
|
local_24 = piVar4[0x28];
|
|
|
|
iVar6 = piVar4[0x29];
|
|
|
|
iVar1 = *piVar5;
|
|
|
|
uVar2 = FUN_0054fe80(1);
|
|
|
|
(**(code **)(iVar1 + 0x58))(local_24,iVar6,uVar2);
|
|
|
|
iVar6 = FUN_005df0f5(0xc);
|
|
|
|
if (iVar6 == 0) {
|
|
|
|
uVar2 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar2 = FUN_00694d80(piVar5);
|
|
|
|
}
|
|
|
|
*(undefined4 *)(param_1 + 0x65c) = uVar2;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (param_2 == '\0') {
|
|
|
|
uVar2 = FUN_00424000();
|
|
|
|
FUN_004428b0(piVar3 + 0x2b,0,0x3f800000,0,4,uVar2);
|
|
|
|
FUN_006a0660();
|
|
|
|
iVar6 = FUN_005df0f5(0xc);
|
|
|
|
if (iVar6 == 0) {
|
|
|
|
LAB_0047e0cd:
|
|
|
|
uVar2 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar2 = FUN_00694d80(*(undefined4 *)(*(int *)(param_1 + 0x658) + 8));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
FUN_00442c70(piVar4 + 0x2b,0,0x3f800000);
|
|
|
|
FUN_006a0660();
|
|
|
|
iVar6 = FUN_005df0f5(0xc);
|
|
|
|
if (iVar6 == 0) goto LAB_0047e0cd;
|
|
|
|
uVar2 = FUN_00694d80(*(undefined4 *)(*(int *)(param_1 + 0x65c) + 8));
|
|
|
|
}
|
|
|
|
FUN_006a0610(uVar2);
|
|
|
|
}
|
|
|
|
if (piVar4 != (int *)0x0) {
|
|
|
|
(**(code **)(*piVar4 + 0x14))();
|
|
|
|
}
|
|
|
|
LAB_0047e0e6:
|
|
|
|
if (piVar3 != (int *)0x0) {
|
|
|
|
(**(code **)(*piVar3 + 0x14))();
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0047e100 at 0x0047E100 (size: 231) ---
|
|
|
|
|
|
void __thiscall FUN_0047e100(int param_1,int param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
char cVar1;
|
|
|
|
int iVar2;
|
|
|
|
|
|
|
|
if (*(int *)(param_1 + 0x66c) != -1) {
|
|
|
|
(**(code **)(**(int **)(*(int *)(param_1 + 0x66c) * 0x1c + 0x7ec + param_1) + 0x18))(0);
|
|
|
|
}
|
|
|
|
if (param_2 != -1) {
|
|
|
|
(**(code **)(**(int **)(param_2 * 0x1c + 0x7ec + param_1) + 0x18))(1);
|
|
|
|
}
|
|
|
|
*(int *)(param_1 + 0x66c) = param_2;
|
|
|
|
iVar2 = FUN_0055e1e0();
|
|
|
|
param_2 = 0;
|
|
|
|
switch(*(undefined4 *)(param_1 + 0x7d8)) {
|
|
|
|
case 1:
|
|
|
|
FUN_005c4890(*(undefined4 *)(param_1 + 0x66c));
|
|
|
|
break;
|
|
|
|
case 2:
|
|
|
|
FUN_005c48b0(*(undefined4 *)(param_1 + 0x66c));
|
|
|
|
param_2 = 1;
|
|
|
|
break;
|
|
|
|
case 6:
|
|
|
|
*(undefined4 *)(iVar2 + 0xf8) = *(undefined4 *)(param_1 + 0x66c);
|
|
|
|
break;
|
|
|
|
case 7:
|
|
|
|
*(undefined4 *)(iVar2 + 0x100) = *(undefined4 *)(param_1 + 0x66c);
|
|
|
|
break;
|
|
|
|
case 8:
|
|
|
|
*(undefined4 *)(iVar2 + 0x108) = *(undefined4 *)(param_1 + 0x66c);
|
|
|
|
break;
|
|
|
|
case 9:
|
|
|
|
*(undefined4 *)(iVar2 + 0x110) = *(undefined4 *)(param_1 + 0x66c);
|
|
|
|
}
|
|
|
|
FUN_0047de40(param_2);
|
|
|
|
cVar1 = FUN_004603a0();
|
|
|
|
if (cVar1 != '\0') {
|
|
|
|
FUN_004ef660();
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0047e210 at 0x0047E210 (size: 130) ---
|
|
|
|
|
|
void __fastcall FUN_0047e210(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
void *pvVar2;
|
|
|
|
void *pvVar3;
|
|
|
|
int *piVar4;
|
|
|
|
void *pvVar5;
|
|
|
|
|
|
|
|
iVar1 = *(int *)(param_1 + 0x6c);
|
|
|
|
do {
|
|
|
|
if (iVar1 == 0) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
piVar4 = *(int **)(param_1 + 100);
|
|
|
|
while (piVar4 != (int *)(*(int *)(param_1 + 0x60) + *(int *)(param_1 + 0x68) * 4)) {
|
|
|
|
if (**(int **)(param_1 + 100) != 0) {
|
|
|
|
piVar4 = *(int **)(param_1 + 100);
|
|
|
|
pvVar5 = (void *)*piVar4;
|
|
|
|
goto LAB_0047e24f;
|
|
|
|
}
|
|
|
|
piVar4 = *(int **)(param_1 + 100) + 1;
|
|
|
|
*(int **)(param_1 + 100) = piVar4;
|
|
|
|
}
|
|
|
|
piVar4 = (int *)0x0;
|
|
|
|
pvVar5 = (void *)0x0;
|
|
|
|
LAB_0047e24f:
|
|
|
|
pvVar3 = (void *)*piVar4;
|
|
|
|
if (pvVar3 == pvVar5) {
|
|
|
|
LAB_0047e262:
|
|
|
|
*piVar4 = *(int *)((int)pvVar3 + 4);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
do {
|
|
|
|
pvVar2 = pvVar3;
|
|
|
|
pvVar3 = *(void **)((int)pvVar2 + 4);
|
|
|
|
} while (pvVar3 != pvVar5);
|
|
|
|
if (pvVar2 == (void *)0x0) goto LAB_0047e262;
|
|
|
|
*(undefined4 *)((int)pvVar2 + 4) = *(undefined4 *)((int)pvVar3 + 4);
|
|
|
|
}
|
|
|
|
*(int *)(param_1 + 0x6c) = *(int *)(param_1 + 0x6c) + -1;
|
|
|
|
if (pvVar5 != (void *)0x0) {
|
|
|
|
FUN_0047daa0();
|
|
|
|
operator_delete(pvVar5);
|
|
|
|
}
|
|
|
|
iVar1 = *(int *)(param_1 + 0x6c);
|
|
|
|
} while( true );
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0047e2a0 at 0x0047E2A0 (size: 82) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_0047e2a0(undefined4 *param_1,byte param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
*param_1 = &PTR_FUN_007a0ed0;
|
|
|
|
FUN_0047e210();
|
|
|
|
param_1[1] = &PTR_FUN_007a0ec4;
|
|
|
|
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_0047e300 at 0x0047E300 (size: 198) ---
|
|
|
|
|
|
void __fastcall FUN_0047e300(undefined4 *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
LONG LVar1;
|
|
|
|
undefined4 *puVar2;
|
|
|
|
|
|
|
|
*param_1 = &PTR_LAB_007a0ed4;
|
|
|
|
param_1[0x13] = &PTR_FUN_007a0ed0;
|
|
|
|
FUN_0047e210();
|
|
|
|
param_1[0x14] = &PTR_FUN_007a0ec4;
|
|
|
|
if ((undefined4 *)param_1[0x2c] != param_1 + 0x15) {
|
|
|
|
operator_delete__((undefined4 *)param_1[0x2c]);
|
|
|
|
}
|
|
|
|
param_1[0x2c] = 0;
|
|
|
|
param_1[0x2d] = 0;
|
|
|
|
param_1[0x2e] = 0;
|
|
|
|
param_1[0x2f] = 0;
|
|
|
|
if (((param_1[0x11] & 0x80000000) == 0x80000000) && (param_1[0x10] != 0)) {
|
|
|
|
FUN_0047d9b0(3);
|
|
|
|
}
|
|
|
|
FUN_0047d5a0();
|
|
|
|
if ((param_1[0xb] & 0x80000000) == 0x80000000) {
|
|
|
|
operator_delete__((void *)param_1[10]);
|
|
|
|
}
|
|
|
|
if ((param_1[8] & 0x80000000) == 0x80000000) {
|
|
|
|
operator_delete__((void *)param_1[7]);
|
|
|
|
}
|
|
|
|
puVar2 = (undefined4 *)(param_1[1] + -0x14);
|
|
|
|
LVar1 = InterlockedDecrement((LONG *)(param_1[1] + -0x10));
|
|
|
|
if ((LVar1 == 0) && (puVar2 != (undefined4 *)0x0)) {
|
|
|
|
(**(code **)*puVar2)(1);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0047e3d0 at 0x0047E3D0 (size: 571) ---
|
|
|
|
|
|
void __fastcall FUN_0047e3d0(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 uVar1;
|
|
|
|
int iVar2;
|
|
|
|
undefined1 local_1a8 [96];
|
|
|
|
undefined4 local_148;
|
|
|
|
undefined4 local_13c;
|
|
|
|
undefined4 local_130;
|
|
|
|
undefined4 local_124;
|
|
|
|
undefined4 local_118;
|
|
|
|
undefined4 local_10c;
|
|
|
|
undefined4 local_100;
|
|
|
|
undefined4 local_f4;
|
|
|
|
undefined4 local_e8;
|
|
|
|
undefined4 local_dc;
|
|
|
|
undefined1 local_c8 [196];
|
|
|
|
|
|
|
|
iVar2 = FUN_0055e1e0();
|
|
|
|
FUN_005c3380(local_c8,*(undefined4 *)(iVar2 + 0xd4));
|
|
|
|
FUN_005c2b30(local_1a8,*(undefined4 *)(iVar2 + 0xd8));
|
|
|
|
uVar1 = *(undefined4 *)(iVar2 + 0xf0);
|
|
|
|
*(undefined4 *)(param_1 + 0x700) = local_13c;
|
|
|
|
*(undefined4 *)(param_1 + 0x704) = uVar1;
|
|
|
|
*(undefined4 *)(param_1 + 0x70c) = *(undefined4 *)(iVar2 + 0xe8);
|
|
|
|
*(undefined4 *)(param_1 + 0x708) = local_148;
|
|
|
|
*(undefined8 *)(param_1 + 0x710) = *(undefined8 *)(iVar2 + 0x150);
|
|
|
|
*(undefined4 *)(param_1 + 0x71c) = *(undefined4 *)(iVar2 + 0xdc);
|
|
|
|
*(undefined4 *)(param_1 + 0x718) = local_124;
|
|
|
|
uVar1 = *(undefined4 *)(iVar2 + 0xec);
|
|
|
|
*(undefined4 *)(param_1 + 0x720) = local_130;
|
|
|
|
*(undefined4 *)(param_1 + 0x724) = uVar1;
|
|
|
|
*(undefined4 *)(param_1 + 0x728) = 0;
|
|
|
|
*(undefined4 *)(param_1 + 0x72c) = 0;
|
|
|
|
*(undefined4 *)(param_1 + 0x734) = *(undefined4 *)(iVar2 + 0xe0);
|
|
|
|
*(undefined4 *)(param_1 + 0x730) = local_118;
|
|
|
|
*(undefined4 *)(param_1 + 0x738) = 0;
|
|
|
|
*(undefined4 *)(param_1 + 0x740) = 0;
|
|
|
|
*(undefined4 *)(param_1 + 0x744) = 0;
|
|
|
|
*(undefined4 *)(param_1 + 0x73c) = 0xffffffff;
|
|
|
|
*(undefined4 *)(param_1 + 0x74c) = *(undefined4 *)(iVar2 + 0xe4);
|
|
|
|
*(undefined4 *)(param_1 + 0x748) = local_10c;
|
|
|
|
*(undefined4 *)(param_1 + 0x754) = 0xffffffff;
|
|
|
|
*(undefined4 *)(param_1 + 0x750) = 0;
|
|
|
|
*(undefined4 *)(param_1 + 0x758) = 0;
|
|
|
|
*(undefined4 *)(param_1 + 0x75c) = 0;
|
|
|
|
*(undefined4 *)(param_1 + 0x77c) = *(undefined4 *)(iVar2 + 0xf4);
|
|
|
|
*(undefined4 *)(param_1 + 0x778) = local_100;
|
|
|
|
*(undefined4 *)(param_1 + 0x784) = *(undefined4 *)(iVar2 + 0xf8);
|
|
|
|
*(undefined4 *)(param_1 + 0x780) = *(undefined4 *)(iVar2 + 0x114);
|
|
|
|
*(undefined8 *)(param_1 + 0x788) = *(undefined8 *)(iVar2 + 0x158);
|
|
|
|
*(undefined4 *)(param_1 + 0x794) = *(undefined4 *)(iVar2 + 0xfc);
|
|
|
|
*(undefined4 *)(param_1 + 0x790) = local_f4;
|
|
|
|
*(undefined4 *)(param_1 + 0x79c) = *(undefined4 *)(iVar2 + 0x100);
|
|
|
|
*(undefined4 *)(param_1 + 0x798) = *(undefined4 *)(iVar2 + 0x118);
|
|
|
|
*(undefined8 *)(param_1 + 0x7a0) = *(undefined8 *)(iVar2 + 0x160);
|
|
|
|
*(undefined4 *)(param_1 + 0x7ac) = *(undefined4 *)(iVar2 + 0x104);
|
|
|
|
*(undefined4 *)(param_1 + 0x7a8) = local_e8;
|
|
|
|
*(undefined4 *)(param_1 + 0x7b4) = *(undefined4 *)(iVar2 + 0x108);
|
|
|
|
*(undefined4 *)(param_1 + 0x7b0) = *(undefined4 *)(iVar2 + 0x11c);
|
|
|
|
*(undefined8 *)(param_1 + 0x7b8) = *(undefined8 *)(iVar2 + 0x168);
|
|
|
|
uVar1 = *(undefined4 *)(iVar2 + 0x10c);
|
|
|
|
*(undefined4 *)(param_1 + 0x7c0) = local_dc;
|
|
|
|
*(undefined4 *)(param_1 + 0x7c4) = uVar1;
|
|
|
|
*(undefined4 *)(param_1 + 0x7cc) = *(undefined4 *)(iVar2 + 0x110);
|
|
|
|
*(undefined4 *)(param_1 + 0x7c8) = *(undefined4 *)(iVar2 + 0x120);
|
|
|
|
*(undefined8 *)(param_1 + 2000) = *(undefined8 *)(iVar2 + 0x170);
|
|
|
|
FUN_0047daa0();
|
|
|
|
FUN_0047e300();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0047e610 at 0x0047E610 (size: 1610) ---
|
|
|
|
|
|
void __thiscall FUN_0047e610(int param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
undefined4 uVar2;
|
|
|
|
int iVar3;
|
|
|
|
undefined4 *puVar4;
|
|
|
|
uint uVar5;
|
|
|
|
undefined4 unaff_EBX;
|
|
|
|
undefined4 unaff_EBP;
|
|
|
|
int iVar6;
|
|
|
|
uint *puVar7;
|
|
|
|
int unaff_retaddr;
|
|
|
|
int local_1e0;
|
|
|
|
int local_1dc;
|
|
|
|
undefined4 local_1d8;
|
|
|
|
uint local_1d4;
|
|
|
|
int iStack_1d0;
|
|
|
|
int iStack_1cc;
|
|
|
|
int iStack_1c8;
|
|
|
|
int aiStack_1c4 [9];
|
|
|
|
undefined1 auStack_1a0 [4];
|
|
|
|
undefined1 local_19c [84];
|
|
|
|
undefined4 uStack_148;
|
|
|
|
int iStack_144;
|
|
|
|
int iStack_13c;
|
|
|
|
int iStack_12c;
|
|
|
|
int iStack_124;
|
|
|
|
undefined1 local_c0 [192];
|
|
|
|
|
|
|
|
local_1dc = 0;
|
|
|
|
local_1d8 = 0;
|
|
|
|
local_1e0 = 0;
|
|
|
|
local_1d4 = 0;
|
|
|
|
iVar1 = FUN_0055e1e0();
|
|
|
|
FUN_005c3380(local_c0,*(undefined4 *)(iVar1 + 0xd4));
|
|
|
|
FUN_005c2b30(local_19c,*(undefined4 *)(iVar1 + 0xd8));
|
|
|
|
*(undefined4 *)(param_1 + 0x7d8) = param_2;
|
|
|
|
*(undefined4 *)(param_1 + 0x6f0) = *(undefined4 *)(iVar1 + 0xd4);
|
|
|
|
puVar4 = (undefined4 *)(param_1 + 0x7ec);
|
|
|
|
iVar6 = 9;
|
|
|
|
do {
|
|
|
|
(**(code **)(*(int *)puVar4[-1] + 0x18))(1);
|
|
|
|
(**(code **)(*(int *)*puVar4 + 0x18))(0);
|
|
|
|
puVar4 = puVar4 + 7;
|
|
|
|
iVar6 = iVar6 + -1;
|
|
|
|
} while (iVar6 != 0);
|
|
|
|
iVar6 = 0;
|
|
|
|
if (*(int **)(param_1 + 0x660) != (int *)0x0) {
|
|
|
|
(**(code **)(**(int **)(param_1 + 0x660) + 0x9c))(1);
|
|
|
|
}
|
|
|
|
switch(param_2) {
|
|
|
|
case 1:
|
|
|
|
local_1e0 = iStack_13c;
|
|
|
|
if (0 < iStack_13c) {
|
|
|
|
do {
|
|
|
|
uVar2 = FUN_004220b0(*(undefined4 *)(iStack_144 + iVar6 * 4),0x18);
|
|
|
|
iVar3 = FUN_00415430(uVar2);
|
|
|
|
aiStack_1c4[iVar6] = iVar3;
|
|
|
|
iVar6 = iVar6 + 1;
|
|
|
|
} while (iVar6 < iStack_13c);
|
|
|
|
}
|
|
|
|
*(undefined4 *)(param_1 + 0x660) = *(undefined4 *)(param_1 + 0x624);
|
|
|
|
local_1d8 = 0xd0;
|
|
|
|
local_1dc = 0;
|
|
|
|
local_1d4 = (*(uint *)(iVar1 + 0xe8) == 0xffffffff) - 1 & *(uint *)(iVar1 + 0xe8);
|
|
|
|
break;
|
|
|
|
case 2:
|
|
|
|
iVar6 = 0;
|
|
|
|
if (0 < iStack_124) {
|
|
|
|
puVar7 = (uint *)(param_1 + 0x7e0);
|
|
|
|
do {
|
|
|
|
uVar5 = FUN_00564730(*(undefined4 *)(iStack_12c + iVar6 * 4),0x103);
|
|
|
|
puVar7[-1] = uVar5 >> 0x10 & 0xff;
|
|
|
|
puVar7[1] = uVar5 & 0xff;
|
|
|
|
*puVar7 = uVar5 >> 8 & 0xff;
|
|
|
|
iVar6 = iVar6 + 1;
|
|
|
|
puVar7 = puVar7 + 7;
|
|
|
|
} while (iVar6 < iStack_124);
|
|
|
|
}
|
|
|
|
*(undefined4 *)(param_1 + 0x660) = *(undefined4 *)(param_1 + 0x628);
|
|
|
|
local_1d4 = *(uint *)(iVar1 + 0xec);
|
|
|
|
local_1dc = 1;
|
|
|
|
local_1e0 = iStack_124;
|
|
|
|
goto LAB_0047ebc5;
|
|
|
|
case 3:
|
|
|
|
local_1e0 = 1;
|
|
|
|
uVar2 = FUN_004220b0(uStack_148,0x18);
|
|
|
|
aiStack_1c4[0] = FUN_00415430(uVar2);
|
|
|
|
*(undefined4 *)(param_1 + 0x660) = *(undefined4 *)(param_1 + 0x62c);
|
|
|
|
local_1d8 = 0xb0;
|
|
|
|
local_1dc = 2;
|
|
|
|
local_1d4 = 0;
|
|
|
|
break;
|
|
|
|
case 4:
|
|
|
|
local_1e0 = 1;
|
|
|
|
uVar2 = FUN_004220b0(uStack_148,0x18);
|
|
|
|
aiStack_1c4[0] = FUN_00415430(uVar2);
|
|
|
|
*(undefined4 *)(param_1 + 0x660) = *(undefined4 *)(param_1 + 0x630);
|
|
|
|
local_1d8 = 0xb0;
|
|
|
|
local_1dc = 3;
|
|
|
|
local_1d4 = 0;
|
|
|
|
break;
|
|
|
|
case 5:
|
|
|
|
local_1e0 = 1;
|
|
|
|
uVar2 = FUN_004220b0(uStack_148,0x18);
|
|
|
|
aiStack_1c4[0] = FUN_00415430(uVar2);
|
|
|
|
*(undefined4 *)(param_1 + 0x660) = *(undefined4 *)(param_1 + 0x634);
|
|
|
|
local_1d8 = 0xb0;
|
|
|
|
local_1dc = 4;
|
|
|
|
local_1d4 = 0;
|
|
|
|
break;
|
|
|
|
case 6:
|
|
|
|
local_1e0 = *(int *)(iVar1 + 0x114);
|
|
|
|
iVar6 = 0;
|
|
|
|
if (0 < local_1e0) {
|
|
|
|
do {
|
|
|
|
puVar4 = (undefined4 *)FUN_005c4d50(&iStack_1c8,iVar6);
|
|
|
|
uVar2 = FUN_004220b0(*puVar4,0x18);
|
|
|
|
iVar3 = FUN_00415430(uVar2);
|
|
|
|
aiStack_1c4[iVar6] = iVar3;
|
|
|
|
iVar6 = iVar6 + 1;
|
|
|
|
} while (iVar6 < local_1e0);
|
|
|
|
}
|
|
|
|
*(undefined4 *)(param_1 + 0x660) = *(undefined4 *)(param_1 + 0x638);
|
|
|
|
local_1d4 = *(uint *)(iVar1 + 0xf8);
|
|
|
|
local_1dc = 5;
|
|
|
|
goto LAB_0047eae3;
|
|
|
|
case 7:
|
|
|
|
local_1e0 = *(int *)(iVar1 + 0x118);
|
|
|
|
iVar6 = 0;
|
|
|
|
if (0 < local_1e0) {
|
|
|
|
do {
|
|
|
|
puVar4 = (undefined4 *)FUN_005c4d70(&iStack_1d0,iVar6);
|
|
|
|
uVar2 = FUN_004220b0(*puVar4,0x18);
|
|
|
|
iVar3 = FUN_00415430(uVar2);
|
|
|
|
aiStack_1c4[iVar6] = iVar3;
|
|
|
|
iVar6 = iVar6 + 1;
|
|
|
|
} while (iVar6 < local_1e0);
|
|
|
|
}
|
|
|
|
*(undefined4 *)(param_1 + 0x660) = *(undefined4 *)(param_1 + 0x63c);
|
|
|
|
local_1d4 = *(uint *)(iVar1 + 0x100);
|
|
|
|
local_1d8 = 0x520;
|
|
|
|
local_1dc = 6;
|
|
|
|
break;
|
|
|
|
case 8:
|
|
|
|
local_1e0 = *(int *)(iVar1 + 0x11c);
|
|
|
|
iVar6 = 0;
|
|
|
|
if (0 < local_1e0) {
|
|
|
|
do {
|
|
|
|
puVar4 = (undefined4 *)FUN_005c4d90(&iStack_1cc,iVar6);
|
|
|
|
uVar2 = FUN_004220b0(*puVar4,0x18);
|
|
|
|
iVar3 = FUN_00415430(uVar2);
|
|
|
|
aiStack_1c4[iVar6] = iVar3;
|
|
|
|
iVar6 = iVar6 + 1;
|
|
|
|
} while (iVar6 < local_1e0);
|
|
|
|
}
|
|
|
|
*(undefined4 *)(param_1 + 0x660) = *(undefined4 *)(param_1 + 0x640);
|
|
|
|
local_1d4 = *(uint *)(iVar1 + 0x108);
|
|
|
|
local_1d8 = 0x520;
|
|
|
|
local_1dc = 7;
|
|
|
|
break;
|
|
|
|
case 9:
|
|
|
|
local_1e0 = *(int *)(iVar1 + 0x120);
|
|
|
|
iVar6 = 0;
|
|
|
|
if (0 < local_1e0) {
|
|
|
|
do {
|
|
|
|
puVar4 = (undefined4 *)FUN_005c4db0(&local_1d8,iVar6);
|
|
|
|
uVar2 = FUN_004220b0(*puVar4,0x18);
|
|
|
|
iVar3 = FUN_00415430(uVar2);
|
|
|
|
aiStack_1c4[iVar6] = iVar3;
|
|
|
|
iVar6 = iVar6 + 1;
|
|
|
|
} while (iVar6 < local_1e0);
|
|
|
|
}
|
|
|
|
*(undefined4 *)(param_1 + 0x660) = *(undefined4 *)(param_1 + 0x644);
|
|
|
|
local_1d4 = *(uint *)(iVar1 + 0x110);
|
|
|
|
local_1dc = 8;
|
|
|
|
LAB_0047eae3:
|
|
|
|
local_1d8 = 0x520;
|
|
|
|
}
|
|
|
|
iStack_1d0 = 0;
|
|
|
|
if (0 < local_1e0) {
|
|
|
|
puVar7 = (uint *)(param_1 + 0x7e0);
|
|
|
|
do {
|
|
|
|
iStack_1cc = aiStack_1c4[iStack_1d0];
|
|
|
|
iVar1 = 0;
|
|
|
|
if (iStack_1cc != 0) {
|
|
|
|
puVar7[1] = 0;
|
|
|
|
*puVar7 = 0;
|
|
|
|
puVar7[-1] = 0;
|
|
|
|
iVar6 = iStack_1cc;
|
|
|
|
if (0 < *(int *)(iStack_1cc + 0x38)) {
|
|
|
|
do {
|
|
|
|
iStack_1c8 = iVar6;
|
|
|
|
puVar4 = (undefined4 *)FUN_005ad6a0(auStack_1a0,iVar1);
|
|
|
|
uVar5 = FUN_00564730(*puVar4,local_1d8);
|
|
|
|
puVar7[-1] = puVar7[-1] + (uVar5 >> 0x10 & 0xff);
|
|
|
|
*puVar7 = *puVar7 + (uVar5 >> 8 & 0xff);
|
|
|
|
puVar7[1] = puVar7[1] + (uVar5 & 0xff);
|
|
|
|
iVar1 = iVar1 + 1;
|
|
|
|
iVar6 = iStack_1c8;
|
|
|
|
} while (iVar1 < *(int *)(iStack_1c8 + 0x38));
|
|
|
|
}
|
|
|
|
puVar7[-1] = puVar7[-1] / *(uint *)(iStack_1cc + 0x38);
|
|
|
|
*puVar7 = *puVar7 / *(uint *)(iStack_1cc + 0x38);
|
|
|
|
puVar7[1] = puVar7[1] / *(uint *)(iStack_1cc + 0x38);
|
|
|
|
}
|
|
|
|
iStack_1d0 = iStack_1d0 + 1;
|
|
|
|
puVar7 = puVar7 + 7;
|
|
|
|
} while (iStack_1d0 < local_1e0);
|
|
|
|
}
|
|
|
|
LAB_0047ebc5:
|
|
|
|
uVar5 = local_1d4;
|
|
|
|
*(uint *)(param_1 + 0x66c) = local_1d4;
|
|
|
|
*(int *)(param_1 + 0x670) = local_1dc;
|
|
|
|
*(int *)(param_1 + (local_1dc * 3 + 0xe1) * 8) = local_1e0;
|
|
|
|
(**(code **)(**(int **)(param_1 + 0x660) + 0x9c))(6);
|
|
|
|
FUN_0047dc00(local_1dc);
|
|
|
|
if (unaff_retaddr == 2) {
|
|
|
|
FUN_0047de40(1);
|
|
|
|
(**(code **)(**(int **)(param_1 + 0x648) + 0x18))(0);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
FUN_0047de40(0);
|
|
|
|
(**(code **)(**(int **)(param_1 + 0x648) + 0x18))(1);
|
|
|
|
FUN_0047cc10(unaff_EBP,unaff_EBX);
|
|
|
|
}
|
|
|
|
FUN_0047e100(uVar5);
|
|
|
|
FUN_0047daa0();
|
|
|
|
FUN_0047e300();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0047eca0 at 0x0047ECA0 (size: 1585) ---
|
|
|
|
|
|
void __fastcall FUN_0047eca0(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
char cVar1;
|
|
|
|
int iVar2;
|
|
|
|
undefined4 uVar3;
|
|
|
|
int iVar4;
|
|
|
|
undefined4 uVar5;
|
|
|
|
char *pcStack_1c4;
|
|
|
|
undefined4 uStack_1c0;
|
|
|
|
undefined1 auStack_12c [12];
|
|
|
|
undefined1 auStack_120 [132];
|
|
|
|
undefined1 auStack_9c [12];
|
|
|
|
undefined1 auStack_90 [144];
|
|
|
|
|
|
|
|
uStack_1c0 = 0x47ecb6;
|
|
|
|
iVar2 = FUN_0055e1e0();
|
|
|
|
if (*(int *)(iVar2 + 0xd8) == 1) {
|
|
|
|
uStack_1c0 = 0x10000016;
|
|
|
|
pcStack_1c4 = "h\x17";
|
|
|
|
(**(code **)(**(int **)(param_1 + 0x604) + 0x9c))();
|
|
|
|
pcStack_1c4 = (char *)0x10000017;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
if (*(int *)(iVar2 + 0xd8) != 2) goto LAB_0047ed04;
|
|
|
|
uStack_1c0 = 0x10000017;
|
|
|
|
pcStack_1c4 = "h\x16";
|
|
|
|
(**(code **)(**(int **)(param_1 + 0x604) + 0x9c))();
|
|
|
|
pcStack_1c4 = (char *)0x10000016;
|
|
|
|
}
|
|
|
|
(**(code **)(**(int **)(param_1 + 0x608) + 0x9c))();
|
|
|
|
LAB_0047ed04:
|
|
|
|
iVar4 = *(int *)(iVar2 + 0xd4);
|
|
|
|
if (iVar4 == 6) {
|
|
|
|
if (*(int *)(param_1 + 0x6f0) != 6) {
|
|
|
|
uStack_1c0 = 0;
|
|
|
|
pcStack_1c4 = (char *)0x47ed28;
|
|
|
|
FUN_005c5ef0();
|
|
|
|
uStack_1c0 = 1;
|
|
|
|
pcStack_1c4 = (char *)0x47ed31;
|
|
|
|
FUN_005c7750();
|
|
|
|
}
|
|
|
|
*(undefined4 *)(param_1 + 0x6f0) = *(undefined4 *)(iVar2 + 0xd4);
|
|
|
|
uStack_1c0 = 0;
|
|
|
|
pcStack_1c4 = (char *)0x47ed4a;
|
|
|
|
(**(code **)(**(int **)(param_1 + 0x610) + 0x18))();
|
|
|
|
pcStack_1c4 = (char *)0x0;
|
|
|
|
(**(code **)(**(int **)(param_1 + 0x62c) + 0x18))();
|
|
|
|
(**(code **)(**(int **)(param_1 + 0x630) + 0x18))(0);
|
|
|
|
FUN_0042dc80();
|
|
|
|
FUN_0042dc80();
|
|
|
|
FUN_0042dc80();
|
|
|
|
uVar5 = 0x10000002;
|
|
|
|
uVar3 = FUN_004016b0("ID_CharGen_GearText_HairButton",0x10000002);
|
|
|
|
FUN_0042c9c0(uVar3,uVar5);
|
|
|
|
FUN_0046a370(auStack_9c,0,1);
|
|
|
|
uVar5 = 0x10000002;
|
|
|
|
uVar3 = FUN_004016b0("ID_CharGen_GearText_EyesButton",0x10000002);
|
|
|
|
FUN_0042c9c0(uVar3,uVar5);
|
|
|
|
FUN_0046a370(auStack_12c,0,1);
|
|
|
|
if (*(int *)(param_1 + 0x628) != 0) {
|
|
|
|
iVar2 = FUN_00463c00(0x1000030a);
|
|
|
|
if (iVar2 != 0) {
|
|
|
|
FUN_00460820(0xd,1);
|
|
|
|
}
|
|
|
|
iVar2 = FUN_00463c00(0x1000030b);
|
|
|
|
if (iVar2 != 0) {
|
|
|
|
FUN_00460820(0xd,1);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
(**(code **)(**(int **)(param_1 + 0x634) + 0x2c))(0,0x5a);
|
|
|
|
uVar5 = 0x10000002;
|
|
|
|
uVar3 = FUN_004016b0("ID_CharGen_GearText_SkinButton",0x10000002);
|
|
|
|
FUN_0042c9c0(uVar3,uVar5);
|
|
|
|
FUN_0046a370(&pcStack_1c4,0,1);
|
|
|
|
FUN_0047d860(1);
|
|
|
|
FUN_0047e610(1);
|
|
|
|
*(undefined4 *)(param_1 + 0x67c) = 0;
|
|
|
|
*(undefined4 *)(param_1 + 0x680) = 0xbf0ccccd;
|
|
|
|
*(undefined4 *)(param_1 + 0x684) = 0x3fd33333;
|
|
|
|
*(undefined4 *)(param_1 + 0x694) = 0;
|
|
|
|
*(undefined4 *)(param_1 + 0x698) = 0xbf0ccccd;
|
|
|
|
*(undefined4 *)(param_1 + 0x69c) = 0x3fd33333;
|
|
|
|
FUN_004ef240((undefined4 *)(param_1 + 0x67c),param_1 + 0x6b8);
|
|
|
|
FUN_0042e590();
|
|
|
|
FUN_0042e590();
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
if ((iVar4 == 0xc) || (iVar4 == 0xd)) {
|
|
|
|
uStack_1c0 = 0;
|
|
|
|
pcStack_1c4 = (char *)0x47f0b6;
|
|
|
|
(**(code **)(**(int **)(param_1 + 0x610) + 0x18))();
|
|
|
|
pcStack_1c4 = (char *)0x0;
|
|
|
|
(**(code **)(**(int **)(param_1 + 0x62c) + 0x18))();
|
|
|
|
(**(code **)(**(int **)(param_1 + 0x630) + 0x18))(0);
|
|
|
|
FUN_0042dc80();
|
|
|
|
FUN_0042dc80();
|
|
|
|
FUN_0042dc80();
|
|
|
|
uVar5 = 0x10000002;
|
|
|
|
uVar3 = FUN_004016b0("ID_CharGen_OlthoiText_HairButton",0x10000002);
|
|
|
|
FUN_0042c9c0(uVar3,uVar5);
|
|
|
|
FUN_0046a370(auStack_12c,0,1);
|
|
|
|
uVar5 = 0x10000002;
|
|
|
|
uVar3 = FUN_004016b0("ID_CharGen_OlthoiText_EyesButton",0x10000002);
|
|
|
|
FUN_0042c9c0(uVar3,uVar5);
|
|
|
|
FUN_0046a370(auStack_9c,0,1);
|
|
|
|
if (*(int *)(param_1 + 0x628) != 0) {
|
|
|
|
iVar4 = FUN_00463c00(0x1000030a);
|
|
|
|
if (iVar4 != 0) {
|
|
|
|
FUN_00460820(0xd,1);
|
|
|
|
}
|
|
|
|
iVar4 = FUN_00463c00(0x1000030b);
|
|
|
|
if (iVar4 != 0) {
|
|
|
|
FUN_00460820(0xd,1);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
(**(code **)(**(int **)(param_1 + 0x634) + 0x2c))(0,0x5a);
|
|
|
|
uVar5 = 0x10000002;
|
|
|
|
uVar3 = FUN_004016b0("ID_CharGen_OlthoiText_SkinButton",0x10000002);
|
|
|
|
FUN_0042c9c0(uVar3,uVar5);
|
|
|
|
FUN_0046a370(&pcStack_1c4,0,1);
|
|
|
|
FUN_0047d860(1);
|
|
|
|
FUN_0047e610(1);
|
|
|
|
iVar2 = *(int *)(iVar2 + 0xd4);
|
|
|
|
*(undefined4 *)(param_1 + 0x67c) = 0;
|
|
|
|
if (iVar2 == 0xc) {
|
|
|
|
uVar5 = 0xbfeccccd;
|
|
|
|
uVar3 = 0x3feccccd;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar5 = 0xc0433333;
|
|
|
|
uVar3 = 0x40300000;
|
|
|
|
}
|
|
|
|
*(undefined4 *)(param_1 + 0x684) = uVar3;
|
|
|
|
*(undefined4 *)(param_1 + 0x680) = uVar5;
|
|
|
|
*(undefined4 *)(param_1 + 0x694) = 0;
|
|
|
|
*(undefined4 *)(param_1 + 0x698) = uVar5;
|
|
|
|
*(undefined4 *)(param_1 + 0x69c) = uVar3;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
if (*(int *)(param_1 + 0x6f0) == 6) {
|
|
|
|
uStack_1c0 = 0;
|
|
|
|
pcStack_1c4 = (char *)0x47ef0d;
|
|
|
|
FUN_005c5ef0();
|
|
|
|
uStack_1c0 = 1;
|
|
|
|
pcStack_1c4 = (char *)0x47ef16;
|
|
|
|
FUN_005c7750();
|
|
|
|
}
|
|
|
|
*(undefined4 *)(param_1 + 0x6f0) = *(undefined4 *)(iVar2 + 0xd4);
|
|
|
|
uStack_1c0 = 0x47ef2e;
|
|
|
|
FUN_0042dc80();
|
|
|
|
uStack_1c0 = 0x47ef37;
|
|
|
|
FUN_0042dc80();
|
|
|
|
uStack_1c0 = 0x47ef43;
|
|
|
|
FUN_0042dc80();
|
|
|
|
uStack_1c0 = 0x10000002;
|
|
|
|
pcStack_1c4 = "ID_CharGen_HairStyle";
|
|
|
|
pcStack_1c4 = (char *)FUN_004016b0();
|
|
|
|
FUN_0042c9c0();
|
|
|
|
uStack_1c0 = 1;
|
|
|
|
pcStack_1c4 = (char *)0x0;
|
|
|
|
FUN_0046a370(auStack_120);
|
|
|
|
uStack_1c0 = 0x10000002;
|
|
|
|
pcStack_1c4 = "ID_CharGen_Eyes";
|
|
|
|
pcStack_1c4 = (char *)FUN_004016b0();
|
|
|
|
FUN_0042c9c0();
|
|
|
|
uStack_1c0 = 1;
|
|
|
|
pcStack_1c4 = (char *)0x0;
|
|
|
|
FUN_0046a370(auStack_90);
|
|
|
|
if (*(int *)(param_1 + 0x628) != 0) {
|
|
|
|
uStack_1c0 = 0x1000030a;
|
|
|
|
pcStack_1c4 = (char *)0x47efc3;
|
|
|
|
iVar2 = FUN_00463c00();
|
|
|
|
if (iVar2 != 0) {
|
|
|
|
uStack_1c0 = 0;
|
|
|
|
pcStack_1c4 = (char *)0xd;
|
|
|
|
FUN_00460820();
|
|
|
|
}
|
|
|
|
uStack_1c0 = 0x1000030b;
|
|
|
|
pcStack_1c4 = (char *)0x47efe2;
|
|
|
|
iVar2 = FUN_00463c00();
|
|
|
|
if (iVar2 != 0) {
|
|
|
|
uStack_1c0 = 0;
|
|
|
|
pcStack_1c4 = (char *)0xd;
|
|
|
|
FUN_00460820();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
uStack_1c0 = 0xb4;
|
|
|
|
pcStack_1c4 = (char *)0x0;
|
|
|
|
(**(code **)(**(int **)(param_1 + 0x634) + 0x2c))();
|
|
|
|
uVar5 = 0x10000002;
|
|
|
|
uVar3 = FUN_004016b0("ID_CharGen_Skin",0x10000002);
|
|
|
|
FUN_0042c9c0(uVar3,uVar5);
|
|
|
|
FUN_0046a370(&stack0xfffffe48,0,1);
|
|
|
|
(**(code **)(**(int **)(param_1 + 0x610) + 0x18))(1);
|
|
|
|
(**(code **)(**(int **)(param_1 + 0x62c) + 0x18))(1);
|
|
|
|
(**(code **)(**(int **)(param_1 + 0x630) + 0x18))(1);
|
|
|
|
*(undefined4 *)(param_1 + 0x67c) = 0;
|
|
|
|
*(undefined4 *)(param_1 + 0x684) = 0x3fd33333;
|
|
|
|
uVar3 = 0xbf59999a;
|
|
|
|
if (*(int *)(param_1 + 0x6f0) != 7) {
|
|
|
|
uVar3 = 0xbf0ccccd;
|
|
|
|
}
|
|
|
|
*(undefined4 *)(param_1 + 0x680) = uVar3;
|
|
|
|
*(undefined4 *)(param_1 + 0x69c) = 0x3fd33333;
|
|
|
|
*(undefined4 *)(param_1 + 0x698) = uVar3;
|
|
|
|
*(undefined4 *)(param_1 + 0x694) = 0;
|
|
|
|
}
|
|
|
|
FUN_004ef240(param_1 + 0x67c,param_1 + 0x6b8);
|
|
|
|
FUN_0042e590();
|
|
|
|
FUN_0042e590();
|
|
|
|
}
|
|
|
|
FUN_0042e590();
|
|
|
|
FUN_0047e3d0();
|
|
|
|
FUN_0047e610(*(undefined4 *)(param_1 + 0x7d8));
|
|
|
|
cVar1 = FUN_004603a0();
|
|
|
|
if (cVar1 != '\0') {
|
|
|
|
FUN_004ef660();
|
|
|
|
FUN_004ef240(param_1 + 0x67c,param_1 + 0x6b8);
|
|
|
|
if (*(char *)(param_1 + 0x67a) == '\0') {
|
|
|
|
FUN_004ef290();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
FUN_004ef2d0();
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0047f2e0 at 0x0047F2E0 (size: 3356) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void __thiscall FUN_0047f2e0(int param_1,undefined4 *param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
float fVar1;
|
|
|
|
char cVar2;
|
|
|
|
int iVar3;
|
|
|
|
int iVar4;
|
|
|
|
float10 fVar5;
|
|
|
|
|
|
|
|
switch(*param_2) {
|
|
|
|
case 0x1000030a:
|
|
|
|
if (param_2[2] == 1) {
|
|
|
|
iVar4 = (**(code **)(*(int *)param_2[1] + 0xa0))();
|
|
|
|
switch(*(undefined4 *)(iVar4 + 0x2e4)) {
|
|
|
|
case 0x100003af:
|
|
|
|
iVar3 = *(int *)(param_1 + 0x700);
|
|
|
|
iVar4 = *(int *)(param_1 + 0x704) + -1;
|
|
|
|
*(int *)(param_1 + 0x704) = iVar4;
|
|
|
|
if (iVar4 < iVar3) goto LAB_0047f415;
|
|
|
|
*(undefined4 *)(param_1 + 0x704) = 0;
|
|
|
|
goto LAB_0047f420;
|
|
|
|
case 0x100003b0:
|
|
|
|
iVar4 = *(int *)(param_1 + 0x71c) + -1;
|
|
|
|
LAB_0047fa9f:
|
|
|
|
*(int *)(param_1 + 0x71c) = iVar4;
|
|
|
|
if (iVar4 < *(int *)(param_1 + 0x718)) {
|
|
|
|
if (iVar4 < 0) {
|
|
|
|
*(int *)(param_1 + 0x71c) = *(int *)(param_1 + 0x718) + -1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*(undefined4 *)(param_1 + 0x71c) = 0;
|
|
|
|
}
|
|
|
|
iVar4 = FUN_0055e1e0();
|
|
|
|
*(undefined4 *)(iVar4 + 0xdc) = *(undefined4 *)(param_1 + 0x71c);
|
|
|
|
break;
|
|
|
|
case 0x100003b1:
|
|
|
|
iVar4 = *(int *)(param_1 + 0x734) + -1;
|
|
|
|
LAB_0047faed:
|
|
|
|
*(int *)(param_1 + 0x734) = iVar4;
|
|
|
|
if (iVar4 < *(int *)(param_1 + 0x730)) {
|
|
|
|
if (iVar4 < 0) {
|
|
|
|
*(int *)(param_1 + 0x734) = *(int *)(param_1 + 0x730) + -1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*(undefined4 *)(param_1 + 0x734) = 0;
|
|
|
|
}
|
|
|
|
iVar4 = FUN_0055e1e0();
|
|
|
|
*(undefined4 *)(iVar4 + 0xe0) = *(undefined4 *)(param_1 + 0x734);
|
|
|
|
break;
|
|
|
|
case 0x100003b2:
|
|
|
|
iVar4 = *(int *)(param_1 + 0x74c) + -1;
|
|
|
|
LAB_0047fb3b:
|
|
|
|
*(int *)(param_1 + 0x74c) = iVar4;
|
|
|
|
if (iVar4 < *(int *)(param_1 + 0x748)) {
|
|
|
|
if (iVar4 < 0) {
|
|
|
|
*(int *)(param_1 + 0x74c) = *(int *)(param_1 + 0x748) + -1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*(undefined4 *)(param_1 + 0x74c) = 0;
|
|
|
|
}
|
|
|
|
iVar4 = FUN_0055e1e0();
|
|
|
|
*(undefined4 *)(iVar4 + 0xe4) = *(undefined4 *)(param_1 + 0x74c);
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
goto switchD_0047f302_caseD_1000030c;
|
|
|
|
case 0x100003b5:
|
|
|
|
iVar4 = *(int *)(param_1 + 0x77c) + -1;
|
|
|
|
*(int *)(param_1 + 0x77c) = iVar4;
|
|
|
|
if (iVar4 < *(int *)(param_1 + 0x778)) {
|
|
|
|
if ((iVar4 < 0) && (iVar4 != -1)) {
|
|
|
|
*(int *)(param_1 + 0x77c) = *(int *)(param_1 + 0x778) + -1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*(undefined4 *)(param_1 + 0x77c) = 0xffffffff;
|
|
|
|
}
|
|
|
|
iVar4 = FUN_0055e1e0();
|
|
|
|
FUN_005c6330();
|
|
|
|
*(undefined4 *)(param_1 + 0x784) = *(undefined4 *)(iVar4 + 0xf8);
|
|
|
|
*(undefined4 *)(param_1 + 0x780) = *(undefined4 *)(iVar4 + 0x114);
|
|
|
|
*(undefined8 *)(param_1 + 0x788) = *(undefined8 *)(iVar4 + 0x158);
|
|
|
|
break;
|
|
|
|
case 0x100003b6:
|
|
|
|
iVar4 = *(int *)(param_1 + 0x794) + -1;
|
|
|
|
*(int *)(param_1 + 0x794) = iVar4;
|
|
|
|
if (iVar4 < *(int *)(param_1 + 0x790)) {
|
|
|
|
if (iVar4 < 0) {
|
|
|
|
*(int *)(param_1 + 0x794) = *(int *)(param_1 + 0x790) + -1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*(undefined4 *)(param_1 + 0x794) = 0;
|
|
|
|
}
|
|
|
|
iVar4 = FUN_0055e1e0();
|
|
|
|
FUN_005c6460();
|
|
|
|
*(undefined4 *)(param_1 + 0x79c) = *(undefined4 *)(iVar4 + 0x100);
|
|
|
|
*(undefined4 *)(param_1 + 0x798) = *(undefined4 *)(iVar4 + 0x118);
|
|
|
|
*(undefined8 *)(param_1 + 0x7a0) = *(undefined8 *)(iVar4 + 0x160);
|
|
|
|
break;
|
|
|
|
case 0x100003b7:
|
|
|
|
iVar4 = *(int *)(param_1 + 0x7ac) + -1;
|
|
|
|
*(int *)(param_1 + 0x7ac) = iVar4;
|
|
|
|
if (iVar4 < *(int *)(param_1 + 0x7a8)) {
|
|
|
|
if (iVar4 < 0) {
|
|
|
|
*(int *)(param_1 + 0x7ac) = *(int *)(param_1 + 0x7a8) + -1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*(undefined4 *)(param_1 + 0x7ac) = 0;
|
|
|
|
}
|
|
|
|
iVar4 = FUN_0055e1e0();
|
|
|
|
FUN_005c6580();
|
|
|
|
*(undefined4 *)(param_1 + 0x7b4) = *(undefined4 *)(iVar4 + 0x108);
|
|
|
|
*(undefined4 *)(param_1 + 0x7b0) = *(undefined4 *)(iVar4 + 0x11c);
|
|
|
|
*(undefined8 *)(param_1 + 0x7b8) = *(undefined8 *)(iVar4 + 0x168);
|
|
|
|
break;
|
|
|
|
case 0x100003b8:
|
|
|
|
iVar4 = *(int *)(param_1 + 0x7c4) + -1;
|
|
|
|
*(int *)(param_1 + 0x7c4) = iVar4;
|
|
|
|
if (iVar4 < *(int *)(param_1 + 0x7c0)) {
|
|
|
|
if (iVar4 < 0) {
|
|
|
|
*(int *)(param_1 + 0x7c4) = *(int *)(param_1 + 0x7c0) + -1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*(undefined4 *)(param_1 + 0x7c4) = 0;
|
|
|
|
}
|
|
|
|
iVar4 = FUN_0055e1e0();
|
|
|
|
FUN_005c66a0();
|
|
|
|
*(undefined4 *)(param_1 + 0x7cc) = *(undefined4 *)(iVar4 + 0x110);
|
|
|
|
*(undefined4 *)(param_1 + 0x7c8) = *(undefined4 *)(iVar4 + 0x120);
|
|
|
|
*(undefined8 *)(param_1 + 2000) = *(undefined8 *)(iVar4 + 0x170);
|
|
|
|
}
|
|
|
|
LAB_0047f439:
|
|
|
|
FUN_0047e610();
|
|
|
|
FUN_00462420(param_2);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
case 0x1000030b:
|
|
|
|
if (param_2[2] == 1) {
|
|
|
|
iVar4 = (**(code **)(*(int *)param_2[1] + 0xa0))();
|
|
|
|
switch(*(undefined4 *)(iVar4 + 0x2e4)) {
|
|
|
|
case 0x100003af:
|
|
|
|
iVar3 = *(int *)(param_1 + 0x700);
|
|
|
|
iVar4 = *(int *)(param_1 + 0x704) + 1;
|
|
|
|
*(int *)(param_1 + 0x704) = iVar4;
|
|
|
|
if (iVar3 <= iVar4) goto LAB_0047fa89;
|
|
|
|
LAB_0047f415:
|
|
|
|
if (iVar4 < 0) {
|
|
|
|
*(int *)(param_1 + 0x704) = iVar3 + -1;
|
|
|
|
}
|
|
|
|
goto LAB_0047f420;
|
|
|
|
case 0x100003b0:
|
|
|
|
iVar4 = *(int *)(param_1 + 0x71c) + 1;
|
|
|
|
goto LAB_0047fa9f;
|
|
|
|
case 0x100003b1:
|
|
|
|
iVar4 = *(int *)(param_1 + 0x734) + 1;
|
|
|
|
goto LAB_0047faed;
|
|
|
|
case 0x100003b2:
|
|
|
|
iVar4 = *(int *)(param_1 + 0x74c) + 1;
|
|
|
|
goto LAB_0047fb3b;
|
|
|
|
default:
|
|
|
|
goto switchD_0047f302_caseD_1000030c;
|
|
|
|
case 0x100003b5:
|
|
|
|
iVar4 = *(int *)(param_1 + 0x77c) + 1;
|
|
|
|
*(int *)(param_1 + 0x77c) = iVar4;
|
|
|
|
if (iVar4 < *(int *)(param_1 + 0x778)) {
|
|
|
|
if ((iVar4 < 0) && (iVar4 != -1)) {
|
|
|
|
*(int *)(param_1 + 0x77c) = *(int *)(param_1 + 0x778) + -1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*(undefined4 *)(param_1 + 0x77c) = 0xffffffff;
|
|
|
|
}
|
|
|
|
iVar4 = FUN_0055e1e0();
|
|
|
|
FUN_005c6330();
|
|
|
|
*(undefined4 *)(param_1 + 0x784) = *(undefined4 *)(iVar4 + 0xf8);
|
|
|
|
*(undefined4 *)(param_1 + 0x780) = *(undefined4 *)(iVar4 + 0x114);
|
|
|
|
*(undefined8 *)(param_1 + 0x788) = *(undefined8 *)(iVar4 + 0x158);
|
|
|
|
break;
|
|
|
|
case 0x100003b6:
|
|
|
|
iVar4 = *(int *)(param_1 + 0x794) + 1;
|
|
|
|
*(int *)(param_1 + 0x794) = iVar4;
|
|
|
|
if (iVar4 < *(int *)(param_1 + 0x790)) {
|
|
|
|
if (iVar4 < 0) {
|
|
|
|
*(int *)(param_1 + 0x794) = *(int *)(param_1 + 0x790) + -1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*(undefined4 *)(param_1 + 0x794) = 0;
|
|
|
|
}
|
|
|
|
iVar4 = FUN_0055e1e0();
|
|
|
|
FUN_005c6460();
|
|
|
|
*(undefined4 *)(param_1 + 0x79c) = *(undefined4 *)(iVar4 + 0x100);
|
|
|
|
*(undefined4 *)(param_1 + 0x798) = *(undefined4 *)(iVar4 + 0x118);
|
|
|
|
*(undefined8 *)(param_1 + 0x7a0) = *(undefined8 *)(iVar4 + 0x160);
|
|
|
|
break;
|
|
|
|
case 0x100003b7:
|
|
|
|
iVar4 = *(int *)(param_1 + 0x7ac) + 1;
|
|
|
|
*(int *)(param_1 + 0x7ac) = iVar4;
|
|
|
|
if (iVar4 < *(int *)(param_1 + 0x7a8)) {
|
|
|
|
if (iVar4 < 0) {
|
|
|
|
*(int *)(param_1 + 0x7ac) = *(int *)(param_1 + 0x7a8) + -1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*(undefined4 *)(param_1 + 0x7ac) = 0;
|
|
|
|
}
|
|
|
|
iVar4 = FUN_0055e1e0();
|
|
|
|
FUN_005c6580();
|
|
|
|
*(undefined4 *)(param_1 + 0x7b4) = *(undefined4 *)(iVar4 + 0x108);
|
|
|
|
*(undefined4 *)(param_1 + 0x7b0) = *(undefined4 *)(iVar4 + 0x11c);
|
|
|
|
*(undefined8 *)(param_1 + 0x7b8) = *(undefined8 *)(iVar4 + 0x168);
|
|
|
|
break;
|
|
|
|
case 0x100003b8:
|
|
|
|
iVar4 = *(int *)(param_1 + 0x7c4) + 1;
|
|
|
|
*(int *)(param_1 + 0x7c4) = iVar4;
|
|
|
|
if (iVar4 < *(int *)(param_1 + 0x7c0)) {
|
|
|
|
if (iVar4 < 0) {
|
|
|
|
*(int *)(param_1 + 0x7c4) = *(int *)(param_1 + 0x7c0) + -1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*(undefined4 *)(param_1 + 0x7c4) = 0;
|
|
|
|
}
|
|
|
|
iVar4 = FUN_0055e1e0();
|
|
|
|
FUN_005c66a0();
|
|
|
|
*(undefined4 *)(param_1 + 0x7cc) = *(undefined4 *)(iVar4 + 0x110);
|
|
|
|
*(undefined4 *)(param_1 + 0x7c8) = *(undefined4 *)(iVar4 + 0x120);
|
|
|
|
*(undefined8 *)(param_1 + 2000) = *(undefined8 *)(iVar4 + 0x170);
|
|
|
|
}
|
|
|
|
goto LAB_0047f439;
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
case 0x1000030c:
|
|
|
|
case 0x1000030d:
|
|
|
|
case 0x1000030e:
|
|
|
|
case 0x10000318:
|
|
|
|
case 0x10000319:
|
|
|
|
case 0x1000031a:
|
|
|
|
case 0x1000031b:
|
|
|
|
case 0x1000031c:
|
|
|
|
case 0x1000031d:
|
|
|
|
case 0x1000031e:
|
|
|
|
case 0x1000031f:
|
|
|
|
case 0x10000320:
|
|
|
|
case 0x10000322:
|
|
|
|
case 0x10000327:
|
|
|
|
case 0x10000328:
|
|
|
|
case 0x10000329:
|
|
|
|
case 0x1000032a:
|
|
|
|
case 0x1000032b:
|
|
|
|
case 0x1000032c:
|
|
|
|
case 0x1000032d:
|
|
|
|
case 0x1000032e:
|
|
|
|
case 0x1000032f:
|
|
|
|
case 0x10000330:
|
|
|
|
case 0x10000331:
|
|
|
|
case 0x10000332:
|
|
|
|
case 0x10000333:
|
|
|
|
case 0x10000334:
|
|
|
|
case 0x10000335:
|
|
|
|
case 0x10000336:
|
|
|
|
case 0x10000337:
|
|
|
|
case 0x10000338:
|
|
|
|
case 0x10000339:
|
|
|
|
case 0x1000033a:
|
|
|
|
case 0x1000033b:
|
|
|
|
case 0x1000033c:
|
|
|
|
case 0x1000033d:
|
|
|
|
case 0x1000033e:
|
|
|
|
case 0x1000033f:
|
|
|
|
case 0x10000340:
|
|
|
|
case 0x10000341:
|
|
|
|
case 0x10000342:
|
|
|
|
case 0x10000343:
|
|
|
|
case 0x10000344:
|
|
|
|
case 0x10000345:
|
|
|
|
case 0x10000346:
|
|
|
|
case 0x10000347:
|
|
|
|
case 0x10000348:
|
|
|
|
case 0x10000349:
|
|
|
|
case 0x1000034a:
|
|
|
|
case 0x1000034b:
|
|
|
|
case 0x1000034c:
|
|
|
|
case 0x1000034d:
|
|
|
|
case 0x1000034e:
|
|
|
|
case 0x1000034f:
|
|
|
|
case 0x10000350:
|
|
|
|
case 0x10000351:
|
|
|
|
case 0x10000352:
|
|
|
|
case 0x10000353:
|
|
|
|
case 0x10000354:
|
|
|
|
case 0x10000355:
|
|
|
|
case 0x10000356:
|
|
|
|
case 0x10000357:
|
|
|
|
case 0x10000358:
|
|
|
|
case 0x10000359:
|
|
|
|
case 0x1000035a:
|
|
|
|
case 0x1000035b:
|
|
|
|
case 0x1000035c:
|
|
|
|
case 0x1000035d:
|
|
|
|
case 0x1000035e:
|
|
|
|
case 0x1000035f:
|
|
|
|
case 0x10000360:
|
|
|
|
case 0x10000361:
|
|
|
|
case 0x10000362:
|
|
|
|
case 0x10000363:
|
|
|
|
case 0x10000364:
|
|
|
|
case 0x10000365:
|
|
|
|
case 0x10000366:
|
|
|
|
case 0x10000367:
|
|
|
|
case 0x10000368:
|
|
|
|
case 0x10000369:
|
|
|
|
case 0x1000036a:
|
|
|
|
case 0x1000036b:
|
|
|
|
case 0x1000036c:
|
|
|
|
case 0x1000036d:
|
|
|
|
case 0x1000036e:
|
|
|
|
case 0x1000036f:
|
|
|
|
case 0x10000370:
|
|
|
|
case 0x10000371:
|
|
|
|
case 0x10000372:
|
|
|
|
case 0x10000373:
|
|
|
|
case 0x10000374:
|
|
|
|
case 0x10000375:
|
|
|
|
case 0x10000376:
|
|
|
|
case 0x10000377:
|
|
|
|
case 0x10000378:
|
|
|
|
case 0x10000379:
|
|
|
|
case 0x1000037a:
|
|
|
|
case 0x1000037b:
|
|
|
|
case 0x1000037c:
|
|
|
|
case 0x1000037d:
|
|
|
|
case 0x1000037e:
|
|
|
|
case 0x1000037f:
|
|
|
|
case 0x10000380:
|
|
|
|
case 0x10000381:
|
|
|
|
case 0x10000382:
|
|
|
|
case 0x10000383:
|
|
|
|
case 0x10000384:
|
|
|
|
case 0x10000385:
|
|
|
|
case 0x10000386:
|
|
|
|
case 0x10000387:
|
|
|
|
case 0x10000388:
|
|
|
|
case 0x10000389:
|
|
|
|
case 0x1000038a:
|
|
|
|
case 0x1000038b:
|
|
|
|
case 0x1000038c:
|
|
|
|
case 0x1000038d:
|
|
|
|
case 0x1000038e:
|
|
|
|
case 0x1000038f:
|
|
|
|
case 0x10000390:
|
|
|
|
case 0x10000391:
|
|
|
|
case 0x10000392:
|
|
|
|
case 0x10000393:
|
|
|
|
case 0x10000394:
|
|
|
|
case 0x10000395:
|
|
|
|
case 0x10000396:
|
|
|
|
case 0x10000397:
|
|
|
|
case 0x10000398:
|
|
|
|
case 0x10000399:
|
|
|
|
case 0x1000039a:
|
|
|
|
case 0x1000039b:
|
|
|
|
case 0x1000039c:
|
|
|
|
case 0x1000039d:
|
|
|
|
case 0x1000039e:
|
|
|
|
case 0x1000039f:
|
|
|
|
case 0x100003a0:
|
|
|
|
case 0x100003a1:
|
|
|
|
case 0x100003a2:
|
|
|
|
case 0x100003a3:
|
|
|
|
case 0x100003a4:
|
|
|
|
case 0x100003a5:
|
|
|
|
case 0x100003a6:
|
|
|
|
case 0x100003ab:
|
|
|
|
case 0x100003ac:
|
|
|
|
case 0x100003ad:
|
|
|
|
case 0x100003ae:
|
|
|
|
case 0x100003b4:
|
|
|
|
break;
|
|
|
|
case 0x1000030f:
|
|
|
|
if ((param_2[2] == 1) && (0 < *(int *)(param_1 + (*(int *)(param_1 + 0x670) + 0x4b) * 0x18))) {
|
|
|
|
FUN_0047e100();
|
|
|
|
FUN_00462420(param_2);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
case 0x10000310:
|
|
|
|
if ((param_2[2] == 1) && (1 < *(int *)(param_1 + (*(int *)(param_1 + 0x670) + 0x4b) * 0x18))) {
|
|
|
|
FUN_0047e100();
|
|
|
|
FUN_00462420(param_2);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
case 0x10000311:
|
|
|
|
if ((param_2[2] == 1) && (2 < *(int *)(param_1 + (*(int *)(param_1 + 0x670) + 0x4b) * 0x18))) {
|
|
|
|
FUN_0047e100();
|
|
|
|
FUN_00462420(param_2);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
case 0x10000312:
|
|
|
|
if ((param_2[2] == 1) && (3 < *(int *)(param_1 + (*(int *)(param_1 + 0x670) + 0x4b) * 0x18))) {
|
|
|
|
FUN_0047e100();
|
|
|
|
FUN_00462420(param_2);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
case 0x10000313:
|
|
|
|
if ((param_2[2] == 1) && (4 < *(int *)(param_1 + (*(int *)(param_1 + 0x670) + 0x4b) * 0x18))) {
|
|
|
|
FUN_0047e100();
|
|
|
|
FUN_00462420(param_2);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
case 0x10000314:
|
|
|
|
if ((param_2[2] == 1) && (5 < *(int *)(param_1 + (*(int *)(param_1 + 0x670) + 0x4b) * 0x18))) {
|
|
|
|
FUN_0047e100();
|
|
|
|
FUN_00462420(param_2);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
case 0x10000315:
|
|
|
|
if ((param_2[2] == 1) && (6 < *(int *)(param_1 + (*(int *)(param_1 + 0x670) + 0x4b) * 0x18))) {
|
|
|
|
FUN_0047e100();
|
|
|
|
FUN_00462420(param_2);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
case 0x10000316:
|
|
|
|
if ((param_2[2] == 1) && (7 < *(int *)(param_1 + (*(int *)(param_1 + 0x670) + 0x4b) * 0x18))) {
|
|
|
|
FUN_0047e100();
|
|
|
|
FUN_00462420(param_2);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
case 0x10000317:
|
|
|
|
if ((param_2[2] == 1) && (8 < *(int *)(param_1 + (*(int *)(param_1 + 0x670) + 0x4b) * 0x18))) {
|
|
|
|
FUN_0047e100();
|
|
|
|
FUN_00462420(param_2);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
case 0x10000321:
|
|
|
|
if (param_2[2] == 10) {
|
|
|
|
fVar1 = (float)(int)param_2[3];
|
|
|
|
if ((int)param_2[3] < 0) {
|
|
|
|
fVar1 = fVar1 + _DAT_0079920c;
|
|
|
|
}
|
|
|
|
fVar5 = (float10)FUN_0047cf80((double)(fVar1 * _DAT_0079a76c),0,0,0,0x3ff00000);
|
|
|
|
FUN_0047cc10((double)fVar5);
|
|
|
|
FUN_00462420(param_2);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
case 0x10000323:
|
|
|
|
iVar4 = param_2[2];
|
|
|
|
goto joined_r0x0047ffe3;
|
|
|
|
case 0x10000324:
|
|
|
|
iVar4 = param_2[2];
|
|
|
|
joined_r0x0047ffe3:
|
|
|
|
if (iVar4 == 1) {
|
|
|
|
FUN_0047cf00();
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
case 0x10000325:
|
|
|
|
if (param_2[2] == 1) {
|
|
|
|
FUN_0047d2b0();
|
|
|
|
FUN_00462420(param_2);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
case 0x10000326:
|
|
|
|
if (param_2[2] == 1) {
|
|
|
|
FUN_0047d400();
|
|
|
|
FUN_00462420(param_2);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
case 0x100003a7:
|
|
|
|
if (param_2[2] == 1) {
|
|
|
|
FUN_0055e1e0();
|
|
|
|
FUN_005c7480();
|
|
|
|
FUN_0047eca0();
|
|
|
|
cVar2 = FUN_004603a0();
|
|
|
|
if (cVar2 != '\0') {
|
|
|
|
FUN_004ef660();
|
|
|
|
FUN_00462420(param_2);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
case 0x100003a8:
|
|
|
|
if (param_2[2] == 1) {
|
|
|
|
FUN_0055e1e0();
|
|
|
|
FUN_005c7480();
|
|
|
|
FUN_0047eca0();
|
|
|
|
cVar2 = FUN_004603a0();
|
|
|
|
if (cVar2 != '\0') {
|
|
|
|
FUN_004ef660();
|
|
|
|
FUN_00462420(param_2);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
case 0x100003a9:
|
|
|
|
if (param_2[2] == 1) {
|
|
|
|
FUN_0047d860();
|
|
|
|
FUN_0047e610();
|
|
|
|
FUN_00462420(param_2);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
case 0x100003aa:
|
|
|
|
if (param_2[2] == 1) {
|
|
|
|
FUN_0047d860();
|
|
|
|
FUN_0047e610();
|
|
|
|
FUN_00462420(param_2);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
case 0x100003af:
|
|
|
|
if (param_2[2] == 1) {
|
|
|
|
iVar4 = *(int *)(param_1 + 0x704);
|
|
|
|
iVar3 = *(int *)(param_1 + 0x700);
|
|
|
|
if (iVar4 < iVar3) goto LAB_0047f415;
|
|
|
|
LAB_0047fa89:
|
|
|
|
*(undefined4 *)(param_1 + 0x704) = 0;
|
|
|
|
LAB_0047f420:
|
|
|
|
iVar4 = FUN_0055e1e0();
|
|
|
|
*(undefined4 *)(iVar4 + 0xf0) = *(undefined4 *)(param_1 + 0x704);
|
|
|
|
goto LAB_0047f439;
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
case 0x100003b0:
|
|
|
|
if (param_2[2] == 1) {
|
|
|
|
if (*(int *)(param_1 + 0x71c) < *(int *)(param_1 + 0x718)) {
|
|
|
|
if (*(int *)(param_1 + 0x71c) < 0) {
|
|
|
|
*(int *)(param_1 + 0x71c) = *(int *)(param_1 + 0x718) + -1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*(undefined4 *)(param_1 + 0x71c) = 0;
|
|
|
|
}
|
|
|
|
iVar4 = FUN_0055e1e0();
|
|
|
|
*(undefined4 *)(iVar4 + 0xdc) = *(undefined4 *)(param_1 + 0x71c);
|
|
|
|
FUN_0047e610();
|
|
|
|
FUN_00462420(param_2);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
case 0x100003b1:
|
|
|
|
if (param_2[2] == 1) {
|
|
|
|
if (*(int *)(param_1 + 0x734) < *(int *)(param_1 + 0x730)) {
|
|
|
|
if (*(int *)(param_1 + 0x734) < 0) {
|
|
|
|
*(int *)(param_1 + 0x734) = *(int *)(param_1 + 0x730) + -1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*(undefined4 *)(param_1 + 0x734) = 0;
|
|
|
|
}
|
|
|
|
iVar4 = FUN_0055e1e0();
|
|
|
|
*(undefined4 *)(iVar4 + 0xe0) = *(undefined4 *)(param_1 + 0x734);
|
|
|
|
FUN_0047e610();
|
|
|
|
FUN_00462420(param_2);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
case 0x100003b2:
|
|
|
|
if (param_2[2] == 1) {
|
|
|
|
if (*(int *)(param_1 + 0x74c) < *(int *)(param_1 + 0x748)) {
|
|
|
|
if (*(int *)(param_1 + 0x74c) < 0) {
|
|
|
|
*(int *)(param_1 + 0x74c) = *(int *)(param_1 + 0x748) + -1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*(undefined4 *)(param_1 + 0x74c) = 0;
|
|
|
|
}
|
|
|
|
iVar4 = FUN_0055e1e0();
|
|
|
|
*(undefined4 *)(iVar4 + 0xe4) = *(undefined4 *)(param_1 + 0x74c);
|
|
|
|
FUN_0047e610();
|
|
|
|
FUN_00462420(param_2);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
case 0x100003b3:
|
|
|
|
if (param_2[2] == 1) {
|
|
|
|
if (*(int *)(param_1 + 0x764) < *(int *)(param_1 + 0x760)) {
|
|
|
|
if (*(int *)(param_1 + 0x764) < 0) {
|
|
|
|
*(int *)(param_1 + 0x764) = *(int *)(param_1 + 0x760) + -1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*(undefined4 *)(param_1 + 0x764) = 0;
|
|
|
|
}
|
|
|
|
FUN_0055e1e0();
|
|
|
|
FUN_0047e610();
|
|
|
|
FUN_00462420(param_2);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
case 0x100003b5:
|
|
|
|
if (param_2[2] == 1) {
|
|
|
|
iVar4 = *(int *)(param_1 + 0x77c);
|
|
|
|
if (iVar4 < *(int *)(param_1 + 0x778)) {
|
|
|
|
if ((iVar4 < 0) && (iVar4 != -1)) {
|
|
|
|
*(int *)(param_1 + 0x77c) = *(int *)(param_1 + 0x778) + -1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*(undefined4 *)(param_1 + 0x77c) = 0xffffffff;
|
|
|
|
}
|
|
|
|
iVar4 = FUN_0055e1e0();
|
|
|
|
FUN_005c6330();
|
|
|
|
*(undefined4 *)(param_1 + 0x784) = *(undefined4 *)(iVar4 + 0xf8);
|
|
|
|
*(undefined4 *)(param_1 + 0x780) = *(undefined4 *)(iVar4 + 0x114);
|
|
|
|
*(undefined8 *)(param_1 + 0x788) = *(undefined8 *)(iVar4 + 0x158);
|
|
|
|
FUN_0047e610();
|
|
|
|
FUN_00462420(param_2);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
case 0x100003b6:
|
|
|
|
if (param_2[2] == 1) {
|
|
|
|
if (*(int *)(param_1 + 0x794) < *(int *)(param_1 + 0x790)) {
|
|
|
|
if (*(int *)(param_1 + 0x794) < 0) {
|
|
|
|
*(int *)(param_1 + 0x794) = *(int *)(param_1 + 0x790) + -1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*(undefined4 *)(param_1 + 0x794) = 0;
|
|
|
|
}
|
|
|
|
iVar4 = FUN_0055e1e0();
|
|
|
|
FUN_005c6460();
|
|
|
|
*(undefined4 *)(param_1 + 0x79c) = *(undefined4 *)(iVar4 + 0x100);
|
|
|
|
*(undefined4 *)(param_1 + 0x798) = *(undefined4 *)(iVar4 + 0x118);
|
|
|
|
*(undefined8 *)(param_1 + 0x7a0) = *(undefined8 *)(iVar4 + 0x160);
|
|
|
|
FUN_0047e610();
|
|
|
|
FUN_00462420(param_2);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
case 0x100003b7:
|
|
|
|
if (param_2[2] == 1) {
|
|
|
|
if (*(int *)(param_1 + 0x7ac) < *(int *)(param_1 + 0x7a8)) {
|
|
|
|
if (*(int *)(param_1 + 0x7ac) < 0) {
|
|
|
|
*(int *)(param_1 + 0x7ac) = *(int *)(param_1 + 0x7a8) + -1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*(undefined4 *)(param_1 + 0x7ac) = 0;
|
|
|
|
}
|
|
|
|
iVar4 = FUN_0055e1e0();
|
|
|
|
FUN_005c6580();
|
|
|
|
*(undefined4 *)(param_1 + 0x7b4) = *(undefined4 *)(iVar4 + 0x108);
|
|
|
|
*(undefined4 *)(param_1 + 0x7b0) = *(undefined4 *)(iVar4 + 0x11c);
|
|
|
|
*(undefined8 *)(param_1 + 0x7b8) = *(undefined8 *)(iVar4 + 0x168);
|
|
|
|
FUN_0047e610();
|
|
|
|
FUN_00462420(param_2);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
case 0x100003b8:
|
|
|
|
if (param_2[2] == 1) {
|
|
|
|
if (*(int *)(param_1 + 0x7c4) < *(int *)(param_1 + 0x7c0)) {
|
|
|
|
if (*(int *)(param_1 + 0x7c4) < 0) {
|
|
|
|
*(int *)(param_1 + 0x7c4) = *(int *)(param_1 + 0x7c0) + -1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*(undefined4 *)(param_1 + 0x7c4) = 0;
|
|
|
|
}
|
|
|
|
iVar4 = FUN_0055e1e0();
|
|
|
|
FUN_005c66a0();
|
|
|
|
*(undefined4 *)(param_1 + 0x7cc) = *(undefined4 *)(iVar4 + 0x110);
|
|
|
|
*(undefined4 *)(param_1 + 0x7c8) = *(undefined4 *)(iVar4 + 0x120);
|
|
|
|
*(undefined8 *)(param_1 + 2000) = *(undefined8 *)(iVar4 + 0x170);
|
|
|
|
FUN_0047e610();
|
|
|
|
FUN_00462420(param_2);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
goto switchD_0047f302_default;
|
|
|
|
}
|
|
|
|
switchD_0047f302_caseD_1000030c:
|
|
|
|
switchD_0047f302_default:
|
|
|
|
FUN_00462420(param_2);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|