/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1 * Ghidra 12.1.2 decompiler output for 0x1400e8980 FUN_1400e8980 * Pseudocode, not original source. */ void FUN_1400e8980(longlong param_1,undefined8 param_2,undefined **param_3,uint ******param_4) { char cVar1; DWORD DVar2; HANDLE hThread; IMAGE_DOS_HEADER *pIVar3; double dVar4; DVar2 = GetCurrentThreadId(); FUN_1400745e0(DVar2,"PNCliWorker"); DVar2 = GetCurrentThreadId(); *(DWORD *)(param_1 + 0x284) = DVar2; if (DAT_1401ac147 != '\0') { hThread = GetCurrentThread(); SetThreadPriority(hThread,1); } *(undefined1 *)(param_1 + 0x28c) = 0; cVar1 = *(char *)(param_1 + 0x80); while( true ) { if (cVar1 != '\0') { *(undefined1 *)(param_1 + 0x28c) = 1; return; } if (DAT_1401b45d0 != '\0') break; pIVar3 = (IMAGE_DOS_HEADER *)(ulonglong)DAT_1401ac074; FUN_1400e86a0(param_1,DAT_1401ac074,param_3,param_4); if (*(char *)(param_1 + 0x280) != '\0') { *(undefined1 *)(param_1 + 0x280) = 0; FUN_14006b350((int *)(param_1 + 0x88)); dVar4 = FUN_140076f50((char *)(param_1 + 0x48)); *(double *)(param_1 + 0xc0) = dVar4; dVar4 = FUN_140076fb0((char *)(param_1 + 0x48)); *(double *)(param_1 + 0x100) = dVar4; *(double *)(param_1 + 0x180) = (*(double *)(param_1 + 0x100) - *(double *)(param_1 + 0x180)) * 0.3 + *(double *)(param_1 + 0x180); *(undefined1 *)(param_1 + 0x1c0) = 1; FUN_14006b3e0(param_1 + 0x88); FUN_1400e8810(param_1,pIVar3,param_3,(undefined ***)param_4); if (*(uint ********)(param_1 + 0x2b0) != (uint *******)0x0) { FUN_1400ef320(*(uint ********)(param_1 + 0x2b0),(uint ****)pIVar3,param_3,param_4); } } cVar1 = *(char *)(param_1 + 0x80); } return; }