Function at 0x428310
Capabilities:
Create directory
Create thread

Disassembly:
push 0xffffffffffffffff
push 0x453457
mov eax, dword fs:[0]
push eax
sub esp, 0x568
mov eax, dword [0x4663e0]
xor eax, esp
mov dword [esp + 0x564], eax
push ebx
push ebp
push esi
mov eax, dword [0x4663e0]
xor eax, esp
push eax
lea eax, [esp + 0x578]
mov dword fs:[0], eax
xor ebp, ebp
mov dword [esp + 0x14], vtable.CExtractThread.0
mov dword [esp + 0x1c], ebp
mov dword [esp + 0x18], 0xffffffff
lea esi, [esp + 0x164]
mov dword [esp + 0x580], ebp
call fcn.00426720
mov eax, esi
lea edx, [eax + 2]
jmp 0x428380
mov cx, word [eax]
add eax, 2
cmp cx, bp
jne 0x428380
sub eax, edx
sar eax, 1
push eax
lea eax, [esp + 0x168]
lea ebx, [edi + 0xcc8]
push eax
mov esi, ebx
call fcn.00404160
push ebp
push ebp
lea edx, [esp + 0x1c]
push edx
push 0x427e00
push ebp
lea ecx, [esp + 0x178]
push ebp
mov dword [esp + 0x38], ecx
mov byte [esp + 0x40], 1
xor esi, esi
call dword [sym.imp.KERNEL32.dll_CreateThread]
cmp eax, ebp
mov dword [esp + 0x18], eax
jne 0x4283df
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov esi, eax
mov eax, dword [esp + 0x18]
cmp esi, ebp
jne 0x42889b
push 0xffffffffffffffff
push eax
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
cmp eax, 0xffffffff
jne 0x428405
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov esi, eax
cmp esi, ebp
jne 0x42889b
cmp dword [esp + 0x24], ebp
jne 0x42889b
mov eax, dword [edi]
mov edx, dword [eax + 4]
mov ecx, edi
call edx
mov eax, dword [edi + 0x10]
cmp eax, ebp
jne 0x428430
mov eax, dword [edi + 0xcb0]
neg eax
sbb eax, eax
and eax, 0xe
cmp eax, ebp
je 0x42843a
mov eax, dword [esp + 0x18]
push eax
jmp 0x4288cd
lea ecx, [edi + 0x814]
push ecx
call fcn.0042c660
mov esi, 8
cmp dword [ebx + 0x18], esi
jb 0x428455
mov eax, dword [ebx + 4]
jmp 0x428458
lea eax, [ebx + 4]
push eax
push str.__Source:__s
push 0x4676a0
xor eax, eax
call fcn.0042cad0
add esp, 0xc
cmp dword [ebx + 0x18], esi
jb 0x428477
mov eax, dword [ebx + 4]
jmp 0x42847a
lea eax, [ebx + 4]
push eax
lea edx, [esp + 0x168]
push 0x104
push edx
call fcn.00439323
mov ebp, dword [sym.imp.SHLWAPI.dll_PathAppendW]
add esp, 0xc
push str.Lang
lea eax, [esp + 0x168]
push eax
call ebp
lea esi, [esp + 0x164]
call fcn.0042d8d0
mov edx, dword [edi]
mov eax, dword [edx + 8]
mov ecx, edi
call eax
xor eax, eax
cmp dword [edi + 0xc], eax
je 0x4285b4
mov dword [esp + 0x4c], eax
mov dword [esp + 0x50], eax
mov dword [esp + 0x54], eax
lea esi, [esp + 0x2c]
mov byte [esp + 0x580], 1
call fcn.00427b80
mov byte [esp + 0x580], 2
cmp dword [eax + 0x18], 8
jb 0x4284f5
mov eax, dword [eax + 4]
jmp 0x4284f8
add eax, 4
push eax
push str.Error_in_command_line:__s
push 0x4676a0
mov eax, 2
call fcn.0042cad0
add esp, 0xc
lea esi, [esp + 0x2c]
mov byte [esp + 0x580], 1
call fcn.0042d5a0
lea esi, [esp + 0x2c]
call fcn.00427b80
push eax
lea esi, [esp + 0x4c]
mov byte [esp + 0x584], 3
call fcn.0040d140
lea esi, [esp + 0x2c]
mov byte [esp + 0x580], 1
call fcn.0042d5a0
push 0x7f02
push 7
push 0x84
push 0x7d9
lea edx, [esp + 0x58]
mov ecx, 0x3b
call fcn.00432a80
add esp, 0x10
cmp eax, 7
jne 0x4285a3
mov dword [0x4676c4], 0xa001
call fcn.0042ca20
mov ecx, dword [esp + 0x18]
push ecx
mov dword [edi + 0x10], 1
call dword [sym.imp.KERNEL32.dll_CloseHandle]
lea esi, [esp + 0x48]
call fcn.0040cec0
jmp 0x4288d3
lea esi, [esp + 0x48]
mov byte [esp + 0x580], 0
call fcn.0040cec0
mov edx, 0x45bc0c
call fcn.00401e70
test eax, eax
je 0x4285cc
call fcn.00429500
jmp 0x428804
mov edx, 0x45bc10
call fcn.00401e70
test eax, eax
je 0x4285e6
mov esi, edi
call fcn.00428f50
jmp 0x428804
mov eax, edi
call fcn.00406e00
lea esi, [esp + 0x14]
mov dword [esp + 0x20], eax
mov byte [esp + 0x28], 0
call fcn.00427dd0
mov esi, eax
test esi, esi
jne 0x428877
call fcn.004021b0
test eax, eax
je 0x4286c0
mov edx, dword [esp + 0x18]
push 0xffffffffffffffff
push edx
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
cmp eax, 0xffffffff
jne 0x428638
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov esi, eax
test esi, esi
jne 0x428877
cmp dword [esp + 0x24], 0
jne 0x428877
call fcn.00431070
test al, al
je 0x428693
call fcn.00430be0
cmp eax, 0x5010100
jb 0x428693
cmp eax, 0xffffffff
ja 0x428693
lea esi, [esp + 0x36c]
call fcn.00431110
push str.msls31.dll
mov edx, esi
push edx
call ebp
mov esi, dword [sym.imp.KERNEL32.dll_SetErrorMode]
push 0x8000
call esi
mov ebp, eax
lea eax, [esp + 0x36c]
push eax
call dword [sym.imp.KERNEL32.dll_LoadLibraryW]
push ebp
call esi
push 0
call dword [sym.imp.ole32.dll_CoInitialize]
mov edx, dword [edi]
mov eax, dword [edx + 0xc]
mov ecx, edi
call eax
mov edx, 0x45bc3c
call fcn.00401e70
test eax, eax
je 0x4286e0
mov edx, dword [edi]
mov eax, dword [edx + 0x24]
mov ecx, edi
call eax
jmp 0x428804
mov ecx, dword [0x468ca0]
lea eax, [esp + 0x14]
push eax
push 0x427e70
push 0
push 0x64
push ecx
call dword [sym.imp.USER32.dll_DialogBoxParamW]
jmp 0x428638
mov edx, 0x45bc40
call fcn.00401e70
test eax, eax
je 0x4286fa
mov eax, edi
call fcn.00428f90
jmp 0x428804
mov edx, str.uninstall
call fcn.00401e70
test eax, eax
je 0x428714
mov esi, edi
call fcn.00428e90
jmp 0x428804
mov edx, str.extract
call fcn.00401e70
test eax, eax
je 0x4287e5
mov eax, 0x45bc48
call fcn.0042cab0
mov ecx, str.extract
call fcn.00401f10
mov edx, eax
lea eax, [esp + 0x48]
call fcn.00402b10
mov byte [esp + 0x580], 4
mov eax, dword [esp + 0x4c]
mov esi, 8
cmp dword [esp + 0x60], esi
jae 0x428760
lea eax, [esp + 0x4c]
push eax
push str.Extracting_to__s
push 0x4676a0
xor eax, eax
call fcn.0042cad0
mov eax, dword [esp + 0x58]
add esp, 0xc
cmp dword [esp + 0x60], esi
jae 0x428783
lea eax, [esp + 0x4c]
push 0
push eax
push 0
call dword [sym.imp.SHELL32.dll_SHCreateDirectoryExW]
cmp dword [esp + 0x60], esi
mov eax, dword [esp + 0x4c]
jae 0x42879c
lea eax, [esp + 0x4c]
push 1
push eax
mov eax, edi
call fcn.00406e00
push eax
call fcn.00426ab0
add esp, 0xc
test eax, eax
je 0x4287cb
push eax
push str.Extract_error_0x_X
push 0x4676a0
mov eax, 2
call fcn.0042cad0
add esp, 0xc
sub dword [0x4676c0], 1
lea esi, [esp + 0x48]
mov byte [esp + 0x580], 0
call fcn.0042d5a0
jmp 0x428804
mov edx, 0x4568a8
call fcn.00401e70
test eax, eax
je 0x4287fd
push edi
call fcn.004290f0
test al, al
je 0x428804
mov esi, edi
call fcn.00428d40
mov edx, 0x45bca4
call fcn.00401e70
test eax, eax
je 0x42882b
call fcn.004021b0
test eax, eax
je 0x428824
mov esi, edi
call fcn.0042a070
jmp 0x42883f
push 0x45bca8
jmp 0x428830
push str.IIF_will_NOT_initiate_reboot
push 0x4676a0
xor eax, eax
call fcn.0042cad0
add esp, 8
call fcn.0042ca20
call fcn.0042df90
cmp dword [ebx + 0x18], 8
jb 0x428863
mov eax, dword [ebx + 4]
push eax
call fcn.004263c0
add esp, 4
call dword [sym.imp.ole32.dll_CoUninitialize]
jmp 0x4288c8
lea eax, [ebx + 4]
push eax
call fcn.004263c0
add esp, 4
call dword [sym.imp.ole32.dll_CoUninitialize]
jmp 0x4288c8
push esi
lea edx, [esp + 0x68]
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, [esp + 0x6c]
push eax
push 0
jmp 0x4288bb
push esi
lea edx, [esp + 0x68]
push str.Error_extracting_files.__0x_X_
push edx
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0xc
push ebp
push str.Package_error
lea eax, [esp + 0x6c]
push eax
push ebp
call dword [sym.imp.USER32.dll_MessageBoxW]
mov dword [edi + 0x10], 0xb
mov ecx, dword [esp + 0x18]
push ecx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov ecx, dword [esp + 0x578]
mov dword fs:[0], ecx
pop ecx
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0x564]
xor ecx, esp
call fcn.0043782a
add esp, 0x574
ret