Function at 0x46e7d0
Capabilities:
Read .ini file

Disassembly:
push ebp
mov ebp, esp
mov eax, 0x1188
call fcn.004894c0
mov eax, dword [0x4e412c]
xor eax, ebp
mov dword [ebp - 4], eax
mov dword [ebp - 0x40c], 0
mov dword [ebp - 0x1064], 0xffffffff
mov eax, dword [ebp + 0x10]
push eax
call fcn.004640c0
add esp, 4
mov dword [ebp - 0x1064], eax
cmp dword [ebp - 0x1064], 1
jg 0x46e822
mov dword [ebp - 0x61c], 0x4cb72c
jmp 0x46e841
cmp dword [ebp - 0x1064], 6
jg 0x46e837
mov dword [ebp - 0x61c], 0x4cb738
jmp 0x46e841
mov dword [ebp - 0x61c], 0x4cb748
cmp dword [ebp - 0x1064], 3
jge 0x46e854
mov eax, 1
jmp 0x46eec9
mov byte [ebp - 0x1038], 0
push 0x7ff
push 0
lea ecx, [ebp - 0x1037]
push ecx
call fcn.004886d0
add esp, 0xc
mov byte [ebp - 0x408], 0
push 0x3ff
push 0
lea edx, [ebp - 0x407]
push edx
call fcn.004886d0
add esp, 0xc
mov eax, dword [0x4cb754]
mov dword [ebp - 0x104c], eax
mov ecx, dword [0x4cb758]
mov dword [ebp - 0x1048], ecx
mov dx, word [0x4cb75c]
mov word [ebp - 0x1044], dx
mov al, byte [0x4cb75e]
mov byte [ebp - 0x1042], al
mov ecx, dword [0x4cb760]
mov dword [ebp - 0x1058], ecx
mov edx, dword [0x4cb764]
mov dword [ebp - 0x1054], edx
mov ax, word [0x4cb768]
mov word [ebp - 0x1050], ax
mov cl, byte [0x4cb76a]
mov byte [ebp - 0x104e], cl
mov byte [ebp - 0x618], 0
push 0xff
push 0
lea edx, [ebp - 0x617]
push edx
call fcn.004886d0
add esp, 0xc
mov dword [ebp - 0x107c], 0
mov dword [ebp - 0x106c], 0
mov eax, dword [ebp + 8]
push eax
push 0x800
lea ecx, [ebp - 0x1038]
push ecx
push 0
push 0
lea edx, [ebp - 0x104c]
push edx
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
mov eax, dword [ebp - 0x107c]
movsx ecx, byte [ebp + eax - 0x1038]
test ecx, ecx
je 0x46ea2a
lea edx, [ebp - 0x1058]
push edx
call fcn.00489c70
add esp, 4
push eax
lea eax, [ebp - 0x1058]
push eax
mov ecx, dword [ebp - 0x107c]
lea edx, [ebp + ecx - 0x1038]
push edx
call fcn.00489fce
add esp, 0xc
test eax, eax
jne 0x46e9ff
mov eax, dword [ebp + 8]
push eax
push 0x400
lea ecx, [ebp - 0x408]
push ecx
push 0
mov edx, dword [ebp - 0x107c]
lea eax, [ebp + edx - 0x1038]
push eax
lea ecx, [ebp - 0x104c]
push ecx
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
lea edx, [ebp - 0x408]
push edx
mov eax, dword [ebp + 0xc]
push eax
call fcn.0049c8ee
add esp, 8
test eax, eax
jne 0x46e9ff
push str.Uninstall.
lea ecx, [ebp - 0x618]
push ecx
call fcn.00489ae0
add esp, 8
mov edx, dword [ebp - 0x107c]
lea eax, [ebp + edx - 0x1038]
push eax
lea ecx, [ebp - 0x618]
push ecx
call fcn.00489af0
add esp, 8
jmp 0x46ea2a
mov edx, dword [ebp - 0x107c]
lea eax, [ebp + edx - 0x1038]
push eax
call fcn.00489c70
add esp, 4
mov ecx, dword [ebp - 0x107c]
lea edx, [ecx + eax + 1]
mov dword [ebp - 0x107c], edx
jmp 0x46e941
lea eax, [ebp - 0x1074]
push eax
push 0x104
lea ecx, [ebp - 0x728]
push ecx
push 1
mov edx, dword [ebp - 0x61c]
push edx
push 0
call sub.WINSPOOL.DRV_GetPrinterDriverDirectoryA
lea eax, [ebp - 0x1040]
push eax
lea ecx, [ebp - 0x1074]
push ecx
push 0
push 0
push 6
mov edx, dword [ebp - 0x61c]
push edx
push 0
call sub.WINSPOOL.DRV_EnumPrinterDriversA
mov dword [ebp - 0x1060], eax
cmp dword [ebp - 0x1074], 0
je 0x46edf2
mov eax, dword [ebp - 0x1074]
push eax
push 0
call dword [sym.imp.KERNEL32.dll_GlobalAlloc]
mov dword [ebp - 0x1070], eax
cmp dword [ebp - 0x1070], 0
je 0x46edf2
lea ecx, [ebp - 0x1040]
push ecx
lea edx, [ebp - 0x1074]
push edx
mov eax, dword [ebp - 0x1074]
push eax
mov ecx, dword [ebp - 0x1070]
push ecx
push 6
mov edx, dword [ebp - 0x61c]
push edx
push 0
call sub.WINSPOOL.DRV_EnumPrinterDriversA
mov dword [ebp - 0x1060], eax
cmp dword [ebp - 0x1060], 0
je 0x46ede5
mov dword [ebp - 0x730], 0
jmp 0x46eafe
mov eax, dword [ebp - 0x730]
add eax, 1
mov dword [ebp - 0x730], eax
mov ecx, dword [ebp - 0x730]
cmp ecx, dword [ebp - 0x1040]
jae 0x46ede5
mov edx, dword [ebp - 0x730]
imul edx, edx, 0x50
mov eax, dword [ebp - 0x1070]
cmp dword [eax + edx + 0x48], 0
jne 0x46eb28
jmp 0x46eaef
push 0x5c
mov ecx, dword [ebp - 0x730]
imul ecx, ecx, 0x50
mov edx, dword [ebp - 0x1070]
mov eax, dword [edx + ecx + 0x48]
push eax
call fcn.00468570
add esp, 8
mov dword [ebp - 0x105c], eax
cmp dword [ebp - 0x105c], 0
jne 0x46eb70
mov ecx, dword [ebp - 0x730]
imul ecx, ecx, 0x50
mov edx, dword [ebp - 0x1070]
mov eax, dword [edx + ecx + 0x48]
mov dword [ebp - 0x105c], eax
jmp 0x46eb8b
mov ecx, dword [ebp - 0x105c]
mov dword [ebp - 0x105c], ecx
mov edx, dword [ebp - 0x105c]
add edx, 1
mov dword [ebp - 0x105c], edx
mov eax, dword [ebp - 0x730]
imul eax, eax, 0x50
mov ecx, dword [ebp - 0x1070]
mov edx, dword [ecx + eax + 4]
push edx
mov eax, dword [ebp + 0xc]
push eax
call fcn.004405d0
add esp, 8
test eax, eax
jne 0x46edae
mov ecx, dword [ebp - 0x105c]
push ecx
lea edx, [ebp - 0x518]
push edx
call fcn.00489ae0
add esp, 8
mov eax, dword [ebp - 0x40c]
add eax, 1
mov dword [ebp - 0x40c], eax
lea ecx, [ebp - 0x728]
push ecx
lea edx, [ebp - 0x838]
push edx
call fcn.00489ae0
add esp, 8
push 0x4cb778
lea eax, [ebp - 0x838]
push eax
call fcn.00489af0
add esp, 8
lea ecx, [ebp - 0x518]
push ecx
lea edx, [ebp - 0x838]
push edx
call fcn.00489af0
add esp, 8
lea eax, [ebp - 0x1068]
push eax
push 2
push 0x4cb77c
mov ecx, dword [ebp + 8]
push ecx
call dword [sym.imp.SETUPAPI.dll_SetupOpenInfFileA]
mov dword [ebp - 0x72c], eax
cmp dword [ebp - 0x72c], 0
je 0x46edac
lea edx, [ebp - 0x838]
push edx
push 0x101d0
mov eax, dword [ebp - 0x72c]
push eax
call dword [sym.imp.SETUPAPI.dll_SetupSetDirectoryIdA]
mov dword [ebp - 0x1060], eax
lea ecx, [ebp - 0x838]
push ecx
push 0x101d1
mov edx, dword [ebp - 0x72c]
push edx
call dword [sym.imp.SETUPAPI.dll_SetupSetDirectoryIdA]
mov dword [ebp - 0x1060], eax
lea eax, [ebp - 0x838]
push eax
push 0x101d2
mov ecx, dword [ebp - 0x72c]
push ecx
call dword [sym.imp.SETUPAPI.dll_SetupSetDirectoryIdA]
mov dword [ebp - 0x1060], eax
lea edx, [ebp - 0x838]
push edx
push 0x101d3
mov eax, dword [ebp - 0x72c]
push eax
call dword [sym.imp.SETUPAPI.dll_SetupSetDirectoryIdA]
mov dword [ebp - 0x1060], eax
call dword [sym.imp.USER32.dll_GetDesktopWindow]
mov dword [ebp - 0x103c], eax
mov ecx, dword [ebp - 0x103c]
push ecx
call dword [sym.imp.SETUPAPI.dll_SetupInitDefaultQueueCallback]
mov dword [ebp - 0x1078], eax
call dword [sym.imp.SETUPAPI.dll_SetupOpenFileQueue]
mov dword [ebp - 0x620], eax
push 0x400
push 0
push str.Uninstall
mov edx, dword [ebp - 0x620]
push edx
push 0
mov eax, dword [ebp - 0x72c]
push eax
call dword [sym.imp.SETUPAPI.dll_SetupInstallFilesFromInfSectionA]
mov dword [ebp - 0x1060], eax
lea ecx, [ebp - 0x618]
push ecx
call fcn.00489c70
add esp, 4
test eax, eax
je 0x46ed55
push 0x400
push 0
lea edx, [ebp - 0x618]
push edx
mov eax, dword [ebp - 0x620]
push eax
push 0
mov ecx, dword [ebp - 0x72c]
push ecx
call dword [sym.imp.SETUPAPI.dll_SetupInstallFilesFromInfSectionA]
or eax, dword [ebp - 0x1060]
mov dword [ebp - 0x1060], eax
cmp dword [ebp - 0x1060], 0
je 0x46ed85
mov edx, dword [ebp - 0x1078]
push edx
mov eax, dword [sym.imp.SETUPAPI.dll_SetupDefaultQueueCallbackA]
push eax
mov ecx, dword [ebp - 0x620]
push ecx
mov edx, dword [ebp - 0x103c]
push edx
call dword [sym.imp.SETUPAPI.dll_SetupCommitFileQueueA]
mov dword [ebp - 0x1060], eax
mov eax, dword [ebp - 0x1078]
push eax
call dword [sym.imp.SETUPAPI.dll_SetupTermDefaultQueueCallback]
mov ecx, dword [ebp - 0x620]
push ecx
call dword [sym.imp.SETUPAPI.dll_SetupCloseFileQueue]
mov edx, dword [ebp - 0x72c]
push edx
call dword [sym.imp.SETUPAPI.dll_SetupCloseInfFile]
jmp 0x46ede0
cmp dword [ebp - 0x40c], 0
je 0x46ede0
mov eax, dword [ebp - 0x105c]
push eax
lea ecx, [ebp - 0x518]
push ecx
call fcn.004405d0
add esp, 8
test eax, eax
jne 0x46ede0
mov edx, dword [ebp - 0x40c]
add edx, 1
mov dword [ebp - 0x40c], edx
jmp 0x46eaef
mov eax, dword [ebp - 0x1070]
push eax
call dword [sym.imp.KERNEL32.dll_GlobalFree]
cmp dword [ebp - 0x40c], 1
jne 0x46eec3
lea ecx, [ebp - 0x728]
push ecx
lea edx, [ebp - 0x838]
push edx
call fcn.00489ae0
add esp, 8
push 0x4cb790
lea eax, [ebp - 0x838]
push eax
call fcn.00489af0
add esp, 8
lea ecx, [ebp - 0x518]
push ecx
lea edx, [ebp - 0x1188]
push edx
call fcn.00489ae0
add esp, 8
mov dword [ebp - 0x1080], 0
jmp 0x46ee5a
mov eax, dword [ebp - 0x1080]
add eax, 1
mov dword [ebp - 0x1080], eax
cmp dword [ebp - 0x1080], 0x104
jge 0x46ee9c
mov ecx, dword [ebp - 0x1080]
movsx edx, byte [ebp + ecx - 0x1188]
cmp edx, 0x2d
je 0x46ee8c
mov eax, dword [ebp - 0x1080]
movsx ecx, byte [ebp + eax - 0x1188]
cmp ecx, 0x2f
jne 0x46ee9a
mov edx, dword [ebp - 0x1080]
mov byte [ebp + edx - 0x1188], 0x5f
jmp 0x46ee4b
lea eax, [ebp - 0x1188]
push eax
lea ecx, [ebp - 0x838]
push ecx
call fcn.00489af0
add esp, 8
push 1
lea edx, [ebp - 0x838]
push edx
call fcn.0046eee0
add esp, 8
mov eax, dword [ebp - 0x1060]
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00488550
mov esp, ebp
pop ebp
ret