server-re/decomp/Agent_Release_x64/full/functions/0x1400b0650.c
2026-10-14 16:45:19 -04:00

58 lines
1.7 KiB
C

/* Agent_Release_x64.exe sha256 6f2be7b8eb799ba51b359d1958720aac5baee5b7ee0d1d36684d3cbd72d45469
* Ghidra 12.1.2 decompiler output for 0x1400b0650 FUN_1400b0650
* Pseudocode, not original source. */
longlong * FUN_1400b0650(char *param_1,longlong *param_2)
{
ushort uVar1;
int iVar2;
ushort *puVar3;
longlong *plVar4;
ushort *puVar5;
uint uVar6;
uint uVar7;
puVar5 = (ushort *)*param_2;
puVar3 = puVar5;
if (puVar5 == (ushort *)0x0) {
puVar3 = (ushort *)PTR_DAT_140155010;
}
if (puVar3 == (ushort *)0x0) {
/* WARNING: Subroutine does not return */
FUN_14000b450(0x80004005);
}
uVar7 = 0;
if (puVar5 == (ushort *)0x0) {
puVar5 = (ushort *)PTR_DAT_140155010;
}
uVar1 = *puVar5;
while (uVar1 != 0) {
puVar5 = puVar5 + 1;
uVar7 = uVar7 * 0x21 + (uint)uVar1;
uVar1 = *puVar5;
}
uVar6 = (uint)((ulonglong)uVar7 % (ulonglong)*(uint *)(param_1 + 0x28));
if (*(longlong *)(param_1 + 8) != 0) {
for (plVar4 = *(longlong **)
(*(longlong *)(param_1 + 8) +
((ulonglong)uVar7 % (ulonglong)*(uint *)(param_1 + 0x28)) * 8);
(plVar4 != (longlong *)0x0 && (uVar6 == *(uint *)(plVar4 + 4) % *(uint *)(param_1 + 0x28)));
plVar4 = (longlong *)plVar4[2]) {
puVar5 = (ushort *)*param_2;
if ((ushort *)*param_2 == (ushort *)0x0) {
puVar5 = (ushort *)PTR_DAT_140155010;
}
puVar3 = (ushort *)*plVar4;
if ((ushort *)*plVar4 == (ushort *)0x0) {
puVar3 = (ushort *)PTR_DAT_140155010;
}
iVar2 = FUN_1400300c0(puVar3,(longlong)puVar5);
if (iVar2 == 0) goto LAB_1400b0730;
}
}
plVar4 = FUN_1400b0000(param_1,param_2,uVar6,uVar7);
LAB_1400b0730:
return plVar4 + 1;
}