Function at 0x4291c0
Capabilities:
Read .ini file

Disassembly:
push 0x6b8
mov eax, 0x469db5
call fcn.004517f7
xor ebx, ebx
mov dword [ebp - 4], ebx
mov dword [ebp - 0x6a8], ebx
mov byte [ebp - 4], 1
mov eax, dword [ebp + 8]
cmp dword [eax - 0xc], ebx
je 0x4297ab
push str.ScanEngine30.dll
call dword [sym.imp.KERNEL32.dll_LoadLibraryW]
mov edi, eax
mov dword [ebp - 0x6c0], edi
cmp edi, ebx
je 0x4297ab
mov esi, dword [sym.imp.KERNEL32.dll_GetProcAddress]
push str.CreateDeviceEnumerator
push edi
call esi
push str.DestroyDeviceEnumerator
push edi
mov dword [ebp - 0x6ac], eax
call esi
mov dword [ebp - 0x6c4], eax
cmp dword [ebp - 0x6ac], ebx
je 0x4297a4
cmp eax, ebx
je 0x4297a4
push dword [ebp + 8]
lea eax, [ebp - 0x69c]
push 0x104
push eax
push 0x47741c
push str.name0
push str.AllEpsonDS
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
lea eax, [ebp - 0x69c]
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenW]
mov edi, eax
inc edi
push ebx
mov eax, edi
cdq
push 2
push edx
push eax
mov dword [ebp - 0x6a4], edi
call fcn.00453cf0
cmp edx, ebx
jg 0x4292a6
jl 0x42928f
cmp eax, 0x7fffffff
ja 0x4292a6
push edx
push eax
lea ecx, [ebp - 0x6a4]
call fcn.004030c5
mov edi, dword [ebp - 0x6a4]
pop ecx
pop ecx
jmp 0x4292ab
mov eax, 0x80070057
cmp eax, ebx
jge 0x4292b3
xor eax, eax
jmp 0x4292ed
cmp edi, 0x400
jg 0x4292d1
push edi
call fcn.00403018
pop ecx
test al, al
je 0x4292d1
mov eax, edi
call fcn.004541f0
mov eax, esp
jmp 0x4292dd
push edi
lea esi, [ebp - 0x6a8]
call fcn.00402fbc
push 3
push edi
lea ecx, [ebp - 0x69c]
push ecx
push eax
call fcn.0040308d
push eax
lea eax, [ebp - 0x494]
push 0x400
push eax
call fcn.00450b06
add esp, 0xc
mov byte [ebp - 0x69d], 0
call dword [ebp - 0x6ac]
mov ebx, eax
mov eax, dword [ebx]
mov ecx, ebx
call dword [eax + 4]
mov esi, eax
xor edi, edi
cmp esi, edi
mov dword [ebp - 0x6b0], esi
mov dword [ebp - 0x6ac], edi
jle 0x4293b9
mov eax, dword [ebx]
push 0x40
lea ecx, [ebp - 0x94]
push ecx
push edi
mov ecx, ebx
call dword [eax + 0x10]
mov eax, dword [ebx]
push 0x40
lea ecx, [ebp - 0x54]
push ecx
push edi
mov ecx, ebx
call dword [eax + 8]
mov eax, dword [ebx]
lea ecx, [ebp - 0x6b8]
push ecx
lea ecx, [ebp - 0x6bc]
push ecx
push edi
mov ecx, ebx
call dword [eax + 0xc]
lea eax, [ebp - 0x54]
push eax
lea eax, [ebp - 0x494]
push eax
call fcn.00451320
pop ecx
pop ecx
test eax, eax
jne 0x429382
mov byte [ebp - 0x69d], 1
lea eax, [ebp - 0x94]
push str.EPSON
push eax
call fcn.00451320
pop ecx
pop ecx
test eax, eax
jne 0x42939f
inc dword [ebp - 0x6ac]
push edi
lea eax, [ebp - 0x54]
push eax
lea eax, [ebp + 8]
push eax
call fcn.00428fec
add esp, 0xc
inc edi
cmp edi, esi
jl 0x429330
push 0x479ab0
lea ecx, [ebp - 0x6b4]
call fcn.004024c3
mov byte [ebp - 4], 2
test esi, esi
jle 0x4293e6
push esi
lea eax, [ebp - 0x6b4]
push 0x477a1c
push eax
call fcn.0040314f
add esp, 0xc
push dword [ebp + 8]
push dword [ebp - 0x6b4]
push str.count
push 0x47b740
call dword [sym.imp.KERNEL32.dll_WritePrivateProfileStringW]
xor edi, edi
test esi, esi
jle 0x429462
mov eax, dword [ebx]
push 0x40
lea ecx, [ebp - 0x94]
push ecx
push edi
mov ecx, ebx
call dword [eax + 0x10]
mov eax, dword [ebx]
push 0x40
lea ecx, [ebp - 0x54]
push ecx
push edi
mov ecx, ebx
call dword [eax + 8]
mov eax, dword [ebx]
lea ecx, [ebp - 0x6b8]
push ecx
lea ecx, [ebp - 0x6bc]
push ecx
push edi
mov ecx, ebx
call dword [eax + 0xc]
push dword [ebp - 0x6b8]
lea eax, [ebp - 0x94]
push dword [ebp - 0x6bc]
push eax
lea eax, [ebp - 0x54]
push eax
lea eax, [ebp + 8]
push eax
call fcn.00428e46
add esp, 0x14
inc edi
cmp edi, esi
jl 0x429405
xor esi, esi
cmp byte [ebp - 0x69d], 0
je 0x429518
lea eax, [ebp - 0x494]
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenA]
mov edi, eax
inc edi
push esi
mov eax, edi
cdq
push 2
push edx
push eax
mov dword [ebp - 0x6a4], edi
call fcn.00453cf0
test edx, edx
jg 0x4294b8
jl 0x4294a1
cmp eax, 0x7fffffff
ja 0x4294b8
push edx
push eax
lea ecx, [ebp - 0x6a4]
call fcn.004030c5
mov edi, dword [ebp - 0x6a4]
pop ecx
pop ecx
jmp 0x4294bd
mov eax, 0x80070057
test eax, eax
jge 0x4294c5
xor eax, eax
jmp 0x429501
cmp edi, 0x400
jg 0x4294e3
push edi
call fcn.00403018
pop ecx
test al, al
je 0x4294e3
mov eax, edi
call fcn.004541f0
mov eax, esp
jmp 0x4294ef
push edi
lea esi, [ebp - 0x6a8]
call fcn.00402fbc
push 3
shr edi, 1
push edi
lea ecx, [ebp - 0x494]
push ecx
push eax
call fcn.0042a1d9
push dword [ebp + 8]
push eax
push str.name0
push str.AllEpsonDS
call dword [sym.imp.KERNEL32.dll_WritePrivateProfileStringW]
xor esi, esi
inc esi
xor edi, edi
cmp dword [ebp - 0x6b0], edi
jle 0x429589
mov eax, dword [ebx]
push 0x40
lea ecx, [ebp - 0x94]
push ecx
push edi
mov ecx, ebx
call dword [eax + 0x10]
lea eax, [ebp - 0x94]
push str.EPSON
push eax
call fcn.00451320
pop ecx
pop ecx
test eax, eax
jne 0x429580
mov eax, dword [ebx]
push 0x40
lea ecx, [ebp - 0x54]
push ecx
push edi
mov ecx, ebx
call dword [eax + 8]
lea eax, [ebp - 0x494]
push eax
lea eax, [ebp - 0x54]
push eax
call fcn.00451320
pop ecx
pop ecx
test eax, eax
je 0x429580
push esi
lea eax, [ebp - 0x54]
push eax
lea eax, [ebp + 8]
push eax
call fcn.004290d7
add esp, 0xc
inc esi
inc edi
cmp edi, dword [ebp - 0x6b0]
jl 0x429522
cmp byte [ebp - 0x69d], 0
je 0x429620
lea eax, [ebp - 0x494]
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenA]
mov edi, eax
inc edi
push 0
mov eax, edi
cdq
push 2
push edx
push eax
mov dword [ebp - 0x6a4], edi
call fcn.00453cf0
test edx, edx
jg 0x4295de
jl 0x4295c7
cmp eax, 0x7fffffff
ja 0x4295de
push edx
push eax
lea ecx, [ebp - 0x6a4]
call fcn.004030c5
mov edi, dword [ebp - 0x6a4]
pop ecx
pop ecx
jmp 0x4295e3
mov eax, 0x80070057
test eax, eax
jl 0x4296c5
cmp edi, 0x400
jg 0x429609
push edi
call fcn.00403018
pop ecx
test al, al
je 0x429609
mov eax, edi
call fcn.004541f0
mov eax, esp
jmp 0x429615
push edi
lea esi, [ebp - 0x6a8]
call fcn.00402fbc
lea ecx, [ebp - 0x494]
jmp 0x4296f6
xor edi, edi
cmp dword [ebp - 0x6ac], edi
jle 0x429716
cmp dword [ebp - 0x6b0], edi
jle 0x429677
mov eax, dword [ebx]
push 0x40
lea ecx, [ebp - 0x94]
push ecx
push edi
mov ecx, ebx
call dword [eax + 0x10]
lea eax, [ebp - 0x94]
push str.EPSON
push eax
call fcn.00451320
pop ecx
pop ecx
test eax, eax
je 0x429669
inc edi
cmp edi, dword [ebp - 0x6b0]
jl 0x429636
jmp 0x429677
mov eax, dword [ebx]
push 0x40
lea ecx, [ebp - 0x54]
push ecx
push edi
mov ecx, ebx
call dword [eax + 8]
lea eax, [ebp - 0x54]
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenA]
mov edi, eax
inc edi
push 0
mov eax, edi
cdq
push 2
push edx
push eax
mov dword [ebp - 0x6a4], edi
call fcn.00453cf0
test edx, edx
jg 0x4296bc
jl 0x4296a5
cmp eax, 0x7fffffff
ja 0x4296bc
push edx
push eax
lea ecx, [ebp - 0x6a4]
call fcn.004030c5
mov edi, dword [ebp - 0x6a4]
pop ecx
pop ecx
jmp 0x4296c1
mov eax, 0x80070057
test eax, eax
jge 0x4296c9
xor eax, eax
jmp 0x429702
cmp edi, 0x400
jg 0x4296e7
push edi
call fcn.00403018
pop ecx
test al, al
je 0x4296e7
mov eax, edi
call fcn.004541f0
mov eax, esp
jmp 0x4296f3
push edi
lea esi, [ebp - 0x6a8]
call fcn.00402fbc
lea ecx, [ebp - 0x54]
push 3
shr edi, 1
push edi
push ecx
push eax
call fcn.0042a1d9
push dword [ebp + 8]
push eax
push str.name0
push 0x47b740
call dword [sym.imp.KERNEL32.dll_WritePrivateProfileStringW]
call fcn.0042a8d7
push eax
lea ecx, [ebp - 0x6b0]
call fcn.00402773
push dword [ebp - 0x6ac]
lea eax, [ebp - 0x6b0]
push 0x477a1c
push eax
mov byte [ebp - 4], 3
call fcn.0040314f
mov esi, dword [ebp - 0x6b0]
add esp, 0xc
push dword [ebp + 8]
push esi
push str.count
push str.AllEpsonDS
call dword [sym.imp.KERNEL32.dll_WritePrivateProfileStringW]
push ebx
call dword [ebp - 0x6c4]
pop ecx
push dword [ebp - 0x6c0]
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
lea ecx, [esi - 0x10]
call fcn.0040285d
mov ecx, dword [ebp - 0x6b4]
add ecx, 0xfffffff0
call fcn.0040285d
lea ecx, [ebp - 0x6a8]
call fcn.004030e7
mov ecx, dword [ebp + 8]
add ecx, 0xfffffff0
call fcn.0040285d
xor eax, eax
inc eax
jmp 0x4297c3
push edi
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
lea ecx, [ebp - 0x6a8]
call fcn.004030e7
mov ecx, dword [ebp + 8]
add ecx, 0xfffffff0
call fcn.0040285d
xor eax, eax
lea esp, [ebp - 0x6d4]
call fcn.0045187a
ret