{"type": "func", "start": 6443669588, "end": 6443669842, "name": "_stat64i32", "pseudocode": "// \n// _stat64i32 from 0x180129854 to 0x180129952 (254 bytes)\n// \n// 3 xrefs:\n// > sub_180020140 @ 0x180020395\n// > sub_180020140 @ 0x1800203da\n// > <???> @ 0x180202abc\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\nint __cdecl stat64i32(const char *FileName, struct _stat64i32 *Stat)\n{\n  int v4; // ebx\n  unsigned int v5; // r8d\n  _QWORD v7[3]; // [rsp+20h] [rbp-50h] BYREF\n  char v8; // [rsp+38h] [rbp-38h]\n  _QWORD v9[2]; // [rsp+40h] [rbp-30h] BYREF\n  void *Block; // [rsp+50h] [rbp-20h]\n  __int64 v11; // [rsp+58h] [rbp-18h]\n  __int64 v12; // [rsp+60h] [rbp-10h]\n  char v13; // [rsp+68h] [rbp-8h]\n\n  if ( !FileName )\n    return common_stat<_stat64i32>(nullptr, (__int64)Stat);\n  v9[0] = 0;\n  v9[1] = 0;\n  Block = nullptr;\n  v11 = 0;\n  v12 = 0;\n  v13 = 0;\n  _LocaleUpdate::_LocaleUpdate((_LocaleUpdate *)v7, nullptr);\n  v5 = 65001;\n  if ( *(_DWORD *)(v7[1] + 12LL) == 65001 )\n  {\n    if ( v8 )\n      *(_DWORD *)(v7[0] + 936LL) &= ~2u;\n  }\n  else if ( (unsigned int)_acrt_AreFileApisANSI() )\n  {\n    if ( v8 )\n      *(_DWORD *)(v7[0] + 936LL) &= ~2u;\n    v5 = 0;\n  }\n  else\n  {\n    if ( v8 )\n      *(_DWORD *)(v7[0] + 936LL) &= ~2u;\n    v5 = 1;\n  }\n  if ( (unsigned int)__acrt_mbs_to_wcs_cp<__crt_win32_buffer_internal_dynamic_resizing>(FileName, (__int64)v9, v5) )\n  {\n    if ( v13 )\n      free_base(Block);\n    return -1;\n  }\n  else\n  {\n    v4 = common_stat<_stat64i32>((wchar_t *)Block, (__int64)Stat);\n    if ( v13 )\n      free_base(Block);\n  }\n  return v4;\n}", "assembly": "; \n; _stat64i32 from 0x180129854 to 0x180129952 (254 bytes)\n; \n; 3 xrefs:\n; > sub_180020140 @ 0x180020395\n; > sub_180020140 @ 0x1800203da\n; > <???> @ 0x180202abc\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     [rsp-8+arg_0], rbx                                             ; +0x0, 0x180129854\nmov     [rsp-8+arg_8], rdi                                             ; +0x5, 0x180129859\npush    rbp                                                            ; +0xa, 0x18012985e\nmov     rbp, rsp                                                       ; +0xb, 0x18012985f\nsub     rsp, 70h                                                       ; +0xe, 0x180129862\nmov     rbx, rdx                                                       ; +0x12, 0x180129866\nmov     rdi, rcx                                                       ; +0x15, 0x180129869\ntest    rcx, rcx                                                       ; +0x18, 0x18012986c\njnz     short loc_18012987D                                            ; +0x1b, 0x18012986f\ncall    ??$common_stat@U_stat64i32@@@@YAHQEB_WQEAU_stat64i32@@@Z       ; +0x1d, 0x180129871\nmov     ebx, eax                                                       ; +0x22, 0x180129876\njmp     loc_18012993E                                                  ; +0x24, 0x180129878\nand     [rbp+var_30], 0                                                ; +0x29, 0x18012987d\nlea     rcx, [rbp+var_50]; this                                        ; +0x2e, 0x180129882\nand     [rbp+var_28], 0                                                ; +0x32, 0x180129886\nxor     edx, edx; struct __crt_locale_pointers *                       ; +0x37, 0x18012988b\nand     [rbp+Block], 0                                                 ; +0x39, 0x18012988d\nand     [rbp+var_18], 0                                                ; +0x3e, 0x180129892\nand     [rbp+var_10], 0                                                ; +0x43, 0x180129897\nmov     [rbp+var_8], 0                                                 ; +0x48, 0x18012989c\ncall    ??0_LocaleUpdate@@QEAA@QEAU__crt_locale_pointers@@@Z           ; +0x4c, 0x1801298a0\nmov     rax, [rbp+var_48]                                              ; +0x51, 0x1801298a5\nmov     r8d, 0FDE9h                                                    ; +0x55, 0x1801298a9\ncmp     [rax+0Ch], r8d                                                 ; +0x5b, 0x1801298af\njnz     short loc_1801298C8                                            ; +0x5f, 0x1801298b3\ncmp     [rbp+var_38], 0                                                ; +0x61, 0x1801298b5\njz      short loc_1801298FD                                            ; +0x65, 0x1801298b9\nmov     rax, [rbp+var_50]                                              ; +0x67, 0x1801298bb\nand     dword ptr [rax+3A8h], 0FFFFFFFDh                               ; +0x6b, 0x1801298bf\njmp     short loc_1801298FD                                            ; +0x72, 0x1801298c6\ncall    __acrt_AreFileApisANSI                                         ; +0x74, 0x1801298c8\ntest    eax, eax                                                       ; +0x79, 0x1801298cd\njnz     short loc_1801298E9                                            ; +0x7b, 0x1801298cf\ncmp     [rbp+var_38], al                                               ; +0x7d, 0x1801298d1\njz      short loc_1801298E1                                            ; +0x80, 0x1801298d4\nmov     rax, [rbp+var_50]                                              ; +0x82, 0x1801298d6\nand     dword ptr [rax+3A8h], 0FFFFFFFDh                               ; +0x86, 0x1801298da\nmov     r8d, 1                                                         ; +0x8d, 0x1801298e1\njmp     short loc_1801298FD                                            ; +0x93, 0x1801298e7\ncmp     [rbp+var_38], 0                                                ; +0x95, 0x1801298e9\njz      short loc_1801298FA                                            ; +0x99, 0x1801298ed\nmov     rax, [rbp+var_50]                                              ; +0x9b, 0x1801298ef\nand     dword ptr [rax+3A8h], 0FFFFFFFDh                               ; +0x9f, 0x1801298f3\nxor     r8d, r8d                                                       ; +0xa6, 0x1801298fa\nlea     rdx, [rbp+var_30]                                              ; +0xa9, 0x1801298fd\nmov     rcx, rdi                                                       ; +0xad, 0x180129901\ncall    ??$__acrt_mbs_to_wcs_cp@U__crt_win32_buffer_internal_dynamic_resizing@@@@YAHQEBDAEAV?$__crt_win32_buffer@_WU__crt_win32_buffer_internal_dynamic_resizing@@@@I@Z ; +0xb0, 0x180129904\ntest    eax, eax                                                       ; +0xb5, 0x180129909\njz      short loc_180129921                                            ; +0xb7, 0x18012990b\ncmp     [rbp+var_8], 0                                                 ; +0xb9, 0x18012990d\njz      short loc_18012991C                                            ; +0xbd, 0x180129911\nmov     rcx, [rbp+Block]; Block                                        ; +0xbf, 0x180129913\ncall    _free_base                                                     ; +0xc3, 0x180129917\nor      ebx, 0FFFFFFFFh                                                ; +0xc8, 0x18012991c\njmp     short loc_18012993E                                            ; +0xcb, 0x18012991f\nmov     rcx, [rbp+Block]; wchar_t *                                    ; +0xcd, 0x180129921\nmov     rdx, rbx                                                       ; +0xd1, 0x180129925\ncall    ??$common_stat@U_stat64i32@@@@YAHQEB_WQEAU_stat64i32@@@Z       ; +0xd4, 0x180129928\ncmp     [rbp+var_8], 0                                                 ; +0xd9, 0x18012992d\nmov     ebx, eax                                                       ; +0xdd, 0x180129931\njz      short loc_18012993E                                            ; +0xdf, 0x180129933\nmov     rcx, [rbp+Block]; Block                                        ; +0xe1, 0x180129935\ncall    _free_base                                                     ; +0xe5, 0x180129939\nlea     r11, [rsp+70h+var_s0]                                          ; +0xea, 0x18012993e\nmov     eax, ebx                                                       ; +0xef, 0x180129943\nmov     rbx, [r11+10h]                                                 ; +0xf1, 0x180129945\nmov     rdi, [r11+18h]                                                 ; +0xf5, 0x180129949\nmov     rsp, r11                                                       ; +0xf9, 0x18012994d\npop     rbp                                                            ; +0xfc, 0x180129950\nretn                                                                   ; +0xfd, 0x180129951", "xrefs": ["sub_180020140 @ 0x180020395", "sub_180020140 @ 0x1800203da", "<???> @ 0x180202abc"], "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"}