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

85 lines
2.8 KiB
C

/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x1400a3060 FUN_1400a3060
* Pseudocode, not original source. */
void FUN_1400a3060(longlong *param_1,undefined8 param_2,SIZE_T param_3,undefined *param_4)
{
int *piVar1;
longlong lVar2;
undefined8 uVar3;
longlong lVar4;
longlong lVar5;
double dVar6;
piVar1 = (int *)(**(code **)(*param_1 + 0x58))(param_1,param_2,param_3,param_4,0xfffffffffffffffe)
;
FUN_14006b350(piVar1);
dVar6 = (double)(**(code **)(param_1[0xe] + 0x1c0))();
lVar5 = 0;
if (param_1[0xbb] != 0) {
lVar5 = *(longlong *)(param_1[0xbb] + 0x38);
}
FUN_1400f4540((double *)(param_1 + 0x2ef),*(double *)(lVar5 + 0x100));
if ((char)param_1[0x2f1] != '\0') {
if (((longlong *)param_1[0x2a4] != (longlong *)0x0) &&
(lVar5 = *(longlong *)param_1[0x2a4], lVar5 != 0)) {
FUN_1400f3ae0(lVar5 + -0x40,dVar6,param_3,param_4);
if (param_1[0x2ce] == 0) {
lVar5 = 0;
}
else {
lVar5 = param_1[0x2cc];
}
for (; lVar5 != 0; lVar5 = *(longlong *)(lVar5 + 0x10)) {
lVar4 = 0;
if (*(longlong **)(lVar5 + 8) != (longlong *)0x0) {
lVar4 = **(longlong **)(lVar5 + 8);
}
if (*(char *)(lVar4 + 0x684) == '\0') {
if ((*(longlong **)(lVar4 + 0x18) != (longlong *)0x0) &&
(**(longlong **)(lVar4 + 0x18) != 0)) {
lVar2 = FUN_1400eff40(lVar4);
FUN_1400f3ae0(lVar2,dVar6,param_3,param_4);
}
uVar3 = FUN_1400f0070((longlong *)(lVar4 + 0x668));
*(int *)(lVar4 + 0x58) = (int)uVar3;
}
}
}
if ((((longlong *)param_1[699] != (longlong *)0x0) &&
(lVar5 = *(longlong *)param_1[699], lVar5 != 0)) && (lVar5 != 0x40)) {
if (lVar5 != 0) {
lVar5 = lVar5 + -0x40;
}
FUN_1400ef470(lVar5,dVar6);
}
}
if (DAT_1401ac058 < dVar6 - (double)param_1[0x1a]) {
if (((longlong *)param_1[0x2a4] != (longlong *)0x0) &&
(lVar5 = *(longlong *)param_1[0x2a4], lVar5 != 0)) {
FUN_1400d48a0(*(longlong **)(lVar5 + 200),dVar6,param_3,param_4);
}
if (param_1[0x2ce] == 0) {
lVar5 = 0;
}
else {
lVar5 = param_1[0x2cc];
}
for (; lVar5 != 0; lVar5 = *(longlong *)(lVar5 + 0x10)) {
lVar4 = 0;
if (*(longlong **)(lVar5 + 8) != (longlong *)0x0) {
lVar4 = **(longlong **)(lVar5 + 8);
}
if (((*(char *)(lVar4 + 0x684) == '\0') && (*(longlong **)(lVar4 + 0x18) != (longlong *)0x0))
&& (**(longlong **)(lVar4 + 0x18) != 0)) {
lVar4 = FUN_1400eff40(lVar4);
FUN_1400d48a0(*(longlong **)(lVar4 + 0x108),dVar6,param_3,param_4);
}
}
param_1[0x1a] = (longlong)dVar6;
}
FUN_14006b3e0((longlong)piVar1);
return;
}