Function at 0x4546c0
Capabilities:
Query environment variable
Set environment variable

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
sub esp, 0x318
mov ebx, dword [sym.imp.kernel32.dll_GetACP]
call ebx
cmp eax, 0x3a4
je 0x454710
call fcn.0057d110
mov dword [eax], 0x595e93
mov dword [eax + 4], 0x14d
call ebx
mov dword [esp], str.GetACP_____d__need_932_for_A_W_tests_n
mov dword [esp + 4], eax
call fcn.00452dc0
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret
mov dword [esp + 4], 0x596c78
mov dword [esp], str._rTMR
call dword [sym.imp.kernel32.dll_SetEnvironmentVariableW]
sub esp, 8
mov ebx, eax
call fcn.0057d110
mov dword [eax], 0x595e93
mov dword [eax + 4], 0x153
mov esi, dword fs:[0x18]
mov eax, dword [esi + 0x34]
mov dword [esp + 4], str.SetEnvironmentVariableW_failed__last_error__ld_n
mov dword [esp + 8], eax
xor eax, eax
cmp ebx, 1
sete al
mov dword [esp], eax
call fcn.00453360
mov eax, dword [sym.imp.kernel32.dll_GetEnvironmentVariableA]
mov dword [esi + 0x34], 0xdeadbeef
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], 0x596c70
mov dword [ebp - 0x310], eax
call eax
mov esi, dword [0x8f0770]
sub esp, 0xc
mov ebx, eax
call fcn.0057d110
mov ecx, dword [eax + 0x10]
mov dword [eax + 0x14], 1
lea edx, [ecx + ecx]
xor ecx, ecx
test esi, esi
setne cl
or edx, ecx
mov dword [eax + 0x10], edx
jmp 0x4547fe
call fcn.0057d110
mov dword [eax], 0x595e93
mov dword [eax + 4], 0x157
xor eax, eax
cmp ebx, 3
sete al
mov dword [esp + 0xc], ebx
mov dword [esp], eax
mov dword [esp + 8], 3
mov dword [esp + 4], str.expected_ret_size__d__got__ld_n
call fcn.00453360
call fcn.0057d110
shr dword [eax + 0x10], 1
call fcn.0057d110
mov edx, dword [eax + 0x14]
mov dword [eax + 0x14], 0
test edx, edx
jne 0x4547c0
call fcn.0057d110
lea ebx, [ebp - 0x30c]
mov dword [eax], 0x595e93
mov dword [eax + 4], 0x158
mov esi, dword fs:[0x18]
mov eax, dword [esi + 0x34]
mov dword [esp + 4], str.expected_last_error_0xdeadbeef__got__ld_n
mov dword [esp + 8], eax
xor eax, eax
cmp dword [esi + 0x34], 0xdeadbeef
sete al
mov dword [esp], eax
call fcn.00453360
mov dword [esi + 0x34], 0xdeadbeef
mov dword [ebp - 0x30c], 0x6f6f66
mov dword [esp + 8], 3
mov dword [esp + 4], ebx
mov dword [esp], 0x596c70
mov eax, dword [ebp - 0x310]
call eax
mov edi, dword [0x8f0770]
sub esp, 0xc
mov esi, eax
call fcn.0057d110
mov dword [ebp - 0x314], esi
mov ecx, dword [eax + 0x10]
mov dword [eax + 0x14], 1
lea edx, [ecx + ecx]
xor ecx, ecx
test edi, edi
setne cl
or edx, ecx
mov dword [eax + 0x10], edx
jmp 0x454913
call fcn.0057d110
mov dword [eax], 0x595e93
mov dword [eax + 4], 0x15d
mov eax, ebx
call fcn.00452760
mov esi, eax
mov eax, 0x596c6c
call fcn.00452760
mov dword [esp + 4], 0x596c6c
mov edi, eax
mov dword [esp], ebx
call dword [sym.imp.kernel32.dll_lstrcmpA]
sub esp, 8
test eax, eax
sete al
mov dword [esp + 0xc], esi
movzx eax, al
mov dword [esp + 8], edi
mov dword [esp], eax
mov dword [esp + 4], 0x5964f9
call fcn.00453360
call fcn.0057d110
shr dword [eax + 0x10], 1
call fcn.0057d110
mov edx, dword [eax + 0x14]
mov dword [eax + 0x14], 0
test edx, edx
jne 0x4548b0
mov edi, dword [0x8f0770]
mov esi, dword [ebp - 0x314]
call fcn.0057d110
mov ecx, dword [eax + 0x10]
mov dword [eax + 0x14], 1
lea edx, [ecx + ecx]
xor ecx, ecx
test edi, edi
setne cl
or edx, ecx
mov dword [eax + 0x10], edx
jmp 0x454996
call fcn.0057d110
mov dword [eax], 0x595e93
mov dword [eax + 4], 0x15e
xor eax, eax
cmp esi, 2
sete al
mov dword [esp + 0xc], esi
mov dword [esp], eax
mov dword [esp + 8], 2
mov dword [esp + 4], str.expected_ret_size__d__got__ld_n
call fcn.00453360
call fcn.0057d110
shr dword [eax + 0x10], 1
call fcn.0057d110
mov edx, dword [eax + 0x14]
mov dword [eax + 0x14], 0
test edx, edx
jne 0x454958
call fcn.0057d110
mov dword [eax], 0x595e93
mov dword [eax + 4], 0x15f
mov edi, dword fs:[0x18]
mov eax, dword [edi + 0x34]
mov dword [esp + 4], str.expected_last_error_0xdeadbeef__got__ld_n
mov dword [esp + 8], eax
xor eax, eax
cmp dword [edi + 0x34], 0xdeadbeef
sete al
mov dword [esp], eax
call fcn.00453360
mov dword [esp + 4], 0x596c6c
mov dword [esp], 0x596c70
call dword [sym.imp.kernel32.dll_SetEnvironmentVariableA]
sub esp, 8
mov esi, eax
call fcn.0057d110
mov dword [eax], 0x595e93
mov dword [eax + 4], 0x163
mov eax, dword [edi + 0x34]
mov dword [esp + 4], str.SetEnvironmentVariableW_failed__last_error__ld_n
mov dword [esp + 8], eax
xor eax, eax
cmp esi, 1
sete al
mov dword [esp], eax
call fcn.00453360
mov dword [edi + 0x34], 0xdeadbeef
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], 0x596c70
mov eax, dword [ebp - 0x310]
call eax
mov edi, dword [0x8f0770]
sub esp, 0xc
mov esi, eax
call fcn.0057d110
mov ecx, dword [eax + 0x10]
mov dword [eax + 0x14], 1
lea edx, [ecx + ecx]
xor ecx, ecx
test edi, edi
setne cl
or edx, ecx
mov dword [eax + 0x10], edx
jmp 0x454ac6
call fcn.0057d110
mov dword [eax], 0x595e93
mov dword [eax + 4], 0x167
xor eax, eax
cmp esi, 3
sete al
mov dword [esp + 0xc], esi
mov dword [esp], eax
mov dword [esp + 8], 3
mov dword [esp + 4], str.expected_ret_size__d__got__ld_n
call fcn.00453360
call fcn.0057d110
shr dword [eax + 0x10], 1
call fcn.0057d110
mov edx, dword [eax + 0x14]
mov dword [eax + 0x14], 0
test edx, edx
jne 0x454a88
call fcn.0057d110
mov dword [eax], 0x595e93
mov dword [eax + 4], 0x168
mov esi, dword fs:[0x18]
mov eax, dword [esi + 0x34]
mov dword [esp + 4], str.expected_last_error_0xdeadbeef__got__ld_n
mov dword [esp + 8], eax
xor eax, eax
cmp dword [esi + 0x34], 0xdeadbeef
sete al
mov dword [esp], eax
call fcn.00453360
mov dword [esi + 0x34], 0xdeadbeef
mov dword [ebp - 0x30c], 0x6f6f66
mov dword [esp + 8], 3
mov dword [esp + 4], ebx
mov dword [esp], 0x596c70
mov eax, dword [ebp - 0x310]
call eax
mov edi, dword [0x8f0770]
sub esp, 0xc
mov esi, eax
call fcn.0057d110
mov dword [ebp - 0x310], esi
mov ecx, dword [eax + 0x10]
mov dword [eax + 0x14], 1
lea edx, [ecx + ecx]
xor ecx, ecx
test edi, edi
setne cl
or edx, ecx
mov dword [eax + 0x10], edx
jmp 0x454bdb
call fcn.0057d110
mov dword [eax], 0x595e93
mov dword [eax + 4], 0x16d
mov eax, ebx
call fcn.00452760
mov esi, eax
mov eax, 0x596c6c
call fcn.00452760
mov dword [esp + 4], 0x596c6c
mov edi, eax
mov dword [esp], ebx
call dword [sym.imp.kernel32.dll_lstrcmpA]
sub esp, 8
test eax, eax
sete al
mov dword [esp + 0xc], esi
movzx eax, al
mov dword [esp + 8], edi
mov dword [esp], eax
mov dword [esp + 4], 0x5964f9
call fcn.00453360
call fcn.0057d110
shr dword [eax + 0x10], 1
call fcn.0057d110
mov edx, dword [eax + 0x14]
mov dword [eax + 0x14], 0
test edx, edx
jne 0x454b78
mov ebx, dword [0x8f0770]
mov esi, dword [ebp - 0x310]
call fcn.0057d110
mov ecx, dword [eax + 0x10]
mov dword [eax + 0x14], 1
lea edx, [ecx + ecx]
xor ecx, ecx
test ebx, ebx
setne cl
or edx, ecx
mov dword [eax + 0x10], edx
jmp 0x454c5e
call fcn.0057d110
mov dword [eax], 0x595e93
mov dword [eax + 4], 0x16e
xor eax, eax
cmp esi, 2
sete al
mov dword [esp + 0xc], esi
mov dword [esp], eax
mov dword [esp + 8], 2
mov dword [esp + 4], str.expected_ret_size__d__got__ld_n
call fcn.00453360
call fcn.0057d110
shr dword [eax + 0x10], 1
call fcn.0057d110
mov edx, dword [eax + 0x14]
mov dword [eax + 0x14], 0
test edx, edx
jne 0x454c20
call fcn.0057d110
mov dword [eax], 0x595e93
mov dword [eax + 4], 0x16f
mov ebx, dword fs:[0x18]
mov eax, dword [ebx + 0x34]
mov dword [esp + 4], str.expected_last_error_0xdeadbeef__got__ld_n
mov dword [esp + 8], eax
xor eax, eax
cmp dword [ebx + 0x34], 0xdeadbeef
sete al
mov dword [esp], eax
call fcn.00453360
mov dword [ebx + 0x34], 0xdeadbeef
mov esi, dword [sym.imp.kernel32.dll_GetEnvironmentVariableW]
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], str._rTMR
call esi
sub esp, 0xc
mov edi, eax
call fcn.0057d110
mov dword [eax], 0x595e93
mov dword [eax + 4], 0x173
xor eax, eax
cmp edi, 2
sete al
mov dword [esp + 0xc], edi
mov dword [esp], eax
mov dword [esp + 8], 2
mov dword [esp + 4], str.expected_ret_size__d__got__ld_n
call fcn.00453360
call fcn.0057d110
mov dword [eax], 0x595e93
mov dword [eax + 4], 0x174
mov eax, dword [ebx + 0x34]
mov dword [esp + 4], str.expected_last_error_0xdeadbeef__got__ld_n
mov dword [esp + 8], eax
xor eax, eax
cmp dword [ebx + 0x34], 0xdeadbeef
lea ebx, [ebp - 0x20c]
sete al
mov dword [esp], eax
call fcn.00453360
xor eax, eax
lea esi, [esi]
nop
movzx edx, word [eax + 0x59650e]
mov word [ebx + eax], dx
add eax, 2
test dx, dx
jne 0x454d50
mov edi, dword fs:[0x18]
mov dword [edi + 0x34], 0xdeadbeef
mov dword [esp + 4], ebx
mov dword [esp + 8], 2
mov dword [esp], str._rTMR
call esi
sub esp, 0xc
mov esi, eax
call fcn.0057d110
mov dword [eax], 0x595e93
mov dword [eax + 4], 0x179
xor eax, eax
cmp esi, 1
sete al
mov dword [esp + 0xc], esi
mov dword [esp], eax
mov dword [esp + 8], 1
mov dword [esp + 4], str.expected_ret_size__d__got__ld_n
call fcn.00453360
call fcn.0057d110
mov dword [eax], 0x595e93
mov dword [eax + 4], 0x17a
mov eax, dword [edi + 0x34]
mov dword [esp + 4], str.expected_last_error_0xdeadbeef__got__ld_n
mov dword [esp + 8], eax
xor eax, eax
cmp dword [edi + 0x34], 0xdeadbeef
sete al
mov dword [esp], eax
call fcn.00453360
call fcn.0057d110
mov dword [eax], 0x595e93
mov dword [eax + 4], 0x17b
mov eax, ebx
call fcn.00452970
mov edi, eax
mov eax, 0x596c78
call fcn.00452970
mov dword [esp], ebx
mov esi, eax
mov dword [esp + 4], 0x596c78
call dword [sym.imp.kernel32.dll_lstrcmpW]
sub esp, 8
test eax, eax
sete al
mov dword [esp + 0xc], edi
movzx eax, al
mov dword [esp + 8], esi
mov dword [esp + 4], 0x5964f9
mov dword [esp], eax
call fcn.00453360
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret