Function at 0x590c30
Capabilities:
Enumerate gui resources

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x5d3f8d
mov eax, dword fs:[0]
push eax
sub esp, 0x540
mov eax, dword [0x638fe4]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov edi, dword [ebp + 8]
lea eax, [ecx + 0xf8]
mov dword [ebp - 0x53c], eax
mov dword [edi], 0x1e240
cmp dword [eax], 0
jne 0x591219
cmp dword [ecx + 0xfc], 0
lea eax, [ecx + 0xfc]
mov dword [ebp - 0x54c], eax
jne 0x591219
call fcn.005837b0
call fcn.0058bf60
push dword [edi]
call fcn.0058be90
test al, al
je 0x591219
mov ecx, dword [edi]
call fcn.00587300
mov ecx, dword [edi]
call fcn.00588280
test eax, eax
je 0x591219
push 0
push dword [edi]
call fcn.0058c200
push dword [edi]
call fcn.005823e0
test al, al
je 0x591219
push 1
push dword [edi]
call fcn.0058c200
mov ecx, dword [edi]
call fcn.00586f90
push 0x1001f
push dword [edi]
call fcn.0058c3e0
xor dl, dl
mov ecx, eax
call fcn.0058e8b0
mov edx, dword [edi]
xor bl, bl
push ecx
mov ecx, esp
push 0xa0009
call fcn.005b5f80
add esp, 4
mov cl, bl
call fcn.0058c700
add esp, 4
push 0x10002
push dword [edi]
call fcn.0058c3e0
mov edx, dword [edi]
lea ecx, [ebp - 0x544]
push 0x20001
mov ebx, eax
call fcn.005b5f80
add esp, 4
mov dword [ebp - 4], 0
cmp ebx, 0xd03
jg 0x590da8
je 0x590d66
mov eax, ebx
sub eax, 0xce4
je 0x590d66
sub eax, 6
je 0x590d66
sub eax, 0x12
jne 0x590dc0
xor esi, esi
lea eax, [ebp - 0x544]
push 0x60e1e8
push eax
call fcn.004044f0
add esp, 8
test al, al
je 0x590d85
mov esi, 2
cmp ebx, 0xcfc
jne 0x590de0
push str.MIG_Scan
lea ecx, [ebp - 0x544]
call fcn.00404810
test eax, eax
jne 0x590dc7
mov ebx, 0x16c8c
jmp 0x590de0
cmp ebx, 0xd04
je 0x590d66
cmp ebx, 0xe30
je 0x590d66
cmp ebx, 0x1fb0
je 0x590d66
mov esi, 1
jmp 0x590d68
push str.MIG_WorkShop
lea ecx, [ebp - 0x544]
call fcn.00404810
test eax, eax
jne 0x590de0
mov ebx, 0x1457c
push 0x50021
push dword [edi]
call fcn.0058c3e0
cmp eax, 0xb
jl 0x590ec8
mov byte [ebp - 0x531], 1
cmp esi, 1
jne 0x590ea1
lea ecx, [ebp - 0x540]
mov dword [ebp - 0x538], 0
call fcn.00402be0
push 0
lea eax, [ebp - 0x540]
mov byte [ebp - 4], 1
push str.jp.co.canon.scangear.scanutility.mutexByCat_d
push eax
call fcn.00402e70
add esp, 0xc
lea eax, [ebp - 0x538]
push dword [ebp - 0x540]
push 0x60ab98
push eax
call dword [sym.imp.SUCMLIB.dll_Ordinal_83]
mov ecx, dword [ebp - 0x538]
test ecx, ecx
je 0x590e89
mov eax, dword [ecx]
push 0
call dword [eax + 0xc]
neg eax
sbb al, al
not al
and byte [ebp - 0x531], al
cmp dword [ebp - 0x538], 0
je 0x590e89
lea eax, [ebp - 0x538]
push eax
call dword [sym.imp.SUCMLIB.dll_Ordinal_84]
mov dword [ebp - 0x538], 0
lea ecx, [ebp - 0x540]
mov byte [ebp - 4], 0
call fcn.00402b90
cmp byte [ebp - 0x531], 0
je 0x590ec8
mov eax, dword [ebp - 0x544]
cmp dword [eax - 0xc], 0
je 0x590ec1
push str.SULA
lea ecx, [ebp - 0x544]
call fcn.00404810
test eax, eax
jne 0x590ec8
mov ecx, dword [edi]
call fcn.0058c460
lea ecx, [ebp - 0x548]
mov byte [ebp - 0x531], 1
call fcn.00402be0
push esi
lea eax, [ebp - 0x548]
mov byte [ebp - 4], 2
push str.jp.co.canon.scangear.scanutility.mutexByCat_d
push eax
call fcn.00402e70
add esp, 0xc
push dword [ebp - 0x548]
push 0x60ab98
push dword [ebp - 0x53c]
call dword [sym.imp.SUCMLIB.dll_Ordinal_83]
mov eax, dword [ebp - 0x53c]
push 0
mov ecx, dword [eax]
mov eax, dword [ecx]
call dword [eax + 0xc]
test eax, eax
je 0x591029
mov edi, dword [ebp - 0x53c]
mov esi, dword [sym.imp.SUCMLIB.dll_Ordinal_84]
push edi
call esi
lea ecx, [ebp - 0x53c]
mov dword [edi], 0
mov dword [ebp - 0x540], 0
call fcn.00402be0
push ebx
lea eax, [ebp - 0x53c]
mov byte [ebp - 4], 3
push str.jp.co.canon.scangear.scanutility.mutexByCtrlID_d
push eax
call fcn.00402e70
mov ebx, dword [sym.imp.SUCMLIB.dll_Ordinal_83]
lea eax, [ebp - 0x540]
add esp, 0xc
push dword [ebp - 0x53c]
push 0x60ab98
push eax
call ebx
mov ecx, dword [ebp - 0x540]
push 0
mov eax, dword [ecx]
call dword [eax + 0xc]
test eax, eax
je 0x590fb4
push 0
push 0x5ad720
call dword [sym.imp.USER32.dll_EnumWindows]
lea eax, [ebp - 0x540]
push eax
call esi
mov dword [ebp - 0x540], 0
jmp 0x5911f8
push str.jp.co.canon.scangear.scanutility.Exclusive
push 0x60ab98
lea eax, [ebp - 0x538]
mov dword [ebp - 0x538], 0
push eax
call ebx
mov ecx, dword [ebp - 0x538]
push 0
mov eax, dword [ecx]
call dword [eax + 0xc]
test eax, eax
jne 0x590ffb
mov edx, 0x98a00
xor ecx, ecx
call fcn.0056c650
mov ecx, dword [ebp - 0x538]
mov eax, dword [ecx]
call dword [eax + 0x10]
jmp 0x591008
push 0
push 0x5ad720
call dword [sym.imp.USER32.dll_EnumWindows]
lea eax, [ebp - 0x538]
push eax
call esi
lea eax, [ebp - 0x540]
push eax
call esi
mov dword [ebp - 0x540], 0
jmp 0x5911f8
test esi, esi
jne 0x591131
lea ecx, [ebp - 0x53c]
call fcn.00402be0
push 1
lea eax, [ebp - 0x53c]
mov byte [ebp - 4], 4
push str.jp.co.canon.scangear.scanutility.mutexByCat_d
push eax
call fcn.00402e70
add esp, 0xc
mov dword [ebp - 0x538], esi
mov esi, dword [sym.imp.SUCMLIB.dll_Ordinal_83]
lea eax, [ebp - 0x538]
push dword [ebp - 0x53c]
push 0x60ab98
push eax
call esi
mov ecx, dword [ebp - 0x538]
push 0
mov eax, dword [ecx]
call dword [eax + 0xc]
test eax, eax
jne 0x591094
mov ecx, dword [ebp - 0x538]
mov eax, dword [ecx]
call dword [eax + 0x10]
jmp 0x5910fc
push str.jp.co.canon.scangear.scanutility.Exclusive
push 0x60ab98
lea eax, [ebp - 0x540]
mov dword [ebp - 0x540], 0
push eax
call esi
mov ecx, dword [ebp - 0x540]
push 0
mov eax, dword [ecx]
call dword [eax + 0xc]
test eax, eax
jne 0x5910db
mov edx, 0x98a00
xor ecx, ecx
call fcn.0056c650
mov ecx, dword [ebp - 0x540]
mov eax, dword [ecx]
call dword [eax + 0x10]
jmp 0x5910e8
push 0
push 0x5ad720
call dword [sym.imp.USER32.dll_EnumWindows]
lea eax, [ebp - 0x540]
push eax
call dword [sym.imp.SUCMLIB.dll_Ordinal_84]
mov byte [ebp - 0x531], 0
lea eax, [ebp - 0x538]
push eax
call dword [sym.imp.SUCMLIB.dll_Ordinal_84]
lea ecx, [ebp - 0x53c]
mov dword [ebp - 0x538], 0
mov byte [ebp - 4], 2
call fcn.00402b90
cmp byte [ebp - 0x531], 0
je 0x591203
jmp 0x591137
mov esi, dword [sym.imp.SUCMLIB.dll_Ordinal_83]
lea ecx, [ebp - 0x53c]
call fcn.00402be0
push ebx
lea eax, [ebp - 0x53c]
mov byte [ebp - 4], 5
push str.jp.co.canon.scangear.scanutility.mutexByCtrlID_d
push eax
call fcn.00402e70
mov ebx, dword [ebp - 0x54c]
add esp, 0xc
push dword [ebp - 0x53c]
push 0x60ab98
push ebx
call esi
mov ecx, dword [ebx]
push 0
mov eax, dword [ecx]
call dword [eax + 0xc]
push 0x10002
push dword [edi]
call fcn.0058c3e0
mov esi, eax
cmp esi, 0xd0a
jg 0x5911af
cmp esi, 0xd08
jge case.0x5911a8.3301
lea eax, [esi - 0xce5]
cmp eax, 0x1f
ja case.0x5911a8.3306
movzx eax, byte [eax + 0x591240]
jmp dword [eax*4 + 0x591238]
cmp esi, 0xd11
je case.0x5911a8.3301
cmp esi, 0x1faf
je case.0x5911a8.3301
push dword [edi]
push esi
push 0
call fcn.00585330
jmp 0x5911f8
push 0
lea ecx, [ebp - 0x530]
call fcn.00579d50
mov byte [ebp - 4], 6
lea ecx, [ebp - 0x530]
mov dword [ebp - 0xc4], esi
call fcn.00579670
lea ecx, [ebp - 0x530]
call fcn.005797f0
lea ecx, [ebp - 0x53c]
call fcn.00402b90
lea ecx, [ebp - 0x548]
call fcn.00402b90
lea ecx, [ebp - 0x544]
call fcn.00402b90
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.00544774
mov esp, ebp
pop ebp
ret 4