Function at 0x549640
Capabilities:
Enumerate gui resources

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x57b31a
mov eax, dword fs:[0]
push eax
sub esp, 0x528
mov eax, dword [0x5d52e0]
xor eax, esp
mov dword [esp + 0x520], eax
push ebx
push esi
push edi
mov eax, dword [0x5d52e0]
xor eax, esp
push eax
lea eax, [esp + 0x538]
mov dword fs:[0], eax
mov eax, dword [ebp + 8]
mov edi, ecx
lea esi, [eax + 0xe8]
mov dword [edi], 0x1e240
cmp dword [esi], 0
mov dword [esp + 0x30], edi
jne 0x549a9d
add eax, 0xec
cmp dword [eax], 0
mov dword [esp + 0x2c], eax
jne 0x549a9d
call fcn.0054fe30
call fcn.0054e1b0
mov eax, dword [edi]
push eax
call fcn.0054e4a0
test al, al
je 0x549a9d
mov ecx, dword [edi]
push ecx
call fcn.00566c10
mov edx, dword [edi]
add esp, 4
push edx
call fcn.00567980
add esp, 4
test eax, eax
je 0x549a9d
mov eax, dword [edi]
push eax
xor edx, edx
call fcn.0054ded0
mov ecx, dword [edi]
call fcn.00553880
test al, al
je 0x549a9d
mov ecx, dword [edi]
push ecx
mov edx, 1
call fcn.0054ded0
mov ebx, dword [edi]
call fcn.00566470
mov edx, dword [edi]
push edx
mov edx, 0x10002
call fcn.0054e0a0
mov ebx, eax
mov eax, dword [edi]
push eax
mov ecx, 0x20001
lea edi, [esp + 0x24]
mov dword [esp + 0x1c], ebx
call fcn.00530ca0
add esp, 4
mov dword [esp + 0x540], 0
cmp ebx, 0xd03
jg 0x549769
je 0x549765
sub ebx, 0xce4
je 0x549765
sub ebx, 6
je 0x549765
sub ebx, 0x12
jne 0x549781
jmp 0x549790
xor ebx, ebx
jmp 0x5497c6
cmp ebx, 0xd04
je 0x549765
cmp ebx, 0xe30
je 0x549765
cmp ebx, 0x1fb0
je 0x549765
cmp dword [esp + 0x18], 0xcfc
mov ebx, 1
jne 0x5497c6
push str.MIG_Scan
lea ecx, [esp + 0x24]
call fcn.00402c00
test eax, eax
jne 0x5497ac
mov dword [esp + 0x18], 0x16c8c
jmp 0x5497c6
push str.MIG_WorkShop
lea ecx, [esp + 0x24]
call fcn.00402c00
test eax, eax
jne 0x5497c6
mov dword [esp + 0x18], 0x1457c
lea ecx, [esp + 0x24]
mov byte [esp + 0x1f], 1
call fcn.004011e0
push ebx
lea ecx, [esp + 0x28]
push str.jp.co.canon.scangear.scanutility.mutexByCat_d
push ecx
mov byte [esp + 0x54c], 1
call fcn.00401cf0
mov edx, dword [esp + 0x30]
mov edi, dword [sym.imp.SUCMLIB.dll_Ordinal_83]
add esp, 0xc
push edx
push 0x5a95c8
push esi
call edi
mov ecx, dword [esi]
mov eax, dword [ecx]
mov edx, dword [eax + 0xc]
push 0
call edx
test eax, eax
je 0x54990a
mov ebx, dword [sym.imp.SUCMLIB.dll_Ordinal_84]
push esi
call ebx
lea ecx, [esp + 0x10]
mov dword [esi], 0
mov dword [esp + 0x14], 0
call fcn.004011e0
mov byte [esp + 0x540], 2
mov eax, dword [esp + 0x18]
push eax
lea ecx, [esp + 0x14]
push str.jp.co.canon.scangear.scanutility.mutexByCtrlID_d
push ecx
call fcn.00401cf0
mov edx, dword [esp + 0x1c]
add esp, 0xc
push edx
push 0x5a95c8
lea eax, [esp + 0x1c]
push eax
call edi
mov ecx, dword [esp + 0x14]
mov edx, dword [ecx]
mov eax, dword [edx + 0xc]
xor esi, esi
push esi
call eax
test eax, eax
je 0x549893
push esi
push 0x52a7f0
call dword [sym.imp.USER32.dll_EnumWindows]
lea edx, [esp + 0x14]
push edx
call ebx
mov dword [esp + 0x14], esi
jmp 0x549a82
push str.jp.co.canon.scangear.scanutility.Exclusive
push 0x5a95c8
lea ecx, [esp + 0x20]
push ecx
mov dword [esp + 0x24], esi
call edi
mov ecx, dword [esp + 0x18]
mov edx, dword [ecx]
mov eax, dword [edx + 0xc]
push esi
call eax
push esi
test eax, eax
jne 0x5498e8
mov ecx, 0x98a00
call fcn.00564a20
mov ecx, dword [esp + 0x1c]
mov edx, dword [ecx]
mov eax, dword [edx + 0x10]
add esp, 4
call eax
lea ecx, [esp + 0x18]
push ecx
call ebx
lea edx, [esp + 0x14]
push edx
call ebx
mov dword [esp + 0x14], esi
jmp 0x549a82
push 0x52a7f0
call dword [sym.imp.USER32.dll_EnumWindows]
lea ecx, [esp + 0x18]
push ecx
call ebx
lea edx, [esp + 0x14]
push edx
call ebx
mov dword [esp + 0x14], esi
jmp 0x549a82
test ebx, ebx
jne 0x5499f5
lea ecx, [esp + 0x28]
call fcn.004011e0
push 1
lea eax, [esp + 0x2c]
push str.jp.co.canon.scangear.scanutility.mutexByCat_d
push eax
mov byte [esp + 0x54c], 3
call fcn.00401cf0
mov ecx, dword [esp + 0x34]
add esp, 0xc
push ecx
push 0x5a95c8
lea edx, [esp + 0x1c]
push edx
mov dword [esp + 0x20], ebx
call edi
mov ecx, dword [esp + 0x14]
mov eax, dword [ecx]
mov edx, dword [eax + 0xc]
push ebx
call edx
mov esi, dword [sym.imp.SUCMLIB.dll_Ordinal_84]
test eax, eax
jne 0x549973
mov ecx, dword [esp + 0x14]
mov eax, dword [ecx]
mov edx, dword [eax + 0x10]
call edx
mov bl, byte [esp + 0x1f]
jmp 0x5499cd
push str.jp.co.canon.scangear.scanutility.Exclusive
push 0x5a95c8
lea eax, [esp + 0x18]
push eax
mov dword [esp + 0x1c], 0
call edi
mov ecx, dword [esp + 0x10]
mov edx, dword [ecx]
mov eax, dword [edx + 0xc]
push 0
call eax
push 0
test eax, eax
jne 0x5499b9
mov ecx, 0x98a00
call fcn.00564a20
mov ecx, dword [esp + 0x14]
mov edx, dword [ecx]
mov eax, dword [edx + 0x10]
add esp, 4
call eax
jmp 0x5499c4
push 0x52a7f0
call dword [sym.imp.USER32.dll_EnumWindows]
lea ecx, [esp + 0x10]
push ecx
call esi
xor bl, bl
lea edx, [esp + 0x14]
push edx
call esi
lea ecx, [esp + 0x28]
mov dword [esp + 0x14], 0
mov byte [esp + 0x540], 1
call fcn.00404b10
test bl, bl
je 0x549a8b
lea ecx, [esp + 0x10]
call fcn.004011e0
mov byte [esp + 0x540], 4
mov eax, dword [esp + 0x18]
push eax
lea ecx, [esp + 0x14]
push str.jp.co.canon.scangear.scanutility.mutexByCtrlID_d
push ecx
call fcn.00401cf0
mov edx, dword [esp + 0x1c]
mov ebx, dword [esp + 0x38]
add esp, 0xc
push edx
push 0x5a95c8
push ebx
call edi
mov ecx, dword [ebx]
mov eax, dword [ecx]
mov edx, dword [eax + 0xc]
push 0
call edx
mov ebx, dword [esp + 0x30]
mov eax, dword [ebx]
push eax
mov edx, 0x10002
call fcn.0054e0a0
mov edi, eax
cmp edi, 0xd04
jg 0x549ac3
cmp edi, 0xd03
jge 0x549adb
cmp edi, 0xce5
jl 0x549a74
cmp edi, 0xce9
jle 0x549adb
cmp edi, 0xceb
je 0x549adb
mov edx, dword [ebx]
push edx
mov ecx, edi
xor edx, edx
call fcn.00556ed0
mov esi, eax
lea ecx, [esp + 0x10]
call fcn.00404b10
lea ecx, [esp + 0x24]
call fcn.00404b10
lea ecx, [esp + 0x20]
call fcn.00404b10
mov ecx, dword [esp + 0x538]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x520]
xor ecx, esp
call fcn.004ff57c
mov esp, ebp
pop ebp
ret 4
cmp edi, 0xd08
jl 0x549a74
cmp edi, 0xd0a
jle 0x549adb
cmp edi, 0x1faf
jne 0x549a74
push 0
lea ecx, [esp + 0x38]
push ecx
call fcn.0055faa0
mov byte [esp + 0x540], 5
lea ecx, [esp + 0x34]
mov dword [esp + 0x488], edi
call fcn.00558ee0
lea ecx, [esp + 0x34]
mov esi, eax
mov byte [esp + 0x540], 4
call fcn.0055f8c0
jmp 0x549a82