/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1 * Ghidra 12.1.2 decompiler output for 0x1400dd370 FUN_1400dd370 * Pseudocode, not original source. */ longlong FUN_1400dd370(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4) { int iVar1; undefined8 uVar2; longlong lVar3; undefined8 uVar4; exception local_58 [80]; InitializeCriticalSection((LPCRITICAL_SECTION)&DAT_1401bd540); InitializeCriticalSection((LPCRITICAL_SECTION)&DAT_1401bd580); InitializeCriticalSection((LPCRITICAL_SECTION)&DAT_1401bd5c0); iVar1 = FUN_1400faee0(&PTR_s_fortuna_14014e8c0); if (iVar1 == -1) { FUN_14006ba50(local_58,L"REGISTER PRNG ERROR : SPRNG",param_3,param_4); /* WARNING: Subroutine does not return */ _CxxThrowException(local_58,(ThrowInfo *)&DAT_1401a93e8); } iVar1 = FUN_1400fa690(&PTR_DAT_14014e840); if (iVar1 == -1) { FUN_14006ba50(local_58,L"REGISTER HASH ERROR : SHA1",param_3,param_4); /* WARNING: Subroutine does not return */ _CxxThrowException(local_58,(ThrowInfo *)&DAT_1401a93e8); } memcpy(&DAT_1401bd600,&PTR_s_LibTomMath_14014e67f_1_14014e6b0,0x188); iVar1 = FUN_1400f9840(0x1401487f0); *(int *)(param_1 + 0x1058) = iVar1; iVar1 = FUN_1400f97a0(0x1401487e8); uVar4 = 0; *(int *)(param_1 + 0x105c) = iVar1; lVar3 = param_1; uVar2 = FUN_1400f96a0(0x80,*(uint *)(param_1 + 0x1058),param_1,(undefined *)0x0); if ((int)uVar2 != 0) { FUN_14006ba50(local_58,L"PRNG MAKE ERROR",lVar3,uVar4); /* WARNING: Subroutine does not return */ _CxxThrowException(local_58,(ThrowInfo *)&DAT_1401a93e8); } return param_1; }