{"type": "func", "start": 6443722520, "end": 6443722788, "name": "initialize_stdio_handles_nolock", "pseudocode": "// \n// initialize_stdio_handles_nolock from 0x180136718 to 0x180136824 (268 bytes)\n// \n// 2 xrefs:\n// > __acrt_initialize_lowio @ 0x180136846\n// > <???> @ 0x180203524\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 initialize_stdio_handles_nolock()\n{\n  int v0; // esi\n  __int64 v1; // r14\n  __int64 v2; // rcx\n  __int64 v3; // rbx\n  __int64 v4; // rdi\n  DWORD v5; // ecx\n  HANDLE StdHandle; // rax\n  HANDLE v7; // rbp\n  DWORD FileType; // eax\n\n  v0 = 0;\n  v1 = 0;\n  do\n  {\n    v2 = v0 & 0x3F;\n    v3 = 9 * v2;\n    v4 = qword_1801F5160[(__int64)v0 >> 6];\n    if ( *(_QWORD *)(v4 + 72 * v2 + 40) == -2 || *(_QWORD *)(v4 + 72 * v2 + 40) == -1 )\n    {\n      *(_BYTE *)(v4 + 72 * v2 + 56) = -127;\n      if ( v0 )\n      {\n        if ( v0 == 1 )\n          v5 = -11;\n        else\n          v5 = -12;\n      }\n      else\n      {\n        v5 = -10;\n      }\n      StdHandle = GetStdHandle(v5);\n      v7 = StdHandle;\n      if ( (unsigned __int64)StdHandle + 1 <= 1 )\n        FileType = 0;\n      else\n        FileType = GetFileType(StdHandle);\n      if ( FileType )\n      {\n        *(_QWORD *)(v4 + 8 * v3 + 40) = v7;\n        if ( (unsigned __int8)FileType == 2 )\n        {\n          *(_BYTE *)(v4 + 8 * v3 + 56) |= 0x40u;\n        }\n        else if ( (unsigned __int8)FileType == 3 )\n        {\n          *(_BYTE *)(v4 + 8 * v3 + 56) |= 8u;\n        }\n      }\n      else\n      {\n        *(_BYTE *)(v4 + 8 * v3 + 56) |= 0x40u;\n        *(_QWORD *)(v4 + 8 * v3 + 40) = -2;\n        if ( Block )\n          *(_DWORD *)(*(_QWORD *)((char *)Block + v1) + 24LL) = -2;\n      }\n    }\n    else\n    {\n      *(_BYTE *)(v4 + 72 * v2 + 56) |= 0x80u;\n    }\n    ++v0;\n    v1 += 8;\n  }\n  while ( v0 != 3 );\n}", "assembly": "; \n; initialize_stdio_handles_nolock from 0x180136718 to 0x180136824 (268 bytes)\n; \n; 2 xrefs:\n; > __acrt_initialize_lowio @ 0x180136846\n; > <???> @ 0x180203524\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, 0x180136718\nmov     [rax+8], rbx                                                   ; +0x3, 0x18013671b\nmov     [rax+10h], rbp                                                 ; +0x7, 0x18013671f\nmov     [rax+18h], rsi                                                 ; +0xb, 0x180136723\nmov     [rax+20h], rdi                                                 ; +0xf, 0x180136727\npush    r14                                                            ; +0x13, 0x18013672b\nsub     rsp, 20h                                                       ; +0x15, 0x18013672d\nxor     esi, esi                                                       ; +0x19, 0x180136731\nxor     r14d, r14d                                                     ; +0x1b, 0x180136733\nmovsxd  rcx, esi                                                       ; +0x1e, 0x180136736\nlea     rdi, qword_1801F5160                                           ; +0x21, 0x180136739\nmov     rax, rcx                                                       ; +0x28, 0x180136740\nand     ecx, 3Fh                                                       ; +0x2b, 0x180136743\nsar     rax, 6                                                         ; +0x2e, 0x180136746\nlea     rbx, [rcx+rcx*8]                                               ; +0x32, 0x18013674a\nmov     rdi, [rdi+rax*8]                                               ; +0x36, 0x18013674e\nmov     rax, [rdi+rbx*8+28h]                                           ; +0x3a, 0x180136752\nadd     rax, 2                                                         ; +0x3f, 0x180136757\ncmp     rax, 1                                                         ; +0x43, 0x18013675b\njbe     short loc_18013676B                                            ; +0x47, 0x18013675f\nor      byte ptr [rdi+rbx*8+38h], 80h                                  ; +0x49, 0x180136761\njmp     loc_1801367FA                                                  ; +0x4e, 0x180136766\nmov     byte ptr [rdi+rbx*8+38h], 81h                                  ; +0x53, 0x18013676b\nmov     ecx, esi                                                       ; +0x58, 0x180136770\ntest    esi, esi                                                       ; +0x5a, 0x180136772\njz      short loc_18013678C                                            ; +0x5c, 0x180136774\nsub     ecx, 1                                                         ; +0x5e, 0x180136776\njz      short loc_180136785                                            ; +0x61, 0x180136779\ncmp     ecx, 1                                                         ; +0x63, 0x18013677b\nmov     ecx, 0FFFFFFF4h                                                ; +0x66, 0x18013677e\njmp     short loc_180136791                                            ; +0x6b, 0x180136783\nmov     ecx, 0FFFFFFF5h                                                ; +0x6d, 0x180136785\njmp     short loc_180136791                                            ; +0x72, 0x18013678a\nmov     ecx, 0FFFFFFF6h; nStdHandle                                    ; +0x74, 0x18013678c\ncall    cs:GetStdHandle                                                ; +0x79, 0x180136791\nmov     rbp, rax                                                       ; +0x7f, 0x180136797\nlea     rcx, [rax+1]                                                   ; +0x82, 0x18013679a\ncmp     rcx, 1                                                         ; +0x86, 0x18013679e\njbe     short loc_1801367AF                                            ; +0x8a, 0x1801367a2\nmov     rcx, rax; hFile                                                ; +0x8c, 0x1801367a4\ncall    cs:GetFileType                                                 ; +0x8f, 0x1801367a7\njmp     short loc_1801367B1                                            ; +0x95, 0x1801367ad\nxor     eax, eax                                                       ; +0x97, 0x1801367af\ntest    eax, eax                                                       ; +0x99, 0x1801367b1\njz      short loc_1801367D5                                            ; +0x9b, 0x1801367b3\nmovzx   ecx, al                                                        ; +0x9d, 0x1801367b5\nmov     [rdi+rbx*8+28h], rbp                                           ; +0xa0, 0x1801367b8\ncmp     ecx, 2                                                         ; +0xa5, 0x1801367bd\njnz     short loc_1801367C9                                            ; +0xa8, 0x1801367c0\nor      byte ptr [rdi+rbx*8+38h], 40h                                  ; +0xaa, 0x1801367c2\njmp     short loc_1801367FA                                            ; +0xaf, 0x1801367c7\ncmp     ecx, 3                                                         ; +0xb1, 0x1801367c9\njnz     short loc_1801367FA                                            ; +0xb4, 0x1801367cc\nor      byte ptr [rdi+rbx*8+38h], 8                                    ; +0xb6, 0x1801367ce\njmp     short loc_1801367FA                                            ; +0xbb, 0x1801367d3\nor      byte ptr [rdi+rbx*8+38h], 40h                                  ; +0xbd, 0x1801367d5\nmov     qword ptr [rdi+rbx*8+28h], 0FFFFFFFFFFFFFFFEh                  ; +0xc2, 0x1801367da\nmov     rax, cs:Block                                                  ; +0xcb, 0x1801367e3\ntest    rax, rax                                                       ; +0xd2, 0x1801367ea\njz      short loc_1801367FA                                            ; +0xd5, 0x1801367ed\nmov     rax, [r14+rax]                                                 ; +0xd7, 0x1801367ef\nmov     dword ptr [rax+18h], 0FFFFFFFEh                                ; +0xdb, 0x1801367f3\ninc     esi                                                            ; +0xe2, 0x1801367fa\nadd     r14, 8                                                         ; +0xe4, 0x1801367fc\ncmp     esi, 3                                                         ; +0xe8, 0x180136800\njnz     loc_180136736                                                  ; +0xeb, 0x180136803\nmov     rbx, [rsp+28h+arg_0]                                           ; +0xf1, 0x180136809\nmov     rbp, [rsp+28h+arg_8]                                           ; +0xf6, 0x18013680e\nmov     rsi, [rsp+28h+arg_10]                                          ; +0xfb, 0x180136813\nmov     rdi, [rsp+28h+arg_18]                                          ; +0x100, 0x180136818\nadd     rsp, 20h                                                       ; +0x105, 0x18013681d\npop     r14                                                            ; +0x109, 0x180136821\nretn                                                                   ; +0x10b, 0x180136823", "xrefs": ["__acrt_initialize_lowio @ 0x180136846", "<???> @ 0x180203524"], "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"}