server-re/decomp/DBCServer_Release_x64/full/functions/0x1400e8c30.c

569 lines
20 KiB
C

/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c
* Ghidra 12.1.2 decompiler output for 0x1400e8c30 FUN_1400e8c30
* Pseudocode, not original source. */
/* WARNING: Removing unreachable block (ram,0x0001400e9c33) */
/* WARNING: Removing unreachable block (ram,0x0001400e9c3d) */
/* WARNING: Removing unreachable block (ram,0x0001400e9c48) */
/* WARNING: Removing unreachable block (ram,0x0001400e9c58) */
/* WARNING: Removing unreachable block (ram,0x0001400e8e84) */
/* WARNING: Removing unreachable block (ram,0x0001400e8e8e) */
/* WARNING: Removing unreachable block (ram,0x0001400e8e99) */
/* WARNING: Removing unreachable block (ram,0x0001400e8ea9) */
undefined8 * FUN_1400e8c30(undefined8 *param_1,undefined8 *param_2)
{
undefined8 *puVar1;
undefined4 *puVar2;
undefined4 uVar3;
IUnknown *pIVar4;
undefined6 uVar5;
IUnknown *This;
undefined2 uVar6;
int iVar7;
HRESULT HVar8;
ULONG UVar9;
undefined4 uVar10;
undefined8 *puVar11;
undefined8 uVar12;
undefined8 uVar13;
longlong *plVar14;
char *riid;
char *ppvObject;
longlong lVar15;
uint uVar16;
char local_res10 [8];
longlong *local_res18;
undefined8 *local_res20;
undefined8 local_440;
undefined2 uStack_434;
short sStack_432;
longlong *local_430;
int local_428;
IUnknown *local_418;
longlong *local_410;
undefined4 local_408;
undefined1 local_3f8 [24];
undefined1 local_3e0 [24];
undefined4 local_3c8;
undefined1 *local_3c0;
undefined4 local_3b8;
undefined8 local_3b0;
undefined1 *local_3a8;
undefined2 local_398;
undefined4 uStack_396;
undefined2 uStack_392;
undefined8 uStack_390;
undefined8 local_388;
undefined8 uStack_380;
undefined4 local_378;
undefined2 uStack_374;
undefined2 uStack_372;
undefined2 uStack_370;
undefined4 uStack_36e;
undefined2 uStack_36a;
undefined2 uStack_368;
undefined4 uStack_366;
undefined2 uStack_362;
undefined2 uStack_360;
undefined4 uStack_35e;
undefined2 uStack_35a;
undefined1 local_358;
undefined2 uStack_357;
undefined2 uStack_355;
undefined2 uStack_353;
undefined1 uStack_351;
undefined7 uStack_350;
undefined1 uStack_349;
undefined4 uStack_348;
undefined4 uStack_344;
undefined4 uStack_340;
undefined4 uStack_33c;
undefined1 uStack_338;
undefined2 uStack_337;
undefined4 uStack_335;
undefined4 local_331;
undefined1 uStack_32d;
undefined2 uStack_32c;
undefined1 uStack_32a;
LPUNKNOWN local_328;
undefined8 *local_320;
longlong *local_318;
undefined8 *local_310;
longlong *local_308;
longlong *local_300 [3];
undefined4 local_2e8;
undefined4 uStack_2e4;
undefined4 uStack_2e0;
undefined4 uStack_2dc;
undefined1 local_2d0 [8];
undefined8 local_2c8;
undefined1 local_2c0 [24];
undefined1 local_2a8 [24];
undefined1 local_290 [24];
undefined1 local_278 [24];
undefined1 local_260 [24];
undefined1 local_248 [24];
undefined1 local_230 [24];
undefined1 local_218 [24];
undefined1 local_200 [24];
undefined1 local_1e8 [24];
undefined1 local_1d0 [24];
undefined1 local_1b8 [24];
undefined1 local_1a0 [24];
undefined1 local_188 [24];
undefined1 local_170 [24];
undefined1 local_158 [24];
undefined1 local_140 [24];
undefined1 local_128 [24];
undefined1 local_110 [24];
undefined1 local_f8 [24];
undefined1 local_e0 [24];
undefined1 local_c8 [24];
IID local_b0;
undefined1 local_98 [24];
undefined1 local_80 [24];
undefined1 local_68 [24];
undefined1 local_50 [24];
local_2c8 = 0xfffffffffffffffe;
local_430 = (longlong *)0x0;
local_320 = param_2;
iVar7 = FUN_140001990(&local_430);
if ((iVar7 < 0) && (iVar7 != -0x7fffbffe)) {
/* WARNING: Subroutine does not return */
FUN_140218220(iVar7);
}
local_418 = (IUnknown *)0x0;
local_410 = (longlong *)0x0;
Ordinal_8(local_3f8);
Ordinal_8(local_3e0);
pIVar4 = local_418;
if ((local_418 != (IUnknown *)0x0) && (local_418 = (IUnknown *)0x0, pIVar4 != (IUnknown *)0x0)) {
(*pIVar4->lpVtbl->Release)(pIVar4);
}
local_3a8 = &DAT_14029e010;
local_3c0 = &DAT_14029e010;
local_3b8 = 0;
local_3b0 = 0;
if (local_418 != (IUnknown *)0x0) {
(*local_418->lpVtbl->Release)(local_418);
}
HVar8 = CoCreateInstance((IID *)&DAT_14029e088,(LPUNKNOWN)0x0,0x17,(IID *)&DAT_14029dfb0,
&local_328);
if (HVar8 < 0) {
LAB_1400e8d72:
local_418 = (IUnknown *)0x0;
}
else {
HVar8 = OleRun(local_328);
if (-1 < HVar8) {
HVar8 = (*local_328->lpVtbl->QueryInterface)(local_328,(IID *)&DAT_14029e078,&local_418);
}
(*local_328->lpVtbl->Release)(local_328);
if (HVar8 < 0) goto LAB_1400e8d72;
}
local_3c8 = 2;
local_408 = 1;
local_res10[0] = '\x01';
uVar3 = *(undefined4 *)(param_2 + 1);
local_440 = CONCAT44((int)((ulonglong)*param_2 >> 0x20),0x239f0000);
uStack_434 = 0xc4;
sStack_432 = 0;
uVar16 = 0x10;
pIVar4 = *(IUnknown **)*param_1;
if (pIVar4 != (IUnknown *)0x0) {
local_428 = 0;
UVar9 = (*pIVar4->lpVtbl[0xb].AddRef)(pIVar4);
if ((int)UVar9 < 0) {
_com_issue_errorex(UVar9,pIVar4,(_GUID *)&DAT_14029e018);
}
if (local_428 != 0) goto LAB_1400e8f4c;
}
iVar7 = FUN_1400a80c0(param_1);
if (iVar7 == 0) {
FUN_1400a8040(param_1,param_2,0);
pIVar4 = local_418;
if (local_418 != (IUnknown *)0x0) {
UVar9 = (*local_418->lpVtbl[0x12].AddRef)(local_418);
if ((int)UVar9 < 0) {
_com_issue_errorex(UVar9,pIVar4,(_GUID *)&DAT_14029e038);
}
if (local_418 != (IUnknown *)0x0) {
(*local_418->lpVtbl->Release)(local_418);
local_418 = (IUnknown *)0x0;
}
}
local_3b0 = 0;
local_3a8 = &DAT_14029e010;
local_3c0 = &DAT_14029e010;
local_3b8 = 0;
local_3c8 = 0;
Ordinal_9(local_3e0);
Ordinal_9(local_3f8);
if (local_410 != (longlong *)0x0) {
(**(code **)(*local_410 + 0x10))();
}
if (local_418 != (IUnknown *)0x0) {
(*local_418->lpVtbl->Release)(local_418);
}
if (local_430 != (longlong *)0x0) {
(**(code **)(*local_430 + 0x10))();
}
return (undefined8 *)0x0;
}
LAB_1400e8f4c:
puVar11 = (undefined8 *)FUN_140001f40(*param_1,local_300);
FUN_140001700(&local_430,*puVar11,"dbo.up_read_other_character_item_equip");
if (local_300[0] != (longlong *)0x0) {
(**(code **)(*local_300[0] + 0x10))();
}
local_res18 = (longlong *)local_248;
local_2e8 = *(undefined4 *)((longlong)param_2 + 0xe);
uStack_2e4 = *(undefined4 *)((longlong)param_2 + 0x12);
uStack_2e0 = *(undefined4 *)((longlong)param_2 + 0x16);
uStack_2dc = *(undefined4 *)((longlong)param_2 + 0x1a);
uVar12 = FUN_140063820(local_248,&local_2e8);
puVar11 = operator_new(0x18);
local_310 = (undefined8 *)0x0;
local_res20 = puVar11;
if (puVar11 != (undefined8 *)0x0) {
puVar11[1] = 0;
*(undefined4 *)(puVar11 + 2) = 1;
uVar13 = FUN_1402182d0("character_id");
*puVar11 = uVar13;
local_310 = puVar11;
}
if (local_310 == (undefined8 *)0x0) {
/* WARNING: Subroutine does not return */
FUN_140218220(0x8007000e);
}
plVar14 = (longlong *)FUN_140001870(&local_430,local_2d0,&local_310,0xca,1,0x26,uVar12);
local_res18 = plVar14;
if (local_430 == (longlong *)0x0) {
/* WARNING: Subroutine does not return */
FUN_140218220(0x80004003);
}
puVar11 = (undefined8 *)FUN_140001650(local_430,&local_318);
pIVar4 = (IUnknown *)*puVar11;
if (pIVar4 != (IUnknown *)0x0) {
UVar9 = (*pIVar4->lpVtbl[3].AddRef)(pIVar4);
if ((int)UVar9 < 0) {
_com_issue_errorex(UVar9,pIVar4,(_GUID *)&DAT_14029dfc0);
}
if (local_318 != (longlong *)0x0) {
(**(code **)(*local_318 + 0x10))();
}
if ((longlong *)*plVar14 != (longlong *)0x0) {
(**(code **)(*(longlong *)*plVar14 + 0x10))();
}
puVar11 = (undefined8 *)FUN_1400016c0(&local_430,&local_308);
This = local_418;
pIVar4 = (IUnknown *)*puVar11;
if (local_418 != pIVar4) {
local_418 = pIVar4;
if (pIVar4 != (IUnknown *)0x0) {
(*pIVar4->lpVtbl->AddRef)(pIVar4);
}
if (This != (IUnknown *)0x0) {
(*This->lpVtbl->Release)(This);
}
}
if (local_308 != (longlong *)0x0) {
(**(code **)(*local_308 + 0x10))();
}
pIVar4 = local_418;
if (local_418 != (IUnknown *)0x0) {
local_res18 = (longlong *)((ulonglong)local_res18 & 0xffffffffffff0000);
UVar9 = (*local_418->lpVtbl[6].Release)(local_418);
if ((int)UVar9 < 0) {
_com_issue_errorex(UVar9,pIVar4,(_GUID *)&DAT_14029e038);
}
puVar11 = (undefined8 *)0x1;
if ((short)local_res18 != -1) {
while( true ) {
pIVar4 = local_418;
if (local_418 == (IUnknown *)0x0) {
/* WARNING: Subroutine does not return */
FUN_140218220(0x80004003);
}
local_res20 = (undefined8 *)((ulonglong)local_res20 & 0xffffffffffff0000);
UVar9 = (*local_418->lpVtbl[6].Release)(local_418);
if ((int)UVar9 < 0) {
_com_issue_errorex(UVar9,pIVar4,(_GUID *)&DAT_14029e038);
}
if ((short)local_res20 == -1) break;
local_398 = 0;
uStack_396 = 0;
uStack_392 = 0;
uStack_390 = 0;
local_388 = 0;
uStack_380 = 0;
local_378 = 0;
uStack_374 = 0;
uStack_372 = 0;
uStack_370 = 0;
uStack_36e = 0;
uStack_36a = 0;
uStack_368 = 0;
uStack_366 = 0;
uStack_362 = 0;
uStack_360 = 0;
uStack_35e = 0;
uStack_35a = 0;
uStack_357 = 0;
uStack_355 = 0;
uStack_353 = 0;
uStack_351 = 0;
uStack_350 = 0;
uStack_349 = 0;
uStack_348 = 0;
uStack_344 = 0;
uStack_340 = 0;
uStack_33c = 0;
uStack_338 = 0;
uStack_337 = 0;
uStack_335 = 0;
local_331 = 0;
uStack_32d = 0;
uStack_32c = 0;
uStack_32a = 0;
local_358 = (short)local_res20 == -1;
uVar12 = FUN_140002290(&local_418,local_80,"slot_index",local_res10);
FUN_140199590(uVar12);
local_398 = FUN_140063af0(uVar12);
Ordinal_9(local_80);
uVar12 = FUN_140002290(&local_418,local_50,&DAT_1402a522c,local_res10);
FUN_140199590(uVar12);
uStack_396 = FUN_140063af0(uVar12);
Ordinal_9(local_50);
uVar12 = FUN_140002290(&local_418,local_98,"enhance_level",local_res10);
FUN_140199590(uVar12);
uStack_392 = FUN_140063af0(uVar12);
Ordinal_9(local_98);
uVar12 = FUN_140002290(&local_418,local_278,"option_1_code",local_res10);
FUN_140199590(uVar12);
uVar10 = FUN_140063af0(uVar12);
uStack_390 = CONCAT44(uStack_390._4_4_,uVar10);
Ordinal_9(local_278);
uVar12 = FUN_140002290(&local_418,local_158,"option_1_value",local_res10);
FUN_140199590(uVar12);
uVar10 = FUN_140063af0(uVar12);
uStack_390 = CONCAT44(uVar10,(undefined4)uStack_390);
Ordinal_9(local_158);
uVar12 = FUN_140002290(&local_418,local_2c0,"option_2_code",local_res10);
FUN_140199590(uVar12);
uVar10 = FUN_140063af0(uVar12);
local_388 = CONCAT44(local_388._4_4_,uVar10);
Ordinal_9(local_2c0);
uVar12 = FUN_140002290(&local_418,local_c8,"option_2_value",local_res10);
FUN_140199590(uVar12);
uVar10 = FUN_140063af0(uVar12);
local_388 = CONCAT44(uVar10,(undefined4)local_388);
Ordinal_9(local_c8);
uVar12 = FUN_140002290(&local_418,local_218,"option_3_code",local_res10);
FUN_140199590(uVar12);
uVar10 = FUN_140063af0(uVar12);
uStack_380 = CONCAT44(uStack_380._4_4_,uVar10);
Ordinal_9(local_218);
uVar12 = FUN_140002290(&local_418,local_128,"option_3_value",local_res10);
FUN_140199590(uVar12);
uVar10 = FUN_140063af0(uVar12);
uStack_380 = CONCAT44(uVar10,(undefined4)uStack_380);
Ordinal_9(local_128);
uVar12 = FUN_140002290(&local_418,local_1e8,"option_group",local_res10);
FUN_140199590(uVar12);
local_378 = FUN_140063af0(uVar12);
Ordinal_9(local_1e8);
uVar12 = FUN_140002290(&local_418,local_68,"ReconNum",local_res10);
FUN_140199590(uVar12);
uStack_357 = FUN_140063af0(uVar12);
Ordinal_9(local_68);
uVar12 = FUN_140002290(&local_418,local_1b8,"ReconState",local_res10);
FUN_140199590(uVar12);
uStack_355 = FUN_140063af0(uVar12);
Ordinal_9(local_1b8);
uVar12 = FUN_140002290(&local_418,local_f8,"socket_count",local_res10);
FUN_140199590(uVar12);
uStack_374 = FUN_140063af0(uVar12);
Ordinal_9(local_f8);
uVar12 = FUN_140002290(&local_418,local_188,"socket_1_code",local_res10);
FUN_140199590(uVar12);
uVar10 = FUN_140063af0(uVar12);
uStack_372 = (undefined2)uVar10;
uStack_370 = (undefined2)((uint)uVar10 >> 0x10);
Ordinal_9(local_188);
uVar12 = FUN_140002290(&local_418,local_2a8,"socket_1_value",local_res10);
FUN_140199590(uVar12);
uStack_36e = FUN_140063af0(uVar12);
Ordinal_9(local_2a8);
uVar12 = FUN_140002290(&local_418,local_290,"socket_2_code",local_res10);
FUN_140199590(uVar12);
uVar10 = FUN_140063af0(uVar12);
uStack_36a = (undefined2)uVar10;
uStack_368 = (undefined2)((uint)uVar10 >> 0x10);
Ordinal_9(local_290);
uVar12 = FUN_140002290(&local_418,local_260,"socket_2_value",local_res10);
FUN_140199590(uVar12);
uStack_366 = FUN_140063af0(uVar12);
Ordinal_9(local_260);
uVar12 = FUN_140002290(&local_418,local_230,"socket_3_code",local_res10);
FUN_140199590(uVar12);
uVar10 = FUN_140063af0(uVar12);
uStack_362 = (undefined2)uVar10;
uStack_360 = (undefined2)((uint)uVar10 >> 0x10);
Ordinal_9(local_230);
uVar12 = FUN_140002290(&local_418,local_200,"socket_3_value",local_res10);
FUN_140199590(uVar12);
uStack_35e = FUN_140063af0(uVar12);
Ordinal_9(local_200);
uVar12 = FUN_140002290(&local_418,local_1d0,&DAT_1402a5440,local_res10);
FUN_140199590(uVar12);
uVar6 = FUN_140063af0(uVar12);
uStack_33c._3_1_ = (undefined1)uVar6;
uStack_338 = (undefined1)((ushort)uVar6 >> 8);
Ordinal_9(local_1d0);
uVar12 = FUN_140002290(&local_418,local_1a0,"acquireroute",local_res10);
FUN_140199590(uVar12);
uStack_337 = FUN_140063af0(uVar12);
Ordinal_9(local_1a0);
uVar12 = FUN_140002290(&local_418,local_170,"physical",local_res10);
FUN_140199590(uVar12);
uStack_335 = FUN_140063af0(uVar12);
Ordinal_9(local_170);
uVar12 = FUN_140002290(&local_418,local_140,"magical",local_res10);
FUN_140199590(uVar12);
local_331 = FUN_140063af0(uVar12);
Ordinal_9(local_140);
uVar12 = FUN_140002290(&local_418,local_110,"durability",local_res10);
FUN_140199590(uVar12);
uVar10 = FUN_140063af0(uVar12);
uStack_344._3_1_ = (undefined1)uVar10;
uStack_340._0_3_ = (undefined3)((uint)uVar10 >> 8);
Ordinal_9(local_110);
uVar12 = FUN_140002290(&local_418,local_e0,"durabilitymax",local_res10);
FUN_140199590(uVar12);
uVar10 = FUN_140063af0(uVar12);
uStack_340._3_1_ = (undefined1)uVar10;
uStack_33c._0_3_ = (undefined3)((uint)uVar10 >> 8);
Ordinal_9(local_e0);
ppvObject = "weight";
riid = (char *)&local_b0;
uVar12 = FUN_140002290(&local_418,riid,"weight",local_res10);
FUN_140199590(uVar12);
uVar10 = FUN_140063af0(uVar12);
uStack_32d = (undefined1)uVar10;
uStack_32c = (undefined2)((uint)uVar10 >> 8);
uStack_32a = (undefined1)((uint)uVar10 >> 0x18);
Ordinal_9(&local_b0);
lVar15 = (longlong)(int)uVar16;
puVar1 = (undefined8 *)(lVar15 + 0x130 + (longlong)param_1);
*puVar1 = CONCAT26(uStack_392,CONCAT42(uStack_396,local_398));
puVar1[1] = uStack_390;
puVar1 = (undefined8 *)(lVar15 + 0x140 + (longlong)param_1);
*puVar1 = local_388;
puVar1[1] = uStack_380;
puVar1 = (undefined8 *)(lVar15 + 0x150 + (longlong)param_1);
*puVar1 = CONCAT26(uStack_372,CONCAT24(uStack_374,local_378));
puVar1[1] = CONCAT26(uStack_36a,CONCAT42(uStack_36e,uStack_370));
puVar1 = (undefined8 *)(lVar15 + 0x160 + (longlong)param_1);
*puVar1 = CONCAT26(uStack_362,CONCAT42(uStack_366,uStack_368));
puVar1[1] = CONCAT26(uStack_35a,CONCAT42(uStack_35e,uStack_360));
puVar1 = (undefined8 *)(lVar15 + 0x170 + (longlong)param_1);
*puVar1 = CONCAT17(uStack_351,
CONCAT25(uStack_353,CONCAT23(uStack_355,CONCAT21(uStack_357,local_358))
));
puVar1[1] = CONCAT17(uStack_349,uStack_350);
puVar2 = (undefined4 *)(lVar15 + 0x180 + (longlong)param_1);
*puVar2 = uStack_348;
puVar2[1] = uStack_344;
puVar2[2] = uStack_340;
puVar2[3] = uStack_33c;
*(ulonglong *)(lVar15 + 400 + (longlong)param_1) =
CONCAT17((undefined1)local_331,CONCAT43(uStack_335,CONCAT21(uStack_337,uStack_338)));
*(uint *)(lVar15 + 0x198 + (longlong)param_1) = CONCAT13(uStack_32d,local_331._1_3_);
*(undefined2 *)(lVar15 + 0x19c + (longlong)param_1) = uStack_32c;
*(undefined1 *)(lVar15 + 0x19e + (longlong)param_1) = uStack_32a;
uVar16 = uVar16 + 0x6f;
sStack_432 = sStack_432 + 1;
if (50000 < uVar16) {
uVar5 = local_440._2_6_;
local_440 = CONCAT62(local_440._2_6_,(short)uVar16);
uVar12 = local_440;
riid = (char *)(param_1 + 0x26);
local_440._4_2_ = SUB62(uVar5,2);
local_440._6_2_ = SUB62(uVar5,4);
((IID *)riid)->Data1 = (undefined4)local_440;
((IID *)riid)->Data2 = local_440._4_2_;
((IID *)riid)->Data3 = local_440._6_2_;
param_1[0x27] = CONCAT26(sStack_432,CONCAT24(0xc4,uVar3));
iVar7 = FUN_1400a7630(*(undefined8 *)(param_1[0x22] + 0xf0));
if (iVar7 == 0) {
ppvObject = "DB Result Queue push error";
riid = "DBResultQueue_Error.Log";
FUN_1400a6d80(param_1[0x23]);
}
uVar16 = 0x10;
sStack_432 = 0;
local_440 = uVar12;
}
pIVar4 = local_418;
if (local_418 == (IUnknown *)0x0) {
/* WARNING: Subroutine does not return */
FUN_140218220(0x80004003);
}
HVar8 = (*local_418->lpVtbl[0xc].QueryInterface)(local_418,(IID *)riid,(void **)ppvObject)
;
if (HVar8 < 0) {
_com_issue_errorex(HVar8,pIVar4,(_GUID *)&DAT_14029e038);
}
}
if (local_res10[0] == '\0') {
uStack_434 = 0xc5;
puVar11 = (undefined8 *)0x0;
}
}
local_440 = CONCAT62(local_440._2_6_,(short)uVar16);
param_1[0x26] = local_440;
param_1[0x27] = CONCAT26(sStack_432,CONCAT24(uStack_434,uVar3));
iVar7 = FUN_1400a7630(*(undefined8 *)(param_1[0x22] + 0xf0));
if (iVar7 == 0) {
FUN_1400a6d80(param_1[0x23],"DBResultQueue_Error.Log","DB Result Queue push error");
}
pIVar4 = local_418;
if (local_418 != (IUnknown *)0x0) {
UVar9 = (*local_418->lpVtbl[0x12].AddRef)(local_418);
if ((int)UVar9 < 0) {
_com_issue_errorex(UVar9,pIVar4,(_GUID *)&DAT_14029e038);
}
if (local_418 != (IUnknown *)0x0) {
(*local_418->lpVtbl->Release)(local_418);
local_418 = (IUnknown *)0x0;
}
}
local_3b0 = 0;
local_3a8 = &DAT_14029e010;
local_3c0 = &DAT_14029e010;
local_3b8 = 0;
local_3c8 = 0;
Ordinal_9(local_3e0);
Ordinal_9(local_3f8);
if (local_410 != (longlong *)0x0) {
(**(code **)(*local_410 + 0x10))();
}
if (local_418 != (IUnknown *)0x0) {
(*local_418->lpVtbl->Release)(local_418);
}
if (local_430 != (longlong *)0x0) {
(**(code **)(*local_430 + 0x10))();
}
return puVar11;
}
/* WARNING: Subroutine does not return */
FUN_140218220(0x80004003);
}
/* WARNING: Subroutine does not return */
FUN_140218220(0x80004003);
}