/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c * Ghidra 12.1.2 decompiler output for 0x1401c6020 FUN_1401c6020 * Pseudocode, not original source. */ void FUN_1401c6020(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4) { longlong *plVar1; undefined8 *puVar2; DWORD DVar3; undefined8 uVar4; longlong lVar5; undefined1 uVar6; uVar4 = 0xfffffffffffffffe; if (*(char *)(param_1 + 0x80) != '\0') { plVar1 = (longlong *)(param_1 + 0x38); do { lVar5 = param_1; FUN_14016db50(param_1); uVar6 = 1; DVar3 = GetTickCount(); puVar2 = (undefined8 *)*plVar1; if ((puVar2 == (undefined8 *)0x0) || (DVar3 - *(int *)(puVar2 + 4) <= *(uint *)((longlong)puVar2 + 0x24))) { FUN_14016dbe0(param_1); } else { *(DWORD *)(puVar2 + 4) = DVar3; if (puVar2[2] != 0) { FUN_1401c5e50(puVar2[2],puVar2,param_3,param_4,uVar4,lVar5,uVar6); } if (puVar2[2] != 0) { FUN_1401c5e50(plVar1,puVar2,param_3,param_4,uVar4,lVar5,uVar6); } if (*(longlong *)(param_1 + 0x40) == 0) { *plVar1 = (longlong)puVar2; } else { *(undefined8 **)(*(longlong *)(param_1 + 0x40) + 8) = puVar2; *puVar2 = *(undefined8 *)(param_1 + 0x40); } *(undefined8 **)(param_1 + 0x40) = puVar2; puVar2[2] = plVar1; *(int *)(param_1 + 0x48) = *(int *)(param_1 + 0x48) + 1; FUN_14016dbe0(param_1); *(undefined1 *)(puVar2 + 8) = 1; (**(code **)(*(longlong *)puVar2[3] + 8))(); *(undefined1 *)(puVar2 + 8) = 0; } Sleep(10); } while (*(char *)(param_1 + 0x80) != '\0'); } return; }