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

52 lines
1.7 KiB
C

/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x1400fb2b0 FUN_1400fb2b0
* Pseudocode, not original source. */
ulonglong FUN_1400fb2b0(void *param_1,uint param_2,longlong param_3)
{
int iVar1;
ulonglong uVar2;
ulonglong uVar3;
undefined1 local_res8;
undefined1 local_res9;
if ((param_1 != (void *)0x0) && (param_3 != 0)) {
EnterCriticalSection((LPCRITICAL_SECTION)(param_3 + 0x1030));
if (0x20 < param_2) {
LeaveCriticalSection((LPCRITICAL_SECTION)(param_3 + 0x1030));
return 0x10;
}
local_res8 = 0;
local_res9 = (undefined1)param_2;
uVar2 = FUN_140108120((longlong *)((ulonglong)*(uint *)(param_3 + 0x1018) * 0x70 + param_3),
&local_res8,2);
uVar3 = uVar2 & 0xffffffff;
if ((int)uVar2 == 0) {
uVar2 = FUN_140108120((longlong *)((ulonglong)*(uint *)(param_3 + 0x1018) * 0x70 + param_3),
param_1,param_2);
uVar3 = uVar2 & 0xffffffff;
if ((int)uVar2 == 0) {
if (*(int *)(param_3 + 0x1018) == 0) {
*(int *)(param_3 + 0x101c) = *(int *)(param_3 + 0x101c) + param_2;
}
iVar1 = *(int *)(param_3 + 0x1018) + 1;
if (iVar1 == 0x20) {
iVar1 = 0;
}
*(int *)(param_3 + 0x1018) = iVar1;
LeaveCriticalSection((LPCRITICAL_SECTION)(param_3 + 0x1030));
uVar3 = 0;
}
else {
LeaveCriticalSection((LPCRITICAL_SECTION)(param_3 + 0x1030));
}
}
else {
LeaveCriticalSection((LPCRITICAL_SECTION)(param_3 + 0x1030));
}
return uVar3;
}
return 0x10;
}