119 lines
3.5 KiB
C
119 lines
3.5 KiB
C
/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c
|
|
* Ghidra 12.1.2 decompiler output for 0x1401c63f0 FUN_1401c63f0
|
|
* Pseudocode, not original source. */
|
|
|
|
longlong FUN_1401c63f0(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)
|
|
|
|
{
|
|
longlong *plVar1;
|
|
undefined8 *puVar2;
|
|
int iVar3;
|
|
void *pvVar4;
|
|
ulonglong *puVar5;
|
|
longlong *plVar6;
|
|
undefined4 uVar7;
|
|
int iVar8;
|
|
longlong lVar9;
|
|
longlong lVar10;
|
|
longlong lVar11;
|
|
ulonglong uVar12;
|
|
ulonglong uVar13;
|
|
int iVar14;
|
|
ulonglong uVar15;
|
|
longlong lVar16;
|
|
ulonglong uVar17;
|
|
int iVar18;
|
|
longlong *local_res18;
|
|
undefined8 uVar19;
|
|
|
|
uVar19 = 0xfffffffffffffffe;
|
|
uVar7 = FUN_140171510();
|
|
FUN_14016da70(param_1,uVar7,1,param_4,uVar19);
|
|
iVar18 = 0;
|
|
*(undefined8 *)(param_1 + 0x38) = 0;
|
|
*(undefined8 *)(param_1 + 0x40) = 0;
|
|
*(undefined4 *)(param_1 + 0x48) = 0;
|
|
puVar2 = (undefined8 *)(param_1 + 0x50);
|
|
*puVar2 = Proud::CFastArray<Proud::RefCount<Proud::Thread>,0>::vftable;
|
|
*(undefined8 *)(param_1 + 0x58) = 0;
|
|
*(undefined8 *)(param_1 + 0x60) = 0;
|
|
*(undefined8 *)(param_1 + 0x68) = 0;
|
|
*(undefined8 *)(param_1 + 0x70) = 0;
|
|
*(undefined1 *)(param_1 + 0x80) = 1;
|
|
iVar8 = FUN_14016eed0();
|
|
if (0 < iVar8) {
|
|
do {
|
|
lVar9 = 0;
|
|
local_res18 = operator_new(0x28);
|
|
if (local_res18 != (longlong *)0x0) {
|
|
lVar9 = FUN_1401996b0(local_res18,&LAB_1401c6200,param_1);
|
|
}
|
|
if (lVar9 == 0) {
|
|
local_res18 = (longlong *)0x0;
|
|
}
|
|
else {
|
|
local_res18 = (longlong *)FUN_14016d940(0x10);
|
|
local_res18[1] = 1;
|
|
*local_res18 = lVar9;
|
|
}
|
|
plVar1 = local_res18;
|
|
iVar3 = *(int *)(param_1 + 0x68);
|
|
if (iVar3 < 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14016d6b0();
|
|
}
|
|
iVar14 = *(int *)(param_1 + 0x68);
|
|
FUN_1401a8910(puVar2,iVar14 + 1);
|
|
iVar14 = iVar14 - iVar3;
|
|
if ((0 < iVar14) && (iVar14 = iVar14 + -1, -1 < iVar14)) {
|
|
lVar9 = (longlong)(iVar14 + iVar3 + 1) << 3;
|
|
lVar16 = (longlong)(iVar14 + iVar3) << 3;
|
|
do {
|
|
lVar10 = FUN_14016ab80(puVar2);
|
|
lVar11 = FUN_14016ab80(puVar2);
|
|
FUN_1401a4b40(lVar9 + lVar11,lVar16 + lVar10);
|
|
lVar16 = lVar16 + -8;
|
|
lVar9 = lVar9 + -8;
|
|
iVar14 = iVar14 + -1;
|
|
} while (-1 < iVar14);
|
|
}
|
|
lVar9 = FUN_14016ab80(puVar2);
|
|
FUN_1401a4b40(lVar9 + (longlong)iVar3 * 8,&local_res18);
|
|
plVar6 = local_res18;
|
|
if (plVar1 != (longlong *)0x0) {
|
|
plVar1 = plVar1 + 1;
|
|
*plVar1 = *plVar1 + -1;
|
|
if (*plVar1 == 0) {
|
|
pvVar4 = (void *)*local_res18;
|
|
if (pvVar4 != (void *)0x0) {
|
|
FUN_1401997c0(pvVar4);
|
|
operator_delete(pvVar4);
|
|
}
|
|
FUN_14016d970(plVar6);
|
|
}
|
|
}
|
|
iVar18 = iVar18 + 1;
|
|
} while (iVar18 < iVar8);
|
|
}
|
|
uVar17 = 0;
|
|
uVar13 = uVar17;
|
|
uVar15 = uVar17;
|
|
if (0 < iVar8) {
|
|
do {
|
|
if (((longlong)uVar13 < 0) || (*(int *)(param_1 + 0x68) <= (int)uVar15)) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14016d6e0();
|
|
}
|
|
puVar5 = *(ulonglong **)(*(longlong *)(param_1 + 0x60) + uVar13 * 8);
|
|
uVar12 = uVar17;
|
|
if (puVar5 != (ulonglong *)0x0) {
|
|
uVar12 = *puVar5;
|
|
}
|
|
FUN_1401998a0(uVar12);
|
|
uVar15 = (ulonglong)((int)uVar15 + 1);
|
|
uVar13 = uVar13 + 1;
|
|
} while ((longlong)uVar13 < (longlong)iVar8);
|
|
}
|
|
return param_1;
|
|
}
|
|
|