{"type": "func", "start": 6443713628, "end": 6443713868, "name": "_wcsnicoll_l", "pseudocode": "// \n// _wcsnicoll_l from 0x18013445c to 0x18013454c (240 bytes)\n// \n// 2 xrefs:\n// > _wcsnicoll @ 0x180134456\n// > <???> @ 0x180203248\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 wcsnicoll_l(const wchar_t *String1, const wchar_t *String2, size_t MaxCount, _locale_t Locale)\n{\n  int v8; // ebx\n  __int64 v9; // rcx\n  int v10; // eax\n  _QWORD v11[3]; // [rsp+30h] [rbp-28h] BYREF\n  char v12; // [rsp+48h] [rbp-10h]\n\n  if ( !MaxCount )\n    return 0;\n  if ( String1 && String2 )\n  {\n    v8 = 0x7FFFFFFF;\n    if ( MaxCount <= 0x7FFFFFFF )\n    {\n      _LocaleUpdate::_LocaleUpdate((_LocaleUpdate *)v11, Locale);\n      v9 = *(_QWORD *)(v11[1] + 304LL);\n      if ( v9 )\n      {\n        v10 = _crtCompareStringW(v9, 4097, String1, (unsigned int)MaxCount, String2, MaxCount);\n        if ( v10 )\n          v8 = v10 - 2;\n        else\n          *errno() = 22;\n      }\n      else\n      {\n        v8 = _ascii_wcsnicmp(String1, String2, MaxCount);\n      }\n      if ( v12 )\n        *(_DWORD *)(v11[0] + 936LL) &= ~2u;\n    }\n    else\n    {\n      *errno() = 22;\n      invalid_parameter_noinfo();\n    }\n    return v8;\n  }\n  else\n  {\n    *errno() = 22;\n    invalid_parameter_noinfo();\n    return 0x7FFFFFFF;\n  }\n}", "assembly": "; \n; _wcsnicoll_l from 0x18013445c to 0x18013454c (240 bytes)\n; \n; 2 xrefs:\n; > _wcsnicoll @ 0x180134456\n; > <???> @ 0x180203248\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+arg_0], rbx                                               ; +0x0, 0x18013445c\nmov     [rsp+arg_8], rbp                                               ; +0x5, 0x180134461\nmov     [rsp+arg_10], rsi                                              ; +0xa, 0x180134466\npush    rdi                                                            ; +0xf, 0x18013446b\nsub     rsp, 50h                                                       ; +0x10, 0x18013446c\nmov     rdi, r8                                                        ; +0x14, 0x180134470\nmov     rsi, rdx                                                       ; +0x17, 0x180134473\nmov     rbp, rcx                                                       ; +0x1a, 0x180134476\ntest    r8, r8                                                         ; +0x1d, 0x180134479\njnz     short loc_180134485                                            ; +0x20, 0x18013447c\nxor     eax, eax                                                       ; +0x22, 0x18013447e\njmp     loc_180134537                                                  ; +0x24, 0x180134480\ntest    rbp, rbp                                                       ; +0x29, 0x180134485\njnz     short loc_1801344A4                                            ; +0x2c, 0x180134488\ncall    _errno                                                         ; +0x2e, 0x18013448a\nmov     dword ptr [rax], 16h                                           ; +0x33, 0x18013448f\ncall    _invalid_parameter_noinfo                                      ; +0x39, 0x180134495\nmov     eax, 7FFFFFFFh                                                 ; +0x3e, 0x18013449a\njmp     loc_180134537                                                  ; +0x43, 0x18013449f\ntest    rsi, rsi                                                       ; +0x48, 0x1801344a4\njz      short loc_18013448A                                            ; +0x4b, 0x1801344a7\nmov     ebx, 7FFFFFFFh                                                 ; +0x4d, 0x1801344a9\ncmp     rdi, rbx                                                       ; +0x52, 0x1801344ae\njbe     short loc_1801344C5                                            ; +0x55, 0x1801344b1\ncall    _errno                                                         ; +0x57, 0x1801344b3\nmov     dword ptr [rax], 16h                                           ; +0x5c, 0x1801344b8\ncall    _invalid_parameter_noinfo                                      ; +0x62, 0x1801344be\njmp     short loc_180134535                                            ; +0x67, 0x1801344c3\nmov     rdx, r9; struct __crt_locale_pointers *                        ; +0x69, 0x1801344c5\nlea     rcx, [rsp+58h+var_28]; this                                    ; +0x6c, 0x1801344c8\ncall    ??0_LocaleUpdate@@QEAA@QEAU__crt_locale_pointers@@@Z           ; +0x71, 0x1801344cd\nmov     rax, [rsp+58h+var_20]                                          ; +0x76, 0x1801344d2\nmov     rcx, [rax+130h]                                                ; +0x7b, 0x1801344d7\ntest    rcx, rcx                                                       ; +0x82, 0x1801344de\njnz     short loc_1801344F5                                            ; +0x85, 0x1801344e1\nmov     r8, rdi                                                        ; +0x87, 0x1801344e3\nmov     rdx, rsi                                                       ; +0x8a, 0x1801344e6\nmov     rcx, rbp                                                       ; +0x8d, 0x1801344e9\ncall    __ascii_wcsnicmp                                               ; +0x90, 0x1801344ec\nmov     ebx, eax                                                       ; +0x95, 0x1801344f1\njmp     short loc_180134522                                            ; +0x97, 0x1801344f3\nmov     [rsp+58h+var_30], edi                                          ; +0x99, 0x1801344f5\nmov     r9d, edi                                                       ; +0x9d, 0x1801344f9\nmov     r8, rbp                                                        ; +0xa0, 0x1801344fc\nmov     [rsp+58h+var_38], rsi                                          ; +0xa3, 0x1801344ff\nmov     edx, 1001h                                                     ; +0xa8, 0x180134504\ncall    __crtCompareStringW                                            ; +0xad, 0x180134509\ntest    eax, eax                                                       ; +0xb2, 0x18013450e\njnz     short loc_18013451F                                            ; +0xb4, 0x180134510\ncall    _errno                                                         ; +0xb6, 0x180134512\nmov     dword ptr [rax], 16h                                           ; +0xbb, 0x180134517\njmp     short loc_180134522                                            ; +0xc1, 0x18013451d\nlea     ebx, [rax-2]                                                   ; +0xc3, 0x18013451f\ncmp     [rsp+58h+var_10], 0                                            ; +0xc6, 0x180134522\njz      short loc_180134535                                            ; +0xcb, 0x180134527\nmov     rax, [rsp+58h+var_28]                                          ; +0xcd, 0x180134529\nand     dword ptr [rax+3A8h], 0FFFFFFFDh                               ; +0xd2, 0x18013452e\nmov     eax, ebx                                                       ; +0xd9, 0x180134535\nmov     rbx, [rsp+58h+arg_0]                                           ; +0xdb, 0x180134537\nmov     rbp, [rsp+58h+arg_8]                                           ; +0xe0, 0x18013453c\nmov     rsi, [rsp+58h+arg_10]                                          ; +0xe5, 0x180134541\nadd     rsp, 50h                                                       ; +0xea, 0x180134546\npop     rdi                                                            ; +0xee, 0x18013454a\nretn                                                                   ; +0xef, 0x18013454b", "xrefs": ["_wcsnicoll @ 0x180134456", "<???> @ 0x180203248"], "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"}