/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1 * Ghidra 12.1.2 decompiler output for 0x1400d5f90 FUN_1400d5f90 * Pseudocode, not original source. */ ulonglong FUN_1400d5f90(longlong param_1,longlong param_2) { ushort uVar1; uint uVar2; uint uVar3; longlong *plVar4; longlong *plVar5; ulonglong uVar6; ulonglong uVar7; LPVOID pvVar8; uVar1 = *(ushort *)(param_2 + 0xc); uVar2 = *(uint *)(param_2 + 8); uVar3 = *(uint *)(param_1 + 0x48); uVar7 = (ulonglong)(uVar1 ^ uVar2) / (ulonglong)uVar3; uVar6 = (ulonglong)(uVar1 ^ uVar2) % (ulonglong)uVar3; if ((*(longlong *)(param_1 + 0x28) != 0) && (pvVar8 = *(LPVOID *)(*(longlong *)(param_1 + 0x28) + uVar6 * 8), pvVar8 != (LPVOID)0x0)) { while( true ) { uVar7 = (ulonglong)*(uint *)((longlong)pvVar8 + 0x28) / (ulonglong)uVar3; if ((uint)uVar6 != *(uint *)((longlong)pvVar8 + 0x28) % uVar3) break; if ((*(uint *)((longlong)pvVar8 + 8) == uVar2) && (*(ushort *)((longlong)pvVar8 + 0xc) == uVar1)) { if (pvVar8 == (LPVOID)0x0) { return uVar7; } plVar4 = (longlong *)(*(longlong **)((longlong)pvVar8 + 0x10))[2]; if (plVar4 != (longlong *)0x0) { FUN_1400d34f0(plVar4,*(longlong **)((longlong)pvVar8 + 0x10),(ulonglong)uVar1, (ulonglong)uVar2); } plVar4 = *(longlong **)((longlong)pvVar8 + 0x10); plVar5 = *(longlong **)(param_1 + 0x78); FUN_1400d51a0(plVar4); (**(code **)(*plVar5 + 0x18))(plVar5,plVar4); uVar7 = FUN_1400d4570((char *)(param_1 + 0x20),pvVar8,'\0'); return uVar7; } pvVar8 = *(LPVOID *)((longlong)pvVar8 + 0x18); if (pvVar8 == (LPVOID)0x0) { return uVar7; } } } return uVar7; }