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
218
decomp/DBCServer_Release_x64/full/functions/0x14020e470.c
Normal file
218
decomp/DBCServer_Release_x64/full/functions/0x14020e470.c
Normal file
|
|
@ -0,0 +1,218 @@
|
|||
/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c
|
||||
* Ghidra 12.1.2 decompiler output for 0x14020e470 FUN_14020e470
|
||||
* Pseudocode, not original source. */
|
||||
|
||||
undefined8 FUN_14020e470(longlong param_1,uint param_2,char *param_3,uint *param_4,int param_5)
|
||||
|
||||
{
|
||||
undefined4 uVar1;
|
||||
int iVar2;
|
||||
undefined4 *puVar3;
|
||||
undefined8 uVar4;
|
||||
ulonglong uVar5;
|
||||
uint uVar6;
|
||||
uint uVar7;
|
||||
undefined8 *puVar8;
|
||||
uint local_28;
|
||||
uint local_24;
|
||||
uint local_20;
|
||||
|
||||
if (((param_1 == 0) || (param_3 == (char *)0x0)) || (param_4 == (uint *)0x0)) {
|
||||
return 0x10;
|
||||
}
|
||||
uVar6 = 0;
|
||||
local_20 = 0;
|
||||
if (param_2 != 0) {
|
||||
puVar8 = (undefined8 *)(param_1 + 8);
|
||||
do {
|
||||
uVar1 = *(undefined4 *)(puVar8 + 1);
|
||||
puVar3 = (undefined4 *)*puVar8;
|
||||
if (*(int *)(puVar8 + -1) == 0) break;
|
||||
switch(*(int *)(puVar8 + -1)) {
|
||||
case 1:
|
||||
uVar4 = FUN_14020e410(&local_28);
|
||||
break;
|
||||
case 2:
|
||||
uVar4 = FUN_14020e180(puVar3,&local_28);
|
||||
break;
|
||||
case 3:
|
||||
uVar4 = FUN_14020e0d0(*puVar3,&local_28);
|
||||
break;
|
||||
case 4:
|
||||
uVar4 = FUN_14020df20(uVar1,&local_28);
|
||||
break;
|
||||
case 5:
|
||||
uVar4 = FUN_14020ddd0(uVar1,&local_28);
|
||||
break;
|
||||
case 6:
|
||||
uVar6 = uVar6 + 2;
|
||||
goto LAB_14020e5bf;
|
||||
case 7:
|
||||
uVar4 = FUN_14020db20(puVar3,uVar1,&local_28);
|
||||
break;
|
||||
case 8:
|
||||
uVar4 = FUN_14020d940(puVar3,uVar1,&local_28);
|
||||
break;
|
||||
case 9:
|
||||
uVar4 = FUN_14020d700(puVar3,uVar1,&local_28);
|
||||
break;
|
||||
case 10:
|
||||
uVar4 = FUN_14020d3f0(puVar3,uVar1,&local_28);
|
||||
break;
|
||||
case 0xb:
|
||||
uVar4 = FUN_14020f3f0(puVar3,&local_28);
|
||||
break;
|
||||
default:
|
||||
goto LAB_14020e8e7;
|
||||
case 0xd:
|
||||
case 0xe:
|
||||
case 0xf:
|
||||
uVar4 = FUN_14020ce70(puVar3,uVar1,&local_28);
|
||||
}
|
||||
if ((int)uVar4 != 0) {
|
||||
return uVar4;
|
||||
}
|
||||
uVar6 = uVar6 + local_28;
|
||||
LAB_14020e5bf:
|
||||
puVar8 = puVar8 + 7;
|
||||
local_20 = local_20 + 1;
|
||||
} while (local_20 < param_2);
|
||||
}
|
||||
if (uVar6 < 0x80) {
|
||||
uVar7 = uVar6 + 2;
|
||||
}
|
||||
else if (uVar6 < 0x100) {
|
||||
uVar7 = uVar6 + 3;
|
||||
}
|
||||
else if (uVar6 < 0x10000) {
|
||||
uVar7 = uVar6 + 4;
|
||||
}
|
||||
else {
|
||||
if (0xffffff < uVar6) {
|
||||
LAB_14020e8e7:
|
||||
return 0x10;
|
||||
}
|
||||
uVar7 = uVar6 + 5;
|
||||
}
|
||||
if (*param_4 < uVar7) {
|
||||
*param_4 = uVar7;
|
||||
return 6;
|
||||
}
|
||||
*param_3 = (param_5 != 0xd) + '0';
|
||||
uVar7 = 1;
|
||||
uVar5 = 1;
|
||||
local_28 = 1;
|
||||
if (uVar6 < 0x80) {
|
||||
param_3[1] = (char)uVar6;
|
||||
local_28 = uVar7;
|
||||
}
|
||||
else {
|
||||
if (uVar6 < 0x100) {
|
||||
param_3[1] = -0x7f;
|
||||
local_28 = uVar7;
|
||||
}
|
||||
else {
|
||||
if (uVar6 < 0x10000) {
|
||||
param_3[1] = -0x7e;
|
||||
local_28 = uVar7;
|
||||
}
|
||||
else {
|
||||
if (0xffffff < uVar6) goto LAB_14020e6c4;
|
||||
param_3[1] = -0x7d;
|
||||
local_28 = 2;
|
||||
param_3[2] = (char)(uVar6 >> 0x10);
|
||||
}
|
||||
local_28 = local_28 + 1;
|
||||
param_3[local_28] = (char)(uVar6 >> 8);
|
||||
}
|
||||
local_28 = local_28 + 1;
|
||||
param_3[local_28] = (char)uVar6;
|
||||
}
|
||||
local_28 = local_28 + 1;
|
||||
uVar5 = (ulonglong)local_28;
|
||||
LAB_14020e6c4:
|
||||
*param_4 = *param_4 - (int)uVar5;
|
||||
uVar6 = 0;
|
||||
if (param_2 != 0) {
|
||||
puVar8 = (undefined8 *)(param_1 + 8);
|
||||
do {
|
||||
iVar2 = *(int *)(puVar8 + -1);
|
||||
uVar1 = *(undefined4 *)(puVar8 + 1);
|
||||
puVar3 = (undefined4 *)*puVar8;
|
||||
if (iVar2 == 0) break;
|
||||
switch(iVar2) {
|
||||
case 1:
|
||||
local_24 = *param_4;
|
||||
uVar4 = FUN_140210950(*puVar3,param_3 + uVar5,&local_24);
|
||||
break;
|
||||
case 2:
|
||||
local_24 = *param_4;
|
||||
uVar4 = FUN_1402106b0(puVar3,param_3 + uVar5,&local_24);
|
||||
break;
|
||||
case 3:
|
||||
local_24 = *param_4;
|
||||
uVar4 = FUN_140210590(*puVar3,param_3 + uVar5,&local_24);
|
||||
break;
|
||||
case 4:
|
||||
local_24 = *param_4;
|
||||
uVar4 = FUN_140210420(puVar3,uVar1,param_3 + uVar5,&local_24);
|
||||
break;
|
||||
case 5:
|
||||
local_24 = *param_4;
|
||||
uVar4 = FUN_1402102f0(puVar3,uVar1,param_3 + uVar5,&local_24);
|
||||
break;
|
||||
case 6:
|
||||
param_3[uVar5] = '\x05';
|
||||
param_3[local_28 + 1] = '\0';
|
||||
local_28 = local_28 + 2;
|
||||
*param_4 = *param_4 - 2;
|
||||
goto LAB_14020e8b9;
|
||||
case 7:
|
||||
local_24 = *param_4;
|
||||
uVar4 = FUN_140210090(puVar3,uVar1,param_3 + uVar5,&local_24);
|
||||
break;
|
||||
case 8:
|
||||
local_24 = *param_4;
|
||||
uVar4 = FUN_14020ff60(puVar3,uVar1,param_3 + uVar5,&local_24);
|
||||
break;
|
||||
case 9:
|
||||
local_24 = *param_4;
|
||||
uVar4 = FUN_14020fe30(puVar3,uVar1,param_3 + uVar5,&local_24);
|
||||
break;
|
||||
case 10:
|
||||
local_24 = *param_4;
|
||||
uVar4 = FUN_14020fc30(puVar3,uVar1,param_3 + uVar5,&local_24);
|
||||
break;
|
||||
case 0xb:
|
||||
local_24 = *param_4;
|
||||
uVar4 = FUN_14020f8a0(puVar3,param_3 + uVar5,&local_24);
|
||||
break;
|
||||
default:
|
||||
goto LAB_14020e8e7;
|
||||
case 0xd:
|
||||
local_24 = *param_4;
|
||||
uVar4 = FUN_14020e470(puVar3,uVar1,param_3 + uVar5,&local_24,iVar2);
|
||||
break;
|
||||
case 0xe:
|
||||
local_24 = *param_4;
|
||||
uVar4 = FUN_14020f7a0(puVar3,uVar1,param_3 + uVar5,&local_24);
|
||||
break;
|
||||
case 0xf:
|
||||
local_24 = *param_4;
|
||||
uVar4 = FUN_14020f4b0(puVar3,uVar1,param_3 + uVar5,&local_24);
|
||||
}
|
||||
if ((int)uVar4 != 0) {
|
||||
return uVar4;
|
||||
}
|
||||
local_28 = local_28 + local_24;
|
||||
*param_4 = *param_4 - local_24;
|
||||
LAB_14020e8b9:
|
||||
uVar5 = (ulonglong)local_28;
|
||||
puVar8 = puVar8 + 7;
|
||||
uVar6 = uVar6 + 1;
|
||||
} while (uVar6 < param_2);
|
||||
}
|
||||
*param_4 = (uint)uVar5;
|
||||
return 0;
|
||||
}
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue