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

50 lines
1.6 KiB
C

/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c
* Ghidra 12.1.2 decompiler output for 0x1401a31c0 FUN_1401a31c0
* Pseudocode, not original source. */
void FUN_1401a31c0(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)
{
int iVar1;
longlong lVar2;
undefined8 *puVar3;
longlong *plVar4;
undefined8 uVar5;
uVar5 = 0xfffffffffffffffe;
if (*(HANDLE *)(param_1 + 0x28) != (HANDLE)0x0) {
CloseHandle(*(HANDLE *)(param_1 + 0x28));
*(undefined8 *)(param_1 + 0x28) = 0;
}
lVar2 = *(longlong *)(param_1 + 0xa0);
while( true ) {
if (lVar2 == 0) {
*(undefined8 *)(param_1 + 0x90) = 0;
*(undefined8 *)(param_1 + 0x98) = 0;
iVar1 = *(int *)(param_1 + 0x48);
while (0 < iVar1) {
FUN_1401a30d0(param_1,*(undefined8 *)(param_1 + 0x38));
iVar1 = *(int *)(param_1 + 0x48);
}
FUN_1401bf2d0(param_1 + 0x88);
FUN_14016dc00(param_1 + 0x50);
FUN_1401a2080(param_1 + 0x38);
return;
}
puVar3 = *(undefined8 **)(param_1 + 0x90);
if (puVar3 == (undefined8 *)0x0) break;
*(undefined8 *)(param_1 + 0x90) = *puVar3;
plVar4 = *(longlong **)(param_1 + 0x88);
if (plVar4 == (longlong *)0x0) {
FUN_14016d970();
}
else {
(**(code **)(*plVar4 + 0x10))(plVar4,puVar3,plVar4,param_4,uVar5);
}
*(longlong *)(param_1 + 0xa0) = *(longlong *)(param_1 + 0xa0) + -1;
lVar2 = *(longlong *)(param_1 + 0xa0);
}
/* WARNING: Subroutine does not return */
FUN_14004dc60(0x80004005);
}