Function at 0x403750
Capabilities:
Create directory
Query environment variable
Query or enumerate registry value
Read .ini file

Disassembly:
sub esp, 0x414
mov eax, dword [0x428510]
xor eax, esp
mov dword [esp + 0x410], eax
mov al, byte [0x428508]
mov byte [0x429da0], 0
mov byte [0x429c80], 0
mov byte [0x429b60], 0
mov byte [0x429a40], 0
push ebx
mov ebx, 1
push esi
mov esi, dword [esp + 0x420]
push edi
mov edi, dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
cmp al, 0x7f
jne 0x4037f3
push esi
push 0x100
lea eax, [esp + 0x1c]
push eax
push 0x41db14
push str.EMACS
push str.Make
call edi
lea eax, [esp + 0x14]
push 0x41db14
push eax
call fcn.0040b354
add esp, 8
test eax, eax
jne 0x4037d4
mov al, bl
jmp 0x4037ee
lea eax, [esp + 0x14]
push str.XEmacs
push eax
call fcn.0040b354
add esp, 8
neg eax
sbb al, al
and al, 0xfe
add al, 2
mov byte [0x428508], al
cmp byte [0x428e24], 0
movsx eax, al
je 0x4039a7
sub eax, 0
je 0x40396d
sub eax, 1
jne 0x40396d
push 0x104
push 0x429c80
push str.emacs_dir
call dword [sym.imp.KERNEL32.dll_GetEnvironmentVariableA]
push 0x429c80
call fcn.00404920
mov edx, 0x429c80
add esp, 4
lea ecx, [edx + 1]
nop
mov al, byte [edx]
inc edx
test al, al
jne 0x403840
sub edx, ecx
mov ecx, 0x429c80
cmp byte [edx + 0x429c7f], 0x5c
je 0x403873
lea edi, [ecx - 1]
nop word [eax + eax]
mov al, byte [edi + 1]
lea edi, [edi + 1]
test al, al
jne 0x403860
mov ax, word [0x41d734]
mov word [edi], ax
dec ecx
mov al, byte [ecx + 1]
inc ecx
test al, al
jne 0x403874
mov eax, dword [0x41de98]
mov edi, ecx
push 0x429c80
push str._semacs.exe
push 0x429da0
mov dword [edi], eax
call fcn.004032d0
push 0x429c80
push str._s.._shareemacs_site_lisp
push 0x429b60
call fcn.004032d0
push 0x429b60
call fcn.004041f0
add esp, 0x1c
test eax, eax
je 0x4038df
mov ecx, 0x429b60
dec ecx
mov al, byte [ecx + 1]
lea ecx, [ecx + 1]
test al, al
jne 0x4038c4
mov eax, dword [str.mew]
mov dword [ecx], eax
mov al, byte [0x41decc]
mov byte [ecx + 4], al
jmp 0x4038f6
push 0x429c80
push str._s.._site_lispmew
push 0x429b60
call fcn.004032d0
add esp, 0xc
push 0x429c80
push str._s.._shareinfo
push 0x429a40
call fcn.004032d0
push 0x429a40
call fcn.004041f0
add esp, 0x10
test eax, eax
jne 0x403932
push 0x429c80
push str._s..info
push 0x429a40
call fcn.004032d0
add esp, 0xc
push 0x429da0
lea eax, [esp + 0x18]
push str._s__batch__q__no_site_file__l_._writeexecdir.el
push eax
call fcn.004032d0
lea eax, [esp + 0x20]
push eax
call fcn.0040850b
add esp, 0x10
mov eax, ebx
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x410]
xor ecx, esp
call fcn.00404cba
add esp, 0x414
ret
push 0x10010
push str.Error
push 0x41df34
push str.environment_variable__getenv__mode_is_not_supported_for_Meadow.
push 0
call fcn.004041b0
add esp, 0x14
xor ebx, ebx
mov eax, ebx
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x410]
xor ecx, esp
call fcn.00404cba
add esp, 0x414
ret
push ebp
sub eax, 0
je 0x403a45
sub eax, 1
jne 0x403a45
lea eax, [esp + 0x14]
push eax
push 0x20019
push 0
push str.SOFTWAREGNUEmacs
push 0x80000002
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
test eax, eax
je 0x4039fa
push 0x10010
push str.Error
push str.Emacs
push str.Emacs_is_not_installed__nIf_you_want_to_install_with_another_Emacs__nchange_EMACS_key_in_INI_file.
push 0
call fcn.004041b0
add esp, 0x14
xor ebx, ebx
test ebx, ebx
je 0x404074
mov ebp, dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
lea eax, [esp + 0x10]
push eax
push 0x429c80
push 0
push 0
push str.EMACSPATH
push dword [esp + 0x28]
mov dword [esp + 0x28], 0x104
call ebp
test eax, eax
je 0x403bc7
push str.Error:_cannot_query_EMACSPATH
call fcn.00404490
add esp, 4
xor ebx, ebx
jmp 0x403ca8
cmp byte [0x429a20], 0
jne 0x403a67
push esi
push 0x10
push 0x429a20
push str.1.00
push str.MEADOWVERSION
push str.Make
call edi
mov ecx, str.1.00
mov eax, 0x429a20
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x403a91
test dl, dl
je 0x403a8d
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x403a91
add eax, 2
add ecx, 2
test dl, dl
jne 0x403a71
xor eax, eax
jmp 0x403a96
sbb eax, eax
or eax, 1
test eax, eax
je 0x403b5d
mov ecx, str.1.01
mov eax, 0x429a20
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x403ac8
test dl, dl
je 0x403ac4
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x403ac8
add eax, 2
add ecx, 2
test dl, dl
jne 0x403aa8
xor eax, eax
jmp 0x403acd
sbb eax, eax
or eax, 1
test eax, eax
je 0x403b5d
mov eax, dword [0x41e0d4]
mov edx, 0x429a20
movups xmm0, xmmword [str.SOFTWAREGNUMeadow_]
mov dword [esp + 0x128], eax
mov esi, edx
mov al, byte [0x41e0d8]
movups xmmword [esp + 0x118], xmm0
mov byte [esp + 0x12c], al
mov al, byte [edx]
inc edx
test al, al
jne 0x403b03
lea edi, [esp + 0x118]
sub edx, esi
dec edi
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x403b14
mov ecx, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea ecx, [esp + 0x118]
dec ecx
mov al, byte [ecx + 1]
lea ecx, [ecx + 1]
test al, al
jne 0x403b32
mov eax, dword [str.Environment]
mov dword [ecx], eax
mov eax, dword [0x41e0e0]
mov dword [ecx + 4], eax
mov eax, dword [0x41e0e4]
mov dword [ecx + 8], eax
mov al, byte [0x41e0e8]
mov byte [ecx + 0xc], al
jmp 0x403b7b
movups xmm0, xmmword [str.SOFTWAREGNUMeadowEnvironment]
movups xmmword [esp + 0x118], xmm0
movups xmm0, xmmword [0x41e0b4]
movups xmmword [esp + 0x128], xmm0
lea eax, [esp + 0x14]
push eax
push 0x20019
push 0
lea eax, [esp + 0x124]
push eax
push 0x80000002
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
test eax, eax
je 0x403a02
push 0x10010
push str.Error
push str.Meadow
push str.Meadow_is_not_installed__nSpecified_version_is_correct__nIf_you_want_to_install_with_another_Emacs__nchange_EMACS_key_in_INI_file.
push 0
call fcn.004041b0
add esp, 0x14
xor ebx, ebx
jmp 0x404074
cmp byte [0x428508], 1
jne 0x403c46
lea eax, [esp + 0x10]
mov dword [esp + 0x10], 0x104
push eax
lea eax, [esp + 0x320]
push eax
push 0
push 0
push str.emacs_dir
push dword [esp + 0x28]
call ebp
test eax, eax
je 0x403c0c
push str.Error:_cannot_query_emacs_dir
call fcn.00404490
add esp, 4
xor ebx, ebx
jmp 0x403ca8
lea eax, [esp + 0x31c]
push eax
push str._emacs_dir_
push 0x429c80
call fcn.00404820
push 0x429c80
call fcn.00404920
push 0x429c80
push str._semacs.exe
push 0x429da0
call fcn.004032d0
add esp, 0x1c
jmp 0x403ca8
cmp dword [0x429990], 2
jne 0x403c73
cmp byte [0x429a20], 0x31
jne 0x403c66
cmp byte [0x429a22], 0x39
mov eax, str._sMeadowNT.exe
jl 0x403c6b
mov eax, str._sMeadow.exe
push 0x429c80
push eax
jmp 0x403c9b
cmp byte [0x429a20], 0x31
jne 0x403c91
cmp byte [0x429a22], 0x39
jge 0x403c91
push 0x429c80
push str._sMeadow95.exe
jmp 0x403c9b
push 0x429c80
push str._sMeadow.exe
push 0x429da0
call fcn.004032d0
add esp, 0xc
lea eax, [esp + 0x10]
mov dword [esp + 0x10], 0x104
push eax
push 0x429b60
push 0
push 0
push str.EMACSLOADPATH
push dword [esp + 0x28]
call ebp
test eax, eax
je 0x403ce1
push str.Error:_cannot_query_EMACSLOADPATH
call fcn.00404490
add esp, 4
xor ebx, ebx
jmp 0x404011
mov al, byte [0x428508]
xor ecx, ecx
test al, al
jne 0x403e0c
mov al, byte [ecx + 0x429c80]
lea ecx, [ecx + 1]
mov byte [ecx + 0x429b5f], al
test al, al
jne 0x403cf0
mov esi, 0x429b60
lea ecx, [esi - 1]
nop dword [eax + eax]
mov al, byte [ecx + 1]
lea ecx, [ecx + 1]
test al, al
jne 0x403d10
mov eax, dword [str..._site_lisp]
mov dword [ecx], eax
mov eax, dword [0x41e2c0]
mov dword [ecx + 4], eax
mov eax, dword [0x41e2c4]
mov dword [ecx + 8], eax
mov ax, word [0x41e2c8]
push 0x429b60
mov word [ecx + 0xc], ax
call fcn.004041f0
add esp, 4
xor ecx, ecx
test eax, eax
je 0x403db0
nop
mov al, byte [ecx + 0x429c80]
lea ecx, [ecx + 1]
mov byte [ecx + 0x429b5f], al
test al, al
jne 0x403d50
dec esi
mov al, byte [esi + 1]
lea esi, [esi + 1]
test al, al
jne 0x403d64
mov eax, dword [str..._site_lispmew]
mov dword [esi], eax
mov eax, dword [0x41e2d0]
mov dword [esi + 4], eax
mov eax, dword [0x41e2d4]
mov dword [esi + 8], eax
mov eax, dword [0x41e2d8]
mov dword [esi + 0xc], eax
mov ax, word [0x41e2dc]
mov word [esi + 0x10], ax
mov dword [0x428e28], 1
jmp 0x404011
mov al, byte [ecx + 0x429c80]
lea ecx, [ecx + 1]
mov byte [ecx + 0x429b5f], al
test al, al
jne 0x403db0
dec esi
mov al, byte [esi + 1]
lea esi, [esi + 1]
test al, al
jne 0x403dc4
mov eax, dword [str....._site_lispmew]
mov dword [esi], eax
mov eax, dword [0x41e2e4]
mov dword [esi + 4], eax
mov eax, dword [0x41e2e8]
mov dword [esi + 8], eax
mov eax, dword [0x41e2ec]
mov dword [esi + 0xc], eax
mov eax, dword [0x41e2f0]
mov dword [esi + 0x10], eax
mov al, byte [0x41e2f4]
mov byte [esi + 0x14], al
mov dword [0x428e28], 1
jmp 0x404011
cmp al, 1
jne 0x403ea2
nop dword [eax]
nop dword [eax + eax]
mov al, byte [ecx + 0x429c80]
lea ecx, [ecx + 1]
mov byte [ecx + 0x429b5f], al
test al, al
jne 0x403e20
lea eax, [esp + 0x31c]
push eax
push str._emacs_dir_
push 0x429b60
call fcn.00404820
push 0x429b60
call fcn.00404920
mov ecx, 0x429b60
add esp, 0x10
dec ecx
nop dword [eax]
mov al, byte [ecx + 1]
lea ecx, [ecx + 1]
test al, al
jne 0x403e60
mov eax, dword [str..._site_lispmew]
mov dword [ecx], eax
mov eax, dword [0x41e2d0]
mov dword [ecx + 4], eax
mov eax, dword [0x41e2d4]
mov dword [ecx + 8], eax
mov eax, dword [0x41e2d8]
mov dword [ecx + 0xc], eax
mov ax, word [0x41e2dc]
mov word [ecx + 0x10], ax
mov dword [0x428e28], 1
jmp 0x404011
mov al, byte [ecx + 0x429b60]
lea ecx, [ecx + 1]
mov byte [esp + ecx + 0x17], al
test al, al
jne 0x403ea2
lea eax, [esp + 0x18]
push 0x5c
push eax
call fcn.00405860
add esp, 8
test eax, eax
je 0x404011
lea ecx, [esp + 0x18]
mov byte [eax], 0
dec ecx
mov al, byte [ecx + 1]
lea ecx, [ecx + 1]
test al, al
jne 0x403ed2
mov eax, dword [str._site_lisp]
mov dword [ecx], eax
mov eax, dword [0x41e2fc]
mov dword [ecx + 4], eax
mov ax, word [0x41e300]
mov word [ecx + 8], ax
mov al, byte [0x41e302]
mov byte [ecx + 0xa], al
lea eax, [esp + 0x18]
push eax
call fcn.004041f0
add esp, 4
test eax, eax
je 0x404011
lea ecx, [esp + 0x18]
dec ecx
mov al, byte [ecx + 1]
lea ecx, [ecx + 1]
test al, al
jne 0x403f17
mov eax, dword [str.mew]
mov dword [ecx], eax
mov al, byte [0x41decc]
mov byte [ecx + 4], al
lea eax, [esp + 0x18]
push eax
mov dword [0x428e28], 1
call fcn.004041f0
add esp, 4
test eax, eax
jne 0x403ff6
lea eax, [esp + 0x18]
push eax
lea eax, [esp + 0x220]
push str.creating___s__...
push eax
call fcn.004032d0
add esp, 0xc
lea eax, [esp + 0x18]
push 0
push eax
call dword [sym.imp.KERNEL32.dll_CreateDirectoryA]
test eax, eax
jne 0x403fb4
lea ecx, [esp + 0x21c]
dec ecx
mov al, byte [ecx + 1]
lea ecx, [ecx + 1]
test al, al
jne 0x403f82
mov eax, dword [str.fail.]
mov dword [ecx], eax
mov ax, word [0x41d54c]
mov word [ecx + 4], ax
lea eax, [esp + 0x21c]
push eax
call fcn.00404470
add esp, 4
xor eax, eax
jmp 0x404076
lea edi, [esp + 0x21c]
dec edi
nop dword [eax]
mov al, byte [edi + 1]
lea edi, [edi + 1]
test al, al
jne 0x403fc0
mov eax, dword [0x41d550]
mov dword [edi], eax
lea eax, [esp + 0x21c]
push eax
call fcn.00404470
add esp, 4
xor ecx, ecx
mov al, byte [esp + ecx + 0x18]
lea ecx, [ecx + 1]
mov byte [ecx + 0x429b5f], al
test al, al
jne 0x403fe3
jmp 0x404011
xor ecx, ecx
nop dword [eax + eax]
mov al, byte [esp + ecx + 0x18]
lea ecx, [ecx + 1]
mov byte [ecx + 0x429b5f], al
test al, al
jne 0x404000
cmp byte [0x428508], 1
jne 0x404036
lea eax, [esp + 0x31c]
push eax
push str._sinfo
push 0x429a40
call fcn.004032d0
add esp, 0xc
jmp 0x404074
lea eax, [esp + 0x10]
mov dword [esp + 0x10], 0x104
push eax
push 0x429a40
push 0
push 0
push str.INFOPATH
push dword [esp + 0x28]
call ebp
test eax, eax
je 0x40406a
push str.Error:_cannot_query_INFOPATH
call fcn.00404490
add esp, 4
xor ebx, ebx
push dword [esp + 0x14]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov eax, ebx
mov ecx, dword [esp + 0x420]
pop ebp
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.00404cba
add esp, 0x414
ret