Clean, self-contained extraction of the BattleTech-specific work from the
reverse-engineering workspace -- engine + game + content + build, with nothing
from Red Planet or the raw archive dumps. Builds green (Win32) and runs the
single-player drive->animate->target->fire->damage->destroy loop out of the box.
Layout:
engine/ MUNGA + MUNGA_L4 shared 2007 engine, carrying our BT render/loader
work (bgfload/L4D3D/L4VIDEO: BSL bit-slice decode, LOD/ground/shadow
models) + image codec; the minimal rp/ headers the audio HAL needs
game/ reconstructed BT logic + surviving-original BT source + fwd shims
+ WinMain launcher
content/ full runtime tree (BTL4.RES, VIDEO/, GAUGE/, AUDIO/, eggs, BTDPL.INI)
docs/ format specs + reconstruction ledgers
reference/ raw Ghidra pseudocode (recon source-of-truth) + decomp exporter
tools/ MP console emulator + map/resource scanners
One top-level CMake builds munga_engine lib + bt410_l4 game lib + btl4.exe.
All paths relativized (186 fwd shims + ~437 CMake abs paths -> repo-relative);
DXSDK is the one external, overridable via -DDXSDK. Verified: builds to a
byte-identical 2.27MB exe and runs combat (TARGET DESTROYED, 0 crashes) against
the bundled content.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
9983 lines
210 KiB
C
9983 lines
210 KiB
C
/* @00401000 file=? name=entry */
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
void entry(void)
|
|
|
|
{
|
|
int *piVar1;
|
|
int iVar2;
|
|
undefined4 *puVar3;
|
|
undefined2 in_FS;
|
|
undefined **ppuVar4;
|
|
|
|
_DAT_004e005d = DAT_004e0059 << 2;
|
|
puVar3 = &DAT_00521404;
|
|
for (iVar2 = 0x3f30; iVar2 != 0; iVar2 = iVar2 + -1) {
|
|
*(undefined1 *)puVar3 = 0;
|
|
puVar3 = (undefined4 *)((int)puVar3 + 1);
|
|
}
|
|
piVar1 = (int *)segment(in_FS,4);
|
|
iVar2 = *piVar1;
|
|
_DAT_004e0061 = *(undefined4 *)(iVar2 + -8);
|
|
_DAT_004e0065 = *(undefined4 *)(iVar2 + -4);
|
|
DAT_00524c68 = iVar2 + -4;
|
|
FUN_004d67cf(0);
|
|
ppuVar4 = &PTR_DAT_004e002c;
|
|
_DAT_004e006a = GetModuleHandleA((LPCSTR)0x0);
|
|
FUN_004df558((int)ppuVar4);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @0040106e file=? name=__GetExceptDLLinfo */
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
void __cdecl __GetExceptDLLinfo(undefined4 *param_1)
|
|
|
|
{
|
|
int unaff_FS_OFFSET;
|
|
|
|
/* 0x106e 1 __GetExceptDLLinfo */
|
|
_DAT_0051f718 = *(int *)(*(int *)(unaff_FS_OFFSET + 4) + -8) + 0x24;
|
|
*param_1 = 0x82727349;
|
|
param_1[1] = &DAT_0051f6fc;
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @0040109c file=? name=FUN_0040109c */
|
|
|
|
undefined4 __cdecl FUN_0040109c(int param_1,undefined4 param_2)
|
|
|
|
{
|
|
int iVar1;
|
|
char *pcVar2;
|
|
undefined4 *puVar3;
|
|
int *piVar4;
|
|
undefined4 *puVar5;
|
|
undefined4 extraout_ECX;
|
|
int extraout_EDX;
|
|
int iVar6;
|
|
int iVar7;
|
|
undefined8 uVar8;
|
|
undefined4 uVar9;
|
|
int local_8c [33];
|
|
undefined4 *local_8;
|
|
|
|
FUN_004dbb24(&DAT_00524e20,s_BattleTech_v4_10_004e037c,(char *)0x0);
|
|
FUN_004d9c38(&DAT_00524e20);
|
|
iVar1 = FUN_0047b2ec(param_1,param_2,&LAB_0047af8c);
|
|
if (iVar1 == 0) {
|
|
uVar9 = 1;
|
|
}
|
|
else {
|
|
FUN_00407218(local_8c,s_btl4_res_004e038d,&DAT_004e0070,3);
|
|
iVar1 = DAT_004fd550;
|
|
if (DAT_004fd550 < 1) {
|
|
puVar3 = (undefined4 *)FUN_00402298(0x28);
|
|
if (puVar3 == (undefined4 *)0x0) {
|
|
puVar3 = (undefined4 *)0x0;
|
|
}
|
|
else {
|
|
puVar3 = FUN_0044f29c(puVar3,DAT_0052140c);
|
|
}
|
|
puVar5 = (undefined4 *)FUN_00402298(0xd4);
|
|
if (puVar5 == (undefined4 *)0x0) {
|
|
piVar4 = (int *)0x0;
|
|
}
|
|
else {
|
|
piVar4 = FUN_004d34c4(puVar5,local_8c,0x3eb,&DAT_0051e8d8);
|
|
}
|
|
FUN_0044f318((int)puVar3,piVar4);
|
|
}
|
|
else {
|
|
iVar7 = 0x800000;
|
|
pcVar2 = (char *)FUN_004dee74(s_SPOOLSIZE_004e0396);
|
|
if (pcVar2 != (char *)0x0) {
|
|
FUN_004dbb24(&DAT_00524e20,s_Spool_size___004e03a0,(char *)0x0);
|
|
FUN_004dbb24(&DAT_00524e20,pcVar2,(char *)0x0);
|
|
FUN_004d9c38(&DAT_00524e20);
|
|
iVar7 = FUN_004dd1e0(pcVar2);
|
|
if (iVar7 == 0) {
|
|
iVar7 = 0x800000;
|
|
}
|
|
}
|
|
uVar9 = 0x38;
|
|
uVar8 = FUN_00402298(0x38);
|
|
iVar6 = (int)((ulonglong)uVar8 >> 0x20);
|
|
if ((undefined4 *)uVar8 == (undefined4 *)0x0) {
|
|
puVar3 = (undefined4 *)0x0;
|
|
}
|
|
else {
|
|
uVar9 = 1;
|
|
if (iVar1 != 2) {
|
|
uVar9 = 2;
|
|
}
|
|
puVar3 = FUN_0044f8b8((undefined4 *)uVar8,DAT_0052140c,uVar9,iVar7);
|
|
uVar9 = extraout_ECX;
|
|
iVar6 = extraout_EDX;
|
|
}
|
|
uVar8 = FUN_0044fa14(uVar9,iVar6,(int)puVar3);
|
|
if ((int)uVar8 != 0) {
|
|
local_8 = (undefined4 *)FUN_00402298(0xd8);
|
|
if (local_8 == (undefined4 *)0x0) {
|
|
piVar4 = (int *)0x0;
|
|
}
|
|
else {
|
|
piVar4 = FUN_004d3be4(local_8,local_8c,(int)uVar8);
|
|
}
|
|
FUN_0044f318((int)puVar3,piVar4);
|
|
}
|
|
if (iVar1 == 1) {
|
|
puVar5 = (undefined4 *)FUN_00402298(0xd8);
|
|
if (puVar5 == (undefined4 *)0x0) {
|
|
piVar4 = (int *)0x0;
|
|
}
|
|
else {
|
|
piVar4 = FUN_0047c3fc(puVar5,local_8c,1);
|
|
}
|
|
FUN_0044f318((int)puVar3,piVar4);
|
|
}
|
|
}
|
|
FUN_0044f344((int)puVar3);
|
|
if (puVar3 != (undefined4 *)0x0) {
|
|
(**(code **)*puVar3)(puVar3,3);
|
|
}
|
|
FUN_00407354(local_8c,2);
|
|
uVar9 = DAT_004efc98;
|
|
}
|
|
return uVar9;
|
|
}
|
|
|
|
|
|
|
|
/* @004012a8 file=? name=FUN_004012a8 */
|
|
|
|
undefined4 * __cdecl FUN_004012a8(undefined4 *param_1,int param_2)
|
|
|
|
{
|
|
FUN_004194d8(param_1,param_2);
|
|
*param_1 = &PTR_FUN_004e0628;
|
|
return param_1;
|
|
}
|
|
|
|
|
|
|
|
/* @004012c7 file=? name=FUN_004012c7 */
|
|
|
|
undefined4 * __cdecl FUN_004012c7(undefined4 *param_1,int param_2)
|
|
|
|
{
|
|
FUN_004194d8(param_1,param_2);
|
|
*param_1 = &PTR_FUN_004e0628;
|
|
return param_1;
|
|
}
|
|
|
|
|
|
|
|
/* @004012e6 file=? name=FUN_004012e6 */
|
|
|
|
void __cdecl FUN_004012e6(int *param_1,byte param_2)
|
|
|
|
{
|
|
if (param_1 != (int *)0x0) {
|
|
*param_1 = (int)&PTR_FUN_004e0628;
|
|
FUN_0041951c(param_1,0);
|
|
if ((param_2 & 1) != 0) {
|
|
FUN_004022d0(param_1);
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @00401312 file=? name=FUN_00401312 */
|
|
|
|
undefined4 * __cdecl FUN_00401312(undefined4 *param_1,int param_2)
|
|
|
|
{
|
|
FUN_004194d8(param_1,param_2);
|
|
*param_1 = &PTR_FUN_004e05cc;
|
|
return param_1;
|
|
}
|
|
|
|
|
|
|
|
/* @00401331 file=? name=FUN_00401331 */
|
|
|
|
undefined4 * __cdecl FUN_00401331(undefined4 *param_1,int param_2)
|
|
|
|
{
|
|
FUN_004194d8(param_1,param_2);
|
|
*param_1 = &PTR_FUN_004e05cc;
|
|
return param_1;
|
|
}
|
|
|
|
|
|
|
|
/* @00401350 file=? name=FUN_00401350 */
|
|
|
|
void __cdecl FUN_00401350(int *param_1,byte param_2)
|
|
|
|
{
|
|
if (param_1 != (int *)0x0) {
|
|
*param_1 = (int)&PTR_FUN_004e05cc;
|
|
FUN_0041951c(param_1,0);
|
|
if ((param_2 & 1) != 0) {
|
|
FUN_004022d0(param_1);
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @0040137c file=? name=FUN_0040137c */
|
|
|
|
undefined4 * __cdecl FUN_0040137c(undefined4 *param_1,int param_2)
|
|
|
|
{
|
|
FUN_004194d8(param_1,param_2);
|
|
*param_1 = &PTR_FUN_004e0570;
|
|
return param_1;
|
|
}
|
|
|
|
|
|
|
|
/* @0040139b file=? name=FUN_0040139b */
|
|
|
|
undefined4 * __cdecl FUN_0040139b(undefined4 *param_1,int param_2)
|
|
|
|
{
|
|
FUN_004194d8(param_1,param_2);
|
|
*param_1 = &PTR_FUN_004e0570;
|
|
return param_1;
|
|
}
|
|
|
|
|
|
|
|
/* @004013ba file=? name=FUN_004013ba */
|
|
|
|
void __cdecl FUN_004013ba(int *param_1,byte param_2)
|
|
|
|
{
|
|
if (param_1 != (int *)0x0) {
|
|
*param_1 = (int)&PTR_FUN_004e0570;
|
|
FUN_0041951c(param_1,0);
|
|
if ((param_2 & 1) != 0) {
|
|
FUN_004022d0(param_1);
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @004013e6 file=? name=FUN_004013e6 */
|
|
|
|
undefined4 * __cdecl FUN_004013e6(undefined4 *param_1,int param_2)
|
|
|
|
{
|
|
FUN_004194d8(param_1,param_2);
|
|
*param_1 = &PTR_FUN_004e0514;
|
|
return param_1;
|
|
}
|
|
|
|
|
|
|
|
/* @00401405 file=? name=FUN_00401405 */
|
|
|
|
undefined4 * __cdecl FUN_00401405(undefined4 *param_1,int param_2)
|
|
|
|
{
|
|
FUN_004194d8(param_1,param_2);
|
|
*param_1 = &PTR_FUN_004e0514;
|
|
return param_1;
|
|
}
|
|
|
|
|
|
|
|
/* @00401424 file=? name=FUN_00401424 */
|
|
|
|
void __cdecl FUN_00401424(int *param_1,byte param_2)
|
|
|
|
{
|
|
if (param_1 != (int *)0x0) {
|
|
*param_1 = (int)&PTR_FUN_004e0514;
|
|
FUN_0041951c(param_1,0);
|
|
if ((param_2 & 1) != 0) {
|
|
FUN_004022d0(param_1);
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @00401450 file=? name=FUN_00401450 */
|
|
|
|
undefined4 * __cdecl FUN_00401450(undefined4 *param_1,int param_2)
|
|
|
|
{
|
|
FUN_004194d8(param_1,param_2);
|
|
*param_1 = &PTR_FUN_004e04b8;
|
|
return param_1;
|
|
}
|
|
|
|
|
|
|
|
/* @0040146f file=? name=FUN_0040146f */
|
|
|
|
undefined4 * __cdecl FUN_0040146f(undefined4 *param_1,int param_2)
|
|
|
|
{
|
|
FUN_004194d8(param_1,param_2);
|
|
*param_1 = &PTR_FUN_004e04b8;
|
|
return param_1;
|
|
}
|
|
|
|
|
|
|
|
/* @0040148e file=? name=FUN_0040148e */
|
|
|
|
void __cdecl FUN_0040148e(int *param_1,byte param_2)
|
|
|
|
{
|
|
if (param_1 != (int *)0x0) {
|
|
*param_1 = (int)&PTR_FUN_004e04b8;
|
|
FUN_0041951c(param_1,0);
|
|
if ((param_2 & 1) != 0) {
|
|
FUN_004022d0(param_1);
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @004014ba file=? name=FUN_004014ba */
|
|
|
|
undefined4 * __cdecl FUN_004014ba(undefined4 *param_1,int param_2)
|
|
|
|
{
|
|
FUN_00418398(param_1,param_2);
|
|
*param_1 = &PTR_FUN_004e0464;
|
|
return param_1;
|
|
}
|
|
|
|
|
|
|
|
/* @004014d9 file=? name=FUN_004014d9 */
|
|
|
|
undefined4 * __cdecl FUN_004014d9(undefined4 *param_1,int param_2)
|
|
|
|
{
|
|
FUN_00418398(param_1,param_2);
|
|
*param_1 = &PTR_FUN_004e0464;
|
|
return param_1;
|
|
}
|
|
|
|
|
|
|
|
/* @004014f8 file=? name=FUN_004014f8 */
|
|
|
|
undefined4 * __cdecl FUN_004014f8(undefined4 *param_1,int param_2)
|
|
|
|
{
|
|
FUN_004183c0(param_1,param_2);
|
|
*param_1 = &PTR_FUN_004e0464;
|
|
return param_1;
|
|
}
|
|
|
|
|
|
|
|
/* @00401517 file=? name=FUN_00401517 */
|
|
|
|
void __cdecl FUN_00401517(int *param_1,byte param_2)
|
|
|
|
{
|
|
if (param_1 != (int *)0x0) {
|
|
*param_1 = (int)&PTR_FUN_004e0464;
|
|
FUN_004183ec(param_1,0);
|
|
if ((param_2 & 1) != 0) {
|
|
FUN_004022d0(param_1);
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @00401543 file=? name=FUN_00401543 */
|
|
|
|
undefined4 * __cdecl FUN_00401543(undefined4 *param_1,undefined4 param_2)
|
|
|
|
{
|
|
FUN_004179d4(param_1,param_2);
|
|
*param_1 = &PTR_FUN_004e045c;
|
|
return param_1;
|
|
}
|
|
|
|
|
|
|
|
/* @00401562 file=? name=FUN_00401562 */
|
|
|
|
void __cdecl FUN_00401562(int *param_1,byte param_2)
|
|
|
|
{
|
|
if (param_1 != (int *)0x0) {
|
|
*param_1 = (int)&PTR_FUN_004e045c;
|
|
FUN_004179f8(param_1,0);
|
|
if ((param_2 & 1) != 0) {
|
|
FUN_004022d0(param_1);
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @0040158e file=? name=FUN_0040158e */
|
|
|
|
undefined4 * __cdecl FUN_0040158e(undefined4 *param_1,undefined4 param_2)
|
|
|
|
{
|
|
FUN_00417be0(param_1,param_2);
|
|
*param_1 = &PTR_FUN_004e0454;
|
|
return param_1;
|
|
}
|
|
|
|
|
|
|
|
/* @004015ad file=? name=FUN_004015ad */
|
|
|
|
void __cdecl FUN_004015ad(int *param_1,byte param_2)
|
|
|
|
{
|
|
if (param_1 != (int *)0x0) {
|
|
*param_1 = (int)&PTR_FUN_004e0454;
|
|
FUN_00417c0c(param_1,0);
|
|
if ((param_2 & 1) != 0) {
|
|
FUN_004022d0(param_1);
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @004015d9 file=? name=FUN_004015d9 */
|
|
|
|
undefined4 * __cdecl FUN_004015d9(undefined4 *param_1,int param_2)
|
|
|
|
{
|
|
FUN_00417d00(param_1,param_2);
|
|
*param_1 = &PTR_FUN_004e0404;
|
|
return param_1;
|
|
}
|
|
|
|
|
|
|
|
/* @004015f8 file=? name=FUN_004015f8 */
|
|
|
|
undefined4 * __cdecl FUN_004015f8(undefined4 *param_1,int param_2)
|
|
|
|
{
|
|
FUN_00417d00(param_1,param_2);
|
|
*param_1 = &PTR_FUN_004e0404;
|
|
return param_1;
|
|
}
|
|
|
|
|
|
|
|
/* @00401617 file=? name=FUN_00401617 */
|
|
|
|
undefined4 * __cdecl FUN_00401617(undefined4 *param_1,int param_2)
|
|
|
|
{
|
|
FUN_00417d28(param_1,param_2);
|
|
*param_1 = &PTR_FUN_004e0404;
|
|
return param_1;
|
|
}
|
|
|
|
|
|
|
|
/* @00401636 file=? name=FUN_00401636 */
|
|
|
|
void __cdecl FUN_00401636(int *param_1,byte param_2)
|
|
|
|
{
|
|
if (param_1 != (int *)0x0) {
|
|
*param_1 = (int)&PTR_FUN_004e0404;
|
|
FUN_00417d54(param_1,0);
|
|
if ((param_2 & 1) != 0) {
|
|
FUN_004022d0(param_1);
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @00401662 file=? name=FUN_00401662 */
|
|
|
|
undefined4 * __cdecl FUN_00401662(undefined4 *param_1,int param_2)
|
|
|
|
{
|
|
FUN_00418398(param_1,param_2);
|
|
*param_1 = &PTR_FUN_004e03b0;
|
|
return param_1;
|
|
}
|
|
|
|
|
|
|
|
/* @00401681 file=? name=FUN_00401681 */
|
|
|
|
undefined4 * __cdecl FUN_00401681(undefined4 *param_1,int param_2)
|
|
|
|
{
|
|
FUN_00418398(param_1,param_2);
|
|
*param_1 = &PTR_FUN_004e03b0;
|
|
return param_1;
|
|
}
|
|
|
|
|
|
|
|
/* @004016a0 file=? name=FUN_004016a0 */
|
|
|
|
undefined4 * __cdecl FUN_004016a0(undefined4 *param_1,int param_2)
|
|
|
|
{
|
|
FUN_004183c0(param_1,param_2);
|
|
*param_1 = &PTR_FUN_004e03b0;
|
|
return param_1;
|
|
}
|
|
|
|
|
|
|
|
/* @004016bf file=? name=FUN_004016bf */
|
|
|
|
void __cdecl FUN_004016bf(int *param_1,byte param_2)
|
|
|
|
{
|
|
if (param_1 != (int *)0x0) {
|
|
*param_1 = (int)&PTR_FUN_004e03b0;
|
|
FUN_004183ec(param_1,0);
|
|
if ((param_2 & 1) != 0) {
|
|
FUN_004022d0(param_1);
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @004016eb file=? name=FUN_004016eb */
|
|
|
|
void __cdecl FUN_004016eb(int *param_1)
|
|
|
|
{
|
|
(**(code **)(*param_1 + 0x38))(param_1);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @004016fa file=? name=FUN_004016fa */
|
|
|
|
void __cdecl FUN_004016fa(int *param_1)
|
|
|
|
{
|
|
(**(code **)(*param_1 + 0x3c))(param_1);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @00401709 file=? name=FUN_00401709 */
|
|
|
|
void __cdecl FUN_00401709(int *param_1)
|
|
|
|
{
|
|
(**(code **)(*param_1 + 0x40))(param_1);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @00401718 file=? name=FUN_00401718 */
|
|
|
|
void __cdecl FUN_00401718(int *param_1)
|
|
|
|
{
|
|
(**(code **)(*param_1 + 0x44))(param_1);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @00401727 file=? name=FUN_00401727 */
|
|
|
|
int * __cdecl FUN_00401727(int *param_1)
|
|
|
|
{
|
|
(**(code **)(*param_1 + 4))(param_1);
|
|
return param_1;
|
|
}
|
|
|
|
|
|
|
|
/* @0040173a file=? name=FUN_0040173a */
|
|
|
|
int * __cdecl FUN_0040173a(int *param_1)
|
|
|
|
{
|
|
(**(code **)(*param_1 + 8))(param_1);
|
|
return param_1;
|
|
}
|
|
|
|
|
|
|
|
/* @0040174d file=? name=FUN_0040174d */
|
|
|
|
int * __cdecl FUN_0040174d(int *param_1)
|
|
|
|
{
|
|
(**(code **)(*param_1 + 0xc))(param_1);
|
|
return param_1;
|
|
}
|
|
|
|
|
|
|
|
/* @00401760 file=? name=FUN_00401760 */
|
|
|
|
int * __cdecl FUN_00401760(int *param_1)
|
|
|
|
{
|
|
(**(code **)(*param_1 + 0x10))(param_1);
|
|
return param_1;
|
|
}
|
|
|
|
|
|
|
|
/* @00401774 file=? name=FUN_00401774 */
|
|
|
|
uint __cdecl FUN_00401774(LPCSTR param_1,int param_2)
|
|
|
|
{
|
|
char cVar1;
|
|
int iVar2;
|
|
uint uVar3;
|
|
uint uVar4;
|
|
char *pcVar5;
|
|
uint unaff_EDI;
|
|
short *psVar6;
|
|
|
|
iVar2 = DAT_004f0760;
|
|
if ((DAT_004f0760 == 0) || (param_2 != 0)) {
|
|
if (param_2 == 0) {
|
|
uVar3 = thunk_FUN_004d93ac(param_1,0x8301,0x80);
|
|
}
|
|
else {
|
|
uVar3 = thunk_FUN_004d93ac(param_1,0x8000,unaff_EDI);
|
|
}
|
|
}
|
|
else {
|
|
*(undefined2 *)(DAT_004f0760 + 6) = 0xc;
|
|
*(undefined2 *)(iVar2 + 10) = 0x54;
|
|
uVar3 = 0xffffffff;
|
|
do {
|
|
pcVar5 = param_1;
|
|
if (uVar3 == 0) break;
|
|
uVar3 = uVar3 - 1;
|
|
pcVar5 = param_1 + 1;
|
|
cVar1 = *param_1;
|
|
param_1 = pcVar5;
|
|
} while (cVar1 != '\0');
|
|
uVar3 = ~uVar3;
|
|
pcVar5 = pcVar5 + -uVar3;
|
|
psVar6 = (short *)(iVar2 + 0xc);
|
|
for (uVar4 = uVar3 >> 2; uVar4 != 0; uVar4 = uVar4 - 1) {
|
|
*(undefined4 *)psVar6 = *(undefined4 *)pcVar5;
|
|
pcVar5 = pcVar5 + 4;
|
|
psVar6 = psVar6 + 2;
|
|
}
|
|
for (uVar4 = uVar3 & 3; uVar4 != 0; uVar4 = uVar4 - 1) {
|
|
*(char *)psVar6 = *pcVar5;
|
|
pcVar5 = pcVar5 + 1;
|
|
psVar6 = (short *)((int)psVar6 + 1);
|
|
}
|
|
*(undefined2 *)(iVar2 + 0x5c) = 0x8302;
|
|
*(undefined2 *)(iVar2 + 0x5e) = 0x80;
|
|
FUN_00452100(0,uVar3);
|
|
uVar3 = (int)*(short *)(iVar2 + 0xc) | 0x10000;
|
|
}
|
|
return uVar3;
|
|
}
|
|
|
|
|
|
|
|
/* @00401810 file=? name=FUN_00401810 */
|
|
|
|
undefined8 __cdecl FUN_00401810(uint param_1)
|
|
|
|
{
|
|
int iVar1;
|
|
undefined4 uVar2;
|
|
undefined2 *puVar3;
|
|
undefined4 extraout_EDX;
|
|
undefined8 uVar4;
|
|
|
|
iVar1 = DAT_004f0760;
|
|
if ((param_1 & 0x10000) != 0) {
|
|
puVar3 = (undefined2 *)(DAT_004f0760 + 0xc);
|
|
*(undefined2 *)(DAT_004f0760 + 6) = 0xe;
|
|
*(undefined2 *)(iVar1 + 10) = 2;
|
|
*puVar3 = (short)param_1;
|
|
uVar4 = FUN_00452100(puVar3,iVar1);
|
|
return uVar4;
|
|
}
|
|
uVar2 = thunk_FUN_004d92c4(param_1);
|
|
return CONCAT44(extraout_EDX,uVar2);
|
|
}
|
|
|
|
|
|
|
|
/* @0040184c file=? name=FUN_0040184c */
|
|
|
|
DWORD __cdecl FUN_0040184c(uint param_1,LONG param_2,int param_3)
|
|
|
|
{
|
|
undefined2 *puVar1;
|
|
DWORD DVar2;
|
|
DWORD *pDVar3;
|
|
int iVar4;
|
|
int iVar5;
|
|
|
|
iVar5 = DAT_004f0760;
|
|
if ((param_1 & 0x10000) == 0) {
|
|
iVar5 = 2;
|
|
if (param_3 == 0) {
|
|
iVar5 = 0;
|
|
}
|
|
DVar2 = thunk_FUN_004d9334(param_1,param_2,iVar5);
|
|
}
|
|
else {
|
|
pDVar3 = (DWORD *)(DAT_004f0760 + 0xc);
|
|
puVar1 = (undefined2 *)(DAT_004f0760 + 0xc);
|
|
*(undefined2 *)(DAT_004f0760 + 6) = 0x13;
|
|
*(undefined2 *)(iVar5 + 10) = 8;
|
|
iVar4 = CONCAT22((short)((uint)iVar5 >> 0x10),2);
|
|
*puVar1 = (short)param_1;
|
|
if (param_3 == 0) {
|
|
iVar4 = iVar4 + -2;
|
|
}
|
|
*(short *)(iVar5 + 0xe) = (short)iVar4;
|
|
*(LONG *)(iVar5 + 0x10) = param_2;
|
|
FUN_00452100(pDVar3,iVar4);
|
|
DVar2 = *pDVar3;
|
|
}
|
|
return DVar2;
|
|
}
|
|
|
|
|
|
|
|
/* @004018cc file=? name=FUN_004018cc */
|
|
|
|
char * __cdecl FUN_004018cc(uint param_1,char *param_2,char *param_3)
|
|
|
|
{
|
|
int iVar1;
|
|
int iVar2;
|
|
char *pcVar3;
|
|
undefined4 extraout_ECX;
|
|
undefined4 extraout_EDX;
|
|
char *pcVar4;
|
|
undefined2 *puVar5;
|
|
undefined2 local_8;
|
|
|
|
iVar2 = DAT_004f0760;
|
|
if ((param_1 & 0x10000) == 0) {
|
|
param_3 = thunk_FUN_004d8b14(param_1,param_2,param_3);
|
|
}
|
|
else {
|
|
puVar5 = (undefined2 *)(DAT_004f0760 + 0xc);
|
|
iVar1 = DAT_004f0760;
|
|
for (pcVar4 = param_3; DAT_004f0760 = iVar1, pcVar4 != (char *)0x0;
|
|
pcVar4 = pcVar4 + -(int)pcVar3) {
|
|
pcVar3 = pcVar4;
|
|
if ((char *)0xff00 < pcVar4) {
|
|
pcVar3 = (char *)0xff00;
|
|
}
|
|
*(undefined2 *)(iVar1 + 6) = 0xd;
|
|
*(short *)(iVar1 + 10) = (short)pcVar3 + 4;
|
|
local_8 = (undefined2)param_1;
|
|
*puVar5 = local_8;
|
|
*(short *)(iVar2 + 0xe) = (short)pcVar3;
|
|
FUN_004d4918((undefined4 *)(iVar2 + 0x10),(undefined4 *)param_2,(uint)pcVar3);
|
|
FUN_00452100(extraout_ECX,extraout_EDX);
|
|
param_2 = param_2 + (int)pcVar3;
|
|
iVar1 = DAT_004f0760;
|
|
}
|
|
}
|
|
return param_3;
|
|
}
|
|
|
|
|
|
|
|
/* @00401970 file=? name=FUN_00401970 */
|
|
|
|
char * __cdecl FUN_00401970(uint param_1,char *param_2,char *param_3)
|
|
|
|
{
|
|
int iVar1;
|
|
int iVar2;
|
|
undefined4 *puVar3;
|
|
char *pcVar4;
|
|
char *pcVar5;
|
|
|
|
iVar2 = DAT_004f0760;
|
|
if ((param_1 & 0x10000) == 0) {
|
|
param_3 = thunk_FUN_004d892c(param_1,param_2,param_3);
|
|
}
|
|
else {
|
|
puVar3 = (undefined4 *)(DAT_004f0760 + 0xc);
|
|
iVar1 = DAT_004f0760;
|
|
for (pcVar5 = param_3; DAT_004f0760 = iVar1, pcVar5 != (char *)0x0;
|
|
pcVar5 = pcVar5 + -(int)pcVar4) {
|
|
pcVar4 = pcVar5;
|
|
if ((char *)0xff00 < pcVar5) {
|
|
pcVar4 = (char *)0xff00;
|
|
}
|
|
*(undefined2 *)(iVar1 + 6) = 0x12;
|
|
*(undefined2 *)(iVar1 + 10) = 4;
|
|
*(short *)puVar3 = (short)param_1;
|
|
*(short *)(iVar2 + 0xe) = (short)pcVar4;
|
|
FUN_00452100(puVar3,param_1);
|
|
FUN_004d4918((undefined4 *)param_2,puVar3,(uint)pcVar4);
|
|
param_2 = param_2 + (int)pcVar4;
|
|
iVar1 = DAT_004f0760;
|
|
}
|
|
}
|
|
return param_3;
|
|
}
|
|
|
|
|
|
|
|
/* @00401a1c file=? name=FUN_00401a1c */
|
|
|
|
int FUN_00401a1c(void)
|
|
|
|
{
|
|
int iVar1;
|
|
|
|
if (DAT_004e0688 == 0xffff) {
|
|
iVar1 = FUN_004d418d();
|
|
if (iVar1 < DAT_004e068c) {
|
|
DAT_004e0684 = DAT_004e0684 + -0x1800b0;
|
|
}
|
|
DAT_004e068c = iVar1;
|
|
return iVar1 - DAT_004e0684;
|
|
}
|
|
return DAT_004e0684;
|
|
}
|
|
|
|
|
|
|
|
/* @00401a5c file=? name=FUN_00401a5c */
|
|
|
|
undefined4 * __cdecl FUN_00401a5c(undefined4 *param_1)
|
|
|
|
{
|
|
char *pcVar1;
|
|
char *pcVar2;
|
|
char *pcVar3;
|
|
bool bVar4;
|
|
|
|
*param_1 = 0;
|
|
param_1[1] = 0;
|
|
DAT_004e0684 = 0;
|
|
pcVar2 = (char *)FUN_004dee74(s_L4TIMER_004e0690);
|
|
if (pcVar2 != (char *)0x0) {
|
|
pcVar3 = &DAT_004e0698;
|
|
do {
|
|
if (*pcVar2 != *pcVar3) goto LAB_00401ada;
|
|
bVar4 = true;
|
|
if (*pcVar2 == '\0') break;
|
|
pcVar1 = pcVar2 + 1;
|
|
if (*pcVar1 != pcVar3[1]) goto LAB_00401ada;
|
|
pcVar2 = pcVar2 + 2;
|
|
pcVar3 = pcVar3 + 2;
|
|
bVar4 = *pcVar1 == '\0';
|
|
} while (!bVar4);
|
|
if (bVar4) {
|
|
FUN_00481872(0xff00,0);
|
|
FUN_00481953(0x1c,&LAB_00401a14,&DAT_004e0688);
|
|
DAT_0052140c = 0x41e00000;
|
|
return param_1;
|
|
}
|
|
}
|
|
LAB_00401ada:
|
|
DAT_0052140c = 0x4191a6e0;
|
|
DAT_004e0684 = FUN_004d418d();
|
|
return param_1;
|
|
}
|
|
|
|
|
|
|
|
/* @00401afc file=? name=FUN_00401afc */
|
|
|
|
void FUN_00401afc(void)
|
|
|
|
{
|
|
if (DAT_004e0688 != 0xffff) {
|
|
FUN_00481c82(DAT_004e0688);
|
|
FUN_00481934();
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @00401b1c file=? name=FUN_00401b1c */
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
float10 FUN_00401b1c(void)
|
|
|
|
{
|
|
byte bVar1;
|
|
byte bVar2;
|
|
byte bVar3;
|
|
int iVar4;
|
|
float10 fVar5;
|
|
|
|
FUN_004d46cf(0x43,0xc2);
|
|
bVar1 = FUN_004d45d3(0x40);
|
|
bVar2 = FUN_004d45d3(0x40);
|
|
bVar3 = FUN_004d45d3(0x40);
|
|
iVar4 = ((int)(uint)bVar2 >> 1) + (uint)bVar3 * 0x80;
|
|
if (DAT_004e0688 == 0xffff) {
|
|
fVar5 = (float10)(int)(0xffff - (iVar4 + (bVar1 & 0x80) * 0x100)) * (float10)_DAT_00401bcc;
|
|
}
|
|
else {
|
|
if ((bVar1 & 0x80) != 0) {
|
|
iVar4 = (DAT_004fee74 >> 1) + iVar4;
|
|
}
|
|
fVar5 = (float10)((DAT_004fee74 - 1) - iVar4) / (float10)DAT_004fee74;
|
|
}
|
|
return fVar5;
|
|
}
|
|
|
|
|
|
|
|
/* @00401be8 file=? name=FUN_00401be8 */
|
|
|
|
bool __cdecl FUN_00401be8(uint *param_1)
|
|
|
|
{
|
|
uint *puVar1;
|
|
|
|
puVar1 = (uint *)param_1[1];
|
|
if ((puVar1 != (uint *)0x0) && (param_1 != (uint *)((int)puVar1 + (*puVar1 & 0xfffffffe)))) {
|
|
return false;
|
|
}
|
|
return param_1 == *(uint **)((int)param_1 + (*param_1 & 0xfffffffe) + 4);
|
|
}
|
|
|
|
|
|
|
|
/* @00401c18 file=? name=FUN_00401c18 */
|
|
|
|
int * __cdecl FUN_00401c18(int *param_1,int param_2,uint param_3)
|
|
|
|
{
|
|
int iVar1;
|
|
|
|
param_1[1] = param_2;
|
|
param_1[4] = param_3 + 3 & 0xfffffffc;
|
|
iVar1 = FUN_004022b0(param_3);
|
|
*param_1 = iVar1;
|
|
if (DAT_004e06c4 == -0x54eca86b) {
|
|
DAT_004e06c4 = -0x12edcf;
|
|
param_1[8] = 1;
|
|
}
|
|
else {
|
|
param_1[8] = 0;
|
|
}
|
|
FUN_00401f30(param_1);
|
|
return param_1;
|
|
}
|
|
|
|
|
|
|
|
/* @00401c70 file=? name=FUN_00401c70 */
|
|
|
|
void __cdecl FUN_00401c70(int *param_1,byte param_2)
|
|
|
|
{
|
|
if (param_1 != (int *)0x0) {
|
|
param_1[2] = 0;
|
|
param_1[3] = 0;
|
|
param_1[4] = 0;
|
|
if (param_1[8] != 0) {
|
|
DAT_004e06c4 = 0xab135795;
|
|
}
|
|
FUN_004022d0((int *)*param_1);
|
|
*param_1 = 0;
|
|
if ((param_2 & 1) != 0) {
|
|
FUN_004022d0(param_1);
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @00401cb8 file=? name=FUN_00401cb8 */
|
|
|
|
int __cdecl FUN_00401cb8(int param_1)
|
|
|
|
{
|
|
int *piVar1;
|
|
int iVar2;
|
|
|
|
iVar2 = 0;
|
|
piVar1 = *(int **)(param_1 + 0xc);
|
|
do {
|
|
piVar1 = (int *)piVar1[3];
|
|
iVar2 = iVar2 + *piVar1 + -8;
|
|
} while (piVar1 != *(int **)(param_1 + 0xc));
|
|
return iVar2;
|
|
}
|
|
|
|
|
|
|
|
/* @00401cdc file=? name=FUN_00401cdc */
|
|
|
|
int __cdecl FUN_00401cdc(int param_1)
|
|
|
|
{
|
|
return **(int **)(*(int *)(param_1 + 0xc) + 8) + -8;
|
|
}
|
|
|
|
|
|
|
|
/* @00401cf0 file=munga/heap.cpp name=FUN_00401cf0 */
|
|
|
|
uint * __cdecl FUN_00401cf0(int param_1,uint param_2)
|
|
|
|
{
|
|
char *pcVar1;
|
|
uint uVar2;
|
|
uint uVar3;
|
|
uint uVar4;
|
|
int *piVar5;
|
|
uint *puVar6;
|
|
uint uVar7;
|
|
uint *local_8;
|
|
|
|
if (DAT_004e06c4 == -0x12edcf) {
|
|
uVar7 = param_2 + 0xb & 0xfffffffc;
|
|
if (uVar7 < 0x10) {
|
|
uVar7 = 0x10;
|
|
}
|
|
local_8 = *(uint **)(param_1 + 0xc);
|
|
while (uVar2 = *local_8 - uVar7, (int)uVar2 < 0) {
|
|
local_8 = (uint *)local_8[3];
|
|
if (local_8 == *(uint **)(param_1 + 0xc)) {
|
|
uVar2 = *(uint *)(param_1 + 0x10);
|
|
uVar3 = FUN_00401cb8(param_1);
|
|
uVar4 = FUN_00401cdc(param_1);
|
|
pcVar1 = *(char **)(param_1 + 4);
|
|
FUN_004dbb24(&DAT_00524e20,s_Requested_004e06d3,(char *)0x0);
|
|
piVar5 = FUN_004db880(&DAT_00524e20,param_2);
|
|
FUN_004dbb24(piVar5,s_bytes_from_004e06de,(char *)0x0);
|
|
FUN_004dbb24(piVar5,pcVar1,(char *)0x0);
|
|
FUN_004dbb24(piVar5,s_Largest_block_remaining_is_004e06eb,(char *)0x0);
|
|
piVar5 = FUN_004db880(piVar5,uVar4);
|
|
FUN_004dbb24(piVar5,s_bytes_Total_remaining_memory_is_004e0708,(char *)0x0);
|
|
piVar5 = FUN_004db880(piVar5,uVar3);
|
|
FUN_004dbb24(piVar5,s_bytes_Heap_size_was_set_to_004e072a,(char *)0x0);
|
|
piVar5 = FUN_004db880(piVar5,uVar2);
|
|
FUN_004dbb24(piVar5,s_bytes_004e0747,(char *)0x0);
|
|
FUN_0040385c(s_No_remaining_block_large_enough__004e074f,
|
|
s_d__tesla_bt_munga_HEAP_CPP_004e0771,0x156);
|
|
}
|
|
}
|
|
if (uVar2 < 0x11) {
|
|
*local_8 = *local_8 | 1;
|
|
if (local_8 == (uint *)local_8[3]) {
|
|
*(undefined4 *)(param_1 + 0xc) = 0;
|
|
}
|
|
else {
|
|
if (local_8 == *(uint **)(param_1 + 0xc)) {
|
|
*(uint **)(param_1 + 0xc) = (uint *)local_8[3];
|
|
}
|
|
uVar7 = local_8[3];
|
|
uVar2 = local_8[2];
|
|
*(uint *)(uVar7 + 8) = uVar2;
|
|
*(uint *)(uVar2 + 0xc) = uVar7;
|
|
}
|
|
}
|
|
else {
|
|
piVar5 = (int *)((int)local_8 + *local_8 + 4);
|
|
*piVar5 = *piVar5 + uVar2;
|
|
*local_8 = uVar2;
|
|
puVar6 = (uint *)(uVar2 + (int)local_8);
|
|
*puVar6 = uVar7 | 1;
|
|
puVar6[1] = (uint)local_8;
|
|
FUN_00402164(param_1,local_8);
|
|
local_8 = puVar6;
|
|
}
|
|
local_8 = local_8 + 2;
|
|
}
|
|
else {
|
|
local_8 = (uint *)FUN_004de55c(param_2);
|
|
}
|
|
return local_8;
|
|
}
|
|
|
|
|
|
|
|
/* @00401ec8 file=? name=FUN_00401ec8 */
|
|
|
|
void __cdecl FUN_00401ec8(int param_1,int *param_2)
|
|
|
|
{
|
|
uint *puVar1;
|
|
uint *puVar2;
|
|
|
|
if (DAT_004e06c4 == -0x12edcf) {
|
|
puVar1 = (uint *)(param_2 + -2);
|
|
FUN_00402230(param_1,puVar1);
|
|
puVar2 = (uint *)param_2[-1];
|
|
if ((puVar2 == (uint *)0x0) || ((*puVar2 & 1) != 0)) {
|
|
*puVar1 = *puVar1 & 0xfffffffe;
|
|
FUN_004020e8(param_1,puVar1);
|
|
}
|
|
else {
|
|
*puVar2 = *puVar2 + (*puVar1 & 0xfffffffe);
|
|
*(uint **)((int)puVar2 + *puVar2 + 4) = puVar2;
|
|
FUN_00402164(param_1,puVar2);
|
|
}
|
|
}
|
|
else {
|
|
FUN_004de420(param_2);
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @00401f30 file=? name=FUN_00401f30 */
|
|
|
|
void __cdecl FUN_00401f30(int *param_1)
|
|
|
|
{
|
|
int *piVar1;
|
|
undefined4 *puVar2;
|
|
int iVar3;
|
|
|
|
piVar1 = (int *)*param_1;
|
|
puVar2 = (undefined4 *)((int)piVar1 + param_1[4] + -0x10 & 0xfffffffc);
|
|
param_1[2] = (int)puVar2;
|
|
*puVar2 = 1;
|
|
puVar2[3] = 0;
|
|
puVar2[2] = 0;
|
|
puVar2[1] = piVar1;
|
|
param_1[2] = (int)piVar1;
|
|
*piVar1 = (int)puVar2 - (int)piVar1;
|
|
piVar1[1] = 0;
|
|
param_1[3] = 0;
|
|
FUN_004020e8((int)param_1,(uint *)param_1[2]);
|
|
iVar3 = FUN_00401cb8((int)param_1);
|
|
param_1[5] = iVar3;
|
|
param_1[4] = iVar3;
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @00401f90 file=? name=FUN_00401f90 */
|
|
|
|
undefined4 __cdecl FUN_00401f90(int param_1,int param_2,int param_3,int param_4)
|
|
|
|
{
|
|
bool bVar1;
|
|
undefined4 uVar2;
|
|
undefined3 extraout_var;
|
|
uint uVar3;
|
|
char *pcVar4;
|
|
uint *puVar5;
|
|
undefined8 uVar6;
|
|
uint *puVar7;
|
|
|
|
puVar5 = *(uint **)(param_1 + 8);
|
|
if ((puVar5 == (uint *)0x0) || (DAT_004e06c4 != -0x12edcf)) {
|
|
uVar2 = 0;
|
|
}
|
|
else {
|
|
for (; *puVar5 != 1; puVar5 = (uint *)((*puVar5 & 0xfffffffe) + (int)puVar5)) {
|
|
bVar1 = FUN_00401be8(puVar5);
|
|
if (CONCAT31(extraout_var,bVar1) == 0) {
|
|
return 0;
|
|
}
|
|
if ((*puVar5 & 1) == 0) {
|
|
if ((puVar5 != *(uint **)(puVar5[2] + 0xc)) || (puVar5 != *(uint **)(puVar5[3] + 8))) {
|
|
return 0;
|
|
}
|
|
if (((puVar5 != *(uint **)(param_1 + 0xc)) && (*puVar5 < *(uint *)puVar5[2])) ||
|
|
((*(uint **)(param_1 + 0xc) != (uint *)puVar5[3] && (*(uint *)puVar5[3] < *puVar5)))) {
|
|
return 0;
|
|
}
|
|
}
|
|
uVar3 = *puVar5 & 1;
|
|
if (((param_2 != 0) && ((uVar3 == 0 || (param_3 == 0)))) && ((uVar3 != 0 || (param_4 == 0))))
|
|
{
|
|
if (uVar3 == 0) {
|
|
pcVar4 = &DAT_004e0796;
|
|
}
|
|
else {
|
|
pcVar4 = s_Allocated_004e078c;
|
|
}
|
|
FUN_004dbb24(&DAT_00524e20,pcVar4,(char *)0x0);
|
|
uVar3 = *puVar5;
|
|
puVar7 = puVar5;
|
|
FUN_004dbb24(&DAT_00524e20,s_block_at_004e079b,(char *)0x0);
|
|
uVar6 = FUN_004dbd4c(&DAT_00524e20,(uint)puVar7);
|
|
FUN_004dbb24((int *)uVar6,s___size___004e07a6,(char *)0x0);
|
|
FUN_004db880((int *)uVar6,uVar3 & 0xfffffffe);
|
|
FUN_004d9c38(&DAT_00524e20);
|
|
}
|
|
}
|
|
if (param_2 != 0) {
|
|
FUN_004d9c38(&DAT_00524e20);
|
|
}
|
|
uVar2 = 1;
|
|
}
|
|
return uVar2;
|
|
}
|
|
|
|
|
|
|
|
/* @004020e8 file=? name=FUN_004020e8 */
|
|
|
|
void __cdecl FUN_004020e8(int param_1,uint *param_2)
|
|
|
|
{
|
|
uint uVar1;
|
|
uint uVar2;
|
|
uint *puVar3;
|
|
|
|
if (*(int *)(param_1 + 0xc) == 0) {
|
|
*(uint **)(param_1 + 0xc) = param_2;
|
|
param_2[3] = (uint)param_2;
|
|
param_2[2] = (uint)param_2;
|
|
return;
|
|
}
|
|
puVar3 = *(uint **)(param_1 + 0xc);
|
|
if (*param_2 < *puVar3) {
|
|
*(uint **)(param_1 + 0xc) = param_2;
|
|
}
|
|
else {
|
|
do {
|
|
puVar3 = (uint *)puVar3[3];
|
|
if (puVar3 == *(uint **)(param_1 + 0xc)) break;
|
|
} while (*puVar3 < *param_2);
|
|
}
|
|
uVar1 = puVar3[2];
|
|
uVar2 = *(uint *)(uVar1 + 0xc);
|
|
param_2[3] = uVar2;
|
|
param_2[2] = uVar1;
|
|
*(uint **)(uVar1 + 0xc) = param_2;
|
|
*(uint **)(uVar2 + 8) = param_2;
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @00402134 file=? name=FUN_00402134 */
|
|
|
|
void __cdecl FUN_00402134(int param_1,int param_2)
|
|
|
|
{
|
|
int iVar1;
|
|
int iVar2;
|
|
|
|
if (param_2 == *(int *)(param_2 + 0xc)) {
|
|
*(undefined4 *)(param_1 + 0xc) = 0;
|
|
return;
|
|
}
|
|
if (param_2 == *(int *)(param_1 + 0xc)) {
|
|
*(int *)(param_2 + 0xc) = *(int *)(param_1 + 0xc);
|
|
}
|
|
iVar1 = *(int *)(param_2 + 0xc);
|
|
iVar2 = *(int *)(param_2 + 8);
|
|
*(int *)(iVar1 + 8) = iVar2;
|
|
*(int *)(iVar2 + 0xc) = iVar1;
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @00402164 file=? name=FUN_00402164 */
|
|
|
|
void __cdecl FUN_00402164(int param_1,uint *param_2)
|
|
|
|
{
|
|
uint uVar1;
|
|
uint uVar2;
|
|
uint uVar3;
|
|
uint *puVar4;
|
|
uint *puVar5;
|
|
uint *puVar6;
|
|
|
|
uVar1 = *param_2;
|
|
puVar4 = (uint *)param_2[3];
|
|
if (puVar4 == (uint *)param_2[2]) {
|
|
if (param_2 != puVar4) {
|
|
if (uVar1 <= *puVar4) {
|
|
puVar4 = param_2;
|
|
}
|
|
*(uint **)(param_1 + 0xc) = puVar4;
|
|
}
|
|
}
|
|
else if (((*puVar4 < uVar1) && (puVar4 != *(uint **)(param_1 + 0xc))) ||
|
|
((puVar4 = (uint *)param_2[2], uVar1 < *puVar4 && (param_2 != *(uint **)(param_1 + 0xc))))
|
|
) {
|
|
if (param_2 == *(uint **)(param_1 + 0xc)) {
|
|
*(uint *)(param_1 + 0xc) = param_2[3];
|
|
}
|
|
uVar2 = param_2[3];
|
|
uVar3 = param_2[2];
|
|
*(uint *)(uVar2 + 8) = uVar3;
|
|
*(uint *)(uVar3 + 0xc) = uVar2;
|
|
if (puVar4 == (uint *)param_2[2]) {
|
|
do {
|
|
puVar5 = puVar4;
|
|
puVar6 = (uint *)puVar5[2];
|
|
if (puVar5 == *(uint **)(param_1 + 0xc)) break;
|
|
puVar4 = puVar6;
|
|
} while (uVar1 < *puVar6);
|
|
}
|
|
else {
|
|
do {
|
|
puVar6 = puVar4;
|
|
puVar5 = (uint *)puVar6[3];
|
|
if (puVar5 == *(uint **)(param_1 + 0xc)) break;
|
|
puVar4 = puVar5;
|
|
} while (*puVar5 < uVar1);
|
|
}
|
|
param_2[2] = (uint)puVar6;
|
|
param_2[3] = (uint)puVar5;
|
|
puVar6[3] = (uint)param_2;
|
|
puVar5[2] = (uint)param_2;
|
|
if (uVar1 < **(uint **)(param_1 + 0xc)) {
|
|
*(uint **)(param_1 + 0xc) = param_2;
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @00402230 file=? name=FUN_00402230 */
|
|
|
|
void __cdecl FUN_00402230(int param_1,uint *param_2)
|
|
|
|
{
|
|
uint *puVar1;
|
|
uint uVar2;
|
|
|
|
puVar1 = (uint *)((*param_2 & 0xfffffffe) + (int)param_2);
|
|
if ((*puVar1 & 1) == 0) {
|
|
uVar2 = (*param_2 & 0xfffffffe) + *puVar1;
|
|
*param_2 = uVar2 | 1;
|
|
*(uint **)((int)param_2 + uVar2 + 4) = param_2;
|
|
if (puVar1 == (uint *)puVar1[3]) {
|
|
*(undefined4 *)(param_1 + 0xc) = 0;
|
|
}
|
|
else {
|
|
if (puVar1 == *(uint **)(param_1 + 0xc)) {
|
|
*(uint *)(param_1 + 0xc) = puVar1[3];
|
|
}
|
|
uVar2 = puVar1[3];
|
|
*(uint *)(uVar2 + 8) = puVar1[2];
|
|
*(uint *)(puVar1[2] + 0xc) = uVar2;
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @0040228c file=? name=FUN_0040228c */
|
|
|
|
undefined4 FUN_0040228c(void)
|
|
|
|
{
|
|
return 1;
|
|
}
|
|
|
|
|
|
|
|
/* @00402298 file=? name=FUN_00402298 */
|
|
|
|
void __cdecl FUN_00402298(uint param_1)
|
|
|
|
{
|
|
FUN_00401cf0(0x4e06a0,param_1);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @004022b0 file=? name=FUN_004022b0 */
|
|
|
|
void __cdecl FUN_004022b0(uint param_1)
|
|
|
|
{
|
|
FUN_00401cf0(0x4e06a0,param_1);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @004022c8 file=? name=FUN_004022c8 */
|
|
|
|
undefined4 __cdecl FUN_004022c8(undefined4 param_1,undefined4 param_2)
|
|
|
|
{
|
|
return param_2;
|
|
}
|
|
|
|
|
|
|
|
/* @004022d0 file=? name=FUN_004022d0 */
|
|
|
|
void __cdecl FUN_004022d0(int *param_1)
|
|
|
|
{
|
|
FUN_00401ec8(0x4e06a0,param_1);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @004022e8 file=? name=FUN_004022e8 */
|
|
|
|
void __cdecl FUN_004022e8(int *param_1)
|
|
|
|
{
|
|
FUN_00401ec8(0x4e06a0,param_1);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @00402300 file=? name=FUN_00402300 */
|
|
|
|
char * __cdecl FUN_00402300(char *param_1)
|
|
|
|
{
|
|
char cVar1;
|
|
int iVar2;
|
|
char *pcVar3;
|
|
uint uVar4;
|
|
uint uVar5;
|
|
char *pcVar6;
|
|
char *pcVar7;
|
|
|
|
iVar2 = FUN_004d4a78(param_1);
|
|
pcVar3 = (char *)FUN_004022b0(iVar2 + 1);
|
|
uVar4 = 0xffffffff;
|
|
do {
|
|
pcVar6 = param_1;
|
|
if (uVar4 == 0) break;
|
|
uVar4 = uVar4 - 1;
|
|
pcVar6 = param_1 + 1;
|
|
cVar1 = *param_1;
|
|
param_1 = pcVar6;
|
|
} while (cVar1 != '\0');
|
|
uVar4 = ~uVar4;
|
|
pcVar6 = pcVar6 + -uVar4;
|
|
pcVar7 = pcVar3;
|
|
for (uVar5 = uVar4 >> 2; uVar5 != 0; uVar5 = uVar5 - 1) {
|
|
*(undefined4 *)pcVar7 = *(undefined4 *)pcVar6;
|
|
pcVar6 = pcVar6 + 4;
|
|
pcVar7 = pcVar7 + 4;
|
|
}
|
|
for (uVar4 = uVar4 & 3; uVar4 != 0; uVar4 = uVar4 - 1) {
|
|
*pcVar7 = *pcVar6;
|
|
pcVar6 = pcVar6 + 1;
|
|
pcVar7 = pcVar7 + 1;
|
|
}
|
|
return pcVar3;
|
|
}
|
|
|
|
|
|
|
|
/* @00402370 file=? name=FUN_00402370 */
|
|
|
|
char * __cdecl FUN_00402370(char *param_1,char param_2)
|
|
|
|
{
|
|
int iVar1;
|
|
|
|
iVar1 = FUN_004d4a78(param_1);
|
|
param_1[iVar1] = param_2;
|
|
param_1[iVar1 + 1] = '\0';
|
|
return param_1;
|
|
}
|
|
|
|
|
|
|
|
/* @00402390 file=? name=FUN_00402390 */
|
|
|
|
int * __cdecl FUN_00402390(int *param_1,char *param_2)
|
|
|
|
{
|
|
char *local_8;
|
|
|
|
local_8 = param_2;
|
|
(**(code **)(*param_1 + 0x1c))(param_1,param_2,1);
|
|
for (; *local_8 != '\0'; local_8 = local_8 + 1) {
|
|
(**(code **)(*param_1 + 0x1c))(param_1,local_8,1);
|
|
}
|
|
return param_1;
|
|
}
|
|
|
|
|
|
|
|
/* @004023d4 file=? name=FUN_004023d4 */
|
|
|
|
void __cdecl FUN_004023d4(int *param_1,char *param_2)
|
|
|
|
{
|
|
int iVar1;
|
|
|
|
iVar1 = FUN_004d4a78(param_2);
|
|
(**(code **)(*param_1 + 0x20))(param_1,param_2,iVar1 + 1);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @004023f4 file=? name=FUN_004023f4 */
|
|
|
|
void __cdecl FUN_004023f4(undefined4 *param_1)
|
|
|
|
{
|
|
param_1[1] = 0;
|
|
*param_1 = 0;
|
|
param_1[2] = 0;
|
|
param_1[3] = 0;
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @00402410 file=? name=FUN_00402410 */
|
|
|
|
uint * __cdecl FUN_00402410(uint *param_1,uint *param_2)
|
|
|
|
{
|
|
undefined4 *puVar1;
|
|
|
|
param_1[1] = param_2[1];
|
|
*param_1 = *param_2;
|
|
if (param_2[2] == 0) {
|
|
param_1[2] = 0;
|
|
}
|
|
else {
|
|
puVar1 = (undefined4 *)FUN_004022b0(*param_1);
|
|
param_1[2] = (uint)puVar1;
|
|
FUN_004d4918(puVar1,(undefined4 *)param_2[2],param_1[1] + 1);
|
|
}
|
|
param_1[3] = 0;
|
|
return param_1;
|
|
}
|
|
|
|
|
|
|
|
/* @00402460 file=? name=FUN_00402460 */
|
|
|
|
uint * __cdecl FUN_00402460(uint *param_1,char *param_2)
|
|
|
|
{
|
|
uint uVar1;
|
|
undefined4 *puVar2;
|
|
|
|
if ((param_2 == (char *)0x0) || (*param_2 == '\0')) {
|
|
param_1[1] = 0;
|
|
*param_1 = 0;
|
|
param_1[2] = 0;
|
|
}
|
|
else {
|
|
uVar1 = FUN_004d4a78(param_2);
|
|
param_1[1] = uVar1;
|
|
*param_1 = ((DAT_004e07b0 + param_1[1]) / DAT_004e07b0) * DAT_004e07b0;
|
|
puVar2 = (undefined4 *)FUN_004022b0(*param_1);
|
|
param_1[2] = (uint)puVar2;
|
|
FUN_004d4918(puVar2,(undefined4 *)param_2,param_1[1] + 1);
|
|
}
|
|
param_1[3] = 0;
|
|
return param_1;
|
|
}
|
|
|
|
|
|
|
|
/* @004024d8 file=? name=FUN_004024d8 */
|
|
|
|
void __cdecl FUN_004024d8(int *param_1,byte param_2)
|
|
|
|
{
|
|
if (param_1 != (int *)0x0) {
|
|
if ((int *)param_1[2] != (int *)0x0) {
|
|
FUN_004022e8((int *)param_1[2]);
|
|
}
|
|
if ((param_2 & 1) != 0) {
|
|
FUN_004022d0(param_1);
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @00402504 file=? name=FUN_00402504 */
|
|
|
|
undefined4 FUN_00402504(void)
|
|
|
|
{
|
|
return 1;
|
|
}
|
|
|
|
|
|
|
|
/* @00402518 file=? name=FUN_00402518 */
|
|
|
|
uint * __cdecl FUN_00402518(uint *param_1,uint *param_2,uint *param_3)
|
|
|
|
{
|
|
uint uVar1;
|
|
|
|
if (param_3 == param_2) {
|
|
FUN_00402410(param_1,param_2);
|
|
}
|
|
else {
|
|
if ((int *)param_2[2] != (int *)0x0) {
|
|
FUN_004022e8((int *)param_2[2]);
|
|
}
|
|
param_2[1] = param_3[1];
|
|
uVar1 = *param_3;
|
|
*param_2 = uVar1;
|
|
if (uVar1 == 0) {
|
|
param_2[2] = 0;
|
|
}
|
|
else {
|
|
uVar1 = FUN_004022b0(*param_2);
|
|
param_2[2] = uVar1;
|
|
FUN_004d4918((undefined4 *)param_2[2],(undefined4 *)param_3[2],param_2[1] + 1);
|
|
}
|
|
FUN_00402410(param_1,param_2);
|
|
}
|
|
return param_1;
|
|
}
|
|
|
|
|
|
|
|
/* @00402590 file=? name=FUN_00402590 */
|
|
|
|
uint * __cdecl FUN_00402590(uint *param_1,uint *param_2,char *param_3)
|
|
|
|
{
|
|
uint uVar1;
|
|
|
|
if ((int *)param_2[2] != (int *)0x0) {
|
|
FUN_004022e8((int *)param_2[2]);
|
|
}
|
|
if ((param_3 == (char *)0x0) || (*param_3 == '\0')) {
|
|
param_2[1] = 0;
|
|
*param_2 = 0;
|
|
param_2[2] = 0;
|
|
}
|
|
else {
|
|
uVar1 = FUN_004d4a78(param_3);
|
|
param_2[1] = uVar1;
|
|
*param_2 = ((param_2[1] + DAT_004e07b0) / DAT_004e07b0) * DAT_004e07b0;
|
|
uVar1 = FUN_004022b0(*param_2);
|
|
param_2[2] = uVar1;
|
|
FUN_004d4918((undefined4 *)param_2[2],(undefined4 *)param_3,param_2[1] + 1);
|
|
}
|
|
FUN_00402410(param_1,param_2);
|
|
return param_1;
|
|
}
|
|
|
|
|
|
|
|
/* @00402624 file=? name=FUN_00402624 */
|
|
|
|
uint * __cdecl FUN_00402624(uint *param_1,int param_2,int param_3)
|
|
|
|
{
|
|
uint local_1c;
|
|
int local_18;
|
|
undefined4 *local_14;
|
|
uint local_c;
|
|
int local_8;
|
|
|
|
FUN_004023f4(&local_1c);
|
|
local_8 = *(int *)(param_2 + 4) + *(int *)(param_3 + 4);
|
|
if (local_8 == 0) {
|
|
FUN_00402410(param_1,&local_1c);
|
|
FUN_004024d8((int *)&local_1c,2);
|
|
}
|
|
else {
|
|
local_18 = 0;
|
|
local_1c = ((local_8 + DAT_004e07b0) / DAT_004e07b0) * DAT_004e07b0;
|
|
local_c = local_1c;
|
|
local_14 = (undefined4 *)FUN_004022b0(local_1c);
|
|
*(undefined1 *)local_14 = 0;
|
|
if (*(undefined4 **)(param_2 + 8) != (undefined4 *)0x0) {
|
|
FUN_004d4918(local_14,*(undefined4 **)(param_2 + 8),*(uint *)(param_2 + 4));
|
|
local_18 = *(int *)(param_2 + 4);
|
|
}
|
|
if (*(undefined4 **)(param_3 + 8) != (undefined4 *)0x0) {
|
|
FUN_004d4918((undefined4 *)((int)local_14 + local_18),*(undefined4 **)(param_3 + 8),
|
|
*(int *)(param_3 + 4) + 1);
|
|
local_18 = local_18 + *(int *)(param_3 + 4);
|
|
}
|
|
FUN_00402410(param_1,&local_1c);
|
|
FUN_004024d8((int *)&local_1c,2);
|
|
}
|
|
return param_1;
|
|
}
|
|
|
|
|
|
|
|
/* @00402718 file=? name=FUN_00402718 */
|
|
|
|
uint * __cdecl FUN_00402718(uint *param_1,uint *param_2,undefined1 param_3)
|
|
|
|
{
|
|
uint local_14;
|
|
uint local_10;
|
|
undefined4 *local_c;
|
|
|
|
FUN_004023f4(&local_14);
|
|
if (param_2[2] == 0) {
|
|
local_10 = 1;
|
|
local_14 = DAT_004e07b0;
|
|
local_c = (undefined4 *)FUN_004022b0(DAT_004e07b0);
|
|
*(undefined1 *)local_c = param_3;
|
|
*(undefined1 *)((int)local_c + 1) = 0;
|
|
}
|
|
else {
|
|
local_10 = param_2[1] + 1;
|
|
local_14 = *param_2;
|
|
if (local_10 == local_14) {
|
|
local_14 = local_14 + DAT_004e07b0;
|
|
}
|
|
local_c = (undefined4 *)FUN_004022b0(local_14);
|
|
FUN_004d4918(local_c,(undefined4 *)param_2[2],param_2[1]);
|
|
*(undefined1 *)((int)local_c + param_2[1]) = param_3;
|
|
*(undefined1 *)((int)local_c + local_10) = 0;
|
|
}
|
|
FUN_00402410(param_1,&local_14);
|
|
FUN_004024d8((int *)&local_14,2);
|
|
return param_1;
|
|
}
|
|
|
|
|
|
|
|
/* @004027d8 file=? name=FUN_004027d8 */
|
|
|
|
undefined4 __cdecl FUN_004027d8(int param_1,int param_2)
|
|
|
|
{
|
|
byte bVar1;
|
|
undefined4 uVar2;
|
|
byte *pbVar3;
|
|
byte *pbVar4;
|
|
bool bVar5;
|
|
bool bVar6;
|
|
|
|
if (*(int *)(param_1 + 8) == 0) {
|
|
if (*(int *)(param_2 + 8) == 0) {
|
|
uVar2 = 0;
|
|
}
|
|
else {
|
|
uVar2 = 0xffffffff;
|
|
}
|
|
}
|
|
else {
|
|
pbVar4 = *(byte **)(param_2 + 8);
|
|
if (pbVar4 == (byte *)0x0) {
|
|
uVar2 = 1;
|
|
}
|
|
else {
|
|
pbVar3 = *(byte **)(param_1 + 8);
|
|
do {
|
|
bVar1 = *pbVar3;
|
|
bVar5 = bVar1 < *pbVar4;
|
|
bVar6 = bVar1 == *pbVar4;
|
|
if (!bVar6) break;
|
|
bVar5 = false;
|
|
bVar6 = true;
|
|
if (bVar1 == 0) break;
|
|
bVar1 = pbVar3[1];
|
|
bVar5 = bVar1 < pbVar4[1];
|
|
bVar6 = bVar1 == pbVar4[1];
|
|
if (!bVar6) break;
|
|
pbVar3 = pbVar3 + 2;
|
|
pbVar4 = pbVar4 + 2;
|
|
bVar5 = false;
|
|
bVar6 = bVar1 == 0;
|
|
} while (!bVar6);
|
|
uVar2 = CONCAT31((int3)(-(uint)bVar5 >> 8),(byte)-(uint)bVar5 | !bVar6);
|
|
}
|
|
}
|
|
return uVar2;
|
|
}
|
|
|
|
|
|
|
|
/* @00402838 file=? name=FUN_00402838 */
|
|
|
|
uint * __cdecl FUN_00402838(uint *param_1,uint *param_2,uint param_3,char *param_4)
|
|
|
|
{
|
|
char *pcVar1;
|
|
uint uVar2;
|
|
char *pcVar3;
|
|
uint local_34 [4];
|
|
uint local_24 [4];
|
|
uint local_14 [2];
|
|
char *local_c;
|
|
|
|
pcVar3 = &DAT_004e07b4;
|
|
if (param_4 != (char *)0x0) {
|
|
pcVar3 = param_4;
|
|
}
|
|
FUN_00402410(local_14,param_2);
|
|
if (local_c == (char *)0x0) {
|
|
FUN_00402410(param_1,local_14);
|
|
FUN_004024d8((int *)local_14,2);
|
|
}
|
|
else {
|
|
pcVar1 = FUN_004d4d1c(local_c,pcVar3);
|
|
uVar2 = 0;
|
|
if (param_3 != 0) {
|
|
do {
|
|
pcVar1 = FUN_004d4d1c((char *)0x0,pcVar3);
|
|
if (pcVar1 == (char *)0x0) break;
|
|
uVar2 = uVar2 + 1;
|
|
} while (uVar2 < param_3);
|
|
}
|
|
if (pcVar1 == (char *)0x0) {
|
|
FUN_004023f4(local_24);
|
|
FUN_00402410(param_1,local_24);
|
|
FUN_004024d8((int *)local_24,2);
|
|
FUN_004024d8((int *)local_14,2);
|
|
}
|
|
else {
|
|
FUN_00402460(local_34,pcVar1);
|
|
FUN_00402410(param_1,local_34);
|
|
FUN_004024d8((int *)local_34,2);
|
|
FUN_004024d8((int *)local_14,2);
|
|
}
|
|
}
|
|
return param_1;
|
|
}
|
|
|
|
|
|
|
|
/* @00402948 file=? name=FUN_00402948 */
|
|
|
|
int * __cdecl FUN_00402948(int *param_1,uint *param_2)
|
|
|
|
{
|
|
int *piVar1;
|
|
uint local_18 [4];
|
|
int local_8;
|
|
|
|
(**(code **)(*param_1 + 0x1c))(param_1,&local_8,4);
|
|
piVar1 = (int *)FUN_004022b0(local_8 + 1);
|
|
(**(code **)(*param_1 + 0x1c))(param_1,piVar1,local_8 + 1);
|
|
FUN_00402590(local_18,param_2,(char *)piVar1);
|
|
FUN_004024d8((int *)local_18,2);
|
|
FUN_004022e8(piVar1);
|
|
return param_1;
|
|
}
|
|
|
|
|
|
|
|
/* @004029b0 file=? name=FUN_004029b0 */
|
|
|
|
void __cdecl FUN_004029b0(int *param_1,int param_2)
|
|
|
|
{
|
|
(**(code **)(*param_1 + 0x20))(param_1,param_2 + 4,4);
|
|
(**(code **)(*param_1 + 0x20))(param_1,*(undefined4 *)(param_2 + 8),*(int *)(param_2 + 4) + 1);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @004029e4 file=munga/cstr.cpp name=FUN_004029e4 */
|
|
|
|
void __cdecl FUN_004029e4(char *param_1,uint *param_2)
|
|
|
|
{
|
|
uint local_14 [4];
|
|
|
|
if (param_1 == (char *)0x0) {
|
|
FUN_0040385c(s_Convert_From_Ascii___str____NULL_004e07b8,s_d__tesla_bt_munga_CSTR_CPP_004e07d9,
|
|
0x22b);
|
|
}
|
|
if (param_2 == (uint *)0x0) {
|
|
FUN_0040385c(s_Convert_From_Ascii___value____NU_004e07f4,s_d__tesla_bt_munga_CSTR_CPP_004e0817,
|
|
0x22f);
|
|
}
|
|
FUN_00402590(local_14,param_2,param_1);
|
|
FUN_004024d8((int *)local_14,2);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @00402a4c file=? name=FUN_00402a4c */
|
|
|
|
int * __cdecl FUN_00402a4c(int *param_1,int *param_2,int *param_3)
|
|
|
|
{
|
|
int *piVar1;
|
|
int iVar2;
|
|
int *piVar3;
|
|
|
|
if (param_3 == param_2) {
|
|
iVar2 = *param_2;
|
|
*param_1 = iVar2;
|
|
piVar1 = (int *)(iVar2 + 0xc);
|
|
*piVar1 = *piVar1 + 1;
|
|
}
|
|
else {
|
|
piVar3 = (int *)*param_2;
|
|
piVar1 = piVar3 + 3;
|
|
*piVar1 = *piVar1 + -1;
|
|
if (*piVar1 == 0) {
|
|
FUN_004024d8(piVar3,3);
|
|
}
|
|
iVar2 = *param_3;
|
|
*param_2 = iVar2;
|
|
piVar1 = (int *)(iVar2 + 0xc);
|
|
*piVar1 = *piVar1 + 1;
|
|
iVar2 = *param_2;
|
|
*param_1 = iVar2;
|
|
piVar1 = (int *)(iVar2 + 0xc);
|
|
*piVar1 = *piVar1 + 1;
|
|
}
|
|
return param_1;
|
|
}
|
|
|
|
|
|
|
|
/* @00402a98 file=? name=FUN_00402a98 */
|
|
|
|
int * __cdecl FUN_00402a98(int *param_1,int *param_2,char *param_3)
|
|
|
|
{
|
|
int *piVar1;
|
|
int *piVar2;
|
|
int iVar3;
|
|
uint *puVar4;
|
|
|
|
piVar2 = (int *)*param_2;
|
|
piVar1 = piVar2 + 3;
|
|
*piVar1 = *piVar1 + -1;
|
|
if (*piVar1 == 0) {
|
|
FUN_004024d8(piVar2,3);
|
|
}
|
|
puVar4 = (uint *)FUN_00402298(0x10);
|
|
if (puVar4 == (uint *)0x0) {
|
|
puVar4 = (uint *)0x0;
|
|
}
|
|
else {
|
|
puVar4 = FUN_00402460(puVar4,param_3);
|
|
}
|
|
*param_2 = (int)puVar4;
|
|
*(int *)(*param_2 + 0xc) = *(int *)(*param_2 + 0xc) + 1;
|
|
iVar3 = *param_2;
|
|
*param_1 = iVar3;
|
|
piVar1 = (int *)(iVar3 + 0xc);
|
|
*piVar1 = *piVar1 + 1;
|
|
return param_1;
|
|
}
|
|
|
|
|
|
|
|
/* @00402aec file=? name=FUN_00402aec */
|
|
|
|
void __cdecl FUN_00402aec(int *param_1,int *param_2)
|
|
|
|
{
|
|
int *piVar1;
|
|
int *piVar2;
|
|
undefined4 *puVar3;
|
|
int iVar4;
|
|
|
|
piVar2 = (int *)*param_2;
|
|
piVar1 = piVar2 + 3;
|
|
*piVar1 = *piVar1 + -1;
|
|
if (*piVar1 == 0) {
|
|
FUN_004024d8(piVar2,3);
|
|
}
|
|
puVar3 = (undefined4 *)FUN_00402298(0x10);
|
|
if (puVar3 == (undefined4 *)0x0) {
|
|
iVar4 = 0;
|
|
}
|
|
else {
|
|
iVar4 = FUN_004023f4(puVar3);
|
|
}
|
|
*param_2 = iVar4;
|
|
*(int *)(iVar4 + 0xc) = *(int *)(iVar4 + 0xc) + 1;
|
|
FUN_00402948(param_1,(uint *)*param_2);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @00402b3c file=? name=FUN_00402b3c */
|
|
|
|
void __cdecl FUN_00402b3c(char *param_1,int *param_2)
|
|
|
|
{
|
|
int *piVar1;
|
|
int *piVar2;
|
|
undefined4 *puVar3;
|
|
int iVar4;
|
|
|
|
piVar2 = (int *)*param_2;
|
|
piVar1 = piVar2 + 3;
|
|
*piVar1 = *piVar1 + -1;
|
|
if (*piVar1 == 0) {
|
|
FUN_004024d8(piVar2,3);
|
|
}
|
|
puVar3 = (undefined4 *)FUN_00402298(0x10);
|
|
if (puVar3 == (undefined4 *)0x0) {
|
|
iVar4 = 0;
|
|
}
|
|
else {
|
|
iVar4 = FUN_004023f4(puVar3);
|
|
}
|
|
*param_2 = iVar4;
|
|
*(int *)(iVar4 + 0xc) = *(int *)(iVar4 + 0xc) + 1;
|
|
FUN_004029e4(param_1,(uint *)*param_2);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @00402b98 file=? name=FUN_00402b98 */
|
|
|
|
undefined4 * __cdecl
|
|
FUN_00402b98(undefined4 *param_1,int param_2,int param_3,int param_4,undefined4 param_5)
|
|
|
|
{
|
|
int iVar1;
|
|
undefined4 *puVar2;
|
|
|
|
param_1[3] = param_2;
|
|
param_1[2] = param_3 * param_2;
|
|
param_1[4] = param_4 * param_1[3];
|
|
*param_1 = param_5;
|
|
puVar2 = (undefined4 *)FUN_004022b0(param_1[2] + 8);
|
|
param_1[1] = puVar2;
|
|
*puVar2 = 0;
|
|
puVar2[1] = param_1[2];
|
|
param_1[5] = puVar2 + 2;
|
|
param_1[6] = puVar2 + 2;
|
|
param_1[7] = 0;
|
|
if (DAT_004e0834 == (undefined4 *)0x0) {
|
|
param_1[9] = param_1;
|
|
param_1[8] = param_1;
|
|
DAT_004e0834 = param_1;
|
|
}
|
|
else {
|
|
iVar1 = DAT_004e0834[9];
|
|
param_1[8] = DAT_004e0834;
|
|
param_1[9] = iVar1;
|
|
*(undefined4 **)(iVar1 + 0x20) = param_1;
|
|
DAT_004e0834[9] = param_1;
|
|
}
|
|
return param_1;
|
|
}
|
|
|
|
|
|
|
|
/* @00402c28 file=? name=FUN_00402c28 */
|
|
|
|
void __cdecl FUN_00402c28(int *param_1,byte param_2)
|
|
|
|
{
|
|
int *piVar1;
|
|
int iVar2;
|
|
int iVar3;
|
|
int *piVar4;
|
|
|
|
if (param_1 != (int *)0x0) {
|
|
piVar4 = (int *)param_1[1];
|
|
while (piVar4 != (int *)0x0) {
|
|
piVar1 = (int *)*piVar4;
|
|
FUN_004022d0(piVar4);
|
|
piVar4 = piVar1;
|
|
}
|
|
if ((param_1 == DAT_004e0834) && (DAT_004e0834 = (int *)param_1[8], param_1 == DAT_004e0834)) {
|
|
DAT_004e0834 = (int *)0x0;
|
|
}
|
|
else {
|
|
iVar2 = param_1[8];
|
|
iVar3 = param_1[9];
|
|
*(int *)(iVar2 + 0x24) = iVar3;
|
|
*(int *)(iVar3 + 0x20) = iVar2;
|
|
}
|
|
if ((param_2 & 1) != 0) {
|
|
FUN_004022d0(param_1);
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @00402c88 file=? name=FUN_00402c88 */
|
|
|
|
int __cdecl FUN_00402c88(int param_1)
|
|
|
|
{
|
|
undefined4 *puVar1;
|
|
int iVar2;
|
|
|
|
iVar2 = *(int *)(param_1 + 0x18);
|
|
if ((uint)(*(int *)(param_1 + 8) - *(int *)(param_1 + 0xc)) <
|
|
(uint)(iVar2 - *(int *)(param_1 + 0x14))) {
|
|
*(undefined4 *)(param_1 + 8) = *(undefined4 *)(param_1 + 0x10);
|
|
*(int *)(param_1 + 0x14) = *(int *)(param_1 + 0x14) + -8;
|
|
puVar1 = (undefined4 *)FUN_004022b0(*(int *)(param_1 + 8) + 8);
|
|
**(undefined4 **)(param_1 + 0x14) = puVar1;
|
|
*(undefined4 **)(param_1 + 0x14) = puVar1;
|
|
*puVar1 = 0;
|
|
puVar1[1] = *(undefined4 *)(param_1 + 0x10);
|
|
*(int *)(param_1 + 0x14) = *(int *)(param_1 + 0x14) + 8;
|
|
*(int *)(param_1 + 0x18) = *(int *)(param_1 + 0x14) + *(int *)(param_1 + 0xc);
|
|
iVar2 = *(int *)(param_1 + 0x14);
|
|
}
|
|
else {
|
|
*(int *)(param_1 + 0x18) = *(int *)(param_1 + 0x18) + *(int *)(param_1 + 0xc);
|
|
}
|
|
return iVar2;
|
|
}
|
|
|
|
|
|
|
|
/* @00402cec file=? name=FUN_00402cec */
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
void FUN_00402cec(void)
|
|
|
|
{
|
|
undefined4 *puVar1;
|
|
char *pcVar2;
|
|
uint uVar3;
|
|
uint uVar4;
|
|
int *piVar5;
|
|
int iVar6;
|
|
uint uVar7;
|
|
undefined4 *puVar8;
|
|
uint uVar9;
|
|
byte bVar10;
|
|
uint local_74;
|
|
code *local_64;
|
|
undefined4 uStack_60;
|
|
uint local_5c;
|
|
code *local_58;
|
|
undefined4 uStack_54;
|
|
uint local_50;
|
|
code *local_4c;
|
|
undefined4 uStack_48;
|
|
uint local_44;
|
|
code *local_40;
|
|
undefined4 uStack_3c;
|
|
uint local_38;
|
|
code *local_34;
|
|
undefined4 local_30;
|
|
int *piStack_2c;
|
|
int *piStack_28;
|
|
int *piStack_24;
|
|
int local_20;
|
|
undefined4 uStack_1c;
|
|
int local_18;
|
|
undefined4 uStack_14;
|
|
|
|
FUN_004dbb24(&DAT_00524e20,s__Bytes__Rcds__Dels__Free_Use__Na_004e0838,(char *)0x0);
|
|
FUN_004dbb24(&DAT_00524e20,s__________________________________004e085c,(char *)0x0);
|
|
puVar8 = DAT_004e0834;
|
|
do {
|
|
puVar1 = (undefined4 *)puVar8[1];
|
|
local_74 = 0;
|
|
local_18 = 0;
|
|
uVar7 = 0;
|
|
uVar3 = (uint)(puVar8[2] - (puVar8[6] - puVar8[5])) / (uint)puVar8[3];
|
|
for (; puVar1 != (undefined4 *)0x0; puVar1 = (undefined4 *)*puVar1) {
|
|
local_74 = local_74 + puVar1[1] + 8;
|
|
local_18 = local_18 + (uint)puVar1[1] / (uint)puVar8[3];
|
|
}
|
|
for (puVar1 = (undefined4 *)puVar8[7]; puVar1 != (undefined4 *)0x0;
|
|
puVar1 = (undefined4 *)*puVar1) {
|
|
uVar7 = uVar7 + 1;
|
|
}
|
|
local_20 = uVar3 + uVar7;
|
|
uStack_1c = 0;
|
|
uStack_14 = 0;
|
|
uVar9 = local_18 - local_20;
|
|
bVar10 = 0x25;
|
|
uVar4 = FUN_004dcd94();
|
|
FUN_004dafd8(&local_64,4);
|
|
local_5c = uVar3;
|
|
FUN_004dafd8(&local_58,6);
|
|
local_50 = uVar7;
|
|
FUN_004dafd8(&local_4c,6);
|
|
local_44 = uVar9;
|
|
FUN_004dafd8(&local_40,6);
|
|
local_38 = local_74;
|
|
FUN_004dafd8(&local_34,6);
|
|
(*local_34)(DAT_00524e20,local_30);
|
|
piVar5 = FUN_004db880(&DAT_00524e20,local_38);
|
|
if (piVar5 == (int *)0x0) {
|
|
iVar6 = 0;
|
|
}
|
|
else {
|
|
iVar6 = *piVar5;
|
|
}
|
|
(*local_40)(iVar6,uStack_3c);
|
|
piStack_2c = FUN_004db880(piVar5,local_44);
|
|
if (piStack_2c == (int *)0x0) {
|
|
iVar6 = 0;
|
|
}
|
|
else {
|
|
iVar6 = *piStack_2c;
|
|
}
|
|
(*local_4c)(iVar6,uStack_48);
|
|
piStack_28 = FUN_004db880(piStack_2c,local_50);
|
|
if (piStack_28 == (int *)0x0) {
|
|
iVar6 = 0;
|
|
}
|
|
else {
|
|
iVar6 = *piStack_28;
|
|
}
|
|
(*local_58)(iVar6,uStack_54);
|
|
piStack_24 = FUN_004db880(piStack_28,local_5c);
|
|
if (piStack_24 == (int *)0x0) {
|
|
iVar6 = 0;
|
|
}
|
|
else {
|
|
iVar6 = *piStack_24;
|
|
}
|
|
(*local_64)(iVar6,uStack_60);
|
|
piVar5 = FUN_004db78c(piStack_24,uVar4);
|
|
FUN_004db92c(piVar5,bVar10);
|
|
pcVar2 = (char *)*puVar8;
|
|
if (pcVar2 != (char *)0x0) {
|
|
piVar5 = FUN_004db92c(&DAT_00524e20,0x20);
|
|
FUN_004dbb24(piVar5,pcVar2,(char *)0x0);
|
|
}
|
|
FUN_004d9c38(&DAT_00524e20);
|
|
puVar8 = (undefined4 *)puVar8[8];
|
|
} while (puVar8 != DAT_004e0834);
|
|
FUN_004d9c38(&DAT_00524e20);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @00402f74 file=? name=FUN_00402f74 */
|
|
|
|
undefined4 * __cdecl FUN_00402f74(int param_1)
|
|
|
|
{
|
|
undefined4 *puVar1;
|
|
|
|
puVar1 = *(undefined4 **)(param_1 + 0x1c);
|
|
if (puVar1 == (undefined4 *)0x0) {
|
|
puVar1 = (undefined4 *)FUN_00402c88(param_1);
|
|
}
|
|
else {
|
|
*(undefined4 *)(param_1 + 0x1c) = *puVar1;
|
|
}
|
|
return puVar1;
|
|
}
|
|
|
|
|
|
|
|
/* @00402f98 file=? name=FUN_00402f98 */
|
|
|
|
void __cdecl FUN_00402f98(int param_1,undefined4 *param_2)
|
|
|
|
{
|
|
*param_2 = *(undefined4 *)(param_1 + 0x1c);
|
|
*(undefined4 **)(param_1 + 0x1c) = param_2;
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @00402fac file=? name=FUN_00402fac */
|
|
|
|
undefined8 __fastcall FUN_00402fac(undefined4 param_1,uint param_2,int param_3,uint param_4)
|
|
|
|
{
|
|
undefined4 *puVar1;
|
|
longlong lVar2;
|
|
int iVar3;
|
|
|
|
puVar1 = *(undefined4 **)(param_3 + 4);
|
|
do {
|
|
if (puVar1 == (undefined4 *)0x0) {
|
|
iVar3 = 0;
|
|
LAB_00402fe2:
|
|
return CONCAT44(param_2,iVar3);
|
|
}
|
|
param_2 = (uint)puVar1[1] / *(uint *)(param_3 + 0xc);
|
|
if (param_4 < param_2) {
|
|
lVar2 = (longlong)*(int *)(param_3 + 0xc) * (longlong)(int)param_4;
|
|
param_2 = (uint)((ulonglong)lVar2 >> 0x20);
|
|
iVar3 = (int)puVar1 + (int)lVar2 + 8;
|
|
goto LAB_00402fe2;
|
|
}
|
|
param_4 = param_4 - param_2;
|
|
puVar1 = (undefined4 *)*puVar1;
|
|
} while( true );
|
|
}
|
|
|
|
|
|
|
|
/* @00402fe8 file=? name=FUN_00402fe8 */
|
|
|
|
undefined4 __cdecl FUN_00402fe8(int param_1,undefined4 *param_2)
|
|
|
|
{
|
|
int iVar1;
|
|
undefined4 *puVar2;
|
|
uint uVar3;
|
|
|
|
iVar1 = *(int *)(param_1 + 0x14);
|
|
*(undefined4 *)(param_1 + 0x28) = *(undefined4 *)(param_1 + 0x18);
|
|
uVar3 = *(uint *)(param_1 + 0xc);
|
|
puVar2 = (undefined4 *)FUN_00402c88(param_1);
|
|
FUN_004d4918(puVar2,param_2,uVar3);
|
|
if (iVar1 != *(int *)(param_1 + 0x14)) {
|
|
*(int *)(param_1 + 0x28) = *(int *)(param_1 + 0x14);
|
|
}
|
|
return *(undefined4 *)(param_1 + 0x28);
|
|
}
|
|
|
|
|
|
|
|
/* @00403024 file=? name=FUN_00403024 */
|
|
|
|
undefined4 __cdecl FUN_00403024(int param_1)
|
|
|
|
{
|
|
int iVar1;
|
|
|
|
iVar1 = *(int *)(param_1 + 0x14);
|
|
*(undefined4 *)(param_1 + 0x28) = *(undefined4 *)(param_1 + 0x18);
|
|
FUN_00402c88(param_1);
|
|
if (iVar1 != *(int *)(param_1 + 0x14)) {
|
|
*(int *)(param_1 + 0x28) = *(int *)(param_1 + 0x14);
|
|
}
|
|
return *(undefined4 *)(param_1 + 0x28);
|
|
}
|
|
|
|
|
|
|
|
/* @00403050 file=? name=FUN_00403050 */
|
|
|
|
void __cdecl FUN_00403050(int param_1)
|
|
|
|
{
|
|
int iVar1;
|
|
int *piVar2;
|
|
int *piVar3;
|
|
|
|
if (*(int *)(param_1 + 0x28) != 0) {
|
|
iVar1 = *(int *)(param_1 + 0x14);
|
|
if (*(int *)(param_1 + 0x28) == iVar1) {
|
|
if (**(int **)(param_1 + 4) == 0) {
|
|
*(undefined4 *)(param_1 + 0x28) = 0;
|
|
}
|
|
else {
|
|
piVar2 = *(int **)(param_1 + 4);
|
|
do {
|
|
piVar3 = piVar2;
|
|
piVar2 = (int *)*piVar3;
|
|
} while ((int *)(*(int *)(param_1 + 0x14) + -8) != (int *)*piVar3);
|
|
*(int *)(param_1 + 0x28) = (int)piVar3 + ((piVar3[1] + 8) - *(int *)(param_1 + 0xc));
|
|
}
|
|
}
|
|
else {
|
|
if (iVar1 == *(int *)(param_1 + 0x18)) {
|
|
piVar2 = *(int **)(param_1 + 4);
|
|
do {
|
|
piVar3 = piVar2;
|
|
piVar2 = (int *)*piVar3;
|
|
} while ((int *)(iVar1 + -8) != (int *)*piVar3);
|
|
FUN_004022d0((int *)(iVar1 + -8));
|
|
*piVar3 = 0;
|
|
*(int **)(param_1 + 0x14) = piVar3 + 2;
|
|
*(int *)(param_1 + 8) = piVar3[1];
|
|
}
|
|
*(undefined4 *)(param_1 + 0x18) = *(undefined4 *)(param_1 + 0x28);
|
|
*(int *)(param_1 + 0x28) = *(int *)(param_1 + 0x28) - *(int *)(param_1 + 0xc);
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @004030dc file=? name=FUN_004030dc */
|
|
|
|
void __cdecl FUN_004030dc(undefined4 *param_1,undefined4 param_2,undefined4 param_3,int param_4)
|
|
|
|
{
|
|
*param_1 = &PTR_FUN_004e0908;
|
|
param_1[1] = param_2;
|
|
param_1[3] = param_3;
|
|
param_1[2] = param_1[1] + param_4;
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @00403104 file=? name=FUN_00403104 */
|
|
|
|
int * __cdecl FUN_00403104(int *param_1,undefined4 *param_2,uint param_3)
|
|
|
|
{
|
|
undefined4 *puVar1;
|
|
uint uVar2;
|
|
|
|
uVar2 = param_3;
|
|
puVar1 = (undefined4 *)(**(code **)*param_1)(param_1);
|
|
FUN_004d4918(param_2,puVar1,uVar2);
|
|
(**(code **)(*param_1 + 0x14))(param_1,param_3);
|
|
return param_1;
|
|
}
|
|
|
|
|
|
|
|
/* @00403134 file=? name=FUN_00403134 */
|
|
|
|
int * __cdecl FUN_00403134(int *param_1,undefined4 *param_2,uint param_3)
|
|
|
|
{
|
|
undefined4 *puVar1;
|
|
uint uVar2;
|
|
|
|
uVar2 = param_3;
|
|
puVar1 = (undefined4 *)(**(code **)*param_1)(param_1);
|
|
FUN_004d4918(puVar1,param_2,uVar2);
|
|
(**(code **)(*param_1 + 0x14))(param_1,param_3);
|
|
return param_1;
|
|
}
|
|
|
|
|
|
|
|
/* @00403164 file=munga/memstrm.cpp name=FUN_00403164 */
|
|
|
|
int * __cdecl FUN_00403164(int *param_1,int *param_2)
|
|
|
|
{
|
|
int iVar1;
|
|
int iVar2;
|
|
undefined1 *puVar3;
|
|
int *piVar4;
|
|
undefined1 local_5;
|
|
|
|
FUN_004dc680(*param_2,0);
|
|
if ((*(byte *)(*param_2 + 0x18) & 0x80) == 0) {
|
|
FUN_004dc680(*param_2,0);
|
|
FUN_004daf40(param_2,0);
|
|
while( true ) {
|
|
piVar4 = FUN_004dadcc(param_2,&local_5);
|
|
iVar1 = *piVar4;
|
|
if ((*(byte *)(iVar1 + 0xc) & 0x86) != 0) {
|
|
iVar1 = 0;
|
|
}
|
|
if (iVar1 == 0) break;
|
|
(**(code **)(*param_1 + 0x20))(param_1,&local_5,1);
|
|
}
|
|
}
|
|
else {
|
|
FUN_004daf00(param_2,0,2);
|
|
iVar1 = FUN_004daf7c(param_2);
|
|
FUN_004dc680(*param_2,0);
|
|
FUN_004daf40(param_2,0);
|
|
iVar2 = (**(code **)(*param_1 + 0x10))(param_1,iVar1);
|
|
if (iVar2 == 0) {
|
|
FUN_0040385c(s_Not_enough_memory_remaining_in_s_004e089c,
|
|
s_d__tesla_bt_munga_MEMSTRM_CPP_004e08c3,0x69);
|
|
}
|
|
iVar2 = iVar1;
|
|
puVar3 = (undefined1 *)(**(code **)*param_1)(param_1);
|
|
FUN_004dae60(param_2,puVar3,iVar2);
|
|
(**(code **)(*param_1 + 0x14))(param_1,iVar1);
|
|
}
|
|
return param_1;
|
|
}
|
|
|
|
|
|
|
|
/* @00403248 file=? name=FUN_00403248 */
|
|
|
|
void __cdecl FUN_00403248(int *param_1,int *param_2)
|
|
|
|
{
|
|
undefined4 uVar1;
|
|
|
|
uVar1 = (**(code **)(*param_2 + 4))(param_2);
|
|
uVar1 = (**(code **)*param_2)(param_2,uVar1);
|
|
(**(code **)(*param_1 + 0x20))(param_1,uVar1);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @00403270 file=? name=FUN_00403270 */
|
|
|
|
bool __cdecl FUN_00403270(int param_1)
|
|
|
|
{
|
|
return (uint)(*(int *)(param_1 + 8) - *(int *)(param_1 + 4)) <= *(uint *)(param_1 + 0xc);
|
|
}
|
|
|
|
|
|
|
|
/* @0040328c file=? name=FUN_0040328c */
|
|
|
|
undefined4 * __cdecl FUN_0040328c(undefined4 *param_1,int param_2)
|
|
|
|
{
|
|
undefined4 uVar1;
|
|
uint uVar2;
|
|
|
|
FUN_004030dc(param_1,0,param_2,0);
|
|
uVar2 = param_2 + 0x80U & 0xffffff80;
|
|
*param_1 = &PTR_FUN_004e08e4;
|
|
param_1[3] = uVar2;
|
|
uVar1 = FUN_004022b0(uVar2);
|
|
param_1[1] = uVar1;
|
|
param_1[2] = uVar1;
|
|
param_1[4] = 0;
|
|
param_1[5] = 1;
|
|
return param_1;
|
|
}
|
|
|
|
|
|
|
|
/* @004032dc file=? name=FUN_004032dc */
|
|
|
|
undefined4 * __cdecl
|
|
FUN_004032dc(undefined4 *param_1,undefined4 param_2,undefined4 param_3,int param_4)
|
|
|
|
{
|
|
FUN_004030dc(param_1,param_2,param_3,param_4);
|
|
*param_1 = &PTR_FUN_004e08e4;
|
|
param_1[5] = 0;
|
|
param_1[4] = param_3;
|
|
return param_1;
|
|
}
|
|
|
|
|
|
|
|
/* @00403310 file=? name=FUN_00403310 */
|
|
|
|
void __cdecl FUN_00403310(int *param_1,byte param_2)
|
|
|
|
{
|
|
if (param_1 != (int *)0x0) {
|
|
*param_1 = (int)&PTR_FUN_004e08e4;
|
|
if (param_1[5] != 0) {
|
|
FUN_004022e8((int *)param_1[1]);
|
|
}
|
|
if ((param_2 & 1) != 0) {
|
|
FUN_004022d0(param_1);
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @00403344 file=? name=FUN_00403344 */
|
|
|
|
undefined4 __cdecl FUN_00403344(int param_1,uint param_2)
|
|
|
|
{
|
|
undefined4 *puVar1;
|
|
int iVar2;
|
|
uint uVar3;
|
|
|
|
if ((*(int *)(param_1 + 0x14) != 0) &&
|
|
((uint)(*(int *)(param_1 + 0xc) - (*(int *)(param_1 + 8) - *(int *)(param_1 + 4))) < param_2))
|
|
{
|
|
iVar2 = *(int *)(param_1 + 8) - *(int *)(param_1 + 4);
|
|
uVar3 = param_2 + iVar2 + 0x81 & 0xffffff80;
|
|
puVar1 = (undefined4 *)FUN_004022b0(uVar3);
|
|
FUN_004d4918(puVar1,*(undefined4 **)(param_1 + 4),*(uint *)(param_1 + 0xc));
|
|
FUN_004022e8(*(int **)(param_1 + 4));
|
|
*(undefined4 **)(param_1 + 4) = puVar1;
|
|
*(uint *)(param_1 + 0xc) = uVar3;
|
|
*(int *)(param_1 + 8) = *(int *)(param_1 + 4) + iVar2;
|
|
}
|
|
return 1;
|
|
}
|
|
|
|
|
|
|
|
/* @004033d0 file=? name=FUN_004033d0 */
|
|
|
|
int * __cdecl FUN_004033d0(int *param_1,undefined4 *param_2,uint param_3)
|
|
|
|
{
|
|
undefined4 *puVar1;
|
|
int iVar2;
|
|
uint uVar3;
|
|
|
|
(**(code **)(*param_1 + 0x10))(param_1,param_3);
|
|
uVar3 = param_3;
|
|
puVar1 = (undefined4 *)(**(code **)*param_1)(param_1);
|
|
FUN_004d4918(puVar1,param_2,uVar3);
|
|
(**(code **)(*param_1 + 0x14))(param_1,param_3);
|
|
if ((uint)(param_1[2] - param_1[1]) < (uint)param_1[4]) {
|
|
iVar2 = param_1[4];
|
|
}
|
|
else {
|
|
iVar2 = param_1[2] - param_1[1];
|
|
}
|
|
param_1[4] = iVar2;
|
|
return param_1;
|
|
}
|
|
|
|
|
|
|
|
/* @00403428 file=? name=FUN_00403428 */
|
|
|
|
undefined4 __cdecl FUN_00403428(int param_1)
|
|
|
|
{
|
|
return *(undefined4 *)(param_1 + 8);
|
|
}
|
|
|
|
|
|
|
|
/* @00403433 file=? name=FUN_00403433 */
|
|
|
|
int __cdecl FUN_00403433(int param_1)
|
|
|
|
{
|
|
return *(int *)(param_1 + 0x10) - (*(int *)(param_1 + 8) - *(int *)(param_1 + 4));
|
|
}
|
|
|
|
|
|
|
|
/* @00403446 file=? name=FUN_00403446 */
|
|
|
|
void __cdecl FUN_00403446(int param_1,undefined4 param_2)
|
|
|
|
{
|
|
*(undefined4 *)(param_1 + 8) = param_2;
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @00403454 file=? name=FUN_00403454 */
|
|
|
|
void __cdecl FUN_00403454(int param_1,int param_2)
|
|
|
|
{
|
|
*(int *)(param_1 + 8) = *(int *)(param_1 + 4) + param_2;
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @00403465 file=? name=FUN_00403465 */
|
|
|
|
void __cdecl FUN_00403465(int param_1,int param_2)
|
|
|
|
{
|
|
*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + param_2;
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @00403473 file=? name=FUN_00403473 */
|
|
|
|
void __cdecl FUN_00403473(int param_1,int param_2)
|
|
|
|
{
|
|
*(int *)(param_1 + 8) = *(int *)(param_1 + 8) - param_2;
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @00403481 file=? name=FUN_00403481 */
|
|
|
|
int __cdecl FUN_00403481(int param_1)
|
|
|
|
{
|
|
return *(int *)(param_1 + 0xc) - (*(int *)(param_1 + 8) - *(int *)(param_1 + 4));
|
|
}
|
|
|
|
|
|
|
|
/* @00403494 file=? name=FUN_00403494 */
|
|
|
|
bool __cdecl FUN_00403494(int *param_1,uint param_2)
|
|
|
|
{
|
|
uint uVar1;
|
|
|
|
uVar1 = (**(code **)(*param_1 + 4))(param_1);
|
|
return uVar1 <= param_2;
|
|
}
|
|
|
|
|
|
|
|
/* @004034b0 file=? name=FUN_004034b0 */
|
|
|
|
undefined4 * __cdecl FUN_004034b0(undefined4 *param_1,LPCSTR param_2,int param_3)
|
|
|
|
{
|
|
FUN_004030dc(param_1,0,0,0);
|
|
*param_1 = &PTR_FUN_004e09e0;
|
|
FUN_004034e4((int)param_1,param_2,param_3);
|
|
return param_1;
|
|
}
|
|
|
|
|
|
|
|
/* @004034e4 file=? name=FUN_004034e4 */
|
|
|
|
void __cdecl FUN_004034e4(int param_1,LPCSTR param_2,int param_3)
|
|
|
|
{
|
|
uint uVar1;
|
|
DWORD DVar2;
|
|
|
|
*(uint *)(param_1 + 0x14) = (uint)(param_3 == 0);
|
|
*(undefined4 *)(param_1 + 0x10) = 0xffffffff;
|
|
*(undefined4 *)(param_1 + 4) = 0;
|
|
*(undefined4 *)(param_1 + 8) = 0;
|
|
*(undefined4 *)(param_1 + 0xc) = 0;
|
|
if (param_2 != (LPCSTR)0x0) {
|
|
uVar1 = FUN_00401774(param_2,*(int *)(param_1 + 0x14));
|
|
*(uint *)(param_1 + 0x10) = uVar1;
|
|
}
|
|
if (*(int *)(param_1 + 0x10) != -1) {
|
|
if (*(int *)(param_1 + 0x14) == 0) {
|
|
*(undefined4 *)(param_1 + 0xc) = 0xffffffff;
|
|
}
|
|
else {
|
|
DVar2 = FUN_0040184c(*(uint *)(param_1 + 0x10),0,1);
|
|
*(DWORD *)(param_1 + 0xc) = DVar2;
|
|
FUN_0040184c(*(uint *)(param_1 + 0x10),0,0);
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @00403564 file=? name=FUN_00403564 */
|
|
|
|
void __cdecl FUN_00403564(int param_1)
|
|
|
|
{
|
|
if (*(int *)(param_1 + 0x10) != -1) {
|
|
FUN_00401810(*(uint *)(param_1 + 0x10));
|
|
}
|
|
*(undefined4 *)(param_1 + 0x10) = 0xffffffff;
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @00403588 file=? name=FUN_00403588 */
|
|
|
|
void __cdecl FUN_00403588(int param_1,LONG param_2)
|
|
|
|
{
|
|
DWORD DVar1;
|
|
|
|
DVar1 = FUN_0040184c(*(uint *)(param_1 + 0x10),param_2,0);
|
|
*(DWORD *)(param_1 + 8) = DVar1;
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @004035a8 file=? name=FUN_004035a8 */
|
|
|
|
int __cdecl FUN_004035a8(int param_1,int param_2)
|
|
|
|
{
|
|
DWORD DVar1;
|
|
|
|
DVar1 = FUN_0040184c(*(uint *)(param_1 + 0x10),*(int *)(param_1 + 8) + param_2,0);
|
|
*(DWORD *)(param_1 + 8) = DVar1;
|
|
return param_1;
|
|
}
|
|
|
|
|
|
|
|
/* @004035cc file=? name=FUN_004035cc */
|
|
|
|
int __cdecl FUN_004035cc(int param_1,int param_2)
|
|
|
|
{
|
|
DWORD DVar1;
|
|
|
|
DVar1 = FUN_0040184c(*(uint *)(param_1 + 0x10),*(int *)(param_1 + 8) + param_2,0);
|
|
*(DWORD *)(param_1 + 8) = DVar1;
|
|
return param_1;
|
|
}
|
|
|
|
|
|
|
|
/* @004035f0 file=? name=FUN_004035f0 */
|
|
|
|
int __cdecl FUN_004035f0(int param_1,char *param_2,char *param_3)
|
|
|
|
{
|
|
char *pcVar1;
|
|
|
|
pcVar1 = FUN_00401970(*(uint *)(param_1 + 0x10),param_2,param_3);
|
|
*(int *)(param_1 + 8) = (int)(pcVar1 + *(int *)(param_1 + 8));
|
|
return param_1;
|
|
}
|
|
|
|
|
|
|
|
/* @00403614 file=? name=FUN_00403614 */
|
|
|
|
int __cdecl FUN_00403614(int param_1,char *param_2,char *param_3)
|
|
|
|
{
|
|
char *pcVar1;
|
|
|
|
pcVar1 = FUN_004018cc(*(uint *)(param_1 + 0x10),param_2,param_3);
|
|
*(int *)(param_1 + 8) = (int)(pcVar1 + *(int *)(param_1 + 8));
|
|
return param_1;
|
|
}
|
|
|
|
|
|
|
|
/* @00403638 file=? name=FUN_00403638 */
|
|
|
|
undefined4 FUN_00403638(void)
|
|
|
|
{
|
|
return 1;
|
|
}
|
|
|
|
|
|
|
|
/* @00403642 file=munga/filestrm.hpp name=FUN_00403642 */
|
|
|
|
undefined4 FUN_00403642(void)
|
|
|
|
{
|
|
FUN_0040385c(s_No_implementation_possible_for_F_004e092c,s_d__tesla_bt_munga_filestrm_hpp_004e0964
|
|
,0x2d);
|
|
return 0;
|
|
}
|
|
|
|
|
|
|
|
/* @0040365d file=munga/filestrm.hpp name=FUN_0040365d */
|
|
|
|
void FUN_0040365d(void)
|
|
|
|
{
|
|
FUN_0040385c(s_No_implementation_possible_for_F_004e0983,s_d__tesla_bt_munga_filestrm_hpp_004e09c0
|
|
,0x33);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @00403678 file=? name=FUN_00403678 */
|
|
|
|
undefined4 FUN_00403678(void)
|
|
|
|
{
|
|
FUN_004dcd7c();
|
|
return 1;
|
|
}
|
|
|
|
|
|
|
|
/* @004036a0 file=? name=FUN_004036a0 */
|
|
|
|
void __cdecl FUN_004036a0(UINT param_1)
|
|
|
|
{
|
|
FUN_004dee24(param_1);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @00403798 file=? name=FUN_00403798 */
|
|
|
|
void __cdecl FUN_00403798(char *param_1,char *param_2,uint param_3)
|
|
|
|
{
|
|
int *piVar1;
|
|
|
|
if (DAT_004e0a04 == 0) {
|
|
DAT_004e0a04 = 1;
|
|
FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0);
|
|
FUN_004dbb24(&DAT_00524e20,&DAT_004e0adb,(char *)0x0);
|
|
piVar1 = FUN_004db78c(&DAT_00524e20,param_3);
|
|
FUN_004dbb24(piVar1,s____Failed_004e0add,(char *)0x0);
|
|
FUN_004dbb24(piVar1,param_1,(char *)0x0);
|
|
FUN_004dbb24(piVar1,&DAT_004e0ae8,(char *)0x0);
|
|
FUN_004dbb24(&DAT_00524e20,s_Failing_to_debugger_004e0aea,(char *)0x0);
|
|
FUN_004d9c70(&DAT_00524e20);
|
|
FUN_00401afc();
|
|
FUN_0044c720();
|
|
FUN_00447b38();
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @0040385c file=? name=FUN_0040385c */
|
|
|
|
void __cdecl FUN_0040385c(char *param_1,char *param_2,uint param_3)
|
|
|
|
{
|
|
int *piVar1;
|
|
|
|
if (DAT_004e0a04 == 0) {
|
|
DAT_004e0a04 = 1;
|
|
FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0);
|
|
FUN_004dbb24(&DAT_00524e20,&DAT_004e0aff,(char *)0x0);
|
|
piVar1 = FUN_004db78c(&DAT_00524e20,param_3);
|
|
FUN_004dbb24(piVar1,&DAT_004e0b01,(char *)0x0);
|
|
FUN_004dbb24(piVar1,param_1,(char *)0x0);
|
|
FUN_004dbb24(piVar1,&DAT_004e0b05,(char *)0x0);
|
|
FUN_004dbb24(&DAT_00524e20,s_Failing_to_debugger_004e0b07,(char *)0x0);
|
|
FUN_004d9c70(&DAT_00524e20);
|
|
FUN_00401afc();
|
|
FUN_0044c720();
|
|
FUN_00447b38();
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @00403920 file=? name=FUN_00403920 */
|
|
|
|
void __cdecl FUN_00403920(float *param_1,float *param_2)
|
|
|
|
{
|
|
*param_1 = -*param_2;
|
|
param_1[1] = -param_2[1];
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @00403939 file=? name=FUN_00403939 */
|
|
|
|
void __cdecl FUN_00403939(float *param_1,float *param_2,float *param_3)
|
|
|
|
{
|
|
*param_1 = *param_2 + *param_3;
|
|
param_1[1] = param_2[1] + param_3[1];
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @00403956 file=? name=FUN_00403956 */
|
|
|
|
void __cdecl FUN_00403956(float *param_1,float *param_2,float *param_3)
|
|
|
|
{
|
|
*param_1 = *param_2 - *param_3;
|
|
param_1[1] = param_2[1] - param_3[1];
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @00403973 file=? name=FUN_00403973 */
|
|
|
|
void __cdecl FUN_00403973(float *param_1,float *param_2,float param_3)
|
|
|
|
{
|
|
*param_1 = *param_2 * param_3;
|
|
param_1[1] = param_2[1] * param_3;
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @0040398e file=? name=FUN_0040398e */
|
|
|
|
void __cdecl FUN_0040398e(float *param_1,float *param_2,float *param_3)
|
|
|
|
{
|
|
*param_1 = *param_2 * *param_3;
|
|
param_1[1] = param_2[1] * param_3[1];
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @004039ab file=? name=FUN_004039ab */
|
|
|
|
void __cdecl FUN_004039ab(float *param_1,float *param_2,float param_3)
|
|
|
|
{
|
|
*param_1 = *param_2 / param_3;
|
|
param_1[1] = param_2[1] / param_3;
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @004039c6 file=? name=FUN_004039c6 */
|
|
|
|
void __cdecl FUN_004039c6(float *param_1,float *param_2,float *param_3)
|
|
|
|
{
|
|
*param_1 = *param_2 / *param_3;
|
|
param_1[1] = param_2[1] / param_3[1];
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @004039e3 file=? name=FUN_004039e3 */
|
|
|
|
float * __cdecl FUN_004039e3(float *param_1,float *param_2)
|
|
|
|
{
|
|
float10 fVar1;
|
|
|
|
fVar1 = FUN_004dd138((double)(param_2[1] * param_2[1] + *param_2 * *param_2));
|
|
*param_1 = *param_2 / (float)fVar1;
|
|
param_1[1] = param_2[1] / (float)fVar1;
|
|
return param_1;
|
|
}
|
|
|
|
|
|
|
|
/* @00403a23 file=? name=FUN_00403a23 */
|
|
|
|
undefined4 FUN_00403a23(void)
|
|
|
|
{
|
|
return 1;
|
|
}
|
|
|
|
|
|
|
|
/* @00403a30 file=? name=FUN_00403a30 */
|
|
|
|
void __cdecl FUN_00403a30(undefined4 *param_1)
|
|
|
|
{
|
|
*param_1 = &PTR_FUN_004e0b2c;
|
|
param_1[2] = 0;
|
|
param_1[1] = 0;
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @00403a48 file=? name=FUN_00403a48 */
|
|
|
|
void __cdecl FUN_00403a48(int *param_1,byte param_2)
|
|
|
|
{
|
|
int iVar1;
|
|
int *piVar2;
|
|
|
|
if (param_1 != (int *)0x0) {
|
|
*param_1 = (int)&PTR_FUN_004e0b2c;
|
|
while (piVar2 = (int *)param_1[1], piVar2 != (int *)0x0) {
|
|
iVar1 = *piVar2;
|
|
FUN_004022d0(piVar2);
|
|
param_1[1] = iVar1;
|
|
}
|
|
if ((param_2 & 1) != 0) {
|
|
FUN_004022d0(param_1);
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @00403a80 file=? name=FUN_00403a80 */
|
|
|
|
undefined4 * __cdecl FUN_00403a80(int param_1,char *param_2,undefined4 param_3)
|
|
|
|
{
|
|
int iVar1;
|
|
undefined4 *puVar2;
|
|
|
|
iVar1 = FUN_004d4a78(param_2);
|
|
puVar2 = (undefined4 *)FUN_004022b0(iVar1 + 9);
|
|
puVar2[1] = param_3;
|
|
*puVar2 = 0;
|
|
if (*(int *)(param_1 + 4) == 0) {
|
|
*(undefined4 **)(param_1 + 4) = puVar2;
|
|
}
|
|
else {
|
|
**(undefined4 **)(param_1 + 8) = puVar2;
|
|
}
|
|
*(undefined4 **)(param_1 + 8) = puVar2;
|
|
FUN_00403be8((int)puVar2,param_2);
|
|
return puVar2 + 2;
|
|
}
|
|
|
|
|
|
|
|
/* @00403ad0 file=? name=FUN_00403ad0 */
|
|
|
|
undefined4 __cdecl FUN_00403ad0(int param_1,char *param_2)
|
|
|
|
{
|
|
char *pcVar1;
|
|
undefined4 *puVar2;
|
|
char *pcVar3;
|
|
undefined4 uVar4;
|
|
char *pcVar5;
|
|
bool bVar6;
|
|
|
|
for (puVar2 = *(undefined4 **)(param_1 + 4); puVar2 != (undefined4 *)0x0;
|
|
puVar2 = (undefined4 *)*puVar2) {
|
|
pcVar3 = (char *)(puVar2 + 2);
|
|
pcVar5 = param_2;
|
|
do {
|
|
if (*pcVar3 != *pcVar5) goto LAB_00403b05;
|
|
bVar6 = true;
|
|
if (*pcVar3 == '\0') break;
|
|
pcVar1 = pcVar3 + 1;
|
|
if (*pcVar1 != pcVar5[1]) goto LAB_00403b05;
|
|
pcVar3 = pcVar3 + 2;
|
|
pcVar5 = pcVar5 + 2;
|
|
bVar6 = *pcVar1 == '\0';
|
|
} while (!bVar6);
|
|
if (bVar6) break;
|
|
LAB_00403b05:
|
|
}
|
|
if (puVar2 == (undefined4 *)0x0) {
|
|
uVar4 = 0;
|
|
}
|
|
else {
|
|
uVar4 = puVar2[1];
|
|
}
|
|
return uVar4;
|
|
}
|
|
|
|
|
|
|
|
/* @00403b1c file=? name=FUN_00403b1c */
|
|
|
|
void __cdecl FUN_00403b1c(int param_1,int param_2)
|
|
|
|
{
|
|
int *piVar1;
|
|
int *piVar2;
|
|
int *piVar3;
|
|
int *piVar4;
|
|
|
|
piVar4 = (int *)(param_2 + -8);
|
|
piVar1 = *(int **)(param_1 + 4);
|
|
piVar3 = (int *)0x0;
|
|
while ((piVar2 = piVar1, piVar2 != (int *)0x0 && (piVar4 != piVar2))) {
|
|
piVar3 = piVar2;
|
|
piVar1 = (int *)*piVar2;
|
|
}
|
|
if (piVar3 == (int *)0x0) {
|
|
*(int *)(param_1 + 4) = *piVar4;
|
|
}
|
|
else {
|
|
*piVar3 = *piVar4;
|
|
}
|
|
if (piVar4 == *(int **)(param_1 + 8)) {
|
|
*(int **)(param_1 + 8) = piVar3;
|
|
}
|
|
FUN_004022d0(piVar4);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @00403b60 file=? name=FUN_00403b60 */
|
|
|
|
int __cdecl FUN_00403b60(int param_1)
|
|
|
|
{
|
|
undefined4 *puVar1;
|
|
int iVar2;
|
|
|
|
iVar2 = 0;
|
|
for (puVar1 = *(undefined4 **)(param_1 + 4); puVar1 != (undefined4 *)0x0;
|
|
puVar1 = (undefined4 *)*puVar1) {
|
|
iVar2 = iVar2 + 1;
|
|
}
|
|
return iVar2;
|
|
}
|
|
|
|
|
|
|
|
/* @00403b7c file=? name=FUN_00403b7c */
|
|
|
|
int __cdecl FUN_00403b7c(int *param_1,int param_2,char *param_3)
|
|
|
|
{
|
|
undefined4 *puVar1;
|
|
int iVar2;
|
|
int iVar3;
|
|
int local_c;
|
|
|
|
iVar2 = FUN_004d4a78(param_3);
|
|
puVar1 = *(undefined4 **)(param_2 + 4);
|
|
local_c = 0;
|
|
for (; puVar1 != (undefined4 *)0x0; puVar1 = (undefined4 *)*puVar1) {
|
|
iVar3 = FUN_004d4ae0((char *)(puVar1 + 2),param_3,iVar2);
|
|
if (iVar3 == 0) {
|
|
local_c = local_c + 1;
|
|
(**(code **)(*param_1 + 4))(param_1,puVar1 + 2,puVar1[1]);
|
|
}
|
|
}
|
|
return local_c;
|
|
}
|
|
|
|
|
|
|
|
/* @00403bdc file=? name=FUN_00403bdc */
|
|
|
|
undefined4 FUN_00403bdc(void)
|
|
|
|
{
|
|
return 1;
|
|
}
|
|
|
|
|
|
|
|
/* @00403be8 file=? name=FUN_00403be8 */
|
|
|
|
char * __cdecl FUN_00403be8(int param_1,char *param_2)
|
|
|
|
{
|
|
char cVar1;
|
|
uint uVar2;
|
|
uint uVar3;
|
|
char *pcVar4;
|
|
char *pcVar5;
|
|
|
|
uVar2 = 0xffffffff;
|
|
do {
|
|
pcVar4 = param_2;
|
|
if (uVar2 == 0) break;
|
|
uVar2 = uVar2 - 1;
|
|
pcVar4 = param_2 + 1;
|
|
cVar1 = *param_2;
|
|
param_2 = pcVar4;
|
|
} while (cVar1 != '\0');
|
|
uVar2 = ~uVar2;
|
|
pcVar4 = pcVar4 + -uVar2;
|
|
pcVar5 = (char *)(param_1 + 8);
|
|
for (uVar3 = uVar2 >> 2; uVar3 != 0; uVar3 = uVar3 - 1) {
|
|
*(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;
|
|
pcVar4 = pcVar4 + 4;
|
|
pcVar5 = pcVar5 + 4;
|
|
}
|
|
for (uVar2 = uVar2 & 3; uVar2 != 0; uVar2 = uVar2 - 1) {
|
|
*pcVar5 = *pcVar4;
|
|
pcVar4 = pcVar4 + 1;
|
|
pcVar5 = pcVar5 + 1;
|
|
}
|
|
return (char *)(param_1 + 8);
|
|
}
|
|
|
|
|
|
|
|
/* @00403c20 file=? name=FUN_00403c20 */
|
|
|
|
bool __cdecl FUN_00403c20(int param_1,char *param_2)
|
|
|
|
{
|
|
char cVar1;
|
|
char *pcVar2;
|
|
bool bVar3;
|
|
|
|
if (param_2 == (char *)0x0) {
|
|
bVar3 = param_1 == -8;
|
|
}
|
|
else {
|
|
pcVar2 = (char *)(param_1 + 8);
|
|
do {
|
|
cVar1 = *pcVar2;
|
|
if (cVar1 != *param_2) {
|
|
return cVar1 == *param_2;
|
|
}
|
|
if (cVar1 == '\0') {
|
|
return true;
|
|
}
|
|
cVar1 = pcVar2[1];
|
|
if (cVar1 != param_2[1]) {
|
|
return cVar1 == param_2[1];
|
|
}
|
|
pcVar2 = pcVar2 + 2;
|
|
param_2 = param_2 + 2;
|
|
bVar3 = cVar1 == '\0';
|
|
} while (!bVar3);
|
|
}
|
|
return bVar3;
|
|
}
|
|
|
|
|
|
|
|
/* @00403c68 file=? name=FUN_00403c68 */
|
|
|
|
undefined4 FUN_00403c68(void)
|
|
|
|
{
|
|
return 1;
|
|
}
|
|
|
|
|
|
|
|
/* @00403c74 file=? name=FUN_00403c74 */
|
|
|
|
undefined4 * __cdecl FUN_00403c74(undefined4 *param_1)
|
|
|
|
{
|
|
FUN_00403a30(param_1);
|
|
*param_1 = &PTR_FUN_004e0b24;
|
|
return param_1;
|
|
}
|
|
|
|
|
|
|
|
/* @00403c90 file=? name=FUN_00403c90 */
|
|
|
|
void __cdecl FUN_00403c90(int *param_1,byte param_2)
|
|
|
|
{
|
|
if (param_1 != (int *)0x0) {
|
|
*param_1 = (int)&PTR_FUN_004e0b24;
|
|
FUN_00403a48(param_1,0);
|
|
if ((param_2 & 1) != 0) {
|
|
FUN_004022d0(param_1);
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @00403cbc file=? name=FUN_00403cbc */
|
|
|
|
undefined4 * __cdecl FUN_00403cbc(int param_1,int param_2)
|
|
|
|
{
|
|
undefined4 *puVar1;
|
|
|
|
for (puVar1 = *(undefined4 **)(param_1 + 4);
|
|
(puVar1 != (undefined4 *)0x0 && (param_2 != puVar1[1])); puVar1 = (undefined4 *)*puVar1) {
|
|
}
|
|
if (puVar1 == (undefined4 *)0x0) {
|
|
puVar1 = (undefined4 *)0x0;
|
|
}
|
|
else {
|
|
puVar1 = puVar1 + 2;
|
|
}
|
|
return puVar1;
|
|
}
|
|
|
|
|
|
|
|
/* @00403ce4 file=? name=FUN_00403ce4 */
|
|
|
|
undefined4 * __cdecl FUN_00403ce4(int param_1,char *param_2)
|
|
|
|
{
|
|
char *pcVar1;
|
|
undefined4 *puVar2;
|
|
char *pcVar3;
|
|
char *pcVar4;
|
|
bool bVar5;
|
|
|
|
puVar2 = *(undefined4 **)(param_1 + 4);
|
|
do {
|
|
if (puVar2 == (undefined4 *)0x0) {
|
|
return (undefined4 *)0x0;
|
|
}
|
|
pcVar3 = (char *)(puVar2 + 2);
|
|
pcVar4 = param_2;
|
|
do {
|
|
if (*pcVar3 != *pcVar4) goto LAB_00403d19;
|
|
bVar5 = true;
|
|
if (*pcVar3 == '\0') break;
|
|
pcVar1 = pcVar3 + 1;
|
|
if (*pcVar1 != pcVar4[1]) goto LAB_00403d19;
|
|
pcVar3 = pcVar3 + 2;
|
|
pcVar4 = pcVar4 + 2;
|
|
bVar5 = *pcVar1 == '\0';
|
|
} while (!bVar5);
|
|
if (bVar5) {
|
|
return puVar2;
|
|
}
|
|
LAB_00403d19:
|
|
puVar2 = (undefined4 *)*puVar2;
|
|
} while( true );
|
|
}
|
|
|
|
|
|
|
|
/* @00403d28 file=? name=FUN_00403d28 */
|
|
|
|
void __cdecl FUN_00403d28(int param_1,int param_2)
|
|
|
|
{
|
|
undefined4 *puVar1;
|
|
|
|
for (puVar1 = *(undefined4 **)(param_1 + 4);
|
|
(puVar1 != (undefined4 *)0x0 && (param_2 != puVar1[1])); puVar1 = (undefined4 *)*puVar1) {
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @00403d48 file=? name=FUN_00403d48 */
|
|
|
|
void __cdecl FUN_00403d48(int param_1,char *param_2)
|
|
|
|
{
|
|
char *pcVar1;
|
|
int *piVar2;
|
|
int *piVar3;
|
|
int *piVar4;
|
|
char *pcVar5;
|
|
bool bVar6;
|
|
|
|
piVar2 = (int *)0x0;
|
|
for (piVar3 = *(int **)(param_1 + 4); piVar3 != (int *)0x0; piVar3 = (int *)*piVar3) {
|
|
piVar4 = piVar3 + 2;
|
|
pcVar5 = param_2;
|
|
do {
|
|
if ((char)*piVar4 != *pcVar5) goto LAB_00403d7e;
|
|
bVar6 = true;
|
|
if ((char)*piVar4 == '\0') break;
|
|
pcVar1 = (char *)((int)piVar4 + 1);
|
|
if (*pcVar1 != pcVar5[1]) goto LAB_00403d7e;
|
|
piVar4 = (int *)((int)piVar4 + 2);
|
|
pcVar5 = pcVar5 + 2;
|
|
bVar6 = *pcVar1 == '\0';
|
|
} while (!bVar6);
|
|
if (bVar6) break;
|
|
LAB_00403d7e:
|
|
piVar2 = piVar3;
|
|
}
|
|
if (piVar3 != (int *)0x0) {
|
|
if (piVar2 == (int *)0x0) {
|
|
*(int *)(param_1 + 4) = *piVar3;
|
|
}
|
|
else {
|
|
*piVar2 = *piVar3;
|
|
}
|
|
if (piVar3 == *(int **)(param_1 + 8)) {
|
|
*(int **)(param_1 + 8) = piVar2;
|
|
}
|
|
FUN_004022d0(piVar3);
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @00403db0 file=? name=FUN_00403db0 */
|
|
|
|
undefined4 * __cdecl FUN_00403db0(undefined4 *param_1)
|
|
|
|
{
|
|
FUN_00403c74(param_1);
|
|
*param_1 = &PTR_FUN_004e0b1c;
|
|
return param_1;
|
|
}
|
|
|
|
|
|
|
|
/* @00403dcc file=? name=FUN_00403dcc */
|
|
|
|
void __cdecl FUN_00403dcc(int *param_1,byte param_2)
|
|
|
|
{
|
|
if (param_1 != (int *)0x0) {
|
|
*param_1 = (int)&PTR_FUN_004e0b1c;
|
|
FUN_00403c90(param_1,0);
|
|
if ((param_2 & 1) != 0) {
|
|
FUN_004022d0(param_1);
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @00403df8 file=? name=FUN_00403df8 */
|
|
|
|
undefined4 * __cdecl FUN_00403df8(int param_1,byte *param_2,undefined4 param_3)
|
|
|
|
{
|
|
byte bVar1;
|
|
undefined4 *puVar2;
|
|
undefined4 *puVar3;
|
|
int iVar4;
|
|
undefined4 *puVar5;
|
|
byte *pbVar6;
|
|
byte *pbVar7;
|
|
bool bVar8;
|
|
|
|
iVar4 = FUN_004d4a78((char *)param_2);
|
|
puVar5 = (undefined4 *)FUN_004022b0(iVar4 + 9);
|
|
puVar3 = (undefined4 *)0x0;
|
|
for (puVar2 = *(undefined4 **)(param_1 + 4); puVar2 != (undefined4 *)0x0;
|
|
puVar2 = (undefined4 *)*puVar2) {
|
|
pbVar7 = (byte *)(puVar2 + 2);
|
|
pbVar6 = param_2;
|
|
do {
|
|
bVar1 = *pbVar6;
|
|
bVar8 = bVar1 < *pbVar7;
|
|
if ((bVar1 != *pbVar7) || (bVar8 = false, bVar1 == 0)) break;
|
|
bVar1 = pbVar6[1];
|
|
bVar8 = bVar1 < pbVar7[1];
|
|
if (bVar1 != pbVar7[1]) break;
|
|
pbVar6 = pbVar6 + 2;
|
|
pbVar7 = pbVar7 + 2;
|
|
bVar8 = false;
|
|
} while (bVar1 != 0);
|
|
if (bVar8) break;
|
|
puVar3 = puVar2;
|
|
}
|
|
if (puVar2 == (undefined4 *)0x0) {
|
|
*(undefined4 **)(param_1 + 8) = puVar5;
|
|
}
|
|
if (puVar3 == (undefined4 *)0x0) {
|
|
*(undefined4 **)(param_1 + 4) = puVar5;
|
|
}
|
|
else {
|
|
*puVar3 = puVar5;
|
|
}
|
|
puVar5[1] = param_3;
|
|
*puVar5 = puVar2;
|
|
FUN_00403be8((int)puVar5,(char *)param_2);
|
|
return puVar5 + 2;
|
|
}
|
|
|
|
|
|
|
|
/* @00403e84 file=? name=FUN_00403e84 */
|
|
|
|
int * __cdecl FUN_00403e84(int *param_1,char *param_2,int param_3)
|
|
|
|
{
|
|
*param_1 = 0;
|
|
param_1[2] = 0;
|
|
param_1[1] = 0;
|
|
param_1[4] = 0;
|
|
param_1[3] = 0;
|
|
param_1[5] = 0;
|
|
param_1[6] = 0;
|
|
param_1[7] = param_3;
|
|
if ((param_2 != (char *)0x0) && (*param_2 != '\0')) {
|
|
FUN_00404bfc(param_1,param_2);
|
|
}
|
|
return param_1;
|
|
}
|
|
|
|
|
|
|
|
/* @00403ecc file=? name=FUN_00403ecc */
|
|
|
|
void __cdecl FUN_00403ecc(int *param_1,byte param_2)
|
|
|
|
{
|
|
int *piVar1;
|
|
char *pcVar2;
|
|
int iVar3;
|
|
|
|
if (param_1 != (int *)0x0) {
|
|
piVar1 = (int *)param_1[1];
|
|
if ((((param_1[5] != 0) && ((char *)*param_1 != (char *)0x0)) && (*(char *)*param_1 != '\0')) &&
|
|
(iVar3 = FUN_00404d6c(param_1,(char *)0x0), iVar3 == 0)) {
|
|
pcVar2 = (char *)*param_1;
|
|
FUN_004dbb24((int *)&DAT_00524e68,s_NotationFile__Error_writing_file_004e0b38,(char *)0x0);
|
|
FUN_004dbb24((int *)&DAT_00524e68,pcVar2,(char *)0x0);
|
|
FUN_004dbb24((int *)&DAT_00524e68,s_____changes_lost__004e0b5c,(char *)0x0);
|
|
FUN_004d9c38((int *)&DAT_00524e68);
|
|
}
|
|
while (piVar1 != (int *)0x0) {
|
|
param_1[1] = piVar1[1];
|
|
FUN_004056ac(piVar1,3);
|
|
piVar1 = (int *)param_1[1];
|
|
}
|
|
if ((int *)*param_1 != (int *)0x0) {
|
|
FUN_004022d0((int *)*param_1);
|
|
}
|
|
if ((param_2 & 1) != 0) {
|
|
FUN_004022d0(param_1);
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @00403f84 file=? name=FUN_00403f84 */
|
|
|
|
void __cdecl FUN_00403f84(int param_1,char *param_2)
|
|
|
|
{
|
|
int local_8;
|
|
|
|
FUN_004050ac(param_1,param_2,&local_8);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @00403fa0 file=? name=FUN_00403fa0 */
|
|
|
|
undefined4 __cdecl FUN_00403fa0(int param_1,char *param_2)
|
|
|
|
{
|
|
int iVar1;
|
|
undefined4 uVar2;
|
|
int local_8;
|
|
|
|
iVar1 = FUN_004050ac(param_1,param_2,&local_8);
|
|
if (iVar1 == 0) {
|
|
uVar2 = 0;
|
|
}
|
|
else if ((*(byte *)(param_1 + 0x1c) & 4) == 0) {
|
|
uVar2 = *(undefined4 *)(local_8 + 0x10);
|
|
}
|
|
else {
|
|
uVar2 = *(undefined4 *)(local_8 + 0x14);
|
|
}
|
|
return uVar2;
|
|
}
|
|
|
|
|
|
|
|
/* @00403fdc file=? name=FUN_00403fdc */
|
|
|
|
int __cdecl FUN_00403fdc(int param_1,char *param_2,char *param_3)
|
|
|
|
{
|
|
int iVar1;
|
|
int local_8;
|
|
|
|
*(undefined4 *)(param_1 + 0x14) = 1;
|
|
iVar1 = FUN_004050ac(param_1,param_2,&local_8);
|
|
if (iVar1 == 0) {
|
|
local_8 = FUN_0040402c(param_1,param_2,param_3);
|
|
}
|
|
else {
|
|
FUN_004057c8(local_8,param_3);
|
|
}
|
|
return local_8;
|
|
}
|
|
|
|
|
|
|
|
/* @0040402c file=? name=FUN_0040402c */
|
|
|
|
int __cdecl FUN_0040402c(int param_1,char *param_2,char *param_3)
|
|
|
|
{
|
|
undefined4 *puVar1;
|
|
int iVar2;
|
|
|
|
*(undefined4 *)(param_1 + 0x14) = 1;
|
|
puVar1 = (undefined4 *)FUN_00402298(0x24);
|
|
if (puVar1 == (undefined4 *)0x0) {
|
|
iVar2 = 0;
|
|
}
|
|
else {
|
|
iVar2 = FUN_0040567c(puVar1,param_1);
|
|
}
|
|
FUN_00405704(iVar2,param_2,(int *)(param_1 + 0x10));
|
|
FUN_004057c8(iVar2,param_3);
|
|
FUN_00405074(param_1,iVar2);
|
|
return iVar2;
|
|
}
|
|
|
|
|
|
|
|
/* @00404088 file=? name=FUN_00404088 */
|
|
|
|
undefined4 __cdecl FUN_00404088(int param_1,char *param_2,char *param_3,undefined4 *param_4)
|
|
|
|
{
|
|
int iVar1;
|
|
int local_c;
|
|
int *local_8;
|
|
|
|
iVar1 = FUN_004050ac(param_1,param_2,(int *)&local_8);
|
|
if ((iVar1 != 0) && (iVar1 = FUN_00405868(local_8,param_3,&local_c), iVar1 != 0)) {
|
|
*param_4 = *(undefined4 *)(local_c + 8);
|
|
return 1;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
|
|
|
|
/* @004040d8 file=? name=FUN_004040d8 */
|
|
|
|
bool __cdecl FUN_004040d8(int param_1,char *param_2,char *param_3,int *param_4)
|
|
|
|
{
|
|
int iVar1;
|
|
int iVar2;
|
|
char *local_8;
|
|
|
|
iVar1 = FUN_00404088(param_1,param_2,param_3,&local_8);
|
|
if (iVar1 != 0) {
|
|
iVar2 = FUN_004dd1e0(local_8);
|
|
*param_4 = iVar2;
|
|
}
|
|
return iVar1 != 0;
|
|
}
|
|
|
|
|
|
|
|
/* @00404118 file=? name=FUN_00404118 */
|
|
|
|
undefined4 __cdecl FUN_00404118(int param_1,char *param_2,char *param_3,float *param_4)
|
|
|
|
{
|
|
int iVar1;
|
|
float10 fVar2;
|
|
undefined4 local_8;
|
|
|
|
iVar1 = FUN_00404088(param_1,param_2,param_3,&local_8);
|
|
if (iVar1 != 0) {
|
|
fVar2 = (float10)FUN_004dd1cc(local_8);
|
|
*param_4 = (float)fVar2;
|
|
return 1;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
|
|
|
|
/* @00404154 file=? name=FUN_00404154 */
|
|
|
|
undefined4 __cdecl FUN_00404154(int param_1,char *param_2,char *param_3,double *param_4)
|
|
|
|
{
|
|
int iVar1;
|
|
float10 fVar2;
|
|
undefined4 local_8;
|
|
|
|
iVar1 = FUN_00404088(param_1,param_2,param_3,&local_8);
|
|
if (iVar1 != 0) {
|
|
fVar2 = (float10)FUN_004dd1cc(local_8);
|
|
*param_4 = (double)fVar2;
|
|
return 1;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
|
|
|
|
/* @00404190 file=? name=FUN_00404190 */
|
|
|
|
undefined4 __cdecl FUN_00404190(int param_1,char *param_2,char *param_3,undefined4 *param_4)
|
|
|
|
{
|
|
int iVar1;
|
|
undefined4 uVar2;
|
|
char *local_8;
|
|
|
|
iVar1 = FUN_00404088(param_1,param_2,param_3,&local_8);
|
|
if (iVar1 != 0) {
|
|
iVar1 = FUN_004d4b58(local_8,&DAT_004e0b6e);
|
|
if (((iVar1 == 0) || (iVar1 = FUN_004d4b58(local_8,&DAT_004e0b73), iVar1 == 0)) ||
|
|
(iVar1 = FUN_004dd1e0(local_8), iVar1 != 0)) {
|
|
uVar2 = 1;
|
|
}
|
|
else {
|
|
uVar2 = 0;
|
|
}
|
|
*param_4 = uVar2;
|
|
return 1;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
|
|
|
|
/* @00404204 file=? name=FUN_00404204 */
|
|
|
|
void __cdecl FUN_00404204(int param_1,char *param_2,char *param_3,char *param_4)
|
|
|
|
{
|
|
int iVar1;
|
|
int *piVar2;
|
|
int *local_8;
|
|
|
|
*(undefined4 *)(param_1 + 0x14) = 1;
|
|
iVar1 = FUN_004050ac(param_1,param_2,(int *)&local_8);
|
|
if (iVar1 == 0) {
|
|
local_8 = (int *)FUN_0040402c(param_1,param_2,(char *)0x0);
|
|
}
|
|
piVar2 = (int *)FUN_00402298(0x10);
|
|
if (piVar2 != (int *)0x0) {
|
|
*piVar2 = 0;
|
|
piVar2[2] = 0;
|
|
piVar2[1] = 0;
|
|
piVar2[3] = 0;
|
|
}
|
|
FUN_0040548c((int)piVar2,param_3,local_8 + 5);
|
|
FUN_00405548((int)piVar2,param_4);
|
|
FUN_00405920(local_8,piVar2);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @00404298 file=? name=FUN_00404298 */
|
|
|
|
void __cdecl FUN_00404298(int param_1,char *param_2,char *param_3,uint param_4)
|
|
|
|
{
|
|
int *piVar1;
|
|
int local_8c [15];
|
|
int local_4e [18];
|
|
|
|
FUN_004db158(local_8c,0,&DAT_00521410,0xc,2);
|
|
piVar1 = FUN_004db78c(local_4e,param_4);
|
|
FUN_004d9c58(piVar1);
|
|
FUN_00404204(param_1,param_2,param_3,&DAT_00521410);
|
|
FUN_004db428(local_8c,2);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @00404304 file=? name=FUN_00404304 */
|
|
|
|
void __cdecl FUN_00404304(int param_1,char *param_2,char *param_3,float param_4)
|
|
|
|
{
|
|
int *piVar1;
|
|
int local_90 [15];
|
|
int local_52 [18];
|
|
float local_8;
|
|
|
|
FUN_004db158(local_90,0,&DAT_0052141c,0x20,2);
|
|
local_8 = param_4;
|
|
piVar1 = FUN_004db634(local_52,(float10)param_4);
|
|
FUN_004d9c58(piVar1);
|
|
FUN_00404204(param_1,param_2,param_3,&DAT_0052141c);
|
|
FUN_004db428(local_90,2);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @0040437c file=? name=FUN_0040437c */
|
|
|
|
void __cdecl
|
|
FUN_0040437c(int param_1,char *param_2,char *param_3,undefined4 param_4,undefined4 param_5)
|
|
|
|
{
|
|
int *piVar1;
|
|
int local_94 [15];
|
|
int local_56 [18];
|
|
undefined4 local_c;
|
|
undefined4 uStack_8;
|
|
|
|
FUN_004db158(local_94,0,&DAT_0052143c,0x40,2);
|
|
local_c = param_4;
|
|
uStack_8 = param_5;
|
|
piVar1 = FUN_004db634(local_56,(float10)(double)CONCAT44(param_5,param_4));
|
|
FUN_004d9c58(piVar1);
|
|
FUN_00404204(param_1,param_2,param_3,&DAT_0052143c);
|
|
FUN_004db428(local_94,2);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @004043f8 file=? name=FUN_004043f8 */
|
|
|
|
void __cdecl FUN_004043f8(int param_1,char *param_2,char *param_3,int param_4)
|
|
|
|
{
|
|
int local_8c [15];
|
|
int local_4e [18];
|
|
|
|
FUN_004db158(local_8c,0,&DAT_0052147c,6,2);
|
|
if (param_4 == 0) {
|
|
FUN_004dbb24(local_4e,s_False_004e0b7c,(char *)0x0);
|
|
FUN_004d9c58(local_4e);
|
|
}
|
|
else {
|
|
FUN_004dbb24(local_4e,&DAT_004e0b77,(char *)0x0);
|
|
FUN_004d9c58(local_4e);
|
|
}
|
|
FUN_00404204(param_1,param_2,param_3,&DAT_0052147c);
|
|
FUN_004db428(local_8c,2);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @00404490 file=? name=FUN_00404490 */
|
|
|
|
void __cdecl FUN_00404490(int param_1,char *param_2,char *param_3,char *param_4)
|
|
|
|
{
|
|
int iVar1;
|
|
undefined4 *puVar2;
|
|
int local_8;
|
|
|
|
*(undefined4 *)(param_1 + 0x14) = 1;
|
|
iVar1 = FUN_004050ac(param_1,param_2,&local_8);
|
|
if (iVar1 == 0) {
|
|
local_8 = FUN_0040402c(param_1,param_2,(char *)0x0);
|
|
}
|
|
puVar2 = (undefined4 *)FUN_00402298(0x10);
|
|
if (puVar2 != (undefined4 *)0x0) {
|
|
*puVar2 = 0;
|
|
puVar2[2] = 0;
|
|
puVar2[1] = 0;
|
|
puVar2[3] = 0;
|
|
}
|
|
FUN_0040548c((int)puVar2,param_3,(int *)(local_8 + 0x14));
|
|
FUN_00405548((int)puVar2,param_4);
|
|
FUN_00405834(local_8,puVar2);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @00404528 file=? name=FUN_00404528 */
|
|
|
|
void __cdecl FUN_00404528(int param_1,char *param_2,char *param_3,uint param_4)
|
|
|
|
{
|
|
int *piVar1;
|
|
int local_8c [15];
|
|
int local_4e [18];
|
|
|
|
FUN_004db158(local_8c,0,&DAT_00521482,0xc,2);
|
|
piVar1 = FUN_004db78c(local_4e,param_4);
|
|
FUN_004d9c58(piVar1);
|
|
FUN_00404490(param_1,param_2,param_3,&DAT_00521482);
|
|
FUN_004db428(local_8c,2);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @00404594 file=? name=FUN_00404594 */
|
|
|
|
void __cdecl FUN_00404594(int param_1,char *param_2,char *param_3,float param_4)
|
|
|
|
{
|
|
int *piVar1;
|
|
int local_90 [15];
|
|
int local_52 [18];
|
|
float local_8;
|
|
|
|
FUN_004db158(local_90,0,&DAT_0052148e,0x20,2);
|
|
local_8 = param_4;
|
|
piVar1 = FUN_004db634(local_52,(float10)param_4);
|
|
FUN_004d9c58(piVar1);
|
|
FUN_00404490(param_1,param_2,param_3,&DAT_0052148e);
|
|
FUN_004db428(local_90,2);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @0040460c file=? name=FUN_0040460c */
|
|
|
|
void __cdecl
|
|
FUN_0040460c(int param_1,char *param_2,char *param_3,undefined4 param_4,undefined4 param_5)
|
|
|
|
{
|
|
int *piVar1;
|
|
int local_94 [15];
|
|
int local_56 [18];
|
|
undefined4 local_c;
|
|
undefined4 uStack_8;
|
|
|
|
FUN_004db158(local_94,0,&DAT_005214ae,0x40,2);
|
|
local_c = param_4;
|
|
uStack_8 = param_5;
|
|
piVar1 = FUN_004db634(local_56,(float10)(double)CONCAT44(param_5,param_4));
|
|
FUN_004d9c58(piVar1);
|
|
FUN_00404490(param_1,param_2,param_3,&DAT_005214ae);
|
|
FUN_004db428(local_94,2);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @00404688 file=? name=FUN_00404688 */
|
|
|
|
void __cdecl FUN_00404688(int param_1,char *param_2,char *param_3,int param_4)
|
|
|
|
{
|
|
int local_8c [15];
|
|
int local_4e [18];
|
|
|
|
FUN_004db158(local_8c,0,&DAT_005214ee,6,2);
|
|
if (param_4 == 0) {
|
|
FUN_004dbb24(local_4e,s_False_004e0b87,(char *)0x0);
|
|
FUN_004d9c58(local_4e);
|
|
}
|
|
else {
|
|
FUN_004dbb24(local_4e,&DAT_004e0b82,(char *)0x0);
|
|
FUN_004d9c58(local_4e);
|
|
}
|
|
FUN_00404490(param_1,param_2,param_3,&DAT_005214ee);
|
|
FUN_004db428(local_8c,2);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @00404720 file=? name=FUN_00404720 */
|
|
|
|
int * __cdecl FUN_00404720(int param_1,char *param_2,char *param_3)
|
|
|
|
{
|
|
int iVar1;
|
|
int *piVar2;
|
|
int local_8;
|
|
|
|
iVar1 = FUN_004050ac(param_1,param_2,&local_8);
|
|
if (iVar1 == 0) {
|
|
piVar2 = (int *)0x0;
|
|
}
|
|
else {
|
|
piVar2 = FUN_00404758(param_1,local_8,param_3);
|
|
}
|
|
return piVar2;
|
|
}
|
|
|
|
|
|
|
|
/* @00404758 file=? name=FUN_00404758 */
|
|
|
|
int * __cdecl FUN_00404758(int param_1,int param_2,char *param_3)
|
|
|
|
{
|
|
char *pcVar1;
|
|
int iVar2;
|
|
undefined4 *puVar3;
|
|
int *piVar4;
|
|
int iVar5;
|
|
char *pcVar6;
|
|
bool bVar7;
|
|
|
|
pcVar6 = param_3;
|
|
if (param_3 == (char *)0x0) {
|
|
pcVar6 = &DAT_004e0b8d;
|
|
}
|
|
iVar2 = FUN_004d4a78(pcVar6);
|
|
puVar3 = (undefined4 *)FUN_00402298(0xc);
|
|
if (puVar3 == (undefined4 *)0x0) {
|
|
piVar4 = (int *)0x0;
|
|
}
|
|
else {
|
|
piVar4 = FUN_00403c74(puVar3);
|
|
}
|
|
for (puVar3 = *(undefined4 **)(param_2 + 8); puVar3 != (undefined4 *)0x0;
|
|
puVar3 = (undefined4 *)*puVar3) {
|
|
pcVar1 = (char *)puVar3[1];
|
|
if (pcVar1 == (char *)0x0) {
|
|
bVar7 = param_3 == (char *)0x0;
|
|
}
|
|
else if ((*(byte *)(param_1 + 0x1c) & 0x10) == 0) {
|
|
iVar5 = FUN_004d4ae0(pcVar1,pcVar6,iVar2);
|
|
bVar7 = iVar5 == 0;
|
|
}
|
|
else {
|
|
iVar5 = FUN_004d4bec(pcVar1,pcVar6,iVar2);
|
|
bVar7 = iVar5 == 0;
|
|
}
|
|
if ((*(byte *)(param_1 + 0x1c) & 4) == 0) {
|
|
if (pcVar1 == (char *)0x0) {
|
|
if ((*(byte *)(param_1 + 0x1c) & 1) == 0) {
|
|
bVar7 = false;
|
|
}
|
|
else {
|
|
bVar7 = false;
|
|
}
|
|
}
|
|
}
|
|
else if ((puVar3[3] == 0) || (!bVar7)) {
|
|
bVar7 = false;
|
|
}
|
|
else {
|
|
bVar7 = true;
|
|
}
|
|
if (bVar7) {
|
|
(**(code **)(*piVar4 + 4))(piVar4,pcVar1,puVar3[2]);
|
|
}
|
|
}
|
|
return piVar4;
|
|
}
|
|
|
|
|
|
|
|
/* @0040485c file=? name=FUN_0040485c */
|
|
|
|
int * __cdecl FUN_0040485c(int param_1,char *param_2)
|
|
|
|
{
|
|
int iVar1;
|
|
char *pcVar2;
|
|
int iVar3;
|
|
undefined4 *puVar4;
|
|
int *piVar5;
|
|
int iVar6;
|
|
char *pcVar7;
|
|
bool bVar8;
|
|
|
|
pcVar7 = param_2;
|
|
if (param_2 == (char *)0x0) {
|
|
pcVar7 = &DAT_004e0b8f;
|
|
}
|
|
iVar3 = FUN_004d4a78(pcVar7);
|
|
puVar4 = (undefined4 *)FUN_00402298(0xc);
|
|
if (puVar4 == (undefined4 *)0x0) {
|
|
piVar5 = (int *)0x0;
|
|
}
|
|
else {
|
|
piVar5 = FUN_00403c74(puVar4);
|
|
}
|
|
for (iVar1 = *(int *)(param_1 + 4); iVar1 != 0; iVar1 = *(int *)(iVar1 + 4)) {
|
|
pcVar2 = *(char **)(iVar1 + 0x18);
|
|
if (pcVar2 == (char *)0x0) {
|
|
bVar8 = param_2 == (char *)0x0;
|
|
}
|
|
else if ((*(byte *)(param_1 + 0x1c) & 8) == 0) {
|
|
iVar6 = FUN_004d4ae0(pcVar2,pcVar7,iVar3);
|
|
bVar8 = iVar6 == 0;
|
|
}
|
|
else {
|
|
iVar6 = FUN_004d4bec(pcVar2,pcVar7,iVar3);
|
|
bVar8 = iVar6 == 0;
|
|
}
|
|
if ((*(byte *)(param_1 + 0x1c) & 2) == 0) {
|
|
if (pcVar2 == (char *)0x0) {
|
|
if ((*(byte *)(param_1 + 0x1c) & 1) == 0) {
|
|
bVar8 = false;
|
|
}
|
|
else {
|
|
bVar8 = false;
|
|
}
|
|
}
|
|
}
|
|
else if ((*(int *)(iVar1 + 0x20) == 0) || (!bVar8)) {
|
|
bVar8 = false;
|
|
}
|
|
else {
|
|
bVar8 = true;
|
|
}
|
|
if (bVar8) {
|
|
(**(code **)(*piVar5 + 4))(piVar5,pcVar2,iVar1);
|
|
}
|
|
}
|
|
return piVar5;
|
|
}
|
|
|
|
|
|
|
|
/* @00404954 file=? name=FUN_00404954 */
|
|
|
|
int * __cdecl FUN_00404954(int param_1,char *param_2,char *param_3)
|
|
|
|
{
|
|
int iVar1;
|
|
int *piVar2;
|
|
int local_8;
|
|
|
|
iVar1 = FUN_004050ac(param_1,param_2,&local_8);
|
|
if (iVar1 == 0) {
|
|
piVar2 = (int *)0x0;
|
|
}
|
|
else {
|
|
piVar2 = FUN_0040498c(param_1,local_8,param_3);
|
|
}
|
|
return piVar2;
|
|
}
|
|
|
|
|
|
|
|
/* @0040498c file=? name=FUN_0040498c */
|
|
|
|
int * __cdecl FUN_0040498c(int param_1,int param_2,char *param_3)
|
|
|
|
{
|
|
char *pcVar1;
|
|
int iVar2;
|
|
undefined4 *puVar3;
|
|
int *piVar4;
|
|
int iVar5;
|
|
char *pcVar6;
|
|
bool bVar7;
|
|
|
|
pcVar6 = param_3;
|
|
if (param_3 == (char *)0x0) {
|
|
pcVar6 = &DAT_004e0b91;
|
|
}
|
|
iVar2 = FUN_004d4a78(pcVar6);
|
|
puVar3 = (undefined4 *)FUN_00402298(0xc);
|
|
if (puVar3 == (undefined4 *)0x0) {
|
|
piVar4 = (int *)0x0;
|
|
}
|
|
else {
|
|
piVar4 = FUN_00403db0(puVar3);
|
|
}
|
|
for (puVar3 = *(undefined4 **)(param_2 + 8); puVar3 != (undefined4 *)0x0;
|
|
puVar3 = (undefined4 *)*puVar3) {
|
|
pcVar1 = (char *)puVar3[1];
|
|
if (pcVar1 == (char *)0x0) {
|
|
bVar7 = param_3 == (char *)0x0;
|
|
}
|
|
else if ((*(byte *)(param_1 + 0x1c) & 0x10) == 0) {
|
|
iVar5 = FUN_004d4ae0(pcVar1,pcVar6,iVar2);
|
|
bVar7 = iVar5 == 0;
|
|
}
|
|
else {
|
|
iVar5 = FUN_004d4bec(pcVar1,pcVar6,iVar2);
|
|
bVar7 = iVar5 == 0;
|
|
}
|
|
if ((*(byte *)(param_1 + 0x1c) & 4) == 0) {
|
|
if (pcVar1 == (char *)0x0) {
|
|
if ((*(byte *)(param_1 + 0x1c) & 1) == 0) {
|
|
bVar7 = false;
|
|
}
|
|
else {
|
|
bVar7 = false;
|
|
}
|
|
}
|
|
}
|
|
else if ((puVar3[3] == 0) || (!bVar7)) {
|
|
bVar7 = false;
|
|
}
|
|
else {
|
|
bVar7 = true;
|
|
}
|
|
if (bVar7) {
|
|
(**(code **)(*piVar4 + 4))(piVar4,pcVar1,puVar3[2]);
|
|
}
|
|
}
|
|
return piVar4;
|
|
}
|
|
|
|
|
|
|
|
/* @00404a90 file=? name=FUN_00404a90 */
|
|
|
|
int * __cdecl FUN_00404a90(int param_1,char *param_2)
|
|
|
|
{
|
|
int iVar1;
|
|
char *pcVar2;
|
|
int iVar3;
|
|
undefined4 *puVar4;
|
|
int *piVar5;
|
|
int iVar6;
|
|
char *pcVar7;
|
|
bool bVar8;
|
|
|
|
pcVar7 = param_2;
|
|
if (param_2 == (char *)0x0) {
|
|
pcVar7 = &DAT_004e0b93;
|
|
}
|
|
iVar3 = FUN_004d4a78(pcVar7);
|
|
puVar4 = (undefined4 *)FUN_00402298(0xc);
|
|
if (puVar4 == (undefined4 *)0x0) {
|
|
piVar5 = (int *)0x0;
|
|
}
|
|
else {
|
|
piVar5 = FUN_00403db0(puVar4);
|
|
}
|
|
for (iVar1 = *(int *)(param_1 + 4); iVar1 != 0; iVar1 = *(int *)(iVar1 + 4)) {
|
|
pcVar2 = *(char **)(iVar1 + 0x18);
|
|
if (pcVar2 == (char *)0x0) {
|
|
bVar8 = param_2 == (char *)0x0;
|
|
}
|
|
else if ((*(byte *)(param_1 + 0x1c) & 8) == 0) {
|
|
iVar6 = FUN_004d4ae0(pcVar2,pcVar7,iVar3);
|
|
bVar8 = iVar6 == 0;
|
|
}
|
|
else {
|
|
iVar6 = FUN_004d4bec(pcVar2,pcVar7,iVar3);
|
|
bVar8 = iVar6 == 0;
|
|
}
|
|
if ((*(byte *)(param_1 + 0x1c) & 2) == 0) {
|
|
if (pcVar2 == (char *)0x0) {
|
|
if ((*(byte *)(param_1 + 0x1c) & 1) == 0) {
|
|
bVar8 = false;
|
|
}
|
|
else {
|
|
bVar8 = false;
|
|
}
|
|
}
|
|
}
|
|
else if ((*(int *)(iVar1 + 0x20) == 0) || (!bVar8)) {
|
|
bVar8 = false;
|
|
}
|
|
else {
|
|
bVar8 = true;
|
|
}
|
|
if (bVar8) {
|
|
(**(code **)(*piVar5 + 4))(piVar5,pcVar2,iVar1);
|
|
}
|
|
}
|
|
return piVar5;
|
|
}
|
|
|
|
|
|
|
|
/* @00404b88 file=? name=FUN_00404b88 */
|
|
|
|
void __cdecl FUN_00404b88(int param_1,char *param_2,char *param_3)
|
|
|
|
{
|
|
int iVar1;
|
|
int *local_8;
|
|
|
|
iVar1 = FUN_004050ac(param_1,param_2,(int *)&local_8);
|
|
if (iVar1 != 0) {
|
|
*(undefined4 *)(param_1 + 0x14) = 1;
|
|
FUN_00405988(local_8,param_3);
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @00404bc0 file=? name=FUN_00404bc0 */
|
|
|
|
void __cdecl FUN_00404bc0(int param_1,char *param_2)
|
|
|
|
{
|
|
int iVar1;
|
|
int local_c;
|
|
int *local_8;
|
|
|
|
iVar1 = FUN_00405190(param_1,param_2,(int *)&local_8,&local_c);
|
|
if (iVar1 != 0) {
|
|
FUN_00405224(param_1,local_8,local_c);
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @00404bfc file=? name=FUN_00404bfc */
|
|
|
|
void __cdecl FUN_00404bfc(int *param_1,char *param_2)
|
|
|
|
{
|
|
char cVar1;
|
|
int iVar2;
|
|
int iVar3;
|
|
int *piVar4;
|
|
uint uVar5;
|
|
uint uVar6;
|
|
char *pcVar7;
|
|
char *pcVar8;
|
|
char local_294 [512];
|
|
int local_94 [17];
|
|
int local_50 [19];
|
|
|
|
FUN_004da66c(local_94,0,param_2,1,DAT_00520540);
|
|
iVar2 = param_1[3];
|
|
if (*param_1 == 0) {
|
|
iVar3 = FUN_004d4a78(param_2);
|
|
iVar3 = FUN_004022b0(iVar3 + 1);
|
|
*param_1 = iVar3;
|
|
uVar5 = 0xffffffff;
|
|
do {
|
|
pcVar7 = param_2;
|
|
if (uVar5 == 0) break;
|
|
uVar5 = uVar5 - 1;
|
|
pcVar7 = param_2 + 1;
|
|
cVar1 = *param_2;
|
|
param_2 = pcVar7;
|
|
} while (cVar1 != '\0');
|
|
uVar5 = ~uVar5;
|
|
pcVar7 = pcVar7 + -uVar5;
|
|
pcVar8 = (char *)*param_1;
|
|
for (uVar6 = uVar5 >> 2; uVar6 != 0; uVar6 = uVar6 - 1) {
|
|
*(undefined4 *)pcVar8 = *(undefined4 *)pcVar7;
|
|
pcVar7 = pcVar7 + 4;
|
|
pcVar8 = pcVar8 + 4;
|
|
}
|
|
for (uVar5 = uVar5 & 3; uVar5 != 0; uVar5 = uVar5 - 1) {
|
|
*pcVar8 = *pcVar7;
|
|
pcVar7 = pcVar7 + 1;
|
|
pcVar8 = pcVar8 + 1;
|
|
}
|
|
}
|
|
if ((*(byte *)(local_94[0] + 0xc) & 0x86) != 0) {
|
|
local_94[0] = 0;
|
|
}
|
|
if (local_94[0] != 0) {
|
|
while( true ) {
|
|
piVar4 = FUN_004dad10(local_50,local_294,0x200,10);
|
|
iVar3 = *piVar4;
|
|
if ((*(byte *)(iVar3 + 0xc) & 0x86) != 0) {
|
|
iVar3 = 0;
|
|
}
|
|
if (iVar3 == 0) break;
|
|
FUN_0040527c((int)param_1,local_294);
|
|
}
|
|
FUN_004da44c(local_94);
|
|
FUN_0040527c((int)param_1,(char *)0x0);
|
|
}
|
|
if (iVar2 == 0) {
|
|
param_1[5] = 0;
|
|
}
|
|
FUN_004da754(local_94,2);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @00404d00 file=? name=FUN_00404d00 */
|
|
|
|
void __cdecl FUN_00404d00(int param_1,char *param_2,int param_3)
|
|
|
|
{
|
|
int iVar1;
|
|
char *pcVar2;
|
|
char *pcVar3;
|
|
|
|
iVar1 = *(int *)(param_1 + 0xc);
|
|
pcVar3 = param_2 + param_3;
|
|
while (param_2 < pcVar3) {
|
|
pcVar2 = FUN_004d49f4(param_2,'\0');
|
|
FUN_0040527c(param_1,param_2);
|
|
param_2 = pcVar2 + 1;
|
|
}
|
|
FUN_0040527c(param_1,(char *)0x0);
|
|
if (iVar1 == 0) {
|
|
*(undefined4 *)(param_1 + 0x14) = 0;
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @00404d6c file=? name=FUN_00404d6c */
|
|
|
|
undefined4 __cdecl FUN_00404d6c(undefined4 *param_1,char *param_2)
|
|
|
|
{
|
|
char cVar1;
|
|
LPCSTR pCVar2;
|
|
int iVar3;
|
|
char *pcVar4;
|
|
uint uVar5;
|
|
uint uVar6;
|
|
char *pcVar7;
|
|
undefined4 uVar8;
|
|
int local_90 [17];
|
|
int local_4c [18];
|
|
|
|
FUN_004db014(local_90,0);
|
|
if ((param_2 == (char *)0x0) || (*param_2 == '\0')) {
|
|
pCVar2 = (LPCSTR)*param_1;
|
|
if ((pCVar2 == (LPCSTR)0x0) || (*pCVar2 == '\0')) {
|
|
uVar8 = 0;
|
|
FUN_004db0ec(local_90,2);
|
|
return uVar8;
|
|
}
|
|
FUN_004da5f8(local_90,pCVar2,2,DAT_00520540);
|
|
}
|
|
else {
|
|
FUN_004da5f8(local_90,param_2,2,DAT_00520540);
|
|
}
|
|
if ((*(byte *)(local_90[0] + 0xc) & 0x86) != 0) {
|
|
local_90[0] = 0;
|
|
}
|
|
if (local_90[0] == 0) {
|
|
uVar8 = 0;
|
|
FUN_004db0ec(local_90,2);
|
|
}
|
|
else {
|
|
FUN_00405400((int)param_1,local_4c,1);
|
|
FUN_004da44c(local_90);
|
|
if ((param_2 != (char *)0x0) && (*param_2 != '\0')) {
|
|
if ((int *)*param_1 != (int *)0x0) {
|
|
FUN_004022d0((int *)*param_1);
|
|
}
|
|
iVar3 = FUN_004d4a78(param_2);
|
|
pcVar4 = (char *)FUN_004022b0(iVar3 + 1);
|
|
*param_1 = pcVar4;
|
|
uVar5 = 0xffffffff;
|
|
do {
|
|
pcVar7 = param_2;
|
|
if (uVar5 == 0) break;
|
|
uVar5 = uVar5 - 1;
|
|
pcVar7 = param_2 + 1;
|
|
cVar1 = *param_2;
|
|
param_2 = pcVar7;
|
|
} while (cVar1 != '\0');
|
|
uVar5 = ~uVar5;
|
|
pcVar7 = pcVar7 + -uVar5;
|
|
for (uVar6 = uVar5 >> 2; uVar6 != 0; uVar6 = uVar6 - 1) {
|
|
*(undefined4 *)pcVar4 = *(undefined4 *)pcVar7;
|
|
pcVar7 = pcVar7 + 4;
|
|
pcVar4 = pcVar4 + 4;
|
|
}
|
|
for (uVar5 = uVar5 & 3; uVar5 != 0; uVar5 = uVar5 - 1) {
|
|
*pcVar4 = *pcVar7;
|
|
pcVar7 = pcVar7 + 1;
|
|
pcVar4 = pcVar4 + 1;
|
|
}
|
|
}
|
|
param_1[5] = 0;
|
|
uVar8 = 1;
|
|
FUN_004db0ec(local_90,2);
|
|
}
|
|
return uVar8;
|
|
}
|
|
|
|
|
|
|
|
/* @00404eb8 file=? name=FUN_00404eb8 */
|
|
|
|
int __cdecl FUN_00404eb8(int param_1)
|
|
|
|
{
|
|
int iVar1;
|
|
int local_90 [17];
|
|
int local_4c [18];
|
|
|
|
FUN_004db014(local_90,0);
|
|
iVar1 = FUN_00405400(param_1,local_4c,0);
|
|
FUN_004db0ec(local_90,2);
|
|
return iVar1;
|
|
}
|
|
|
|
|
|
|
|
/* @00404f00 file=? name=FUN_00404f00 */
|
|
|
|
int __cdecl FUN_00404f00(int param_1,char *param_2,int param_3)
|
|
|
|
{
|
|
int iVar1;
|
|
int local_8c [15];
|
|
int local_4e [18];
|
|
|
|
FUN_004db158(local_8c,0,param_2,param_3,2);
|
|
iVar1 = FUN_00405400(param_1,local_4e,2);
|
|
if (param_3 < iVar1) {
|
|
iVar1 = -1;
|
|
FUN_004db428(local_8c,2);
|
|
}
|
|
else {
|
|
*(undefined4 *)(param_1 + 0x14) = 0;
|
|
FUN_004db428(local_8c,2);
|
|
}
|
|
return iVar1;
|
|
}
|
|
|
|
|
|
|
|
/* @00404f78 file=? name=FUN_00404f78 */
|
|
|
|
void __cdecl FUN_00404f78(int *param_1)
|
|
|
|
{
|
|
int *piVar1;
|
|
int iVar2;
|
|
int local_24 [8];
|
|
|
|
param_1[5] = 0;
|
|
FUN_00403ecc(param_1,2);
|
|
piVar1 = FUN_00403e84(local_24,(char *)0x0,1);
|
|
for (iVar2 = 8; iVar2 != 0; iVar2 = iVar2 + -1) {
|
|
*param_1 = *piVar1;
|
|
piVar1 = piVar1 + 1;
|
|
param_1 = param_1 + 1;
|
|
}
|
|
FUN_00403ecc(local_24,2);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @00404fc4 file=? name=FUN_00404fc4 */
|
|
|
|
void __cdecl FUN_00404fc4(int param_1)
|
|
|
|
{
|
|
char *pcVar1;
|
|
int *piVar2;
|
|
int *piVar3;
|
|
char *pcVar4;
|
|
char *pcVar5;
|
|
bool bVar6;
|
|
int *local_8;
|
|
|
|
local_8 = (int *)0x0;
|
|
piVar2 = *(int **)(param_1 + 4);
|
|
joined_r0x00404fd8:
|
|
do {
|
|
do {
|
|
piVar3 = local_8;
|
|
local_8 = piVar2;
|
|
if (local_8 == (int *)0x0) {
|
|
return;
|
|
}
|
|
piVar2 = (int *)local_8[1];
|
|
pcVar4 = (char *)local_8[6];
|
|
} while (*pcVar4 == '_');
|
|
pcVar5 = s_LAB_ONLY_004e0b95;
|
|
do {
|
|
bVar6 = *pcVar4 == *pcVar5;
|
|
if (!bVar6) break;
|
|
if (*pcVar4 == '\0') goto joined_r0x00404fd8;
|
|
pcVar1 = pcVar4 + 1;
|
|
bVar6 = *pcVar1 == pcVar5[1];
|
|
if (!bVar6) break;
|
|
pcVar4 = pcVar4 + 2;
|
|
pcVar5 = pcVar5 + 2;
|
|
bVar6 = *pcVar1 == '\0';
|
|
} while (!bVar6);
|
|
if (!bVar6) {
|
|
FUN_00405224(param_1,local_8,(int)piVar3);
|
|
local_8 = piVar3;
|
|
}
|
|
} while( true );
|
|
}
|
|
|
|
|
|
|
|
/* @00405030 file=? name=FUN_00405030 */
|
|
|
|
void __cdecl FUN_00405030(int param_1)
|
|
|
|
{
|
|
int iVar1;
|
|
|
|
iVar1 = FUN_00403f84(param_1,s_LAB_ONLY_004e0b9e);
|
|
if (iVar1 == 0) {
|
|
FUN_00403fdc(param_1,s_LAB_ONLY_004e0ba7,s____this_file_has_not_been_approv_004e0bb0);
|
|
FUN_00404490(param_1,s_LAB_ONLY_004e0be0,(char *)0x0,(char *)0x0);
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @00405074 file=? name=FUN_00405074 */
|
|
|
|
void __cdecl FUN_00405074(int param_1,int param_2)
|
|
|
|
{
|
|
if (*(int *)(param_1 + 8) == 0) {
|
|
*(int *)(param_1 + 4) = param_2;
|
|
}
|
|
else {
|
|
*(int *)(*(int *)(param_1 + 8) + 4) = param_2;
|
|
}
|
|
*(int *)(param_1 + 8) = param_2;
|
|
*(undefined4 *)(param_2 + 4) = 0;
|
|
if (*(int *)(param_2 + 0x20) != 0) {
|
|
*(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + 1;
|
|
}
|
|
*(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + 1;
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @004050ac file=? name=FUN_004050ac */
|
|
|
|
undefined4 __cdecl FUN_004050ac(int param_1,char *param_2,int *param_3)
|
|
|
|
{
|
|
char *pcVar1;
|
|
int iVar2;
|
|
char *pcVar3;
|
|
int iVar4;
|
|
char *pcVar5;
|
|
bool bVar6;
|
|
|
|
if ((*(int *)(param_1 + 0x18) != 0) && (*(int *)(*(int *)(param_1 + 0x18) + 0x18) != 0)) {
|
|
if (((*(byte *)(param_1 + 0x1c) & 8) != 0) &&
|
|
(iVar2 = FUN_004d4b58(*(char **)(*(int *)(param_1 + 0x18) + 0x18),param_2), iVar2 == 0)) {
|
|
LAB_0040510c:
|
|
*param_3 = *(int *)(param_1 + 0x18);
|
|
return 1;
|
|
}
|
|
if ((*(byte *)(param_1 + 0x1c) & 8) == 0) {
|
|
pcVar3 = *(char **)(*(int *)(param_1 + 0x18) + 0x18);
|
|
pcVar5 = param_2;
|
|
do {
|
|
if (*pcVar3 != *pcVar5) goto LAB_0040511b;
|
|
bVar6 = true;
|
|
if (*pcVar3 == '\0') break;
|
|
pcVar1 = pcVar3 + 1;
|
|
if (*pcVar1 != pcVar5[1]) goto LAB_0040511b;
|
|
pcVar3 = pcVar3 + 2;
|
|
pcVar5 = pcVar5 + 2;
|
|
bVar6 = *pcVar1 == '\0';
|
|
} while (!bVar6);
|
|
if (bVar6) goto LAB_0040510c;
|
|
}
|
|
}
|
|
LAB_0040511b:
|
|
iVar2 = *(int *)(param_1 + 4);
|
|
do {
|
|
if (iVar2 == 0) {
|
|
*param_3 = 0;
|
|
return 0;
|
|
}
|
|
if (*(int *)(iVar2 + 0x18) != 0) {
|
|
if (((*(byte *)(param_1 + 0x1c) & 8) != 0) &&
|
|
(iVar4 = FUN_004d4b58(*(char **)(iVar2 + 0x18),param_2), iVar4 == 0)) {
|
|
LAB_00405169:
|
|
*(int *)(param_1 + 0x18) = iVar2;
|
|
*param_3 = iVar2;
|
|
return 1;
|
|
}
|
|
if ((*(byte *)(param_1 + 0x1c) & 8) == 0) {
|
|
pcVar3 = *(char **)(iVar2 + 0x18);
|
|
pcVar5 = param_2;
|
|
do {
|
|
if (*pcVar3 != *pcVar5) goto LAB_00405178;
|
|
bVar6 = true;
|
|
if (*pcVar3 == '\0') break;
|
|
pcVar1 = pcVar3 + 1;
|
|
if (*pcVar1 != pcVar5[1]) goto LAB_00405178;
|
|
pcVar3 = pcVar3 + 2;
|
|
pcVar5 = pcVar5 + 2;
|
|
bVar6 = *pcVar1 == '\0';
|
|
} while (!bVar6);
|
|
if (bVar6) goto LAB_00405169;
|
|
}
|
|
}
|
|
LAB_00405178:
|
|
iVar2 = *(int *)(iVar2 + 4);
|
|
} while( true );
|
|
}
|
|
|
|
|
|
|
|
/* @00405190 file=? name=FUN_00405190 */
|
|
|
|
undefined4 __cdecl FUN_00405190(int param_1,char *param_2,int *param_3,int *param_4)
|
|
|
|
{
|
|
char *pcVar1;
|
|
int iVar2;
|
|
int iVar3;
|
|
char *pcVar4;
|
|
char *pcVar5;
|
|
bool bVar6;
|
|
int local_8;
|
|
|
|
local_8 = 0;
|
|
iVar3 = *(int *)(param_1 + 4);
|
|
do {
|
|
iVar2 = iVar3;
|
|
if (iVar2 == 0) {
|
|
*param_4 = 0;
|
|
*param_3 = 0;
|
|
return 0;
|
|
}
|
|
if (*(int *)(iVar2 + 0x18) != 0) {
|
|
if (((*(byte *)(param_1 + 0x1c) & 8) != 0) &&
|
|
(iVar3 = FUN_004d4b58(*(char **)(iVar2 + 0x18),param_2), iVar3 == 0)) {
|
|
LAB_004051f0:
|
|
*param_3 = iVar2;
|
|
*param_4 = local_8;
|
|
return 1;
|
|
}
|
|
if ((*(byte *)(param_1 + 0x1c) & 8) == 0) {
|
|
pcVar4 = *(char **)(iVar2 + 0x18);
|
|
pcVar5 = param_2;
|
|
do {
|
|
if (*pcVar4 != *pcVar5) goto LAB_00405204;
|
|
bVar6 = true;
|
|
if (*pcVar4 == '\0') break;
|
|
pcVar1 = pcVar4 + 1;
|
|
if (*pcVar1 != pcVar5[1]) goto LAB_00405204;
|
|
pcVar4 = pcVar4 + 2;
|
|
pcVar5 = pcVar5 + 2;
|
|
bVar6 = *pcVar1 == '\0';
|
|
} while (!bVar6);
|
|
if (bVar6) goto LAB_004051f0;
|
|
}
|
|
}
|
|
LAB_00405204:
|
|
iVar3 = *(int *)(iVar2 + 4);
|
|
local_8 = iVar2;
|
|
} while( true );
|
|
}
|
|
|
|
|
|
|
|
/* @00405224 file=? name=FUN_00405224 */
|
|
|
|
void __cdecl FUN_00405224(int param_1,int *param_2,int param_3)
|
|
|
|
{
|
|
*(undefined4 *)(param_1 + 0x14) = 1;
|
|
if (param_3 == 0) {
|
|
*(int *)(param_1 + 4) = param_2[1];
|
|
}
|
|
else {
|
|
*(int *)(param_3 + 4) = param_2[1];
|
|
}
|
|
if (param_2 == *(int **)(param_1 + 8)) {
|
|
*(int *)(param_1 + 8) = param_3;
|
|
}
|
|
if (param_2 == *(int **)(param_1 + 0x18)) {
|
|
*(undefined4 *)(param_1 + 0x18) = 0;
|
|
}
|
|
if (param_2[8] != 0) {
|
|
*(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + -1;
|
|
}
|
|
*(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + -1;
|
|
FUN_004056ac(param_2,3);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @0040527c file=? name=FUN_0040527c */
|
|
|
|
void __cdecl FUN_0040527c(int param_1,char *param_2)
|
|
|
|
{
|
|
bool bVar1;
|
|
char *pcVar2;
|
|
undefined4 *puVar3;
|
|
char *local_8;
|
|
|
|
if (param_2 == (char *)0x0) {
|
|
DAT_004e0b34 = 0;
|
|
}
|
|
else {
|
|
for (; (*param_2 == ' ' || (*param_2 == '\t')); param_2 = param_2 + 1) {
|
|
}
|
|
if (*param_2 == '[') {
|
|
pcVar2 = FUN_004d49f4(param_2 + 1,']');
|
|
if (pcVar2 != (char *)0x0) {
|
|
*pcVar2 = '\0';
|
|
pcVar2 = pcVar2 + 1;
|
|
}
|
|
DAT_004e0b34 = FUN_0040402c(param_1,param_2 + 1,pcVar2);
|
|
}
|
|
else {
|
|
if (((*param_2 == ';') || (*param_2 == '#')) || ((*param_2 == '/' && (param_2[1] == '/')))) {
|
|
bVar1 = true;
|
|
}
|
|
else {
|
|
bVar1 = false;
|
|
}
|
|
local_8 = FUN_004d49f4(param_2,'=');
|
|
if (local_8 == (char *)0x0) {
|
|
local_8 = (char *)0x0;
|
|
}
|
|
else {
|
|
*local_8 = '\0';
|
|
local_8 = local_8 + 1;
|
|
}
|
|
if (*param_2 == '\0') {
|
|
param_2 = (char *)0x0;
|
|
}
|
|
if ((param_2 != (char *)0x0) && (!bVar1)) {
|
|
pcVar2 = FUN_004d49f4(param_2,'\0');
|
|
pcVar2 = pcVar2 + -1;
|
|
do {
|
|
if ((*pcVar2 != ' ') && (*pcVar2 != '\t')) break;
|
|
*pcVar2 = '\0';
|
|
pcVar2 = pcVar2 + -1;
|
|
} while (param_2 <= pcVar2);
|
|
}
|
|
if (DAT_004e0b34 == 0) {
|
|
puVar3 = (undefined4 *)FUN_00402298(0x24);
|
|
if (puVar3 == (undefined4 *)0x0) {
|
|
DAT_004e0b34 = 0;
|
|
}
|
|
else {
|
|
DAT_004e0b34 = FUN_0040567c(puVar3,param_1);
|
|
}
|
|
FUN_00405074(param_1,DAT_004e0b34);
|
|
}
|
|
puVar3 = (undefined4 *)FUN_00402298(0x10);
|
|
if (puVar3 != (undefined4 *)0x0) {
|
|
*puVar3 = 0;
|
|
puVar3[2] = 0;
|
|
puVar3[1] = 0;
|
|
puVar3[3] = 0;
|
|
}
|
|
FUN_0040548c((int)puVar3,param_2,(int *)(DAT_004e0b34 + 0x14));
|
|
FUN_00405548((int)puVar3,local_8);
|
|
FUN_00405834(DAT_004e0b34,puVar3);
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @00405400 file=? name=FUN_00405400 */
|
|
|
|
int __cdecl FUN_00405400(int param_1,int *param_2,int param_3)
|
|
|
|
{
|
|
int iVar1;
|
|
int iVar2;
|
|
int iVar3;
|
|
|
|
iVar3 = 0;
|
|
for (iVar1 = *(int *)(param_1 + 4); iVar1 != 0; iVar1 = *(int *)(iVar1 + 4)) {
|
|
iVar2 = FUN_004059fc(iVar1,param_2,param_3);
|
|
iVar3 = iVar3 + iVar2;
|
|
}
|
|
return iVar3;
|
|
}
|
|
|
|
|
|
|
|
/* @00405434 file=? name=FUN_00405434 */
|
|
|
|
undefined4 FUN_00405434(void)
|
|
|
|
{
|
|
return 1;
|
|
}
|
|
|
|
|
|
|
|
/* @00405454 file=? name=FUN_00405454 */
|
|
|
|
void __cdecl FUN_00405454(int *param_1,byte param_2)
|
|
|
|
{
|
|
if (param_1 != (int *)0x0) {
|
|
if ((int *)param_1[1] != (int *)0x0) {
|
|
FUN_004022d0((int *)param_1[1]);
|
|
}
|
|
if ((int *)param_1[2] != (int *)0x0) {
|
|
FUN_004022d0((int *)param_1[2]);
|
|
}
|
|
if ((param_2 & 1) != 0) {
|
|
FUN_004022d0(param_1);
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @0040548c file=? name=FUN_0040548c */
|
|
|
|
void __cdecl FUN_0040548c(int param_1,char *param_2,int *param_3)
|
|
|
|
{
|
|
char cVar1;
|
|
bool bVar2;
|
|
int iVar3;
|
|
char *pcVar4;
|
|
undefined4 uVar5;
|
|
uint uVar6;
|
|
uint uVar7;
|
|
char *pcVar8;
|
|
|
|
if (*(int *)(param_1 + 4) != 0) {
|
|
if (*(int *)(param_1 + 0xc) != 0) {
|
|
*(undefined4 *)(param_1 + 0xc) = 0;
|
|
*param_3 = *param_3 + -1;
|
|
}
|
|
FUN_004022d0(*(int **)(param_1 + 4));
|
|
}
|
|
if (param_2 == (char *)0x0) {
|
|
*(undefined4 *)(param_1 + 4) = 0;
|
|
return;
|
|
}
|
|
iVar3 = FUN_004d4a78(param_2);
|
|
pcVar4 = (char *)FUN_004022b0(iVar3 + 1);
|
|
*(char **)(param_1 + 4) = pcVar4;
|
|
uVar6 = 0xffffffff;
|
|
do {
|
|
pcVar8 = param_2;
|
|
if (uVar6 == 0) break;
|
|
uVar6 = uVar6 - 1;
|
|
pcVar8 = param_2 + 1;
|
|
cVar1 = *param_2;
|
|
param_2 = pcVar8;
|
|
} while (cVar1 != '\0');
|
|
uVar6 = ~uVar6;
|
|
pcVar8 = pcVar8 + -uVar6;
|
|
for (uVar7 = uVar6 >> 2; uVar7 != 0; uVar7 = uVar7 - 1) {
|
|
*(undefined4 *)pcVar4 = *(undefined4 *)pcVar8;
|
|
pcVar8 = pcVar8 + 4;
|
|
pcVar4 = pcVar4 + 4;
|
|
}
|
|
for (uVar6 = uVar6 & 3; uVar6 != 0; uVar6 = uVar6 - 1) {
|
|
*pcVar4 = *pcVar8;
|
|
pcVar8 = pcVar8 + 1;
|
|
pcVar4 = pcVar4 + 1;
|
|
}
|
|
pcVar4 = *(char **)(param_1 + 4);
|
|
if (*pcVar4 != '\0') {
|
|
if (((*pcVar4 == ';') || (*pcVar4 == '#')) || ((*pcVar4 == '/' && (pcVar4[1] == '/')))) {
|
|
bVar2 = true;
|
|
}
|
|
else {
|
|
bVar2 = false;
|
|
}
|
|
if (!bVar2) {
|
|
uVar5 = 1;
|
|
goto LAB_00405538;
|
|
}
|
|
}
|
|
uVar5 = 0;
|
|
LAB_00405538:
|
|
*(undefined4 *)(param_1 + 0xc) = uVar5;
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @00405548 file=? name=FUN_00405548 */
|
|
|
|
char * __cdecl FUN_00405548(int param_1,char *param_2)
|
|
|
|
{
|
|
char cVar1;
|
|
int iVar2;
|
|
char *pcVar3;
|
|
uint uVar4;
|
|
uint uVar5;
|
|
char *pcVar6;
|
|
char *pcVar7;
|
|
|
|
if (*(int **)(param_1 + 8) != (int *)0x0) {
|
|
FUN_004022d0(*(int **)(param_1 + 8));
|
|
}
|
|
if (param_2 == (char *)0x0) {
|
|
pcVar3 = (char *)0x0;
|
|
*(undefined4 *)(param_1 + 8) = 0;
|
|
}
|
|
else {
|
|
iVar2 = FUN_004d4a78(param_2);
|
|
pcVar3 = (char *)FUN_004022b0(iVar2 + 1);
|
|
*(char **)(param_1 + 8) = pcVar3;
|
|
uVar4 = 0xffffffff;
|
|
do {
|
|
pcVar6 = param_2;
|
|
if (uVar4 == 0) break;
|
|
uVar4 = uVar4 - 1;
|
|
pcVar6 = param_2 + 1;
|
|
cVar1 = *param_2;
|
|
param_2 = pcVar6;
|
|
} while (cVar1 != '\0');
|
|
uVar4 = ~uVar4;
|
|
pcVar6 = pcVar6 + -uVar4;
|
|
pcVar7 = pcVar3;
|
|
for (uVar5 = uVar4 >> 2; uVar5 != 0; uVar5 = uVar5 - 1) {
|
|
*(undefined4 *)pcVar7 = *(undefined4 *)pcVar6;
|
|
pcVar6 = pcVar6 + 4;
|
|
pcVar7 = pcVar7 + 4;
|
|
}
|
|
for (uVar4 = uVar4 & 3; uVar4 != 0; uVar4 = uVar4 - 1) {
|
|
*pcVar7 = *pcVar6;
|
|
pcVar6 = pcVar6 + 1;
|
|
pcVar7 = pcVar7 + 1;
|
|
}
|
|
}
|
|
return pcVar3;
|
|
}
|
|
|
|
|
|
|
|
/* @004055b0 file=? name=FUN_004055b0 */
|
|
|
|
int __cdecl FUN_004055b0(int param_1,int *param_2,int param_3)
|
|
|
|
{
|
|
char *pcVar1;
|
|
int iVar2;
|
|
int iVar3;
|
|
|
|
iVar3 = 0;
|
|
if (*(char **)(param_1 + 4) != (char *)0x0) {
|
|
if (param_3 != 0) {
|
|
FUN_004dbb24(param_2,*(char **)(param_1 + 4),(char *)0x0);
|
|
}
|
|
if (param_3 != 1) {
|
|
iVar3 = FUN_004d4a78(*(char **)(param_1 + 4));
|
|
}
|
|
}
|
|
pcVar1 = *(char **)(param_1 + 8);
|
|
if (pcVar1 != (char *)0x0) {
|
|
if (param_3 != 0) {
|
|
FUN_004dbb24(param_2,&DAT_004e0be9,(char *)0x0);
|
|
FUN_004dbb24(param_2,pcVar1,(char *)0x0);
|
|
}
|
|
if (param_3 != 1) {
|
|
iVar2 = FUN_004d4a78(*(char **)(param_1 + 8));
|
|
iVar3 = iVar2 + iVar3 + 1;
|
|
}
|
|
}
|
|
if (param_3 == 1) {
|
|
FUN_004d9c38(param_2);
|
|
}
|
|
else if (param_3 != 0) {
|
|
FUN_004d9c58(param_2);
|
|
}
|
|
if (param_3 != 1) {
|
|
iVar3 = iVar3 + 1;
|
|
}
|
|
return iVar3;
|
|
}
|
|
|
|
|
|
|
|
/* @00405660 file=? name=FUN_00405660 */
|
|
|
|
undefined4 FUN_00405660(void)
|
|
|
|
{
|
|
return 1;
|
|
}
|
|
|
|
|
|
|
|
/* @0040567c file=? name=FUN_0040567c */
|
|
|
|
void __cdecl FUN_0040567c(undefined4 *param_1,undefined4 param_2)
|
|
|
|
{
|
|
*param_1 = param_2;
|
|
param_1[1] = 0;
|
|
param_1[3] = 0;
|
|
param_1[2] = 0;
|
|
param_1[5] = 0;
|
|
param_1[4] = 0;
|
|
param_1[7] = 0;
|
|
param_1[6] = 0;
|
|
param_1[8] = 0;
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @004056ac file=? name=FUN_004056ac */
|
|
|
|
void __cdecl FUN_004056ac(int *param_1,byte param_2)
|
|
|
|
{
|
|
int *piVar1;
|
|
|
|
if (param_1 != (int *)0x0) {
|
|
piVar1 = (int *)param_1[2];
|
|
while (piVar1 != (int *)0x0) {
|
|
param_1[2] = *piVar1;
|
|
FUN_00405454(piVar1,3);
|
|
piVar1 = (int *)param_1[2];
|
|
}
|
|
if ((int *)param_1[6] != (int *)0x0) {
|
|
FUN_004022d0((int *)param_1[6]);
|
|
}
|
|
if ((int *)param_1[7] != (int *)0x0) {
|
|
FUN_004022d0((int *)param_1[7]);
|
|
}
|
|
if ((param_2 & 1) != 0) {
|
|
FUN_004022d0(param_1);
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @00405704 file=? name=FUN_00405704 */
|
|
|
|
void __cdecl FUN_00405704(int param_1,char *param_2,int *param_3)
|
|
|
|
{
|
|
char *pcVar1;
|
|
char cVar2;
|
|
int iVar3;
|
|
char *pcVar4;
|
|
undefined4 uVar5;
|
|
uint uVar6;
|
|
uint uVar7;
|
|
char *pcVar8;
|
|
bool bVar9;
|
|
|
|
if (*(int *)(param_1 + 0x18) != 0) {
|
|
if (*(int *)(param_1 + 0x20) != 0) {
|
|
*(undefined4 *)(param_1 + 0x20) = 0;
|
|
*param_3 = *param_3 + -1;
|
|
}
|
|
FUN_004022d0(*(int **)(param_1 + 0x18));
|
|
}
|
|
if (param_2 == (char *)0x0) {
|
|
*(undefined4 *)(param_1 + 0x18) = 0;
|
|
return;
|
|
}
|
|
iVar3 = FUN_004d4a78(param_2);
|
|
pcVar4 = (char *)FUN_004022b0(iVar3 + 1);
|
|
*(char **)(param_1 + 0x18) = pcVar4;
|
|
uVar6 = 0xffffffff;
|
|
do {
|
|
pcVar8 = param_2;
|
|
if (uVar6 == 0) break;
|
|
uVar6 = uVar6 - 1;
|
|
pcVar8 = param_2 + 1;
|
|
cVar2 = *param_2;
|
|
param_2 = pcVar8;
|
|
} while (cVar2 != '\0');
|
|
uVar6 = ~uVar6;
|
|
pcVar8 = pcVar8 + -uVar6;
|
|
for (uVar7 = uVar6 >> 2; uVar7 != 0; uVar7 = uVar7 - 1) {
|
|
*(undefined4 *)pcVar4 = *(undefined4 *)pcVar8;
|
|
pcVar8 = pcVar8 + 4;
|
|
pcVar4 = pcVar4 + 4;
|
|
}
|
|
for (uVar6 = uVar6 & 3; uVar6 != 0; uVar6 = uVar6 - 1) {
|
|
*pcVar4 = *pcVar8;
|
|
pcVar8 = pcVar8 + 1;
|
|
pcVar4 = pcVar4 + 1;
|
|
}
|
|
pcVar4 = *(char **)(param_1 + 0x18);
|
|
if ((*pcVar4 != '\0') && (**(char **)(param_1 + 0x18) != '!')) {
|
|
pcVar8 = s_LAB_ONLY_004e0beb;
|
|
do {
|
|
if (*pcVar4 != *pcVar8) goto LAB_004057b2;
|
|
bVar9 = true;
|
|
if (*pcVar4 == '\0') break;
|
|
pcVar1 = pcVar4 + 1;
|
|
if (*pcVar1 != pcVar8[1]) goto LAB_004057b2;
|
|
pcVar4 = pcVar4 + 2;
|
|
pcVar8 = pcVar8 + 2;
|
|
bVar9 = *pcVar1 == '\0';
|
|
} while (!bVar9);
|
|
if (!bVar9) {
|
|
LAB_004057b2:
|
|
uVar5 = 1;
|
|
goto LAB_004057b7;
|
|
}
|
|
}
|
|
uVar5 = 0;
|
|
LAB_004057b7:
|
|
*(undefined4 *)(param_1 + 0x20) = uVar5;
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @004057c8 file=? name=FUN_004057c8 */
|
|
|
|
char * __cdecl FUN_004057c8(int param_1,char *param_2)
|
|
|
|
{
|
|
char cVar1;
|
|
int iVar2;
|
|
char *pcVar3;
|
|
uint uVar4;
|
|
uint uVar5;
|
|
char *pcVar6;
|
|
char *pcVar7;
|
|
|
|
if (*(int **)(param_1 + 0x1c) != (int *)0x0) {
|
|
FUN_004022d0(*(int **)(param_1 + 0x1c));
|
|
}
|
|
if ((param_2 == (char *)0x0) || (*param_2 == '\0')) {
|
|
pcVar3 = (char *)0x0;
|
|
*(undefined4 *)(param_1 + 0x1c) = 0;
|
|
}
|
|
else {
|
|
iVar2 = FUN_004d4a78(param_2);
|
|
pcVar3 = (char *)FUN_004022b0(iVar2 + 1);
|
|
*(char **)(param_1 + 0x1c) = pcVar3;
|
|
uVar4 = 0xffffffff;
|
|
do {
|
|
pcVar6 = param_2;
|
|
if (uVar4 == 0) break;
|
|
uVar4 = uVar4 - 1;
|
|
pcVar6 = param_2 + 1;
|
|
cVar1 = *param_2;
|
|
param_2 = pcVar6;
|
|
} while (cVar1 != '\0');
|
|
uVar4 = ~uVar4;
|
|
pcVar6 = pcVar6 + -uVar4;
|
|
pcVar7 = pcVar3;
|
|
for (uVar5 = uVar4 >> 2; uVar5 != 0; uVar5 = uVar5 - 1) {
|
|
*(undefined4 *)pcVar7 = *(undefined4 *)pcVar6;
|
|
pcVar6 = pcVar6 + 4;
|
|
pcVar7 = pcVar7 + 4;
|
|
}
|
|
for (uVar4 = uVar4 & 3; uVar4 != 0; uVar4 = uVar4 - 1) {
|
|
*pcVar7 = *pcVar6;
|
|
pcVar6 = pcVar6 + 1;
|
|
pcVar7 = pcVar7 + 1;
|
|
}
|
|
}
|
|
return pcVar3;
|
|
}
|
|
|
|
|
|
|
|
/* @00405834 file=? name=FUN_00405834 */
|
|
|
|
void __cdecl FUN_00405834(int param_1,undefined4 *param_2)
|
|
|
|
{
|
|
if (*(int *)(param_1 + 0xc) == 0) {
|
|
*(undefined4 **)(param_1 + 8) = param_2;
|
|
}
|
|
else {
|
|
**(undefined4 **)(param_1 + 0xc) = param_2;
|
|
}
|
|
*(undefined4 **)(param_1 + 0xc) = param_2;
|
|
*param_2 = 0;
|
|
if (param_2[3] != 0) {
|
|
*(int *)(param_1 + 0x14) = *(int *)(param_1 + 0x14) + 1;
|
|
}
|
|
*(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + 1;
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @00405868 file=? name=FUN_00405868 */
|
|
|
|
void __cdecl FUN_00405868(int *param_1,char *param_2,undefined4 *param_3)
|
|
|
|
{
|
|
undefined4 local_8;
|
|
|
|
FUN_00405888(param_1,param_2,param_3,&local_8);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @00405888 file=? name=FUN_00405888 */
|
|
|
|
undefined4 __cdecl FUN_00405888(int *param_1,char *param_2,undefined4 *param_3,undefined4 *param_4)
|
|
|
|
{
|
|
char *pcVar1;
|
|
undefined4 *puVar2;
|
|
undefined4 *puVar3;
|
|
int iVar4;
|
|
char *pcVar5;
|
|
char *pcVar6;
|
|
bool bVar7;
|
|
undefined4 *local_8;
|
|
|
|
local_8 = (undefined4 *)0x0;
|
|
puVar3 = (undefined4 *)param_1[2];
|
|
do {
|
|
puVar2 = puVar3;
|
|
if (puVar2 == (undefined4 *)0x0) {
|
|
*param_4 = 0;
|
|
*param_3 = 0;
|
|
return 0;
|
|
}
|
|
if (puVar2[1] != 0) {
|
|
if (((*(byte *)(*param_1 + 0x1c) & 0x10) != 0) &&
|
|
(iVar4 = FUN_004d4b58((char *)puVar2[1],param_2), iVar4 == 0)) {
|
|
LAB_004058ec:
|
|
*param_3 = puVar2;
|
|
*param_4 = local_8;
|
|
return 1;
|
|
}
|
|
if ((*(byte *)(*param_1 + 0x1c) & 0x10) == 0) {
|
|
pcVar5 = (char *)puVar2[1];
|
|
pcVar6 = param_2;
|
|
do {
|
|
if (*pcVar5 != *pcVar6) goto LAB_00405900;
|
|
bVar7 = true;
|
|
if (*pcVar5 == '\0') break;
|
|
pcVar1 = pcVar5 + 1;
|
|
if (*pcVar1 != pcVar6[1]) goto LAB_00405900;
|
|
pcVar5 = pcVar5 + 2;
|
|
pcVar6 = pcVar6 + 2;
|
|
bVar7 = *pcVar1 == '\0';
|
|
} while (!bVar7);
|
|
if (bVar7) goto LAB_004058ec;
|
|
}
|
|
}
|
|
LAB_00405900:
|
|
puVar3 = (undefined4 *)*puVar2;
|
|
local_8 = puVar2;
|
|
} while( true );
|
|
}
|
|
|
|
|
|
|
|
/* @00405920 file=? name=FUN_00405920 */
|
|
|
|
void __cdecl FUN_00405920(int *param_1,int *param_2)
|
|
|
|
{
|
|
int iVar1;
|
|
undefined4 *local_c;
|
|
int *local_8;
|
|
|
|
iVar1 = FUN_00405888(param_1,(char *)param_2[1],&local_8,&local_c);
|
|
if (iVar1 == 0) {
|
|
FUN_00405834((int)param_1,param_2);
|
|
}
|
|
else {
|
|
if (local_c == (undefined4 *)0x0) {
|
|
param_1[2] = (int)param_2;
|
|
}
|
|
else {
|
|
*local_c = param_2;
|
|
}
|
|
iVar1 = *local_8;
|
|
*param_2 = iVar1;
|
|
if (iVar1 == 0) {
|
|
param_1[3] = (int)param_2;
|
|
}
|
|
FUN_00405454(local_8,3);
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @00405988 file=? name=FUN_00405988 */
|
|
|
|
void __cdecl FUN_00405988(int *param_1,char *param_2)
|
|
|
|
{
|
|
int iVar1;
|
|
int *local_c;
|
|
int *local_8;
|
|
|
|
iVar1 = FUN_00405888(param_1,param_2,&local_8,&local_c);
|
|
if (iVar1 != 0) {
|
|
if (local_c == (int *)0x0) {
|
|
param_1[2] = *local_8;
|
|
}
|
|
else {
|
|
*local_c = *local_8;
|
|
}
|
|
if ((int *)param_1[3] == local_8) {
|
|
param_1[3] = (int)local_c;
|
|
}
|
|
if (local_8[3] != 0) {
|
|
param_1[5] = param_1[5] + -1;
|
|
}
|
|
param_1[4] = param_1[4] + -1;
|
|
FUN_00405454(local_8,3);
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @004059fc file=? name=FUN_004059fc */
|
|
|
|
int __cdecl FUN_004059fc(int param_1,int *param_2,int param_3)
|
|
|
|
{
|
|
undefined4 *puVar1;
|
|
char *pcVar2;
|
|
int iVar3;
|
|
int iVar4;
|
|
|
|
puVar1 = *(undefined4 **)(param_1 + 8);
|
|
iVar4 = 0;
|
|
pcVar2 = *(char **)(param_1 + 0x18);
|
|
if (pcVar2 != (char *)0x0) {
|
|
if (param_3 != 0) {
|
|
FUN_004dbb24(param_2,&DAT_004e0bf4,(char *)0x0);
|
|
FUN_004dbb24(param_2,pcVar2,(char *)0x0);
|
|
FUN_004dbb24(param_2,&DAT_004e0bf6,(char *)0x0);
|
|
}
|
|
if (param_3 != 1) {
|
|
iVar4 = FUN_004d4a78(*(char **)(param_1 + 0x18));
|
|
iVar4 = iVar4 + 2;
|
|
}
|
|
}
|
|
if (*(char **)(param_1 + 0x1c) != (char *)0x0) {
|
|
if (param_3 != 0) {
|
|
FUN_004dbb24(param_2,*(char **)(param_1 + 0x1c),(char *)0x0);
|
|
}
|
|
if (param_3 != 1) {
|
|
iVar3 = FUN_004d4a78(*(char **)(param_1 + 0x1c));
|
|
iVar4 = iVar3 + iVar4;
|
|
}
|
|
}
|
|
if ((*(int *)(param_1 + 0x18) != 0) || (*(int *)(param_1 + 0x1c) != 0)) {
|
|
if (param_3 == 1) {
|
|
FUN_004d9c38(param_2);
|
|
}
|
|
else if (param_3 != 0) {
|
|
FUN_004d9c58(param_2);
|
|
}
|
|
if (param_3 != 1) {
|
|
iVar4 = iVar4 + 1;
|
|
}
|
|
}
|
|
for (; puVar1 != (undefined4 *)0x0; puVar1 = (undefined4 *)*puVar1) {
|
|
iVar3 = FUN_004055b0((int)puVar1,param_2,param_3);
|
|
iVar4 = iVar4 + iVar3;
|
|
}
|
|
return iVar4;
|
|
}
|
|
|
|
|
|
|
|
/* @00405b00 file=? name=FUN_00405b00 */
|
|
|
|
undefined4 FUN_00405b00(void)
|
|
|
|
{
|
|
return 1;
|
|
}
|
|
|
|
|
|
|
|
/* @00405f44 file=? name=FUN_00405f44 */
|
|
|
|
void __cdecl FUN_00405f44(undefined4 param_1)
|
|
|
|
{
|
|
DAT_004e0c18 = param_1;
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @00406018 file=? name=FUN_00406018 */
|
|
|
|
undefined4 * __cdecl FUN_00406018(char *param_1,char *param_2,char *param_3)
|
|
|
|
{
|
|
char cVar1;
|
|
int iVar2;
|
|
char *pcVar3;
|
|
int iVar4;
|
|
int iVar5;
|
|
uint uVar6;
|
|
uint uVar7;
|
|
char *pcVar8;
|
|
|
|
if (param_1 == (char *)0x0) {
|
|
param_1 = &DAT_004e0c88;
|
|
}
|
|
iVar2 = FUN_004d4a78(param_1);
|
|
if (param_3 == (char *)0x0) {
|
|
pcVar3 = FUN_004061e8(param_2);
|
|
iVar5 = FUN_004d4a78(pcVar3);
|
|
iVar5 = iVar5 + iVar2;
|
|
}
|
|
else {
|
|
pcVar3 = FUN_004061e8(param_2);
|
|
pcVar3 = (char *)FUN_00406224(pcVar3);
|
|
iVar4 = FUN_004d4a78(pcVar3);
|
|
cVar1 = *param_3;
|
|
iVar5 = FUN_004d4a78(param_3);
|
|
iVar5 = iVar5 + iVar4 + iVar2 + (uint)(cVar1 != '.');
|
|
}
|
|
if (0x1ff < iVar5) {
|
|
FUN_004dbb24(&DAT_00524e20,s___Program_Error___buffer___too_s_004e0c8a,(char *)0x0);
|
|
FUN_004036a0(1);
|
|
}
|
|
uVar6 = 0xffffffff;
|
|
do {
|
|
pcVar3 = param_1;
|
|
if (uVar6 == 0) break;
|
|
uVar6 = uVar6 - 1;
|
|
pcVar3 = param_1 + 1;
|
|
cVar1 = *param_1;
|
|
param_1 = pcVar3;
|
|
} while (cVar1 != '\0');
|
|
uVar6 = ~uVar6;
|
|
pcVar3 = pcVar3 + -uVar6;
|
|
pcVar8 = (char *)&DAT_005214f4;
|
|
for (uVar7 = uVar6 >> 2; uVar7 != 0; uVar7 = uVar7 - 1) {
|
|
*(undefined4 *)pcVar8 = *(undefined4 *)pcVar3;
|
|
pcVar3 = pcVar3 + 4;
|
|
pcVar8 = pcVar8 + 4;
|
|
}
|
|
for (uVar6 = uVar6 & 3; uVar6 != 0; uVar6 = uVar6 - 1) {
|
|
*pcVar8 = *pcVar3;
|
|
pcVar3 = pcVar3 + 1;
|
|
pcVar8 = pcVar8 + 1;
|
|
}
|
|
if (param_3 == (char *)0x0) {
|
|
pcVar3 = FUN_004061e8(param_2);
|
|
FUN_004d49b8((char *)&DAT_005214f4,pcVar3);
|
|
}
|
|
else {
|
|
pcVar3 = FUN_004061e8(param_2);
|
|
pcVar3 = (char *)FUN_00406224(pcVar3);
|
|
FUN_004d49b8((char *)&DAT_005214f4,pcVar3);
|
|
if (*param_3 != '.') {
|
|
FUN_004d49b8((char *)&DAT_005214f4,&DAT_004e0ccd);
|
|
}
|
|
FUN_004d49b8((char *)&DAT_005214f4,param_3);
|
|
}
|
|
return &DAT_005214f4;
|
|
}
|
|
|
|
|
|
|
|
/* @00406140 file=? name=FUN_00406140 */
|
|
|
|
void __cdecl FUN_00406140(char *param_1,char *param_2)
|
|
|
|
{
|
|
FUN_00406018(DAT_004e0c00,param_1,param_2);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @0040615c file=? name=FUN_0040615c */
|
|
|
|
void __cdecl FUN_0040615c(char *param_1,char *param_2)
|
|
|
|
{
|
|
FUN_00406018(DAT_004e0c04,param_1,param_2);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @00406178 file=? name=FUN_00406178 */
|
|
|
|
void __cdecl FUN_00406178(char *param_1,char *param_2)
|
|
|
|
{
|
|
FUN_00406018(DAT_004e0c08,param_1,param_2);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @00406194 file=? name=FUN_00406194 */
|
|
|
|
void __cdecl FUN_00406194(char *param_1,char *param_2)
|
|
|
|
{
|
|
FUN_00406018(DAT_004e0c0c,param_1,param_2);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @004061b0 file=? name=FUN_004061b0 */
|
|
|
|
void __cdecl FUN_004061b0(char *param_1,char *param_2)
|
|
|
|
{
|
|
FUN_00406018(DAT_004e0c10,param_1,param_2);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @004061cc file=? name=FUN_004061cc */
|
|
|
|
void __cdecl FUN_004061cc(char *param_1,char *param_2)
|
|
|
|
{
|
|
FUN_00406018(DAT_004e0c18,param_1,param_2);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @004061e8 file=? name=FUN_004061e8 */
|
|
|
|
char * __cdecl FUN_004061e8(char *param_1)
|
|
|
|
{
|
|
int iVar1;
|
|
char *pcVar2;
|
|
|
|
iVar1 = FUN_004064bc(param_1);
|
|
pcVar2 = param_1;
|
|
if (iVar1 != 0) {
|
|
for (pcVar2 = FUN_004d49f4(param_1,'\0'); (*pcVar2 != '\\' && (param_1 != pcVar2));
|
|
pcVar2 = pcVar2 + -1) {
|
|
}
|
|
if (*pcVar2 == '\\') {
|
|
pcVar2 = pcVar2 + 1;
|
|
}
|
|
}
|
|
return pcVar2;
|
|
}
|
|
|
|
|
|
|
|
/* @00406224 file=? name=FUN_00406224 */
|
|
|
|
undefined4 * __cdecl FUN_00406224(char *param_1)
|
|
|
|
{
|
|
char cVar1;
|
|
uint uVar2;
|
|
char *pcVar3;
|
|
uint uVar4;
|
|
char *pcVar5;
|
|
|
|
uVar2 = FUN_004d4a78(param_1);
|
|
if (0x1ff < uVar2) {
|
|
FUN_004dbb24(&DAT_00524e20,s___Program_Error___buffer___too_s_004e0ccf,(char *)0x0);
|
|
FUN_004d9c38(&DAT_00524e20);
|
|
FUN_004036a0(1);
|
|
}
|
|
uVar2 = 0xffffffff;
|
|
do {
|
|
pcVar3 = param_1;
|
|
if (uVar2 == 0) break;
|
|
uVar2 = uVar2 - 1;
|
|
pcVar3 = param_1 + 1;
|
|
cVar1 = *param_1;
|
|
param_1 = pcVar3;
|
|
} while (cVar1 != '\0');
|
|
uVar2 = ~uVar2;
|
|
pcVar3 = pcVar3 + -uVar2;
|
|
pcVar5 = (char *)&DAT_005216f4;
|
|
for (uVar4 = uVar2 >> 2; uVar4 != 0; uVar4 = uVar4 - 1) {
|
|
*(undefined4 *)pcVar5 = *(undefined4 *)pcVar3;
|
|
pcVar3 = pcVar3 + 4;
|
|
pcVar5 = pcVar5 + 4;
|
|
}
|
|
for (uVar2 = uVar2 & 3; uVar2 != 0; uVar2 = uVar2 - 1) {
|
|
*pcVar5 = *pcVar3;
|
|
pcVar3 = pcVar3 + 1;
|
|
pcVar5 = pcVar5 + 1;
|
|
}
|
|
for (pcVar3 = FUN_004d49f4((char *)&DAT_005216f4,'\0');
|
|
(*pcVar3 != '.' && (pcVar3 != (char *)&DAT_005216f4)); pcVar3 = pcVar3 + -1) {
|
|
}
|
|
if (*pcVar3 == '.') {
|
|
*pcVar3 = '\0';
|
|
}
|
|
return &DAT_005216f4;
|
|
}
|
|
|
|
|
|
|
|
/* @004062bc file=? name=FUN_004062bc */
|
|
|
|
undefined * __cdecl FUN_004062bc(int param_1)
|
|
|
|
{
|
|
DAT_005218f4 = 0;
|
|
if (0x3f < param_1) {
|
|
param_1 = 0x3f;
|
|
}
|
|
for (; 0 < param_1; param_1 = param_1 + -1) {
|
|
FUN_004d49b8(&DAT_005218f4,&DAT_004e0d0a);
|
|
}
|
|
return &DAT_005218f4;
|
|
}
|
|
|
|
|
|
|
|
/* @004062f8 file=? name=FUN_004062f8 */
|
|
|
|
undefined4 __cdecl FUN_004062f8(int *param_1,char *param_2,int param_3)
|
|
|
|
{
|
|
int *piVar1;
|
|
undefined4 uVar2;
|
|
int iVar3;
|
|
char *pcVar4;
|
|
char *pcVar5;
|
|
|
|
piVar1 = FUN_004dad10(param_1,param_2,param_3,10);
|
|
iVar3 = *piVar1;
|
|
if ((*(byte *)(iVar3 + 0xc) & 0x86) != 0) {
|
|
iVar3 = 0;
|
|
}
|
|
if (iVar3 == 0) {
|
|
*param_2 = '\0';
|
|
uVar2 = 0;
|
|
}
|
|
else {
|
|
while (iVar3 = FUN_004d4a78(param_2), iVar3 <= param_3 + -2) {
|
|
pcVar5 = param_2 + iVar3;
|
|
do {
|
|
pcVar4 = pcVar5;
|
|
pcVar5 = pcVar4 + -1;
|
|
if (pcVar4 <= param_2) break;
|
|
} while (((&DAT_005207dd)[*pcVar5] & 1) != 0);
|
|
if ((pcVar5 < param_2) || (*pcVar5 != '\\')) goto LAB_004063cc;
|
|
piVar1 = FUN_004dad10(param_1,&DAT_00521974,0x200,10);
|
|
iVar3 = *piVar1;
|
|
if ((*(byte *)(iVar3 + 0xc) & 0x86) != 0) {
|
|
iVar3 = 0;
|
|
}
|
|
if (iVar3 == 0) goto LAB_004063cc;
|
|
*pcVar5 = ' ';
|
|
FUN_004d4a94(pcVar4,&DAT_00521974,param_3 - ((int)pcVar4 - (int)param_2));
|
|
}
|
|
FUN_004dbb24(&DAT_00524e20,s___ERROR___Input_line_too_long__004e0d0d,(char *)0x0);
|
|
FUN_004d9c38(&DAT_00524e20);
|
|
LAB_004063cc:
|
|
uVar2 = 1;
|
|
}
|
|
return uVar2;
|
|
}
|
|
|
|
|
|
|
|
/* @004063e0 file=? name=FUN_004063e0 */
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
float10 __cdecl FUN_004063e0(float param_1)
|
|
|
|
{
|
|
return (float10)param_1 * (float10)_DAT_004063f0;
|
|
}
|
|
|
|
|
|
|
|
/* @004064bc file=? name=FUN_004064bc */
|
|
|
|
undefined4 __cdecl FUN_004064bc(char *param_1)
|
|
|
|
{
|
|
char *pcVar1;
|
|
|
|
pcVar1 = FUN_004d49f4(param_1,'/');
|
|
if (((pcVar1 == (char *)0x0) && (pcVar1 = FUN_004d49f4(param_1,':'), pcVar1 == (char *)0x0)) &&
|
|
(pcVar1 = FUN_004d49f4(param_1,'\\'), pcVar1 == (char *)0x0)) {
|
|
return 0;
|
|
}
|
|
return 1;
|
|
}
|
|
|
|
|
|
|
|
/* @004064fc file=? name=FUN_004064fc */
|
|
|
|
char * __cdecl FUN_004064fc(char *param_1,char *param_2)
|
|
|
|
{
|
|
char cVar1;
|
|
int iVar2;
|
|
char *pcVar3;
|
|
int iVar4;
|
|
uint uVar5;
|
|
uint uVar6;
|
|
char *pcVar7;
|
|
char *pcVar8;
|
|
|
|
iVar2 = FUN_004064bc(param_2);
|
|
if (iVar2 == 0) {
|
|
if (param_1 == (char *)0x0) {
|
|
iVar2 = FUN_004d4a78(param_2);
|
|
pcVar3 = (char *)FUN_004022b0(iVar2 + 1);
|
|
uVar5 = 0xffffffff;
|
|
do {
|
|
pcVar7 = param_2;
|
|
if (uVar5 == 0) break;
|
|
uVar5 = uVar5 - 1;
|
|
pcVar7 = param_2 + 1;
|
|
cVar1 = *param_2;
|
|
param_2 = pcVar7;
|
|
} while (cVar1 != '\0');
|
|
uVar5 = ~uVar5;
|
|
pcVar7 = pcVar7 + -uVar5;
|
|
pcVar8 = pcVar3;
|
|
for (uVar6 = uVar5 >> 2; uVar6 != 0; uVar6 = uVar6 - 1) {
|
|
*(undefined4 *)pcVar8 = *(undefined4 *)pcVar7;
|
|
pcVar7 = pcVar7 + 4;
|
|
pcVar8 = pcVar8 + 4;
|
|
}
|
|
for (uVar5 = uVar5 & 3; uVar5 != 0; uVar5 = uVar5 - 1) {
|
|
*pcVar8 = *pcVar7;
|
|
pcVar7 = pcVar7 + 1;
|
|
pcVar8 = pcVar8 + 1;
|
|
}
|
|
}
|
|
else {
|
|
iVar2 = FUN_004d4a78(param_1);
|
|
iVar4 = FUN_004d4a78(param_2);
|
|
pcVar3 = (char *)FUN_004022b0(iVar2 + iVar4 + 1);
|
|
uVar5 = 0xffffffff;
|
|
do {
|
|
pcVar7 = param_1;
|
|
if (uVar5 == 0) break;
|
|
uVar5 = uVar5 - 1;
|
|
pcVar7 = param_1 + 1;
|
|
cVar1 = *param_1;
|
|
param_1 = pcVar7;
|
|
} while (cVar1 != '\0');
|
|
uVar5 = ~uVar5;
|
|
pcVar7 = pcVar7 + -uVar5;
|
|
pcVar8 = pcVar3;
|
|
for (uVar6 = uVar5 >> 2; uVar6 != 0; uVar6 = uVar6 - 1) {
|
|
*(undefined4 *)pcVar8 = *(undefined4 *)pcVar7;
|
|
pcVar7 = pcVar7 + 4;
|
|
pcVar8 = pcVar8 + 4;
|
|
}
|
|
for (uVar5 = uVar5 & 3; uVar5 != 0; uVar5 = uVar5 - 1) {
|
|
*pcVar8 = *pcVar7;
|
|
pcVar7 = pcVar7 + 1;
|
|
pcVar8 = pcVar8 + 1;
|
|
}
|
|
FUN_004d49b8(pcVar3,param_2);
|
|
}
|
|
}
|
|
else {
|
|
iVar2 = FUN_004d4a78(param_2);
|
|
pcVar3 = (char *)FUN_004022b0(iVar2 + 1);
|
|
uVar5 = 0xffffffff;
|
|
do {
|
|
pcVar7 = param_2;
|
|
if (uVar5 == 0) break;
|
|
uVar5 = uVar5 - 1;
|
|
pcVar7 = param_2 + 1;
|
|
cVar1 = *param_2;
|
|
param_2 = pcVar7;
|
|
} while (cVar1 != '\0');
|
|
uVar5 = ~uVar5;
|
|
pcVar7 = pcVar7 + -uVar5;
|
|
pcVar8 = pcVar3;
|
|
for (uVar6 = uVar5 >> 2; uVar6 != 0; uVar6 = uVar6 - 1) {
|
|
*(undefined4 *)pcVar8 = *(undefined4 *)pcVar7;
|
|
pcVar7 = pcVar7 + 4;
|
|
pcVar8 = pcVar8 + 4;
|
|
}
|
|
for (uVar5 = uVar5 & 3; uVar5 != 0; uVar5 = uVar5 - 1) {
|
|
*pcVar8 = *pcVar7;
|
|
pcVar7 = pcVar7 + 1;
|
|
pcVar8 = pcVar8 + 1;
|
|
}
|
|
}
|
|
return pcVar3;
|
|
}
|
|
|
|
|
|
|
|
/* @004065d8 file=? name=FUN_004065d8 */
|
|
|
|
void __cdecl FUN_004065d8(int *param_1,char *param_2,char *param_3)
|
|
|
|
{
|
|
char cVar1;
|
|
int iVar2;
|
|
int *piVar3;
|
|
int iVar4;
|
|
uint uVar5;
|
|
uint uVar6;
|
|
int *piVar7;
|
|
char *pcVar8;
|
|
int *piVar9;
|
|
|
|
iVar2 = FUN_004064bc(param_3);
|
|
if ((iVar2 == 0) && (param_2 != (char *)0x0)) {
|
|
iVar2 = FUN_004d4a78(param_2);
|
|
iVar4 = FUN_004d4a78(param_3);
|
|
piVar3 = (int *)FUN_004022b0(iVar2 + iVar4 + 1);
|
|
uVar5 = 0xffffffff;
|
|
do {
|
|
pcVar8 = param_2;
|
|
if (uVar5 == 0) break;
|
|
uVar5 = uVar5 - 1;
|
|
pcVar8 = param_2 + 1;
|
|
cVar1 = *param_2;
|
|
param_2 = pcVar8;
|
|
} while (cVar1 != '\0');
|
|
uVar5 = ~uVar5;
|
|
piVar7 = (int *)(pcVar8 + -uVar5);
|
|
piVar9 = piVar3;
|
|
for (uVar6 = uVar5 >> 2; uVar6 != 0; uVar6 = uVar6 - 1) {
|
|
*piVar9 = *piVar7;
|
|
piVar7 = piVar7 + 1;
|
|
piVar9 = piVar9 + 1;
|
|
}
|
|
for (uVar5 = uVar5 & 3; uVar5 != 0; uVar5 = uVar5 - 1) {
|
|
*(char *)piVar9 = (char)*piVar7;
|
|
piVar7 = (int *)((int)piVar7 + 1);
|
|
piVar9 = (int *)((int)piVar9 + 1);
|
|
}
|
|
FUN_004d49b8((char *)piVar3,param_3);
|
|
}
|
|
else {
|
|
iVar2 = FUN_004d4a78(param_3);
|
|
piVar3 = (int *)FUN_004022b0(iVar2 + 1);
|
|
uVar5 = 0xffffffff;
|
|
do {
|
|
pcVar8 = param_3;
|
|
if (uVar5 == 0) break;
|
|
uVar5 = uVar5 - 1;
|
|
pcVar8 = param_3 + 1;
|
|
cVar1 = *param_3;
|
|
param_3 = pcVar8;
|
|
} while (cVar1 != '\0');
|
|
uVar5 = ~uVar5;
|
|
piVar7 = (int *)(pcVar8 + -uVar5);
|
|
piVar9 = piVar3;
|
|
for (uVar6 = uVar5 >> 2; uVar6 != 0; uVar6 = uVar6 - 1) {
|
|
*piVar9 = *piVar7;
|
|
piVar7 = piVar7 + 1;
|
|
piVar9 = piVar9 + 1;
|
|
}
|
|
for (uVar5 = uVar5 & 3; uVar5 != 0; uVar5 = uVar5 - 1) {
|
|
*(char *)piVar9 = (char)*piVar7;
|
|
piVar7 = (int *)((int)piVar7 + 1);
|
|
piVar9 = (int *)((int)piVar9 + 1);
|
|
}
|
|
}
|
|
FUN_004da5f8(param_1,(LPCSTR)piVar3,2,DAT_00520540);
|
|
FUN_004022d0(piVar3);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @00406698 file=? name=FUN_00406698 */
|
|
|
|
void __cdecl FUN_00406698(int *param_1,char *param_2,char *param_3)
|
|
|
|
{
|
|
char cVar1;
|
|
int iVar2;
|
|
uint uVar3;
|
|
uint uVar4;
|
|
char *pcVar5;
|
|
char *pcVar6;
|
|
char local_68 [100];
|
|
|
|
iVar2 = FUN_004064bc(param_3);
|
|
if (iVar2 == 0) {
|
|
if (param_2 == (char *)0x0) {
|
|
uVar3 = 0xffffffff;
|
|
do {
|
|
pcVar5 = param_3;
|
|
if (uVar3 == 0) break;
|
|
uVar3 = uVar3 - 1;
|
|
pcVar5 = param_3 + 1;
|
|
cVar1 = *param_3;
|
|
param_3 = pcVar5;
|
|
} while (cVar1 != '\0');
|
|
uVar3 = ~uVar3;
|
|
pcVar5 = pcVar5 + -uVar3;
|
|
pcVar6 = local_68;
|
|
for (uVar4 = uVar3 >> 2; uVar4 != 0; uVar4 = uVar4 - 1) {
|
|
*(undefined4 *)pcVar6 = *(undefined4 *)pcVar5;
|
|
pcVar5 = pcVar5 + 4;
|
|
pcVar6 = pcVar6 + 4;
|
|
}
|
|
for (uVar3 = uVar3 & 3; uVar3 != 0; uVar3 = uVar3 - 1) {
|
|
*pcVar6 = *pcVar5;
|
|
pcVar5 = pcVar5 + 1;
|
|
pcVar6 = pcVar6 + 1;
|
|
}
|
|
}
|
|
else {
|
|
uVar3 = 0xffffffff;
|
|
do {
|
|
pcVar5 = param_2;
|
|
if (uVar3 == 0) break;
|
|
uVar3 = uVar3 - 1;
|
|
pcVar5 = param_2 + 1;
|
|
cVar1 = *param_2;
|
|
param_2 = pcVar5;
|
|
} while (cVar1 != '\0');
|
|
uVar3 = ~uVar3;
|
|
pcVar5 = pcVar5 + -uVar3;
|
|
pcVar6 = local_68;
|
|
for (uVar4 = uVar3 >> 2; uVar4 != 0; uVar4 = uVar4 - 1) {
|
|
*(undefined4 *)pcVar6 = *(undefined4 *)pcVar5;
|
|
pcVar5 = pcVar5 + 4;
|
|
pcVar6 = pcVar6 + 4;
|
|
}
|
|
for (uVar3 = uVar3 & 3; uVar3 != 0; uVar3 = uVar3 - 1) {
|
|
*pcVar6 = *pcVar5;
|
|
pcVar5 = pcVar5 + 1;
|
|
pcVar6 = pcVar6 + 1;
|
|
}
|
|
FUN_004d49b8(local_68,param_3);
|
|
}
|
|
}
|
|
else {
|
|
uVar3 = 0xffffffff;
|
|
do {
|
|
pcVar5 = param_3;
|
|
if (uVar3 == 0) break;
|
|
uVar3 = uVar3 - 1;
|
|
pcVar5 = param_3 + 1;
|
|
cVar1 = *param_3;
|
|
param_3 = pcVar5;
|
|
} while (cVar1 != '\0');
|
|
uVar3 = ~uVar3;
|
|
pcVar5 = pcVar5 + -uVar3;
|
|
pcVar6 = local_68;
|
|
for (uVar4 = uVar3 >> 2; uVar4 != 0; uVar4 = uVar4 - 1) {
|
|
*(undefined4 *)pcVar6 = *(undefined4 *)pcVar5;
|
|
pcVar5 = pcVar5 + 4;
|
|
pcVar6 = pcVar6 + 4;
|
|
}
|
|
for (uVar3 = uVar3 & 3; uVar3 != 0; uVar3 = uVar3 - 1) {
|
|
*pcVar6 = *pcVar5;
|
|
pcVar5 = pcVar5 + 1;
|
|
pcVar6 = pcVar6 + 1;
|
|
}
|
|
}
|
|
FUN_004da5f8(param_1,local_68,1,DAT_00520540);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @00406750 file=? name=FUN_00406750 */
|
|
|
|
undefined4 __cdecl FUN_00406750(int param_1)
|
|
|
|
{
|
|
int iVar1;
|
|
|
|
iVar1 = FUN_00403f84(param_1,s_LAB_ONLY_004e0d2f);
|
|
if (iVar1 != 0) {
|
|
FUN_004dbb24(&DAT_00524e20,s_WARNING__LAB_ONLY_004e0d38,(char *)0x0);
|
|
FUN_004d9c38(&DAT_00524e20);
|
|
return 1;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
|
|
|
|
/* @00406794 file=? name=FUN_00406794 */
|
|
|
|
void __cdecl FUN_00406794(int param_1)
|
|
|
|
{
|
|
int iVar1;
|
|
|
|
iVar1 = FUN_00403f84(param_1,s_LAB_ONLY_004e0d4a);
|
|
if (iVar1 == 0) {
|
|
FUN_00404528(param_1,s_LAB_ONLY_004e0d53,(char *)0x0,0);
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @004067c4 file=? name=FUN_004067c4 */
|
|
|
|
uint __cdecl FUN_004067c4(undefined4 *param_1)
|
|
|
|
{
|
|
uint uVar1;
|
|
int local_94 [36];
|
|
|
|
FUN_004da66c(local_94,0,(LPCSTR)*param_1,1,DAT_00520540);
|
|
if ((*(byte *)(local_94[0] + 0xc) & 0x86) != 0) {
|
|
local_94[0] = 0;
|
|
}
|
|
uVar1 = (uint)(local_94[0] != 0);
|
|
FUN_004da754(local_94,2);
|
|
return uVar1;
|
|
}
|
|
|
|
|
|
|
|
/* @00406824 file=? name=FUN_00406824 */
|
|
|
|
void __cdecl FUN_00406824(char *param_1,float *param_2)
|
|
|
|
{
|
|
uint *puVar1;
|
|
float10 fVar2;
|
|
uint local_44 [2];
|
|
char *local_3c;
|
|
uint local_34 [2];
|
|
char *local_2c;
|
|
uint local_24 [2];
|
|
char *local_1c;
|
|
uint *local_14;
|
|
uint *local_10;
|
|
uint *local_c;
|
|
uint *local_8;
|
|
|
|
puVar1 = (uint *)FUN_00402298(0x10);
|
|
if (puVar1 == (uint *)0x0) {
|
|
local_8 = (uint *)0x0;
|
|
}
|
|
else {
|
|
local_8 = FUN_00402460(puVar1,param_1);
|
|
}
|
|
local_8[3] = local_8[3] + 1;
|
|
FUN_00402838(local_24,local_8,0,(char *)0x0);
|
|
puVar1 = (uint *)FUN_00402298(0x10);
|
|
if (puVar1 == (uint *)0x0) {
|
|
local_c = (uint *)0x0;
|
|
}
|
|
else {
|
|
local_c = FUN_00402460(puVar1,local_1c);
|
|
}
|
|
local_c[3] = local_c[3] + 1;
|
|
FUN_004024d8((int *)local_24,2);
|
|
fVar2 = (float10)FUN_004dd1cc(local_c[2]);
|
|
*param_2 = (float)fVar2;
|
|
puVar1 = local_c + 3;
|
|
*puVar1 = *puVar1 - 1;
|
|
if (*puVar1 == 0) {
|
|
FUN_004024d8((int *)local_c,3);
|
|
}
|
|
FUN_00402838(local_34,local_8,1,(char *)0x0);
|
|
puVar1 = (uint *)FUN_00402298(0x10);
|
|
if (puVar1 == (uint *)0x0) {
|
|
local_10 = (uint *)0x0;
|
|
}
|
|
else {
|
|
local_10 = FUN_00402460(puVar1,local_2c);
|
|
}
|
|
local_10[3] = local_10[3] + 1;
|
|
FUN_004024d8((int *)local_34,2);
|
|
fVar2 = (float10)FUN_004dd1cc(local_10[2]);
|
|
param_2[1] = (float)fVar2;
|
|
puVar1 = local_10 + 3;
|
|
*puVar1 = *puVar1 - 1;
|
|
if (*puVar1 == 0) {
|
|
FUN_004024d8((int *)local_10,3);
|
|
}
|
|
FUN_00402838(local_44,local_8,2,(char *)0x0);
|
|
puVar1 = (uint *)FUN_00402298(0x10);
|
|
if (puVar1 == (uint *)0x0) {
|
|
local_14 = (uint *)0x0;
|
|
}
|
|
else {
|
|
local_14 = FUN_00402460(puVar1,local_3c);
|
|
}
|
|
local_14[3] = local_14[3] + 1;
|
|
FUN_004024d8((int *)local_44,2);
|
|
fVar2 = (float10)FUN_004dd1cc(local_14[2]);
|
|
param_2[2] = (float)fVar2;
|
|
puVar1 = local_14 + 3;
|
|
*puVar1 = *puVar1 - 1;
|
|
if (*puVar1 == 0) {
|
|
FUN_004024d8((int *)local_14,3);
|
|
}
|
|
puVar1 = local_8 + 3;
|
|
*puVar1 = *puVar1 - 1;
|
|
if (*puVar1 == 0) {
|
|
FUN_004024d8((int *)local_8,3);
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @004069b8 file=? name=FUN_004069b8 */
|
|
|
|
undefined4 FUN_004069b8(void)
|
|
|
|
{
|
|
return 1;
|
|
}
|
|
|
|
|
|
|
|
/* @004069c4 file=? name=FUN_004069c4 */
|
|
|
|
void __cdecl FUN_004069c4(char *param_1,float *param_2)
|
|
|
|
{
|
|
uint *puVar1;
|
|
float10 fVar2;
|
|
uint local_58 [2];
|
|
char *local_50;
|
|
uint local_48 [2];
|
|
char *local_40;
|
|
uint local_38 [2];
|
|
char *local_30;
|
|
uint local_28 [2];
|
|
char *local_20;
|
|
uint *local_18;
|
|
uint *local_14;
|
|
uint *local_10;
|
|
uint *local_c;
|
|
uint *local_8;
|
|
|
|
puVar1 = (uint *)FUN_00402298(0x10);
|
|
if (puVar1 == (uint *)0x0) {
|
|
local_8 = (uint *)0x0;
|
|
}
|
|
else {
|
|
local_8 = FUN_00402460(puVar1,param_1);
|
|
}
|
|
local_8[3] = local_8[3] + 1;
|
|
FUN_00402838(local_28,local_8,0,(char *)0x0);
|
|
puVar1 = (uint *)FUN_00402298(0x10);
|
|
if (puVar1 == (uint *)0x0) {
|
|
local_c = (uint *)0x0;
|
|
}
|
|
else {
|
|
local_c = FUN_00402460(puVar1,local_20);
|
|
}
|
|
local_c[3] = local_c[3] + 1;
|
|
FUN_004024d8((int *)local_28,2);
|
|
fVar2 = (float10)FUN_004dd1cc(local_c[2]);
|
|
*param_2 = (float)fVar2;
|
|
puVar1 = local_c + 3;
|
|
*puVar1 = *puVar1 - 1;
|
|
if (*puVar1 == 0) {
|
|
FUN_004024d8((int *)local_c,3);
|
|
}
|
|
FUN_00402838(local_38,local_8,1,(char *)0x0);
|
|
puVar1 = (uint *)FUN_00402298(0x10);
|
|
if (puVar1 == (uint *)0x0) {
|
|
local_10 = (uint *)0x0;
|
|
}
|
|
else {
|
|
local_10 = FUN_00402460(puVar1,local_30);
|
|
}
|
|
local_10[3] = local_10[3] + 1;
|
|
FUN_004024d8((int *)local_38,2);
|
|
fVar2 = (float10)FUN_004dd1cc(local_10[2]);
|
|
param_2[1] = (float)fVar2;
|
|
puVar1 = local_10 + 3;
|
|
*puVar1 = *puVar1 - 1;
|
|
if (*puVar1 == 0) {
|
|
FUN_004024d8((int *)local_10,3);
|
|
}
|
|
FUN_00402838(local_48,local_8,2,(char *)0x0);
|
|
puVar1 = (uint *)FUN_00402298(0x10);
|
|
if (puVar1 == (uint *)0x0) {
|
|
local_14 = (uint *)0x0;
|
|
}
|
|
else {
|
|
local_14 = FUN_00402460(puVar1,local_40);
|
|
}
|
|
local_14[3] = local_14[3] + 1;
|
|
FUN_004024d8((int *)local_48,2);
|
|
fVar2 = (float10)FUN_004dd1cc(local_14[2]);
|
|
param_2[2] = (float)fVar2;
|
|
puVar1 = local_14 + 3;
|
|
*puVar1 = *puVar1 - 1;
|
|
if (*puVar1 == 0) {
|
|
FUN_004024d8((int *)local_14,3);
|
|
}
|
|
FUN_00402838(local_58,local_8,3,(char *)0x0);
|
|
puVar1 = (uint *)FUN_00402298(0x10);
|
|
if (puVar1 == (uint *)0x0) {
|
|
local_18 = (uint *)0x0;
|
|
}
|
|
else {
|
|
local_18 = FUN_00402460(puVar1,local_50);
|
|
}
|
|
local_18[3] = local_18[3] + 1;
|
|
FUN_004024d8((int *)local_58,2);
|
|
fVar2 = (float10)FUN_004dd1cc(local_18[2]);
|
|
param_2[3] = (float)fVar2;
|
|
puVar1 = local_18 + 3;
|
|
*puVar1 = *puVar1 - 1;
|
|
if (*puVar1 == 0) {
|
|
FUN_004024d8((int *)local_18,3);
|
|
}
|
|
puVar1 = local_8 + 3;
|
|
*puVar1 = *puVar1 - 1;
|
|
if (*puVar1 == 0) {
|
|
FUN_004024d8((int *)local_8,3);
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @00406bc8 file=? name=FUN_00406bc8 */
|
|
|
|
undefined4 * __cdecl
|
|
FUN_00406bc8(undefined4 *param_1,undefined4 param_2,char *param_3,undefined4 param_4,
|
|
undefined4 param_5,undefined4 param_6,undefined4 *param_7,undefined4 param_8,
|
|
undefined4 param_9)
|
|
|
|
{
|
|
char cVar1;
|
|
int iVar2;
|
|
undefined4 *puVar3;
|
|
uint uVar4;
|
|
uint uVar5;
|
|
undefined1 *puVar6;
|
|
char *pcVar7;
|
|
char *pcVar8;
|
|
|
|
param_1[0xe] = param_2;
|
|
*param_1 = param_9;
|
|
param_1[2] = param_4;
|
|
uVar4 = 0xffffffff;
|
|
do {
|
|
pcVar7 = param_3;
|
|
if (uVar4 == 0) break;
|
|
uVar4 = uVar4 - 1;
|
|
pcVar7 = param_3 + 1;
|
|
cVar1 = *param_3;
|
|
param_3 = pcVar7;
|
|
} while (cVar1 != '\0');
|
|
uVar4 = ~uVar4;
|
|
pcVar7 = pcVar7 + -uVar4;
|
|
pcVar8 = (char *)(param_1 + 3);
|
|
for (uVar5 = uVar4 >> 2; uVar5 != 0; uVar5 = uVar5 - 1) {
|
|
*(undefined4 *)pcVar8 = *(undefined4 *)pcVar7;
|
|
pcVar7 = pcVar7 + 4;
|
|
pcVar8 = pcVar8 + 4;
|
|
}
|
|
for (uVar4 = uVar4 & 3; uVar4 != 0; uVar4 = uVar4 - 1) {
|
|
*pcVar8 = *pcVar7;
|
|
pcVar7 = pcVar7 + 1;
|
|
pcVar8 = pcVar8 + 1;
|
|
}
|
|
iVar2 = FUN_004d4a78((char *)(param_1 + 3));
|
|
puVar6 = (undefined1 *)((int)param_1 + iVar2 + 0xd);
|
|
while (iVar2 = iVar2 + 1, iVar2 < 0x20) {
|
|
*puVar6 = 0;
|
|
puVar6 = puVar6 + 1;
|
|
}
|
|
param_1[0xb] = param_5;
|
|
param_1[0xc] = param_6;
|
|
param_1[0xd] = 0;
|
|
param_1[0x10] = param_8;
|
|
param_1[0xf] = 0;
|
|
param_1[1] = 0;
|
|
if (param_7 != (undefined4 *)0x0) {
|
|
puVar3 = (undefined4 *)FUN_004022b0(param_1[0x10]);
|
|
param_1[0xf] = puVar3;
|
|
FUN_004d4918(puVar3,param_7,param_1[0x10]);
|
|
param_1[0xc] = param_1[0xc] | 1;
|
|
}
|
|
return param_1;
|
|
}
|
|
|
|
|
|
|
|
/* @00406c78 file=? name=FUN_00406c78 */
|
|
|
|
void __cdecl FUN_00406c78(int *param_1,byte param_2)
|
|
|
|
{
|
|
if (param_1 != (int *)0x0) {
|
|
if ((int *)param_1[0xf] != (int *)0x0) {
|
|
FUN_004022e8((int *)param_1[0xf]);
|
|
}
|
|
if ((param_2 & 1) != 0) {
|
|
FUN_004022d0(param_1);
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @00406ca4 file=? name=FUN_00406ca4 */
|
|
|
|
void __cdecl FUN_00406ca4(int param_1)
|
|
|
|
{
|
|
if ((*(int *)(param_1 + 4) < 1) && ((*(byte *)(param_1 + 0x30) & 1) != 0)) {
|
|
*(uint *)(param_1 + 0x30) = *(uint *)(param_1 + 0x30) & 0xfffffffe;
|
|
FUN_004022e8(*(int **)(param_1 + 0x3c));
|
|
*(undefined4 *)(param_1 + 0x3c) = 0;
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @00406cd0 file=? name=FUN_00406cd0 */
|
|
|
|
void __cdecl FUN_00406cd0(int param_1)
|
|
|
|
{
|
|
if ((*(byte *)(param_1 + 0x30) & 1) == 0) {
|
|
(**(code **)**(undefined4 **)(param_1 + 0x38))(*(undefined4 **)(param_1 + 0x38),param_1);
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @00406cec file=? name=FUN_00406cec */
|
|
|
|
undefined4 FUN_00406cec(void)
|
|
|
|
{
|
|
return 1;
|
|
}
|
|
|
|
|
|
|
|
/* @00406cf8 file=? name=FUN_00406cf8 */
|
|
|
|
void __cdecl FUN_00406cf8(undefined4 *param_1)
|
|
|
|
{
|
|
*param_1 = &PTR_FUN_004e0e78;
|
|
param_1[2] = 0;
|
|
param_1[3] = 0;
|
|
param_1[4] = 0;
|
|
param_1[5] = 0xffffffff;
|
|
param_1[6] = 0xffffffff;
|
|
*(undefined1 *)(param_1 + 1) = 1;
|
|
*(undefined1 *)((int)param_1 + 5) = 0;
|
|
*(undefined1 *)((int)param_1 + 6) = 0;
|
|
*(undefined1 *)((int)param_1 + 7) = 0;
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @00406d34 file=? name=FUN_00406d34 */
|
|
|
|
void __cdecl FUN_00406d34(int *param_1,byte param_2)
|
|
|
|
{
|
|
int *piVar1;
|
|
int iVar2;
|
|
|
|
if (param_1 != (int *)0x0) {
|
|
*param_1 = (int)&PTR_FUN_004e0e78;
|
|
if (param_1[3] != 0) {
|
|
for (iVar2 = param_1[6]; -1 < iVar2; iVar2 = iVar2 + -1) {
|
|
piVar1 = *(int **)(param_1[3] + iVar2 * 4);
|
|
if (piVar1 != (int *)0x0) {
|
|
FUN_00406c78(piVar1,3);
|
|
}
|
|
}
|
|
FUN_004022e8((int *)param_1[3]);
|
|
}
|
|
*(undefined1 *)(param_1 + 1) = 1;
|
|
*(undefined1 *)((int)param_1 + 5) = 0;
|
|
*(undefined1 *)((int)param_1 + 6) = 0;
|
|
*(undefined1 *)((int)param_1 + 7) = 0;
|
|
param_1[2] = 0;
|
|
param_1[4] = 0;
|
|
param_1[6] = -1;
|
|
param_1[3] = 0;
|
|
if ((param_2 & 1) != 0) {
|
|
FUN_004022d0(param_1);
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @00406db4 file=? name=FUN_00406db4 */
|
|
|
|
undefined4 __cdecl
|
|
FUN_00406db4(int param_1,char *param_2,undefined4 param_3,undefined4 param_4,undefined4 param_5,
|
|
undefined4 *param_6,undefined4 param_7,int param_8)
|
|
|
|
{
|
|
int *piVar1;
|
|
undefined4 uVar2;
|
|
undefined4 *puVar3;
|
|
undefined4 *puVar4;
|
|
int iVar5;
|
|
|
|
if ((param_8 == -1) && (param_8 = *(int *)(param_1 + 0x14) + 1, *(int *)(param_1 + 0xc) != 0)) {
|
|
for (piVar1 = (int *)(*(int *)(param_1 + 0xc) + param_8 * 4);
|
|
(param_8 <= *(int *)(param_1 + 0x10) && (*piVar1 != 0)); piVar1 = piVar1 + 1) {
|
|
param_8 = param_8 + 1;
|
|
}
|
|
}
|
|
if (*(int *)(param_1 + 0xc) == 0) {
|
|
*(int *)(param_1 + 0x10) = param_8 + 0x32;
|
|
uVar2 = FUN_004022b0((param_8 + 0x32) * 4);
|
|
*(undefined4 *)(param_1 + 0xc) = uVar2;
|
|
for (iVar5 = 0; iVar5 < *(int *)(param_1 + 0x10); iVar5 = iVar5 + 1) {
|
|
*(undefined4 *)(*(int *)(param_1 + 0xc) + iVar5 * 4) = 0;
|
|
}
|
|
}
|
|
if (*(int *)(param_1 + 0x10) <= param_8) {
|
|
puVar3 = (undefined4 *)FUN_004022b0((param_8 + 0x32) * 4);
|
|
puVar4 = puVar3;
|
|
for (iVar5 = 0; iVar5 < *(int *)(param_1 + 0x10); iVar5 = iVar5 + 1) {
|
|
*puVar4 = *(undefined4 *)(*(int *)(param_1 + 0xc) + iVar5 * 4);
|
|
puVar4 = puVar4 + 1;
|
|
}
|
|
FUN_004022e8(*(int **)(param_1 + 0xc));
|
|
*(undefined4 **)(param_1 + 0xc) = puVar3;
|
|
*(int *)(param_1 + 0x10) = param_8 + 0x32;
|
|
for (; iVar5 < *(int *)(param_1 + 0x10); iVar5 = iVar5 + 1) {
|
|
*(undefined4 *)(*(int *)(param_1 + 0xc) + iVar5 * 4) = 0;
|
|
}
|
|
}
|
|
if (*(int *)(param_1 + 0x18) < param_8) {
|
|
*(int *)(param_1 + 0x18) = param_8;
|
|
}
|
|
puVar4 = (undefined4 *)FUN_00402298(0x44);
|
|
if (puVar4 == (undefined4 *)0x0) {
|
|
puVar4 = (undefined4 *)0x0;
|
|
}
|
|
else {
|
|
puVar4 = FUN_00406bc8(puVar4,param_1,param_2,param_3,param_4,param_5,param_6,param_7,param_8);
|
|
}
|
|
*(undefined4 **)(*(int *)(param_1 + 0xc) + param_8 * 4) = puVar4;
|
|
return *(undefined4 *)(*(int *)(param_1 + 0xc) + param_8 * 4);
|
|
}
|
|
|
|
|
|
|
|
/* @00406ec4 file=? name=FUN_00406ec4 */
|
|
|
|
undefined4 __cdecl
|
|
FUN_00406ec4(int param_1,char *param_2,undefined4 param_3,undefined4 param_4,undefined4 param_5,
|
|
int *param_6,int param_7,int param_8)
|
|
|
|
{
|
|
int *piVar1;
|
|
undefined4 uVar2;
|
|
int iVar3;
|
|
int *piVar4;
|
|
|
|
piVar1 = (int *)FUN_004022b0((param_7 + 1) * 4);
|
|
iVar3 = 0;
|
|
piVar4 = piVar1;
|
|
if (0 < param_7) {
|
|
do {
|
|
piVar4 = piVar4 + 1;
|
|
*piVar4 = *param_6;
|
|
iVar3 = iVar3 + 1;
|
|
param_6 = param_6 + 1;
|
|
} while (iVar3 < param_7);
|
|
}
|
|
*piVar1 = param_7;
|
|
uVar2 = FUN_00406db4(param_1,param_2,param_3,param_4,param_5,piVar1,(param_7 + 1) * 4,param_8);
|
|
FUN_004022e8(piVar1);
|
|
return uVar2;
|
|
}
|
|
|
|
|
|
|
|
/* @00406f3c file=? name=FUN_00406f3c */
|
|
|
|
void __cdecl
|
|
FUN_00406f3c(int param_1,char *param_2,undefined4 param_3,undefined4 param_4,undefined4 param_5,
|
|
int *param_6,int param_7)
|
|
|
|
{
|
|
undefined4 *puVar1;
|
|
int iVar2;
|
|
|
|
iVar2 = param_6[2] - param_6[1];
|
|
(**(code **)(*param_6 + 0xc))(param_6,0);
|
|
puVar1 = (undefined4 *)(**(code **)*param_6)(param_6);
|
|
FUN_00406db4(param_1,param_2,param_3,param_4,param_5,puVar1,iVar2,param_7);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @00406f84 file=? name=FUN_00406f84 */
|
|
|
|
void __cdecl FUN_00406f84(int param_1,int *param_2)
|
|
|
|
{
|
|
int iVar1;
|
|
int *piVar2;
|
|
|
|
if (*param_2 != -1) {
|
|
*(undefined4 *)(*(int *)(param_1 + 0xc) + *param_2 * 4) = 0;
|
|
iVar1 = *(int *)(param_1 + 0x18);
|
|
if (iVar1 == *param_2) {
|
|
for (piVar2 = (int *)(*(int *)(param_1 + 0xc) + iVar1 * 4); (-1 < iVar1 && (*piVar2 == 0));
|
|
piVar2 = piVar2 + -1) {
|
|
iVar1 = iVar1 + -1;
|
|
}
|
|
*(int *)(param_1 + 0x18) = iVar1;
|
|
}
|
|
}
|
|
FUN_00406c78(param_2,3);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @00406fd4 file=? name=FUN_00406fd4 */
|
|
|
|
undefined4 __cdecl FUN_00406fd4(int param_1,int param_2)
|
|
|
|
{
|
|
if (((-1 < param_2) && (param_2 <= *(int *)(param_1 + 0x18))) && (*(int *)(param_1 + 0xc) != 0)) {
|
|
return *(undefined4 *)(*(int *)(param_1 + 0xc) + param_2 * 4);
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
|
|
|
|
/* @00406ff8 file=? name=FUN_00406ff8 */
|
|
|
|
int __cdecl FUN_00406ff8(int param_1,char *param_2,int param_3,int param_4)
|
|
|
|
{
|
|
char *pcVar1;
|
|
char *pcVar2;
|
|
char *pcVar3;
|
|
int unaff_ESI;
|
|
bool bVar4;
|
|
|
|
LAB_0040704b:
|
|
do {
|
|
do {
|
|
param_4 = param_4 + 1;
|
|
if (*(int *)(param_1 + 0x18) < param_4) goto LAB_00407052;
|
|
unaff_ESI = FUN_00406fd4(param_1,param_4);
|
|
} while ((unaff_ESI == 0) || (param_3 != *(int *)(unaff_ESI + 8)));
|
|
if (param_2 == (char *)0x0) break;
|
|
pcVar3 = (char *)(unaff_ESI + 0xc);
|
|
pcVar2 = param_2;
|
|
do {
|
|
if (*pcVar2 != *pcVar3) goto LAB_0040704b;
|
|
bVar4 = true;
|
|
if (*pcVar2 == '\0') break;
|
|
pcVar1 = pcVar2 + 1;
|
|
if (*pcVar1 != pcVar3[1]) goto LAB_0040704b;
|
|
pcVar2 = pcVar2 + 2;
|
|
pcVar3 = pcVar3 + 2;
|
|
bVar4 = *pcVar1 == '\0';
|
|
} while (!bVar4);
|
|
} while (!bVar4);
|
|
LAB_00407052:
|
|
if (*(int *)(param_1 + 0x18) < param_4) {
|
|
unaff_ESI = 0;
|
|
}
|
|
return unaff_ESI;
|
|
}
|
|
|
|
|
|
|
|
/* @00407064 file=? name=FUN_00407064 */
|
|
|
|
int __cdecl FUN_00407064(int param_1,int param_2,int param_3)
|
|
|
|
{
|
|
int *piVar1;
|
|
int iVar2;
|
|
int iVar3;
|
|
int *piVar4;
|
|
int iVar5;
|
|
|
|
iVar2 = FUN_00406fd4(param_1,param_2);
|
|
if (iVar2 != 0) {
|
|
iVar5 = *(int *)(iVar2 + 4);
|
|
*(int *)(iVar2 + 4) = *(int *)(iVar2 + 4) + 1;
|
|
if (iVar5 == 0) {
|
|
FUN_00406cd0(iVar2);
|
|
}
|
|
piVar1 = *(int **)(iVar2 + 0x3c);
|
|
piVar4 = piVar1;
|
|
for (iVar5 = 1; piVar4 = piVar4 + 1, iVar5 <= *piVar1; iVar5 = iVar5 + 1) {
|
|
iVar3 = FUN_00406fd4(param_1,*piVar4);
|
|
if (*(int *)(iVar3 + 8) == param_3) {
|
|
*(int *)(iVar2 + 4) = *(int *)(iVar2 + 4) + -1;
|
|
return iVar3;
|
|
}
|
|
}
|
|
*(int *)(iVar2 + 4) = *(int *)(iVar2 + 4) + -1;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
|
|
|
|
/* @004070dc file=? name=FUN_004070dc */
|
|
|
|
int __cdecl FUN_004070dc(int param_1,int param_2,char *param_3)
|
|
|
|
{
|
|
char *pcVar1;
|
|
int *piVar2;
|
|
int iVar3;
|
|
int iVar4;
|
|
char *pcVar5;
|
|
char *pcVar6;
|
|
int *piVar7;
|
|
bool bVar8;
|
|
int local_c;
|
|
|
|
iVar3 = FUN_00406fd4(param_1,param_2);
|
|
if (iVar3 != 0) {
|
|
iVar4 = *(int *)(iVar3 + 4);
|
|
*(int *)(iVar3 + 4) = *(int *)(iVar3 + 4) + 1;
|
|
if (iVar4 == 0) {
|
|
FUN_00406cd0(iVar3);
|
|
}
|
|
piVar2 = *(int **)(iVar3 + 0x3c);
|
|
piVar7 = piVar2;
|
|
for (local_c = 1; piVar7 = piVar7 + 1, local_c <= *piVar2; local_c = local_c + 1) {
|
|
iVar4 = FUN_00406fd4(param_1,*piVar7);
|
|
pcVar6 = (char *)(iVar4 + 0xc);
|
|
pcVar5 = param_3;
|
|
do {
|
|
if (*pcVar5 != *pcVar6) goto LAB_0040715d;
|
|
bVar8 = true;
|
|
if (*pcVar5 == '\0') break;
|
|
pcVar1 = pcVar5 + 1;
|
|
if (*pcVar1 != pcVar6[1]) goto LAB_0040715d;
|
|
pcVar5 = pcVar5 + 2;
|
|
pcVar6 = pcVar6 + 2;
|
|
bVar8 = *pcVar1 == '\0';
|
|
} while (!bVar8);
|
|
if (bVar8) {
|
|
*(int *)(iVar3 + 4) = *(int *)(iVar3 + 4) + -1;
|
|
return iVar4;
|
|
}
|
|
LAB_0040715d:
|
|
}
|
|
*(int *)(iVar3 + 4) = *(int *)(iVar3 + 4) + -1;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
|
|
|
|
/* @0040717c file=? name=FUN_0040717c */
|
|
|
|
void __cdecl FUN_0040717c(int param_1)
|
|
|
|
{
|
|
int iVar1;
|
|
int iVar2;
|
|
|
|
for (iVar2 = *(int *)(param_1 + 0x18); -1 < iVar2; iVar2 = iVar2 + -1) {
|
|
iVar1 = *(int *)(*(int *)(param_1 + 0xc) + iVar2 * 4);
|
|
if (iVar1 != 0) {
|
|
FUN_00406ca4(iVar1);
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @004071a8 file=? name=FUN_004071a8 */
|
|
|
|
undefined4 FUN_004071a8(void)
|
|
|
|
{
|
|
return 1;
|
|
}
|
|
|
|
|
|
|
|
/* @004071b4 file=? name=FUN_004071b4 */
|
|
|
|
undefined4 * __cdecl FUN_004071b4(undefined4 *param_1)
|
|
|
|
{
|
|
FUN_00406cf8(param_1);
|
|
*param_1 = &PTR_FUN_004e0e74;
|
|
FUN_004034b0(param_1 + 7,(LPCSTR)0x0,0);
|
|
return param_1;
|
|
}
|
|
|
|
|
|
|
|
/* @004071e0 file=? name=FUN_004071e0 */
|
|
|
|
undefined4 * __cdecl FUN_004071e0(undefined4 *param_1,char *param_2)
|
|
|
|
{
|
|
FUN_00406cf8(param_1);
|
|
*param_1 = &PTR_FUN_004e0e74;
|
|
FUN_004034b0(param_1 + 7,(LPCSTR)0x0,0);
|
|
FUN_00407390((int)param_1,param_2);
|
|
return param_1;
|
|
}
|
|
|
|
|
|
|
|
/* @00407218 file=? name=FUN_00407218 */
|
|
|
|
undefined4 * __cdecl FUN_00407218(undefined4 *param_1,char *param_2,char *param_3,int param_4)
|
|
|
|
{
|
|
byte bVar1;
|
|
byte bVar2;
|
|
byte bVar3;
|
|
byte bVar4;
|
|
int iVar5;
|
|
int *piVar6;
|
|
char *pcVar7;
|
|
byte bVar8;
|
|
byte bVar9;
|
|
byte bVar10;
|
|
|
|
FUN_00406cf8(param_1);
|
|
*param_1 = &PTR_FUN_004e0e74;
|
|
FUN_004034b0(param_1 + 7,(LPCSTR)0x0,0);
|
|
FUN_00407390((int)param_1,param_2);
|
|
iVar5 = 0;
|
|
pcVar7 = (char *)((int)param_1 + 5);
|
|
if (0 < param_4) {
|
|
do {
|
|
if (*pcVar7 != *param_3) break;
|
|
iVar5 = iVar5 + 1;
|
|
pcVar7 = pcVar7 + 1;
|
|
param_3 = param_3 + 1;
|
|
} while (iVar5 < param_4);
|
|
}
|
|
if (iVar5 < param_4) {
|
|
bVar1 = *(byte *)((int)param_1 + 7);
|
|
bVar10 = 0x2e;
|
|
bVar2 = *(byte *)((int)param_1 + 6);
|
|
bVar9 = 0x2e;
|
|
bVar3 = *(byte *)((int)param_1 + 5);
|
|
bVar8 = 0x2e;
|
|
bVar4 = *(byte *)(param_1 + 1);
|
|
FUN_004dbb24(&DAT_00524e20,s_Error___Resource_file_004e0d5c,(char *)0x0);
|
|
FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0);
|
|
FUN_004dbb24(&DAT_00524e20,&DAT_004e0d75,(char *)0x0);
|
|
piVar6 = FUN_004db78c(&DAT_00524e20,(uint)bVar4);
|
|
piVar6 = FUN_004db92c(piVar6,bVar8);
|
|
piVar6 = FUN_004db78c(piVar6,(uint)bVar3);
|
|
piVar6 = FUN_004db92c(piVar6,bVar9);
|
|
piVar6 = FUN_004db78c(piVar6,(uint)bVar2);
|
|
piVar6 = FUN_004db92c(piVar6,bVar10);
|
|
piVar6 = FUN_004db78c(piVar6,(uint)bVar1);
|
|
FUN_004dbb24(piVar6,s_is_obsolete__004e0d78,(char *)0x0);
|
|
FUN_004036a0(1);
|
|
}
|
|
return param_1;
|
|
}
|
|
|
|
|
|
|
|
/* @00407354 file=? name=FUN_00407354 */
|
|
|
|
void __cdecl FUN_00407354(int *param_1,byte param_2)
|
|
|
|
{
|
|
if (param_1 != (int *)0x0) {
|
|
*param_1 = (int)&PTR_FUN_004e0e74;
|
|
param_1[7] = (int)&PTR_FUN_004e09e0;
|
|
FUN_00403564((int)(param_1 + 7));
|
|
FUN_00406d34(param_1,0);
|
|
if ((param_2 & 1) != 0) {
|
|
FUN_004022d0(param_1);
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @00407390 file=? name=FUN_00407390 */
|
|
|
|
undefined4 __cdecl FUN_00407390(int param_1,char *param_2)
|
|
|
|
{
|
|
char cVar1;
|
|
byte bVar2;
|
|
int iVar3;
|
|
int iVar4;
|
|
int *piVar5;
|
|
int *piVar6;
|
|
char *pcVar7;
|
|
int iVar8;
|
|
undefined4 uVar9;
|
|
uint uVar10;
|
|
uint uVar11;
|
|
CHAR *pCVar12;
|
|
char *pcVar13;
|
|
LPCSTR pCVar14;
|
|
byte bVar15;
|
|
byte bVar16;
|
|
byte bVar17;
|
|
int local_60;
|
|
int local_5c;
|
|
char local_58 [32];
|
|
undefined4 local_38;
|
|
int local_34;
|
|
undefined4 local_30;
|
|
uint local_2c;
|
|
int *local_28;
|
|
int *local_24;
|
|
int local_20;
|
|
char *local_1c;
|
|
uint local_18;
|
|
int *local_14;
|
|
uint local_10;
|
|
int *local_c;
|
|
uint local_8;
|
|
|
|
uVar10 = 0xffffffff;
|
|
pcVar7 = param_2;
|
|
do {
|
|
pcVar13 = pcVar7;
|
|
if (uVar10 == 0) break;
|
|
uVar10 = uVar10 - 1;
|
|
pcVar13 = pcVar7 + 1;
|
|
cVar1 = *pcVar7;
|
|
pcVar7 = pcVar13;
|
|
} while (cVar1 != '\0');
|
|
uVar10 = ~uVar10;
|
|
pCVar12 = pcVar13 + -uVar10;
|
|
pCVar14 = (LPCSTR)(param_1 + 0x34);
|
|
for (uVar11 = uVar10 >> 2; uVar11 != 0; uVar11 = uVar11 - 1) {
|
|
*(undefined4 *)pCVar14 = *(undefined4 *)pCVar12;
|
|
pCVar12 = pCVar12 + 4;
|
|
pCVar14 = pCVar14 + 4;
|
|
}
|
|
for (uVar10 = uVar10 & 3; uVar10 != 0; uVar10 = uVar10 - 1) {
|
|
*pCVar14 = *pCVar12;
|
|
pCVar12 = pCVar12 + 1;
|
|
pCVar14 = pCVar14 + 1;
|
|
}
|
|
piVar6 = (int *)(param_1 + 0x1c);
|
|
FUN_004034e4((int)piVar6,(LPCSTR)(param_1 + 0x34),0);
|
|
if (*(int *)(param_1 + 0x2c) != -1) {
|
|
*(undefined4 *)(param_1 + 0x18) = 0;
|
|
(**(code **)(*(int *)(param_1 + 0x1c) + 0x1c))(piVar6,param_1 + 4,4);
|
|
if (*(char *)(param_1 + 4) != '\x01') {
|
|
bVar2 = *(byte *)(param_1 + 7);
|
|
bVar17 = 0x2e;
|
|
local_8 = (uint)*(byte *)(param_1 + 6);
|
|
bVar16 = 0x2e;
|
|
local_10 = (uint)*(byte *)(param_1 + 5);
|
|
bVar15 = 0x2e;
|
|
local_18 = (uint)*(byte *)(param_1 + 4);
|
|
local_1c = param_2;
|
|
FUN_004dbb24(&DAT_00524e20,s_Error___Resource_file_004e0d88,(char *)0x0);
|
|
FUN_004dbb24(&DAT_00524e20,local_1c,(char *)0x0);
|
|
FUN_004dbb24(&DAT_00524e20,&DAT_004e0da1,(char *)0x0);
|
|
piVar5 = FUN_004db78c(&DAT_00524e20,local_18);
|
|
local_14 = FUN_004db92c(piVar5,bVar15);
|
|
piVar5 = FUN_004db78c(local_14,local_10);
|
|
local_c = FUN_004db92c(piVar5,bVar16);
|
|
piVar5 = FUN_004db78c(local_c,local_8);
|
|
piVar5 = FUN_004db92c(piVar5,bVar17);
|
|
piVar5 = FUN_004db78c(piVar5,(uint)bVar2);
|
|
FUN_004dbb24(piVar5,s_is_obsolete__004e0da4,(char *)0x0);
|
|
FUN_004036a0(1);
|
|
}
|
|
piVar6 = (int *)(**(code **)(*piVar6 + 0x1c))(piVar6,param_1 + 8,4);
|
|
(**(code **)(*piVar6 + 0x1c))(piVar6,param_1 + 0x18,4);
|
|
pcVar7 = (char *)FUN_004dee74(s_PRELOAD_004e0db4);
|
|
if ((pcVar7 == (char *)0x0) || (iVar8 = FUN_004d4b58(pcVar7,&DAT_004e0dbc), iVar8 != 0)) {
|
|
local_20 = 1;
|
|
}
|
|
else {
|
|
local_20 = 0;
|
|
}
|
|
local_24 = (int *)FUN_004022b0(*(int *)(param_1 + 0x18) << 2);
|
|
(**(code **)(*(int *)(param_1 + 0x1c) + 0x1c))
|
|
(param_1 + 0x1c,local_24,*(int *)(param_1 + 0x18) << 2);
|
|
iVar8 = *(int *)(param_1 + 0x18) + 0x32;
|
|
*(int *)(param_1 + 0x10) = iVar8;
|
|
uVar9 = FUN_004022b0(iVar8 * 4);
|
|
*(undefined4 *)(param_1 + 0xc) = uVar9;
|
|
for (iVar8 = 0; iVar8 < *(int *)(param_1 + 0x10); iVar8 = iVar8 + 1) {
|
|
*(undefined4 *)(*(int *)(param_1 + 0xc) + iVar8 * 4) = 0;
|
|
}
|
|
*(int *)(param_1 + 0x18) = *(int *)(param_1 + 0x18) + -1;
|
|
local_28 = local_24;
|
|
for (iVar8 = 0; iVar8 <= *(int *)(param_1 + 0x18); iVar8 = iVar8 + 1) {
|
|
if (*local_28 == 0) {
|
|
*(undefined4 *)(*(int *)(param_1 + 0xc) + iVar8 * 4) = 0;
|
|
}
|
|
else {
|
|
piVar6 = (int *)(param_1 + 0x1c);
|
|
(**(code **)(*(int *)(param_1 + 0x1c) + 0xc))(piVar6,*local_28);
|
|
(**(code **)(*piVar6 + 0x1c))(piVar6,&local_60,0x38);
|
|
piVar6 = (int *)0x0;
|
|
if (((local_34 == 0) && (local_2c != 0)) && (local_20 != 0)) {
|
|
piVar6 = (int *)FUN_004022b0(local_2c);
|
|
(**(code **)(*(int *)(param_1 + 0x1c) + 0xc))(param_1 + 0x1c,local_30);
|
|
(**(code **)(*(int *)(param_1 + 0x1c) + 0x1c))(param_1 + 0x1c,piVar6,local_2c);
|
|
}
|
|
if ((local_5c < 9) && (piVar6 != (int *)0x0)) {
|
|
uVar9 = FUN_00406ec4(param_1,local_58,local_5c,local_38,local_34,piVar6 + 1,*piVar6,
|
|
local_60);
|
|
*(undefined4 *)(*(int *)(param_1 + 0xc) + iVar8 * 4) = uVar9;
|
|
}
|
|
else {
|
|
uVar9 = FUN_00406db4(param_1,local_58,local_5c,local_38,local_34,piVar6,local_2c,local_60)
|
|
;
|
|
*(undefined4 *)(*(int *)(param_1 + 0xc) + iVar8 * 4) = uVar9;
|
|
}
|
|
iVar3 = *(int *)(*(int *)(param_1 + 0xc) + iVar8 * 4);
|
|
*(undefined4 *)(iVar3 + 0x34) = local_30;
|
|
if (piVar6 != (int *)0x0) {
|
|
iVar4 = *(int *)(iVar3 + 4);
|
|
*(int *)(iVar3 + 4) = *(int *)(iVar3 + 4) + 1;
|
|
if (iVar4 == 0) {
|
|
FUN_00406cd0(iVar3);
|
|
}
|
|
FUN_004022e8(piVar6);
|
|
}
|
|
}
|
|
local_28 = local_28 + 1;
|
|
}
|
|
FUN_004022e8(local_24);
|
|
return 1;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
|
|
|
|
/* @004076c0 file=? name=FUN_004076c0 */
|
|
|
|
undefined4 __cdecl FUN_004076c0(int param_1)
|
|
|
|
{
|
|
int *piVar1;
|
|
int iVar2;
|
|
undefined4 *puVar3;
|
|
undefined4 uVar4;
|
|
int *piVar5;
|
|
int iVar6;
|
|
undefined4 local_44;
|
|
undefined4 local_40;
|
|
undefined4 local_3c [8];
|
|
undefined4 local_1c;
|
|
uint local_18;
|
|
int local_14;
|
|
undefined4 local_10;
|
|
int *local_c;
|
|
int *local_8;
|
|
|
|
if (*(int *)(param_1 + 0xc) == 0) {
|
|
uVar4 = 0;
|
|
}
|
|
else {
|
|
for (iVar6 = 0; iVar6 <= *(int *)(param_1 + 0x18); iVar6 = iVar6 + 1) {
|
|
iVar2 = *(int *)(*(int *)(param_1 + 0xc) + iVar6 * 4);
|
|
if (iVar2 != 0) {
|
|
FUN_00406cd0(iVar2);
|
|
}
|
|
}
|
|
if (*(int *)(param_1 + 0x2c) != -1) {
|
|
FUN_00403564(param_1 + 0x1c);
|
|
}
|
|
piVar1 = (int *)(param_1 + 0x1c);
|
|
FUN_004034e4((int)piVar1,(LPCSTR)(param_1 + 0x34),1);
|
|
*(int *)(param_1 + 0x18) = *(int *)(param_1 + 0x18) + 1;
|
|
(**(code **)(*(int *)(param_1 + 0x1c) + 0x20))(piVar1,param_1 + 4,4);
|
|
piVar5 = (int *)(**(code **)(*piVar1 + 0x20))(piVar1,param_1 + 8,4);
|
|
(**(code **)(*piVar5 + 0x20))(piVar5,param_1 + 0x18,4);
|
|
local_8 = (int *)FUN_004022b0(*(int *)(param_1 + 0x18) << 2);
|
|
(**(code **)(*(int *)(param_1 + 0x1c) + 0x20))(piVar1,local_8,*(int *)(param_1 + 0x18) << 2);
|
|
local_c = local_8;
|
|
for (iVar6 = 0; iVar6 < *(int *)(param_1 + 0x18); iVar6 = iVar6 + 1) {
|
|
puVar3 = *(undefined4 **)(*(int *)(param_1 + 0xc) + iVar6 * 4);
|
|
if (puVar3 == (undefined4 *)0x0) {
|
|
*local_c = 0;
|
|
}
|
|
else {
|
|
local_14 = *(int *)(param_1 + 0x24) - *(int *)(param_1 + 0x20);
|
|
(**(code **)(*(int *)(param_1 + 0x1c) + 0x20))(param_1 + 0x1c,puVar3[0xf],puVar3[0x10]);
|
|
*local_c = *(int *)(param_1 + 0x24) - *(int *)(param_1 + 0x20);
|
|
local_44 = *puVar3;
|
|
local_40 = puVar3[2];
|
|
FUN_004d4918(local_3c,puVar3 + 3,0x20);
|
|
local_10 = puVar3[0x10];
|
|
local_1c = puVar3[0xb];
|
|
local_18 = puVar3[0xc] & 0xfffffffe;
|
|
(**(code **)(*(int *)(param_1 + 0x1c) + 0x20))((int *)(param_1 + 0x1c),&local_44,0x38);
|
|
}
|
|
local_c = local_c + 1;
|
|
}
|
|
iVar6 = param_1 + 0x1c;
|
|
(**(code **)(*(int *)(param_1 + 0x1c) + 0xc))(iVar6,0xc);
|
|
(**(code **)(*(int *)(param_1 + 0x1c) + 0x20))(iVar6,local_8,*(int *)(param_1 + 0x18) << 2);
|
|
FUN_004022d0(local_8);
|
|
*(int *)(param_1 + 0x18) = *(int *)(param_1 + 0x18) + -1;
|
|
FUN_00403564(iVar6);
|
|
uVar4 = 1;
|
|
}
|
|
return uVar4;
|
|
}
|
|
|
|
|
|
|
|
/* @00407860 file=? name=FUN_00407860 */
|
|
|
|
void __cdecl FUN_00407860(int param_1,char *param_2)
|
|
|
|
{
|
|
char cVar1;
|
|
uint uVar2;
|
|
uint uVar3;
|
|
char *pcVar4;
|
|
char *pcVar5;
|
|
|
|
uVar2 = 0xffffffff;
|
|
do {
|
|
pcVar4 = param_2;
|
|
if (uVar2 == 0) break;
|
|
uVar2 = uVar2 - 1;
|
|
pcVar4 = param_2 + 1;
|
|
cVar1 = *param_2;
|
|
param_2 = pcVar4;
|
|
} while (cVar1 != '\0');
|
|
uVar2 = ~uVar2;
|
|
pcVar4 = pcVar4 + -uVar2;
|
|
pcVar5 = (char *)(param_1 + 0x34);
|
|
for (uVar3 = uVar2 >> 2; uVar3 != 0; uVar3 = uVar3 - 1) {
|
|
*(undefined4 *)pcVar5 = *(undefined4 *)pcVar4;
|
|
pcVar4 = pcVar4 + 4;
|
|
pcVar5 = pcVar5 + 4;
|
|
}
|
|
for (uVar2 = uVar2 & 3; uVar2 != 0; uVar2 = uVar2 - 1) {
|
|
*pcVar5 = *pcVar4;
|
|
pcVar4 = pcVar4 + 1;
|
|
pcVar5 = pcVar5 + 1;
|
|
}
|
|
FUN_004076c0(param_1);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @0040789c file=? name=FUN_0040789c */
|
|
|
|
void __cdecl FUN_0040789c(int param_1,int param_2)
|
|
|
|
{
|
|
undefined4 uVar1;
|
|
|
|
*(uint *)(param_2 + 0x30) = *(uint *)(param_2 + 0x30) | 1;
|
|
uVar1 = FUN_004022b0(*(uint *)(param_2 + 0x40));
|
|
*(undefined4 *)(param_2 + 0x3c) = uVar1;
|
|
(**(code **)(*(int *)(param_1 + 0x1c) + 0xc))(param_1 + 0x1c,*(undefined4 *)(param_2 + 0x34));
|
|
(**(code **)(*(int *)(param_1 + 0x1c) + 0x1c))
|
|
(param_1 + 0x1c,*(undefined4 *)(param_2 + 0x3c),*(undefined4 *)(param_2 + 0x40));
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @004078e4 file=? name=FUN_004078e4 */
|
|
|
|
undefined4 FUN_004078e4(void)
|
|
|
|
{
|
|
return 1;
|
|
}
|
|
|
|
|
|
|
|
/* @004078ee file=? name=FUN_004078ee */
|
|
|
|
void __cdecl FUN_004078ee(undefined4 param_1,int param_2)
|
|
|
|
{
|
|
*(uint *)(param_2 + 0x30) = *(uint *)(param_2 + 0x30) | 1;
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @004078fc file=? name=FUN_004078fc */
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
int __cdecl FUN_004078fc(float param_1)
|
|
|
|
{
|
|
int iVar1;
|
|
|
|
FUN_004dcd10((double)param_1);
|
|
iVar1 = FUN_004dcd94();
|
|
if (_DAT_00407940 <= param_1 - (float)iVar1) {
|
|
iVar1 = iVar1 + 1;
|
|
}
|
|
return iVar1;
|
|
}
|
|
|
|
|
|
|
|
/* @004079fc file=munga/scalar.cpp name=FUN_004079fc */
|
|
|
|
void __cdecl FUN_004079fc(char *param_1,int param_2)
|
|
|
|
{
|
|
if (param_1 == (char *)0x0) {
|
|
FUN_0040385c(s_Convert_From_Ascii___str____NULL_004e0e7c,s_d__tesla_bt_munga_SCALAR_CPP_004e0e9d
|
|
,0x5d);
|
|
}
|
|
if (param_2 == 0) {
|
|
FUN_0040385c(s_Convert_From_Ascii___value____NU_004e0eba,s_d__tesla_bt_munga_SCALAR_CPP_004e0edd
|
|
,0x61);
|
|
}
|
|
if (((&DAT_005207dd)[*param_1] & 0xc) != 0) {
|
|
FUN_004dbb24(&DAT_00524e20,s_Convert_From_Ascii___str____004e0efa,(char *)0x0);
|
|
FUN_004dbb24(&DAT_00524e20,param_1,(char *)0x0);
|
|
FUN_004dbb24(&DAT_00524e20,&DAT_004e0f17,(char *)0x0);
|
|
FUN_0040385c(s_Convert_From_Ascii___isalpha__st_004e0f19,s_d__tesla_bt_munga_SCALAR_CPP_004e0f3c
|
|
,0x66);
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @00407a90 file=? name=FUN_00407a90 */
|
|
|
|
void __cdecl FUN_00407a90(char *param_1,undefined1 *param_2)
|
|
|
|
{
|
|
int iVar1;
|
|
|
|
FUN_004079fc(param_1,(int)param_2);
|
|
iVar1 = FUN_004dd1e0(param_1);
|
|
*param_2 = (char)iVar1;
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @00407ab8 file=? name=FUN_00407ab8 */
|
|
|
|
void __cdecl FUN_00407ab8(char *param_1,undefined1 *param_2)
|
|
|
|
{
|
|
int iVar1;
|
|
|
|
FUN_004079fc(param_1,(int)param_2);
|
|
iVar1 = FUN_004dd1e0(param_1);
|
|
*param_2 = (char)iVar1;
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @00407ae0 file=? name=FUN_00407ae0 */
|
|
|
|
void __cdecl FUN_00407ae0(char *param_1,int *param_2)
|
|
|
|
{
|
|
int iVar1;
|
|
|
|
FUN_004079fc(param_1,(int)param_2);
|
|
iVar1 = FUN_004dd1e0(param_1);
|
|
*param_2 = iVar1;
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @00407b08 file=? name=FUN_00407b08 */
|
|
|
|
void __cdecl FUN_00407b08(char *param_1,int *param_2)
|
|
|
|
{
|
|
int iVar1;
|
|
|
|
FUN_004079fc(param_1,(int)param_2);
|
|
iVar1 = FUN_004dd1e0(param_1);
|
|
*param_2 = iVar1;
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @00407b30 file=? name=FUN_00407b30 */
|
|
|
|
void __cdecl FUN_00407b30(char *param_1,int *param_2)
|
|
|
|
{
|
|
int iVar1;
|
|
|
|
FUN_004079fc(param_1,(int)param_2);
|
|
iVar1 = FUN_004dd1e0(param_1);
|
|
*param_2 = iVar1;
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @00407b54 file=? name=FUN_00407b54 */
|
|
|
|
void __cdecl FUN_00407b54(char *param_1,int *param_2)
|
|
|
|
{
|
|
int iVar1;
|
|
|
|
FUN_004079fc(param_1,(int)param_2);
|
|
iVar1 = FUN_004dd1e0(param_1);
|
|
*param_2 = iVar1;
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @00407b78 file=? name=FUN_00407b78 */
|
|
|
|
void __cdecl FUN_00407b78(char *param_1,float *param_2)
|
|
|
|
{
|
|
float10 fVar1;
|
|
|
|
FUN_004079fc(param_1,(int)param_2);
|
|
fVar1 = (float10)FUN_004dd1cc(param_1);
|
|
*param_2 = (float)fVar1;
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @00407b9c file=? name=FUN_00407b9c */
|
|
|
|
void __cdecl FUN_00407b9c(undefined4 *param_1)
|
|
|
|
{
|
|
*param_1 = 1;
|
|
param_1[2] = 0;
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @00407bb0 file=? name=FUN_00407bb0 */
|
|
|
|
void __cdecl
|
|
FUN_00407bb0(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
|
|
undefined4 param_5)
|
|
|
|
{
|
|
*param_1 = param_2;
|
|
param_1[1] = param_3;
|
|
param_1[2] = param_4;
|
|
param_1[3] = param_5;
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @00407bd0 file=? name=FUN_00407bd0 */
|
|
|
|
void __cdecl
|
|
FUN_00407bd0(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
|
|
undefined4 param_5)
|
|
|
|
{
|
|
*param_1 = param_2;
|
|
param_1[1] = param_3;
|
|
param_1[2] = param_4;
|
|
param_1[3] = param_5;
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @00407bf0 file=? name=FUN_00407bf0 */
|
|
|
|
void __cdecl FUN_00407bf0(int *param_1,int *param_2,int *param_3)
|
|
|
|
{
|
|
bool bVar1;
|
|
int iVar2;
|
|
|
|
if ((param_2[2] < *param_2) || (param_2[3] < param_2[1])) {
|
|
bVar1 = true;
|
|
}
|
|
else {
|
|
bVar1 = false;
|
|
}
|
|
if (!bVar1) {
|
|
if ((param_3[2] < *param_3) || (param_3[3] < param_3[1])) {
|
|
bVar1 = true;
|
|
}
|
|
else {
|
|
bVar1 = false;
|
|
}
|
|
if (bVar1) {
|
|
*param_1 = *param_2;
|
|
param_1[1] = param_2[1];
|
|
param_1[2] = param_2[2];
|
|
param_1[3] = param_2[3];
|
|
return;
|
|
}
|
|
if (*param_2 < *param_3) {
|
|
iVar2 = *param_2;
|
|
}
|
|
else {
|
|
iVar2 = *param_3;
|
|
}
|
|
*param_1 = iVar2;
|
|
if (param_2[1] < param_3[1]) {
|
|
iVar2 = param_2[1];
|
|
}
|
|
else {
|
|
iVar2 = param_3[1];
|
|
}
|
|
param_1[1] = iVar2;
|
|
if (param_3[2] < param_2[2]) {
|
|
iVar2 = param_2[2];
|
|
}
|
|
else {
|
|
iVar2 = param_3[2];
|
|
}
|
|
param_1[2] = iVar2;
|
|
if (param_3[3] < param_2[3]) {
|
|
iVar2 = param_2[3];
|
|
}
|
|
else {
|
|
iVar2 = param_3[3];
|
|
}
|
|
param_1[3] = iVar2;
|
|
return;
|
|
}
|
|
bVar1 = true;
|
|
if ((*param_3 <= param_3[2]) && (param_3[1] <= param_3[3])) {
|
|
bVar1 = false;
|
|
}
|
|
if (bVar1) {
|
|
*param_1 = 1;
|
|
param_1[2] = 0;
|
|
return;
|
|
}
|
|
*param_1 = *param_3;
|
|
param_1[1] = param_3[1];
|
|
param_1[2] = param_3[2];
|
|
param_1[3] = param_3[3];
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @00407cd0 file=? name=FUN_00407cd0 */
|
|
|
|
void __cdecl FUN_00407cd0(int *param_1,int *param_2,int *param_3)
|
|
|
|
{
|
|
bool bVar1;
|
|
int iVar2;
|
|
|
|
if ((param_2[2] < *param_2) || (param_2[3] < param_2[1])) {
|
|
bVar1 = true;
|
|
}
|
|
else {
|
|
bVar1 = false;
|
|
}
|
|
if (bVar1) {
|
|
*param_1 = 1;
|
|
param_1[2] = 0;
|
|
return;
|
|
}
|
|
if ((param_3[2] < *param_3) || (param_3[3] < param_3[1])) {
|
|
bVar1 = true;
|
|
}
|
|
else {
|
|
bVar1 = false;
|
|
}
|
|
if (bVar1) {
|
|
*param_1 = 1;
|
|
param_1[2] = 0;
|
|
return;
|
|
}
|
|
if (*param_3 < *param_2) {
|
|
iVar2 = *param_2;
|
|
}
|
|
else {
|
|
iVar2 = *param_3;
|
|
}
|
|
*param_1 = iVar2;
|
|
if (param_3[1] < param_2[1]) {
|
|
iVar2 = param_2[1];
|
|
}
|
|
else {
|
|
iVar2 = param_3[1];
|
|
}
|
|
param_1[1] = iVar2;
|
|
if (param_2[2] < param_3[2]) {
|
|
iVar2 = param_2[2];
|
|
}
|
|
else {
|
|
iVar2 = param_3[2];
|
|
}
|
|
param_1[2] = iVar2;
|
|
if (param_2[3] < param_3[3]) {
|
|
iVar2 = param_2[3];
|
|
}
|
|
else {
|
|
iVar2 = param_3[3];
|
|
}
|
|
param_1[3] = iVar2;
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @00407d78 file=? name=FUN_00407d78 */
|
|
|
|
void __cdecl FUN_00407d78(int *param_1,uint *param_2)
|
|
|
|
{
|
|
int *piVar1;
|
|
byte bVar2;
|
|
uint *puVar3;
|
|
byte bVar4;
|
|
|
|
bVar4 = 0x29;
|
|
puVar3 = param_2 + 2;
|
|
bVar2 = 0x2c;
|
|
piVar1 = FUN_004db92c(param_1,0x28);
|
|
piVar1 = (int *)FUN_00407f08(piVar1,param_2);
|
|
piVar1 = FUN_004db92c(piVar1,bVar2);
|
|
piVar1 = (int *)FUN_00407f08(piVar1,puVar3);
|
|
FUN_004db92c(piVar1,bVar4);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @00407dc0 file=? name=FUN_00407dc0 */
|
|
|
|
undefined4 FUN_00407dc0(void)
|
|
|
|
{
|
|
return 1;
|
|
}
|
|
|
|
|
|
|
|
/* @00407dca file=? name=FUN_00407dca */
|
|
|
|
void __cdecl FUN_00407dca(int *param_1,int *param_2)
|
|
|
|
{
|
|
*param_1 = -*param_2;
|
|
param_1[1] = -param_2[1];
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @00407de3 file=? name=FUN_00407de3 */
|
|
|
|
void __cdecl FUN_00407de3(int *param_1,int *param_2,int *param_3)
|
|
|
|
{
|
|
*param_1 = *param_3 + *param_2;
|
|
param_1[1] = param_3[1] + param_2[1];
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @00407e04 file=? name=FUN_00407e04 */
|
|
|
|
void __cdecl FUN_00407e04(int *param_1,int *param_2,int *param_3)
|
|
|
|
{
|
|
*param_1 = *param_2 - *param_3;
|
|
param_1[1] = param_2[1] - param_3[1];
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @00407e25 file=? name=FUN_00407e25 */
|
|
|
|
void __cdecl FUN_00407e25(int *param_1,int *param_2,int param_3)
|
|
|
|
{
|
|
*param_1 = *param_2 * param_3;
|
|
param_1[1] = param_2[1] * param_3;
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @00407e45 file=? name=FUN_00407e45 */
|
|
|
|
void __cdecl FUN_00407e45(int *param_1,int *param_2,int *param_3)
|
|
|
|
{
|
|
*param_1 = *param_3 * *param_2;
|
|
param_1[1] = param_3[1] * param_2[1];
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @00407e66 file=? name=FUN_00407e66 */
|
|
|
|
int * __cdecl FUN_00407e66(int *param_1,int *param_2,int param_3)
|
|
|
|
{
|
|
*param_1 = *param_2 / param_3;
|
|
param_1[1] = param_2[1] / param_3;
|
|
return param_1;
|
|
}
|
|
|
|
|
|
|
|
/* @00407e8a file=? name=FUN_00407e8a */
|
|
|
|
int * __cdecl FUN_00407e8a(int *param_1,int *param_2,int *param_3)
|
|
|
|
{
|
|
*param_1 = *param_2 / *param_3;
|
|
param_1[1] = param_2[1] / param_3[1];
|
|
return param_1;
|
|
}
|
|
|
|
|
|
|
|
/* @00407eaf file=? name=FUN_00407eaf */
|
|
|
|
int * __cdecl FUN_00407eaf(int *param_1,int *param_2)
|
|
|
|
{
|
|
int iVar1;
|
|
|
|
FUN_004dd138((double)(*param_2 * *param_2 + param_2[1] * param_2[1]));
|
|
iVar1 = FUN_004dcd94();
|
|
*param_1 = *param_2 / iVar1;
|
|
param_1[1] = param_2[1] / iVar1;
|
|
return param_1;
|
|
}
|
|
|
|
|
|
|
|
/* @00407efe file=? name=FUN_00407efe */
|
|
|
|
undefined4 FUN_00407efe(void)
|
|
|
|
{
|
|
return 1;
|
|
}
|
|
|
|
|
|
|
|
/* @00407f08 file=? name=FUN_00407f08 */
|
|
|
|
void __cdecl FUN_00407f08(int *param_1,uint *param_2)
|
|
|
|
{
|
|
uint uVar1;
|
|
uint uVar2;
|
|
int *piVar3;
|
|
byte bVar4;
|
|
byte bVar5;
|
|
|
|
bVar5 = 0x3e;
|
|
uVar1 = param_2[1];
|
|
bVar4 = 0x2c;
|
|
uVar2 = *param_2;
|
|
piVar3 = FUN_004db92c(param_1,0x3c);
|
|
piVar3 = FUN_004db78c(piVar3,uVar2);
|
|
piVar3 = FUN_004db92c(piVar3,bVar4);
|
|
piVar3 = FUN_004db78c(piVar3,uVar1);
|
|
FUN_004db92c(piVar3,bVar5);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @00407f68 file=? name=FUN_00407f68 */
|
|
|
|
void FUN_00407f68(void)
|
|
|
|
{
|
|
char *pcVar1;
|
|
int iVar2;
|
|
uint uVar3;
|
|
uint *puVar4;
|
|
uint uVar5;
|
|
|
|
pcVar1 = (char *)FUN_004dee74(s_RANDOM_004e0f60);
|
|
if (pcVar1 == (char *)0x0) {
|
|
iVar2 = FUN_004dfda8((int *)0x0);
|
|
}
|
|
else {
|
|
iVar2 = FUN_004dd1e0(pcVar1);
|
|
}
|
|
FUN_004dd4c0(iVar2);
|
|
DAT_004e0f5c = 0;
|
|
iVar2 = 0;
|
|
puVar4 = &DAT_00521b74;
|
|
do {
|
|
uVar3 = FUN_004dd4d4();
|
|
*puVar4 = uVar3;
|
|
iVar2 = iVar2 + 1;
|
|
puVar4 = puVar4 + 1;
|
|
} while (iVar2 < 0xfa);
|
|
uVar5 = 0x3fff;
|
|
iVar2 = 0;
|
|
uVar3 = 0x4000;
|
|
while ((1 << ((byte)iVar2 & 0x1f) & 0x4000U) == 0) {
|
|
iVar2 = iVar2 + 1;
|
|
}
|
|
puVar4 = &DAT_00521bac;
|
|
while (iVar2 != 0) {
|
|
*puVar4 = *puVar4 & uVar5;
|
|
*puVar4 = *puVar4 | uVar3;
|
|
uVar5 = (int)uVar5 >> 1;
|
|
uVar3 = (int)uVar3 >> 1;
|
|
puVar4 = puVar4 + 0xb;
|
|
iVar2 = iVar2 + -1;
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @00407fec file=? name=FUN_00407fec */
|
|
|
|
void FUN_00407fec(void)
|
|
|
|
{
|
|
int iVar1;
|
|
|
|
if (DAT_004e0f5c < 0x93) {
|
|
iVar1 = DAT_004e0f5c + 0x67;
|
|
}
|
|
else {
|
|
iVar1 = DAT_004e0f5c + -0x93;
|
|
}
|
|
(&DAT_00521b74)[DAT_004e0f5c] = (&DAT_00521b74)[DAT_004e0f5c] ^ (&DAT_00521b74)[iVar1];
|
|
DAT_004e0f5c = DAT_004e0f5c + 1;
|
|
if (DAT_004e0f5c == 0xfa) {
|
|
DAT_004e0f5c = 0;
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @00408050 file=? name=FUN_00408050 */
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
float10 FUN_00408050(void)
|
|
|
|
{
|
|
int iVar1;
|
|
|
|
iVar1 = FUN_00407fec();
|
|
return (float10)(_DAT_00408078 * (float)iVar1);
|
|
}
|
|
|
|
|
|
|
|
/* @0040807c file=? name=FUN_0040807c */
|
|
|
|
int __cdecl FUN_0040807c(undefined4 param_1,uint param_2)
|
|
|
|
{
|
|
int iVar1;
|
|
|
|
do {
|
|
iVar1 = FUN_00407fec();
|
|
} while (0x7fff - (int)(0x8000 % (ulonglong)param_2) < iVar1);
|
|
return iVar1 % (int)param_2;
|
|
}
|
|
|
|
|
|
|
|
/* @004080ac file=? name=FUN_004080ac */
|
|
|
|
int * __cdecl FUN_004080ac(int *param_1,uint param_2)
|
|
|
|
{
|
|
if ((int)param_2 < 2) {
|
|
param_2 = 2;
|
|
}
|
|
param_1[1] = param_2;
|
|
*param_1 = 0x7fff - (int)(0x8000 % (ulonglong)param_2);
|
|
return param_1;
|
|
}
|
|
|
|
|
|
|
|
/* @004080e0 file=? name=FUN_004080e0 */
|
|
|
|
int __cdecl FUN_004080e0(int *param_1)
|
|
|
|
{
|
|
int iVar1;
|
|
|
|
do {
|
|
iVar1 = FUN_00407fec();
|
|
} while (*param_1 < iVar1);
|
|
return iVar1 % param_1[1] + 1;
|
|
}
|
|
|
|
|
|
|
|
/* @00408110 file=? name=FUN_00408110 */
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
float10 __cdecl FUN_00408110(float param_1)
|
|
|
|
{
|
|
float10 fVar1;
|
|
undefined4 local_8;
|
|
|
|
fVar1 = FUN_004dcd2c((double)param_1,6.2831854820251465);
|
|
local_8 = (float)fVar1;
|
|
if (local_8 <= _DAT_00408170) {
|
|
if (local_8 < _DAT_00408178) {
|
|
local_8 = _DAT_00408174 + local_8;
|
|
}
|
|
}
|
|
else {
|
|
local_8 = local_8 - _DAT_00408174;
|
|
}
|
|
return (float10)local_8;
|
|
}
|
|
|
|
|
|
|
|
/* @0040817c file=? name=FUN_0040817c */
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
float * __cdecl FUN_0040817c(float *param_1)
|
|
|
|
{
|
|
float10 fVar1;
|
|
|
|
fVar1 = FUN_004dcd2c((double)*param_1,6.2831854820251465);
|
|
*param_1 = (float)fVar1;
|
|
if (*param_1 <= _DAT_004081d4) {
|
|
if (*param_1 < _DAT_004081dc) {
|
|
*param_1 = _DAT_004081d8 + *param_1;
|
|
}
|
|
}
|
|
else {
|
|
*param_1 = *param_1 - _DAT_004081d8;
|
|
}
|
|
return param_1;
|
|
}
|
|
|
|
|
|
|
|
/* @004081e0 file=? name=FUN_004081e0 */
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
float * __cdecl FUN_004081e0(float *param_1,float *param_2,float *param_3,float param_4)
|
|
|
|
{
|
|
float fVar1;
|
|
float10 fVar2;
|
|
undefined4 local_c;
|
|
|
|
fVar2 = FUN_00408110(*param_2);
|
|
fVar1 = (float)fVar2;
|
|
fVar2 = FUN_00408110(*param_3);
|
|
local_c = (float)fVar2;
|
|
if (local_c - fVar1 <= _DAT_00408260) {
|
|
if (local_c - fVar1 < _DAT_00408268) {
|
|
local_c = _DAT_00408264 + local_c;
|
|
}
|
|
}
|
|
else {
|
|
local_c = local_c - _DAT_00408264;
|
|
}
|
|
*param_1 = local_c * param_4 + (_DAT_0040826c - param_4) * fVar1;
|
|
return param_1;
|
|
}
|
|
|
|
|
|
|
|
/* @00408270 file=? name=FUN_00408270 */
|
|
|
|
int * __cdecl FUN_00408270(int *param_1,float *param_2)
|
|
|
|
{
|
|
int *piVar1;
|
|
|
|
piVar1 = FUN_004db634(param_1,(float10)*param_2);
|
|
FUN_004dbb24(piVar1,&DAT_004e0f68,(char *)0x0);
|
|
return piVar1;
|
|
}
|
|
|
|
|
|
|
|
/* @004082ac file=? name=FUN_004082ac */
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
undefined4 __cdecl FUN_004082ac(float *param_1)
|
|
|
|
{
|
|
undefined4 uVar1;
|
|
|
|
if ((*param_1 < _DAT_004082d8) || (_DAT_004082dc < *param_1)) {
|
|
uVar1 = 0;
|
|
}
|
|
else {
|
|
uVar1 = 1;
|
|
}
|
|
return uVar1;
|
|
}
|
|
|
|
|
|
|
|
/* @0040831c file=? name=FUN_0040831c */
|
|
|
|
undefined4 FUN_0040831c(void)
|
|
|
|
{
|
|
return 1;
|
|
}
|
|
|
|
|
|
|
|
/* @00408328 file=? name=FUN_00408328 */
|
|
|
|
float * __cdecl FUN_00408328(float *param_1,float *param_2)
|
|
|
|
{
|
|
float10 fVar1;
|
|
|
|
fVar1 = (float10)FUN_004dc9b4(SUB84((double)*param_2,0),(int)((ulonglong)(double)*param_2 >> 0x20)
|
|
);
|
|
param_1[1] = (float)fVar1;
|
|
fVar1 = (float10)FUN_004dd0f4(SUB84((double)*param_2,0),(int)((ulonglong)(double)*param_2 >> 0x20)
|
|
);
|
|
*param_1 = (float)fVar1;
|
|
fVar1 = (float10)FUN_004dc9b4(SUB84((double)*param_2,0),(int)((ulonglong)(double)*param_2 >> 0x20)
|
|
);
|
|
param_1[1] = (float)fVar1;
|
|
return param_1;
|
|
}
|
|
|
|
|
|
|
|
/* @00408374 file=? name=FUN_00408374 */
|
|
|
|
void __cdecl FUN_00408374(int *param_1,float *param_2)
|
|
|
|
{
|
|
float fVar1;
|
|
float fVar2;
|
|
int *piVar3;
|
|
byte bVar4;
|
|
byte bVar5;
|
|
|
|
bVar5 = 0x7d;
|
|
fVar1 = *param_2;
|
|
bVar4 = 0x2c;
|
|
fVar2 = param_2[1];
|
|
piVar3 = FUN_004db92c(param_1,0x7b);
|
|
piVar3 = FUN_004db634(piVar3,(float10)fVar2);
|
|
piVar3 = FUN_004db92c(piVar3,bVar4);
|
|
piVar3 = FUN_004db634(piVar3,(float10)fVar1);
|
|
FUN_004db92c(piVar3,bVar5);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @004083e0 file=? name=FUN_004083e0 */
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
bool __cdecl FUN_004083e0(float *param_1)
|
|
|
|
{
|
|
float10 fVar1;
|
|
|
|
fVar1 = FUN_004dcd00((double)((param_1[1] * param_1[1] + *param_1 * *param_1) - _DAT_00408438));
|
|
return fVar1 <= (float10)_DAT_0040843c;
|
|
}
|
|
|
|
|
|
|
|
/* @00408440 file=? name=FUN_00408440 */
|
|
|
|
void __cdecl FUN_00408440(undefined4 *param_1,undefined4 *param_2)
|
|
|
|
{
|
|
*param_1 = *param_2;
|
|
param_1[1] = param_2[1];
|
|
param_1[2] = param_2[2];
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @0040845c file=? name=FUN_0040845c */
|
|
|
|
undefined4 __cdecl FUN_0040845c(float *param_1,float param_2)
|
|
|
|
{
|
|
float10 fVar1;
|
|
|
|
fVar1 = FUN_004dcd00((double)*param_1);
|
|
if (((fVar1 <= (float10)param_2) &&
|
|
(fVar1 = FUN_004dcd00((double)param_1[1]), fVar1 <= (float10)param_2)) &&
|
|
(fVar1 = FUN_004dcd00((double)param_1[2]), fVar1 <= (float10)param_2)) {
|
|
return 1;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
|
|
|
|
/* @004084fc file=? name=FUN_004084fc */
|
|
|
|
undefined4 __cdecl FUN_004084fc(float *param_1,float *param_2,float param_3)
|
|
|
|
{
|
|
float10 fVar1;
|
|
|
|
fVar1 = FUN_004dcd00((double)(*param_1 - *param_2));
|
|
if (((fVar1 <= (float10)param_3) &&
|
|
(fVar1 = FUN_004dcd00((double)(param_1[1] - param_2[1])), fVar1 <= (float10)param_3)) &&
|
|
(fVar1 = FUN_004dcd00((double)(param_1[2] - param_2[2])), fVar1 <= (float10)param_3)) {
|
|
return 1;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
|
|
|
|
/* @004085bc file=? name=FUN_004085bc */
|
|
|
|
undefined4 FUN_004085bc(void)
|
|
|
|
{
|
|
return 1;
|
|
}
|
|
|
|
|
|
|
|
/* @004085c8 file=? name=FUN_004085c8 */
|
|
|
|
void __cdecl FUN_004085c8(float *param_1,float *param_2)
|
|
|
|
{
|
|
*param_1 = -*param_2;
|
|
param_1[1] = -param_2[1];
|
|
param_1[2] = -param_2[2];
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @004085ec file=? name=FUN_004085ec */
|
|
|
|
void __cdecl FUN_004085ec(float *param_1,float *param_2,float *param_3)
|
|
|
|
{
|
|
*param_1 = *param_2 + *param_3;
|
|
param_1[1] = param_2[1] + param_3[1];
|
|
param_1[2] = param_2[2] + param_3[2];
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @00408614 file=? name=FUN_00408614 */
|
|
|
|
void __cdecl FUN_00408614(float *param_1,float *param_2,float *param_3,float param_4)
|
|
|
|
{
|
|
*param_1 = *param_3 * param_4 + *param_2;
|
|
param_1[1] = param_3[1] * param_4 + param_2[1];
|
|
param_1[2] = param_3[2] * param_4 + param_2[2];
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @00408644 file=? name=FUN_00408644 */
|
|
|
|
void __cdecl FUN_00408644(float *param_1,float *param_2,float *param_3)
|
|
|
|
{
|
|
*param_1 = *param_2 - *param_3;
|
|
param_1[1] = param_2[1] - param_3[1];
|
|
param_1[2] = param_2[2] - param_3[2];
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @0040866c file=? name=FUN_0040866c */
|
|
|
|
float * __cdecl FUN_0040866c(float *param_1,float *param_2,float *param_3)
|
|
|
|
{
|
|
*param_1 = param_2[1] * param_3[2] - param_2[2] * param_3[1];
|
|
param_1[1] = param_2[2] * *param_3 - *param_2 * param_3[2];
|
|
param_1[2] = *param_2 * param_3[1] - param_2[1] * *param_3;
|
|
return param_1;
|
|
}
|
|
|
|
|
|
|
|
/* @004086ac file=? name=FUN_004086ac */
|
|
|
|
void __cdecl FUN_004086ac(float *param_1,float *param_2,float param_3)
|
|
|
|
{
|
|
*param_1 = *param_2 * param_3;
|
|
param_1[1] = param_2[1] * param_3;
|
|
param_1[2] = param_2[2] * param_3;
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @004086d0 file=? name=FUN_004086d0 */
|
|
|
|
void __cdecl FUN_004086d0(float *param_1,float *param_2,float *param_3)
|
|
|
|
{
|
|
*param_1 = *param_2 * *param_3;
|
|
param_1[1] = param_2[1] * param_3[1];
|
|
param_1[2] = param_2[2] * param_3[2];
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @004086f8 file=? name=FUN_004086f8 */
|
|
|
|
void __cdecl FUN_004086f8(float *param_1,float *param_2,float param_3)
|
|
|
|
{
|
|
*param_1 = *param_2 / param_3;
|
|
param_1[1] = param_2[1] / param_3;
|
|
param_1[2] = param_2[2] / param_3;
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @0040871c file=? name=FUN_0040871c */
|
|
|
|
void __cdecl FUN_0040871c(float *param_1,float *param_2,float *param_3)
|
|
|
|
{
|
|
*param_1 = *param_2 / *param_3;
|
|
param_1[1] = param_2[1] / param_3[1];
|
|
param_1[2] = param_2[2] / param_3[2];
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @00408744 file=? name=FUN_00408744 */
|
|
|
|
float * __cdecl FUN_00408744(float *param_1,float *param_2,float *param_3)
|
|
|
|
{
|
|
*param_1 = param_2[2] * param_3[2] + param_2[1] * param_3[1] + *param_2 * *param_3;
|
|
param_1[1] = param_2[2] * param_3[6] + param_2[1] * param_3[5] + *param_2 * param_3[4];
|
|
param_1[2] = param_2[2] * param_3[10] + param_2[1] * param_3[9] + *param_2 * param_3[8];
|
|
return param_1;
|
|
}
|
|
|
|
|
|
|
|
/* @0040879c file=? name=FUN_0040879c */
|
|
|
|
float * __cdecl FUN_0040879c(float *param_1,float *param_2,float *param_3)
|
|
|
|
{
|
|
*param_1 = param_2[2] * param_3[8] + param_2[1] * param_3[4] + *param_2 * *param_3;
|
|
param_1[1] = param_2[2] * param_3[9] + param_2[1] * param_3[5] + *param_2 * param_3[1];
|
|
param_1[2] = param_2[2] * param_3[10] + param_2[1] * param_3[6] + *param_2 * param_3[2];
|
|
return param_1;
|
|
}
|
|
|
|
|
|
|
|
/* @004087f4 file=? name=FUN_004087f4 */
|
|
|
|
float * __cdecl FUN_004087f4(float *param_1,float *param_2)
|
|
|
|
{
|
|
float fVar1;
|
|
float10 fVar2;
|
|
|
|
fVar2 = FUN_004dd138((double)(param_2[2] * param_2[2] +
|
|
param_2[1] * param_2[1] + *param_2 * *param_2));
|
|
fVar1 = (float)fVar2;
|
|
*param_1 = *param_2 / fVar1;
|
|
param_1[1] = param_2[1] / fVar1;
|
|
param_1[2] = param_2[2] / fVar1;
|
|
return param_1;
|
|
}
|
|
|
|
|
|
|
|
/* @00408848 file=? name=FUN_00408848 */
|
|
|
|
void __cdecl FUN_00408848(float *param_1,float *param_2,float param_3,float *param_4,float param_5)
|
|
|
|
{
|
|
*param_1 = param_5 * *param_4 + param_3 * *param_2;
|
|
param_1[1] = param_5 * param_4[1] + param_3 * param_2[1];
|
|
param_1[2] = param_5 * param_4[2] + param_3 * param_2[2];
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @00408888 file=? name=FUN_00408888 */
|
|
|
|
void __cdecl FUN_00408888(int *param_1,float *param_2)
|
|
|
|
{
|
|
int *piVar1;
|
|
int iVar2;
|
|
byte bVar3;
|
|
byte bVar4;
|
|
byte bVar5;
|
|
byte bVar6;
|
|
code *local_20;
|
|
undefined4 local_1c;
|
|
int *local_18;
|
|
float local_14;
|
|
int *local_10;
|
|
float local_c;
|
|
float local_8;
|
|
|
|
bVar6 = 0x3e;
|
|
local_8 = param_2[2];
|
|
bVar5 = 0x2c;
|
|
local_c = param_2[1];
|
|
bVar4 = 0x2c;
|
|
local_14 = *param_2;
|
|
bVar3 = 0x3c;
|
|
FUN_004db000(&local_20,4);
|
|
if (param_1 == (int *)0x0) {
|
|
iVar2 = 0;
|
|
}
|
|
else {
|
|
iVar2 = *param_1;
|
|
}
|
|
(*local_20)(iVar2,local_1c);
|
|
local_18 = FUN_004db92c(param_1,bVar3);
|
|
piVar1 = FUN_004db634(local_18,(float10)local_14);
|
|
local_10 = FUN_004db92c(piVar1,bVar4);
|
|
piVar1 = FUN_004db634(local_10,(float10)local_c);
|
|
piVar1 = FUN_004db92c(piVar1,bVar5);
|
|
piVar1 = FUN_004db634(piVar1,(float10)local_8);
|
|
FUN_004db92c(piVar1,bVar6);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @00408944 file=? name=FUN_00408944 */
|
|
|
|
void __cdecl FUN_00408944(char *param_1,float *param_2)
|
|
|
|
{
|
|
uint *puVar1;
|
|
float10 fVar2;
|
|
uint local_44 [2];
|
|
char *local_3c;
|
|
uint local_34 [2];
|
|
char *local_2c;
|
|
uint local_24 [2];
|
|
char *local_1c;
|
|
uint *local_14;
|
|
uint *local_10;
|
|
uint *local_c;
|
|
uint *local_8;
|
|
|
|
puVar1 = (uint *)FUN_00402298(0x10);
|
|
if (puVar1 == (uint *)0x0) {
|
|
local_8 = (uint *)0x0;
|
|
}
|
|
else {
|
|
local_8 = FUN_00402460(puVar1,param_1);
|
|
}
|
|
local_8[3] = local_8[3] + 1;
|
|
FUN_00402838(local_24,local_8,0,(char *)0x0);
|
|
puVar1 = (uint *)FUN_00402298(0x10);
|
|
if (puVar1 == (uint *)0x0) {
|
|
local_c = (uint *)0x0;
|
|
}
|
|
else {
|
|
local_c = FUN_00402460(puVar1,local_1c);
|
|
}
|
|
local_c[3] = local_c[3] + 1;
|
|
FUN_004024d8((int *)local_24,2);
|
|
fVar2 = (float10)FUN_004dd1cc(local_c[2]);
|
|
*param_2 = (float)fVar2;
|
|
puVar1 = local_c + 3;
|
|
*puVar1 = *puVar1 - 1;
|
|
if (*puVar1 == 0) {
|
|
FUN_004024d8((int *)local_c,3);
|
|
}
|
|
FUN_00402838(local_34,local_8,1,(char *)0x0);
|
|
puVar1 = (uint *)FUN_00402298(0x10);
|
|
if (puVar1 == (uint *)0x0) {
|
|
local_10 = (uint *)0x0;
|
|
}
|
|
else {
|
|
local_10 = FUN_00402460(puVar1,local_2c);
|
|
}
|
|
local_10[3] = local_10[3] + 1;
|
|
FUN_004024d8((int *)local_34,2);
|
|
fVar2 = (float10)FUN_004dd1cc(local_10[2]);
|
|
param_2[1] = (float)fVar2;
|
|
puVar1 = local_10 + 3;
|
|
*puVar1 = *puVar1 - 1;
|
|
if (*puVar1 == 0) {
|
|
FUN_004024d8((int *)local_10,3);
|
|
}
|
|
FUN_00402838(local_44,local_8,2,(char *)0x0);
|
|
puVar1 = (uint *)FUN_00402298(0x10);
|
|
if (puVar1 == (uint *)0x0) {
|
|
local_14 = (uint *)0x0;
|
|
}
|
|
else {
|
|
local_14 = FUN_00402460(puVar1,local_3c);
|
|
}
|
|
local_14[3] = local_14[3] + 1;
|
|
FUN_004024d8((int *)local_44,2);
|
|
fVar2 = (float10)FUN_004dd1cc(local_14[2]);
|
|
param_2[2] = (float)fVar2;
|
|
puVar1 = local_14 + 3;
|
|
*puVar1 = *puVar1 - 1;
|
|
if (*puVar1 == 0) {
|
|
FUN_004024d8((int *)local_14,3);
|
|
}
|
|
puVar1 = local_8 + 3;
|
|
*puVar1 = *puVar1 - 1;
|
|
if (*puVar1 == 0) {
|
|
FUN_004024d8((int *)local_8,3);
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @00408ad8 file=? name=FUN_00408ad8 */
|
|
|
|
void __cdecl FUN_00408ad8(undefined4 *param_1,undefined4 *param_2)
|
|
|
|
{
|
|
*param_1 = *param_2;
|
|
param_1[1] = param_2[2];
|
|
param_1[2] = param_2[1];
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @00408af4 file=? name=FUN_00408af4 */
|
|
|
|
void __cdecl FUN_00408af4(undefined4 *param_1,undefined4 *param_2)
|
|
|
|
{
|
|
*param_1 = *param_2;
|
|
param_1[1] = -(float)param_2[2];
|
|
param_1[2] = param_2[1];
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @00408b14 file=? name=FUN_00408b14 */
|
|
|
|
void __cdecl FUN_00408b14(undefined4 *param_1,undefined4 *param_2)
|
|
|
|
{
|
|
*param_1 = *param_2;
|
|
param_1[1] = param_2[1];
|
|
param_1[2] = -(float)param_2[2];
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @00408b34 file=? name=FUN_00408b34 */
|
|
|
|
void __cdecl FUN_00408b34(undefined4 *param_1,undefined4 *param_2)
|
|
|
|
{
|
|
*param_1 = *param_2;
|
|
param_1[1] = param_2[2];
|
|
param_1[2] = -(float)param_2[1];
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @00408b98 file=? name=FUN_00408b98 */
|
|
|
|
float * __cdecl FUN_00408b98(float *param_1,float *param_2,float *param_3)
|
|
|
|
{
|
|
*param_1 = param_2[2] * param_3[2] + param_2[1] * param_3[1] + *param_2 * *param_3 + param_3[3];
|
|
param_1[1] = param_2[2] * param_3[6] + param_2[1] * param_3[5] + *param_2 * param_3[4] +
|
|
param_3[7];
|
|
param_1[2] = param_2[2] * param_3[10] + param_2[1] * param_3[9] + *param_2 * param_3[8] +
|
|
param_3[0xb];
|
|
return param_1;
|
|
}
|
|
|
|
|
|
|
|
/* @00408bf8 file=? name=FUN_00408bf8 */
|
|
|
|
float * __cdecl FUN_00408bf8(float *param_1,float *param_2,float *param_3)
|
|
|
|
{
|
|
*param_1 = (((param_2[2] * param_3[8] + param_2[1] * param_3[4] + *param_2 * *param_3) -
|
|
param_3[3] * *param_3) - param_3[7] * param_3[4]) - param_3[0xb] * param_3[8];
|
|
param_1[1] = (((param_2[2] * param_3[9] + param_2[1] * param_3[5] + *param_2 * param_3[1]) -
|
|
param_3[3] * param_3[1]) - param_3[7] * param_3[5]) - param_3[0xb] * param_3[9];
|
|
param_1[2] = (((param_2[2] * param_3[10] + param_2[1] * param_3[6] + *param_2 * param_3[2]) -
|
|
param_3[3] * param_3[2]) - param_3[7] * param_3[6]) - param_3[0xb] * param_3[10];
|
|
return param_1;
|
|
}
|
|
|
|
|
|
|
|
/* @00408cbc file=? name=FUN_00408cbc */
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
undefined4 __cdecl FUN_00408cbc(float *param_1)
|
|
|
|
{
|
|
float10 fVar1;
|
|
|
|
fVar1 = FUN_004dcd00((double)(_DAT_00408d70 -
|
|
(param_1[2] * param_1[2] +
|
|
param_1[1] * param_1[1] + *param_1 * *param_1)));
|
|
if (((float10)_DAT_00408d74 < fVar1) &&
|
|
(fVar1 = FUN_004dcd00((double)(_DAT_00408d70 -
|
|
(param_1[2] * param_1[2] +
|
|
param_1[1] * param_1[1] + *param_1 * *param_1))),
|
|
(float10)_DAT_00408d74 < fVar1)) {
|
|
return 0;
|
|
}
|
|
return 1;
|
|
}
|
|
|
|
|
|
|
|
/* @00408d78 file=? name=FUN_00408d78 */
|
|
|
|
undefined4 __cdecl FUN_00408d78(int *param_1,int *param_2,float param_3)
|
|
|
|
{
|
|
float10 fVar1;
|
|
|
|
if ((*param_1 == *param_2) &&
|
|
(fVar1 = FUN_004dcd00((double)((float)param_1[1] - (float)param_2[1])),
|
|
fVar1 <= (float10)param_3)) {
|
|
return 1;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
|
|
|
|
/* @00408dd4 file=? name=FUN_00408dd4 */
|
|
|
|
undefined4 * __cdecl FUN_00408dd4(undefined4 *param_1,undefined4 *param_2,int param_3,float param_4)
|
|
|
|
{
|
|
*param_1 = *param_2;
|
|
FUN_004081e0((float *)(param_1 + 1),(float *)(param_2 + 1),(float *)(param_3 + 4),param_4);
|
|
return param_1;
|
|
}
|
|
|
|
|
|
|
|
/* @00408e04 file=? name=FUN_00408e04 */
|
|
|
|
int * __cdecl FUN_00408e04(int *param_1,int *param_2)
|
|
|
|
{
|
|
int iVar1;
|
|
int *piVar2;
|
|
|
|
piVar2 = FUN_00408270(param_1,(float *)(param_2 + 1));
|
|
FUN_004dbb24(piVar2,s_about_004e0fb4,(char *)0x0);
|
|
iVar1 = *param_2;
|
|
if (iVar1 == 0) {
|
|
FUN_004dbb24(param_1,s_X_Axis_004e0fbc,(char *)0x0);
|
|
}
|
|
else if (iVar1 == 1) {
|
|
FUN_004dbb24(param_1,s_Y_Axis_004e0fc3,(char *)0x0);
|
|
}
|
|
else if (iVar1 == 2) {
|
|
FUN_004dbb24(param_1,s_Z_Axis_004e0fca,(char *)0x0);
|
|
}
|
|
return param_1;
|
|
}
|
|
|
|
|
|
|
|
/* @00408e78 file=? name=FUN_00408e78 */
|
|
|
|
bool __cdecl FUN_00408e78(uint *param_1)
|
|
|
|
{
|
|
return *param_1 < 3;
|
|
}
|
|
|
|
|
|
|
|
/* @00408e90 file=? name=FUN_00408e90 */
|
|
|
|
void __cdecl FUN_00408e90(undefined4 *param_1,undefined4 *param_2)
|
|
|
|
{
|
|
*param_1 = *param_2;
|
|
param_1[1] = param_2[1];
|
|
param_1[2] = param_2[2];
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @00408ec0 file=? name=FUN_00408ec0 */
|
|
|
|
float * __cdecl FUN_00408ec0(float *param_1,float *param_2)
|
|
|
|
{
|
|
float local_34 [12];
|
|
|
|
FUN_0040aadc(local_34);
|
|
FUN_0040ad2c(local_34,param_2);
|
|
FUN_00408f7c(param_1,local_34);
|
|
return param_1;
|
|
}
|
|
|
|
|
|
|
|
/* @00408ef8 file=? name=FUN_00408ef8 */
|
|
|
|
void __cdecl FUN_00408ef8(int *param_1,int *param_2)
|
|
|
|
{
|
|
int iVar1;
|
|
|
|
*param_1 = 0;
|
|
param_1[1] = 0;
|
|
param_1[2] = 0;
|
|
iVar1 = *param_2;
|
|
if (iVar1 == 0) {
|
|
*param_1 = param_2[1];
|
|
}
|
|
else if (iVar1 == 1) {
|
|
param_1[1] = param_2[1];
|
|
}
|
|
else if (iVar1 == 2) {
|
|
param_1[2] = param_2[1];
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @00408f44 file=? name=FUN_00408f44 */
|
|
|
|
void __cdecl FUN_00408f44(float *param_1,float *param_2)
|
|
|
|
{
|
|
float local_34 [12];
|
|
|
|
FUN_0040aadc(local_34);
|
|
FUN_0040adec(local_34,param_2);
|
|
FUN_00408f7c(param_1,local_34);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @00408f7c file=? name=FUN_00408f7c */
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
float * __cdecl FUN_00408f7c(float *param_1,float *param_2)
|
|
|
|
{
|
|
float10 fVar1;
|
|
float local_1c;
|
|
float local_18;
|
|
float local_14;
|
|
float local_10;
|
|
float local_c;
|
|
float local_8;
|
|
|
|
local_14 = -param_2[8];
|
|
fVar1 = FUN_004dcd00((double)(local_14 - _DAT_00409148));
|
|
if ((float10)_DAT_0040914c < fVar1) {
|
|
fVar1 = FUN_004dcd00((double)(local_14 - _DAT_00409150));
|
|
if ((float10)_DAT_0040914c < fVar1) {
|
|
fVar1 = FUN_004dd138((double)(_DAT_00409148 - local_14 * local_14));
|
|
local_10 = (float)fVar1;
|
|
local_c = param_2[9] / local_10;
|
|
local_8 = param_2[10] / local_10;
|
|
local_1c = param_2[4] / local_10;
|
|
local_18 = *param_2 / local_10;
|
|
fVar1 = FUN_004dcd00((double)((local_c * local_14 * local_18 - local_8 * local_1c) -
|
|
param_2[1]));
|
|
if ((float10)_DAT_0040914c < fVar1) {
|
|
local_14 = -local_14;
|
|
local_c = -local_c;
|
|
local_8 = -local_8;
|
|
local_1c = -local_1c;
|
|
local_18 = -local_18;
|
|
}
|
|
}
|
|
else {
|
|
local_10 = 0.0;
|
|
local_1c = 0.0;
|
|
local_18 = 1.0;
|
|
local_c = -param_2[1];
|
|
local_8 = -param_2[2];
|
|
}
|
|
}
|
|
else {
|
|
local_10 = 0.0;
|
|
local_1c = 0.0;
|
|
local_18 = 1.0;
|
|
local_c = param_2[1];
|
|
local_8 = param_2[2];
|
|
}
|
|
fVar1 = FUN_004dc8ec((double)local_c,SUB84((double)local_8,0),
|
|
(uint)((ulonglong)(double)local_8 >> 0x20));
|
|
*param_1 = (float)fVar1;
|
|
fVar1 = FUN_004dc8ec((double)local_14,SUB84((double)local_10,0),
|
|
(uint)((ulonglong)(double)local_10 >> 0x20));
|
|
param_1[1] = (float)fVar1;
|
|
fVar1 = FUN_004dc8ec((double)local_1c,SUB84((double)local_18,0),
|
|
(uint)((ulonglong)(double)local_18 >> 0x20));
|
|
param_1[2] = (float)fVar1;
|
|
return param_1;
|
|
}
|
|
|
|
|
|
|
|
/* @004091f4 file=? name=FUN_004091f4 */
|
|
|
|
undefined4 __cdecl FUN_004091f4(float *param_1,float *param_2,float param_3)
|
|
|
|
{
|
|
float10 fVar1;
|
|
|
|
fVar1 = FUN_004dcd00((double)(*param_1 - *param_2));
|
|
if (((fVar1 <= (float10)param_3) &&
|
|
(fVar1 = FUN_004dcd00((double)(param_1[1] - param_2[1])), fVar1 <= (float10)param_3)) &&
|
|
(fVar1 = FUN_004dcd00((double)(param_1[2] - param_2[2])), fVar1 <= (float10)param_3)) {
|
|
return 1;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
|
|
|
|
/* @004092b4 file=? name=FUN_004092b4 */
|
|
|
|
void __cdecl FUN_004092b4(float *param_1,float *param_2,float *param_3)
|
|
|
|
{
|
|
*param_1 = *param_2 + *param_3;
|
|
param_1[1] = param_2[1] + param_3[1];
|
|
param_1[2] = param_2[2] + param_3[2];
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @004092fc file=? name=FUN_004092fc */
|
|
|
|
void __cdecl FUN_004092fc(float *param_1,float *param_2,float param_3)
|
|
|
|
{
|
|
*param_1 = *param_2 * param_3;
|
|
param_1[1] = param_2[1] * param_3;
|
|
param_1[2] = param_2[2] * param_3;
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @00409340 file=? name=FUN_00409340 */
|
|
|
|
void __cdecl FUN_00409340(float *param_1,float *param_2,float *param_3,float param_4)
|
|
|
|
{
|
|
*param_1 = *param_3 * param_4 + *param_2;
|
|
param_1[1] = param_3[1] * param_4 + param_2[1];
|
|
param_1[2] = param_3[2] * param_4 + param_2[2];
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @00409390 file=? name=FUN_00409390 */
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
void __cdecl FUN_00409390(float *param_1,float *param_2,float *param_3,float param_4)
|
|
|
|
{
|
|
*param_1 = *param_3 * param_4 + (_DAT_00409400 - param_4) * *param_2;
|
|
param_1[1] = param_3[1] * param_4 + (_DAT_00409400 - param_4) * param_2[1];
|
|
param_1[2] = param_3[2] * param_4 + (_DAT_00409400 - param_4) * param_2[2];
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @0040942c file=? name=FUN_0040942c */
|
|
|
|
void __cdecl FUN_0040942c(int *param_1,float *param_2)
|
|
|
|
{
|
|
int *piVar1;
|
|
byte bVar2;
|
|
float *pfVar3;
|
|
byte bVar4;
|
|
float *pfVar5;
|
|
byte bVar6;
|
|
|
|
bVar6 = 0x3e;
|
|
pfVar5 = param_2 + 2;
|
|
pfVar3 = param_2 + 1;
|
|
bVar4 = 0x2c;
|
|
bVar2 = 0x2c;
|
|
piVar1 = FUN_004db92c(param_1,0x3c);
|
|
piVar1 = FUN_00408270(piVar1,param_2);
|
|
piVar1 = FUN_004db92c(piVar1,bVar2);
|
|
piVar1 = FUN_00408270(piVar1,pfVar3);
|
|
piVar1 = FUN_004db92c(piVar1,bVar4);
|
|
piVar1 = FUN_00408270(piVar1,pfVar5);
|
|
FUN_004db92c(piVar1,bVar6);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @0040948c file=? name=FUN_0040948c */
|
|
|
|
undefined4 FUN_0040948c(void)
|
|
|
|
{
|
|
return 1;
|
|
}
|
|
|
|
|
|
|
|
/* @00409498 file=? name=FUN_00409498 */
|
|
|
|
void __cdecl FUN_00409498(undefined4 *param_1,undefined4 *param_2)
|
|
|
|
{
|
|
param_1[1] = param_2[1];
|
|
*param_1 = *param_2;
|
|
param_1[2] = param_2[2];
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @004094c8 file=? name=FUN_004094c8 */
|
|
|
|
float * __cdecl FUN_004094c8(float *param_1,float *param_2)
|
|
|
|
{
|
|
float local_34 [12];
|
|
|
|
FUN_0040aadc(local_34);
|
|
FUN_0040ac6c(local_34,param_2);
|
|
FUN_00409584(param_1,local_34);
|
|
return param_1;
|
|
}
|
|
|
|
|
|
|
|
/* @00409500 file=? name=FUN_00409500 */
|
|
|
|
void __cdecl FUN_00409500(int *param_1,int *param_2)
|
|
|
|
{
|
|
int iVar1;
|
|
|
|
param_1[1] = 0;
|
|
*param_1 = 0;
|
|
param_1[2] = 0;
|
|
iVar1 = *param_2;
|
|
if (iVar1 == 0) {
|
|
param_1[1] = param_2[1];
|
|
}
|
|
else if (iVar1 == 1) {
|
|
*param_1 = param_2[1];
|
|
}
|
|
else if (iVar1 == 2) {
|
|
param_1[2] = param_2[1];
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @0040954c file=? name=FUN_0040954c */
|
|
|
|
void __cdecl FUN_0040954c(float *param_1,float *param_2)
|
|
|
|
{
|
|
float local_34 [12];
|
|
|
|
FUN_0040aadc(local_34);
|
|
FUN_0040adec(local_34,param_2);
|
|
FUN_00409584(param_1,local_34);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @00409584 file=? name=FUN_00409584 */
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
float * __cdecl FUN_00409584(float *param_1,float *param_2)
|
|
|
|
{
|
|
float10 fVar1;
|
|
float local_1c;
|
|
float local_18;
|
|
float local_14;
|
|
float local_10;
|
|
float local_c;
|
|
float local_8;
|
|
|
|
local_c = -param_2[6];
|
|
fVar1 = FUN_004dcd00((double)(local_c - _DAT_00409748));
|
|
if ((float10)_DAT_0040974c < fVar1) {
|
|
fVar1 = FUN_004dcd00((double)(local_c - _DAT_00409750));
|
|
if ((float10)_DAT_0040974c < fVar1) {
|
|
fVar1 = FUN_004dd138((double)(_DAT_00409748 - local_c * local_c));
|
|
local_8 = (float)fVar1;
|
|
local_14 = param_2[2] / local_8;
|
|
local_10 = param_2[10] / local_8;
|
|
local_1c = param_2[4] / local_8;
|
|
local_18 = param_2[5] / local_8;
|
|
fVar1 = FUN_004dcd00((double)((local_c * local_14 * local_1c + local_10 * local_18) - *param_2
|
|
));
|
|
if ((float10)_DAT_0040974c < fVar1) {
|
|
local_c = -local_c;
|
|
local_14 = -local_14;
|
|
local_10 = -local_10;
|
|
local_1c = -local_1c;
|
|
local_18 = -local_18;
|
|
}
|
|
}
|
|
else {
|
|
local_8 = 0.0;
|
|
local_1c = 0.0;
|
|
local_18 = 1.0;
|
|
local_14 = param_2[8];
|
|
local_10 = *param_2;
|
|
}
|
|
}
|
|
else {
|
|
local_8 = 0.0;
|
|
local_1c = 0.0;
|
|
local_18 = 1.0;
|
|
local_14 = param_2[1];
|
|
local_10 = *param_2;
|
|
}
|
|
fVar1 = FUN_004dc8ec((double)local_c,SUB84((double)local_8,0),
|
|
(uint)((ulonglong)(double)local_8 >> 0x20));
|
|
param_1[1] = (float)fVar1;
|
|
fVar1 = FUN_004dc8ec((double)local_14,SUB84((double)local_10,0),
|
|
(uint)((ulonglong)(double)local_10 >> 0x20));
|
|
*param_1 = (float)fVar1;
|
|
fVar1 = FUN_004dc8ec((double)local_1c,SUB84((double)local_18,0),
|
|
(uint)((ulonglong)(double)local_18 >> 0x20));
|
|
param_1[2] = (float)fVar1;
|
|
return param_1;
|
|
}
|
|
|
|
|
|
|
|
/* @004097f4 file=? name=FUN_004097f4 */
|
|
|
|
undefined4 __cdecl FUN_004097f4(float *param_1,float *param_2,float param_3)
|
|
|
|
{
|
|
float10 fVar1;
|
|
|
|
fVar1 = FUN_004dcd00((double)(param_1[1] - param_2[1]));
|
|
if (((fVar1 <= (float10)param_3) &&
|
|
(fVar1 = FUN_004dcd00((double)(*param_1 - *param_2)), fVar1 <= (float10)param_3)) &&
|
|
(fVar1 = FUN_004dcd00((double)(param_1[2] - param_2[2])), fVar1 <= (float10)param_3)) {
|
|
return 1;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
|
|
|
|
/* @004098b4 file=? name=FUN_004098b4 */
|
|
|
|
float * __cdecl FUN_004098b4(float *param_1)
|
|
|
|
{
|
|
FUN_0040817c(param_1 + 1);
|
|
FUN_0040817c(param_1);
|
|
FUN_0040817c(param_1 + 2);
|
|
return param_1;
|
|
}
|
|
|
|
|
|
|
|
/* @004098dc file=? name=FUN_004098dc */
|
|
|
|
void __cdecl FUN_004098dc(int *param_1,float *param_2)
|
|
|
|
{
|
|
int *piVar1;
|
|
byte bVar2;
|
|
float *pfVar3;
|
|
byte bVar4;
|
|
float *pfVar5;
|
|
byte bVar6;
|
|
|
|
bVar6 = 0x3e;
|
|
pfVar5 = param_2 + 2;
|
|
pfVar3 = param_2 + 1;
|
|
bVar4 = 0x2c;
|
|
bVar2 = 0x2c;
|
|
piVar1 = FUN_004db92c(param_1,0x3c);
|
|
piVar1 = FUN_00408270(piVar1,param_2);
|
|
piVar1 = FUN_004db92c(piVar1,bVar2);
|
|
piVar1 = FUN_00408270(piVar1,pfVar3);
|
|
piVar1 = FUN_004db92c(piVar1,bVar4);
|
|
piVar1 = FUN_00408270(piVar1,pfVar5);
|
|
FUN_004db92c(piVar1,bVar6);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @0040993c file=? name=FUN_0040993c */
|
|
|
|
undefined4 FUN_0040993c(void)
|
|
|
|
{
|
|
return 1;
|
|
}
|
|
|
|
|
|
|
|
/* @00409948 file=? name=FUN_00409948 */
|
|
|
|
void __cdecl
|
|
FUN_00409948(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
|
|
undefined4 param_5)
|
|
|
|
{
|
|
*param_1 = param_2;
|
|
param_1[1] = param_3;
|
|
param_1[2] = param_4;
|
|
param_1[3] = param_5;
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @00409968 file=? name=FUN_00409968 */
|
|
|
|
void __cdecl FUN_00409968(undefined4 *param_1,undefined4 *param_2)
|
|
|
|
{
|
|
*param_1 = *param_2;
|
|
param_1[1] = param_2[1];
|
|
param_1[2] = param_2[2];
|
|
param_1[3] = param_2[3];
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @0040998c file=? name=FUN_0040998c */
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
float * __cdecl FUN_0040998c(float *param_1,int *param_2)
|
|
|
|
{
|
|
int iVar1;
|
|
float local_14;
|
|
float local_10;
|
|
float local_c;
|
|
float local_8;
|
|
|
|
local_c = (float)param_2[1] * _DAT_004099fc;
|
|
local_8 = local_c;
|
|
FUN_00408328(&local_14,&local_8);
|
|
param_1[3] = local_10;
|
|
*param_1 = 0.0;
|
|
param_1[1] = 0.0;
|
|
param_1[2] = 0.0;
|
|
iVar1 = *param_2;
|
|
if (iVar1 == 0) {
|
|
*param_1 = local_14;
|
|
}
|
|
else if (iVar1 == 1) {
|
|
param_1[1] = local_14;
|
|
}
|
|
else if (iVar1 == 2) {
|
|
param_1[2] = local_14;
|
|
}
|
|
return param_1;
|
|
}
|
|
|
|
|
|
|
|
/* @00409a00 file=? name=FUN_00409a00 */
|
|
|
|
float * __cdecl FUN_00409a00(float *param_1,float *param_2)
|
|
|
|
{
|
|
float local_34 [12];
|
|
|
|
FUN_0040aadc(local_34);
|
|
FUN_0040ac6c(local_34,param_2);
|
|
FUN_00409a70(param_1,local_34);
|
|
return param_1;
|
|
}
|
|
|
|
|
|
|
|
/* @00409a38 file=? name=FUN_00409a38 */
|
|
|
|
float * __cdecl FUN_00409a38(float *param_1,float *param_2)
|
|
|
|
{
|
|
float local_34 [12];
|
|
|
|
FUN_0040aadc(local_34);
|
|
FUN_0040ad2c(local_34,param_2);
|
|
FUN_00409a70(param_1,local_34);
|
|
return param_1;
|
|
}
|
|
|
|
|
|
|
|
/* @00409a70 file=? name=FUN_00409a70 */
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
float * __cdecl FUN_00409a70(float *param_1,float *param_2)
|
|
|
|
{
|
|
float fVar1;
|
|
float10 fVar2;
|
|
|
|
param_1[3] = (_DAT_00409c44 + *param_2 + param_2[5] + param_2[10]) * _DAT_00409c48;
|
|
fVar2 = FUN_004dcd00((double)param_1[3]);
|
|
if ((float10)_DAT_00409c4c < fVar2) {
|
|
fVar2 = FUN_004dd138((double)param_1[3]);
|
|
param_1[3] = (float)fVar2;
|
|
*param_1 = ((param_2[9] - param_2[6]) * _DAT_00409c48) / param_1[3];
|
|
param_1[1] = ((param_2[2] - param_2[8]) * _DAT_00409c48) / param_1[3];
|
|
param_1[2] = ((param_2[4] - param_2[1]) * _DAT_00409c48) / param_1[3];
|
|
}
|
|
else {
|
|
if (param_1[3] < _DAT_00409c50) {
|
|
param_1[3] = 0.0;
|
|
}
|
|
fVar1 = (_DAT_00409c44 + *param_2) * _DAT_00409c54 - param_1[3];
|
|
if (fVar1 < _DAT_00409c50) {
|
|
fVar1 = _DAT_00409c50;
|
|
}
|
|
fVar2 = FUN_004dd138((double)fVar1);
|
|
*param_1 = (float)fVar2;
|
|
fVar1 = (_DAT_00409c44 + param_2[5]) * _DAT_00409c54 - param_1[3];
|
|
if (fVar1 < _DAT_00409c50) {
|
|
fVar1 = _DAT_00409c50;
|
|
}
|
|
fVar2 = FUN_004dd138((double)fVar1);
|
|
param_1[1] = (float)fVar2;
|
|
fVar1 = (_DAT_00409c44 + param_2[10]) * _DAT_00409c54 - param_1[3];
|
|
if (fVar1 < _DAT_00409c50) {
|
|
fVar1 = _DAT_00409c50;
|
|
}
|
|
fVar2 = FUN_004dd138((double)fVar1);
|
|
param_1[2] = (float)fVar2;
|
|
fVar2 = FUN_004dd138((double)param_1[3]);
|
|
param_1[3] = (float)fVar2;
|
|
if (param_2[4] < param_2[1]) {
|
|
param_1[2] = -param_1[2];
|
|
}
|
|
if (param_2[2] < param_2[8]) {
|
|
param_1[1] = -param_1[1];
|
|
}
|
|
if (param_2[9] < param_2[6]) {
|
|
*param_1 = -*param_1;
|
|
}
|
|
}
|
|
return param_1;
|
|
}
|
|
|
|
|
|
|
|
/* @00409d9c file=? name=FUN_00409d9c */
|
|
|
|
float * __cdecl FUN_00409d9c(float *param_1,float *param_2,float *param_3)
|
|
|
|
{
|
|
*param_1 = (param_2[1] * param_3[2] + param_3[3] * *param_2 + param_2[3] * *param_3) -
|
|
param_2[2] * param_3[1];
|
|
param_1[1] = (param_2[2] * *param_3 + param_3[3] * param_2[1] + param_2[3] * param_3[1]) -
|
|
*param_2 * param_3[2];
|
|
param_1[2] = (*param_2 * param_3[1] + param_3[3] * param_2[2] + param_2[3] * param_3[2]) -
|
|
param_2[1] * *param_3;
|
|
param_1[3] = ((param_2[3] * param_3[3] - *param_2 * *param_3) - param_2[1] * param_3[1]) -
|
|
param_2[2] * param_3[2];
|
|
return param_1;
|
|
}
|
|
|
|
|
|
|
|
/* @00409e28 file=? name=FUN_00409e28 */
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
float * __cdecl FUN_00409e28(float *param_1,float *param_2,float param_3)
|
|
|
|
{
|
|
float10 fVar1;
|
|
float local_20;
|
|
float local_1c;
|
|
float local_18;
|
|
float local_14;
|
|
float local_10;
|
|
float local_c;
|
|
float local_8;
|
|
|
|
fVar1 = FUN_004dd138((double)(param_2[2] * param_2[2] +
|
|
param_2[1] * param_2[1] + *param_2 * *param_2));
|
|
local_c = (float)fVar1;
|
|
local_8 = local_c;
|
|
fVar1 = FUN_004dcd00((double)local_c);
|
|
if ((float10)_DAT_00409f1c < fVar1) {
|
|
local_18 = param_2[3];
|
|
local_1c = local_8;
|
|
local_14 = local_8;
|
|
local_10 = local_18;
|
|
fVar1 = FUN_004dc8ec((double)local_8,SUB84((double)local_18,0),
|
|
(uint)((ulonglong)(double)local_18 >> 0x20));
|
|
local_20 = param_3 * (float)fVar1;
|
|
FUN_00408328(&local_14,&local_20);
|
|
param_1[3] = local_10;
|
|
local_14 = local_14 / local_8;
|
|
*param_1 = *param_2 * local_14;
|
|
param_1[1] = param_2[1] * local_14;
|
|
param_1[2] = param_2[2] * local_14;
|
|
}
|
|
else {
|
|
FUN_00409968(param_1,&DAT_004e0fa4);
|
|
}
|
|
return param_1;
|
|
}
|
|
|
|
|
|
|
|
/* @00409f58 file=? name=FUN_00409f58 */
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
void __cdecl FUN_00409f58(float *param_1,float *param_2,float *param_3)
|
|
|
|
{
|
|
float10 fVar1;
|
|
float local_2c [4];
|
|
float local_1c;
|
|
float local_18;
|
|
float local_14;
|
|
undefined4 local_10;
|
|
float local_c;
|
|
float local_8;
|
|
|
|
fVar1 = FUN_004dd138((double)(param_3[2] * param_3[2] +
|
|
param_3[1] * param_3[1] + *param_3 * *param_3));
|
|
local_c = (float)fVar1;
|
|
local_8 = local_c;
|
|
fVar1 = FUN_004dcd00((double)local_c);
|
|
if ((float10)_DAT_0040a040 < fVar1) {
|
|
fVar1 = FUN_00408110(local_8);
|
|
local_1c = (float)(fVar1 * (float10)_DAT_0040a044);
|
|
local_18 = local_1c;
|
|
FUN_00408328(&local_14,&local_1c);
|
|
local_8 = local_14 / local_8;
|
|
FUN_00409948(local_2c,*param_3 * local_8,param_3[1] * local_8,param_3[2] * local_8,local_10);
|
|
FUN_00409d9c(param_1,param_2,local_2c);
|
|
}
|
|
else {
|
|
FUN_00409968(param_1,param_2);
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @0040a048 file=? name=FUN_0040a048 */
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
void __cdecl FUN_0040a048(float *param_1,float *param_2,float *param_3,float param_4)
|
|
|
|
{
|
|
float10 fVar1;
|
|
float local_2c [4];
|
|
float local_1c;
|
|
float local_18;
|
|
float local_14;
|
|
undefined4 local_10;
|
|
float local_c;
|
|
float local_8;
|
|
|
|
fVar1 = FUN_004dd138((double)(param_3[2] * param_3[2] +
|
|
param_3[1] * param_3[1] + *param_3 * *param_3));
|
|
local_c = (float)fVar1;
|
|
local_8 = local_c;
|
|
fVar1 = FUN_004dcd00((double)local_c);
|
|
if ((float10)_DAT_0040a130 < fVar1) {
|
|
local_8 = param_4 * local_8;
|
|
local_1c = _DAT_0040a134 * local_8;
|
|
local_18 = local_1c;
|
|
FUN_00408328(&local_14,&local_1c);
|
|
local_8 = local_14 / local_8;
|
|
FUN_00409948(local_2c,*param_3 * local_8,param_3[1] * local_8,param_3[2] * local_8,local_10);
|
|
FUN_00409d9c(param_1,param_2,local_2c);
|
|
}
|
|
else {
|
|
FUN_00409968(param_1,param_2);
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @0040a138 file=? name=FUN_0040a138 */
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
float * __cdecl FUN_0040a138(float *param_1)
|
|
|
|
{
|
|
float fVar1;
|
|
float10 fVar2;
|
|
|
|
fVar1 = param_1[2] * param_1[2] + param_1[1] * param_1[1] + *param_1 * *param_1;
|
|
if (_DAT_0040a1e4 < fVar1) {
|
|
fVar2 = FUN_004dd138((double)fVar1);
|
|
fVar1 = (float)fVar2;
|
|
*param_1 = *param_1 / fVar1;
|
|
param_1[1] = param_1[1] / fVar1;
|
|
param_1[2] = param_1[2] / fVar1;
|
|
param_1[3] = 0.0;
|
|
}
|
|
else {
|
|
fVar2 = FUN_004dd138((double)(_DAT_0040a1e4 - fVar1));
|
|
if (param_1[3] < _DAT_0040a1e8) {
|
|
*param_1 = -*param_1;
|
|
param_1[1] = -param_1[1];
|
|
param_1[2] = -param_1[2];
|
|
}
|
|
param_1[3] = (float)fVar2;
|
|
}
|
|
return param_1;
|
|
}
|
|
|
|
|
|
|
|
/* @0040a22c file=? name=FUN_0040a22c */
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
float * __cdecl FUN_0040a22c(float *param_1,float *param_2,float *param_3)
|
|
|
|
{
|
|
float fVar1;
|
|
int iVar2;
|
|
float *pfVar3;
|
|
float10 fVar4;
|
|
float local_3c [3];
|
|
float local_30 [4];
|
|
float local_20;
|
|
float local_1c;
|
|
int local_18;
|
|
float local_14;
|
|
float local_10;
|
|
float local_c;
|
|
float local_8;
|
|
|
|
local_10 = param_3[2] * param_2[2] + param_3[1] * param_2[1] + *param_3 * *param_2;
|
|
local_8 = local_10;
|
|
fVar4 = FUN_004dcd00((double)(local_10 - _DAT_0040a484));
|
|
if ((float10)_DAT_0040a488 < fVar4) {
|
|
local_14 = local_8;
|
|
fVar4 = FUN_004dcd00((double)(local_8 - _DAT_0040a48c));
|
|
if ((float10)_DAT_0040a488 < fVar4) {
|
|
FUN_0040866c(local_30,param_3,param_2);
|
|
fVar4 = FUN_004dd138((double)(local_30[2] * local_30[2] +
|
|
local_30[1] * local_30[1] + local_30[0] * local_30[0]));
|
|
local_30[3] = (float)fVar4;
|
|
local_c = local_30[3];
|
|
FUN_004086f8(local_30,local_30,local_30[3]);
|
|
fVar4 = FUN_004dd138((double)((_DAT_0040a484 - local_8) * _DAT_0040a494));
|
|
local_c = (float)fVar4;
|
|
*param_1 = local_30[0] * local_c;
|
|
param_1[1] = local_30[1] * local_c;
|
|
param_1[2] = local_30[2] * local_c;
|
|
fVar4 = FUN_004dd138((double)((_DAT_0040a484 + local_8) * _DAT_0040a494));
|
|
param_1[3] = (float)fVar4;
|
|
}
|
|
else {
|
|
local_18 = 0;
|
|
local_1c = 2.0;
|
|
iVar2 = 0;
|
|
pfVar3 = param_3;
|
|
do {
|
|
if (*pfVar3 <= _DAT_0040a490) {
|
|
fVar1 = -*pfVar3;
|
|
}
|
|
else {
|
|
fVar1 = *pfVar3;
|
|
}
|
|
if (fVar1 < local_1c) {
|
|
local_18 = iVar2;
|
|
if (*pfVar3 <= _DAT_0040a490) {
|
|
local_1c = -*pfVar3;
|
|
}
|
|
else {
|
|
local_1c = *pfVar3;
|
|
}
|
|
}
|
|
iVar2 = iVar2 + 1;
|
|
pfVar3 = pfVar3 + 1;
|
|
} while (iVar2 < 3);
|
|
local_30[0] = 0.0;
|
|
local_30[1] = 0.0;
|
|
local_30[2] = 0.0;
|
|
local_30[local_18] = 1.0;
|
|
local_20 = local_1c;
|
|
fVar4 = FUN_004dcd00((double)local_1c);
|
|
if ((float10)_DAT_0040a488 < fVar4) {
|
|
FUN_004086ac(local_3c,param_3,
|
|
param_3[2] * local_30[2] + param_3[1] * local_30[1] + *param_3 * local_30[0]);
|
|
FUN_00408644(local_30,local_30,local_3c);
|
|
FUN_004087f4(local_30,local_30);
|
|
}
|
|
*param_1 = local_30[0];
|
|
param_1[1] = local_30[1];
|
|
param_1[2] = local_30[2];
|
|
param_1[3] = 0.0;
|
|
}
|
|
}
|
|
else {
|
|
*param_1 = 0.0;
|
|
param_1[1] = 0.0;
|
|
param_1[2] = 0.0;
|
|
param_1[3] = 1.0;
|
|
}
|
|
return param_1;
|
|
}
|
|
|
|
|
|
|
|
/* @0040a4d8 file=? name=FUN_0040a4d8 */
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
float * __cdecl FUN_0040a4d8(float *param_1,float *param_2,float *param_3,float param_4)
|
|
|
|
{
|
|
float fVar1;
|
|
float10 fVar2;
|
|
|
|
if (param_2[3] * param_3[3] +
|
|
param_2[2] * param_3[2] + param_2[1] * param_3[1] + *param_2 * *param_3 < _DAT_0040a670) {
|
|
*param_1 = -*param_3 * param_4 + (_DAT_0040a674 - param_4) * *param_2;
|
|
param_1[1] = -param_3[1] * param_4 + (_DAT_0040a674 - param_4) * param_2[1];
|
|
param_1[2] = -param_3[2] * param_4 + (_DAT_0040a674 - param_4) * param_2[2];
|
|
param_1[3] = -param_3[3] * param_4 + (_DAT_0040a674 - param_4) * param_2[3];
|
|
}
|
|
else {
|
|
*param_1 = *param_3 * param_4 + (_DAT_0040a674 - param_4) * *param_2;
|
|
param_1[1] = param_3[1] * param_4 + (_DAT_0040a674 - param_4) * param_2[1];
|
|
param_1[2] = param_3[2] * param_4 + (_DAT_0040a674 - param_4) * param_2[2];
|
|
param_1[3] = param_3[3] * param_4 + (_DAT_0040a674 - param_4) * param_2[3];
|
|
}
|
|
fVar1 = param_1[3] * param_1[3] +
|
|
param_1[2] * param_1[2] + param_1[1] * param_1[1] + *param_1 * *param_1;
|
|
fVar2 = FUN_004dcd00((double)fVar1);
|
|
if ((float10)_DAT_0040a678 < fVar2) {
|
|
fVar2 = FUN_004dd138((double)fVar1);
|
|
fVar1 = (float)((float10)_DAT_0040a674 / fVar2);
|
|
*param_1 = fVar1 * *param_1;
|
|
param_1[1] = fVar1 * param_1[1];
|
|
param_1[2] = fVar1 * param_1[2];
|
|
param_1[3] = fVar1 * param_1[3];
|
|
}
|
|
else {
|
|
*param_1 = 0.0;
|
|
param_1[1] = 0.0;
|
|
param_1[2] = 0.0;
|
|
param_1[3] = 1.0;
|
|
}
|
|
return param_1;
|
|
}
|
|
|
|
|
|
|
|
/* @0040a738 file=? name=FUN_0040a738 */
|
|
|
|
undefined4 FUN_0040a738(void)
|
|
|
|
{
|
|
return 1;
|
|
}
|
|
|
|
|
|
|
|
/* @0040a7c0 file=? name=FUN_0040a7c0 */
|
|
|
|
undefined4 * __cdecl FUN_0040a7c0(undefined4 *param_1,undefined4 *param_2)
|
|
|
|
{
|
|
FUN_00408440(param_1 + 3,param_2 + 3);
|
|
FUN_00408440(param_1,param_2);
|
|
return param_1;
|
|
}
|
|
|
|
|
|
|
|
/* @0040a7f4 file=? name=FUN_0040a7f4 */
|
|
|
|
undefined4 * __cdecl FUN_0040a7f4(undefined4 *param_1,undefined4 *param_2)
|
|
|
|
{
|
|
FUN_00408440(param_1 + 3,param_2 + 3);
|
|
FUN_00408440(param_1,param_2);
|
|
return param_1;
|
|
}
|
|
|
|
|
|
|
|
/* @0040a824 file=? name=FUN_0040a824 */
|
|
|
|
bool __cdecl FUN_0040a824(byte *param_1,byte *param_2)
|
|
|
|
{
|
|
int iVar1;
|
|
|
|
iVar1 = FUN_004d4b14(param_1,param_2,0x18);
|
|
return iVar1 == 0;
|
|
}
|
|
|
|
|
|
|
|
/* @0040a848 file=? name=FUN_0040a848 */
|
|
|
|
float * __cdecl FUN_0040a848(float *param_1,float *param_2,float *param_3,float param_4)
|
|
|
|
{
|
|
FUN_00408614(param_1,param_2,param_3,param_4);
|
|
FUN_00408614(param_1 + 3,param_2 + 3,param_3 + 3,param_4);
|
|
return param_1;
|
|
}
|
|
|
|
|
|
|
|
/* @0040a884 file=? name=FUN_0040a884 */
|
|
|
|
void __cdecl FUN_0040a884(int *param_1,float *param_2)
|
|
|
|
{
|
|
int *piVar1;
|
|
byte bVar2;
|
|
float *pfVar3;
|
|
byte bVar4;
|
|
|
|
bVar4 = 0x7d;
|
|
pfVar3 = param_2 + 3;
|
|
bVar2 = 0x2c;
|
|
piVar1 = FUN_004db92c(param_1,0x7b);
|
|
piVar1 = (int *)FUN_00408888(piVar1,param_2);
|
|
piVar1 = FUN_004db92c(piVar1,bVar2);
|
|
piVar1 = (int *)FUN_00408888(piVar1,pfVar3);
|
|
FUN_004db92c(piVar1,bVar4);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @0040a8cc file=? name=FUN_0040a8cc */
|
|
|
|
void FUN_0040a8cc(void)
|
|
|
|
{
|
|
FUN_004085bc();
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @0040a938 file=? name=FUN_0040a938 */
|
|
|
|
undefined4 * __cdecl FUN_0040a938(undefined4 *param_1,undefined4 *param_2)
|
|
|
|
{
|
|
FUN_00409968(param_1 + 3,param_2 + 3);
|
|
FUN_00408440(param_1,param_2);
|
|
return param_1;
|
|
}
|
|
|
|
|
|
|
|
/* @0040a968 file=? name=FUN_0040a968 */
|
|
|
|
undefined4 * __cdecl FUN_0040a968(undefined4 *param_1,float *param_2)
|
|
|
|
{
|
|
FUN_00409a70((float *)(param_1 + 3),param_2);
|
|
FUN_0040b058((int)param_2,3,param_1);
|
|
return param_1;
|
|
}
|
|
|
|
|
|
|
|
/* @0040a994 file=? name=FUN_0040a994 */
|
|
|
|
bool __cdecl FUN_0040a994(byte *param_1,byte *param_2)
|
|
|
|
{
|
|
int iVar1;
|
|
|
|
iVar1 = FUN_004d4b14(param_1,param_2,0x1c);
|
|
return iVar1 == 0;
|
|
}
|
|
|
|
|
|
|
|
/* @0040a9b8 file=? name=FUN_0040a9b8 */
|
|
|
|
float * __cdecl FUN_0040a9b8(float *param_1,float *param_2,float *param_3,float param_4)
|
|
|
|
{
|
|
FUN_00408614(param_1,param_2,param_3,param_4);
|
|
FUN_0040a048(param_1 + 3,param_2 + 3,param_3 + 3,param_4);
|
|
return param_1;
|
|
}
|
|
|
|
|
|
|
|
/* @0040a9f4 file=? name=FUN_0040a9f4 */
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
float * __cdecl FUN_0040a9f4(float *param_1,float *param_2,float *param_3,float param_4)
|
|
|
|
{
|
|
FUN_00408848(param_1,param_2,_DAT_0040aa54 - param_4,param_3,param_4);
|
|
FUN_0040a4d8(param_1 + 3,param_2 + 3,param_3 + 3,param_4);
|
|
return param_1;
|
|
}
|
|
|
|
|
|
|
|
/* @0040aaa0 file=? name=FUN_0040aaa0 */
|
|
|
|
void FUN_0040aaa0(void)
|
|
|
|
{
|
|
FUN_0040a738();
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @0040aadc file=? name=FUN_0040aadc */
|
|
|
|
void __cdecl FUN_0040aadc(undefined4 *param_1)
|
|
|
|
{
|
|
*param_1 = 0x3f800000;
|
|
param_1[1] = 0;
|
|
param_1[2] = 0;
|
|
param_1[3] = 0;
|
|
param_1[4] = 0;
|
|
param_1[5] = 0x3f800000;
|
|
param_1[6] = 0;
|
|
param_1[7] = 0;
|
|
param_1[8] = 0;
|
|
param_1[9] = 0;
|
|
param_1[10] = 0x3f800000;
|
|
param_1[0xb] = 0;
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
/* @0040ab28 file=? name=FUN_0040ab28 */
|
|
|
|
undefined4 * __cdecl FUN_0040ab28(undefined4 *param_1,undefined4 *param_2)
|
|
|
|
{
|
|
FUN_004d4918(param_1,param_2,0x30);
|
|
return param_1;
|
|
}
|
|
|
|
|
|
|
|
/* @0040ab44 file=? name=FUN_0040ab44 */
|
|
|
|
float * __cdecl FUN_0040ab44(float *param_1,undefined4 *param_2)
|
|
|
|
{
|
|
FUN_0040adec(param_1,(float *)(param_2 + 3));
|
|
FUN_0040b0ac((int)param_1,3,param_2);
|
|
return param_1;
|
|
}
|
|
|
|
|
|
|
|
/* @0040ab70 file=? name=FUN_0040ab70 */
|
|
|
|
undefined4 * __cdecl FUN_0040ab70(undefined4 *param_1,int *param_2)
|
|
|
|
{
|
|
int iVar1;
|
|
float local_1c;
|
|
undefined4 local_18;
|
|
float local_14;
|
|
undefined4 local_10;
|
|
float local_c;
|
|
undefined4 local_8;
|
|
|
|
iVar1 = *param_2;
|
|
if (iVar1 == 0) {
|
|
FUN_00408328(&local_c,(float *)(param_2 + 1));
|
|
*param_1 = 0x3f800000;
|
|
param_1[4] = 0;
|
|
param_1[8] = 0;
|
|
param_1[1] = 0;
|
|
param_1[5] = local_8;
|
|
param_1[9] = -local_c;
|
|
param_1[2] = 0;
|
|
param_1[6] = local_c;
|
|
param_1[10] = local_8;
|
|
}
|
|
else if (iVar1 == 1) {
|
|
FUN_00408328(&local_14,(float *)(param_2 + 1));
|
|
*param_1 = local_10;
|
|
param_1[4] = 0;
|
|
param_1[8] = local_14;
|
|
param_1[1] = 0;
|
|
param_1[5] = 0x3f800000;
|
|
param_1[9] = 0;
|
|
param_1[2] = -local_14;
|
|
param_1[6] = 0;
|
|
param_1[10] = local_10;
|
|
}
|
|
else if (iVar1 == 2) {
|
|
FUN_00408328(&local_1c,(float *)(param_2 + 1));
|
|
*param_1 = local_18;
|
|
param_1[4] = -local_1c;
|
|
param_1[8] = 0;
|
|
param_1[1] = local_1c;
|
|
param_1[5] = local_18;
|
|
param_1[9] = 0;
|
|
param_1[2] = 0;
|
|
param_1[6] = 0;
|
|
param_1[10] = 0x3f800000;
|
|
}
|
|
return param_1;
|
|
}
|
|
|
|
|
|
|
|
/* @0040ac6c file=? name=FUN_0040ac6c */
|
|
|
|
float * __cdecl FUN_0040ac6c(float *param_1,float *param_2)
|
|
|
|
{
|
|
float local_1c;
|
|
float local_18;
|
|
float local_14;
|
|
float local_10;
|
|
float local_c;
|
|
float local_8;
|
|
|
|
FUN_00408328(&local_c,param_2);
|
|
FUN_00408328(&local_14,param_2 + 1);
|
|
FUN_00408328(&local_1c,param_2 + 2);
|
|
*param_1 = local_10 * local_18;
|
|
param_1[4] = local_10 * local_1c;
|
|
param_1[8] = -local_14;
|
|
param_1[1] = local_c * local_14 * local_18 - local_8 * local_1c;
|
|
param_1[5] = local_8 * local_18 + local_c * local_14 * local_1c;
|
|
param_1[9] = local_c * local_10;
|
|
param_1[2] = local_c * local_1c + local_8 * local_14 * local_18;
|
|
param_1[6] = local_8 * local_14 * local_1c - local_c * local_18;
|
|
param_1[10] = local_8 * local_10;
|
|
return param_1;
|
|
}
|
|
|
|
|
|
|
|
/* @0040ad2c file=? name=FUN_0040ad2c */
|
|
|
|
float * __cdecl FUN_0040ad2c(float *param_1,float *param_2)
|
|
|
|
{
|
|
float local_1c;
|
|
float local_18;
|
|
float local_14;
|
|
float local_10;
|
|
float local_c;
|
|
float local_8;
|
|
|
|
FUN_00408328(&local_c,param_2 + 1);
|
|
FUN_00408328(&local_14,param_2);
|
|
FUN_00408328(&local_1c,param_2 + 2);
|
|
*param_1 = local_c * local_14 * local_1c + local_10 * local_18;
|
|
param_1[4] = local_8 * local_1c;
|
|
param_1[8] = local_c * local_10 * local_1c - local_14 * local_18;
|
|
param_1[1] = local_c * local_14 * local_18 - local_10 * local_1c;
|
|
param_1[5] = local_8 * local_18;
|
|
param_1[9] = local_c * local_10 * local_18 + local_14 * local_1c;
|
|
param_1[2] = local_8 * local_14;
|
|
param_1[6] = -local_c;
|
|
param_1[10] = local_8 * local_10;
|
|
return param_1;
|
|
}
|
|
|
|
|
|
|
|
/* @0040adec file=? name=FUN_0040adec */
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
float * __cdecl FUN_0040adec(float *param_1,float *param_2)
|
|
|
|
{
|
|
float fVar1;
|
|
float fVar2;
|
|
float fVar3;
|
|
float fVar4;
|
|
float fVar5;
|
|
float fVar6;
|
|
float fVar7;
|
|
float fVar8;
|
|
float fVar9;
|
|
float fVar10;
|
|
float fVar11;
|
|
float fVar12;
|
|
float fVar13;
|
|
float fVar14;
|
|
float fVar15;
|
|
float fVar16;
|
|
|
|
fVar1 = *param_2;
|
|
fVar2 = param_2[1];
|
|
fVar3 = param_2[1];
|
|
fVar4 = param_2[2];
|
|
fVar5 = param_2[2];
|
|
fVar6 = *param_2;
|
|
fVar7 = param_2[3];
|
|
fVar8 = *param_2;
|
|
fVar9 = param_2[3];
|
|
fVar10 = param_2[1];
|
|
fVar11 = param_2[3];
|
|
fVar12 = param_2[2];
|
|
fVar13 = param_2[3] * param_2[3];
|
|
fVar14 = *param_2 * *param_2;
|
|
fVar15 = param_2[1] * param_2[1];
|
|
fVar16 = param_2[2] * param_2[2];
|
|
*param_1 = ((fVar13 + fVar14) - fVar15) - fVar16;
|
|
param_1[1] = (fVar1 * fVar2 - fVar11 * fVar12) * _DAT_0040aedc;
|
|
param_1[2] = (fVar5 * fVar6 + fVar9 * fVar10) * _DAT_0040aedc;
|
|
param_1[4] = (fVar11 * fVar12 + fVar1 * fVar2) * _DAT_0040aedc;
|
|
param_1[5] = ((fVar13 - fVar14) + fVar15) - fVar16;
|
|
param_1[6] = (fVar3 * fVar4 - fVar7 * fVar8) * _DAT_0040aedc;
|
|
param_1[8] = (fVar5 * fVar6 - fVar9 * fVar10) * _DAT_0040aedc;
|
|
param_1[9] = (fVar3 * fVar4 + fVar7 * fVar8) * _DAT_0040aedc;
|
|
param_1[10] = ((fVar13 - fVar14) - fVar15) + fVar16;
|
|
return param_1;
|
|
}
|
|
|
|
|
|
|