server-re/decomp/DBCServer_Release_x64/full/functions/0x1400a7630.c

84 lines
2.7 KiB
C

/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c
* Ghidra 12.1.2 decompiler output for 0x1400a7630 FUN_1400a7630
* Pseudocode, not original source. */
undefined8 FUN_1400a7630(longlong *param_1,ushort *param_2)
{
ushort uVar1;
ushort uVar2;
bool bVar3;
uint uVar4;
int iVar5;
char *pcVar6;
int iVar7;
EnterCriticalSection((LPCRITICAL_SECTION)(param_1 + 4));
uVar1 = *param_2;
iVar5 = (int)param_1[1];
uVar2 = param_2[1];
*(uint *)(param_1 + 9) = (uint)uVar1;
uVar4 = iVar5 - *(int *)((longlong)param_1 + 0x14);
if (uVar1 != uVar4 && (int)uVar4 <= (int)(uint)uVar1) {
LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 4));
return 0;
}
iVar7 = (int)param_1[2];
if (iVar5 < (int)(iVar7 + (uint)uVar1)) {
iVar5 = iVar5 - iVar7;
*(int *)((longlong)param_1 + 0x4c) = iVar5;
*(uint *)(param_1 + 10) = (uint)uVar1 - iVar5;
memcpy((void *)((longlong)iVar7 + *param_1),param_2,(longlong)iVar5);
memcpy((void *)*param_1,
(void *)((longlong)*(int *)((longlong)param_1 + 0x4c) + (longlong)param_2),
(longlong)(int)param_1[10]);
*(int *)(param_1 + 2) = (int)param_1[10];
}
else {
memcpy((void *)((longlong)iVar7 + *param_1),param_2,(ulonglong)uVar1);
*(int *)(param_1 + 2) = (int)param_1[2] + (int)param_1[9];
iVar5 = (int)param_1[2];
if (iVar5 == (int)param_1[1]) {
iVar5 = 0;
}
*(int *)(param_1 + 2) = iVar5;
}
*(int *)(param_1 + 3) = (int)param_1[3] + 1;
*(int *)((longlong)param_1 + 0x14) = *(int *)((longlong)param_1 + 0x14) + (int)param_1[9];
iVar5 = (int)param_1[3];
if (uVar2 < 0x2329) {
bVar3 = DAT_140352f38 < iVar5;
if (bVar3) {
DAT_140352f38 = iVar5;
}
iVar5 = *(int *)((longlong)param_1 + 0x14);
if ((*(int *)((longlong)param_1 + 0x14) <= DAT_140352f40) && (iVar5 = DAT_140352f40, !bVar3))
goto LAB_1400a779a;
DAT_140352f40 = iVar5;
pcVar6 = "Request Queue : Cur[%d] Max[%d]-Len[%d] MaxLen[%d]\n";
iVar5 = DAT_140352f40;
iVar7 = DAT_140352f38;
}
else {
bVar3 = DAT_140352f3c < iVar5;
if (bVar3) {
DAT_140352f3c = iVar5;
}
iVar5 = *(int *)((longlong)param_1 + 0x14);
iVar7 = DAT_140352f3c;
if (DAT_140352f44 < iVar5) {
pcVar6 = "Result Queue : Cur[%d] Max[%d]-Len[%d] MaxLen[%d]\n";
DAT_140352f44 = iVar5;
}
else {
if (!bVar3) goto LAB_1400a779a;
pcVar6 = "Result Queue : Cur[%d] Max[%d]-Len[%d] MaxLen[%d]\n";
iVar5 = DAT_140352f44;
}
}
FUN_1400a6c80(pcVar6,(int)param_1[3],iVar7,*(undefined4 *)((longlong)param_1 + 0x14),iVar5);
LAB_1400a779a:
LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 4));
return 1;
}