Files
BT412/reference/decomp/all/part_008.c
T
arcattackandClaude Opus 4.8 7b7d465e5e Initial commit: bt411 -- standalone Windows BattleTech (Tesla 4.10 port)
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>
2026-07-05 21:03:40 -05:00

16821 lines
450 KiB
C

/* @00458e5c file=? name=FUN_00458e5c */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
void __cdecl FUN_00458e5c(int param_1)
{
int iVar1;
undefined4 *puVar2;
float local_9c [5];
float local_88;
float local_74;
float local_6c [5];
float local_58;
float local_44;
float local_3c [5];
float local_28;
float local_14;
float local_c;
float local_8;
local_8 = *(float *)(*(int *)(param_1 + 0x10) + 0x80);
iVar1 = *(int *)(param_1 + 0x1c);
if (iVar1 == 0) {
if (*(int *)(*(int *)(param_1 + 0x2c) + 0x14) == *(int *)(param_1 + 0x20)) {
*(undefined4 *)(param_1 + 0x1c) = 1;
*(float *)(param_1 + 0x28) = local_8;
local_c = local_8 - *(float *)(param_1 + 0x28);
if (local_c < _DAT_004590cc) {
local_c = 0.05;
}
puVar2 = (undefined4 *)FUN_0048a630(*(int *)(param_1 + 0x34));
FUN_0040aadc(local_3c);
local_3c[0] = local_c;
local_28 = local_c;
local_14 = local_c;
FUN_0040b0ac((int)local_3c,3,*(undefined4 **)(param_1 + 0x3c));
FUN_0040beb0(puVar2,local_3c);
FUN_0048ac30(*(int *)(param_1 + 0x30),1);
FUN_0048d5d4(*(undefined4 **)(param_1 + 0x30));
FUN_0045fbf4(*(int *)(param_1 + 0x10),*(undefined4 *)(param_1 + 0x34));
FUN_0045a744(*(int *)(param_1 + 0x10),param_1);
}
}
else if (iVar1 == 1) {
local_c = local_8 - *(float *)(param_1 + 0x28);
if (local_c < _DAT_004590cc) {
local_c = 0.05;
}
if (_DAT_004590d0 <= local_c) {
local_c = 1.0;
*(undefined4 *)(param_1 + 0x1c) = 2;
}
puVar2 = (undefined4 *)FUN_0048a630(*(int *)(param_1 + 0x34));
FUN_0040aadc(local_6c);
local_6c[0] = local_c;
local_58 = local_c;
local_44 = local_c;
FUN_0040b0ac((int)local_6c,3,*(undefined4 **)(param_1 + 0x3c));
FUN_0040beb0(puVar2,local_6c);
FUN_0045fbf4(*(int *)(param_1 + 0x10),*(undefined4 *)(param_1 + 0x34));
}
else if (iVar1 == 2) {
if (_DAT_004590d4 <= local_8 - *(float *)(param_1 + 0x28)) {
*(undefined4 *)(param_1 + 0x1c) = 3;
*(float *)(param_1 + 0x28) = local_8 + _DAT_004590d0;
}
}
else if (iVar1 == 3) {
local_c = *(float *)(param_1 + 0x28) - local_8;
if (local_c < _DAT_004590cc) {
local_c = 0.05;
FUN_0048ac30(*(int *)(param_1 + 0x30),0);
FUN_0048d5d4(*(undefined4 **)(param_1 + 0x30));
*(undefined4 *)(param_1 + 0x1c) = 0;
FUN_0045a764(*(int *)(param_1 + 0x10),param_1);
}
puVar2 = (undefined4 *)FUN_0048a630(*(int *)(param_1 + 0x34));
FUN_0040aadc(local_9c);
local_9c[0] = local_c;
local_88 = local_c;
local_74 = local_c;
FUN_0040b0ac((int)local_9c,3,*(undefined4 **)(param_1 + 0x3c));
FUN_0040beb0(puVar2,local_9c);
FUN_0045fbf4(*(int *)(param_1 + 0x10),*(undefined4 *)(param_1 + 0x34));
}
return;
}
/* @004590d8 file=? name=FUN_004590d8 */
undefined4 * __cdecl
FUN_004590d8(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
undefined4 param_5,undefined4 param_6,undefined4 param_7,undefined4 param_8,
undefined4 *param_9,undefined4 param_10,undefined4 param_11,undefined4 param_12,
undefined4 param_13,undefined4 param_14)
{
float *pfVar1;
undefined4 *puVar2;
int iVar3;
float *pfVar4;
float *pfVar5;
float local_94 [12];
float local_64 [12];
float local_34 [12];
FUN_004536b4(param_1,param_2,param_3,param_4,param_5,param_6,param_7,param_8,param_9);
*param_1 = &PTR_FUN_004f1628;
param_1[0x1b] = param_10;
param_1[0x1c] = param_11;
param_1[0x1f] = 0;
param_1[0x1d] = param_12;
param_1[0x1e] = param_13;
param_1[0x20] = param_14;
param_1[0x21] = 0;
puVar2 = (undefined4 *)FUN_0048a630(param_1[0xb]);
FUN_0040aadc(local_34);
pfVar1 = (float *)param_1[0x1e];
pfVar4 = local_34;
pfVar5 = local_64;
for (iVar3 = 0xc; iVar3 != 0; iVar3 = iVar3 + -1) {
*pfVar5 = *pfVar4;
pfVar4 = pfVar4 + 1;
pfVar5 = pfVar5 + 1;
}
FUN_0040b374(local_34,local_64,pfVar1);
pfVar1 = (float *)param_1[0x1d];
pfVar4 = local_34;
pfVar5 = local_94;
for (iVar3 = 0xc; iVar3 != 0; iVar3 = iVar3 + -1) {
*pfVar5 = *pfVar4;
pfVar4 = pfVar4 + 1;
pfVar5 = pfVar5 + 1;
}
FUN_0040b3e8(local_34,local_94,pfVar1);
FUN_0040beb0(puVar2,local_34);
FUN_0048d3e8((undefined4 *)param_1[0xb]);
FUN_0048ac30(param_1[0xc],param_1[0x1f]);
FUN_0048d5d4((undefined4 *)param_1[0xc]);
(**(code **)(*(int *)(param_1[0x1b] + 0x2c) + 4))(param_1[0x1b] + 0x2c,param_1);
return param_1;
}
/* @004591f8 file=? name=FUN_004591f8 */
void __cdecl FUN_004591f8(int *param_1,byte param_2)
{
if (param_1 != (int *)0x0) {
*param_1 = (int)&PTR_FUN_004f1628;
FUN_00453768(param_1,0);
if ((param_2 & 1) != 0) {
FUN_004022d0(param_1);
}
}
return;
}
/* @00459224 file=? name=FUN_00459224 */
undefined4 __cdecl FUN_00459224(int param_1)
{
FUN_004537c4(param_1);
return 1;
}
/* @00459238 file=? name=FUN_00459238 */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
void __cdecl FUN_00459238(int param_1)
{
float *pfVar1;
undefined4 *puVar2;
int iVar3;
float *pfVar4;
float *pfVar5;
float local_b4 [12];
float local_84 [12];
float local_54 [4];
float local_44 [12];
undefined4 local_14;
undefined4 local_10;
int local_c;
undefined4 local_8;
if (*(int *)(*(int *)(param_1 + 0x6c) + 0x14) == *(int *)(param_1 + 0x70)) {
if (*(int *)(param_1 + 0x7c) == 0) {
*(undefined4 *)(param_1 + 0x7c) = 1;
FUN_0048ac30(*(int *)(param_1 + 0x30),1);
FUN_0048d5d4(*(undefined4 **)(param_1 + 0x30));
FUN_0045a744(*(int *)(param_1 + 0x10),param_1);
}
*(float *)(param_1 + 0x84) = *(float *)(param_1 + 0x80) + *(float *)(param_1 + 0x84);
if (_DAT_004593bc < *(float *)(param_1 + 0x84)) {
*(float *)(param_1 + 0x84) = *(float *)(param_1 + 0x84) - _DAT_004593bc;
}
local_14 = *(undefined4 *)(param_1 + 0x84);
local_c = 2;
local_10 = local_14;
local_8 = local_14;
puVar2 = (undefined4 *)FUN_0048a630(*(int *)(param_1 + 0x2c));
FUN_0040aadc(local_44);
FUN_0040998c(local_54,&local_c);
FUN_0040adec(local_44,local_54);
pfVar1 = *(float **)(param_1 + 0x78);
pfVar4 = local_44;
pfVar5 = local_84;
for (iVar3 = 0xc; iVar3 != 0; iVar3 = iVar3 + -1) {
*pfVar5 = *pfVar4;
pfVar4 = pfVar4 + 1;
pfVar5 = pfVar5 + 1;
}
FUN_0040b374(local_44,local_84,pfVar1);
pfVar1 = *(float **)(param_1 + 0x74);
pfVar4 = local_44;
pfVar5 = local_b4;
for (iVar3 = 0xc; iVar3 != 0; iVar3 = iVar3 + -1) {
*pfVar5 = *pfVar4;
pfVar4 = pfVar4 + 1;
pfVar5 = pfVar5 + 1;
}
FUN_0040b3e8(local_44,local_b4,pfVar1);
FUN_0040beb0(puVar2,local_44);
FUN_0045fbf4(*(int *)(param_1 + 0x10),*(undefined4 *)(param_1 + 0x2c));
}
else if (*(int *)(param_1 + 0x7c) != 0) {
*(undefined4 *)(param_1 + 0x7c) = 0;
FUN_0048ac30(*(int *)(param_1 + 0x30),0);
FUN_0048d5d4(*(undefined4 **)(param_1 + 0x30));
FUN_0045a764(*(int *)(param_1 + 0x10),param_1);
}
FUN_004537d8();
return;
}
/* @004593c0 file=? name=FUN_004593c0 */
undefined4 * __cdecl
FUN_004593c0(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
undefined4 param_5,undefined4 param_6,undefined4 param_7,undefined4 param_8,
undefined4 *param_9,undefined4 param_10,undefined4 param_11,undefined4 param_12,
undefined4 param_13)
{
float *pfVar1;
undefined4 *puVar2;
int iVar3;
float *pfVar4;
float *pfVar5;
float local_94 [12];
float local_64 [12];
float local_34 [12];
FUN_004536b4(param_1,param_2,param_3,param_4,param_5,param_6,param_7,param_8,param_9);
*param_1 = &PTR_FUN_004f1610;
param_1[0x1b] = param_10;
param_1[0x1c] = param_11;
param_1[0x1f] = 0;
param_1[0x1d] = param_12;
param_1[0x1e] = param_13;
puVar2 = (undefined4 *)FUN_0048a630(param_1[0xb]);
FUN_0040aadc(local_34);
pfVar1 = (float *)param_1[0x1e];
pfVar4 = local_34;
pfVar5 = local_64;
for (iVar3 = 0xc; iVar3 != 0; iVar3 = iVar3 + -1) {
*pfVar5 = *pfVar4;
pfVar4 = pfVar4 + 1;
pfVar5 = pfVar5 + 1;
}
FUN_0040b374(local_34,local_64,pfVar1);
pfVar1 = (float *)param_1[0x1d];
pfVar4 = local_34;
pfVar5 = local_94;
for (iVar3 = 0xc; iVar3 != 0; iVar3 = iVar3 + -1) {
*pfVar5 = *pfVar4;
pfVar4 = pfVar4 + 1;
pfVar5 = pfVar5 + 1;
}
FUN_0040b3e8(local_34,local_94,pfVar1);
FUN_0040beb0(puVar2,local_34);
FUN_0048d3e8((undefined4 *)param_1[0xb]);
FUN_0048ac30(param_1[0xc],param_1[0x1f]);
FUN_0048d5d4((undefined4 *)param_1[0xc]);
(**(code **)(*(int *)(param_1[0x1b] + 0x2c) + 4))(param_1[0x1b] + 0x2c,param_1);
return param_1;
}
/* @004594cc file=? name=FUN_004594cc */
void __cdecl FUN_004594cc(int *param_1,byte param_2)
{
if (param_1 != (int *)0x0) {
*param_1 = (int)&PTR_FUN_004f1610;
FUN_00453768(param_1,0);
if ((param_2 & 1) != 0) {
FUN_004022d0(param_1);
}
}
return;
}
/* @004594f8 file=? name=FUN_004594f8 */
undefined4 __cdecl FUN_004594f8(int param_1)
{
FUN_004537c4(param_1);
return 1;
}
/* @0045950c file=? name=FUN_0045950c */
void __cdecl FUN_0045950c(int param_1)
{
float *pfVar1;
undefined4 *puVar2;
int iVar3;
float *pfVar4;
float *pfVar5;
float local_94 [12];
float local_64 [12];
float local_34 [12];
if (*(int *)(*(int *)(param_1 + 0x6c) + 0x14) == *(int *)(param_1 + 0x70)) {
if (*(int *)(param_1 + 0x7c) == 0) {
*(undefined4 *)(param_1 + 0x7c) = 1;
FUN_0048ac30(*(int *)(param_1 + 0x30),1);
FUN_0048d5d4(*(undefined4 **)(param_1 + 0x30));
FUN_0045a744(*(int *)(param_1 + 0x10),param_1);
}
puVar2 = (undefined4 *)FUN_0048a630(*(int *)(param_1 + 0x2c));
FUN_0040aadc(local_34);
pfVar1 = *(float **)(param_1 + 0x78);
pfVar4 = local_34;
pfVar5 = local_64;
for (iVar3 = 0xc; iVar3 != 0; iVar3 = iVar3 + -1) {
*pfVar5 = *pfVar4;
pfVar4 = pfVar4 + 1;
pfVar5 = pfVar5 + 1;
}
FUN_0040b374(local_34,local_64,pfVar1);
pfVar1 = *(float **)(param_1 + 0x74);
pfVar4 = local_34;
pfVar5 = local_94;
for (iVar3 = 0xc; iVar3 != 0; iVar3 = iVar3 + -1) {
*pfVar5 = *pfVar4;
pfVar4 = pfVar4 + 1;
pfVar5 = pfVar5 + 1;
}
FUN_0040b3e8(local_34,local_94,pfVar1);
FUN_0040beb0(puVar2,local_34);
FUN_0045fbf4(*(int *)(param_1 + 0x10),*(undefined4 *)(param_1 + 0x2c));
}
else if (*(int *)(param_1 + 0x7c) != 0) {
*(undefined4 *)(param_1 + 0x7c) = 0;
FUN_0048ac30(*(int *)(param_1 + 0x30),0);
FUN_0048d5d4(*(undefined4 **)(param_1 + 0x30));
FUN_0045a764(*(int *)(param_1 + 0x10),param_1);
}
FUN_004537d8();
return;
}
/* @0045961f file=? name=FUN_0045961f */
undefined4 __cdecl FUN_0045961f(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)) {
return 1;
}
return 0;
}
/* @004596a6 file=? name=FUN_004596a6 */
void FUN_004596a6(void)
{
return;
}
/* @00459eb8 file=? name=FUN_00459eb8 */
char * __cdecl FUN_00459eb8(char *param_1)
{
char cVar1;
undefined4 *puVar2;
char *pcVar3;
uint uVar4;
int iVar5;
uint uVar6;
char *pcVar7;
char *pcVar8;
puVar2 = *(undefined4 **)(DAT_004f1aac + 4);
while( true ) {
if (puVar2 == (undefined4 *)0x0) {
return param_1;
}
pcVar7 = (char *)(puVar2 + 2);
if (((pcVar7 != (char *)0x0) && (*pcVar7 != '\0')) &&
(pcVar3 = FUN_004d4c78(param_1,pcVar7), pcVar3 != (char *)0x0)) break;
puVar2 = (undefined4 *)*puVar2;
}
pcVar8 = (char *)puVar2[1];
DAT_00522b9c = 0;
uVar4 = (int)pcVar3 - (int)param_1;
for (; *pcVar8 == '<'; pcVar8 = pcVar8 + 1) {
uVar4 = uVar4 - 1;
}
if (0 < (int)uVar4) {
FUN_004d4a94(&DAT_00522b9c,param_1,uVar4);
}
iVar5 = FUN_004d4a78(pcVar7);
pcVar3 = pcVar3 + iVar5;
uVar4 = FUN_004d4a78(pcVar8);
pcVar7 = pcVar8 + (uVar4 - 1);
while ((uVar4 != 0 && (*pcVar7 == '>'))) {
uVar4 = uVar4 - 1;
pcVar7 = pcVar7 + -1;
if (*pcVar3 != '\0') {
pcVar3 = pcVar3 + 1;
}
}
if (0 < (int)uVar4) {
FUN_004d4a94(&DAT_00522b9c,pcVar8,uVar4);
}
FUN_004d49b8(&DAT_00522b9c,pcVar3);
uVar4 = 0xffffffff;
pcVar7 = &DAT_00522b9c;
do {
pcVar3 = pcVar7;
if (uVar4 == 0) break;
uVar4 = uVar4 - 1;
pcVar3 = pcVar7 + 1;
cVar1 = *pcVar7;
pcVar7 = pcVar3;
} while (cVar1 != '\0');
uVar4 = ~uVar4;
pcVar7 = pcVar3 + -uVar4;
pcVar3 = param_1;
for (uVar6 = uVar4 >> 2; uVar6 != 0; uVar6 = uVar6 - 1) {
*(undefined4 *)pcVar3 = *(undefined4 *)pcVar7;
pcVar7 = pcVar7 + 4;
pcVar3 = pcVar3 + 4;
}
for (uVar4 = uVar4 & 3; uVar4 != 0; uVar4 = uVar4 - 1) {
*pcVar3 = *pcVar7;
pcVar7 = pcVar7 + 1;
pcVar3 = pcVar3 + 1;
}
return param_1;
}
/* @00459fb4 file=? name=FUN_00459fb4 */
char * __cdecl
FUN_00459fb4(char *param_1,char *param_2,undefined4 param_3,undefined4 param_4,undefined4 param_5,
undefined4 param_6)
{
char cVar1;
int iVar2;
char *pcVar3;
uint uVar4;
uint uVar5;
char *pcVar6;
uVar4 = 0xffffffff;
pcVar3 = param_2;
do {
pcVar6 = pcVar3;
if (uVar4 == 0) break;
uVar4 = uVar4 - 1;
pcVar6 = pcVar3 + 1;
cVar1 = *pcVar3;
pcVar3 = pcVar6;
} while (cVar1 != '\0');
uVar4 = ~uVar4;
pcVar3 = pcVar6 + -uVar4;
pcVar6 = param_1;
for (uVar5 = uVar4 >> 2; uVar5 != 0; uVar5 = uVar5 - 1) {
*(undefined4 *)pcVar6 = *(undefined4 *)pcVar3;
pcVar3 = pcVar3 + 4;
pcVar6 = pcVar6 + 4;
}
for (uVar4 = uVar4 & 3; uVar4 != 0; uVar4 = uVar4 - 1) {
*pcVar6 = *pcVar3;
pcVar3 = pcVar3 + 1;
pcVar6 = pcVar6 + 1;
}
iVar2 = FUN_004d4a78(param_2);
pcVar3 = param_1 + iVar2;
while (pcVar3 = pcVar3 + 1, pcVar3 < param_1 + 0xf) {
*pcVar3 = '\0';
}
*(undefined4 *)(param_1 + 0x10) = param_3;
*(undefined4 *)(param_1 + 0x14) = param_4;
*(undefined4 *)(param_1 + 0x18) = param_5;
*(undefined4 *)(param_1 + 0x1c) = param_6;
return param_1;
}
/* @0045a01c file=? name=FUN_0045a01c */
void __cdecl FUN_0045a01c(int *param_1,byte param_2)
{
if ((param_1 != (int *)0x0) && ((param_2 & 1) != 0)) {
FUN_004022d0(param_1);
}
return;
}
/* @0045a038 file=? name=FUN_0045a038 */
undefined4 FUN_0045a038(void)
{
return 1;
}
/* @0045a044 file=? name=FUN_0045a044 */
undefined4 * __cdecl FUN_0045a044(undefined4 *param_1,undefined4 param_2,undefined4 param_3)
{
FUN_00415e90(param_1,1);
*param_1 = &PTR_FUN_004f3358;
param_1[3] = param_2;
param_1[4] = param_3;
return param_1;
}
/* @0045a070 file=? name=FUN_0045a070 */
void __cdecl FUN_0045a070(int *param_1,byte param_2)
{
if (param_1 != (int *)0x0) {
*param_1 = (int)&PTR_FUN_004f3358;
if (param_1[4] != 0) {
FUN_0045a01c((int *)param_1[3],3);
}
FUN_00415ed8(param_1,0);
if ((param_2 & 1) != 0) {
FUN_004022d0(param_1);
}
}
return;
}
/* @0045a0b0 file=? name=FUN_0045a0b0 */
undefined4 FUN_0045a0b0(void)
{
return 1;
}
/* @0045a0c4 file=? name=FUN_0045a0c4 */
int __cdecl FUN_0045a0c4(int *param_1,int param_2)
{
int iVar1;
undefined4 *puVar2;
int *piVar3;
int iVar4;
iVar1 = **(int **)(param_2 + 0x3c);
iVar4 = 0;
piVar3 = *(int **)(param_2 + 0x3c) + 1;
if (0 < iVar1) {
do {
puVar2 = (undefined4 *)FUN_00402298(0x14);
if (puVar2 == (undefined4 *)0x0) {
puVar2 = (undefined4 *)0x0;
}
else {
puVar2 = FUN_0045a044(puVar2,piVar3,0);
}
(**(code **)(*param_1 + 4))(param_1,puVar2);
iVar4 = iVar4 + 1;
piVar3 = piVar3 + 8;
} while (iVar4 < iVar1);
}
return iVar1;
}
/* @0045a134 file=? name=FUN_0045a134 */
void __cdecl FUN_0045a134(int param_1)
{
undefined4 *puVar1;
int local_10 [3];
FUN_004614b8(local_10,param_1);
while( true ) {
puVar1 = (undefined4 *)(**(code **)(local_10[0] + 0x28))(local_10);
if (puVar1 == (undefined4 *)0x0) break;
if (puVar1 != (undefined4 *)0x0) {
(**(code **)*puVar1)(puVar1,3);
}
}
FUN_00461515(local_10,2);
return;
}
/* @0045a180 file=? name=FUN_0045a180 */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
undefined4 * __cdecl
FUN_0045a180(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
undefined4 param_5,undefined4 param_6)
{
int *piVar1;
char *pcVar2;
undefined4 *puVar3;
undefined4 uVar4;
int iVar5;
float10 fVar6;
undefined4 local_d0 [32];
char local_50;
float local_1c;
float local_18;
float local_14;
undefined4 local_10;
undefined4 local_c;
undefined4 local_8;
FUN_004368b8(param_1,param_2,param_3,param_4,param_5,param_6);
*param_1 = &PTR_FUN_004f330c;
FUN_0040aadc(param_1 + 0x14);
FUN_004612dd(param_1 + 0xdf,0);
FUN_00461328(param_1 + 0xe4,0,0);
FUN_0046140e(param_1 + 0xe9,0,0);
FUN_0041c42c(param_1 + 0xef,0);
param_1[0x2c] = 0;
param_1[0x2d] = 0;
param_1[0x2f] = 0;
param_1[0x2b] = 1;
param_1[0x32] = 0;
param_1[0x33] = 0;
param_1[0x34] = 0;
param_1[0x35] = 0;
param_1[0x36] = 0;
param_1[0x37] = 0;
param_1[0x39] = 0;
param_1[0x38] = 0;
param_1[0x3a] = 0;
param_1[0x3b] = 0;
param_1[0x3c] = 0;
param_1[0x3e] = 0;
param_1[0x3d] = 0;
param_1[0x3f] = 0;
param_1[0x40] = 0;
param_1[0x41] = 0;
param_1[0x42] = 0;
param_1[0x43] = 0;
param_1[0x44] = 0;
param_1[0x45] = 0;
param_1[0x46] = 0x41f00000;
param_1[0x49] = 0;
param_1[0x4a] = 0;
param_1[0x4b] = 0;
param_1[0x4c] = 0;
param_1[0xdb] = 0;
param_1[0xdc] = 0;
param_1[0xdd] = 0;
param_1[0xde] = 0;
param_1[0xb2] = 0;
param_1[0x2e] = 0;
param_1[0xf4] = 0;
param_1[0xf6] = 0;
param_1[0xf5] = 0;
param_1[0xf7] = 0;
FUN_0040ab28(param_1 + 0x14,&DAT_004e107c);
piVar1 = (int *)FUN_00414b60();
param_1[0x20] = (float)*piVar1 / DAT_0052140c;
piVar1 = (int *)FUN_00402298(0x24);
if (piVar1 == (int *)0x0) {
DAT_004f1ab0 = (int *)0x0;
}
else {
DAT_004f1ab0 = FUN_00401c18(piVar1,0x4f1e7a,2000000);
}
iVar5 = 0;
puVar3 = param_1 + 0xb3;
do {
iVar5 = iVar5 + 1;
*puVar3 = 0;
puVar3 = puVar3 + 1;
} while (iVar5 < 0x28);
local_8 = 0;
local_c = 0x41200000;
local_10 = 0;
local_14 = 0.0;
local_18 = 0.0;
local_1c = 0.0;
local_50 = '\0';
pcVar2 = (char *)FUN_004dee74(s_DPLARG_004f1e83);
iVar5 = FUN_004dee74(s_L4EYES_004f1e8a);
if (iVar5 != 0) {
FUN_004d7f84(iVar5,(byte *)s__f__f__f__f__f__f__s_004f1e91);
FUN_004d771c(s__f___f___f__f___f___f_004f1ea6);
param_1[0x13] = 1;
if (local_50 == 'r') {
FUN_004dbb24(&DAT_00524e20,s_DPLRenderer__DPLRenderer_Eye_wil_004f1ebe,(char *)0x0);
param_1[0x2c] = 1;
}
}
if (pcVar2 == (char *)0x0) {
FUN_004dbb24(&DAT_00524e20,s_DPLARG_must_be_set_for_the_Divis_004f1eff,(char *)0x0);
}
iVar5 = FUN_0046181c(pcVar2);
if (iVar5 == 0) {
FUN_004dbb24(&DAT_00524e20,s_DPLARG_is_bad__I_couldn_t_unders_004f1f34,(char *)0x0);
}
iVar5 = FUN_00461d14((int)local_d0,pcVar2,'~');
FUN_0048d108(iVar5,local_d0);
FUN_00497b9c(&DAT_004f1f67,FUN_00495048);
FUN_00498d38(&DAT_004f1f6c,FUN_0049a1dc);
FUN_00498d38(&DAT_004f1f71,FUN_00499ab0);
FUN_00496634(&LAB_004596ac);
FUN_00496604(&LAB_00459e64);
puVar3 = FUN_004896cc();
param_1[0x4b] = puVar3;
puVar3 = FUN_004896cc();
param_1[0x4a] = puVar3;
uVar4 = FUN_004896f0();
param_1[0x49] = uVar4;
iVar5 = FUN_00489708();
param_1[0x48] = iVar5;
FUN_00491c90(iVar5,local_1c,2);
FUN_00491c90(param_1[0x48],local_14,0);
FUN_00491c90(param_1[0x48],local_18,1);
FUN_00491c58(param_1[0x48],local_8,local_c,local_10);
FUN_0048a714(param_1[0x48],param_1[0x4b]);
FUN_0048b4ac(param_1[0x49],param_1[0x48]);
FUN_0048a890(param_1[0x4b]);
FUN_0048a890(param_1[0x4a]);
FUN_0048b56c(param_1[0x49],0x3f800000,0x40000000);
FUN_0048b608(param_1[0x49],0,0,0);
FUN_0048b83c(0,0,0,DAT_004f3368,DAT_004f336c);
fVar6 = (float10)FUN_004dd188(0x40000000,0x3fe0c152);
FUN_0048b9d0(param_1[0x49],0xbf800000,0xbf800000,0x3f800000,0x3f800000,
(float)((float10)_DAT_0045a720 / fVar6));
FUN_0048b788(param_1[0x49],0);
FUN_00489bd4(param_1[0x49]);
FUN_0048b6b4(param_1[0x49],5,0,0,0,0x3c23d70a,0x3d4ccccd);
FUN_0048d3e8((undefined4 *)param_1[0x48]);
FUN_0048d42c((undefined4 *)param_1[0x49]);
FUN_0048d4b0((undefined4 *)param_1[0x4b]);
FUN_0048d4b0((undefined4 *)param_1[0x4a]);
FUN_0048a1bc();
puVar3 = (undefined4 *)FUN_00414b60();
param_1[0x2a] = *puVar3;
param_1[0x31] = 0;
FUN_0045f784((int)param_1);
param_1[0x28] = 0;
return param_1;
}
/* @0045a724 file=? name=FUN_0045a724 */
undefined4 * FUN_0045a724(void)
{
undefined4 *puVar1;
puVar1 = FUN_004896cc();
FUN_0048a890((int)puVar1);
FUN_0048d4b0(puVar1);
return puVar1;
}
/* @0045a744 file=? name=FUN_0045a744 */
void __cdecl FUN_0045a744(int param_1,undefined4 param_2)
{
(**(code **)(*(int *)(param_1 + 0x3bc) + 4))(param_1 + 0x3bc,param_2);
return;
}
/* @0045a764 file=? name=FUN_0045a764 */
void __cdecl FUN_0045a764(int param_1,int param_2)
{
int local_14 [4];
FUN_00415f30(local_14,param_2,0xffffffff);
FUN_004161fc((int)local_14,param_1 + 0x3bc);
FUN_00415f90(local_14,2);
return;
}
/* @0045a7a8 file=? name=FUN_0045a7a8 */
void __cdecl FUN_0045a7a8(int param_1,undefined4 param_2)
{
switch(param_2) {
case 0:
*(undefined4 *)(param_1 + 0xac) = 1;
return;
case 1:
*(undefined4 *)(param_1 + 0xac) = 0;
return;
case 2:
*(undefined4 *)(param_1 + 200) = *(undefined4 *)(param_1 + 0xdc);
*(undefined4 *)(param_1 + 0xd0) = *(undefined4 *)(param_1 + 0xe4);
*(undefined4 *)(param_1 + 0xcc) = *(undefined4 *)(param_1 + 0xe0);
*(undefined4 *)(param_1 + 0xd4) = *(undefined4 *)(param_1 + 0xe8);
*(undefined4 *)(param_1 + 0xd8) = *(undefined4 *)(param_1 + 0xec);
if (*(int *)(param_1 + 0xac) != 0) {
FUN_0048b6b4(*(int *)(param_1 + 0x124),5,*(undefined4 *)(param_1 + 200),
*(undefined4 *)(param_1 + 0xd0),*(undefined4 *)(param_1 + 0xcc),
*(undefined4 *)(param_1 + 0xd4),*(undefined4 *)(param_1 + 0xd8));
FUN_0048d42c(*(undefined4 **)(param_1 + 0x124));
return;
}
break;
case 3:
*(undefined4 *)(param_1 + 200) = *(undefined4 *)(param_1 + 0xf0);
*(undefined4 *)(param_1 + 0xd0) = *(undefined4 *)(param_1 + 0xf8);
*(undefined4 *)(param_1 + 0xcc) = *(undefined4 *)(param_1 + 0xf4);
*(undefined4 *)(param_1 + 0xd4) = *(undefined4 *)(param_1 + 0xfc);
*(undefined4 *)(param_1 + 0xd8) = *(undefined4 *)(param_1 + 0x100);
if (*(int *)(param_1 + 0xac) != 0) {
FUN_0048b6b4(*(int *)(param_1 + 0x124),5,*(undefined4 *)(param_1 + 200),
*(undefined4 *)(param_1 + 0xd0),*(undefined4 *)(param_1 + 0xcc),
*(undefined4 *)(param_1 + 0xd4),*(undefined4 *)(param_1 + 0xd8));
FUN_0048d42c(*(undefined4 **)(param_1 + 0x124));
return;
}
break;
case 4:
FUN_0048b56c(*(int *)(param_1 + 0x124),0x3e800000,0x44898000);
FUN_0048b6b4(*(int *)(param_1 + 0x124),5,0x3ea3d70a,0x3e99999a,0x3f266666,0x42c80000,0x44834000)
;
FUN_0048d42c(*(undefined4 **)(param_1 + 0x124));
}
return;
}
/* @0045a954 file=? name=FUN_0045a954 */
void __cdecl
FUN_0045a954(int param_1,undefined4 *param_2,undefined4 *param_3,undefined4 *param_4,
undefined4 *param_5,undefined4 *param_6)
{
*param_2 = *(undefined4 *)(param_1 + 200);
*param_3 = *(undefined4 *)(param_1 + 0xd0);
*param_4 = *(undefined4 *)(param_1 + 0xcc);
*param_5 = *(undefined4 *)(param_1 + 0xd4);
*param_6 = *(undefined4 *)(param_1 + 0xd8);
return;
}
/* @0045a994 file=munga_l4/l4video.cpp name=FUN_0045a994 */
void __cdecl FUN_0045a994(undefined4 param_1,int param_2,undefined4 param_3)
{
int iVar1;
int iVar2;
iVar1 = FUN_004904a0(param_2);
if (iVar1 != 0) {
FUN_0040385c(s_DPLRenderer__MarkDCSHiearchy_tri_004f1f76,
s_d__tesla_bt_munga_l4_L4VIDEO_CPP_004f1fc1,0x5c8);
}
FUN_00490490(param_2,param_3);
iVar1 = 0;
while( true ) {
iVar2 = FUN_0048a2ec(param_2,iVar1);
if (iVar2 == 0) break;
FUN_0045a994(param_1,iVar2,param_3);
iVar1 = iVar1 + 1;
}
return;
}
/* @0045a9f8 file=munga_l4/l4video.cpp name=FUN_0045a9f8 */
int __cdecl FUN_0045a9f8(undefined4 param_1,char *param_2)
{
int *piVar1;
int iVar2;
char *pcVar3;
char *pcVar4;
undefined4 uVar5;
undefined4 *puVar6;
int iVar7;
undefined4 local_108;
undefined2 uStack_104;
undefined1 uStack_102;
int local_8;
local_108 = DAT_004f1fe2;
uStack_104 = DAT_004f1fe6;
uStack_102 = DAT_004f1fe8;
FUN_004d49b8((char *)&local_108,param_2);
piVar1 = FUN_004d6f54((LPCSTR)&local_108,&DAT_004f1fe9);
if (piVar1 == (int *)0x0) {
FUN_004dbb24(&DAT_00524e20,s_Could_not_open_pfx_file_004f1fec,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,(char *)&local_108,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s_effects_using_it_will_fail_004f2005,(char *)0x0);
iVar2 = 0;
}
else {
iVar2 = FUN_00402298(0x104);
if (iVar2 == 0) {
FUN_0040385c(s_ran_out_of_RAM_trying_to_read_a_p_004f2022,
s_d__tesla_bt_munga_l4_L4VIDEO_CPP_004f204c,0x5f8);
}
pcVar3 = (char *)FUN_004d6c20(&local_108,0xff,piVar1);
iVar7 = 0;
pcVar4 = pcVar3;
do {
if (*pcVar4 == '\n') {
*pcVar4 = '\0';
}
iVar7 = iVar7 + 1;
pcVar4 = pcVar4 + 1;
} while (iVar7 < 0xff);
uVar5 = FUN_00497730(pcVar3,0,&local_8);
*(undefined4 *)(iVar2 + 0x100) = uVar5;
puVar6 = FUN_004d6c20(&local_108,0xff,piVar1);
local_8 = FUN_004d7f84(puVar6,(byte *)s__x__d__f__f_004f206d);
if (local_8 < 4) {
FUN_004dbb24(&DAT_00524e20,s_pfx_file_004f207a,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s_did_not_read_correctly_004f2084,(char *)0x0);
iVar2 = 0;
}
else {
puVar6 = FUN_004d6c20(&local_108,0xff,piVar1);
local_8 = FUN_004d7f84(puVar6,(byte *)s__f__f__f__f_004f209d);
if (local_8 < 4) {
FUN_004dbb24(&DAT_00524e20,s_pfx_file_004f20aa,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s_did_not_read_correctly_004f20b4,(char *)0x0);
iVar2 = 0;
}
else {
puVar6 = FUN_004d6c20(&local_108,0xff,piVar1);
local_8 = FUN_004d7f84(puVar6,(byte *)s__f__f__f__f__f__f_004f20cd);
if (local_8 < 6) {
FUN_004dbb24(&DAT_00524e20,s_pfx_file_004f20e0,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s_did_not_read_correctly_004f20ea,(char *)0x0);
iVar2 = 0;
}
else {
puVar6 = FUN_004d6c20(&local_108,0xff,piVar1);
local_8 = FUN_004d7f84(puVar6,(byte *)s__f__f__f__f__f__f_004f2103);
if (local_8 < 6) {
FUN_004dbb24(&DAT_00524e20,s_pfx_file_004f2116,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s_did_not_read_correctly_004f2120,(char *)0x0);
iVar2 = 0;
}
else {
puVar6 = FUN_004d6c20(&local_108,0xff,piVar1);
local_8 = FUN_004d7f84(puVar6,(byte *)s__f__f__f__f__f__f_004f2139);
if (local_8 < 6) {
FUN_004dbb24(&DAT_00524e20,s_pfx_file_004f214c,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s_did_not_read_correctly_004f2156,(char *)0x0);
iVar2 = 0;
}
else {
puVar6 = FUN_004d6c20(&local_108,0xff,piVar1);
local_8 = FUN_004d7f84(puVar6,(byte *)s__f__f_004f216f);
if (local_8 < 2) {
FUN_004dbb24(&DAT_00524e20,s_pfx_file_004f2176,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s_did_not_read_correctly_004f2180,(char *)0x0);
iVar2 = 0;
}
else {
puVar6 = FUN_004d6c20(&local_108,0xff,piVar1);
local_8 = FUN_004d7f84(puVar6,(byte *)s__f__f__f__f__f__f__f__f_004f2199);
if (local_8 < 8) {
FUN_004dbb24(&DAT_00524e20,s_pfx_file_004f21b2,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s_did_not_read_correctly_004f21bc,(char *)0x0);
iVar2 = 0;
}
else {
puVar6 = FUN_004d6c20(&local_108,0xff,piVar1);
local_8 = FUN_004d7f84(puVar6,(byte *)s__f__f__f__f__f__f__f__f_004f21d5);
if (local_8 < 8) {
FUN_004dbb24(&DAT_00524e20,s_pfx_file_004f21ee,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s_did_not_read_correctly_004f21f8,(char *)0x0);
iVar2 = 0;
}
else {
puVar6 = FUN_004d6c20(&local_108,0xff,piVar1);
local_8 = FUN_004d7f84(puVar6,(byte *)s__f__f__f__f__f__f__f__f_004f2211);
if (local_8 < 8) {
FUN_004dbb24(&DAT_00524e20,s_pfx_file_004f222a,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s_did_not_read_correctly_004f2234,(char *)0x0);
iVar2 = 0;
}
else {
puVar6 = FUN_004d6c20(&local_108,0xff,piVar1);
local_8 = FUN_004d7f84(puVar6,(byte *)s__f__f__f__f__f__f__f__f_004f224d);
if (local_8 < 8) {
FUN_004dbb24(&DAT_00524e20,s_pfx_file_004f2266,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s_did_not_read_correctly_004f2270,(char *)0x0);
iVar2 = 0;
}
else {
puVar6 = FUN_004d6c20(&local_108,0xff,piVar1);
local_8 = FUN_004d7f84(puVar6,(byte *)s__f__f_004f2289);
if (local_8 < 2) {
FUN_004dbb24(&DAT_00524e20,s_pfx_file_004f2290,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s_did_not_read_correctly_004f229a,(char *)0x0);
iVar2 = 0;
}
else {
puVar6 = FUN_004d6c20(&local_108,0xff,piVar1);
local_8 = FUN_004d7f84(puVar6,(byte *)s__f__f_004f22b3);
if (local_8 < 2) {
FUN_004dbb24(&DAT_00524e20,s_pfx_file_004f22ba,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s_did_not_read_correctly_004f22c4,(char *)0x0
);
iVar2 = 0;
}
else {
FUN_004d6b08(piVar1);
}
}
}
}
}
}
}
}
}
}
}
}
}
return iVar2;
}
/* @0045b1b8 file=munga_l4/l4video.cpp name=FUN_0045b1b8 */
void FUN_0045b1b8(int param_1,undefined4 *param_2,char *param_3,int param_4,int param_5)
{
char *pcVar1;
int iVar2;
undefined4 *puVar3;
undefined4 uVar4;
undefined4 *puVar5;
uint uVar6;
char *pcVar7;
int *piVar8;
uint *puVar9;
char *pcVar10;
int *piVar11;
bool bVar12;
char *local_248;
uint local_240 [2];
char *local_238;
uint local_230 [2];
char *local_228;
int local_220 [10];
uint *local_1f8;
int *local_1f4;
int *local_1f0;
uint *local_1ec;
char *local_1e8;
uint *local_1e4;
int *local_1e0;
char *local_1dc;
uint *local_1d8;
int *local_1d4;
uint *local_1d0;
uint *local_1cc;
char *local_1c8;
uint local_1c4;
int *local_1c0;
int *local_1bc;
uint *local_1b8;
uint *local_1b4;
char *local_1b0;
uint local_1ac;
int *local_1a8;
char *local_1a4;
uint *local_1a0;
int *local_19c;
int *local_198;
uint *local_194;
char *local_190;
int local_18c;
int *local_188;
int local_184;
char *local_180;
int *local_17c;
uint local_178;
int *local_174;
int *local_170;
int *local_16c;
int *local_168;
int *local_164;
int *local_160;
int *local_15c;
int *local_158;
uint *local_154;
uint *local_150;
char *local_14c;
uint local_148;
int *local_144;
char *local_140;
uint *local_13c;
int local_138;
uint local_134;
uint *local_130;
char *local_12c;
uint *local_128;
undefined4 *local_124;
int *local_120;
undefined4 *local_11c;
int *local_118;
uint *local_114;
uint *local_110;
int *local_10c;
int local_108;
char *local_104;
char *local_100;
int *local_fc;
uint local_f8;
char *local_f4;
char *local_f0;
int local_ec;
undefined4 local_e8;
undefined4 local_e4;
float local_e0;
float local_dc;
undefined4 local_d8;
undefined4 local_d4;
undefined4 local_d0;
float local_cc;
float local_c8;
float local_c4;
float local_c0;
int local_bc;
int local_b8;
int local_b4;
uint local_b0;
int local_ac;
char *local_a8;
int *local_a4;
uint local_a0;
int *local_9c;
uint local_98;
char *local_94;
char *local_90;
char *local_8c;
char *local_88;
char *local_84;
char *local_80;
char *local_7c;
char *local_78;
float local_74;
char *local_70;
char *local_6c;
char *local_68;
char *local_64;
int local_60;
char *local_5c;
char *local_58;
char *local_54;
char *local_50;
char *local_4c;
char *local_48;
char *local_44;
char *local_40;
char *local_3c;
char *local_38;
int *local_34;
int *local_30;
int *local_2c;
int *local_28;
int *local_24;
int *local_20;
float local_1c;
float local_18;
float local_14;
undefined4 local_10;
undefined4 local_c;
undefined4 local_8;
if (param_5 != 0) {
local_44 = param_3;
FUN_004dbb24(&DAT_00524e20,s_DPLReadINIPage_processing_004f22dd,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,local_44,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,&DAT_004f22f8,(char *)0x0);
}
local_34 = FUN_00404720((int)param_2,param_3,s_objectpath_004f22fa);
if (local_34 != (int *)0x0) {
for (puVar3 = (undefined4 *)local_34[1]; puVar3 != (undefined4 *)0x0;
puVar3 = (undefined4 *)*puVar3) {
FUN_00497b18((char *)puVar3[1],1);
if (param_5 != 0) {
local_48 = (char *)FUN_00497b88();
FUN_004dbb24(&DAT_00524e20,s_objectpath___004f2305,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,local_48,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,&DAT_004f2312,(char *)0x0);
FUN_004d9c38(&DAT_00524e20);
}
}
if (local_34 != (int *)0x0) {
(**(code **)*local_34)(local_34,3);
}
}
local_34 = FUN_00404720((int)param_2,param_3,s_texmappath_004f2314);
if (local_34 != (int *)0x0) {
for (puVar3 = (undefined4 *)local_34[1]; puVar3 != (undefined4 *)0x0;
puVar3 = (undefined4 *)*puVar3) {
FUN_00498cb4((char *)puVar3[1],1);
if (param_5 != 0) {
local_4c = (char *)FUN_00498d24();
FUN_004dbb24(&DAT_00524e20,s_texmappath___004f231f,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,local_4c,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,&DAT_004f232c,(char *)0x0);
FUN_004d9c38(&DAT_00524e20);
}
}
if (local_34 != (int *)0x0) {
(**(code **)*local_34)(local_34,3);
}
}
local_34 = FUN_00404720((int)param_2,param_3,s_materialpath_004f232e);
if (local_34 != (int *)0x0) {
for (puVar3 = (undefined4 *)local_34[1]; puVar3 != (undefined4 *)0x0;
puVar3 = (undefined4 *)*puVar3) {
FUN_004978a0((char *)puVar3[1],1);
if (param_5 != 0) {
local_50 = (char *)FUN_00497910();
FUN_004dbb24(&DAT_00524e20,s_materialpath___004f233b,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,local_50,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,&DAT_004f234a,(char *)0x0);
FUN_004d9c38(&DAT_00524e20);
}
}
if (local_34 != (int *)0x0) {
(**(code **)*local_34)(local_34,3);
}
}
iVar2 = FUN_00404088((int)param_2,param_3,s_priorityobjectpath_004f234c,&local_3c);
if ((iVar2 != 0) && (FUN_00497b18(local_3c,0), param_5 != 0)) {
local_54 = local_3c;
FUN_004dbb24(&DAT_00524e20,s_priorityobjectpath___004f235f,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,local_54,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,&DAT_004f2374,(char *)0x0);
FUN_004d9c38(&DAT_00524e20);
}
iVar2 = FUN_00404088((int)param_2,param_3,s_prioritytexmappath_004f2376,&local_3c);
if ((iVar2 != 0) && (FUN_00498cb4(local_3c,0), param_5 != 0)) {
local_58 = local_3c;
FUN_004dbb24(&DAT_00524e20,s_prioritytexmappath___004f2389,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,local_58,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,&DAT_004f239e,(char *)0x0);
FUN_004d9c38(&DAT_00524e20);
}
iVar2 = FUN_00404088((int)param_2,param_3,s_prioritymaterialpath_004f23a0,&local_3c);
if ((iVar2 != 0) && (FUN_004978a0(local_3c,0), param_5 != 0)) {
local_5c = local_3c;
FUN_004dbb24(&DAT_00524e20,s_prioritymaterialpath___004f23b5,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,local_5c,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,&DAT_004f23cc,(char *)0x0);
FUN_004d9c38(&DAT_00524e20);
}
local_20 = FUN_00404720((int)param_2,param_3,s_cache_004f23ce);
if (local_20 != (int *)0x0) {
for (puVar3 = (undefined4 *)local_20[1]; puVar3 != (undefined4 *)0x0;
puVar3 = (undefined4 *)*puVar3) {
local_60 = FUN_00498448((char *)puVar3[1],0);
if (local_60 == 0) {
local_64 = (char *)puVar3[1];
FUN_004dbb24(&DAT_00524e20,s_Unable_to_cache_004f23d4,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,local_64,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,&DAT_004f23e5,(char *)0x0);
}
else if (param_5 != 0) {
local_68 = (char *)puVar3[1];
FUN_004dbb24(&DAT_00524e20,s_Caching_004f23e7,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,local_68,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,&DAT_004f23f0,(char *)0x0);
}
}
if (local_20 != (int *)0x0) {
(**(code **)*local_20)(local_20,3);
}
}
iVar2 = FUN_00404088((int)param_2,param_3,&DAT_004f23f2,&local_3c);
if (iVar2 != 0) {
FUN_004d7f84(local_3c,(byte *)s__f__f_004f23f7);
FUN_0048b56c(*(int *)(param_1 + 0x124),*(undefined4 *)(param_1 + 0x104),
*(undefined4 *)(param_1 + 0x108));
if (param_5 != 0) {
local_6c = local_3c;
FUN_004dbb24(&DAT_00524e20,s_Clip_Range_004f23fd,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,local_6c,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,&DAT_004f2409,(char *)0x0);
}
}
iVar2 = FUN_00404088((int)param_2,param_3,s_backgnd_004f240b,&local_3c);
if (iVar2 != 0) {
FUN_004d7f84(local_3c,(byte *)s__f__f__f_004f2413);
FUN_0048b608(*(int *)(param_1 + 0x124),*(undefined4 *)(param_1 + 0x10c),
*(undefined4 *)(param_1 + 0x110),*(undefined4 *)(param_1 + 0x114));
if (param_5 != 0) {
local_70 = local_3c;
FUN_004dbb24(&DAT_00524e20,s_Background_Color_004f241c,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,local_70,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,&DAT_004f242e,(char *)0x0);
}
}
iVar2 = FUN_00404088((int)param_2,param_3,s_viewangle_004f2430,&local_3c);
if (iVar2 != 0) {
FUN_004d7f84(local_3c,&DAT_004f243a);
FUN_0048b83c(0,0,0,DAT_004f3368,DAT_004f336c);
local_74 = *(float *)(param_1 + 0x118);
FUN_00460770(param_1,local_74);
FUN_0048b788(*(int *)(param_1 + 0x124),0);
if (param_5 != 0) {
local_78 = local_3c;
FUN_004dbb24(&DAT_00524e20,s_View_Angle_004f243d,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,local_78,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,&DAT_004f2449,(char *)0x0);
}
}
iVar2 = FUN_00404088((int)param_2,param_3,&DAT_004f244b,&local_3c);
if (iVar2 != 0) {
FUN_004d7f84(local_3c,(byte *)s__f__f__f__f__f_004f244f);
*(undefined4 *)(param_1 + 0xdc) = *(undefined4 *)(param_1 + 200);
*(undefined4 *)(param_1 + 0xe4) = *(undefined4 *)(param_1 + 0xd0);
*(undefined4 *)(param_1 + 0xe0) = *(undefined4 *)(param_1 + 0xcc);
*(undefined4 *)(param_1 + 0xe8) = *(undefined4 *)(param_1 + 0xd4);
*(undefined4 *)(param_1 + 0xec) = *(undefined4 *)(param_1 + 0xd8);
*(undefined4 *)(param_1 + 0xf0) = *(undefined4 *)(param_1 + 200);
*(undefined4 *)(param_1 + 0xf8) = *(undefined4 *)(param_1 + 0xd0);
*(undefined4 *)(param_1 + 0xf4) = *(undefined4 *)(param_1 + 0xcc);
*(undefined4 *)(param_1 + 0xfc) = *(undefined4 *)(param_1 + 0xd4);
*(undefined4 *)(param_1 + 0x100) = *(undefined4 *)(param_1 + 0xd8);
FUN_0048b6b4(*(int *)(param_1 + 0x124),5,0,0,0,0x3c23d70a,0x3d4ccccd);
if (param_5 != 0) {
local_7c = local_3c;
FUN_004dbb24(&DAT_00524e20,&DAT_004f245e,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,local_7c,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,&DAT_004f2463,(char *)0x0);
}
}
iVar2 = FUN_00404088((int)param_2,param_3,s_nosearchlightfog_004f2465,&local_3c);
if ((iVar2 != 0) && (FUN_004d7f84(local_3c,(byte *)s__f__f__f__f__f_004f2476), param_5 != 0)) {
local_80 = local_3c;
FUN_004dbb24(&DAT_00524e20,s_nosearchlightfog_004f2485,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,local_80,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,&DAT_004f2497,(char *)0x0);
}
iVar2 = FUN_00404088((int)param_2,param_3,s_ambient_004f2499,&local_3c);
if (iVar2 != 0) {
FUN_004d7f84(local_3c,(byte *)s__f__f__f_004f24a1);
puVar3 = FUN_0048973c();
*(undefined4 **)(param_1 + 0x3d0) = puVar3;
FUN_0048b1e0(*(int *)(param_1 + 0x3d0),2);
FUN_0048b26c(*(int *)(param_1 + 0x3d0),local_8,local_c,local_10);
FUN_0048d478(*(undefined4 **)(param_1 + 0x3d0));
if (param_5 != 0) {
local_84 = local_3c;
FUN_004dbb24(&DAT_00524e20,s_Ambient_Light_004f24ab,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,local_84,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,&DAT_004f24ba,(char *)0x0);
}
}
local_24 = FUN_00404720((int)param_2,param_3,s_light_004f24bc);
if (local_24 != (int *)0x0) {
iVar2 = FUN_00403b60((int)local_24);
if (iVar2 != 0) {
if (*(int *)(param_1 + 0x3dc) != 0) {
FUN_0040385c(s_All_lights_must_be_defined_on_a_s_004f24c2,
s_d__tesla_bt_munga_l4_L4VIDEO_CPP_004f24f9,0x81c);
}
iVar2 = FUN_00403b60((int)local_24);
*(int *)(param_1 + 0x3dc) = iVar2;
if (*(int *)(param_1 + 0x3dc) != 0) {
uVar4 = FUN_004022b0(*(int *)(param_1 + 0x3dc) << 2);
*(undefined4 *)(param_1 + 0x3d8) = uVar4;
uVar4 = FUN_004022b0(*(int *)(param_1 + 0x3dc) << 2);
*(undefined4 *)(param_1 + 0x3d4) = uVar4;
}
iVar2 = 0;
for (puVar3 = (undefined4 *)local_24[1]; puVar3 != (undefined4 *)0x0;
puVar3 = (undefined4 *)*puVar3) {
FUN_004d7f84(puVar3[1],(byte *)s__f__f__f__f__f__f_004f251a);
if (param_5 != 0) {
local_88 = (char *)puVar3[1];
FUN_004dbb24(&DAT_00524e20,s_Light_004f252c,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,local_88,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,&DAT_004f2533,(char *)0x0);
}
puVar5 = FUN_0048973c();
*(undefined4 **)(*(int *)(param_1 + 0x3d4) + iVar2 * 4) = puVar5;
uVar4 = FUN_00489708();
*(undefined4 *)(*(int *)(param_1 + 0x3d8) + iVar2 * 4) = uVar4;
FUN_00489ba8(*(int *)(*(int *)(param_1 + 0x3d8) + iVar2 * 4));
FUN_0048b1e0(*(int *)(*(int *)(param_1 + 0x3d4) + iVar2 * 4),3);
FUN_0048b26c(*(int *)(*(int *)(param_1 + 0x3d4) + iVar2 * 4),local_8,local_c,local_10);
FUN_0048b134(*(int *)(*(int *)(param_1 + 0x3d4) + iVar2 * 4),
*(int *)(*(int *)(param_1 + 0x3d8) + iVar2 * 4));
FUN_00491c90(*(int *)(*(int *)(param_1 + 0x3d8) + iVar2 * 4),local_1c,2);
FUN_00491c90(*(int *)(*(int *)(param_1 + 0x3d8) + iVar2 * 4),local_14,0);
FUN_00491c90(*(int *)(*(int *)(param_1 + 0x3d8) + iVar2 * 4),local_18,1);
FUN_0048d478(*(undefined4 **)(*(int *)(param_1 + 0x3d4) + iVar2 * 4));
FUN_0048d3e8(*(undefined4 **)(*(int *)(param_1 + 0x3d8) + iVar2 * 4));
iVar2 = iVar2 + 1;
}
}
if (local_24 != (int *)0x0) {
(**(code **)*local_24)(local_24,3);
}
}
local_28 = FUN_00404720((int)param_2,param_3,&DAT_004f2535);
if (local_28 != (int *)0x0) {
for (puVar3 = (undefined4 *)local_28[1]; puVar3 != (undefined4 *)0x0;
puVar3 = (undefined4 *)*puVar3) {
local_90 = (char *)(puVar3 + 3);
uVar6 = FUN_004dd1e0(local_90);
local_8c = (char *)puVar3[1];
if (param_5 != 0) {
local_98 = uVar6;
local_94 = local_8c;
FUN_004dbb24(&DAT_00524e20,&DAT_004f253a,(char *)0x0);
local_9c = FUN_004db78c(&DAT_00524e20,local_98);
FUN_004dbb24(local_9c,&DAT_004f253f,(char *)0x0);
FUN_004dbb24(local_9c,local_94,(char *)0x0);
FUN_004dbb24(local_9c,&DAT_004f2541,(char *)0x0);
}
if (((int)uVar6 < 0) || (0x27 < (int)uVar6)) {
FUN_0040385c(s_PSFX_id_number_was_not_in_the_al_004f2543,
s_d__tesla_bt_munga_l4_L4VIDEO_CPP_004f256f,0x86d);
}
if (*(int *)(param_1 + 0x2cc + uVar6 * 4) != 0) {
local_a0 = uVar6;
FUN_004dbb24(&DAT_00524e20,s_psfx__004f2590,(char *)0x0);
local_a4 = FUN_004db78c(&DAT_00524e20,local_a0);
FUN_004dbb24(local_a4,s_already_existed_from_an_earlier_p_004f2596,(char *)0x0);
FUN_004022d0(*(int **)(param_1 + 0x2cc + uVar6 * 4));
}
iVar2 = FUN_0045a9f8(param_1,local_8c);
*(int *)(param_1 + 0x2cc + uVar6 * 4) = iVar2;
}
if (local_28 != (int *)0x0) {
(**(code **)*local_28)(local_28,3);
}
}
local_2c = FUN_00404720((int)param_2,param_3,s_specialfx_004f25cc);
if (local_2c != (int *)0x0) {
for (puVar3 = (undefined4 *)local_2c[1]; puVar3 != (undefined4 *)0x0;
puVar3 = (undefined4 *)*puVar3) {
local_f0 = (char *)((int)puVar3 + 0x11);
local_b0 = FUN_004dd1e0(local_f0);
pcVar7 = (char *)puVar3[1];
if (param_5 != 0) {
local_f8 = local_b0;
local_f4 = pcVar7;
FUN_004dbb24(&DAT_00524e20,s_specialfx_004f25d6,(char *)0x0);
local_fc = FUN_004db78c(&DAT_00524e20,local_f8);
FUN_004dbb24(local_fc,&DAT_004f25e0,(char *)0x0);
FUN_004dbb24(local_fc,local_f4,(char *)0x0);
FUN_004dbb24(local_fc,&DAT_004f25e2,(char *)0x0);
}
FUN_004040d8((int)param_2,pcVar7,&DAT_004f25e4,&local_b4);
FUN_00404118((int)param_2,pcVar7,&DAT_004f25e9,&local_c0);
FUN_00404118((int)param_2,pcVar7,s_velocity_004f25ee,&local_c4);
FUN_00404118((int)param_2,pcVar7,s_v_bias_004f25f7,&local_c8);
FUN_00404118((int)param_2,pcVar7,s_y_off_004f25fe,&local_cc);
FUN_00404118((int)param_2,pcVar7,s_variance_004f2604,&local_dc);
FUN_00404118((int)param_2,pcVar7,s_gravity_004f260d,&local_e0);
FUN_004040d8((int)param_2,pcVar7,s_count_004f2615,&local_b8);
FUN_004040d8((int)param_2,pcVar7,s_repeats_004f261b,&local_bc);
FUN_00404088((int)param_2,pcVar7,&DAT_004f2623,&local_3c);
FUN_004d7f84(local_3c,(byte *)s__f__f__f_004f2628);
FUN_00404088((int)param_2,pcVar7,&DAT_004f2631,&local_3c);
FUN_004d7f84(local_3c,(byte *)s__f__f_004f2636);
FUN_00404088((int)param_2,pcVar7,s_texture_004f263c,&local_3c);
local_a8 = local_3c;
local_ec = FUN_00497730(local_3c,0,&local_ac);
if (local_ec == 0) {
local_100 = local_a8;
FUN_004dbb24(&DAT_00524e20,s_couldn_t_find_texture_004f2644,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,local_100,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s_for_an_effect_004f265b,(char *)0x0);
}
FUN_00490210(local_b0,local_ec,local_b4,local_c0,local_c4,local_c8,local_cc,local_d0,local_d4,
local_d8,local_dc,local_e0,local_e4,local_e8,local_b8,local_bc,3);
}
if (local_2c != (int *)0x0) {
(**(code **)*local_2c)(local_2c,3);
}
}
local_30 = FUN_00404720((int)param_2,param_3,s_include_004f266b);
if (local_30 != (int *)0x0) {
for (puVar3 = (undefined4 *)local_30[1]; puVar3 != (undefined4 *)0x0;
puVar3 = (undefined4 *)*puVar3) {
local_38 = (char *)puVar3[1];
FUN_0045b1b8(param_1,param_2,local_38,param_4,param_5);
if (param_5 != 0) {
local_104 = param_3;
FUN_004dbb24(&DAT_00524e20,s_DPLReadINIPage_returned_to_004f2673,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,local_104,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,&DAT_004f268f,(char *)0x0);
}
}
if (local_30 != (int *)0x0) {
(**(code **)*local_30)(local_30,3);
}
}
iVar2 = FUN_00404088((int)param_2,param_3,s_compare_004f2691,&local_40);
if (iVar2 != 0) {
piVar11 = FUN_004de998(local_220,4,10,1,FUN_00461280);
local_114 = (uint *)FUN_00402298(0x10);
if (local_114 == (uint *)0x0) {
local_110 = (uint *)0x0;
}
else {
local_110 = FUN_00402460(local_114,&DAT_004f2699);
}
local_110[3] = local_110[3] + 1;
local_11c = (undefined4 *)FUN_00402298(0x10);
if (local_11c == (undefined4 *)0x0) {
local_118 = (int *)0x0;
}
else {
local_118 = (int *)FUN_004023f4(local_11c);
}
local_118[3] = local_118[3] + 1;
local_124 = (undefined4 *)FUN_00402298(0x10);
if (local_124 == (undefined4 *)0x0) {
local_120 = (int *)0x0;
}
else {
local_120 = (int *)FUN_004023f4(local_124);
}
local_120[3] = local_120[3] + 1;
local_12c = local_40;
local_130 = (uint *)FUN_00402298(0x10);
if (local_130 == (uint *)0x0) {
local_128 = (uint *)0x0;
}
else {
local_128 = FUN_00402460(local_130,local_12c);
}
local_128[3] = local_128[3] + 1;
local_138 = *(int *)(DAT_004efc94 + 0x68);
if (param_5 != 0) {
FUN_004dbb24(&DAT_00524e20,s_compare___004f269b,(char *)0x0);
local_13c = local_128;
local_140 = (char *)local_128[2];
FUN_004dbb24(&DAT_00524e20,local_140,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,&DAT_004f26a6,(char *)0x0);
}
local_134 = 0;
while( true ) {
local_148 = local_134;
FUN_00402838(local_230,local_128,local_134,&DAT_004f26a8);
local_14c = local_228;
puVar9 = (uint *)FUN_00402298(0x10);
if (puVar9 == (uint *)0x0) {
local_150 = (uint *)0x0;
}
else {
local_150 = FUN_00402460(puVar9,local_14c);
}
local_150[3] = local_150[3] + 1;
FUN_004024d8((int *)local_230,2);
FUN_00402a4c((int *)&local_144,(int *)&local_120,(int *)&local_150);
uVar6 = (uint)(local_144[2] != 0);
piVar8 = local_144 + 3;
*piVar8 = *piVar8 + -1;
if (*piVar8 == 0) {
FUN_004024d8(local_144,3);
}
local_154 = local_150;
puVar9 = local_150 + 3;
*puVar9 = *puVar9 - 1;
if (*puVar9 == 0) {
FUN_004024d8((int *)local_150,3);
}
if (uVar6 == 0) break;
pcVar7 = (char *)local_120[2];
pcVar10 = s_location_004f26aa;
do {
if (*pcVar7 != *pcVar10) goto LAB_0045c510;
bVar12 = true;
if (*pcVar7 == '\0') break;
pcVar1 = pcVar7 + 1;
if (*pcVar1 != pcVar10[1]) goto LAB_0045c510;
pcVar7 = pcVar7 + 2;
pcVar10 = pcVar10 + 2;
bVar12 = *pcVar1 == '\0';
} while (!bVar12);
if (bVar12) {
iVar2 = FUN_00406fd4(local_138,*(int *)(param_4 + 4));
FUN_00402a98((int *)&local_158,local_220 + local_134,(char *)(iVar2 + 0xc));
local_15c = local_158;
piVar8 = local_158 + 3;
*piVar8 = *piVar8 + -1;
if (*piVar8 == 0) {
FUN_004024d8(local_158,3);
}
}
else {
LAB_0045c510:
pcVar10 = &DAT_004f26b3;
pcVar7 = (char *)local_120[2];
do {
if (*pcVar7 != *pcVar10) goto LAB_0045c595;
bVar12 = true;
if (*pcVar7 == '\0') break;
pcVar1 = pcVar7 + 1;
if (*pcVar1 != pcVar10[1]) goto LAB_0045c595;
pcVar7 = pcVar7 + 2;
pcVar10 = pcVar10 + 2;
bVar12 = *pcVar1 == '\0';
} while (!bVar12);
if (bVar12) {
FUN_00402a98((int *)&local_160,local_220 + local_134,*(char **)(param_4 + 0x30));
local_164 = local_160;
piVar8 = local_160 + 3;
*piVar8 = *piVar8 + -1;
if (*piVar8 == 0) {
FUN_004024d8(local_160,3);
}
}
else {
LAB_0045c595:
pcVar10 = s_weather_004f26b8;
pcVar7 = (char *)local_120[2];
do {
if (*pcVar7 != *pcVar10) goto LAB_0045c61a;
bVar12 = true;
if (*pcVar7 == '\0') break;
pcVar1 = pcVar7 + 1;
if (*pcVar1 != pcVar10[1]) goto LAB_0045c61a;
pcVar7 = pcVar7 + 2;
pcVar10 = pcVar10 + 2;
bVar12 = *pcVar1 == '\0';
} while (!bVar12);
if (bVar12) {
FUN_00402a98((int *)&local_168,local_220 + local_134,*(char **)(param_4 + 0x34));
local_16c = local_168;
piVar8 = local_168 + 3;
*piVar8 = *piVar8 + -1;
if (*piVar8 == 0) {
FUN_004024d8(local_168,3);
}
}
else {
LAB_0045c61a:
pcVar10 = s_scenario_004f26c0;
pcVar7 = (char *)local_120[2];
do {
if (*pcVar7 != *pcVar10) goto LAB_0045c69f;
bVar12 = true;
if (*pcVar7 == '\0') break;
pcVar1 = pcVar7 + 1;
if (*pcVar1 != pcVar10[1]) goto LAB_0045c69f;
pcVar7 = pcVar7 + 2;
pcVar10 = pcVar10 + 2;
bVar12 = *pcVar1 == '\0';
} while (!bVar12);
if (bVar12) {
FUN_00402a98((int *)&local_170,local_220 + local_134,*(char **)(param_4 + 0x38));
local_174 = local_170;
piVar8 = local_170 + 3;
*piVar8 = *piVar8 + -1;
if (*piVar8 == 0) {
FUN_004024d8(local_170,3);
}
}
else {
LAB_0045c69f:
local_178 = local_134;
FUN_004dbb24(&DAT_00524e20,s_Mission_variable_004f26c9,(char *)0x0);
piVar8 = FUN_004db78c(&DAT_00524e20,local_178);
FUN_004dbb24(piVar8,&DAT_004f26db,(char *)0x0);
local_17c = local_120;
local_180 = (char *)local_120[2];
FUN_004dbb24(piVar8,local_180,(char *)0x0);
FUN_004dbb24(piVar8,s_IS_AN_UNKNOWN_MISSION_VARIABLE_004f26de,(char *)0x0);
}
}
}
}
local_134 = local_134 + 1;
}
if (param_5 != 0) {
FUN_004dbb24(&DAT_00524e20,s_comparing_to__004f26ff,(char *)0x0);
local_184 = 0;
if (0 < (int)local_134) {
do {
local_188 = local_220 + local_184;
local_18c = *local_188;
local_190 = *(char **)(local_18c + 8);
FUN_004dbb24(&DAT_00524e20,local_190,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,&DAT_004f270e,(char *)0x0);
local_184 = local_184 + 1;
} while (local_184 < (int)local_134);
}
FUN_004dbb24(&DAT_00524e20,&DAT_004f2711,(char *)0x0);
}
local_10c = FUN_00404720((int)param_2,param_3,s_branch_004f2713);
for (puVar3 = (undefined4 *)local_10c[1]; puVar3 != (undefined4 *)0x0;
puVar3 = (undefined4 *)*puVar3) {
puVar5 = (undefined4 *)FUN_00402298(0x10);
if (puVar5 == (undefined4 *)0x0) {
local_194 = (uint *)0x0;
}
else {
local_194 = (uint *)FUN_004023f4(puVar5);
}
local_194[3] = local_194[3] + 1;
puVar5 = (undefined4 *)FUN_00402298(0x10);
if (puVar5 == (undefined4 *)0x0) {
local_198 = (int *)0x0;
}
else {
local_198 = (int *)FUN_004023f4(puVar5);
}
local_198[3] = local_198[3] + 1;
FUN_00402a98((int *)&local_19c,(int *)&local_194,(char *)puVar3[1]);
piVar8 = local_19c + 3;
*piVar8 = *piVar8 + -1;
if (*piVar8 == 0) {
FUN_004024d8(local_19c,3);
}
if (param_5 != 0) {
FUN_004dbb24(&DAT_00524e20,s_branch___004f271a,(char *)0x0);
local_1a0 = local_194;
local_1a4 = (char *)local_194[2];
FUN_004dbb24(&DAT_00524e20,local_1a4,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,&DAT_004f2724,(char *)0x0);
}
local_108 = 1;
uVar6 = 0;
if (0 < (int)local_134) {
do {
local_1ac = uVar6;
FUN_00402838(local_240,local_194,uVar6,&DAT_004f2726);
local_1b0 = local_238;
local_1b8 = (uint *)FUN_00402298(0x10);
if (local_1b8 == (uint *)0x0) {
local_1b4 = (uint *)0x0;
}
else {
local_1b4 = FUN_00402460(local_1b8,local_1b0);
}
local_1b4[3] = local_1b4[3] + 1;
FUN_004024d8((int *)local_240,2);
FUN_00402a4c((int *)&local_1a8,(int *)&local_198,(int *)&local_1b4);
piVar8 = local_1a8 + 3;
*piVar8 = *piVar8 + -1;
if (*piVar8 == 0) {
FUN_004024d8(local_1a8,3);
}
puVar9 = local_1b4 + 3;
*puVar9 = *puVar9 - 1;
if (*puVar9 == 0) {
FUN_004024d8((int *)local_1b4,3);
}
local_1bc = local_220 + uVar6;
iVar2 = FUN_004027d8((int)local_198,*local_1bc);
if ((iVar2 != 0) && (iVar2 = FUN_004027d8((int)local_198,(int)local_110), iVar2 != 0)) {
local_108 = 0;
break;
}
uVar6 = uVar6 + 1;
} while ((int)uVar6 < (int)local_134);
}
if (local_108 != 0) {
local_1c4 = uVar6;
FUN_00402838((uint *)&stack0xfffffdb0,local_194,uVar6,&DAT_004f2728);
local_1c8 = local_248;
local_1d0 = (uint *)FUN_00402298(0x10);
if (local_1d0 == (uint *)0x0) {
local_1cc = (uint *)0x0;
}
else {
local_1cc = FUN_00402460(local_1d0,local_1c8);
}
local_1cc[3] = local_1cc[3] + 1;
FUN_004024d8((int *)&stack0xfffffdb0,2);
FUN_00402a4c((int *)&local_1c0,(int *)&local_198,(int *)&local_1cc);
local_1d4 = local_1c0;
piVar8 = local_1c0 + 3;
*piVar8 = *piVar8 + -1;
if (*piVar8 == 0) {
FUN_004024d8(local_1c0,3);
}
local_1d8 = local_1cc;
puVar9 = local_1cc + 3;
*puVar9 = *puVar9 - 1;
if (*puVar9 == 0) {
FUN_004024d8((int *)local_1cc,3);
}
FUN_0045b1b8((int)piVar11,param_2,(char *)local_198[2],param_4,param_5);
if (param_5 != 0) {
local_1dc = param_3;
FUN_004dbb24(&DAT_00524e20,s_DPLReadINIPage_returned_to_004f272a,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,local_1dc,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,&DAT_004f2746,(char *)0x0);
}
local_1e0 = local_198;
piVar11 = local_198 + 3;
*piVar11 = *piVar11 + -1;
if (*piVar11 == 0) {
FUN_004024d8(local_198,3);
}
local_1e4 = local_194;
puVar9 = local_194 + 3;
*puVar9 = *puVar9 - 1;
if (*puVar9 == 0) {
FUN_004024d8((int *)local_194,3);
}
break;
}
piVar8 = local_198 + 3;
*piVar8 = *piVar8 + -1;
if (*piVar8 == 0) {
FUN_004024d8(local_198,3);
}
puVar9 = local_194 + 3;
*puVar9 = *puVar9 - 1;
if (*puVar9 == 0) {
FUN_004024d8((int *)local_194,3);
}
}
if (local_10c != (int *)0x0) {
(**(code **)*local_10c)(local_10c,3);
}
if (local_108 == 0) {
local_1e8 = (char *)*param_2;
FUN_004dbb24(&DAT_00524e20,s_BRANCH_ERROR_IN___004f2748,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,local_1e8,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s___NO_MATCH_FOUND___004f275a,(char *)0x0);
FUN_004d9c38(&DAT_00524e20);
}
local_1ec = local_128;
puVar9 = local_128 + 3;
*puVar9 = *puVar9 - 1;
if (*puVar9 == 0) {
FUN_004024d8((int *)local_128,3);
}
local_1f0 = local_120;
piVar11 = local_120 + 3;
*piVar11 = *piVar11 + -1;
if (*piVar11 == 0) {
FUN_004024d8(local_120,3);
}
local_1f4 = local_118;
piVar11 = local_118 + 3;
*piVar11 = *piVar11 + -1;
if (*piVar11 == 0) {
FUN_004024d8(local_118,3);
}
local_1f8 = local_110;
puVar9 = local_110 + 3;
*puVar9 = *puVar9 - 1;
if (*puVar9 == 0) {
FUN_004024d8((int *)local_110,3);
}
FUN_004de8d4(local_220,4,10,1,FUN_004612b0);
}
return;
}
/* @0045ce5c file=? name=FUN_0045ce5c */
void __cdecl FUN_0045ce5c(int param_1,int param_2)
{
char *pcVar1;
int *piVar2;
int iVar3;
int extraout_var;
int iVar4;
pcVar1 = (char *)FUN_004dee74(s_L4DPLCFG_004f276d);
iVar4 = extraout_var;
if (pcVar1 == (char *)0x0) {
FUN_004dbb24(&DAT_00524e20,s_L4DPLCFG_not_defined__using_dpld_004f2776,(char *)0x0);
pcVar1 = s_dpldflt_ini_004f27a0;
}
piVar2 = (int *)FUN_00402298(0x20);
if (piVar2 == (int *)0x0) {
piVar2 = (int *)0x0;
}
else {
piVar2 = FUN_00403e84(piVar2,pcVar1,1);
}
if ((*(byte *)(piVar2 + 7) & 2) == 0) {
iVar3 = piVar2[3];
}
else {
iVar3 = piVar2[4];
}
if (iVar3 == 0) {
FUN_004dbb24(&DAT_00524e20,s_Renderer_config_notation_file_004f27ac,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,pcVar1,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s_was_empty__can_t_continue_004f27cb,(char *)0x0);
}
iVar3 = FUN_00403f84((int)piVar2,&DAT_004f27e6);
if (iVar3 == 0) {
iVar3 = FUN_00404190((int)piVar2,s_dpl_config_004f27fb,s_debug_004f2806,
(undefined4 *)&stack0xfffffff8);
if (iVar3 == 0) {
iVar4 = 0;
}
pcVar1 = (char *)*piVar2;
FUN_004dbb24(&DAT_00524e20,s_READING_OLD_FORMAT_INI_FILE___004f280c,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,pcVar1,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s_____hope_this_works_004f282a,(char *)0x0);
FUN_00497b4c(s___video_004f283f,(char *)0x0,(char *)0x0);
FUN_00498ce8(s___video_004f2847,(char *)0x0,(char *)0x0);
FUN_004978d4(s___video_004f284f,(char *)0x0,(char *)0x0);
FUN_0045b1b8(param_1,piVar2,s_dpl_config_004f2857,param_2,iVar4);
}
else {
iVar3 = FUN_00404190((int)piVar2,&DAT_004f27eb,s_debug_004f27f0,(undefined4 *)&stack0xfffffff8);
if (iVar3 == 0) {
iVar4 = 0;
}
FUN_0045b1b8(param_1,piVar2,&DAT_004f27f6,param_2,iVar4);
}
if (iVar4 != 0) {
pcVar1 = (char *)FUN_00497b88();
FUN_004dbb24(&DAT_00524e20,s_ObjectFilePath___004f2862,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,pcVar1,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,&DAT_004f2875,(char *)0x0);
FUN_004d9c38(&DAT_00524e20);
pcVar1 = (char *)FUN_00498d24();
FUN_004dbb24(&DAT_00524e20,s_TexmapFilePath___004f2877,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,pcVar1,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,&DAT_004f288a,(char *)0x0);
FUN_004d9c38(&DAT_00524e20);
pcVar1 = (char *)FUN_00497910();
FUN_004dbb24(&DAT_00524e20,s_MaterialFilePath___004f288c,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,pcVar1,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,&DAT_004f289f,(char *)0x0);
FUN_004d9c38(&DAT_00524e20);
}
FUN_00403ecc(piVar2,3);
FUN_0048d42c(*(undefined4 **)(param_1 + 0x124));
return;
}
/* @0045d0f4 file=? name=FUN_0045d0f4 */
void __cdecl FUN_0045d0f4(int *param_1,byte param_2)
{
int *piVar1;
int iVar2;
if (param_1 != (int *)0x0) {
*param_1 = (int)&PTR_FUN_004f330c;
FUN_0045ff4c((undefined4 *)0x0,0,0,0);
iVar2 = 0;
piVar1 = param_1 + 0xb3;
do {
if ((int *)*piVar1 != (int *)0x0) {
FUN_004022d0((int *)*piVar1);
*piVar1 = 0;
}
iVar2 = iVar2 + 1;
piVar1 = piVar1 + 1;
} while (iVar2 < 0x28);
if ((int *)param_1[0xf4] != (int *)0x0) {
FUN_00489938((int *)param_1[0xf4]);
}
if ((param_1[0xf6] != 0) && (param_1[0xf5] != 0)) {
for (iVar2 = 0; iVar2 < param_1[0xf7]; iVar2 = iVar2 + 1) {
FUN_00489e58(*(int *)(param_1[0xf6] + iVar2 * 4));
FUN_004898b8(*(int **)(param_1[0xf6] + iVar2 * 4));
}
FUN_004022e8((int *)param_1[0xf5]);
FUN_004022e8((int *)param_1[0xf6]);
}
FUN_00401c70(DAT_004f1ab0,3);
DAT_004f1ab0 = (int *)0x0;
FUN_0041c44b(param_1 + 0xef,2);
FUN_00461431(param_1 + 0xe9,2);
FUN_0046134b(param_1 + 0xe4,2);
FUN_004612fc(param_1 + 0xdf,2);
FUN_004368f4(param_1,0);
if ((param_2 & 1) != 0) {
FUN_004022d0(param_1);
}
}
return;
}
/* @0045d228 file=? name=FUN_0045d228 */
undefined4 __cdecl FUN_0045d228(int param_1)
{
FUN_00436b00(param_1);
return 1;
}
/* @0045d23c file=? name=FUN_0045d23c */
void __cdecl FUN_0045d23c(undefined4 param_1,byte *param_2)
{
int iVar1;
undefined4 *puVar2;
int local_8;
iVar1 = FUN_00497730(s_bmap_bmap1_tex_004f28a1,0,&local_8);
if (iVar1 == 0) {
FUN_004dbb24(&DAT_00524e20,s_WARNING__textures_for_player_nam_004f28b0,(char *)0x0);
}
else {
puVar2 = (undefined4 *)FUN_0048c2f0(iVar1);
if (puVar2 == (undefined4 *)0x0) {
FUN_004dbb24(&DAT_00524e20,s_WARNING__texmap_for_player_names_004f28e0,(char *)0x0);
}
else {
FUN_0048c460((int)puVar2,param_2,0x80,0x40);
FUN_0048d5b0(puVar2);
}
}
return;
}
/* @0045d2b4 file=? name=FUN_0045d2b4 */
void __cdecl FUN_0045d2b4(undefined4 param_1,int param_2,uint param_3,uint *param_4)
{
int iVar1;
int iVar2;
ushort *puVar3;
uint local_10;
uint local_c;
int local_8;
puVar3 = *(ushort **)(param_2 + 0x18);
if ((param_3 & 1) != 0) {
param_4 = param_4 + 0x1000;
}
switch(param_3) {
case 1:
case 2:
local_c = 0xf000;
local_10 = 0xffff0fff;
break;
case 3:
case 4:
local_c = 0xf00;
local_10 = 0xfffff0ff;
break;
case 5:
case 6:
local_c = 0xf00000;
local_10 = 0xff0fffff;
break;
case 7:
case 8:
local_c = 0xf0000;
local_10 = 0xfff0ffff;
break;
case 9:
case 10:
local_c = 0xf0000000;
local_10 = 0xfffffff;
break;
case 0xb:
case 0xc:
local_c = 0xf000000;
local_10 = 0xf0ffffff;
}
iVar1 = 0xf;
local_8 = 0;
do {
iVar2 = 0;
do {
if ((1 << ((byte)iVar1 & 0x1f) & (uint)*puVar3) == 0) {
*param_4 = *param_4 & local_10;
}
else {
*param_4 = *param_4 | local_c;
}
param_4 = param_4 + 1;
iVar1 = iVar1 + -1;
if (iVar1 < 0) {
iVar1 = 0xf;
puVar3 = puVar3 + 1;
}
iVar2 = iVar2 + 1;
} while (iVar2 < 0x80);
local_8 = local_8 + 1;
} while (local_8 < 0x20);
return;
}
/* @0045d3cc file=? name=FUN_0045d3cc */
void __cdecl FUN_0045d3cc(undefined4 param_1,int param_2)
{
if ((param_2 != 0x68) && (param_2 != 0x6a)) {
return;
}
FUN_00498448(s_flamebig_bgf_004f290e,0);
FUN_00498448(s_thrdbr_bgf_004f291b,0);
FUN_00498448(s_ldbr_bgf_004f2926,0);
FUN_00498448(s_flamesml_bgf_004f292f,0);
return;
}
/* @0045d41c file=munga_l4/l4video.cpp name=FUN_0045d41c */
void __cdecl
FUN_0045d41c(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,undefined4 param_5
)
{
undefined4 *puVar1;
int iVar2;
undefined4 *puVar3;
undefined4 local_39c;
undefined4 local_398;
undefined4 local_394;
undefined4 local_390;
undefined4 local_38c;
undefined4 local_388;
undefined4 local_384 [12];
undefined4 local_354;
undefined4 local_350;
undefined4 local_34c;
undefined4 local_348 [12];
undefined4 local_318;
undefined4 local_314;
undefined4 local_310;
undefined4 local_30c [12];
undefined4 local_2dc;
undefined4 local_2d8;
undefined4 local_2d4;
undefined4 local_2d0;
undefined4 local_2cc;
undefined4 local_2c8;
float local_2c4 [18];
undefined4 local_27c [12];
undefined4 local_24c;
undefined4 local_248;
undefined4 local_244;
undefined4 local_240;
undefined4 local_23c;
undefined4 local_238;
undefined4 local_234;
undefined4 local_230;
undefined4 local_22c;
undefined4 local_228;
undefined4 local_224;
undefined4 local_220;
float local_21c [18];
undefined4 local_1d4 [12];
undefined4 local_1a4;
undefined4 local_1a0;
undefined4 local_19c;
undefined4 local_198;
undefined4 local_194;
undefined4 local_190;
undefined4 local_18c;
undefined4 local_188;
undefined4 local_184;
undefined4 local_180;
undefined4 local_17c;
undefined4 local_178;
undefined4 local_174 [12];
undefined4 local_144;
undefined4 local_140;
undefined4 local_13c;
undefined4 local_138;
undefined4 local_134;
undefined4 local_130;
undefined4 *local_12c;
undefined4 *local_128;
undefined4 *local_124;
undefined4 *local_120;
int local_11c;
undefined4 *local_118;
int local_114;
undefined4 *local_110;
int local_10c;
undefined4 *local_108;
undefined4 *local_104;
undefined4 *local_100;
undefined4 *local_fc;
undefined4 *local_f8;
undefined4 *local_f4;
undefined4 *local_f0;
int local_ec;
undefined4 *local_e8;
undefined4 *local_e4;
undefined4 *local_e0;
int local_dc;
undefined4 *local_d8;
undefined4 *local_d4;
undefined4 *local_d0;
undefined4 *local_cc;
undefined4 *local_c8;
undefined4 *local_c4;
undefined4 *local_c0;
undefined4 *local_bc;
int local_b8;
int local_b4;
int local_b0;
undefined4 *local_ac;
undefined4 *local_a8;
undefined4 *local_a4;
undefined4 *local_a0;
int local_9c;
int local_98;
undefined4 *local_94;
undefined4 *local_90;
undefined4 *local_8c;
undefined4 *local_88;
undefined4 *local_84;
undefined4 *local_80;
undefined4 *local_7c;
undefined4 *local_78;
int local_74;
undefined4 *local_70;
undefined4 *local_6c;
undefined4 *local_68;
undefined4 *local_64;
undefined4 *local_60;
undefined4 *local_5c;
undefined4 local_58;
undefined4 local_54;
undefined4 local_50;
undefined4 *local_4c;
undefined4 *local_48;
int local_44;
undefined4 *local_40;
undefined4 *local_3c;
undefined4 *local_38;
undefined4 *local_34;
undefined4 *local_30;
undefined4 *local_2c;
undefined4 local_28;
undefined4 local_24;
undefined4 local_20;
undefined4 *local_1c;
int local_18;
undefined4 *local_14;
undefined4 *local_10;
undefined4 *local_c;
int local_8;
puVar1 = (undefined4 *)FUN_00402298(100);
if (puVar1 == (undefined4 *)0x0) {
puVar1 = (undefined4 *)0x0;
}
else {
puVar1 = FUN_00453578(puVar1,param_2,1,0,*(undefined4 *)(param_1 + 300),1,0);
}
switch(param_5) {
case 0:
local_8 = FUN_00498448(s_shock_bgf_004f293c,0);
local_138 = 0x40600000;
local_134 = 0x40600000;
local_130 = 0x40600000;
local_144 = 0;
local_140 = 0;
local_13c = 0;
FUN_0040aadc(local_174);
local_10 = (undefined4 *)FUN_00402298(0xa8);
if (local_10 == (undefined4 *)0x0) {
local_c = (undefined4 *)0x0;
}
else {
local_c = FUN_00455930(local_10,param_2,1,local_8,*(undefined4 *)(param_1 + 300),1,0,
puVar1[0xb],local_174,&local_138,&local_144,0,0);
}
puVar1 = (undefined4 *)FUN_00402298(0x48);
if (puVar1 == (undefined4 *)0x0) {
local_14 = (undefined4 *)0x0;
}
else {
local_14 = FUN_00456610(puVar1,param_2,1,0x3f000000,1,(undefined4 *)0x0,0,0x3f800000,0);
}
iVar2 = FUN_00497730(s_btfx_firesmoke1_scr_tex_004f2946,0,&local_18);
if (iVar2 == 0) {
FUN_004dbb24(&DAT_00524e20,s_couldn_t_find_texture_btfx_fires_004f295e,(char *)0x0);
}
puVar1 = (undefined4 *)FUN_00402298(0xfc);
if (puVar1 == (undefined4 *)0x0) {
local_1c = (undefined4 *)0x0;
}
else {
local_1c = FUN_00456cf0(puVar1,param_2,1,0x3f800000,0x3f800000,0x3f800000,0x3f800000,
0x3f800000,0x3f800000,0x3f800000,0x3f800000,0x3f800000,0,0,0,0,
0x40800000,0x3e4ccccd,0xbd4ccccd,iVar2,0.0,0,0x3f000000,0x3f000000,
0x3f000000,0x3f000000,0x3f000000,0x3f000000,0x3f000000,0x3f000000,
0x3f000000,0,0,0,0,0x3dcccccd,0x3dcccccd,0xbd4ccccd,0,local_14 + 0x11)
;
}
puVar1 = (undefined4 *)FUN_0048a38c(local_c[0xb],1);
if (puVar1 == (undefined4 *)0x0) {
FUN_0040385c(s_explosion_1_instance_came_back_n_004f299b,
s_d__tesla_bt_munga_l4_L4VIDEO_CPP_004f29c0,0xb58);
}
FUN_0048ae48((int)puVar1,local_1c[7]);
FUN_0048d5d4(puVar1);
break;
case 1:
local_8 = FUN_00498448(s_exp_bgf_004f29e1,0);
local_180 = 0x3e19999a;
local_17c = 0x3e19999a;
local_178 = 0x3e19999a;
local_18c = 0x3e3851ec;
local_188 = 0x3e6147ae;
local_184 = 0x3e3851ec;
local_198 = 0;
local_194 = 0;
local_190 = 0;
local_1a4 = 0;
local_1a0 = 0;
local_19c = 0;
FUN_0040aadc(local_1d4);
FUN_0040aadc(local_21c + 6);
local_21c[3] = 0.0;
local_21c[4] = 0.0;
local_21c[5] = 0.0;
local_20 = 0;
local_24 = 0x3f800000;
local_28 = 0;
local_21c[0] = 0.0;
local_21c[1] = 1.0;
local_21c[2] = 0.0;
FUN_0040ac6c(local_21c + 6,local_21c);
FUN_0040b0ac((int)(local_21c + 6),3,local_21c + 3);
local_30 = (undefined4 *)FUN_00402298(0xa8);
if (local_30 == (undefined4 *)0x0) {
local_2c = (undefined4 *)0x0;
}
else {
local_2c = FUN_00455930(local_30,param_2,1,local_8,*(undefined4 *)(param_1 + 300),1,0,
puVar1[0xb],local_1d4,&local_180,&local_198,0,0);
}
local_38 = (undefined4 *)FUN_00402298(0xa8);
if (local_38 == (undefined4 *)0x0) {
local_34 = (undefined4 *)0x0;
}
else {
local_34 = FUN_00455930(local_38,param_2,1,local_8,*(undefined4 *)(param_1 + 300),1,0,
puVar1[0xb],local_21c + 6,&local_18c,&local_1a4,0,0);
}
puVar1 = (undefined4 *)FUN_00402298(0x48);
if (puVar1 == (undefined4 *)0x0) {
local_3c = (undefined4 *)0x0;
}
else {
local_3c = FUN_00456610(puVar1,param_2,1,0x40400000,1,(undefined4 *)0x0,0,0x3f800000,0);
}
puVar1 = (undefined4 *)FUN_00402298(0x48);
if (puVar1 == (undefined4 *)0x0) {
local_40 = (undefined4 *)0x0;
}
else {
local_40 = FUN_00456610(puVar1,param_2,1,0x40000000,1,(undefined4 *)0x0,0,0x3f800000,0);
}
iVar2 = FUN_00497730(s_btfx_firesmoke1_scr_tex_004f29e9,0,&local_44);
if (iVar2 == 0) {
FUN_004dbb24(&DAT_00524e20,s_couldn_t_find_texture_btfx_fires_004f2a01,(char *)0x0);
}
puVar1 = (undefined4 *)FUN_00402298(0xfc);
if (puVar1 == (undefined4 *)0x0) {
local_48 = (undefined4 *)0x0;
}
else {
local_48 = FUN_00456cf0(puVar1,param_2,1,0x3f666666,0,0,0x3f800000,0x3e4ccccd,0,0x3f800000,
0x3e4ccccd,0,0,0,0,0,0x41200000,0x3f19999a,0xbd4ccccd,iVar2,0.0,0,
0x3e99999a,0,0,0x3f000000,0,0,0x3e4ccccd,0,0,0,0,0,0,0x3e800000,
0x3e800000,0xbd4ccccd,0x41700000,local_3c + 0x11);
}
puVar1 = (undefined4 *)FUN_00402298(0xfc);
if (puVar1 == (undefined4 *)0x0) {
local_4c = (undefined4 *)0x0;
}
else {
local_4c = FUN_00456cf0(puVar1,param_2,1,0x3f666666,0,0,0x3f800000,0x3f19999a,0x3e99999a,
0x3f800000,0x3ecccccd,0x3e4ccccd,0,0,0,0,0x41000000,0x3e4ccccd,
0xbd4ccccd,iVar2,0.0,0,0x3dcccccd,0,0,0,0,0,0x3dcccccd,0,0,0,0,0,0,
0x3e800000,0x3e800000,0xbd4ccccd,0x41700000,local_40 + 0x11);
}
puVar1 = (undefined4 *)FUN_0048a38c(local_2c[0xb],1);
puVar3 = (undefined4 *)FUN_0048a38c(local_34[0xb],1);
if (puVar1 == (undefined4 *)0x0) {
FUN_0040385c(s_explosion_1_instance_came_back_n_004f2a3e,
s_d__tesla_bt_munga_l4_L4VIDEO_CPP_004f2a63,0xbe6);
}
if (puVar3 == (undefined4 *)0x0) {
FUN_0040385c(s_explosion_2_instance_came_back_n_004f2a84,
s_d__tesla_bt_munga_l4_L4VIDEO_CPP_004f2aa9,0xbe8);
}
FUN_0048ae48((int)puVar1,local_48[7]);
FUN_0048ae48((int)puVar3,local_4c[7]);
FUN_0048d5d4(puVar1);
FUN_0048d5d4(puVar3);
break;
case 2:
local_8 = FUN_00498448(s_exp_bgf_004f2aca,0);
local_228 = 0x3f800000;
local_224 = 0x3e4ccccd;
local_220 = 0x3f800000;
local_234 = 0x3f400000;
local_230 = 0x3f400000;
local_22c = 0x3f400000;
local_240 = 0xbbed9168;
local_23c = 0xbb83126f;
local_238 = 0xbbed9168;
local_24c = 0xbc6368f1;
local_248 = 0xbc6368f1;
local_244 = 0xbc6368f1;
FUN_0040aadc(local_27c);
FUN_0040aadc(local_2c4 + 6);
local_2c4[3] = 0.0;
local_2c4[4] = 0.0;
local_2c4[5] = 0.0;
local_50 = 0;
local_54 = 0x3f800000;
local_58 = 0;
local_2c4[0] = 0.0;
local_2c4[1] = 1.0;
local_2c4[2] = 0.0;
FUN_0040ac6c(local_2c4 + 6,local_2c4);
FUN_0040b0ac((int)(local_2c4 + 6),3,local_2c4 + 3);
local_60 = (undefined4 *)FUN_00402298(0xa8);
if (local_60 == (undefined4 *)0x0) {
local_5c = (undefined4 *)0x0;
}
else {
local_5c = FUN_00455930(local_60,param_2,1,local_8,*(undefined4 *)(param_1 + 300),1,0,
puVar1[0xb],local_27c,&local_228,&local_240,0,0);
}
local_68 = (undefined4 *)FUN_00402298(0xa8);
if (local_68 == (undefined4 *)0x0) {
local_64 = (undefined4 *)0x0;
}
else {
local_64 = FUN_00455930(local_68,param_2,1,local_8,*(undefined4 *)(param_1 + 300),1,0,
puVar1[0xb],local_2c4 + 6,&local_234,&local_24c,0,0);
}
puVar1 = (undefined4 *)FUN_00402298(0x48);
if (puVar1 == (undefined4 *)0x0) {
local_6c = (undefined4 *)0x0;
}
else {
local_6c = FUN_00456610(puVar1,param_2,1,0x40400000,1,(undefined4 *)0x0,0,0x3f800000,0);
}
puVar1 = (undefined4 *)FUN_00402298(0x48);
if (puVar1 == (undefined4 *)0x0) {
local_70 = (undefined4 *)0x0;
}
else {
local_70 = FUN_00456610(puVar1,param_2,1,0x40000000,1,(undefined4 *)0x0,0,0x3f800000,0);
}
iVar2 = FUN_00497730(s_btfx_firesmoke1_scr_tex_004f2ad2,0,&local_74);
if (iVar2 == 0) {
FUN_004dbb24(&DAT_00524e20,s_couldn_t_find_texture_btfx_fires_004f2aea,(char *)0x0);
}
local_7c = (undefined4 *)FUN_00402298(0xfc);
if (local_7c == (undefined4 *)0x0) {
local_78 = (undefined4 *)0x0;
}
else {
local_78 = FUN_00456cf0(local_7c,param_2,1,0x3f666666,0,0,0x3f800000,0x3e4ccccd,0,0x3f800000,
0x3e4ccccd,0,0,0,0,0,0x41000000,0x3e4ccccd,0xbd4ccccd,iVar2,0.0,0,
0x3e99999a,0,0,0x3f000000,0,0,0x3e4ccccd,0,0,0,0,0,0,0x3e800000,
0x3e800000,0xbd4ccccd,0x41700000,local_6c + 0x11);
}
local_84 = (undefined4 *)FUN_00402298(0xfc);
if (local_84 == (undefined4 *)0x0) {
local_80 = (undefined4 *)0x0;
}
else {
local_80 = FUN_00456cf0(local_84,param_2,1,0x3f666666,0,0,0x3f800000,0x3f19999a,0x3ecccccd,
0x3f800000,0x3e99999a,0x3e4ccccd,0,0,0,0,0x41000000,0x3e4ccccd,
0xbd4ccccd,iVar2,0.0,0,0x3dcccccd,0,0,0,0,0,0,0,0,0,0,0,0,0x3e800000,
0x3e800000,0xbd4ccccd,0x41700000,local_70 + 0x11);
}
puVar1 = (undefined4 *)FUN_0048a38c(local_5c[0xb],1);
puVar3 = (undefined4 *)FUN_0048a38c(local_64[0xb],1);
if (puVar1 == (undefined4 *)0x0) {
FUN_0040385c(s_explosion_1_instance_came_back_n_004f2b27,
s_d__tesla_bt_munga_l4_L4VIDEO_CPP_004f2b4c,0xc7b);
}
if (puVar3 == (undefined4 *)0x0) {
FUN_0040385c(s_explosion_2_instance_came_back_n_004f2b6d,
s_d__tesla_bt_munga_l4_L4VIDEO_CPP_004f2b92,0xc7d);
}
FUN_0048ae48((int)puVar1,local_78[7]);
FUN_0048ae48((int)puVar3,local_80[7]);
FUN_0048d5d4(puVar1);
FUN_0048d5d4(puVar3);
break;
case 3:
local_8 = FUN_00498448(s_spk1_bgf_004f2bb3,0);
local_2d0 = 0x3dcccccd;
local_2cc = 0x3dcccccd;
local_2c8 = 0x3dcccccd;
local_2dc = 0;
local_2d8 = 0;
local_2d4 = 0;
FUN_0040aadc(local_30c);
local_8c = (undefined4 *)FUN_00402298(0xa8);
if (local_8c == (undefined4 *)0x0) {
local_88 = (undefined4 *)0x0;
}
else {
local_88 = FUN_00455930(local_8c,param_2,1,local_8,*(undefined4 *)(param_1 + 300),1,0,
puVar1[0xb],local_30c,&local_2d0,&local_2dc,0xbe19999a,0);
}
local_94 = (undefined4 *)FUN_00402298(0x48);
if (local_94 == (undefined4 *)0x0) {
local_90 = (undefined4 *)0x0;
}
else {
local_90 = FUN_00456610(local_94,param_2,1,0x3f000000,1,(undefined4 *)0x0,0,0x3f800000,0);
}
local_9c = FUN_00497730(s_btfx_firesmoke1_scr_tex_004f2bbc,0,&local_98);
if (local_9c == 0) {
FUN_004dbb24(&DAT_00524e20,s_couldn_t_find_texture_btfx_fires_004f2bd4,(char *)0x0);
}
local_a4 = (undefined4 *)FUN_00402298(0xfc);
if (local_a4 == (undefined4 *)0x0) {
local_a0 = (undefined4 *)0x0;
}
else {
local_a0 = FUN_00456cf0(local_a4,param_2,1,0x3f800000,0x3f800000,0,0x3f800000,0x3f800000,0,
0x3f800000,0x3f800000,0,0,0,0,0,0x3f800000,0x3f800000,0x3f800000,
local_9c,0.0,2,0x3f666666,0,0,0x3f666666,0,0,0x3f666666,0,0,0,0,0,0,
0x3f800000,0x3f800000,0x3f800000,0,local_90 + 0x11);
}
puVar1 = (undefined4 *)FUN_0048a38c(local_88[0xb],1);
if (puVar1 == (undefined4 *)0x0) {
FUN_0040385c(s_explosion_1_instance_came_back_n_004f2c11,
s_d__tesla_bt_munga_l4_L4VIDEO_CPP_004f2c36,0xcd1);
}
FUN_0048ae48((int)puVar1,local_a0[7]);
FUN_0048d5d4(puVar1);
break;
case 4:
local_318 = 0;
local_314 = 0;
local_310 = 0;
FUN_0040aadc(local_348);
local_354 = 0;
local_350 = 0x40c66666;
local_34c = 0;
FUN_0040aadc(local_384);
FUN_0040b0ac((int)local_384,3,&local_354);
local_ac = (undefined4 *)FUN_00402298(0x50);
if (local_ac == (undefined4 *)0x0) {
local_a8 = (undefined4 *)0x0;
}
else {
local_a8 = FUN_0045848c(local_ac,param_2,*(int *)(param_1 + 300),0,1,0,local_384,puVar1[0xb]);
}
local_b0 = FUN_00498448(s_thrdbr_bgf_004f2c57,0);
local_b4 = FUN_00498448(s_ldbr_bgf_004f2c62,0);
local_b8 = FUN_00498448(s_flamesml_bgf_004f2c6b,0);
local_c0 = (undefined4 *)FUN_00402298(0x30);
if (local_c0 == (undefined4 *)0x0) {
local_bc = (undefined4 *)0x0;
}
else {
local_bc = FUN_004564a8(local_c0,param_2,1,0.55,0.0);
}
local_390 = 0xbf800000;
local_38c = 0x40a00000;
local_388 = 0xbf800000;
local_c4 = (undefined4 *)FUN_00402298(0x38);
if (local_c4 != (undefined4 *)0x0) {
FUN_00456868(local_c4,param_2,1,local_bc + 0xb,0xf,local_a8[4],&local_390);
}
local_cc = (undefined4 *)FUN_00402298(0x30);
if (local_cc == (undefined4 *)0x0) {
local_c8 = (undefined4 *)0x0;
}
else {
local_c8 = FUN_004564a8(local_cc,param_2,1,0.25,0.0);
}
local_d4 = (undefined4 *)FUN_00402298(0x50);
if (local_d4 == (undefined4 *)0x0) {
local_d0 = (undefined4 *)0x0;
}
else {
local_d0 = FUN_0045848c(local_d4,param_2,*(int *)(param_1 + 300),local_b0,1,0,local_348,
puVar1[0xb]);
}
local_d8 = (undefined4 *)FUN_00402298(0x40);
if (local_d8 != (undefined4 *)0x0) {
FUN_0045635c(local_d8,param_2,1,local_d0[4],-0.025,local_c8 + 0xb);
}
local_dc = FUN_0048a38c(local_d0[4],1);
local_e0 = (undefined4 *)FUN_00402298(0x2c);
if (local_e0 != (undefined4 *)0x0) {
FUN_0045612c(local_e0,param_2,1,local_dc,1,local_c8 + 0xb);
}
local_e8 = (undefined4 *)FUN_00402298(0x50);
if (local_e8 == (undefined4 *)0x0) {
local_e4 = (undefined4 *)0x0;
}
else {
local_e4 = FUN_0045848c(local_e8,param_2,*(int *)(param_1 + 300),local_b4,1,0,local_348,
local_d0[4]);
}
local_ec = FUN_0048a38c(local_e4[4],1);
local_f0 = (undefined4 *)FUN_00402298(0x2c);
if (local_f0 != (undefined4 *)0x0) {
FUN_0045612c(local_f0,param_2,1,local_ec,1,local_c8 + 0xb);
}
local_f8 = (undefined4 *)FUN_00402298(0x30);
if (local_f8 == (undefined4 *)0x0) {
local_f4 = (undefined4 *)0x0;
}
else {
local_f4 = FUN_004564a8(local_f8,param_2,1,0.25,0.0);
}
local_fc = (undefined4 *)FUN_00402298(0x50);
if (local_fc == (undefined4 *)0x0) {
puVar1 = (undefined4 *)0x0;
}
else {
puVar1 = FUN_0045848c(local_fc,param_2,*(int *)(param_1 + 300),0,1,0,local_348,puVar1[0xb]);
}
local_100 = (undefined4 *)FUN_00402298(0x40);
if (local_100 != (undefined4 *)0x0) {
FUN_0045635c(local_100,param_2,1,puVar1[4],-0.01,local_f4 + 0xb);
}
local_108 = (undefined4 *)FUN_00402298(0x50);
if (local_108 == (undefined4 *)0x0) {
local_104 = (undefined4 *)0x0;
}
else {
local_104 = FUN_0045848c(local_108,param_2,*(int *)(param_1 + 300),local_b8,1,0,local_348,
puVar1[4]);
}
local_10c = FUN_0048a38c(local_104[4],1);
local_110 = (undefined4 *)FUN_00402298(0x2c);
if (local_110 != (undefined4 *)0x0) {
FUN_0045612c(local_110,param_2,1,local_10c,1,local_f4 + 0xb);
}
local_114 = FUN_00498448(s_flamebig_bgf_004f2c78,0);
local_118 = (undefined4 *)FUN_00402298(0x50);
if (local_118 == (undefined4 *)0x0) {
puVar1 = (undefined4 *)0x0;
}
else {
puVar1 = FUN_0045848c(local_118,param_2,*(int *)(param_1 + 300),local_114,1,0,local_348,
puVar1[4]);
}
FUN_0048a674(puVar1[4],2);
FUN_0048d3e8((undefined4 *)puVar1[4]);
local_11c = FUN_0048a38c(puVar1[4],1);
local_120 = (undefined4 *)FUN_00402298(0x2c);
if (local_120 != (undefined4 *)0x0) {
FUN_0045612c(local_120,param_2,1,local_11c,1,local_f4 + 0xb);
}
break;
case 5:
local_39c = 0;
local_398 = 0;
local_394 = 0;
local_128 = (undefined4 *)FUN_00402298(0x30);
if (local_128 == (undefined4 *)0x0) {
local_124 = (undefined4 *)0x0;
}
else {
local_124 = FUN_004564a8(local_128,param_2,1,0.15,0.0);
}
local_12c = (undefined4 *)FUN_00402298(0x38);
if (local_12c != (undefined4 *)0x0) {
FUN_00456868(local_12c,param_2,1,local_124 + 0xb,0xc,puVar1[0xb],&local_39c);
}
break;
case 6:
FUN_004dbb24(&DAT_00524e20,s_Explosion_effect_104_called__thi_004f2c85,(char *)0x0);
}
return;
}
/* @0045e744 file=? name=FUN_0045e744 */
void __cdecl FUN_0045e744(int param_1,int param_2,int param_3,int param_4)
{
uint uVar1;
undefined4 *puVar2;
int iVar3;
undefined4 *puVar4;
undefined4 local_1e0 [12];
undefined4 local_1b0 [12];
undefined4 local_180 [12];
int local_150 [3];
int local_144 [4];
uint local_134;
undefined4 *local_130;
undefined4 *local_12c;
undefined4 *local_128;
undefined4 *local_124;
undefined4 *local_120;
undefined4 *local_11c;
undefined4 *local_118;
undefined4 *local_114;
undefined4 *local_110;
char *local_10c;
char *local_108;
int local_104;
undefined4 *local_100;
undefined4 *local_fc;
undefined4 local_f8;
undefined4 local_f4;
int local_f0;
undefined4 *local_ec;
undefined4 *local_e8;
undefined4 *local_e4;
undefined4 *local_e0;
undefined4 *local_dc;
undefined4 *local_d8;
undefined4 *local_d4;
undefined4 *local_d0;
undefined4 *local_cc;
undefined4 *local_c8;
int local_c4;
undefined4 *local_c0;
int local_bc;
int local_b8;
int local_b4;
int local_b0;
int local_ac;
int local_a8;
int local_a4;
int local_a0;
undefined4 *local_9c;
undefined4 *local_98;
undefined4 *local_94;
undefined4 *local_90;
int local_8c;
int local_88;
int local_84;
undefined4 *local_80;
char *local_7c;
undefined4 *local_78;
char *local_74;
int local_70;
undefined4 *local_6c;
undefined4 *local_68;
int local_64;
undefined4 *local_60;
int local_5c;
uint local_58;
undefined4 *local_54;
undefined4 *local_50;
int local_4c;
undefined4 *local_48;
undefined4 *local_44;
undefined4 *local_40;
undefined4 *local_3c;
undefined4 *local_38;
char *local_34;
char *local_30;
int local_2c;
undefined4 *local_28;
undefined4 *local_24;
undefined4 local_20;
undefined4 local_1c;
int local_18;
undefined4 local_14;
undefined4 *local_10;
int local_c;
char *local_8;
FUN_00452cad(local_144,0);
local_10 = (undefined4 *)0x0;
DAT_004f1aa8 = param_2;
if (param_3 != 0) {
FUN_0045a0c4(local_144,param_3);
}
FUN_004614d7(local_150,(int)local_144);
iVar3 = *(int *)(param_2 + 4);
if (iVar3 < 0x47) {
if (iVar3 == 0x46) {
if ((*(uint *)(param_2 + 0x28) & 0xc) == 0) {
local_84 = param_2;
local_88 = param_2 + 0x220;
local_8c = param_2 + 0x224;
local_90 = (undefined4 *)FUN_00402298(0xbc);
if (local_90 != (undefined4 *)0x0) {
FUN_00454a70(local_90,param_2,1,local_88,local_8c);
}
}
}
else if (iVar3 < 0x33) {
if ((iVar3 != 0x32) && (iVar3 != 0x30)) {
if (iVar3 != 0x31) {
LAB_0045f121:
puVar2 = &DAT_004e107c;
puVar4 = local_1e0;
for (iVar3 = 0xc; iVar3 != 0; iVar3 = iVar3 + -1) {
*puVar4 = *puVar2;
puVar2 = puVar2 + 1;
puVar4 = puVar4 + 1;
}
if (param_3 == 0) {
FUN_00436a48(param_1,param_2);
DAT_004f1aa8 = 0;
FUN_00461515(local_150,2);
FUN_00452ccc(local_144,2);
return;
}
if (param_4 == 1) {
local_f4 = 1;
local_f8 = 0;
}
else {
local_f4 = 3;
local_f8 = 0xffffffff;
}
local_104 = 1;
(**(code **)(local_150[0] + 4))(local_150);
LAB_0045f52e:
while (iVar3 = (**(code **)(local_150[0] + 0x28))(local_150), iVar3 != 0) {
local_8 = *(char **)(iVar3 + 0xc);
local_c = *(int *)(local_8 + 0x10);
uVar1 = *(uint *)(local_8 + 0x14);
if ((local_c == 2) || (local_c == 3)) {
local_f0 = FUN_00498448(local_8,0);
if (local_f0 == 0) goto code_r0x0045f253;
goto LAB_0045f2a8;
}
local_108 = local_8;
FUN_004dbb24(&DAT_00524e20,s_L4VIDEO_cpp_wrong_video_resource_004f2d43,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,local_108,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,&DAT_004f2d75,(char *)0x0);
}
goto LAB_0045f549;
}
(**(code **)(local_150[0] + 4))(local_150);
while (iVar3 = (**(code **)(local_150[0] + 0x28))(local_150), iVar3 != 0) {
local_7c = *(char **)(iVar3 + 0xc);
iVar3 = FUN_004dd1e0(local_7c);
if ((iVar3 < 100) || (999 < iVar3)) {
local_80 = (undefined4 *)(param_2 + 0x100);
FUN_004606d4(param_1,*local_80,*(undefined4 *)(param_2 + 0x104),
*(undefined4 *)(param_2 + 0x108),iVar3,0,0);
}
else {
FUN_0045d41c(param_1,param_2,param_3,param_4,iVar3 + -100);
}
}
}
}
else if (iVar3 == 0x3f) {
local_6c = (undefined4 *)FUN_00402298(100);
if (local_6c == (undefined4 *)0x0) {
local_68 = (undefined4 *)0x0;
}
else {
local_68 = FUN_00453578(local_6c,param_2,1,0,*(undefined4 *)(param_1 + 300),1,0);
}
local_70 = FUN_0041bfc0(param_2,s_SimulationState_004f2d33);
(**(code **)(local_150[0] + 4))(local_150);
while (iVar3 = (**(code **)(local_150[0] + 0x28))(local_150), iVar3 != 0) {
local_74 = *(char **)(iVar3 + 0xc);
local_64 = FUN_004dd1e0(local_74);
local_78 = (undefined4 *)FUN_00402298(0x3c);
if (local_78 != (undefined4 *)0x0) {
FUN_004585f8(local_78,param_2,*(undefined4 *)(param_1 + 300),&DAT_004e0f80,local_68[0xb],
local_70,2,local_64,0.01);
}
}
}
else {
if (iVar3 != 0x45) goto LAB_0045f121;
if (param_4 == 1) {
local_98 = (undefined4 *)FUN_00402298(100);
if (local_98 == (undefined4 *)0x0) {
local_94 = (undefined4 *)0x0;
}
else {
local_94 = FUN_00453578(local_98,param_2,1,0,*(undefined4 *)(param_1 + 300),1,0);
}
local_9c = (undefined4 *)FUN_00402298(0x5c);
if (local_9c != (undefined4 *)0x0) {
FUN_004579a8(local_9c,param_2,*(int *)(param_1 + 300),&DAT_004e107c,local_94[0xb],
*(undefined4 **)(param_1 + 0x124),(undefined4 *)0x0);
}
}
}
}
else {
if (iVar3 < 0x5f) {
if (iVar3 != 0x5e) {
if (iVar3 == 0x54) goto LAB_0045f549;
if (iVar3 != 0x56) goto LAB_0045f121;
}
puVar2 = &DAT_004e107c;
puVar4 = local_180;
for (iVar3 = 0xc; iVar3 != 0; iVar3 = iVar3 + -1) {
*puVar4 = *puVar2;
puVar2 = puVar2 + 1;
puVar4 = puVar4 + 1;
}
if (param_3 == 0) {
FUN_00436a48(param_1,param_2);
DAT_004f1aa8 = 0;
FUN_00461515(local_150,2);
FUN_00452ccc(local_144,2);
return;
}
local_1c = 3;
local_20 = 0xffffffff;
local_2c = 1;
(**(code **)(local_150[0] + 4))(local_150);
LAB_0045eb35:
while (iVar3 = (**(code **)(local_150[0] + 0x28))(local_150), iVar3 != 0) {
local_8 = *(char **)(iVar3 + 0xc);
local_c = *(int *)(local_8 + 0x10);
uVar1 = *(uint *)(local_8 + 0x14);
if ((local_c == 2) || (local_c == 3)) {
local_18 = FUN_00498448(local_8,0);
if (local_18 == 0) goto code_r0x0045e91e;
goto LAB_0045e96a;
}
local_30 = local_8;
FUN_004dbb24(&DAT_00524e20,s_L4VIDEO_cpp_wrong_video_resource_004f2ccb,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,local_30,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,&DAT_004f2cfd,(char *)0x0);
}
goto LAB_0045f549;
}
if (iVar3 == 0x5f) {
local_b8 = 0;
(**(code **)(local_150[0] + 4))(local_150);
while (iVar3 = (**(code **)(local_150[0] + 0x28))(local_150), iVar3 != 0) {
local_8 = *(char **)(iVar3 + 0xc);
switch(local_b8) {
case 0:
local_a0 = FUN_00498448(local_8,0);
break;
case 1:
local_a4 = FUN_00498448(local_8,0);
break;
case 2:
local_a8 = FUN_00498448(local_8,0);
break;
case 3:
local_ac = FUN_00498448(local_8,0);
break;
case 4:
local_b0 = FUN_00498448(local_8,0);
break;
case 5:
local_b4 = FUN_00498448(local_8,0);
}
local_b8 = local_b8 + 1;
}
local_bc = **(int **)(param_2 + 0x128);
local_c0 = (undefined4 *)(local_bc + 0xec);
local_c4 = *(int *)(*(int *)(param_2 + 0x128) + 4);
local_c8 = (undefined4 *)(local_c4 + 0xec);
local_d0 = (undefined4 *)FUN_00402298(100);
if (local_d0 == (undefined4 *)0x0) {
local_cc = (undefined4 *)0x0;
}
else {
local_cc = FUN_00453578(local_d0,param_2,0,local_a0,*(undefined4 *)(param_1 + 300),1,0);
}
local_10 = (undefined4 *)local_cc[0xb];
FUN_0040aadc(local_1b0);
local_d8 = (undefined4 *)FUN_00402298(100);
if (local_d8 == (undefined4 *)0x0) {
local_d4 = (undefined4 *)0x0;
}
else {
local_d4 = FUN_00457bf4(local_d8,param_2,*(int *)(param_1 + 300),local_a4,1,0,local_1b0,
local_cc[0xb],local_c0);
}
local_e0 = (undefined4 *)FUN_00402298(100);
if (local_e0 == (undefined4 *)0x0) {
local_dc = (undefined4 *)0x0;
}
else {
local_dc = FUN_00457bf4(local_e0,param_2,*(int *)(param_1 + 300),local_a8,1,0,local_1b0,
local_cc[0xb],local_c8);
}
local_e4 = (undefined4 *)FUN_00402298(0x30);
if (local_e4 != (undefined4 *)0x0) {
FUN_00453474(local_e4,param_2,0,local_ac,local_cc[0xb],1,0,1);
}
local_e8 = (undefined4 *)FUN_00402298(0x30);
if (local_e8 != (undefined4 *)0x0) {
FUN_00453474(local_e8,param_2,0,local_b0,local_d4[5],1,0,1);
}
local_ec = (undefined4 *)FUN_00402298(0x30);
if (local_ec != (undefined4 *)0x0) {
FUN_00453474(local_ec,param_2,0,local_b4,local_dc[5],1,0,1);
}
}
else {
if (iVar3 != 0x7d2) goto LAB_0045f121;
(**(code **)(local_150[0] + 4))(local_150);
iVar3 = (**(code **)(local_150[0] + 0x28))(local_150);
local_8 = *(char **)(iVar3 + 0xc);
local_5c = FUN_00498448(local_8,0);
local_60 = (undefined4 *)FUN_00402298(0x50);
if (local_60 != (undefined4 *)0x0) {
FUN_00452e18(local_60,param_2,1,local_5c,*(int *)(param_1 + 300));
}
}
}
LAB_0045f549:
FUN_0045a134((int)local_144);
DAT_004f1aa8 = 0;
if (local_10 != (undefined4 *)0x0) {
FUN_0045a994(param_1,(int)local_10,param_2);
}
FUN_00461515(local_150,2);
FUN_00452ccc(local_144,2);
return;
code_r0x0045e91e:
local_34 = local_8;
FUN_004dbb24(&DAT_00524e20,s_L4VIDEO_cpp_couldn_t_load_object_004f2cff,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,local_34,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,&DAT_004f2d21,(char *)0x0);
if (local_2c != 0) {
LAB_0045e96a:
if (local_2c == 0) {
if ((uVar1 | 7) == 0) {
local_48 = (undefined4 *)FUN_00402298(0x30);
if (local_48 == (undefined4 *)0x0) {
puVar2 = (undefined4 *)0x0;
}
else {
puVar2 = FUN_00453474(local_48,param_2,0,local_18,local_24,local_1c,local_20,1);
}
local_28 = (undefined4 *)0x0;
local_14 = puVar2[0xb];
}
else {
local_44 = (undefined4 *)FUN_00402298(0x50);
if (local_44 == (undefined4 *)0x0) {
local_40 = (undefined4 *)0x0;
}
else {
local_40 = FUN_0045848c(local_44,param_2,*(int *)(param_1 + 300),local_18,local_1c,
local_20,local_180,local_24);
}
local_28 = (undefined4 *)local_40[4];
local_14 = local_40[6];
}
}
else {
local_2c = 0;
local_3c = (undefined4 *)FUN_00402298(100);
if (local_3c == (undefined4 *)0x0) {
local_38 = (undefined4 *)0x0;
}
else {
local_38 = FUN_00453578(local_3c,param_2,0,local_18,*(undefined4 *)(param_1 + 300),local_1c,
local_20);
}
local_28 = (undefined4 *)local_38[0xb];
local_14 = local_38[0xc];
local_24 = local_28;
local_10 = local_28;
}
local_4c = FUN_0041bfc0(param_2,s_SimulationState_004f2d23);
if (local_c == 2) {
local_50 = (undefined4 *)FUN_00402298(0x30);
if (local_50 != (undefined4 *)0x0) {
FUN_00456224(local_50,param_2,2,local_14,0,local_4c,1);
}
}
else if ((local_c == 3) &&
(local_54 = (undefined4 *)FUN_00402298(0x30), local_54 != (undefined4 *)0x0)) {
FUN_00456224(local_54,param_2,2,local_14,1,local_4c,1);
}
if ((local_28 != (undefined4 *)0x0) && ((uVar1 & 7) != 0)) {
local_58 = (uint)((uVar1 & 1) != 0);
if ((uVar1 & 2) != 0) {
local_58 = local_58 | 2;
}
if ((uVar1 & 4) != 0) {
local_58 = local_58 | 4;
}
FUN_0048a674((int)local_28,local_58);
FUN_0048d3e8(local_28);
}
}
goto LAB_0045eb35;
code_r0x0045f253:
local_10c = local_8;
FUN_004dbb24(&DAT_00524e20,s_L4VIDEO_cpp_couldn_t_load_object_004f2d77,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,local_10c,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,&DAT_004f2d99,(char *)0x0);
if (local_104 != 0) {
LAB_0045f2a8:
if (local_104 == 0) {
if ((uVar1 | 7) == 0) {
local_130 = (undefined4 *)FUN_00402298(0x30);
if (local_130 != (undefined4 *)0x0) {
FUN_00453474(local_130,param_2,0,local_f0,local_fc,local_f4,local_f8,1);
}
local_100 = (undefined4 *)0x0;
}
else {
local_12c = (undefined4 *)FUN_00402298(0x50);
if (local_12c == (undefined4 *)0x0) {
local_128 = (undefined4 *)0x0;
}
else {
local_128 = FUN_0045848c(local_12c,param_2,*(int *)(param_1 + 300),local_f0,local_f4,
local_f8,local_1e0,local_fc);
}
local_100 = (undefined4 *)local_128[4];
}
}
else {
local_104 = 0;
iVar3 = FUN_0041a1a4(**(int **)(param_2 + 0xc),0x4e4518);
if (iVar3 == 0) {
local_11c = (undefined4 *)FUN_00402298(100);
if (local_11c == (undefined4 *)0x0) {
local_118 = (undefined4 *)0x0;
}
else {
local_118 = FUN_00453578(local_11c,param_2,0,local_f0,*(undefined4 *)(param_1 + 300),
local_f4,local_f8);
}
local_fc = (undefined4 *)local_118[0xb];
}
else {
local_114 = (undefined4 *)FUN_00402298(100);
if (local_114 == (undefined4 *)0x0) {
local_110 = (undefined4 *)0x0;
}
else {
local_110 = FUN_00453578(local_114,param_2,1,local_f0,*(undefined4 *)(param_1 + 300),
local_f4,local_f8);
}
local_fc = (undefined4 *)local_110[0xb];
}
local_10 = local_fc;
if (param_4 == 1) {
local_120 = (undefined4 *)FUN_0041bfc0(param_2,s_EyepointRotation_004f2d9b);
local_124 = (undefined4 *)FUN_00402298(0x5c);
if (local_124 != (undefined4 *)0x0) {
FUN_004579a8(local_124,param_2,*(int *)(param_1 + 300),&DAT_004e107c,local_fc,
*(undefined4 **)(param_1 + 0x124),local_120);
}
}
local_100 = local_fc;
}
if ((local_100 != (undefined4 *)0x0) && ((uVar1 & 7) != 0)) {
local_134 = (uint)((uVar1 & 1) != 0);
if ((uVar1 & 2) != 0) {
local_134 = local_134 | 2;
}
if ((uVar1 & 4) != 0) {
local_134 = local_134 | 4;
}
FUN_0048a674((int)local_100,local_134);
FUN_0048d3e8(local_100);
}
}
goto LAB_0045f52e;
}
/* @0045f59c file=munga_l4/l4video.cpp name=FUN_0045f59c */
void __cdecl FUN_0045f59c(int param_1)
{
int iVar1;
float *pfVar2;
int iVar3;
uint *puVar4;
float local_cc [12];
float local_9c [12];
float local_6c [12];
float local_3c [12];
uint *local_c;
int local_8;
FUN_0040aadc(local_3c);
FUN_0040aadc(local_6c);
FUN_0040aadc(local_9c);
FUN_0040aadc(local_cc);
iVar1 = FUN_00417ab4(param_1 + 0x40);
pfVar2 = (float *)FUN_0041bfc0(iVar1,s_EyepointRotation_004f2dac);
iVar3 = FUN_0041a1a4(**(int **)(iVar1 + 0xc),0x4e4afc);
if (iVar3 == 0) {
FUN_0040ab44(local_3c,(undefined4 *)(iVar1 + 0x100));
if (pfVar2 == (float *)0x0) {
FUN_0040bc54((float *)(param_1 + 0x50),local_3c);
}
else {
FUN_0040bc54(local_6c,local_3c);
FUN_0040ac6c(local_9c,pfVar2);
FUN_0040bc54(local_cc,local_9c);
FUN_0040b104((float *)(param_1 + 0x50),local_6c,local_cc);
}
}
else {
local_8 = iVar1;
local_c = (uint *)FUN_00402298(0x10);
if (local_c == (uint *)0x0) {
puVar4 = (uint *)0x0;
}
else {
puVar4 = FUN_00402460(local_c,s_siteeyepoint_004f2dbd);
}
puVar4[3] = puVar4[3] + 1;
iVar1 = FUN_00424b60(local_8,(int *)puVar4);
if (iVar1 == 0) {
FUN_0040385c(s_DPLRenderer__SetupCull_jointed_m_004f2dca,
s_d__tesla_bt_munga_l4_L4VIDEO_CPP_004f2e04,5000);
}
if (pfVar2 == (float *)0x0) {
FUN_0040385c(s_DPLRenderer__SetupCull_jointed_m_004f2e25,
s_d__tesla_bt_munga_l4_L4VIDEO_CPP_004f2e6d,0x138c);
}
FUN_00424da8(local_8,iVar1,local_3c);
if (pfVar2 == (float *)0x0) {
FUN_0040bc54((float *)(param_1 + 0x50),local_3c);
}
else {
FUN_0040bc54(local_6c,local_3c);
FUN_0040ac6c(local_9c,pfVar2);
FUN_0040bc54(local_cc,local_9c);
FUN_0040b104((float *)(param_1 + 0x50),local_6c,local_cc);
}
}
return;
}
/* @0045f784 file=? name=FUN_0045f784 */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
void __cdecl FUN_0045f784(int param_1)
{
*(undefined4 *)(param_1 + 0x84) = 0;
*(undefined4 *)(param_1 + 0x88) = 0;
*(undefined4 *)(param_1 + 0x8c) = 0;
*(undefined4 *)(param_1 + 0x90) = 0;
*(undefined4 *)(param_1 + 0x98) = 0;
*(undefined4 *)(param_1 + 0x94) = 56000;
*(undefined4 *)(param_1 + 0x9c) = 0;
*(float *)(param_1 + 0xa4) = *(float *)(param_1 + 0x80) + _DAT_0045f7d8;
return;
}
/* @0045f7dc file=? name=FUN_0045f7dc */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
void __cdecl FUN_0045f7dc(int param_1)
{
int *piVar1;
undefined4 uVar2;
undefined2 uVar3;
undefined2 uVar4;
if (*(int *)(param_1 + 0x98) != 0) {
uVar3 = (undefined2)*(undefined4 *)(param_1 + 0x98);
uVar4 = (undefined2)((uint)*(undefined4 *)(param_1 + 0x98) >> 0x10);
FUN_004dbb24(&DAT_00524e20,s_Frames_004f2e8e,(char *)0x0);
piVar1 = FUN_004db880(&DAT_00524e20,CONCAT22(uVar4,uVar3));
FUN_004dbb24(piVar1,&DAT_004f2e96,(char *)0x0);
piVar1 = FUN_004db634(&DAT_00524e20,
(float10)(float)(((float10)*(uint *)(param_1 + 0x9c) /
(float10)*(uint *)(param_1 + 0x98)) *
(float10)_DAT_0045fa04));
FUN_004dbb24(piVar1,s___of_the_frames_were_under_the_t_004f2e98,(char *)0x0);
uVar2 = FUN_004dcd94();
uVar3 = (undefined2)uVar2;
uVar4 = (undefined2)((uint)uVar2 >> 0x10);
FUN_004dbb24(&DAT_00524e20,s_Average_Cull_004f2eca,(char *)0x0);
piVar1 = FUN_004db880(&DAT_00524e20,CONCAT22(uVar4,uVar3));
FUN_004dbb24(piVar1,&DAT_004f2ed8,(char *)0x0);
uVar2 = FUN_004dcd94();
uVar3 = (undefined2)uVar2;
uVar4 = (undefined2)((uint)uVar2 >> 0x10);
FUN_004dbb24(&DAT_00524e20,s_Average_Draw_004f2eda,(char *)0x0);
piVar1 = FUN_004db880(&DAT_00524e20,CONCAT22(uVar4,uVar3));
FUN_004dbb24(piVar1,&DAT_004f2ee8,(char *)0x0);
uVar2 = FUN_004dcd94();
uVar3 = (undefined2)uVar2;
uVar4 = (undefined2)((uint)uVar2 >> 0x10);
FUN_004dbb24(&DAT_00524e20,s_Average_Pixel_Planes_004f2eea,(char *)0x0);
piVar1 = FUN_004db880(&DAT_00524e20,CONCAT22(uVar4,uVar3));
FUN_004dbb24(piVar1,&DAT_004f2f00,(char *)0x0);
uVar2 = FUN_004dcd94();
uVar3 = (undefined2)uVar2;
uVar4 = (undefined2)((uint)uVar2 >> 0x10);
FUN_004dbb24(&DAT_00524e20,s_Average_Frame_Time_004f2f02,(char *)0x0);
piVar1 = FUN_004db880(&DAT_00524e20,CONCAT22(uVar4,uVar3));
FUN_004dbb24(piVar1,&DAT_004f2f16,(char *)0x0);
}
return;
}
/* @0045fbf4 file=? name=FUN_0045fbf4 */
void __cdecl FUN_0045fbf4(int param_1,undefined4 param_2)
{
int iVar1;
if (*(int *)(param_1 + 0x2c8) == 100) {
FUN_0045fc24(param_1);
}
iVar1 = *(int *)(param_1 + 0x2c8);
*(int *)(param_1 + 0x2c8) = *(int *)(param_1 + 0x2c8) + 1;
*(undefined4 *)(param_1 + 0x134 + iVar1 * 4) = param_2;
return;
}
/* @0045fc24 file=? name=FUN_0045fc24 */
void __cdecl FUN_0045fc24(int param_1)
{
if (*(int *)(param_1 + 0x2c8) != 0) {
*(undefined4 *)(param_1 + 0x134 + *(int *)(param_1 + 0x2c8) * 4) = 0;
FUN_0048ffa4((int *)(param_1 + 0x134));
*(undefined4 *)(param_1 + 0x2c8) = 0;
}
return;
}
/* @0045fc58 file=? name=FUN_0045fc58 */
void __cdecl FUN_0045fc58(undefined4 param_1,int *param_2)
{
uint uVar1;
int *piVar2;
uVar1 = FUN_00490380();
FUN_004dbb24(param_2,s_Free_memory_in_card__004f2f18,(char *)0x0);
piVar2 = FUN_004db78c(param_2,uVar1);
FUN_004dbb24(piVar2,s_bytes__004f2f2f,(char *)0x0);
FUN_004d9c38(piVar2);
return;
}
/* @0045fca0 file=? name=FUN_0045fca0 */
void __cdecl FUN_0045fca0(int param_1,int *param_2)
{
uint uVar1;
uint uVar2;
uint uVar3;
uint uVar4;
uint uVar5;
int *piVar6;
uVar1 = DAT_00524690;
FUN_004dbb24(param_2,s_sect_time_004f2f37,(char *)0x0);
piVar6 = FUN_004db78c(param_2,uVar1);
FUN_004dbb24(piVar6,s_dcs_and_inst_not_available_004f2f42,(char *)0x0);
FUN_004d9c38(piVar6);
uVar5 = DAT_00524ae8;
uVar4 = DAT_00524ae4;
uVar3 = DAT_00524ae0;
uVar2 = DAT_00524adc;
uVar1 = DAT_00524ad8;
FUN_004dbb24(param_2,s_cull_004f2f5e,(char *)0x0);
piVar6 = FUN_004db78c(param_2,uVar1);
FUN_004dbb24(piVar6,s_draw_004f2f64,(char *)0x0);
piVar6 = FUN_004db78c(piVar6,uVar2);
FUN_004dbb24(piVar6,s_frame_004f2f6b,(char *)0x0);
piVar6 = FUN_004db78c(piVar6,uVar3);
FUN_004dbb24(piVar6,s_pxpl_004f2f73,(char *)0x0);
piVar6 = FUN_004db78c(piVar6,uVar4);
FUN_004dbb24(piVar6,s_prims_004f2f7a,(char *)0x0);
piVar6 = FUN_004db78c(piVar6,uVar5);
FUN_004d9c38(piVar6);
if (*(int *)(param_1 + 0xa0) == 0) {
FUN_0045f784(param_1);
*(undefined4 *)(param_1 + 0xa0) = 1;
}
else {
FUN_0045f7dc(param_1);
}
return;
}
/* @0045fdd8 file=? name=FUN_0045fdd8 */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
void FUN_0045fdd8(void)
{
_DAT_004f1ab4 = _DAT_004f1ab4 ^ 1;
if (_DAT_004f1ab4 != 0) {
FUN_004dbb24(&DAT_00524e20,s_wireframe_ON_004f2f82,(char *)0x0);
FUN_004d9c38(&DAT_00524e20);
FUN_0048a544(1,1,(undefined4 *)0x0);
return;
}
FUN_004dbb24(&DAT_00524e20,s_wireframe_OFF_004f2f8f,(char *)0x0);
FUN_004d9c38(&DAT_00524e20);
FUN_0048a544(1,2,(undefined4 *)0x0);
return;
}
/* @0045fe44 file=? name=FUN_0045fe44 */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
void FUN_0045fe44(void)
{
undefined4 local_18;
undefined4 local_14;
undefined4 local_10;
undefined4 local_c;
local_10 = _DAT_0045fec4;
local_14 = _DAT_0045fec4;
local_18 = _DAT_0045fec4;
_DAT_004f1ab8 = _DAT_004f1ab8 ^ 1;
if (_DAT_004f1ab8 == 0) {
FUN_004dbb24(&DAT_00524e20,s_pvision_OFF_004f2fa8,(char *)0x0);
FUN_004d9c38(&DAT_00524e20);
local_c = 0xfffffffe;
}
else {
FUN_004dbb24(&DAT_00524e20,s_pvision_ON_004f2f9d,(char *)0x0);
FUN_004d9c38(&DAT_00524e20);
local_c = 0xffffffff;
}
FUN_0048d060(0,0,&local_18);
return;
}
/* @0045fec8 file=? name=FUN_0045fec8 */
void __cdecl
FUN_0045fec8(undefined1 *param_1,int param_2,int param_3,int param_4,int param_5,int param_6)
{
undefined2 uVar1;
undefined2 uVar2;
undefined2 uVar3;
undefined2 *puVar4;
int iVar5;
undefined2 *puVar6;
undefined2 *puVar7;
int local_8;
iVar5 = param_5 * param_6;
local_8 = 0;
puVar7 = (undefined2 *)(param_4 + iVar5 * 2);
puVar4 = (undefined2 *)(param_3 + iVar5 * 2);
puVar6 = (undefined2 *)(param_2 + iVar5 * 2);
if (0 < param_6) {
do {
uVar1 = *puVar6;
uVar2 = *puVar4;
puVar4 = puVar4 + 1;
uVar3 = *puVar7;
puVar7 = puVar7 + 1;
puVar6 = puVar6 + 1;
*param_1 = (char)((ushort)uVar1 >> 8);
param_1[1] = (char)((ushort)uVar2 >> 8);
param_1[2] = (char)((ushort)uVar3 >> 8);
param_1 = param_1 + 3;
local_8 = local_8 + 1;
} while (local_8 < param_6);
}
return;
}
/* @0045ff4c file=? name=FUN_0045ff4c */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
void __cdecl FUN_0045ff4c(undefined4 *param_1,int param_2,int param_3,int param_4)
{
short *psVar1;
undefined4 uVar2;
short sVar3;
int *piVar4;
uint uVar5;
int iVar6;
uint uVar7;
byte *pbVar8;
char *pcVar9;
int iVar10;
byte local_84 [13];
undefined1 local_77;
undefined1 local_76;
undefined1 local_75;
undefined1 local_74;
undefined1 local_73;
char local_70 [64];
undefined4 *local_30;
float *local_2c;
float *local_28;
undefined4 local_24;
float local_20;
float local_1c;
float local_18;
float local_14;
uint local_10;
int local_c;
uint local_8;
if (param_1 == (undefined4 *)0x0) {
if (DAT_004f1ac0 != (byte *)0x0) {
FUN_004022d0((int *)DAT_004f1ac0);
}
if (DAT_004f1ac4 != (int *)0x0) {
FUN_004022d0(DAT_004f1ac4);
}
if (DAT_004f1ac8 != (int *)0x0) {
FUN_004022d0(DAT_004f1ac8);
}
if (DAT_004f1acc != (int *)0x0) {
FUN_004022d0(DAT_004f1acc);
}
}
else {
if (DAT_004f1ad8 == '\0') {
_DAT_004f1ad4 = _DAT_0046055c / (float)param_2;
DAT_004f1ad8 = '\x01';
}
if (DAT_004f1ae0 == '\0') {
_DAT_004f1adc = _DAT_0046055c / (float)param_3;
DAT_004f1ae0 = '\x01';
}
if (DAT_004f1ae8 == '\0') {
_DAT_004f1ae4 = _DAT_004f1ad4 * _DAT_00460560;
DAT_004f1ae8 = '\x01';
}
if (DAT_004f1af0 == '\0') {
_DAT_004f1aec = _DAT_004f1adc * _DAT_00460560;
DAT_004f1af0 = '\x01';
}
if (DAT_004f1b0c == '\0') {
DAT_004f1afc = -(_DAT_004f1ae4 + _DAT_004f1af4);
DAT_004f1b0c = '\x01';
_DAT_004f1b00 = _DAT_004f1ae4 - _DAT_004f1af4;
_DAT_004f1b04 = _DAT_004f1af4 - _DAT_004f1ae4;
_DAT_004f1b08 = _DAT_004f1af4 + _DAT_004f1ae4;
}
if (DAT_004f1b20 == '\0') {
DAT_004f1b10 = _DAT_004f1aec - _DAT_004f1af8;
DAT_004f1b20 = '\x01';
_DAT_004f1b14 = _DAT_004f1aec + _DAT_004f1af8;
_DAT_004f1b18 = -(_DAT_004f1af8 + _DAT_004f1aec);
_DAT_004f1b1c = _DAT_004f1af8 - _DAT_004f1aec;
}
local_8 = 4;
if (param_4 == 0) {
local_8 = 1;
}
iVar6 = param_2 * param_3;
if (param_4 == 0) {
pcVar9 = s_False_004f2fd7;
}
else {
pcVar9 = &DAT_004f2fd2;
}
FUN_004dbb24(&DAT_00524e20,s_Dump_frame_buffer__antialias__004f2fb4,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,pcVar9,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s_____press_Esc_to_cancel__004f2fdd,(char *)0x0);
FUN_004d9c38(&DAT_00524e20);
if (DAT_004f1ac0 == (byte *)0x0) {
DAT_004f1ac0 = (byte *)FUN_004022b0(0x1000);
uVar5 = iVar6 * 2;
DAT_004f1ac4 = (int *)FUN_004022b0(uVar5);
DAT_004f1ac8 = (int *)FUN_004022b0(uVar5);
DAT_004f1acc = (int *)FUN_004022b0(uVar5);
}
iVar10 = 0;
local_c = 0;
if (0 < iVar6) {
do {
*(undefined2 *)((int)DAT_004f1ac4 + iVar10 * 2) = 0;
*(undefined2 *)((int)DAT_004f1ac8 + iVar10 * 2) = 0;
*(undefined2 *)((int)DAT_004f1acc + iVar10 * 2) = 0;
iVar10 = iVar10 + 1;
local_c = local_c + 1;
} while (iVar6 - local_c != 0 && local_c <= iVar6);
}
FUN_00490474();
FUN_00490474();
local_c = 0;
local_30 = &DAT_004f1b24;
local_2c = &DAT_004f1b10;
local_28 = &DAT_004f1afc;
if (0 < (int)local_8) {
do {
uVar5 = local_8;
uVar7 = local_c + 1;
FUN_004dbb24(&DAT_00524e20,s_pass_004f2ff6,(char *)0x0);
piVar4 = FUN_004db78c(&DAT_00524e20,uVar7);
FUN_004dbb24(piVar4,&DAT_004f2ffe,(char *)0x0);
piVar4 = FUN_004db78c(piVar4,uVar5);
FUN_004dbb24(piVar4,&DAT_004f3003,(char *)0x0);
FUN_0048ba30((int)param_1,&local_14,&local_18,&local_1c,&local_20,&local_24);
FUN_0048b9d0((int)param_1,local_14 + *local_28,local_18 + *local_2c,local_1c + *local_28,
local_20 + *local_2c,local_24);
FUN_0048d42c(param_1);
FUN_00490474();
FUN_00490474();
iVar6 = 0;
uVar2 = *local_30;
local_10 = 0;
if (0 < param_3) {
do {
pbVar8 = DAT_004f1ac0;
iVar10 = FUN_004d4888();
if ((iVar10 != 0) && (uVar5 = FUN_004d4718(), uVar5 == 0x1b)) {
piVar4 = FUN_004d9c38(&DAT_00524e20);
FUN_004dbb24(piVar4,s_cancelled__004f3005,(char *)0x0);
FUN_004d9c38(piVar4);
return;
}
if ((local_10 & 0xf) == 0) {
FUN_004dbb24(&DAT_00524e20,&DAT_004f3010,(char *)0x0);
}
FUN_0048cf38(param_1,(undefined4 *)pbVar8,0,local_10,param_2,1);
iVar10 = 0;
if (0 < param_2) {
do {
iVar10 = iVar10 + 1;
sVar3 = (short)uVar2;
psVar1 = (short *)((int)DAT_004f1ac4 + iVar6 * 2);
*psVar1 = *psVar1 + (ushort)pbVar8[2] * sVar3;
psVar1 = (short *)((int)DAT_004f1ac8 + iVar6 * 2);
*psVar1 = *psVar1 + (ushort)pbVar8[1] * sVar3;
psVar1 = (short *)((int)DAT_004f1acc + iVar6 * 2);
*psVar1 = *psVar1 + (ushort)*pbVar8 * sVar3;
iVar6 = iVar6 + 1;
pbVar8 = pbVar8 + 4;
} while (iVar10 < param_2);
}
local_10 = local_10 + 1;
} while ((int)local_10 < param_3);
}
FUN_004d9c38(&DAT_00524e20);
local_c = local_c + 1;
local_30 = local_30 + 1;
local_2c = local_2c + 1;
local_28 = local_28 + 1;
} while (local_c < (int)local_8);
}
FUN_004d7f10(local_70,s_dump_d_tga_004f3012);
local_84[0] = 0;
local_84[1] = 0;
local_84[2] = 2;
local_84[3] = 0;
local_84[4] = 0;
local_84[5] = 0;
local_84[6] = 0;
local_84[7] = 0;
local_84[8] = 0;
local_84[9] = 0;
local_84[10] = 0;
local_84[0xb] = 0;
local_84[0xc] = (undefined1)param_2;
local_77 = (undefined1)((uint)param_2 >> 8);
local_76 = (undefined1)param_3;
local_75 = (undefined1)((uint)param_3 >> 8);
local_74 = 0x18;
local_73 = 0;
FUN_004dbb24(&DAT_00524e20,s_Writing_image_to_file___004f301d,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,local_70,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s_________004f3035,(char *)0x0);
piVar4 = FUN_004d6f54(local_70,&DAT_004f303e);
FUN_004d7358(local_84,0x12,1,piVar4);
local_10 = 0;
if (0 < param_3) {
do {
FUN_0045fec8(DAT_004f1ac0,(int)DAT_004f1ac4,(int)DAT_004f1ac8,(int)DAT_004f1acc,
(param_3 + -1) - local_10,param_2);
FUN_004d7358(DAT_004f1ac0,param_2 * 3,1,piVar4);
local_10 = local_10 + 1;
} while ((int)local_10 < param_3);
}
FUN_004d6b08(piVar4);
FUN_004dbb24(&DAT_00524e20,s_done__004f3041,(char *)0x0);
FUN_004d9c38(&DAT_00524e20);
DAT_004f1abc = DAT_004f1abc + 1;
}
return;
}
/* @00460590 file=? name=FUN_00460590 */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
undefined4 __cdecl FUN_00460590(int param_1)
{
int iVar1;
if ((*(int *)(param_1 + 0xb4) != 0) && (iVar1 = FUN_0048a184(), iVar1 != 0)) {
FUN_0045fc24(param_1);
FUN_0048a1bc();
if (*(int *)(param_1 + 0xa0) != 0) {
*(int *)(param_1 + 0x84) = *(int *)(param_1 + 0x84) + DAT_00524ad8;
*(int *)(param_1 + 0x88) = *(int *)(param_1 + 0x88) + DAT_00524adc;
*(int *)(param_1 + 0x8c) = *(int *)(param_1 + 0x8c) + DAT_00524ae4;
*(int *)(param_1 + 0x90) = *(int *)(param_1 + 0x90) + DAT_00524ae0;
*(int *)(param_1 + 0x98) = *(int *)(param_1 + 0x98) + 1;
if (DAT_00524ae0 <= *(uint *)(param_1 + 0x94)) {
*(int *)(param_1 + 0x9c) = *(int *)(param_1 + 0x9c) + 1;
}
if (*(float *)(param_1 + 0xa4) < *(float *)(param_1 + 0x80)) {
FUN_0045f7dc(param_1);
*(float *)(param_1 + 0xa4) = *(float *)(param_1 + 0x80) + _DAT_00460650;
}
}
*(undefined4 *)(param_1 + 0xb4) = 0;
return 1;
}
return 0;
}
/* @00460654 file=? name=FUN_00460654 */
void __cdecl
FUN_00460654(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,uint *param_5,
int param_6,uint param_7)
{
uint uVar1;
int iVar2;
uint *puVar3;
uint *puVar4;
uint local_108 [4];
undefined4 local_f8;
undefined4 local_f4;
undefined4 local_f0;
puVar3 = param_5;
puVar4 = local_108;
for (iVar2 = 0x41; iVar2 != 0; iVar2 = iVar2 + -1) {
*puVar4 = *puVar3;
puVar3 = puVar3 + 1;
puVar4 = puVar4 + 1;
}
uVar1 = FUN_00460ae4(param_1);
local_108[0] = uVar1 | *param_5 & 0xffff0000 | (param_7 & 0xff) << 0x10;
local_f8 = param_2;
local_f4 = param_3;
local_f0 = param_4;
FUN_0048d060(1,param_6,local_108);
return;
}
/* @004606d4 file=munga_l4/l4video.cpp name=FUN_004606d4 */
void __cdecl
FUN_004606d4(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,int param_5,
int param_6,uint param_7)
{
int iVar1;
undefined4 local_18;
undefined4 local_14;
undefined4 local_10;
int local_c;
if (param_5 < 1000) {
local_c = param_5;
local_18 = param_2;
local_14 = param_3;
local_10 = param_4;
FUN_0048d060(0,param_6,&local_18);
}
else {
iVar1 = param_5 + -1000;
if ((iVar1 < 0) || (0x27 < iVar1)) {
FUN_0040385c(s_PSFX_id_number_was_not_in_the_al_004f3047,
s_d__tesla_bt_munga_l4_L4VIDEO_CPP_004f3073,0x174b);
}
FUN_00460654(param_1,param_2,param_3,param_4,*(uint **)(param_1 + 0x2cc + iVar1 * 4),param_6,
param_7);
}
return;
}
/* @00460770 file=? name=FUN_00460770 */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
void __cdecl FUN_00460770(int param_1,float param_2)
{
double dVar1;
float10 fVar2;
*(float *)(param_1 + 0x118) = param_2 * _DAT_00460814;
dVar1 = (double)(*(float *)(param_1 + 0x118) * _DAT_00460818);
fVar2 = (float10)FUN_004dd188(SUB84(dVar1,0),(int)((ulonglong)dVar1 >> 0x20));
*(float *)(param_1 + 0x11c) = (float)fVar2;
*(float *)(param_1 + 0xc0) = (float)DAT_004f336c / (float)DAT_004f3368;
FUN_0048b9d0(*(int *)(param_1 + 0x124),0xbf800000,-*(float *)(param_1 + 0xc0),0x3f800000,
*(undefined4 *)(param_1 + 0xc0),_DAT_0046081c / *(float *)(param_1 + 0x11c));
FUN_0048d42c(*(undefined4 **)(param_1 + 0x124));
return;
}
/* @00460840 file=? name=FUN_00460840 */
void __cdecl FUN_00460840(undefined4 param_1)
{
int iVar1;
int iVar2;
int local_18 [3];
undefined4 local_c;
uint *local_8;
local_8 = FUN_00460994();
iVar1 = FUN_00403ad0(*(int *)(DAT_004efc94 + 0x24) + 0x18,s_Players_004f3094);
FUN_00421414(local_18,iVar1 + 0x10);
while( true ) {
iVar1 = (**(code **)(local_18[0] + 0x28))(local_18);
if (iVar1 == 0) break;
local_c = *(undefined4 *)(iVar1 + 0x1e0);
iVar2 = (**(code **)(*(int *)(*(int *)(DAT_004efc94 + 200) + 0x68) + 0xc))
(*(int *)(DAT_004efc94 + 200) + 0x68,&local_c);
if ((iVar2 != 0) && ((*(byte *)(iVar1 + 0x29) & 0x40) == 0)) {
FUN_0045d2b4(param_1,iVar2,*(int *)(iVar1 + 0x1cc) + 1,local_8);
}
}
FUN_00460914(param_1,local_8);
FUN_0045d23c(param_1,(byte *)local_8);
FUN_004de420((int *)local_8);
FUN_00421452(local_18,2);
return;
}
/* @00460914 file=? name=FUN_00460914 */
void __cdecl FUN_00460914(undefined4 param_1,uint *param_2)
{
int iVar1;
int iVar2;
uint uVar3;
int local_8;
if ((*(uint *)(*(int *)(DAT_004efc94 + 0x14) + 0x28) & 0xc) == 0) {
iVar1 = FUN_0041a1a4(**(int **)(*(int *)(DAT_004efc94 + 0x14) + 0xc),0x4e6aa4);
if (iVar1 != 0) {
uVar3 = 9;
iVar1 = 1;
do {
local_8 = iVar1;
iVar2 = (**(code **)(*(int *)(*(int *)(DAT_004efc94 + 200) + 0x98) + 0xc))
(*(int *)(DAT_004efc94 + 200) + 0x98,&local_8);
FUN_0045d2b4(param_1,iVar2,uVar3,param_2);
uVar3 = uVar3 + 1;
iVar1 = iVar1 + 1;
} while (iVar1 < 5);
}
}
return;
}
/* @00460994 file=munga_l4/l4video.cpp name=FUN_00460994 */
undefined4 * FUN_00460994(void)
{
undefined4 *puVar1;
undefined4 *puVar2;
int iVar3;
puVar1 = (undefined4 *)FUN_004022b0(0x8000);
if (puVar1 == (undefined4 *)0x0) {
FUN_0040385c(s_Could_not_allocate_RAM_for_worst_004f309c,
s_d__tesla_bt_munga_l4_L4VIDEO_CPP_004f30ca,0x17ec);
}
iVar3 = 0;
puVar2 = puVar1;
do {
*puVar2 = 0;
iVar3 = iVar3 + 1;
puVar2 = puVar2 + 1;
} while (iVar3 < 0x2000);
return puVar1;
}
/* @004609dc file=? name=FUN_004609dc */
void __cdecl FUN_004609dc(undefined4 param_1)
{
int iVar1;
int iVar2;
int local_10;
int local_c;
uint *local_8;
local_8 = FUN_00460994();
local_c = *(int *)(*(int *)(DAT_004efc94 + 200) + 0x48);
iVar2 = 0;
if (0 < local_c) {
do {
local_10 = iVar2 + 1;
iVar1 = (**(code **)(*(int *)(*(int *)(DAT_004efc94 + 200) + 0x68) + 0xc))
(*(int *)(DAT_004efc94 + 200) + 0x68,&local_10);
if (iVar1 != 0) {
FUN_0045d2b4(param_1,iVar1,iVar2 + 1,local_8);
}
iVar2 = iVar2 + 1;
} while (iVar2 < local_c);
}
FUN_00460914(param_1,local_8);
FUN_0045d23c(param_1,(byte *)local_8);
FUN_004022e8((int *)local_8);
return;
}
/* @00460a7c file=? name=FUN_00460a7c */
void __cdecl FUN_00460a7c(int param_1)
{
int local_2c [5];
int local_18 [5];
FUN_0049060c();
FUN_00461541(local_18,param_1 + 0x37c);
FUN_004615ca(local_2c,param_1 + 0x390);
FUN_00461608(local_2c,2);
FUN_0046159e(local_18,2);
return;
}
/* @00460ad4 file=? name=FUN_00460ad4 */
void FUN_00460ad4(void)
{
return;
}
/* @00460adc file=? name=FUN_00460adc */
void FUN_00460adc(void)
{
return;
}
/* @00460ae4 file=? name=FUN_00460ae4 */
uint __cdecl FUN_00460ae4(int param_1)
{
uint uVar1;
uVar1 = *(int *)(param_1 + 0xb8) + 1U & 0xffff;
*(uint *)(param_1 + 0xb8) = uVar1;
return uVar1;
}
/* @00460b04 file=? name=FUN_00460b04 */
undefined4 __cdecl FUN_00460b04(int param_1,undefined4 param_2)
{
undefined4 *puVar1;
undefined4 uVar2;
puVar1 = (undefined4 *)(**(code **)(*(int *)(param_1 + 0x390) + 0xc))(param_1 + 0x390,param_2);
if (puVar1 == (undefined4 *)0x0) {
uVar2 = 0;
}
else {
uVar2 = puVar1[4];
if (puVar1 != (undefined4 *)0x0) {
(**(code **)*puVar1)(puVar1,3);
}
}
return uVar2;
}
/* @00460b48 file=? name=FUN_00460b48 */
void __cdecl FUN_00460b48(int param_1,int *param_2,undefined4 param_3)
{
int *piVar1;
undefined4 *puVar2;
int iVar3;
int *local_14;
undefined4 *local_10;
int *local_c;
undefined4 local_8;
puVar2 = (undefined4 *)FUN_00402298(0x14);
if (puVar2 != (undefined4 *)0x0) {
local_8 = param_3;
local_c = param_2;
FUN_00415e90(puVar2,1);
*puVar2 = &PTR_FUN_004f3308;
local_10 = (undefined4 *)FUN_00402298(0x10);
if (local_10 == (undefined4 *)0x0) {
iVar3 = 0;
}
else {
iVar3 = FUN_004023f4(local_10);
}
puVar2[3] = iVar3;
piVar1 = (int *)(puVar2[3] + 0xc);
*piVar1 = *piVar1 + 1;
FUN_00402a4c((int *)&local_14,puVar2 + 3,local_c);
puVar2[4] = local_8;
piVar1 = local_14 + 3;
*piVar1 = *piVar1 + -1;
if (*piVar1 == 0) {
FUN_004024d8(local_14,3);
}
}
(**(code **)(*(int *)(param_1 + 0x390) + 8))(param_1 + 0x390,puVar2,param_2);
return;
}
/* @00460c04 file=? name=FUN_00460c04 */
undefined4 * __cdecl FUN_00460c04(int param_1,int param_2,int param_3)
{
undefined4 *puVar1;
undefined4 *puVar2;
int iVar3;
int local_18 [5];
FUN_00461541(local_18,param_1 + 0x37c);
puVar2 = (undefined4 *)(**(code **)(local_18[0] + 0x30))(local_18);
if (puVar2 == (undefined4 *)0x0) {
puVar2 = (undefined4 *)FUN_00402298(0x18);
if (puVar2 == (undefined4 *)0x0) {
puVar2 = (undefined4 *)0x0;
}
else {
puVar2 = FUN_00452cf8(puVar2,param_2,param_3);
}
FUN_0046159e(local_18,2);
}
else {
(**(code **)(local_18[0] + 0x48))(local_18);
puVar1 = (undefined4 *)puVar2[5];
iVar3 = FUN_0048ab68((int)puVar1);
if (param_2 != iVar3) {
FUN_0048ab0c((int)puVar1,param_2);
FUN_0048d5d4(puVar1);
}
FUN_0046159e(local_18,2);
}
return puVar2;
}
/* @00460cb0 file=? name=FUN_00460cb0 */
void __cdecl FUN_00460cb0(int param_1,undefined4 param_2)
{
(**(code **)(*(int *)(param_1 + 0x37c) + 4))(param_1 + 0x37c,param_2);
return;
}
/* @00460cd0 file=munga_l4/l4video.cpp name=FUN_00460cd0 */
undefined4 * __cdecl FUN_00460cd0(undefined4 *param_1,int param_2,int param_3)
{
int iVar1;
undefined4 uVar2;
int unaff_EBX;
int local_40 [7];
int local_24 [7];
int local_8;
FUN_00415e90(param_1,1);
*param_1 = &PTR_FUN_004f3304;
iVar1 = FUN_0041a1a4(**(int **)(param_2 + 0xc),0x4e4afc);
if (iVar1 == 0) {
FUN_0040385c(s_DPLJointToDCSTranslator_was_call_004f30eb,
s_d__tesla_bt_munga_l4_L4VIDEO_CPP_004f312f,0x18c5);
param_2 = unaff_EBX;
}
local_8 = FUN_00417ab4(param_2 + 0x31c);
FUN_0041d3b3(local_24,local_8 + 0xe4);
iVar1 = (**(code **)(local_24[0] + 0x14))(local_24);
FUN_0041d3d2(local_24,2);
uVar2 = FUN_004022b0(iVar1 << 2);
param_1[4] = uVar2;
FUN_0041f216(local_40,param_2 + 0x300);
while (iVar1 = (**(code **)(local_40[0] + 0x28))(local_40), iVar1 != 0) {
if (*(int *)(iVar1 + 0xc0) != -1) {
*(undefined4 *)(param_1[4] + *(int *)(iVar1 + 0xc0) * 4) =
*(undefined4 *)(param_3 + *(int *)(iVar1 + 0xcc) * 4);
}
}
FUN_0041f235(local_40,2);
return param_1;
}
/* @00460dcc file=? name=FUN_00460dcc */
void __cdecl FUN_00460dcc(int *param_1,byte param_2)
{
if (param_1 != (int *)0x0) {
*param_1 = (int)&PTR_FUN_004f3304;
FUN_004022e8((int *)param_1[4]);
param_1[4] = 0;
FUN_00415ed8(param_1,0);
if ((param_2 & 1) != 0) {
FUN_004022d0(param_1);
}
}
return;
}
/* @00460e08 file=? name=FUN_00460e08 */
undefined4 FUN_00460e08(void)
{
return 1;
}
/* @00460e14 file=? name=FUN_00460e14 */
undefined4 __cdecl FUN_00460e14(int param_1,char *param_2,int param_3)
{
char *pcVar1;
char cVar2;
undefined4 *puVar3;
char *pcVar4;
int iVar5;
undefined4 uVar6;
int iVar7;
char *pcVar8;
char *pcVar9;
int *piVar10;
int *piVar11;
uint uVar12;
int *piVar13;
bool bVar14;
int local_60 [3];
int local_54 [4];
char local_44 [40];
uint local_1c;
int local_18;
int *local_14;
undefined4 local_10;
undefined4 *local_c;
int *local_8;
puVar3 = (undefined4 *)FUN_00406ff8(param_1,param_2,10,-1);
if (puVar3 == (undefined4 *)0x0) {
local_8 = FUN_00404720(param_3,s_video_004f3150,(char *)0x0);
if (local_8 != (int *)0x0) {
FUN_00452cad(local_54,0);
local_c = (undefined4 *)local_8[1];
LAB_00460e73:
if (local_c != (undefined4 *)0x0) {
do {
puVar3 = (undefined4 *)*local_c;
pcVar9 = (char *)(local_c + 2);
if ((pcVar9 != (char *)0x0) && (*pcVar9 != '\0')) {
pcVar8 = s_object_004f3156;
pcVar4 = pcVar9;
do {
if (*pcVar4 != *pcVar8) goto LAB_00460ecc;
bVar14 = true;
if (*pcVar4 == '\0') break;
pcVar1 = pcVar4 + 1;
if (*pcVar1 != pcVar8[1]) goto LAB_00460ecc;
pcVar4 = pcVar4 + 2;
pcVar8 = pcVar8 + 2;
bVar14 = *pcVar1 == '\0';
} while (!bVar14);
if (bVar14) {
local_10 = 2;
}
else {
LAB_00460ecc:
pcVar8 = s_rubble_004f315d;
pcVar4 = pcVar9;
do {
if (*pcVar4 != *pcVar8) goto LAB_00460efd;
bVar14 = true;
if (*pcVar4 == '\0') break;
pcVar1 = pcVar4 + 1;
if (*pcVar1 != pcVar8[1]) goto LAB_00460efd;
pcVar4 = pcVar4 + 2;
pcVar8 = pcVar8 + 2;
bVar14 = *pcVar1 == '\0';
} while (!bVar14);
if (bVar14) {
local_10 = 3;
}
else {
LAB_00460efd:
pcVar8 = s_skeleton_004f3164;
pcVar4 = pcVar9;
do {
if (*pcVar4 != *pcVar8) goto LAB_00460f2e;
bVar14 = true;
if (*pcVar4 == '\0') break;
pcVar1 = pcVar4 + 1;
if (*pcVar1 != pcVar8[1]) goto LAB_00460f2e;
pcVar4 = pcVar4 + 2;
pcVar8 = pcVar8 + 2;
bVar14 = *pcVar1 == '\0';
} while (!bVar14);
if (!bVar14) goto LAB_00460f2e;
local_10 = 1;
}
}
pcVar9 = (char *)local_c[1];
local_c = puVar3;
while ((puVar3 = local_c, pcVar9 != (char *)0x0 && (pcVar4 = pcVar9, *pcVar9 != '\0')))
{
while ((*pcVar4 != '\0' && (((&DAT_005207dd)[*pcVar4] & 1) != 0))) {
pcVar4 = pcVar4 + 1;
}
pcVar9 = pcVar4;
if (*pcVar4 == '\0') break;
while ((*pcVar9 != '\0' && (((&DAT_005207dd)[*pcVar9] & 1) == 0))) {
pcVar9 = pcVar9 + 1;
}
FUN_004d4b9c((undefined4 *)local_44,pcVar4,(int)pcVar9 - (int)pcVar4);
local_44[(int)pcVar9 - (int)pcVar4] = '\0';
uVar12 = 0;
iVar5 = 0;
for (pcVar4 = local_44; *pcVar4 != '\0'; pcVar4 = pcVar4 + 1) {
if (iVar5 == 0) {
if (*pcVar4 == '/') {
*pcVar4 = '\0';
iVar5 = 2;
}
}
else if (iVar5 == 1) {
if (*pcVar4 == '/') {
iVar5 = 2;
}
}
else if (iVar5 == 2) {
cVar2 = *pcVar4;
if (cVar2 == 'B') {
LAB_004610c8:
iVar5 = 3;
}
else {
if (cVar2 != 'I') {
if (cVar2 == 'b') goto LAB_004610c8;
if (cVar2 != 'i') {
iVar5 = 1;
goto LAB_00461121;
}
}
uVar12 = uVar12 | 0x10;
iVar5 = 1;
}
}
else if (iVar5 == 3) {
cVar2 = *pcVar4;
if (cVar2 < '[') {
if (cVar2 == 'Z') {
LAB_00461110:
uVar12 = uVar12 | 4;
}
else {
if (cVar2 != '/') {
if (cVar2 != 'X') {
if (cVar2 != 'Y') goto LAB_0046111c;
goto LAB_0046110b;
}
goto LAB_00461106;
}
iVar5 = 2;
}
}
else if (cVar2 == 'x') {
LAB_00461106:
uVar12 = uVar12 | 1;
}
else if (cVar2 == 'y') {
LAB_0046110b:
uVar12 = uVar12 | 2;
}
else {
if (cVar2 == 'z') goto LAB_00461110;
LAB_0046111c:
iVar5 = 1;
}
}
LAB_00461121:
}
pcVar4 = (char *)FUN_00402298(0x20);
if (pcVar4 == (char *)0x0) {
pcVar4 = (char *)0x0;
}
else {
pcVar4 = FUN_00459fb4(pcVar4,local_44,local_10,uVar12,0,0);
}
puVar3 = (undefined4 *)FUN_00402298(0x14);
if (puVar3 == (undefined4 *)0x0) {
puVar3 = (undefined4 *)0x0;
}
else {
puVar3 = FUN_0045a044(puVar3,pcVar4,1);
}
(**(code **)(local_54[0] + 4))(local_54,puVar3);
}
}
local_c = puVar3;
if (local_c == (undefined4 *)0x0) break;
} while( true );
}
FUN_004614d7(local_60,(int)local_54);
local_18 = (**(code **)(local_60[0] + 0x14))(local_60);
local_1c = local_18 * 0x20 + 4;
local_14 = (int *)FUN_004022b0(local_1c);
*local_14 = local_18;
piVar10 = local_14 + 1;
while (iVar5 = (**(code **)(local_60[0] + 0x28))(local_60), iVar5 != 0) {
piVar11 = *(int **)(iVar5 + 0xc);
piVar13 = piVar10;
for (iVar7 = 8; iVar7 != 0; iVar7 = iVar7 + -1) {
*piVar13 = *piVar11;
piVar11 = piVar11 + 1;
piVar13 = piVar13 + 1;
}
piVar10 = piVar10 + 8;
}
puVar3 = (undefined4 *)FUN_00406db4(param_1,param_2,10,1,0,local_14,local_1c,-1);
FUN_0045a134((int)local_54);
FUN_004022d0(local_14);
if (local_8 != (int *)0x0) {
(**(code **)*local_8)(local_8,3);
}
FUN_00461515(local_60,2);
FUN_00452ccc(local_54,2);
goto LAB_00461277;
}
uVar6 = 0xffffffff;
}
else {
LAB_00461277:
uVar6 = *puVar3;
}
return uVar6;
LAB_00460f2e:
if (((*pcVar9 == ';') || (*pcVar9 == '#')) ||
((*pcVar9 == '/' && (*(char *)((int)local_c + 9) == '/')))) {
bVar14 = true;
}
else {
bVar14 = false;
}
local_c = puVar3;
if ((((!bVar14) && (iVar5 = FUN_004d4ae0(pcVar9,s_skeleton_004f316d,8), iVar5 != 0)) &&
(iVar5 = FUN_004d4ae0(pcVar9,s_destroyed_004f3176,9), iVar5 != 0)) &&
(iVar5 = FUN_004d4ae0(pcVar9,&DAT_004f3180,3), iVar5 != 0)) {
FUN_004dbb24(&DAT_00524e20,s_Unknown_entry___004f3184,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,pcVar9,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s___in_model___004f3194,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s___ignored__004f31a1,(char *)0x0);
FUN_004d9c38(&DAT_00524e20);
}
goto LAB_00460e73;
}
/* @00461280 file=? name=FUN_00461280 */
int * __cdecl FUN_00461280(int *param_1)
{
undefined4 *puVar1;
int iVar2;
puVar1 = (undefined4 *)FUN_00402298(0x10);
if (puVar1 == (undefined4 *)0x0) {
iVar2 = 0;
}
else {
iVar2 = FUN_004023f4(puVar1);
}
*param_1 = iVar2;
*(int *)(iVar2 + 0xc) = *(int *)(iVar2 + 0xc) + 1;
return param_1;
}
/* @004612b0 file=? name=FUN_004612b0 */
void __cdecl FUN_004612b0(int *param_1,byte param_2)
{
int *piVar1;
int *piVar2;
if (param_1 != (int *)0x0) {
piVar2 = (int *)*param_1;
piVar1 = piVar2 + 3;
*piVar1 = *piVar1 + -1;
if (*piVar1 == 0) {
FUN_004024d8(piVar2,3);
}
if ((param_2 & 1) != 0) {
FUN_004022d0(param_1);
}
}
return;
}
/* @004612dd file=? name=FUN_004612dd */
undefined4 * __cdecl FUN_004612dd(undefined4 *param_1,undefined4 param_2)
{
FUN_0041827c(param_1,param_2);
*param_1 = &PTR_FUN_004f32fc;
return param_1;
}
/* @004612fc file=? name=FUN_004612fc */
void __cdecl FUN_004612fc(int *param_1,byte param_2)
{
if (param_1 != (int *)0x0) {
*param_1 = (int)&PTR_FUN_004f32fc;
FUN_004182a8(param_1,0);
if ((param_2 & 1) != 0) {
FUN_004022d0(param_1);
}
}
return;
}
/* @00461328 file=? name=FUN_00461328 */
undefined4 * __cdecl FUN_00461328(undefined4 *param_1,undefined4 param_2,undefined4 param_3)
{
FUN_00418bb8(param_1,param_2,param_3);
*param_1 = &PTR_FUN_004f32e0;
return param_1;
}
/* @0046134b file=? name=FUN_0046134b */
void __cdecl FUN_0046134b(int *param_1,byte param_2)
{
if (param_1 != (int *)0x0) {
*param_1 = (int)&PTR_FUN_004f32e0;
FUN_00418be0(param_1,0);
if ((param_2 & 1) != 0) {
FUN_004022d0(param_1);
}
}
return;
}
/* @00461377 file=? name=FUN_00461377 */
undefined4 __cdecl FUN_00461377(undefined4 param_1,int param_2,int param_3)
{
int iVar1;
undefined4 uVar2;
iVar1 = FUN_004027d8(*(int *)(param_2 + 0x20),*(int *)(param_3 + 0x20));
if (iVar1 == 0) {
uVar2 = 0;
}
else {
iVar1 = FUN_004027d8(*(int *)(param_2 + 0x20),*(int *)(param_3 + 0x20));
if (iVar1 < 1) {
uVar2 = 0xffffffff;
}
else {
uVar2 = 1;
}
}
return uVar2;
}
/* @004613c4 file=? name=FUN_004613c4 */
undefined4 __cdecl FUN_004613c4(undefined4 param_1,int *param_2,int param_3)
{
int iVar1;
undefined4 uVar2;
iVar1 = FUN_004027d8(*param_2,*(int *)(param_3 + 0x20));
if (iVar1 == 0) {
uVar2 = 0;
}
else {
iVar1 = FUN_004027d8(*param_2,*(int *)(param_3 + 0x20));
if (iVar1 < 1) {
uVar2 = 0xffffffff;
}
else {
uVar2 = 1;
}
}
return uVar2;
}
/* @0046140e file=? name=FUN_0046140e */
undefined4 * __cdecl FUN_0046140e(undefined4 *param_1,undefined4 param_2,undefined4 param_3)
{
FUN_00419184(param_1,param_2,param_3);
*param_1 = &PTR_FUN_004f32c4;
return param_1;
}
/* @00461431 file=? name=FUN_00461431 */
void __cdecl FUN_00461431(int *param_1,byte param_2)
{
if (param_1 != (int *)0x0) {
*param_1 = (int)&PTR_FUN_004f32c4;
FUN_004191b4(param_1,0);
if ((param_2 & 1) != 0) {
FUN_004022d0(param_1);
}
}
return;
}
/* @0046145d file=? name=FUN_0046145d */
undefined4 __cdecl FUN_0046145d(undefined4 param_1,int param_2,int param_3)
{
undefined4 uVar1;
if (*(uint *)(param_3 + 0x14) == *(uint *)(param_2 + 0x14)) {
uVar1 = 0;
}
else {
uVar1 = 1;
if (*(uint *)(param_2 + 0x14) <= *(uint *)(param_3 + 0x14)) {
uVar1 = 0xffffffff;
}
}
return uVar1;
}
/* @0046148c file=? name=FUN_0046148c */
undefined4 __cdecl FUN_0046148c(undefined4 param_1,uint *param_2,int param_3)
{
undefined4 uVar1;
if (*(uint *)(param_3 + 0x14) == *param_2) {
uVar1 = 0;
}
else {
uVar1 = 1;
if (*param_2 <= *(uint *)(param_3 + 0x14)) {
uVar1 = 0xffffffff;
}
}
return uVar1;
}
/* @004614b8 file=? name=FUN_004614b8 */
undefined4 * __cdecl FUN_004614b8(undefined4 *param_1,int param_2)
{
FUN_00417d00(param_1,param_2);
*param_1 = &PTR_FUN_004f3274;
return param_1;
}
/* @004614d7 file=? name=FUN_004614d7 */
undefined4 * __cdecl FUN_004614d7(undefined4 *param_1,int param_2)
{
FUN_00417d00(param_1,param_2);
*param_1 = &PTR_FUN_004f3274;
return param_1;
}
/* @004614f6 file=? name=FUN_004614f6 */
undefined4 * __cdecl FUN_004614f6(undefined4 *param_1,int param_2)
{
FUN_00417d28(param_1,param_2);
*param_1 = &PTR_FUN_004f3274;
return param_1;
}
/* @00461515 file=? name=FUN_00461515 */
void __cdecl FUN_00461515(int *param_1,byte param_2)
{
if (param_1 != (int *)0x0) {
*param_1 = (int)&PTR_FUN_004f3274;
FUN_00417d54(param_1,0);
if ((param_2 & 1) != 0) {
FUN_004022d0(param_1);
}
}
return;
}
/* @00461541 file=? name=FUN_00461541 */
undefined4 * __cdecl FUN_00461541(undefined4 *param_1,int param_2)
{
FUN_00418398(param_1,param_2);
*param_1 = &PTR_FUN_004f3220;
return param_1;
}
/* @00461560 file=? name=FUN_00461560 */
undefined4 * __cdecl FUN_00461560(undefined4 *param_1,int param_2)
{
FUN_00418398(param_1,param_2);
*param_1 = &PTR_FUN_004f3220;
return param_1;
}
/* @0046157f file=? name=FUN_0046157f */
undefined4 * __cdecl FUN_0046157f(undefined4 *param_1,int param_2)
{
FUN_004183c0(param_1,param_2);
*param_1 = &PTR_FUN_004f3220;
return param_1;
}
/* @0046159e file=? name=FUN_0046159e */
void __cdecl FUN_0046159e(int *param_1,byte param_2)
{
if (param_1 != (int *)0x0) {
*param_1 = (int)&PTR_FUN_004f3220;
FUN_004183ec(param_1,0);
if ((param_2 & 1) != 0) {
FUN_004022d0(param_1);
}
}
return;
}
/* @004615ca file=? name=FUN_004615ca */
int * __cdecl FUN_004615ca(int *param_1,int param_2)
{
FUN_00418f34(param_1,param_2);
*param_1 = (int)&PTR_FUN_004f31c4;
return param_1;
}
/* @004615e9 file=? name=FUN_004615e9 */
int * __cdecl FUN_004615e9(int *param_1,int param_2)
{
FUN_00418f34(param_1,param_2);
*param_1 = (int)&PTR_FUN_004f31c4;
return param_1;
}
/* @00461608 file=? name=FUN_00461608 */
void __cdecl FUN_00461608(int *param_1,byte param_2)
{
if (param_1 != (int *)0x0) {
*param_1 = (int)&PTR_FUN_004f31c4;
FUN_00418f5c(param_1,0);
if ((param_2 & 1) != 0) {
FUN_004022d0(param_1);
}
}
return;
}
/* @00461634 file=? name=FUN_00461634 */
undefined4 * __cdecl FUN_00461634(undefined4 param_1,int param_2,undefined4 *param_3)
{
undefined4 *puVar1;
puVar1 = (undefined4 *)FUN_0046172c();
if (puVar1 == (undefined4 *)0x0) {
puVar1 = (undefined4 *)0x0;
}
else {
puVar1 = FUN_004616d5(puVar1,param_1,param_2,param_3);
}
return puVar1;
}
/* @00461664 file=? name=FUN_00461664 */
undefined4 * __cdecl FUN_00461664(undefined4 param_1,int param_2,int *param_3)
{
undefined4 *puVar1;
puVar1 = (undefined4 *)FUN_00415a83();
if (puVar1 == (undefined4 *)0x0) {
puVar1 = (undefined4 *)0x0;
}
else {
puVar1 = FUN_004159cf(puVar1,param_1,param_2,param_3);
}
return puVar1;
}
/* @00461694 file=? name=FUN_00461694 */
void __cdecl FUN_00461694(int *param_1,byte param_2)
{
int *piVar1;
int *piVar2;
if (param_1 != (int *)0x0) {
*param_1 = (int)&PTR_FUN_004f3308;
piVar2 = (int *)param_1[3];
piVar1 = piVar2 + 3;
*piVar1 = *piVar1 + -1;
if (*piVar1 == 0) {
FUN_004024d8(piVar2,3);
}
FUN_00415ed8(param_1,0);
if ((param_2 & 1) != 0) {
FUN_004022d0(param_1);
}
}
return;
}
/* @004616d5 file=? name=FUN_004616d5 */
undefined4 * __cdecl
FUN_004616d5(undefined4 *param_1,undefined4 param_2,int param_3,undefined4 *param_4)
{
FUN_004190e8(param_1,param_2,param_3);
*param_1 = &PTR_FUN_004f3364;
param_1[5] = *param_4;
return param_1;
}
/* @00461700 file=? name=FUN_00461700 */
void __cdecl FUN_00461700(int *param_1,byte param_2)
{
if (param_1 != (int *)0x0) {
*param_1 = (int)&PTR_FUN_004f3364;
FUN_0041910c(param_1,0);
if ((param_2 & 1) != 0) {
FUN_0046177c(param_1);
}
}
return;
}
/* @0046172c file=? name=FUN_0046172c */
void FUN_0046172c(void)
{
int iVar1;
undefined4 *puVar2;
iVar1 = DAT_004f3360;
DAT_004f3360 = DAT_004f3360 + 1;
puVar2 = DAT_004f335c;
if ((iVar1 == 0) && (puVar2 = (undefined4 *)FUN_00402298(0x28), puVar2 != (undefined4 *)0x0)) {
FUN_00402b98(puVar2,0x18,100,100,s_TableEntryOf_004f31ac);
}
DAT_004f335c = puVar2;
FUN_00402f74((int)DAT_004f335c);
return;
}
/* @0046177c file=? name=FUN_0046177c */
void __cdecl FUN_0046177c(undefined4 *param_1)
{
FUN_00402f98((int)DAT_004f335c,param_1);
DAT_004f3360 = DAT_004f3360 + -1;
if (DAT_004f3360 == 0) {
if (DAT_004f335c != (int *)0x0) {
FUN_00402c28(DAT_004f335c,0);
FUN_004022d0(DAT_004f335c);
}
DAT_004f335c = (int *)0x0;
}
return;
}
/* @004617c8 file=? name=FUN_004617c8 */
char * __cdecl FUN_004617c8(char *param_1,char *param_2)
{
int iVar1;
int iVar2;
iVar1 = FUN_004d4a78(param_2);
while( true ) {
if (*param_1 == '\0') {
return (char *)0x0;
}
iVar2 = FUN_004d4ae0(param_1,param_2,iVar1);
if (iVar2 == 0) break;
param_1 = param_1 + 1;
}
while( true ) {
if (*param_1 == '~') {
if (param_1[1] != '\0') {
return param_1 + 1;
}
return (char *)0x0;
}
if (*param_1 == '\0') break;
param_1 = param_1 + 1;
}
return (char *)0x0;
}
/* @0046181c file=? name=FUN_0046181c */
undefined4 __cdecl FUN_0046181c(char *param_1)
{
char *pcVar1;
int iVar2;
pcVar1 = FUN_004617c8(param_1,s_video_004f3378);
if (pcVar1 == (char *)0x0) {
return 0;
}
iVar2 = FUN_004d4ae0(pcVar1,&DAT_004f337e,4);
if (iVar2 == 0) {
DAT_004f3368 = 0x2c0;
DAT_004f336c = 0x1e0;
return 1;
}
iVar2 = FUN_004d4ae0(pcVar1,s_ntsc_rgb_004f3383,4);
if (iVar2 == 0) {
DAT_004f3368 = 0x2c0;
DAT_004f336c = 0x1e0;
return 1;
}
iVar2 = FUN_004d4ae0(pcVar1,&DAT_004f338c,3);
if (iVar2 == 0) {
DAT_004f3368 = 0x280;
DAT_004f336c = 0x1e0;
return 1;
}
iVar2 = FUN_004d4ae0(pcVar1,&DAT_004f3390,3);
if (iVar2 == 0) {
DAT_004f3368 = 0x340;
DAT_004f336c = 0x200;
return 1;
}
iVar2 = FUN_004d4ae0(pcVar1,s_pal_rgb_004f3394,7);
if (iVar2 == 0) {
DAT_004f3368 = 0x340;
DAT_004f336c = 0x200;
return 1;
}
iVar2 = FUN_004d4ae0(pcVar1,s_hires_004f339c,5);
if (iVar2 == 0) {
DAT_004f3368 = 0x400;
DAT_004f336c = 0x300;
return 1;
}
iVar2 = FUN_004d4ae0(pcVar1,&DAT_004f33a2,4);
if (iVar2 == 0) {
DAT_004f3368 = 0x340;
DAT_004f336c = 0x200;
return 1;
}
iVar2 = FUN_004d4ae0(pcVar1,s_nucolor_004f33a7,7);
if (iVar2 == 0) {
DAT_004f3368 = 0x280;
DAT_004f336c = 0x1e0;
return 1;
}
iVar2 = FUN_004d4ae0(pcVar1,s_kaiser_004f33af,6);
if (iVar2 == 0) {
DAT_004f3368 = 0x340;
DAT_004f336c = 0x100;
return 1;
}
FUN_004d771c(s_Unknown_video_format__s_004f33b6);
DAT_004f3368 = 0x280;
DAT_004f336c = 0x1e0;
return 0;
}
/* @00461a14 file=? name=FUN_00461a14 */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
undefined4 * __cdecl FUN_00461a14(int param_1,int *param_2,int *param_3,float param_4)
{
undefined4 *puVar1;
undefined4 *puVar2;
int iVar3;
undefined4 *puVar4;
float local_8;
if (param_4 <= DAT_004f3374) {
local_8 = DAT_004f3374;
}
else {
local_8 = param_4 + _DAT_00461c70;
}
FUN_004d771c(s_initialize_eyes_004f33cf);
puVar2 = FUN_004896cc();
FUN_004d771c(s_create_1st_view_004f33e0);
iVar3 = FUN_004896f0();
*param_2 = iVar3;
if (iVar3 == 0) {
FUN_004d771c(s_NULL_eye_004f33f1);
puVar2 = (undefined4 *)0x0;
}
else {
puVar1 = (undefined4 *)*param_2;
puVar4 = (undefined4 *)FUN_00489708();
FUN_0048b4ac((int)puVar1,(int)puVar4);
FUN_0048a890((int)puVar2);
FUN_0048b56c((int)puVar1,DAT_004f3370,DAT_004f3374);
FUN_0048b608((int)puVar1,0x3ecccccd,0x3f19999a,0x3f666666);
FUN_0048b6b4((int)puVar1,0,0x3f000000,0x3f000000,0x3f19999a,param_4,local_8);
FUN_0048b8fc((int)puVar1);
FUN_0048b9d0((int)puVar1,0xbf800000,0xbf800000,0x3f800000,0x3f800000,0x3fa66666);
FUN_00489bd4((int)puVar1);
FUN_0048d3e8(puVar4);
FUN_0048d42c(puVar1);
FUN_0048d4b0(puVar2);
if (param_1 == 0) {
*param_3 = 0;
}
else {
FUN_004d771c(s_create_2nd_view_004f33fb);
iVar3 = FUN_004896f0();
*param_3 = iVar3;
if (iVar3 == 0) {
FUN_004d771c(s_NULL_rye_004f340c);
puVar2 = (undefined4 *)0x0;
}
else {
puVar1 = (undefined4 *)*param_3;
puVar4 = (undefined4 *)FUN_00489708();
FUN_0048b4ac((int)puVar1,(int)puVar4);
FUN_0048b56c((int)puVar1,DAT_004f3370,DAT_004f3374);
FUN_0048b608((int)puVar1,0x3ecccccd,0x3f19999a,0x3f666666);
FUN_0048b6b4((int)puVar1,0,0x3f000000,0x3f000000,0x3f19999a,param_4,local_8);
FUN_0048b8fc((int)puVar1);
FUN_0048b9d0((int)puVar1,0xbf800000,0xbf800000,0x3f800000,0x3f800000,0x3fa66666);
FUN_00489bd4((int)puVar1);
FUN_0048d3e8(puVar4);
FUN_0048d42c(puVar1);
}
}
}
return puVar2;
}
/* @00461c74 file=? name=FUN_00461c74 */
char * __cdecl FUN_00461c74(char *param_1,int *param_2,char param_3)
{
bool bVar1;
int *piVar2;
uint uVar3;
char *pcVar4;
bVar1 = true;
uVar3 = 0;
pcVar4 = param_1;
do {
if (*pcVar4 == param_3) {
if (uVar3 == 0) {
piVar2 = FUN_004de55c(1);
*param_2 = (int)piVar2;
*(undefined1 *)*param_2 = 0;
}
else {
piVar2 = FUN_004de55c(uVar3 + 1);
*param_2 = (int)piVar2;
FUN_004d4918((undefined4 *)*param_2,(undefined4 *)param_1,uVar3);
*(undefined1 *)(*param_2 + uVar3) = 0;
}
pcVar4 = pcVar4 + 1;
bVar1 = false;
}
else if (*pcVar4 == '\0') {
if (uVar3 == 0) {
return (char *)0x0;
}
piVar2 = FUN_004de55c(uVar3 + 1);
*param_2 = (int)piVar2;
FUN_004d4918((undefined4 *)*param_2,(undefined4 *)param_1,uVar3);
*(undefined1 *)(*param_2 + uVar3) = 0;
bVar1 = false;
}
else {
uVar3 = uVar3 + 1;
pcVar4 = pcVar4 + 1;
}
} while (bVar1);
return pcVar4;
}
/* @00461d14 file=? name=FUN_00461d14 */
int __cdecl FUN_00461d14(int param_1,char *param_2,char param_3)
{
int iVar1;
iVar1 = 0;
while ((*param_2 != '\0' &&
(param_2 = FUN_00461c74(param_2,(int *)(param_1 + iVar1 * 4),param_3),
param_2 != (char *)0x0))) {
iVar1 = iVar1 + 1;
}
return iVar1;
}
/* @00461d50 file=? name=FUN_00461d50 */
void __cdecl FUN_00461d50(char *param_1,int param_2,int *param_3,int *param_4,float param_5)
{
int iVar1;
undefined4 local_84 [32];
iVar1 = FUN_00461d14((int)local_84,param_1,'~');
FUN_0048d108(iVar1,local_84);
FUN_00461a14(param_2,param_3,param_4,param_5);
return;
}
/* @00461d90 file=? name=FUN_00461d90 */
undefined4 __cdecl FUN_00461d90(int param_1,LPCSTR param_2)
{
undefined4 uVar1;
uint uVar2;
int *piVar3;
char *pcVar4;
char *pcVar5;
DWORD DVar6;
int iVar7;
uint unaff_EDI;
undefined4 local_14;
undefined4 local_10;
int local_8;
if (*(int *)(&DAT_004f3558 + param_1 * 4) == 0xf) {
uVar1 = 0xffffffff;
}
else {
uVar2 = thunk_FUN_004d93ac(param_2,0x8000,unaff_EDI);
if (uVar2 == 0xffffffff) {
uVar1 = 0xfffffffe;
}
else {
piVar3 = FUN_004de55c(0x2000);
if (piVar3 == (int *)0x0) {
thunk_FUN_004d92c4(uVar2);
uVar1 = 0xfffffffd;
}
else {
pcVar4 = (char *)FUN_0048790c(*(undefined4 *)(&DAT_00501368 + param_1 * 0x68),
*(undefined4 *)(&DAT_0050136c + param_1 * 0x68),local_14,
local_10,*(undefined4 *)(&DAT_004f3558 + param_1 * 4),0);
if (pcVar4 == (char *)0xffffffff) {
FUN_004de420(piVar3);
thunk_FUN_004d92c4(uVar2);
uVar1 = 0xfffffffc;
}
else {
pcVar5 = thunk_FUN_004d892c(uVar2,(char *)piVar3,pcVar4);
if (pcVar5 == (char *)0xffffffff) {
uVar1 = 0xfffffffb;
}
else {
uVar1 = FUN_0047ef40();
local_8 = FUN_0048790c(*(undefined4 *)(&DAT_00501380 + param_1 * 0x68),
*(undefined4 *)(&DAT_00501384 + param_1 * 0x68),piVar3,uVar1,
*(undefined4 *)(&DAT_004f3558 + param_1 * 4),0);
if (local_8 == -1) {
FUN_004de420(piVar3);
thunk_FUN_004d92c4(uVar2);
uVar1 = 0xfffffffa;
}
else {
DVar6 = thunk_FUN_004d9334(uVar2,local_8,0);
if (DVar6 == 0xffffffff) {
thunk_FUN_004d92c4(uVar2);
FUN_004de420(*(int **)(&DAT_004f3418 +
*(int *)(&DAT_004f3558 + param_1 * 4) * 4 + param_1 * 0x40));
uVar1 = 0xfffffff9;
}
else {
do {
pcVar4 = thunk_FUN_004d892c(uVar2,(char *)piVar3,pcVar4);
if (pcVar4 == (char *)0xffffffff) {
return 0xfffffff8;
}
uVar1 = FUN_0047ef40();
pcVar4 = (char *)FUN_0048790c(*(undefined4 *)(&DAT_00501370 + param_1 * 0x68),
*(undefined4 *)(&DAT_00501374 + param_1 * 0x68),
piVar3,uVar1,
*(undefined4 *)(&DAT_004f3558 + param_1 * 4),0);
if (pcVar4 == (char *)0xffffffff) {
thunk_FUN_004d92c4(uVar2);
FUN_004de420(piVar3);
return 0xfffffff7;
}
} while (pcVar4 != (char *)0x0);
FUN_004de420(piVar3);
pcVar4 = (char *)FUN_0048790c(*(undefined4 *)(&DAT_00501378 + param_1 * 0x68),
*(undefined4 *)(&DAT_0050137c + param_1 * 0x68),piVar3
,uVar1,0,0);
uVar1 = FUN_0047ef40();
FUN_0048790c(*(undefined4 *)(&DAT_00501388 + param_1 * 0x68),
*(undefined4 *)(&DAT_0050138c + param_1 * 0x68),&local_8,uVar1,0,0);
piVar3 = FUN_004de55c((uint)pcVar4);
*(int **)(&DAT_004f3418 + *(int *)(&DAT_004f3558 + param_1 * 4) * 4 + param_1 * 0x40
) = piVar3;
if (piVar3 == (int *)0x0) {
thunk_FUN_004d92c4(uVar2);
uVar1 = 0xfffffff6;
}
else {
DVar6 = thunk_FUN_004d9334(uVar2,local_8,0);
if (DVar6 == 0xffffffff) {
thunk_FUN_004d92c4(uVar2);
FUN_004de420(*(int **)(&DAT_004f3418 +
*(int *)(&DAT_004f3558 + param_1 * 4) * 4 + param_1 * 0x40
));
uVar1 = 0xfffffff5;
}
else {
pcVar4 = thunk_FUN_004d892c(uVar2,*(char **)(&DAT_004f3418 +
*(int *)(&DAT_004f3558 + param_1 * 4
) * 4 + param_1 * 0x40),
pcVar4);
if (pcVar4 == (char *)0xffffffff) {
thunk_FUN_004d92c4(uVar2);
FUN_004de420(*(int **)(&DAT_004f3418 +
*(int *)(&DAT_004f3558 + param_1 * 4) * 4 +
param_1 * 0x40));
uVar1 = 0xfffffff4;
}
else {
uVar1 = FUN_0047ef40();
iVar7 = FUN_0048790c(*(undefined4 *)(&DAT_00501390 + param_1 * 0x68),
*(undefined4 *)(&DAT_00501394 + param_1 * 0x68),
*(undefined4 *)
(&DAT_004f3418 +
*(int *)(&DAT_004f3558 + param_1 * 4) * 4 +
param_1 * 0x40),uVar1,0,0);
if (iVar7 == -1) {
FUN_004de420(*(int **)(&DAT_004f3418 +
*(int *)(&DAT_004f3558 + param_1 * 4) * 4 +
param_1 * 0x40));
thunk_FUN_004d92c4(uVar2);
uVar1 = 0xfffffff3;
}
else {
thunk_FUN_004d92c4(uVar2);
*(int *)(&DAT_004f3558 + param_1 * 4) =
*(int *)(&DAT_004f3558 + param_1 * 4) + 1;
uVar1 = *(undefined4 *)(&DAT_004f3558 + param_1 * 4);
}
}
}
}
}
}
}
}
}
}
}
return uVar1;
}
/* @00462124 file=? name=FUN_00462124 */
undefined4 __cdecl FUN_00462124(int param_1)
{
int iVar1;
undefined4 uVar2;
undefined *puVar3;
uint uVar4;
undefined4 local_c;
undefined4 local_8;
iVar1 = FUN_0048790c(*(undefined4 *)(&DAT_00501388 + param_1 * 0x68),
*(undefined4 *)(&DAT_0050138c + param_1 * 0x68),local_c,local_8,1,0);
if (iVar1 == -1) {
uVar2 = 0xffffffff;
}
else {
puVar3 = &DAT_004f341c;
for (uVar4 = 1; uVar4 < *(uint *)(&DAT_004f3558 + param_1 * 4); uVar4 = uVar4 + 1) {
FUN_004de420(*(int **)(puVar3 + param_1 * 0x40));
puVar3 = puVar3 + 4;
}
*(undefined4 *)(&DAT_004f3558 + param_1 * 4) = 1;
uVar2 = 0;
}
return uVar2;
}
/* @004621ac file=? name=FUN_004621ac */
undefined4 __cdecl
FUN_004621ac(int param_1,undefined1 param_2,byte param_3,undefined1 param_4,undefined1 param_5,
undefined1 param_6)
{
byte local_14;
undefined1 local_13;
undefined1 local_12;
local_14 = param_3 | 0xb0;
local_13 = 0;
local_12 = param_2;
FUN_00486402(param_1,&local_14,3);
local_14 = param_3 | 0xc0;
local_13 = param_4;
FUN_00486402(param_1,&local_14,2);
local_14 = param_3 | 0x90;
local_13 = param_5;
local_12 = param_6;
FUN_00486402(param_1,&local_14,2);
return 0;
}
/* @00462224 file=? name=FUN_00462224 */
undefined4 __cdecl FUN_00462224(int param_1,byte param_2,undefined1 param_3)
{
byte local_14;
undefined1 local_13;
undefined1 local_12;
local_14 = param_2 | 0x90;
local_13 = param_3;
local_12 = 0;
FUN_00486402(param_1,&local_14,3);
return 0;
}
/* @00462254 file=? name=FUN_00462254 */
undefined4 FUN_00462254(void)
{
return 1;
}
/* @00462260 file=? name=FUN_00462260 */
int * __cdecl FUN_00462260(int *param_1,byte *param_2)
{
int *piVar1;
FUN_004dbb24(param_1,&DAT_004f3582,(char *)0x0);
piVar1 = FUN_004db78c(param_1,*param_2 & 0xf);
FUN_004dbb24(piVar1,&DAT_004f3584,(char *)0x0);
piVar1 = FUN_004db78c(param_1,(int)(uint)*param_2 >> 4);
FUN_004dbb24(piVar1,&DAT_004f3586,(char *)0x0);
piVar1 = FUN_004db78c(param_1,(uint)param_2[1]);
FUN_004dbb24(piVar1,&DAT_004f3588,(char *)0x0);
piVar1 = FUN_004db78c(param_1,(uint)param_2[2]);
FUN_004dbb24(piVar1,&DAT_004f358a,(char *)0x0);
return param_1;
}
/* @0046230c file=? name=FUN_0046230c */
undefined4 * __cdecl
FUN_0046230c(undefined4 *param_1,undefined4 param_2,undefined1 param_3,undefined4 param_4)
{
FUN_00415e90(param_1,1);
*param_1 = &PTR_FUN_004f36b4;
param_1[3] = param_2;
*(undefined1 *)(param_1 + 4) = param_3;
param_1[5] = 0;
param_1[6] = param_4;
return param_1;
}
/* @00462340 file=? name=FUN_00462340 */
void __cdecl FUN_00462340(int *param_1,byte param_2)
{
if (param_1 != (int *)0x0) {
*param_1 = (int)&PTR_FUN_004f36b4;
FUN_00415ed8(param_1,0);
if ((param_2 & 1) != 0) {
FUN_004022d0(param_1);
}
}
return;
}
/* @0046236c file=? name=FUN_0046236c */
undefined4 FUN_0046236c(void)
{
FUN_00415f1c();
return 1;
}
/* @00462380 file=? name=FUN_00462380 */
undefined4 * __cdecl FUN_00462380(undefined4 *param_1)
{
undefined4 *puVar1;
byte bVar2;
FUN_004178cc(param_1,2);
*param_1 = &PTR_FUN_004f36a8;
FUN_00462c4e(param_1 + 0x15,0);
FUN_00462c4e(param_1 + 0x19,0);
bVar2 = 0;
param_1[0x14] = 0x20;
do {
if (bVar2 == 9) {
puVar1 = (undefined4 *)FUN_00402298(0x1c);
if (puVar1 == (undefined4 *)0x0) {
puVar1 = (undefined4 *)0x0;
}
else {
puVar1 = FUN_0046230c(puVar1,1,9,param_1);
}
(**(code **)(param_1[0x19] + 4))(param_1 + 0x19,puVar1);
}
else {
puVar1 = (undefined4 *)FUN_00402298(0x1c);
if (puVar1 == (undefined4 *)0x0) {
puVar1 = (undefined4 *)0x0;
}
else {
puVar1 = FUN_0046230c(puVar1,0,bVar2,param_1);
}
(**(code **)(param_1[0x15] + 4))(param_1 + 0x15,puVar1);
}
bVar2 = bVar2 + 1;
} while (bVar2 < 0x10);
return param_1;
}
/* @00462430 file=? name=FUN_00462430 */
void __cdecl FUN_00462430(int *param_1,byte param_2)
{
void *this;
void *this_00;
int local_1c [3];
int local_10 [3];
if (param_1 != (int *)0x0) {
*param_1 = (int)&PTR_FUN_004f36a8;
FUN_00462c99(local_10,(int)(param_1 + 0x15));
FUN_00417858(this,local_10,1);
FUN_00462cf6(local_10,2);
FUN_00462c99(local_1c,(int)(param_1 + 0x19));
FUN_00417858(this_00,local_1c,1);
FUN_00462cf6(local_1c,2);
FUN_00462c6d(param_1 + 0x19,2);
FUN_00462c6d(param_1 + 0x15,2);
FUN_0041790c(param_1,0);
if ((param_2 & 1) != 0) {
FUN_004022d0(param_1);
}
}
return;
}
/* @004624d8 file=? name=FUN_004624d8 */
undefined4 FUN_004624d8(void)
{
FUN_00415f1c();
return 1;
}
/* @004624ec file=munga_l4/l4audhdw.cpp name=FUN_004624ec */
void __cdecl FUN_004624ec(int param_1)
{
int iVar1;
char *pcVar2;
*(undefined4 *)(param_1 + 0x28) = 0;
*(undefined4 *)(param_1 + 0x40) = *(undefined4 *)(param_1 + 0x1c);
iVar1 = FUN_004832c2(0xa008,(undefined4 *)(param_1 + 0x40),param_1 + 0x20,(uint *)(param_1 + 0x4c)
);
if (iVar1 != 0) {
pcVar2 = FUN_004814e9(iVar1);
FUN_004dbb24(&DAT_00524e20,pcVar2,(char *)0x0);
FUN_0040385c(s_AudioCard__Initialize___sosMIDII_004f358c,
s_d__tesla_bt_munga_l4_L4AUDHDW_CP_004f35be,0xfa);
}
return;
}
/* @0046254c file=? name=FUN_0046254c */
void __cdecl FUN_0046254c(int param_1)
{
FUN_00462124(*(int *)(param_1 + 0x4c));
FUN_00483799(*(int *)(param_1 + 0x4c));
FUN_004836b0(*(uint *)(param_1 + 0x4c),1);
return;
}
/* @00462578 file=? name=FUN_00462578 */
void __cdecl FUN_00462578(int param_1,char *param_2)
{
char *pcVar1;
int iVar2;
int iVar3;
char *local_14;
int local_10;
int local_c;
int local_8;
iVar3 = 0xffff;
local_8 = 0xffff;
local_c = 0xffff;
local_10 = 0xffff;
iVar2 = 0xffff;
local_14 = (char *)FUN_004dee74(param_2);
while (*local_14 != '\0') {
if ((*local_14 == 'a') || (pcVar1 = local_14, *local_14 == 'A')) {
pcVar1 = local_14 + 1;
if (*pcVar1 != '\0') {
if (*pcVar1 == ':') {
pcVar1 = local_14 + 2;
}
local_14 = pcVar1;
iVar3 = FUN_00462abc(param_1,(int *)&local_14);
pcVar1 = local_14;
}
}
local_14 = pcVar1;
if ((*local_14 == 'i') || (pcVar1 = local_14, *local_14 == 'I')) {
pcVar1 = local_14 + 1;
if (*pcVar1 != '\0') {
if (*pcVar1 == ':') {
pcVar1 = local_14 + 2;
}
local_14 = pcVar1;
local_8 = FUN_00462abc(param_1,(int *)&local_14);
pcVar1 = local_14;
}
}
local_14 = pcVar1;
if ((*local_14 == 'd') || (pcVar1 = local_14, *local_14 == 'D')) {
pcVar1 = local_14 + 1;
if (*pcVar1 != '\0') {
if (*pcVar1 == ':') {
pcVar1 = local_14 + 2;
}
local_14 = pcVar1;
local_c = FUN_00462abc(param_1,(int *)&local_14);
pcVar1 = local_14;
}
}
local_14 = pcVar1;
if ((*local_14 == 'e') || (pcVar1 = local_14, *local_14 == 'E')) {
pcVar1 = local_14 + 1;
if (*pcVar1 != '\0') {
if (*pcVar1 == ':') {
pcVar1 = local_14 + 2;
}
local_14 = pcVar1;
iVar2 = FUN_00462abc(param_1,(int *)&local_14);
pcVar1 = local_14;
}
}
local_14 = pcVar1;
if ((*local_14 == 'p') || (pcVar1 = local_14, *local_14 == 'P')) {
pcVar1 = local_14 + 1;
if (*pcVar1 != '\0') {
if (*pcVar1 == ':') {
pcVar1 = local_14 + 2;
}
local_14 = pcVar1;
local_10 = FUN_00462abc(param_1,(int *)&local_14);
pcVar1 = local_14;
}
}
while ((local_14 = pcVar1, *local_14 != '\0' && (*local_14 != ' '))) {
pcVar1 = local_14 + 1;
}
for (; *local_14 == ' '; local_14 = local_14 + 1) {
}
}
if (iVar2 == 0xffff) {
iVar2 = iVar3 + 0x400;
}
*(int *)(param_1 + 0xc) = iVar3;
*(int *)(param_1 + 0x10) = local_8;
*(int *)(param_1 + 0x14) = local_c;
*(int *)(param_1 + 0x18) = local_10;
*(int *)(param_1 + 0x1c) = iVar2;
return;
}
/* @00462728 file=? name=FUN_00462728 */
undefined4 FUN_00462728(void)
{
return 0;
}
/* @00462730 file=? name=FUN_00462730 */
void FUN_00462730(void)
{
return;
}
/* @00462738 file=? name=FUN_00462738 */
undefined4 FUN_00462738(void)
{
return 0;
}
/* @00462740 file=? name=FUN_00462740 */
undefined4 FUN_00462740(void)
{
return 0;
}
/* @00462748 file=? name=FUN_00462748 */
void __cdecl FUN_00462748(int param_1)
{
int iVar1;
int local_1c [3];
int local_10 [3];
FUN_00462c99(local_10,param_1 + 0x54);
while( true ) {
iVar1 = (**(code **)(local_10[0] + 0x28))(local_10);
if (iVar1 == 0) break;
FUN_0046285c(*(int *)(iVar1 + 0x18),*(byte *)(iVar1 + 0x10),0x18);
}
FUN_00462cf6(local_10,2);
FUN_00462c99(local_1c,param_1 + 100);
iVar1 = (**(code **)(local_1c[0] + 0x30))(local_1c);
FUN_0046285c(*(int *)(iVar1 + 0x18),*(byte *)(iVar1 + 0x10),0x18);
FUN_00462cf6(local_1c,2);
return;
}
/* @004627d8 file=? name=FUN_004627d8 */
void __cdecl FUN_004627d8(int param_1,LPCSTR param_2)
{
FUN_00461d90(*(int *)(param_1 + 0x4c),param_2);
return;
}
/* @004627f4 file=? name=FUN_004627f4 */
void __cdecl FUN_004627f4(int param_1)
{
FUN_00462124(*(int *)(param_1 + 0x4c));
return;
}
/* @00462808 file=? name=FUN_00462808 */
void __cdecl FUN_00462808(int param_1,byte param_2,int param_3)
{
uint uVar1;
uint uVar2;
byte local_27;
undefined1 local_26;
undefined1 local_25;
uVar1 = param_3 + 0x2000;
uVar2 = uVar1;
if ((int)uVar1 < 0) {
uVar2 = param_3 + 0x207f;
}
uVar1 = uVar1 & 0x8000007f;
if ((int)uVar1 < 0) {
uVar1 = (uVar1 - 1 | 0xffffff80) + 1;
}
local_27 = param_2 | 0xe0;
local_26 = (undefined1)uVar1;
local_25 = (undefined1)((int)uVar2 >> 7);
FUN_00486402(*(int *)(param_1 + 0x4c),&local_27,3);
return;
}
/* @0046285c file=? name=FUN_0046285c */
void __cdecl FUN_0046285c(int param_1,byte param_2,undefined1 param_3)
{
byte local_2f [3];
byte local_2c [5];
byte local_27 [35];
local_27[0] = param_2 | 0xb0;
local_27[1] = 0x65;
local_27[2] = 0;
FUN_00486402(*(int *)(param_1 + 0x4c),local_27,3);
local_2c[0] = param_2 | 0xb0;
local_2c[1] = 100;
local_2c[2] = 0;
FUN_00486402(*(int *)(param_1 + 0x4c),local_2c,3);
local_2f[0] = param_2 | 0xb0;
local_2f[1] = 6;
local_2f[2] = param_3;
FUN_00486402(*(int *)(param_1 + 0x4c),local_2f,3);
return;
}
/* @004628d8 file=? name=FUN_004628d8 */
void __cdecl FUN_004628d8(int param_1,byte param_2,undefined1 param_3,int param_4)
{
int iVar1;
uint uVar2;
byte local_34 [5];
byte local_2f [3];
byte local_2c [5];
byte local_27 [35];
local_27[0] = param_2 | 0xb0;
local_27[1] = 99;
local_27[2] = 0x7f;
FUN_00486402(*(int *)(param_1 + 0x4c),local_27,3);
local_2c[0] = param_2 | 0xb0;
local_2c[1] = 0x62;
local_2c[2] = param_3;
FUN_00486402(*(int *)(param_1 + 0x4c),local_2c,3);
iVar1 = param_4 + 0x2000;
if (iVar1 < 0) {
iVar1 = param_4 + 0x207f;
}
local_2f[0] = param_2 | 0xb0;
local_2f[1] = 6;
local_2f[2] = (byte)(iVar1 >> 7);
FUN_00486402(*(int *)(param_1 + 0x4c),local_2f,3);
uVar2 = param_4 + 0x2000U & 0x8000007f;
if ((int)uVar2 < 0) {
uVar2 = (uVar2 - 1 | 0xffffff80) + 1;
}
local_34[0] = param_2 | 0xb0;
local_34[1] = 0x26;
local_34[2] = (byte)uVar2;
FUN_00486402(*(int *)(param_1 + 0x4c),local_34,3);
return;
}
/* @0046299c file=? name=FUN_0046299c */
void __cdecl FUN_0046299c(int param_1,int param_2,undefined1 param_3)
{
if (param_2 == 0) {
DAT_004f3574 = param_3;
FUN_004629e4(param_1,&DAT_004f356c,0xb);
return;
}
if (param_2 != 1) {
return;
}
DAT_004f357f = param_3;
FUN_004629e4(param_1,&DAT_004f3577,0xb);
return;
}
/* @004629e4 file=munga_l4/l4audhdw.cpp name=FUN_004629e4 */
void __cdecl FUN_004629e4(int param_1,undefined4 param_2,undefined4 param_3)
{
int iVar1;
iVar1 = FUN_00486402(*(int *)(param_1 + 0x4c),param_2,param_3);
if (iVar1 != 0) {
FUN_0040385c(s_AudioCard__SendSysex___wError____004f35e0,
s_d__tesla_bt_munga_l4_L4AUDHDW_CP_004f360f,0x2b9);
}
return;
}
/* @00462a1c file=? name=FUN_00462a1c */
int __cdecl FUN_00462a1c(int param_1,int param_2)
{
int iVar1;
int local_10 [3];
if (*(int *)(param_1 + 0x50) < param_2) {
iVar1 = 0;
}
else {
FUN_00462c99(local_10,param_1 + 0x54);
iVar1 = (**(code **)(local_10[0] + 0x30))(local_10);
if (iVar1 == 0) {
iVar1 = 0;
FUN_00462cf6(local_10,2);
}
else {
(**(code **)(local_10[0] + 0x48))(local_10);
*(int *)(param_1 + 0x50) = *(int *)(param_1 + 0x50) - param_2;
*(int *)(iVar1 + 0x14) = param_2;
FUN_00462cf6(local_10,2);
}
}
return iVar1;
}
/* @00462a98 file=? name=FUN_00462a98 */
void __cdecl FUN_00462a98(int param_1,int param_2)
{
*(int *)(param_1 + 0x50) = *(int *)(param_1 + 0x50) + *(int *)(param_2 + 0x14);
*(undefined4 *)(param_2 + 0x14) = 0;
(**(code **)(*(int *)(param_1 + 0x54) + 4))(param_1 + 0x54,param_2);
return;
}
/* @00462abc file=? name=FUN_00462abc */
int __cdecl FUN_00462abc(undefined4 param_1,int *param_2)
{
char *pcVar1;
int iVar2;
iVar2 = 0;
while( true ) {
while( true ) {
while( true ) {
if (*(char *)*param_2 == '\0') {
return iVar2;
}
if ((*(char *)*param_2 < '0') || ('9' < *(char *)*param_2)) break;
pcVar1 = (char *)*param_2;
*param_2 = *param_2 + 1;
iVar2 = iVar2 * 0x10 + *pcVar1 + -0x30;
}
if ((*(char *)*param_2 < 'a') || ('f' < *(char *)*param_2)) break;
pcVar1 = (char *)*param_2;
*param_2 = *param_2 + 1;
iVar2 = iVar2 * 0x10 + (int)*pcVar1 + -0x57;
}
if (*(char *)*param_2 < 'A') break;
if ('F' < *(char *)*param_2) {
return iVar2;
}
pcVar1 = (char *)*param_2;
*param_2 = *param_2 + 1;
iVar2 = iVar2 * 0x10 + (int)*pcVar1 + -0x37;
}
return iVar2;
}
/* @00462b38 file=? name=FUN_00462b38 */
undefined4 * __cdecl FUN_00462b38(undefined4 *param_1)
{
FUN_004178cc(param_1,2);
*param_1 = &PTR_FUN_004f369c;
FUN_00462380(param_1 + 3);
FUN_00462380(param_1 + 0x20);
return param_1;
}
/* @00462b6c file=? name=FUN_00462b6c */
void __cdecl FUN_00462b6c(int *param_1,byte param_2)
{
if (param_1 != (int *)0x0) {
*param_1 = (int)&PTR_FUN_004f369c;
FUN_00462430(param_1 + 0x20,2);
FUN_00462430(param_1 + 3,2);
FUN_0041790c(param_1,0);
if ((param_2 & 1) != 0) {
FUN_004022d0(param_1);
}
}
return;
}
/* @00462bb8 file=? name=FUN_00462bb8 */
undefined4 FUN_00462bb8(void)
{
FUN_00415f1c();
return 1;
}
/* @00462bcc file=? name=FUN_00462bcc */
void __cdecl FUN_00462bcc(int param_1)
{
int iVar1;
int iVar2;
FUN_00483193((char *)0x0);
iVar1 = param_1 + 0xc;
FUN_00462578(iVar1,s_AWE_FRONT_004f3631);
iVar2 = param_1 + 0x80;
FUN_00462578(iVar2,s_AWE_REAR_004f363b);
FUN_004624ec(iVar1);
FUN_004624ec(iVar2);
FUN_00462748(iVar1);
FUN_00462748(iVar2);
return;
}
/* @00462c28 file=? name=FUN_00462c28 */
void __cdecl FUN_00462c28(int param_1)
{
FUN_0046254c(param_1 + 0xc);
FUN_0046254c(param_1 + 0x80);
FUN_004832a1();
return;
}
/* @00462c4e file=? name=FUN_00462c4e */
undefined4 * __cdecl FUN_00462c4e(undefined4 *param_1,undefined4 param_2)
{
FUN_00417be0(param_1,param_2);
*param_1 = &PTR_FUN_004f3694;
return param_1;
}
/* @00462c6d file=? name=FUN_00462c6d */
void __cdecl FUN_00462c6d(int *param_1,byte param_2)
{
if (param_1 != (int *)0x0) {
*param_1 = (int)&PTR_FUN_004f3694;
FUN_00417c0c(param_1,0);
if ((param_2 & 1) != 0) {
FUN_004022d0(param_1);
}
}
return;
}
/* @00462c99 file=? name=FUN_00462c99 */
undefined4 * __cdecl FUN_00462c99(undefined4 *param_1,int param_2)
{
FUN_00417d00(param_1,param_2);
*param_1 = &PTR_FUN_004f3644;
return param_1;
}
/* @00462cb8 file=? name=FUN_00462cb8 */
undefined4 * __cdecl FUN_00462cb8(undefined4 *param_1,int param_2)
{
FUN_00417d00(param_1,param_2);
*param_1 = &PTR_FUN_004f3644;
return param_1;
}
/* @00462cd7 file=? name=FUN_00462cd7 */
undefined4 * __cdecl FUN_00462cd7(undefined4 *param_1,int param_2)
{
FUN_00417d28(param_1,param_2);
*param_1 = &PTR_FUN_004f3644;
return param_1;
}
/* @00462cf6 file=? name=FUN_00462cf6 */
void __cdecl FUN_00462cf6(int *param_1,byte param_2)
{
if (param_1 != (int *)0x0) {
*param_1 = (int)&PTR_FUN_004f3644;
FUN_00417d54(param_1,0);
if ((param_2 & 1) != 0) {
FUN_004022d0(param_1);
}
}
return;
}
/* @00462d24 file=? name=FUN_00462d24 */
void __cdecl FUN_00462d24(undefined4 *param_1)
{
*param_1 = 0;
param_1[1] = 0;
param_1[2] = 0;
param_1[3] = 0;
param_1[4] = 0;
param_1[5] = 0;
param_1[6] = 0;
param_1[7] = 0;
param_1[8] = 0;
param_1[9] = 0;
return;
}
/* @00462d60 file=? name=FUN_00462d60 */
void __cdecl FUN_00462d60(int *param_1,byte param_2)
{
if ((param_1 != (int *)0x0) && ((param_2 & 1) != 0)) {
FUN_004022d0(param_1);
}
return;
}
/* @00462d7c file=? name=FUN_00462d7c */
undefined4 FUN_00462d7c(void)
{
return 1;
}
/* @00462d88 file=? name=FUN_00462d88 */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
void __cdecl FUN_00462d88(float *param_1,float param_2)
{
float fVar1;
int iVar2;
float fVar3;
float10 fVar4;
float10 fVar5;
*param_1 = param_2;
*param_1 = _DAT_0046312c + *param_1;
if (_DAT_0046312c < *param_1) {
*param_1 = *param_1 - _DAT_00463130;
}
iVar2 = *(int *)(*(int *)(DAT_004efc94 + 0x44) + 0x4c);
param_1[1] = 0.0;
param_1[2] = 0.0;
param_1[3] = 0.0;
param_1[4] = 0.0;
fVar3 = *(float *)(iVar2 + 0x48);
param_1[5] = 0.0;
param_1[6] = 0.0;
param_1[7] = 0.0;
param_1[8] = 0.0;
if ((*param_1 <= -0.7853982) || (0.7853982 <= *param_1)) {
if ((*param_1 <= 0.7853982) || (_DAT_0046312c - 0.7853982 <= *param_1)) {
if ((_DAT_0046312c - 0.7853982 < *param_1) || (*param_1 < _DAT_00463144 + 0.7853982)) {
param_1[9] = 2.8026e-45;
*param_1 = *param_1 - _DAT_0046312c;
fVar4 = (float10)FUN_004dd188(SUB84((double)*param_1,0),
(int)((ulonglong)(double)*param_1 >> 0x20));
fVar5 = (float10)FUN_004dd188(0x60000000,0x3fe921fb);
fVar1 = (float)(((float10)(double)fVar4 / fVar5) * (float10)_DAT_00463134);
fVar4 = FUN_004dd138((double)(_DAT_00463134 + fVar1));
param_1[4] = (float)fVar4;
fVar4 = FUN_004dd138((double)(_DAT_00463134 - fVar1));
param_1[3] = (float)fVar4;
if (*param_1 <= -0.7853982) {
param_1[8] = -(-fVar1 * fVar3 * _DAT_0046313c);
}
else {
param_1[7] = -(fVar3 * fVar1 * _DAT_0046313c);
}
}
else {
param_1[9] = 4.2039e-45;
*param_1 = *param_1 + _DAT_00463140;
fVar4 = (float10)FUN_004dd188(SUB84((double)*param_1,0),
(int)((ulonglong)(double)*param_1 >> 0x20));
fVar5 = (float10)FUN_004dd188(SUB84((double)(_DAT_00463140 - 0.7853982),0),
(int)((ulonglong)(double)(_DAT_00463140 - 0.7853982) >> 0x20))
;
fVar1 = (float)(((float10)(double)fVar4 / fVar5) * (float10)_DAT_00463134);
fVar4 = FUN_004dd138((double)(_DAT_00463134 + fVar1));
param_1[2] = (float)fVar4;
fVar4 = FUN_004dd138((double)(_DAT_00463134 - fVar1));
param_1[4] = (float)fVar4;
if (*param_1 <= _DAT_00463138) {
param_1[8] = -fVar1 * fVar3 * _DAT_0046313c;
}
else {
param_1[6] = fVar3 * fVar1 * _DAT_0046313c;
}
}
}
else {
param_1[9] = 1.4013e-45;
*param_1 = *param_1 - _DAT_00463140;
fVar4 = (float10)FUN_004dd188(SUB84((double)*param_1,0),
(int)((ulonglong)(double)*param_1 >> 0x20));
fVar5 = (float10)FUN_004dd188(SUB84((double)(_DAT_00463140 - 0.7853982),0),
(int)((ulonglong)(double)(_DAT_00463140 - 0.7853982) >> 0x20));
fVar1 = (float)(((float10)(double)fVar4 / fVar5) * (float10)_DAT_00463134);
fVar4 = FUN_004dd138((double)(_DAT_00463134 + fVar1));
param_1[3] = (float)fVar4;
fVar4 = FUN_004dd138((double)(_DAT_00463134 - fVar1));
param_1[1] = (float)fVar4;
if (*param_1 <= _DAT_00463138) {
param_1[5] = -fVar1 * fVar3 * _DAT_0046313c;
}
else {
param_1[7] = fVar3 * fVar1 * _DAT_0046313c;
}
}
}
else {
param_1[9] = 0.0;
fVar4 = (float10)FUN_004dd188(SUB84((double)*param_1,0),
(int)((ulonglong)(double)*param_1 >> 0x20));
fVar5 = (float10)FUN_004dd188(0x60000000,0x3fe921fb);
fVar1 = (float)(((float10)(double)fVar4 / fVar5) * (float10)_DAT_00463134);
fVar4 = FUN_004dd138((double)(_DAT_00463134 + fVar1));
param_1[1] = (float)fVar4;
fVar4 = FUN_004dd138((double)(_DAT_00463134 - fVar1));
param_1[2] = (float)fVar4;
if (*param_1 <= _DAT_00463138) {
param_1[6] = -fVar1 * fVar3 * _DAT_0046313c;
}
else {
param_1[5] = fVar3 * fVar1 * _DAT_0046313c;
}
}
return;
}
/* @00463148 file=? name=FUN_00463148 */
undefined4 * __cdecl FUN_00463148(undefined4 *param_1,int *param_2,int param_3)
{
FUN_00438060(param_1,param_2,param_3);
*param_1 = &PTR_FUN_004f3ac0;
FUN_00462d24(param_1 + 0x19);
FUN_0046317c((int)param_1);
return param_1;
}
/* @0046317c file=? name=FUN_0046317c */
void __cdecl FUN_0046317c(int param_1)
{
int *piVar1;
int iVar2;
int *piVar3;
iVar2 = *(int *)(*(int *)(DAT_004efc94 + 0x44) + 0x18);
piVar3 = (int *)FUN_00414b60();
piVar1 = (int *)(param_1 + 0x8c);
*piVar1 = *piVar3;
*piVar1 = *piVar1 - iVar2;
*(undefined4 *)(param_1 + 0x90) = 0;
*(undefined4 *)(param_1 + 0x94) = 0;
*(undefined4 *)(param_1 + 0x98) = 0;
*(undefined4 *)(param_1 + 0x9c) = 0;
*(undefined4 *)(param_1 + 0xa0) = 0;
*(undefined4 *)(param_1 + 0xa4) = 0;
*(undefined4 *)(param_1 + 0xa8) = 0;
*(undefined4 *)(param_1 + 0xac) = 0;
return;
}
/* @004631f4 file=? name=FUN_004631f4 */
void __cdecl FUN_004631f4(int *param_1,byte param_2)
{
if (param_1 != (int *)0x0) {
*param_1 = (int)&PTR_FUN_004f3ac0;
FUN_00462d60(param_1 + 0x19,2);
FUN_004380f8(param_1,0);
if ((param_2 & 1) != 0) {
FUN_004022d0(param_1);
}
}
return;
}
/* @00463230 file=? name=FUN_00463230 */
undefined4 __cdecl FUN_00463230(int param_1)
{
FUN_00438178(param_1);
return 1;
}
/* @00463244 file=? name=FUN_00463244 */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
void FUN_00463244(int param_1,int param_2)
{
int iVar1;
float fVar2;
float fVar3;
int *piVar4;
float10 fVar5;
FUN_004383b4(param_1,(int *)param_2);
if (*(int *)(param_1 + 0x38) == 0) {
FUN_00462d88((float *)(param_1 + 100),*(float *)(param_1 + 0x4c));
piVar4 = (int *)FUN_00414b60();
iVar1 = *piVar4 - *(int *)(param_1 + 0x8c);
piVar4 = (int *)FUN_00414b60();
*(int *)(param_1 + 0x8c) = *piVar4;
*(undefined4 *)(param_1 + 0xa0) = 0;
*(undefined4 *)(param_1 + 0xa4) = 0;
*(undefined4 *)(param_1 + 0xa8) = 0;
*(undefined4 *)(param_1 + 0xac) = 0;
fVar5 = FUN_004dcd00((double)((float)iVar1 / DAT_0052140c));
if ((float10)_DAT_00463574 < fVar5) {
if (*(float *)(param_1 + 0x90) != *(float *)(param_1 + 0x78)) {
*(float *)(param_1 + 0xa0) =
((*(float *)(param_1 + 0x78) - *(float *)(param_1 + 0x90)) * 1915.5) /
((float)iVar1 / DAT_0052140c);
*(undefined4 *)(param_1 + 0x90) = *(undefined4 *)(param_1 + 0x78);
}
if (*(float *)(param_1 + 0x94) != *(float *)(param_1 + 0x7c)) {
*(float *)(param_1 + 0xa4) =
((*(float *)(param_1 + 0x7c) - *(float *)(param_1 + 0x94)) * 1915.5) /
((float)iVar1 / DAT_0052140c);
*(undefined4 *)(param_1 + 0x94) = *(undefined4 *)(param_1 + 0x7c);
}
if (*(float *)(param_1 + 0x98) != *(float *)(param_1 + 0x80)) {
*(float *)(param_1 + 0xa8) =
((*(float *)(param_1 + 0x80) - *(float *)(param_1 + 0x98)) * 1915.5) /
((float)iVar1 / DAT_0052140c);
*(undefined4 *)(param_1 + 0x98) = *(undefined4 *)(param_1 + 0x80);
}
if (*(float *)(param_1 + 0x9c) != *(float *)(param_1 + 0x84)) {
*(float *)(param_1 + 0xac) =
((*(float *)(param_1 + 0x84) - *(float *)(param_1 + 0x9c)) * 1915.5) /
((float)iVar1 / DAT_0052140c);
*(undefined4 *)(param_1 + 0x9c) = *(undefined4 *)(param_1 + 0x84);
}
}
fVar3 = *(float *)(param_2 + 0x18) * _DAT_00463578;
fVar5 = FUN_004dd138((double)(*(float *)(param_1 + 0x44) * *(float *)(param_1 + 0x44) +
*(float *)(param_1 + 0x3c) * *(float *)(param_1 + 0x3c) + 0.0));
if ((float)fVar5 < fVar3) {
fVar3 = ((fVar3 - (float)fVar5) * _DAT_00463578) / fVar3;
fVar5 = FUN_004dd138((double)(_DAT_0046357c - fVar3));
fVar2 = (float)fVar5;
fVar5 = FUN_004dd138((double)fVar3);
fVar3 = (float)fVar5;
iVar1 = *(int *)(param_1 + 0x88);
if (iVar1 == 0) {
*(float *)(param_1 + 0x70) = *(float *)(param_1 + 0x68) * fVar3;
*(float *)(param_1 + 0x74) = *(float *)(param_1 + 0x6c) * fVar3;
*(float *)(param_1 + 0x68) = fVar2 * *(float *)(param_1 + 0x68);
*(float *)(param_1 + 0x6c) = fVar2 * *(float *)(param_1 + 0x6c);
}
else if (iVar1 == 1) {
*(float *)(param_1 + 0x74) = *(float *)(param_1 + 0x70) * fVar3;
*(float *)(param_1 + 0x6c) = *(float *)(param_1 + 0x68) * fVar3;
*(float *)(param_1 + 0x70) = fVar2 * *(float *)(param_1 + 0x70);
*(float *)(param_1 + 0x68) = fVar2 * *(float *)(param_1 + 0x68);
}
else if (iVar1 == 2) {
*(float *)(param_1 + 0x6c) = *(float *)(param_1 + 0x74) * fVar3;
*(float *)(param_1 + 0x68) = *(float *)(param_1 + 0x70) * fVar3;
*(float *)(param_1 + 0x74) = fVar2 * *(float *)(param_1 + 0x74);
*(float *)(param_1 + 0x70) = fVar2 * *(float *)(param_1 + 0x70);
}
else if (iVar1 == 3) {
*(float *)(param_1 + 0x68) = *(float *)(param_1 + 0x6c) * fVar3;
*(float *)(param_1 + 0x70) = *(float *)(param_1 + 0x74) * fVar3;
*(float *)(param_1 + 0x6c) = fVar2 * *(float *)(param_1 + 0x6c);
*(float *)(param_1 + 0x74) = fVar2 * *(float *)(param_1 + 0x74);
}
}
}
else {
*(undefined4 *)(param_1 + 0x68) = 0x3f800000;
*(undefined4 *)(param_1 + 0x6c) = 0x3f800000;
*(undefined4 *)(param_1 + 0x70) = 0x3f800000;
*(undefined4 *)(param_1 + 0x74) = 0x3f800000;
*(undefined4 *)(param_1 + 0xa0) = 0;
*(undefined4 *)(param_1 + 0xa4) = 0;
*(undefined4 *)(param_1 + 0xa8) = 0;
*(undefined4 *)(param_1 + 0xac) = 0;
}
return;
}
/* @0046324a file=? name=FUN_0046324a */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
void FUN_0046324a(void)
{
int *piVar1;
int iVar2;
int iVar3;
undefined4 *puVar4;
int *piVar5;
int unaff_EBP;
float10 fVar6;
piVar1 = *(int **)(unaff_EBP + 0xc);
iVar2 = *(int *)(unaff_EBP + 8);
FUN_004383b4(iVar2,piVar1);
if (*(int *)(iVar2 + 0x38) == 0) {
FUN_00462d88((float *)(iVar2 + 100),*(float *)(iVar2 + 0x4c));
*(undefined4 *)(unaff_EBP + -4) = 0x44ef7000;
puVar4 = (undefined4 *)FUN_00414b60();
*(undefined4 *)(unaff_EBP + -8) = *puVar4;
*(int *)(unaff_EBP + -8) = *(int *)(unaff_EBP + -8) - *(int *)(iVar2 + 0x8c);
piVar5 = (int *)FUN_00414b60();
*(int *)(iVar2 + 0x8c) = *piVar5;
*(undefined4 *)(iVar2 + 0xa0) = 0;
*(undefined4 *)(iVar2 + 0xa4) = 0;
*(undefined4 *)(iVar2 + 0xa8) = 0;
*(undefined4 *)(iVar2 + 0xac) = 0;
*(float *)(unaff_EBP + -0xc) = (float)*(int *)(unaff_EBP + -8) / DAT_0052140c;
fVar6 = FUN_004dcd00((double)*(float *)(unaff_EBP + -0xc));
if ((float10)_DAT_00463574 < fVar6) {
if (*(float *)(iVar2 + 0x90) != *(float *)(iVar2 + 0x78)) {
*(float *)(iVar2 + 0xa0) =
((*(float *)(iVar2 + 0x78) - *(float *)(iVar2 + 0x90)) * *(float *)(unaff_EBP + -4)) /
((float)*(int *)(unaff_EBP + -8) / DAT_0052140c);
*(undefined4 *)(iVar2 + 0x90) = *(undefined4 *)(iVar2 + 0x78);
}
if (*(float *)(iVar2 + 0x94) != *(float *)(iVar2 + 0x7c)) {
*(float *)(iVar2 + 0xa4) =
((*(float *)(iVar2 + 0x7c) - *(float *)(iVar2 + 0x94)) * *(float *)(unaff_EBP + -4)) /
((float)*(int *)(unaff_EBP + -8) / DAT_0052140c);
*(undefined4 *)(iVar2 + 0x94) = *(undefined4 *)(iVar2 + 0x7c);
}
if (*(float *)(iVar2 + 0x98) != *(float *)(iVar2 + 0x80)) {
*(float *)(iVar2 + 0xa8) =
((*(float *)(iVar2 + 0x80) - *(float *)(iVar2 + 0x98)) * *(float *)(unaff_EBP + -4)) /
((float)*(int *)(unaff_EBP + -8) / DAT_0052140c);
*(undefined4 *)(iVar2 + 0x98) = *(undefined4 *)(iVar2 + 0x80);
}
if (*(float *)(iVar2 + 0x9c) != *(float *)(iVar2 + 0x84)) {
*(float *)(iVar2 + 0xac) =
((*(float *)(iVar2 + 0x84) - *(float *)(iVar2 + 0x9c)) * *(float *)(unaff_EBP + -4)) /
((float)*(int *)(unaff_EBP + -8) / DAT_0052140c);
*(undefined4 *)(iVar2 + 0x9c) = *(undefined4 *)(iVar2 + 0x84);
}
}
*(float *)(unaff_EBP + -0x10) = (float)piVar1[6] * _DAT_00463578;
*(undefined4 *)(unaff_EBP + -0x18) = *(undefined4 *)(iVar2 + 0x44);
*(undefined4 *)(unaff_EBP + -0x1c) = *(undefined4 *)(iVar2 + 0x3c);
*(undefined4 *)(unaff_EBP + -0x34) = *(undefined4 *)(unaff_EBP + -0x1c);
*(undefined4 *)(unaff_EBP + -0x30) = 0;
*(undefined4 *)(unaff_EBP + -0x2c) = *(undefined4 *)(unaff_EBP + -0x18);
fVar6 = FUN_004dd138((double)(*(float *)(unaff_EBP + -0x2c) * *(float *)(unaff_EBP + -0x2c) +
*(float *)(unaff_EBP + -0x30) * *(float *)(unaff_EBP + -0x30) +
*(float *)(unaff_EBP + -0x34) * *(float *)(unaff_EBP + -0x34)));
*(float *)(unaff_EBP + -0x14) = (float)fVar6;
if (*(float *)(unaff_EBP + -0x14) < *(float *)(unaff_EBP + -0x10)) {
*(float *)(unaff_EBP + -0x20) =
((*(float *)(unaff_EBP + -0x10) - *(float *)(unaff_EBP + -0x14)) * _DAT_00463578) /
*(float *)(unaff_EBP + -0x10);
fVar6 = FUN_004dd138((double)(_DAT_0046357c - *(float *)(unaff_EBP + -0x20)));
*(float *)(unaff_EBP + -0x24) = (float)fVar6;
fVar6 = FUN_004dd138((double)*(float *)(unaff_EBP + -0x20));
*(float *)(unaff_EBP + -0x28) = (float)fVar6;
iVar3 = *(int *)(iVar2 + 0x88);
if (iVar3 == 0) {
*(float *)(iVar2 + 0x70) = *(float *)(iVar2 + 0x68) * *(float *)(unaff_EBP + -0x28);
*(float *)(iVar2 + 0x74) = *(float *)(iVar2 + 0x6c) * *(float *)(unaff_EBP + -0x28);
*(float *)(iVar2 + 0x68) = *(float *)(unaff_EBP + -0x24) * *(float *)(iVar2 + 0x68);
*(float *)(iVar2 + 0x6c) = *(float *)(unaff_EBP + -0x24) * *(float *)(iVar2 + 0x6c);
}
else if (iVar3 == 1) {
*(float *)(iVar2 + 0x74) = *(float *)(iVar2 + 0x70) * *(float *)(unaff_EBP + -0x28);
*(float *)(iVar2 + 0x6c) = *(float *)(iVar2 + 0x68) * *(float *)(unaff_EBP + -0x28);
*(float *)(iVar2 + 0x70) = *(float *)(unaff_EBP + -0x24) * *(float *)(iVar2 + 0x70);
*(float *)(iVar2 + 0x68) = *(float *)(unaff_EBP + -0x24) * *(float *)(iVar2 + 0x68);
}
else if (iVar3 == 2) {
*(float *)(iVar2 + 0x6c) = *(float *)(iVar2 + 0x74) * *(float *)(unaff_EBP + -0x28);
*(float *)(iVar2 + 0x68) = *(float *)(iVar2 + 0x70) * *(float *)(unaff_EBP + -0x28);
*(float *)(iVar2 + 0x74) = *(float *)(unaff_EBP + -0x24) * *(float *)(iVar2 + 0x74);
*(float *)(iVar2 + 0x70) = *(float *)(unaff_EBP + -0x24) * *(float *)(iVar2 + 0x70);
}
else if (iVar3 == 3) {
*(float *)(iVar2 + 0x68) = *(float *)(iVar2 + 0x6c) * *(float *)(unaff_EBP + -0x28);
*(float *)(iVar2 + 0x70) = *(float *)(iVar2 + 0x74) * *(float *)(unaff_EBP + -0x28);
*(float *)(iVar2 + 0x6c) = *(float *)(unaff_EBP + -0x24) * *(float *)(iVar2 + 0x6c);
*(float *)(iVar2 + 0x74) = *(float *)(unaff_EBP + -0x24) * *(float *)(iVar2 + 0x74);
}
}
}
else {
*(undefined4 *)(iVar2 + 0x68) = 0x3f800000;
*(undefined4 *)(iVar2 + 0x6c) = 0x3f800000;
*(undefined4 *)(iVar2 + 0x70) = 0x3f800000;
*(undefined4 *)(iVar2 + 0x74) = 0x3f800000;
*(undefined4 *)(iVar2 + 0xa0) = 0;
*(undefined4 *)(iVar2 + 0xa4) = 0;
*(undefined4 *)(iVar2 + 0xa8) = 0;
*(undefined4 *)(iVar2 + 0xac) = 0;
}
return;
}
/* @00463580 file=? name=FUN_00463580 */
undefined4 * __cdecl FUN_00463580(undefined4 *param_1)
{
undefined4 *puVar1;
int iVar2;
iVar2 = 0;
puVar1 = param_1;
do {
*puVar1 = 0;
puVar1[4] = 0;
iVar2 = iVar2 + 1;
puVar1 = puVar1 + 1;
} while (iVar2 < 4);
return param_1;
}
/* @004635a4 file=? name=FUN_004635a4 */
undefined4 FUN_004635a4(void)
{
int iVar1;
iVar1 = 0;
do {
iVar1 = iVar1 + 1;
} while (iVar1 < 4);
return 1;
}
/* @004635c0 file=? name=FUN_004635c0 */
void __cdecl FUN_004635c0(undefined4 *param_1)
{
int iVar1;
iVar1 = 0;
do {
*param_1 = 0;
param_1[4] = 1;
iVar1 = iVar1 + 1;
param_1 = param_1 + 1;
} while (iVar1 < 4);
return;
}
/* @004635e0 file=? name=FUN_004635e0 */
void __cdecl FUN_004635e0(int *param_1)
{
int iVar1;
int iVar2;
iVar2 = 0;
do {
iVar1 = *param_1;
if (iVar1 != 0) {
FUN_00462a98(*(int *)(iVar1 + 0x18),iVar1);
*param_1 = 0;
}
iVar2 = iVar2 + 1;
param_1 = param_1 + 1;
} while (iVar2 < 4);
return;
}
/* @00463610 file=? name=FUN_00463610 */
undefined4 * __cdecl FUN_00463610(undefined4 *param_1,int *param_2,int param_3)
{
FUN_0043b22c(param_1,param_2,param_3);
*param_1 = &PTR_FUN_004f3a60;
FUN_00463580(param_1 + 0x29);
FUN_00463668();
return param_1;
}
/* @00463648 file=? name=FUN_00463648 */
void __cdecl FUN_00463648(int *param_1,int param_2)
{
FUN_0043b37c(param_1,param_2);
return;
}
/* @00463668 file=? name=FUN_00463668 */
void FUN_00463668(void)
{
return;
}
/* @00463670 file=? name=FUN_00463670 */
void __cdecl FUN_00463670(int *param_1,byte param_2)
{
if (param_1 != (int *)0x0) {
*param_1 = (int)&PTR_FUN_004f3a60;
FUN_0043b998(param_1,0);
if ((param_2 & 1) != 0) {
FUN_004022d0(param_1);
}
}
return;
}
/* @0046369c file=? name=FUN_0046369c */
undefined4 __cdecl FUN_0046369c(int param_1)
{
FUN_0043b9e0(param_1);
return 1;
}
/* @004636b0 file=? name=FUN_004636b0 */
void __cdecl FUN_004636b0(int *param_1)
{
FUN_00467a9c(*(int *)(DAT_004efc94 + 0x44),param_1);
return;
}
/* @004636cc file=? name=FUN_004636cc */
void __cdecl FUN_004636cc(int param_1,undefined4 *param_2)
{
int iVar1;
undefined4 *puVar2;
puVar2 = (undefined4 *)(param_1 + 0xa4);
for (iVar1 = 8; iVar1 != 0; iVar1 = iVar1 + -1) {
*puVar2 = *param_2;
param_2 = param_2 + 1;
puVar2 = puVar2 + 1;
}
return;
}
/* @004636ec file=? name=FUN_004636ec */
int __cdecl FUN_004636ec(int param_1)
{
return param_1 + 0xa4;
}
/* @004636fc file=? name=FUN_004636fc */
void __cdecl FUN_004636fc(int param_1)
{
FUN_004635e0((int *)(param_1 + 0xa4));
return;
}
/* @00463710 file=? name=FUN_00463710 */
undefined4 * __cdecl FUN_00463710(undefined4 *param_1,int *param_2,int param_3)
{
FUN_00463610(param_1,param_2,param_3);
*param_1 = &PTR_FUN_004f3a00;
(**(code **)(*param_2 + 0x1c))(param_2,param_1 + 0x31,4);
param_1[0x32] = 0;
return param_1;
}
/* @00463754 file=munga_l4/l4audio.cpp name=FUN_00463754 */
void __cdecl FUN_00463754(int *param_1,int param_2)
{
char *pcVar1;
int local_8;
FUN_00463648(param_1,param_2);
pcVar1 = (char *)FUN_00403ad0(param_2,s_position_004f36b8);
if (pcVar1 == (char *)0x0) {
FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004f36c1,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s_position_004f36e6,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,&DAT_004f36ef,(char *)0x0);
FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004f36f1,
s_d__tesla_bt_munga_l4_L4AUDIO_CPP_004f3731,0x330);
}
FUN_00407ae0(pcVar1,&local_8);
(**(code **)(*param_1 + 0x20))(param_1,&local_8,4);
return;
}
/* @004637fc file=? name=FUN_004637fc */
void __cdecl FUN_004637fc(int *param_1,byte param_2)
{
if (param_1 != (int *)0x0) {
*param_1 = (int)&PTR_FUN_004f3a00;
FUN_00463670(param_1,0);
if ((param_2 & 1) != 0) {
FUN_004022d0(param_1);
}
}
return;
}
/* @00463828 file=? name=FUN_00463828 */
undefined4 __cdecl FUN_00463828(int param_1)
{
FUN_0046369c(param_1);
return 1;
}
/* @00463848 file=? name=FUN_00463848 */
void __cdecl FUN_00463848(int *param_1)
{
int iVar1;
int *piVar2;
int *piVar3;
piVar2 = &DAT_00522c9c;
piVar3 = param_1 + 0x29;
for (iVar1 = 8; iVar1 != 0; iVar1 = iVar1 + -1) {
*piVar3 = *piVar2;
piVar2 = piVar2 + 1;
piVar3 = piVar3 + 1;
}
iVar1 = param_1[0x31];
if (iVar1 == 0) {
LAB_0046387c:
param_1[0x2d] = 1;
}
else {
if (iVar1 != 1) {
if (iVar1 - 2U < 2) goto LAB_0046387c;
if (1 < iVar1 - 4U) goto LAB_00463892;
}
param_1[0x2f] = 1;
}
LAB_00463892:
FUN_0046797c(*(int *)(DAT_004efc94 + 0x44),param_1);
return;
}
/* @004638a8 file=? name=FUN_004638a8 */
void __cdecl FUN_004638a8(int *param_1)
{
undefined4 uVar1;
int iVar2;
undefined4 uVar3;
byte local_601;
undefined1 local_600;
undefined1 local_5ff;
byte local_502 [255];
byte local_403 [255];
byte local_304 [4];
undefined1 local_300;
undefined1 local_2ff;
byte local_202 [255];
byte local_103 [255];
FUN_0043bfa4((int)param_1);
iVar2 = param_1[0x31];
if (iVar2 == 0) {
LAB_004638d8:
param_1[0x32] = param_1[0x29];
}
else {
if (iVar2 != 1) {
if (iVar2 - 2U < 2) goto LAB_004638d8;
if (1 < iVar2 - 4U) goto LAB_004638f2;
}
param_1[0x32] = param_1[0x2b];
}
LAB_004638f2:
FUN_00436db0((int)param_1);
local_103[0] = *(byte *)(param_1[0x32] + 0x10) | 0xb0;
local_103[1] = 7;
local_103[2] = 0;
FUN_00486402(*(int *)(*(int *)(param_1[0x32] + 0x18) + 0x4c),local_103,3);
iVar2 = param_1[10];
FUN_004379b8(iVar2,*(float *)(param_1[9] + 0x48));
FUN_00465cb4(iVar2,param_1[0x32]);
local_202[0] = *(byte *)(param_1[0x32] + 0x10) | 0xb0;
local_202[1] = 0x5b;
local_202[2] = 0;
FUN_00486402(*(int *)(*(int *)(param_1[0x32] + 0x18) + 0x4c),local_202,3);
local_304[3] = *(byte *)(param_1[0x32] + 0x10) | 0xb0;
local_300 = 0x5d;
local_2ff = 0;
FUN_00486402(*(int *)(*(int *)(param_1[0x32] + 0x18) + 0x4c),local_304 + 3,3);
switch(param_1[0x31]) {
case 0:
case 1:
local_304[0] = *(byte *)(param_1[0x32] + 0x10) | 0xb0;
local_304[1] = 10;
local_304[2] = 0x3f;
FUN_00486402(*(int *)(*(int *)(param_1[0x32] + 0x18) + 0x4c),local_304,3);
break;
case 2:
case 4:
local_403[0] = *(byte *)(param_1[0x32] + 0x10) | 0xb0;
local_403[1] = 10;
local_403[2] = 0;
FUN_00486402(*(int *)(*(int *)(param_1[0x32] + 0x18) + 0x4c),local_403,3);
break;
case 3:
case 5:
local_502[0] = *(byte *)(param_1[0x32] + 0x10) | 0xb0;
local_502[1] = 10;
local_502[2] = 0x7f;
FUN_00486402(*(int *)(*(int *)(param_1[0x32] + 0x18) + 0x4c),local_502,3);
}
*(undefined1 *)(param_1 + 0x33) = 0;
param_1[0x34] = 0;
param_1[0x35] = 0x7f;
uVar1 = FUN_004dcd94();
if (param_1[0x19] != 0) {
iVar2 = FUN_004dcd94();
FUN_004628d8(*(int *)(param_1[0x32] + 0x18),*(byte *)(param_1[0x32] + 0x10),0xb,iVar2);
}
(**(code **)(*param_1 + 0x5c))(param_1,1);
uVar3 = FUN_004dcd94();
local_601 = *(byte *)(param_1[0x32] + 0x10) | 0x90;
local_600 = (undefined1)uVar3;
local_5ff = (undefined1)uVar1;
FUN_00486402(*(int *)(*(int *)(param_1[0x32] + 0x18) + 0x4c),&local_601,3);
return;
}
/* @00463bbc file=? name=FUN_00463bbc */
void __cdecl FUN_00463bbc(int *param_1,int param_2)
{
int iVar1;
uint uVar2;
int iVar3;
float10 fVar4;
byte local_103 [243];
float local_10;
float local_c;
float local_8;
fVar4 = (float10)(**(code **)(*param_1 + 0x20))(param_1);
local_8 = (float)fVar4;
iVar1 = FUN_004dcd94();
if (iVar1 < -0x1fff) {
iVar1 = -0x1fff;
}
else if (0x1fff < iVar1) {
iVar1 = 0x1fff;
}
iVar3 = param_1[0x34] - iVar1;
if (iVar3 < 1) {
iVar3 = -iVar3;
}
if ((0xb < iVar3) || (param_2 != 0)) {
param_1[0x34] = iVar1;
FUN_00462808(*(int *)(param_1[0x32] + 0x18),*(byte *)(param_1[0x32] + 0x10),iVar1);
}
if (param_1[0x22] != 0) {
fVar4 = (float10)(**(code **)(*param_1 + 0x24))(param_1);
local_c = (float)fVar4;
FUN_00465ccc(param_1[10]);
iVar1 = FUN_004dcd94();
iVar3 = param_1[0x35] - iVar1;
if (iVar3 < 1) {
iVar3 = -iVar3;
}
if (1 < iVar3) {
param_1[0x35] = iVar1;
FUN_004628d8(*(int *)(param_1[0x32] + 0x18),*(byte *)(param_1[0x32] + 0x10),0x15,iVar1);
}
}
fVar4 = (float10)(**(code **)(*param_1 + 0x1c))(param_1);
local_10 = (float)fVar4;
uVar2 = FUN_004dcd94();
local_103[2] = (byte)uVar2;
iVar1 = (uint)*(byte *)(param_1 + 0x33) - (uVar2 & 0xff);
if (iVar1 < 1) {
iVar1 = -iVar1;
}
if (1 < iVar1) {
*(byte *)(param_1 + 0x33) = local_103[2];
local_103[0] = *(byte *)(param_1[0x32] + 0x10) | 0xb0;
local_103[1] = 7;
FUN_00486402(*(int *)(*(int *)(param_1[0x32] + 0x18) + 0x4c),local_103,3);
}
return;
}
/* @00463d4c file=? name=FUN_00463d4c */
undefined4 * __cdecl FUN_00463d4c(undefined4 *param_1,int *param_2,int param_3)
{
FUN_00463610(param_1,param_2,param_3);
*param_1 = &PTR_FUN_004f39a0;
return param_1;
}
/* @00463d70 file=? name=FUN_00463d70 */
void __cdecl FUN_00463d70(int *param_1,byte param_2)
{
if (param_1 != (int *)0x0) {
*param_1 = (int)&PTR_FUN_004f39a0;
FUN_00463670(param_1,0);
if ((param_2 & 1) != 0) {
FUN_004022d0(param_1);
}
}
return;
}
/* @00463d9c file=? name=FUN_00463d9c */
undefined4 __cdecl FUN_00463d9c(int param_1)
{
FUN_0046369c(param_1);
return 1;
}
/* @00463db0 file=? name=FUN_00463db0 */
void __cdecl FUN_00463db0(int *param_1)
{
FUN_004635c0(param_1 + 0x29);
FUN_0046797c(*(int *)(DAT_004efc94 + 0x44),param_1);
return;
}
/* @00463ddc file=? name=FUN_00463ddc */
void __cdecl FUN_00463ddc(int *param_1)
{
int iVar1;
undefined4 uVar2;
int iVar3;
int *piVar4;
byte local_704;
undefined1 local_703;
undefined1 local_702;
undefined1 local_609;
int local_608;
undefined1 local_604;
byte local_603 [255];
byte local_504 [4];
undefined1 local_500;
undefined1 local_4ff;
byte local_402 [255];
byte local_303 [255];
byte local_204 [251];
undefined1 local_109;
int local_108;
byte local_103 [251];
undefined4 local_8;
FUN_0043bfa4((int)param_1);
local_8 = *(undefined4 *)(*(int *)(DAT_004efc94 + 0x44) + 0x4c);
FUN_00436db0((int)param_1);
iVar3 = 0;
piVar4 = param_1 + 0x29;
do {
local_103[0] = *(byte *)(*piVar4 + 0x10) | 0xb0;
local_103[1] = 7;
local_103[2] = 0;
FUN_00486402(*(int *)(*(int *)(*piVar4 + 0x18) + 0x4c),local_103,3);
iVar3 = iVar3 + 1;
piVar4 = piVar4 + 1;
} while (iVar3 < 4);
local_108 = param_1[10];
FUN_004379b8(local_108,*(float *)(param_1[9] + 0x48));
iVar3 = 0;
piVar4 = param_1 + 0x29;
do {
FUN_00465cb4(local_108,*piVar4);
iVar3 = iVar3 + 1;
piVar4 = piVar4 + 1;
} while (iVar3 < 4);
uVar2 = FUN_004dcd94();
local_109 = (undefined1)uVar2;
iVar3 = 0;
piVar4 = param_1 + 0x29;
do {
iVar1 = *piVar4;
local_204[0] = *(byte *)(iVar1 + 0x10) | 0xb0;
local_204[1] = 0x5b;
local_204[2] = local_109;
FUN_00486402(*(int *)(*(int *)(iVar1 + 0x18) + 0x4c),local_204,3);
local_303[0] = *(byte *)(iVar1 + 0x10) | 0xb0;
local_303[1] = 0x5d;
local_303[2] = 0;
FUN_00486402(*(int *)(*(int *)(iVar1 + 0x18) + 0x4c),local_303,3);
iVar3 = iVar3 + 1;
piVar4 = piVar4 + 1;
} while (iVar3 < 4);
local_402[0] = *(byte *)(param_1[0x29] + 0x10) | 0xb0;
local_402[1] = 10;
local_402[2] = 0;
FUN_00486402(*(int *)(*(int *)(param_1[0x29] + 0x18) + 0x4c),local_402,3);
local_504[3] = *(byte *)(param_1[0x2a] + 0x10) | 0xb0;
local_500 = 10;
local_4ff = 0x7f;
FUN_00486402(*(int *)(*(int *)(param_1[0x2a] + 0x18) + 0x4c),local_504 + 3,3);
local_504[0] = *(byte *)(param_1[0x2b] + 0x10) | 0xb0;
local_504[1] = 10;
local_504[2] = 0;
FUN_00486402(*(int *)(*(int *)(param_1[0x2b] + 0x18) + 0x4c),local_504,3);
local_603[0] = *(byte *)(param_1[0x2c] + 0x10) | 0xb0;
local_603[1] = 10;
local_603[2] = 0x7f;
FUN_00486402(*(int *)(*(int *)(param_1[0x2c] + 0x18) + 0x4c),local_603,3);
*(undefined1 *)(param_1 + 0x31) = 0;
*(undefined1 *)((int)param_1 + 0xc5) = 0;
*(undefined1 *)((int)param_1 + 0xc6) = 0;
*(undefined1 *)((int)param_1 + 199) = 0;
param_1[0x32] = 0;
param_1[0x33] = 0;
param_1[0x34] = 0;
param_1[0x35] = 0;
param_1[0x36] = 0x7f;
uVar2 = FUN_004dcd94();
local_604 = (undefined1)uVar2;
if (param_1[0x19] != 0) {
local_608 = FUN_004dcd94();
iVar3 = 0;
piVar4 = param_1 + 0x29;
do {
FUN_004628d8(*(int *)(*piVar4 + 0x18),*(byte *)(*piVar4 + 0x10),0xb,local_608);
iVar3 = iVar3 + 1;
piVar4 = piVar4 + 1;
} while (iVar3 < 4);
}
(**(code **)(*param_1 + 0x5c))(param_1,1);
iVar3 = 0;
piVar4 = param_1 + 0x29;
do {
iVar1 = *piVar4;
local_609 = local_604;
uVar2 = FUN_004dcd94();
local_704 = *(byte *)(iVar1 + 0x10) | 0x90;
local_703 = (undefined1)uVar2;
local_702 = local_609;
FUN_00486402(*(int *)(*(int *)(iVar1 + 0x18) + 0x4c),&local_704,3);
iVar3 = iVar3 + 1;
piVar4 = piVar4 + 1;
} while (iVar3 < 4);
return;
}
/* @004641e0 file=? name=FUN_004641e0 */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
void __cdecl FUN_004641e0(int *param_1,int param_2)
{
bool bVar1;
undefined4 uVar2;
int iVar3;
int iVar4;
int iVar5;
float10 fVar6;
byte local_404 [255];
byte local_305;
char local_304;
byte local_303 [255];
byte local_204;
char local_203;
byte local_202 [255];
byte local_103;
char local_102;
byte local_101 [171];
byte local_56;
char local_55;
int local_54;
int local_50;
int local_4c;
uint local_48;
int local_44;
int local_40;
undefined4 local_3c;
float local_38;
int local_34;
int local_30;
int local_2c;
float local_28;
char local_24;
char local_23;
char local_22;
char local_21;
float local_20;
float local_1c;
int local_18;
int local_14;
int local_10;
int local_c;
int local_8;
FUN_0043c030(param_1);
local_8 = param_1[10];
iVar4 = param_1[9];
local_c = param_1[0x29];
local_10 = param_1[0x2a];
local_14 = param_1[0x2b];
local_18 = param_1[0x2c];
fVar6 = (float10)(**(code **)(*param_1 + 0x1c))(param_1);
local_1c = (float)fVar6;
local_20 = local_1c * _DAT_00464818;
uVar2 = FUN_004dcd94();
local_21 = (char)uVar2;
uVar2 = FUN_004dcd94();
local_22 = (char)uVar2;
uVar2 = FUN_004dcd94();
local_23 = (char)uVar2;
uVar2 = FUN_004dcd94();
local_24 = (char)uVar2;
fVar6 = (float10)(**(code **)(*param_1 + 0x20))(param_1);
local_28 = *(float *)(iVar4 + 0x58) + (float)fVar6;
iVar3 = FUN_004dcd94();
local_2c = FUN_004dcd94();
local_30 = FUN_004dcd94();
local_34 = FUN_004dcd94();
if (iVar3 < -0x1fff) {
iVar3 = -0x1fff;
}
else if (0x1fff < iVar3) {
iVar3 = 0x1fff;
}
if (local_2c < -0x1fff) {
local_2c = -0x1fff;
}
else if (0x1fff < local_2c) {
local_2c = 0x1fff;
}
if (local_30 < -0x1fff) {
local_30 = -0x1fff;
}
else if (0x1fff < local_30) {
local_30 = 0x1fff;
}
if (local_34 < -0x1fff) {
local_34 = -0x1fff;
}
else if (0x1fff < local_34) {
local_34 = 0x1fff;
}
fVar6 = (float10)(**(code **)(*param_1 + 0x24))(param_1);
local_38 = *(float *)(iVar4 + 0x54) * (float)fVar6;
FUN_00465ccc(local_8);
iVar4 = FUN_004dcd94();
local_3c = 2;
iVar5 = iVar3 - param_1[0x32];
if (iVar5 < 1) {
iVar5 = -iVar5;
}
if ((1 < iVar5) || (param_2 != 0)) {
param_1[0x32] = iVar3;
FUN_00462808(*(int *)(local_c + 0x18),*(byte *)(local_c + 0x10),iVar3);
}
iVar3 = local_2c - param_1[0x33];
if (iVar3 < 1) {
iVar3 = -iVar3;
}
if ((1 < iVar3) || (param_2 != 0)) {
param_1[0x33] = local_2c;
FUN_00462808(*(int *)(local_10 + 0x18),*(byte *)(local_10 + 0x10),local_2c);
}
iVar3 = local_30 - param_1[0x34];
if (iVar3 < 1) {
iVar3 = -iVar3;
}
if ((1 < iVar3) || (param_2 != 0)) {
param_1[0x34] = local_30;
local_40 = local_30;
FUN_00462808(*(int *)(local_14 + 0x18),*(byte *)(local_14 + 0x10),local_30);
}
iVar3 = local_34 - param_1[0x35];
if (iVar3 < 1) {
iVar3 = -iVar3;
}
if ((1 < iVar3) || (param_2 != 0)) {
param_1[0x35] = local_34;
local_44 = local_34;
FUN_00462808(*(int *)(local_18 + 0x18),*(byte *)(local_18 + 0x10),local_34);
}
local_48 = 0;
local_4c = 0;
local_50 = 0;
local_54 = 0;
if ((char)param_1[0x31] != local_21) {
local_48 = (uint)((char)param_1[0x31] == '\0');
*(char *)(param_1 + 0x31) = local_21;
local_55 = local_21;
local_56 = *(byte *)(local_c + 0x10);
local_101[0] = local_56 | 0xb0;
local_101[1] = 7;
local_101[2] = local_21;
FUN_00486402(*(int *)(*(int *)(local_c + 0x18) + 0x4c),local_101,3);
}
if (*(char *)((int)param_1 + 0xc5) != local_22) {
if (*(char *)((int)param_1 + 0xc5) == '\0') {
local_4c = 1;
}
*(char *)((int)param_1 + 0xc5) = local_22;
local_102 = local_22;
local_103 = *(byte *)(local_10 + 0x10);
local_202[0] = local_103 | 0xb0;
local_202[1] = 7;
local_202[2] = local_22;
FUN_00486402(*(int *)(*(int *)(local_10 + 0x18) + 0x4c),local_202,3);
}
if (*(char *)((int)param_1 + 0xc6) != local_23) {
if (*(char *)((int)param_1 + 0xc6) == '\0') {
local_50 = 1;
}
*(char *)((int)param_1 + 0xc6) = local_23;
local_203 = local_23;
local_204 = *(byte *)(local_14 + 0x10);
local_303[0] = local_204 | 0xb0;
local_303[1] = 7;
local_303[2] = local_23;
FUN_00486402(*(int *)(*(int *)(local_14 + 0x18) + 0x4c),local_303,3);
}
if (*(char *)((int)param_1 + 199) != local_24) {
if (*(char *)((int)param_1 + 199) == '\0') {
local_54 = 1;
}
*(char *)((int)param_1 + 199) = local_24;
local_304 = local_24;
local_305 = *(byte *)(local_18 + 0x10);
local_404[0] = local_305 | 0xb0;
local_404[1] = 7;
local_404[2] = local_24;
FUN_00486402(*(int *)(*(int *)(local_18 + 0x18) + 0x4c),local_404,3);
}
iVar3 = iVar4 - param_1[0x36];
if (iVar3 < 1) {
iVar3 = -iVar3;
}
bVar1 = 3 < iVar3;
if ((local_48 != 0) || ((bVar1 && (local_21 != '\0')))) {
param_1[0x36] = iVar4;
FUN_004628d8(*(int *)(local_c + 0x18),*(byte *)(local_c + 0x10),0x15,iVar4);
}
if ((local_4c != 0) || ((bVar1 && (local_22 != '\0')))) {
param_1[0x36] = iVar4;
FUN_004628d8(*(int *)(local_10 + 0x18),*(byte *)(local_10 + 0x10),0x15,iVar4);
}
if ((local_50 != 0) || ((bVar1 && (local_23 != '\0')))) {
param_1[0x36] = iVar4;
FUN_004628d8(*(int *)(local_14 + 0x18),*(byte *)(local_14 + 0x10),0x15,iVar4);
}
if ((local_54 != 0) || ((bVar1 && (local_24 != '\0')))) {
param_1[0x36] = iVar4;
FUN_004628d8(*(int *)(local_18 + 0x18),*(byte *)(local_18 + 0x10),0x15,iVar4);
}
return;
}
/* @0046487c file=? name=FUN_0046487c */
undefined4 * __cdecl FUN_0046487c(undefined4 *param_1,int *param_2,int param_3)
{
FUN_00463610(param_1,param_2,param_3);
*param_1 = &PTR_FUN_004f3940;
param_1[0x31] = 0;
param_1[0x32] = 0;
param_1[0x33] = 0;
FUN_00462d24(param_1 + 0x35);
(**(code **)(*param_2 + 0x1c))(param_2,param_1 + 0x34,4);
return param_1;
}
/* @004648d8 file=? name=FUN_004648d8 */
void __cdecl FUN_004648d8(int *param_1,byte param_2)
{
if (param_1 != (int *)0x0) {
*param_1 = (int)&PTR_FUN_004f3940;
FUN_00462d60(param_1 + 0x35,2);
FUN_00463670(param_1,0);
if ((param_2 & 1) != 0) {
FUN_004022d0(param_1);
}
}
return;
}
/* @00464918 file=munga_l4/l4audio.cpp name=FUN_00464918 */
void __cdecl FUN_00464918(int *param_1,int param_2)
{
int iVar1;
char *pcVar2;
undefined4 local_c;
int local_8;
FUN_00463648(param_1,param_2);
iVar1 = FUN_00403ad0(param_2,s_use_internal_004f3752);
if (iVar1 == 0) {
local_c = 1;
(**(code **)(*param_1 + 0x20))(param_1,&local_c,4);
}
else {
pcVar2 = (char *)FUN_00403ad0(param_2,s_use_internal_004f375f);
if (pcVar2 == (char *)0x0) {
FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004f376c,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s_use_internal_004f3791,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,&DAT_004f379e,(char *)0x0);
FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004f37a0,
s_d__tesla_bt_munga_l4_L4AUDIO_CPP_004f37e0,0x6a2);
}
FUN_00407ae0(pcVar2,&local_8);
(**(code **)(*param_1 + 0x20))(param_1,&local_8,4);
}
return;
}
/* @004649f4 file=? name=FUN_004649f4 */
undefined4 __cdecl FUN_004649f4(int param_1)
{
FUN_0046369c(param_1);
return 1;
}
/* @00464a14 file=? name=FUN_00464a14 */
void __cdecl FUN_00464a14(int param_1,undefined4 *param_2)
{
FUN_00408440((undefined4 *)(param_1 + 0xc4),param_2);
return;
}
/* @00464a34 file=? name=FUN_00464a34 */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
void __cdecl FUN_00464a34(int *param_1)
{
int iVar1;
int *piVar2;
int iVar3;
float10 fVar4;
float local_c;
iVar1 = *(int *)(DAT_004efc94 + 0x44);
if (param_1[0x34] == 0) {
iVar3 = *(int *)(iVar1 + 0x4c);
piVar2 = (int *)param_1[9];
if (piVar2[0x18] <= *(int *)(iVar3 + 4)) {
piVar2[0x18] = *(int *)(iVar3 + 4) + piVar2[0x17];
(**(code **)(*piVar2 + 0x1c))(piVar2);
}
iVar3 = param_1[9];
param_1[0x36] = *(int *)(iVar3 + 0x68);
param_1[0x37] = *(int *)(iVar3 + 0x6c);
param_1[0x38] = *(int *)(iVar3 + 0x70);
param_1[0x39] = *(int *)(iVar3 + 0x74);
param_1[0x3a] = *(int *)(iVar3 + 0x78);
param_1[0x3b] = *(int *)(iVar3 + 0x7c);
param_1[0x3c] = *(int *)(iVar3 + 0x80);
param_1[0x3d] = *(int *)(iVar3 + 0x84);
param_1[0x3e] = *(int *)(iVar3 + 0x88);
param_1[0x35] = *(int *)(iVar3 + 100);
}
else {
fVar4 = FUN_004dcd00((double)(float)param_1[0x31]);
if (((float10)_DAT_00464bf8 < fVar4) ||
(fVar4 = FUN_004dcd00((double)(float)param_1[0x33]), (float10)_DAT_00464bf8 < fVar4)) {
fVar4 = FUN_004dc8ec((double)(float)param_1[0x31],SUB84((double)(float)param_1[0x33],0),
(uint)((ulonglong)(double)(float)param_1[0x33] >> 0x20));
local_c = (float)fVar4;
}
else {
local_c = 0.0;
}
FUN_00462d88((float *)(param_1 + 0x35),local_c);
}
param_1[0x2d] = 0;
param_1[0x2e] = 0;
param_1[0x2f] = 0;
param_1[0x30] = 0;
iVar3 = param_1[0x3e];
if (iVar3 == 0) {
param_1[0x2d] = 1;
}
else if (iVar3 == 1) {
param_1[0x2d] = 1;
param_1[0x2f] = 1;
}
else if (iVar3 == 2) {
param_1[0x2f] = 1;
}
else if (iVar3 == 3) {
param_1[0x2e] = 1;
param_1[0x30] = 1;
}
FUN_0046797c(iVar1,param_1);
return;
}
/* @004651ac file=? name=FUN_004651ac */
void __cdecl FUN_004651ac(int *param_1,int param_2)
{
int iVar1;
int iVar2;
int iVar3;
undefined4 uVar4;
float10 fVar5;
byte local_602 [255];
byte local_503;
char local_502;
byte local_501 [251];
byte local_406;
char local_405;
char local_404;
char local_403;
byte local_402 [255];
byte local_303;
char local_302;
byte local_301 [251];
byte local_206;
char local_205;
byte local_204 [255];
byte local_105;
char local_104;
char local_103;
char local_102;
byte local_101 [207];
byte local_32;
char local_31;
int local_30;
int local_2c;
int local_28;
int local_24;
float local_20;
float local_1c;
float local_18;
int local_14;
int local_10;
int local_c;
int local_8;
iVar2 = param_1[10];
local_8 = param_1[0x29];
local_c = param_1[0x2a];
local_10 = param_1[0x2b];
local_14 = param_1[0x2c];
fVar5 = (float10)(**(code **)(*param_1 + 0x1c))(param_1);
local_18 = (float)fVar5;
fVar5 = (float10)(**(code **)(*param_1 + 0x20))(param_1);
local_1c = (float)fVar5;
iVar1 = FUN_004dcd94();
if (iVar1 < -0x1fff) {
iVar1 = -0x1fff;
}
else if (0x1fff < iVar1) {
iVar1 = 0x1fff;
}
fVar5 = (float10)(**(code **)(*param_1 + 0x24))(param_1);
local_20 = (float)fVar5;
FUN_00465ccc(iVar2);
iVar2 = FUN_004dcd94();
iVar3 = iVar1 - param_1[0x40];
if (iVar3 < 1) {
iVar3 = -iVar3;
}
if ((1 < iVar3) || (param_2 != 0)) {
param_1[0x40] = iVar1;
iVar3 = param_1[0x3e];
if (iVar3 == 0) {
FUN_00462808(*(int *)(local_8 + 0x18),*(byte *)(local_8 + 0x10),iVar1);
}
else if (iVar3 == 1) {
FUN_00462808(*(int *)(local_8 + 0x18),*(byte *)(local_8 + 0x10),iVar1);
FUN_00462808(*(int *)(local_10 + 0x18),*(byte *)(local_10 + 0x10),iVar1);
}
else if (iVar3 == 2) {
FUN_00462808(*(int *)(local_10 + 0x18),*(byte *)(local_10 + 0x10),iVar1);
}
else if (iVar3 == 3) {
FUN_00462808(*(int *)(local_c + 0x18),*(byte *)(local_c + 0x10),iVar1);
FUN_00462808(*(int *)(local_14 + 0x18),*(byte *)(local_14 + 0x10),iVar1);
}
}
if (param_1[0x22] != 0) {
iVar1 = iVar2 - param_1[0x41];
if (iVar1 < 1) {
iVar1 = -iVar1;
}
if (1 < iVar1) {
param_1[0x41] = iVar2;
iVar1 = param_1[0x3e];
if (iVar1 == 0) {
FUN_004628d8(*(int *)(local_8 + 0x18),*(byte *)(local_8 + 0x10),0x15,iVar2);
}
else if (iVar1 == 1) {
FUN_004628d8(*(int *)(local_8 + 0x18),*(byte *)(local_8 + 0x10),0x15,iVar2);
local_24 = iVar2;
FUN_004628d8(*(int *)(local_10 + 0x18),*(byte *)(local_10 + 0x10),0x15,iVar2);
}
else if (iVar1 == 2) {
local_28 = iVar2;
FUN_004628d8(*(int *)(local_10 + 0x18),*(byte *)(local_10 + 0x10),0x15,iVar2);
}
else if (iVar1 == 3) {
local_2c = iVar2;
FUN_004628d8(*(int *)(local_c + 0x18),*(byte *)(local_c + 0x10),0x15,iVar2);
local_30 = iVar2;
FUN_004628d8(*(int *)(local_14 + 0x18),*(byte *)(local_14 + 0x10),0x15,iVar2);
}
}
}
iVar2 = param_1[0x3e];
if (iVar2 == 0) {
uVar4 = FUN_004dcd94();
local_101[2] = (byte)uVar4;
if (local_101[2] != (char)param_1[0x3f]) {
*(byte *)(param_1 + 0x3f) = local_101[2];
local_32 = *(byte *)(local_8 + 0x10);
local_101[0] = local_32 | 0xb0;
local_101[1] = 7;
local_31 = local_101[2];
FUN_00486402(*(int *)(*(int *)(local_8 + 0x18) + 0x4c),local_101,3);
}
}
else if (iVar2 == 1) {
uVar4 = FUN_004dcd94();
local_102 = (char)uVar4;
uVar4 = FUN_004dcd94();
local_103 = (char)uVar4;
if (local_102 != (char)param_1[0x3f]) {
*(char *)(param_1 + 0x3f) = local_102;
local_104 = local_102;
local_105 = *(byte *)(local_8 + 0x10);
local_204[0] = local_105 | 0xb0;
local_204[1] = 7;
local_204[2] = local_102;
FUN_00486402(*(int *)(*(int *)(local_8 + 0x18) + 0x4c),local_204,3);
}
if (local_103 != *(char *)((int)param_1 + 0xfe)) {
*(char *)((int)param_1 + 0xfe) = local_103;
local_205 = local_103;
local_206 = *(byte *)(local_10 + 0x10);
local_301[0] = local_206 | 0xb0;
local_301[1] = 7;
local_301[2] = local_103;
FUN_00486402(*(int *)(*(int *)(local_10 + 0x18) + 0x4c),local_301,3);
}
}
else if (iVar2 == 2) {
uVar4 = FUN_004dcd94();
local_402[2] = (byte)uVar4;
if (local_402[2] != *(char *)((int)param_1 + 0xfe)) {
*(byte *)((int)param_1 + 0xfe) = local_402[2];
local_303 = *(byte *)(local_10 + 0x10);
local_402[0] = local_303 | 0xb0;
local_402[1] = 7;
local_302 = local_402[2];
FUN_00486402(*(int *)(*(int *)(local_10 + 0x18) + 0x4c),local_402,3);
}
}
else if (iVar2 == 3) {
uVar4 = FUN_004dcd94();
local_403 = (char)uVar4;
uVar4 = FUN_004dcd94();
local_404 = (char)uVar4;
if (local_403 != *(char *)((int)param_1 + 0xfd)) {
*(char *)((int)param_1 + 0xfd) = local_403;
local_405 = local_403;
local_406 = *(byte *)(local_c + 0x10);
local_501[0] = local_406 | 0xb0;
local_501[1] = 7;
local_501[2] = local_403;
FUN_00486402(*(int *)(*(int *)(local_c + 0x18) + 0x4c),local_501,3);
}
if (local_404 != *(char *)((int)param_1 + 0xff)) {
*(char *)((int)param_1 + 0xff) = local_404;
local_502 = local_404;
local_503 = *(byte *)(local_14 + 0x10);
local_602[0] = local_503 | 0xb0;
local_602[1] = 7;
local_602[2] = local_404;
FUN_00486402(*(int *)(*(int *)(local_14 + 0x18) + 0x4c),local_602,3);
}
}
return;
}
/* @004657c9 file=? name=FUN_004657c9 */
undefined4 * __cdecl FUN_004657c9(undefined4 *param_1,int param_2)
{
FUN_004188dc(param_1,param_2);
*param_1 = &PTR_FUN_004f38e4;
return param_1;
}
/* @004657e8 file=? name=FUN_004657e8 */
undefined4 * __cdecl FUN_004657e8(undefined4 *param_1,int param_2)
{
FUN_004188dc(param_1,param_2);
*param_1 = &PTR_FUN_004f38e4;
return param_1;
}
/* @00465807 file=? name=FUN_00465807 */
undefined4 * __cdecl FUN_00465807(undefined4 *param_1,int param_2)
{
FUN_00418904(param_1,param_2);
*param_1 = &PTR_FUN_004f38e4;
return param_1;
}
/* @00465826 file=? name=FUN_00465826 */
void __cdecl FUN_00465826(int *param_1,byte param_2)
{
if (param_1 != (int *)0x0) {
*param_1 = (int)&PTR_FUN_004f38e4;
FUN_00418930(param_1,0);
if ((param_2 & 1) != 0) {
FUN_004022d0(param_1);
}
}
return;
}
/* @00465852 file=? name=FUN_00465852 */
undefined4 * __cdecl FUN_00465852(undefined4 *param_1,int param_2)
{
FUN_00417d00(param_1,param_2);
*param_1 = &PTR_FUN_004f3894;
return param_1;
}
/* @00465871 file=? name=FUN_00465871 */
undefined4 * __cdecl FUN_00465871(undefined4 *param_1,int param_2)
{
FUN_00417d00(param_1,param_2);
*param_1 = &PTR_FUN_004f3894;
return param_1;
}
/* @00465890 file=? name=FUN_00465890 */
undefined4 * __cdecl FUN_00465890(undefined4 *param_1,int param_2)
{
FUN_00417d28(param_1,param_2);
*param_1 = &PTR_FUN_004f3894;
return param_1;
}
/* @004658af file=? name=FUN_004658af */
void __cdecl FUN_004658af(int *param_1,byte param_2)
{
if (param_1 != (int *)0x0) {
*param_1 = (int)&PTR_FUN_004f3894;
FUN_00417d54(param_1,0);
if ((param_2 & 1) != 0) {
FUN_004022d0(param_1);
}
}
return;
}
/* @004658db file=? name=FUN_004658db */
undefined4 * __cdecl FUN_004658db(undefined4 *param_1,int param_2)
{
FUN_004188dc(param_1,param_2);
*param_1 = &PTR_FUN_004f3838;
return param_1;
}
/* @004658fa file=? name=FUN_004658fa */
undefined4 * __cdecl FUN_004658fa(undefined4 *param_1,int param_2)
{
FUN_004188dc(param_1,param_2);
*param_1 = &PTR_FUN_004f3838;
return param_1;
}
/* @00465919 file=? name=FUN_00465919 */
undefined4 * __cdecl FUN_00465919(undefined4 *param_1,int param_2)
{
FUN_00418904(param_1,param_2);
*param_1 = &PTR_FUN_004f3838;
return param_1;
}
/* @00465938 file=? name=FUN_00465938 */
void __cdecl FUN_00465938(int *param_1,byte param_2)
{
if (param_1 != (int *)0x0) {
*param_1 = (int)&PTR_FUN_004f3838;
FUN_00418930(param_1,0);
if ((param_2 & 1) != 0) {
FUN_004022d0(param_1);
}
}
return;
}
/* @00465964 file=? name=FUN_00465964 */
undefined4 * __cdecl FUN_00465964(undefined4 *param_1,int *param_2)
{
FUN_0043744c(param_1,param_2);
*param_1 = &PTR_FUN_004f3d04;
(**(code **)(*param_2 + 0x1c))(param_2,param_1 + 6,1);
(**(code **)(*param_2 + 0x1c))(param_2,(int)param_1 + 0x19,1);
(**(code **)(*param_2 + 0x1c))(param_2,param_1 + 7,4);
return param_1;
}
/* @004659b8 file=munga_l4/l4audlvl.cpp name=FUN_004659b8 */
void __cdecl FUN_004659b8(int *param_1,int param_2)
{
char *pcVar1;
int local_c;
undefined1 local_6;
undefined1 local_5;
FUN_004374c4(param_1,param_2);
pcVar1 = (char *)FUN_00403ad0(param_2,s_bank_ID_004f3ae0);
if (pcVar1 == (char *)0x0) {
FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004f3ae8,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s_bank_ID_004f3b0d,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,&DAT_004f3b15,(char *)0x0);
FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004f3b17,
s_d__tesla_bt_munga_l4_L4AUDLVL_CP_004f3b57,0x57);
}
FUN_00407ab8(pcVar1,&local_5);
(**(code **)(*param_1 + 0x20))(param_1,&local_5,1);
pcVar1 = (char *)FUN_00403ad0(param_2,s_patch_ID_004f3b79);
if (pcVar1 == (char *)0x0) {
FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004f3b82,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s_patch_ID_004f3ba7,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,&DAT_004f3bb0,(char *)0x0);
FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004f3bb2,
s_d__tesla_bt_munga_l4_L4AUDLVL_CP_004f3bf2,0x58);
}
FUN_00407ab8(pcVar1,&local_6);
(**(code **)(*param_1 + 0x20))(param_1,&local_6,1);
pcVar1 = (char *)FUN_00403ad0(param_2,s_max_filter_cutoff_004f3c14);
if (pcVar1 == (char *)0x0) {
FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004f3c26,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s_max_filter_cutoff_004f3c4b,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,&DAT_004f3c5d,(char *)0x0);
FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004f3c5f,
s_d__tesla_bt_munga_l4_L4AUDLVL_CP_004f3c9f,0x59);
}
FUN_00407ae0(pcVar1,&local_c);
(**(code **)(*param_1 + 0x20))(param_1,&local_c,4);
return;
}
/* @00465b68 file=? name=FUN_00465b68 */
void __cdecl FUN_00465b68(int *param_1,byte param_2)
{
if (param_1 != (int *)0x0) {
*param_1 = (int)&PTR_FUN_004f3d04;
FUN_00437678(param_1,0);
if ((param_2 & 1) != 0) {
FUN_004022d0(param_1);
}
}
return;
}
/* @00465b94 file=? name=FUN_00465b94 */
undefined4 FUN_00465b94(void)
{
FUN_004376a4();
return 1;
}
/* @00465ba8 file=? name=FUN_00465ba8 */
void __cdecl FUN_00465ba8(int param_1,int param_2)
{
byte local_d [4];
undefined1 local_9;
undefined1 local_8;
byte local_7 [3];
local_7[2] = *(undefined1 *)(param_1 + 0x18);
local_7[0] = *(byte *)(param_2 + 0x10) | 0xb0;
local_7[1] = 0;
FUN_00486402(*(int *)(*(int *)(param_2 + 0x18) + 0x4c),local_7,3);
local_9 = *(undefined1 *)(param_1 + 0x19);
local_d[3] = *(byte *)(param_2 + 0x10) | 0xc0;
local_8 = 0;
FUN_00486402(*(int *)(*(int *)(param_2 + 0x18) + 0x4c),local_d + 3,2);
local_d[0] = *(byte *)(param_2 + 0x10) | 0xb0;
local_d[1] = 0x79;
local_d[2] = 0x7f;
FUN_00486402(*(int *)(*(int *)(param_2 + 0x18) + 0x4c),local_d,3);
return;
}
/* @00465c34 file=? name=FUN_00465c34 */
undefined4 * __cdecl FUN_00465c34(undefined4 *param_1,int *param_2)
{
FUN_004376b8(param_1,param_2);
*param_1 = &PTR_FUN_004f3cf8;
return param_1;
}
/* @00465c54 file=? name=FUN_00465c54 */
void __cdecl FUN_00465c54(int *param_1,int param_2)
{
FUN_00437774(param_1,param_2);
return;
}
/* @00465c74 file=? name=FUN_00465c74 */
void __cdecl FUN_00465c74(int *param_1,byte param_2)
{
if (param_1 != (int *)0x0) {
*param_1 = (int)&PTR_FUN_004f3cf8;
FUN_00437968(param_1,0);
if ((param_2 & 1) != 0) {
FUN_004022d0(param_1);
}
}
return;
}
/* @00465ca0 file=? name=FUN_00465ca0 */
undefined4 FUN_00465ca0(void)
{
FUN_004379a4();
return 1;
}
/* @00465cb4 file=? name=FUN_00465cb4 */
void __cdecl FUN_00465cb4(int param_1,int param_2)
{
FUN_00465ba8(*(int *)(param_1 + 0xc),param_2);
return;
}
/* @00465ccc file=? name=FUN_00465ccc */
undefined4 __cdecl FUN_00465ccc(int param_1)
{
return *(undefined4 *)(*(int *)(param_1 + 0xc) + 0x1c);
}
/* @00465d08 file=? name=FUN_00465d08 */
int * __cdecl FUN_00465d08(int *param_1,int *param_2,int param_3)
{
int *piVar1;
undefined4 *puVar2;
int iVar3;
int *local_8;
FUN_0043e738(param_1,param_2,param_3);
*param_1 = (int)&PTR_LAB_004f3fd4;
puVar2 = (undefined4 *)FUN_00402298(0x10);
if (puVar2 == (undefined4 *)0x0) {
local_8 = (int *)0x0;
}
else {
local_8 = (int *)FUN_004023f4(puVar2);
}
local_8[3] = local_8[3] + 1;
FUN_00402aec(param_2,(int *)&local_8);
iVar3 = FUN_0041bfc0(param_3,(char *)local_8[2]);
param_1[0x20] = iVar3;
(**(code **)(*param_2 + 0x1c))(param_2,param_1 + 0x21,4);
(**(code **)(*param_2 + 0x1c))(param_2,param_1 + 0x22,4);
(**(code **)(*param_2 + 0x1c))(param_2,param_1 + 0x23,4);
FUN_00441ef5(param_1);
piVar1 = local_8 + 3;
*piVar1 = *piVar1 + -1;
if (*piVar1 == 0) {
FUN_004024d8(local_8,3);
}
return param_1;
}
/* @00465dd0 file=munga_l4/l4audwtr.cpp name=FUN_00465dd0 */
void __cdecl FUN_00465dd0(int *param_1,int param_2)
{
int *piVar1;
undefined4 *puVar2;
char *pcVar3;
float local_14;
int local_10;
int local_c;
int *local_8;
FUN_00441d17(param_1,param_2);
puVar2 = (undefined4 *)FUN_00402298(0x10);
if (puVar2 == (undefined4 *)0x0) {
local_8 = (int *)0x0;
}
else {
local_8 = (int *)FUN_004023f4(puVar2);
}
local_8[3] = local_8[3] + 1;
pcVar3 = (char *)FUN_00403ad0(param_2,s_normal_attribute_004f3d08);
if (pcVar3 == (char *)0x0) {
FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004f3d19,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s_normal_attribute_004f3d3e,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,&DAT_004f3d4f,(char *)0x0);
FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004f3d51,
s_d__tesla_bt_munga_l4_L4AUDWTR_CP_004f3d91,0x75);
}
FUN_00402b3c(pcVar3,(int *)&local_8);
FUN_004029b0(param_1,(int)local_8);
piVar1 = local_8 + 3;
*piVar1 = *piVar1 + -1;
if (*piVar1 == 0) {
FUN_004024d8(local_8,3);
}
pcVar3 = (char *)FUN_00403ad0(param_2,s_trigger_state_004f3db3);
if (pcVar3 == (char *)0x0) {
FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004f3dc1,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s_trigger_state_004f3de6,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,&DAT_004f3df4,(char *)0x0);
FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004f3df6,
s_d__tesla_bt_munga_l4_L4AUDWTR_CP_004f3e36,0x7a);
}
FUN_00407ae0(pcVar3,&local_c);
(**(code **)(*param_1 + 0x20))(param_1,&local_c,4);
pcVar3 = (char *)FUN_00403ad0(param_2,s_control_ID_004f3e58);
if (pcVar3 == (char *)0x0) {
FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004f3e63,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s_control_ID_004f3e88,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,&DAT_004f3e93,(char *)0x0);
FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004f3e95,
s_d__tesla_bt_munga_l4_L4AUDWTR_CP_004f3ed5,0x7b);
}
FUN_00407ae0(pcVar3,&local_10);
(**(code **)(*param_1 + 0x20))(param_1,&local_10,4);
pcVar3 = (char *)FUN_00403ad0(param_2,s_control_value_004f3ef7);
if (pcVar3 == (char *)0x0) {
FUN_004dbb24(&DAT_00524e20,s_DYN_MEM_STRM_WRITE_ENTRY____name_004f3f05,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s_control_value_004f3f2a,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,&DAT_004f3f38,(char *)0x0);
FUN_0040385c(s_DYN_MEM_STRM_WRITE_ENTRY____name_004f3f3a,
s_d__tesla_bt_munga_l4_L4AUDWTR_CP_004f3f7a,0x7c);
}
FUN_00407b78(pcVar3,&local_14);
(**(code **)(*param_1 + 0x20))(param_1,&local_14,4);
return;
}
/* @00466034 file=? name=FUN_00466034 */
undefined4 __cdecl FUN_00466034(int param_1)
{
FUN_00441d86(param_1);
return 1;
}
/* @00466048 file=? name=FUN_00466048 */
void __cdecl FUN_00466048(int param_1,undefined4 param_2,int param_3)
{
int *piVar1;
float local_10 [3];
if (param_3 == *(int *)(param_1 + 0x84)) {
piVar1 = (int *)FUN_00417ab4(param_1 + 0x74);
local_10[0] = 0.0;
local_10[1] = 0.0;
local_10[2] = 0.0;
FUN_00408644(local_10,local_10,*(float **)(param_1 + 0x80));
FUN_00464a14((int)piVar1,local_10);
(**(code **)(*piVar1 + 0x18))
(piVar1,*(undefined4 *)(param_1 + 0x88),*(undefined4 *)(param_1 + 0x8c));
}
return;
}
/* @004660c0 file=? name=FUN_004660c0 */
void __cdecl FUN_004660c0(int param_1)
{
float local_10 [3];
local_10[0] = 0.0;
local_10[1] = 0.0;
local_10[2] = 0.0;
FUN_00408644(local_10,local_10,*(float **)(param_1 + 0x80));
return;
}
/* @004660f4 file=? name=FUN_004660f4 */
undefined4 * __cdecl FUN_004660f4(undefined4 *param_1,int param_2,undefined4 param_3)
{
FUN_00416fdc(param_1,param_2);
*param_1 = &PTR_FUN_004f4150;
param_1[10] = param_3;
return param_1;
}
/* @0046611c file=? name=FUN_0046611c */
undefined4 * __cdecl FUN_0046611c(undefined4 *param_1)
{
FUN_00416f88(param_1);
*param_1 = &PTR_FUN_004f4150;
param_1[10] = 0;
return param_1;
}
/* @0046613c file=? name=FUN_0046613c */
void __cdecl FUN_0046613c(int *param_1,byte param_2)
{
if (param_1 != (int *)0x0) {
*param_1 = (int)&PTR_FUN_004f4150;
FUN_00417008(param_1,0);
if ((param_2 & 1) != 0) {
FUN_004022d0(param_1);
}
}
return;
}
/* @00466168 file=? name=FUN_00466168 */
undefined8 __cdecl FUN_00466168(int param_1)
{
undefined8 uVar1;
uVar1 = FUN_00417034(param_1);
return CONCAT44((int)((ulonglong)uVar1 >> 0x20),1);
}
/* @00466184 file=? name=FUN_00466184 */
int * __cdecl FUN_00466184(int *param_1,int param_2)
{
undefined4 *puVar1;
int *piVar2;
if (param_2 < 0x43) {
if (param_2 == 0x42) {
piVar2 = (int *)FUN_00402298(0x4c);
if (piVar2 != (int *)0x0) {
piVar2 = FUN_0043e6b4(piVar2,param_1,param_1[10]);
return piVar2;
}
return (int *)0x0;
}
switch(param_2) {
case 0x1c:
piVar2 = (int *)FUN_00402298(0x98);
if (piVar2 != (int *)0x0) {
piVar2 = FUN_0043e7d4(piVar2,param_1,param_1[10]);
return piVar2;
}
return (int *)0x0;
case 0x1d:
piVar2 = (int *)FUN_00402298(100);
if (piVar2 != (int *)0x0) {
piVar2 = FUN_0043e004(piVar2,param_1,param_1[10]);
return piVar2;
}
return (int *)0x0;
case 0x27:
piVar2 = (int *)FUN_00402298(0x68);
if (piVar2 != (int *)0x0) {
piVar2 = FUN_0043dd24(piVar2,param_1,param_1[10]);
return piVar2;
}
return (int *)0x0;
case 0x2b:
puVar1 = (undefined4 *)FUN_00402298(0x4c);
if (puVar1 != (undefined4 *)0x0) {
piVar2 = FUN_004392d8(puVar1,param_1,param_1[10]);
return piVar2;
}
return (int *)0x0;
case 0x2c:
piVar2 = (int *)FUN_00402298(0x4c);
if (piVar2 != (int *)0x0) {
piVar2 = FUN_0043e2e4(piVar2,param_1,param_1[10]);
return piVar2;
}
return (int *)0x0;
case 0x2d:
puVar1 = (undefined4 *)FUN_00402298(0x40);
if (puVar1 != (undefined4 *)0x0) {
piVar2 = FUN_00439a54(puVar1,param_1,param_1[10]);
return piVar2;
}
return (int *)0x0;
case 0x2e:
puVar1 = (undefined4 *)FUN_00402298(0x4c);
if (puVar1 != (undefined4 *)0x0) {
piVar2 = FUN_0043968c(puVar1,param_1,param_1[10]);
return piVar2;
}
return (int *)0x0;
case 0x2f:
puVar1 = (undefined4 *)FUN_00402298(0x44);
if (puVar1 != (undefined4 *)0x0) {
piVar2 = FUN_00439da4(puVar1,param_1,param_1[10]);
return piVar2;
}
return (int *)0x0;
case 0x34:
puVar1 = (undefined4 *)FUN_00402298(0x24);
if (puVar1 != (undefined4 *)0x0) {
piVar2 = FUN_00437a20(puVar1,param_1);
return piVar2;
}
return (int *)0x0;
case 0x35:
piVar2 = (int *)FUN_00402298(0x48);
if (piVar2 != (int *)0x0) {
piVar2 = FUN_0043e44c(piVar2,param_1,param_1[10]);
return piVar2;
}
return (int *)0x0;
case 0x36:
puVar1 = (undefined4 *)FUN_00402298(0x24);
if (puVar1 != (undefined4 *)0x0) {
piVar2 = FUN_00438df4(puVar1,param_1,param_1[10]);
return piVar2;
}
return (int *)0x0;
case 0x3a:
puVar1 = (undefined4 *)FUN_00402298(0x48);
if (puVar1 != (undefined4 *)0x0) {
piVar2 = FUN_0043a248(puVar1,param_1,param_1[10]);
return piVar2;
}
return (int *)0x0;
case 0x3b:
piVar2 = (int *)FUN_00402298(0x4c);
if (piVar2 != (int *)0x0) {
piVar2 = FUN_0043e350(piVar2,param_1,param_1[10]);
return piVar2;
}
return (int *)0x0;
case 0x3c:
piVar2 = (int *)FUN_00402298(0x3c);
if (piVar2 != (int *)0x0) {
piVar2 = FUN_0043e534(piVar2,param_1,param_1[10]);
return piVar2;
}
return (int *)0x0;
case 0x3d:
piVar2 = (int *)FUN_00402298(0x4c);
if (piVar2 != (int *)0x0) {
piVar2 = FUN_0043e630(piVar2,param_1,param_1[10]);
return piVar2;
}
return (int *)0x0;
case 0x3e:
piVar2 = (int *)FUN_00402298(0x3c);
if (piVar2 != (int *)0x0) {
piVar2 = FUN_0043e4b0(piVar2,param_1,param_1[10]);
return piVar2;
}
return (int *)0x0;
}
}
else if (param_2 < 0x5b) {
if (param_2 == 0x5a) {
puVar1 = (undefined4 *)FUN_00402298(0x3c);
if (puVar1 != (undefined4 *)0x0) {
piVar2 = FUN_00438d60(puVar1,param_1,param_1[10]);
return piVar2;
}
return (int *)0x0;
}
switch(param_2) {
case 0x49:
puVar1 = (undefined4 *)FUN_00402298(0x1c);
if (puVar1 != (undefined4 *)0x0) {
piVar2 = FUN_0043db88(puVar1,param_1,param_1[10]);
return piVar2;
}
return (int *)0x0;
case 0x4b:
puVar1 = (undefined4 *)FUN_00402298(0x5c);
if (puVar1 != (undefined4 *)0x0) {
piVar2 = FUN_0043ccec(puVar1,param_1,param_1[10]);
return piVar2;
}
return (int *)0x0;
case 0x4c:
puVar1 = (undefined4 *)FUN_00402298(0x38);
if (puVar1 != (undefined4 *)0x0) {
piVar2 = FUN_00438ff4(puVar1,param_1,param_1[10]);
return piVar2;
}
return (int *)0x0;
case 0x4f:
puVar1 = (undefined4 *)FUN_00402298(0x4c);
if (puVar1 != (undefined4 *)0x0) {
piVar2 = FUN_0043a68c(puVar1,param_1,param_1[10]);
return piVar2;
}
return (int *)0x0;
case 0x50:
piVar2 = (int *)FUN_00402298(0x40);
if (piVar2 != (int *)0x0) {
piVar2 = FUN_0043e5b8(piVar2,param_1,param_1[10]);
return piVar2;
}
return (int *)0x0;
case 0x51:
piVar2 = (int *)FUN_00402298(0x40);
if (piVar2 != (int *)0x0) {
piVar2 = FUN_0043e3d4(piVar2,param_1,param_1[10]);
return piVar2;
}
return (int *)0x0;
case 0x59:
puVar1 = (undefined4 *)FUN_00402298(0x3c);
if (puVar1 != (undefined4 *)0x0) {
piVar2 = FUN_00438808(puVar1,param_1,param_1[10]);
return piVar2;
}
return (int *)0x0;
}
}
else {
switch(param_2) {
case 1000:
puVar1 = (undefined4 *)FUN_00402298(0xb0);
if (puVar1 == (undefined4 *)0x0) {
return (int *)0x0;
}
piVar2 = FUN_00463148(puVar1,param_1,param_1[10]);
return piVar2;
case 0x3e9:
puVar1 = (undefined4 *)FUN_00402298(0xd8);
if (puVar1 == (undefined4 *)0x0) {
return (int *)0x0;
}
piVar2 = FUN_00463710(puVar1,param_1,param_1[10]);
return piVar2;
case 0x3ea:
puVar1 = (undefined4 *)FUN_00402298(0xdc);
if (puVar1 == (undefined4 *)0x0) {
return (int *)0x0;
}
piVar2 = FUN_00463d4c(puVar1,param_1,param_1[10]);
return piVar2;
case 0x3ec:
puVar1 = (undefined4 *)FUN_00402298(0x28);
if (puVar1 == (undefined4 *)0x0) {
return (int *)0x0;
}
piVar2 = FUN_00465c34(puVar1,param_1);
return piVar2;
case 0x3ed:
puVar1 = (undefined4 *)FUN_00402298(0x108);
if (puVar1 == (undefined4 *)0x0) {
return (int *)0x0;
}
piVar2 = FUN_0046487c(puVar1,param_1,param_1[10]);
return piVar2;
case 0x3ee:
piVar2 = (int *)FUN_00402298(0x90);
if (piVar2 == (int *)0x0) {
return (int *)0x0;
}
piVar2 = FUN_00465d08(piVar2,param_1,param_1[10]);
return piVar2;
case 0x3f3:
puVar1 = (undefined4 *)FUN_00402298(0x20);
if (puVar1 == (undefined4 *)0x0) {
return (int *)0x0;
}
piVar2 = FUN_00465964(puVar1,param_1);
return piVar2;
}
}
piVar2 = (int *)FUN_0041639c();
return piVar2;
}
/* @00466804 file=? name=FUN_00466804 */
void __cdecl FUN_00466804(int param_1,int param_2)
{
int iVar1;
iVar1 = *(int *)(param_2 + 4);
if (((iVar1 != 0x34) && (iVar1 != 0x3ec)) && (iVar1 != 0x3f3)) {
FUN_004170b0(param_1,param_2);
return;
}
FUN_004170cc(param_1,param_2);
return;
}
/* @00466844 file=? name=FUN_00466844 */
void __cdecl FUN_00466844(int *param_1,int param_2,int param_3)
{
if (param_3 < 0x43) {
if (param_3 == 0x42) {
FUN_0043e70c(param_1,param_2);
return;
}
switch(param_3) {
case 0x1c:
FUN_0043e8a4(param_1,param_2);
return;
case 0x1d:
FUN_0043e080(param_1,param_2);
return;
case 0x27:
FUN_0043dda0(param_1,param_2);
return;
case 0x2b:
FUN_00439370(param_1,param_2);
return;
case 0x2c:
FUN_0043f97c(param_1,param_2);
return;
case 0x2d:
FUN_00439b00(param_1,param_2);
return;
case 0x2e:
FUN_00439724(param_1,param_2);
return;
case 0x2f:
FUN_00439e60(param_1,param_2);
return;
case 0x34:
FUN_00437a98(param_1,param_2);
return;
case 0x35:
FUN_00440b8d(param_1,param_2);
return;
case 0x36:
FUN_00438e70(param_1,param_2);
return;
case 0x3a:
FUN_0043a324(param_1,param_2);
return;
case 0x3b:
FUN_0043e3a8(param_1,param_2);
return;
case 0x3c:
FUN_0043e58c(param_1,param_2);
return;
case 0x3d:
FUN_0043e688(param_1,param_2);
return;
case 0x3e:
FUN_0043e508(param_1,param_2);
return;
}
}
else if (param_3 < 0x5b) {
if (param_3 == 0x5a) {
FUN_00438a48(param_1,param_2);
return;
}
switch(param_3) {
case 0x49:
FUN_0043dc50(param_1,param_2);
return;
case 0x4b:
FUN_0043cef8(param_1,param_2);
return;
case 0x4c:
FUN_004390d0(param_1,param_2);
return;
case 0x4f:
FUN_0043a770(param_1,param_2);
return;
case 0x50:
FUN_0043e610(param_1,param_2);
return;
case 0x51:
FUN_0043e42c(param_1,param_2);
return;
case 0x59:
FUN_00438a48(param_1,param_2);
return;
}
}
else {
switch(param_3) {
case 1000:
FUN_0043818c(param_1,param_2);
return;
case 0x3e9:
FUN_00463754(param_1,param_2);
return;
case 0x3ea:
FUN_00463648(param_1,param_2);
return;
case 0x3ec:
FUN_00465c54(param_1,param_2);
return;
case 0x3ed:
FUN_00464918(param_1,param_2);
return;
case 0x3ee:
FUN_00465dd0(param_1,param_2);
return;
case 0x3f3:
FUN_004659b8(param_1,param_2);
return;
}
}
FUN_00416db0();
return;
}
/* @00466bc4 file=? name=FUN_00466bc4 */
void __cdecl FUN_00466bc4(int param_1,int param_2,undefined4 param_3,int *param_4)
{
if (*(int *)(*param_4 + 4) != 0) {
if (((param_2 == 0x34) || (param_2 == 0x3ec)) || (param_2 == 0x3f3)) {
FUN_004171f0(param_1,param_3,param_4);
return;
}
FUN_004171b4(param_1,param_3,param_4);
}
return;
}
/* @00466c10 file=? name=FUN_00466c10 */
undefined4 * __cdecl FUN_00466c10(undefined4 *param_1)
{
FUN_004178cc(param_1,2);
*param_1 = &PTR_FUN_004f4144;
return param_1;
}
/* @00466c30 file=? name=FUN_00466c30 */
void __cdecl FUN_00466c30(int *param_1,byte param_2)
{
if (param_1 != (int *)0x0) {
*param_1 = (int)&PTR_FUN_004f4144;
FUN_0041790c(param_1,0);
if ((param_2 & 1) != 0) {
FUN_004022d0(param_1);
}
}
return;
}
/* @00466c5c file=? name=FUN_00466c5c */
undefined4 FUN_00466c5c(void)
{
FUN_00415f1c();
return 1;
}
/* @00466c70 file=? name=FUN_00466c70 */
void __cdecl FUN_00466c70(undefined4 param_1,int param_2,int param_3)
{
undefined4 *puVar1;
int iVar2;
bool bVar3;
int *piVar4;
undefined3 extraout_var;
int iVar5;
int local_30 [11];
piVar4 = FUN_00404720(param_2,s_AudioResources_004f3ff8,(char *)0x0);
for (puVar1 = (undefined4 *)piVar4[1]; puVar1 != (undefined4 *)0x0; puVar1 = (undefined4 *)*puVar1
) {
bVar3 = FUN_00403c20((int)puVar1,s_front_audio_resource_004f4007);
if (CONCAT31(extraout_var,bVar3) == 0) {
FUN_004627d8(param_3 + 0x80,(LPCSTR)puVar1[1]);
}
else {
FUN_004627d8(param_3 + 0xc,(LPCSTR)puVar1[1]);
}
}
if (piVar4 != (int *)0x0) {
(**(code **)*piVar4)(piVar4,3);
}
iVar5 = FUN_00406ff8(*(int *)(DAT_004efc94 + 0x68),s_StaticAudioStream_004f401c,0xb,-1);
iVar2 = *(int *)(iVar5 + 4);
*(int *)(iVar5 + 4) = *(int *)(iVar5 + 4) + 1;
if (iVar2 == 0) {
FUN_00406cd0(iVar5);
}
FUN_004660f4(local_30,iVar5,0);
(**(code **)(local_30[0] + 0x24))(local_30);
*(int *)(iVar5 + 4) = *(int *)(iVar5 + 4) + -1;
FUN_0046613c(local_30,2);
return;
}
/* @00466d44 file=? name=FUN_00466d44 */
void __cdecl FUN_00466d44(undefined4 param_1,int param_2)
{
FUN_004627f4(param_2 + 0xc);
FUN_004627f4(param_2 + 0x80);
return;
}
/* @00466d68 file=? name=FUN_00466d68 */
undefined4 __cdecl FUN_00466d68(int param_1)
{
undefined4 *puVar1;
undefined4 uVar2;
int local_50 [11];
int local_24 [8];
FUN_00403e84(local_24,s_audio_static_scp_004f402e,1);
FUN_0046611c(local_50);
(**(code **)(local_50[0] + 0x28))(local_50,local_24,param_1);
puVar1 = (undefined4 *)FUN_00406f3c(param_1,s_StaticAudioStream_004f403f,0xb,1,0,local_50,-1);
uVar2 = *puVar1;
FUN_0046613c(local_50,2);
FUN_00403ecc(local_24,2);
return uVar2;
}
/* @00466de4 file=? name=FUN_00466de4 */
void __cdecl FUN_00466de4(undefined4 param_1,int param_2,int param_3)
{
int iVar1;
int *piVar2;
int iVar3;
int local_30 [11];
piVar2 = (int *)FUN_00407064(*(int *)(DAT_004efc94 + 0x68),*(int *)(param_2 + 0x1bc),3);
if (piVar2 != (int *)0x0) {
iVar3 = 0xc;
if (param_3 != 0) {
iVar3 = 0xd;
}
iVar3 = FUN_00407064(*(int *)(DAT_004efc94 + 0x68),*piVar2,iVar3);
if (iVar3 != 0) {
iVar1 = *(int *)(iVar3 + 4);
*(int *)(iVar3 + 4) = *(int *)(iVar3 + 4) + 1;
if (iVar1 == 0) {
FUN_00406cd0(iVar3);
}
iVar1 = piVar2[1];
piVar2[1] = piVar2[1] + 1;
if (iVar1 == 0) {
FUN_00406cd0((int)piVar2);
}
FUN_004660f4(local_30,iVar3,param_2);
(**(code **)(local_30[0] + 0x24))(local_30);
*(int *)(iVar3 + 4) = *(int *)(iVar3 + 4) + -1;
piVar2[1] = piVar2[1] + -1;
FUN_0046613c(local_30,2);
}
}
return;
}
/* @00466e90 file=? name=FUN_00466e90 */
void __cdecl FUN_00466e90(undefined4 param_1,int param_2)
{
int *piVar1;
int *this;
int local_18 [5];
FUN_00421560(local_18,param_2);
while( true ) {
this = local_18;
piVar1 = (int *)(**(code **)(local_18[0] + 0x28))();
if (piVar1 == (int *)0x0) break;
(**(code **)(*piVar1 + 0x18))(piVar1,2,0);
(**(code **)(*piVar1 + 0x18))(piVar1,0xb,0);
}
FUN_00417858(this,local_18,1);
FUN_00421584(local_18,2);
return;
}
/* @00466ef8 file=munga_l4/l4audres.cpp name=FUN_00466ef8 */
undefined4 __cdecl FUN_00466ef8(int param_1,char *param_2,int param_3)
{
uint *puVar1;
int iVar2;
int *piVar3;
undefined4 *puVar4;
undefined4 uVar5;
int iVar6;
int local_124 [11];
int local_f8 [8];
uint local_d8 [2];
char *local_d0;
int local_c8 [11];
int local_9c [8];
uint local_7c [2];
char *local_74;
int local_6c [3];
char *local_60;
char *local_5c;
uint *local_58;
uint *local_54;
char *local_50;
int *local_4c;
uint *local_48;
uint *local_44;
uint *local_40;
char *local_3c;
uint *local_38;
int *local_34;
uint *local_30;
uint *local_2c;
char *local_28;
int *local_24;
uint *local_20;
uint *local_1c;
uint *local_18;
char *local_14;
uint *local_10;
int *local_c;
char *local_8;
iVar6 = 0;
local_8 = (char *)0x0;
local_6c[0] = -1;
local_6c[1] = 0xffffffff;
local_6c[2] = 0xffffffff;
iVar2 = FUN_00404088(param_3,s_audio_004f4051,s_external_004f4057,&local_8);
if (iVar2 != 0) {
local_c = (int *)FUN_00406ff8(param_1,local_8,0xd,-1);
if (local_c == (int *)0x0) {
local_14 = local_8;
local_18 = (uint *)FUN_00402298(0x10);
if (local_18 == (uint *)0x0) {
local_10 = (uint *)0x0;
}
else {
local_10 = FUN_00402460(local_18,local_14);
}
local_10[3] = local_10[3] + 1;
local_20 = (uint *)FUN_00402298(0x10);
if (local_20 == (uint *)0x0) {
local_1c = (uint *)0x0;
}
else {
local_1c = FUN_00402460(local_20,s_audio__004f4060);
}
local_1c[3] = local_1c[3] + 1;
FUN_00402624(local_7c,(int)local_1c,(int)local_10);
local_28 = local_74;
local_30 = (uint *)FUN_00402298(0x10);
if (local_30 == (uint *)0x0) {
local_2c = (uint *)0x0;
}
else {
local_2c = FUN_00402460(local_30,local_28);
}
local_2c[3] = local_2c[3] + 1;
FUN_004024d8((int *)local_7c,2);
FUN_00402a4c((int *)&local_24,(int *)&local_10,(int *)&local_2c);
piVar3 = local_24 + 3;
*piVar3 = *piVar3 + -1;
if (*piVar3 == 0) {
FUN_004024d8(local_24,3);
}
puVar1 = local_2c + 3;
*puVar1 = *puVar1 - 1;
if (*puVar1 == 0) {
FUN_004024d8((int *)local_2c,3);
}
FUN_00403e84(local_9c,(char *)local_10[2],1);
FUN_0046611c(local_c8);
(**(code **)(local_c8[0] + 0x28))(local_c8,local_9c,param_1);
local_c = (int *)FUN_00406f3c(param_1,local_8,0xd,1,0,local_c8,-1);
FUN_0046613c(local_c8,2);
FUN_00403ecc(local_9c,2);
puVar1 = local_1c + 3;
*puVar1 = *puVar1 - 1;
if (*puVar1 == 0) {
FUN_004024d8((int *)local_1c,3);
}
puVar1 = local_10 + 3;
*puVar1 = *puVar1 - 1;
if (*puVar1 == 0) {
FUN_004024d8((int *)local_10,3);
}
}
local_6c[0] = *local_c;
iVar6 = 1;
}
iVar2 = FUN_00404088(param_3,s_audio_004f4067,s_internal_004f406d,&local_8);
if (iVar2 != 0) {
local_34 = (int *)FUN_00406ff8(param_1,local_8,0xc,-1);
if (local_34 == (int *)0x0) {
local_3c = local_8;
local_40 = (uint *)FUN_00402298(0x10);
if (local_40 == (uint *)0x0) {
local_38 = (uint *)0x0;
}
else {
local_38 = FUN_00402460(local_40,local_3c);
}
local_38[3] = local_38[3] + 1;
local_48 = (uint *)FUN_00402298(0x10);
if (local_48 == (uint *)0x0) {
local_44 = (uint *)0x0;
}
else {
local_44 = FUN_00402460(local_48,s_audio__004f4076);
}
local_44[3] = local_44[3] + 1;
FUN_00402624(local_d8,(int)local_44,(int)local_38);
local_50 = local_d0;
local_58 = (uint *)FUN_00402298(0x10);
if (local_58 == (uint *)0x0) {
local_54 = (uint *)0x0;
}
else {
local_54 = FUN_00402460(local_58,local_50);
}
local_54[3] = local_54[3] + 1;
FUN_004024d8((int *)local_d8,2);
FUN_00402a4c((int *)&local_4c,(int *)&local_38,(int *)&local_54);
piVar3 = local_4c + 3;
*piVar3 = *piVar3 + -1;
if (*piVar3 == 0) {
FUN_004024d8(local_4c,3);
}
puVar1 = local_54 + 3;
*puVar1 = *puVar1 - 1;
if (*puVar1 == 0) {
FUN_004024d8((int *)local_54,3);
}
FUN_00403e84(local_f8,(char *)local_38[2],1);
FUN_0046611c(local_124);
(**(code **)(local_124[0] + 0x28))(local_124,local_f8,param_1);
local_34 = (int *)FUN_00406f3c(param_1,local_8,0xc,1,0,local_124,-1);
FUN_0046613c(local_124,2);
FUN_00403ecc(local_f8,2);
puVar1 = local_44 + 3;
*puVar1 = *puVar1 - 1;
if (*puVar1 == 0) {
FUN_004024d8((int *)local_44,3);
}
puVar1 = local_38 + 3;
*puVar1 = *puVar1 - 1;
if (*puVar1 == 0) {
FUN_004024d8((int *)local_38,3);
}
}
local_6c[iVar6] = *local_34;
iVar6 = iVar6 + 1;
}
local_5c = (char *)0x0;
iVar2 = FUN_00404088(param_3,s_audio_004f407d,s_model_004f4083,&local_5c);
if (iVar2 != 0) {
piVar3 = (int *)FUN_00406ff8(param_1,local_5c,1,-1);
if (piVar3 == (int *)0x0) {
local_60 = local_5c;
FUN_004dbb24(&DAT_00524e20,s_audio_entity_model____004f4089,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,local_60,(char *)0x0);
FUN_0040385c(s_L4AudioResourceManager__CreateMo_004f40a0,
s_d__tesla_bt_munga_l4_L4AUDRES_CP_004f40e9,0x3e0);
}
local_6c[iVar6] = *piVar3;
iVar6 = iVar6 + 1;
}
if (iVar6 == 0) {
uVar5 = 0xffffffff;
}
else {
puVar4 = (undefined4 *)FUN_00406ec4(param_1,param_2,3,1,0,local_6c,iVar6,-1);
uVar5 = *puVar4;
}
return uVar5;
}
/* @0046739c file=? name=FUN_0046739c */
undefined4 * __cdecl FUN_0046739c(undefined4 *param_1,undefined4 param_2,undefined4 param_3)
{
FUN_00441f6c(param_1,param_2);
*param_1 = &PTR_FUN_004f49b0;
FUN_00462b38(param_1 + 0x1b);
FUN_00466c10(param_1 + 0x58);
FUN_004683b9(param_1 + 0x5c,0,0);
FUN_00468587(param_1 + 0x62,0);
FUN_004685d2(param_1 + 0x66,0,0);
param_1[0x1a] = param_3;
param_1[0x5b] = 0xffffffff;
return param_1;
}
/* @00467418 file=? name=FUN_00467418 */
void __cdecl FUN_00467418(int *param_1,byte param_2)
{
int *piVar1;
if (param_1 != (int *)0x0) {
*param_1 = (int)&PTR_FUN_004f49b0;
piVar1 = param_1 + 0x1b;
FUN_00466d44(param_1 + 0x58,(int)piVar1);
FUN_00462c28((int)piVar1);
FUN_004685f5(param_1 + 0x66,2);
FUN_004685a6(param_1 + 0x62,2);
FUN_004683dc(param_1 + 0x5c,2);
FUN_00466c30(param_1 + 0x58,2);
FUN_00462b6c(piVar1,2);
FUN_00441fb4(param_1,0);
if ((param_2 & 1) != 0) {
FUN_004022d0(param_1);
}
}
return;
}
/* @004674b0 file=? name=FUN_004674b0 */
undefined4 __cdecl FUN_004674b0(int param_1)
{
FUN_00442010(param_1);
return 1;
}
/* @004674c4 file=? name=FUN_004674c4 */
void FUN_004674c4(int param_1)
{
int *piVar1;
int iVar2;
undefined4 *puVar3;
int iVar4;
int aiStack_74 [8];
float fStack_54;
float fStack_50;
float fStack_4c;
float fStack_48;
float fStack_44;
float fStack_40;
float fStack_3c;
float fStack_38;
float fStack_34;
float fStack_30;
float fStack_2c;
float fStack_28;
float fStack_24;
float fStack_20;
float fStack_1c;
float fStack_18;
float fStack_14;
int *piStack_10;
int *piStack_c;
int *piStack_8;
FUN_00441ffc((int *)param_1);
iVar2 = *(int *)(param_1 + 0x4c);
puVar3 = (undefined4 *)FUN_00402298(0x10);
if (puVar3 == (undefined4 *)0x0) {
piStack_8 = (int *)0x0;
}
else {
piStack_8 = (int *)FUN_004023f4(puVar3);
}
piStack_8[3] = piStack_8[3] + 1;
if (*(int *)(param_1 + 0x68) == 0) {
FUN_00402a98((int *)&piStack_10,(int *)&piStack_8,s_audio_audio_ini_004f419e);
piVar1 = piStack_10 + 3;
*piVar1 = *piVar1 + -1;
if (*piVar1 == 0) {
FUN_004024d8(piStack_10,3);
}
}
else {
FUN_00402a98((int *)&piStack_c,(int *)&piStack_8,s_audio_audiomr_ini_004f418c);
piVar1 = piStack_c + 3;
*piVar1 = *piVar1 + -1;
if (*piVar1 == 0) {
FUN_004024d8(piStack_c,3);
}
}
FUN_00403e84(aiStack_74,(char *)piStack_8[2],1);
iVar4 = FUN_00404118((int)aiStack_74,s_AudioRenderer_004f41ae,s_clipping_radius_004f41bc,
&fStack_14);
if (iVar4 == 0) {
FUN_0040385c(s_L4AudioRenderer__Initialize___cl_004f41cc,
s_d__tesla_bt_munga_l4_L4AUDRND_CP_004f4206,0xa1);
}
FUN_00436c44(iVar2,fStack_14);
iVar4 = FUN_00404118((int)aiStack_74,s_AudioRenderer_004f4228,s_distance_between_ears_004f4236,
&fStack_18);
if (iVar4 == 0) {
FUN_0040385c(s_L4AudioRenderer__Initialize___di_004f424c,
s_d__tesla_bt_munga_l4_L4AUDRND_CP_004f428c,0xb3);
}
fStack_1c = fStack_18;
*(float *)(iVar2 + 0x18) = fStack_18;
iVar4 = FUN_00404118((int)aiStack_74,s_AudioRenderer_004f42ae,s_amplitude_rolloff_004f42bc,
&fStack_20);
if (iVar4 == 0) {
FUN_0040385c(s_L4AudioRenderer__Initialize___am_004f42ce,
s_d__tesla_bt_munga_l4_L4AUDRND_CP_004f430a,200);
}
iVar4 = FUN_00404118((int)aiStack_74,s_AudioRenderer_004f432c,
s_amplitude_rolloff_distance_scale_004f433a,&fStack_28);
if (iVar4 == 0) {
FUN_0040385c(s_L4AudioRenderer__Initialize___am_004f435b,
s_d__tesla_bt_munga_l4_L4AUDRND_CP_004f43a6,0xd1);
}
iVar4 = FUN_00404118((int)aiStack_74,s_AudioRenderer_004f43c8,s_amplitude_rolloff_knee_004f43d6,
&fStack_24);
if (iVar4 == 0) {
FUN_0040385c(s_L4AudioRenderer__Initialize___am_004f43ed,
s_d__tesla_bt_munga_l4_L4AUDRND_CP_004f442e,0xda);
}
FUN_00436cc0(iVar2,fStack_20,fStack_24,fStack_28);
iVar4 = FUN_00404118((int)aiStack_74,s_AudioRenderer_004f4450,s_high_frequency_rolloff_004f445e,
&fStack_2c);
if (iVar4 == 0) {
FUN_0040385c(s_L4AudioRenderer__Initialize___hi_004f4475,
s_d__tesla_bt_munga_l4_L4AUDRND_CP_004f44b6,0xf4);
}
iVar4 = FUN_00404118((int)aiStack_74,s_AudioRenderer_004f44d8,
s_high_frequency_rolloff_knee_004f44e6,&fStack_30);
if (iVar4 == 0) {
FUN_0040385c(s_L4AudioRenderer__Initialize___hi_004f4502,
s_d__tesla_bt_munga_l4_L4AUDRND_CP_004f4548,0xfd);
}
iVar4 = FUN_00404118((int)aiStack_74,s_AudioRenderer_004f456a,
s_high_frequency_rolloff_distance__004f4578,&fStack_34);
if (iVar4 == 0) {
FUN_0040385c(s_L4AudioRenderer__Initialize___hi_004f459e,
s_d__tesla_bt_munga_l4_L4AUDRND_CP_004f45ee,0x106);
}
FUN_00436cdc(iVar2,fStack_2c,fStack_30,fStack_34);
iVar4 = FUN_00404118((int)aiStack_74,s_AudioRenderer_004f4610,s_doppler_range_004f461e,&fStack_38)
;
if (iVar4 == 0) {
FUN_0040385c(s_L4AudioRenderer__Initialize___do_004f462c,
s_d__tesla_bt_munga_l4_L4AUDRND_CP_004f4664,0x11f);
}
iVar4 = FUN_00404118((int)aiStack_74,s_AudioRenderer_004f4686,s_speed_of_sound_004f4694,&fStack_3c
);
if (iVar4 == 0) {
FUN_0040385c(s_L4AudioRenderer__Initialize___sp_004f46a3,
s_d__tesla_bt_munga_l4_L4AUDRND_CP_004f46dc,0x128);
}
FUN_00436cac(iVar2,fStack_38,fStack_3c);
iVar4 = FUN_00404118((int)aiStack_74,s_AudioRenderer_004f46fe,s_compression_exponent_004f470c,
&fStack_40);
if (iVar4 == 0) {
FUN_0040385c(s_L4AudioRenderer__Initialize___co_004f4721,
s_d__tesla_bt_munga_l4_L4AUDRND_CP_004f4760,0x140);
}
iVar4 = FUN_00404118((int)aiStack_74,s_AudioRenderer_004f4782,s_compression_scale_004f4790,
&fStack_44);
if (iVar4 == 0) {
FUN_0040385c(s_L4AudioRenderer__Initialize___co_004f47a2,
s_d__tesla_bt_munga_l4_L4AUDRND_CP_004f47de,0x149);
}
FUN_00436cf8(iVar2,fStack_40,fStack_44);
iVar4 = FUN_00404118((int)aiStack_74,s_AudioRenderer_004f4800,s_itd_difference_004f480e,&fStack_48
);
if (iVar4 == 0) {
FUN_0040385c(s_L4AudioRenderer__Initialize___it_004f481d,
s_d__tesla_bt_munga_l4_L4AUDRND_CP_004f4856,0x160);
}
fStack_4c = fStack_48;
*(float *)(iVar2 + 0x48) = fStack_48;
iVar4 = FUN_00404118((int)aiStack_74,s_AudioRenderer_004f4878,s_global_reverb_scale_004f4886,
&fStack_50);
if (iVar4 == 0) {
FUN_0040385c(s_L4AudioRenderer__Initialize___gl_004f489a,
s_d__tesla_bt_munga_l4_L4AUDRND_CP_004f48d8,0x174);
}
fStack_54 = fStack_50;
*(float *)(iVar2 + 0x4c) = fStack_50;
FUN_00462bcc(param_1 + 0x6c);
FUN_00466c70(param_1 + 0x160,(int)aiStack_74,param_1 + 0x6c);
FUN_00403ecc(aiStack_74,2);
piVar1 = piStack_8 + 3;
*piVar1 = *piVar1 + -1;
if (*piVar1 == 0) {
FUN_004024d8(piStack_8,3);
}
return;
}
/* @004674ca file=munga_l4/l4audrnd.cpp name=FUN_004674ca */
void FUN_004674ca(void)
{
int *piVar1;
int *piVar2;
int iVar3;
int *piVar4;
undefined4 *puVar5;
undefined4 uVar6;
int iVar7;
int unaff_EBP;
piVar2 = *(int **)(unaff_EBP + 8);
FUN_00441ffc(piVar2);
iVar3 = piVar2[0x13];
puVar5 = (undefined4 *)FUN_00402298(0x10);
if (puVar5 == (undefined4 *)0x0) {
uVar6 = 0;
}
else {
uVar6 = FUN_004023f4(puVar5);
}
*(undefined4 *)(unaff_EBP + -4) = uVar6;
piVar1 = (int *)(*(int *)(unaff_EBP + -4) + 0xc);
*piVar1 = *piVar1 + 1;
if (piVar2[0x1a] == 0) {
FUN_00402a98((int *)(unaff_EBP + -0xc),(int *)(unaff_EBP + -4),s_audio_audio_ini_004f419e);
piVar4 = *(int **)(unaff_EBP + -0xc);
piVar1 = piVar4 + 3;
*piVar1 = *piVar1 + -1;
if (*piVar1 == 0) {
FUN_004024d8(piVar4,3);
}
}
else {
FUN_00402a98((int *)(unaff_EBP + -8),(int *)(unaff_EBP + -4),s_audio_audiomr_ini_004f418c);
piVar4 = *(int **)(unaff_EBP + -8);
piVar1 = piVar4 + 3;
*piVar1 = *piVar1 + -1;
if (*piVar1 == 0) {
FUN_004024d8(piVar4,3);
}
}
FUN_00403e84((int *)(unaff_EBP + -0x70),*(char **)(*(int *)(unaff_EBP + -4) + 8),1);
iVar7 = FUN_00404118(unaff_EBP + -0x70,s_AudioRenderer_004f41ae,s_clipping_radius_004f41bc,
(float *)(unaff_EBP + -0x10));
if (iVar7 == 0) {
FUN_0040385c(s_L4AudioRenderer__Initialize___cl_004f41cc,
s_d__tesla_bt_munga_l4_L4AUDRND_CP_004f4206,0xa1);
}
FUN_00436c44(iVar3,*(undefined4 *)(unaff_EBP + -0x10));
iVar7 = FUN_00404118(unaff_EBP + -0x70,s_AudioRenderer_004f4228,s_distance_between_ears_004f4236,
(float *)(unaff_EBP + -0x14));
if (iVar7 == 0) {
FUN_0040385c(s_L4AudioRenderer__Initialize___di_004f424c,
s_d__tesla_bt_munga_l4_L4AUDRND_CP_004f428c,0xb3);
}
*(undefined4 *)(unaff_EBP + -0x18) = *(undefined4 *)(unaff_EBP + -0x14);
*(undefined4 *)(iVar3 + 0x18) = *(undefined4 *)(unaff_EBP + -0x18);
iVar7 = FUN_00404118(unaff_EBP + -0x70,s_AudioRenderer_004f42ae,s_amplitude_rolloff_004f42bc,
(float *)(unaff_EBP + -0x1c));
if (iVar7 == 0) {
FUN_0040385c(s_L4AudioRenderer__Initialize___am_004f42ce,
s_d__tesla_bt_munga_l4_L4AUDRND_CP_004f430a,200);
}
iVar7 = FUN_00404118(unaff_EBP + -0x70,s_AudioRenderer_004f432c,
s_amplitude_rolloff_distance_scale_004f433a,(float *)(unaff_EBP + -0x24));
if (iVar7 == 0) {
FUN_0040385c(s_L4AudioRenderer__Initialize___am_004f435b,
s_d__tesla_bt_munga_l4_L4AUDRND_CP_004f43a6,0xd1);
}
iVar7 = FUN_00404118(unaff_EBP + -0x70,s_AudioRenderer_004f43c8,s_amplitude_rolloff_knee_004f43d6,
(float *)(unaff_EBP + -0x20));
if (iVar7 == 0) {
FUN_0040385c(s_L4AudioRenderer__Initialize___am_004f43ed,
s_d__tesla_bt_munga_l4_L4AUDRND_CP_004f442e,0xda);
}
FUN_00436cc0(iVar3,*(undefined4 *)(unaff_EBP + -0x1c),*(undefined4 *)(unaff_EBP + -0x20),
*(undefined4 *)(unaff_EBP + -0x24));
iVar7 = FUN_00404118(unaff_EBP + -0x70,s_AudioRenderer_004f4450,s_high_frequency_rolloff_004f445e,
(float *)(unaff_EBP + -0x28));
if (iVar7 == 0) {
FUN_0040385c(s_L4AudioRenderer__Initialize___hi_004f4475,
s_d__tesla_bt_munga_l4_L4AUDRND_CP_004f44b6,0xf4);
}
iVar7 = FUN_00404118(unaff_EBP + -0x70,s_AudioRenderer_004f44d8,
s_high_frequency_rolloff_knee_004f44e6,(float *)(unaff_EBP + -0x2c));
if (iVar7 == 0) {
FUN_0040385c(s_L4AudioRenderer__Initialize___hi_004f4502,
s_d__tesla_bt_munga_l4_L4AUDRND_CP_004f4548,0xfd);
}
iVar7 = FUN_00404118(unaff_EBP + -0x70,s_AudioRenderer_004f456a,
s_high_frequency_rolloff_distance__004f4578,(float *)(unaff_EBP + -0x30));
if (iVar7 == 0) {
FUN_0040385c(s_L4AudioRenderer__Initialize___hi_004f459e,
s_d__tesla_bt_munga_l4_L4AUDRND_CP_004f45ee,0x106);
}
FUN_00436cdc(iVar3,*(undefined4 *)(unaff_EBP + -0x28),*(undefined4 *)(unaff_EBP + -0x2c),
*(undefined4 *)(unaff_EBP + -0x30));
iVar7 = FUN_00404118(unaff_EBP + -0x70,s_AudioRenderer_004f4610,s_doppler_range_004f461e,
(float *)(unaff_EBP + -0x34));
if (iVar7 == 0) {
FUN_0040385c(s_L4AudioRenderer__Initialize___do_004f462c,
s_d__tesla_bt_munga_l4_L4AUDRND_CP_004f4664,0x11f);
}
iVar7 = FUN_00404118(unaff_EBP + -0x70,s_AudioRenderer_004f4686,s_speed_of_sound_004f4694,
(float *)(unaff_EBP + -0x38));
if (iVar7 == 0) {
FUN_0040385c(s_L4AudioRenderer__Initialize___sp_004f46a3,
s_d__tesla_bt_munga_l4_L4AUDRND_CP_004f46dc,0x128);
}
FUN_00436cac(iVar3,*(undefined4 *)(unaff_EBP + -0x34),*(undefined4 *)(unaff_EBP + -0x38));
iVar7 = FUN_00404118(unaff_EBP + -0x70,s_AudioRenderer_004f46fe,s_compression_exponent_004f470c,
(float *)(unaff_EBP + -0x3c));
if (iVar7 == 0) {
FUN_0040385c(s_L4AudioRenderer__Initialize___co_004f4721,
s_d__tesla_bt_munga_l4_L4AUDRND_CP_004f4760,0x140);
}
iVar7 = FUN_00404118(unaff_EBP + -0x70,s_AudioRenderer_004f4782,s_compression_scale_004f4790,
(float *)(unaff_EBP + -0x40));
if (iVar7 == 0) {
FUN_0040385c(s_L4AudioRenderer__Initialize___co_004f47a2,
s_d__tesla_bt_munga_l4_L4AUDRND_CP_004f47de,0x149);
}
FUN_00436cf8(iVar3,*(undefined4 *)(unaff_EBP + -0x3c),*(undefined4 *)(unaff_EBP + -0x40));
iVar7 = FUN_00404118(unaff_EBP + -0x70,s_AudioRenderer_004f4800,s_itd_difference_004f480e,
(float *)(unaff_EBP + -0x44));
if (iVar7 == 0) {
FUN_0040385c(s_L4AudioRenderer__Initialize___it_004f481d,
s_d__tesla_bt_munga_l4_L4AUDRND_CP_004f4856,0x160);
}
*(undefined4 *)(unaff_EBP + -0x48) = *(undefined4 *)(unaff_EBP + -0x44);
*(undefined4 *)(iVar3 + 0x48) = *(undefined4 *)(unaff_EBP + -0x48);
iVar7 = FUN_00404118(unaff_EBP + -0x70,s_AudioRenderer_004f4878,s_global_reverb_scale_004f4886,
(float *)(unaff_EBP + -0x4c));
if (iVar7 == 0) {
FUN_0040385c(s_L4AudioRenderer__Initialize___gl_004f489a,
s_d__tesla_bt_munga_l4_L4AUDRND_CP_004f48d8,0x174);
}
*(undefined4 *)(unaff_EBP + -0x50) = *(undefined4 *)(unaff_EBP + -0x4c);
*(undefined4 *)(iVar3 + 0x4c) = *(undefined4 *)(unaff_EBP + -0x50);
FUN_00462bcc((int)(piVar2 + 0x1b));
FUN_00466c70(piVar2 + 0x58,unaff_EBP + -0x70,(int)(piVar2 + 0x1b));
FUN_00403ecc((int *)(unaff_EBP + -0x70),2);
piVar1 = *(int **)(unaff_EBP + -4);
piVar2 = piVar1 + 3;
*piVar2 = *piVar2 + -1;
if (*piVar2 == 0) {
FUN_004024d8(piVar1,3);
}
return;
}
/* @00467908 file=? name=FUN_00467908 */
void __cdecl FUN_00467908(int param_1,int *param_2)
{
undefined4 uVar1;
int iVar2;
uVar1 = FUN_00417ab4(param_1 + 0x40);
iVar2 = (**(code **)(*param_2 + 0x28))(param_2,uVar1);
FUN_00466de4(param_1 + 0x160,(int)param_2,iVar2);
return;
}
/* @00467940 file=? name=FUN_00467940 */
void __cdecl FUN_00467940(int param_1,int param_2)
{
FUN_00466e90(param_1 + 0x160,param_2);
return;
}
/* @0046795c file=? name=FUN_0046795c */
void FUN_0046795c(void)
{
return;
}
/* @00467964 file=? name=FUN_00467964 */
void FUN_00467964(void)
{
return;
}
/* @0046796c file=? name=FUN_0046796c */
void FUN_0046796c(void)
{
return;
}
/* @00467974 file=? name=FUN_00467974 */
void FUN_00467974(void)
{
return;
}
/* @0046797c file=? name=FUN_0046797c */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
void __cdecl FUN_0046797c(int param_1,int *param_2)
{
int *piVar1;
int iVar2;
float10 fVar3;
int local_38 [8];
int local_18;
float local_14;
float local_10;
float local_c;
int local_8;
FUN_00463580(local_38);
iVar2 = FUN_00468190(param_1,param_2,local_38);
if (iVar2 == 0) {
if (*(int *)(*(int *)(param_2[10] + 0xc) + 0x10) == 1) {
FUN_0043ba04((int)param_2,1);
(**(code **)(*(int *)(param_1 + 0x188) + 4))(param_1 + 0x188,param_2);
}
}
else {
local_8 = *(int *)(param_1 + 0x4c);
piVar1 = (int *)param_2[9];
if (piVar1[0x18] <= *(int *)(local_8 + 4)) {
piVar1[0x18] = *(int *)(local_8 + 4) + piVar1[0x17];
(**(code **)(*piVar1 + 0x1c))(piVar1,local_8);
}
FUN_004636cc((int)param_2,local_38);
(**(code **)(*param_2 + 0x44))(param_2);
FUN_0043ba04((int)param_2,2);
fVar3 = (float10)(**(code **)(*param_2 + 0x1c))(param_2);
local_c = (float)fVar3;
local_14 = (_DAT_00467a98 - (float)param_2[0x1b]) - local_c;
local_10 = local_14;
(**(code **)(*(int *)(param_1 + 0x170) + 8))(param_1 + 0x170,param_2,&local_14);
local_18 = param_2[0x1c];
if (local_18 != 0) {
(**(code **)(*(int *)(param_1 + 0x198) + 8))(param_1 + 0x198,param_2,&local_18);
}
}
return;
}
/* @00467a9c file=? name=FUN_00467a9c */
void __cdecl FUN_00467a9c(int param_1,int *param_2)
{
int local_14 [4];
if ((param_2[0xb] == 1) || (param_2[0xb] == 3)) {
FUN_0043ba04((int)param_2,0);
FUN_00415f30(local_14,(int)param_2,0xffffffff);
FUN_004161fc((int)local_14,param_1 + 0x188);
FUN_00415f90(local_14,2);
}
else {
FUN_00468098(param_1,param_2);
}
return;
}
/* @00467b04 file=? name=FUN_00467b04 */
void __cdecl FUN_00467b04(int param_1)
{
FUN_00442054(param_1);
FUN_00467b34(param_1);
FUN_00467c0c(param_1);
FUN_00467e9c(param_1);
return;
}
/* @00467b34 file=? name=FUN_00467b34 */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
void __cdecl FUN_00467b34(int param_1)
{
float fVar1;
int iVar2;
int *piVar3;
int iVar4;
float10 fVar5;
int local_30 [5];
float local_1c;
float local_18;
float local_14;
float local_10;
float local_c;
float local_8;
local_8 = 1.0;
local_c = 0.0;
iVar4 = 3;
FUN_004658db(local_30,param_1 + 0x198);
local_10 = *(float *)(*(int *)(param_1 + 0x4c) + 0x44);
local_14 = *(float *)(*(int *)(param_1 + 0x4c) + 0x40);
iVar2 = (**(code **)(local_30[0] + 0x30))();
fVar1 = local_c;
if (iVar2 != 0) {
iVar4 = *(int *)(iVar2 + 0x70);
}
while (local_c = fVar1, piVar3 = (int *)(**(code **)(local_30[0] + 0x28))(), piVar3 != (int *)0x0)
{
iVar2 = piVar3[0x1c];
if (iVar4 != iVar2) {
fVar5 = FUN_004dce94((double)(local_10 * local_c),SUB84((double)local_14,0),
(uint)((ulonglong)(double)local_14 >> 0x20));
local_8 = (float)((float10)_DAT_00467c08 - fVar5);
iVar4 = iVar2;
}
local_18 = local_8;
piVar3[0x1d] = (int)local_8;
fVar5 = FUN_0043ba64(piVar3);
local_1c = (float)fVar5;
fVar1 = local_1c;
if (local_1c < local_c) {
fVar1 = local_c;
}
}
FUN_00465938(local_30,2);
return;
}
/* @00467c0c file=? name=FUN_00467c0c */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
void FUN_00467c0c(int param_1)
{
bool bVar1;
undefined3 extraout_var;
int *piVar2;
float10 fVar3;
int aiStack_70 [3];
int aiStack_64 [4];
int iStack_54;
int aiStack_50 [4];
float fStack_40;
float fStack_3c;
float fStack_38;
float fStack_34;
float fStack_30;
float fStack_2c;
float fStack_28;
int iStack_24;
float fStack_20;
float fStack_1c;
int iStack_18;
int iStack_14;
int iStack_10;
int iStack_c;
int iStack_8;
FUN_00468587(aiStack_50,0);
FUN_004657c9(aiStack_64,param_1 + 0x170);
LAB_00467deb:
do {
while( true ) {
while( true ) {
while( true ) {
piVar2 = (int *)(**(code **)(aiStack_64[0] + 0x30))();
if (piVar2 == (int *)0x0) {
FUN_00465852(aiStack_70,(int)aiStack_50);
while( true ) {
piVar2 = (int *)(**(code **)(aiStack_70[0] + 0x28))();
if (piVar2 == (int *)0x0) break;
fVar3 = (float10)(**(code **)(*piVar2 + 0x1c))();
fStack_38 = (float)fVar3;
fStack_40 = (_DAT_00467e94 - (float)piVar2[0x1b]) - fStack_38;
fStack_3c = fStack_40;
(**(code **)(*(int *)(param_1 + 0x170) + 8))(param_1 + 0x170,piVar2);
}
FUN_004658af(aiStack_70,2);
FUN_00465826(aiStack_64,2);
FUN_004685a6(aiStack_50,2);
return;
}
if (piVar2[0x27] <= *(int *)(*(int *)(param_1 + 0x4c) + 4)) break;
(**(code **)(aiStack_64[0] + 0xc))();
}
bVar1 = FUN_00438348(piVar2[9],*(int *)(param_1 + 0x4c));
if (CONCAT31(extraout_var,bVar1) == 0) break;
if (*(int *)(*(int *)(piVar2[10] + 0xc) + 0x10) == 0) {
FUN_00468098(param_1,piVar2);
}
else {
FUN_00468108(param_1,piVar2);
}
}
if (piVar2[0x14] == 0) {
bVar1 = false;
}
else {
FUN_004373e8(&iStack_8);
bVar1 = piVar2[0x17] < iStack_8;
}
if (!bVar1) break;
FUN_00468098(param_1,piVar2);
}
if (*(int *)(*(int *)(piVar2[10] + 0xc) + 0x10) == 1) {
iStack_c = FUN_00437404();
FUN_004373e8(&iStack_10);
iStack_18 = iStack_10 - piVar2[0x16];
iStack_14 = iStack_18;
if (iStack_c < iStack_18) {
(**(code **)(*piVar2 + 0x4c))();
FUN_0043ba04((int)piVar2,3);
(**(code **)(*piVar2 + 0x50))();
FUN_0043ba04((int)piVar2,2);
(**(code **)(aiStack_64[0] + 0xc))();
goto LAB_00467deb;
}
}
(**(code **)(*piVar2 + 0x14))();
fStack_1c = *(float *)(iStack_54 + 0x1c);
fVar3 = (float10)(**(code **)(*piVar2 + 0x1c))();
fStack_20 = (float)fVar3;
iStack_24 = piVar2[0x1b];
fStack_34 = (_DAT_00467e94 - (float)iStack_24) - fStack_20;
fStack_30 = fStack_1c;
fStack_2c = fStack_34;
fStack_28 = fStack_34;
fVar3 = FUN_004dcd00((double)(fStack_34 - fStack_1c));
if (fVar3 <= (float10)_DAT_00467e98) {
(**(code **)(aiStack_64[0] + 0xc))();
}
else {
(**(code **)(aiStack_64[0] + 0x48))();
(**(code **)(aiStack_50[0] + 4))(aiStack_50);
}
} while( true );
}
/* @00467c12 file=? name=FUN_00467c12 */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
void FUN_00467c12(void)
{
int iVar1;
bool bVar2;
undefined3 extraout_var;
undefined4 uVar3;
int *piVar4;
int unaff_EBP;
float10 fVar5;
iVar1 = *(int *)(unaff_EBP + 8);
FUN_00468587((undefined4 *)(unaff_EBP + -0x4c),0);
FUN_004657c9((undefined4 *)(unaff_EBP + -0x60),iVar1 + 0x170);
LAB_00467deb:
do {
while( true ) {
while( true ) {
while( true ) {
piVar4 = (int *)(**(code **)(*(int *)(unaff_EBP + -0x60) + 0x30))();
if (piVar4 == (int *)0x0) {
FUN_00465852((undefined4 *)(unaff_EBP + -0x6c),unaff_EBP + -0x4c);
while( true ) {
piVar4 = (int *)(**(code **)(*(int *)(unaff_EBP + -0x6c) + 0x28))();
if (piVar4 == (int *)0x0) break;
fVar5 = (float10)(**(code **)(*piVar4 + 0x1c))();
*(float *)(unaff_EBP + -0x34) = (float)fVar5;
*(int *)(unaff_EBP + -0x70) = piVar4[0x1b];
*(float *)(unaff_EBP + -0x38) =
(_DAT_00467e94 - (float)*(int *)(unaff_EBP + -0x70)) -
*(float *)(unaff_EBP + -0x34);
*(undefined4 *)(unaff_EBP + -0x3c) = *(undefined4 *)(unaff_EBP + -0x38);
(**(code **)(*(int *)(iVar1 + 0x170) + 8))(iVar1 + 0x170,piVar4);
}
FUN_004658af((int *)(unaff_EBP + -0x6c),2);
FUN_00465826((int *)(unaff_EBP + -0x60),2);
FUN_004685a6((int *)(unaff_EBP + -0x4c),2);
return;
}
if (piVar4[0x27] <= *(int *)(*(int *)(iVar1 + 0x4c) + 4)) break;
(**(code **)(*(int *)(unaff_EBP + -0x60) + 0xc))();
}
bVar2 = FUN_00438348(piVar4[9],*(int *)(iVar1 + 0x4c));
if (CONCAT31(extraout_var,bVar2) == 0) break;
if (*(int *)(*(int *)(piVar4[10] + 0xc) + 0x10) == 0) {
FUN_00468098(iVar1,piVar4);
}
else {
FUN_00468108(iVar1,piVar4);
}
}
if (piVar4[0x14] == 0) {
bVar2 = false;
}
else {
FUN_004373e8((undefined4 *)(unaff_EBP + -4));
bVar2 = piVar4[0x17] < *(int *)(unaff_EBP + -4);
}
if (!bVar2) break;
FUN_00468098(iVar1,piVar4);
}
if (*(int *)(*(int *)(piVar4[10] + 0xc) + 0x10) == 1) {
uVar3 = FUN_00437404();
*(undefined4 *)(unaff_EBP + -8) = uVar3;
FUN_004373e8((undefined4 *)(unaff_EBP + -0xc));
*(int *)(unaff_EBP + -0x10) = *(int *)(unaff_EBP + -0xc) - piVar4[0x16];
*(undefined4 *)(unaff_EBP + -0x14) = *(undefined4 *)(unaff_EBP + -0x10);
if (*(int *)(unaff_EBP + -8) < *(int *)(unaff_EBP + -0x14)) {
(**(code **)(*piVar4 + 0x4c))();
FUN_0043ba04((int)piVar4,3);
(**(code **)(*piVar4 + 0x50))();
FUN_0043ba04((int)piVar4,2);
(**(code **)(*(int *)(unaff_EBP + -0x60) + 0xc))();
goto LAB_00467deb;
}
}
(**(code **)(*piVar4 + 0x14))();
*(undefined4 *)(unaff_EBP + -0x18) = *(undefined4 *)(*(int *)(unaff_EBP + -0x50) + 0x1c);
fVar5 = (float10)(**(code **)(*piVar4 + 0x1c))();
*(float *)(unaff_EBP + -0x1c) = (float)fVar5;
*(int *)(unaff_EBP + -0x20) = piVar4[0x1b];
*(float *)(unaff_EBP + -0x24) =
(_DAT_00467e94 - (float)*(int *)(unaff_EBP + -0x20)) - *(float *)(unaff_EBP + -0x1c);
*(undefined4 *)(unaff_EBP + -0x28) = *(undefined4 *)(unaff_EBP + -0x24);
*(undefined4 *)(unaff_EBP + -0x2c) = *(undefined4 *)(unaff_EBP + -0x18);
*(undefined4 *)(unaff_EBP + -0x30) = *(undefined4 *)(unaff_EBP + -0x28);
fVar5 = FUN_004dcd00((double)(*(float *)(unaff_EBP + -0x30) - *(float *)(unaff_EBP + -0x2c)));
if (fVar5 <= (float10)_DAT_00467e98) {
(**(code **)(*(int *)(unaff_EBP + -0x60) + 0xc))();
}
else {
(**(code **)(*(int *)(unaff_EBP + -0x60) + 0x48))();
(**(code **)(*(int *)(unaff_EBP + -0x4c) + 4))(unaff_EBP + -0x4c);
}
} while( true );
}
/* @00467e9c file=? name=FUN_00467e9c */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
void __cdecl FUN_00467e9c(int param_1)
{
int *piVar1;
bool bVar2;
undefined3 extraout_var;
int *piVar3;
int iVar4;
float10 fVar5;
int local_84 [4];
int local_74 [8];
int local_54 [4];
int local_44;
int local_40 [3];
int local_34 [6];
int local_1c;
int local_18;
undefined4 local_14;
float local_10;
float local_c;
float local_8;
FUN_004683b9(local_34,0,0);
FUN_00465852(local_40,param_1 + 0x188);
while( true ) {
piVar3 = (int *)(**(code **)(local_40[0] + 0x28))(local_40);
if (piVar3 == (int *)0x0) break;
if (piVar3[0x28] <= *(int *)(*(int *)(param_1 + 0x4c) + 4)) {
bVar2 = FUN_00438348(piVar3[9],*(int *)(param_1 + 0x4c));
if (CONCAT31(extraout_var,bVar2) == 0) {
fVar5 = (float10)(**(code **)(*piVar3 + 0x1c))(piVar3);
local_8 = (float)fVar5;
local_10 = (_DAT_00468094 - (float)piVar3[0x1b]) - local_8;
local_c = local_10;
(**(code **)(local_34[0] + 8))(local_34,piVar3,&local_10);
}
}
}
FUN_004657c9(local_54,(int)local_34);
while( true ) {
piVar3 = (int *)(**(code **)(local_54[0] + 0x30))(local_54);
if (piVar3 == (int *)0x0) break;
FUN_00463580(local_74);
iVar4 = FUN_00468190(param_1,piVar3,local_74);
if (iVar4 == 0) break;
FUN_00415f30(local_84,(int)piVar3,0xffffffff);
FUN_004161fc((int)local_84,param_1 + 0x188);
local_14 = *(undefined4 *)(local_44 + 0x1c);
(**(code **)(local_54[0] + 0x48))(local_54);
local_18 = *(int *)(param_1 + 0x4c);
piVar1 = (int *)piVar3[9];
if (piVar1[0x18] <= *(int *)(local_18 + 4)) {
piVar1[0x18] = *(int *)(local_18 + 4) + piVar1[0x17];
(**(code **)(*piVar1 + 0x1c))(piVar1,local_18);
}
FUN_004636cc((int)piVar3,local_74);
(**(code **)(*piVar3 + 0x50))(piVar3);
FUN_0043ba04((int)piVar3,2);
(**(code **)(*(int *)(param_1 + 0x170) + 8))(param_1 + 0x170,piVar3,&local_14);
if (piVar3[0x1c] != 0) {
local_1c = piVar3[0x1c];
(**(code **)(*(int *)(param_1 + 0x198) + 8))(param_1 + 0x198,piVar3,&local_1c);
}
FUN_00415f90(local_84,2);
}
FUN_00465826(local_54,2);
FUN_004658af(local_40,2);
FUN_004683dc(local_34,2);
return;
}
/* @00468098 file=? name=FUN_00468098 */
void __cdecl FUN_00468098(int param_1,int *param_2)
{
int local_14 [4];
(**(code **)(*param_2 + 0x48))(param_2);
FUN_0043ba04((int)param_2,0);
FUN_004636fc((int)param_2);
FUN_00415f30(local_14,(int)param_2,0xffffffff);
FUN_004161fc((int)local_14,param_1 + 0x170);
FUN_004161fc((int)local_14,param_1 + 0x198);
FUN_00415f90(local_14,2);
return;
}
/* @00468108 file=? name=FUN_00468108 */
void __cdecl FUN_00468108(int param_1,int *param_2)
{
int local_14 [4];
(**(code **)(*param_2 + 0x4c))(param_2);
FUN_0043ba04((int)param_2,3);
FUN_004636fc((int)param_2);
FUN_00415f30(local_14,(int)param_2,0xffffffff);
FUN_004161fc((int)local_14,param_1 + 0x170);
FUN_004161fc((int)local_14,param_1 + 0x198);
(**(code **)(*(int *)(param_1 + 0x188) + 4))(param_1 + 0x188,param_2);
FUN_00415f90(local_14,2);
return;
}
/* @00468190 file=? name=FUN_00468190 */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
int __cdecl FUN_00468190(int param_1,int *param_2,int *param_3)
{
bool bVar1;
undefined3 extraout_var;
int iVar2;
int *piVar3;
undefined3 extraout_var_00;
undefined3 extraout_var_01;
int *piVar4;
float10 fVar5;
int local_2c [4];
int local_1c;
float local_18;
float local_14;
float local_10;
float local_c;
float local_8;
bVar1 = FUN_00438348(param_2[9],*(int *)(param_1 + 0x4c));
if (CONCAT31(extraout_var,bVar1) == 0) {
piVar3 = (int *)FUN_004636ec((int)param_2);
piVar4 = param_3;
for (iVar2 = 8; iVar2 != 0; iVar2 = iVar2 + -1) {
*piVar4 = *piVar3;
piVar3 = piVar3 + 1;
piVar4 = piVar4 + 1;
}
bVar1 = FUN_004682f4(param_1,*(int *)(*(int *)(param_2[10] + 0xc) + 0xc),param_3);
iVar2 = CONCAT31(extraout_var_00,bVar1);
if (iVar2 == 0) {
FUN_004657c9(local_2c,param_1 + 0x170);
local_8 = 0.0;
(**(code **)(local_2c[0] + 8))(local_2c);
piVar3 = (int *)(**(code **)(local_2c[0] + 0x30))(local_2c);
fVar5 = (float10)(**(code **)(*param_2 + 0x1c))(param_2);
local_c = (float)fVar5;
local_14 = (_DAT_004682f0 - (float)param_2[0x1b]) - local_c;
local_10 = local_14;
local_8 = local_14;
while (((iVar2 == 0 && (piVar3 != (int *)0x0)) &&
(local_18 = *(float *)(local_1c + 0x1c), local_8 < local_18))) {
if (*(int *)(*(int *)(piVar3[10] + 0xc) + 0x10) == 0) {
FUN_00468098(param_1,piVar3);
}
else {
FUN_00468108(param_1,piVar3);
}
bVar1 = FUN_004682f4(param_1,*(int *)(*(int *)(param_2[10] + 0xc) + 0xc),param_3);
iVar2 = CONCAT31(extraout_var_01,bVar1);
(**(code **)(local_2c[0] + 8))(local_2c);
piVar3 = (int *)(**(code **)(local_2c[0] + 0x30))(local_2c);
}
FUN_00465826(local_2c,2);
}
}
else {
iVar2 = 0;
}
return iVar2;
}
/* @004682f4 file=? name=FUN_004682f4 */
bool __cdecl FUN_004682f4(int param_1,int param_2,int *param_3)
{
bool bVar1;
int iVar2;
bVar1 = false;
if (param_3[4] != 0) {
iVar2 = FUN_00462a1c(param_1 + 0x78,param_2);
if (iVar2 == 0) goto LAB_0046839b;
*param_3 = iVar2;
}
if (param_3[5] != 0) {
iVar2 = FUN_00462a1c(param_1 + 0x78,param_2);
if (iVar2 == 0) goto LAB_0046839b;
param_3[1] = iVar2;
}
if (param_3[6] != 0) {
iVar2 = FUN_00462a1c(param_1 + 0xec,param_2);
if (iVar2 == 0) goto LAB_0046839b;
param_3[2] = iVar2;
}
if (param_3[7] != 0) {
iVar2 = FUN_00462a1c(param_1 + 0xec,param_2);
if (iVar2 == 0) goto LAB_0046839b;
param_3[3] = iVar2;
}
bVar1 = true;
LAB_0046839b:
if (!bVar1) {
FUN_004635e0(param_3);
}
return bVar1;
}
/* @004683b9 file=? name=FUN_004683b9 */
undefined4 * __cdecl FUN_004683b9(undefined4 *param_1,undefined4 param_2,undefined4 param_3)
{
FUN_004186ac(param_1,param_2,param_3);
*param_1 = &PTR_FUN_004f4994;
return param_1;
}
/* @004683dc file=? name=FUN_004683dc */
void __cdecl FUN_004683dc(int *param_1,byte param_2)
{
if (param_1 != (int *)0x0) {
*param_1 = (int)&PTR_FUN_004f4994;
FUN_004186dc(param_1,0);
if ((param_2 & 1) != 0) {
FUN_0046853c(param_1);
}
}
return;
}
/* @00468408 file=? name=FUN_00468408 */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
undefined4 __cdecl FUN_00468408(undefined4 param_1,int param_2,int param_3)
{
undefined4 uVar1;
float10 fVar2;
fVar2 = FUN_004dcd00((double)(*(float *)(param_2 + 0x1c) - *(float *)(param_3 + 0x1c)));
if ((float10)_DAT_00468478 < fVar2) {
if (*(float *)(param_2 + 0x1c) <= *(float *)(param_3 + 0x1c)) {
uVar1 = 0xffffffff;
}
else {
uVar1 = 1;
}
}
else {
uVar1 = 0;
}
return uVar1;
}
/* @0046853c file=? name=FUN_0046853c */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
void __cdecl FUN_0046853c(undefined4 *param_1)
{
FUN_00402f98((int)DAT_004f4960,param_1);
_DAT_004f4964 = _DAT_004f4964 + -1;
if (_DAT_004f4964 == 0) {
if (DAT_004f4960 != (int *)0x0) {
FUN_00402c28(DAT_004f4960,0);
FUN_004022d0(DAT_004f4960);
}
DAT_004f4960 = (int *)0x0;
}
return;
}
/* @00468587 file=? name=FUN_00468587 */
undefined4 * __cdecl FUN_00468587(undefined4 *param_1,undefined4 param_2)
{
FUN_00417be0(param_1,param_2);
*param_1 = &PTR_FUN_004f498c;
return param_1;
}
/* @004685a6 file=? name=FUN_004685a6 */
void __cdecl FUN_004685a6(int *param_1,byte param_2)
{
if (param_1 != (int *)0x0) {
*param_1 = (int)&PTR_FUN_004f498c;
FUN_00417c0c(param_1,0);
if ((param_2 & 1) != 0) {
FUN_004022d0(param_1);
}
}
return;
}
/* @004685d2 file=? name=FUN_004685d2 */
undefined4 * __cdecl FUN_004685d2(undefined4 *param_1,undefined4 param_2,undefined4 param_3)
{
FUN_004186ac(param_1,param_2,param_3);
*param_1 = &PTR_FUN_004f4970;
return param_1;
}
/* @004685f5 file=? name=FUN_004685f5 */
void __cdecl FUN_004685f5(int *param_1,byte param_2)
{
if (param_1 != (int *)0x0) {
*param_1 = (int)&PTR_FUN_004f4970;
FUN_004186dc(param_1,0);
if ((param_2 & 1) != 0) {
FUN_004686cc(param_1);
}
}
return;
}
/* @00468621 file=? name=FUN_00468621 */
undefined4 __cdecl FUN_00468621(undefined4 param_1,int param_2,int param_3)
{
undefined4 uVar1;
if (*(int *)(param_3 + 0x1c) == *(int *)(param_2 + 0x1c)) {
uVar1 = 0;
}
else {
uVar1 = 1;
if (*(int *)(param_2 + 0x1c) <= *(int *)(param_3 + 0x1c)) {
uVar1 = 0xffffffff;
}
}
return uVar1;
}
/* @00468650 file=? name=FUN_00468650 */
undefined4 __cdecl FUN_00468650(undefined4 param_1,int *param_2,int param_3)
{
undefined4 uVar1;
if (*(int *)(param_3 + 0x1c) == *param_2) {
uVar1 = 0;
}
else {
uVar1 = 1;
if (*param_2 <= *(int *)(param_3 + 0x1c)) {
uVar1 = 0xffffffff;
}
}
return uVar1;
}
/* @0046867c file=? name=FUN_0046867c */
void FUN_0046867c(void)
{
int iVar1;
undefined4 *puVar2;
iVar1 = DAT_004f496c;
DAT_004f496c = DAT_004f496c + 1;
puVar2 = DAT_004f4968;
if ((iVar1 == 0) && (puVar2 = (undefined4 *)FUN_00402298(0x28), puVar2 != (undefined4 *)0x0)) {
FUN_00402b98(puVar2,0x18,100,100,s_VChainOf_004f4915);
}
DAT_004f4968 = puVar2;
FUN_00402f74((int)DAT_004f4968);
return;
}
/* @004686cc file=? name=FUN_004686cc */
void __cdecl FUN_004686cc(undefined4 *param_1)
{
FUN_00402f98((int)DAT_004f4968,param_1);
DAT_004f496c = DAT_004f496c + -1;
if (DAT_004f496c == 0) {
if (DAT_004f4968 != (int *)0x0) {
FUN_00402c28(DAT_004f4968,0);
FUN_004022d0(DAT_004f4968);
}
DAT_004f4968 = (int *)0x0;
}
return;
}
/* @00468717 file=? name=FUN_00468717 */
undefined4 * __cdecl FUN_00468717(undefined4 param_1,int param_2,undefined4 *param_3)
{
undefined4 *puVar1;
puVar1 = (undefined4 *)FUN_00424ac5();
if (puVar1 == (undefined4 *)0x0) {
puVar1 = (undefined4 *)0x0;
}
else {
puVar1 = FUN_00424a6e(puVar1,param_1,param_2,param_3);
}
return puVar1;
}
/* @00468747 file=? name=FUN_00468747 */
undefined4 * __cdecl FUN_00468747(undefined4 param_1,int param_2,undefined4 *param_3)
{
undefined4 *puVar1;
puVar1 = (undefined4 *)FUN_004426e5();
if (puVar1 == (undefined4 *)0x0) {
puVar1 = (undefined4 *)0x0;
}
else {
puVar1 = FUN_00442684(puVar1,param_1,param_2,param_3);
}
return puVar1;
}
/* @00468778 file=? name=FUN_00468778 */
undefined4 * __cdecl FUN_00468778(undefined4 *param_1)
{
FUN_00442990(param_1);
*param_1 = &PTR_FUN_004f4a10;
FUN_00468812(param_1 + 0x16);
return param_1;
}
/* @0046879c file=? name=FUN_0046879c */
void __cdecl FUN_0046879c(int *param_1,byte param_2)
{
if (param_1 != (int *)0x0) {
*param_1 = (int)&PTR_FUN_004f4a10;
FUN_0046882b(param_1 + 0x16,2);
FUN_004429c0(param_1,0);
if ((param_2 & 1) != 0) {
FUN_004022d0(param_1);
}
}
return;
}
/* @004687d8 file=? name=FUN_004687d8 */
void __cdecl FUN_004687d8(int param_1)
{
FUN_004689f4(param_1 + 0x58);
FUN_00442a14(param_1);
return;
}
/* @004687f4 file=? name=FUN_004687f4 */
void FUN_004687f4(void)
{
FUN_00442a3c();
return;
}
/* @00468803 file=? name=FUN_00468803 */
void FUN_00468803(void)
{
FUN_004428b0();
return;
}
/* @00468812 file=? name=FUN_00468812 */
undefined4 * __cdecl FUN_00468812(undefined4 *param_1)
{
FUN_00442848(param_1);
*param_1 = &PTR_FUN_004f4a04;
return param_1;
}
/* @0046882b file=? name=FUN_0046882b */
void __cdecl FUN_0046882b(int *param_1,byte param_2)
{
if (param_1 != (int *)0x0) {
*param_1 = (int)&PTR_FUN_004f4a04;
FUN_004689f4((int)param_1);
FUN_00442874(param_1,0);
if ((param_2 & 1) != 0) {
FUN_004022d0(param_1);
}
}
return;
}
/* @0046885e file=? name=FUN_0046885e */
int __cdecl FUN_0046885e(int param_1,char *param_2,undefined4 param_3)
{
int iVar1;
undefined4 *puVar2;
iVar1 = FUN_004428bc(param_1,param_2);
if (iVar1 == 0) {
iVar1 = FUN_0046eb64();
if (iVar1 == 0) {
iVar1 = 0;
}
else {
puVar2 = (undefined4 *)FUN_00402298(0x3c);
if (puVar2 == (undefined4 *)0x0) {
puVar2 = (undefined4 *)0x0;
}
else {
puVar2 = FUN_00468a42(puVar2,param_2,iVar1,param_3);
}
(**(code **)(*(int *)(param_1 + 0xc) + 4))(param_1 + 0xc,puVar2);
}
}
else {
*(int *)(iVar1 + 0x30) = *(int *)(iVar1 + 0x30) + 1;
iVar1 = *(int *)(iVar1 + 0x38);
}
return iVar1;
}
/* @004688ce file=? name=FUN_004688ce */
int * __cdecl FUN_004688ce(int param_1,int param_2,undefined4 param_3)
{
int iVar1;
int *piVar2;
undefined4 *puVar3;
iVar1 = FUN_0044292c(param_1,param_2);
if (iVar1 == 0) {
piVar2 = FUN_0046eb6c(param_2);
if (piVar2 == (int *)0x0) {
piVar2 = (int *)0x0;
}
else {
puVar3 = (undefined4 *)FUN_00402298(0x3c);
if (puVar3 == (undefined4 *)0x0) {
puVar3 = (undefined4 *)0x0;
}
else {
puVar3 = FUN_00468a6b(puVar3,param_2,piVar2,param_3);
}
(**(code **)(*(int *)(param_1 + 0xc) + 4))(param_1 + 0xc,puVar3);
}
}
else {
*(int *)(iVar1 + 0x30) = *(int *)(iVar1 + 0x30) + 1;
piVar2 = *(int **)(iVar1 + 0x38);
}
return piVar2;
}
/* @0046893e file=? name=FUN_0046893e */
undefined4 __cdecl FUN_0046893e(int param_1,char *param_2)
{
int iVar1;
iVar1 = FUN_004428bc(param_1,param_2);
if (iVar1 != 0) {
*(int *)(iVar1 + 0x30) = *(int *)(iVar1 + 0x30) + 1;
return *(undefined4 *)(iVar1 + 0x38);
}
return 0;
}
/* @00468961 file=? name=FUN_00468961 */
undefined4 __cdecl FUN_00468961(int param_1,int param_2)
{
int iVar1;
iVar1 = FUN_0044292c(param_1,param_2);
if (iVar1 != 0) {
*(int *)(iVar1 + 0x30) = *(int *)(iVar1 + 0x30) + 1;
return *(undefined4 *)(iVar1 + 0x38);
}
return 0;
}
/* @00468984 file=? name=FUN_00468984 */
void __cdecl FUN_00468984(int param_1,char *param_2)
{
undefined4 *puVar1;
puVar1 = (undefined4 *)FUN_004428bc(param_1,param_2);
if ((((puVar1 != (undefined4 *)0x0) && (puVar1[0xc] = puVar1[0xc] + -1, (int)puVar1[0xc] < 1)) &&
(puVar1[0xd] == 0)) && (puVar1 != (undefined4 *)0x0)) {
(**(code **)*puVar1)(puVar1,3);
}
return;
}
/* @004689bc file=? name=FUN_004689bc */
void __cdecl FUN_004689bc(int param_1,int param_2)
{
undefined4 *puVar1;
puVar1 = (undefined4 *)FUN_0044292c(param_1,param_2);
if ((((puVar1 != (undefined4 *)0x0) && (puVar1[0xc] = puVar1[0xc] + -1, (int)puVar1[0xc] < 1)) &&
(puVar1[0xd] == 0)) && (puVar1 != (undefined4 *)0x0)) {
(**(code **)*puVar1)(puVar1,3);
}
return;
}
/* @004689f4 file=? name=FUN_004689f4 */
void __cdecl FUN_004689f4(int param_1)
{
undefined4 *puVar1;
int local_10 [3];
FUN_0044316d(local_10,param_1 + 0xc);
while( true ) {
puVar1 = (undefined4 *)(**(code **)(local_10[0] + 0x28))(local_10);
if (puVar1 == (undefined4 *)0x0) break;
if (puVar1 != (undefined4 *)0x0) {
(**(code **)*puVar1)(puVar1,3);
}
}
FUN_004431ab(local_10,2);
return;
}
/* @00468a42 file=? name=FUN_00468a42 */
undefined4 * __cdecl
FUN_00468a42(undefined4 *param_1,char *param_2,undefined4 param_3,undefined4 param_4)
{
FUN_00442780(param_1,param_2,param_4);
*param_1 = &PTR_FUN_004f4a00;
param_1[0xe] = param_3;
return param_1;
}
/* @00468a6b file=? name=FUN_00468a6b */
undefined4 * __cdecl
FUN_00468a6b(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)
{
FUN_004427dc(param_1,param_2,param_4);
*param_1 = &PTR_FUN_004f4a00;
param_1[0xe] = param_3;
return param_1;
}
/* @00468a94 file=? name=FUN_00468a94 */
void __cdecl FUN_00468a94(int *param_1,byte param_2)
{
if (param_1 != (int *)0x0) {
*param_1 = (int)&PTR_FUN_004f4a00;
FUN_0046ecdc((int *)param_1[0xe],3);
param_1[0xe] = 0;
FUN_00442810(param_1,0);
if ((param_2 & 1) != 0) {
FUN_004022d0(param_1);
}
}
return;
}
/* @00468ad3 file=? name=FUN_00468ad3 */
void FUN_00468ad3(void)
{
FUN_0044283c();
return;
}
/* @00468ae4 file=? name=FUN_00468ae4 */
undefined4 * __cdecl FUN_00468ae4(undefined4 *param_1,int param_2,int param_3)
{
int *piVar1;
undefined4 uVar2;
undefined2 *puVar3;
int iVar4;
FUN_0044a078(param_1,param_2,param_3);
*param_1 = &PTR_FUN_004f4b00;
piVar1 = (int *)FUN_00402298(0xc);
if (piVar1 == (int *)0x0) {
piVar1 = (int *)0x0;
}
else {
piVar1 = FUN_00449c88(piVar1,param_2,param_3);
}
param_1[0xb] = piVar1;
param_1[6] = 1;
param_1[8] = param_3;
param_1[7] = param_2;
param_1[10] = param_1[8] + -1;
param_1[9] = param_1[7] + -1;
uVar2 = FUN_004022b0(param_1[8] * 2);
param_1[0xc] = uVar2;
param_1[5] = 1;
puVar3 = (undefined2 *)param_1[0xc];
for (iVar4 = param_1[8]; 0 < iVar4; iVar4 = iVar4 + -1) {
*puVar3 = 0;
puVar3 = puVar3 + 1;
}
return param_1;
}
/* @00468b7c file=? name=FUN_00468b7c */
undefined4 * __cdecl FUN_00468b7c(undefined4 *param_1,int *param_2)
{
int iVar1;
undefined2 *puVar2;
FUN_0044a078(param_1,*param_2,param_2[1]);
*param_1 = &PTR_FUN_004f4b00;
param_1[0xb] = param_2;
param_1[6] = 0;
param_1[8] = *(undefined4 *)(param_1[0xb] + 4);
param_1[7] = *(undefined4 *)param_1[0xb];
param_1[10] = param_1[8] + -1;
param_1[9] = param_1[7] + -1;
iVar1 = FUN_004022b0(param_1[8] * 2);
param_1[0xc] = iVar1;
if (iVar1 == 0) {
param_1[5] = 0;
}
else {
param_1[5] = 1;
puVar2 = (undefined2 *)param_1[0xc];
for (iVar1 = param_1[8]; 0 < iVar1; iVar1 = iVar1 + -1) {
*puVar2 = 0;
puVar2 = puVar2 + 1;
}
}
return param_1;
}
/* @00468c04 file=? name=FUN_00468c04 */
void __cdecl FUN_00468c04(int *param_1,byte param_2)
{
if (param_1 != (int *)0x0) {
*param_1 = (int)&PTR_FUN_004f4b00;
if ((int *)param_1[0xc] != (int *)0x0) {
FUN_004022d0((int *)param_1[0xc]);
param_1[0xc] = 0;
}
if (param_1[6] != 0) {
if ((int *)param_1[0xb] != (int *)0x0) {
FUN_00449d0c((int *)param_1[0xb],3);
param_1[0xb] = 0;
}
param_1[6] = 0;
}
FUN_0044a0ac(param_1,0);
if ((param_2 & 1) != 0) {
FUN_004022d0(param_1);
}
}
return;
}
/* @00468c68 file=? name=FUN_00468c68 */
undefined4 FUN_00468c68(void)
{
return 1;
}
/* @00468c74 file=? name=FUN_00468c74 */
void __cdecl FUN_00468c74(int param_1,char *param_2)
{
char cVar1;
int *piVar2;
uint uVar3;
uint uVar4;
char *pcVar5;
char *pcVar6;
undefined8 uVar7;
char local_54 [80];
FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s_Video8BitBuffered__004f4a18,(char *)0x0);
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_54;
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_54,&DAT_004f4a2c);
uVar3 = *(uint *)(param_1 + 0x1c);
FUN_004dbb24(&DAT_00524e20,local_54,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s_width___004f4a30,(char *)0x0);
piVar2 = FUN_004db78c(&DAT_00524e20,uVar3);
FUN_004dbb24(piVar2,&DAT_004f4a3d,(char *)0x0);
uVar3 = *(uint *)(param_1 + 0x20);
FUN_004dbb24(&DAT_00524e20,local_54,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s_height___004f4a3f,(char *)0x0);
piVar2 = FUN_004db78c(&DAT_00524e20,uVar3);
FUN_004dbb24(piVar2,&DAT_004f4a4c,(char *)0x0);
uVar3 = *(uint *)(param_1 + 0x24);
FUN_004dbb24(&DAT_00524e20,local_54,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s_maximumX___004f4a4e,(char *)0x0);
piVar2 = FUN_004db78c(&DAT_00524e20,uVar3);
FUN_004dbb24(piVar2,&DAT_004f4a5b,(char *)0x0);
uVar3 = *(uint *)(param_1 + 0x28);
FUN_004dbb24(&DAT_00524e20,local_54,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s_maximumY___004f4a5d,(char *)0x0);
piVar2 = FUN_004db78c(&DAT_00524e20,uVar3);
FUN_004dbb24(piVar2,&DAT_004f4a6a,(char *)0x0);
uVar3 = *(uint *)(param_1 + 0x30);
FUN_004dbb24(&DAT_00524e20,local_54,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s_changedLine__004f4a6c,(char *)0x0);
uVar7 = FUN_004dbd4c(&DAT_00524e20,uVar3);
FUN_004dbb24((int *)uVar7,&DAT_004f4a79,(char *)0x0);
FUN_00449d50(*(uint **)(param_1 + 0x2c),local_54);
FUN_0044a0cc(param_1,local_54);
return;
}
/* @00468e78 file=? name=FUN_00468e78 */
void __cdecl FUN_00468e78(int param_1,int param_2,int param_3,int *param_4)
{
*param_4 = *(int *)(*(int *)(param_1 + 0x2c) + 8) + param_2 + param_3 * *(int *)(param_1 + 0x1c);
return;
}
/* @00468e9c file=? name=FUN_00468e9c */
void __cdecl FUN_00468e9c(int param_1,int param_2,int param_3)
{
short *psVar1;
int iVar2;
iVar2 = param_3;
if (param_3 < param_2) {
iVar2 = param_2;
param_2 = param_3;
}
psVar1 = (short *)(*(int *)(param_1 + 0x30) + param_2 * 2);
*psVar1 = *psVar1 + 1;
if (iVar2 < *(int *)(param_1 + 0x28)) {
psVar1 = (short *)(*(int *)(param_1 + 0x30) + 2 + iVar2 * 2);
*psVar1 = *psVar1 + -1;
}
return;
}
/* @00468ecc file=? name=FUN_00468ecc */
void __cdecl
FUN_00468ecc(int param_1,byte param_2,undefined4 param_3,int param_4,int param_5,int param_6)
{
int iVar1;
byte *local_8;
if (*(int *)(param_1 + 0x14) != 0) {
iVar1 = *(int *)(param_1 + 0x28) - param_6;
FUN_00468e9c(param_1,iVar1,iVar1);
FUN_00468e78(param_1,param_5,iVar1,(int *)&local_8);
if (param_4 == 0) {
*local_8 = param_2;
}
else if (param_4 == 1) {
*local_8 = *local_8 & param_2;
}
else if (param_4 == 2) {
*local_8 = *local_8 | param_2;
}
else if (param_4 == 3) {
*local_8 = *local_8 ^ param_2;
}
}
return;
}
/* @00468f40 file=? name=FUN_00468f40 */
void __cdecl
FUN_00468f40(int *param_1,undefined4 param_2,undefined4 param_3,int param_4,int param_5,int param_6,
int param_7,int param_8,int param_9)
{
int iVar1;
int iVar2;
int iVar3;
bool bVar4;
byte *local_10;
int local_c;
uint local_8;
if (param_1[5] != 0) {
if ((param_7 == param_5) && (param_6 == param_8)) {
if (param_9 != 0) {
(**(code **)(*param_1 + 0x14))(param_1,param_2,0,param_4,param_5,param_6);
}
}
else {
iVar2 = param_1[10] - param_6;
iVar1 = param_1[10] - param_8;
FUN_00468e9c((int)param_1,iVar2,iVar1);
iVar3 = param_7 - param_5;
bVar4 = iVar3 < 0;
if (bVar4) {
iVar3 = -iVar3;
}
local_8 = (uint)bVar4;
local_c = iVar1 - iVar2;
if (local_c < 0) {
local_8 = local_8 | 2;
local_c = -local_c;
}
if (local_c < iVar3) {
local_8 = local_8 | 4;
}
FUN_00468e78((int)param_1,param_5,iVar2,(int *)&local_10);
iVar1 = 0x400;
switch(local_8) {
case 0:
iVar2 = local_c;
if (param_9 == 0) {
iVar2 = local_c + -1;
}
for (; 0 < iVar2; iVar2 = iVar2 + -1) {
if (param_4 == 0) {
*local_10 = (byte)param_2;
}
else if (param_4 == 1) {
*local_10 = *local_10 & (byte)param_2;
}
else if (param_4 == 2) {
*local_10 = *local_10 | (byte)param_2;
}
else if (param_4 == 3) {
*local_10 = *local_10 ^ (byte)param_2;
}
local_10 = local_10 + param_1[7];
iVar1 = iVar1 + (iVar3 << 0xb) / local_c;
if (0x800 < iVar1) {
iVar1 = iVar1 + -0x800;
local_10 = local_10 + 1;
}
}
break;
case 1:
iVar2 = local_c;
if (param_9 == 0) {
iVar2 = local_c + -1;
}
for (; 0 < iVar2; iVar2 = iVar2 + -1) {
if (param_4 == 0) {
*local_10 = (byte)param_2;
}
else if (param_4 == 1) {
*local_10 = *local_10 & (byte)param_2;
}
else if (param_4 == 2) {
*local_10 = *local_10 | (byte)param_2;
}
else if (param_4 == 3) {
*local_10 = *local_10 ^ (byte)param_2;
}
local_10 = local_10 + param_1[7];
iVar1 = iVar1 + (iVar3 << 0xb) / local_c;
if (0x800 < iVar1) {
iVar1 = iVar1 + -0x800;
local_10 = local_10 + -1;
}
}
break;
case 2:
iVar2 = local_c;
if (param_9 == 0) {
iVar2 = local_c + -1;
}
for (; 0 < iVar2; iVar2 = iVar2 + -1) {
if (param_4 == 0) {
*local_10 = (byte)param_2;
}
else if (param_4 == 1) {
*local_10 = *local_10 & (byte)param_2;
}
else if (param_4 == 2) {
*local_10 = *local_10 | (byte)param_2;
}
else if (param_4 == 3) {
*local_10 = *local_10 ^ (byte)param_2;
}
local_10 = local_10 + -param_1[7];
iVar1 = iVar1 + (iVar3 << 0xb) / local_c;
if (0x800 < iVar1) {
iVar1 = iVar1 + -0x800;
local_10 = local_10 + 1;
}
}
break;
case 3:
iVar2 = local_c;
if (param_9 == 0) {
iVar2 = local_c + -1;
}
for (; 0 < iVar2; iVar2 = iVar2 + -1) {
if (param_4 == 0) {
*local_10 = (byte)param_2;
}
else if (param_4 == 1) {
*local_10 = *local_10 & (byte)param_2;
}
else if (param_4 == 2) {
*local_10 = *local_10 | (byte)param_2;
}
else if (param_4 == 3) {
*local_10 = *local_10 ^ (byte)param_2;
}
local_10 = local_10 + -param_1[7];
iVar1 = iVar1 + (iVar3 << 0xb) / local_c;
if (0x800 < iVar1) {
iVar1 = iVar1 + -0x800;
local_10 = local_10 + -1;
}
}
break;
case 4:
iVar2 = iVar3;
if (param_9 == 0) {
iVar2 = iVar3 + -1;
}
for (; 0 < iVar2; iVar2 = iVar2 + -1) {
if (param_4 == 0) {
*local_10 = (byte)param_2;
}
else if (param_4 == 1) {
*local_10 = *local_10 & (byte)param_2;
}
else if (param_4 == 2) {
*local_10 = *local_10 | (byte)param_2;
}
else if (param_4 == 3) {
*local_10 = *local_10 ^ (byte)param_2;
}
local_10 = local_10 + 1;
iVar1 = iVar1 + (local_c << 0xb) / iVar3;
if (0x800 < iVar1) {
iVar1 = iVar1 + -0x800;
local_10 = local_10 + param_1[7];
}
}
break;
case 5:
iVar2 = iVar3;
if (param_9 == 0) {
iVar2 = iVar3 + -1;
}
for (; 0 < iVar2; iVar2 = iVar2 + -1) {
if (param_4 == 0) {
*local_10 = (byte)param_2;
}
else if (param_4 == 1) {
*local_10 = *local_10 & (byte)param_2;
}
else if (param_4 == 2) {
*local_10 = *local_10 | (byte)param_2;
}
else if (param_4 == 3) {
*local_10 = *local_10 ^ (byte)param_2;
}
local_10 = local_10 + -1;
iVar1 = iVar1 + (local_c << 0xb) / iVar3;
if (0x800 < iVar1) {
iVar1 = iVar1 + -0x800;
local_10 = local_10 + param_1[7];
}
}
break;
case 6:
iVar2 = iVar3;
if (param_9 == 0) {
iVar2 = iVar3 + -1;
}
for (; 0 < iVar2; iVar2 = iVar2 + -1) {
if (param_4 == 0) {
*local_10 = (byte)param_2;
}
else if (param_4 == 1) {
*local_10 = *local_10 & (byte)param_2;
}
else if (param_4 == 2) {
*local_10 = *local_10 | (byte)param_2;
}
else if (param_4 == 3) {
*local_10 = *local_10 ^ (byte)param_2;
}
local_10 = local_10 + 1;
iVar1 = iVar1 + (local_c << 0xb) / iVar3;
if (0x800 < iVar1) {
iVar1 = iVar1 + -0x800;
local_10 = local_10 + -param_1[7];
}
}
break;
case 7:
iVar2 = iVar3;
if (param_9 == 0) {
iVar2 = iVar3 + -1;
}
for (; 0 < iVar2; iVar2 = iVar2 + -1) {
if (param_4 == 0) {
*local_10 = (byte)param_2;
}
else if (param_4 == 1) {
*local_10 = *local_10 & (byte)param_2;
}
else if (param_4 == 2) {
*local_10 = *local_10 | (byte)param_2;
}
else if (param_4 == 3) {
*local_10 = *local_10 ^ (byte)param_2;
}
local_10 = local_10 + -1;
iVar1 = iVar1 + (local_c << 0xb) / iVar3;
if (0x800 < iVar1) {
iVar1 = iVar1 + -0x800;
local_10 = local_10 + -param_1[7];
}
}
}
}
}
return;
}
/* @004693e0 file=? name=FUN_004693e0 */
void __cdecl
FUN_004693e0(int param_1,byte param_2,undefined4 param_3,int param_4,int param_5,int param_6,
int param_7,int param_8)
{
int iVar1;
int iVar2;
int iVar3;
int iVar4;
byte *local_8;
iVar3 = param_5;
if (*(int *)(param_1 + 0x14) != 0) {
param_8 = *(int *)(param_1 + 0x28) - param_8;
iVar2 = *(int *)(param_1 + 0x28) - param_6;
if (param_7 < param_5) {
param_5 = param_7;
param_7 = iVar3;
}
iVar3 = iVar2;
if (param_8 < iVar2) {
iVar3 = param_8;
param_8 = iVar2;
}
FUN_00468e9c(param_1,iVar3,param_8);
FUN_00468e78(param_1,param_5,iVar3,(int *)&local_8);
iVar4 = (param_7 - param_5) + 1;
iVar3 = (param_8 - iVar3) + 1;
iVar2 = *(int *)(param_1 + 0x1c) - iVar4;
if (param_4 == 0) {
for (; iVar1 = iVar4, 0 < iVar3; iVar3 = iVar3 + -1) {
for (; 0 < iVar1; iVar1 = iVar1 + -1) {
*local_8 = param_2;
local_8 = local_8 + 1;
}
local_8 = local_8 + iVar2;
}
}
else if (param_4 == 1) {
for (; iVar1 = iVar4, 0 < iVar3; iVar3 = iVar3 + -1) {
for (; 0 < iVar1; iVar1 = iVar1 + -1) {
*local_8 = *local_8 & param_2;
local_8 = local_8 + 1;
}
local_8 = local_8 + iVar2;
}
}
else if (param_4 == 2) {
for (; iVar1 = iVar4, 0 < iVar3; iVar3 = iVar3 + -1) {
for (; 0 < iVar1; iVar1 = iVar1 + -1) {
*local_8 = *local_8 | param_2;
local_8 = local_8 + 1;
}
local_8 = local_8 + iVar2;
}
}
else if (param_4 == 3) {
for (; iVar1 = iVar4, 0 < iVar3; iVar3 = iVar3 + -1) {
for (; 0 < iVar1; iVar1 = iVar1 + -1) {
*local_8 = *local_8 ^ param_2;
local_8 = local_8 + 1;
}
local_8 = local_8 + iVar2;
}
}
}
return;
}
/* @00469518 file=? name=FUN_00469518 */
undefined4 __cdecl FUN_00469518(int param_1)
{
return *(undefined4 *)(param_1 + 0x14);
}
/* @00469528 file=? name=FUN_00469528 */
void __cdecl
FUN_00469528(int param_1,byte param_2,undefined4 param_3,int param_4,int param_5,int param_6,
int param_7,int param_8,int param_9,int param_10,int param_11,int param_12)
{
byte *pbVar1;
uint uVar2;
int iVar3;
int iVar4;
int iVar5;
ushort *puVar6;
byte *local_18;
ushort *local_14;
uint local_10;
uint local_c;
int local_8;
if (*(int *)(param_1 + 0x14) != 0) {
iVar3 = *(int *)(param_1 + 0x28) - param_7;
iVar4 = *(int *)(param_8 + 0x10) + -1;
iVar5 = iVar4 - param_10;
local_8 = (param_11 - param_9) + 1;
iVar4 = (iVar5 - (iVar4 - param_12)) + 1;
local_14 = (ushort *)
(*(int *)(param_8 + 0x18) + (param_9 >> 4) * 2 + *(int *)(param_8 + 0x14) * iVar5 * 2
);
local_10 = 1 << (0xf - ((byte)param_9 & 0xf) & 0x1f);
FUN_00468e78(param_1,param_6,iVar3,(int *)&local_18);
if (param_5 == 0x5a) {
FUN_00468e9c(param_1,iVar3,iVar3 + local_8);
for (; 0 < iVar4; iVar4 = iVar4 + -1) {
iVar3 = *(int *)(param_8 + 0x14);
pbVar1 = local_18 + 1;
local_c = (uint)*local_14;
puVar6 = local_14 + 1;
uVar2 = local_10;
for (iVar5 = local_8; 0 < iVar5; iVar5 = iVar5 + -1) {
if (uVar2 == 0) {
local_c = (uint)*puVar6;
puVar6 = puVar6 + 1;
uVar2 = 0x8000;
}
if ((local_c & uVar2) != 0) {
if (param_4 == 0) {
*local_18 = param_2;
}
else if (param_4 == 1) {
*local_18 = *local_18 & param_2;
}
else if (param_4 == 2) {
*local_18 = *local_18 | param_2;
}
else if (param_4 == 3) {
*local_18 = *local_18 ^ param_2;
}
}
uVar2 = (int)uVar2 >> 1;
local_18 = local_18 + *(int *)(param_1 + 0x1c);
}
local_18 = pbVar1;
local_14 = local_14 + -iVar3;
}
}
else if (param_5 == 0xb4) {
FUN_00468e9c(param_1,iVar3,iVar3 + iVar4);
for (; 0 < iVar4; iVar4 = iVar4 + -1) {
iVar3 = *(int *)(param_8 + 0x14);
pbVar1 = local_18 + *(int *)(param_1 + 0x1c);
local_c = (uint)*local_14;
puVar6 = local_14 + 1;
uVar2 = local_10;
for (iVar5 = local_8; 0 < iVar5; iVar5 = iVar5 + -1) {
if (uVar2 == 0) {
local_c = (uint)*puVar6;
puVar6 = puVar6 + 1;
uVar2 = 0x8000;
}
if ((local_c & uVar2) != 0) {
if (param_4 == 0) {
*local_18 = param_2;
}
else if (param_4 == 1) {
*local_18 = *local_18 & param_2;
}
else if (param_4 == 2) {
*local_18 = *local_18 | param_2;
}
else if (param_4 == 3) {
*local_18 = *local_18 ^ param_2;
}
}
local_18 = local_18 + -1;
uVar2 = (int)uVar2 >> 1;
}
local_18 = pbVar1;
local_14 = local_14 + -iVar3;
}
}
else if (param_5 == 0x10e) {
FUN_00468e9c(param_1,iVar3 - (local_8 + -1),iVar3);
for (; 0 < iVar4; iVar4 = iVar4 + -1) {
iVar3 = *(int *)(param_8 + 0x14);
pbVar1 = local_18 + -1;
local_c = (uint)*local_14;
puVar6 = local_14 + 1;
uVar2 = local_10;
for (iVar5 = local_8; 0 < iVar5; iVar5 = iVar5 + -1) {
if (uVar2 == 0) {
local_c = (uint)*puVar6;
puVar6 = puVar6 + 1;
uVar2 = 0x8000;
}
if ((local_c & uVar2) != 0) {
if (param_4 == 0) {
*local_18 = param_2;
}
else if (param_4 == 1) {
*local_18 = *local_18 & param_2;
}
else if (param_4 == 2) {
*local_18 = *local_18 | param_2;
}
else if (param_4 == 3) {
*local_18 = *local_18 ^ param_2;
}
}
uVar2 = (int)uVar2 >> 1;
local_18 = local_18 + -*(int *)(param_1 + 0x1c);
}
local_18 = pbVar1;
local_14 = local_14 + -iVar3;
}
}
else {
FUN_00468e9c(param_1,(iVar3 - iVar4) + 1,iVar3);
for (; 0 < iVar4; iVar4 = iVar4 + -1) {
iVar3 = *(int *)(param_8 + 0x14);
pbVar1 = local_18 + -*(int *)(param_1 + 0x1c);
local_c = (uint)*local_14;
puVar6 = local_14 + 1;
uVar2 = local_10;
for (iVar5 = local_8; 0 < iVar5; iVar5 = iVar5 + -1) {
if (uVar2 == 0) {
local_c = (uint)*puVar6;
puVar6 = puVar6 + 1;
uVar2 = 0x8000;
}
if ((local_c & uVar2) != 0) {
if (param_4 == 0) {
*local_18 = param_2;
}
else if (param_4 == 1) {
*local_18 = *local_18 & param_2;
}
else if (param_4 == 2) {
*local_18 = *local_18 | param_2;
}
else if (param_4 == 3) {
*local_18 = *local_18 ^ param_2;
}
}
local_18 = local_18 + 1;
uVar2 = (int)uVar2 >> 1;
}
local_18 = pbVar1;
local_14 = local_14 + -iVar3;
}
}
}
return;
}
/* @004698a4 file=? name=FUN_004698a4 */
void __cdecl
FUN_004698a4(int param_1,byte param_2,byte param_3,undefined4 param_4,int param_5,int param_6,
int param_7,int param_8,int param_9,int param_10,int param_11,int param_12,int param_13)
{
byte *pbVar1;
uint uVar2;
byte bVar3;
int iVar4;
int iVar5;
int iVar6;
byte *local_1c;
ushort *local_18;
ushort *local_14;
uint local_10;
uint local_c;
int local_8;
if (*(int *)(param_1 + 0x14) != 0) {
iVar4 = *(int *)(param_1 + 0x28) - param_8;
iVar5 = *(int *)(param_9 + 0x10) + -1;
iVar6 = iVar5 - param_11;
local_8 = (param_12 - param_10) + 1;
iVar5 = (iVar6 - (iVar5 - param_13)) + 1;
local_14 = (ushort *)
(*(int *)(param_9 + 0x18) + (param_10 >> 4) * 2 +
*(int *)(param_9 + 0x14) * iVar6 * 2);
local_10 = 1 << (0xf - ((byte)param_10 & 0xf) & 0x1f);
FUN_00468e78(param_1,param_7,iVar4,(int *)&local_1c);
if (param_6 == 0x5a) {
FUN_00468e9c(param_1,iVar4,iVar4 + local_8);
for (; 0 < iVar5; iVar5 = iVar5 + -1) {
iVar4 = *(int *)(param_9 + 0x14);
pbVar1 = local_1c + 1;
local_c = (uint)*local_14;
local_18 = local_14 + 1;
uVar2 = local_10;
for (iVar6 = local_8; 0 < iVar6; iVar6 = iVar6 + -1) {
if (uVar2 == 0) {
uVar2 = 0x8000;
local_c = (uint)*local_18;
local_18 = local_18 + 1;
}
bVar3 = param_3;
if ((local_c & uVar2) != 0) {
bVar3 = param_2;
}
if (param_5 == 0) {
*local_1c = bVar3;
}
else if (param_5 == 1) {
*local_1c = *local_1c & bVar3;
}
else if (param_5 == 2) {
*local_1c = *local_1c | bVar3;
}
else if (param_5 == 3) {
*local_1c = *local_1c ^ bVar3;
}
uVar2 = (int)uVar2 >> 1;
local_1c = local_1c + *(int *)(param_1 + 0x1c);
}
local_1c = pbVar1;
local_14 = local_14 + -iVar4;
}
}
else if (param_6 == 0xb4) {
FUN_00468e9c(param_1,iVar4,iVar4 + iVar5);
for (; 0 < iVar5; iVar5 = iVar5 + -1) {
iVar4 = *(int *)(param_9 + 0x14);
pbVar1 = local_1c + *(int *)(param_1 + 0x1c);
local_c = (uint)*local_14;
local_18 = local_14 + 1;
uVar2 = local_10;
for (iVar6 = local_8; 0 < iVar6; iVar6 = iVar6 + -1) {
if (uVar2 == 0) {
uVar2 = 0x8000;
local_c = (uint)*local_18;
local_18 = local_18 + 1;
}
bVar3 = param_3;
if ((local_c & uVar2) != 0) {
bVar3 = param_2;
}
if (param_5 == 0) {
*local_1c = bVar3;
}
else if (param_5 == 1) {
*local_1c = *local_1c & bVar3;
}
else if (param_5 == 2) {
*local_1c = *local_1c | bVar3;
}
else if (param_5 == 3) {
*local_1c = *local_1c ^ bVar3;
}
local_1c = local_1c + -1;
uVar2 = (int)uVar2 >> 1;
}
local_1c = pbVar1;
local_14 = local_14 + -iVar4;
}
}
else if (param_6 == 0x10e) {
FUN_00468e9c(param_1,iVar4 - (local_8 + -1),iVar4);
for (; 0 < iVar5; iVar5 = iVar5 + -1) {
iVar4 = *(int *)(param_9 + 0x14);
pbVar1 = local_1c + -1;
local_c = (uint)*local_14;
local_18 = local_14 + 1;
uVar2 = local_10;
for (iVar6 = local_8; 0 < iVar6; iVar6 = iVar6 + -1) {
if (uVar2 == 0) {
uVar2 = 0x8000;
local_c = (uint)*local_18;
local_18 = local_18 + 1;
}
bVar3 = param_3;
if ((local_c & uVar2) != 0) {
bVar3 = param_2;
}
if (param_5 == 0) {
*local_1c = bVar3;
}
else if (param_5 == 1) {
*local_1c = *local_1c & bVar3;
}
else if (param_5 == 2) {
*local_1c = *local_1c | bVar3;
}
else if (param_5 == 3) {
*local_1c = *local_1c ^ bVar3;
}
uVar2 = (int)uVar2 >> 1;
local_1c = local_1c + -*(int *)(param_1 + 0x1c);
}
local_1c = pbVar1;
local_14 = local_14 + -iVar4;
}
}
else {
FUN_00468e9c(param_1,(iVar4 - iVar5) + 1,iVar4);
for (; 0 < iVar5; iVar5 = iVar5 + -1) {
iVar4 = *(int *)(param_9 + 0x14);
pbVar1 = local_1c + -*(int *)(param_1 + 0x1c);
local_c = (uint)*local_14;
local_18 = local_14 + 1;
uVar2 = local_10;
for (iVar6 = local_8; 0 < iVar6; iVar6 = iVar6 + -1) {
if (uVar2 == 0) {
uVar2 = 0x8000;
local_c = (uint)*local_18;
local_18 = local_18 + 1;
}
bVar3 = param_3;
if ((local_c & uVar2) != 0) {
bVar3 = param_2;
}
if (param_5 == 0) {
*local_1c = bVar3;
}
else if (param_5 == 1) {
*local_1c = *local_1c & bVar3;
}
else if (param_5 == 2) {
*local_1c = *local_1c | bVar3;
}
else if (param_5 == 3) {
*local_1c = *local_1c ^ bVar3;
}
local_1c = local_1c + 1;
uVar2 = (int)uVar2 >> 1;
}
local_1c = pbVar1;
local_14 = local_14 + -iVar4;
}
}
}
return;
}
/* @00469c3c file=? name=FUN_00469c3c */
void __cdecl
FUN_00469c3c(int param_1,undefined4 param_2,undefined4 param_3,int param_4,int param_5,int param_6,
int param_7,int param_8,int *param_9,int param_10,int param_11,int param_12,int param_13
)
{
byte *pbVar1;
byte *pbVar2;
byte bVar3;
int iVar4;
int iVar5;
int iVar6;
byte *local_10;
byte *local_c;
int local_8;
if (*(int *)(param_1 + 0x14) != 0) {
iVar4 = *(int *)(param_1 + 0x28) - param_8;
iVar5 = (param_9[1] + -1) - param_11;
local_8 = (param_12 - param_10) + 1;
iVar6 = (iVar5 - ((param_9[1] + -1) - param_13)) + 1;
local_c = (byte *)(param_10 + param_9[2] + *param_9 * iVar5);
FUN_00468e78(param_1,param_7,iVar4,(int *)&local_10);
if (param_5 == 0) {
if (param_6 == 0x5a) {
FUN_00468e9c(param_1,iVar4,iVar4 + local_8);
for (; 0 < iVar6; iVar6 = iVar6 + -1) {
pbVar1 = local_c + -*param_9;
pbVar2 = local_10 + 1;
for (iVar4 = local_8; 0 < iVar4; iVar4 = iVar4 + -1) {
bVar3 = *local_c;
local_c = local_c + 1;
if (bVar3 != 0) {
if (param_4 == 0) {
*local_10 = bVar3;
}
else if (param_4 == 1) {
*local_10 = *local_10 & bVar3;
}
else if (param_4 == 2) {
*local_10 = *local_10 | bVar3;
}
else if (param_4 == 3) {
*local_10 = *local_10 ^ bVar3;
}
}
local_10 = local_10 + *(int *)(param_1 + 0x1c);
}
local_10 = pbVar2;
local_c = pbVar1;
}
}
else if (param_6 == 0xb4) {
FUN_00468e9c(param_1,iVar4,iVar4 + iVar6);
for (; 0 < iVar6; iVar6 = iVar6 + -1) {
pbVar1 = local_c + -*param_9;
pbVar2 = local_10 + *(int *)(param_1 + 0x1c);
for (iVar4 = local_8; 0 < iVar4; iVar4 = iVar4 + -1) {
bVar3 = *local_c;
local_c = local_c + 1;
if (bVar3 != 0) {
if (param_4 == 0) {
*local_10 = bVar3;
}
else if (param_4 == 1) {
*local_10 = *local_10 & bVar3;
}
else if (param_4 == 2) {
*local_10 = *local_10 | bVar3;
}
else if (param_4 == 3) {
*local_10 = *local_10 ^ bVar3;
}
}
local_10 = local_10 + -1;
}
local_10 = pbVar2;
local_c = pbVar1;
}
}
else if (param_6 == 0x10e) {
FUN_00468e9c(param_1,iVar4 - (local_8 + -1),iVar4);
for (; 0 < iVar6; iVar6 = iVar6 + -1) {
pbVar1 = local_c + -*param_9;
pbVar2 = local_10 + -1;
for (iVar4 = local_8; 0 < iVar4; iVar4 = iVar4 + -1) {
bVar3 = *local_c;
local_c = local_c + 1;
if (bVar3 != 0) {
if (param_4 == 0) {
*local_10 = bVar3;
}
else if (param_4 == 1) {
*local_10 = *local_10 & bVar3;
}
else if (param_4 == 2) {
*local_10 = *local_10 | bVar3;
}
else if (param_4 == 3) {
*local_10 = *local_10 ^ bVar3;
}
}
local_10 = local_10 + -*(int *)(param_1 + 0x1c);
}
local_10 = pbVar2;
local_c = pbVar1;
}
}
else {
FUN_00468e9c(param_1,(iVar4 - iVar6) + 1,iVar4);
for (; 0 < iVar6; iVar6 = iVar6 + -1) {
pbVar1 = local_c + -*param_9;
pbVar2 = local_10 + -*(int *)(param_1 + 0x1c);
for (iVar4 = local_8; 0 < iVar4; iVar4 = iVar4 + -1) {
bVar3 = *local_c;
local_c = local_c + 1;
if (bVar3 != 0) {
if (param_4 == 0) {
*local_10 = bVar3;
}
else if (param_4 == 1) {
*local_10 = *local_10 & bVar3;
}
else if (param_4 == 2) {
*local_10 = *local_10 | bVar3;
}
else if (param_4 == 3) {
*local_10 = *local_10 ^ bVar3;
}
}
local_10 = local_10 + 1;
}
local_10 = pbVar2;
local_c = pbVar1;
}
}
}
else if (param_6 == 0x5a) {
FUN_00468e9c(param_1,iVar4,iVar4 + local_8);
for (; 0 < iVar6; iVar6 = iVar6 + -1) {
pbVar1 = local_c + -*param_9;
pbVar2 = local_10 + 1;
for (iVar4 = local_8; 0 < iVar4; iVar4 = iVar4 + -1) {
bVar3 = *local_c;
local_c = local_c + 1;
if (param_4 == 0) {
*local_10 = bVar3;
}
else if (param_4 == 1) {
*local_10 = *local_10 & bVar3;
}
else if (param_4 == 2) {
*local_10 = *local_10 | bVar3;
}
else if (param_4 == 3) {
*local_10 = *local_10 ^ bVar3;
}
local_10 = local_10 + *(int *)(param_1 + 0x1c);
}
local_10 = pbVar2;
local_c = pbVar1;
}
}
else if (param_6 == 0xb4) {
FUN_00468e9c(param_1,iVar4,iVar4 + iVar6);
for (; 0 < iVar6; iVar6 = iVar6 + -1) {
pbVar1 = local_c + -*param_9;
pbVar2 = local_10 + *(int *)(param_1 + 0x1c);
for (iVar4 = local_8; 0 < iVar4; iVar4 = iVar4 + -1) {
bVar3 = *local_c;
local_c = local_c + 1;
if (param_4 == 0) {
*local_10 = bVar3;
}
else if (param_4 == 1) {
*local_10 = *local_10 & bVar3;
}
else if (param_4 == 2) {
*local_10 = *local_10 | bVar3;
}
else if (param_4 == 3) {
*local_10 = *local_10 ^ bVar3;
}
local_10 = local_10 + -1;
}
local_10 = pbVar2;
local_c = pbVar1;
}
}
else if (param_6 == 0x10e) {
FUN_00468e9c(param_1,iVar4 - (local_8 + -1),iVar4);
for (; 0 < iVar6; iVar6 = iVar6 + -1) {
pbVar1 = local_c + -*param_9;
pbVar2 = local_10 + -1;
for (iVar4 = local_8; 0 < iVar4; iVar4 = iVar4 + -1) {
bVar3 = *local_c;
local_c = local_c + 1;
if (param_4 == 0) {
*local_10 = bVar3;
}
else if (param_4 == 1) {
*local_10 = *local_10 & bVar3;
}
else if (param_4 == 2) {
*local_10 = *local_10 | bVar3;
}
else if (param_4 == 3) {
*local_10 = *local_10 ^ bVar3;
}
local_10 = local_10 + -*(int *)(param_1 + 0x1c);
}
local_10 = pbVar2;
local_c = pbVar1;
}
}
else {
FUN_00468e9c(param_1,(iVar4 - iVar6) + 1,iVar4);
for (; 0 < iVar6; iVar6 = iVar6 + -1) {
pbVar1 = local_c + -*param_9;
pbVar2 = local_10 + -*(int *)(param_1 + 0x1c);
for (iVar4 = local_8; 0 < iVar4; iVar4 = iVar4 + -1) {
bVar3 = *local_c;
local_c = local_c + 1;
if (param_4 == 0) {
*local_10 = bVar3;
}
else if (param_4 == 1) {
*local_10 = *local_10 & bVar3;
}
else if (param_4 == 2) {
*local_10 = *local_10 | bVar3;
}
else if (param_4 == 3) {
*local_10 = *local_10 ^ bVar3;
}
local_10 = local_10 + 1;
}
local_10 = pbVar2;
local_c = pbVar1;
}
}
}
return;
}
/* @0046a0e4 file=? name=FUN_0046a0e4 */
void __cdecl
FUN_0046a0e4(int param_1,byte param_2,undefined4 param_3,int param_4,int param_5,int param_6,
int param_7,int *param_8,int param_9,int param_10,int param_11,int param_12)
{
char *pcVar1;
byte *pbVar2;
char cVar3;
int iVar4;
int iVar5;
int iVar6;
byte *local_10;
char *local_c;
int local_8;
if (*(int *)(param_1 + 0x14) != 0) {
iVar4 = *(int *)(param_1 + 0x28) - param_7;
iVar5 = (param_8[1] + -1) - param_10;
local_8 = (param_11 - param_9) + 1;
iVar6 = (iVar5 - ((param_8[1] + -1) - param_12)) + 1;
local_c = (char *)(param_8[2] + param_9 + *param_8 * iVar5);
FUN_00468e78(param_1,param_6,iVar4,(int *)&local_10);
if (param_5 == 0x5a) {
FUN_00468e9c(param_1,iVar4,iVar4 + local_8);
for (; 0 < iVar6; iVar6 = iVar6 + -1) {
pcVar1 = local_c + -*param_8;
pbVar2 = local_10 + 1;
for (iVar4 = local_8; 0 < iVar4; iVar4 = iVar4 + -1) {
cVar3 = *local_c;
local_c = local_c + 1;
if (cVar3 != '\0') {
if (param_4 == 0) {
*local_10 = param_2;
}
else if (param_4 == 1) {
*local_10 = *local_10 & param_2;
}
else if (param_4 == 2) {
*local_10 = *local_10 | param_2;
}
else if (param_4 == 3) {
*local_10 = *local_10 ^ param_2;
}
}
local_10 = local_10 + *(int *)(param_1 + 0x1c);
}
local_10 = pbVar2;
local_c = pcVar1;
}
}
else if (param_5 == 0xb4) {
FUN_00468e9c(param_1,iVar4,iVar4 + iVar6);
for (; 0 < iVar6; iVar6 = iVar6 + -1) {
pcVar1 = local_c + -*param_8;
pbVar2 = local_10 + *(int *)(param_1 + 0x1c);
for (iVar4 = local_8; 0 < iVar4; iVar4 = iVar4 + -1) {
cVar3 = *local_c;
local_c = local_c + 1;
if (cVar3 != '\0') {
if (param_4 == 0) {
*local_10 = param_2;
}
else if (param_4 == 1) {
*local_10 = *local_10 & param_2;
}
else if (param_4 == 2) {
*local_10 = *local_10 | param_2;
}
else if (param_4 == 3) {
*local_10 = *local_10 ^ param_2;
}
}
local_10 = local_10 + -1;
}
local_10 = pbVar2;
local_c = pcVar1;
}
}
else if (param_5 == 0x10e) {
FUN_00468e9c(param_1,iVar4 - local_8,iVar4);
for (; 0 < iVar6; iVar6 = iVar6 + -1) {
pcVar1 = local_c + -*param_8;
pbVar2 = local_10 + -1;
for (iVar4 = local_8; 0 < iVar4; iVar4 = iVar4 + -1) {
cVar3 = *local_c;
local_c = local_c + 1;
if (cVar3 != '\0') {
if (param_4 == 0) {
*local_10 = param_2;
}
else if (param_4 == 1) {
*local_10 = *local_10 & param_2;
}
else if (param_4 == 2) {
*local_10 = *local_10 | param_2;
}
else if (param_4 == 3) {
*local_10 = *local_10 ^ param_2;
}
}
local_10 = local_10 + -*(int *)(param_1 + 0x1c);
}
local_10 = pbVar2;
local_c = pcVar1;
}
}
else {
FUN_00468e9c(param_1,(iVar4 - iVar6) + 1,iVar4);
for (; 0 < iVar6; iVar6 = iVar6 + -1) {
pcVar1 = local_c + -*param_8;
pbVar2 = local_10 + -*(int *)(param_1 + 0x1c);
for (iVar4 = local_8; 0 < iVar4; iVar4 = iVar4 + -1) {
cVar3 = *local_c;
local_c = local_c + 1;
if (cVar3 != '\0') {
if (param_4 == 0) {
*local_10 = param_2;
}
else if (param_4 == 1) {
*local_10 = *local_10 & param_2;
}
else if (param_4 == 2) {
*local_10 = *local_10 | param_2;
}
else if (param_4 == 3) {
*local_10 = *local_10 ^ param_2;
}
}
local_10 = local_10 + 1;
}
local_10 = pbVar2;
local_c = pcVar1;
}
}
}
return;
}
/* @0046a3a8 file=? name=FUN_0046a3a8 */
undefined4 * __cdecl
FUN_0046a3a8(undefined4 *param_1,undefined4 *param_2,char *param_3,undefined4 param_4)
{
FUN_0044a2d0(param_1,param_2,param_3);
*param_1 = &PTR_FUN_004f4ad0;
param_1[10] = param_4;
param_1[0xb] = param_1[3] - param_1[1];
param_1[0xc] = param_1[4] - param_1[2];
if (((param_1[10] == 0x5a) || (param_1[10] == 0x10e)) && (param_2 != (undefined4 *)0x0)) {
param_1[1] = param_2[2];
param_1[2] = param_2[1];
param_1[3] = param_2[4];
param_1[4] = param_2[3];
}
return param_1;
}
/* @0046a418 file=? name=FUN_0046a418 */
void __cdecl FUN_0046a418(int *param_1,byte param_2)
{
if (param_1 != (int *)0x0) {
*param_1 = (int)&PTR_FUN_004f4ad0;
FUN_0044a348(param_1,0);
if ((param_2 & 1) != 0) {
FUN_004022d0(param_1);
}
}
return;
}
/* @0046a444 file=? name=FUN_0046a444 */
undefined4 FUN_0046a444(void)
{
return 1;
}
/* @0046a450 file=? name=FUN_0046a450 */
void __cdecl FUN_0046a450(int param_1,char *param_2)
{
char cVar1;
int *piVar2;
uint uVar3;
uint uVar4;
char *pcVar5;
char *pcVar6;
uint *puVar7;
char local_54 [80];
FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s_L4BytePort__004f4a7b,(char *)0x0);
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_54;
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_54,&DAT_004f4a88);
uVar3 = *(uint *)(param_1 + 0x28);
FUN_004dbb24(&DAT_00524e20,local_54,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s_baseRotation___004f4a8c,(char *)0x0);
piVar2 = FUN_004db78c(&DAT_00524e20,uVar3);
FUN_004dbb24(piVar2,&DAT_004f4a9b,(char *)0x0);
uVar3 = *(uint *)(param_1 + 0x2c);
FUN_004dbb24(&DAT_00524e20,local_54,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s_maximumX___004f4a9d,(char *)0x0);
piVar2 = FUN_004db78c(&DAT_00524e20,uVar3);
FUN_004dbb24(piVar2,&DAT_004f4aac,(char *)0x0);
uVar3 = *(uint *)(param_1 + 0x30);
FUN_004dbb24(&DAT_00524e20,local_54,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s_maximumY___004f4aae,(char *)0x0);
piVar2 = FUN_004db78c(&DAT_00524e20,uVar3);
FUN_004dbb24(piVar2,&DAT_004f4abd,(char *)0x0);
puVar7 = (uint *)(param_1 + 4);
FUN_004dbb24(&DAT_00524e20,local_54,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s_bounds___004f4abf,(char *)0x0);
piVar2 = (int *)FUN_00407d78(&DAT_00524e20,puVar7);
FUN_004dbb24(piVar2,&DAT_004f4ace,(char *)0x0);
FUN_004d9c70(&DAT_00524e20);
FUN_0044a374(param_1,local_54);
return;
}
/* @0046a604 file=? name=FUN_0046a604 */
void __cdecl FUN_0046a604(int param_1,undefined4 param_2,undefined4 param_3,int param_4,int param_5)
{
int local_c;
int local_8;
if (*(int *)(param_1 + 0x14) != 0) {
FUN_0046aa18(param_1,&local_8,&local_c,param_4,param_5);
(**(code **)(**(int **)(param_1 + 0x14) + 0x14))
(*(int **)(param_1 + 0x14),param_2,0,param_3,local_8 + *(int *)(param_1 + 4),
local_c + *(int *)(param_1 + 8));
}
return;
}
/* @0046a65c file=? name=FUN_0046a65c */
void __cdecl
FUN_0046a65c(int param_1,undefined4 param_2,undefined4 param_3,int param_4,int param_5,int param_6,
int param_7,undefined4 param_8)
{
int local_14;
int local_10;
int local_c;
int local_8;
if (*(int *)(param_1 + 0x14) != 0) {
FUN_0046aa18(param_1,&local_8,&local_c,param_4,param_5);
FUN_0046aa18(param_1,&local_10,&local_14,param_6,param_7);
(**(code **)(**(int **)(param_1 + 0x14) + 0x18))
(*(int **)(param_1 + 0x14),param_2,0,param_3,local_8 + *(int *)(param_1 + 4),
local_c + *(int *)(param_1 + 8),local_10 + *(int *)(param_1 + 4),
local_14 + *(int *)(param_1 + 8),param_8);
}
return;
}
/* @0046a6dc file=? name=FUN_0046a6dc */
void __cdecl
FUN_0046a6dc(int param_1,undefined4 param_2,undefined4 param_3,int param_4,int param_5,int param_6,
int param_7)
{
int local_14;
int local_10;
int local_c;
int local_8;
if (*(int *)(param_1 + 0x14) != 0) {
FUN_0046aa18(param_1,&local_8,&local_c,param_4,param_5);
FUN_0046aa18(param_1,&local_10,&local_14,param_6,param_7);
(**(code **)(**(int **)(param_1 + 0x14) + 0x1c))
(*(int **)(param_1 + 0x14),param_2,0,param_3,local_8 + *(int *)(param_1 + 4),
local_c + *(int *)(param_1 + 8),local_10 + *(int *)(param_1 + 4),
local_14 + *(int *)(param_1 + 8));
}
return;
}
/* @0046a758 file=? name=FUN_0046a758 */
void FUN_0046a758(void)
{
return;
}
/* @0046a760 file=? name=FUN_0046a760 */
void __cdecl
FUN_0046a760(int param_1,undefined4 param_2,undefined4 param_3,int param_4,int param_5,int param_6,
int param_7,undefined4 param_8,undefined4 param_9,undefined4 param_10,
undefined4 param_11)
{
int iVar1;
int local_c;
int local_8;
if (((*(int *)(param_1 + 0x14) != 0) && (param_7 != 0)) && (*(int *)(param_7 + 0x18) != 0)) {
FUN_0046aa18(param_1,&local_8,&local_c,param_5,param_6);
for (iVar1 = param_4 + *(int *)(param_1 + 0x28); iVar1 < 0; iVar1 = iVar1 + 0x168) {
}
for (; 0x167 < iVar1; iVar1 = iVar1 + -0x168) {
}
(**(code **)(**(int **)(param_1 + 0x14) + 0x24))
(*(int **)(param_1 + 0x14),param_2,0,param_3,iVar1,local_8 + *(int *)(param_1 + 4),
local_c + *(int *)(param_1 + 8),param_7,param_8,param_9,param_10,param_11);
}
return;
}
/* @0046a80c file=? name=FUN_0046a80c */
void __cdecl
FUN_0046a80c(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,int param_5,
int param_6,int param_7,int param_8,undefined4 param_9,undefined4 param_10,
undefined4 param_11,undefined4 param_12)
{
int iVar1;
int local_c;
int local_8;
if (((*(int *)(param_1 + 0x14) != 0) && (param_8 != 0)) && (*(int *)(param_8 + 0x18) != 0)) {
FUN_0046aa18(param_1,&local_8,&local_c,param_6,param_7);
for (iVar1 = param_5 + *(int *)(param_1 + 0x28); iVar1 < 0; iVar1 = iVar1 + 0x168) {
}
for (; 0x167 < iVar1; iVar1 = iVar1 + -0x168) {
}
(**(code **)(**(int **)(param_1 + 0x14) + 0x28))
(*(int **)(param_1 + 0x14),param_2,param_3,0,param_4,iVar1,
local_8 + *(int *)(param_1 + 4),local_c + *(int *)(param_1 + 8),param_8,param_9,
param_10,param_11,param_12);
}
return;
}
/* @0046a8bc file=? name=FUN_0046a8bc */
void __cdecl
FUN_0046a8bc(int param_1,undefined4 param_2,undefined4 param_3,int param_4,int param_5,int param_6,
int param_7,undefined4 param_8,undefined4 param_9,undefined4 param_10,
undefined4 param_11)
{
int iVar1;
int local_c;
int local_8;
if (((*(int *)(param_1 + 0x14) != 0) && (param_7 != 0)) && (*(int *)(param_7 + 8) != 0)) {
FUN_0046aa18(param_1,&local_8,&local_c,param_5,param_6);
for (iVar1 = param_4 + *(int *)(param_1 + 0x28); iVar1 < 0; iVar1 = iVar1 + 0x168) {
}
for (; 0x167 < iVar1; iVar1 = iVar1 + -0x168) {
}
(**(code **)(**(int **)(param_1 + 0x14) + 0x2c))
(*(int **)(param_1 + 0x14),0,0,param_2,param_3,iVar1,local_8 + *(int *)(param_1 + 4),
local_c + *(int *)(param_1 + 8),param_7,param_8,param_9,param_10,param_11);
}
return;
}
/* @0046a96c file=? name=FUN_0046a96c */
void __cdecl
FUN_0046a96c(int param_1,undefined4 param_2,undefined4 param_3,int param_4,int param_5,int param_6,
int param_7,undefined4 param_8,undefined4 param_9,undefined4 param_10,
undefined4 param_11)
{
int iVar1;
int local_c;
int local_8;
if (((*(int *)(param_1 + 0x14) != 0) && (param_7 != 0)) && (*(int *)(param_7 + 8) != 0)) {
FUN_0046aa18(param_1,&local_8,&local_c,param_5,param_6);
for (iVar1 = param_4 + *(int *)(param_1 + 0x28); iVar1 < 0; iVar1 = iVar1 + 0x168) {
}
for (; 0x167 < iVar1; iVar1 = iVar1 + -0x168) {
}
(**(code **)(**(int **)(param_1 + 0x14) + 0x30))
(*(int **)(param_1 + 0x14),param_2,0,param_3,iVar1,local_8 + *(int *)(param_1 + 4),
local_c + *(int *)(param_1 + 8),param_7,param_8,param_9,param_10,param_11);
}
return;
}
/* @0046aa18 file=? name=FUN_0046aa18 */
void __cdecl FUN_0046aa18(int param_1,int *param_2,int *param_3,int param_4,int param_5)
{
int iVar1;
iVar1 = *(int *)(param_1 + 0x28);
if (iVar1 == 0x5a) {
*param_2 = param_5;
*param_3 = *(int *)(param_1 + 0x30) - param_4;
}
else if (iVar1 == 0xb4) {
*param_2 = *(int *)(param_1 + 0x2c) - param_4;
*param_3 = *(int *)(param_1 + 0x30) - param_5;
}
else if (iVar1 == 0x10e) {
*param_2 = *(int *)(param_1 + 0x2c) - param_5;
*param_3 = param_4;
}
else {
*param_2 = param_4;
*param_3 = param_5;
}
return;
}
/* @0046aa78 file=? name=FUN_0046aa78 */
void __cdecl FUN_0046aa78(undefined4 *param_1,undefined4 param_2,undefined4 param_3)
{
param_1[2] = param_2;
param_1[1] = param_3;
*param_1 = 0;
return;
}
/* @0046aa90 file=? name=FUN_0046aa90 */
void __cdecl FUN_0046aa90(uint *param_1)
{
*param_1 = *param_1 & ~param_1[2];
return;
}
/* @0046aaa0 file=? name=FUN_0046aaa0 */
void __cdecl FUN_0046aaa0(uint *param_1)
{
*param_1 = *param_1 & param_1[2];
return;
}
/* @0046aab0 file=? name=FUN_0046aab0 */
undefined4 __cdecl FUN_0046aab0(uint *param_1)
{
uint uVar1;
uint uVar2;
uVar2 = param_1[1];
uVar1 = 1;
while( true ) {
if ((int)uVar2 < 1) {
return 0;
}
if (((param_1[2] & uVar1) != 0) && (*param_1 = *param_1 ^ uVar1, (*param_1 & uVar1) != 0))
break;
uVar2 = uVar2 - 1;
uVar1 = uVar1 * 2;
}
return 1;
}
/* @0046aae0 file=? name=FUN_0046aae0 */
undefined4 __cdecl FUN_0046aae0(uint *param_1)
{
uint uVar1;
uint uVar2;
uVar1 = 1;
uVar2 = param_1[1];
while( true ) {
if ((int)uVar2 < 1) {
return 0;
}
if (((uVar1 & ~param_1[2]) != 0) && (*param_1 = *param_1 ^ uVar1, (*param_1 & uVar1) != 0))
break;
uVar2 = uVar2 - 1;
uVar1 = uVar1 * 2;
}
return 1;
}
/* @0046ab18 file=? name=FUN_0046ab18 */
int __cdecl FUN_0046ab18(int param_1)
{
uint uVar1;
int iVar2;
iVar2 = 0;
for (uVar1 = *(uint *)(param_1 + 8); uVar1 != 0; uVar1 = uVar1 & uVar1 - 1) {
iVar2 = iVar2 + 1;
}
return iVar2;
}
/* @0046ab38 file=? name=FUN_0046ab38 */
int __cdecl FUN_0046ab38(int param_1)
{
int iVar1;
iVar1 = FUN_0046ab18(param_1);
return *(int *)(param_1 + 4) - iVar1;
}
/* @0046ab50 file=? name=FUN_0046ab50 */
undefined4 * __cdecl FUN_0046ab50(undefined4 *param_1,int param_2,int param_3)
{
undefined4 uVar1;
undefined4 *puVar2;
int iVar3;
FUN_0044a078(param_1,param_2,param_3);
*param_1 = &PTR_FUN_004f4d70;
FUN_00449ed0(param_1 + 0xb,param_2,param_3);
param_1[8] = param_3;
param_1[6] = param_2;
param_1[7] = param_2 >> 5;
iVar3 = param_1[8] * (param_2 >> 5);
param_1[10] = param_1[8] + -1;
param_1[9] = param_1[6] + -1;
uVar1 = FUN_004022b0(param_1[8]);
param_1[0xe] = uVar1;
uVar1 = FUN_004022b0(iVar3 * 4);
param_1[0xf] = uVar1;
if ((param_1[0xe] == 0) || (param_1[0xf] == 0)) {
param_1[5] = 0;
}
else {
param_1[5] = 1;
FUN_004d4988((undefined4 *)param_1[0xe],0,param_1[8]);
puVar2 = (undefined4 *)param_1[0xf];
for (; 0 < iVar3; iVar3 = iVar3 + -1) {
*puVar2 = 0;
puVar2 = puVar2 + 1;
}
}
return param_1;
}
/* @0046ac08 file=? name=FUN_0046ac08 */
void __cdecl FUN_0046ac08(int *param_1,byte param_2)
{
if (param_1 != (int *)0x0) {
*param_1 = (int)&PTR_FUN_004f4d70;
if ((int *)param_1[0xe] != (int *)0x0) {
FUN_004022d0((int *)param_1[0xe]);
param_1[0xe] = 0;
}
if ((int *)param_1[0xf] != (int *)0x0) {
FUN_004022d0((int *)param_1[0xf]);
param_1[0xf] = 0;
}
FUN_00449f30(param_1 + 0xb,2);
FUN_0044a0ac(param_1,0);
if ((param_2 & 1) != 0) {
FUN_004022d0(param_1);
}
}
return;
}
/* @0046ac68 file=? name=FUN_0046ac68 */
undefined4 FUN_0046ac68(void)
{
return 1;
}
/* @0046ac74 file=? name=FUN_0046ac74 */
void __cdecl FUN_0046ac74(int param_1,char *param_2)
{
char cVar1;
int *piVar2;
uint uVar3;
uint uVar4;
char *pcVar5;
char *pcVar6;
undefined8 uVar7;
char local_54 [80];
FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s_Video16BitBuffered__004f4b3c,(char *)0x0);
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_54;
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_54,&DAT_004f4b51);
uVar3 = *(uint *)(param_1 + 0x18);
FUN_004dbb24(&DAT_00524e20,local_54,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s_width___004f4b55,(char *)0x0);
piVar2 = FUN_004db78c(&DAT_00524e20,uVar3);
FUN_004dbb24(piVar2,&DAT_004f4b62,(char *)0x0);
uVar3 = *(uint *)(param_1 + 0x20);
FUN_004dbb24(&DAT_00524e20,local_54,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s_height___004f4b64,(char *)0x0);
piVar2 = FUN_004db78c(&DAT_00524e20,uVar3);
FUN_004dbb24(piVar2,&DAT_004f4b71,(char *)0x0);
uVar3 = *(uint *)(param_1 + 0x24);
FUN_004dbb24(&DAT_00524e20,local_54,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s_maximumX___004f4b73,(char *)0x0);
piVar2 = FUN_004db78c(&DAT_00524e20,uVar3);
FUN_004dbb24(piVar2,&DAT_004f4b80,(char *)0x0);
uVar3 = *(uint *)(param_1 + 0x28);
FUN_004dbb24(&DAT_00524e20,local_54,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s_maximumY___004f4b82,(char *)0x0);
piVar2 = FUN_004db78c(&DAT_00524e20,uVar3);
FUN_004dbb24(piVar2,&DAT_004f4b8f,(char *)0x0);
pcVar5 = *(char **)(param_1 + 0x38);
FUN_004dbb24(&DAT_00524e20,local_54,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s_changedLine__004f4b91,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,pcVar5,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,&DAT_004f4b9e,(char *)0x0);
uVar3 = *(uint *)(param_1 + 0x3c);
FUN_004dbb24(&DAT_00524e20,local_54,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s_changedBit___004f4ba0,(char *)0x0);
uVar7 = FUN_004dbd4c(&DAT_00524e20,uVar3);
FUN_004dbb24((int *)uVar7,&DAT_004f4bad,(char *)0x0);
FUN_00449f74((uint *)(param_1 + 0x2c),local_54);
FUN_0044a0cc(param_1,local_54);
return;
}
/* @0046aec4 file=? name=FUN_0046aec4 */
void __cdecl
FUN_0046aec4(int param_1,int param_2,int param_3,int *param_4,int *param_5,int *param_6)
{
*param_4 = param_2 * 2 + *(int *)(param_1 + 0x34) + param_3 * *(int *)(param_1 + 0x18) * 2;
*param_5 = (param_2 >> 5) * 4 + *(int *)(param_1 + 0x3c) + param_3 * *(int *)(param_1 + 0x1c) * 4;
*param_6 = 1 << (0x1f - ((byte)param_2 & 0x1f) & 0x1f);
return;
}
/* @0046af20 file=? name=FUN_0046af20 */
void __cdecl FUN_0046af20(int param_1,int param_2,int param_3)
{
int iVar1;
iVar1 = param_2;
if (param_3 < param_2) {
iVar1 = param_3;
param_3 = param_2;
}
FUN_004d4988((undefined4 *)(iVar1 + *(int *)(param_1 + 0x38)),1,(param_3 - iVar1) + 1);
return;
}
/* @0046af50 file=? name=FUN_0046af50 */
void __cdecl
FUN_0046af50(int param_1,ushort param_2,ushort param_3,int param_4,int param_5,int param_6)
{
int iVar1;
uint local_10;
uint *local_c;
ushort *local_8;
if (*(int *)(param_1 + 0x14) != 0) {
iVar1 = *(int *)(param_1 + 0x28) - param_6;
FUN_0046af20(param_1,iVar1,iVar1);
FUN_0046aec4(param_1,param_5,iVar1,(int *)&local_8,(int *)&local_c,(int *)&local_10);
if (param_4 == 0) {
*local_8 = *local_8 & ~param_3 | param_2;
}
else if (param_4 == 1) {
*local_8 = *local_8 & param_2;
}
else if (param_4 == 2) {
*local_8 = *local_8 | param_2;
}
else if (param_4 == 3) {
*local_8 = *local_8 ^ param_2;
}
*local_c = *local_c | local_10;
DAT_00522cbc = DAT_00522cbc + 1;
}
return;
}
/* @0046aff8 file=? name=FUN_0046aff8 */
void __cdecl
FUN_0046aff8(int *param_1,undefined4 param_2,undefined4 param_3,int param_4,int param_5,int param_6,
int param_7,int param_8,int param_9)
{
int iVar1;
int iVar2;
int iVar3;
bool bVar4;
uint local_18;
uint *local_14;
ushort *local_10;
int local_c;
uint local_8;
if (param_1[5] != 0) {
if ((param_7 == param_5) && (param_6 == param_8)) {
if (param_9 != 0) {
(**(code **)(*param_1 + 0x14))(param_1,param_2,param_3,param_4,param_5,param_6);
}
}
else {
iVar2 = param_1[10] - param_6;
iVar1 = param_1[10] - param_8;
FUN_0046af20((int)param_1,iVar2,iVar1);
param_3._0_2_ = ~(ushort)param_3;
iVar3 = param_7 - param_5;
bVar4 = iVar3 < 0;
if (bVar4) {
iVar3 = -iVar3;
}
local_8 = (uint)bVar4;
local_c = iVar1 - iVar2;
if (local_c < 0) {
local_8 = local_8 | 2;
local_c = -local_c;
}
if (local_c < iVar3) {
local_8 = local_8 | 4;
}
FUN_0046aec4((int)param_1,param_5,iVar2,(int *)&local_10,(int *)&local_14,(int *)&local_18);
iVar1 = 0x400;
switch(local_8) {
case 0:
iVar2 = local_c;
if (param_9 == 0) {
iVar2 = local_c + -1;
}
for (; 0 < iVar2; iVar2 = iVar2 + -1) {
if (param_4 == 0) {
*local_10 = *local_10 & (ushort)param_3 | (ushort)param_2;
}
else if (param_4 == 1) {
*local_10 = *local_10 & (ushort)param_2;
}
else if (param_4 == 2) {
*local_10 = *local_10 | (ushort)param_2;
}
else if (param_4 == 3) {
*local_10 = *local_10 ^ (ushort)param_2;
}
*local_14 = *local_14 | local_18;
DAT_00522cbc = DAT_00522cbc + 1;
local_10 = local_10 + param_1[6];
local_14 = local_14 + param_1[7];
iVar1 = iVar1 + (iVar3 << 0xb) / local_c;
if (0x800 < iVar1) {
local_10 = local_10 + 1;
local_18 = local_18 >> 1;
iVar1 = iVar1 + -0x800;
if (local_18 == 0) {
local_14 = local_14 + 1;
local_18 = 0x80000000;
}
}
}
break;
case 1:
iVar2 = local_c;
if (param_9 == 0) {
iVar2 = local_c + -1;
}
for (; 0 < iVar2; iVar2 = iVar2 + -1) {
if (param_4 == 0) {
*local_10 = *local_10 & (ushort)param_3 | (ushort)param_2;
}
else if (param_4 == 1) {
*local_10 = *local_10 & (ushort)param_2;
}
else if (param_4 == 2) {
*local_10 = *local_10 | (ushort)param_2;
}
else if (param_4 == 3) {
*local_10 = *local_10 ^ (ushort)param_2;
}
*local_14 = *local_14 | local_18;
DAT_00522cbc = DAT_00522cbc + 1;
local_10 = local_10 + param_1[6];
local_14 = local_14 + param_1[7];
iVar1 = iVar1 + (iVar3 << 0xb) / local_c;
if (0x800 < iVar1) {
local_10 = local_10 + -1;
local_18 = local_18 << 1;
iVar1 = iVar1 + -0x800;
if (local_18 == 0) {
local_14 = local_14 + -1;
local_18 = 1;
}
}
}
break;
case 2:
iVar2 = local_c;
if (param_9 == 0) {
iVar2 = local_c + -1;
}
for (; 0 < iVar2; iVar2 = iVar2 + -1) {
if (param_4 == 0) {
*local_10 = *local_10 & (ushort)param_3 | (ushort)param_2;
}
else if (param_4 == 1) {
*local_10 = *local_10 & (ushort)param_2;
}
else if (param_4 == 2) {
*local_10 = *local_10 | (ushort)param_2;
}
else if (param_4 == 3) {
*local_10 = *local_10 ^ (ushort)param_2;
}
*local_14 = *local_14 | local_18;
DAT_00522cbc = DAT_00522cbc + 1;
local_10 = local_10 + -param_1[6];
local_14 = local_14 + -param_1[7];
iVar1 = iVar1 + (iVar3 << 0xb) / local_c;
if (0x800 < iVar1) {
local_10 = local_10 + 1;
local_18 = local_18 >> 1;
iVar1 = iVar1 + -0x800;
if (local_18 == 0) {
local_14 = local_14 + 1;
local_18 = 0x80000000;
}
}
}
break;
case 3:
iVar2 = local_c;
if (param_9 == 0) {
iVar2 = local_c + -1;
}
for (; 0 < iVar2; iVar2 = iVar2 + -1) {
if (param_4 == 0) {
*local_10 = *local_10 & (ushort)param_3 | (ushort)param_2;
}
else if (param_4 == 1) {
*local_10 = *local_10 & (ushort)param_2;
}
else if (param_4 == 2) {
*local_10 = *local_10 | (ushort)param_2;
}
else if (param_4 == 3) {
*local_10 = *local_10 ^ (ushort)param_2;
}
*local_14 = *local_14 | local_18;
DAT_00522cbc = DAT_00522cbc + 1;
local_10 = local_10 + -param_1[6];
local_14 = local_14 + -param_1[7];
iVar1 = iVar1 + (iVar3 << 0xb) / local_c;
if (0x800 < iVar1) {
local_10 = local_10 + -1;
local_18 = local_18 << 1;
iVar1 = iVar1 + -0x800;
if (local_18 == 0) {
local_14 = local_14 + -1;
local_18 = 1;
}
}
}
break;
case 4:
iVar2 = iVar3;
if (param_9 == 0) {
iVar2 = iVar3 + -1;
}
for (; 0 < iVar2; iVar2 = iVar2 + -1) {
if (param_4 == 0) {
*local_10 = *local_10 & (ushort)param_3 | (ushort)param_2;
}
else if (param_4 == 1) {
*local_10 = *local_10 & (ushort)param_2;
}
else if (param_4 == 2) {
*local_10 = *local_10 | (ushort)param_2;
}
else if (param_4 == 3) {
*local_10 = *local_10 ^ (ushort)param_2;
}
*local_14 = *local_14 | local_18;
local_10 = local_10 + 1;
local_18 = local_18 >> 1;
DAT_00522cbc = DAT_00522cbc + 1;
if (local_18 == 0) {
local_14 = local_14 + 1;
local_18 = 0x80000000;
}
iVar1 = iVar1 + (local_c << 0xb) / iVar3;
if (0x800 < iVar1) {
iVar1 = iVar1 + -0x800;
local_10 = local_10 + param_1[6];
local_14 = local_14 + param_1[7];
}
}
break;
case 5:
iVar2 = iVar3;
if (param_9 == 0) {
iVar2 = iVar3 + -1;
}
for (; 0 < iVar2; iVar2 = iVar2 + -1) {
if (param_4 == 0) {
*local_10 = *local_10 & (ushort)param_3 | (ushort)param_2;
}
else if (param_4 == 1) {
*local_10 = *local_10 & (ushort)param_2;
}
else if (param_4 == 2) {
*local_10 = *local_10 | (ushort)param_2;
}
else if (param_4 == 3) {
*local_10 = *local_10 ^ (ushort)param_2;
}
*local_14 = *local_14 | local_18;
local_10 = local_10 + -1;
local_18 = local_18 << 1;
DAT_00522cbc = DAT_00522cbc + 1;
if (local_18 == 0) {
local_14 = local_14 + -1;
local_18 = 1;
}
iVar1 = iVar1 + (local_c << 0xb) / iVar3;
if (0x800 < iVar1) {
iVar1 = iVar1 + -0x800;
local_10 = local_10 + param_1[6];
local_14 = local_14 + param_1[7];
}
}
break;
case 6:
iVar2 = iVar3;
if (param_9 == 0) {
iVar2 = iVar3 + -1;
}
for (; 0 < iVar2; iVar2 = iVar2 + -1) {
if (param_4 == 0) {
*local_10 = *local_10 & (ushort)param_3 | (ushort)param_2;
}
else if (param_4 == 1) {
*local_10 = *local_10 & (ushort)param_2;
}
else if (param_4 == 2) {
*local_10 = *local_10 | (ushort)param_2;
}
else if (param_4 == 3) {
*local_10 = *local_10 ^ (ushort)param_2;
}
*local_14 = *local_14 | local_18;
local_10 = local_10 + 1;
local_18 = local_18 >> 1;
DAT_00522cbc = DAT_00522cbc + 1;
if (local_18 == 0) {
local_14 = local_14 + 1;
local_18 = 0x80000000;
}
iVar1 = iVar1 + (local_c << 0xb) / iVar3;
if (0x800 < iVar1) {
iVar1 = iVar1 + -0x800;
local_10 = local_10 + -param_1[6];
local_14 = local_14 + -param_1[7];
}
}
break;
case 7:
iVar2 = iVar3;
if (param_9 == 0) {
iVar2 = iVar3 + -1;
}
for (; 0 < iVar2; iVar2 = iVar2 + -1) {
if (param_4 == 0) {
*local_10 = *local_10 & (ushort)param_3 | (ushort)param_2;
}
else if (param_4 == 1) {
*local_10 = *local_10 & (ushort)param_2;
}
else if (param_4 == 2) {
*local_10 = *local_10 | (ushort)param_2;
}
else if (param_4 == 3) {
*local_10 = *local_10 ^ (ushort)param_2;
}
*local_14 = *local_14 | local_18;
local_10 = local_10 + -1;
local_18 = local_18 << 1;
DAT_00522cbc = DAT_00522cbc + 1;
if (local_18 == 0) {
local_14 = local_14 + -1;
local_18 = 1;
}
iVar1 = iVar1 + (local_c << 0xb) / iVar3;
if (0x800 < iVar1) {
iVar1 = iVar1 + -0x800;
local_10 = local_10 + -param_1[6];
local_14 = local_14 + -param_1[7];
}
}
}
}
}
return;
}
/* @0046b6d4 file=? name=FUN_0046b6d4 */
void __cdecl
FUN_0046b6d4(int param_1,ushort param_2,ushort param_3,int param_4,int param_5,int param_6,
int param_7,int param_8)
{
uint *puVar1;
int iVar2;
uint uVar3;
int iVar4;
int iVar5;
int iVar6;
uint local_10;
uint *local_c;
ushort *local_8;
iVar6 = param_5;
if (*(int *)(param_1 + 0x14) != 0) {
iVar2 = *(int *)(param_1 + 0x28) - param_8;
iVar4 = *(int *)(param_1 + 0x28) - param_6;
if (param_7 < param_5) {
param_5 = param_7;
param_7 = iVar6;
}
iVar6 = iVar4;
if (iVar2 < iVar4) {
iVar6 = iVar2;
iVar2 = iVar4;
}
FUN_0046af20(param_1,iVar6,iVar2);
param_3 = ~param_3;
FUN_0046aec4(param_1,param_5,iVar6,(int *)&local_8,(int *)&local_c,(int *)&local_10);
iVar6 = (iVar2 - iVar6) + 1;
iVar2 = (param_7 - param_5) + 1;
iVar4 = *(int *)(param_1 + 0x18) - iVar2;
if (param_4 == 0) {
for (; 0 < iVar6; iVar6 = iVar6 + -1) {
puVar1 = local_c + *(int *)(param_1 + 0x1c);
uVar3 = local_10;
for (iVar5 = iVar2; 0 < iVar5; iVar5 = iVar5 + -1) {
*local_8 = *local_8 & param_3 | param_2;
local_8 = local_8 + 1;
*local_c = *local_c | uVar3;
DAT_00522cbc = DAT_00522cbc + 1;
uVar3 = uVar3 >> 1;
if (uVar3 == 0) {
local_c = local_c + 1;
uVar3 = 0x80000000;
}
}
local_8 = local_8 + iVar4;
local_c = puVar1;
}
}
else if (param_4 == 1) {
for (; 0 < iVar6; iVar6 = iVar6 + -1) {
puVar1 = local_c + *(int *)(param_1 + 0x1c);
uVar3 = local_10;
for (iVar5 = iVar2; 0 < iVar5; iVar5 = iVar5 + -1) {
*local_8 = *local_8 & param_2;
local_8 = local_8 + 1;
*local_c = *local_c | uVar3;
DAT_00522cbc = DAT_00522cbc + 1;
uVar3 = uVar3 >> 1;
if (uVar3 == 0) {
local_c = local_c + 1;
uVar3 = 0x80000000;
}
}
local_8 = local_8 + iVar4;
local_c = puVar1;
}
}
else if (param_4 == 2) {
for (; 0 < iVar6; iVar6 = iVar6 + -1) {
puVar1 = local_c + *(int *)(param_1 + 0x1c);
uVar3 = local_10;
for (iVar5 = iVar2; 0 < iVar5; iVar5 = iVar5 + -1) {
*local_8 = *local_8 | param_2;
local_8 = local_8 + 1;
*local_c = *local_c | uVar3;
DAT_00522cbc = DAT_00522cbc + 1;
uVar3 = uVar3 >> 1;
if (uVar3 == 0) {
local_c = local_c + 1;
uVar3 = 0x80000000;
}
}
local_8 = local_8 + iVar4;
local_c = puVar1;
}
}
else if (param_4 == 3) {
for (; 0 < iVar6; iVar6 = iVar6 + -1) {
puVar1 = local_c + *(int *)(param_1 + 0x1c);
uVar3 = local_10;
for (iVar5 = iVar2; 0 < iVar5; iVar5 = iVar5 + -1) {
*local_8 = *local_8 ^ param_2;
local_8 = local_8 + 1;
*local_c = *local_c | uVar3;
DAT_00522cbc = DAT_00522cbc + 1;
uVar3 = uVar3 >> 1;
if (uVar3 == 0) {
local_c = local_c + 1;
uVar3 = 0x80000000;
}
}
local_8 = local_8 + iVar4;
local_c = puVar1;
}
}
}
return;
}
/* @0046b91c file=? name=FUN_0046b91c */
undefined4 __cdecl FUN_0046b91c(int param_1)
{
return *(undefined4 *)(param_1 + 0x14);
}
/* @0046b92c file=? name=FUN_0046b92c */
void __cdecl
FUN_0046b92c(int param_1,ushort param_2,ushort param_3,int param_4,int param_5,int param_6,
int param_7,int param_8,int param_9,int param_10,int param_11,int param_12)
{
ushort *puVar1;
uint *puVar2;
uint uVar3;
uint uVar4;
int iVar5;
int iVar6;
int iVar7;
uint *local_28;
uint *local_24;
uint local_20;
ushort *local_1c;
ushort *local_18;
ushort *local_14;
uint local_10;
uint local_c;
int local_8;
if (*(int *)(param_1 + 0x14) != 0) {
iVar5 = *(int *)(param_1 + 0x28) - param_7;
iVar6 = *(int *)(param_8 + 0x10) + -1;
iVar7 = iVar6 - param_10;
local_8 = (param_11 - param_9) + 1;
param_3 = ~param_3;
iVar6 = (iVar7 - (iVar6 - param_12)) + 1;
local_14 = (ushort *)
(*(int *)(param_8 + 0x18) + (param_9 >> 4) * 2 + *(int *)(param_8 + 0x14) * iVar7 * 2
);
local_10 = 1 << (0xf - ((byte)param_9 & 0xf) & 0x1f);
FUN_0046aec4(param_1,param_6,iVar5,(int *)&local_1c,(int *)&local_24,(int *)&local_20);
if (param_5 == 0x5a) {
FUN_0046af20(param_1,iVar5,iVar5 + local_8);
puVar2 = local_24;
uVar4 = local_20;
for (; 0 < iVar6; iVar6 = iVar6 + -1) {
iVar5 = *(int *)(param_8 + 0x14);
local_20 = uVar4 >> 1;
local_24 = puVar2;
if (local_20 == 0) {
local_24 = puVar2 + 1;
local_20 = 0x80000000;
}
puVar1 = local_1c + 1;
local_c = (uint)*local_14;
local_18 = local_14 + 1;
uVar3 = local_10;
for (iVar7 = local_8; 0 < iVar7; iVar7 = iVar7 + -1) {
if (uVar3 == 0) {
uVar3 = 0x8000;
local_c = (uint)*local_18;
local_18 = local_18 + 1;
}
if ((local_c & uVar3) != 0) {
if (param_4 == 0) {
*local_1c = *local_1c & param_3 | param_2;
}
else if (param_4 == 1) {
*local_1c = *local_1c & param_2;
}
else if (param_4 == 2) {
*local_1c = *local_1c | param_2;
}
else if (param_4 == 3) {
*local_1c = *local_1c ^ param_2;
}
*puVar2 = *puVar2 | uVar4;
DAT_00522cbc = DAT_00522cbc + 1;
}
uVar3 = (int)uVar3 >> 1;
puVar2 = puVar2 + *(int *)(param_1 + 0x1c);
local_1c = local_1c + *(int *)(param_1 + 0x18);
}
puVar2 = local_24;
uVar4 = local_20;
local_1c = puVar1;
local_14 = local_14 + -iVar5;
}
}
else if (param_5 == 0xb4) {
FUN_0046af20(param_1,iVar5,iVar5 + iVar6);
local_28 = local_24;
for (; 0 < iVar6; iVar6 = iVar6 + -1) {
iVar5 = *(int *)(param_8 + 0x14);
puVar2 = local_28 + *(int *)(param_1 + 0x1c);
puVar1 = local_1c + *(int *)(param_1 + 0x18);
local_c = (uint)*local_14;
local_18 = local_14 + 1;
uVar4 = local_20;
uVar3 = local_10;
for (iVar7 = local_8; 0 < iVar7; iVar7 = iVar7 + -1) {
if (uVar3 == 0) {
uVar3 = 0x8000;
local_c = (uint)*local_18;
local_18 = local_18 + 1;
}
if ((local_c & uVar3) != 0) {
if (param_4 == 0) {
*local_1c = *local_1c & param_3 | param_2;
}
else if (param_4 == 1) {
*local_1c = *local_1c & param_2;
}
else if (param_4 == 2) {
*local_1c = *local_1c | param_2;
}
else if (param_4 == 3) {
*local_1c = *local_1c ^ param_2;
}
*local_28 = *local_28 | uVar4;
DAT_00522cbc = DAT_00522cbc + 1;
}
uVar4 = uVar4 * 2;
if (uVar4 == 0) {
local_28 = local_28 + -1;
uVar4 = 1;
}
local_1c = local_1c + -1;
uVar3 = (int)uVar3 >> 1;
}
local_28 = puVar2;
local_1c = puVar1;
local_14 = local_14 + -iVar5;
}
}
else if (param_5 == 0x10e) {
if (-1 < param_6 - iVar6) {
FUN_0046af20(param_1,iVar5 - (local_8 + -1),iVar5);
puVar2 = local_24;
uVar4 = local_20;
for (; 0 < iVar6; iVar6 = iVar6 + -1) {
iVar5 = *(int *)(param_8 + 0x14);
local_20 = uVar4 << 1;
local_24 = puVar2;
if (local_20 == 0) {
local_24 = puVar2 + -1;
local_20 = 1;
}
puVar1 = local_1c + -1;
local_c = (uint)*local_14;
local_18 = local_14 + 1;
uVar3 = local_10;
for (iVar7 = local_8; 0 < iVar7; iVar7 = iVar7 + -1) {
if (uVar3 == 0) {
uVar3 = 0x8000;
local_c = (uint)*local_18;
local_18 = local_18 + 1;
}
if ((local_c & uVar3) != 0) {
if (param_4 == 0) {
*local_1c = *local_1c & param_3 | param_2;
}
else if (param_4 == 1) {
*local_1c = *local_1c & param_2;
}
else if (param_4 == 2) {
*local_1c = *local_1c | param_2;
}
else if (param_4 == 3) {
*local_1c = *local_1c ^ param_2;
}
*puVar2 = *puVar2 | uVar4;
DAT_00522cbc = DAT_00522cbc + 1;
}
uVar3 = (int)uVar3 >> 1;
puVar2 = puVar2 + -*(int *)(param_1 + 0x1c);
local_1c = local_1c + -*(int *)(param_1 + 0x18);
}
puVar2 = local_24;
uVar4 = local_20;
local_1c = puVar1;
local_14 = local_14 + -iVar5;
}
}
}
else {
FUN_0046af20(param_1,(iVar5 - iVar6) + 1,iVar5);
local_28 = local_24;
for (; 0 < iVar6; iVar6 = iVar6 + -1) {
iVar5 = *(int *)(param_8 + 0x14);
puVar2 = local_28 + -*(int *)(param_1 + 0x1c);
puVar1 = local_1c + -*(int *)(param_1 + 0x18);
local_c = (uint)*local_14;
local_18 = local_14 + 1;
uVar4 = local_20;
uVar3 = local_10;
for (iVar7 = local_8; 0 < iVar7; iVar7 = iVar7 + -1) {
if (uVar3 == 0) {
uVar3 = 0x8000;
local_c = (uint)*local_18;
local_18 = local_18 + 1;
}
if ((local_c & uVar3) != 0) {
if (param_4 == 0) {
*local_1c = *local_1c & param_3 | param_2;
}
else if (param_4 == 1) {
*local_1c = *local_1c & param_2;
}
else if (param_4 == 2) {
*local_1c = *local_1c | param_2;
}
else if (param_4 == 3) {
*local_1c = *local_1c ^ param_2;
}
*local_28 = *local_28 | uVar4;
DAT_00522cbc = DAT_00522cbc + 1;
}
uVar4 = uVar4 >> 1;
if (uVar4 == 0) {
local_28 = local_28 + 1;
uVar4 = 0x80000000;
}
local_1c = local_1c + 1;
uVar3 = (int)uVar3 >> 1;
}
local_28 = puVar2;
local_1c = puVar1;
local_14 = local_14 + -iVar5;
}
}
}
return;
}
/* @0046bdfc file=? name=FUN_0046bdfc */
void __cdecl
FUN_0046bdfc(int param_1,ushort param_2,ushort param_3,ushort param_4,int param_5,int param_6,
int param_7,int param_8,int param_9,int param_10,int param_11,int param_12,int param_13)
{
ushort *puVar1;
uint *puVar2;
uint uVar3;
ushort uVar4;
uint uVar5;
int iVar6;
int iVar7;
int iVar8;
uint *local_2c;
uint *local_28;
uint local_24 [2];
ushort *local_1c;
ushort *local_18;
ushort *local_14;
uint local_10;
uint local_c;
int local_8;
if (*(int *)(param_1 + 0x14) != 0) {
iVar6 = *(int *)(param_1 + 0x28) - param_8;
iVar7 = *(int *)(param_9 + 0x10) + -1;
iVar8 = iVar7 - param_11;
local_8 = (param_12 - param_10) + 1;
param_4 = ~param_4;
iVar7 = (iVar8 - (iVar7 - param_13)) + 1;
local_14 = (ushort *)
(*(int *)(param_9 + 0x18) + (param_10 >> 4) * 2 +
*(int *)(param_9 + 0x14) * iVar8 * 2);
local_10 = 1 << (0xf - ((byte)param_10 & 0xf) & 0x1f);
FUN_0046aec4(param_1,param_7,iVar6,(int *)&local_1c,(int *)&local_28,(int *)local_24);
if (param_6 == 0x5a) {
FUN_0046af20(param_1,iVar6,iVar6 + local_8);
puVar2 = local_28;
uVar5 = local_24[0];
for (; 0 < iVar7; iVar7 = iVar7 + -1) {
iVar6 = *(int *)(param_9 + 0x14);
local_24[0] = uVar5 >> 1;
local_28 = puVar2;
if (local_24[0] == 0) {
local_28 = puVar2 + 1;
local_24[0] = 0x80000000;
}
puVar1 = local_1c + 1;
local_c = (uint)*local_14;
local_18 = local_14 + 1;
uVar3 = local_10;
for (iVar8 = local_8; 0 < iVar8; iVar8 = iVar8 + -1) {
if (uVar3 == 0) {
uVar3 = 0x8000;
local_c = (uint)*local_18;
local_18 = local_18 + 1;
}
uVar4 = param_3;
if ((local_c & uVar3) != 0) {
uVar4 = param_2;
}
if (param_5 == 0) {
*local_1c = uVar4 | *local_1c & param_4;
}
else if (param_5 == 1) {
*local_1c = *local_1c & uVar4;
}
else if (param_5 == 2) {
*local_1c = *local_1c | uVar4;
}
else if (param_5 == 3) {
*local_1c = *local_1c ^ uVar4;
}
uVar3 = (int)uVar3 >> 1;
*puVar2 = *puVar2 | uVar5;
DAT_00522cbc = DAT_00522cbc + 1;
puVar2 = puVar2 + *(int *)(param_1 + 0x1c);
local_1c = local_1c + *(int *)(param_1 + 0x18);
}
puVar2 = local_28;
uVar5 = local_24[0];
local_1c = puVar1;
local_14 = local_14 + -iVar6;
}
}
else if (param_6 == 0xb4) {
FUN_0046af20(param_1,iVar6,iVar6 + iVar7);
local_2c = local_28;
for (; 0 < iVar7; iVar7 = iVar7 + -1) {
iVar6 = *(int *)(param_9 + 0x14);
puVar2 = local_2c + *(int *)(param_1 + 0x1c);
puVar1 = local_1c + *(int *)(param_1 + 0x18);
local_c = (uint)*local_14;
local_18 = local_14 + 1;
uVar5 = local_24[0];
uVar3 = local_10;
for (iVar8 = local_8; 0 < iVar8; iVar8 = iVar8 + -1) {
if (uVar3 == 0) {
uVar3 = 0x8000;
local_c = (uint)*local_18;
local_18 = local_18 + 1;
}
uVar4 = param_3;
if ((local_c & uVar3) != 0) {
uVar4 = param_2;
}
if (param_5 == 0) {
*local_1c = uVar4 | *local_1c & param_4;
}
else if (param_5 == 1) {
*local_1c = *local_1c & uVar4;
}
else if (param_5 == 2) {
*local_1c = *local_1c | uVar4;
}
else if (param_5 == 3) {
*local_1c = *local_1c ^ uVar4;
}
*local_2c = *local_2c | uVar5;
DAT_00522cbc = DAT_00522cbc + 1;
uVar5 = uVar5 * 2;
if (uVar5 == 0) {
local_2c = local_2c + -1;
uVar5 = 1;
}
local_1c = local_1c + -1;
uVar3 = (int)uVar3 >> 1;
}
local_2c = puVar2;
local_1c = puVar1;
local_14 = local_14 + -iVar6;
}
}
else if (param_6 == 0x10e) {
FUN_0046af20(param_1,iVar6 - (local_8 + -1),iVar6);
puVar2 = local_28;
uVar5 = local_24[0];
for (; 0 < iVar7; iVar7 = iVar7 + -1) {
iVar6 = *(int *)(param_9 + 0x14);
local_24[0] = uVar5 << 1;
local_28 = puVar2;
if (local_24[0] == 0) {
local_28 = puVar2 + -1;
local_24[0] = 1;
}
puVar1 = local_1c + -1;
local_c = (uint)*local_14;
local_18 = local_14 + 1;
uVar3 = local_10;
for (iVar8 = local_8; 0 < iVar8; iVar8 = iVar8 + -1) {
if (uVar3 == 0) {
uVar3 = 0x8000;
local_c = (uint)*local_18;
local_18 = local_18 + 1;
}
uVar4 = param_3;
if ((local_c & uVar3) != 0) {
uVar4 = param_2;
}
if (param_5 == 0) {
*local_1c = uVar4 | *local_1c & param_4;
}
else if (param_5 == 1) {
*local_1c = *local_1c & uVar4;
}
else if (param_5 == 2) {
*local_1c = *local_1c | uVar4;
}
else if (param_5 == 3) {
*local_1c = *local_1c ^ uVar4;
}
uVar3 = (int)uVar3 >> 1;
*puVar2 = *puVar2 | uVar5;
DAT_00522cbc = DAT_00522cbc + 1;
puVar2 = puVar2 + -*(int *)(param_1 + 0x1c);
local_1c = local_1c + -*(int *)(param_1 + 0x18);
}
puVar2 = local_28;
uVar5 = local_24[0];
local_1c = puVar1;
local_14 = local_14 + -iVar6;
}
}
else {
FUN_0046af20(param_1,(iVar6 - iVar7) + 1,iVar6);
local_2c = local_28;
for (; 0 < iVar7; iVar7 = iVar7 + -1) {
iVar6 = *(int *)(param_9 + 0x14);
puVar2 = local_2c + -*(int *)(param_1 + 0x1c);
puVar1 = local_1c + -*(int *)(param_1 + 0x18);
local_c = (uint)*local_14;
local_18 = local_14 + 1;
uVar5 = local_24[0];
uVar3 = local_10;
for (iVar8 = local_8; 0 < iVar8; iVar8 = iVar8 + -1) {
if (uVar3 == 0) {
uVar3 = 0x8000;
local_c = (uint)*local_18;
local_18 = local_18 + 1;
}
uVar4 = param_3;
if ((local_c & uVar3) != 0) {
uVar4 = param_2;
}
if (param_5 == 0) {
*local_1c = uVar4 | *local_1c & param_4;
}
else if (param_5 == 1) {
*local_1c = *local_1c & uVar4;
}
else if (param_5 == 2) {
*local_1c = *local_1c | uVar4;
}
else if (param_5 == 3) {
*local_1c = *local_1c ^ uVar4;
}
*local_2c = *local_2c | uVar5;
DAT_00522cbc = DAT_00522cbc + 1;
uVar5 = uVar5 >> 1;
if (uVar5 == 0) {
local_2c = local_2c + 1;
uVar5 = 0x80000000;
}
local_1c = local_1c + 1;
uVar3 = (int)uVar3 >> 1;
}
local_2c = puVar2;
local_1c = puVar1;
local_14 = local_14 + -iVar6;
}
}
}
return;
}
/* @0046c324 file=? name=FUN_0046c324 */
void __cdecl
FUN_0046c324(int param_1,int param_2,ushort param_3,int param_4,int param_5,int param_6,int param_7,
int param_8,int *param_9,int param_10,int param_11,int param_12,int param_13)
{
byte *pbVar1;
ushort *puVar2;
byte bVar3;
ushort uVar4;
uint *puVar5;
uint uVar6;
int iVar7;
int iVar8;
int iVar9;
uint *local_20;
uint *local_1c;
uint local_18;
ushort *local_14 [2];
byte *local_c;
int local_8;
if (*(int *)(param_1 + 0x14) != 0) {
iVar7 = *(int *)(param_1 + 0x28) - param_8;
iVar8 = (param_9[1] + -1) - param_11;
local_8 = (param_12 - param_10) + 1;
param_3 = ~param_3;
iVar9 = (iVar8 - ((param_9[1] + -1) - param_13)) + 1;
local_c = (byte *)(param_10 + param_9[2] + *param_9 * iVar8);
FUN_0046aec4(param_1,param_7,iVar7,(int *)local_14,(int *)&local_1c,(int *)&local_18);
if (param_5 == 0) {
if (param_6 == 0x5a) {
FUN_0046af20(param_1,iVar7,iVar7 + local_8);
puVar5 = local_1c;
uVar6 = local_18;
for (; 0 < iVar9; iVar9 = iVar9 + -1) {
pbVar1 = local_c + -*param_9;
local_18 = uVar6 >> 1;
local_1c = puVar5;
if (local_18 == 0) {
local_1c = puVar5 + 1;
local_18 = 0x80000000;
}
puVar2 = local_14[0] + 1;
for (iVar7 = local_8; 0 < iVar7; iVar7 = iVar7 + -1) {
bVar3 = *local_c;
local_c = local_c + 1;
if (bVar3 != 0) {
uVar4 = *(ushort *)(param_2 + (uint)bVar3 * 4);
if (param_4 == 0) {
*local_14[0] = uVar4 | *local_14[0] & param_3;
}
else if (param_4 == 1) {
*local_14[0] = *local_14[0] & uVar4;
}
else if (param_4 == 2) {
*local_14[0] = *local_14[0] | uVar4;
}
else if (param_4 == 3) {
*local_14[0] = *local_14[0] ^ uVar4;
}
*puVar5 = *puVar5 | uVar6;
DAT_00522cbc = DAT_00522cbc + 1;
}
puVar5 = puVar5 + *(int *)(param_1 + 0x1c);
local_14[0] = local_14[0] + *(int *)(param_1 + 0x18);
}
puVar5 = local_1c;
uVar6 = local_18;
local_14[0] = puVar2;
local_c = pbVar1;
}
}
else if (param_6 == 0xb4) {
FUN_0046af20(param_1,iVar7,iVar7 + iVar9);
local_20 = local_1c;
for (; 0 < iVar9; iVar9 = iVar9 + -1) {
pbVar1 = local_c + -*param_9;
puVar5 = local_20 + *(int *)(param_1 + 0x1c);
puVar2 = local_14[0] + *(int *)(param_1 + 0x18);
uVar6 = local_18;
for (iVar7 = local_8; 0 < iVar7; iVar7 = iVar7 + -1) {
bVar3 = *local_c;
local_c = local_c + 1;
if (bVar3 != 0) {
uVar4 = *(ushort *)(param_2 + (uint)bVar3 * 4);
if (param_4 == 0) {
*local_14[0] = uVar4 | *local_14[0] & param_3;
}
else if (param_4 == 1) {
*local_14[0] = *local_14[0] & uVar4;
}
else if (param_4 == 2) {
*local_14[0] = *local_14[0] | uVar4;
}
else if (param_4 == 3) {
*local_14[0] = *local_14[0] ^ uVar4;
}
*local_20 = *local_20 | uVar6;
DAT_00522cbc = DAT_00522cbc + 1;
}
uVar6 = uVar6 * 2;
if (uVar6 == 0) {
local_20 = local_20 + -1;
uVar6 = 1;
}
local_14[0] = local_14[0] + -1;
}
local_20 = puVar5;
local_14[0] = puVar2;
local_c = pbVar1;
}
}
else if (param_6 == 0x10e) {
FUN_0046af20(param_1,iVar7 - (local_8 + -1),iVar7);
puVar5 = local_1c;
uVar6 = local_18;
for (; 0 < iVar9; iVar9 = iVar9 + -1) {
pbVar1 = local_c + -*param_9;
local_18 = uVar6 << 1;
local_1c = puVar5;
if (local_18 == 0) {
local_1c = puVar5 + -1;
local_18 = 1;
}
puVar2 = local_14[0] + -1;
for (iVar7 = local_8; 0 < iVar7; iVar7 = iVar7 + -1) {
bVar3 = *local_c;
local_c = local_c + 1;
if (bVar3 != 0) {
uVar4 = *(ushort *)(param_2 + (uint)bVar3 * 4);
if (param_4 == 0) {
*local_14[0] = uVar4 | *local_14[0] & param_3;
}
else if (param_4 == 1) {
*local_14[0] = *local_14[0] & uVar4;
}
else if (param_4 == 2) {
*local_14[0] = *local_14[0] | uVar4;
}
else if (param_4 == 3) {
*local_14[0] = *local_14[0] ^ uVar4;
}
*puVar5 = *puVar5 | uVar6;
DAT_00522cbc = DAT_00522cbc + 1;
}
puVar5 = puVar5 + -*(int *)(param_1 + 0x1c);
local_14[0] = local_14[0] + -*(int *)(param_1 + 0x18);
}
puVar5 = local_1c;
uVar6 = local_18;
local_14[0] = puVar2;
local_c = pbVar1;
}
}
else {
FUN_0046af20(param_1,(iVar7 - iVar9) + 1,iVar7);
local_20 = local_1c;
for (; 0 < iVar9; iVar9 = iVar9 + -1) {
pbVar1 = local_c + -*param_9;
puVar5 = local_20 + -*(int *)(param_1 + 0x1c);
puVar2 = local_14[0] + -*(int *)(param_1 + 0x18);
uVar6 = local_18;
for (iVar7 = local_8; 0 < iVar7; iVar7 = iVar7 + -1) {
bVar3 = *local_c;
local_c = local_c + 1;
if (bVar3 != 0) {
uVar4 = *(ushort *)(param_2 + (uint)bVar3 * 4);
if (param_4 == 0) {
*local_14[0] = uVar4 | *local_14[0] & param_3;
}
else if (param_4 == 1) {
*local_14[0] = *local_14[0] & uVar4;
}
else if (param_4 == 2) {
*local_14[0] = *local_14[0] | uVar4;
}
else if (param_4 == 3) {
*local_14[0] = *local_14[0] ^ uVar4;
}
*local_20 = *local_20 | uVar6;
DAT_00522cbc = DAT_00522cbc + 1;
}
uVar6 = uVar6 >> 1;
if (uVar6 == 0) {
local_20 = local_20 + 1;
uVar6 = 0x80000000;
}
local_14[0] = local_14[0] + 1;
}
local_20 = puVar5;
local_14[0] = puVar2;
local_c = pbVar1;
}
}
}
else if (param_6 == 0x5a) {
FUN_0046af20(param_1,iVar7,iVar7 + local_8);
puVar5 = local_1c;
uVar6 = local_18;
for (; 0 < iVar9; iVar9 = iVar9 + -1) {
pbVar1 = local_c + -*param_9;
local_18 = uVar6 >> 1;
local_1c = puVar5;
if (local_18 == 0) {
local_1c = puVar5 + 1;
local_18 = 0x80000000;
}
puVar2 = local_14[0] + 1;
for (iVar7 = local_8; 0 < iVar7; iVar7 = iVar7 + -1) {
bVar3 = *local_c;
local_c = local_c + 1;
uVar4 = *(ushort *)(param_2 + (uint)bVar3 * 4);
if (param_4 == 0) {
*local_14[0] = uVar4 | *local_14[0] & param_3;
}
else if (param_4 == 1) {
*local_14[0] = *local_14[0] & uVar4;
}
else if (param_4 == 2) {
*local_14[0] = *local_14[0] | uVar4;
}
else if (param_4 == 3) {
*local_14[0] = *local_14[0] ^ uVar4;
}
*puVar5 = *puVar5 | uVar6;
DAT_00522cbc = DAT_00522cbc + 1;
puVar5 = puVar5 + *(int *)(param_1 + 0x1c);
local_14[0] = local_14[0] + *(int *)(param_1 + 0x18);
}
puVar5 = local_1c;
uVar6 = local_18;
local_14[0] = puVar2;
local_c = pbVar1;
}
}
else if (param_6 == 0xb4) {
FUN_0046af20(param_1,iVar7,iVar7 + iVar9);
local_20 = local_1c;
for (; 0 < iVar9; iVar9 = iVar9 + -1) {
pbVar1 = local_c + -*param_9;
puVar5 = local_20 + *(int *)(param_1 + 0x1c);
puVar2 = local_14[0] + *(int *)(param_1 + 0x18);
uVar6 = local_18;
for (iVar7 = local_8; 0 < iVar7; iVar7 = iVar7 + -1) {
bVar3 = *local_c;
local_c = local_c + 1;
uVar4 = *(ushort *)(param_2 + (uint)bVar3 * 4);
if (param_4 == 0) {
*local_14[0] = uVar4 | *local_14[0] & param_3;
}
else if (param_4 == 1) {
*local_14[0] = *local_14[0] & uVar4;
}
else if (param_4 == 2) {
*local_14[0] = *local_14[0] | uVar4;
}
else if (param_4 == 3) {
*local_14[0] = *local_14[0] ^ uVar4;
}
*local_20 = *local_20 | uVar6;
DAT_00522cbc = DAT_00522cbc + 1;
uVar6 = uVar6 * 2;
if (uVar6 == 0) {
local_20 = local_20 + -1;
uVar6 = 1;
}
local_14[0] = local_14[0] + -1;
}
local_20 = puVar5;
local_14[0] = puVar2;
local_c = pbVar1;
}
}
else if (param_6 == 0x10e) {
FUN_0046af20(param_1,iVar7 - (local_8 + -1),iVar7);
puVar5 = local_1c;
uVar6 = local_18;
for (; 0 < iVar9; iVar9 = iVar9 + -1) {
pbVar1 = local_c + -*param_9;
local_18 = uVar6 << 1;
local_1c = puVar5;
if (local_18 == 0) {
local_1c = puVar5 + -1;
local_18 = 1;
}
puVar2 = local_14[0] + -1;
for (iVar7 = local_8; 0 < iVar7; iVar7 = iVar7 + -1) {
bVar3 = *local_c;
local_c = local_c + 1;
uVar4 = *(ushort *)(param_2 + (uint)bVar3 * 4);
if (param_4 == 0) {
*local_14[0] = uVar4 | *local_14[0] & param_3;
}
else if (param_4 == 1) {
*local_14[0] = *local_14[0] & uVar4;
}
else if (param_4 == 2) {
*local_14[0] = *local_14[0] | uVar4;
}
else if (param_4 == 3) {
*local_14[0] = *local_14[0] ^ uVar4;
}
*puVar5 = *puVar5 | uVar6;
DAT_00522cbc = DAT_00522cbc + 1;
puVar5 = puVar5 + -*(int *)(param_1 + 0x1c);
local_14[0] = local_14[0] + -*(int *)(param_1 + 0x18);
}
puVar5 = local_1c;
uVar6 = local_18;
local_14[0] = puVar2;
local_c = pbVar1;
}
}
else {
FUN_0046af20(param_1,(iVar7 - iVar9) + 1,iVar7);
local_20 = local_1c;
for (; 0 < iVar9; iVar9 = iVar9 + -1) {
pbVar1 = local_c + -*param_9;
puVar5 = local_20 + -*(int *)(param_1 + 0x1c);
puVar2 = local_14[0] + -*(int *)(param_1 + 0x18);
uVar6 = local_18;
for (iVar7 = local_8; 0 < iVar7; iVar7 = iVar7 + -1) {
bVar3 = *local_c;
local_c = local_c + 1;
uVar4 = *(ushort *)(param_2 + (uint)bVar3 * 4);
if (param_4 == 0) {
*local_14[0] = uVar4 | *local_14[0] & param_3;
}
else if (param_4 == 1) {
*local_14[0] = *local_14[0] & uVar4;
}
else if (param_4 == 2) {
*local_14[0] = *local_14[0] | uVar4;
}
else if (param_4 == 3) {
*local_14[0] = *local_14[0] ^ uVar4;
}
*local_20 = *local_20 | uVar6;
DAT_00522cbc = DAT_00522cbc + 1;
uVar6 = uVar6 >> 1;
if (uVar6 == 0) {
local_20 = local_20 + 1;
uVar6 = 0x80000000;
}
local_14[0] = local_14[0] + 1;
}
local_20 = puVar5;
local_14[0] = puVar2;
local_c = pbVar1;
}
}
}
return;
}
/* @0046cac4 file=? name=FUN_0046cac4 */
void __cdecl
FUN_0046cac4(int param_1,ushort param_2,ushort param_3,int param_4,int param_5,int param_6,
int param_7,int *param_8,int param_9,int param_10,int param_11,int param_12)
{
char *pcVar1;
ushort *puVar2;
char cVar3;
uint *puVar4;
uint uVar5;
int iVar6;
int iVar7;
int iVar8;
uint *local_20;
uint *local_1c;
uint local_18;
ushort *local_14;
char *local_10;
int local_8;
if (*(int *)(param_1 + 0x14) != 0) {
iVar6 = *(int *)(param_1 + 0x28) - param_7;
iVar7 = (param_8[1] + -1) - param_10;
local_8 = (param_11 - param_9) + 1;
param_3 = ~param_3;
iVar8 = (iVar7 - ((param_8[1] + -1) - param_12)) + 1;
local_10 = (char *)(param_9 + param_8[2] + *param_8 * iVar7);
FUN_0046aec4(param_1,param_6,iVar6,(int *)&local_14,(int *)&local_1c,(int *)&local_18);
if (param_5 == 0x5a) {
FUN_0046af20(param_1,iVar6,iVar6 + local_8);
puVar4 = local_1c;
uVar5 = local_18;
for (; 0 < iVar8; iVar8 = iVar8 + -1) {
pcVar1 = local_10 + -*param_8;
local_18 = uVar5 >> 1;
local_1c = puVar4;
if (local_18 == 0) {
local_1c = puVar4 + 1;
local_18 = 0x80000000;
}
puVar2 = local_14 + 1;
for (iVar6 = local_8; 0 < iVar6; iVar6 = iVar6 + -1) {
cVar3 = *local_10;
local_10 = local_10 + 1;
if (cVar3 != '\0') {
if (param_4 == 0) {
*local_14 = *local_14 & param_3 | param_2;
}
else if (param_4 == 1) {
*local_14 = *local_14 & param_2;
}
else if (param_4 == 2) {
*local_14 = *local_14 | param_2;
}
else if (param_4 == 3) {
*local_14 = *local_14 ^ param_2;
}
*puVar4 = *puVar4 | uVar5;
DAT_00522cbc = DAT_00522cbc + 1;
}
puVar4 = puVar4 + *(int *)(param_1 + 0x1c);
local_14 = local_14 + *(int *)(param_1 + 0x18);
}
puVar4 = local_1c;
uVar5 = local_18;
local_14 = puVar2;
local_10 = pcVar1;
}
}
else if (param_5 == 0xb4) {
FUN_0046af20(param_1,iVar6,iVar6 + iVar8);
local_20 = local_1c;
for (; 0 < iVar8; iVar8 = iVar8 + -1) {
pcVar1 = local_10 + -*param_8;
puVar4 = local_20 + *(int *)(param_1 + 0x1c);
puVar2 = local_14 + *(int *)(param_1 + 0x18);
uVar5 = local_18;
for (iVar6 = local_8; 0 < iVar6; iVar6 = iVar6 + -1) {
cVar3 = *local_10;
local_10 = local_10 + 1;
if (cVar3 != '\0') {
if (param_4 == 0) {
*local_14 = *local_14 & param_3 | param_2;
}
else if (param_4 == 1) {
*local_14 = *local_14 & param_2;
}
else if (param_4 == 2) {
*local_14 = *local_14 | param_2;
}
else if (param_4 == 3) {
*local_14 = *local_14 ^ param_2;
}
*local_20 = *local_20 | uVar5;
DAT_00522cbc = DAT_00522cbc + 1;
}
uVar5 = uVar5 * 2;
if (uVar5 == 0) {
local_20 = local_20 + -1;
uVar5 = 1;
}
local_14 = local_14 + -1;
}
local_20 = puVar4;
local_14 = puVar2;
local_10 = pcVar1;
}
}
else if (param_5 == 0x10e) {
FUN_0046af20(param_1,iVar6 - local_8,iVar6);
puVar4 = local_1c;
uVar5 = local_18;
for (; 0 < iVar8; iVar8 = iVar8 + -1) {
pcVar1 = local_10 + -*param_8;
local_18 = uVar5 << 1;
local_1c = puVar4;
if (local_18 == 0) {
local_1c = puVar4 + -1;
local_18 = 1;
}
puVar2 = local_14 + -1;
for (iVar6 = local_8; 0 < iVar6; iVar6 = iVar6 + -1) {
cVar3 = *local_10;
local_10 = local_10 + 1;
if (cVar3 != '\0') {
if (param_4 == 0) {
*local_14 = *local_14 & param_3 | param_2;
}
else if (param_4 == 1) {
*local_14 = *local_14 & param_2;
}
else if (param_4 == 2) {
*local_14 = *local_14 | param_2;
}
else if (param_4 == 3) {
*local_14 = *local_14 ^ param_2;
}
*puVar4 = *puVar4 | uVar5;
DAT_00522cbc = DAT_00522cbc + 1;
}
puVar4 = puVar4 + -*(int *)(param_1 + 0x1c);
local_14 = local_14 + -*(int *)(param_1 + 0x18);
}
puVar4 = local_1c;
uVar5 = local_18;
local_14 = puVar2;
local_10 = pcVar1;
}
}
else {
FUN_0046af20(param_1,(iVar6 - iVar8) + 1,iVar6);
local_20 = local_1c;
for (; 0 < iVar8; iVar8 = iVar8 + -1) {
pcVar1 = local_10 + -*param_8;
puVar4 = local_20 + -*(int *)(param_1 + 0x1c);
puVar2 = local_14 + -*(int *)(param_1 + 0x18);
uVar5 = local_18;
for (iVar6 = local_8; 0 < iVar6; iVar6 = iVar6 + -1) {
cVar3 = *local_10;
local_10 = local_10 + 1;
if (cVar3 != '\0') {
if (param_4 == 0) {
*local_14 = *local_14 & param_3 | param_2;
}
else if (param_4 == 1) {
*local_14 = *local_14 & param_2;
}
else if (param_4 == 2) {
*local_14 = *local_14 | param_2;
}
else if (param_4 == 3) {
*local_14 = *local_14 ^ param_2;
}
*local_20 = *local_20 | uVar5;
DAT_00522cbc = DAT_00522cbc + 1;
}
uVar5 = uVar5 >> 1;
if (uVar5 == 0) {
local_20 = local_20 + 1;
uVar5 = 0x80000000;
}
local_14 = local_14 + 1;
}
local_20 = puVar4;
local_14 = puVar2;
local_10 = pcVar1;
}
}
}
return;
}
/* @0046ced4 file=? name=FUN_0046ced4 */
int * __cdecl
FUN_0046ced4(int *param_1,uint param_2,int param_3,int param_4,int param_5,int param_6,int param_7,
int param_8,int param_9)
{
int *piVar1;
undefined4 extraout_ECX;
undefined4 extraout_EDX;
int iVar2;
int *piVar3;
short *psVar4;
int local_8;
FUN_0046ab50(param_1,param_3,param_4);
*param_1 = (int)&PTR_FUN_004f4d3c;
piVar3 = param_1 + 0x20;
FUN_004de998(piVar3,0x31c,4,1,FUN_0046e6ec);
param_1[0x10] = param_5 << 10;
param_1[0x11] = param_5 / param_6;
param_1[0x12] = param_7;
param_1[0x13] = param_8;
param_1[0x14] = param_9;
param_1[0x15] = -1;
FUN_0047d70c(param_2,param_1[0x13]);
FUN_0047d7da(extraout_ECX,extraout_EDX,1);
FUN_0046d4a0((int)param_1,0.0);
psVar4 = &DAT_004f4b34;
local_8 = 0;
do {
*(short *)piVar3 = *psVar4;
piVar3[1] = 0;
piVar3[0xc3] = 0;
piVar3[0xc4] = 0;
piVar3[0xc6] = -1;
piVar1 = piVar3 + 0xc5;
iVar2 = 0;
do {
*(undefined1 *)piVar1 = 0xff;
iVar2 = iVar2 + 1;
piVar1 = (int *)((int)piVar1 + 1);
} while (iVar2 < 4);
if (*psVar4 != 0x3c6) {
FUN_0047d8cb(0,iVar2,*psVar4);
}
psVar4 = psVar4 + 1;
local_8 = local_8 + 1;
piVar3 = piVar3 + 199;
} while (local_8 < 4);
param_1[0x15] = -1;
FUN_0046d404((int)param_1);
DAT_00522cbc = 0;
DAT_00522cc0 = 0;
DAT_00522cc4 = 0;
(**(code **)(*param_1 + 0x1c))(param_1,0,0xffff,0,0,0,param_1[9],param_1[10]);
(**(code **)(*param_1 + 8))(param_1,0);
return param_1;
}
/* @0046d050 file=? name=FUN_0046d050 */
void __cdecl FUN_0046d050(int *param_1,byte param_2)
{
uint uVar1;
uint uVar2;
uint uVar3;
int *piVar4;
undefined4 extraout_ECX;
undefined4 extraout_EDX;
double local_c;
if (param_1 != (int *)0x0) {
*param_1 = (int)&PTR_FUN_004f4d3c;
FUN_0047d70c(3,0);
uVar3 = DAT_00522cc4;
uVar2 = DAT_00522cc0;
uVar1 = DAT_00522cbc;
if (DAT_00522cc0 == 0) {
local_c = 0.0;
}
else {
local_c = (double)(int)DAT_00522cbc / (double)(int)DAT_00522cc0;
}
FUN_004dbb24(&DAT_00524e20,s_SVGA16___SVGA16__pixel_managemen_004f4baf,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s_Number_of_dirty_pixels___004f4be9,(char *)0x0);
piVar4 = FUN_004db78c(&DAT_00524e20,uVar1);
FUN_004dbb24(piVar4,s_Number_of_transferred_pixels__004f4c08,(char *)0x0);
piVar4 = FUN_004db78c(piVar4,uVar2);
FUN_004dbb24(piVar4,s_Times_overflowed___004f4c27,(char *)0x0);
piVar4 = FUN_004db78c(piVar4,uVar3);
FUN_004dbb24(piVar4,s_Ratio___004f4c46,(char *)0x0);
piVar4 = FUN_004db634(piVar4,(float10)local_c);
FUN_004dbb24(piVar4,s__________________________________004f4c4f,(char *)0x0);
FUN_0047d7da(extraout_ECX,extraout_EDX,0);
FUN_004de8d4(param_1 + 0x20,0x31c,4,1,FUN_0046e702);
FUN_0046ac08(param_1,0);
if ((param_2 & 1) != 0) {
FUN_004022d0(param_1);
}
}
return;
}
/* @0046d1a8 file=? name=FUN_0046d1a8 */
void FUN_0046d1a8(void)
{
FUN_0046ac68();
return;
}
/* @0046d1b8 file=? name=FUN_0046d1b8 */
void __cdecl FUN_0046d1b8(int param_1,char *param_2)
{
char cVar1;
uint uVar2;
uint uVar3;
char *pcVar4;
char *pcVar5;
char local_54 [80];
FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s_SVGA16__004f4c89,(char *)0x0);
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 = local_54;
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_004d49b8(local_54,&DAT_004f4c92);
FUN_004dbb24(&DAT_00524e20,local_54,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s_SVGA16__004f4c96,(char *)0x0);
FUN_0046ac74(param_1,local_54);
return;
}
/* @0046d260 file=? name=FUN_0046d260 */
undefined4 __cdecl FUN_0046d260(int param_1,int param_2)
{
char cVar1;
int iVar2;
undefined1 *puVar3;
int iVar4;
undefined4 *puVar5;
undefined4 uVar6;
char *this;
int iVar7;
undefined8 uVar8;
int local_14;
int local_10;
char *local_c;
if (*(int *)(param_1 + 0x14) == 0) {
uVar6 = 0;
}
else {
if (param_2 != 0) {
FUN_004d4988(*(undefined4 **)(param_1 + 0x38),1,*(uint *)(param_1 + 0x20));
}
iVar2 = *(int *)(param_1 + 0x5c);
if (*(int *)(param_1 + 0x50) == 0) {
local_c = (char *)0x40;
local_10 = *(int *)(param_1 + 0x18) * 2;
}
else {
local_c = (char *)0x20;
local_10 = *(int *)(param_1 + 0x18);
}
local_14 = 0xf;
do {
this = *(char **)(param_1 + 100);
puVar3 = *(undefined1 **)(param_1 + 100);
cVar1 = *this;
*(int *)(param_1 + 100) = *(int *)(param_1 + 100) + 1;
*puVar3 = 0;
if (cVar1 == '\0') {
*(int *)(param_1 + 0x6c) = *(int *)(param_1 + 0x6c) + *(int *)(param_1 + 0x1c) * 4;
*(int *)(param_1 + 0x68) = *(int *)(param_1 + 0x68) + *(int *)(param_1 + 0x18) * 2;
*(int *)(param_1 + 0x60) = *(int *)(param_1 + 0x60) + local_10;
if (*(int *)(param_1 + 0x40) <= *(int *)(param_1 + 0x60)) {
*(int *)(param_1 + 0x60) = *(int *)(param_1 + 0x60) - *(int *)(param_1 + 0x40);
*(int *)(param_1 + 0x58) = *(int *)(param_1 + 0x58) + *(int *)(param_1 + 0x44);
}
}
else {
local_14 = local_14 + -1;
for (iVar7 = 0; iVar7 < *(int *)(param_1 + 0x1c); iVar7 = iVar7 + 1) {
iVar4 = **(int **)(param_1 + 0x6c);
puVar5 = *(undefined4 **)(param_1 + 0x6c);
*(int *)(param_1 + 0x6c) = *(int *)(param_1 + 0x6c) + 4;
*puVar5 = 0;
if (iVar4 != 0) {
if (*(uint *)(param_1 + 0x58) != *(uint *)(param_1 + 0x54)) {
FUN_0047d7f6(this,*(uint *)(param_1 + 0x58));
this = *(char **)(param_1 + 0x58);
*(char **)(param_1 + 0x54) = this;
}
if (*(int *)(param_1 + 0x50) == 0) {
uVar8 = FUN_0047d848(this,*(undefined4 *)(param_1 + 0x60),
(undefined2 *)*(undefined4 *)(param_1 + 0x60),
*(undefined2 **)(param_1 + 0x68),iVar4);
DAT_00522cc0 = DAT_00522cc0 + (int)uVar8;
}
else {
uVar8 = FUN_0047d88b(*(undefined4 *)(param_1 + 0x60),*(undefined4 *)(param_1 + 0x68),
(undefined1 *)*(undefined4 *)(param_1 + 0x60),
(undefined2 *)*(undefined4 *)(param_1 + 0x68),iVar4);
DAT_00522cc0 = DAT_00522cc0 + (int)uVar8;
}
}
*(int *)(param_1 + 0x68) = *(int *)(param_1 + 0x68) + 0x40;
*(int *)(param_1 + 0x60) = (int)(local_c + *(int *)(param_1 + 0x60));
this = local_c;
if (*(int *)(param_1 + 0x40) <= *(int *)(param_1 + 0x60)) {
*(int *)(param_1 + 0x60) = *(int *)(param_1 + 0x60) - *(int *)(param_1 + 0x40);
this = *(char **)(param_1 + 0x44);
*(int *)(param_1 + 0x58) = (int)(this + *(int *)(param_1 + 0x58));
}
}
}
if ((0x10000000 < DAT_00522cc0) || (0x10000000 < DAT_00522cbc)) {
DAT_00522cc0 = DAT_00522cc0 >> 1;
DAT_00522cbc = DAT_00522cbc >> 1;
DAT_00522cc4 = DAT_00522cc4 + 1;
}
*(int *)(param_1 + 0x5c) = *(int *)(param_1 + 0x5c) + 1;
if (*(int *)(param_1 + 0x20) <= *(int *)(param_1 + 0x5c)) {
FUN_0046d404(param_1);
}
if (*(int *)(param_1 + 0x5c) == iVar2) {
return 0;
}
} while (0 < local_14);
uVar6 = 1;
}
return uVar6;
}
/* @0046d404 file=? name=FUN_0046d404 */
void __cdecl FUN_0046d404(int param_1)
{
*(undefined4 *)(param_1 + 0x5c) = 0;
*(undefined4 *)(param_1 + 0x68) = *(undefined4 *)(param_1 + 0x34);
*(undefined4 *)(param_1 + 100) = *(undefined4 *)(param_1 + 0x38);
*(undefined4 *)(param_1 + 0x6c) = *(undefined4 *)(param_1 + 0x3c);
*(undefined4 *)(param_1 + 0x58) = 0;
*(undefined4 *)(param_1 + 0x60) = 0;
return;
}
/* @0046d430 file=? name=FUN_0046d430 */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
void __cdecl FUN_0046d430(int param_1,float param_2)
{
undefined4 *puVar1;
float10 fVar2;
puVar1 = (undefined4 *)FUN_00414b60();
*(undefined4 *)(param_1 + 0x7c) = *puVar1;
*(undefined4 *)(param_1 + 0x70) = 3;
fVar2 = FUN_004dcd00((double)param_2);
if ((float10)_DAT_0046d498 < fVar2) {
*(float *)(param_1 + 0x78) = _DAT_0046d49c / param_2;
}
else {
*(undefined4 *)(param_1 + 0x78) = 0;
*(undefined4 *)(param_1 + 0x74) = 0x3f800000;
}
return;
}
/* @0046d4a0 file=? name=FUN_0046d4a0 */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
void __cdecl FUN_0046d4a0(int param_1,float param_2)
{
undefined4 *puVar1;
float10 fVar2;
puVar1 = (undefined4 *)FUN_00414b60();
*(undefined4 *)(param_1 + 0x7c) = *puVar1;
*(undefined4 *)(param_1 + 0x70) = 1;
fVar2 = FUN_004dcd00((double)param_2);
if ((float10)_DAT_0046d504 < fVar2) {
*(float *)(param_1 + 0x78) = _DAT_0046d508 / param_2;
}
else {
*(undefined4 *)(param_1 + 0x78) = 0;
*(undefined4 *)(param_1 + 0x74) = 0;
}
return;
}
/* @0046d50c file=? name=FUN_0046d50c */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
void __cdecl FUN_0046d50c(short *param_1)
{
undefined4 uVar1;
undefined2 extraout_var;
byte *pbVar2;
int iVar3;
int local_308;
byte local_304 [768];
FUN_004498a8(&local_308);
iVar3 = 0;
pbVar2 = local_304;
do {
uVar1 = FUN_004dcd94();
*pbVar2 = (byte)uVar1;
uVar1 = FUN_004dcd94();
pbVar2[1] = (byte)uVar1;
uVar1 = FUN_004dcd94();
pbVar2[2] = (byte)uVar1;
iVar3 = iVar3 + 1;
pbVar2 = pbVar2 + 3;
} while (iVar3 < 0x100);
FUN_0047d8f2(CONCAT22(extraout_var,*param_1),param_1,local_304,*param_1);
FUN_00449994(&local_308,2);
return;
}
/* @0046d694 file=? name=FUN_0046d694 */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
uint __cdecl FUN_0046d694(int param_1)
{
int *piVar1;
float fVar2;
undefined1 uVar3;
uint uVar4;
int iVar5;
float fVar6;
int *piVar7;
uint uVar8;
undefined2 extraout_var;
undefined2 extraout_var_00;
undefined4 extraout_ECX;
undefined2 *puVar9;
short *psVar10;
int iVar11;
undefined8 uVar12;
piVar7 = (int *)FUN_00414b60();
piVar1 = (int *)(param_1 + 0x7c);
fVar6 = (float)(*piVar7 - *piVar1) / DAT_0052140c;
*piVar1 = *piVar7;
uVar8 = CONCAT22((short)((uint)piVar1 >> 0x10),
(ushort)(fVar6 < _DAT_0046d834) << 8 |
(ushort)(NAN(fVar6) || NAN(_DAT_0046d834)) << 10 |
(ushort)(fVar6 == _DAT_0046d834) << 0xe);
if (fVar6 >= _DAT_0046d834 && (fVar6 == _DAT_0046d834) == 0) {
puVar9 = (undefined2 *)(param_1 + 0x80);
iVar11 = 0;
do {
fVar2 = *(float *)(puVar9 + 0x188);
uVar8 = CONCAT22((short)(uVar8 >> 0x10),
(ushort)(fVar2 < _DAT_0046d834) << 8 |
(ushort)(NAN(fVar2) || NAN(_DAT_0046d834)) << 10 |
(ushort)(fVar2 == _DAT_0046d834) << 0xe);
if ((fVar2 == _DAT_0046d834) == 0) {
*(float *)(puVar9 + 0x186) = *(float *)(puVar9 + 0x188) * fVar6 + *(float *)(puVar9 + 0x186)
;
while (_DAT_0046d838 <= *(float *)(puVar9 + 0x186)) {
*(float *)(puVar9 + 0x186) = *(float *)(puVar9 + 0x186) - _DAT_0046d838;
}
uVar8 = FUN_004dcd94();
uVar4 = *(uint *)(puVar9 + 0x18c);
if (uVar8 != uVar4) {
*(uint *)(puVar9 + 0x18c) = uVar8;
uVar3 = *(undefined1 *)((int)puVar9 + uVar8 + 0x314);
uVar12 = FUN_0047d962(CONCAT31((int3)((uint)extraout_ECX >> 8),uVar3),uVar4,*puVar9,uVar3)
;
uVar8 = (uint)uVar12;
}
}
iVar11 = iVar11 + 1;
puVar9 = puVar9 + 0x18e;
} while (iVar11 < 4);
psVar10 = (short *)(param_1 + 0x80);
iVar11 = 0;
do {
if ((iVar11 == 1) && (uVar8 = 0, *(int *)(param_1 + 0x70) != 0)) {
psVar10[2] = 0;
psVar10[3] = 0;
iVar5 = *(int *)(param_1 + 0x70);
if (iVar5 == 1) {
*(float *)(param_1 + 0x74) =
*(float *)(param_1 + 0x74) - fVar6 * *(float *)(param_1 + 0x78);
FUN_0046d50c(psVar10);
fVar2 = *(float *)(param_1 + 0x74);
uVar8 = CONCAT22(extraout_var,
(ushort)(fVar2 < _DAT_0046d834) << 8 |
(ushort)(NAN(fVar2) || NAN(_DAT_0046d834)) << 10 |
(ushort)(fVar2 == _DAT_0046d834) << 0xe);
if (fVar2 < _DAT_0046d834 || (fVar2 == _DAT_0046d834) != 0) {
*(undefined4 *)(param_1 + 0x74) = 0;
*(undefined4 *)(param_1 + 0x70) = 2;
}
}
else {
uVar8 = 0;
if ((iVar5 != 2) && (uVar8 = iVar5 - 3, uVar8 == 0)) {
*(float *)(param_1 + 0x74) =
fVar6 * *(float *)(param_1 + 0x78) + *(float *)(param_1 + 0x74);
FUN_0046d50c(psVar10);
fVar2 = *(float *)(param_1 + 0x74);
uVar8 = CONCAT22(extraout_var_00,
(ushort)(fVar2 < _DAT_0046d83c) << 8 |
(ushort)(NAN(fVar2) || NAN(_DAT_0046d83c)) << 10 |
(ushort)(fVar2 == _DAT_0046d83c) << 0xe);
if (fVar2 >= _DAT_0046d83c) {
*(undefined4 *)(param_1 + 0x74) = 0x3f800000;
*(undefined4 *)(param_1 + 0x70) = 0;
}
}
}
}
else if (*(int *)(psVar10 + 2) != 0) {
psVar10[2] = 0;
psVar10[3] = 0;
uVar12 = FUN_0047d8f2(0,psVar10 + 6,(byte *)(psVar10 + 6),*psVar10);
uVar8 = (uint)uVar12;
}
iVar11 = iVar11 + 1;
psVar10 = psVar10 + 0x18e;
} while (iVar11 < 4);
}
return uVar8;
}
/* @0046d840 file=? name=FUN_0046d840 */
undefined6 __cdecl FUN_0046d840(undefined4 param_1,int param_2)
{
undefined6 uVar1;
uVar1 = FUN_0047d76d(param_2);
return uVar1;
}
/* @0046d850 file=? name=FUN_0046d850 */
undefined4 * __cdecl
FUN_0046d850(undefined4 *param_1,undefined4 *param_2,char *param_3,undefined4 param_4,
undefined4 param_5,undefined4 param_6,undefined4 param_7)
{
uint uVar1;
undefined4 *puVar2;
int iVar3;
FUN_0044a2d0(param_1,param_2,param_3);
*param_1 = &PTR_FUN_004f4d0c;
param_1[0x14a] = param_4;
param_1[0x14f] = param_6;
param_1[0x150] = param_7;
uVar1 = 0x8000;
param_1[0x14b] = param_5;
param_1[0x14c] = 0;
do {
if ((param_1[0x14b] & uVar1) != 0) {
param_1[0x14c] = param_1[0x14c] + 1;
}
uVar1 = (int)uVar1 >> 1;
} while (uVar1 != 0);
param_1[0x14d] = param_1[3] - param_1[1];
param_1[0x14e] = param_1[4] - param_1[2];
if (((param_1[0x14a] == 0x5a) || (param_1[0x14a] == 0x10e)) && (param_2 != (undefined4 *)0x0)) {
param_1[1] = param_2[2];
param_1[2] = param_2[1];
param_1[3] = param_2[4];
param_1[4] = param_2[3];
}
iVar3 = 0;
puVar2 = param_1 + 0x10a;
do {
*(undefined1 *)puVar2 = 0;
iVar3 = iVar3 + 1;
puVar2 = (undefined4 *)((int)puVar2 + 1);
} while (iVar3 < 0x100);
return param_1;
}
/* @0046d91c file=? name=FUN_0046d91c */
void __cdecl FUN_0046d91c(int *param_1,byte param_2)
{
if (param_1 != (int *)0x0) {
*param_1 = (int)&PTR_FUN_004f4d0c;
FUN_0044a348(param_1,0);
if ((param_2 & 1) != 0) {
FUN_004022d0(param_1);
}
}
return;
}
/* @0046d948 file=? name=FUN_0046d948 */
undefined4 FUN_0046d948(void)
{
return 1;
}
/* @0046d954 file=? name=FUN_0046d954 */
void __cdecl FUN_0046d954(int param_1,char *param_2)
{
char cVar1;
int *piVar2;
uint uVar3;
uint uVar4;
char *pcVar5;
char *pcVar6;
uint *puVar7;
char local_54 [80];
FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s_L4GraphicsPort__004f4c9f,(char *)0x0);
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_54;
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_54,&DAT_004f4cb0);
uVar3 = *(uint *)(param_1 + 0x52c);
FUN_004dbb24(&DAT_00524e20,local_54,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s_bitMask___004f4cb4,(char *)0x0);
piVar2 = FUN_004db78c(&DAT_00524e20,uVar3);
FUN_004dbb24(piVar2,&DAT_004f4cc3,(char *)0x0);
uVar3 = *(uint *)(param_1 + 0x528);
FUN_004dbb24(&DAT_00524e20,local_54,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s_baseRotation___004f4cc5,(char *)0x0);
piVar2 = FUN_004db78c(&DAT_00524e20,uVar3);
FUN_004dbb24(piVar2,&DAT_004f4cd4,(char *)0x0);
uVar3 = *(uint *)(param_1 + 0x534);
FUN_004dbb24(&DAT_00524e20,local_54,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s_maximumX___004f4cd6,(char *)0x0);
piVar2 = FUN_004db78c(&DAT_00524e20,uVar3);
FUN_004dbb24(piVar2,&DAT_004f4ce5,(char *)0x0);
uVar3 = *(uint *)(param_1 + 0x538);
FUN_004dbb24(&DAT_00524e20,local_54,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s_maximumY___004f4ce7,(char *)0x0);
piVar2 = FUN_004db78c(&DAT_00524e20,uVar3);
FUN_004dbb24(piVar2,&DAT_004f4cf6,(char *)0x0);
puVar7 = (uint *)(param_1 + 4);
FUN_004dbb24(&DAT_00524e20,local_54,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s_bounds___004f4cf8,(char *)0x0);
piVar2 = (int *)FUN_00407d78(&DAT_00524e20,puVar7);
FUN_004dbb24(piVar2,&DAT_004f4d07,(char *)0x0);
FUN_004d9c70(&DAT_00524e20);
FUN_0044a374(param_1,local_54);
return;
}
/* @0046db5c file=? name=FUN_0046db5c */
void __cdecl FUN_0046db5c(int param_1,undefined1 *param_2,int param_3)
{
if (1 < *(int *)(param_1 + 0x540) - 4U) {
FUN_0046e31c(param_1,param_2,param_3);
}
return;
}
/* @0046db84 file=? name=FUN_0046db84 */
void __cdecl FUN_0046db84(int param_1,int param_2)
{
if (*(int *)(param_1 + 0x14) != 0) {
if (*(int *)(param_1 + 0x540) == 4) {
FUN_0046e180(param_1,param_2);
return;
}
if (*(int *)(param_1 + 0x540) == 5) {
FUN_0046e578(param_1);
FUN_0046e650(param_1);
return;
}
FUN_0046e1e4(param_1,param_2);
FUN_0046e650(param_1);
}
return;
}
/* @0046dbdc file=? name=FUN_0046dbdc */
void __cdecl FUN_0046dbdc(int param_1)
{
uint uVar1;
int *piVar2;
int local_310 [193];
undefined2 local_a;
undefined1 local_8;
undefined2 local_7;
undefined1 local_5;
if (*(int *)(param_1 + 0x14) != 0) {
if (*(int *)(param_1 + 0x540) == 4) {
piVar2 = local_310;
uVar1 = FUN_004498a8(piVar2);
local_7 = 0;
local_5 = 0;
local_a = 0xffff;
local_8 = 0xff;
FUN_004499e4((int)local_310,0,0xff,(uVar1 & 0xffffff00) << 0x10,
CONCAT22((short)CONCAT31((int3)((uint)piVar2 >> 8),0xff),0xffff));
FUN_0046e180(param_1,(int)local_310);
FUN_00449994(local_310,2);
}
else if (*(int *)(param_1 + 0x540) == 5) {
FUN_0046e578(param_1);
FUN_0046e694(param_1);
}
else {
FUN_0046e444(param_1);
FUN_0046e694(param_1);
}
}
return;
}
/* @0046dca0 file=? name=FUN_0046dca0 */
void __cdecl FUN_0046dca0(int param_1,int param_2,undefined4 param_3,int param_4,int param_5)
{
int local_c;
int local_8;
if (*(int *)(param_1 + 0x14) != 0) {
FUN_0046e114(param_1,&local_8,&local_c,param_4,param_5);
(**(code **)(**(int **)(param_1 + 0x14) + 0x14))
(*(int **)(param_1 + 0x14),*(undefined4 *)(param_1 + 0x28 + param_2 * 4),
*(undefined4 *)(param_1 + 0x52c),param_3,local_8 + *(int *)(param_1 + 4),
local_c + *(int *)(param_1 + 8));
}
return;
}
/* @0046dd00 file=? name=FUN_0046dd00 */
void __cdecl
FUN_0046dd00(int param_1,int param_2,undefined4 param_3,int param_4,int param_5,int param_6,
int param_7,undefined4 param_8)
{
int local_14;
int local_10;
int local_c;
int local_8;
if (*(int *)(param_1 + 0x14) != 0) {
FUN_0046e114(param_1,&local_8,&local_c,param_4,param_5);
FUN_0046e114(param_1,&local_10,&local_14,param_6,param_7);
(**(code **)(**(int **)(param_1 + 0x14) + 0x18))
(*(int **)(param_1 + 0x14),*(undefined4 *)(param_1 + 0x28 + param_2 * 4),
*(undefined4 *)(param_1 + 0x52c),param_3,local_8 + *(int *)(param_1 + 4),
local_c + *(int *)(param_1 + 8),local_10 + *(int *)(param_1 + 4),
local_14 + *(int *)(param_1 + 8),param_8);
}
return;
}
/* @0046dd8c file=? name=FUN_0046dd8c */
void __cdecl
FUN_0046dd8c(int param_1,int param_2,undefined4 param_3,int param_4,int param_5,int param_6,
int param_7)
{
int local_14;
int local_10;
int local_c;
int local_8;
if (*(int *)(param_1 + 0x14) != 0) {
FUN_0046e114(param_1,&local_8,&local_c,param_4,param_5);
FUN_0046e114(param_1,&local_10,&local_14,param_6,param_7);
(**(code **)(**(int **)(param_1 + 0x14) + 0x1c))
(*(int **)(param_1 + 0x14),*(undefined4 *)(param_1 + 0x28 + param_2 * 4),
*(undefined4 *)(param_1 + 0x52c),param_3,local_8 + *(int *)(param_1 + 4),
local_c + *(int *)(param_1 + 8),local_10 + *(int *)(param_1 + 4),
local_14 + *(int *)(param_1 + 8));
}
return;
}
/* @0046de14 file=? name=FUN_0046de14 */
void FUN_0046de14(void)
{
return;
}
/* @0046de1c file=? name=FUN_0046de1c */
void __cdecl
FUN_0046de1c(int param_1,int param_2,undefined4 param_3,int param_4,int param_5,int param_6,
int param_7,undefined4 param_8,undefined4 param_9,undefined4 param_10,
undefined4 param_11)
{
int iVar1;
int local_c;
int local_8;
if (((*(int *)(param_1 + 0x14) != 0) && (param_7 != 0)) && (*(int *)(param_7 + 0x18) != 0)) {
FUN_0046e114(param_1,&local_8,&local_c,param_5,param_6);
for (iVar1 = param_4 + *(int *)(param_1 + 0x528); iVar1 < 0; iVar1 = iVar1 + 0x168) {
}
for (; 0x167 < iVar1; iVar1 = iVar1 + -0x168) {
}
(**(code **)(**(int **)(param_1 + 0x14) + 0x24))
(*(int **)(param_1 + 0x14),*(undefined4 *)(param_1 + 0x28 + param_2 * 4),
*(undefined4 *)(param_1 + 0x52c),param_3,iVar1,local_8 + *(int *)(param_1 + 4),
local_c + *(int *)(param_1 + 8),param_7,param_8,param_9,param_10,param_11);
}
return;
}
/* @0046ded8 file=? name=FUN_0046ded8 */
void __cdecl
FUN_0046ded8(int param_1,int param_2,int param_3,undefined4 param_4,int param_5,int param_6,
int param_7,int param_8,undefined4 param_9,undefined4 param_10,undefined4 param_11,
undefined4 param_12)
{
int iVar1;
int local_c;
int local_8;
if (((*(int *)(param_1 + 0x14) != 0) && (param_8 != 0)) && (*(int *)(param_8 + 0x18) != 0)) {
FUN_0046e114(param_1,&local_8,&local_c,param_6,param_7);
for (iVar1 = param_5 + *(int *)(param_1 + 0x528); iVar1 < 0; iVar1 = iVar1 + 0x168) {
}
for (; 0x167 < iVar1; iVar1 = iVar1 + -0x168) {
}
(**(code **)(**(int **)(param_1 + 0x14) + 0x28))
(*(int **)(param_1 + 0x14),*(undefined4 *)(param_1 + 0x28 + param_2 * 4),
*(undefined4 *)(param_1 + 0x28 + param_3 * 4),*(undefined4 *)(param_1 + 0x52c),
param_4,iVar1,local_8 + *(int *)(param_1 + 4),local_c + *(int *)(param_1 + 8),param_8
,param_9,param_10,param_11,param_12);
}
return;
}
/* @0046df9c file=? name=FUN_0046df9c */
void __cdecl
FUN_0046df9c(int param_1,undefined4 param_2,undefined4 param_3,int param_4,int param_5,int param_6,
int param_7,undefined4 param_8,undefined4 param_9,undefined4 param_10,
undefined4 param_11)
{
int iVar1;
int local_c;
int local_8;
if (((*(int *)(param_1 + 0x14) != 0) && (param_7 != 0)) && (*(int *)(param_7 + 8) != 0)) {
FUN_0046e114(param_1,&local_8,&local_c,param_5,param_6);
for (iVar1 = param_4 + *(int *)(param_1 + 0x528); iVar1 < 0; iVar1 = iVar1 + 0x168) {
}
for (; 0x167 < iVar1; iVar1 = iVar1 + -0x168) {
}
(**(code **)(**(int **)(param_1 + 0x14) + 0x2c))
(*(int **)(param_1 + 0x14),param_1 + 0x28,*(undefined4 *)(param_1 + 0x52c),param_2,
param_3,iVar1,local_8 + *(int *)(param_1 + 4),local_c + *(int *)(param_1 + 8),param_7
,param_8,param_9,param_10,param_11);
}
return;
}
/* @0046e058 file=? name=FUN_0046e058 */
void __cdecl
FUN_0046e058(int param_1,int param_2,undefined4 param_3,int param_4,int param_5,int param_6,
int param_7,undefined4 param_8,undefined4 param_9,undefined4 param_10,
undefined4 param_11)
{
int iVar1;
int local_c;
int local_8;
if (((*(int *)(param_1 + 0x14) != 0) && (param_7 != 0)) && (*(int *)(param_7 + 8) != 0)) {
FUN_0046e114(param_1,&local_8,&local_c,param_5,param_6);
for (iVar1 = param_4 + *(int *)(param_1 + 0x528); iVar1 < 0; iVar1 = iVar1 + 0x168) {
}
for (; 0x167 < iVar1; iVar1 = iVar1 + -0x168) {
}
(**(code **)(**(int **)(param_1 + 0x14) + 0x30))
(*(int **)(param_1 + 0x14),*(undefined4 *)(param_1 + 0x28 + param_2 * 4),
*(undefined4 *)(param_1 + 0x52c),param_3,iVar1,local_8 + *(int *)(param_1 + 4),
local_c + *(int *)(param_1 + 8),param_7,param_8,param_9,param_10,param_11);
}
return;
}
/* @0046e114 file=? name=FUN_0046e114 */
void __cdecl FUN_0046e114(int param_1,int *param_2,int *param_3,int param_4,int param_5)
{
int iVar1;
iVar1 = *(int *)(param_1 + 0x528);
if (iVar1 == 0x5a) {
*param_2 = param_5;
*param_3 = *(int *)(param_1 + 0x538) - param_4;
}
else if (iVar1 == 0xb4) {
*param_2 = *(int *)(param_1 + 0x534) - param_4;
*param_3 = *(int *)(param_1 + 0x538) - param_5;
}
else if (iVar1 == 0x10e) {
*param_2 = *(int *)(param_1 + 0x534) - param_5;
*param_3 = param_4;
}
else {
*param_2 = param_4;
*param_3 = param_5;
}
return;
}
/* @0046e180 file=? name=FUN_0046e180 */
void __cdecl FUN_0046e180(int param_1,int param_2)
{
byte *pbVar1;
byte *pbVar2;
byte bVar3;
byte *pbVar4;
int iVar5;
uint *puVar6;
pbVar4 = (byte *)(param_2 + 4);
*(undefined4 *)(param_1 + 0x52c) = 0xffff;
puVar6 = (uint *)(param_1 + 0x28);
iVar5 = 0x100;
do {
pbVar1 = pbVar4 + 1;
bVar3 = *pbVar4;
pbVar2 = pbVar4 + 2;
pbVar4 = pbVar4 + 3;
iVar5 = iVar5 + -1;
*puVar6 = ((int)(uint)bVar3 >> 3) << 0xb | ((int)(uint)*pbVar1 >> 2) << 5 |
(int)(uint)*pbVar2 >> 3;
puVar6 = puVar6 + 1;
} while (0 < iVar5);
return;
}
/* @0046e1e4 file=? name=FUN_0046e1e4 */
void __cdecl FUN_0046e1e4(int param_1,int param_2)
{
int iVar1;
int iVar2;
int iVar3;
undefined1 *puVar4;
uint local_14 [3];
undefined1 *local_8;
if (*(int *)(param_1 + 0x14) != 0) {
FUN_0046aa78(local_14,*(uint *)(param_1 + 0x52c) & 0xff,8);
iVar3 = *(int *)(param_1 + 0x53c) * 0x31c + *(int *)(param_1 + 0x14);
puVar4 = (undefined1 *)(param_2 + 4);
iVar1 = 0;
do {
*(undefined1 *)(param_1 + 0x428 + local_14[0]) = 0;
iVar1 = iVar1 + 1;
} while (iVar1 < 0x100);
if ((*(byte *)(param_1 + 0x540) & 0x80) != 0) {
puVar4 = (undefined1 *)(param_2 + 7);
FUN_0046aab0(local_14);
}
do {
do {
*(undefined1 *)(param_1 + 0x428 + local_14[0]) = 1;
iVar2 = local_14[0] * 3 + iVar3 + 0x80;
iVar1 = *(int *)(param_1 + 0x540);
if (iVar1 < 0x81) {
if ((iVar1 == 0x80) || (iVar1 == 0)) {
*(undefined1 *)(iVar2 + 0xc) = *puVar4;
}
else {
if (iVar1 == 1) goto LAB_0046e2b2;
if (iVar1 == 2) goto LAB_0046e2ba;
if (iVar1 == 3) goto LAB_0046e2c2;
}
}
else if (iVar1 == 0x81) {
LAB_0046e2b2:
*(undefined1 *)(iVar2 + 0xd) = puVar4[1];
}
else if (iVar1 == 0x82) {
LAB_0046e2ba:
*(undefined1 *)(iVar2 + 0xe) = puVar4[2];
}
else if (iVar1 == 0x83) {
LAB_0046e2c2:
*(undefined1 *)(iVar2 + 0xc) = *puVar4;
*(undefined1 *)(iVar2 + 0xd) = puVar4[1];
*(undefined1 *)(iVar2 + 0xe) = puVar4[2];
local_8 = puVar4;
}
iVar1 = FUN_0046aae0(local_14);
} while (iVar1 != 0);
puVar4 = puVar4 + 3;
iVar1 = FUN_0046aab0(local_14);
} while (iVar1 != 0);
*(undefined4 *)(iVar3 + 0x88) = 1;
*(undefined4 *)(iVar3 + 0x84) = 1;
}
return;
}
/* @0046e31c file=? name=FUN_0046e31c */
void __cdecl FUN_0046e31c(int param_1,undefined1 *param_2,int param_3)
{
int iVar1;
int iVar2;
int iVar3;
uint local_10 [3];
if (*(int *)(param_1 + 0x14) == 0) {
return;
}
FUN_0046aa78(local_10,*(uint *)(param_1 + 0x52c) & 0xff,8);
iVar3 = 0;
iVar2 = *(int *)(param_1 + 0x53c) * 0x31c + *(int *)(param_1 + 0x14);
if ((*(byte *)(param_1 + 0x540) & 0x80) != 0) {
iVar3 = 1;
FUN_0046aab0(local_10);
}
do {
if (iVar3 == param_3) goto LAB_0046e38f;
iVar3 = iVar3 + 1;
iVar1 = FUN_0046aab0(local_10);
} while (iVar1 != 0);
goto LAB_0046e42f;
LAB_0046e38f:
do {
if (*(char *)(param_1 + 0x428 + local_10[0]) != '\0') {
iVar3 = *(int *)(param_1 + 0x540);
iVar1 = local_10[0] * 3 + iVar2;
if (iVar3 < 0x81) {
if ((iVar3 == 0x80) || (iVar3 == 0)) {
*(undefined1 *)(iVar1 + 0x8c) = *param_2;
}
else {
if (iVar3 == 1) goto LAB_0046e3df;
if (iVar3 == 2) goto LAB_0046e3ea;
if (iVar3 == 3) goto LAB_0046e3f5;
}
}
else if (iVar3 == 0x81) {
LAB_0046e3df:
*(undefined1 *)(iVar1 + 0x8d) = param_2[1];
}
else if (iVar3 == 0x82) {
LAB_0046e3ea:
*(undefined1 *)(iVar1 + 0x8e) = param_2[2];
}
else if (iVar3 == 0x83) {
LAB_0046e3f5:
*(undefined1 *)(iVar1 + 0x8c) = *param_2;
*(undefined1 *)(iVar1 + 0x8d) = param_2[1];
*(undefined1 *)(iVar1 + 0x8e) = param_2[2];
}
}
iVar3 = FUN_0046aae0(local_10);
} while (iVar3 != 0);
LAB_0046e42f:
*(undefined4 *)(iVar2 + 0x88) = 1;
*(undefined4 *)(iVar2 + 0x84) = 1;
return;
}
/* @0046e444 file=? name=FUN_0046e444 */
void __cdecl FUN_0046e444(int param_1)
{
int iVar1;
int iVar2;
int iVar3;
int iVar4;
uint local_18 [3];
undefined1 local_9;
int local_8;
if (*(int *)(param_1 + 0x14) != 0) {
FUN_0046aa78(local_18,*(int *)(param_1 + 0x52c) >> 8 & 0xff,8);
iVar4 = *(int *)(param_1 + 0x53c) * 0x31c + *(int *)(param_1 + 0x14);
iVar1 = FUN_0046ab18((int)local_18);
iVar2 = (int)(0x1fe0 / (longlong)((1 << ((byte)iVar1 & 0x1f)) + -1));
iVar1 = 0;
local_8 = iVar2;
if ((*(byte *)(param_1 + 0x540) & 0x80) != 0) {
FUN_0046aab0(local_18);
iVar1 = iVar2;
}
do {
local_9 = (undefined1)(iVar1 >> 5);
iVar1 = iVar1 + local_8;
do {
iVar3 = local_18[0] * 3 + iVar4 + 0x80;
iVar2 = *(int *)(param_1 + 0x540);
if (iVar2 < 0x81) {
if ((iVar2 == 0x80) || (iVar2 == 0)) {
*(undefined1 *)(iVar3 + 0xc) = local_9;
}
else {
if (iVar2 == 1) goto LAB_0046e520;
if (iVar2 == 2) goto LAB_0046e528;
if (iVar2 == 3) goto LAB_0046e530;
}
}
else if (iVar2 == 0x81) {
LAB_0046e520:
*(undefined1 *)(iVar3 + 0xd) = local_9;
}
else if (iVar2 == 0x82) {
LAB_0046e528:
*(undefined1 *)(iVar3 + 0xe) = local_9;
}
else if (iVar2 == 0x83) {
LAB_0046e530:
*(undefined1 *)(iVar3 + 0xc) = local_9;
*(undefined1 *)(iVar3 + 0xd) = local_9;
*(undefined1 *)(iVar3 + 0xe) = local_9;
}
iVar2 = FUN_0046aae0(local_18);
} while (iVar2 != 0);
iVar2 = FUN_0046aab0(local_18);
} while (iVar2 != 0);
*(undefined4 *)(iVar4 + 0x88) = 1;
*(undefined4 *)(iVar4 + 0x84) = 1;
}
return;
}
/* @0046e578 file=? name=FUN_0046e578 */
void __cdecl FUN_0046e578(int param_1)
{
int iVar1;
int iVar2;
int iVar3;
uint local_10 [3];
if (*(int *)(param_1 + 0x14) != 0) {
FUN_0046aa78(local_10,*(int *)(param_1 + 0x52c) >> 8 & 0xff,8);
iVar3 = *(int *)(param_1 + 0x53c) * 0x31c + *(int *)(param_1 + 0x14);
do {
iVar1 = local_10[0] * 3 + iVar3 + 0x80;
iVar2 = *(int *)(param_1 + 0x540);
if (iVar2 < 0x81) {
if ((iVar2 == 0x80) || (iVar2 == 0)) {
*(undefined1 *)(iVar1 + 0xc) = 0;
}
else {
if (iVar2 == 1) goto LAB_0046e60d;
if (iVar2 == 2) goto LAB_0046e612;
if (iVar2 == 3) goto LAB_0046e617;
}
}
else if (iVar2 == 0x81) {
LAB_0046e60d:
*(undefined1 *)(iVar1 + 0xd) = 0;
}
else if (iVar2 == 0x82) {
LAB_0046e612:
*(undefined1 *)(iVar1 + 0xe) = 0;
}
else if (iVar2 == 0x83) {
LAB_0046e617:
*(undefined1 *)(iVar1 + 0xc) = 0;
*(undefined1 *)(iVar1 + 0xd) = 0;
*(undefined1 *)(iVar1 + 0xe) = 0;
}
iVar2 = FUN_0046aae0(local_10);
} while ((iVar2 != 0) || (iVar2 = FUN_0046aab0(local_10), iVar2 != 0));
*(undefined4 *)(iVar3 + 0x88) = 1;
*(undefined4 *)(iVar3 + 0x84) = 1;
}
return;
}
/* @0046e650 file=? name=FUN_0046e650 */
void __cdecl FUN_0046e650(int param_1)
{
int iVar1;
uint *puVar2;
uint local_10 [3];
FUN_0046aa78(local_10,*(uint *)(param_1 + 0x52c) & 0xff,8);
puVar2 = (uint *)(param_1 + 0x28);
do {
*puVar2 = local_10[0];
puVar2 = puVar2 + 1;
iVar1 = FUN_0046aab0(local_10);
} while (iVar1 != 0);
return;
}
/* @0046e694 file=? name=FUN_0046e694 */
void __cdecl FUN_0046e694(int param_1)
{
int iVar1;
int *piVar2;
int iVar3;
uint local_10 [3];
FUN_0046aa78(local_10,*(int *)(param_1 + 0x52c) >> 8 & 0xff,8);
piVar2 = (int *)(param_1 + 0x28);
do {
iVar3 = local_10[0] << 8;
do {
*piVar2 = iVar3;
piVar2 = piVar2 + 1;
iVar1 = FUN_0046aae0(local_10);
} while (iVar1 != 0);
iVar3 = FUN_0046aab0(local_10);
} while (iVar3 != 0);
return;
}
/* @0046e6ec file=? name=FUN_0046e6ec */
int __cdecl FUN_0046e6ec(int param_1)
{
FUN_004498a8((undefined4 *)(param_1 + 8));
return param_1;
}
/* @0046e702 file=? name=FUN_0046e702 */
void __cdecl FUN_0046e702(int *param_1,byte param_2)
{
if (param_1 != (int *)0x0) {
FUN_00449994(param_1 + 2,2);
if ((param_2 & 1) != 0) {
FUN_004022d0(param_1);
}
}
return;
}
/* @0046e72c file=? name=FUN_0046e72c */
undefined4 * __cdecl
FUN_0046e72c(undefined4 *param_1,char *param_2,undefined4 param_3,undefined4 param_4)
{
char cVar1;
uint uVar2;
uint uVar3;
char *pcVar4;
char *pcVar5;
*(undefined1 *)(param_1 + 2) = 0;
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 + 2);
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;
}
*(undefined1 *)((int)param_1 + 0x47) = 0;
*param_1 = param_3;
param_1[1] = param_4;
param_1[0x12] = DAT_00522cc8;
DAT_00522cc8 = param_1;
return param_1;
}
/* @0046e788 file=? name=FUN_0046e788 */
undefined4 __cdecl FUN_0046e788(char *param_1)
{
char *pcVar1;
bool bVar2;
int *piVar3;
char *pcVar4;
uint uVar5;
undefined4 *puVar6;
char *pcVar7;
char *pcVar8;
int iVar9;
undefined4 uVar10;
bool bVar11;
char local_120 [256];
int local_20;
uint local_1c;
int *local_18;
int *local_14;
int *local_10;
int *local_c;
int *local_8;
uVar10 = 0;
piVar3 = (int *)FUN_00402298(0x20);
if (piVar3 == (int *)0x0) {
local_8 = (int *)0x0;
}
else {
local_8 = FUN_00403e84(piVar3,param_1,1);
}
local_c = FUN_00404720((int)local_8,s_colors_004f4da5,(char *)0x0);
if (local_c == (int *)0x0) {
FUN_004dbb24(&DAT_00524e20,param_1,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s_has_no__colors__page__004f4dac,(char *)0x0);
FUN_004d9c38(&DAT_00524e20);
}
local_10 = FUN_00404720((int)local_8,s_attributes_004f4dc3,(char *)0x0);
if (local_10 == (int *)0x0) {
FUN_004dbb24(&DAT_00524e20,param_1,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s_has_no__attributes__page__004f4dce,(char *)0x0);
FUN_004d9c38(&DAT_00524e20);
}
local_14 = FUN_00404720((int)local_8,s_groups_004f4de9,(char *)0x0);
if (local_14 == (int *)0x0) {
FUN_004dbb24(&DAT_00524e20,param_1,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s_has_no__groups__page__004f4df0,(char *)0x0);
FUN_004d9c38(&DAT_00524e20);
}
if (((local_10 != (int *)0x0) && (local_c != (int *)0x0)) && (local_14 != (int *)0x0)) {
DAT_00522cc8 = 0;
local_18 = (int *)local_14[1];
while (local_18 != (int *)0x0) {
pcVar8 = (char *)local_18[1];
local_1c = 0;
local_20 = 0;
if (pcVar8 == (char *)0x0) {
FUN_004dbb24(&DAT_00524e20,(char *)0x0,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s_is_an_empty__GAT_group__004f4e07,(char *)0x0);
FUN_004d9c38(&DAT_00524e20);
}
else {
while (*pcVar8 != '\0') {
while (((&DAT_005207dd)[*pcVar8] & 1) != 0) {
pcVar8 = pcVar8 + 1;
}
iVar9 = 0;
pcVar4 = local_120;
do {
if (((&DAT_005207dd)[*pcVar8] & 0xe) == 0) break;
*pcVar4 = *pcVar8;
iVar9 = iVar9 + 1;
pcVar4 = pcVar4 + 1;
pcVar8 = pcVar8 + 1;
} while (iVar9 < 0xff);
*pcVar4 = '\0';
bVar2 = false;
for (puVar6 = (undefined4 *)local_c[1]; puVar6 != (undefined4 *)0x0;
puVar6 = (undefined4 *)*puVar6) {
pcVar4 = (char *)(puVar6 + 2);
pcVar7 = local_120;
do {
if (*pcVar4 != *pcVar7) goto LAB_0046e9ab;
bVar11 = true;
if (*pcVar4 == '\0') break;
pcVar1 = pcVar4 + 1;
if (*pcVar1 != pcVar7[1]) goto LAB_0046e9ab;
pcVar4 = pcVar4 + 2;
pcVar7 = pcVar7 + 2;
bVar11 = *pcVar1 == '\0';
} while (!bVar11);
if (bVar11) {
local_20 = FUN_004dd1e0((char *)puVar6[1]);
bVar2 = true;
break;
}
LAB_0046e9ab:
}
if (!bVar2) {
bVar2 = false;
for (puVar6 = (undefined4 *)local_10[1]; puVar6 != (undefined4 *)0x0;
puVar6 = (undefined4 *)*puVar6) {
pcVar4 = (char *)(puVar6 + 2);
pcVar7 = local_120;
do {
if (*pcVar4 != *pcVar7) goto LAB_0046ea00;
bVar11 = true;
if (*pcVar4 == '\0') break;
pcVar1 = pcVar4 + 1;
if (*pcVar1 != pcVar7[1]) goto LAB_0046ea00;
pcVar4 = pcVar4 + 2;
pcVar7 = pcVar7 + 2;
bVar11 = *pcVar1 == '\0';
} while (!bVar11);
if (bVar11) {
uVar5 = FUN_004dd1e0((char *)puVar6[1]);
local_1c = local_1c | uVar5;
bVar2 = true;
break;
}
LAB_0046ea00:
}
if (!bVar2) {
FUN_004dbb24(&DAT_00524e20,s_Attribute___004f4e20,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,local_120,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s___not_found__004f4e2c,(char *)0x0);
FUN_004d9c38(&DAT_00524e20);
}
}
}
}
puVar6 = (undefined4 *)FUN_00402298(0x4c);
if (puVar6 != (undefined4 *)0x0) {
FUN_0046e72c(puVar6,(char *)(local_18 + 2),local_20,local_1c);
}
local_18 = (int *)*local_18;
}
if (local_c != (int *)0x0) {
(**(code **)*local_c)(local_c,3);
}
if (local_10 != (int *)0x0) {
(**(code **)*local_10)(local_10,3);
}
if (local_14 != (int *)0x0) {
(**(code **)*local_14)(local_14,3);
}
uVar10 = 1;
}
FUN_00403ecc(local_8,3);
return uVar10;
}
/* @0046eaf0 file=? name=FUN_0046eaf0 */
void FUN_0046eaf0(void)
{
int *piVar1;
int *piVar2;
piVar1 = DAT_00522cc8;
while (piVar2 = piVar1, piVar2 != (int *)0x0) {
piVar1 = (int *)piVar2[0x12];
if (piVar2 != (int *)0x0) {
FUN_004022d0(piVar2);
}
}
DAT_00522cc8 = (int *)0x0;
return;
}
/* @0046eb18 file=? name=FUN_0046eb18 */
undefined4 __cdecl FUN_0046eb18(char *param_1,undefined4 *param_2,undefined4 *param_3)
{
undefined4 *puVar1;
int iVar2;
puVar1 = DAT_00522cc8;
while( true ) {
if (puVar1 == (undefined4 *)0x0) {
return 0;
}
iVar2 = FUN_004d4ae0(param_1,(char *)(puVar1 + 2),0x40);
if (iVar2 == 0) break;
puVar1 = (undefined4 *)puVar1[0x12];
}
*param_2 = *puVar1;
*param_3 = puVar1[1];
return 1;
}
/* @0046eb64 file=? name=FUN_0046eb64 */
undefined4 FUN_0046eb64(void)
{
return 0;
}
/* @0046eb6c file=? name=FUN_0046eb6c */
int * __cdecl FUN_0046eb6c(int param_1)
{
int iVar1;
int iVar2;
int *piVar3;
int local_14 [4];
piVar3 = (int *)0x0;
iVar2 = FUN_00407064(*(int *)(DAT_004efc94 + 0x68),param_1,0x12);
if (iVar2 != 0) {
iVar1 = *(int *)(iVar2 + 4);
*(int *)(iVar2 + 4) = *(int *)(iVar2 + 4) + 1;
if (iVar1 == 0) {
FUN_00406cd0(iVar2);
}
FUN_004030dc(local_14,*(undefined4 *)(iVar2 + 0x3c),*(undefined4 *)(iVar2 + 0x40),0);
if (*(int *)(iVar2 + 0x3c) != 0) {
piVar3 = (int *)FUN_00402298(0x14);
if (piVar3 == (int *)0x0) {
piVar3 = (int *)0x0;
}
else {
piVar3 = FUN_0046ebf0(piVar3,local_14);
}
}
*(int *)(iVar2 + 4) = *(int *)(iVar2 + 4) + -1;
}
return piVar3;
}
/* @0046ebf0 file=? name=FUN_0046ebf0 */
int * __cdecl FUN_0046ebf0(int *param_1,int *param_2)
{
int extraout_EAX;
int *piVar1;
int iVar2;
int *piVar3;
(**(code **)(*param_2 + 0x1c))(param_2,param_1,4);
piVar3 = FUN_004de998((int *)0x0,0xc,*param_1,1,&LAB_0046f974);
param_1[2] = extraout_EAX;
for (iVar2 = 0; iVar2 < *param_1; iVar2 = iVar2 + 1) {
(**(code **)(*piVar3 + 0x1c))(piVar3,iVar2 * 0xc + param_1[2],0xc);
}
(**(code **)(*piVar3 + 0x1c))(piVar3,param_1 + 1,4);
iVar2 = FUN_004022b0(param_1[1] << 2);
param_1[3] = iVar2;
for (iVar2 = 0; iVar2 < param_1[1]; iVar2 = iVar2 + 1) {
(**(code **)(*piVar3 + 0x1c))(piVar3,iVar2 * 4 + param_1[3],4);
}
iVar2 = FUN_004022b0(param_1[1] << 2);
param_1[4] = iVar2;
for (iVar2 = 0; iVar2 < param_1[1]; iVar2 = iVar2 + 1) {
piVar1 = (int *)FUN_00402298(8);
if (piVar1 == (int *)0x0) {
piVar1 = (int *)0x0;
}
else {
piVar1 = FUN_0046f190(piVar1,piVar3);
}
*(int **)(param_1[4] + iVar2 * 4) = piVar1;
}
return param_1;
}
/* @0046ecdc file=? name=FUN_0046ecdc */
void __cdecl FUN_0046ecdc(int *param_1,byte param_2)
{
int iVar1;
if (param_1 != (int *)0x0) {
FUN_004022e8((int *)param_1[2]);
FUN_004022e8((int *)param_1[3]);
for (iVar1 = 0; iVar1 < param_1[1]; iVar1 = iVar1 + 1) {
FUN_0046f1f0(*(int **)(param_1[4] + iVar1 * 4),3);
}
FUN_004022e8((int *)param_1[4]);
if ((param_2 & 1) != 0) {
FUN_004022d0(param_1);
}
}
return;
}
/* @0046ed34 file=? name=FUN_0046ed34 */
undefined4 __cdecl FUN_0046ed34(int param_1,char *param_2,int param_3,int param_4)
{
int iVar1;
int *piVar2;
int *piVar3;
int *piVar4;
undefined4 *puVar5;
int *piVar6;
char *local_10;
char *local_c;
undefined4 local_8;
local_8 = 0xffffffff;
iVar1 = FUN_00404088(param_3,s_gauge_004f4e39,s_image_004f4e3f,&local_c);
if (iVar1 != 0) {
piVar2 = (int *)FUN_004064fc(*(char **)(param_4 + 0x14),local_c);
piVar3 = (int *)FUN_00402298(0x20);
if (piVar3 == (int *)0x0) {
piVar3 = (int *)0x0;
}
else {
piVar3 = FUN_00403e84(piVar3,(char *)piVar2,1);
}
iVar1 = FUN_00404088((int)piVar3,s_object_004f4e45,s_gatfile_004f4e4c,&local_10);
if (iVar1 == 0) {
FUN_004dbb24(&DAT_00524e20,s_Missing__gat_specification__004f4e54,(char *)0x0);
FUN_004d9c38(&DAT_00524e20);
}
else {
piVar4 = (int *)FUN_004064fc(*(char **)(param_4 + 0x14),local_10);
iVar1 = FUN_0046e788((char *)piVar4);
if (iVar1 != 0) {
puVar5 = (undefined4 *)FUN_00402298(0x18);
if (puVar5 == (undefined4 *)0x0) {
piVar6 = (int *)0x0;
}
else {
piVar6 = FUN_0040328c(puVar5,0);
}
iVar1 = FUN_0046ee84(piVar6,(int)piVar3);
if (iVar1 == 1) {
puVar5 = (undefined4 *)FUN_00406f3c(param_1,param_2,0x12,1,0,piVar6,-1);
local_8 = *puVar5;
}
FUN_0046eaf0();
FUN_00403310(piVar6,3);
}
FUN_004022d0(piVar4);
}
FUN_00403ecc(piVar3,3);
FUN_004022d0(piVar2);
}
return local_8;
}
/* @0046ee84 file=? name=FUN_0046ee84 */
int __cdecl FUN_0046ee84(int *param_1,int param_2)
{
undefined4 *puVar1;
int iVar2;
int iVar3;
float10 fVar4;
float local_28 [3];
int local_1c;
float local_18;
int local_14;
int *local_10;
int local_c;
int *local_8;
iVar3 = 1;
local_8 = FUN_00404720(param_2,s_vertices_004f4e70,(char *)0x0);
if (local_8 == (int *)0x0) {
FUN_004dbb24(&DAT_00524e20,s_No__vertices__page_in_the__GIM_f_004f4e79,(char *)0x0);
FUN_004d9c38(&DAT_00524e20);
iVar3 = 0;
}
else {
local_c = FUN_00403b60((int)local_8);
if (local_c < 1) {
FUN_004dbb24(&DAT_00524e20,s_The__vertices__page_in_the__GIM_f_004f4e9e,(char *)0x0);
FUN_004d9c38(&DAT_00524e20);
iVar3 = 0;
}
else {
(**(code **)(*param_1 + 0x20))(param_1,&local_c,4);
puVar1 = (undefined4 *)local_8[1];
iVar2 = 0;
if (0 < local_c) {
do {
FUN_00408944((char *)puVar1[1],local_28);
(**(code **)(*param_1 + 0x20))(param_1,local_28,0xc);
puVar1 = (undefined4 *)*puVar1;
iVar2 = iVar2 + 1;
} while (iVar2 < local_c);
}
}
if (local_8 != (int *)0x0) {
(**(code **)*local_8)(local_8,3);
}
}
if (iVar3 == 1) {
local_10 = FUN_00404720(param_2,&DAT_004f4ed3,(char *)0x0);
if (local_10 == (int *)0x0) {
FUN_004dbb24(&DAT_00524e20,s_No__lods__page_in_the__GIM_file__004f4ed8,(char *)0x0);
FUN_004d9c38(&DAT_00524e20);
iVar3 = 0;
}
else {
local_14 = FUN_00403b60((int)local_10);
if (local_14 < 1) {
FUN_004dbb24(&DAT_00524e20,s_The__lod__page_in_the__GIM_file_h_004f4ef9,(char *)0x0);
FUN_004d9c38(&DAT_00524e20);
iVar3 = 0;
}
else {
(**(code **)(*param_1 + 0x20))(param_1,&local_14,4);
iVar2 = 0;
puVar1 = (undefined4 *)local_10[1];
if (0 < local_14) {
do {
local_1c = puVar1[1];
if (local_1c == 0) {
FUN_004dbb24(&DAT_00524e20,s_Missing_scale_value__004f4f29,(char *)0x0);
FUN_004d9c38(&DAT_00524e20);
iVar3 = 0;
break;
}
fVar4 = (float10)FUN_004dd1cc(local_1c);
local_18 = (float)fVar4;
(**(code **)(*param_1 + 0x20))(param_1,&local_18,4);
puVar1 = (undefined4 *)*puVar1;
iVar2 = iVar2 + 1;
} while (iVar2 < local_14);
}
iVar2 = 0;
puVar1 = (undefined4 *)local_10[1];
if (0 < local_14) {
do {
iVar3 = FUN_0046f234(param_1,param_2,(char *)(puVar1 + 2));
if (iVar3 == 0) break;
puVar1 = (undefined4 *)*puVar1;
iVar2 = iVar2 + 1;
} while (iVar2 < local_14);
}
}
}
if (local_10 != (int *)0x0) {
(**(code **)*local_10)(local_10,3);
}
}
return iVar3;
}
/* @0046f0c0 file=? name=FUN_0046f0c0 */
void __cdecl
FUN_0046f0c0(int *param_1,float param_2,float param_3,int *param_4,int param_5,float *param_6,
int param_7)
{
int iVar1;
undefined4 *puVar2;
float *pfVar3;
int iVar4;
float local_34 [12];
if (DAT_004f4da4 == '\0') {
FUN_004de998((int *)&DAT_00522ccc,0xc,100,1,&LAB_0046f974);
DAT_004f4da4 = DAT_004f4da4 + '\x01';
}
FUN_0040aadc(local_34);
iVar1 = FUN_0040af88(param_6,local_34);
if (iVar1 == 0) {
iVar1 = 0;
for (pfVar3 = (float *)param_1[3]; (iVar1 < param_1[1] && (*pfVar3 < param_2));
pfVar3 = pfVar3 + 1) {
iVar1 = iVar1 + 1;
}
if (iVar1 < param_1[1]) {
puVar2 = &DAT_0052317c;
for (iVar4 = 0; iVar4 < *param_1; iVar4 = iVar4 + 1) {
*puVar2 = 0;
puVar2 = puVar2 + 1;
}
FUN_0046f374(*(int **)(param_1[4] + iVar1 * 4),param_4,param_5,param_6,param_1[2],0x522ccc,
0x52317c,param_3,param_7);
}
}
return;
}
/* @0046f184 file=? name=FUN_0046f184 */
undefined4 FUN_0046f184(void)
{
return 1;
}
/* @0046f190 file=? name=FUN_0046f190 */
int * __cdecl FUN_0046f190(int *param_1,int *param_2)
{
int iVar1;
int iVar2;
(**(code **)(*param_2 + 0x1c))(param_2,param_1,4);
iVar1 = FUN_004022b0(*param_1 << 2);
param_1[1] = iVar1;
for (iVar1 = 0; iVar1 < *param_1; iVar1 = iVar1 + 1) {
iVar2 = FUN_00402298(0x14);
if (iVar2 == 0) {
iVar2 = 0;
}
else {
iVar2 = FUN_0046f468(iVar2,param_2);
}
*(int *)(param_1[1] + iVar1 * 4) = iVar2;
}
return param_1;
}
/* @0046f1f0 file=? name=FUN_0046f1f0 */
void __cdecl FUN_0046f1f0(int *param_1,byte param_2)
{
int iVar1;
if (param_1 != (int *)0x0) {
for (iVar1 = 0; iVar1 < *param_1; iVar1 = iVar1 + 1) {
FUN_0046f500(*(int **)(param_1[1] + iVar1 * 4),3);
}
FUN_004022e8((int *)param_1[1]);
if ((param_2 & 1) != 0) {
FUN_004022d0(param_1);
}
}
return;
}
/* @0046f234 file=? name=FUN_0046f234 */
int __cdecl FUN_0046f234(int *param_1,int param_2,char *param_3)
{
undefined4 *puVar1;
int iVar2;
int iVar3;
int local_c;
int *local_8;
iVar2 = 1;
local_8 = FUN_00404720(param_2,param_3,(char *)0x0);
if (local_8 == (int *)0x0) {
FUN_004dbb24(&DAT_00524e20,s_Can_t_find_the___004f4f3e,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,param_3,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s___page_in_the__GIM_file__004f4f4f,(char *)0x0);
FUN_004d9c38(&DAT_00524e20);
iVar2 = 0;
}
else {
local_c = FUN_00403b60((int)local_8);
if (local_c < 1) {
FUN_004dbb24(&DAT_00524e20,s_The___004f4f68,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,param_3,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s___page_in_the__GIM_file_has_no_e_004f4f6e,(char *)0x0);
FUN_004d9c38(&DAT_00524e20);
iVar2 = 0;
}
else {
(**(code **)(*param_1 + 0x20))(param_1,&local_c,4);
iVar3 = 0;
puVar1 = (undefined4 *)local_8[1];
if (0 < local_c) {
do {
iVar2 = FUN_0046f530(param_1,(char *)(puVar1 + 2),(char *)puVar1[1]);
if (iVar2 == 0) break;
puVar1 = (undefined4 *)*puVar1;
iVar3 = iVar3 + 1;
} while (iVar3 < local_c);
}
}
if (local_8 != (int *)0x0) {
(**(code **)*local_8)(local_8,3);
}
}
return iVar2;
}
/* @0046f368 file=? name=FUN_0046f368 */
undefined4 FUN_0046f368(void)
{
return 1;
}
/* @0046f374 file=? name=FUN_0046f374 */
void __cdecl
FUN_0046f374(int *param_1,int *param_2,int param_3,float *param_4,int param_5,int param_6,
int param_7,float param_8,int param_9)
{
byte *pbVar1;
int iVar2;
int local_18;
int local_14;
int local_10;
int local_c;
undefined4 *local_8;
local_8 = (undefined4 *)param_1[1];
if (param_9 == 0) {
for (iVar2 = 0; iVar2 < *param_1; iVar2 = iVar2 + 1) {
pbVar1 = (byte *)*local_8;
local_8 = local_8 + 1;
FUN_0046f774(pbVar1,param_2,param_3,param_4,param_5,param_6,param_7,param_8,(int *)0x0);
}
}
else {
FUN_00407bd0(&local_18,9999,9999,0xffffd8f1,0xffffd8f1);
for (iVar2 = 0; iVar2 < *param_1; iVar2 = iVar2 + 1) {
pbVar1 = (byte *)*local_8;
local_8 = local_8 + 1;
FUN_0046f774(pbVar1,param_2,param_3,param_4,param_5,param_6,param_7,param_8,&local_18);
}
(**(code **)(*param_2 + 0x18))(param_2,param_9);
(**(code **)(*param_2 + 0x24))(param_2,local_18 + -4,local_14 + -4);
(**(code **)(*param_2 + 0x40))(param_2,local_10 + 4,local_c + 4);
}
return;
}
/* @0046f468 file=? name=FUN_0046f468 */
int __cdecl FUN_0046f468(int param_1,int *param_2)
{
undefined4 uVar1;
int iVar2;
int local_8;
(**(code **)(*param_2 + 0x1c))(param_2,&local_8,4);
*(int *)(param_1 + 8) = local_8;
if (local_8 == 0) {
(**(code **)(*param_2 + 0x1c))(param_2,param_1 + 4,4);
(**(code **)(*param_2 + 0x1c))(param_2,param_1,4);
(**(code **)(*param_2 + 0x1c))(param_2,param_1 + 0xc,4);
uVar1 = FUN_004022b0(*(int *)(param_1 + 0xc) << 2);
*(undefined4 *)(param_1 + 0x10) = uVar1;
for (iVar2 = 0; iVar2 < *(int *)(param_1 + 0xc); iVar2 = iVar2 + 1) {
(**(code **)(*param_2 + 0x1c))(param_2,iVar2 * 4 + *(int *)(param_1 + 0x10),4);
}
}
return param_1;
}
/* @0046f500 file=? name=FUN_0046f500 */
void __cdecl FUN_0046f500(int *param_1,byte param_2)
{
if (param_1 != (int *)0x0) {
if (param_1[2] == 0) {
FUN_004022e8((int *)param_1[4]);
}
if ((param_2 & 1) != 0) {
FUN_004022d0(param_1);
}
}
return;
}
/* @0046f530 file=? name=FUN_0046f530 */
/* WARNING: Type propagation algorithm not settling */
undefined4 __cdecl FUN_0046f530(int *param_1,char *param_2,char *param_3)
{
char cVar1;
int iVar2;
char *pcVar3;
char local_158 [64];
int local_118 [64];
undefined4 local_18;
int local_14 [4];
local_14[2] = 0;
local_14[1] = 0;
local_14[0] = 0;
local_18 = 1;
iVar2 = FUN_004d4b58(param_2,s_linelist_004f4f96);
if (iVar2 == 0) {
local_14[3] = 0;
(**(code **)(*param_1 + 0x20))(param_1,local_14 + 3,4);
while (*param_3 != '\0') {
while (((&DAT_005207dd)[*param_3] & 1) != 0) {
param_3 = param_3 + 1;
}
if (*param_3 == 'v') {
iVar2 = 0;
while( true ) {
param_3 = param_3 + 1;
if (((&DAT_005207dd)[*param_3] & 2) == 0) break;
iVar2 = (int)*param_3 + iVar2 * 10 + -0x30;
}
if (local_14[0] < 0x40) {
local_118[local_14[0]] = iVar2;
local_14[0] = local_14[0] + 1;
}
}
else if (*param_3 == 'a') {
iVar2 = 0;
pcVar3 = local_158;
do {
cVar1 = *param_3;
if ((((&DAT_005207dd)[cVar1] & 1) != 0) || (cVar1 == '\0')) break;
*pcVar3 = cVar1;
iVar2 = iVar2 + 1;
param_3 = param_3 + 1;
pcVar3 = pcVar3 + 1;
} while (iVar2 < 0x3f);
*pcVar3 = '\0';
iVar2 = FUN_0046eb18(local_158,local_14 + 1,local_14 + 2);
if (iVar2 == 0) {
FUN_004dbb24(&DAT_00524e20,s_Couldn_t_find_attribute_group___004f4f9f,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,local_158,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,&DAT_004f4fbf,(char *)0x0);
FUN_004d9c38(&DAT_00524e20);
}
}
}
(**(code **)(*param_1 + 0x20))(param_1,local_14 + 1,4);
(**(code **)(*param_1 + 0x20))(param_1,local_14 + 2,4);
if (local_14[0] == 0) {
FUN_004dbb24(&DAT_00524e20,s_No_vertex_indices_in_primitive__004f4fc2,(char *)0x0);
FUN_004d9c38(&DAT_00524e20);
local_18 = 0;
}
else {
(**(code **)(*param_1 + 0x20))(param_1,local_14,4);
iVar2 = 0;
if (0 < local_14[0]) {
do {
(**(code **)(*param_1 + 0x20))(param_1,local_118 + iVar2,4);
iVar2 = iVar2 + 1;
} while (iVar2 < local_14[0]);
}
}
}
else {
FUN_004dbb24(&DAT_00524e20,s_Unsupported_primitive___004f4fe2,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,param_2,(char *)0x0);
FUN_004dbb24(&DAT_00524e20,s___in__GIM_file__004f4ffa,(char *)0x0);
FUN_004d9c38(&DAT_00524e20);
local_18 = 0;
}
return local_18;
}
/* @0046f768 file=? name=FUN_0046f768 */
undefined4 FUN_0046f768(void)
{
return 1;
}
/* @0046f774 file=? name=FUN_0046f774 */
int __cdecl
FUN_0046f774(byte *param_1,int *param_2,int param_3,float *param_4,int param_5,int param_6,
int param_7,float param_8,int *param_9)
{
int iVar1;
int iVar2;
undefined4 uVar3;
undefined4 uVar4;
int *piVar5;
iVar2 = *(int *)(param_1 + 8) + -1;
if ((*(int *)(param_1 + 8) == 0) && (1 < *(int *)(param_1 + 0xc))) {
if (*(int *)(param_1 + 4) != 0) {
param_3 = *(int *)(param_1 + 4);
}
(**(code **)(*param_2 + 0x18))(param_2,param_3);
piVar5 = *(int **)(param_1 + 0x10);
iVar2 = *piVar5;
FUN_0046f888(param_1,param_4,(float *)(iVar2 * 0xc + param_5),(float *)(iVar2 * 0xc + param_6),
(int *)(iVar2 * 4 + param_7),param_8,param_9);
uVar3 = FUN_004dcd94();
uVar4 = FUN_004dcd94();
(**(code **)(*param_2 + 0x24))(param_2,uVar4,uVar3);
iVar2 = *(int *)(param_1 + 0xc);
while (iVar2 = iVar2 + -1, 0 < iVar2) {
piVar5 = piVar5 + 1;
iVar1 = *piVar5;
FUN_0046f888(param_1,param_4,(float *)(iVar1 * 0xc + param_5),(float *)(iVar1 * 0xc + param_6)
,(int *)(iVar1 * 4 + param_7),param_8,param_9);
uVar3 = FUN_004dcd94();
uVar4 = FUN_004dcd94();
(**(code **)(*param_2 + 0x30))(param_2,uVar4,uVar3);
}
}
return iVar2;
}
/* @0046f888 file=? name=FUN_0046f888 */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
void __cdecl
FUN_0046f888(byte *param_1,float *param_2,float *param_3,float *param_4,int *param_5,float param_6,
int *param_7)
{
int iVar1;
float local_14 [3];
float local_8;
if (*param_5 == 0) {
if ((*param_1 & 1) == 0) {
FUN_00408b98(param_4,param_3,param_2);
}
else {
FUN_00408440(local_14,param_3);
local_8 = param_6;
FUN_004086ac(local_14,local_14,param_6);
FUN_00408b98(param_4,local_14,param_2);
}
*param_4 = *param_4 + _DAT_0046f970;
param_4[2] = -param_4[2] + _DAT_0046f970;
*param_5 = 1;
}
if (param_7 != (int *)0x0) {
if (*param_4 < (float)*param_7) {
iVar1 = FUN_004dcd94();
*param_7 = iVar1;
}
if ((float)param_7[2] < *param_4) {
iVar1 = FUN_004dcd94();
param_7[2] = iVar1;
}
if (param_4[2] < (float)param_7[1]) {
iVar1 = FUN_004dcd94();
param_7[1] = iVar1;
}
if ((float)param_7[3] < param_4[2]) {
iVar1 = FUN_004dcd94();
param_7[3] = iVar1;
}
}
return;
}
/* @0046f97c file=? name=FUN_0046f97c */
undefined4 * __cdecl FUN_0046f97c(undefined4 *param_1)
{
bool bVar1;
bool bVar2;
bool bVar3;
bool bVar4;
bool bVar5;
bool bVar6;
bool bVar7;
bool bVar8;
char *pcVar9;
char *pcVar10;
int iVar11;
undefined4 *puVar12;
undefined3 extraout_var;
undefined3 extraout_var_00;
undefined3 extraout_var_01;
undefined3 extraout_var_02;
undefined3 extraout_var_03;
undefined3 extraout_var_04;
undefined3 extraout_var_05;
undefined3 extraout_var_06;
int *piVar13;
int local_44 [8];
int local_24;
int local_20;
int local_1c;
int local_18;
int local_14;
int local_10;
int local_c;
uint local_8;
FUN_00447890(param_1);
*param_1 = &PTR_FUN_004f56a4;
param_1[0x714b] = 0;
param_1[0x714c] = 0;
param_1[0x714a] = 1;
param_1[0x714d] = 0;
pcVar9 = (char *)FUN_004dee74(s_L4GAUGE_004f5631);
if (pcVar9 != (char *)0x0) {
pcVar10 = (char *)FUN_004dee74(s_L4PLASMA_004f5639);
if (pcVar10 != (char *)0x0) {
iVar11 = FUN_004d4bec(pcVar10,&DAT_004f5642,4);
if (iVar11 == 0) {
puVar12 = (undefined4 *)FUN_00402298(100);
if (puVar12 == (undefined4 *)0x0) {
puVar12 = (undefined4 *)0x0;
}
else {
puVar12 = FUN_004750b4(puVar12,0x2f8,0xb);
}
param_1[0x714c] = puVar12;
}
else {
puVar12 = (undefined4 *)FUN_00402298(100);
if (puVar12 == (undefined4 *)0x0) {
puVar12 = (undefined4 *)0x0;
}
else {
puVar12 = FUN_004750b4(puVar12,0x3f8,0xc);
}
param_1[0x714c] = puVar12;
}
}
FUN_00403e84(local_44,s_GAUGE_L4GAUGE_INI_004f5647,1);
iVar11 = FUN_00403f84((int)local_44,pcVar9);
if (iVar11 != 0) {
local_8 = 0;
local_c = 0x280;
local_10 = 0x1e0;
local_14 = 0x40;
local_18 = 0x40;
local_1c = 0x500;
local_20 = 0;
local_24 = 0;
bVar1 = FUN_004040d8((int)local_44,pcVar9,&DAT_004f5659,(int *)&local_8);
bVar2 = FUN_004040d8((int)local_44,pcVar9,s_width_004f565e,&local_c);
bVar3 = FUN_004040d8((int)local_44,pcVar9,s_height_004f5664,&local_10);
bVar4 = FUN_004040d8((int)local_44,pcVar9,s_sizeInKB_004f566b,&local_14);
bVar5 = FUN_004040d8((int)local_44,pcVar9,s_granularityInKB_004f5674,&local_18);
bVar6 = FUN_004040d8((int)local_44,pcVar9,s_bytesPerLine_004f5684,&local_1c);
bVar7 = FUN_004040d8((int)local_44,pcVar9,s_pageFcnPtr_004f5691,&local_20);
bVar8 = FUN_004040d8((int)local_44,pcVar9,s_special_004f569c,&local_24);
if (CONCAT31(extraout_var,bVar1) + CONCAT31(extraout_var_00,bVar2) +
CONCAT31(extraout_var_01,bVar3) + CONCAT31(extraout_var_02,bVar4) +
CONCAT31(extraout_var_03,bVar5) + CONCAT31(extraout_var_04,bVar6) +
CONCAT31(extraout_var_05,bVar7) + CONCAT31(extraout_var_06,bVar8) == 8) {
piVar13 = (int *)FUN_00402298(0xcf0);
if (piVar13 == (int *)0x0) {
piVar13 = (int *)0x0;
}
else {
piVar13 = FUN_0046ced4(piVar13,local_8,local_c,local_10,local_14,local_18,local_1c,
local_20,local_24);
}
param_1[0x714b] = piVar13;
}
}
FUN_00403ecc(local_44,2);
}
return param_1;
}
/* @0046fbcc file=? name=FUN_0046fbcc */
void __cdecl FUN_0046fbcc(int *param_1,byte param_2)
{
undefined4 *puVar1;
int *piVar2;
int iVar3;
if (param_1 != (int *)0x0) {
*param_1 = (int)&PTR_FUN_004f56a4;
FUN_00447fc0((int)param_1,0);
iVar3 = 0;
piVar2 = param_1 + 0x15;
do {
puVar1 = (undefined4 *)*piVar2;
if ((puVar1 != (undefined4 *)0x0) && (puVar1 != (undefined4 *)0x0)) {
(**(code **)*puVar1)(puVar1,3);
}
iVar3 = iVar3 + 1;
piVar2 = piVar2 + 1;
} while (iVar3 < 0x10);
puVar1 = (undefined4 *)param_1[0x714b];
if ((puVar1 != (undefined4 *)0x0) && (puVar1 != (undefined4 *)0x0)) {
(**(code **)*puVar1)(puVar1,3);
}
puVar1 = (undefined4 *)param_1[0x714c];
if ((puVar1 != (undefined4 *)0x0) && (puVar1 != (undefined4 *)0x0)) {
(**(code **)*puVar1)(puVar1,3);
}
FUN_00447a14(param_1,0);
if ((param_2 & 1) != 0) {
FUN_004022d0(param_1);
}
}
return;
}
/* @0046fc5c file=? name=FUN_0046fc5c */
void __cdecl FUN_0046fc5c(int param_1)
{
undefined4 *puVar1;
puVar1 = *(undefined4 **)(param_1 + 0x1c52c);
if ((puVar1 != (undefined4 *)0x0) && (puVar1 != (undefined4 *)0x0)) {
(**(code **)*puVar1)(puVar1,3);
}
FUN_00447b58();
return;
}
/* @0046fc88 file=? name=FUN_0046fc88 */
void __cdecl FUN_0046fc88(int param_1)
{
FUN_00447b60(param_1);
return;
}
/* @0046fc98 file=? name=FUN_0046fc98 */
void FUN_0046fc98(void)
{
FUN_00447e64();
return;
}