Function at 0x409467
Capabilities:
Get common file path
Read .ini file

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x144
push ebx
xor ebx, ebx
cmp byte [0x414940], bl
push esi
push edi
je 0x409658
lea eax, [ebp - 0x144]
push 0x100
push eax
call dword [sym.imp.KERNEL32.dll_GetWindowsDirectoryA]
lea eax, [ebp - 0x144]
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenA]
cmp byte [ebp + eax - 0x145], 0x5c
mov esi, dword [sym.imp.KERNEL32.dll_lstrcatA]
je 0x4094be
lea eax, [ebp - 0x144]
push 0x4110cc
push eax
call esi
lea eax, [ebp - 0x144]
push 0x414940
push eax
call esi
lea eax, [ebp - 0x144]
push ebx
push eax
call dword [sym.imp.KERNEL32.dll__lcreat]
cmp eax, 0xffffffff
mov dword [ebp - 4], eax
je 0x409658
push dword [0x414c14]
push 0x4000
push dword [0x414c70]
push 0x411750
push str.Msg1000
push str.Language
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
mov ecx, dword [0x414c70]
cmp byte [ecx], 0x7f
jne 0x40965d
cmp eax, 1
jne 0x40965d
push str.START_COMPONENT_r_n__NAME___WORKSTATION__r_n__START_GROUP_r_n____NAME___ComponentID__r_n____ID__1_r_n____CLASS___DMTFComponentID1.0__r_n____START_ATTRIBUTE_r_n______NAME___Manufacturer__r_n______ID__1_r_n______ACCESS__READ_ONLY_r_n______STORAGE__SPECIFIC_r_n______TYPE__STRING_255__r_n______VALUE____1___r_n____END_ATTRIBUTE_r_n____START_ATTRIBUTE_r_n______NAME___Product__r_n______ID__2_r_n______ACCESS__READ_ONLY_r_n______STORAGE__SPECIFIC_r_n______TYPE__STRING_255__r_n______VALUE____2___r_n____END_ATTRIBUTE_r_n____START_ATTRIBUTE_r_n______NAME___Version__r_n______ID__3_r_n______ACCESS__READ_ONLY_r_n______STORAGE__SPECIFIC_r_n______TYPE__STRING_255__r_n______VALUE____3___r_n____END_ATTRIBUTE_r_n____START_ATTRIBUTE_r_n______NAME___Serial_Number__r_n______ID__4_r_n______ACCESS__READ_ONLY_r_n______STORAGE__SPECIFIC_r_n______TYPE__STRING_255__r_n______VALUE____4___r_n____END_ATTRIBUTE_r_n____START_ATTRIBUTE_r_n______NAME____5___r_n______ID__5_r_n______ACCESS__READ_ONLY_r_n______STORAGE__SPECIFIC_r_n______TYPE__STRING_255__r_n______VALUE____6___r_n____END_ATTRIBUTE_r_n__END_GROUP_r_n__START_GROUP_r_n____NAME____5_Status__r_n____ID__2_r_n____CLASS___MICROSOFTJOBSTATUS1.0__r_n____START_ATTRIBUTE_r_n______NAME___Status__r_n______ID__1_r_n______ACCESS__READ_ONLY_r_n______STORAGE__SPECIFIC_r_n______TYPE__STRING_255__r_n______VALUE____7___r_n____END_ATTRIBUTE_r_n____START_ATTRIBUTE_r_n______NAME___Description__r_n______ID__2_r_n______ACCESS__READ_ONLY_r_n______STORAGE__SPECIFIC_r_n______TYPE__STRING_255__r_n______VALUE____8___r_n____END_ATTRIBUTE_r_n__END_GROUP_r_nEND_COMPONENT_r_n
push ecx
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
lea eax, [ebp - 0x44]
push eax
call fcn.00409697
mov esi, dword [0x414c70]
pop ecx
mov al, byte [esi]
cmp al, bl
je 0x409633
mov edi, dword [ebp - 4]
cmp al, 0x25
jne 0x409627
mov al, byte [esi + 1]
cmp al, 0x31
jl 0x409627
cmp al, 0x38
jg 0x409627
cmp byte [esi + 2], 0x25
jne 0x409627
cmp al, 0x34
jg 0x409587
movsx edi, al
sub edi, 0x30
shl edi, 7
add edi, 0x414940
jmp 0x4095da
cmp al, 0x35
jne 0x4095a1
cmp dword [0x4148e8], ebx
je 0x40959a
mov edi, str.Rollback
jmp 0x4095da
mov edi, str.Uninstall
jmp 0x4095da
cmp al, 0x36
jne 0x4095aa
lea edi, [ebp - 0x44]
jmp 0x4095da
cmp al, 0x37
jne 0x4095c4
cmp dword [0x4148a8], ebx
je 0x4095bd
mov edi, str.Failed
jmp 0x4095da
mov edi, str.Success
jmp 0x4095da
cmp al, 0x38
jne 0x4095da
cmp dword [0x4148a8], ebx
mov edi, str.Canceled_by_user
jne 0x4095da
mov edi, 0x414440
push edi
call dword [sym.imp.KERNEL32.dll_lstrlenA]
sub eax, 3
cmp eax, ebx
jle 0x409606
lea edx, [esi + 3]
mov ecx, edx
cmp byte [ecx], bl
je 0x4095f4
inc ecx
jmp 0x4095ed
cmp ecx, edx
jb 0x40961a
mov bl, byte [ecx]
mov byte [ecx + eax], bl
dec ecx
cmp ecx, edx
jae 0x4095f8
xor ebx, ebx
jmp 0x40961a
jge 0x40961a
lea ecx, [esi + 3]
mov dl, byte [ecx]
cmp dl, bl
je 0x409617
mov byte [ecx + eax], dl
inc ecx
jmp 0x40960b
mov byte [ecx + eax], bl
mov al, byte [edi]
cmp al, bl
je 0x409626
mov byte [esi], al
inc esi
inc edi
jmp 0x40961a
dec esi
mov al, byte [esi + 1]
inc esi
cmp al, bl
jne 0x40954d
push dword [0x414c70]
call dword [sym.imp.KERNEL32.dll_lstrlenA]
push eax
push dword [0x414c70]
push dword [ebp - 4]
call dword [sym.imp.KERNEL32.dll__lwrite]
push dword [ebp - 4]
call dword [sym.imp.KERNEL32.dll__lclose]
pop edi
pop esi
pop ebx
leave
ret
push 0x5e
push ecx
call fcn.0040a260
pop ecx
cmp eax, ebx
pop ecx
je 0x409530
cmp byte [eax], bl
mov ecx, eax
je 0x40967a
inc ecx
cmp byte [ecx], bl
jne 0x409675
cmp ecx, eax
jb 0x409686
mov dl, byte [ecx]
mov byte [ecx + 1], dl
dec ecx
jmp 0x40967a
push 0x5e
mov byte [eax], 0xd
mov byte [eax + 1], 0xa
push dword [0x414c70]
jmp 0x409660