decomp DBCServer_Release and inspect/document database
This commit is contained in:
parent
4b267cbe05
commit
7834b98bf0
28222 changed files with 843300 additions and 144 deletions
188
decomp/MessageServer_Release_x64/full/functions/0x1400bda70.c
Normal file
188
decomp/MessageServer_Release_x64/full/functions/0x1400bda70.c
Normal file
|
|
@ -0,0 +1,188 @@
|
|||
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
|
||||
* Ghidra 12.1.2 decompiler output for 0x1400bda70 FUN_1400bda70
|
||||
* Pseudocode, not original source. */
|
||||
|
||||
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
|
||||
|
||||
ulonglong FUN_1400bda70(uint *param_1,longlong *param_2,undefined8 param_3,undefined8 param_4)
|
||||
|
||||
{
|
||||
longlong *plVar1;
|
||||
uint uVar2;
|
||||
int iVar3;
|
||||
longlong *plVar4;
|
||||
ulonglong uVar5;
|
||||
int *piVar6;
|
||||
int *piVar7;
|
||||
uint uVar8;
|
||||
uint *puVar9;
|
||||
longlong **pplVar10;
|
||||
short *psVar11;
|
||||
uint uVar12;
|
||||
char *pcVar13;
|
||||
longlong *plVar14;
|
||||
short *psVar15;
|
||||
int iVar16;
|
||||
int iVar17;
|
||||
undefined8 uVar18;
|
||||
undefined1 auStack_1e8 [32];
|
||||
char local_1c8 [8];
|
||||
longlong *local_1c0;
|
||||
undefined8 *local_1b8;
|
||||
longlong **local_1b0;
|
||||
longlong *local_1a8;
|
||||
undefined8 local_1a0;
|
||||
exception local_198 [80];
|
||||
short *local_148;
|
||||
short local_140 [132];
|
||||
ulonglong local_38;
|
||||
|
||||
local_1a0 = 0xfffffffffffffffe;
|
||||
local_38 = DAT_1401ac5a0 ^ (ulonglong)auStack_1e8;
|
||||
uVar12 = (int)*param_1 >> 0x1f & 7;
|
||||
uVar2 = *param_1 + uVar12;
|
||||
uVar8 = uVar2 & 0xfffffff8;
|
||||
*param_1 = uVar8;
|
||||
if (0 < (int)((uVar2 & 7) - uVar12)) {
|
||||
*param_1 = uVar8 + 8;
|
||||
}
|
||||
uVar18 = 1;
|
||||
pcVar13 = local_1c8;
|
||||
plVar4 = (longlong *)FUN_1400bc6c0((int *)param_1,(undefined8 *)pcVar13,1,param_4);
|
||||
if ((char)plVar4 == '\0') goto LAB_1400bdd9f;
|
||||
FUN_1400bc8a0((int *)param_1,pcVar13,uVar18,param_4);
|
||||
pplVar10 = &local_1c0;
|
||||
puVar9 = param_1;
|
||||
plVar4 = (longlong *)FUN_1400bcfd0(param_1,pplVar10,uVar18,param_4);
|
||||
plVar1 = local_1c0;
|
||||
if ((char)plVar4 == '\0') goto LAB_1400bdd9f;
|
||||
iVar16 = (int)local_1c0;
|
||||
if ((iVar16 < 0) || (0x100000 < iVar16)) {
|
||||
FUN_14006ba50(local_198,L"CMessage.ReadString failed! length=%d",
|
||||
(ulonglong)local_1c0 & 0xffffffff,param_4);
|
||||
/* WARNING: Subroutine does not return */
|
||||
_CxxThrowException(local_198,(ThrowInfo *)&DAT_1401a93e8);
|
||||
}
|
||||
if (local_1c8[0] == '\x02') {
|
||||
local_1c0 = param_2;
|
||||
local_1b8 = (undefined8 *)FUN_140002f30(param_2,iVar16 + 1);
|
||||
*(undefined2 *)local_1b8 = 0;
|
||||
*(undefined2 *)((longlong)local_1b8 + (longlong)iVar16 * 2) = 0;
|
||||
uVar5 = FUN_1400bc930(param_1,local_1b8,(ulonglong)(uint)(iVar16 * 2));
|
||||
FUN_140003010(param_2);
|
||||
return uVar5 & 0xff;
|
||||
}
|
||||
FUN_14006cb70(puVar9,pplVar10,uVar18,param_4);
|
||||
local_1c0 = (longlong *)PTR_DAT_1401ac008;
|
||||
iVar3 = iVar16 + 1;
|
||||
local_1b0 = &local_1c0;
|
||||
if (iVar3 < 1) {
|
||||
iVar3 = 0;
|
||||
}
|
||||
iVar17 = 1;
|
||||
if (1 < iVar3) {
|
||||
iVar17 = iVar3;
|
||||
}
|
||||
if (0 < iVar17) {
|
||||
local_1c0 = (longlong *)PTR_DAT_1401ac008;
|
||||
if (iVar17 < 0) {
|
||||
/* WARNING: Subroutine does not return */
|
||||
FUN_14006be00();
|
||||
}
|
||||
if (iVar17 == 0) {
|
||||
FUN_140008440((longlong *)&local_1c0);
|
||||
}
|
||||
else {
|
||||
piVar6 = (int *)FUN_14006cbf0((longlong)iVar17 + 9);
|
||||
if (piVar6 != (int *)0x0) {
|
||||
*piVar6 = 0;
|
||||
piVar6[1] = 1;
|
||||
}
|
||||
*piVar6 = iVar17;
|
||||
iVar3 = 0;
|
||||
if ((local_1c0 != (longlong *)0x0) && (iVar3 = 0, local_1c0 != (longlong *)PTR_DAT_1401ac008))
|
||||
{
|
||||
iVar3 = (int)local_1c0[-1];
|
||||
}
|
||||
plVar4 = (longlong *)PTR_DAT_1401ac008;
|
||||
if (iVar17 < iVar3) {
|
||||
LAB_1400bdc10:
|
||||
if (local_1c0 != (longlong *)0x0) {
|
||||
plVar4 = local_1c0;
|
||||
}
|
||||
}
|
||||
else {
|
||||
iVar17 = 0;
|
||||
if (local_1c0 != (longlong *)0x0) {
|
||||
if (local_1c0 != (longlong *)PTR_DAT_1401ac008) {
|
||||
iVar17 = (int)local_1c0[-1];
|
||||
}
|
||||
goto LAB_1400bdc10;
|
||||
}
|
||||
}
|
||||
FUN_14006cac0(piVar6 + 2,plVar4,iVar17);
|
||||
FUN_140008440((longlong *)&local_1c0);
|
||||
local_1c0 = (longlong *)(piVar6 + 2);
|
||||
}
|
||||
}
|
||||
FUN_140053e30((longlong *)&local_1c0);
|
||||
plVar14 = local_1c0;
|
||||
if (local_1c0 == (longlong *)0x0) {
|
||||
plVar14 = (longlong *)PTR_DAT_1401ac008;
|
||||
}
|
||||
*(undefined1 *)plVar14 = 0;
|
||||
*(undefined1 *)((longlong)iVar16 + (longlong)plVar14) = 0;
|
||||
uVar5 = (ulonglong)plVar1 & 0xffffffff;
|
||||
local_1a8 = plVar14;
|
||||
uVar18 = FUN_1400bc930(param_1,plVar14,uVar5);
|
||||
if ((char)uVar18 != '\0') {
|
||||
FUN_140054010((longlong *)&local_1c0);
|
||||
plVar4 = local_1c0;
|
||||
if (local_1c0 == (longlong *)0x0) {
|
||||
plVar4 = (longlong *)PTR_DAT_1401ac008;
|
||||
}
|
||||
local_148 = local_140;
|
||||
uVar18 = 3;
|
||||
FUN_1400626b0((longlong *)&local_148,(LPCSTR)plVar4,3);
|
||||
psVar15 = local_148;
|
||||
FUN_140008030(param_2,local_148,uVar18,param_4);
|
||||
psVar11 = local_148;
|
||||
if (local_148 != local_140) {
|
||||
free(local_148);
|
||||
}
|
||||
plVar4 = local_1c0;
|
||||
if (((local_1c0 != (longlong *)0x0) && (local_1c0 != (longlong *)PTR_DAT_1401ac008)) &&
|
||||
(plVar1 = local_1c0 + -1, plVar1 != (longlong *)0x0)) {
|
||||
piVar7 = (int *)FUN_14006cb70(psVar11,psVar15,uVar18,param_4);
|
||||
local_1b0 = (longlong **)piVar7;
|
||||
FUN_14006b350(piVar7);
|
||||
local_1a8 = (longlong *)CONCAT71(local_1a8._1_7_,1);
|
||||
piVar6 = (int *)((longlong)plVar4 + -4);
|
||||
*piVar6 = *piVar6 + -1;
|
||||
if (*piVar6 == 0) {
|
||||
FUN_14006cc60(plVar1);
|
||||
}
|
||||
local_1c0 = (longlong *)FUN_14006b3e0((longlong)piVar7);
|
||||
}
|
||||
return CONCAT71((int7)((ulonglong)local_1c0 >> 8),1);
|
||||
}
|
||||
pplVar10 = &local_1c0;
|
||||
FUN_140054010((longlong *)pplVar10);
|
||||
plVar4 = local_1c0;
|
||||
if (((local_1c0 != (longlong *)0x0) && (local_1c0 != (longlong *)PTR_DAT_1401ac008)) &&
|
||||
(plVar1 = local_1c0 + -1, plVar1 != (longlong *)0x0)) {
|
||||
piVar7 = (int *)FUN_14006cb70(pplVar10,plVar14,uVar5,param_4);
|
||||
local_1b0 = (longlong **)piVar7;
|
||||
FUN_14006b350(piVar7);
|
||||
local_1a8 = (longlong *)CONCAT71(local_1a8._1_7_,1);
|
||||
piVar6 = (int *)((longlong)plVar4 + -4);
|
||||
*piVar6 = *piVar6 + -1;
|
||||
if (*piVar6 == 0) {
|
||||
FUN_14006cc60(plVar1);
|
||||
}
|
||||
plVar4 = (longlong *)FUN_14006b3e0((longlong)piVar7);
|
||||
}
|
||||
LAB_1400bdd9f:
|
||||
return (ulonglong)plVar4 & 0xffffffffffffff00;
|
||||
}
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue