/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1 * Ghidra 12.1.2 decompiler output for 0x140002310 FUN_140002310 * Pseudocode, not original source. */ ulonglong FUN_140002310(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4) { char cVar1; int iVar2; undefined8 uVar3; undefined4 extraout_var_00; ulonglong uVar4; double dVar5; __time64_t local_res8; __time64_t local_res18 [2]; uint7 extraout_var; _time64(&local_res8); do { (**(code **)(**(longlong **)(param_1 + 0x10) + 0x88))(); *(undefined2 *)(param_1 + 0x1a) = 0x100; *(undefined1 *)(param_1 + 0x19) = 1; uVar3 = (**(code **)(**(longlong **)(param_1 + 0x10) + 0x78)) (*(longlong **)(param_1 + 0x10),param_2); if ((char)uVar3 == '\x01') { cVar1 = *(char *)(param_1 + 0x19); while (cVar1 != '\0') { Sleep(10); uVar3 = (**(code **)(**(longlong **)(param_1 + 0x10) + 0x98)) (*(longlong **)(param_1 + 0x10),0); cVar1 = *(char *)(param_1 + 0x19); } if (*(char *)(param_1 + 0x1a) == '\x01') { return CONCAT71((int7)((ulonglong)uVar3 >> 8),1); } } uVar4 = (ulonglong)DAT_1401bd4f4; if ((DAT_1401bd4f4 & 1) == 0) { DAT_1401bd4f4 = DAT_1401bd4f4 | 1; FUN_14011b100(); iVar2 = atexit((_func_5014 *)&LAB_14012f3d0); uVar4 = CONCAT44(extraout_var_00,iVar2); } if (DAT_1401bd4a0 == 1000) goto LAB_140002418; _time64(local_res18); dVar5 = _difftime64(local_res18[0],local_res8); } while (((int)dVar5 < 300) && (Sleep(1), *(char *)(param_1 + 0x1a) == '\0')); FUN_14000aa90(4,L"ERROR >> MagiCommonSession::ProcConnect | Time over!",param_3,param_4); uVar4 = (ulonglong)extraout_var << 8; LAB_140002418: return uVar4 & 0xffffffffffffff00; }