Function at 0x4020a0
Capabilities:
Clear file content
Copy file
Create directory
Get common file path
Resolve function by parsing pe exports
Write file on windows

Disassembly:
push 0xffffffffffffffff
push 0x404538
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x6c
push ebx
push ebp
push esi
push edi
mov edi, ecx
lea ecx, [esp + 0x20]
call sub.MFC42.DLL_CString::CString
lea ecx, [esp + 0x18]
mov dword [esp + 0x84], 0
call sub.MFC42.DLL_CString::CString
lea ecx, [esp + 0x3c]
mov byte [esp + 0x84], 1
call sub.MFC42.DLL_CString::CString
lea ecx, [esp + 0x20]
mov byte [esp + 0x84], 2
call sub.MFC42.DLL_CString::Empty
lea ecx, [esp + 0x18]
call sub.MFC42.DLL_CString::Empty
mov ebx, dword [sym.imp.KERNEL32.dll_GetProcAddress]
push 0
push 0
call ebx
mov esi, eax
push esi
call sub.MFC42.DLL_operatornew
push 0x32
mov dword [esp + 0x24], eax
call sub.MFC42.DLL_operatornew
push 0x32
mov dword [esp + 0x40], eax
call sub.MFC42.DLL_operatornew
add esp, 0xc
mov dword [esp + 0x38], eax
lea eax, [edi + 0x141]
lea ebp, [edi + 0x140]
push eax
push ebp
mov ecx, edi
call fcn.004033e0
test eax, eax
jne 0x402176
mov al, byte [0x407020]
test al, al
je 0x403273
mov al, byte [edi + 0x68]
test al, al
jne 0x403273
push 0
push 0x40
push str.Error_determining_System_Version
jmp 0x40326e
mov ecx, dword [esp + 0x1c]
push ecx
push esi
call ebx
test eax, eax
jne 0x4021a8
mov al, byte [0x407020]
test al, al
je 0x403273
mov al, byte [edi + 0x68]
test al, al
jne 0x403273
push 0
push 0x40
push str.Error_determining_Current_Directory
jmp 0x40326e
lea ebx, [edi + 0x64]
push 0x3a
mov ecx, ebx
call sub.MFC42.DLL_CString::Find_3
cmp eax, 0xffffffff
jne 0x4021c7
mov edx, dword [esp + 0x1c]
mov ecx, ebx
push edx
push 0
call sub.MFC42.DLL_CString::Insert
mov eax, dword [esp + 0x1c]
lea ecx, [esp + 0x20]
push eax
call fcn.00403c7c
lea esi, [edi + 0x6c]
lea ecx, [esp + 0x44]
push esi
push 0x4072e4
push ecx
call sub.MFC42.DLL_operator_2
push eax
lea ecx, [esp + 0x24]
mov byte [esp + 0x88], 3
call sub.MFC42.DLL_CString::operator_2
lea ecx, [esp + 0x44]
mov byte [esp + 0x84], 2
call fcn.00403b86
mov edx, dword [esp + 0x1c]
lea ecx, [esp + 0x18]
push edx
call fcn.00403c7c
mov al, byte [ebp]
cmp al, 3
je 0x40225f
cmp al, 6
je 0x40225f
lea eax, [edi + 0x70]
lea ecx, [esp + 0x44]
push eax
push 0x4072e4
push ecx
call sub.MFC42.DLL_operator_2
push eax
lea ecx, [esp + 0x1c]
mov byte [esp + 0x88], 6
call sub.MFC42.DLL_CString::operator_2
lea ecx, [esp + 0x44]
mov byte [esp + 0x84], 2
call fcn.00403b86
jmp 0x402320
lea edx, [edi + 0x74]
lea eax, [esp + 0x44]
push edx
push 0x4072e4
push eax
call sub.MFC42.DLL_operator_2
push eax
lea ecx, [esp + 0x1c]
mov byte [esp + 0x88], 4
call sub.MFC42.DLL_CString::operator_2
lea ecx, [esp + 0x44]
mov byte [esp + 0x84], 2
call fcn.00403b86
mov ecx, dword [esp + 0x1c]
push ecx
lea ecx, [esp + 0x40]
call fcn.00403c7c
lea edx, [edi + 0x78]
lea eax, [esp + 0x44]
push edx
push 0x4072e4
push eax
call sub.MFC42.DLL_operator_2
push eax
lea ecx, [esp + 0x40]
mov byte [esp + 0x88], 5
call sub.MFC42.DLL_CString::operator_2
lea ecx, [esp + 0x44]
mov byte [esp + 0x84], 2
call fcn.00403b86
mov ecx, dword [esp + 0x34]
push 0x32
push ecx
call dword [sym.imp.KERNEL32.dll_GetSystemDirectoryA]
test eax, eax
jne 0x402310
mov al, byte [0x407020]
test al, al
je 0x403273
mov al, byte [edi + 0x68]
test al, al
jne 0x403273
push 0
push 0x40
push str.Error_determining_System_Directory
jmp 0x40326e
mov edx, dword [esp + 0x34]
mov ecx, ebx
push edx
call fcn.00403c7c
mov byte [edi + 0x69], 0
mov al, byte [edi + 0x69]
test al, al
mov al, byte [ebp]
jne 0x402ecb
cmp al, 3
je 0x402366
cmp al, 6
je 0x402366
mov eax, dword [ebx]
push 0
push eax
call dword [sym.imp.KERNEL32.dll_CreateDirectoryA]
test eax, eax
jne 0x402366
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0xb7
je 0x402366
push ecx
mov ecx, esp
mov dword [esp + 0x78], esp
push ebx
call sub.MFC42.DLL_CString::CString_2
mov ecx, edi
call fcn.00403300
mov eax, dword [edi + 0x138]
mov ebp, 4
cmp eax, ebp
mov dword [esp + 0x2c], ebp
jl 0x4027ca
lea esi, [edi + ebp*4 + 0x6c]
push str..u2k
mov ecx, esi
call sub.MFC42.DLL_CString::Find_2
cmp eax, 0xffffffff
jne 0x4023a7
push str..u98
mov ecx, esi
call sub.MFC42.DLL_CString::Find_2
cmp eax, 0xffffffff
je 0x4024d6
mov eax, dword [esi]
push 0
push 0
push 3
push 0
push 3
push 0xc0000000
push eax
mov dword [esp + 0x60], eax
call dword [sym.imp.KERNEL32.dll_CreateFileA]
mov ebp, eax
test ebp, ebp
je 0x4023ce
cmp ebp, 0xffffffff
jne 0x402417
mov al, byte [0x407020]
test al, al
je 0x402417
mov al, byte [edi + 0x68]
test al, al
jne 0x402417
lea ecx, [esp + 0x40]
call sub.MFC42.DLL_CString::CString
mov eax, dword [esp + 0x44]
lea ecx, [esp + 0x40]
push eax
push str.Could_not_open_uninstaller_ini_file:__s_n
push ecx
mov byte [esp + 0x90], 7
call sub.MFC42.DLL_CString::Format
add esp, 0xc
lea ecx, [esp + 0x40]
mov byte [esp + 0x84], 2
call fcn.00403b86
push str..u98
mov ecx, esi
call sub.MFC42.DLL_CString::Find_2
cmp eax, 0xffffffff
je 0x402453
mov dword [esp + 0x44], 9
lea edx, [esp + 0x48]
push ebp
push edx
mov ecx, edi
call fcn.00401a30
lea ecx, [esp + 0x48]
call fcn.00403b86
mov eax, dword [esp + 0x44]
dec eax
mov dword [esp + 0x44], eax
jne 0x402430
jmp 0x40247c
mov dword [esp + 0x44], 4
lea eax, [esp + 0x4c]
push ebp
push eax
mov ecx, edi
call fcn.00401a30
lea ecx, [esp + 0x4c]
call fcn.00403b86
mov eax, dword [esp + 0x44]
dec eax
mov dword [esp + 0x44], eax
jne 0x40245b
push ebx
lea ecx, [esp + 0x34]
call sub.MFC42.DLL_CString::CString_2
push 0x4072ac
lea ecx, [esp + 0x34]
mov byte [esp + 0x88], 8
call sub.MFC42.DLL_CString::operator_1
mov eax, dword [esp + 0x30]
lea edx, [esp + 0x78]
push 0
push edx
mov ecx, dword [eax - 8]
push ecx
push eax
push ebp
call dword [sym.imp.KERNEL32.dll_WriteFile]
push ebp
call dword [sym.imp.KERNEL32.dll_SetEndOfFile]
push ebp
call dword [sym.imp.KERNEL32.dll_CloseHandle]
lea ecx, [esp + 0x30]
mov byte [esp + 0x84], 2
call fcn.00403b86
mov ebp, dword [esp + 0x2c]
mov al, byte [edi + 0x140]
cmp al, 3
je 0x402548
cmp al, 6
je 0x402548
push 0x4072e4
lea eax, [esp + 0x58]
push ebx
push eax
call sub.MFC42.DLL_operator_1
push esi
lea ecx, [esp + 0x54]
push eax
push ecx
mov byte [esp + 0x90], 0x10
call sub.MFC42.DLL_operator
mov eax, dword [eax]
mov esi, dword [esi]
push 0
push eax
push esi
call dword [sym.imp.KERNEL32.dll_CopyFileA]
test eax, eax
lea ecx, [esp + 0x50]
sete byte [esp + 0x13]
call fcn.00403b86
lea ecx, [esp + 0x54]
mov byte [esp + 0x84], 2
call fcn.00403b86
mov al, byte [esp + 0x13]
test al, al
jne 0x40281c
jmp 0x4027b7
push str.cm95
mov ecx, esi
call sub.MFC42.DLL_CString::Find_2
push str.wh95
mov ecx, esi
mov dword [esp + 0x48], eax
call sub.MFC42.DLL_CString::Find_2
lea ecx, [esp + 0x28]
mov ebp, eax
call sub.MFC42.DLL_CString::CString
lea ecx, [esp + 0x24]
mov byte [esp + 0x84], 9
call sub.MFC42.DLL_CString::CString
mov eax, dword [esp + 0x44]
mov byte [esp + 0x84], 0xa
cmp eax, 0xffffffff
jne 0x4026b6
cmp ebp, 0xffffffff
jne 0x402728
cmp byte [edi + 0x140], 6
jne 0x40266a
cmp dword [esp + 0x2c], 4
jne 0x40266a
lea esi, [edi + 0x7c]
lea ecx, [esp + 0x14]
push esi
call sub.MFC42.DLL_CString::CString_2
push 0
push 0x407298
lea ecx, [esp + 0x1c]
mov byte [esp + 0x8c], 0xd
call sub.MFC42.DLL_CString::Find_1
cmp eax, ebp
push 0x407294
je 0x4025f4
push 0x407298
lea ecx, [esp + 0x1c]
call sub.MFC42.DLL_CString::Replace
jmp 0x40260b
push 0
push 0x2e
lea ecx, [esp + 0x20]
call sub.MFC42.DLL_CString::Find
push eax
lea ecx, [esp + 0x1c]
call sub.MFC42.DLL_CString::Insert
push 0x4072e4
lea edx, [esp + 0x60]
push ebx
push edx
call sub.MFC42.DLL_operator_1
push esi
push eax
lea eax, [esp + 0x60]
mov byte [esp + 0x8c], 0xe
push eax
call sub.MFC42.DLL_operator
mov eax, dword [eax]
mov ecx, dword [esp + 0x14]
push 0
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_CopyFileA]
lea ecx, [esp + 0x58]
call fcn.00403b86
lea ecx, [esp + 0x5c]
mov byte [esp + 0x84], 0xd
call fcn.00403b86
mov byte [esp + 0x84], 0xa
lea ecx, [esp + 0x14]
jmp 0x40278c
push 0x4072e4
lea edx, [esp + 0x68]
push ebx
push edx
call sub.MFC42.DLL_operator_1
push esi
push eax
lea eax, [esp + 0x68]
mov byte [esp + 0x8c], 0xf
push eax
call sub.MFC42.DLL_operator
mov eax, dword [eax]
mov esi, dword [esi]
push 0
push eax
push esi
call dword [sym.imp.KERNEL32.dll_CopyFileA]
lea ecx, [esp + 0x60]
call fcn.00403b86
mov byte [esp + 0x84], 0xa
lea ecx, [esp + 0x64]
jmp 0x40278c
push esi
lea ecx, [esp + 0x2c]
call fcn.00403ca0
mov ecx, dword [esp + 0x44]
push 2
add ecx, 2
push ecx
lea ecx, [esp + 0x30]
call sub.MFC42.DLL_CString::Delete
push 0x4072e4
lea edx, [esp + 0x70]
push ebx
push edx
call sub.MFC42.DLL_operator_1
lea ecx, [esp + 0x28]
lea edx, [esp + 0x68]
push ecx
push eax
push edx
mov byte [esp + 0x90], 0xb
call sub.MFC42.DLL_operator
mov eax, dword [eax]
mov ecx, dword [esi]
push 0
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_CopyFileA]
lea ecx, [esp + 0x68]
call fcn.00403b86
lea ecx, [esp + 0x6c]
mov byte [esp + 0x84], 0xa
call fcn.00403b86
cmp ebp, 0xffffffff
je 0x402791
push esi
lea ecx, [esp + 0x28]
call fcn.00403ca0
add ebp, 2
push 2
push ebp
lea ecx, [esp + 0x2c]
call sub.MFC42.DLL_CString::Delete
push 0x4072e4
lea eax, [esp + 0x78]
push ebx
push eax
call sub.MFC42.DLL_operator_1
lea ecx, [esp + 0x24]
lea edx, [esp + 0x70]
push ecx
push eax
push edx
mov byte [esp + 0x90], 0xc
call sub.MFC42.DLL_operator
mov eax, dword [eax]
mov esi, dword [esi]
push 0
push eax
push esi
call dword [sym.imp.KERNEL32.dll_CopyFileA]
lea ecx, [esp + 0x70]
call fcn.00403b86
mov byte [esp + 0x84], 0xa
lea ecx, [esp + 0x74]
call fcn.00403b86
lea ecx, [esp + 0x24]
mov byte [esp + 0x84], 9
call fcn.00403b86
lea ecx, [esp + 0x28]
mov byte [esp + 0x84], 2
call fcn.00403b86
mov ebp, dword [esp + 0x2c]
mov eax, dword [edi + 0x138]
inc ebp
cmp ebp, eax
mov dword [esp + 0x2c], ebp
jle 0x40237d
mov al, byte [edi + 0x140]
cmp al, 3
je 0x402883
cmp al, 6
je 0x402883
mov eax, dword [ebx]
mov edx, dword [esp + 0x20]
mov ebp, dword [sym.imp.SETUPAPI.dll_SetupCopyOEMInfA]
push 0
push 0
push 0
push 0
push 0
push 1
push eax
push edx
call ebp
mov ebx, dword [ebx]
push 0
push 0
push 0
push 0
mov esi, eax
mov eax, dword [esp + 0x28]
push 0
push 1
push ebx
push eax
and esi, 1
call ebp
jmp 0x402f10
mov al, byte [0x407020]
test al, al
je 0x403273
mov al, byte [edi + 0x68]
test al, al
jne 0x403273
lea ecx, [esp + 0x30]
call sub.MFC42.DLL_CString::CString
mov ebx, dword [ebx]
mov eax, dword [edi + ebp*4 + 0x6c]
push ebx
push eax
lea eax, [esp + 0x38]
push str.Error_copying_driver_file__s_to__s_n
push eax
mov byte [esp + 0x94], 0x11
call sub.MFC42.DLL_CString::Format
mov ecx, dword [esp + 0x40]
add esp, 0x10
push 0
push 0x40
push ecx
call sub.MFC42.DLL_AfxMessageBox
lea ecx, [esp + 0x30]
mov byte [esp + 0x84], 2
call fcn.00403b86
jmp 0x403273
mov esi, dword [esp + 0x38]
push 0x32
push esi
call dword [sym.imp.KERNEL32.dll_GetWindowsDirectoryA]
test eax, eax
je 0x402f90
lea ecx, [esp + 0x14]
call sub.MFC42.DLL_CString::CString
push esi
lea ecx, [esp + 0x18]
mov byte [esp + 0x88], 0x12
call fcn.00403c7c
push str.inf
lea ecx, [esp + 0x18]
call sub.MFC42.DLL_CString::operator_1
mov ecx, dword [esp + 0x14]
push 0
push ecx
call dword [sym.imp.KERNEL32.dll_CreateDirectoryA]
test eax, eax
jne 0x4028f3
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0xb7
je 0x4028f3
push ecx
mov ecx, esp
mov dword [esp + 0x7c], esp
push ebx
call sub.MFC42.DLL_CString::CString_2
mov ecx, edi
call fcn.00403300
lea edx, [esp + 0x14]
push 0x4072e4
lea eax, [esp + 0x70]
push edx
push eax
call sub.MFC42.DLL_operator_1
lea esi, [edi + 0x134]
lea ecx, [esp + 0x70]
push esi
push eax
push ecx
mov byte [esp + 0x90], 0x13
call sub.MFC42.DLL_operator
lea ebx, [edi + 0x6c]
lea edx, [esp + 0x74]
push ebx
push eax
push edx
mov byte [esp + 0x90], 0x14
call sub.MFC42.DLL_operator
mov eax, dword [eax]
mov ecx, dword [ebx]
push 0
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_CopyFileA]
test eax, eax
lea ecx, [esp + 0x74]
sete byte [esp + 0x13]
call fcn.00403b86
lea ecx, [esp + 0x70]
mov byte [esp + 0x84], 0x13
call fcn.00403b86
lea ecx, [esp + 0x6c]
mov byte [esp + 0x84], 0x12
call fcn.00403b86
mov al, byte [esp + 0x13]
test al, al
je 0x4029f0
mov al, byte [0x407020]
test al, al
je 0x4029da
mov al, byte [edi + 0x68]
test al, al
jne 0x4029da
lea ecx, [esp + 0x30]
call sub.MFC42.DLL_CString::CString
mov eax, dword [esp + 0x14]
mov ebx, dword [ebx]
push eax
push ebx
lea ecx, [esp + 0x38]
push str.Error_copying_driver_file__s_to__s_n
push ecx
mov byte [esp + 0x94], 0x15
call sub.MFC42.DLL_CString::Format
mov edx, dword [esp + 0x40]
add esp, 0x10
push 0
push 0x40
push edx
call sub.MFC42.DLL_AfxMessageBox
lea ecx, [esp + 0x30]
mov byte [esp + 0x84], 0x12
call fcn.00403b86
lea ecx, [esp + 0x14]
mov byte [esp + 0x84], 2
call fcn.00403b86
jmp 0x403273
lea eax, [esp + 0x14]
push 0x4072e4
lea ecx, [esp + 0x70]
push eax
push ecx
call sub.MFC42.DLL_operator_1
push esi
lea edx, [esp + 0x74]
push eax
push edx
mov byte [esp + 0x90], 0x16
call sub.MFC42.DLL_operator
lea ebp, [edi + 0x74]
mov byte [esp + 0x84], 0x17
push ebp
push eax
lea eax, [esp + 0x7c]
push eax
call sub.MFC42.DLL_operator
mov eax, dword [eax]
mov ecx, dword [ebp]
push 0
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_CopyFileA]
test eax, eax
lea ecx, [esp + 0x74]
sete byte [esp + 0x13]
call fcn.00403b86
lea ecx, [esp + 0x70]
mov byte [esp + 0x84], 0x16
call fcn.00403b86
lea ecx, [esp + 0x6c]
mov byte [esp + 0x84], 0x12
call fcn.00403b86
mov al, byte [esp + 0x13]
test al, al
je 0x402ae9
mov al, byte [0x407020]
test al, al
je 0x402ad3
mov al, byte [edi + 0x68]
test al, al
jne 0x402ad3
lea ecx, [esp + 0x30]
call sub.MFC42.DLL_CString::CString
mov ecx, dword [esp + 0x14]
mov ebp, dword [ebp]
push ecx
push ebp
lea edx, [esp + 0x38]
push str.Error_copying_driver_file__s_to__s_n
push edx
mov byte [esp + 0x94], 0x18
call sub.MFC42.DLL_CString::Format
mov eax, dword [esp + 0x40]
add esp, 0x10
push 0
push 0x40
push eax
call sub.MFC42.DLL_AfxMessageBox
lea ecx, [esp + 0x30]
mov byte [esp + 0x84], 0x12
call fcn.00403b86
lea ecx, [esp + 0x14]
mov byte [esp + 0x84], 2
call fcn.00403b86
jmp 0x403273
lea ecx, [esp + 0x14]
push 0x4072e4
lea edx, [esp + 0x74]
push ecx
push edx
call sub.MFC42.DLL_operator_1
lea ecx, [edi + 0x78]
mov byte [esp + 0x84], 0x19
push ecx
push eax
lea eax, [esp + 0x7c]
push eax
call sub.MFC42.DLL_operator
mov eax, dword [eax]
mov ecx, dword [edi + 0x78]
push 0
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_CopyFileA]
test eax, eax
lea ecx, [esp + 0x74]
sete byte [esp + 0x13]
call fcn.00403b86
lea ecx, [esp + 0x70]
mov byte [esp + 0x84], 0x12
call fcn.00403b86
mov al, byte [esp + 0x13]
test al, al
je 0x402bbd
mov al, byte [0x407020]
test al, al
je 0x402ba7
mov al, byte [edi + 0x68]
test al, al
jne 0x402ba7
lea ecx, [esp + 0x30]
call sub.MFC42.DLL_CString::CString
mov ecx, dword [esp + 0x14]
mov eax, dword [edi + 0x78]
push ecx
push eax
lea edx, [esp + 0x38]
push str.Error_copying_driver_file__s_to__s_n
push edx
mov byte [esp + 0x94], 0x1a
call sub.MFC42.DLL_CString::Format
mov eax, dword [esp + 0x40]
add esp, 0x10
push 0
push 0x40
push eax
call sub.MFC42.DLL_AfxMessageBox
lea ecx, [esp + 0x30]
mov byte [esp + 0x84], 0x12
call fcn.00403b86
lea ecx, [esp + 0x14]
mov byte [esp + 0x84], 2
call fcn.00403b86
jmp 0x403273
lea ecx, [esp + 0x14]
push 0x4072e4
lea edx, [esp + 0x70]
push ecx
push edx
call sub.MFC42.DLL_operator_1
push esi
push eax
lea eax, [esp + 0x78]
mov byte [esp + 0x8c], 0x1b
push eax
call sub.MFC42.DLL_operator
push ebx
lea ecx, [esp + 0x78]
push eax
push ecx
mov byte [esp + 0x90], 0x1c
call sub.MFC42.DLL_operator
mov eax, dword [eax]
mov ecx, edi
push eax
mov byte [esp + 0x88], 0x1d
call fcn.004034f0
test eax, eax
lea ecx, [esp + 0x74]
mov byte [esp + 0x84], 0x1c
sete byte [esp + 0x13]
call fcn.00403b86
lea ecx, [esp + 0x70]
mov byte [esp + 0x84], 0x1b
call fcn.00403b86
lea ecx, [esp + 0x6c]
mov byte [esp + 0x84], 0x12
call fcn.00403b86
mov al, byte [esp + 0x13]
test al, al
je 0x402c63
lea ecx, [esp + 0x14]
mov byte [esp + 0x84], 2
call fcn.00403b86
jmp 0x403273
lea edx, [esp + 0x14]
push 0x4072e4
lea eax, [esp + 0x70]
push edx
push eax
call sub.MFC42.DLL_operator_1
push esi
lea ecx, [esp + 0x74]
push eax
push ecx
mov byte [esp + 0x90], 0x1e
call sub.MFC42.DLL_operator
push ebp
lea edx, [esp + 0x78]
push eax
push edx
mov byte [esp + 0x90], 0x1f
call sub.MFC42.DLL_operator
mov eax, dword [eax]
mov ecx, edi
push eax
mov byte [esp + 0x88], 0x20
call fcn.004034f0
test eax, eax
lea ecx, [esp + 0x74]
mov byte [esp + 0x84], 0x1f
sete byte [esp + 0x13]
call fcn.00403b86
lea ecx, [esp + 0x70]
mov byte [esp + 0x84], 0x1e
call fcn.00403b86
lea ecx, [esp + 0x6c]
mov byte [esp + 0x84], 0x12
call fcn.00403b86
mov al, byte [esp + 0x13]
test al, al
je 0x402d09
lea ecx, [esp + 0x14]
mov byte [esp + 0x84], 2
call fcn.00403b86
jmp 0x403273
lea eax, [esp + 0x14]
push 0x4072e4
lea ecx, [esp + 0x70]
push eax
push ecx
call sub.MFC42.DLL_operator_1
push esi
lea edx, [esp + 0x74]
push eax
push edx
mov byte [esp + 0x90], 0x21
call sub.MFC42.DLL_operator
push ebx
push eax
lea eax, [esp + 0x7c]
mov byte [esp + 0x8c], 0x22
push eax
call sub.MFC42.DLL_operator
mov eax, dword [eax]
mov ecx, edi
push eax
mov byte [esp + 0x88], 0x23
call fcn.00403790
test eax, eax
lea ecx, [esp + 0x74]
mov byte [esp + 0x84], 0x22
sete bl
call fcn.00403b86
lea ecx, [esp + 0x70]
mov byte [esp + 0x84], 0x21
call fcn.00403b86
lea ecx, [esp + 0x6c]
mov byte [esp + 0x84], 0x12
call fcn.00403b86
test bl, bl
je 0x402da9
lea ecx, [esp + 0x14]
mov byte [esp + 0x84], 2
call fcn.00403b86
jmp 0x403273
lea ecx, [esp + 0x14]
push 0x4072e4
lea edx, [esp + 0x70]
push ecx
push edx
call sub.MFC42.DLL_operator_1
push esi
push eax
lea eax, [esp + 0x78]
mov byte [esp + 0x8c], 0x24
push eax
call sub.MFC42.DLL_operator
push ebp
lea ecx, [esp + 0x78]
push eax
push ecx
mov byte [esp + 0x90], 0x25
call sub.MFC42.DLL_operator
mov eax, dword [eax]
mov ecx, edi
push eax
mov byte [esp + 0x88], 0x26
call fcn.00403790
test eax, eax
lea ecx, [esp + 0x74]
mov byte [esp + 0x84], 0x25
sete bl
call fcn.00403b86
lea ecx, [esp + 0x70]
mov byte [esp + 0x84], 0x24
call fcn.00403b86
lea ecx, [esp + 0x6c]
mov byte [esp + 0x84], 0x12
call fcn.00403b86
test bl, bl
je 0x402e49
lea ecx, [esp + 0x14]
mov byte [esp + 0x84], 2
call fcn.00403b86
jmp 0x403273
lea edx, [esp + 0x14]
push 0x4072e4
lea eax, [esp + 0x74]
push edx
push eax
call sub.MFC42.DLL_operator_1
lea ecx, [edi + 0x78]
mov byte [esp + 0x84], 0x27
push ecx
lea ecx, [esp + 0x78]
push eax
push ecx
call sub.MFC42.DLL_operator
mov eax, dword [eax]
mov ecx, edi
push eax
mov byte [esp + 0x88], 0x28
call fcn.00403790
test eax, eax
lea ecx, [esp + 0x74]
mov byte [esp + 0x84], 0x27
sete bl
call fcn.00403b86
lea ecx, [esp + 0x70]
mov byte [esp + 0x84], 0x12
call fcn.00403b86
test bl, bl
mov byte [esp + 0x84], 2
lea ecx, [esp + 0x14]
je 0x403250
call fcn.00403b86
jmp 0x403273
cmp al, 3
je 0x402f7f
cmp al, 6
je 0x402f7f
mov edx, dword [esp + 0x20]
mov ebx, dword [sym.imp.SETUPAPI.dll_SetupCopyOEMInfA]
push 0
push 0
push 0
push 0
push 0
push 1
push 0
push edx
call ebx
push 0
push 0
push 0
push 0
mov esi, eax
mov eax, dword [esp + 0x28]
push 0
push 1
push 0
push eax
and esi, 1
call ebx
and esi, eax
test esi, esi
jne 0x403255
mov al, byte [0x407020]
test al, al
je 0x403273
mov al, byte [edi + 0x68]
test al, al
jne 0x403273
lea ecx, [esp + 0x30]
call sub.MFC42.DLL_CString::CString
mov byte [esp + 0x84], 0x30
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
lea ecx, [esp + 0x34]
push str.Install_Failed_Error_Code:__d_n
push ecx
call sub.MFC42.DLL_CString::Format
mov edx, dword [esp + 0x3c]
add esp, 0xc
push esi
push 0x40
push edx
call sub.MFC42.DLL_AfxMessageBox
lea ecx, [esp + 0x30]
mov byte [esp + 0x84], 2
call fcn.00403b86
jmp 0x403273
mov ebx, dword [esp + 0x38]
push 0x32
push ebx
call dword [sym.imp.KERNEL32.dll_GetWindowsDirectoryA]
test eax, eax
jne 0x402fb6
mov al, byte [0x407020]
test al, al
je 0x403273
mov al, byte [edi + 0x68]
test al, al
jne 0x403273
push 0
push 0x40
push str.Error_determining_Windows_Directory
jmp 0x40326e
lea ecx, [esp + 0x14]
call sub.MFC42.DLL_CString::CString
push ebx
lea ecx, [esp + 0x18]
mov byte [esp + 0x88], 0x29
call fcn.00403c7c
cmp byte [ebp], 6
jne 0x402fde
push str.inf
jmp 0x402fe3
push str.infother
lea ecx, [esp + 0x18]
call sub.MFC42.DLL_CString::operator_1
lea ecx, [esp + 0x14]
push 0x4072e4
lea edx, [esp + 0x74]
push ecx
push edx
call sub.MFC42.DLL_operator_1
push esi
push eax
lea eax, [esp + 0x7c]
mov byte [esp + 0x8c], 0x2a
push eax
call sub.MFC42.DLL_operator
mov eax, dword [eax]
mov ecx, dword [esi]
mov ebp, dword [sym.imp.KERNEL32.dll_CopyFileA]
push 0
push eax
push ecx
call ebp
test eax, eax
lea ecx, [esp + 0x74]
sete bl
call fcn.00403b86
lea ecx, [esp + 0x70]
mov byte [esp + 0x84], 0x29
call fcn.00403b86
test bl, bl
je 0x4030b7
mov al, byte [0x407020]
test al, al
je 0x4030a1
mov al, byte [edi + 0x68]
test al, al
jne 0x4030a1
lea ecx, [esp + 0x30]
call sub.MFC42.DLL_CString::CString
mov ecx, dword [esp + 0x14]
mov esi, dword [esi]
push ecx
push esi
lea edx, [esp + 0x38]
push str.Error_copying_driver_file__s_to__s_n
push edx
mov byte [esp + 0x94], 0x2b
call sub.MFC42.DLL_CString::Format
mov eax, dword [esp + 0x40]
add esp, 0x10
push 0
push 0x40
push eax
call sub.MFC42.DLL_AfxMessageBox
lea ecx, [esp + 0x30]
mov byte [esp + 0x84], 0x29
call fcn.00403b86
lea ecx, [esp + 0x14]
mov byte [esp + 0x84], 2
call fcn.00403b86
jmp 0x403273
lea ecx, [esp + 0x14]
push 0x4072e4
lea edx, [esp + 0x74]
push ecx
push edx
call sub.MFC42.DLL_operator_1
lea esi, [edi + 0x74]
mov byte [esp + 0x84], 0x2c
push esi
push eax
lea eax, [esp + 0x7c]
push eax
call sub.MFC42.DLL_operator
mov eax, dword [eax]
mov ecx, dword [esi]
push 0
push eax
push ecx
call ebp
test eax, eax
lea ecx, [esp + 0x74]
sete bl
call fcn.00403b86
lea ecx, [esp + 0x70]
mov byte [esp + 0x84], 0x29
call fcn.00403b86
test bl, bl
je 0x40317f
mov al, byte [0x407020]
test al, al
je 0x403169
mov al, byte [edi + 0x68]
test al, al
jne 0x403169
lea ecx, [esp + 0x30]
call sub.MFC42.DLL_CString::CString
mov ecx, dword [esp + 0x14]
mov esi, dword [esi]
push ecx
push esi
lea edx, [esp + 0x38]
push str.Error_copying_driver_file__s_to__s_n
push edx
mov byte [esp + 0x94], 0x2d
call sub.MFC42.DLL_CString::Format
mov eax, dword [esp + 0x40]
add esp, 0x10
push 0
push 0x40
push eax
call sub.MFC42.DLL_AfxMessageBox
lea ecx, [esp + 0x30]
mov byte [esp + 0x84], 0x29
call fcn.00403b86
lea ecx, [esp + 0x14]
mov byte [esp + 0x84], 2
call fcn.00403b86
jmp 0x403273
lea ecx, [esp + 0x14]
push 0x4072e4
lea edx, [esp + 0x74]
push ecx
push edx
call sub.MFC42.DLL_operator_1
lea esi, [edi + 0x78]
mov byte [esp + 0x84], 0x2e
push esi
push eax
lea eax, [esp + 0x7c]
push eax
call sub.MFC42.DLL_operator
mov eax, dword [eax]
mov ecx, dword [esi]
push 0
push eax
push ecx
call ebp
test eax, eax
lea ecx, [esp + 0x74]
sete bl
call fcn.00403b86
lea ecx, [esp + 0x70]
mov byte [esp + 0x84], 0x29
call fcn.00403b86
test bl, bl
je 0x403244
mov al, byte [0x407020]
test al, al
je 0x403231
mov al, byte [edi + 0x68]
test al, al
jne 0x403231
lea ecx, [esp + 0x30]
call sub.MFC42.DLL_CString::CString
mov ecx, dword [esp + 0x14]
mov esi, dword [esi]
push ecx
push esi
lea edx, [esp + 0x38]
push str.Error_copying_driver_file__s_to__s_n
push edx
mov byte [esp + 0x94], 0x2f
call sub.MFC42.DLL_CString::Format
mov eax, dword [esp + 0x40]
add esp, 0x10
push 0
push 0x40
push eax
call sub.MFC42.DLL_AfxMessageBox
lea ecx, [esp + 0x30]
mov byte [esp + 0x84], 0x29
call fcn.00403b86
lea ecx, [esp + 0x14]
mov byte [esp + 0x84], 2
call fcn.00403b86
jmp 0x403273
mov byte [esp + 0x84], 2
lea ecx, [esp + 0x14]
call fcn.00403b86
mov al, byte [0x407020]
test al, al
je 0x403273
mov al, byte [edi + 0x68]
test al, al
jne 0x403273
push 0
push 0x40
push str.Installation_Successful
call sub.MFC42.DLL_AfxMessageBox
mov eax, dword [esp + 0x34]
push eax
call sub.MFC42.DLL_operatordelete
mov ecx, dword [esp + 0x20]
push ecx
call sub.MFC42.DLL_operatordelete
mov edx, dword [esp + 0x40]
push edx
call sub.MFC42.DLL_operatordelete
mov eax, dword [edi + 0x144]
add esp, 0xc
push eax
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
push 0
mov ecx, edi
call sub.MFC42.DLL_CDialog::EndDialog
lea ecx, [esp + 0x3c]
mov byte [esp + 0x84], 1
call fcn.00403b86
lea ecx, [esp + 0x18]
mov byte [esp + 0x84], 0
call fcn.00403b86
lea ecx, [esp + 0x20]
mov dword [esp + 0x84], 0xffffffff
call fcn.00403b86
mov ecx, dword [esp + 0x7c]
pop edi
pop esi
pop ebp
mov dword fs:[0], ecx
pop ebx
add esp, 0x78
ret