Function at 0x459680
Capabilities:
Set current directory
Set environment variable

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x591966
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0xdc
push ebx
push esi
push edi
push 0
push 0
push 0
lea ecx, [ebp - 0xe8]
xor bl, bl
call fcn.0046b8e0
mov esi, dword [ebp + 8]
lea eax, [ebp - 0xe8]
push 0
push 0
push eax
push ecx
mov eax, esp
mov dword [ebp - 4], 0
mov dword [eax], esi
call fcn.00471b10
add esp, 0x10
test al, al
je 0x459a60
push 0
lea ecx, [ebp - 0xe8]
call fcn.0046c490
push 0
push 0
call fcn.00579c42
add esp, 8
mov dword [ebp - 0x10], eax
test esi, esi
mov dword [ebp - 0x1c], 0
mov ecx, 0x59934c
mov dword [ebp - 0x18], 0
cmovne ecx, esi
mov dword [ebp - 0x14], 0x4000000
mov dword [ebp - 0x20], ecx
lea ecx, [ebp - 0x20]
mov byte [ebp - 4], 1
call fcn.00459d10
push 0
push eax
push 0
call fcn.00576324
add esp, 0xc
mov byte [ebp - 4], 0
cmp byte [ebp - 0x14], 0
mov edi, eax
mov dword [ebp - 0x24], edi
je 0x45974f
push dword [ebp - 0x20]
call fcn.0056b4c4
add esp, 4
cmp byte [ebp - 0x13], 0
je 0x459760
push dword [ebp - 0x1c]
call fcn.0056b4c4
add esp, 4
cmp byte [ebp - 0x12], 0
je 0x459771
push dword [ebp - 0x18]
call fcn.0056b4c4
add esp, 4
cmp dword [ebp - 0x10], 0
je 0x459a4f
test edi, edi
je 0x459a4f
push 0x5c
push edi
call fcn.0056d8c7
add esp, 8
test eax, eax
je 0x459a4f
xor ecx, ecx
push edi
mov word [eax], cx
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryW]
push edi
push str.INSTALLDIR
call dword [sym.imp.KERNEL32.dll_SetEnvironmentVariableW]
mov dword [ebp - 0xbc], 0
mov dword [ebp - 0xb8], 0
mov dword [ebp - 0xb4], 0
mov byte [ebp - 0xb0], 0
push 0
push 0
push 4
lea ecx, [ebp - 0x3c]
mov byte [ebp - 4], 2
mov dword [ebp - 0xc0], vtable.CInstallScriptParser.0
call fcn.0046a860
mov dword [ebp - 0x2c], 0
mov al, byte [ebp + 0x10]
lea ecx, [ebp - 0xc0]
mov byte [ebp - 0xa4], al
mov al, byte [ebp + 0x14]
mov byte [ebp - 0xa3], al
mov eax, dword [ebp + 0xc]
mov byte [ebp - 4], 3
mov dword [ebp - 0x28], 0x5c53fc
mov word [ebp - 0x62], 0
mov byte [ebp - 0x60], 0
mov dword [ebp - 0xa8], 0
mov dword [ebp - 0xac], eax
mov byte [ebp - 0xa2], 0x30
call fcn.00458480
lea eax, [ebp - 0xa2]
mov dword [ebp - 0x44], 0
mov dword [ebp - 0x54], eax
mov al, byte [ebp - 0xa4]
mov byte [ebp - 0x5f], al
mov byte [ebp - 0x5e], al
mov eax, dword [ebp - 0xac]
mov dword [ebp - 0x40], 0
mov dword [ebp - 0x58], 0
mov dword [ebp - 0x50], 0
mov dword [ebp - 0x4c], 0
mov dword [ebp - 0x5c], 1
mov byte [ebp - 0x5d], 0
mov dword [ebp - 0x48], 0
mov dword [ebp - 0xa8], eax
mov byte [ebp - 0xa2], 0
mov ecx, dword [ebp - 0xe4]
mov eax, dword [ebp - 0xd4]
add eax, ecx
mov byte [ebp - 4], 4
mov dword [ebp - 0xbc], ecx
mov dword [ebp - 0xb8], ecx
mov dword [ebp - 0xb4], eax
mov byte [ebp - 0xb0], 0
lea ebx, [ebx]
cmp byte [ebp - 0xb0], 0
mov byte [ebp + 0xb], 0
jne 0x459a36
test ecx, ecx
je 0x459a36
mov al, byte [ecx]
test al, al
je 0x459a36
cmp ecx, dword [ebp - 0xb8]
jb 0x459a36
cmp ecx, dword [ebp - 0xb4]
jae 0x459a36
jmp 0x459910
test al, al
je 0x459937
movsx eax, al
push eax
call fcn.0056fe60
mov ecx, dword [ebp - 0xbc]
add esp, 4
test eax, eax
je 0x459937
inc ecx
mov dword [ebp - 0xbc], ecx
mov al, byte [ecx]
test al, al
jne 0x459914
cmp byte [ebp - 0xb0], 0
jne 0x459a36
test ecx, ecx
je 0x459a36
mov al, byte [ecx]
test al, al
je 0x459a36
cmp ecx, dword [ebp - 0xb8]
jb 0x459a36
cmp ecx, dword [ebp - 0xb4]
jae 0x459a36
cmp al, 0x2f
jne 0x45998a
cmp byte [ecx + 1], al
jne 0x45998a
cmp al, 0xa
je 0x459910
inc ecx
mov dword [ebp - 0xbc], ecx
mov al, byte [ecx]
test al, al
jne 0x459977
jmp 0x459910
test ecx, ecx
je 0x459a36
test al, al
je 0x459a36
cmp ecx, dword [ebp - 0xb8]
jb 0x459a36
cmp ecx, dword [ebp - 0xb4]
jae 0x459a36
cmp al, 0x7b
je 0x459a85
cmp al, 0x7d
je 0x459a85
cmp al, 0x22
jne 0x459a1b
lea ebx, [ecx + 1]
mov byte [ebp + 0xb], 1
mov eax, ebx
xor edx, edx
mov dword [ebp - 0xbc], eax
mov cl, byte [eax]
test cl, cl
je 0x459a1b
lea ecx, [ecx]
mov esi, edx
cmp cl, 0x5c
jne 0x4599f0
inc eax
mov dword [ebp - 0xbc], eax
jmp 0x4599f9
cmp cl, 0x22
je 0x459a7e
inc edx
cmp cl, 0x5c
mov ecx, eax
mov al, byte [eax]
cmovne edx, esi
sub ecx, edx
mov byte [ecx], al
mov eax, dword [ebp - 0xbc]
inc eax
mov dword [ebp - 0xbc], eax
mov cl, byte [eax]
test cl, cl
jne 0x4599e0
mov eax, dword [ebp - 0xc0]
mov eax, dword [eax + 0x10]
cmp eax, method.CKeyValuesParser.virtual_16
jne 0x459ceb
mov byte [ebp - 0xb0], 1
mov bl, 1
push dword [ebp - 0x10]
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryW]
lea ecx, [ebp - 0xc0]
call fcn.004582f0
mov edi, dword [ebp - 0x24]
push edi
call fcn.00575f14
push dword [ebp - 0x10]
call fcn.00575f14
add esp, 8
lea ecx, [ebp - 0xe8]
call fcn.0046a920
mov ecx, dword [ebp - 0xc]
mov al, bl
pop edi
pop esi
mov dword fs:[0], ecx
pop ebx
mov esp, ebp
pop ebp
ret
sub eax, edx
mov byte [eax], 0
jmp 0x459a91
mov ebx, ecx
inc ecx
mov dword [ebp - 0xbc], ecx
mov byte [ecx], 0
mov eax, dword [ebp - 0xbc]
inc eax
mov dword [ebp - 0xbc], eax
test ebx, ebx
je 0x459a36
mov cl, byte [ebx]
cmp cl, 0x7d
jne 0x459ab1
cmp byte [ebp + 0xb], 0
je 0x459a36
jmp 0x459ac3
cmp byte [ebp + 0xb], 0
je 0x459d00
test cl, cl
je 0x459d00
cmp byte [ebp - 0xb0], 0
mov byte [ebp + 0xb], 0
jne 0x459d00
test eax, eax
je 0x459d00
mov cl, byte [eax]
test cl, cl
je 0x459d00
cmp eax, dword [ebp - 0xb8]
jb 0x459d00
cmp eax, dword [ebp - 0xb4]
jae 0x459d00
mov edi, edi
test cl, cl
je 0x459b27
movsx eax, cl
push eax
call fcn.0056fe60
add esp, 4
test eax, eax
mov eax, dword [ebp - 0xbc]
je 0x459b27
inc eax
mov dword [ebp - 0xbc], eax
mov cl, byte [eax]
test cl, cl
jne 0x459b04
cmp byte [ebp - 0xb0], 0
jne 0x459d00
test eax, eax
je 0x459d00
mov cl, byte [eax]
test cl, cl
je 0x459d00
cmp eax, dword [ebp - 0xb8]
jb 0x459d00
cmp eax, dword [ebp - 0xb4]
jae 0x459d00
cmp cl, 0x2f
jne 0x459b7f
cmp byte [eax + 1], cl
jne 0x459b7f
cmp cl, 0xa
je 0x459b00
inc eax
mov dword [ebp - 0xbc], eax
mov cl, byte [eax]
test cl, cl
jne 0x459b68
jmp 0x459b00
test eax, eax
je 0x459d00
test cl, cl
je 0x459d00
cmp eax, dword [ebp - 0xb8]
jb 0x459d00
cmp eax, dword [ebp - 0xb4]
jae 0x459d00
cmp cl, 0x7b
je 0x459c2e
cmp cl, 0x7d
je 0x459c2e
cmp cl, 0x22
jne 0x459c08
lea esi, [eax + 1]
mov byte [ebp + 0xb], 1
mov eax, esi
xor edx, edx
mov dword [ebp - 0xbc], eax
mov cl, byte [eax]
test cl, cl
je 0x459c08
mov edi, edx
cmp cl, 0x5c
jne 0x459be1
inc eax
mov dword [ebp - 0xbc], eax
jmp 0x459be6
cmp cl, 0x22
je 0x459c2a
inc edx
cmp cl, 0x5c
mov ecx, eax
mov al, byte [eax]
cmovne edx, edi
sub ecx, edx
mov byte [ecx], al
mov eax, dword [ebp - 0xbc]
inc eax
mov dword [ebp - 0xbc], eax
mov cl, byte [eax]
test cl, cl
jne 0x459bd1
mov eax, dword [ebp - 0xc0]
mov eax, dword [eax + 0x10]
cmp eax, method.CKeyValuesParser.virtual_16
jne 0x459cf8
mov byte [ebp - 0xb0], 1
xor bl, bl
jmp 0x459a38
sub eax, edx
jmp 0x459c37
mov esi, eax
inc eax
mov dword [ebp - 0xbc], eax
mov byte [eax], 0
inc dword [ebp - 0xbc]
test esi, esi
je 0x459d00
cmp byte [esi], 0x7b
jne 0x459cbb
cmp byte [ebp + 0xb], 0
jne 0x459cbb
mov eax, dword [ebp - 0xc0]
lea ecx, [ebp - 0xc0]
push ebx
mov eax, dword [eax + 4]
cmp eax, fcn.004595f0
jne 0x459c71
call fcn.004595f0
jmp 0x459c73
call eax
test al, al
je 0x459d00
push 1
lea ecx, [ebp - 0xc0]
call fcn.00458960
test al, al
je 0x459d00
mov eax, dword [ebp - 0xc0]
lea ecx, [ebp - 0xc0]
push ebx
mov eax, dword [eax + 8]
cmp eax, fcn.004584f0
jne 0x459caa
call fcn.004584f0
jmp 0x459cac
call eax
test al, al
je 0x459d00
mov ecx, dword [ebp - 0xbc]
jmp 0x4598d0
mov eax, dword [ebp - 0xc0]
lea ecx, [ebp - 0xc0]
push esi
push ebx
mov eax, dword [eax + 0xc]
cmp eax, fcn.00458c30
jne 0x459cda
call fcn.00458c30
jmp 0x459cdc
call eax
test al, al
je 0x459d00
mov ecx, dword [ebp - 0xbc]
jmp 0x4598d0
lea ecx, [ebp - 0xc0]
call eax
jmp 0x459a36
lea ecx, [ebp - 0xc0]
call eax
xor bl, bl
jmp 0x459a38