server-re/decomp/MessageServer_Release_x64/full/functions/0x14010dec0.c

56 lines
1.2 KiB
C

/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x14010dec0 FUN_14010dec0
* Pseudocode, not original source. */
undefined8 FUN_14010dec0(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;
}