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

Disassembly:
push ebp
mov ebp, esp
mov eax, 0x10a0
call fcn.004894c0
mov eax, dword [0x4e412c]
xor eax, ebp
mov dword [ebp - 4], eax
mov dword [ebp - 0xf5c], 0
mov dword [ebp - 0xf4c], 0xffffffff
mov dword [ebp - 0xf58], 0
mov dword [ebp - 0x50c], 0xffffffff
mov eax, dword [ebp + 0x14]
mov dword [eax], 0
mov byte [ebp - 0xe20], 0
push 0x7ff
push 0
lea ecx, [ebp - 0xe1f]
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 [0x4caefc]
mov dword [ebp - 0xf34], eax
mov ecx, dword [0x4caf00]
mov dword [ebp - 0xf30], ecx
mov dx, word [0x4caf04]
mov word [ebp - 0xf2c], dx
mov al, byte [0x4caf06]
mov byte [ebp - 0xf2a], al
mov ecx, dword [0x4caf08]
mov dword [ebp - 0xf40], ecx
mov edx, dword [0x4caf0c]
mov dword [ebp - 0xf3c], edx
mov ax, word [0x4caf10]
mov word [ebp - 0xf38], ax
mov cl, byte [0x4caf12]
mov byte [ebp - 0xf36], cl
mov byte [ebp - 0x508], 0
push 0xff
push 0
lea edx, [ebp - 0x507]
push edx
call fcn.004886d0
add esp, 0xc
mov byte [ebp - 0xf28], 0
push 0xff
push 0
lea eax, [ebp - 0xf27]
push eax
call fcn.004886d0
add esp, 0xc
mov dword [ebp - 0xf60], 0
mov dword [ebp - 0xf54], 0
mov ecx, dword [ebp + 8]
push ecx
push str.LTuninstFromUnf__s__Start_n
push 0
call fcn.0046fd10
add esp, 0xc
mov edx, dword [ebp + 0xc]
push edx
call fcn.004640c0
add esp, 4
mov dword [ebp - 0xf4c], eax
cmp dword [ebp - 0xf4c], 1
jg 0x46ca0b
mov dword [ebp - 0x61c], 0x4caf30
jmp 0x46ca2a
cmp dword [ebp - 0xf4c], 6
jg 0x46ca20
mov dword [ebp - 0x61c], 0x4caf3c
jmp 0x46ca2a
mov dword [ebp - 0x61c], 0x4caf4c
mov dword [ebp - 0xf50], 0
lea eax, [ebp - 0xf50]
push eax
push 2
push 0x4caf58
mov ecx, dword [ebp + 8]
push ecx
call dword [sym.imp.SETUPAPI.dll_SetupOpenInfFileA]
mov dword [ebp - 0x620], eax
cmp dword [ebp - 0x620], 0xffffffff
jne 0x46ca89
mov dword [ebp - 0xf44], 0
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
mov edx, dword [ebp + 8]
push edx
push 0x4caf60
push 0
call fcn.0046fd10
add esp, 0x10
jmp 0x46d45b
mov dword [ebp - 0xf74], 0xffffffff
mov dword [ebp - 0xf60], 0
mov dword [ebp - 0xf54], 0
mov eax, dword [ebp + 8]
push eax
push 0x800
lea ecx, [ebp - 0xe20]
push ecx
push 0
push 0
lea edx, [ebp - 0xf34]
push edx
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
mov eax, dword [ebp - 0xf60]
movsx ecx, byte [ebp + eax - 0xe20]
test ecx, ecx
je 0x46cb9d
lea edx, [ebp - 0xf40]
push edx
call fcn.00489c70
add esp, 4
push eax
lea eax, [ebp - 0xf40]
push eax
mov ecx, dword [ebp - 0xf60]
lea edx, [ebp + ecx - 0xe20]
push edx
call fcn.00489fce
add esp, 0xc
test eax, eax
jne 0x46cb72
mov eax, dword [ebp + 8]
push eax
push 0x400
lea ecx, [ebp - 0x408]
push ecx
push 0
mov edx, dword [ebp - 0xf60]
lea eax, [ebp + edx - 0xe20]
push eax
lea ecx, [ebp - 0xf34]
push ecx
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
lea edx, [ebp - 0x408]
push edx
mov eax, dword [ebp + 0x10]
push eax
call fcn.0049c8ee
add esp, 8
test eax, eax
jne 0x46cb72
mov ecx, dword [ebp - 0xf60]
lea edx, [ebp + ecx - 0xe20]
push edx
lea eax, [ebp - 0xf28]
push eax
call fcn.00489ae0
add esp, 8
jmp 0x46cb9d
mov ecx, dword [ebp - 0xf60]
lea edx, [ebp + ecx - 0xe20]
push edx
call fcn.00489c70
add esp, 4
mov ecx, dword [ebp - 0xf60]
lea edx, [ecx + eax + 1]
mov dword [ebp - 0xf60], edx
jmp 0x46cac8
lea eax, [ebp - 0xf70]
push eax
lea ecx, [ebp - 0xf28]
push ecx
lea edx, [ebp - 0xf34]
push edx
mov eax, dword [ebp - 0x620]
push eax
call dword [sym.imp.SETUPAPI.dll_SetupFindFirstLineA]
test eax, eax
je 0x46ccc0
push 0
push 0x104
lea ecx, [ebp - 0x1080]
push ecx
push 1
lea edx, [ebp - 0xf70]
push edx
call dword [sym.imp.SETUPAPI.dll_SetupGetStringFieldA]
test eax, eax
je 0x46ccc0
call fcn.00473800
push eax
call fcn.004640c0
add esp, 4
mov dword [ebp - 0xf74], eax
cmp dword [ebp - 0xf74], 6
je 0x46cc12
cmp dword [ebp - 0xf74], 9
jne 0x46cc2d
mov eax, dword [ebp - 0x61c]
push eax
lea ecx, [ebp - 0x1080]
push ecx
call fcn.0046e480
add esp, 8
jmp 0x46ccc0
cmp dword [ebp - 0xf74], 4
je 0x46cc51
cmp dword [ebp - 0xf74], 7
je 0x46cc51
cmp dword [ebp - 0xf74], 5
je 0x46cc51
cmp dword [ebp - 0xf74], 8
jne 0x46cc70
mov edx, dword [ebp - 0xf74]
push edx
mov eax, dword [ebp - 0x61c]
push eax
lea ecx, [ebp - 0x1080]
push ecx
call fcn.0046f080
add esp, 0xc
jmp 0x46ccc0
cmp dword [ebp - 0xf74], 3
je 0x46cc82
cmp dword [ebp - 0xf74], 2
jne 0x46ccc0
mov edx, dword [ebp - 0xf74]
push edx
mov eax, dword [ebp - 0x61c]
push eax
mov ecx, dword [ebp + 8]
push ecx
lea edx, [ebp - 0x1080]
push edx
call fcn.0046c3d0
add esp, 0x10
mov eax, dword [ebp - 0xf74]
push eax
mov ecx, dword [ebp - 0x61c]
push ecx
lea edx, [ebp - 0x1080]
push edx
call fcn.0046f080
add esp, 0xc
push 0x4caf84
push 0
call fcn.0046fd10
add esp, 8
mov dword [ebp - 0xf5c], 0
lea eax, [ebp - 0xf5c]
push eax
push 0
push 0
push 1
mov ecx, dword [ebp - 0x61c]
push ecx
push 0
call sub.WINSPOOL.DRV_GetPrinterDriverDirectoryA
mov dword [ebp - 0xf44], eax
cmp dword [ebp - 0xf44], 0
jne 0x46ce81
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0x7a
jne 0x46ce81
mov edx, dword [ebp - 0xf5c]
push edx
call fcn.0047645c
add esp, 4
mov dword [ebp - 0x108c], eax
mov eax, dword [ebp - 0x108c]
mov dword [ebp - 0xe24], eax
lea ecx, [ebp - 0xf5c]
push ecx
mov edx, dword [ebp - 0xf5c]
push edx
mov eax, dword [ebp - 0xe24]
push eax
push 1
mov ecx, dword [ebp - 0x61c]
push ecx
push 0
call sub.WINSPOOL.DRV_GetPrinterDriverDirectoryA
mov dword [ebp - 0xf44], eax
mov edx, dword [ebp - 0xe24]
push edx
mov eax, dword [ebp - 0xf5c]
push eax
mov ecx, dword [ebp - 0xf44]
push ecx
mov edx, dword [ebp - 0x61c]
push edx
push 0x4cafa8
push 0
call fcn.0046fd10
add esp, 0x18
mov eax, dword [ebp + 0xc]
and eax, 1
je 0x46cda4
call fcn.00473800
cmp dword [ebp + 0xc], eax
jne 0x46cda4
jmp 0x46ce28
mov ecx, dword [ebp - 0xe24]
push ecx
call fcn.00489c70
add esp, 4
mov edx, dword [ebp - 0xe24]
movsx eax, byte [edx + eax - 1]
cmp eax, 0x5c
je 0x46cdd7
push 0x4cafa4
mov ecx, dword [ebp - 0xe24]
push ecx
call fcn.00489af0
add esp, 8
mov edx, dword [ebp + 0xc]
and edx, 1
je 0x46cdf5
push 0x4caffc
mov eax, dword [ebp - 0xe24]
push eax
call fcn.00489af0
add esp, 8
jmp 0x46ce28
cmp dword [ebp + 0xc], 0x500
jne 0x46ce14
push 0x4cb000
mov ecx, dword [ebp - 0xe24]
push ecx
call fcn.00489af0
add esp, 8
jmp 0x46ce28
push 0x4cb004
mov edx, dword [ebp - 0xe24]
push edx
call fcn.00489af0
add esp, 8
cmp dword [ebp - 0xf44], 0
je 0x46ce66
mov eax, dword [ebp - 0xe24]
push eax
push 0x101d0
mov ecx, dword [ebp - 0x620]
push ecx
call dword [sym.imp.SETUPAPI.dll_SetupSetDirectoryIdA]
mov dword [ebp - 0xf44], eax
mov edx, dword [ebp - 0xf44]
push edx
push 0x4cb008
push 0
call fcn.0046fd10
add esp, 0xc
mov eax, dword [ebp - 0xe24]
mov dword [ebp - 0x1090], eax
mov ecx, dword [ebp - 0x1090]
push ecx
call fcn.00476457
add esp, 4
lea edx, [ebp - 0xf5c]
push edx
push 0
push 0
push 1
mov eax, dword [ebp - 0x61c]
push eax
push 0
call sub.WINSPOOL.DRV_GetPrintProcessorDirectoryA
mov dword [ebp - 0xf44], eax
cmp dword [ebp - 0xf44], 0
jne 0x46cf95
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0x7a
jne 0x46cf95
mov ecx, dword [ebp - 0xf5c]
push ecx
call fcn.0047645c
add esp, 4
mov dword [ebp - 0x1094], eax
mov edx, dword [ebp - 0x1094]
mov dword [ebp - 0x1084], edx
lea eax, [ebp - 0xf5c]
push eax
mov ecx, dword [ebp - 0xf5c]
push ecx
mov edx, dword [ebp - 0x1084]
push edx
push 1
mov eax, dword [ebp - 0x61c]
push eax
push 0
call sub.WINSPOOL.DRV_GetPrintProcessorDirectoryA
mov dword [ebp - 0xf44], eax
cmp dword [ebp - 0xf44], 0
je 0x46cf6b
mov ecx, dword [ebp - 0x1084]
push ecx
push 0x101d1
mov edx, dword [ebp - 0x620]
push edx
call dword [sym.imp.SETUPAPI.dll_SetupSetDirectoryIdA]
mov dword [ebp - 0xf44], eax
cmp dword [ebp - 0xf44], 0
je 0x46cf53
mov eax, dword [ebp - 0x1084]
push eax
push 0x4cb030
push 0
call fcn.0046fd10
add esp, 0xc
jmp 0x46cf69
mov ecx, dword [ebp - 0x1084]
push ecx
push 0x4cb064
push 0
call fcn.0046fd10
add esp, 0xc
jmp 0x46cf7a
push 0x4cb09c
push 0
call fcn.0046fd10
add esp, 8
mov edx, dword [ebp - 0x1084]
mov dword [ebp - 0x1098], edx
mov eax, dword [ebp - 0x1098]
push eax
call fcn.00476457
add esp, 4
mov dword [ebp - 0xf5c], 0
lea ecx, [ebp - 0xf5c]
push ecx
push 0
push 0
call fcn.00476320
mov dword [ebp - 0xf44], eax
cmp dword [ebp - 0xf44], 0
jne 0x46d098
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0x7a
jne 0x46d098
mov edx, dword [ebp - 0xf5c]
push edx
call fcn.0047645c
add esp, 4
mov dword [ebp - 0x109c], eax
mov eax, dword [ebp - 0x109c]
mov dword [ebp - 0x1088], eax
lea ecx, [ebp - 0xf5c]
push ecx
mov edx, dword [ebp - 0x1088]
push edx
push 0
call fcn.00476320
mov dword [ebp - 0xf44], eax
cmp dword [ebp - 0xf44], 0
je 0x46d06e
mov eax, dword [ebp - 0x1088]
push eax
push 0x101d3
mov ecx, dword [ebp - 0x620]
push ecx
call dword [sym.imp.SETUPAPI.dll_SetupSetDirectoryIdA]
mov dword [ebp - 0xf44], eax
cmp dword [ebp - 0xf44], 0
je 0x46d056
mov edx, dword [ebp - 0x1088]
push edx
push 0x4cb0c0
push 0
call fcn.0046fd10
add esp, 0xc
jmp 0x46d06c
mov eax, dword [ebp - 0x1088]
push eax
push 0x4cb0e8
push 0
call fcn.0046fd10
add esp, 0xc
jmp 0x46d07d
push 0x4cb114
push 0
call fcn.0046fd10
add esp, 8
mov ecx, dword [ebp - 0x1088]
mov dword [ebp - 0x10a0], ecx
mov edx, dword [ebp - 0x10a0]
push edx
call fcn.00476457
add esp, 4
push 0x105
lea eax, [ebp - 0x618]
push eax
call dword [sym.imp.KERNEL32.dll_GetSystemDirectoryA]
xor ecx, ecx
cmp ecx, eax
sbb edx, edx
neg edx
mov dword [ebp - 0xf44], edx
je 0x46d0d9
lea eax, [ebp - 0x618]
push eax
push 0x101d2
mov ecx, dword [ebp - 0x620]
push ecx
call dword [sym.imp.SETUPAPI.dll_SetupSetDirectoryIdA]
mov dword [ebp - 0xf44], eax
mov dword [ebp - 0xf60], 0
mov dword [ebp - 0xf54], 0
mov edx, dword [ebp + 8]
push edx
push 0x800
lea eax, [ebp - 0xe20]
push eax
push 0
push 0
lea ecx, [ebp - 0xf34]
push ecx
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
mov edx, dword [ebp - 0xf60]
movsx eax, byte [ebp + edx - 0xe20]
test eax, eax
je 0x46d1f7
lea ecx, [ebp - 0xf40]
push ecx
call fcn.00489c70
add esp, 4
push eax
lea edx, [ebp - 0xf40]
push edx
mov eax, dword [ebp - 0xf60]
lea ecx, [ebp + eax - 0xe20]
push ecx
call fcn.00489fce
add esp, 0xc
test eax, eax
jne 0x46d1cc
mov edx, dword [ebp + 8]
push edx
push 0x400
lea eax, [ebp - 0x408]
push eax
push 0
mov ecx, dword [ebp - 0xf60]
lea edx, [ebp + ecx - 0xe20]
push edx
lea eax, [ebp - 0xf34]
push eax
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
lea ecx, [ebp - 0x408]
push ecx
mov edx, dword [ebp + 0x10]
push edx
call fcn.0049c8ee
add esp, 8
test eax, eax
jne 0x46d1cc
push 0x4cb130
lea eax, [ebp - 0x508]
push eax
call fcn.00489ae0
add esp, 8
mov ecx, dword [ebp - 0xf60]
lea edx, [ebp + ecx - 0xe20]
push edx
lea eax, [ebp - 0x508]
push eax
call fcn.00489af0
add esp, 8
jmp 0x46d1f7
mov ecx, dword [ebp - 0xf60]
lea edx, [ebp + ecx - 0xe20]
push edx
call fcn.00489c70
add esp, 4
mov ecx, dword [ebp - 0xf60]
lea edx, [ecx + eax + 1]
mov dword [ebp - 0xf60], edx
jmp 0x46d10e
push 0x4cb13c
push 0
call fcn.0046fd10
add esp, 8
cmp dword [ebp - 0xf44], 0
je 0x46d244
call dword [sym.imp.SETUPAPI.dll_SetupOpenFileQueue]
mov dword [ebp - 0x50c], eax
cmp dword [ebp - 0x50c], 0xffffffff
jne 0x46d244
mov dword [ebp - 0xf44], 0
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push 0x4cb150
push 0
call fcn.0046fd10
add esp, 0xc
call fcn.004762c0
mov dword [ebp - 0xf48], eax
mov eax, dword [ebp - 0xf48]
push eax
call dword [sym.imp.SETUPAPI.dll_SetupInitDefaultQueueCallback]
mov dword [0x53f1ec], eax
push 0x400
push 0
push 0x4cb17c
mov ecx, dword [ebp - 0x50c]
push ecx
push 0
mov edx, dword [ebp - 0x620]
push edx
call dword [sym.imp.SETUPAPI.dll_SetupInstallFilesFromInfSectionA]
mov dword [ebp - 0xf44], eax
cmp dword [ebp - 0xf44], 0
jne 0x46d2a6
push 0x4cb188
push 0x4cb194
push 0
call fcn.0046fd10
add esp, 0xc
push 0x400
push 0
lea eax, [ebp - 0x508]
push eax
mov ecx, dword [ebp - 0x50c]
push ecx
push 0
mov edx, dword [ebp - 0x620]
push edx
call dword [sym.imp.SETUPAPI.dll_SetupInstallFilesFromInfSectionA]
mov dword [ebp - 0xf44], eax
cmp dword [ebp - 0xf44], 0
jne 0x46d2ef
lea eax, [ebp - 0x508]
push eax
push 0x4cb1c8
push 0
call fcn.0046fd10
add esp, 0xc
push 0x4cb1fc
push 0
call fcn.0046fd10
add esp, 8
mov dword [ebp - 0xf44], 0
mov ecx, dword [0x53f1ec]
push ecx
push 0x46d4e0
mov edx, dword [ebp - 0x50c]
push edx
mov eax, dword [ebp - 0xf48]
push eax
call dword [sym.imp.SETUPAPI.dll_SetupCommitFileQueueA]
mov dword [ebp - 0xf44], eax
cmp dword [ebp - 0xf44], 0
jne 0x46d34d
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.SetupCommitFIleQueue_failed___d__n
push 0
call fcn.0046fd10
add esp, 0xc
mov ecx, dword [0x53f1ec]
push ecx
call dword [sym.imp.SETUPAPI.dll_SetupTermDefaultQueueCallback]
push 1
mov edx, dword [ebp - 0xf48]
push edx
mov eax, dword [ebp - 0x50c]
push eax
call dword [sym.imp.SETUPAPI.dll_SetupPromptReboot]
mov dword [ebp - 0xf58], eax
cmp dword [ebp - 0xf58], 1
jne 0x46d397
mov ecx, dword [ebp + 0x14]
mov dword [ecx], 1
push 0x4cb230
push 0
call fcn.0046fd10
add esp, 8
call fcn.00473800
cmp dword [ebp + 0xc], eax
jne 0x46d45b
push 0
push 0
mov edx, dword [0x53f1ec]
push edx
mov eax, dword [sym.imp.SETUPAPI.dll_SetupDefaultQueueCallbackA]
push eax
push 0
push 0
push reloc.WS2_32.dll_bind
push 4
push 0x4cb25c
mov ecx, dword [ebp - 0x620]
push ecx
mov edx, dword [ebp - 0xf48]
push edx
call dword [sym.imp.SETUPAPI.dll_SetupInstallFromInfSectionA]
mov dword [ebp - 0xf44], eax
cmp dword [ebp - 0xf44], 0
jne 0x46d3ff
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push 0x4cb268
push 0
call fcn.0046fd10
add esp, 0xc
push 0
push 0
mov eax, dword [0x53f1ec]
push eax
mov ecx, dword [sym.imp.SETUPAPI.dll_SetupDefaultQueueCallbackA]
push ecx
push 0
push 0
push reloc.WS2_32.dll_bind
push 4
lea edx, [ebp - 0x508]
push edx
mov eax, dword [ebp - 0x620]
push eax
mov ecx, dword [ebp - 0xf48]
push ecx
call dword [sym.imp.SETUPAPI.dll_SetupInstallFromInfSectionA]
mov dword [ebp - 0xf44], eax
cmp dword [ebp - 0xf44], 0
jne 0x46d45b
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push 0x4cb294
push 0
call fcn.0046fd10
add esp, 0xc
cmp dword [ebp - 0x620], 0xffffffff
je 0x46d471
mov edx, dword [ebp - 0x620]
push edx
call dword [sym.imp.SETUPAPI.dll_SetupCloseInfFile]
cmp dword [ebp - 0x50c], 0xffffffff
je 0x46d487
mov eax, dword [ebp - 0x50c]
push eax
call dword [sym.imp.SETUPAPI.dll_SetupCloseFileQueue]
cmp dword [ebp - 0x620], 0xffffffff
je 0x46d499
cmp dword [ebp - 0x50c], 0xffffffff
jne 0x46d4b2
mov ecx, dword [ebp + 8]
push ecx
push str.LTuninstFromUnf__s__End_FALSE_n
push 0
call fcn.0046fd10
add esp, 0xc
xor eax, eax
jmp 0x46d4ca
mov edx, dword [ebp + 8]
push edx
push str.LTuninstFromUnf__s__End_TRUE_n
push 0
call fcn.0046fd10
add esp, 0xc
mov eax, 1
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00488550
mov esp, ebp
pop ebp
ret