/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1 * Ghidra 12.1.2 decompiler output for 0x1400d8240 FUN_1400d8240 * Pseudocode, not original source. */ undefined8 * FUN_1400d8240(undefined8 *param_1,longlong *param_2,undefined8 param_3,undefined8 param_4) { longlong lVar1; float fVar2; exception local_50 [72]; FUN_1400d5740((undefined1 *)(param_1 + 1)); *param_1 = param_2; *(undefined4 *)((longlong)param_1 + 0x34) = 0x3e99999a; *(undefined4 *)(param_1 + 7) = 0x3d4ccccd; *(undefined4 *)((longlong)param_1 + 0x3c) = 0x41000000; fVar2 = (float)*(uint *)(param_1 + 6) * 8.0; lVar1 = 0; if ((9.223372e+18 < fVar2) && (fVar2 = fVar2 - 9.223372e+18, fVar2 < 9.223372e+18)) { lVar1 = -0x8000000000000000; } param_1[8] = (longlong)fVar2 + lVar1; fVar2 = (float)*(uint *)(param_1 + 6) * 0.05; lVar1 = 0; if ((9.223372e+18 < fVar2) && (fVar2 = fVar2 - 9.223372e+18, fVar2 < 9.223372e+18)) { lVar1 = -0x8000000000000000; } param_1[9] = (longlong)fVar2 + lVar1; if ((ulonglong)((longlong)fVar2 + lVar1) < 0x11) { param_1[9] = 0; } lVar1 = (**(code **)(*param_2 + 0x18))(param_2); if (lVar1 == 0) { /* WARNING: Subroutine does not return */ FUN_14006be00(); } if (param_1[5] != 0) { FUN_14006ba50(local_50,(wchar_t *)PTR_u_Collection_object_can_use_fast_h_1401ac1d0,param_3, param_4); /* WARNING: Subroutine does not return */ _CxxThrowException(local_50,(ThrowInfo *)&DAT_1401a93e8); } param_1[0xb] = lVar1; return param_1; }