/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c * Ghidra 12.1.2 decompiler output for 0x1401ac7a0 FUN_1401ac7a0 * Pseudocode, not original source. */ void FUN_1401ac7a0(longlong param_1) { int *piVar1; double *pdVar2; undefined8 *puVar3; undefined *puVar4; char cVar5; HANDLE hThread; longlong lVar6; undefined8 uVar7; int iVar8; undefined4 *puVar10; ulonglong uVar11; undefined *puVar12; ulonglong uVar13; double dVar14; double dVar15; undefined1 local_res10 [8]; undefined4 *local_res18; undefined *local_res20; undefined **local_108; longlong *local_100; longlong local_f8; undefined8 local_f0; undefined8 local_e8; undefined **local_e0; longlong *local_d8; longlong local_d0; undefined8 local_c8; undefined4 local_c0; undefined4 local_bc; undefined **local_b8; longlong *local_b0; longlong local_a8; undefined8 local_a0; undefined8 local_98; undefined8 local_90; undefined8 local_88; int local_80; undefined8 local_78; undefined4 local_70; undefined **local_68; undefined4 local_60; undefined2 local_5c; undefined8 local_58; undefined1 local_50; undefined8 local_48; ulonglong uVar9; local_48 = 0xfffffffffffffffe; hThread = GetCurrentThread(); SetThreadPriorityBoost(hThread,0); FUN_1401c5a10(local_res10); local_b8 = Proud::CFastArray::vftable; uVar11 = 0; local_b0 = (longlong *)0x0; local_a8 = 0; local_a0 = 0; local_98 = 0; local_d8 = (longlong *)0x0; local_d0 = 0; local_c8 = 0; local_e0 = Proud::CReceivedMessageList::vftable; local_c0 = 1000; local_bc = 1; cVar5 = FUN_14016f220(); if (cVar5 == '\0') { cVar5 = *(char *)(param_1 + 0x140); while (cVar5 == '\0') { local_68 = Proud::AddrPort::vftable; local_90 = 0; local_78 = 0; local_88 = 0; local_80 = 5; local_70 = 0; local_60 = DAT_140344450; local_5c = DAT_140344454; cVar5 = FUN_1401a22b0(*(undefined8 *)(*(longlong *)(param_1 + 0x148) + 0x788),&local_90, DAT_140344c98); dVar14 = (double)(**(code **)(*(longlong *)(*(longlong *)(param_1 + 0x148) + 0x118) + 8))(); dVar15 = dVar14 - *(double *)(param_1 + 0x100); pdVar2 = (double *)(*(longlong *)(param_1 + 0x148) + 0x820); if (*pdVar2 <= dVar15 && dVar15 != *pdVar2) { *(double *)(param_1 + 0x100) = dVar14; FUN_1401a41a0(param_1,&local_b8); } if (cVar5 != '\0') { FUN_1401ac6d0(param_1,&local_90,&local_e0); lVar6 = FUN_1401c2670(local_90); if (lVar6 != 0) { if (local_80 == 2) { FUN_1401abb60(param_1,&local_90,lVar6,&local_e0); } else if (local_80 == 1) { FUN_1401a3a00(param_1,&local_90,lVar6); } } } cVar5 = *(char *)(param_1 + 0x140); } } else { local_108 = Proud::CFastArray::vftable; local_100 = (longlong *)0x0; local_f8 = 0; local_f0 = 0; local_e8 = 0; FUN_1401a4540(&local_108,10); local_res18 = (undefined4 *)((ulonglong)local_res18 & 0xffffffff00000000); while (*(char *)(param_1 + 0x140) == '\0') { cVar5 = FUN_1401a2700(*(undefined8 *)(*(longlong *)(param_1 + 0x148) + 0x788),&local_108, &local_res18,DAT_140344c98); dVar14 = (double)(**(code **)(*(longlong *)(*(longlong *)(param_1 + 0x148) + 0x118) + 8))(); dVar15 = dVar14 - *(double *)(param_1 + 0x100); pdVar2 = (double *)(*(longlong *)(param_1 + 0x148) + 0x820); if (*pdVar2 <= dVar15 && dVar15 != *pdVar2) { *(double *)(param_1 + 0x100) = dVar14; FUN_1401a41a0(param_1,&local_b8); } if ((cVar5 != '\0') && (uVar9 = uVar11, uVar13 = uVar11, (uint)local_res18 != 0)) { do { iVar8 = (int)uVar9; if ((iVar8 < 0) || ((int)local_f0 <= iVar8)) { /* WARNING: Subroutine does not return */ FUN_14016d6e0(); } FUN_1401ac6d0(param_1,(longlong)iVar8 * 0x38 + local_f8,&local_e0); if ((int)local_f0 <= iVar8) { /* WARNING: Subroutine does not return */ FUN_14016d6e0(); } puVar3 = (undefined8 *)(uVar13 + local_f8); lVar6 = FUN_1401c2670(*puVar3); if (lVar6 != 0) { if (*(int *)(puVar3 + 2) == 2) { FUN_1401abb60(param_1,puVar3,lVar6,&local_e0); } else if (*(int *)(puVar3 + 2) == 1) { FUN_1401a3a00(param_1,puVar3,lVar6); } } uVar9 = (ulonglong)(iVar8 + 1U); uVar13 = uVar13 + 0x38; } while (iVar8 + 1U < (uint)local_res18); } } local_108 = Proud::CFastArray::vftable; if (local_f8 != 0) { if (local_100 == (longlong *)0x0) { FUN_14016d970(); } else { (**(code **)(*local_100 + 0x18))(local_100,local_f8); } } } if (*(longlong *)(*(longlong *)(param_1 + 0x148) + 0x17f0) != 0) { FUN_14016d8c0(); local_res20 = PTR_DAT_1403440a0; FUN_14004c020(&local_res20,&DAT_140282f80,L"Proud::CNetThreads_S::NetWorkerThread_Main"); puVar4 = local_res20; puVar12 = local_res20; if (local_res20 == (undefined *)0x0) { puVar12 = PTR_DAT_1403440a0; } FUN_1401adb30(*(undefined8 *)(*(longlong *)(param_1 + 0x148) + 0x17f0),0,puVar12); if (((puVar4 != (undefined *)0x0) && (puVar4 != PTR_DAT_1403440a0)) && (puVar4 + -8 != (undefined *)0x0)) { uVar7 = FUN_14016d8c0(); local_58 = uVar7; FUN_14016db50(uVar7); local_50 = 1; piVar1 = (int *)(puVar4 + -4); *piVar1 = *piVar1 + -1; if (*piVar1 == 0) { FUN_14016d970(puVar4 + -8); } FUN_14016dbe0(uVar7); } } local_e0 = Proud::CFastArray::vftable; lVar6 = (longlong)(int)local_c8; if (0 < (int)local_c8) { puVar10 = (undefined4 *)(local_d0 + 0x18); do { local_res18 = puVar10 + -4; FUN_14016d0e0(); if (*(longlong *)(puVar10 + -2) != 0) { if ((int)puVar10[1] < 0) { /* WARNING: Subroutine does not return */ FUN_14016d6b0(); } *puVar10 = 0; } uVar11 = uVar11 + 1; puVar10 = puVar10 + 0x12; } while ((longlong)uVar11 < lVar6); } if (local_d0 != 0) { if (local_d8 == (longlong *)0x0) { FUN_14016d970(); } else { (**(code **)(*local_d8 + 0x18))(local_d8,local_d0); } } if (local_a8 != 0) { if (local_b0 == (longlong *)0x0) { FUN_14016d970(); } else { (**(code **)(*local_b0 + 0x18))(local_b0,local_a8); } } FUN_1401c5a40(local_res10); return; }