Function at 0x403a10
Capabilities:
Query environment variable

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffbd0
push esi
push edi
push ebx
mov dword [ebp - 4], 0
mov esi, dword [ebp + 8]
push 0x400
push 0x411d4c
push 6
push dword [0x407472]
call sub.user32.dll_LoadStringA
push 0x411d4c
call fcn.00401ce6
push dword [esi + 0x401]
push 0
lea eax, [esi + 1]
push eax
call fcn.00401e5e
or eax, eax
je 0x403ddc
push 4
push 0x1000
push 0x2000000
push 0
call sub.kernel32.dll_VirtualAlloc
mov dword [ebp - 8], eax
mov dword [ebp - 0x10], eax
push 4
push 0x1000
push 0x2000000
push 0
call sub.kernel32.dll_VirtualAlloc
mov dword [ebp - 0xc], eax
mov eax, dword [0x407ce8]
cmp word [eax], 0xfeff
jne 0x403aea
add eax, 2
mov ecx, dword [0x407ce4]
sub ecx, 2
shr ecx, 1
push 0
push 0
push 0x2000000
push dword [ebp - 8]
push ecx
push eax
push 0
push 0
call sub.kernel32.dll_WideCharToMultiByte
push 0x400
push 0x41214c
push 0x18
push dword [0x407472]
call sub.user32.dll_LoadStringA
push 0x41214c
call fcn.00401ce6
mov dword [ebp - 0x30], 1
jmp 0x403b05
push dword [0x407ce4]
push dword [0x407ce8]
push dword [ebp - 8]
call sub.kernel32.dll_RtlMoveMemory
mov dword [ebp - 0x30], 0
add esi, 0x408
jmp 0x403d37
push dword [esi]
pop dword [ebp - 0x1c]
add esi, 8
mov dword [ebp - 0x20], esi
push dword [esi - 4]
pop dword [ebp - 0x28]
add esi, dword [esi - 4]
add esi, 5
mov dword [ebp - 0x24], esi
push dword [esi - 4]
pop dword [ebp - 0x2c]
push dword [ebp - 0x10]
call fcn.00405050
mov dword [ebp - 0x14], eax
mov esi, dword [ebp - 8]
mov edi, dword [ebp - 0xc]
push dword [ebp - 0x24]
test dword [ebp - 0x1c], 0x80
je 0x403b74
push 0x1000
push 0x40854c
push dword [ebp - 0x20]
call sub.kernel32.dll_ExpandEnvironmentStringsA
push 0x40854c
call fcn.00405050
mov dword [ebp - 0x28], eax
push 0x40854c
pop dword [ebp - 0x20]
test dword [ebp - 0x1c], 0x100
je 0x403ba4
push 0x1000
push 0x40954c
push dword [ebp - 0x24]
call sub.kernel32.dll_ExpandEnvironmentStringsA
push 0x40954c
call fcn.00405050
mov dword [ebp - 0x2c], eax
push 0x40954c
pop dword [ebp - 0x24]
jmp 0x403d0f
test dword [ebp - 0x1c], 1
je 0x403bc0
push dword [ebp - 0x28]
push esi
push dword [ebp - 0x20]
call fcn.00405510
jmp 0x403bcc
push dword [ebp - 0x28]
push esi
push dword [ebp - 0x20]
call fcn.00405010
or eax, eax
jne 0x403c1c
test dword [ebp - 0x1c], 2
je 0x403c1c
mov dword [ebp - 0x18], 0
cmp esi, dword [ebp - 0x10]
je 0x403bfe
mov eax, esi
dec eax
push str.______________.:_____r_n_t
push eax
call fcn.00405530
or eax, eax
jne 0x403bfe
mov dword [ebp - 0x18], 1
mov eax, esi
add eax, dword [ebp - 0x28]
push str.______________.:_____r_n_t
push eax
call fcn.00405530
or eax, eax
jne 0x403c19
mov dword [ebp - 0x18], 1
mov eax, dword [ebp - 0x18]
or eax, eax
jne 0x403d0b
test dword [ebp - 0x1c], 0x40
je 0x403c7f
lea eax, [ebp - 0x430]
cmp dword [0x41414c], eax
je 0x403c7f
push dword [ebp - 0x24]
pop dword [0x41414c]
lea eax, [ebp - 0x430]
push eax
push 0x4041e0
push dword [0x407476]
push 3
push dword [0x407472]
call sub.user32.dll_DialogBoxParamA
or eax, eax
je 0x403c7f
lea eax, [ebp - 0x430]
push eax
call fcn.00405050
mov dword [ebp - 0x2c], eax
lea eax, [ebp - 0x430]
mov dword [ebp - 0x24], eax
test dword [ebp - 0x1c], 8
je 0x403c8d
add esi, dword [ebp - 0x28]
jmp 0x403cfc
test dword [ebp - 0x1c], 4
je 0x403caa
push dword [ebp - 0x2c]
push dword [ebp - 0x24]
push edi
call sub.kernel32.dll_RtlMoveMemory
add edi, dword [ebp - 0x2c]
add esi, dword [ebp - 0x28]
jmp 0x403cfc
test dword [ebp - 0x1c], 0x10
je 0x403cd4
push dword [ebp - 0x28]
push esi
push edi
call sub.kernel32.dll_RtlMoveMemory
add edi, dword [ebp - 0x28]
add esi, dword [ebp - 0x28]
push dword [ebp - 0x2c]
push dword [ebp - 0x24]
push edi
call sub.kernel32.dll_RtlMoveMemory
add edi, dword [ebp - 0x2c]
jmp 0x403cfc
test dword [ebp - 0x1c], 0x20
je 0x403cfc
push dword [ebp - 0x2c]
push dword [ebp - 0x24]
push edi
call sub.kernel32.dll_RtlMoveMemory
add edi, dword [ebp - 0x2c]
push dword [ebp - 0x28]
push esi
push edi
call sub.kernel32.dll_RtlMoveMemory
add edi, dword [ebp - 0x28]
add esi, dword [ebp - 0x28]
mov eax, dword [ebp - 0x28]
sub dword [ebp - 0x14], eax
mov dword [ebp - 4], 1
jmp 0x403d0f
movsb byte es:[edi], byte [esi]
dec dword [ebp - 0x14]
cmp dword [ebp - 0x14], 0
jne 0x403ba9
pop dword [ebp - 0x24]
push dword [ebp - 8]
push dword [ebp - 0xc]
pop dword [ebp - 8]
pop dword [ebp - 0xc]
push dword [ebp - 8]
pop dword [ebp - 0x10]
mov esi, dword [ebp - 0x24]
add esi, dword [esi - 4]
add esi, 1
cmp dword [esi + 4], 0
jne 0x403b10
push dword [ebp - 4]
call fcn.004021fd
cmp dword [ebp - 0x30], 1
jne 0x403d92
mov eax, dword [ebp - 0x10]
cmp dword [ebp - 8], eax
jne 0x403d5c
mov ebx, dword [ebp - 0xc]
jmp 0x403d5f
mov ebx, dword [ebp - 8]
mov word [ebx], 0xfeff
add ebx, 2
push 0x2000000
push ebx
push 0xffffffffffffffff
push dword [ebp - 0x10]
push 0
push 0
call sub.kernel32.dll_MultiByteToWideChar
sub ebx, 2
mov dword [ebp - 0x10], ebx
push dword [ebp - 0x10]
call sub.kernel32.dll_lstrlenW
shl eax, 1
mov dword [0x407cf0], eax
jmp 0x403d9f
push dword [ebp - 0x10]
call fcn.00405050
mov dword [0x407cf0], eax
push dword [0x407cf0]
push dword [ebp - 0x10]
push 0x4074dc
call fcn.00405098
or eax, eax
je 0x403db8
jmp 0x403de4
push 0x4000
push 0x2000000
push dword [ebp - 8]
call sub.kernel32.dll_VirtualFree
push 0x4000
push 0x2000000
push dword [ebp - 0xc]
call sub.kernel32.dll_VirtualFree
push dword [ebp - 4]
call fcn.004021fd
cmp dword [ebp - 4], 0
jne 0x403e08
push 0x400
push 0x41254c
push 0xa
push dword [0x407472]
call sub.user32.dll_LoadStringA
mov eax, 0x41254c
jmp 0x403e24
push 0x400
push 0x41294c
push 0xb
push dword [0x407472]
call sub.user32.dll_LoadStringA
mov eax, 0x41294c
push eax
call fcn.00401ce6
push 0x400
push 0x412d4c
push 0xc
push dword [0x407472]
call sub.user32.dll_LoadStringA
push 0x412d4c
call fcn.00401ce6
push 0x4070ef
call fcn.00401ce6
pop ebx
pop edi
pop esi
leave
ret 4