/* 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); }