{"type": "func", "start": 6443666724, "end": 6443666861, "name": "common_getenv_nolock<char>", "pseudocode": "// \n// common_getenv_nolock<char> from 0x180128d24 to 0x180128dad (137 bytes)\n// \n// 2 xrefs:\n// > common_getenv<char> @ 0x180128d0a\n// > <???> @ 0x180202a38\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\nconst char *__fastcall common_getenv_nolock<char>(char *String2)\n{\n  const char **v2; // rax\n  const char **v3; // rdi\n  size_t v4; // rbx\n  const char *i; // rax\n  unsigned __int64 v6; // rcx\n\n  v2 = (const char **)unknown_libname_64();\n  v3 = v2;\n  if ( v2 && String2 )\n  {\n    v4 = -1;\n    do\n      ++v4;\n    while ( String2[v4] );\n    for ( i = *v2; i; i = *v3 )\n    {\n      v6 = -1;\n      do\n        ++v6;\n      while ( i[v6] );\n      if ( v6 > v4 && i[v4] == 61 && !strnicoll(i, String2, v4) )\n        return &(*v3)[v4 + 1];\n      ++v3;\n    }\n  }\n  return nullptr;\n}", "assembly": "; \n; common_getenv_nolock<char> from 0x180128d24 to 0x180128dad (137 bytes)\n; \n; 2 xrefs:\n; > common_getenv<char> @ 0x180128d0a\n; > <???> @ 0x180202a38\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, 0x180128d24\nmov     [rsp+arg_8], rsi                                               ; +0x5, 0x180128d29\npush    rdi                                                            ; +0xa, 0x180128d2e\nsub     rsp, 20h                                                       ; +0xb, 0x180128d2f\nmov     rsi, rcx                                                       ; +0xf, 0x180128d33\ncall    unknown_libname_64; Microsoft VisualC 64bit universal runtime  ; +0x12, 0x180128d36\nmov     rdi, rax                                                       ; +0x17, 0x180128d3b\ntest    rax, rax                                                       ; +0x1a, 0x180128d3e\njz      short loc_180128D9B                                            ; +0x1d, 0x180128d41\ntest    rsi, rsi                                                       ; +0x1f, 0x180128d43\njz      short loc_180128D9B                                            ; +0x22, 0x180128d46\nor      rbx, 0FFFFFFFFFFFFFFFFh                                        ; +0x24, 0x180128d48\ninc     rbx                                                            ; +0x28, 0x180128d4c\ncmp     byte ptr [rsi+rbx], 0                                          ; +0x2b, 0x180128d4f\njnz     short loc_180128D4C                                            ; +0x2f, 0x180128d53\nmov     rax, [rax]                                                     ; +0x31, 0x180128d55\ntest    rax, rax                                                       ; +0x34, 0x180128d58\njz      short loc_180128D9B                                            ; +0x37, 0x180128d5b\nor      rcx, 0FFFFFFFFFFFFFFFFh                                        ; +0x39, 0x180128d5d\ninc     rcx                                                            ; +0x3d, 0x180128d61\ncmp     byte ptr [rax+rcx], 0                                          ; +0x40, 0x180128d64\njnz     short loc_180128D61                                            ; +0x44, 0x180128d68\ncmp     rcx, rbx                                                       ; +0x46, 0x180128d6a\njbe     short loc_180128D87                                            ; +0x49, 0x180128d6d\ncmp     byte ptr [rax+rbx], 3Dh ; '='                                  ; +0x4b, 0x180128d6f\njnz     short loc_180128D87                                            ; +0x4f, 0x180128d73\nmov     r8, rbx; MaxCount                                              ; +0x51, 0x180128d75\nmov     rdx, rsi; String2                                              ; +0x54, 0x180128d78\nmov     rcx, rax; String1                                              ; +0x57, 0x180128d7b\ncall    _strnicoll                                                     ; +0x5a, 0x180128d7e\ntest    eax, eax                                                       ; +0x5f, 0x180128d83\njz      short loc_180128D90                                            ; +0x61, 0x180128d85\nadd     rdi, 8                                                         ; +0x63, 0x180128d87\nmov     rax, [rdi]                                                     ; +0x67, 0x180128d8b\njmp     short loc_180128D58                                            ; +0x6a, 0x180128d8e\nmov     rax, [rdi]                                                     ; +0x6c, 0x180128d90\ninc     rax                                                            ; +0x6f, 0x180128d93\nadd     rax, rbx                                                       ; +0x72, 0x180128d96\njmp     short loc_180128D9D                                            ; +0x75, 0x180128d99\nxor     eax, eax                                                       ; +0x77, 0x180128d9b\nmov     rbx, [rsp+28h+arg_0]                                           ; +0x79, 0x180128d9d\nmov     rsi, [rsp+28h+arg_8]                                           ; +0x7e, 0x180128da2\nadd     rsp, 20h                                                       ; +0x83, 0x180128da7\npop     rdi                                                            ; +0x87, 0x180128dab\nretn                                                                   ; +0x88, 0x180128dac", "xrefs": ["common_getenv<char> @ 0x180128d0a", "<???> @ 0x180202a38"], "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"}