{"type": "func", "start": 6443743784, "end": 6443743957, "name": "_strnicmp_l", "pseudocode": "// \n// _strnicmp_l from 0x18013ba28 to 0x18013bad5 (173 bytes)\n// \n// 3 xrefs:\n// > _strnicoll_l @ 0x1801345f5\n// > _strnicmp @ 0x18013ba22\n// > <???> @ 0x180203968\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 strnicmp_l(const char *String1, const char *String2, size_t MaxCount, _locale_t Locale)\n{\n  size_t v4; // rbx\n  const char *v5; // rdi\n  const char *v6; // rsi\n  int result; // eax\n  __int64 v8; // r8\n  __int64 v9; // rax\n  int v10; // edx\n  __int64 v11; // rax\n  int v12; // ecx\n  _QWORD v13[3]; // [rsp+20h] [rbp-28h] BYREF\n  char v14; // [rsp+38h] [rbp-10h]\n\n  v4 = MaxCount;\n  v5 = String2;\n  v6 = String1;\n  if ( String1 && String2 && MaxCount <= 0x7FFFFFFF )\n  {\n    if ( MaxCount )\n    {\n      _LocaleUpdate::_LocaleUpdate((_LocaleUpdate *)v13, Locale);\n      v8 = *(_QWORD *)(v13[1] + 272LL);\n      do\n      {\n        v9 = *(unsigned __int8 *)v6++;\n        v10 = *(unsigned __int8 *)(v9 + v8);\n        v11 = *(unsigned __int8 *)v5++;\n        v12 = *(unsigned __int8 *)(v11 + v8);\n        result = v10 - v12;\n        if ( v10 != v12 )\n          break;\n        if ( !v10 )\n          break;\n        --v4;\n      }\n      while ( v4 );\n      if ( v14 )\n        *(_DWORD *)(v13[0] + 936LL) &= ~2u;\n    }\n    else\n    {\n      return 0;\n    }\n  }\n  else\n  {\n    *errno() = 22;\n    invalid_parameter_noinfo();\n    return 0x7FFFFFFF;\n  }\n  return result;\n}", "assembly": "; \n; _strnicmp_l from 0x18013ba28 to 0x18013bad5 (173 bytes)\n; \n; 3 xrefs:\n; > _strnicoll_l @ 0x1801345f5\n; > _strnicmp @ 0x18013ba22\n; > <???> @ 0x180203968\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, 0x18013ba28\nmov     [rsp+arg_8], rsi                                               ; +0x5, 0x18013ba2d\npush    rdi                                                            ; +0xa, 0x18013ba32\nsub     rsp, 40h                                                       ; +0xb, 0x18013ba33\nmov     rbx, r8                                                        ; +0xf, 0x18013ba37\nmov     rdi, rdx                                                       ; +0x12, 0x18013ba3a\nmov     rsi, rcx                                                       ; +0x15, 0x18013ba3d\ntest    rcx, rcx                                                       ; +0x18, 0x18013ba40\njnz     short loc_18013BA5C                                            ; +0x1b, 0x18013ba43\ncall    _errno                                                         ; +0x1d, 0x18013ba45\nmov     dword ptr [rax], 16h                                           ; +0x22, 0x18013ba4a\ncall    _invalid_parameter_noinfo                                      ; +0x28, 0x18013ba50\nmov     eax, 7FFFFFFFh                                                 ; +0x2d, 0x18013ba55\njmp     short loc_18013BAC5                                            ; +0x32, 0x18013ba5a\ntest    rdx, rdx                                                       ; +0x34, 0x18013ba5c\njz      short loc_18013BA45                                            ; +0x37, 0x18013ba5f\ncmp     rbx, 7FFFFFFFh                                                 ; +0x39, 0x18013ba61\nja      short loc_18013BA45                                            ; +0x40, 0x18013ba68\ntest    rbx, rbx                                                       ; +0x42, 0x18013ba6a\njnz     short loc_18013BA73                                            ; +0x45, 0x18013ba6d\nxor     eax, eax                                                       ; +0x47, 0x18013ba6f\njmp     short loc_18013BAC5                                            ; +0x49, 0x18013ba71\nmov     rdx, r9; struct __crt_locale_pointers *                        ; +0x4b, 0x18013ba73\nlea     rcx, [rsp+48h+var_28]; this                                    ; +0x4e, 0x18013ba76\ncall    ??0_LocaleUpdate@@QEAA@QEAU__crt_locale_pointers@@@Z           ; +0x53, 0x18013ba7b\nmov     rax, [rsp+48h+var_20]                                          ; +0x58, 0x18013ba80\nmov     r8, [rax+110h]                                                 ; +0x5d, 0x18013ba85\nmovzx   eax, byte ptr [rsi]                                            ; +0x64, 0x18013ba8c\ninc     rsi                                                            ; +0x67, 0x18013ba8f\nmovzx   edx, byte ptr [rax+r8]                                         ; +0x6a, 0x18013ba92\nmovzx   eax, byte ptr [rdi]                                            ; +0x6f, 0x18013ba97\ninc     rdi                                                            ; +0x72, 0x18013ba9a\nmovzx   ecx, byte ptr [rax+r8]                                         ; +0x75, 0x18013ba9d\nmov     eax, edx                                                       ; +0x7a, 0x18013baa2\nsub     eax, ecx                                                       ; +0x7c, 0x18013baa4\njnz     short loc_18013BAB2                                            ; +0x7e, 0x18013baa6\ntest    edx, edx                                                       ; +0x80, 0x18013baa8\njz      short loc_18013BAB2                                            ; +0x82, 0x18013baaa\nsub     rbx, 1                                                         ; +0x84, 0x18013baac\njnz     short loc_18013BA8C                                            ; +0x88, 0x18013bab0\ncmp     [rsp+48h+var_10], 0                                            ; +0x8a, 0x18013bab2\njz      short loc_18013BAC5                                            ; +0x8f, 0x18013bab7\nmov     rcx, [rsp+48h+var_28]                                          ; +0x91, 0x18013bab9\nand     dword ptr [rcx+3A8h], 0FFFFFFFDh                               ; +0x96, 0x18013babe\nmov     rbx, [rsp+48h+arg_0]                                           ; +0x9d, 0x18013bac5\nmov     rsi, [rsp+48h+arg_8]                                           ; +0xa2, 0x18013baca\nadd     rsp, 40h                                                       ; +0xa7, 0x18013bacf\npop     rdi                                                            ; +0xab, 0x18013bad3\nretn                                                                   ; +0xac, 0x18013bad4", "xrefs": ["_strnicoll_l @ 0x1801345f5", "_strnicmp @ 0x18013ba22", "<???> @ 0x180203968"], "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"}