/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1 * Ghidra 12.1.2 decompiler output for 0x14007e230 FUN_14007e230 * Pseudocode, not original source. */ ulonglong FUN_14007e230(longlong param_1,uint param_2,uint *param_3) { uint uVar1; uint *puVar2; int *piVar3; undefined8 uVar4; ulonglong uVar5; piVar3 = (int *)(**(code **)(*(longlong *)(param_1 + -0xa8) + 0x58))(param_1 + -0xa8); FUN_14006b350(piVar3); if (DAT_1401b42cf != '\0') { (**(code **)(*(longlong *)(param_1 + -0xa8) + 200))(param_1 + -0xa8); } uVar1 = *(uint *)(param_1 + 0xbf8); uVar5 = (ulonglong)param_2 % (ulonglong)uVar1; if (*(longlong *)(param_1 + 0xbd8) != 0) { puVar2 = *(uint **)(*(longlong *)(param_1 + 0xbd8) + uVar5 * 8); while( true ) { if ((puVar2 == (uint *)0x0) || ((uint)uVar5 != puVar2[8] % uVar1)) goto LAB_14007e30a; if (*puVar2 == param_2) break; puVar2 = *(uint **)(puVar2 + 4); } if (*(uint **)(puVar2 + 2) != (uint *)0x0) { FUN_1400d2050(*(uint **)(puVar2 + 2),param_3,uVar5,(ulonglong)uVar1); uVar4 = FUN_14006b3e0((longlong)piVar3); return CONCAT71((int7)((ulonglong)uVar4 >> 8),1); } } LAB_14007e30a: uVar5 = FUN_14006b3e0((longlong)piVar3); return uVar5 & 0xffffffffffffff00; }