318 lines
9 KiB
C
318 lines
9 KiB
C
/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c
|
|
* Ghidra 12.1.2 decompiler output for 0x1401bf780 FUN_1401bf780
|
|
* Pseudocode, not original source. */
|
|
|
|
ulonglong FUN_1401bf780(undefined8 *param_1,undefined4 *param_2)
|
|
|
|
{
|
|
char cVar1;
|
|
ulonglong uVar2;
|
|
ulonglong uVar3;
|
|
int iVar4;
|
|
undefined4 uVar5;
|
|
ulonglong uVar6;
|
|
ulonglong uVar7;
|
|
longlong *local_res8;
|
|
ulonglong local_res10;
|
|
undefined1 *local_res18;
|
|
longlong local_138;
|
|
ulonglong local_130;
|
|
int local_128;
|
|
int iStack_124;
|
|
int local_120 [2];
|
|
longlong local_118;
|
|
longlong local_110;
|
|
undefined4 local_108;
|
|
int local_104;
|
|
longlong local_f8;
|
|
ulonglong local_f0;
|
|
undefined8 local_e8;
|
|
undefined1 local_d8 [8];
|
|
undefined1 local_d0 [8];
|
|
longlong local_c8;
|
|
undefined4 local_c0;
|
|
int local_bc;
|
|
undefined4 local_b0;
|
|
undefined **local_a8;
|
|
undefined4 local_a0;
|
|
undefined2 local_9c;
|
|
undefined1 local_98;
|
|
undefined8 local_88;
|
|
undefined1 local_80 [72];
|
|
|
|
local_88 = 0xfffffffffffffffe;
|
|
uVar2 = 0;
|
|
*param_2 = 0;
|
|
if (*(int *)(param_1 + 1) == 0) {
|
|
uVar2 = 0;
|
|
}
|
|
else {
|
|
FUN_14016b440(local_120);
|
|
FUN_14016b0c0(local_120,*param_1,*(undefined4 *)(param_1 + 1));
|
|
FUN_14016b5a0(local_120,*(undefined4 *)(param_1 + 1));
|
|
FUN_14016b040(local_120,0);
|
|
uVar6 = uVar2;
|
|
uVar7 = uVar2;
|
|
while( true ) {
|
|
local_128 = 0;
|
|
iStack_124 = 0;
|
|
local_130 = 0;
|
|
local_138 = 0;
|
|
cVar1 = FUN_14016b370(local_120,&local_res8,2);
|
|
uVar5 = (undefined4)uVar6;
|
|
if (cVar1 == '\0') {
|
|
*(undefined4 *)(param_1 + 4) = uVar5;
|
|
FUN_14016d0e0(&local_138);
|
|
if (local_130 != 0) {
|
|
if (iStack_124 < 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14016d6b0();
|
|
}
|
|
local_128 = 0;
|
|
}
|
|
local_res8 = &local_118;
|
|
FUN_14016d0e0(&local_118);
|
|
if (local_110 == 0) {
|
|
return uVar7;
|
|
}
|
|
if (-1 < local_104) {
|
|
return uVar7;
|
|
}
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14016d6b0();
|
|
}
|
|
if ((short)local_res8 != 0x5713) break;
|
|
cVar1 = FUN_14016ba10(local_120,&local_res10);
|
|
uVar6 = local_res10;
|
|
if (cVar1 == '\0') {
|
|
*(undefined4 *)(param_1 + 4) = uVar5;
|
|
FUN_14016d0e0(&local_138);
|
|
if (local_130 != 0) {
|
|
if (iStack_124 < 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14016d6b0();
|
|
}
|
|
local_128 = 0;
|
|
}
|
|
local_res8 = &local_118;
|
|
FUN_14016d0e0(&local_118);
|
|
if (local_110 == 0) {
|
|
return uVar7;
|
|
}
|
|
if (-1 < local_104) {
|
|
return uVar7;
|
|
}
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14016d6b0();
|
|
}
|
|
iVar4 = (int)local_res10;
|
|
if (iVar4 < 0) {
|
|
if (local_118 == 0) {
|
|
if (local_110 == 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14016d1e0();
|
|
}
|
|
}
|
|
else {
|
|
local_108 = *(undefined4 *)(local_118 + 0x18);
|
|
}
|
|
*(undefined4 *)(param_1 + 4) = local_108;
|
|
*param_2 = 0x1f;
|
|
FUN_14016d0e0(&local_138);
|
|
if (local_130 != 0) {
|
|
if (iStack_124 < 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14016d6b0();
|
|
}
|
|
local_128 = 0;
|
|
}
|
|
local_res8 = &local_118;
|
|
FUN_14016d0e0(&local_118);
|
|
if ((local_110 != 0) && (local_104 < 0)) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14016d6b0();
|
|
}
|
|
goto LAB_1401bfcdb;
|
|
}
|
|
if (*(int *)((longlong)param_1 + 0x1c) < iVar4) {
|
|
if (local_118 == 0) {
|
|
if (local_110 == 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14016d1e0();
|
|
}
|
|
}
|
|
else {
|
|
local_108 = *(undefined4 *)(local_118 + 0x18);
|
|
}
|
|
*(undefined4 *)(param_1 + 4) = local_108;
|
|
*param_2 = 0x20;
|
|
FUN_14016d0e0(&local_138);
|
|
if (local_130 != 0) {
|
|
if (iStack_124 < 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14016d6b0();
|
|
}
|
|
local_128 = 0;
|
|
}
|
|
local_res8 = &local_118;
|
|
FUN_14016d0e0(&local_118);
|
|
if ((local_110 != 0) && (local_104 < 0)) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14016d6b0();
|
|
}
|
|
goto LAB_1401bfcdb;
|
|
}
|
|
cVar1 = FUN_14016b3d0(local_120,local_res10 & 0xffffffff);
|
|
if (cVar1 == '\0') {
|
|
*(undefined4 *)(param_1 + 4) = uVar5;
|
|
FUN_14016d0e0(&local_138);
|
|
if (local_130 != 0) {
|
|
if (iStack_124 < 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14016d6b0();
|
|
}
|
|
local_128 = 0;
|
|
}
|
|
local_res8 = &local_118;
|
|
FUN_14016d0e0(&local_118);
|
|
if (local_110 == 0) {
|
|
return uVar7;
|
|
}
|
|
if (-1 < local_104) {
|
|
return uVar7;
|
|
}
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14016d6b0();
|
|
}
|
|
if (local_130 != 0) {
|
|
FUN_14016d300(local_80,PTR_u_Cannot_use_internal_buffer_becau_140344030);
|
|
/* WARNING: Subroutine does not return */
|
|
_CxxThrowException(local_80,(ThrowInfo *)&DAT_1403417f8);
|
|
}
|
|
if (local_138 == 0) {
|
|
local_138 = FUN_14016d120();
|
|
*(undefined8 *)(local_138 + 0x28) = 1;
|
|
if (local_130 == 0) goto LAB_1401bf8cc;
|
|
if (iStack_124 < iVar4) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14016d6b0();
|
|
}
|
|
}
|
|
else {
|
|
LAB_1401bf8cc:
|
|
if (iVar4 < 1) {
|
|
if (local_138 == 0) goto LAB_1401bfa8a;
|
|
uVar3 = 0;
|
|
}
|
|
else {
|
|
if (local_138 == 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14016d1e0();
|
|
}
|
|
uVar3 = uVar6 & 0xffffffff;
|
|
}
|
|
FUN_14004f0e0(local_138,uVar3);
|
|
iVar4 = local_128;
|
|
}
|
|
local_128 = iVar4;
|
|
uVar3 = local_130;
|
|
if (local_130 == 0) {
|
|
if (local_138 == 0) {
|
|
LAB_1401bfa8a:
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14016d1e0();
|
|
}
|
|
uVar3 = uVar2;
|
|
if (*(int *)(local_138 + 0x18) != 0) {
|
|
uVar3 = *(ulonglong *)(local_138 + 0x10);
|
|
}
|
|
}
|
|
cVar1 = FUN_14016b370(local_120,uVar3,uVar6 & 0xffffffff);
|
|
if (cVar1 == '\0') {
|
|
*(undefined4 *)(param_1 + 4) = uVar5;
|
|
FUN_14016d0e0(&local_138);
|
|
if (local_130 != 0) {
|
|
if (iStack_124 < 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14016d6b0();
|
|
}
|
|
local_128 = 0;
|
|
}
|
|
local_res8 = &local_118;
|
|
FUN_14016d0e0(&local_118);
|
|
if (local_110 == 0) {
|
|
return uVar7;
|
|
}
|
|
if (-1 < local_104) {
|
|
return uVar7;
|
|
}
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14016d6b0();
|
|
}
|
|
FUN_14016b440(local_d8);
|
|
local_a8 = Proud::AddrPort::vftable;
|
|
local_98 = 0;
|
|
local_a0 = DAT_140344450;
|
|
local_9c = DAT_140344454;
|
|
local_b0 = *(undefined4 *)(param_1 + 3);
|
|
local_e8 = 0;
|
|
local_f0 = 0;
|
|
if (local_138 == 0) {
|
|
local_f8 = 0;
|
|
local_f0 = local_130;
|
|
local_e8 = CONCAT44(iStack_124,local_128);
|
|
}
|
|
else {
|
|
*(longlong *)(local_138 + 0x28) = *(longlong *)(local_138 + 0x28) + 1;
|
|
local_f8 = local_138;
|
|
}
|
|
FUN_14016b510(local_d8,&local_f8);
|
|
FUN_1401bf630(param_1[2],*(undefined4 *)(param_1[2] + 0x18),local_d8,1);
|
|
uVar7 = (ulonglong)((int)uVar7 + 1);
|
|
uVar6 = (ulonglong)(uint)((int)((local_120[0] >> 0x1f & 7U) + local_120[0]) >> 3);
|
|
local_res18 = local_d0;
|
|
FUN_14016d0e0(local_d0);
|
|
if (local_c8 != 0) {
|
|
if (local_bc < 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14016d6b0();
|
|
}
|
|
local_c0 = 0;
|
|
}
|
|
FUN_14016d0e0(&local_138);
|
|
if ((local_130 != 0) && (iStack_124 < 0)) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14016d6b0();
|
|
}
|
|
}
|
|
if (local_118 == 0) {
|
|
if (local_110 == 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14016d1e0();
|
|
}
|
|
}
|
|
else {
|
|
local_108 = *(undefined4 *)(local_118 + 0x18);
|
|
}
|
|
*(undefined4 *)(param_1 + 4) = local_108;
|
|
*param_2 = 0x1f;
|
|
FUN_14016d0e0(&local_138);
|
|
if (local_130 != 0) {
|
|
if (iStack_124 < 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14016d6b0();
|
|
}
|
|
local_128 = 0;
|
|
}
|
|
local_res8 = &local_118;
|
|
FUN_14016d0e0(&local_118);
|
|
if ((local_110 != 0) && (local_104 < 0)) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14016d6b0();
|
|
}
|
|
LAB_1401bfcdb:
|
|
uVar2 = 0xffffffff;
|
|
}
|
|
return uVar2;
|
|
}
|
|
|