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