{"type": "func", "start": 6443722280, "end": 6443722517, "name": "initialize_inherited_file_handles_nolock", "pseudocode": "// \n// initialize_inherited_file_handles_nolock from 0x180136628 to 0x180136715 (237 bytes)\n// \n// 2 xrefs:\n// > __acrt_initialize_lowio @ 0x180136841\n// > <???> @ 0x180203518\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_inherited_file_handles_nolock()\n{\n  LPBYTE v0; // rsi\n  __int64 v1; // rdi\n  HANDLE *v2; // rbx\n  __int64 v3; // rbp\n  __int64 v4; // rcx\n  __int64 v5; // rdx\n  struct _STARTUPINFOW v6; // [rsp+20h] [rbp-78h] BYREF\n\n  GetStartupInfoW(&v6);\n  if ( v6.cbReserved2 && v6.lpReserved2 )\n  {\n    v0 = v6.lpReserved2 + 4;\n    v1 = 0x2000;\n    v2 = (HANDLE *)&v6.lpReserved2[*(_DWORD *)v6.lpReserved2 + 4];\n    if ( *(int *)v6.lpReserved2 < 0x2000 )\n      v1 = *(unsigned int *)v6.lpReserved2;\n    _acrt_lowio_ensure_fh_exists(v1);\n    if ( (int)v1 > dword_1801F5560 )\n      v1 = (unsigned int)dword_1801F5560;\n    if ( (_DWORD)v1 )\n    {\n      v3 = 0;\n      do\n      {\n        if ( *v2 != (HANDLE)-1LL && *v2 != (HANDLE)-2LL && (*v0 & 1) != 0 && ((*v0 & 8) != 0 || GetFileType(*v2)) )\n        {\n          v4 = qword_1801F5160[v3 >> 6];\n          v5 = 9 * (v3 & 0x3F);\n          *(_QWORD *)(v4 + 8 * v5 + 40) = *v2;\n          *(_BYTE *)(v4 + 8 * v5 + 56) = *v0;\n        }\n        ++v3;\n        ++v0;\n        ++v2;\n        --v1;\n      }\n      while ( v1 );\n    }\n  }\n}", "assembly": "; \n; initialize_inherited_file_handles_nolock from 0x180136628 to 0x180136715 (237 bytes)\n; \n; 2 xrefs:\n; > __acrt_initialize_lowio @ 0x180136841\n; > <???> @ 0x180203518\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, 0x180136628\nmov     [rax+8], rbx                                                   ; +0x3, 0x18013662b\nmov     [rax+10h], rbp                                                 ; +0x7, 0x18013662f\nmov     [rax+18h], rsi                                                 ; +0xb, 0x180136633\nmov     [rax+20h], rdi                                                 ; +0xf, 0x180136637\npush    r14                                                            ; +0x13, 0x18013663b\nsub     rsp, 90h                                                       ; +0x15, 0x18013663d\nlea     rcx, [rax-78h]; lpStartupInfo                                  ; +0x1c, 0x180136644\ncall    cs:GetStartupInfoW                                             ; +0x20, 0x180136648\nxor     r14d, r14d                                                     ; +0x26, 0x18013664e\ncmp     [rsp+98h+var_36], r14w                                         ; +0x29, 0x180136651\njz      loc_1801366F7                                                  ; +0x2f, 0x180136657\nmov     rax, [rsp+98h+var_30]                                          ; +0x35, 0x18013665d\ntest    rax, rax                                                       ; +0x3a, 0x180136662\njz      loc_1801366F7                                                  ; +0x3d, 0x180136665\nmovsxd  rbx, dword ptr [rax]                                           ; +0x43, 0x18013666b\nlea     rsi, [rax+4]                                                   ; +0x46, 0x18013666e\nmov     edi, 2000h                                                     ; +0x4a, 0x180136672\nadd     rbx, rsi                                                       ; +0x4f, 0x180136677\ncmp     [rax], edi                                                     ; +0x52, 0x18013667a\ncmovl   edi, [rax]                                                     ; +0x54, 0x18013667c\nmov     ecx, edi                                                       ; +0x57, 0x18013667f\ncall    __acrt_lowio_ensure_fh_exists                                  ; +0x59, 0x180136681\ncmp     edi, cs:dword_1801F5560                                        ; +0x5e, 0x180136686\ncmovg   edi, cs:dword_1801F5560                                        ; +0x64, 0x18013668c\ntest    edi, edi                                                       ; +0x6b, 0x180136693\njz      short loc_1801366F7                                            ; +0x6d, 0x180136695\nmov     ebp, r14d                                                      ; +0x6f, 0x180136697\ncmp     qword ptr [rbx], 0FFFFFFFFFFFFFFFFh                            ; +0x72, 0x18013669a\njz      short loc_1801366E7                                            ; +0x76, 0x18013669e\ncmp     qword ptr [rbx], 0FFFFFFFFFFFFFFFEh                            ; +0x78, 0x1801366a0\njz      short loc_1801366E7                                            ; +0x7c, 0x1801366a4\ntest    byte ptr [rsi], 1                                              ; +0x7e, 0x1801366a6\njz      short loc_1801366E7                                            ; +0x81, 0x1801366a9\ntest    byte ptr [rsi], 8                                              ; +0x83, 0x1801366ab\njnz     short loc_1801366BD                                            ; +0x86, 0x1801366ae\nmov     rcx, [rbx]; hFile                                              ; +0x88, 0x1801366b0\ncall    cs:GetFileType                                                 ; +0x8b, 0x1801366b3\ntest    eax, eax                                                       ; +0x91, 0x1801366b9\njz      short loc_1801366E7                                            ; +0x93, 0x1801366bb\nmov     rax, rbp                                                       ; +0x95, 0x1801366bd\nlea     r8, qword_1801F5160                                            ; +0x98, 0x1801366c0\nmov     rcx, rbp                                                       ; +0x9f, 0x1801366c7\nsar     rcx, 6                                                         ; +0xa2, 0x1801366ca\nand     eax, 3Fh                                                       ; +0xa6, 0x1801366ce\nmov     rcx, [r8+rcx*8]                                                ; +0xa9, 0x1801366d1\nlea     rdx, [rax+rax*8]                                               ; +0xad, 0x1801366d5\nmov     rax, [rbx]                                                     ; +0xb1, 0x1801366d9\nmov     [rcx+rdx*8+28h], rax                                           ; +0xb4, 0x1801366dc\nmov     al, [rsi]                                                      ; +0xb9, 0x1801366e1\nmov     [rcx+rdx*8+38h], al                                            ; +0xbb, 0x1801366e3\ninc     rbp                                                            ; +0xbf, 0x1801366e7\ninc     rsi                                                            ; +0xc2, 0x1801366ea\nadd     rbx, 8                                                         ; +0xc5, 0x1801366ed\nsub     rdi, 1                                                         ; +0xc9, 0x1801366f1\njnz     short loc_18013669A                                            ; +0xcd, 0x1801366f5\nlea     r11, [rsp+98h+var_8]                                           ; +0xcf, 0x1801366f7\nmov     rbx, [r11+10h]                                                 ; +0xd7, 0x1801366ff\nmov     rbp, [r11+18h]                                                 ; +0xdb, 0x180136703\nmov     rsi, [r11+20h]                                                 ; +0xdf, 0x180136707\nmov     rdi, [r11+28h]                                                 ; +0xe3, 0x18013670b\nmov     rsp, r11                                                       ; +0xe7, 0x18013670f\npop     r14                                                            ; +0xea, 0x180136712\nretn                                                                   ; +0xec, 0x180136714", "xrefs": ["__acrt_initialize_lowio @ 0x180136841", "<???> @ 0x180203518"], "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"}