/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1 * Ghidra 12.1.2 decompiler output for 0x1400dc760 FUN_1400dc760 * Pseudocode, not original source. */ undefined8 * FUN_1400dc760(longlong param_1,undefined8 param_2,uint param_3) { uint uVar1; longlong lVar2; longlong *plVar3; ulonglong uVar4; undefined8 *puVar5; undefined8 uVar6; uint *puVar7; uint uVar8; uint local_res18 [4]; uVar1 = *(uint *)(param_1 + 0x40); puVar5 = (undefined8 *)((ulonglong)param_3 / (ulonglong)uVar1); uVar4 = (ulonglong)param_3 % (ulonglong)uVar1; lVar2 = *(longlong *)(param_1 + 0x20); uVar8 = (uint)uVar4; if (lVar2 != 0) { for (puVar7 = *(uint **)(lVar2 + uVar4 * 8); (puVar7 != (uint *)0x0 && (puVar5 = (undefined8 *)((ulonglong)puVar7[10] / (ulonglong)uVar1), uVar8 == puVar7[10] % uVar1)); puVar7 = *(uint **)(puVar7 + 6)) { if (*puVar7 == param_3) goto LAB_1400dc7bb; } } puVar7 = (uint *)0x0; LAB_1400dc7bb: local_res18[0] = param_3; if (puVar7 != (uint *)0x0) { if (*(double *)(puVar7 + 4) != 0.0) { return puVar5; } *(undefined8 *)(puVar7 + 4) = param_2; puVar5 = FUN_1400dc2b0((longlong *)(param_1 + 0x70),local_res18); return puVar5; } if (lVar2 != 0) { for (puVar7 = *(uint **)(lVar2 + uVar4 * 8); (puVar7 != (uint *)0x0 && (uVar8 == puVar7[10] % uVar1)); puVar7 = *(uint **)(puVar7 + 6)) { if (*puVar7 == param_3) goto LAB_1400dc8c7; } if (lVar2 != 0) { for (puVar7 = *(uint **)(lVar2 + uVar4 * 8); (puVar7 != (uint *)0x0 && (uVar8 == puVar7[10] % uVar1)); puVar7 = *(uint **)(puVar7 + 6)) { if (*puVar7 == param_3) goto LAB_1400dc8b5; } if (lVar2 != 0) goto LAB_1400dc88c; } } uVar6 = FUN_1400a1910(param_1 + 0x18,uVar1,'\x01'); if ((char)uVar6 == '\0') { /* WARNING: Subroutine does not return */ FUN_1400064e0(0x8007000e); } LAB_1400dc88c: FUN_1400d35d0((char *)(param_1 + 0x18)); puVar7 = FUN_1400dc330((char *)(param_1 + 0x18),local_res18,uVar8,param_3); FUN_1400d35d0((char *)(param_1 + 0x18)); LAB_1400dc8b5: *(ulonglong *)(puVar7 + 2) = (ulonglong)param_3; *(undefined8 *)(puVar7 + 4) = param_2; LAB_1400dc8c7: plVar3 = *(longlong **)(param_1 + 0x70); uVar6 = *(undefined8 *)(param_1 + 0x80); if (plVar3 == (longlong *)0x0) { puVar5 = (undefined8 *)FUN_14006cbf0(0x18); } else { puVar5 = (undefined8 *)(**(code **)(*plVar3 + 8))(plVar3,0x18); } if (puVar5 != (undefined8 *)0x0) { *(uint *)(puVar5 + 2) = param_3; } puVar5[1] = uVar6; *puVar5 = 0; *(longlong *)(param_1 + 0x88) = *(longlong *)(param_1 + 0x88) + 1; if (*(undefined8 **)(param_1 + 0x80) == (undefined8 *)0x0) { *(undefined8 **)(param_1 + 0x78) = puVar5; } else { **(undefined8 **)(param_1 + 0x80) = puVar5; } *(undefined8 **)(param_1 + 0x80) = puVar5; return puVar5; }