157 lines
4.4 KiB
C
157 lines
4.4 KiB
C
/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c
|
|
* Ghidra 12.1.2 decompiler output for 0x1401b0f70 FUN_1401b0f70
|
|
* Pseudocode, not original source. */
|
|
|
|
undefined8 FUN_1401b0f70(longlong param_1,undefined8 param_2,longlong param_3,int param_4)
|
|
|
|
{
|
|
byte bVar1;
|
|
int iVar2;
|
|
undefined7 uVar6;
|
|
longlong lVar3;
|
|
byte *pbVar4;
|
|
void *_Dst;
|
|
undefined8 uVar5;
|
|
byte *pbVar7;
|
|
int iVar8;
|
|
undefined **local_258;
|
|
undefined8 local_250;
|
|
byte *local_248;
|
|
undefined8 local_240;
|
|
undefined8 local_238;
|
|
undefined8 local_230;
|
|
longlong local_228;
|
|
ulonglong local_220;
|
|
undefined8 local_210;
|
|
undefined1 local_178 [144];
|
|
undefined1 local_e8 [72];
|
|
undefined1 local_a0 [72];
|
|
undefined1 local_58 [80];
|
|
|
|
local_210 = 0xfffffffffffffffe;
|
|
if (*(int *)(param_3 + 0x3c0) < 1) {
|
|
FUN_14016d2a0(local_a0,&DAT_140287690);
|
|
/* WARNING: Subroutine does not return */
|
|
_CxxThrowException(local_a0,(ThrowInfo *)&DAT_1403417f8);
|
|
}
|
|
lVar3 = *(longlong *)(param_1 + 8);
|
|
if (lVar3 == 0) {
|
|
if (*(longlong *)(param_1 + 0x10) == 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14016d1e0();
|
|
}
|
|
iVar8 = *(int *)(param_1 + 0x18);
|
|
}
|
|
else {
|
|
iVar8 = *(int *)(lVar3 + 0x18);
|
|
}
|
|
if (iVar8 <= param_4) {
|
|
if (lVar3 == 0) {
|
|
if (*(longlong *)(param_1 + 0x10) == 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14016d1e0();
|
|
}
|
|
param_4 = *(int *)(param_1 + 0x18);
|
|
}
|
|
else {
|
|
param_4 = *(int *)(lVar3 + 0x18);
|
|
}
|
|
}
|
|
if (lVar3 == 0) {
|
|
if (*(longlong *)(param_1 + 0x10) == 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14016d1e0();
|
|
}
|
|
iVar8 = *(int *)(param_1 + 0x18);
|
|
}
|
|
else {
|
|
iVar8 = *(int *)(lVar3 + 0x18);
|
|
}
|
|
iVar8 = iVar8 - param_4;
|
|
if (iVar8 == 0) {
|
|
uVar6 = (undefined7)((ulonglong)lVar3 >> 8);
|
|
}
|
|
else {
|
|
if (*(longlong *)(param_1 + 0x10) == 0) {
|
|
if (lVar3 == 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14016d1e0();
|
|
}
|
|
if (*(int *)(lVar3 + 0x18) == 0) {
|
|
lVar3 = 0;
|
|
}
|
|
else {
|
|
lVar3 = *(longlong *)(lVar3 + 0x10);
|
|
}
|
|
}
|
|
else {
|
|
lVar3 = *(longlong *)(param_1 + 0x10);
|
|
if (lVar3 == 0) {
|
|
FUN_14016d300(local_178,PTR_u_ArrayWithExternalBuffer_is_unini_1403440d0);
|
|
/* WARNING: Subroutine does not return */
|
|
_CxxThrowException(local_178,(ThrowInfo *)&DAT_1403417f8);
|
|
}
|
|
}
|
|
pbVar7 = (byte *)0x0;
|
|
local_250 = 0;
|
|
local_248 = (byte *)0x0;
|
|
local_240 = 0;
|
|
local_238 = 0;
|
|
local_258 = Proud::ByteArray::vftable;
|
|
FUN_14004f0e0(&local_258,iVar8);
|
|
pbVar4 = local_248;
|
|
if ((int)local_240 == 0) {
|
|
pbVar4 = pbVar7;
|
|
}
|
|
FUN_1401b0b00(param_3,param_4 + lVar3,pbVar4,iVar8,0);
|
|
if ((int)local_240 < 1) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14016d6e0();
|
|
}
|
|
bVar1 = *local_248;
|
|
if ((int)local_240 < (int)(bVar1 + 5)) {
|
|
FUN_14016d2a0(local_e8,&DAT_140287660);
|
|
/* WARNING: Subroutine does not return */
|
|
_CxxThrowException(local_e8,(ThrowInfo *)&DAT_1403417f8);
|
|
}
|
|
pbVar4 = local_248;
|
|
if ((int)local_240 == 0) {
|
|
pbVar4 = pbVar7;
|
|
}
|
|
iVar8 = *(int *)(pbVar4 + 1);
|
|
local_220 = 0;
|
|
local_228 = 0;
|
|
local_230 = 0;
|
|
pbVar4 = local_248;
|
|
if ((int)local_240 == 0) {
|
|
pbVar4 = pbVar7;
|
|
}
|
|
iVar2 = FUN_1401c5de0(pbVar4 + 5,((int)local_240 - (uint)bVar1) + -5);
|
|
if (iVar8 != iVar2) {
|
|
FUN_14016d2a0(local_58,&DAT_140287628);
|
|
/* WARNING: Subroutine does not return */
|
|
_CxxThrowException(local_58,(ThrowInfo *)&DAT_1403417f8);
|
|
}
|
|
FUN_14016abe0(param_2);
|
|
FUN_14016b5a0(param_2,((int)local_240 - (uint)bVar1) + -5);
|
|
iVar8 = (int)local_240;
|
|
pbVar4 = local_248;
|
|
if ((int)local_240 == 0) {
|
|
pbVar4 = pbVar7;
|
|
}
|
|
_Dst = (void *)FUN_14016b000(param_2);
|
|
memcpy(_Dst,pbVar4 + 5,(longlong)(int)((iVar8 - (uint)bVar1) + -5));
|
|
FUN_14016d0e0(&local_230);
|
|
if (local_228 != 0) {
|
|
if ((longlong)local_220 < 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14016d6b0();
|
|
}
|
|
local_220 = local_220 & 0xffffffff00000000;
|
|
}
|
|
uVar5 = FUN_14019a9e0(&local_258);
|
|
uVar6 = (undefined7)((ulonglong)uVar5 >> 8);
|
|
}
|
|
return CONCAT71(uVar6,1);
|
|
}
|
|
|