92 lines
2.9 KiB
C
92 lines
2.9 KiB
C
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
|
|
* Ghidra 12.1.2 decompiler output for 0x1400dc760 FUN_1400dc760
|
|
* Pseudocode, not original source. */
|
|
|
|
undefined8 * FUN_1400dc760(longlong param_1,undefined8 param_2,uint param_3)
|
|
|
|
{
|
|
uint uVar1;
|
|
longlong lVar2;
|
|
longlong *plVar3;
|
|
ulonglong uVar4;
|
|
undefined8 *puVar5;
|
|
undefined8 uVar6;
|
|
uint *puVar7;
|
|
uint uVar8;
|
|
uint local_res18 [4];
|
|
|
|
uVar1 = *(uint *)(param_1 + 0x40);
|
|
puVar5 = (undefined8 *)((ulonglong)param_3 / (ulonglong)uVar1);
|
|
uVar4 = (ulonglong)param_3 % (ulonglong)uVar1;
|
|
lVar2 = *(longlong *)(param_1 + 0x20);
|
|
uVar8 = (uint)uVar4;
|
|
if (lVar2 != 0) {
|
|
for (puVar7 = *(uint **)(lVar2 + uVar4 * 8);
|
|
(puVar7 != (uint *)0x0 &&
|
|
(puVar5 = (undefined8 *)((ulonglong)puVar7[10] / (ulonglong)uVar1),
|
|
uVar8 == puVar7[10] % uVar1)); puVar7 = *(uint **)(puVar7 + 6)) {
|
|
if (*puVar7 == param_3) goto LAB_1400dc7bb;
|
|
}
|
|
}
|
|
puVar7 = (uint *)0x0;
|
|
LAB_1400dc7bb:
|
|
local_res18[0] = param_3;
|
|
if (puVar7 != (uint *)0x0) {
|
|
if (*(double *)(puVar7 + 4) != 0.0) {
|
|
return puVar5;
|
|
}
|
|
*(undefined8 *)(puVar7 + 4) = param_2;
|
|
puVar5 = FUN_1400dc2b0((longlong *)(param_1 + 0x70),local_res18);
|
|
return puVar5;
|
|
}
|
|
if (lVar2 != 0) {
|
|
for (puVar7 = *(uint **)(lVar2 + uVar4 * 8);
|
|
(puVar7 != (uint *)0x0 && (uVar8 == puVar7[10] % uVar1)); puVar7 = *(uint **)(puVar7 + 6)) {
|
|
if (*puVar7 == param_3) goto LAB_1400dc8c7;
|
|
}
|
|
if (lVar2 != 0) {
|
|
for (puVar7 = *(uint **)(lVar2 + uVar4 * 8);
|
|
(puVar7 != (uint *)0x0 && (uVar8 == puVar7[10] % uVar1)); puVar7 = *(uint **)(puVar7 + 6))
|
|
{
|
|
if (*puVar7 == param_3) goto LAB_1400dc8b5;
|
|
}
|
|
if (lVar2 != 0) goto LAB_1400dc88c;
|
|
}
|
|
}
|
|
uVar6 = FUN_1400a1910(param_1 + 0x18,uVar1,'\x01');
|
|
if ((char)uVar6 == '\0') {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_1400064e0(0x8007000e);
|
|
}
|
|
LAB_1400dc88c:
|
|
FUN_1400d35d0((char *)(param_1 + 0x18));
|
|
puVar7 = FUN_1400dc330((char *)(param_1 + 0x18),local_res18,uVar8,param_3);
|
|
FUN_1400d35d0((char *)(param_1 + 0x18));
|
|
LAB_1400dc8b5:
|
|
*(ulonglong *)(puVar7 + 2) = (ulonglong)param_3;
|
|
*(undefined8 *)(puVar7 + 4) = param_2;
|
|
LAB_1400dc8c7:
|
|
plVar3 = *(longlong **)(param_1 + 0x70);
|
|
uVar6 = *(undefined8 *)(param_1 + 0x80);
|
|
if (plVar3 == (longlong *)0x0) {
|
|
puVar5 = (undefined8 *)FUN_14006cbf0(0x18);
|
|
}
|
|
else {
|
|
puVar5 = (undefined8 *)(**(code **)(*plVar3 + 8))(plVar3,0x18);
|
|
}
|
|
if (puVar5 != (undefined8 *)0x0) {
|
|
*(uint *)(puVar5 + 2) = param_3;
|
|
}
|
|
puVar5[1] = uVar6;
|
|
*puVar5 = 0;
|
|
*(longlong *)(param_1 + 0x88) = *(longlong *)(param_1 + 0x88) + 1;
|
|
if (*(undefined8 **)(param_1 + 0x80) == (undefined8 *)0x0) {
|
|
*(undefined8 **)(param_1 + 0x78) = puVar5;
|
|
}
|
|
else {
|
|
**(undefined8 **)(param_1 + 0x80) = puVar5;
|
|
}
|
|
*(undefined8 **)(param_1 + 0x80) = puVar5;
|
|
return puVar5;
|
|
}
|
|
|