{"type": "func", "start": 6443701208, "end": 6443701543, "name": "common_assert_to_stderr<wchar_t>", "pseudocode": "// \n// common_assert_to_stderr<wchar_t> from 0x1801313d8 to 0x180131527 (335 bytes)\n// \n// 3 xrefs:\n// > _wassert @ 0x1801315bd\n// > <???> @ 0x180202eb8\n// > <???> @ 0x180202ec4\n// \n// This function is hookable on this platform!\n// \n// Using BromaIDA 8.0.0 @ https://github.com/Stazzical/BromaIDA\n// Using bindings at commit ba9f177b at Thu Jul 16 22:52:06 2026 from https://github.com/geode-sdk/bindings\n// \n\nvoid __fastcall __noreturn common_assert_to_stderr<wchar_t>(__int64 a1, __int64 a2, int a3)\n{\n  char *StdHandle; // rax\n  void *v7; // rbx\n  __int64 v8; // rax\n  FILE *v9; // rax\n  FILE *v10; // rax\n  int v11; // [rsp+28h] [rbp-D8h]\n  DWORD NumberOfCharsWritten; // [rsp+30h] [rbp-D0h] BYREF\n  int v13; // [rsp+38h] [rbp-C8h] BYREF\n  __int64 v14; // [rsp+40h] [rbp-C0h] BYREF\n  __int64 v15; // [rsp+48h] [rbp-B8h] BYREF\n  __int64 v16; // [rsp+50h] [rbp-B0h] BYREF\n  FILE *v17; // [rsp+58h] [rbp-A8h] BYREF\n  _WORD Buffer[576]; // [rsp+60h] [rbp-A0h] BYREF\n\n  v15 = a1;\n  v14 = a2;\n  v13 = a3;\n  StdHandle = (char *)GetStdHandle(0xFFFFFFF4);\n  v7 = StdHandle;\n  if ( (unsigned __int64)(StdHandle - 1) <= 0xFFFFFFFFFFFFFFFDuLL && GetFileType(StdHandle) == 2 )\n  {\n    v11 = a3;\n    if ( sprintf_s((char *const)Buffer, 0x240u, L\"Assertion failed: %Ts, file %Ts, line %d\\n\", a1, a2, v11) >= 0 )\n    {\n      v8 = -1;\n      do\n        ++v8;\n      while ( Buffer[v8] );\n      NumberOfCharsWritten = 0;\n      if ( WriteConsoleW(v7, Buffer, v8, &NumberOfCharsWritten, nullptr) )\n        abort();\n    }\n  }\n  if ( (HIDWORD(_acrt_iob_func(2u)->_base) & 0x4C0) == 0 )\n  {\n    v9 = _acrt_iob_func(2u);\n    setvbuf(v9, nullptr, 4, 0);\n  }\n  v16 = sub_180131548(0);\n  v17 = _acrt_iob_func(2u);\n  sub_180131528((unsigned int)&v17, (unsigned int)&v16, (unsigned int)&v15, (unsigned int)&v14, (__int64)&v13);\n  v10 = _acrt_iob_func(2u);\n  fflush(v10);\n  abort();\n}", "assembly": "; \n; common_assert_to_stderr<wchar_t> from 0x1801313d8 to 0x180131527 (335 bytes)\n; \n; 3 xrefs:\n; > _wassert @ 0x1801315bd\n; > <???> @ 0x180202eb8\n; > <???> @ 0x180202ec4\n; \n; This function is hookable on this platform!\n; \n; Using BromaIDA 8.0.0 @ https:;github.com/Stazzical/BromaIDA\n; Using bindings at commit ba9f177b at Thu Jul 16 22:52:06 2026 from https:;github.com/geode-sdk/bindings\n; \n\npush    rbp                                                            ; +0x0, 0x1801313d8\npush    rbx                                                            ; +0x2, 0x1801313da\npush    rsi                                                            ; +0x3, 0x1801313db\npush    rdi                                                            ; +0x4, 0x1801313dc\npush    r14                                                            ; +0x5, 0x1801313dd\nlea     rbp, [rsp-3F0h]                                                ; +0x7, 0x1801313df\nsub     rsp, 4F0h                                                      ; +0xf, 0x1801313e7\nmov     rax, cs:__security_cookie                                      ; +0x16, 0x1801313ee\nxor     rax, rsp                                                       ; +0x1d, 0x1801313f5\nmov     [rbp+410h+var_30], rax                                         ; +0x20, 0x1801313f8\nmov     rdi, rcx                                                       ; +0x27, 0x1801313ff\nmov     [rsp+510h+var_4C8], rcx                                        ; +0x2a, 0x180131402\nmov     ecx, 0FFFFFFF4h; nStdHandle                                    ; +0x2f, 0x180131407\nmov     [rsp+510h+var_4D0], rdx                                        ; +0x34, 0x18013140c\nmov     r14d, r8d                                                      ; +0x39, 0x180131411\nmov     [rsp+510h+var_4D8], r8d                                        ; +0x3c, 0x180131414\nmov     rsi, rdx                                                       ; +0x41, 0x180131419\ncall    cs:GetStdHandle                                                ; +0x44, 0x18013141c\nmov     rbx, rax                                                       ; +0x4a, 0x180131422\nlea     rcx, [rax-1]                                                   ; +0x4d, 0x180131425\ncmp     rcx, 0FFFFFFFFFFFFFFFDh                                        ; +0x51, 0x180131429\nja      short loc_1801314A1                                            ; +0x55, 0x18013142d\nmov     rcx, rax; hFile                                                ; +0x57, 0x18013142f\ncall    cs:GetFileType                                                 ; +0x5a, 0x180131432\ncmp     eax, 2                                                         ; +0x60, 0x180131438\njnz     short loc_1801314A1                                            ; +0x63, 0x18013143b\nmov     [rsp+510h+var_4E8], r14d                                       ; +0x65, 0x18013143d\nlea     r8, Format                                                     ; +0x6a, 0x180131442\nmov     r9, rdi                                                        ; +0x71, 0x180131449\nmov     [rsp+510h+lpReserved], rsi                                     ; +0x74, 0x18013144c\nmov     edx, 240h; BufferCount                                         ; +0x79, 0x180131451\nlea     rcx, [rsp+510h+Buffer]; Buffer                                 ; +0x7e, 0x180131456\ncall    sprintf_s                                                      ; +0x83, 0x18013145b\nxor     edi, edi                                                       ; +0x88, 0x180131460\ntest    eax, eax                                                       ; +0x8a, 0x180131462\njs      short loc_1801314A1                                            ; +0x8c, 0x180131464\nlea     rcx, [rsp+510h+Buffer]                                         ; +0x8e, 0x180131466\nor      rax, 0FFFFFFFFFFFFFFFFh                                        ; +0x93, 0x18013146b\ninc     rax                                                            ; +0x97, 0x18013146f\ncmp     [rcx+rax*2], di                                                ; +0x9a, 0x180131472\njnz     short loc_18013146F                                            ; +0x9e, 0x180131476\nlea     r9, [rsp+510h+NumberOfCharsWritten]; lpNumberOfCharsWritten    ; +0xa0, 0x180131478\nmov     [rsp+510h+NumberOfCharsWritten], edi                           ; +0xa5, 0x18013147d\nmov     r8d, eax; nNumberOfCharsToWrite                                ; +0xa9, 0x180131481\nmov     [rsp+510h+lpReserved], rdi; lpReserved                         ; +0xac, 0x180131484\nlea     rdx, [rsp+510h+Buffer]; lpBuffer                               ; +0xb1, 0x180131489\nmov     rcx, rbx; hConsoleOutput                                       ; +0xb6, 0x18013148e\ncall    cs:WriteConsoleW                                               ; +0xb9, 0x180131491\ntest    eax, eax                                                       ; +0xbf, 0x180131497\njz      short loc_1801314A1                                            ; +0xc1, 0x180131499\ncall    abort                                                          ; +0xc3, 0x18013149b\ndb 0CCh                                                                ; +0xc8, 0x1801314a0\nmov     ecx, 2; Ix                                                     ; +0xc9, 0x1801314a1\ncall    __acrt_iob_func                                                ; +0xce, 0x1801314a6\nmov     ecx, [rax+14h]                                                 ; +0xd3, 0x1801314ab\ntest    ecx, 4C0h                                                      ; +0xd6, 0x1801314ae\njnz     short loc_1801314D1                                            ; +0xdc, 0x1801314b4\nmov     ecx, 2; Ix                                                     ; +0xde, 0x1801314b6\ncall    __acrt_iob_func                                                ; +0xe3, 0x1801314bb\nxor     r9d, r9d; Size                                                 ; +0xe8, 0x1801314c0\nmov     rcx, rax; Stream                                               ; +0xeb, 0x1801314c3\nxor     edx, edx; Buffer                                               ; +0xee, 0x1801314c6\nlea     r8d, [r9+4]; Mode                                              ; +0xf0, 0x1801314c8\ncall    setvbuf                                                        ; +0xf4, 0x1801314cc\nxor     ecx, ecx                                                       ; +0xf9, 0x1801314d1\ncall    sub_180131548                                                  ; +0xfb, 0x1801314d3\nmov     ecx, 2; Ix                                                     ; +0x100, 0x1801314d8\nmov     [rsp+510h+var_4C0], rax                                        ; +0x105, 0x1801314dd\ncall    __acrt_iob_func                                                ; +0x10a, 0x1801314e2\nmov     [rsp+510h+var_4B8], rax                                        ; +0x10f, 0x1801314e7\nlea     r9, [rsp+510h+var_4D0]                                         ; +0x114, 0x1801314ec\nlea     rax, [rsp+510h+var_4D8]                                        ; +0x119, 0x1801314f1\nlea     r8, [rsp+510h+var_4C8]                                         ; +0x11e, 0x1801314f6\nmov     [rsp+510h+lpReserved], rax                                     ; +0x123, 0x1801314fb\nlea     rdx, [rsp+510h+var_4C0]                                        ; +0x128, 0x180131500\nlea     rcx, [rsp+510h+var_4B8]                                        ; +0x12d, 0x180131505\ncall    sub_180131528                                                  ; +0x132, 0x18013150a\nmov     ecx, 2; Ix                                                     ; +0x137, 0x18013150f\ncall    __acrt_iob_func                                                ; +0x13c, 0x180131514\nmov     rcx, rax; Stream                                               ; +0x141, 0x180131519\ncall    fflush                                                         ; +0x144, 0x18013151c\ncall    abort                                                          ; +0x149, 0x180131521\ndb 0CCh                                                                ; +0x14e, 0x180131526", "xrefs": ["_wassert @ 0x1801315bd", "<???> @ 0x180202eb8", "<???> @ 0x180202ec4"], "is_objc": false, "is_arm32": false, "is_arm64": false, "bida_info": "8.0.0 @ https://github.com/Stazzical/BromaIDA", "bindings_info": "commit ba9f177b at Thu Jul 16 22:52:06 2026 from https://github.com/geode-sdk/bindings"}