137 lines
4.1 KiB
C
137 lines
4.1 KiB
C
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
|
|
* Ghidra 12.1.2 decompiler output for 0x14009f660 FUN_14009f660
|
|
* Pseudocode, not original source. */
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x00014009f9c9) */
|
|
/* WARNING: Removing unreachable block (ram,0x00014009f9be) */
|
|
|
|
void FUN_14009f660(SIZE_T *param_1)
|
|
|
|
{
|
|
uint *puVar1;
|
|
ulonglong uVar2;
|
|
bool bVar3;
|
|
bool bVar4;
|
|
bool bVar5;
|
|
bool bVar6;
|
|
char cVar7;
|
|
int iVar8;
|
|
int iVar9;
|
|
int *piVar10;
|
|
int *piVar11;
|
|
longlong lVar12;
|
|
undefined8 *puVar13;
|
|
undefined8 *puVar14;
|
|
int *local_b0;
|
|
|
|
piVar10 = (int *)(**(code **)(*param_1 + 0x58))();
|
|
FUN_14006b350(piVar10);
|
|
if (DAT_1401b42cf != '\0') {
|
|
(**(code **)(*param_1 + 200))(param_1,L"Proud::CNetServerImpl::DisposeIssuedRemoteClients");
|
|
}
|
|
if (param_1[0x54] == 0) {
|
|
puVar13 = (undefined8 *)0x0;
|
|
}
|
|
else {
|
|
puVar13 = (undefined8 *)param_1[0x52];
|
|
}
|
|
do {
|
|
if (puVar13 == (undefined8 *)0x0) {
|
|
FUN_14006b3e0((longlong)piVar10);
|
|
return;
|
|
}
|
|
if (puVar13 == (undefined8 *)0x0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_1400064e0(0x80004005);
|
|
}
|
|
puVar1 = (uint *)*puVar13;
|
|
FUN_14009ece0(param_1,puVar1);
|
|
piVar11 = (int *)(**(code **)(*(longlong *)(puVar1 + 0x42) + 0x10))();
|
|
FUN_14006b350(piVar11);
|
|
local_b0 = (int *)0x0;
|
|
bVar6 = false;
|
|
if ((*(longlong **)(puVar1 + 0x1d0) != (longlong *)0x0) &&
|
|
(lVar12 = **(longlong **)(puVar1 + 0x1d0), lVar12 != 0)) {
|
|
local_b0 = (int *)(lVar12 + 0xa8);
|
|
FUN_14006b350(local_b0);
|
|
bVar6 = true;
|
|
}
|
|
FUN_14006b350((int *)(param_1 + 0xf3));
|
|
FUN_14006b350((int *)(param_1 + 0xfa));
|
|
iVar8 = FUN_1400d8950((longlong)(puVar1 + 0x30));
|
|
if ((*(char *)(*(longlong *)(puVar1 + 0x1d2) + 0x40) == '\0') &&
|
|
(**(char **)(puVar1 + 0x1d2) == '\0')) {
|
|
bVar3 = true;
|
|
}
|
|
else {
|
|
bVar3 = false;
|
|
}
|
|
if ((*(longlong **)(puVar1 + 0x1d8) == (longlong *)0x0) ||
|
|
(lVar12 = **(longlong **)(puVar1 + 0x1d8), lVar12 == 0)) {
|
|
LAB_14009f835:
|
|
bVar4 = true;
|
|
}
|
|
else {
|
|
if (*(char *)(lVar12 + 0x140) == '\0') {
|
|
if (*(longlong **)(puVar1 + 0x1d8) == (longlong *)0x0) {
|
|
lVar12 = 0;
|
|
}
|
|
else {
|
|
lVar12 = **(longlong **)(puVar1 + 0x1d8);
|
|
}
|
|
if (*(char *)(lVar12 + 0x100) == '\0') {
|
|
if (*(longlong **)(puVar1 + 0x1d8) == (longlong *)0x0) {
|
|
lVar12 = 0;
|
|
}
|
|
else {
|
|
lVar12 = **(longlong **)(puVar1 + 0x1d8);
|
|
}
|
|
iVar9 = FUN_1400d8950(lVar12 + 0x40);
|
|
if (iVar9 == 0) goto LAB_14009f835;
|
|
}
|
|
}
|
|
bVar4 = false;
|
|
}
|
|
if (((*(longlong *)(puVar1 + 8) == 0) &&
|
|
(cVar7 = (**(code **)(*(longlong *)(puVar1 + 2) + 0x18))(), cVar7 == '\0')) &&
|
|
(*(longlong *)(puVar1 + 0x48) == 0)) {
|
|
bVar5 = false;
|
|
}
|
|
else {
|
|
bVar5 = true;
|
|
}
|
|
FUN_14006b3e0((longlong)piVar11);
|
|
if (((iVar8 != 0) || (!bVar3)) || ((!bVar4 || (bVar5)))) {
|
|
puVar14 = (undefined8 *)puVar13[2];
|
|
}
|
|
else {
|
|
FUN_14008b1c0((longlong)param_1,puVar1);
|
|
puVar14 = (undefined8 *)puVar13[2];
|
|
FUN_1400a22a0((char *)(param_1 + 0x50),puVar13,'\0');
|
|
uVar2 = ((ulonglong)puVar1 & 0xffffffff) % (ulonglong)(uint)param_1[0x2ed];
|
|
if (param_1[0x2e9] != 0) {
|
|
puVar13 = *(undefined8 **)(param_1[0x2e9] + uVar2 * 8);
|
|
while( true ) {
|
|
if ((puVar13 == (undefined8 *)0x0) ||
|
|
((uint)uVar2 != *(uint *)(puVar13 + 4) % (uint)param_1[0x2ed])) goto LAB_14009f93f;
|
|
if ((uint *)*puVar13 == puVar1) break;
|
|
puVar13 = (undefined8 *)puVar13[2];
|
|
}
|
|
FUN_1400a22a0((char *)(param_1 + 0x2e8),puVar13,'\0');
|
|
}
|
|
LAB_14009f93f:
|
|
if (bVar6) {
|
|
FUN_14006b3e0((longlong)local_b0);
|
|
bVar6 = false;
|
|
}
|
|
(**(code **)(*(longlong *)puVar1 + 8))(puVar1,1);
|
|
}
|
|
FUN_14006b3e0((longlong)(param_1 + 0xfa));
|
|
FUN_14006b3e0((longlong)(param_1 + 0xf3));
|
|
puVar13 = puVar14;
|
|
if (bVar6) {
|
|
FUN_14006b3e0((longlong)local_b0);
|
|
}
|
|
} while( true );
|
|
}
|
|
|