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

56 lines
1.5 KiB
C

/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x14000dda0 FUN_14000dda0
* Pseudocode, not original source. */
ulonglong FUN_14000dda0(char *param_1,char *param_2,char param_3,int param_4)
{
char cVar1;
uint _C;
int iVar2;
ulonglong in_RAX;
undefined4 extraout_var;
ulonglong uVar3;
int _C_00;
longlong lVar4;
if ((param_1 == (char *)0x0) || (*param_1 == '\0')) {
return in_RAX & 0xffffffffffffff00;
}
if (param_3 == '\0') {
do {
in_RAX = 0;
if (*param_2 == '\0') goto LAB_14000de20;
if (*param_1 != *param_2) break;
param_1 = param_1 + 1;
param_2 = param_2 + 1;
} while (*param_1 != '\0');
cVar1 = *param_2;
}
else {
lVar4 = (longlong)param_1 - (longlong)param_2;
do {
if (*param_2 == '\0') goto LAB_14000de20;
_C_00 = (int)param_2[lVar4];
if ((param_4 != 1) || (_C_00 < 0x80)) {
_C_00 = tolower(_C_00);
}
_C = (uint)*param_2;
in_RAX = (ulonglong)_C;
if ((param_4 != 1) || ((int)_C < 0x80)) {
iVar2 = tolower(_C);
in_RAX = CONCAT44(extraout_var,iVar2);
}
} while ((_C_00 == (int)in_RAX) && (param_2 = param_2 + 1, param_2[lVar4] != '\0'));
cVar1 = *param_2;
}
if (cVar1 == '\0') {
LAB_14000de20:
uVar3 = CONCAT71((int7)(in_RAX >> 8),1);
}
else {
uVar3 = in_RAX & 0xffffffffffffff00;
}
return uVar3;
}