Function at 0x594790
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x5b35f2
mov eax, dword fs:[0]
push eax
sub esp, 0xd0
mov eax, dword [0x616040]
xor eax, esp
mov dword [esp + 0xc8], eax
push ebx
push esi
push edi
mov eax, dword [0x616040]
xor eax, esp
push eax
lea eax, [esp + 0xe0]
mov dword fs:[0], eax
mov edi, ecx
push ecx
mov ecx, esp
push str.CDlgPreference::OnInitDialog__
call fcn.00402f60
lea ecx, [esp + 0x58]
call fcn.00586620
mov ecx, edi
mov dword [esp + 0xe8], 0
call fcn.0041a2e0
test edi, edi
jne 0x594804
xor eax, eax
xor ecx, ecx
jmp 0x594809
mov eax, dword [edi + 0x20]
mov ecx, eax
push eax
push str.ScanUtilityProp
push ecx
call dword [sym.imp.USER32.dll_SetPropW]
push 0
push 0
push 0xb0000
mov ecx, edi
call fcn.00414b7b
push edi
lea ecx, [esp + 0x44]
call fcn.004156d4
mov byte [esp + 0xe8], 1
mov esi, dword [sym.imp.GDI32.dll_GetDeviceCaps]
push 0x58
push dword [esp + 0x4c]
call esi
push 0x5a
push dword [esp + 0x4c]
mov ebx, eax
call esi
push 0
mov esi, eax
mov dword [esp + 0xbc], 0
lea eax, [esp + 0xbc]
mov dword [esp + 0xc0], 0
push eax
push 0
push 0x30
mov dword [esp + 0xd0], 0
mov dword [esp + 0xd4], 0
call dword [sym.imp.USER32.dll_SystemParametersInfoW]
mov eax, dword [esp + 0xc4]
sub eax, dword [esp + 0xbc]
imul ecx, esi, 0x258
mov dword [esp + 0x18], eax
mov eax, 0x2aaaaaab
imul ecx
mov eax, dword [esp + 0x18]
sar edx, 4
mov esi, edx
shr esi, 0x1f
add esi, edx
mov dword [esp + 0x28], esi
cmp esi, eax
jl 0x5948cd
mov esi, eax
mov dword [esp + 0x28], esi
mov eax, dword [esp + 0xc0]
sub eax, dword [esp + 0xb8]
mov dword [esp + 0x30], eax
mov eax, 0x2aaaaaab
imul ecx, ebx, 0x384
imul ecx
mov ecx, dword [esp + 0x30]
sar edx, 4
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [esp + 0x2c], eax
cmp eax, ecx
jl 0x594908
mov eax, ecx
mov dword [esp + 0x2c], eax
push 0x1e
push esi
push eax
push 0
push 0
push 0x61ca40
mov ecx, edi
call fcn.00414cc0
mov eax, dword [edi + 0x1b8]
mov esi, dword [sym.imp.USER32.dll_SendMessageW]
test eax, eax
je 0x59494b
push eax
push 1
push 0x80
push dword [edi + 0x20]
call esi
push dword [edi + 0x1b8]
push 0
push 0x80
push dword [edi + 0x20]
call esi
mov eax, dword [edi + 0x118]
lea ecx, [edi + 0x118]
push 0
push edi
call dword [eax + 0x160]
push dword [edi + 0x1b4]
mov edx, dword [edi + 0x100]
lea ecx, [esp + 0x18]
call fcn.0058f8e0
add esp, 4
mov byte [esp + 0xe8], 2
mov ecx, edi
push dword [eax]
call fcn.00414cfc
mov byte [esp + 0xe8], 1
or ecx, 0xffffffff
mov edx, dword [esp + 0x14]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x5949af
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov ecx, edi
call fcn.00592140
mov ecx, edi
call fcn.00592b70
push edi
push fcn.0058e5a0
push dword [edi + 0x20]
call dword [sym.imp.USER32.dll_EnumChildWindows]
mov ecx, edi
call fcn.0058e170
push 0
push 1
push dword [edi + 0x20]
call dword [sym.imp.USER32.dll_ShowScrollBar]
push 0x1f62
lea eax, [esp + 0x18]
push eax
lea ecx, [edi + 0x98]
call fcn.00583250
mov eax, dword [esp + 0x14]
cmp eax, dword [edi + 0x9c]
je 0x594a06
mov ebx, dword [eax + 0x24]
jmp 0x594a08
xor ebx, ebx
mov edx, 0x2c8
mov dword [esp + 0x14], 0
lea ecx, [esp + 0x14]
call fcn.0058c680
xor eax, eax
mov dword [esp + 0x80], eax
mov dword [esp + 0x84], eax
mov dword [esp + 0x88], eax
mov dword [esp + 0x8c], eax
mov dword [esp + 0x90], eax
mov dword [esp + 0x94], eax
lea eax, [esp + 0x80]
push eax
push 0x18
push dword [esp + 0x1c]
call dword [sym.imp.GDI32.dll_GetObjectW]
push dword [esp + 0x14]
call dword [sym.imp.GDI32.dll_DeleteObject]
test ebx, ebx
je 0x594ab6
cmp dword [ebx + 0x20], 0
je 0x594ab6
mov edx, dword [esp + 0x88]
mov ecx, edi
lea edx, [edx + 8]
call fcn.00588d30
mov edx, dword [esp + 0x84]
mov ecx, edi
mov esi, eax
lea edx, [edx + 8]
call fcn.00588d30
movzx ecx, si
mov esi, dword [sym.imp.USER32.dll_SendMessageW]
shl ecx, 0x10
movzx eax, ax
or ecx, eax
push ecx
push 0
push 0x1329
push dword [ebx + 0x20]
call esi
jmp 0x594abc
mov esi, dword [sym.imp.USER32.dll_SendMessageW]
mov ecx, edi
call fcn.00592070
mov ecx, edi
call fcn.00591d10
push 0x1e0
call fcn.0040d506
add esp, 4
mov dword [esp + 0x14], eax
mov byte [esp + 0xe8], 3
test eax, eax
je 0x594af7
push ecx
push dword [edi + 0x100]
mov ecx, eax
call fcn.00599340
jmp 0x594af9
xor eax, eax
mov byte [esp + 0xe8], 1
mov dword [edi + 0x1bc], eax
mov dword [eax + 0x1c4], 1
mov ecx, dword [edi + 0x1bc]
push edi
push 0x67
mov eax, dword [ecx]
call dword [eax + 0x160]
mov ecx, dword [edi + 0x1bc]
push 0x1fb1
call fcn.00414c32
test ebx, ebx
je 0x594c69
mov eax, dword [ebx + 0x20]
test eax, eax
je 0x594c69
lea ecx, [esp + 0x70]
mov dword [esp + 0x70], 0
push ecx
push eax
mov dword [esp + 0x7c], 0
mov dword [esp + 0x80], 0
mov dword [esp + 0x84], 0
call dword [sym.imp.USER32.dll_GetWindowRect]
lea eax, [esp + 0x70]
push eax
push dword [ebx + 0x20]
call dword [sym.imp.USER32.dll_GetParent]
push eax
call fcn.0040fef6
mov ecx, eax
call fcn.004164c1
lea eax, [esp + 0x70]
push eax
push 0
push 0x1328
push dword [ebx + 0x20]
call esi
lea eax, [esp + 0x80]
mov dword [esp + 0x80], 0
push eax
push dword [edi + 0x20]
mov dword [esp + 0x8c], 0
mov dword [esp + 0x90], 0x72
mov dword [esp + 0x94], 0
call dword [sym.imp.USER32.dll_MapDialogRect]
mov eax, dword [esp + 0x88]
sub eax, dword [esp + 0x80]
cmp eax, 0xc8
jge 0x594bfa
mov eax, 0xc8
mov ecx, dword [esp + 0x70]
mov edx, dword [esp + 0x74]
add ecx, eax
mov eax, dword [esp + 0x7c]
push 0
sub eax, edx
mov dword [esp + 0x74], ecx
push eax
mov eax, dword [esp + 0x80]
sub eax, ecx
push eax
push edx
push ecx
mov ecx, dword [edi + 0x1bc]
call fcn.00414bcf
mov ecx, dword [edi + 0x1bc]
push 5
call fcn.00414d40
mov eax, dword [esp + 0x70]
sub esp, 0x10
mov ecx, esp
mov dword [ecx], eax
mov eax, dword [esp + 0x84]
mov dword [ecx + 4], eax
mov eax, dword [esp + 0x88]
mov dword [ecx + 8], eax
mov eax, dword [esp + 0x8c]
mov dword [ecx + 0xc], eax
mov ecx, dword [edi + 0x1bc]
call fcn.00598dd0
mov dword [esp + 0x98], 0
mov dword [esp + 0x9c], 0
mov dword [esp + 0xa0], 0
mov dword [esp + 0xa4], 0
test ebx, ebx
je 0x594d32
mov eax, dword [ebx + 0x20]
test eax, eax
je 0x594d32
lea ecx, [esp + 0x98]
push ecx
push eax
call dword [sym.imp.USER32.dll_GetClientRect]
lea eax, [esp + 0x98]
push eax
push 0
push 0x1328
push dword [ebx + 0x20]
call esi
push 0
lea eax, [esp + 0x84]
mov dword [esp + 0xa0], 0
push eax
push 0
push 0x30
mov dword [esp + 0x90], 0
mov dword [esp + 0x94], 0
mov dword [esp + 0x98], 0
mov dword [esp + 0x9c], 0
call dword [sym.imp.USER32.dll_SystemParametersInfoW]
mov eax, dword [esp + 0x8c]
mov dword [esp + 0xa4], eax
mov eax, dword [esp + 0x88]
mov dword [esp + 0xa0], eax
lea eax, [esp + 0x98]
mov ecx, edi
push eax
lea eax, [edi + 0x254]
push eax
call fcn.00590dd0
mov dword [esp + 0xa8], 0
mov dword [esp + 0xac], 0
mov dword [esp + 0xb0], 0
mov dword [esp + 0xb4], 0
test ebx, ebx
je 0x594dc5
mov eax, dword [ebx + 0x20]
test eax, eax
je 0x594dac
lea ecx, [esp + 0xa8]
push ecx
push eax
call dword [sym.imp.USER32.dll_GetWindowRect]
lea eax, [esp + 0xa8]
push eax
push dword [ebx + 0x20]
call dword [sym.imp.USER32.dll_GetParent]
push eax
call fcn.0040fef6
mov ecx, eax
call fcn.004164c1
mov eax, dword [ebx + 0x20]
test eax, eax
je 0x594dc5
lea ecx, [esp + 0xa8]
push ecx
push 0
push 0x1328
push eax
call esi
lea eax, [esp + 0x80]
mov dword [esp + 0x80], 0
push eax
push dword [edi + 0x20]
mov dword [esp + 0x8c], 0
mov dword [esp + 0x90], 0x72
mov dword [esp + 0x94], 0
call dword [sym.imp.USER32.dll_MapDialogRect]
mov ecx, dword [esp + 0x88]
sub ecx, dword [esp + 0x80]
cmp ecx, 0xc8
jge 0x594e1d
mov ecx, 0xc8
mov eax, dword [esp + 0xa8]
add ecx, eax
mov dword [esp + 0xc8], eax
mov eax, dword [esp + 0xac]
mov dword [esp + 0xcc], eax
mov eax, dword [esp + 0xb4]
push 0xb4
mov dword [esp + 0xd4], ecx
mov dword [esp + 0xd8], eax
call fcn.0040d506
add esp, 4
mov dword [esp + 0x14], eax
mov byte [esp + 0xe8], 4
test eax, eax
je 0x594e78
mov ecx, eax
call fcn.005725e0
mov ecx, eax
jmp 0x594e7a
xor ecx, ecx
push 0x1f60
mov byte [esp + 0xec], 1
lea edx, [esp + 0xcc]
push edi
mov dword [edi + 0x244], ecx
mov eax, dword [ecx]
push edx
push 0x210151
call dword [eax + 0x160]
mov ecx, dword [edi + 0x244]
push 0
push 0x200
push 0
call fcn.00414ba5
mov ecx, dword [edi + 0x244]
push 5
call fcn.00414d40
push 0
push 0
push 0x31
push dword [edi + 0x20]
call esi
push eax
call fcn.00416183
mov ecx, dword [edi + 0x244]
test eax, eax
je 0x594ee2
mov eax, dword [eax + 4]
push 0
push eax
push 0x30
push dword [ecx + 0x20]
call esi
mov eax, dword [edi + 0x244]
push ecx
mov dword [eax + 0x74], 1
mov ecx, dword [edi + 0x244]
call fcn.00572c30
mov eax, dword [edi + 0x244]
mov dword [eax + 0x78], 0
mov ecx, dword [edi + 0x244]
cmp dword [ecx + 0x74], 0
mov eax, dword [ecx + 0x94]
mov dword [ecx + 0x7c], 1
jne 0x594f2e
add eax, 0x1e
cmp eax, 0xff
jle 0x594f3a
mov eax, 0xff
movzx eax, ax
push eax
push 0
push 0x1a0
push dword [ecx + 0x20]
call esi
mov ecx, edi
call fcn.00591c80
push 1
lea esi, [edi + 0x1d0]
push edi
mov ecx, esi
call fcn.0056ebb0
push 0
push 0xffffffffffffffff
mov ecx, esi
call fcn.0056e630
push 0xf
push 0x1f62
mov ecx, esi
call fcn.0056e630
push 0xf
push 0x1fb1
mov ecx, esi
call fcn.0056e630
push 0xb
push 0x1f60
mov ecx, esi
call fcn.0056e630
push 9
push 0xe31
mov ecx, esi
call fcn.0056e630
push 0xc
push 0xe33
mov ecx, esi
call fcn.0056e630
push 0xc
push 1
mov ecx, esi
call fcn.0056e630
mov ecx, dword [esp + 0x28]
mov eax, dword [esp + 0x2c]
mov edx, dword [esp + 0x30]
push 0x1e
push ecx
push eax
push 0
push 0
mov dword [edi + 0x234], ecx
mov ecx, edi
mov dword [edi + 0x238], edx
mov edx, dword [esp + 0x2c]
push 0x61ca40
mov dword [edi + 0x230], eax
mov dword [edi + 0x23c], edx
call fcn.00414cc0
mov ecx, edi
call fcn.00591b80
mov esi, dword [sym.imp.USER32.dll_SendMessageW]
test ebx, ebx
je 0x59501d
mov eax, dword [ebx + 0x20]
test eax, eax
je 0x59501d
push 0
push 0
push 0x130c
push eax
call esi
xor eax, eax
mov dword [esp + 0x34], eax
mov dword [esp + 0x38], eax
mov dword [esp + 0x3c], eax
test ebx, ebx
je 0x59503a
mov eax, dword [ebx + 0x20]
test eax, eax
je 0x59503a
mov dword [esp + 0x34], eax
lea eax, [esp + 0x34]
mov dword [esp + 0x38], 0x1f62
push eax
push 0x1f62
push 0x4e
push dword [edi + 0x20]
mov dword [esp + 0x4c], 0xfffffdd9
call esi
mov dword [esp + 0x70], 0
mov dword [esp + 0x74], 0
mov dword [esp + 0x78], 0
push ecx
lea ecx, [esp + 0x74]
mov byte [esp + 0xec], 5
call fcn.00404ac0
mov ecx, dword [esp + 0x74]
test ecx, ecx
je 0x595093
mov dword [ecx], 0x1f60
mov esi, dword [esp + 0x70]
lea eax, [esp + 0x24]
add ecx, 4
mov dword [esp + 0x24], 0x1fb1
mov dword [esp + 0x74], ecx
cmp eax, ecx
jae 0x5950e2
cmp esi, eax
ja 0x5950e2
mov edx, dword [esp + 0x78]
mov ebx, eax
sub ebx, esi
sar ebx, 2
cmp ecx, edx
jne 0x5950d7
push ecx
lea ecx, [esp + 0x74]
call fcn.00404ac0
mov edx, dword [esp + 0x78]
mov ecx, dword [esp + 0x74]
mov esi, dword [esp + 0x70]
test ecx, ecx
je 0x59510a
mov eax, dword [esi + ebx*4]
mov dword [ecx], eax
jmp 0x59510a
mov edx, dword [esp + 0x78]
cmp ecx, edx
jne 0x595100
push ecx
lea ecx, [esp + 0x74]
call fcn.00404ac0
mov edx, dword [esp + 0x78]
mov ecx, dword [esp + 0x74]
mov esi, dword [esp + 0x70]
test ecx, ecx
je 0x59510a
mov dword [ecx], 0x1fb1
add ecx, 4
mov dword [esp + 0x1c], 1
lea eax, [esp + 0x1c]
mov dword [esp + 0x74], ecx
cmp eax, ecx
jae 0x595151
cmp esi, eax
ja 0x595151
mov ebx, eax
sub ebx, esi
sar ebx, 2
cmp ecx, edx
jne 0x595146
push ecx
lea ecx, [esp + 0x74]
call fcn.00404ac0
mov edx, dword [esp + 0x78]
mov ecx, dword [esp + 0x74]
mov esi, dword [esp + 0x70]
test ecx, ecx
je 0x595175
mov eax, dword [esi + ebx*4]
mov dword [ecx], eax
jmp 0x595175
cmp ecx, edx
jne 0x59516b
push ecx
lea ecx, [esp + 0x74]
call fcn.00404ac0
mov edx, dword [esp + 0x78]
mov ecx, dword [esp + 0x74]
mov esi, dword [esp + 0x70]
test ecx, ecx
je 0x595175
mov dword [ecx], 1
add ecx, 4
mov dword [esp + 0x20], 0x1f62
lea eax, [esp + 0x20]
mov dword [esp + 0x74], ecx
cmp eax, ecx
jae 0x5951b8
cmp esi, eax
ja 0x5951b8
mov ebx, eax
sub ebx, esi
sar ebx, 2
cmp ecx, edx
jne 0x5951ad
push ecx
lea ecx, [esp + 0x74]
call fcn.00404ac0
mov ecx, dword [esp + 0x74]
mov esi, dword [esp + 0x70]
test ecx, ecx
je 0x5951d8
mov eax, dword [esi + ebx*4]
mov dword [ecx], eax
jmp 0x5951d8
cmp ecx, edx
jne 0x5951ce
push ecx
lea ecx, [esp + 0x74]
call fcn.00404ac0
mov ecx, dword [esp + 0x74]
mov esi, dword [esp + 0x70]
test ecx, ecx
je 0x5951d8
mov dword [ecx], 0x1f62
sub esp, 0xc
lea eax, [esp + 0x7c]
add ecx, 4
mov dword [esp + 0x80], ecx
mov ecx, esp
push eax
call fcn.0040a670
mov ecx, edi
call fcn.00586400
add esp, 0xc
push edi
push fcn.0058e5a0
push dword [edi + 0x20]
call dword [sym.imp.USER32.dll_EnumChildWindows]
test esi, esi
je 0x595217
push esi
call fcn.0040d533
add esp, 4
lea ecx, [esp + 0x40]
mov byte [esp + 0xe8], 0
call fcn.0041582d
lea ecx, [esp + 0x54]
call fcn.005865e0
xor eax, eax
mov ecx, dword [esp + 0xe0]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0xc8]
xor ecx, esp
call fcn.00527e5c
mov esp, ebp
pop ebp
ret