/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1 * Ghidra 12.1.2 decompiler output for 0x1400d6640 FUN_1400d6640 * Pseudocode, not original source. */ undefined1 * FUN_1400d6640(longlong *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4) { undefined1 *puVar1; ulonglong uVar2; longlong lVar3; float fVar4; exception local_50 [72]; puVar1 = (undefined1 *) (**(code **)(*param_1 + 8))(param_1,0x78,param_3,param_4,0xfffffffffffffffe); if (puVar1 != (undefined1 *)0x0) { FUN_1400d5540(puVar1); } *(undefined4 *)(puVar1 + 0x2c) = 0x3dcccccd; *(undefined4 *)(puVar1 + 0x30) = 0x33d6bf95; *(undefined4 *)(puVar1 + 0x34) = 0x40066666; fVar4 = (float)*(uint *)(puVar1 + 0x28) * 2.1; lVar3 = 0; if ((9.223372e+18 < fVar4) && (fVar4 = fVar4 - 9.223372e+18, fVar4 < 9.223372e+18)) { lVar3 = -0x8000000000000000; } *(longlong *)(puVar1 + 0x38) = (longlong)fVar4 + lVar3; fVar4 = (float)*(uint *)(puVar1 + 0x28) * 1e-07; lVar3 = 0; if ((9.223372e+18 < fVar4) && (fVar4 = fVar4 - 9.223372e+18, fVar4 < 9.223372e+18)) { lVar3 = -0x8000000000000000; } uVar2 = (longlong)fVar4 + lVar3; if ((ulonglong)((longlong)fVar4 + lVar3) < 0x11) { uVar2 = 0; } *(ulonglong *)(puVar1 + 0x40) = uVar2; if (*(longlong *)(puVar1 + 0x20) != 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); } *(longlong **)(puVar1 + 0x50) = param_1; return puVar1; }