{"type": "func", "start": 6443694164, "end": 6443694451, "name": "__acrt_initialize_stdio", "pseudocode": "// \n// __acrt_initialize_stdio from 0x18012f854 to 0x18012f973 (287 bytes)\n// \n// 2 xrefs:\n// > <???> @ 0x180144520\n// > <???> @ 0x180202db0\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\n__int64 _acrt_initialize_stdio()\n{\n  int v0; // eax\n  __int64 v1; // rbx\n  __int64 v2; // rdi\n  __int64 v4; // rbp\n  _DWORD *v5; // rsi\n  char *v6; // r14\n\n  v0 = dword_1801F4BC8;\n  v1 = 0;\n  v2 = 3;\n  if ( dword_1801F4BC8 )\n  {\n    if ( dword_1801F4BC8 < 3 )\n      v0 = 3;\n  }\n  else\n  {\n    v0 = 512;\n  }\n  dword_1801F4BC8 = v0;\n  Block = calloc_base(v0, 8u);\n  free_base(nullptr);\n  if ( !Block )\n  {\n    dword_1801F4BC8 = 3;\n    Block = calloc_base(3u, 8u);\n    free_base(nullptr);\n    if ( !Block )\n      return 0xFFFFFFFFLL;\n  }\n  v4 = 0;\n  v5 = &unk_1801B1758;\n  v6 = (char *)&unk_1801B1740;\n  do\n  {\n    _vcrt_InitializeCriticalSectionEx_0((LPCRITICAL_SECTION)(v6 + 48), 0xFA0u);\n    *(_QWORD *)((char *)Block + v1) = v6;\n    if ( *(_QWORD *)(qword_1801F5160[v4 >> 6] + 72 * (v4 & 0x3F) + 40) >= 0xFFFFFFFFFFFFFFFEuLL\n      || *(_QWORD *)(qword_1801F5160[v4 >> 6] + 72 * (v4 & 0x3F) + 40) == 0 )\n    {\n      *v5 = -2;\n    }\n    ++v4;\n    v6 += 88;\n    v1 += 8;\n    v5 += 22;\n    --v2;\n  }\n  while ( v2 );\n  return 0;\n}", "assembly": "; \n; __acrt_initialize_stdio from 0x18012f854 to 0x18012f973 (287 bytes)\n; \n; 2 xrefs:\n; > <???> @ 0x180144520\n; > <???> @ 0x180202db0\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\nmov     rax, rsp                                                       ; +0x0, 0x18012f854\nmov     [rax+8], rbx                                                   ; +0x3, 0x18012f857\nmov     [rax+10h], rbp                                                 ; +0x7, 0x18012f85b\nmov     [rax+18h], rsi                                                 ; +0xb, 0x18012f85f\nmov     [rax+20h], rdi                                                 ; +0xf, 0x18012f863\npush    r14                                                            ; +0x13, 0x18012f867\nsub     rsp, 20h                                                       ; +0x15, 0x18012f869\nmov     eax, cs:dword_1801F4BC8                                        ; +0x19, 0x18012f86d\nxor     ebx, ebx                                                       ; +0x1f, 0x18012f873\nmov     edi, 3                                                         ; +0x21, 0x18012f875\ntest    eax, eax                                                       ; +0x26, 0x18012f87a\njnz     short loc_18012F885                                            ; +0x28, 0x18012f87c\nmov     eax, 200h                                                      ; +0x2a, 0x18012f87e\njmp     short loc_18012F88A                                            ; +0x2f, 0x18012f883\ncmp     eax, edi                                                       ; +0x31, 0x18012f885\ncmovl   eax, edi                                                       ; +0x33, 0x18012f887\nmovsxd  rcx, eax; Count                                                ; +0x36, 0x18012f88a\nmov     edx, 8; Size                                                   ; +0x39, 0x18012f88d\nmov     cs:dword_1801F4BC8, eax                                        ; +0x3e, 0x18012f892\ncall    _calloc_base                                                   ; +0x44, 0x18012f898\nxor     ecx, ecx; Block                                                ; +0x49, 0x18012f89d\nmov     cs:Block, rax                                                  ; +0x4b, 0x18012f89f\ncall    _free_base                                                     ; +0x52, 0x18012f8a6\ncmp     cs:Block, rbx                                                  ; +0x57, 0x18012f8ab\njnz     short loc_18012F8E3                                            ; +0x5e, 0x18012f8b2\nmov     edx, 8; Size                                                   ; +0x60, 0x18012f8b4\nmov     cs:dword_1801F4BC8, edi                                        ; +0x65, 0x18012f8b9\nmov     rcx, rdi; Count                                                ; +0x6b, 0x18012f8bf\ncall    _calloc_base                                                   ; +0x6e, 0x18012f8c2\nxor     ecx, ecx; Block                                                ; +0x73, 0x18012f8c7\nmov     cs:Block, rax                                                  ; +0x75, 0x18012f8c9\ncall    _free_base                                                     ; +0x7c, 0x18012f8d0\ncmp     cs:Block, rbx                                                  ; +0x81, 0x18012f8d5\njnz     short loc_18012F8E3                                            ; +0x88, 0x18012f8dc\nor      eax, 0FFFFFFFFh                                                ; +0x8a, 0x18012f8de\njmp     short loc_18012F958                                            ; +0x8d, 0x18012f8e1\nmov     rbp, rbx                                                       ; +0x8f, 0x18012f8e3\nlea     rsi, unk_1801B1758                                             ; +0x92, 0x18012f8e6\nlea     r14, unk_1801B1740                                             ; +0x99, 0x18012f8ed\nlea     rcx, [r14+30h]; lpCriticalSection                              ; +0xa0, 0x18012f8f4\nxor     r8d, r8d                                                       ; +0xa4, 0x18012f8f8\nmov     edx, 0FA0h; dwSpinCount                                        ; +0xa7, 0x18012f8fb\ncall    __vcrt_InitializeCriticalSectionEx_0                           ; +0xac, 0x18012f900\nmov     rax, cs:Block                                                  ; +0xb1, 0x18012f905\nlea     r8, qword_1801F5160                                            ; +0xb8, 0x18012f90c\nmov     rdx, rbp                                                       ; +0xbf, 0x18012f913\nsar     rdx, 6                                                         ; +0xc2, 0x18012f916\nmov     [rbx+rax], r14                                                 ; +0xc6, 0x18012f91a\nmov     rax, rbp                                                       ; +0xca, 0x18012f91e\nand     eax, 3Fh                                                       ; +0xcd, 0x18012f921\nlea     rcx, [rax+rax*8]                                               ; +0xd0, 0x18012f924\nmov     rax, [r8+rdx*8]                                                ; +0xd4, 0x18012f928\nmov     rcx, [rax+rcx*8+28h]                                           ; +0xd8, 0x18012f92c\nadd     rcx, 2                                                         ; +0xdd, 0x18012f931\ncmp     rcx, 2                                                         ; +0xe1, 0x18012f935\nja      short loc_18012F941                                            ; +0xe5, 0x18012f939\nmov     dword ptr [rsi], 0FFFFFFFEh                                    ; +0xe7, 0x18012f93b\ninc     rbp                                                            ; +0xed, 0x18012f941\nadd     r14, 58h ; 'X'                                                 ; +0xf0, 0x18012f944\nadd     rbx, 8                                                         ; +0xf4, 0x18012f948\nadd     rsi, 58h ; 'X'                                                 ; +0xf8, 0x18012f94c\nsub     rdi, 1                                                         ; +0xfc, 0x18012f950\njnz     short loc_18012F8F4                                            ; +0x100, 0x18012f954\nxor     eax, eax                                                       ; +0x102, 0x18012f956\nmov     rbx, [rsp+28h+arg_0]                                           ; +0x104, 0x18012f958\nmov     rbp, [rsp+28h+arg_8]                                           ; +0x109, 0x18012f95d\nmov     rsi, [rsp+28h+arg_10]                                          ; +0x10e, 0x18012f962\nmov     rdi, [rsp+28h+arg_18]                                          ; +0x113, 0x18012f967\nadd     rsp, 20h                                                       ; +0x118, 0x18012f96c\npop     r14                                                            ; +0x11c, 0x18012f970\nretn                                                                   ; +0x11e, 0x18012f972", "xrefs": ["<???> @ 0x180144520", "<???> @ 0x180202db0"], "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"}