server-re/decomp/MessageServer_Release_x64/full/functions/0x14005fa80.c

75 lines
1.9 KiB
C

/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x14005fa80 FUN_14005fa80
* Pseudocode, not original source. */
void FUN_14005fa80(ulonglong *param_1,int *param_2,longlong param_3)
{
char cVar1;
longlong lVar2;
int iVar3;
longlong lVar4;
longlong lVar5;
ulonglong uVar6;
char *_Str;
char *pcVar7;
char *pcVar8;
char *pcVar9;
bool bVar10;
_Str = (char *)0x0;
lVar2 = *(longlong *)(param_3 + 0xa0);
for (lVar5 = lVar2; pcVar7 = _Str, lVar5 != param_3 + 0x58; lVar5 = *(longlong *)(lVar5 + 0x48)) {
lVar4 = 7;
pcVar7 = (char *)(*(longlong *)(lVar5 + 0x20) + 0x10);
bVar10 = pcVar7 == (char *)0x0;
pcVar8 = "string";
do {
if (lVar4 == 0) break;
lVar4 = lVar4 + -1;
bVar10 = *pcVar7 == *pcVar8;
pcVar7 = pcVar7 + 1;
pcVar8 = pcVar8 + 1;
} while (bVar10);
if (bVar10) {
pcVar7 = (char *)(*(longlong *)(lVar5 + 0x30) + 0x10);
break;
}
}
do {
if (lVar2 == param_3 + 0x58) break;
lVar5 = 8;
pcVar8 = (char *)(*(longlong *)(lVar2 + 0x20) + 0x10);
bVar10 = pcVar8 == (char *)0x0;
pcVar9 = "timeout";
do {
if (lVar5 == 0) break;
lVar5 = lVar5 + -1;
bVar10 = *pcVar8 == *pcVar9;
pcVar8 = pcVar8 + 1;
pcVar9 = pcVar9 + 1;
} while (bVar10);
if (bVar10) {
_Str = (char *)(*(longlong *)(lVar2 + 0x30) + 0x10);
break;
}
lVar2 = *(longlong *)(lVar2 + 0x48);
} while( true );
if (pcVar7 != (char *)0x0) {
uVar6 = 0xffffffffffffffff;
pcVar8 = pcVar7;
do {
if (uVar6 == 0) break;
uVar6 = uVar6 - 1;
cVar1 = *pcVar8;
pcVar8 = pcVar8 + 1;
} while (cVar1 != '\0');
FUN_140003e60(param_1,pcVar7,~uVar6 - 1);
}
if (_Str != (char *)0x0) {
iVar3 = atoi(_Str);
*param_2 = iVar3;
}
return;
}