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

87 lines
2 KiB
C

/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x14000d7b0 FUN_14000d7b0
* Pseudocode, not original source. */
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
void FUN_14000d7b0(uint param_1,longlong param_2,int *param_3)
{
int iVar1;
byte bVar2;
byte *pbVar3;
byte local_38 [32];
ulonglong local_18;
local_18 = DAT_1401ac5a0 ^ (ulonglong)local_38;
local_38[8] = 0xc0;
local_38[9] = 0;
local_38[10] = 0;
local_38[0xb] = 0;
local_38[0xc] = 0xe0;
local_38[0xd] = 0;
local_38[0xe] = 0;
local_38[0xf] = 0;
local_38[0x10] = 0xf0;
local_38[0x11] = 0;
local_38[0x12] = 0;
local_38[0x13] = 0;
local_38[0x14] = 0xf8;
local_38[0x15] = 0;
local_38[0x16] = 0;
local_38[0x17] = 0;
local_38[0] = 0;
local_38[1] = 0;
local_38[2] = 0;
local_38[3] = 0;
local_38[4] = 0;
local_38[5] = 0;
local_38[6] = 0;
local_38[7] = 0;
local_38[0x18] = 0xfc;
local_38[0x19] = 0;
local_38[0x1a] = 0;
local_38[0x1b] = 0;
if (param_1 < 0x80) {
*param_3 = 1;
}
else if (param_1 < 0x800) {
*param_3 = 2;
}
else if (param_1 < 0x10000) {
*param_3 = 3;
}
else {
if (0x1fffff < param_1) {
*param_3 = 0;
return;
}
*param_3 = 4;
}
iVar1 = *param_3;
pbVar3 = (byte *)(param_2 + iVar1);
if (iVar1 != 1) {
if (iVar1 != 2) {
if (iVar1 != 3) {
if (iVar1 != 4) {
return;
}
pbVar3 = pbVar3 + -1;
bVar2 = (byte)param_1;
param_1 = param_1 >> 6;
*pbVar3 = bVar2 & 0x3f | 0x80;
}
pbVar3 = pbVar3 + -1;
bVar2 = (byte)param_1;
param_1 = param_1 >> 6;
*pbVar3 = bVar2 & 0x3f | 0x80;
}
pbVar3 = pbVar3 + -1;
bVar2 = (byte)param_1;
param_1 = param_1 >> 6;
*pbVar3 = bVar2 & 0x3f | 0x80;
}
pbVar3[-1] = local_38[(longlong)*param_3 * 4] | (byte)param_1;
return;
}