Function at 0x405b50
Capabilities:
Check if file exists
Get file attributes
Read file on windows

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x144
mov eax, dword [0x47e064]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [ebp + 0xc]
push ebx
push esi
mov esi, dword [ebp + 8]
push edi
mov edi, ecx
mov dword [ebp - 0xd4], esi
push 0x46a4c8
mov ecx, eax
mov dword [ebp - 0xc4], eax
call fcn.0040b360
cmp dword [edi + 0x158], 0
je 0x405bc4
push 0xffffffffffffffff
push str.Preparing...
lea ecx, [ebp - 0x38]
call fcn.00402bb0
mov ecx, dword [edi + 0x158]
lea edx, [ebp - 0x38]
push edx
mov eax, dword [ecx]
call dword [eax + 8]
mov eax, dword [ebp - 0x38]
test eax, eax
je 0x405bc4
lea ecx, [ebp - 0x2c]
cmp eax, ecx
je 0x405bc4
push eax
call fcn.0043817b
add esp, 4
sub esp, 0x2c
lea ebx, [edi + 0x15c]
mov ecx, esp
push ebx
call fcn.00401a50
lea eax, [ebp - 0xec]
mov ecx, edi
push eax
call fcn.00405840
mov ecx, dword [ebp - 0xec]
test ecx, ecx
jns 0x405c04
mov dword [esi], ecx
mov eax, esi
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0042d480
mov esp, ebp
pop ebp
ret 8
cmp byte [edi + 0x18b], 0
lea ecx, [ebp - 0x38]
mov eax, 0x46a424
mov dword [ebp - 0xd0], str.install.log
mov esi, 0x46a414
mov dword [ebp - 0xcc], 0xb
cmove esi, eax
lea eax, [ebp - 0xd0]
push eax
call fcn.00403550
lea eax, [ebp - 0x38]
push eax
lea eax, [ebp - 0xbc]
push ebx
push eax
call fcn.004049b0
mov eax, dword [ebp - 0x38]
add esp, 0xc
test eax, eax
je 0x405c66
lea ecx, [ebp - 0x2c]
cmp eax, ecx
je 0x405c66
push eax
call fcn.0043817b
add esp, 4
push 0
push esi
lea eax, [ebp - 0xbc]
push eax
lea ecx, [ebp - 0xc0]
call fcn.004035e0
mov eax, dword [ebp - 0xbc]
test eax, eax
je 0x405c98
lea ecx, [ebp - 0xb0]
cmp eax, ecx
je 0x405c98
push eax
call fcn.0043817b
add esp, 4
cmp dword [ebp - 0xc0], 0xffffffff
je 0x405cd7
push 0
lea eax, [ebp - 0x38]
push str.Reading_archive_header...
push eax
call fcn.0040b5a0
add esp, 8
lea ecx, [ebp - 0xc0]
push eax
call fcn.004033b0
mov eax, dword [ebp - 0x38]
test eax, eax
je 0x405cd7
lea ecx, [ebp - 0x2c]
cmp eax, ecx
je 0x405cd7
push eax
call fcn.0043817b
add esp, 4
mov eax, dword [edi + 0x3c]
xor ecx, ecx
add eax, dword [edi + 0x138]
push 0
adc ecx, dword [edi + 0x13c]
mov dword [ebp - 0xe0], eax
mov dword [ebp - 0xdc], ecx
call dword [sym.imp.KERNEL32.dll_SetLastError]
push 0
lea eax, [ebp - 0xdc]
push eax
push dword [ebp - 0xe0]
lea ebx, [edi + 0x130]
push dword [ebx]
call dword [sym.imp.KERNEL32.dll_SetFilePointer]
mov esi, dword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [ebp - 0xe0], eax
call esi
test eax, eax
je 0x405d2d
call esi
push 0
lea eax, [ebp - 0xc8]
mov dword [ebp - 0xc8], 0
push eax
push 5
lea eax, [ebp - 0xc]
push eax
push dword [ebx]
call dword [sym.imp.KERNEL32.dll_ReadFile]
test eax, eax
jne 0x405d5c
call esi
mov eax, dword [ebp - 0xc8]
jmp 0x405d6a
mov eax, dword [ebp - 0xc8]
test eax, eax
je 0x406d1c
cmp eax, 5
jne 0x406d1c
push 0xc8
call fcn.0042cd1a
add esp, 4
test eax, eax
je 0x405d9f
mov ecx, eax
call fcn.0040e150
mov esi, eax
mov dword [ebp - 0xd8], esi
test esi, esi
je 0x405da7
mov ecx, dword [esi]
push esi
call dword [ecx + 4]
jmp 0x405da7
xor esi, esi
mov dword [ebp - 0xd8], esi
mov ecx, dword [esi + 4]
lea eax, [esi + 4]
push 5
lea edx, [ebp - 0xc]
push edx
push eax
call dword [ecx + 0xc]
test eax, eax
je 0x405dd2
mov edi, dword [ebp - 0xd4]
push esi
mov dword [edi], 0x8007054f
mov eax, dword [esi]
call dword [eax + 8]
jmp 0x406d28
cmp dword [ebp - 0xc0], 0xffffffff
je 0x405e11
push 0
lea eax, [ebp - 0x38]
push str.Starting_unpacking...
push eax
call fcn.0040b5a0
add esp, 8
lea ecx, [ebp - 0xc0]
push eax
call fcn.004033b0
mov eax, dword [ebp - 0x38]
test eax, eax
je 0x405e11
lea ecx, [ebp - 0x2c]
cmp eax, ecx
je 0x405e11
push eax
call fcn.0043817b
add esp, 4
cmp dword [edi + 0x158], 0
je 0x405e4f
push 0xffffffffffffffff
push str.Unpacking...
lea ecx, [ebp - 0x38]
call fcn.00402bb0
mov ecx, dword [edi + 0x158]
lea edx, [ebp - 0x38]
push edx
mov eax, dword [ecx]
call dword [eax + 8]
mov eax, dword [ebp - 0x38]
test eax, eax
je 0x405e4f
lea ecx, [ebp - 0x2c]
cmp eax, ecx
je 0x405e4f
push eax
call fcn.0043817b
add esp, 4
lea eax, [ebp - 0xc0]
mov dword [ebp - 0x144], 0x46ab14
mov dword [ebp - 0x120], eax
lea ecx, [ebp - 0x144]
mov eax, dword [ebp - 0xc4]
xorps xmm0, xmm0
push ecx
mov dword [ebp - 0x11c], eax
lea ecx, [ebp - 0xf4]
mov eax, dword [edi + 0x40]
push ecx
mov dword [ebp - 0xfc], eax
lea ecx, [ebp - 0xfc]
mov eax, dword [edi + 0x44]
push ecx
mov dword [ebp - 0xf8], eax
lea ecx, [ebp - 0x140]
mov eax, dword [edi + 0x140]
mov dword [ebp - 0xf4], eax
mov eax, dword [edi + 0x144]
push ecx
mov dword [ebp - 0x140], 0x46ab28
lea ecx, [ebp - 0x108]
mov dword [ebp - 0x12c], edi
mov dword [ebp - 0x13c], 0
movlpd qword [ebp - 0x134], xmm0
mov dword [ebp - 0x128], 0
mov dword [ebp - 0x124], 0
mov dword [ebp - 0x10c], 0x46ab3c
mov dword [ebp - 0x108], 0x46ab50
mov dword [ebp - 0x100], ebx
mov dword [ebp - 0x104], 1
mov dword [ebp - 0xf0], eax
mov eax, dword [esi]
push ecx
push esi
call dword [eax + 0xc]
cmp dword [ebp - 0xc0], 0xffffffff
mov esi, eax
je 0x405f63
push 0
push esi
lea eax, [ebp - 0x38]
push str.Unpacking_complete:_code_0x_08x...
push eax
call fcn.0040b5a0
add esp, 0xc
lea ecx, [ebp - 0xc0]
push eax
call fcn.004033b0
mov eax, dword [ebp - 0x38]
test eax, eax
je 0x405f63
lea ecx, [ebp - 0x2c]
cmp eax, ecx
je 0x405f63
push eax
call fcn.0043817b
add esp, 4
test esi, esi
jns 0x405f80
mov ecx, dword [ebp - 0xd8]
mov edi, dword [ebp - 0xd4]
push ecx
mov dword [edi], esi
mov eax, dword [ecx]
call dword [eax + 8]
jmp 0x406d28
cmp dword [ebp - 0xc0], 0xffffffff
je 0x405fc5
push 0
push dword [edi + 0x12c]
lea eax, [ebp - 0x38]
push str.Creating__d_hardlinks...
push eax
call fcn.0040b5a0
add esp, 0xc
lea ecx, [ebp - 0xc0]
push eax
call fcn.004033b0
mov eax, dword [ebp - 0x38]
test eax, eax
je 0x405fc5
lea ecx, [ebp - 0x2c]
cmp eax, ecx
je 0x405fc5
push eax
call fcn.0043817b
add esp, 4
xor ecx, ecx
mov dword [ebp - 0xc8], ecx
cmp dword [edi + 0x12c], ecx
jbe 0x406481
nop dword [eax]
mov eax, dword [edi + 0x124]
mov ebx, dword [eax + ecx*8 + 4]
add ebx, dword [edi + 4]
mov ecx, ebx
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x405ff2
sub ecx, edx
lea esi, [ecx + 1]
cmp ecx, 0x10
jb 0x40600e
push esi
call fcn.00438180
add esp, 4
jmp 0x406011
lea eax, [ebp - 0x74]
mov dword [ebp - 0x78], esi
mov esi, ebx
mov dword [ebp - 0x80], eax
mov dword [ebp - 0x7c], 0
mov byte [eax], 0
lea ecx, [esi + 1]
mov al, byte [esi]
inc esi
test al, al
jne 0x406026
sub esi, ecx
push esi
push ebx
push dword [ebp - 0x80]
call fcn.0042ec90
mov eax, dword [ebp - 0x78]
add esp, 0xc
cmp esi, eax
jb 0x406046
lea esi, [eax - 1]
test eax, eax
jne 0x40604e
xor esi, esi
jmp 0x406055
mov eax, dword [ebp - 0x80]
mov byte [esi + eax], 0
lea eax, [ebp - 0x80]
mov dword [ebp - 0x7c], esi
push eax
lea eax, [ebp - 0x64]
push eax
call fcn.004095b0
push eax
lea eax, [edi + 0x15c]
push eax
lea eax, [ebp - 0x38]
push eax
call fcn.004049b0
mov eax, dword [ebp - 0x64]
add esp, 0x14
test eax, eax
je 0x406090
lea ecx, [ebp - 0x58]
cmp eax, ecx
je 0x406090
push eax
call fcn.0043817b
add esp, 4
mov eax, dword [ebp - 0x80]
test eax, eax
je 0x4060a7
lea ecx, [ebp - 0x74]
cmp eax, ecx
je 0x4060a7
push eax
call fcn.0043817b
add esp, 4
mov eax, dword [edi + 0x124]
mov ebx, dword [ebp - 0xc8]
mov ebx, dword [eax + ebx*8]
add ebx, dword [edi + 4]
mov ecx, ebx
lea edx, [ecx + 1]
nop
mov al, byte [ecx]
inc ecx
test al, al
jne 0x4060c0
sub ecx, edx
lea esi, [ecx + 1]
cmp ecx, 0x10
jb 0x4060dc
push esi
call fcn.00438180
add esp, 4
jmp 0x4060df
lea eax, [ebp - 0x74]
mov dword [ebp - 0x78], esi
mov esi, ebx
mov dword [ebp - 0x80], eax
mov dword [ebp - 0x7c], 0
mov byte [eax], 0
lea ecx, [esi + 1]
mov al, byte [esi]
inc esi
test al, al
jne 0x4060f4
sub esi, ecx
push esi
push ebx
push dword [ebp - 0x80]
call fcn.0042ec90
mov eax, dword [ebp - 0x78]
add esp, 0xc
cmp esi, eax
jb 0x406114
lea esi, [eax - 1]
test eax, eax
jne 0x40611c
xor esi, esi
jmp 0x406123
mov eax, dword [ebp - 0x80]
mov byte [esi + eax], 0
lea eax, [ebp - 0x80]
mov dword [ebp - 0x7c], esi
push eax
lea eax, [ebp - 0x64]
push eax
call fcn.004095b0
push eax
lea eax, [edi + 0x15c]
push eax
lea eax, [ebp - 0xbc]
push eax
call fcn.004049b0
mov eax, dword [ebp - 0x64]
add esp, 0x14
test eax, eax
je 0x406161
lea ecx, [ebp - 0x58]
cmp eax, ecx
je 0x406161
push eax
call fcn.0043817b
add esp, 4
mov eax, dword [ebp - 0x80]
test eax, eax
je 0x406178
lea ecx, [ebp - 0x74]
cmp eax, ecx
je 0x406178
push eax
call fcn.0043817b
add esp, 4
mov eax, dword [ebp - 0xbc]
mov ecx, 0x4777b4
push 0
push 0
push 3
push 0
test eax, eax
push 3
cmovne ecx, eax
push 0
push ecx
call dword [sym.imp.KERNEL32.dll_CreateFileW]
cmp eax, 0xffffffff
je 0x4061bd
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
lea eax, [ebp - 0xbc]
push eax
lea eax, [ebp - 0x110]
push eax
call fcn.00405980
add esp, 8
push 0xffffffffffffffff
push 0x5c
lea ecx, [ebp - 0xbc]
call fcn.0040b530
xor esi, esi
cmp eax, 0xffffffff
lea ecx, [eax + 1]
mov eax, dword [ebp - 0x38]
cmovne esi, ecx
test eax, eax
mov ecx, 0x4777b4
cmovne ecx, eax
push ecx
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
je 0x4062f3
test al, 0x10
je 0x4062f3
mov edx, dword [edi + 0x158]
test edx, edx
je 0x4062ae
mov ecx, dword [ebp - 0xb8]
cmp esi, ecx
jb 0x40622a
mov dword [ebp - 0xe8], 0
mov dword [ebp - 0xe4], 0
jmp 0x406241
mov eax, dword [ebp - 0xbc]
sub ecx, esi
mov dword [ebp - 0xe4], ecx
lea eax, [eax + esi*2]
mov dword [ebp - 0xe8], eax
mov esi, dword [edx]
lea eax, [ebp - 0xe8]
push 0x46ac34
push eax
lea eax, [ebp - 0x90]
push str.Copying
push eax
call fcn.004032c0
add esp, 0xc
push eax
lea eax, [ebp - 0x64]
push eax
call fcn.00403260
mov ecx, dword [edi + 0x158]
add esp, 0xc
push eax
call dword [esi + 8]
mov eax, dword [ebp - 0x64]
test eax, eax
je 0x406291
lea ecx, [ebp - 0x58]
cmp eax, ecx
je 0x406291
push eax
call fcn.0043817b
add esp, 4
mov eax, dword [ebp - 0x90]
test eax, eax
je 0x4062ae
lea ecx, [ebp - 0x84]
cmp eax, ecx
je 0x4062ae
push eax
call fcn.0043817b
add esp, 4
movzx eax, byte [edi + 0x188]
push eax
push dword [ebp - 0xc4]
lea eax, [ebp - 0xc0]
push eax
sub esp, 0x2c
lea eax, [ebp - 0xbc]
mov ecx, esp
push eax
call fcn.00401a50
sub esp, 0x2c
lea eax, [ebp - 0x38]
mov ecx, esp
push eax
call fcn.00401a50
lea eax, [ebp - 0x114]
push eax
call fcn.00404b90
jmp 0x4063e5
mov edx, dword [edi + 0x158]
test edx, edx
je 0x4063a5
mov ecx, dword [ebp - 0xb8]
cmp esi, ecx
jb 0x406321
mov dword [ebp - 0xd0], 0
mov dword [ebp - 0xcc], 0
jmp 0x406338
mov eax, dword [ebp - 0xbc]
sub ecx, esi
mov dword [ebp - 0xcc], ecx
lea eax, [eax + esi*2]
mov dword [ebp - 0xd0], eax
mov esi, dword [edx]
lea eax, [ebp - 0xd0]
push 0x46ac34
push eax
lea eax, [ebp - 0x90]
push str.Hardlinking
push eax
call fcn.004032c0
add esp, 0xc
push eax
lea eax, [ebp - 0x64]
push eax
call fcn.00403260
mov ecx, dword [edi + 0x158]
add esp, 0xc
push eax
call dword [esi + 8]
mov eax, dword [ebp - 0x64]
test eax, eax
je 0x406388
lea ecx, [ebp - 0x58]
cmp eax, ecx
je 0x406388
push eax
call fcn.0043817b
add esp, 4
mov eax, dword [ebp - 0x90]
test eax, eax
je 0x4063a5
lea ecx, [ebp - 0x84]
cmp eax, ecx
je 0x4063a5
push eax
call fcn.0043817b
add esp, 4
push dword [ebp - 0xc4]
lea eax, [ebp - 0xc0]
push eax
movzx eax, byte [edi + 0x188]
push eax
sub esp, 0x2c
lea eax, [ebp - 0xbc]
mov ecx, esp
push eax
call fcn.00401a50
sub esp, 0x2c
lea eax, [ebp - 0x38]
mov ecx, esp
push eax
call fcn.00401a50
lea eax, [ebp - 0xdc]
push eax
call fcn.00406f10
mov eax, dword [eax]
add esp, 0x68
test eax, eax
jns 0x406434
push eax
lea eax, [ebp - 0x90]
push eax
call fcn.004027d0
add esp, 8
lea eax, [ebp - 0x90]
lea ecx, [edi + 0x14c]
push eax
lea eax, [ebp - 0xbc]
push eax
call fcn.00403500
mov eax, dword [ebp - 0x90]
test eax, eax
je 0x406434
lea ecx, [ebp - 0x84]
cmp eax, ecx
je 0x406434
push eax
call fcn.0043817b
add esp, 4
mov eax, dword [ebp - 0xbc]
test eax, eax
je 0x406451
lea ecx, [ebp - 0xb0]
cmp eax, ecx
je 0x406451
push eax
call fcn.0043817b
add esp, 4
mov eax, dword [ebp - 0x38]
test eax, eax
je 0x406468
lea ecx, [ebp - 0x2c]
cmp eax, ecx
je 0x406468
push eax
call fcn.0043817b
add esp, 4
mov ecx, dword [ebp - 0xc8]
inc ecx
mov dword [ebp - 0xc8], ecx
cmp ecx, dword [edi + 0x12c]
jb 0x405fe0
cmp dword [ebp - 0xc0], 0xffffffff
je 0x4064c0
push 0
lea eax, [ebp - 0x64]
push str.Updating_registry...
push eax
call fcn.0040b5a0
add esp, 8
lea ecx, [ebp - 0xc0]
push eax
call fcn.004033b0
mov eax, dword [ebp - 0x64]
test eax, eax
je 0x4064c0
lea ecx, [ebp - 0x58]
cmp eax, ecx
je 0x4064c0
push eax
call fcn.0043817b
add esp, 4
cmp byte [edi + 0x98], 0
lea edx, [edi + 0x98]
mov esi, dword [sym.imp.ADVAPI32.dll_RegCreateKeyExW]
mov ebx, dword [sym.imp.ADVAPI32.dll_RegCloseKey]
je 0x40684b
mov ecx, edx
lea eax, [ecx + 1]
mov dword [ebp - 0xc8], eax
nop word [eax + eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x4064f0
sub ecx, dword [ebp - 0xc8]
lea eax, [ebp - 0xd0]
push eax
lea eax, [ebp - 0x90]
mov dword [ebp - 0xd0], edx
push eax
mov dword [ebp - 0xcc], ecx
call fcn.00401300
mov eax, dword [ebp - 0x90]
mov ecx, 0x4777b4
test eax, eax
cmovne ecx, eax
lea eax, [ebp - 0xbc]
push ecx
push str.SOFTWAREFree_Software_Foundation_s
push eax
call fcn.0040b5a0
mov eax, dword [ebp - 0xbc]
lea edx, [ebp - 0xc4]
add esp, 0x14
mov dword [ebp - 0xc4], 0
test eax, eax
mov ecx, 0x4777b4
cmovne ecx, eax
xor eax, eax
cmp byte [edi + 0x18a], al
push 0
push edx
push 0
push 0xf003f
push 0
push 0
push 0
setne al
add eax, 0x80000001
push ecx
push eax
call esi
mov esi, eax
test esi, esi
jle 0x406594
movzx esi, si
or esi, 0x80070000
cmp dword [ebp - 0xc0], 0xffffffff
je 0x4065e5
mov eax, dword [ebp - 0xbc]
mov ecx, 0x4777b4
test eax, eax
push 0
cmovne ecx, eax
lea eax, [ebp - 0x64]
push esi
push ecx
push str.CreateKey__s_____d
push eax
call fcn.0040b5a0
add esp, 0x10
lea ecx, [ebp - 0xc0]
push eax
call fcn.004033b0
mov eax, dword [ebp - 0x64]
test eax, eax
je 0x4065e5
lea ecx, [ebp - 0x58]
cmp eax, ecx
je 0x4065e5
push eax
call fcn.0043817b
add esp, 4
test esi, esi
jns 0x406648
mov edi, dword [ebp - 0xd4]
push dword [ebp - 0xc4]
mov dword [edi], esi
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov eax, dword [ebp - 0xbc]
test eax, eax
je 0x40661a
lea ecx, [ebp - 0xb0]
cmp eax, ecx
je 0x40661a
push eax
call fcn.0043817b
add esp, 4
mov eax, dword [ebp - 0x90]
test eax, eax
je 0x406637
lea ecx, [ebp - 0x84]
cmp eax, ecx
je 0x406637
push eax
call fcn.0043817b
add esp, 4
mov ecx, dword [ebp - 0xd8]
push ecx
mov eax, dword [ecx]
call dword [eax + 8]
jmp 0x406d28
lea eax, [ebp - 0xc4]
mov dword [ebp - 0xd0], str.BINUTILS
mov dword [ebp - 0xcc], eax
lea esi, [edi + 0x15c]
mov eax, dword [esi]
mov ecx, 0x4777b4
push 1
push dword [esi + 4]
test eax, eax
cmovne ecx, eax
lea eax, [ebp - 0xdc]
push ecx
push eax
lea ecx, [ebp - 0xd0]
call fcn.0040b1e0
lea eax, [ebp - 0xc4]
mov dword [ebp - 0xd0], 0x46aec8
mov dword [ebp - 0xcc], eax
mov ecx, 0x4777b4
mov eax, dword [esi]
test eax, eax
push 1
push dword [esi + 4]
cmovne ecx, eax
lea eax, [ebp - 0xdc]
push ecx
push eax
lea ecx, [ebp - 0xd0]
call fcn.0040b1e0
lea eax, [ebp - 0xc4]
mov dword [ebp - 0xd0], 0x46aed0
mov dword [ebp - 0xcc], eax
mov ecx, 0x4777b4
mov eax, dword [esi]
test eax, eax
push 1
push dword [esi + 4]
cmovne ecx, eax
lea eax, [ebp - 0xdc]
push ecx
push eax
lea ecx, [ebp - 0xd0]
call fcn.0040b1e0
push 0
lea ecx, [ebp - 0xc8]
mov dword [ebp - 0xc8], 0
push ecx
push 0
push 0xf003f
xor eax, eax
cmp byte [edi + 0x18a], al
push 0
push 0
push 0
setne al
add eax, 0x80000001
push str.SOFTWARESysprogsGNUToolchains
push eax
call dword [sym.imp.ADVAPI32.dll_RegCreateKeyExW]
mov esi, eax
test esi, esi
jle 0x406747
movzx esi, si
or esi, 0x80070000
cmp dword [ebp - 0xc0], 0xffffffff
je 0x406787
push 0
push esi
lea eax, [ebp - 0x64]
push str.CreateKey_SOFTWARESysprogsGNUToolchains_____d
push eax
call fcn.0040b5a0
add esp, 0xc
lea ecx, [ebp - 0xc0]
push eax
call fcn.004033b0
mov eax, dword [ebp - 0x64]
test eax, eax
je 0x406787
lea ecx, [ebp - 0x58]
cmp eax, ecx
je 0x406787
push eax
call fcn.0043817b
add esp, 4
test esi, esi
jns 0x4067ae
mov edi, dword [ebp - 0xd4]
push dword [ebp - 0xc8]
mov dword [edi], esi
mov esi, dword [sym.imp.ADVAPI32.dll_RegCloseKey]
call esi
push dword [ebp - 0xc4]
call esi
jmp 0x4065fd
mov eax, dword [ebp - 0x90]
mov ecx, 0x4777b4
test eax, eax
push 1
push dword [edi + 0x160]
cmovne ecx, eax
lea eax, [ebp - 0xc8]
mov dword [ebp - 0xcc], eax
mov eax, dword [edi + 0x15c]
test eax, eax
mov dword [ebp - 0xd0], ecx
mov ecx, 0x4777b4
cmovne ecx, eax
lea eax, [ebp - 0xdc]
push ecx
push eax
lea ecx, [ebp - 0xd0]
call fcn.0040b1e0
push dword [ebp - 0xc8]
call ebx
push dword [ebp - 0xc4]
call ebx
mov eax, dword [ebp - 0xbc]
test eax, eax
je 0x406828
lea ecx, [ebp - 0xb0]
cmp eax, ecx
je 0x406828
push eax
call fcn.0043817b
add esp, 4
mov eax, dword [ebp - 0x90]
test eax, eax
je 0x406845
lea ecx, [ebp - 0x84]
cmp eax, ecx
je 0x406845
push eax
call fcn.0043817b
add esp, 4
mov esi, dword [sym.imp.ADVAPI32.dll_RegCreateKeyExW]
cmp byte [edi + 0x189], 0
je 0x406ba1
cmp byte [edi + 0x18a], 0
lea eax, [ebp - 0xc4]
push 0
push eax
push 0
push 0xf003f
push 0
push 0
mov dword [ebp - 0xc4], 0
push 0
je 0x406a27
push str.SystemCurrentControlSetControlSession_ManagerEnvironment
push reloc.OLEAUT32.dll_SysReAllocString
call esi
mov esi, eax
test esi, esi
jle 0x4068a0
movzx esi, si
or esi, 0x80070000
cmp dword [ebp - 0xc0], 0xffffffff
je 0x4068d1
push 0
push esi
lea eax, [ebp - 0x64]
push str.SystemCurrentControlSetControlSession_ManagerEnvironment_____d
push eax
call fcn.0040b5a0
add esp, 0xc
lea ecx, [ebp - 0xc0]
push eax
call fcn.004033b0
lea ecx, [ebp - 0x64]
call fcn.00401420
test esi, esi
jns 0x4068f6
mov edi, dword [ebp - 0xd4]
push dword [ebp - 0xc4]
mov dword [edi], esi
call ebx
mov ecx, dword [ebp - 0xd8]
push ecx
mov eax, dword [ecx]
call dword [eax + 8]
jmp 0x406d28
lea eax, [ebp - 0xc4]
mov dword [ebp - 0xd0], str.Path
mov dword [ebp - 0xcc], eax
lea ecx, [ebp - 0xd0]
lea eax, [ebp - 0x64]
push eax
call fcn.00403c30
lea eax, [ebp - 0x64]
push eax
lea ecx, [ebp - 0x38]
call fcn.00401a50
lea ecx, [ebp - 0x64]
call fcn.00401420
push str._bin
lea esi, [edi + 0x15c]
lea eax, [ebp - 0xbc]
push esi
push eax
call fcn.00403260
add esp, 0xc
lea eax, [ebp - 0xbc]
lea ecx, [ebp - 0x38]
push 0
push eax
call fcn.0040b430
cmp eax, 0xffffffff
jne 0x406a07
push 0x46b0a0
lea ecx, [ebp - 0x38]
call fcn.00403ce0
lea eax, [ebp - 0xbc]
push eax
lea ecx, [ebp - 0x38]
call fcn.0040b260
mov eax, dword [ebp - 0x38]
mov ecx, 0x4777b4
test eax, eax
mov dword [ebp - 0xd0], str.Path
cmovne ecx, eax
lea eax, [ebp - 0xc4]
mov dword [ebp - 0xcc], eax
lea eax, [ebp - 0xdc]
push ecx
push eax
lea ecx, [ebp - 0xd0]
call fcn.004045d0
cmp dword [edi + 0x158], 0
je 0x4069e5
push 0xffffffffffffffff
push str.Updating_environment_variables...
lea ecx, [ebp - 0x64]
call fcn.00402bb0
mov ecx, dword [edi + 0x158]
lea edx, [ebp - 0x64]
push edx
mov eax, dword [ecx]
call dword [eax + 8]
lea ecx, [ebp - 0x64]
call fcn.00401420
lea eax, [ebp - 0xc8]
push eax
push 0x3e8
push 0
push str.Environment
push 1
push 0x1a
push 0xffff
call dword [sym.imp.USER32.dll_SendMessageTimeoutW]
lea ecx, [ebp - 0xbc]
call fcn.00401420
lea ecx, [ebp - 0x38]
call fcn.00401420
push dword [ebp - 0xc4]
call ebx
jmp 0x406ba7
push str.Environment
push SysReAllocString
call esi
mov esi, eax
test esi, esi
jle 0x406a42
movzx esi, si
or esi, 0x80070000
cmp dword [ebp - 0xc0], 0xffffffff
je 0x406a73
push 0
push esi
lea eax, [ebp - 0x64]
push str.HKCUEnvironment_____d
push eax
call fcn.0040b5a0
add esp, 0xc
lea ecx, [ebp - 0xc0]
push eax
call fcn.004033b0
lea ecx, [ebp - 0x64]
call fcn.00401420
test esi, esi
jns 0x406a98
mov edi, dword [ebp - 0xd4]
push dword [ebp - 0xc4]
mov dword [edi], esi
call ebx
mov ecx, dword [ebp - 0xd8]
push ecx
mov eax, dword [ecx]
call dword [eax + 8]
jmp 0x406d28
lea eax, [ebp - 0xc4]
mov dword [ebp - 0xd0], str.Path
mov dword [ebp - 0xcc], eax
lea ecx, [ebp - 0xd0]
lea eax, [ebp - 0x64]
push eax
call fcn.00403c30
lea eax, [ebp - 0x64]
push eax
lea ecx, [ebp - 0x38]
call fcn.00401a50
lea ecx, [ebp - 0x64]
call fcn.00401420
push str._bin
lea esi, [edi + 0x15c]
lea eax, [ebp - 0xbc]
push esi
push eax
call fcn.00403260
add esp, 0xc
lea eax, [ebp - 0xbc]
lea ecx, [ebp - 0x38]
push 0
push eax
call fcn.0040b430
cmp eax, 0xffffffff
jne 0x406a07
push 0x46b0a0
lea ecx, [ebp - 0x38]
call fcn.00403ce0
lea eax, [ebp - 0xbc]
push eax
lea ecx, [ebp - 0x38]
call fcn.0040b260
mov eax, dword [ebp - 0x38]
mov ecx, 0x4777b4
test eax, eax
mov dword [ebp - 0xd0], str.Path
cmovne ecx, eax
lea eax, [ebp - 0xc4]
mov dword [ebp - 0xcc], eax
lea eax, [ebp - 0xdc]
push ecx
push eax
lea ecx, [ebp - 0xd0]
call fcn.004045d0
cmp dword [edi + 0x158], 0
je 0x406b87
push 0xffffffffffffffff
push str.Updating_environment_variables...
lea ecx, [ebp - 0x64]
call fcn.00402bb0
mov ecx, dword [edi + 0x158]
lea edx, [ebp - 0x64]
push edx
mov eax, dword [ecx]
call dword [eax + 8]
lea ecx, [ebp - 0x64]
call fcn.00401420
lea eax, [ebp - 0xc8]
push eax
push 0x3e8
push 0
push str.Environment
push 0
jmp 0x4069fa
lea esi, [edi + 0x15c]
cmp dword [edi + 0x158], 0
je 0x406be5
push 0xffffffffffffffff
push str.Installation_complete
lea ecx, [ebp - 0x38]
call fcn.00402bb0
mov ecx, dword [edi + 0x158]
lea edx, [ebp - 0x38]
push edx
mov eax, dword [ecx]
call dword [eax + 8]
mov eax, dword [ebp - 0x38]
test eax, eax
je 0x406be5
lea ecx, [ebp - 0x2c]
cmp eax, ecx
je 0x406be5
push eax
call fcn.0043817b
add esp, 4
cmp dword [ebp - 0xc0], 0xffffffff
je 0x406c24
push 0
lea eax, [ebp - 0x64]
push str.Installation_complete
push eax
call fcn.0040b5a0
add esp, 8
lea ecx, [ebp - 0xc0]
push eax
call fcn.004033b0
mov eax, dword [ebp - 0x64]
test eax, eax
je 0x406c24
lea ecx, [ebp - 0x58]
cmp eax, ecx
je 0x406c24
push eax
call fcn.0043817b
add esp, 4
cmp dword [edi + 0x150], 0
je 0x406cee
push 0
push 0x46a414
push str.warnings.txt
lea eax, [ebp - 0x64]
push esi
push eax
call fcn.00404b10
add esp, 0xc
lea ecx, [ebp - 0xc8]
push eax
call fcn.004035e0
mov eax, dword [ebp - 0x64]
test eax, eax
je 0x406c6d
lea ecx, [ebp - 0x58]
cmp eax, ecx
je 0x406c6d
push eax
call fcn.0043817b
add esp, 4
mov edi, dword [edi + 0x14c]
mov esi, dword [edi]
cmp esi, edi
je 0x406cd8
nop dword [eax]
mov eax, dword [esi + 0x34]
mov edx, 0x4777b4
test eax, eax
mov ecx, 0x4777b4
push 0
cmovne edx, eax
mov eax, dword [esi + 8]
test eax, eax
push edx
cmovne ecx, eax
lea eax, [ebp - 0x64]
push ecx
push str._s:__s_r_n
push eax
call fcn.0040b5a0
add esp, 0x10
lea ecx, [ebp - 0xc0]
push eax
call fcn.004033b0
mov eax, dword [ebp - 0x64]
test eax, eax
je 0x406cd2
lea ecx, [ebp - 0x58]
cmp eax, ecx
je 0x406cd2
push eax
call fcn.0043817b
add esp, 4
mov esi, dword [esi]
cmp esi, edi
jne 0x406c80
mov eax, dword [ebp - 0xc8]
mov ebx, dword [sym.imp.KERNEL32.dll_CloseHandle]
cmp eax, 0xffffffff
je 0x406cf4
push eax
call ebx
jmp 0x406cf4
mov ebx, dword [sym.imp.KERNEL32.dll_CloseHandle]
mov ecx, dword [ebp - 0xd8]
mov edi, dword [ebp - 0xd4]
push ecx
mov dword [edi], 0
mov eax, dword [ecx]
call dword [eax + 8]
mov eax, dword [ebp - 0xc0]
cmp eax, 0xffffffff
je 0x406d3a
push eax
call ebx
jmp 0x406d3a
mov edi, dword [ebp - 0xd4]
mov dword [edi], 0x8007001e
mov eax, dword [ebp - 0xc0]
cmp eax, 0xffffffff
je 0x406d3a
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov ecx, dword [ebp - 4]
mov eax, edi
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.0042d480
mov esp, ebp
pop ebp
ret 8