/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c * Ghidra 12.1.2 decompiler output for 0x140002810 FUN_140002810 * Pseudocode, not original source. */ basic_ostream_> * FUN_140002810(basic_ostream_> *param_1,char *param_2) { longlong lVar1; char cVar2; bool bVar3; int iVar4; __int64 _Var5; ulonglong uVar6; int iVar7; char *pcVar8; longlong lVar9; iVar7 = 0; uVar6 = 0xffffffffffffffff; pcVar8 = param_2; do { if (uVar6 == 0) break; uVar6 = uVar6 - 1; cVar2 = *pcVar8; pcVar8 = pcVar8 + 1; } while (cVar2 != '\0'); lVar1 = ~uVar6 - 1; lVar9 = *(longlong *)(param_1 + (longlong)*(int *)(*(longlong *)param_1 + 4) + 0x28); if ((lVar9 < 1) || (lVar9 <= lVar1)) { lVar9 = 0; } else { lVar9 = lVar9 - lVar1; } if (*(longlong **)(param_1 + (longlong)*(int *)(*(longlong *)param_1 + 4) + 0x48) != (longlong *)0x0) { (**(code **)(**(longlong **)(param_1 + (longlong)*(int *)(*(longlong *)param_1 + 4) + 0x48) + 8) )(); } if ((*(int *)(param_1 + (longlong)*(int *)(*(longlong *)param_1 + 4) + 0x10) == 0) && (*(basic_ostream_> **) (param_1 + (longlong)*(int *)(*(longlong *)param_1 + 4) + 0x50) != (basic_ostream_> *)0x0)) { std::basic_ostream_>::flush (*(basic_ostream_> **) (param_1 + (longlong)*(int *)(*(longlong *)param_1 + 4) + 0x50)); } if (*(int *)(param_1 + (longlong)*(int *)(*(longlong *)param_1 + 4) + 0x10) != 0) { iVar7 = 4; goto LAB_140002985; } if ((*(uint *)(param_1 + (longlong)*(int *)(*(longlong *)param_1 + 4) + 0x18) & 0x1c0) == 0x40) { LAB_140002909: _Var5 = std::basic_streambuf_>::sputn (*(basic_streambuf_> **) (param_1 + (longlong)*(int *)(*(longlong *)param_1 + 4) + 0x48),param_2, lVar1); if (_Var5 == lVar1) { for (; 0 < lVar9; lVar9 = lVar9 + -1) { iVar4 = std::basic_streambuf_>::sputc (*(basic_streambuf_> **) (param_1 + (longlong)*(int *)(*(longlong *)param_1 + 4) + 0x48), (char)param_1[(longlong)*(int *)(*(longlong *)param_1 + 4) + 0x58]); if (iVar4 == -1) goto LAB_14000295b; } } else { LAB_14000295b: iVar7 = 4; } } else { for (; 0 < lVar9; lVar9 = lVar9 + -1) { iVar4 = std::basic_streambuf_>::sputc (*(basic_streambuf_> **) (param_1 + (longlong)*(int *)(*(longlong *)param_1 + 4) + 0x48), (char)param_1[(longlong)*(int *)(*(longlong *)param_1 + 4) + 0x58]); if (iVar4 == -1) { iVar7 = 4; break; } } if (iVar7 == 0) goto LAB_140002909; } *(undefined8 *)(param_1 + (longlong)*(int *)(*(longlong *)param_1 + 4) + 0x28) = 0; LAB_140002985: std::basic_ios_>::setstate ((basic_ios_> *) (param_1 + *(int *)(*(longlong *)param_1 + 4)),iVar7,false); bVar3 = std::uncaught_exception(); if (!bVar3) { std::basic_ostream_>::_Osfx(param_1); } if (*(longlong **)(param_1 + (longlong)*(int *)(*(longlong *)param_1 + 4) + 0x48) != (longlong *)0x0) { (**(code **)(**(longlong **)(param_1 + (longlong)*(int *)(*(longlong *)param_1 + 4) + 0x48) + 0x10))(); } return param_1; }