Function at 0x4051a0
Capabilities:
Get common file path
Terminate process

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x6c
mov eax, dword [0x48c8b0]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [ebp + 8]
push ebx
push edi
mov dword [ebp - 0x64], eax
mov eax, dword [ebp + 0xc]
push 0
mov ebx, ecx
push 0x67
mov dword [ebp - 0x5c], ebx
mov dword [ebp - 0x54], eax
call fcn.004273a0
mov dword [ebx], vtable.CCleanWork.0
mov dword [ebx + 0x94], 0
mov dword [ebx + 0x98], 0
mov dword [ebx + 0x9c], 0
mov dword [ebx + 0xa0], 0
mov dword [ebx + 0xa4], 0
mov dword [ebx + 0xa8], 0
lea ecx, [ebx + 0xb8]
mov dword [ebx + 0xac], 0
mov dword [ebx + 0xb0], 0
mov dword [ebx + 0xb4], 0
mov dword [ebp - 0x60], ecx
call fcn.004263dd
mov dword [ebx + 0xcc], 0
mov dword [ebx + 0xd0], 0
mov dword [ebx + 0xd4], 0
mov dword [ebx + 0xe0], 0
mov dword [ebx + 0xe4], 0
mov dword [ebx + 0xe8], 0
call fcn.00425809
mov ecx, eax
test ecx, ecx
je 0x4057c7
mov eax, dword [ecx]
push esi
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebx + 0xec], eax
call fcn.00425809
mov ecx, eax
test ecx, ecx
je 0x4057d1
mov eax, dword [ecx]
lea edi, [ebx + 0xf0]
mov dword [ebp - 0x48], edi
call dword [eax + 0xc]
add eax, 0x10
lea ecx, [ebx + 0xf4]
mov dword [edi], eax
call fcn.00428826
lea ecx, [ebx + 0x168]
push 0x47c3e0
mov dword [ebx + 0xf4], vtable.CProgressCtrl.0
call fcn.004169c0
call fcn.00425809
mov ecx, eax
test ecx, ecx
je 0x4057db
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebx + 0x16c], eax
call fcn.00425809
mov ecx, eax
test ecx, ecx
je 0x4057e5
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebx + 0x174], eax
call fcn.00425809
mov ecx, eax
test ecx, ecx
je 0x4057ef
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebx + 0x178], eax
mov dword [ebx + 0x17c], 0
mov dword [ebx + 0x180], 0
mov dword [ebx + 0x184], 0
mov dword [ebx + 0x190], 0
mov dword [ebx + 0x194], 0
mov dword [ebx + 0x198], 0
mov dword [ebx + 0x19c], 0
mov dword [ebx + 0x1a0], 0
mov dword [ebx + 0x1a4], 0
lea ecx, [ebx + 0x1b4]
mov dword [ebx + 0x1a8], 0
mov dword [ebx + 0x1ac], 0
mov dword [ebx + 0x1b0], 0
call fcn.00428826
mov dword [ebx + method.CListCtrl.virtual_0], vtable.CListCtrl.0
mov dword [ebx + 0x228], 0
mov dword [ebx + 0x22c], 0
mov dword [ebx + 0x230], 0
lea eax, [ebx + 0x240]
mov dword [ebx + 0x238], 1
mov dword [ebx + 0x23c], 0
mov dword [eax], 0
mov dword [eax + 4], 0
mov dword [eax + 8], 0
mov dword [ebp - 0x58], eax
lea eax, [ebp - 0x6c]
push eax
mov dword [ebx + 0xdc], 0
mov dword [ebx + 0xd8], 0
call dword [sym.imp.KERNEL32.dll_Wow64DisableWow64FsRedirection]
push dword [ebp - 0x64]
lea esi, [ebx + 0x16c]
mov ecx, esi
call fcn.00416f30
push dword [ebp - 0x54]
lea ecx, [ebx + 0x174]
call fcn.00416f30
push 0x14
lea eax, [ebp - 0x2c]
push eax
call dword [sym.imp.KERNEL32.dll_GetWindowsDirectoryW]
mov ax, word [ebp - 0x2c]
mov word [ebp - 0x38], ax
lea ecx, [ebp - 0x38]
xor eax, eax
mov word [ebp - 0x36], ax
lea edx, [ecx + 2]
lea ebx, [ebx]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x405470
sub ecx, edx
sar ecx, 1
push ecx
lea eax, [ebp - 0x38]
push eax
lea ecx, [ebx + 0x178]
call fcn.00416dd0
push 2
push 0x47aa5c
lea ecx, [ebx + 0x178]
call fcn.004165a0
lea eax, [ebx + 0xec]
push eax
lea ecx, [ebx + 0x168]
mov byte [ebx + 0x18c], 0
mov byte [ebx + 0x234], 0
call fcn.00416f30
call fcn.00425809
mov ecx, eax
test ecx, ecx
je 0x4057f9
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
push str.Test.log
mov dword [ebp - 0x34], eax
lea eax, [ebp - 0x68]
push esi
push eax
call fcn.0040de20
mov edx, dword [ebx + 0xb8]
add esp, 0xc
lea esi, [ebx + 0xb8]
push 0
push 0x1002
push dword [eax]
mov ecx, esi
call dword [edx + 0x24]
mov edx, dword [ebp - 0x68]
test eax, eax
sete byte [ebp - 0x2d]
add edx, 0xfffffff0
or eax, 0xffffffff
lea ecx, [edx + 0xc]
lock xadd dword [ecx], eax
dec eax
test eax, eax
jg 0x40552a
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
cmp byte [ebp - 0x2d], 0
je 0x405606
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov ecx, 0x47aa78
mov esi, eax
call fcn.0041efe0
mov edi, dword [eax]
push 0
push 0
lea eax, [ebp - 0x4c]
push eax
push 0x400
push esi
push 0
push 0x1100
call dword [sym.imp.KERNEL32.dll_FormatMessageW]
push dword [ebp - 0x4c]
lea ecx, [ebp - 0x44]
call fcn.004169c0
push dword [ebp - 0x4c]
call dword [sym.imp.KERNEL32.dll_LocalFree]
lea eax, [ebp - 0x44]
push eax
push 0x47aa80
mov ecx, 0x47aa84
call fcn.0041efe0
push eax
lea eax, [ebp - 0x3c]
push eax
call fcn.0040de20
add esp, 0xc
push eax
lea eax, [ebp - 0x40]
push eax
call fcn.0040ddb0
add esp, 0xc
mov ecx, ebx
push 0
push edi
push dword [eax]
call fcn.0042a86d
mov edx, dword [ebp - 0x40]
add edx, 0xfffffff0
or esi, 0xffffffff
lea eax, [edx + 0xc]
mov ecx, esi
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x4055cf
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0x3c]
add edx, 0xfffffff0
mov ecx, esi
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x4055eb
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0x44]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], esi
dec esi
test esi, esi
jg 0x40580b
jmp 0x405803
mov eax, dword [esi]
push 2
push 0x47aa9c
mov ecx, esi
call dword [eax + 0x3c]
push 0xa
push 0x47aaa0
lea ecx, [ebp - 0x34]
call fcn.00416dd0
mov eax, dword [ebp - 0x34]
mov edx, dword [esi]
mov ecx, dword [eax - 0xc]
add ecx, ecx
push ecx
push eax
mov ecx, esi
call dword [edx + 0x3c]
call fcn.0042ecac
mov eax, dword [eax + 4]
mov edx, dword [eax + 0x68]
test edx, edx
jne 0x405647
xor ecx, ecx
jmp 0x40565f
mov ecx, edx
lea esi, [ecx + 2]
lea esp, [esp]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x405650
sub ecx, esi
sar ecx, 1
push ecx
push edx
mov ecx, edi
call fcn.00416dd0
mov eax, dword [ebx + 0xf0]
lea edx, [ebx + 0xf0]
mov eax, dword [eax - 0xc]
dec eax
js 0x405812
mov edi, edi
mov ecx, dword [edx]
mov esi, dword [ecx - 0xc]
cmp eax, esi
jg 0x405812
cmp word [ecx + eax*2], 0x5c
je 0x405738
mov edi, eax
dec eax
mov dword [ebp - 0x40], eax
xor eax, eax
test edi, edi
cmovs edi, eax
mov ebx, 1
cmp edi, 0x7ffffffe
jg 0x40581c
lea eax, [edi + 1]
cmp eax, esi
jle 0x4056c5
mov ebx, esi
sub ebx, edi
test ebx, ebx
jle 0x405728
mov eax, esi
sub esi, edi
sub esi, ebx
sub eax, ebx
inc esi
cmp dword [ecx - 4], 1
mov dword [ebp - 0x3c], eax
jle 0x4056e4
push dword [ecx - 0xc]
mov ecx, edx
call fcn.00416c30
mov edx, dword [ebp - 0x48]
mov edx, dword [edx]
lea ecx, [esi + esi]
push ecx
lea eax, [edi + ebx]
lea eax, [edx + eax*2]
push eax
push ecx
lea eax, [edx + edi*2]
push eax
call fcn.0043de49
push eax
call fcn.00416820
mov ecx, dword [ebp - 0x3c]
add esp, 0x14
test ecx, ecx
js 0x405812
mov edx, dword [ebp - 0x48]
mov eax, dword [edx]
cmp ecx, dword [eax - 8]
jg 0x405812
mov dword [eax - 0xc], ecx
mov eax, dword [edx]
xor esi, esi
mov word [eax + ecx*2], si
mov eax, dword [ebp - 0x40]
test eax, eax
jns 0x405680
jmp 0x405812
push 6
push 0x47aab8
lea ecx, [ebp - 0x34]
call fcn.00416dd0
mov esi, dword [ebp - 0x34]
mov ecx, dword [ebp - 0x60]
mov eax, dword [esi - 0xc]
mov edx, dword [ecx]
add eax, eax
push eax
push esi
call dword [edx + 0x3c]
push str.prnms001.inf
lea ecx, [ebp - 0x50]
call fcn.004169c0
mov ecx, dword [ebp - 0x58]
lea eax, [ebp - 0x50]
push eax
call fcn.0040e0e0
mov edx, dword [ebp - 0x50]
add edx, 0xfffffff0
or edi, 0xffffffff
lea eax, [edx + 0xc]
mov ecx, edi
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x405791
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov ebx, dword [ebp - 0x5c]
mov ecx, ebx
call fcn.0040c640
add esi, 0xfffffff0
lea eax, [esi + 0xc]
lock xadd dword [eax], edi
dec edi
test edi, edi
jg 0x4057b2
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov ecx, dword [ebp - 4]
pop esi
pop edi
mov eax, ebx
xor ecx, ebp
pop ebx
call fcn.0043ddbb
mov esp, ebp
pop ebp
ret 0xc
push 0x80004005
call fcn.00416fc0
push 0x80004005
call fcn.00416fc0
push 0x80004005
call fcn.00416fc0
push 0x80004005
call fcn.00416fc0
push 0x80004005
call fcn.00416fc0
push 0x80004005
call fcn.00416fc0
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
push 0
call fcn.0043e65a
push 0x80070057
call fcn.00416fc0
push 0x80070216
call fcn.00416fc0
int3