{"type": "func", "start": 6443765724, "end": 6443766131, "name": "__acrt_SetEnvironmentVariableA", "pseudocode": "// \n// __acrt_SetEnvironmentVariableA from 0x180140fdc to 0x180141173 (407 bytes)\n// \n// 2 xrefs:\n// > common_set_variable_in_environment_nolock<char> @ 0x18013b05a\n// > <???> @ 0x180203c74\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\n__int64 __fastcall _acrt_SetEnvironmentVariableA(_BYTE *a1, _BYTE *a2)\n{\n  WCHAR *v4; // rdi\n  unsigned int v5; // ebx\n  unsigned int v6; // r8d\n  int v7; // eax\n  unsigned int v8; // ebx\n  __int64 v10; // [rsp+28h] [rbp-39h] BYREF\n  __int64 v11; // [rsp+30h] [rbp-31h]\n  char v12; // [rsp+40h] [rbp-21h]\n  _QWORD v13[2]; // [rsp+48h] [rbp-19h] BYREF\n  LPCWSTR lpValue; // [rsp+58h] [rbp-9h]\n  __int64 v15; // [rsp+60h] [rbp-1h]\n  __int64 v16; // [rsp+68h] [rbp+7h]\n  char v17; // [rsp+70h] [rbp+Fh]\n  _QWORD v18[2]; // [rsp+78h] [rbp+17h] BYREF\n  LPCWSTR lpName; // [rsp+88h] [rbp+27h]\n  __int64 v20; // [rsp+90h] [rbp+2Fh]\n  __int64 v21; // [rsp+98h] [rbp+37h]\n  char v22; // [rsp+A0h] [rbp+3Fh]\n\n  v18[0] = 0;\n  v18[1] = 0;\n  lpName = nullptr;\n  v20 = 0;\n  v4 = nullptr;\n  v21 = 0;\n  v22 = 0;\n  v13[0] = 0;\n  v13[1] = 0;\n  lpValue = nullptr;\n  v15 = 0;\n  v16 = 0;\n  v17 = 0;\n  _LocaleUpdate::_LocaleUpdate((_LocaleUpdate *)&v10, nullptr);\n  v5 = 65001;\n  if ( *(_DWORD *)(v11 + 12) == 65001 )\n  {\n    if ( v12 )\n      *(_DWORD *)(v10 + 936) &= ~2u;\n    v6 = 65001;\n  }\n  else if ( (unsigned int)_acrt_AreFileApisANSI() )\n  {\n    if ( v12 )\n      *(_DWORD *)(v10 + 936) &= ~2u;\n    v6 = 0;\n  }\n  else\n  {\n    if ( v12 )\n      *(_DWORD *)(v10 + 936) &= ~2u;\n    v6 = 1;\n  }\n  if ( (unsigned int)__acrt_mbs_to_wcs_cp<__crt_win32_buffer_internal_dynamic_resizing>(a1, (__int64)v18, v6) )\n    goto LABEL_25;\n  _LocaleUpdate::_LocaleUpdate((_LocaleUpdate *)&v10, nullptr);\n  if ( *(_DWORD *)(v11 + 12) == 65001 )\n  {\n    if ( v12 )\n      *(_DWORD *)(v10 + 936) &= ~2u;\n  }\n  else if ( (unsigned int)_acrt_AreFileApisANSI() )\n  {\n    if ( v12 )\n      *(_DWORD *)(v10 + 936) &= ~2u;\n    v5 = 0;\n  }\n  else\n  {\n    if ( v12 )\n      *(_DWORD *)(v10 + 936) &= ~2u;\n    v5 = 1;\n  }\n  v7 = __acrt_mbs_to_wcs_cp<__crt_win32_buffer_internal_dynamic_resizing>(a2, (__int64)v13, v5);\n  v4 = (WCHAR *)lpValue;\n  if ( v7 )\nLABEL_25:\n    v8 = 0;\n  else\n    v8 = SetEnvironmentVariableW(lpName, lpValue);\n  if ( v17 )\n    free_base(v4);\n  if ( v22 )\n    free_base((void *)lpName);\n  return v8;\n}", "assembly": "; \n; __acrt_SetEnvironmentVariableA from 0x180140fdc to 0x180141173 (407 bytes)\n; \n; 2 xrefs:\n; > common_set_variable_in_environment_nolock<char> @ 0x18013b05a\n; > <???> @ 0x180203c74\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, 0x180140fdc\nmov     [rax+8], rbx                                                   ; +0x3, 0x180140fdf\nmov     [rax+10h], rsi                                                 ; +0x7, 0x180140fe3\nmov     [rax+18h], rdi                                                 ; +0xb, 0x180140fe7\npush    rbp                                                            ; +0xf, 0x180140feb\npush    r14                                                            ; +0x10, 0x180140fec\npush    r15                                                            ; +0x12, 0x180140fee\nlea     rbp, [rax-5Fh]                                                 ; +0x14, 0x180140ff0\nsub     rsp, 0A0h                                                      ; +0x18, 0x180140ff4\nxor     r15d, r15d                                                     ; +0x1f, 0x180140ffb\nmov     r14, rdx                                                       ; +0x22, 0x180140ffe\nmov     rsi, rcx                                                       ; +0x25, 0x180141001\nmov     [rbp+57h+var_40], r15                                          ; +0x28, 0x180141004\nxor     edx, edx; struct __crt_locale_pointers *                       ; +0x2c, 0x180141008\nmov     [rbp+57h+var_38], r15                                          ; +0x2e, 0x18014100a\nlea     rcx, [rbp+57h+var_90]; this                                    ; +0x32, 0x18014100e\nmov     [rbp+57h+lpName], r15                                          ; +0x36, 0x180141012\nmov     [rbp+57h+var_28], r15                                          ; +0x3a, 0x180141016\nmov     edi, r15d                                                      ; +0x3e, 0x18014101a\nmov     [rbp+57h+var_20], r15                                          ; +0x41, 0x18014101d\nmov     [rbp+57h+var_18], r15b                                         ; +0x45, 0x180141021\nmov     [rbp+57h+var_70], r15                                          ; +0x49, 0x180141025\nmov     [rbp+57h+var_68], r15                                          ; +0x4d, 0x180141029\nmov     [rbp+57h+lpValue], r15                                         ; +0x51, 0x18014102d\nmov     [rbp+57h+var_58], r15                                          ; +0x55, 0x180141031\nmov     [rbp+57h+var_50], r15                                          ; +0x59, 0x180141035\nmov     [rbp+57h+var_48], r15b                                         ; +0x5d, 0x180141039\ncall    ??0_LocaleUpdate@@QEAA@QEAU__crt_locale_pointers@@@Z           ; +0x61, 0x18014103d\nmov     rax, [rbp+57h+var_88]                                          ; +0x66, 0x180141042\nmov     ebx, 0FDE9h                                                    ; +0x6a, 0x180141046\ncmp     [rax+0Ch], ebx                                                 ; +0x6f, 0x18014104b\njnz     short loc_180141066                                            ; +0x72, 0x18014104e\ncmp     [rbp+57h+var_78], r15b                                         ; +0x74, 0x180141050\njz      short loc_180141061                                            ; +0x78, 0x180141054\nmov     rax, [rbp+57h+var_90]                                          ; +0x7a, 0x180141056\nand     dword ptr [rax+3A8h], 0FFFFFFFDh                               ; +0x7e, 0x18014105a\nmov     r8d, ebx                                                       ; +0x85, 0x180141061\njmp     short loc_18014109C                                            ; +0x88, 0x180141064\ncall    __acrt_AreFileApisANSI                                         ; +0x8a, 0x180141066\ntest    eax, eax                                                       ; +0x8f, 0x18014106b\njnz     short loc_180141088                                            ; +0x91, 0x18014106d\ncmp     [rbp+57h+var_78], r15b                                         ; +0x93, 0x18014106f\njz      short loc_180141080                                            ; +0x97, 0x180141073\nmov     rax, [rbp+57h+var_90]                                          ; +0x99, 0x180141075\nand     dword ptr [rax+3A8h], 0FFFFFFFDh                               ; +0x9d, 0x180141079\nmov     r8d, 1                                                         ; +0xa4, 0x180141080\njmp     short loc_18014109C                                            ; +0xaa, 0x180141086\ncmp     [rbp+57h+var_78], r15b                                         ; +0xac, 0x180141088\njz      short loc_180141099                                            ; +0xb0, 0x18014108c\nmov     rax, [rbp+57h+var_90]                                          ; +0xb2, 0x18014108e\nand     dword ptr [rax+3A8h], 0FFFFFFFDh                               ; +0xb6, 0x180141092\nmov     r8d, r15d                                                      ; +0xbd, 0x180141099\nlea     rdx, [rbp+57h+var_40]                                          ; +0xc0, 0x18014109c\nmov     rcx, rsi                                                       ; +0xc4, 0x1801410a0\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 ; +0xc7, 0x1801410a3\ntest    eax, eax                                                       ; +0xcc, 0x1801410a8\njnz     loc_180141134                                                  ; +0xce, 0x1801410aa\nxor     edx, edx; struct __crt_locale_pointers *                       ; +0xd4, 0x1801410b0\nlea     rcx, [rbp+57h+var_90]; this                                    ; +0xd6, 0x1801410b2\ncall    ??0_LocaleUpdate@@QEAA@QEAU__crt_locale_pointers@@@Z           ; +0xda, 0x1801410b6\nmov     rax, [rbp+57h+var_88]                                          ; +0xdf, 0x1801410bb\ncmp     [rax+0Ch], ebx                                                 ; +0xe3, 0x1801410bf\njnz     short loc_1801410D7                                            ; +0xe6, 0x1801410c2\ncmp     [rbp+57h+var_78], r15b                                         ; +0xe8, 0x1801410c4\njz      short loc_18014110C                                            ; +0xec, 0x1801410c8\nmov     rax, [rbp+57h+var_90]                                          ; +0xee, 0x1801410ca\nand     dword ptr [rax+3A8h], 0FFFFFFFDh                               ; +0xf2, 0x1801410ce\njmp     short loc_18014110C                                            ; +0xf9, 0x1801410d5\ncall    __acrt_AreFileApisANSI                                         ; +0xfb, 0x1801410d7\ntest    eax, eax                                                       ; +0x100, 0x1801410dc\njnz     short loc_1801410F8                                            ; +0x102, 0x1801410de\ncmp     [rbp+57h+var_78], r15b                                         ; +0x104, 0x1801410e0\njz      short loc_1801410F1                                            ; +0x108, 0x1801410e4\nmov     rax, [rbp+57h+var_90]                                          ; +0x10a, 0x1801410e6\nand     dword ptr [rax+3A8h], 0FFFFFFFDh                               ; +0x10e, 0x1801410ea\nmov     ebx, 1                                                         ; +0x115, 0x1801410f1\njmp     short loc_18014110C                                            ; +0x11a, 0x1801410f6\ncmp     [rbp+57h+var_78], r15b                                         ; +0x11c, 0x1801410f8\njz      short loc_180141109                                            ; +0x120, 0x1801410fc\nmov     rax, [rbp+57h+var_90]                                          ; +0x122, 0x1801410fe\nand     dword ptr [rax+3A8h], 0FFFFFFFDh                               ; +0x126, 0x180141102\nmov     ebx, r15d                                                      ; +0x12d, 0x180141109\nmov     r8d, ebx                                                       ; +0x130, 0x18014110c\nlea     rdx, [rbp+57h+var_70]                                          ; +0x133, 0x18014110f\nmov     rcx, r14                                                       ; +0x137, 0x180141113\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 ; +0x13a, 0x180141116\nmov     rdi, [rbp+57h+lpValue]                                         ; +0x13f, 0x18014111b\ntest    eax, eax                                                       ; +0x143, 0x18014111f\njnz     short loc_180141134                                            ; +0x145, 0x180141121\nmov     rcx, [rbp+57h+lpName]; lpName                                  ; +0x147, 0x180141123\nmov     rdx, rdi; lpValue                                              ; +0x14b, 0x180141127\ncall    cs:SetEnvironmentVariableW                                     ; +0x14e, 0x18014112a\nmov     ebx, eax                                                       ; +0x154, 0x180141130\njmp     short loc_180141137                                            ; +0x156, 0x180141132\nmov     ebx, r15d                                                      ; +0x158, 0x180141134\ncmp     [rbp+57h+var_48], r15b                                         ; +0x15b, 0x180141137\njz      short loc_180141145                                            ; +0x15f, 0x18014113b\nmov     rcx, rdi; Block                                                ; +0x161, 0x18014113d\ncall    _free_base                                                     ; +0x164, 0x180141140\ncmp     [rbp+57h+var_18], r15b                                         ; +0x169, 0x180141145\njz      short loc_180141154                                            ; +0x16d, 0x180141149\nmov     rcx, [rbp+57h+lpName]; Block                                   ; +0x16f, 0x18014114b\ncall    _free_base                                                     ; +0x173, 0x18014114f\nlea     r11, [rsp+0B0h+var_10]                                         ; +0x178, 0x180141154\nmov     eax, ebx                                                       ; +0x180, 0x18014115c\nmov     rbx, [r11+20h]                                                 ; +0x182, 0x18014115e\nmov     rsi, [r11+28h]                                                 ; +0x186, 0x180141162\nmov     rdi, [r11+30h]                                                 ; +0x18a, 0x180141166\nmov     rsp, r11                                                       ; +0x18e, 0x18014116a\npop     r15                                                            ; +0x191, 0x18014116d\npop     r14                                                            ; +0x193, 0x18014116f\npop     rbp                                                            ; +0x195, 0x180141171\nretn                                                                   ; +0x196, 0x180141172", "xrefs": ["common_set_variable_in_environment_nolock<char> @ 0x18013b05a", "<???> @ 0x180203c74"], "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"}