; ; __dcrt_get_narrow_environment_from_os from 0x18013ac04 to 0x18013ad05 (257 bytes) ; ; 2 xrefs: ; > common_initialize_environment_nolock @ 0x180131e52 ; > @ 0x1802038b4 ; ; This function is hookable on this platform! ; ; Using BromaIDA 8.0.0 @ https:;github.com/Stazzical/BromaIDA ; Using bindings at commit ba9f177b at Thu Jul 16 22:52:06 2026 from https:;github.com/geode-sdk/bindings ; mov rax, rsp ; +0x0, 0x18013ac04 mov [rax+8], rbx ; +0x3, 0x18013ac07 mov [rax+10h], rbp ; +0x7, 0x18013ac0b mov [rax+18h], rsi ; +0xb, 0x18013ac0f mov [rax+20h], rdi ; +0xf, 0x18013ac13 push r14 ; +0x13, 0x18013ac17 sub rsp, 40h ; +0x15, 0x18013ac19 call cs:GetEnvironmentStringsW ; +0x19, 0x18013ac1d xor r14d, r14d ; +0x1f, 0x18013ac23 mov rbx, rax ; +0x22, 0x18013ac26 test rax, rax ; +0x25, 0x18013ac29 jz loc_18013ACD6 ; +0x28, 0x18013ac2c mov rsi, rax ; +0x2e, 0x18013ac32 cmp [rax], r14w ; +0x31, 0x18013ac35 jz short loc_18013AC57 ; +0x35, 0x18013ac39 or rax, 0FFFFFFFFFFFFFFFFh ; +0x37, 0x18013ac3b inc rax ; +0x3b, 0x18013ac3f cmp [rsi+rax*2], r14w ; +0x3e, 0x18013ac42 jnz short loc_18013AC3F ; +0x43, 0x18013ac47 lea rsi, [rsi+rax*2] ; +0x45, 0x18013ac49 add rsi, 2 ; +0x49, 0x18013ac4d cmp [rsi], r14w ; +0x4d, 0x18013ac51 jnz short loc_18013AC3B ; +0x51, 0x18013ac55 mov [rsp+48h+var_10], r14 ; +0x53, 0x18013ac57 sub rsi, rbx ; +0x58, 0x18013ac5c mov [rsp+48h+var_18], r14 ; +0x5b, 0x18013ac5f add rsi, 2 ; +0x60, 0x18013ac64 sar rsi, 1 ; +0x64, 0x18013ac68 mov r8, rbx ; +0x67, 0x18013ac6b mov r9d, esi ; +0x6a, 0x18013ac6e mov [rsp+48h+var_20], r14d ; +0x6d, 0x18013ac71 xor edx, edx ; +0x72, 0x18013ac76 mov [rsp+48h+var_28], r14 ; +0x74, 0x18013ac78 xor ecx, ecx ; +0x79, 0x18013ac7d call __acrt_WideCharToMultiByte ; +0x7b, 0x18013ac7f movsxd rbp, eax ; +0x80, 0x18013ac84 test eax, eax ; +0x83, 0x18013ac87 jz short loc_18013ACD6 ; +0x85, 0x18013ac89 mov rcx, rbp; Size ; +0x87, 0x18013ac8b call _malloc_base ; +0x8a, 0x18013ac8e mov rdi, rax ; +0x8f, 0x18013ac93 test rax, rax ; +0x92, 0x18013ac96 jz short loc_18013ACC9 ; +0x95, 0x18013ac99 mov [rsp+48h+var_10], r14 ; +0x97, 0x18013ac9b mov r9d, esi ; +0x9c, 0x18013aca0 mov [rsp+48h+var_18], r14 ; +0x9f, 0x18013aca3 mov r8, rbx ; +0xa4, 0x18013aca8 mov [rsp+48h+var_20], ebp ; +0xa7, 0x18013acab xor edx, edx ; +0xab, 0x18013acaf xor ecx, ecx ; +0xad, 0x18013acb1 mov [rsp+48h+var_28], rax ; +0xaf, 0x18013acb3 call __acrt_WideCharToMultiByte ; +0xb4, 0x18013acb8 test eax, eax ; +0xb9, 0x18013acbd jz short loc_18013ACC9 ; +0xbb, 0x18013acbf mov rsi, rdi ; +0xbd, 0x18013acc1 mov rdi, r14 ; +0xc0, 0x18013acc4 jmp short loc_18013ACCC ; +0xc3, 0x18013acc7 mov rsi, r14 ; +0xc5, 0x18013acc9 mov rcx, rdi; Block ; +0xc8, 0x18013accc call _free_base ; +0xcb, 0x18013accf jmp short loc_18013ACD9 ; +0xd0, 0x18013acd4 mov rsi, r14 ; +0xd2, 0x18013acd6 test rbx, rbx ; +0xd5, 0x18013acd9 jz short loc_18013ACE7 ; +0xd8, 0x18013acdc mov rcx, rbx; penv ; +0xda, 0x18013acde call cs:FreeEnvironmentStringsW ; +0xdd, 0x18013ace1 mov rbx, [rsp+48h+arg_0] ; +0xe3, 0x18013ace7 mov rax, rsi ; +0xe8, 0x18013acec mov rsi, [rsp+48h+arg_10] ; +0xeb, 0x18013acef mov rbp, [rsp+48h+arg_8] ; +0xf0, 0x18013acf4 mov rdi, [rsp+48h+arg_18] ; +0xf5, 0x18013acf9 add rsp, 40h ; +0xfa, 0x18013acfe pop r14 ; +0xfe, 0x18013ad02 retn ; +0x100, 0x18013ad04