Function at 0x42a500
Capabilities:
Create directory
Create thread
Delete file
Get common file path

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x451d97
mov eax, dword fs:[0]
push eax
sub esp, 0x56c
mov eax, dword [0x468738]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov edi, ecx
xor esi, esi
mov dword [ebp - 0x578], edi
mov dword [ebp - method.CExtractThread.virtual_0], vtable.CExtractThread.0
mov dword [ebp - 0x56c], esi
mov dword [ebp - 0x570], 0xffffffff
push 0x104
lea eax, [ebp - 0x520]
push eax
mov dword [ebp - 4], esi
call dword [sym.imp.KERNEL32.dll_GetWindowsDirectoryW]
push str.temp
lea ecx, [ebp - 0x520]
push ecx
call dword [sym.imp.SHLWAPI.dll_PathAppendW]
lea edx, [ebp - 0x318]
push edx
push esi
push 0x45a440
lea eax, [ebp - 0x520]
push eax
call dword [sym.imp.KERNEL32.dll_GetTempFileNameW]
lea ecx, [ebp - 0x318]
push ecx
call dword [sym.imp.KERNEL32.dll_DeleteFileW]
lea eax, [ebp - 0x318]
lea edx, [eax + 2]
lea esp, [esp]
mov cx, word [eax]
add eax, 2
cmp cx, si
jne 0x42a5b0
sub eax, edx
sar eax, 1
lea ebx, [edi + 0xcd0]
push eax
lea eax, [ebp - 0x318]
mov esi, ebx
mov dword [ebp - 0x55c], ebx
call fcn.004065a0
xor esi, esi
push esi
push esi
lea eax, [ebp - 0x574]
push eax
push 0x429f60
push esi
lea edx, [ebp - 0x318]
push esi
mov dword [ebp - 0x568], edx
mov byte [ebp - 0x560], 1
call dword [sym.imp.KERNEL32.dll_CreateThread]
mov dword [ebp - 0x570], eax
test eax, eax
jne 0x42a61c
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov esi, eax
mov eax, dword [ebp - 0x570]
test esi, esi
jne 0x42aaa8
push 0xffffffffffffffff
push eax
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
cmp eax, 0xffffffff
jne 0x42a642
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov esi, eax
test esi, esi
jne 0x42aaa8
cmp dword [ebp - 0x564], 0
jne 0x42aaa8
mov edx, dword [edi]
mov eax, dword [edx + 4]
mov ecx, edi
call eax
mov eax, dword [edi + 0x10]
test eax, eax
jne 0x42aadb
mov eax, dword [edi + 0xcb4]
neg eax
sbb eax, eax
and eax, 0xe
test eax, eax
jne 0x42aadb
lea edx, [edi + 0x814]
push edx
call fcn.0042c340
mov esi, 8
cmp dword [ebx + 0x14], esi
jb 0x42a692
mov eax, dword [ebx]
jmp 0x42a694
mov eax, ebx
push eax
push str.__Source:__s
push 0x4699dc
xor eax, eax
call fcn.0042c820
add esp, 0xc
cmp dword [ebx + 0x14], esi
jb 0x42a6b2
mov eax, dword [ebx]
jmp 0x42a6b4
mov eax, ebx
push eax
lea eax, [ebp - 0x318]
push 0x104
push eax
call fcn.004394b3
add esp, 0xc
push str.Lang
lea ecx, [ebp - 0x318]
push ecx
call dword [sym.imp.SHLWAPI.dll_PathAppendW]
lea esi, [ebp - 0x318]
call fcn.0042d710
mov edx, dword [edi]
mov eax, dword [edx + 8]
mov ecx, edi
call eax
xor eax, eax
cmp dword [edi + 0xc], eax
je 0x42a7e2
mov dword [ebp - 0x530], eax
mov dword [ebp - 0x52c], eax
mov dword [ebp - 0x528], eax
lea esi, [ebp - 0x558]
mov byte [ebp - 4], 1
call fcn.00429d60
mov byte [ebp - 4], 2
cmp dword [eax + 0x14], 8
jb 0x42a727
mov eax, dword [eax]
push eax
push str.Error_in_command_line:__s
push 0x4699dc
mov eax, 2
call fcn.0042c820
add esp, 0xc
lea esi, [ebp - 0x558]
mov byte [ebp - 4], 1
call fcn.0040ff10
lea esi, [ebp - 0x558]
call fcn.00429d60
mov ecx, eax
lea ebx, [ebp - 0x530]
mov byte [ebp - 4], 3
call fcn.0040d470
mov ebx, 1
mov byte [ebp - 4], bl
call fcn.0040ff10
push 0x7f02
push 7
push 0x84
push 0x7d9
lea ecx, [ebp - 0x530]
lea edx, [ebx + 0x3a]
call fcn.00433220
add esp, 0x10
cmp eax, 7
jne 0x42a7cd
mov dword [0x469a00], 0xa001
call fcn.0042c760
mov ecx, dword [ebp - 0x570]
push ecx
mov dword [edi + 0x10], ebx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
lea esi, [ebp - 0x530]
call fcn.0040c920
jmp 0x42aae8
lea esi, [ebp - 0x530]
mov byte [ebp - 4], 0
call fcn.0040c920
mov ebx, dword [ebp - 0x55c]
push 0x45bdd4
call fcn.00402130
test eax, eax
je 0x42a7fa
call fcn.0042b6f0
jmp 0x42aa4a
push str.noinstall
call fcn.00402130
test eax, eax
je 0x42a814
mov esi, edi
call fcn.0042b200
jmp 0x42aa4a
cmp dword [ebx + 0x14], 8
jb 0x42a824
mov edx, dword [ebx]
mov dword [ebp - 0x568], edx
jmp 0x42a82a
mov dword [ebp - 0x568], ebx
lea esi, [ebp - 0x574]
mov byte [ebp - 0x560], 0
call fcn.00429f30
mov esi, eax
test esi, esi
jne 0x42aaa8
call fcn.00402500
test eax, eax
je 0x42a90f
mov eax, dword [ebp - 0x570]
push 0xffffffffffffffff
push eax
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
cmp eax, 0xffffffff
jne 0x42a877
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov esi, eax
test esi, esi
jne 0x42aaa8
cmp dword [ebp - 0x564], 0
jne 0x42aaa8
call fcn.00430aa0
test al, al
je 0x42a8e2
or ecx, 0xffffffff
mov edi, 0x5010100
call fcn.00430390
test al, al
je 0x42a8d6
lea esi, [ebp - 0x520]
call fcn.00430c90
push str.msls31.dll
mov eax, esi
push eax
call dword [sym.imp.SHLWAPI.dll_PathAppendW]
mov esi, dword [sym.imp.KERNEL32.dll_SetErrorMode]
push 0x8000
call esi
lea ecx, [ebp - 0x520]
push ecx
mov edi, eax
call dword [sym.imp.KERNEL32.dll_LoadLibraryW]
push edi
call esi
mov ebx, dword [ebp - 0x55c]
mov edi, dword [ebp - 0x578]
push 0
call dword [sym.imp.ole32.dll_CoInitialize]
mov edx, dword [edi]
mov eax, dword [edx + 0xc]
mov ecx, edi
call eax
push 0x45dab4
call fcn.00402130
test eax, eax
je 0x42a931
mov edx, dword [edi]
mov eax, dword [edx + 0x24]
mov ecx, edi
call eax
jmp 0x42aa4a
mov edx, dword [0x46aee0]
lea ecx, [ebp - 0x574]
push ecx
push 0x429fe0
push 0
push 0x64
push edx
call dword [sym.imp.USER32.dll_DialogBoxParamW]
jmp 0x42a877
push 0x45bd24
call fcn.00402130
test eax, eax
je 0x42a94b
mov eax, edi
call fcn.0042b240
jmp 0x42aa4a
push str.extract
call fcn.00402130
test eax, eax
je 0x42aa2b
mov eax, 0x45dab8
call fcn.0042c800
mov ecx, str.extract
call fcn.00402200
lea ecx, [ebp - 0x53c]
call fcn.00406690
mov byte [ebp - 4], 4
mov eax, dword [ebp - 0x53c]
mov esi, 8
cmp dword [ebp - 0x528], esi
jae 0x42a999
lea eax, [ebp - 0x53c]
push eax
push str.Extracting_to__s
push 0x4699dc
xor eax, eax
call fcn.0042c820
mov eax, dword [ebp - 0x53c]
add esp, 0xc
cmp dword [ebp - 0x528], esi
jae 0x42a9c2
lea eax, [ebp - 0x53c]
push 0
push eax
push 0
call dword [sym.imp.SHELL32.dll_SHCreateDirectoryExW]
mov ecx, dword [ebp - 0x53c]
cmp dword [ebp - 0x528], esi
jae 0x42a9e1
lea ecx, [ebp - 0x53c]
cmp dword [ebx + 0x14], esi
jb 0x42a9ea
mov eax, dword [ebx]
jmp 0x42a9ec
mov eax, ebx
push 1
push ecx
push eax
call fcn.00424cc0
add esp, 0xc
test eax, eax
je 0x42aa14
push eax
push str.Extract_error_0x_X
push 0x4699dc
mov eax, 2
call fcn.0042c820
add esp, 0xc
dec dword [0x4699fc]
lea esi, [ebp - 0x53c]
mov byte [ebp - 4], 0
call fcn.0040ff10
jmp 0x42aa4a
push 0x456414
call fcn.00402130
test eax, eax
je 0x42aa43
push edi
call fcn.0042b3a0
test al, al
je 0x42aa4a
mov esi, edi
call fcn.0042aff0
push 0x45bdd0
call fcn.00402130
test eax, eax
je 0x42aa71
call fcn.00402500
test eax, eax
je 0x42aa6a
mov esi, edi
call fcn.0042bd40
jmp 0x42aa85
push str.Not_in_silent_mode__ignoring__b_switch
jmp 0x42aa76
push str.IIF_will_NOT_initiate_reboot
push 0x4699dc
xor eax, eax
call fcn.0042c820
add esp, 8
call fcn.0042c760
call fcn.0042dbc0
cmp dword [ebx + 0x14], 8
jb 0x42aa97
mov ebx, dword [ebx]
push ebx
call fcn.00424570
add esp, 4
call dword [sym.imp.ole32.dll_CoUninitialize]
jmp 0x42aadb
push esi
lea edx, [ebp - 0x110]
push str.Error_extracting_files.__0x_X_
push edx
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0xc
push 0
push str.Package_error
lea eax, [ebp - 0x110]
push eax
push 0
call dword [sym.imp.USER32.dll_MessageBoxW]
mov dword [edi + 0x10], 0xb
mov ecx, dword [ebp - 0x570]
push ecx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.004377c1
mov esp, ebp
pop ebp
ret