server-re/decomp/AgentManager_Release_x64/full/functions/0x1400e21a0.c
2026-10-15 09:58:24 -04:00

56 lines
1.2 KiB
C

/* AgentManager_Release_x64.exe sha256 8fd8ca91725858651a7839d34257b10c2970ac16c97e60c523b8b0c983fcb186
* Ghidra 12.1.2 decompiler output for 0x1400e21a0 FUN_1400e21a0
* Pseudocode, not original source. */
undefined8 FUN_1400e21a0(ushort *param_1,uint param_2,int *param_3)
{
ushort uVar1;
uint uVar2;
int iVar3;
uint uVar4;
if ((param_1 == (ushort *)0x0) || (param_3 == (int *)0x0)) {
return 0x10;
}
uVar2 = 0;
uVar4 = 0;
if (param_2 != 0) {
do {
uVar1 = *param_1;
if (0x10ffff < uVar1) {
return 0x10;
}
if (uVar1 < 0x80) {
iVar3 = 1;
}
else if (uVar1 < 0x800) {
iVar3 = 2;
}
else {
iVar3 = 3;
}
uVar4 = uVar4 + 1;
uVar2 = uVar2 + iVar3;
param_1 = param_1 + 1;
} while (uVar4 < param_2);
if (0x7f < uVar2) {
if (uVar2 < 0x100) {
*param_3 = uVar2 + 3;
return 0;
}
if (0xffff < uVar2) {
if (0xffffff < uVar2) {
return 0x10;
}
*param_3 = uVar2 + 5;
return 0;
}
*param_3 = uVar2 + 4;
return 0;
}
}
*param_3 = uVar2 + 2;
return 0;
}