Function at 0x419fb0
Capabilities:
Get common file path
Query environment variable

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
push eax
mov eax, 0x8040
call fcn.004246d8
sub esp, eax
mov ebx, edx
mov eax, dword [esp + eax]
mov dword [ebp - 0x8018], eax
mov eax, dword [0x429b5c]
mov dword [ebp - 0x8012], eax
movzx eax, word [0x429b60]
mov word [ebp - 0x800e], ax
test byte [0x425038], 8
jne 0x41a220
mov eax, dword [ebp - 0x8018]
mov word [ebp - 0x8012], bx
lea esi, [eax + 2]
lea eax, [ebp - 0x8012]
mov dword [esp + 4], eax
mov dword [esp], esi
call dword [sym.imp.ucrtbase.dll_wcspbrk]
mov dword [ebp - 0x8020], eax
test eax, eax
je 0x41a1e5
movzx eax, word [eax]
cmp ax, 0x20
je 0x41a1e5
cmp ax, 0x3a
je 0x41aab0
mov ecx, dword [ebp - 0x8018]
mov edi, dword [ebp - 0x8020]
sub edi, ecx
mov dword [esp + 4], ecx
sar edi, 1
lea edx, [edi + 1]
lea eax, [edx + edx]
mov dword [ebp - 0x801c], edx
mov dword [esp + 8], eax
lea eax, [ebp - 0x800c]
mov dword [esp], eax
call sym._memcpy
mov edx, dword [ebp - 0x801c]
xor eax, eax
mov dword [esp + 4], 0x3a
mov word [ebp + edx*2 - 0x800c], ax
lea eax, [ebp - 0x800a]
mov dword [esp], eax
call dword [sym.imp.ucrtbase.dll_wcschr]
xor edx, edx
mov dword [ebp - 0x8024], eax
mov word [ebp - 0x8028], dx
test eax, eax
je 0x41a0b9
movzx ecx, word [eax + 2]
mov dword [eax], 0x25
mov word [ebp - 0x8028], cx
cmp bx, 0x21
jne 0x41a0d8
mov edx, 0x25
mov ecx, 0x25
mov word [ebp - 0x800c], dx
mov word [ebp + edi*2 - 0x800c], cx
lea eax, [ebp - 0x400c]
mov dword [ebp - 0x801c], eax
test byte [0x425038], 8
jne 0x41a920
cmp word [ebp - 0x800c], 0x25
je 0x41a310
mov eax, dword [ebp - 0x801c]
mov dword [esp + 8], 0x2000
mov dword [esp + 4], eax
lea eax, [ebp - 0x800c]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_ExpandEnvironmentStringsW]
sub esp, 0xc
mov ebx, eax
test ebx, ebx
je 0x41a2f4
mov eax, dword [ebp - 0x801c]
mov dword [esp + 4], eax
lea eax, [ebp - 0x800c]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_lstrcmpiW]
sub esp, 8
test eax, eax
jne 0x41a4d0
mov esi, dword [ebp - 0x8020]
mov eax, dword [ebp - 0x8024]
add esi, 2
test eax, eax
je 0x41a1e5
movzx edi, word [ebp - 0x8028]
mov ecx, 0x3a
mov word [eax], cx
mov word [eax + 2], di
mov ebx, dword [0x42f344]
test ebx, ebx
je 0x41a210
cmp word [ebp - 0x800c], 0
lea eax, [ebp - 0x800c]
je 0x41b0c0
lea esi, [esi]
add eax, 2
cmp word [eax], 0
jne 0x41a1a0
lea edi, [ebp - 0x800c]
sub eax, edi
sar eax, 1
sub eax, 1
xor edx, edx
lea ecx, [ebp - 0x800a]
cmp dword [ebp - 0x8024], ecx
mov dword [esp + 0xc], 0xffffffff
mov word [ebp + eax*2 - 0x800c], dx
mov eax, dword [ebp - 0x8024]
je 0x41a1df
add eax, 2
mov dword [esp + 8], eax
jmp 0x41a1fe
mov eax, dword [0x42f344]
test eax, eax
je 0x41a210
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], esi
mov esi, dword [ebp - 0x8018]
mov dword [esp], esi
call dbg.WCMD_strsubstW
lea esp, [ebp - 0xc]
mov eax, esi
pop ebx
pop esi
pop edi
pop ebp
ret
movzx eax, dx
mov dword [ebp - 0x801c], eax
mov eax, dword [ebp - 0x8018]
test eax, eax
je 0x41ab90
shr eax, 0x10
je 0x41a800
mov esi, dword [ebp - 0x8018]
mov dword [esp + 4], 0xffffffff
mov dword [esp], esi
call dword [sym.imp.kernel32.dll_IsBadStringPtrW]
mov edi, eax
sub esp, 8
mov eax, str._invalid_
test edi, edi
jne 0x41a817
cmp word [esi], 0
je 0x41a27b
mov eax, esi
add edi, 1
cmp word [eax + edi*2], 0
jne 0x41a271
mov eax, 0x224c
mov dword [ebp - 0x8020], ebx
mov ecx, dword [ebp - 0x8018]
lea edx, [ebp - 0x400a]
mov word [ebp - 0x400c], ax
lea esi, [esi]
lea esi, [edi - 1]
test edi, edi
jle 0x41aa70
lea eax, [ebp - 0x3eea]
cmp edx, eax
ja 0x41aa70
add ecx, 2
movzx eax, word [ecx - 2]
cmp ax, 0xd
je 0x41a8f0
ja 0x41a850
cmp ax, 9
je 0x41a873
cmp ax, 0xa
jne 0x41a890
mov eax, 0x6e5c
add edx, 2
mov edi, esi
mov word [edx - 2], ax
jmp 0x41a2a0
mov esi, dword [ebp - 0x8020]
lea esp, [ebp - 0xc]
pop ebx
add esi, 2
mov eax, esi
pop esi
pop edi
pop ebp
ret
lea eax, [ebp - 0x800c]
lea esi, [esi]
lea esi, [esi]
add eax, 2
cmp word [eax], 0
jne 0x41a320
lea edi, [ebp - 0x800c]
sub eax, edi
cmp eax, 2
jle 0x41a347
sar eax, 1
cmp word [ebp + eax*2 - 0x800e], 0x25
je 0x41abd0
lea eax, [ebp - 0x800c]
lea esi, [esi]
add eax, 2
cmp word [eax], 0
jne 0x41a350
lea ecx, [ebp - 0x800c]
sub eax, ecx
cmp eax, 2
jle 0x41a377
sar eax, 1
cmp word [ebp + eax*2 - 0x800e], 0x25
je 0x41ae13
lea eax, [ebp - 0x800c]
lea esi, [esi]
add eax, 2
cmp word [eax], 0
jne 0x41a380
lea ecx, [ebp - 0x800c]
sub eax, ecx
cmp eax, 2
jle 0x41a3a7
sar eax, 1
cmp word [ebp + eax*2 - 0x800e], 0x25
je 0x41aeb2
lea eax, [ebp - 0x800c]
lea esi, [esi]
add eax, 2
cmp word [eax], 0
jne 0x41a3b0
lea ecx, [ebp - 0x800c]
sub eax, ecx
cmp eax, 2
jle 0x41a3d7
sar eax, 1
cmp word [ebp + eax*2 - 0x800e], 0x25
je 0x41b0e5
lea eax, [ebp - 0x800c]
lea esi, [esi]
add eax, 2
cmp word [eax], 0
jne 0x41a3e0
lea edi, [ebp - 0x800c]
sub eax, edi
cmp eax, 2
jle 0x41a0ff
sar eax, 1
cmp word [ebp + eax*2 - 0x800e], 0x25
jne 0x41a0ff
sub eax, 2
mov dword [esp + 0x14], 0xffffffff
mov dword [esp + 0xc], eax
lea eax, [ebp - 0x800a]
mov dword [esp + 0x10], str.RANDOM
mov dword [esp + 8], eax
mov dword [esp + 4], 0x1001
mov dword [esp], 0x400
call dword [sym.imp.kernel32.dll_CompareStringW]
sub esp, 0x18
cmp eax, 2
jne 0x41a0ff
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], str.RANDOM
call dword [sym.imp.kernel32.dll_GetEnvironmentVariableW]
sub esp, 0xc
test eax, eax
jne 0x41a0ff
call dword [sym.imp.ucrtbase.dll_rand]
mov ebx, dword [ebp - 0x801c]
mov dword [esp + 4], 0x429b2a
cdq
shr edx, 0x11
mov dword [esp], ebx
add eax, edx
and eax, 0x7fff
sub eax, edx
mov dword [esp + 8], eax
call dword [sym.imp.user32.dll_wsprintfW]
cmp word [ebp - 0x400c], 0
je 0x41a2f4
add ebx, 2
cmp word [ebx], 0
jne 0x41a4b1
lea esi, [esi]
sub ebx, dword [ebp - 0x801c]
sar ebx, 1
jmp 0x41a125
mov eax, dword [ebp - 0x8024]
test eax, eax
je 0x41aff6
mov eax, dword [ebp - 0x8024]
mov edi, 0x3a
mov word [eax], di
movzx edi, word [ebp - 0x8028]
mov word [eax + 2], di
cmp di, 0x7e
je 0x41ad60
mov eax, dword [ebp - 0x8024]
mov dword [esp + 4], 0x429b58
mov dword [esp], eax
mov eax, dword [sym.imp.ucrtbase.dll_wcsstr]
mov dword [ebp - 0x8034], eax
call eax
mov edi, eax
lea eax, [eax + 2]
mov dword [ebp - 0x802c], eax
test edi, edi
je 0x41a210
mov eax, dword [ebp - 0x8020]
mov ebx, eax
add ebx, 2
je 0x41ac96
cmp word [eax + 2], 0
je 0x41b16c
mov eax, ebx
add eax, 2
cmp word [eax], 0
jne 0x41a550
sub eax, ebx
sar eax, 1
lea esi, [eax + eax + 2]
mov dword [esp], esi
call dbg.xalloc
mov dword [esp + 8], esi
mov dword [esp + 4], ebx
mov dword [esp], eax
mov dword [ebp - 0x8038], eax
call sym._memcpy
cmp word [ebp - 0x800c], 0
je 0x41b140
lea eax, [ebp - 0x800c]
add eax, 2
cmp word [eax], 0
jne 0x41a593
lea esi, [ebp - 0x800c]
sub eax, esi
sar eax, 1
sub eax, 1
xor ebx, ebx
xor esi, esi
mov word [ebp + eax*2 - 0x800c], bx
mov word [edi], si
cmp word [ebp - 0x400c], 0
je 0x41b158
mov eax, dword [ebp - 0x801c]
lea esi, [esi]
add eax, 2
cmp word [eax], 0
jne 0x41a5d0
sub eax, dword [ebp - 0x801c]
sar eax, 1
lea ebx, [eax + eax + 2]
mov dword [esp], ebx
call dbg.xalloc
mov esi, dword [ebp - 0x801c]
mov dword [esp + 8], ebx
mov dword [esp], eax
mov dword [esp + 4], esi
mov dword [ebp - 0x8030], eax
call sym._memcpy
cmp word [ebp - 0x400c], 0
je 0x41b151
mov eax, esi
lea esi, [esi]
add eax, 2
cmp word [eax], 0
jne 0x41a620
sub eax, dword [ebp - 0x801c]
sar eax, 1
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x8030]
mov esi, dword [sym.imp.user32.dll_CharUpperBuffW]
mov dword [esp], eax
call esi
mov eax, dword [ebp - 0x8024]
sub esp, 8
mov ebx, eax
add ebx, 2
je 0x41b096
cmp word [eax + 2], 0
je 0x41b162
mov eax, ebx
lea esi, [esi]
nop
add eax, 2
cmp word [eax], 0
jne 0x41a670
sub eax, ebx
sar eax, 1
lea edx, [eax + eax + 2]
mov dword [esp], edx
mov dword [ebp - 0x8028], edx
call dbg.xalloc
mov edx, dword [ebp - 0x8028]
mov dword [esp + 4], ebx
mov dword [esp], eax
mov dword [esp + 8], edx
mov dword [ebp - 0x8020], eax
call sym._memcpy
mov eax, dword [ebp - 0x8024]
cmp word [eax + 2], 0
je 0x41b14a
mov eax, ebx
nop
add eax, 2
cmp word [eax], 0
jne 0x41a6c0
sub eax, ebx
sar eax, 1
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x8020]
mov dword [esp], eax
call esi
mov eax, dword [ebp - 0x8024]
sub esp, 8
cmp word [eax + 2], 0x2a
je 0x41af21
mov esi, dword [ebp - 0x8018]
xor ecx, ecx
mov ebx, dword [ebp - 0x8030]
mov word [esi], cx
mov eax, dword [ebp - 0x8020]
mov dword [esp], ebx
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x8034]
call eax
mov edx, ebx
sub edx, dword [ebp - 0x8030]
add edx, dword [ebp - 0x801c]
mov dword [ebp - 0x8024], eax
test eax, eax
je 0x41acb4
mov eax, dword [ebp - 0x8024]
sub eax, ebx
mov dword [ebp - 0x8028], eax
sar eax, 1
add eax, 1
cmp eax, 1
jbe 0x41aca5
movzx ebx, word [edx]
mov ecx, esi
test bx, bx
jne 0x41a768
jmp 0x41a77a
movzx ebx, word [edx]
test bx, bx
je 0x41a77a
add ecx, 2
sub eax, 1
add edx, 2
mov word [ecx - 2], bx
cmp eax, 1
jne 0x41a760
xor edx, edx
mov word [ecx], dx
add esi, dword [ebp - 0x8028]
cmp word [esi], 0
mov edx, esi
je 0x41a799
lea esi, [esi]
add edx, 2
cmp word [edx], 0
jne 0x41a790
xor eax, eax
lea esi, [esi]
nop
movzx ecx, word [edi + eax + 2]
mov word [edx + eax], cx
add eax, 2
test cx, cx
jne 0x41a7a0
cmp word [edi + 2], 0
je 0x41a7d1
mov eax, dword [ebp - 0x802c]
nop
add eax, 2
cmp word [eax], 0
jne 0x41a7c0
sub eax, dword [ebp - 0x802c]
add esi, eax
mov ebx, dword [ebp - 0x8020]
cmp word [ebx], 0
je 0x41ad50
add ebx, 2
cmp word [ebx], 0
jne 0x41a7e1
sub ebx, dword [ebp - 0x8020]
add ebx, dword [ebp - 0x8024]
jmp 0x41a701
movzx eax, word [ebp - 0x8018]
mov dword [esp], str._04x
mov dword [esp + 4], eax
call sym._wine_dbg_sprintf.constprop.8
mov esi, dword [ebp - 0x801c]
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], str.Expanding:__s___c__n
mov dword [esp + 0x14], esi
mov dword [esp + 8], global___func__.3
mov dword [esp + 4], 0x425038
mov dword [esp], 3
call sym._wine_dbg_log.constprop.11
jmp 0x419ff4
cmp ax, 0x22
je 0x41a903
cmp ax, 0x5c
jne 0x41a890
mov ebx, 0x5c5c
add edx, 2
mov edi, esi
mov word [edx - 2], bx
jmp 0x41a2a0
mov eax, 0x745c
add edx, 2
mov edi, esi
mov word [edx - 2], ax
jmp 0x41a2a0
lea edi, [eax - 0x20]
cmp di, 0x5e
jbe 0x41ab83
mov edi, eax
mov byte [edx], 0x5c
add edx, 5
shr di, 0xc
movzx edi, di
movzx ebx, byte [edi + str.0123456789abcdefWCMD_output]
mov edi, eax
shr di, 8
and edi, 0xf
mov byte [edx - 4], bl
movzx ebx, byte [edi + str.0123456789abcdefWCMD_output]
mov edi, eax
and eax, 0xf
shr di, 4
movzx eax, byte [eax + str.0123456789abcdefWCMD_output]
and edi, 0xf
mov byte [edx - 3], bl
movzx ebx, byte [edi + str.0123456789abcdefWCMD_output]
mov byte [edx - 1], al
mov edi, esi
mov byte [edx - 2], bl
jmp 0x41a2a0
mov eax, 0x725c
add edx, 2
mov edi, esi
mov word [edx - 2], ax
jmp 0x41a2a0
mov edi, 0x225c
add edx, 2
mov word [edx - 2], di
mov edi, esi
jmp 0x41a2a0
lea eax, [ebp - 0x800c]
shr eax, 0x10
je 0x41aba0
lea eax, [ebp - 0x800c]
mov dword [esp + 4], 0xffffffff
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_IsBadStringPtrW]
mov edi, eax
sub esp, 8
mov eax, str._invalid_
test edi, edi
jne 0x41aa41
cmp word [ebp - 0x800c], 0
je 0x41a970
add edi, 1
cmp word [ebp + edi*2 - 0x800c], 0
jne 0x41a962
mov eax, 0x224c
lea ecx, [ebp - 0x800c]
lea edx, [ebp - 0x400a]
mov word [ebp - 0x400c], ax
mov dword [ebp - 0x801c], ecx
nop
lea eax, [ebp - 0x3eea]
lea ebx, [edi - 1]
cmp edx, eax
ja 0x41aa10
test edi, edi
jle 0x41aa10
add dword [ebp - 0x801c], 2
mov eax, dword [ebp - 0x801c]
movzx eax, word [eax - 2]
cmp ax, 0xd
je 0x41ab70
ja 0x41a9e2
cmp ax, 9
je 0x41ab40
cmp ax, 0xa
jne 0x41aae0
mov eax, 0x6e5c
add edx, 2
mov edi, ebx
mov word [edx - 2], ax
jmp 0x41a990
cmp ax, 0x22
je 0x41ab53
cmp ax, 0x5c
jne 0x41aae0
mov eax, 0x5c5c
add edx, 2
mov edi, ebx
mov word [edx - 2], ax
jmp 0x41a990
mov byte [edx], 0x22
lea eax, [edx + 1]
test ebx, ebx
jle 0x41aa2a
mov edi, 0x2e2e
mov byte [edx + 3], 0x2e
lea eax, [edx + 4]
mov word [edx + 1], di
mov byte [eax], 0
lea eax, [ebp - 0x400c]
mov dword [esp], eax
mov dword [ebp - 0x801c], eax
call dbg.__wine_dbg_strdup
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], str.Retrieving_contents_of__s_n
mov dword [esp + 8], global___func__.3
mov dword [esp + 4], 0x425038
mov dword [esp], 3
call sym._wine_dbg_log.constprop.11
jmp 0x41a0f1
mov ebx, dword [ebp - 0x8020]
mov byte [edx], 0x22
lea eax, [edx + 1]
test esi, esi
jle 0x41aa90
mov ecx, 0x2e2e
mov byte [edx + 3], 0x2e
lea eax, [edx + 4]
mov word [edx + 1], cx
mov byte [eax], 0
lea eax, [ebp - 0x400c]
mov dword [esp], eax
call dbg.__wine_dbg_strdup
jmp 0x41a817
mov edi, dword [ebp - 0x8020]
movzx eax, bx
mov dword [esp + 4], eax
lea eax, [edi + 2]
mov dword [esp], eax
call dword [sym.imp.ucrtbase.dll_wcschr]
test eax, eax
cmove eax, edi
mov dword [ebp - 0x8020], eax
jmp 0x41a03c
lea edi, [eax - 0x20]
cmp di, 0x5e
jbe 0x41ac21
mov edi, eax
mov byte [edx], 0x5c
add edx, 5
shr di, 0xc
movzx edi, di
movzx ecx, byte [edi + str.0123456789abcdefWCMD_output]
mov edi, eax
shr di, 8
and edi, 0xf
mov byte [edx - 4], cl
movzx ecx, byte [edi + str.0123456789abcdefWCMD_output]
mov edi, eax
and eax, 0xf
shr di, 4
movzx eax, byte [eax + str.0123456789abcdefWCMD_output]
and edi, 0xf
mov byte [edx - 3], cl
movzx ecx, byte [edi + str.0123456789abcdefWCMD_output]
mov byte [edx - 1], al
mov edi, ebx
mov byte [edx - 2], cl
jmp 0x41a990
mov eax, 0x745c
add edx, 2
mov edi, ebx
mov word [edx - 2], ax
jmp 0x41a990
mov eax, 0x225c
add edx, 2
mov edi, ebx
mov word [edx - 2], ax
jmp 0x41a990
mov eax, 0x725c
add edx, 2
mov edi, ebx
mov word [edx - 2], ax
jmp 0x41a990
mov byte [edx], al
mov edi, esi
add edx, 1
jmp 0x41a2a0
mov eax, str._null_
jmp 0x41a817
lea eax, [ebp - 0x800c]
mov dword [esp], str._04x
mov dword [ebp - 0x802c], eax
movzx eax, word [ebp - 0x802c]
mov dword [esp + 4], eax
call sym._wine_dbg_sprintf.constprop.8
jmp 0x41aa41
sub eax, 2
mov dword [esp + 0x14], 0xffffffff
mov dword [esp + 0xc], eax
lea eax, [ebp - 0x800a]
mov dword [esp + 0x10], str.ERRORLEVEL
mov dword [esp + 8], eax
mov dword [esp + 4], 0x1001
mov dword [esp], 0x400
call dword [sym.imp.kernel32.dll_CompareStringW]
sub esp, 0x18
cmp eax, 2
je 0x41ac2d
cmp word [ebp - 0x800c], 0x25
jne 0x41a0ff
jmp 0x41a347
mov byte [edx], al
mov edi, ebx
add edx, 1
jmp 0x41a990
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], str.ERRORLEVEL
call dword [sym.imp.kernel32.dll_GetEnvironmentVariableW]
sub esp, 0xc
test eax, eax
jne 0x41ac0e
mov eax, dword [0x4386f0]
mov ebx, dword [ebp - 0x801c]
mov dword [esp + 4], 0x429b2a
mov dword [esp + 8], eax
mov dword [esp], ebx
call dword [sym.imp.user32.dll_wsprintfW]
cmp word [ebp - 0x400c], 0
je 0x41a2f4
nop
add ebx, 2
cmp word [ebx], 0
jne 0x41ac80
sub ebx, dword [ebp - 0x801c]
sar ebx, 1
jmp 0x41a125
mov dword [ebp - 0x8038], 0
jmp 0x41a57f
test eax, eax
je 0x41a77f
mov ecx, esi
jmp 0x41a77a
cmp word [esi], 0
mov ecx, esi
je 0x41acc9
lea esi, [esi]
add ecx, 2
cmp word [ecx], 0
jne 0x41acc0
xor eax, eax
lea esi, [esi]
nop
movzx ebx, word [edx + eax]
mov word [ecx + eax], bx
add eax, 2
test bx, bx
jne 0x41acd0
cmp word [esi], 0
mov eax, esi
je 0x41acfb
lea esi, [esi]
nop
add eax, 2
cmp word [eax], 0
jne 0x41acf0
mov esi, eax
mov ecx, dword [ebp - 0x8038]
xor eax, eax
mov ebx, esi
movzx edx, word [ecx + eax]
mov word [ebx + eax], dx
add eax, 2
test dx, dx
jne 0x41ad05
mov eax, dword [ebp - 0x8038]
mov ebx, dword [sym.imp.ucrtbase.dll_free]
mov dword [esp], eax
call ebx
mov eax, dword [ebp - 0x8030]
mov dword [esp], eax
call ebx
mov eax, dword [ebp - 0x8020]
mov dword [esp], eax
call ebx
mov esi, dword [ebp - 0x8018]
jmp 0x41a210
mov ebx, dword [ebp - 0x8024]
jmp 0x41a701
mov esi, eax
mov dword [esp + 4], 0x2c
add esi, 4
mov dword [esp], esi
call dword [sym.imp.ucrtbase.dll_wcschr]
mov edx, dword [sym.imp.ucrtbase.dll_wcstol]
mov dword [esp], esi
mov edi, eax
mov dword [esp + 8], 0xa
mov dword [ebp - 0x8024], edx
mov dword [esp + 4], 0
call edx
test edi, edi
mov edx, dword [ebp - 0x8024]
mov esi, eax
je 0x41ae70
add edi, 2
mov dword [esp + 8], 0xa
mov dword [esp + 4], 0
mov dword [esp], edi
call edx
test esi, esi
js 0x41b0a5
cmp ebx, esi
mov edi, dword [ebp - 0x801c]
cmovle esi, ebx
lea edx, [edi + esi*2]
mov esi, dword [ebp - 0x8020]
mov ecx, edx
sub ecx, dword [ebp - 0x801c]
add esi, 2
test eax, eax
jns 0x41af10
lea eax, [ebx + eax - 1]
sar ecx, 1
sub eax, ecx
cmp ebx, eax
jl 0x41ae06
test eax, eax
mov ebx, 0
cmovns ebx, eax
mov dword [esp + 0xc], ebx
mov dword [esp + 8], edx
jmp 0x41a1fe
sub eax, 2
mov dword [esp + 0x14], 0xffffffff
mov dword [esp + 0xc], eax
lea eax, [ebp - 0x800a]
mov dword [esp + 0x10], 0x429b30
mov dword [esp + 8], eax
mov dword [esp + 4], 0x1001
mov dword [esp], 0x400
call dword [sym.imp.kernel32.dll_CompareStringW]
sub esp, 0x18
cmp eax, 2
je 0x41b009
cmp word [ebp - 0x800c], 0x25
jne 0x41a0ff
jmp 0x41a377
test eax, eax
js 0x41b0ca
cmp ebx, eax
cmovg ebx, eax
mov eax, dword [ebp - 0x801c]
lea eax, [eax + ebx*2]
mov dword [esp + 0xc], 0xffffffff
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x8020]
mov esi, dword [ebp - 0x8018]
add eax, 2
mov dword [esp + 4], eax
mov dword [esp], esi
call dbg.WCMD_strsubstW
jmp 0x41a210
sub eax, 2
mov dword [esp + 0x14], 0xffffffff
mov dword [esp + 0xc], eax
lea eax, [ebp - 0x800a]
mov dword [esp + 0x10], 0x429b3a
mov dword [esp + 8], eax
mov dword [esp + 4], 0x1001
mov dword [esp], 0x400
call dword [sym.imp.kernel32.dll_CompareStringW]
sub esp, 0x18
cmp eax, 2
je 0x41b176
cmp word [ebp - 0x800c], 0x25
je 0x41a3a7
jmp 0x41a0ff
sar ecx, 1
add ecx, 1
sub ebx, ecx
cmp ebx, eax
cmovg ebx, eax
jmp 0x41ae06
mov eax, dword [ebp - 0x8020]
lea ebx, [eax + 2]
mov eax, dword [ebp - 0x8030]
mov dword [esp + 4], ebx
mov dword [esp], eax
mov eax, dword [ebp - 0x8034]
call eax
mov ecx, eax
xor eax, eax
test ecx, ecx
je 0x41b1fe
mov esi, dword [ebp - 0x8018]
movzx edx, word [edi + eax + 2]
mov word [esi + eax], dx
add eax, 2
test dx, dx
jne 0x41af51
mov eax, dword [ebp - 0x8020]
sub ecx, dword [ebp - 0x8030]
cmp word [eax + 2], 0
mov eax, ebx
je 0x41af89
lea esi, [esi]
nop
add eax, 2
cmp word [eax], 0
jne 0x41af80
sub eax, ebx
add ecx, eax
mov eax, dword [ebp - 0x801c]
add eax, ecx
mov ecx, dword [ebp - 0x8018]
cmp word [ecx], 0
je 0x41b2b9
add ecx, 2
cmp word [ecx], 0
jne 0x41afa5
xor edx, edx
movzx ebx, word [eax + edx]
mov word [ecx + edx], bx
add edx, 2
test bx, bx
jne 0x41afb0
mov edx, dword [ebp - 0x8018]
cmp word [edx], 0
je 0x41b2ae
add edx, 2
cmp word [edx], 0
jne 0x41afd0
mov ebx, dword [ebp - 0x8038]
xor eax, eax
movzx ecx, word [ebx + eax]
mov word [edx + eax], cx
add eax, 2
test cx, cx
jne 0x41afe1
jmp 0x41ad15
mov dword [esp + 0xc], 0xffffffff
mov eax, dword [ebp - 0x801c]
jmp 0x41ae8e
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], 0x429b30
call dword [sym.imp.kernel32.dll_GetEnvironmentVariableW]
sub esp, 0xc
test eax, eax
jne 0x41ae55
mov ebx, dword [ebp - 0x801c]
mov dword [esp + 0x14], 0x2000
mov dword [esp + 0xc], 0
mov dword [esp + 0x10], ebx
mov dword [esp + 8], 0
mov dword [esp + 4], 1
mov dword [esp], 0x400
call dword [sym.imp.kernel32.dll_GetDateFormatW]
sub esp, 0x18
cmp word [ebp - 0x400c], 0
je 0x41a2f4
lea esi, [esi]
add ebx, 2
cmp word [ebx], 0
jne 0x41b080
sub ebx, dword [ebp - 0x801c]
sar ebx, 1
jmp 0x41a125
mov dword [ebp - 0x8020], 0
jmp 0x41a6ab
add esi, ebx
mov edx, 1
mov edi, dword [ebp - 0x801c]
test esi, esi
cmovle esi, edx
lea edx, [edi + esi*2 - 2]
jmp 0x41add7
mov eax, 0xffffffff
jmp 0x41a1b6
add ebx, eax
mov eax, 1
test ebx, ebx
cmovle ebx, eax
mov eax, dword [ebp - 0x801c]
lea eax, [eax + ebx*2 - 2]
jmp 0x41ae86
sub eax, 2
mov dword [esp + 0x14], 0xffffffff
mov dword [esp + 0xc], eax
lea eax, [ebp - 0x800a]
mov dword [esp + 0x10], 0x429b44
mov dword [esp + 8], eax
mov dword [esp + 4], 0x1001
mov dword [esp], 0x400
call dword [sym.imp.kernel32.dll_CompareStringW]
sub esp, 0x18
cmp eax, 2
je 0x41b250
cmp word [ebp - 0x800c], 0x25
je 0x41a3d7
jmp 0x41a0ff
mov eax, 0xffffffff
jmp 0x41a5a9
xor eax, eax
jmp 0x41a6cd
xor eax, eax
jmp 0x41a631
mov ebx, 2
jmp 0x41a5e5
mov edx, 2
jmp 0x41a681
mov esi, 2
jmp 0x41a561
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], 0x429b3a
call dword [sym.imp.kernel32.dll_GetEnvironmentVariableW]
sub esp, 0xc
test eax, eax
jne 0x41aef4
mov ebx, dword [ebp - 0x801c]
mov dword [esp + 0x14], 0x2000
mov dword [esp + 0xc], 0
mov dword [esp + 0x10], ebx
mov dword [esp + 8], 0
mov dword [esp + 4], 2
mov dword [esp], 0x400
call dword [sym.imp.kernel32.dll_GetTimeFormatW]
sub esp, 0x18
cmp word [ebp - 0x400c], 0
je 0x41a2f4
lea esi, [esi]
lea esi, [esi]
add ebx, 2
cmp word [ebx], 0
jne 0x41b1f0
jmp 0x41a4c0
mov ecx, dword [ebp - 0x8018]
mov ebx, dword [ebp - 0x801c]
movzx edx, word [ebx + eax]
mov word [ecx + eax], dx
add eax, 2
test dx, dx
jne 0x41b20a
mov edx, dword [ebp - 0x8018]
cmp word [edx], 0
je 0x41b2c4
add edx, 2
cmp word [edx], 0
jne 0x41b22a
mov ebx, dword [ebp - 0x8038]
xor eax, eax
movzx ecx, word [ebx + eax]
mov word [edx + eax], cx
add eax, 2
test cx, cx
jne 0x41b23b
jmp 0x41ad15
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], 0x429b44
call dword [sym.imp.kernel32.dll_GetEnvironmentVariableW]
sub esp, 0xc
test eax, eax
jne 0x41b127
mov ebx, dword [ebp - 0x801c]
mov dword [esp], 0x2000
mov dword [esp + 4], ebx
call dword [sym.imp.kernel32.dll_GetCurrentDirectoryW]
sub esp, 8
cmp word [ebp - 0x400c], 0
je 0x41a2f4
add ebx, 2
cmp word [ebx], 0
jne 0x41b2a0
jmp 0x41a4c0
mov edx, dword [ebp - 0x8018]
jmp 0x41afd9
mov ecx, dword [ebp - 0x8018]
jmp 0x41afae
mov edx, dword [ebp - 0x8018]
jmp 0x41b233