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
379
decomp/MessageServer_Release_x64/full/functions/0x1400e6e40.c
Normal file
379
decomp/MessageServer_Release_x64/full/functions/0x1400e6e40.c
Normal file
|
|
@ -0,0 +1,379 @@
|
|||
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
|
||||
* Ghidra 12.1.2 decompiler output for 0x1400e6e40 FUN_1400e6e40
|
||||
* Pseudocode, not original source. */
|
||||
|
||||
undefined8
|
||||
FUN_1400e6e40(IMAGE_DOS_HEADER *param_1,IMAGE_DOS_HEADER *param_2,IMAGE_DOS_HEADER *param_3,
|
||||
undefined ***param_4)
|
||||
|
||||
{
|
||||
undefined8 *puVar1;
|
||||
int *piVar2;
|
||||
char cVar3;
|
||||
uint uVar4;
|
||||
uint uVar5;
|
||||
int iVar6;
|
||||
undefined8 uVar7;
|
||||
longlong *plVar8;
|
||||
int *piVar9;
|
||||
ulonglong uVar10;
|
||||
IMAGE_DOS_HEADER *pIVar11;
|
||||
undefined8 *puVar12;
|
||||
undefined8 *puVar13;
|
||||
uint uVar14;
|
||||
IMAGE_DOS_HEADER *pIVar15;
|
||||
undefined *puVar16;
|
||||
IMAGE_DOS_HEADER *pIVar17;
|
||||
wchar_t *pwVar18;
|
||||
longlong lVar19;
|
||||
undefined8 **ppuVar20;
|
||||
undefined8 *local_res8;
|
||||
IMAGE_DOS_HEADER *local_res10;
|
||||
uint local_res18;
|
||||
undefined8 *local_res20;
|
||||
undefined1 local_78 [16];
|
||||
undefined8 *local_68;
|
||||
undefined8 local_60;
|
||||
undefined8 local_58;
|
||||
word local_50 [4];
|
||||
undefined **local_48;
|
||||
word local_40 [2];
|
||||
undefined2 local_3c;
|
||||
byte local_38;
|
||||
|
||||
pIVar17 = param_3;
|
||||
local_res10 = param_2;
|
||||
(**(code **)(*(longlong *)(*(longlong *)¶m_1[2].e_cparhdr + 0x78) + 0x10))();
|
||||
uVar4 = (int)(*(int *)param_3 + (*(int *)param_3 >> 0x1f & 7U)) >> 3;
|
||||
local_res20 = (undefined8 *)CONCAT44(local_res20._4_4_,uVar4);
|
||||
pIVar15 = (IMAGE_DOS_HEADER *)&local_res18;
|
||||
pIVar11 = param_3;
|
||||
uVar7 = FUN_1400bd260((uint *)param_3,(uint *)pIVar15,pIVar17,param_4);
|
||||
if ((char)uVar7 == '\0') goto LAB_1400e7430;
|
||||
cVar3 = '\0';
|
||||
local_res8 = (undefined8 *)((ulonglong)local_res8 & 0xffffffffffffff00);
|
||||
if (0x27 < local_res18 - 1) goto switchD_1400e6ec3_caseD_5;
|
||||
pIVar15 = &IMAGE_DOS_HEADER_140000000;
|
||||
pIVar11 = (IMAGE_DOS_HEADER *)
|
||||
(IMAGE_DOS_HEADER_140000000.e_magic +
|
||||
(&switchD_1400e6ec3::switchdataD_1400e7448)[(int)(local_res18 - 1)]);
|
||||
switch(local_res18) {
|
||||
case 1:
|
||||
pIVar17 = (IMAGE_DOS_HEADER *)&local_res8;
|
||||
pIVar11 = param_1;
|
||||
pIVar15 = param_3;
|
||||
FUN_1400e67c0((longlong)param_1,(int *)param_3,(byte *)pIVar17,param_4);
|
||||
cVar3 = (char)local_res8;
|
||||
goto switchD_1400e6ec3_caseD_5;
|
||||
case 2:
|
||||
pIVar17 = (IMAGE_DOS_HEADER *)&local_res8;
|
||||
pIVar11 = param_1;
|
||||
pIVar15 = param_3;
|
||||
FUN_1400e6b40((longlong)param_1,(int *)param_3,(SIZE_T)pIVar17,param_4);
|
||||
goto switchD_1400e6ec3_caseD_5;
|
||||
case 3:
|
||||
if ((*(int *)param_3->e_res2_10_ == 1) || (*(int *)param_3->e_res2_10_ == 0)) {
|
||||
pIVar11 = param_1;
|
||||
pIVar15 = param_3;
|
||||
FUN_1400dff20((longlong)param_1,param_3,pIVar17,param_4);
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
if ((*(int *)param_3->e_res2_10_ == 1) || (*(int *)param_3->e_res2_10_ == 0)) {
|
||||
pIVar11 = param_1;
|
||||
pIVar15 = param_3;
|
||||
FUN_1400e33a0((longlong *)param_1,(uint *)param_3,pIVar17,param_4);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
goto switchD_1400e6ec3_caseD_5;
|
||||
case 6:
|
||||
if ((*(int *)param_3->e_res2_10_ == 1) || (*(int *)param_3->e_res2_10_ == 0)) {
|
||||
pIVar11 = param_1;
|
||||
pIVar15 = param_3;
|
||||
FUN_1400e3d70((longlong)param_1,param_3,(SIZE_T)pIVar17,param_4);
|
||||
}
|
||||
break;
|
||||
case 8:
|
||||
if ((*(int *)param_3->e_res2_10_ == 1) || (*(int *)param_3->e_res2_10_ == 0)) {
|
||||
pIVar11 = param_1;
|
||||
pIVar15 = param_3;
|
||||
FUN_1400dff90((longlong)param_1,param_3,pIVar17,param_4);
|
||||
}
|
||||
break;
|
||||
case 9:
|
||||
if ((*(int *)param_3->e_res2_10_ == 1) || (*(int *)param_3->e_res2_10_ == 0)) {
|
||||
pIVar11 = param_1;
|
||||
pIVar15 = param_3;
|
||||
FUN_1400e0000((longlong)param_1,param_3,pIVar17,param_4);
|
||||
}
|
||||
break;
|
||||
case 10:
|
||||
if ((*(int *)param_3->e_res2_10_ == 1) || (*(int *)param_3->e_res2_10_ == 0)) {
|
||||
pIVar11 = param_1;
|
||||
pIVar15 = param_3;
|
||||
FUN_1400e5cc0((longlong)param_1,(uint *)param_3,(SIZE_T)pIVar17,(undefined4 *)param_4);
|
||||
}
|
||||
break;
|
||||
case 0xb:
|
||||
if ((*(int *)param_3->e_res2_10_ == 1) || (*(int *)param_3->e_res2_10_ == 0)) {
|
||||
pIVar11 = param_1;
|
||||
pIVar15 = param_3;
|
||||
FUN_1400dfea0((longlong)param_1,(uint *)param_3);
|
||||
}
|
||||
break;
|
||||
case 0xd:
|
||||
if ((*(int *)param_3->e_res2_10_ == 1) || (*(int *)param_3->e_res2_10_ == 0)) {
|
||||
pIVar11 = param_1;
|
||||
pIVar15 = param_3;
|
||||
FUN_1400e1930((longlong)param_1,(uint *)param_3,pIVar17,(longlong)param_4);
|
||||
}
|
||||
break;
|
||||
case 0xf:
|
||||
if ((*(int *)param_3->e_res2_10_ == 1) || (*(int *)param_3->e_res2_10_ == 0)) {
|
||||
pIVar11 = param_1;
|
||||
pIVar15 = param_3;
|
||||
FUN_1400e5a20((longlong)param_1,(uint *)param_3,pIVar17,(ulonglong)param_4);
|
||||
}
|
||||
break;
|
||||
case 0x11:
|
||||
if ((*(int *)param_3->e_res2_10_ == 1) || (*(int *)param_3->e_res2_10_ == 0)) {
|
||||
pIVar11 = param_1;
|
||||
pIVar15 = param_3;
|
||||
FUN_1400e0bf0((longlong)param_1,(uint *)param_3,pIVar17,param_4);
|
||||
}
|
||||
break;
|
||||
case 0x13:
|
||||
pIVar11 = param_1;
|
||||
pIVar15 = local_res10;
|
||||
pIVar17 = param_3;
|
||||
FUN_1400e40f0((undefined ***)param_1,(uint *)local_res10,(uint *)param_3,param_4);
|
||||
break;
|
||||
case 0x17:
|
||||
if ((*(int *)param_3->e_res2_10_ == 1) || (*(int *)param_3->e_res2_10_ == 0)) {
|
||||
pIVar11 = param_1;
|
||||
pIVar15 = param_3;
|
||||
FUN_1400e4500((undefined ***)param_1,(uint *)param_3,pIVar17,param_4);
|
||||
}
|
||||
break;
|
||||
case 0x18:
|
||||
if ((*(int *)param_3->e_res2_10_ == 1) || (*(int *)param_3->e_res2_10_ == 0)) {
|
||||
pIVar11 = param_1;
|
||||
pIVar15 = local_res10;
|
||||
pIVar17 = param_3;
|
||||
FUN_1400e0d60(param_1,local_res10,(uint *)param_3,param_4);
|
||||
}
|
||||
break;
|
||||
case 0x19:
|
||||
if ((*(int *)param_3->e_res2_10_ == 1) || (*(int *)param_3->e_res2_10_ == 0)) {
|
||||
pIVar11 = param_1;
|
||||
pIVar15 = local_res10;
|
||||
pIVar17 = param_3;
|
||||
FUN_1400e4ad0((undefined ***)param_1,(longlong *)local_res10,(uint *)param_3,param_4);
|
||||
}
|
||||
break;
|
||||
case 0x1c:
|
||||
if ((*(int *)param_3->e_res2_10_ == 1) || (*(int *)param_3->e_res2_10_ == 0)) {
|
||||
pIVar11 = param_1;
|
||||
pIVar15 = param_3;
|
||||
FUN_1400e65f0((longlong)param_1,(uint *)param_3,pIVar17,param_4);
|
||||
}
|
||||
break;
|
||||
case 0x1d:
|
||||
break;
|
||||
case 0x1e:
|
||||
pIVar11 = param_1;
|
||||
pIVar15 = param_3;
|
||||
FUN_1400dfce0((longlong)param_1,(uint *)param_3,pIVar17,param_4);
|
||||
break;
|
||||
case 0x1f:
|
||||
pIVar11 = param_1;
|
||||
pIVar15 = param_3;
|
||||
FUN_1400dfd20((longlong)param_1,(uint *)param_3,pIVar17,param_4);
|
||||
break;
|
||||
case 0x20:
|
||||
pIVar11 = param_1;
|
||||
pIVar15 = param_3;
|
||||
FUN_1400e25f0((longlong)param_1,(uint *)param_3,pIVar17,param_4);
|
||||
break;
|
||||
case 0x21:
|
||||
pIVar11 = param_1;
|
||||
pIVar15 = param_3;
|
||||
FUN_1400e1200((longlong)param_1,(uint *)param_3);
|
||||
break;
|
||||
case 0x22:
|
||||
if ((*(int *)param_3->e_res2_10_ == 1) || (*(int *)param_3->e_res2_10_ == 0)) {
|
||||
pIVar11 = param_1;
|
||||
pIVar15 = local_res10;
|
||||
pIVar17 = param_3;
|
||||
FUN_1400e2e10((longlong)param_1,local_res10,(uint *)param_3,param_4);
|
||||
}
|
||||
break;
|
||||
case 0x23:
|
||||
pIVar11 = param_1;
|
||||
pIVar15 = local_res10;
|
||||
pIVar17 = param_3;
|
||||
FUN_1400e1c60(param_1,local_res10,(uint *)param_3,param_4);
|
||||
break;
|
||||
case 0x24:
|
||||
case 0x25:
|
||||
FUN_1400bca00((undefined4 *)local_78);
|
||||
local_48 = Proud::AddrPort::vftable;
|
||||
local_38 = 0;
|
||||
local_50[0] = 0;
|
||||
local_50[1] = 0;
|
||||
local_40[0] = (word)DAT_1401ac3d0;
|
||||
local_40[1] = DAT_1401ac3d0._2_2_;
|
||||
local_3c = DAT_1401ac3d4;
|
||||
param_4 = (undefined ***)local_78;
|
||||
pIVar15 = (IMAGE_DOS_HEADER *)(ulonglong)local_res18;
|
||||
pIVar17 = param_3;
|
||||
uVar7 = FUN_1400c0610(*(uint **)¶m_1[2].e_cparhdr,local_res18,(uint *)param_3,
|
||||
(uint *)param_4);
|
||||
if ((char)uVar7 != '\0') {
|
||||
local_38 = param_3->e_program[0];
|
||||
local_40 = *(word (*) [2])(param_3->e_res2_10_ + 8);
|
||||
local_3c = (undefined2)param_3->e_lfanew;
|
||||
local_50._0_4_ = *(undefined4 *)param_3->e_res2_10_;
|
||||
pIVar17 = (IMAGE_DOS_HEADER *)local_78;
|
||||
pIVar15 = local_res10;
|
||||
uVar7 = FUN_1400e6e40(param_1,local_res10,pIVar17,param_4);
|
||||
cVar3 = (char)uVar7;
|
||||
}
|
||||
local_res8 = (undefined8 *)(local_78 + 8);
|
||||
pIVar11 = (IMAGE_DOS_HEADER *)(local_78 + 8);
|
||||
FUN_1400d1800((longlong *)pIVar11);
|
||||
if ((local_68 != (undefined8 *)0x0) && (local_60._4_4_ < 0)) {
|
||||
/* WARNING: Subroutine does not return */
|
||||
FUN_14006be00();
|
||||
}
|
||||
goto switchD_1400e6ec3_caseD_5;
|
||||
case 0x26:
|
||||
FUN_1400bca00((undefined4 *)local_78);
|
||||
local_48 = Proud::AddrPort::vftable;
|
||||
local_38 = 0;
|
||||
local_50[0] = 0;
|
||||
local_50[1] = 0;
|
||||
local_40[0] = (word)DAT_1401ac3d0;
|
||||
local_40[1] = DAT_1401ac3d0._2_2_;
|
||||
local_3c = DAT_1401ac3d4;
|
||||
pIVar17 = (IMAGE_DOS_HEADER *)local_78;
|
||||
pIVar15 = param_3;
|
||||
uVar7 = FUN_1400bea40(*(longlong **)¶m_1[2].e_cparhdr,(uint *)param_3,(int *)pIVar17,
|
||||
(ulonglong)param_4);
|
||||
if ((char)uVar7 != '\0') {
|
||||
local_38 = param_3->e_program[0];
|
||||
local_40 = *(word (*) [2])(param_3->e_res2_10_ + 8);
|
||||
local_3c = (undefined2)param_3->e_lfanew;
|
||||
local_50._0_4_ = *(undefined4 *)param_3->e_res2_10_;
|
||||
pIVar17 = (IMAGE_DOS_HEADER *)local_78;
|
||||
pIVar15 = local_res10;
|
||||
uVar7 = FUN_1400e6e40(param_1,local_res10,pIVar17,param_4);
|
||||
cVar3 = (char)uVar7;
|
||||
}
|
||||
local_res8 = (undefined8 *)(local_78 + 8);
|
||||
pIVar11 = (IMAGE_DOS_HEADER *)(local_78 + 8);
|
||||
FUN_1400d1800((longlong *)pIVar11);
|
||||
if ((local_68 != (undefined8 *)0x0) && (local_60._4_4_ < 0)) {
|
||||
/* WARNING: Subroutine does not return */
|
||||
FUN_14006be00();
|
||||
}
|
||||
goto switchD_1400e6ec3_caseD_5;
|
||||
case 0x27:
|
||||
pIVar11 = param_1;
|
||||
pIVar15 = local_res10;
|
||||
pIVar17 = param_3;
|
||||
FUN_1400e28a0((longlong)param_1,(SIZE_T)local_res10,(longlong)param_3,param_4);
|
||||
break;
|
||||
case 0x28:
|
||||
pIVar11 = param_1;
|
||||
pIVar15 = param_3;
|
||||
FUN_1400e1370((longlong)param_1,(uint *)param_3);
|
||||
}
|
||||
cVar3 = '\x01';
|
||||
switchD_1400e6ec3_caseD_5:
|
||||
if (*(longlong *)¶m_3->e_cparhdr == 0) {
|
||||
lVar19._0_2_ = param_3->e_sp;
|
||||
lVar19._2_2_ = param_3->e_csum;
|
||||
lVar19._4_2_ = param_3->e_ip;
|
||||
lVar19._6_2_ = param_3->e_cs;
|
||||
if (lVar19 == 0) {
|
||||
/* WARNING: Subroutine does not return */
|
||||
FUN_1400d1900(pIVar11,pIVar15,pIVar17,param_4);
|
||||
}
|
||||
uVar4._0_2_ = param_3->e_lfarlc;
|
||||
uVar4._2_2_ = param_3->e_ovno;
|
||||
}
|
||||
else {
|
||||
uVar4 = *(uint *)(*(longlong *)¶m_3->e_cparhdr + 0x18);
|
||||
}
|
||||
uVar14 = *(int *)param_3 >> 0x1f & 7;
|
||||
uVar5 = (int)(*(int *)param_3 + uVar14) >> 3;
|
||||
puVar12 = (undefined8 *)(ulonglong)uVar5;
|
||||
if (cVar3 == '\x01') {
|
||||
if (((uVar4 != uVar5) && (puVar12 = (undefined8 *)(ulonglong)local_res18, local_res18 != 0x24))
|
||||
&& (local_res18 != 0x25)) {
|
||||
FUN_14006cb70((ulonglong)uVar4,(ulonglong)uVar14,pIVar17,param_4);
|
||||
local_res8 = (undefined8 *)PTR_DAT_1401ac010;
|
||||
uVar10 = (ulonglong)local_res18;
|
||||
pwVar18 = L"Proud::CNetClientWorker::ProcessMessage_ProudNetLayer";
|
||||
puVar16 = &DAT_140149a28;
|
||||
FUN_140053d20((longlong *)&local_res8,L"%s위치에서 MessageType:%d",
|
||||
L"Proud::CNetClientWorker::ProcessMessage_ProudNetLayer",uVar10);
|
||||
iVar6 = FUN_14007c120((longlong)param_3,puVar16,pwVar18,uVar10);
|
||||
local_res20 = (undefined8 *)FUN_1400a1cc0((longlong)param_3,puVar16,pwVar18,uVar10);
|
||||
local_78._0_8_ = Proud::CFastArray<unsigned_char,1>::vftable;
|
||||
local_78._8_2_ = 0;
|
||||
local_78._10_2_ = 0;
|
||||
local_78._12_2_ = 0;
|
||||
local_78._14_2_ = 0;
|
||||
local_68 = (undefined8 *)0x0;
|
||||
local_60._0_2_ = 0;
|
||||
local_60._2_2_ = 0;
|
||||
local_60._4_2_ = 0;
|
||||
local_60._6_2_ = 0;
|
||||
local_58._0_2_ = 0;
|
||||
local_58._2_2_ = 0;
|
||||
local_58._4_2_ = 0;
|
||||
local_58._6_2_ = 0;
|
||||
if (iVar6 < 0) {
|
||||
/* WARNING: Subroutine does not return */
|
||||
FUN_14006be00();
|
||||
}
|
||||
FUN_1400146f0((longlong)local_78,iVar6,(SIZE_T)pwVar18);
|
||||
puVar12 = local_68;
|
||||
if ((int)local_60 == 0) {
|
||||
puVar12 = (undefined8 *)0x0;
|
||||
}
|
||||
FUN_140006500(puVar12,local_res20,(longlong)iVar6);
|
||||
local_78._0_8_ = Proud::ByteArray::vftable;
|
||||
ppuVar20 = &local_res8;
|
||||
plVar8 = FUN_140078c10((longlong *)&local_res20,0x1f,(ulonglong)*(uint *)param_3->e_res2_10_,
|
||||
(longlong *)ppuVar20,(longlong)local_78);
|
||||
lVar19 = **(longlong **)¶m_1[2].e_cparhdr;
|
||||
(**(code **)(lVar19 + 0x80))();
|
||||
puVar13 = (undefined8 *)local_78;
|
||||
FUN_140078360(puVar13);
|
||||
puVar12 = local_res8;
|
||||
if (((local_res8 != (undefined8 *)0x0) && (local_res8 != (undefined8 *)PTR_DAT_1401ac010)) &&
|
||||
(puVar1 = local_res8 + -1, puVar1 != (undefined8 *)0x0)) {
|
||||
piVar9 = (int *)FUN_14006cb70(puVar13,plVar8,lVar19,ppuVar20);
|
||||
FUN_14006b350(piVar9);
|
||||
piVar2 = (int *)((longlong)puVar12 + -4);
|
||||
*piVar2 = *piVar2 + -1;
|
||||
if (*piVar2 == 0) {
|
||||
FUN_14006cc60(puVar1);
|
||||
}
|
||||
puVar12 = (undefined8 *)FUN_14006b3e0((longlong)piVar9);
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (cVar3 == '\0') {
|
||||
uVar4 = (uint)local_res20;
|
||||
LAB_1400e7430:
|
||||
uVar10 = FUN_1400bc600((int *)param_3,(ulonglong)uVar4,pIVar17,param_4);
|
||||
return uVar10 & 0xffffffffffffff00;
|
||||
}
|
||||
return CONCAT71((int7)((ulonglong)puVar12 >> 8),1);
|
||||
}
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue