Function at 0x4de310
Capabilities:
Inspect section memory permissions

Disassembly:
push ebp
lea ebp, [esp - 0x50]
sub esp, 0x50
push 0xffffffffffffffff
push 0x57b740
push 0x5457dc
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x410
push ebx
push esi
push edi
mov dword [ebp - 0x18], esp
xor ebx, ebx
mov dword [ebp + 0x1c], ebx
cmp byte [0x57e660], bl
je 0x4df37b
mov esi, dword [ebp + 0x58]
mov eax, dword [esi + 0x17c]
push eax
call fcn.004b4da0
push esi
call fcn.004c6e50
mov dword [ebp + 0x44], ebx
cmp dword [0x58b440], ebx
je 0x4de377
cmp dword [0x58b444], ebx
jne 0x4de381
mov edi, 1
mov dword [ebp + 0x44], edi
jmp 0x4de386
mov edi, 1
cmp byte [0x58b0fb], bl
je 0x4de391
mov dword [ebp + 0x44], edi
push esi
call fcn.0050c3d0
mov dword [ebp + 0x48], eax
cmp eax, edi
jne 0x4de3a1
mov dword [ebp + 0x44], edi
mov dword [esi + 0x3fc], ebx
mov dword [esi + 0x400], ebx
mov dword [esi + 0x404], ebx
mov dword [esi + 0x408], ebx
mov dword [esi + 0x3e8], ebx
mov dword [esi + 0x3e0], ebx
mov dword [esi + 0x3e4], ebx
mov dword [esi + 0x3dc], ebx
mov dword [esi + 0x3ec], ebx
mov dword [esi + 0x3f0], ebx
mov dword [esi + 0x3f4], ebx
mov dword [esi + 0x40c], ebx
mov dword [esi + 0x3f8], ebx
lea ecx, [ebp + 0x34]
push ecx
push esi
call fcn.00515f00
cmp eax, ebx
jl 0x4df37b
lea edx, [ebp - 0x20c]
push edx
call fcn.0051ec40
push 2
push esi
call fcn.0050c6d0
mov edi, eax
push edi
push esi
call fcn.0050c490
test eax, eax
je 0x4de446
lea eax, [ebp - 0x20c]
push eax
push edi
push esi
call fcn.0050c570
push edi
push esi
call fcn.0050c530
mov dword [ebp + 0x38], eax
push edi
push esi
call fcn.0050c550
mov edi, dword [ebp + 0x38]
jmp 0x4de464
lea ecx, [ebp - 0x20c]
push ecx
push ebx
push esi
call fcn.0050c6b0
push ebx
push esi
call fcn.0050c4d0
mov edi, eax
push ebx
push esi
call fcn.0050c4f0
cmp eax, ebx
je 0x4de471
mov dword [ebp + 0x44], 1
jmp 0x4de4a6
cmp dword [ebp + 0x44], ebx
jne 0x4de4a6
mov edx, dword [ebp - 0x20c]
push edx
mov eax, dword [ebp - 0x204]
push eax
push edi
lea ecx, [ebp + 0x10]
push ecx
lea edx, [ebp + 0xc]
push edx
call fcn.004de1c0
lea eax, [ebp + 0x14]
push eax
push str.AllFilesystemObjects
push accept
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyA]
lea ecx, [ebp - 0x420]
push ecx
call fcn.0051ec40
mov edx, dword [ebp - 0x204]
push edx
lea eax, [ebp - 0x420]
push eax
call fcn.00523040
mov ecx, dword [ebp - 0x418]
push ecx
push str.ParseDisplayName__S_n
call fcn.0048dc10
add esp, 8
mov dword [ebp - 4], ebx
mov eax, dword [ebp + 0x34]
mov edx, dword [eax]
push ebx
lea ecx, [ebp + 0x20]
push ecx
push ebx
mov ecx, dword [ebp - 0x418]
push ecx
push ebx
push ebx
push eax
mov edx, dword [edx + 0xc]
call edx
mov edi, eax
mov dword [ebp + 0x4c], edi
mov dword [ebp - 4], 0xffffffff
jmp 0x4de52e
lea eax, [ebp - 0x420]
push eax
call fcn.00522920
cmp edi, ebx
jl 0x4df0e0
mov dword [ebp - 4], 1
cmp dword [ebp + 0x44], ebx
je 0x4de570
push ebx
lea ecx, [ebp + 0x24]
push ecx
push 0x57b5fc
mov edx, dword [ebp + 0x20]
push edx
call dword [0x581e10]
test eax, eax
jge 0x4de570
push str.os_sh_bind_to_parent_on_desktop_failed_n
jmp 0x4df0c2
mov edi, dword [ebp + 0x48]
add edi, edi
add edi, edi
push edi
call fcn.004a2340
mov dword [ebp + 0x18], eax
push edi
call fcn.004a2340
mov dword [ebp + 0x30], eax
xor ebx, ebx
mov dword [ebp + 0x3c], ebx
mov dword [ebp + 0x2c], ebx
mov dword [ebp + 0x28], ebx
mov edi, dword [ebp + 0x28]
cmp edi, dword [ebp + 0x48]
jge 0x4de740
push edi
push esi
call fcn.0050c4d0
test eax, eax
jne 0x4de5b2
mov dword [ebp + 0x1c], 1
lea eax, [ebp - 0x20c]
push eax
push edi
push esi
call fcn.0050c6b0
lea ecx, [ebp - 0x420]
push ecx
call fcn.0051ec40
mov edx, dword [ebp - 0x204]
push edx
lea eax, [ebp - 0x420]
push eax
call fcn.00523040
mov ecx, dword [ebp - 0x418]
push ecx
push str.parse_display_name__S_n
call fcn.0048dc10
add esp, 8
mov dword [ebp - 4], 2
mov edx, dword [ebp + 0x18]
mov eax, dword [ebp + 0x3c]
lea edi, [edx + eax*4]
mov eax, dword [ebp + 0x34]
mov ecx, dword [eax]
push 0
push edi
push 0
mov edx, dword [ebp - 0x418]
push edx
push 0
push 0
push eax
mov eax, dword [ecx + 0xc]
call eax
test eax, eax
jl 0x4de6df
push str.parse_display_name_OK_n
call fcn.0048dc10
add esp, 4
mov dword [ebp - 4], 3
push str.bind_to_parent_n
call fcn.0048dc10
add esp, 4
mov ecx, dword [ebp + 0x30]
lea edx, [ecx + ebx*4]
push edx
lea eax, [ebp + 0x38]
push eax
push 0x57b5fc
mov ecx, dword [edi]
push ecx
call dword [0x581e10]
test eax, eax
jl 0x4de675
add ebx, 1
mov dword [ebp + 0x2c], ebx
mov eax, dword [ebp + 0x38]
mov edx, dword [eax]
push eax
mov eax, dword [edx + 8]
call eax
mov dword [ebp - 4], 2
add dword [ebp + 0x3c], 1
mov dword [ebp - 4], 1
lea ecx, [ebp - 0x420]
push ecx
call fcn.00522920
add dword [ebp + 0x28], 1
jmp 0x4de594
push str.ParseDisplayName_failed_n
call fcn.0048dc10
add esp, 4
mov dword [ebp - 4], 1
lea ecx, [ebp - 0x420]
push ecx
call fcn.00522920
add dword [ebp + 0x28], 1
jmp 0x4de594
push ebx
mov edx, dword [ebp + 0x3c]
push edx
push str.get_menu__d__d_n
call fcn.0048dc10
add esp, 0xc
mov dword [ebp - 4], 4
cmp dword [ebp + 0x44], 0
je 0x4de77e
mov eax, dword [ebp + 0x24]
mov ecx, dword [eax]
lea edx, [ebp + 0x48]
push edx
push 0
push 0x57b60c
mov edx, dword [ebp + 0x30]
push edx
push ebx
push 0
push eax
mov eax, dword [ecx + 0x28]
call eax
jmp 0x4de7a5
lea ecx, [ebp + 0x48]
push ecx
lea edx, [ebp + 0xc]
push edx
push 3
push 0x4de160
mov eax, dword [ebp + 0x34]
push eax
mov ecx, dword [ebp + 0x30]
push ecx
push ebx
mov edx, dword [esi + 0x2e0]
push edx
push 0
call dword [0x58b440]
mov dword [ebp + 0x4c], eax
test eax, eax
jl 0x4df06f
mov eax, dword [ebp + 0x48]
push eax
push str.got_menu__d_n
call fcn.0048dc10
add esp, 8
cmp dword [ebp + 0x48], 0
je 0x4df06f
push str.got_menu_1_n
call fcn.0048dc10
add esp, 4
mov al, byte [0x58b0c2]
test al, al
je 0x4de7e5
cmp al, 3
jl 0x4de80b
mov eax, dword [ebp + 0x48]
mov ecx, dword [eax]
lea edx, [esi + 0x418]
push edx
push 0x57b5ac
push eax
mov eax, dword [ecx]
call eax
test eax, eax
jne 0x4de806
push str.menu_type_3_n
jmp 0x4de832
mov al, byte [0x58b0c2]
test al, al
je 0x4de813
cmp al, 2
jl 0x4de83a
mov eax, dword [ebp + 0x48]
mov ecx, dword [eax]
lea edx, [esi + 0x414]
push edx
push 0x57b5dc
push eax
mov eax, dword [ecx]
call eax
test eax, eax
jne 0x4de83a
push str.menu_type_2_n
call fcn.0048dc10
add esp, 4
call dword [sym.imp.USER32.dll_CreatePopupMenu]
mov ebx, eax
mov dword [ebp + 0x38], ebx
test ebx, ebx
je 0x4df00d
mov dword [ebp - 4], 5
mov edi, 0x10
mov dword [ebp + 4], edi
push edi
call fcn.004ab4d0
test eax, eax
je 0x4de86e
mov edi, 0x110
mov dword [ebp + 4], edi
push str.QueryContextMenu..._n
call fcn.0048dc10
add esp, 4
mov eax, dword [esi + 0x418]
test eax, eax
jne 0x4de892
mov eax, dword [esi + 0x414]
test eax, eax
jne 0x4de892
mov eax, dword [ebp + 0x48]
push edi
push 0x7fff
push 1
push 0
push ebx
mov ecx, dword [eax]
push eax
mov edx, dword [ecx + 0xc]
call edx
mov dword [ebp + 0x4c], eax
mov dword [ebp - 4], 4
jmp 0x4de8ea
test eax, eax
jl 0x4df006
push eax
push str.QueryContextMenu__08x_n
call fcn.0048dc10
add esp, 8
mov edi, 0x8000
mov dword [ebp + 0x40], edi
cmp byte [0x57e6d2], 0
je 0x4de950
push 0
push 0
push 0xc00
push 0
push ebx
call dword [0x58b01c]
mov dword [esi + 0x3f8], edi
mov edi, 0x8001
mov dword [ebp + 0x40], edi
mov ecx, dword [0x581de4]
mov edx, dword [ecx + 0x1280]
push edx
push 0x8000
push 0x400
push 0
push ebx
call fcn.004a9690
push 0
push 0
push 0xc00
push 0
push ebx
call dword [0x58b01c]
push 0
movsx eax, byte [0x57e6a6]
push eax
call fcn.004bfe90
test eax, eax
je 0x4de9a2
mov dword [esi + 0x3f0], edi
add edi, 1
mov dword [ebp + 0x40], edi
mov ecx, dword [0x581de4]
mov edx, dword [ecx + 0x17cc]
push edx
mov eax, dword [esi + 0x3f0]
push eax
push 0x400
push 0
push ebx
call fcn.004a9690
push 0
movsx ecx, byte [0x57e6a7]
push ecx
call fcn.004bfe90
test eax, eax
je 0x4de9e2
mov dword [esi + 0x3f4], edi
add edi, 1
mov dword [ebp + 0x40], edi
mov edx, dword [0x581de4]
mov eax, dword [edx + 0x28c]
push eax
mov ecx, dword [esi + 0x3f4]
push ecx
push 0x400
push 0
push ebx
call fcn.004a9690
push 1
movsx edx, byte [0x57e6c0]
push edx
call fcn.004bfe90
test eax, eax
je 0x4dea21
mov dword [esi + 0x3ec], edi
add edi, 1
mov dword [ebp + 0x40], edi
mov eax, dword [0x581de4]
mov ecx, dword [eax + 0x290]
push ecx
mov edx, dword [esi + 0x3ec]
push edx
push 0x400
push 0
push ebx
call fcn.004a9690
cmp byte [0x57e65b], 0
je 0x4deb35
cmp dword [0x58b3bc], 6
sbb eax, eax
neg eax
push eax
movsx ecx, byte [0x57e6c3]
push ecx
call fcn.004bfe90
test eax, eax
je 0x4dea78
mov dword [esi + 0x3e8], edi
add edi, 1
mov dword [ebp + 0x40], edi
mov edx, dword [0x581de4]
mov eax, dword [edx + 0x294]
push eax
mov ecx, dword [esi + 0x3e8]
push ecx
push 0x400
push 0
push ebx
call fcn.004a9690
cmp dword [0x58b3bc], 6
sbb edx, edx
neg edx
push edx
movsx eax, byte [0x57e6c2]
push eax
call fcn.004bfe90
test eax, eax
je 0x4deac8
cmp dword [ebp + 0x1c], 0
jne 0x4deac8
mov dword [esi + 0x3e4], edi
add edi, 1
mov dword [ebp + 0x40], edi
mov ecx, dword [0x581de4]
mov edx, dword [ecx + 0x298]
push edx
mov eax, dword [esi + 0x3e4]
push eax
push 0x400
push 0
push ebx
call fcn.004a9690
push 1
movsx ecx, byte [0x57e6c1]
push ecx
call fcn.004bfe90
test eax, eax
je 0x4deb08
mov dword [esi + 0x3e0], edi
add edi, 1
mov dword [ebp + 0x40], edi
mov edx, dword [0x581de4]
mov eax, dword [edx + 0x29c]
push eax
mov ecx, dword [esi + 0x3e0]
push ecx
push 0x400
push 0
push ebx
call fcn.004a9690
mov dword [esi + 0x3dc], edi
add edi, 1
mov dword [ebp + 0x40], edi
mov edx, dword [0x581de4]
mov eax, dword [edx + 0x2a0]
push eax
mov ecx, dword [esi + 0x3dc]
push ecx
push 0x400
push 0
push ebx
call fcn.004a9690
cmp dword [ebp + 0x68], 0
je 0x4dec27
push 0
push 0
push ebx
call dword [sym.imp.USER32.dll_GetMenuDefaultItem]
mov edi, eax
mov dword [ebp + 0x58], edi
push edi
push str.default__08x_n
call fcn.0048dc10
push 0x40
push 0
lea edx, [ebp - 0xbc]
push edx
call fcn.00545659
add esp, 0x14
mov dword [ebp - 0xbc], 0x40
mov dword [ebp - 0xb8], 0x20000000
mov eax, dword [esi + 0x60]
mov dword [ebp - 0xb4], eax
add edi, 0xffffffff
movzx ecx, di
mov dword [ebp - 0xb0], ecx
mov dword [ebp - 0xa4], 1
mov edx, dword [ebp + 0x5c]
mov dword [ebp - 0x84], edx
mov eax, dword [ebp + 0x60]
mov dword [ebp - 0x80], eax
push 0x10
call fcn.004ab4d0
test eax, eax
je 0x4debc4
or dword [ebp - 0xb8], 0x10000000
push 0x11
call fcn.004ab4d0
test eax, eax
je 0x4debd9
or dword [ebp - 0xb8], 0x40000000
mov eax, dword [esi + 0x418]
lea edx, [ebp - 0xbc]
push edx
test eax, eax
je 0x4debfa
mov ecx, dword [eax]
push eax
mov eax, dword [ecx + 0x10]
call eax
mov dword [ebp + 0x4c], eax
jmp 0x4df006
mov eax, dword [esi + 0x414]
test eax, eax
je 0x4dec14
mov ecx, dword [eax]
push eax
mov eax, dword [ecx + 0x10]
call eax
mov dword [ebp + 0x4c], eax
jmp 0x4df006
mov eax, dword [ebp + 0x48]
mov ecx, dword [eax]
push eax
mov eax, dword [ecx + 0x10]
call eax
mov dword [ebp + 0x4c], eax
jmp 0x4df006
mov edi, dword [ebp + 0x64]
test edi, edi
je 0x4ded0d
lea ecx, [ebp - 0x420]
push ecx
call fcn.0051ec40
push edi
lea edx, [ebp - 0x420]
push edx
call fcn.00522b90
push 0x40
push 0
lea eax, [ebp - 0x7c]
push eax
call fcn.00545659
add esp, 0xc
mov dword [ebp - 0x7c], 0x40
mov dword [ebp - 0x78], 0x20004000
mov ecx, dword [esi + 0x60]
mov dword [ebp - 0x74], ecx
mov dword [ebp - 0x70], edi
mov edx, dword [ebp - 0x418]
mov dword [ebp - 0x54], edx
mov dword [ebp - 0x64], 1
mov eax, dword [ebp + 0x5c]
mov dword [ebp - 0x44], eax
mov ecx, dword [ebp + 0x60]
mov dword [ebp - 0x40], ecx
push 0x10
call fcn.004ab4d0
test eax, eax
je 0x4deca0
or dword [ebp - 0x78], 0x10000000
push 0x11
call fcn.004ab4d0
test eax, eax
je 0x4decb2
or dword [ebp - 0x78], 0x40000000
push edi
push str.invoke__s_n
call fcn.0048dc10
add esp, 8
mov eax, dword [esi + 0x418]
test eax, eax
je 0x4decd8
mov edx, dword [eax]
lea ecx, [ebp - 0x7c]
push ecx
push eax
mov edx, dword [edx + 0x10]
call edx
jmp 0x4decf1
mov eax, dword [esi + 0x414]
lea edx, [ebp - 0x7c]
push edx
test eax, eax
jne 0x4dece9
mov eax, dword [ebp + 0x48]
push eax
mov ecx, dword [eax]
mov eax, dword [ecx + 0x10]
call eax
mov edi, eax
mov dword [ebp + 0x4c], edi
lea ecx, [ebp - 0x420]
push ecx
call fcn.00522920
push edi
push str._08x_n
jmp 0x4deffe
cmp byte [0x57e65b], 0
je 0x4ded26
push 0
mov edx, dword [esi + 0x3dc]
push edx
push ebx
call dword [sym.imp.USER32.dll_SetMenuDefaultItem]
push ebx
push str.track_menu__p_n
push 0xff00ffff
call fcn.0048dc30
add esp, 0xc
mov dword [esi + 0x410], ebx
push 0
mov eax, dword [esi + 0x60]
push eax
push 0
mov ecx, dword [ebp + 0x60]
push ecx
mov edx, dword [ebp + 0x5c]
push edx
push 0x102
push ebx
call dword [sym.imp.USER32.dll_TrackPopupMenu]
mov edi, eax
mov dword [ebp + 0x68], edi
mov dword [esi + 0x410], 0
push edi
push str.idCommand__d_n
push 0xff00ffff
call fcn.0048dc30
add esp, 0xc
test edi, edi
jbe 0x4df006
cmp edi, dword [esi + 0x3dc]
jne 0x4deda6
movsx eax, byte [0x58b11f]
push eax
push 0
push 0
push 0
push esi
call fcn.004c8a40
jmp 0x4df006
cmp edi, dword [esi + 0x3e4]
jne 0x4dedbf
mov eax, dword [0x58b0d8]
cmp byte [eax], 0
jne 0x4dee05
mov eax, str._exec___SystemRoot_explorer.exe___n__e___1__
jmp 0x4dee05
cmp edi, dword [esi + 0x3e8]
jne 0x4dedee
mov eax, dword [0x58b0e0]
cmp byte [eax], 0
jne 0x4dedd6
mov eax, str._exec___SystemRoot_explorer.exe___n__e__select___1__
movsx edx, byte [0x58b11f]
push edx
push 0
push 0
push eax
push esi
call fcn.004c8a40
jmp 0x4df006
cmp edi, dword [esi + 0x3e0]
jne 0x4dee1d
mov eax, dword [0x58b0dc]
cmp byte [eax], 0
jne 0x4dee05
mov eax, str._openpath___1__
movsx ecx, byte [0x58b11f]
push ecx
push 0
push 0
push eax
push esi
call fcn.004c8a40
jmp 0x4df006
cmp edi, dword [esi + 0x3f0]
jne 0x4dee32
push 0
push esi
call fcn.004c7260
jmp 0x4df006
cmp edi, dword [esi + 0x3ec]
jne 0x4dee47
push 2
push esi
call fcn.004c7260
jmp 0x4df006
cmp edi, dword [esi + 0x3f4]
jne 0x4dee5c
push 1
push esi
call fcn.004c7260
jmp 0x4df006
cmp edi, dword [esi + 0x40c]
jne 0x4dee89
push 0x10
call fcn.004ab4d0
test eax, eax
je 0x4dee7c
push 0
push esi
call fcn.004c73e0
jmp 0x4df006
push 1
push esi
call fcn.004c73e0
jmp 0x4df006
cmp edi, dword [esi + 0x3fc]
jne 0x4dee9c
push esi
call fcn.004f3490
jmp 0x4df006
cmp edi, dword [esi + 0x400]
jne 0x4deeaf
push esi
call fcn.004c85a0
jmp 0x4df006
cmp edi, dword [esi + 0x404]
jne 0x4deec2
push esi
call fcn.004c8460
jmp 0x4df006
cmp edi, dword [esi + 0x408]
jne 0x4deed5
push esi
call fcn.004be880
jmp 0x4df006
cmp edi, dword [esi + 0x3f8]
jne 0x4deee8
push esi
call fcn.00512550
jmp 0x4df006
lea edx, [edi - 1]
cmp edx, 0x7ffe
ja 0x4df006
push str.using_shell_implementation_n
call fcn.0048dc10
push 0x40
push 0
lea eax, [ebp - 0xfc]
push eax
call fcn.00545659
add esp, 0x10
mov dword [ebp - 0xfc], 0x40
mov dword [ebp - 0xf8], 0x20000000
mov ecx, dword [esi + 0x60]
mov dword [ebp - 0xf4], ecx
add edi, 0xffffffff
movzx edi, di
mov dword [ebp - 0xf0], edi
mov dword [ebp - 0xe4], 1
mov edx, dword [ebp + 0x5c]
mov dword [ebp - 0xc4], edx
mov eax, dword [ebp + 0x60]
mov dword [ebp - 0xc0], eax
mov eax, dword [esi + 0x418]
test eax, eax
jne 0x4def70
mov eax, dword [esi + 0x414]
test eax, eax
jne 0x4def70
mov eax, dword [ebp + 0x48]
lea edx, [ebp - 0xfc]
push edx
push eax
mov ecx, dword [eax]
mov eax, dword [ecx + 0x10]
call eax
mov dword [ebp + 0x4c], eax
mov ecx, eax
push ecx
push str.invoke_hres__08x_n
call fcn.0048dc10
add esp, 8
cmp dword [ebp + 0x4c], 0x80070057
jne 0x4df006
xor eax, eax
mov dword [ebp - 0x3c], eax
mov dword [ebp - 0x38], eax
mov dword [ebp - 0x34], eax
mov dword [ebp - 0x30], eax
mov dword [ebp - 0x2c], eax
mov dword [ebp - 0x28], eax
mov dword [ebp - 0x24], eax
mov dword [ebp - 0x20], eax
mov dword [ebp - 0x1c], eax
mov dword [ebp - 0x3c], 0x24
mov dword [ebp - 0x38], eax
mov edx, dword [esi + 0x60]
mov dword [ebp - 0x34], edx
mov dword [ebp - 0x30], edi
mov dword [ebp - 0x24], 1
mov eax, dword [esi + 0x418]
test eax, eax
jne 0x4defe9
mov eax, dword [esi + 0x414]
test eax, eax
jne 0x4defe9
mov eax, dword [ebp + 0x48]
lea edx, [ebp - 0x3c]
push edx
push eax
mov ecx, dword [eax]
mov eax, dword [ecx + 0x10]
call eax
mov dword [ebp + 0x4c], eax
push eax
push str.invoke_hres_non_ex__08x_n
call fcn.0048dc10
add esp, 8
push ebx
call dword [sym.imp.USER32.dll_DestroyMenu]
mov eax, dword [esi + 0x418]
xor edi, edi
cmp eax, edi
je 0x4df034
mov ecx, dword [eax]
push eax
mov edx, dword [ecx + 8]
call edx
mov dword [esi + 0x418], edi
mov eax, dword [ebp + 0x48]
mov ecx, dword [eax]
push eax
mov edx, dword [ecx + 8]
call edx
jmp 0x4df06f
mov eax, dword [esi + 0x414]
cmp eax, edi
je 0x4df04c
mov ecx, dword [eax]
push eax
mov edx, dword [ecx + 8]
call edx
mov dword [esi + 0x414], edi
mov eax, dword [ebp + 0x48]
mov ecx, dword [eax]
push eax
mov edx, dword [ecx + 8]
call edx
jmp 0x4df06f
mov dword [ebp - 4], 1
xor esi, esi
mov edi, dword [ebp + 0x18]
mov dword [ebp + 8], esi
cmp esi, dword [ebp + 0x3c]
jge 0x4df092
mov eax, dword [edi + esi*4]
push eax
call dword [sym.imp.ole32.dll_CoTaskMemFree]
add esi, 1
jmp 0x4df07b
push edi
call fcn.004a23a0
mov ecx, dword [ebp + 0x30]
push ecx
call fcn.004a23a0
cmp dword [ebp + 0x44], 0
je 0x4df0ca
mov eax, dword [ebp + 0x24]
mov edx, dword [eax]
push eax
mov eax, dword [edx + 8]
call eax
jmp 0x4df0ca
call fcn.0048dc10
add esp, 4
mov dword [ebp - 4], 0xffffffff
mov ecx, dword [ebp + 0x20]
push ecx
call dword [sym.imp.ole32.dll_CoTaskMemFree]
jmp 0x4df33a
push edi
push str.no_menu__d_n
call fcn.0048dc10
add esp, 8
cmp dword [ebp + 0x68], ebx
jne 0x4df33a
cmp dword [ebp + 0x64], 0
jne 0x4df33a
call dword [sym.imp.USER32.dll_CreatePopupMenu]
mov edi, eax
mov dword [ebp + 0x58], 1
push esi
call fcn.0050c3d0
mov dword [ebp + 0x68], eax
xor ebx, ebx
test eax, eax
jle 0x4df136
nop
push ebx
push esi
call fcn.0050c4d0
test eax, eax
jne 0x4df12e
mov dword [ebp + 0x58], eax
add ebx, 1
cmp ebx, dword [ebp + 0x68]
jl 0x4df120
cmp byte [0x57e65b], 0
je 0x4df200
mov edx, dword [0x581de4]
mov eax, dword [edx + 0x2a0]
push eax
push 0xa028
push 0
push edi
call fcn.004a7e60
push 1
movsx ecx, byte [0x57e6c1]
push ecx
call fcn.004bfe90
test eax, eax
je 0x4df18a
mov edx, dword [0x581de4]
mov eax, dword [edx + 0x29c]
push eax
push 0xa02b
push 0
push edi
call fcn.004a7e60
mov ebx, 6
cmp dword [0x58b3bc], ebx
sbb ecx, ecx
neg ecx
push ecx
movsx edx, byte [0x57e6c2]
push edx
call fcn.004bfe90
test eax, eax
je 0x4df1ca
cmp dword [ebp + 0x58], 0
je 0x4df1ca
mov eax, dword [0x581de4]
mov ecx, dword [eax + 0x298]
push ecx
push 0xa029
push 0
push edi
call fcn.004a7e60
cmp dword [0x58b3bc], ebx
sbb edx, edx
neg edx
push edx
movsx eax, byte [0x57e6c3]
push eax
call fcn.004bfe90
test eax, eax
je 0x4df200
mov ecx, dword [0x581de4]
mov edx, dword [ecx + 0x294]
push edx
push 0xa02a
push 0
push edi
call fcn.004a7e60
push 0
movsx eax, byte [0x57e6a6]
push eax
call fcn.004bfe90
test eax, eax
je 0x4df22d
mov ecx, dword [0x581de4]
mov edx, dword [ecx + 0x17cc]
push edx
push 0xa033
push 0
push edi
call fcn.004a7e60
push 0
movsx eax, byte [0x57e6a7]
push eax
call fcn.004bfe90
test eax, eax
je 0x4df25a
mov ecx, dword [0x581de4]
mov edx, dword [ecx + 0x28c]
push edx
push 0xa030
push 0
push edi
call fcn.004a7e60
push 1
movsx eax, byte [0x57e6c0]
push eax
call fcn.004bfe90
test eax, eax
je 0x4df287
mov ecx, dword [0x581de4]
mov edx, dword [ecx + 0x290]
push edx
push 0xa02f
push 0
push edi
call fcn.004a7e60
push edi
call fcn.004a7ed0
cmp byte [0x57e6d2], 0
je 0x4df2b5
mov eax, dword [0x581de4]
mov ecx, dword [eax + 0x1280]
push ecx
push 0xa06c
push 0
push edi
call fcn.004a7e60
push edi
call fcn.004a7ed0
cmp byte [0x57e661], 0
je 0x4df2d8
mov edx, dword [0x581de4]
mov eax, dword [edx + 0x9c0]
push eax
push 0xa02c
push 0
push edi
call fcn.004a7e60
cmp byte [0x57e662], 0
je 0x4df2fb
mov ecx, dword [0x581de4]
mov edx, dword [ecx + 0x9c8]
push edx
push 0xa02e
push 0
push edi
call fcn.004a7e60
push edi
call fcn.004a7ed0
mov eax, dword [0x581de4]
mov ecx, dword [eax + 0x9b4]
push ecx
push 0xa068
push 0
push edi
call fcn.004a7e60
push 0
mov edx, dword [esi + 0x60]
push edx
push 0
mov eax, dword [ebp + 0x60]
push eax
mov ecx, dword [ebp + 0x5c]
push ecx
push 0
push edi
call dword [sym.imp.USER32.dll_TrackPopupMenu]
push edi
call dword [sym.imp.USER32.dll_DestroyMenu]
cmp dword [ebp + 0x44], 0
jne 0x4df364
mov eax, dword [ebp + 0xc]
mov esi, dword [sym.imp.ADVAPI32.dll_RegCloseKey]
test eax, eax
je 0x4df350
push eax
call esi
mov eax, dword [ebp + 0x10]
test eax, eax
je 0x4df35a
push eax
call esi
mov eax, dword [ebp + 0x14]
test eax, eax
je 0x4df364
push eax
call esi
lea edx, [ebp - 0x20c]
push edx
call fcn.00522920
mov eax, dword [ebp + 0x34]
mov ecx, dword [eax]
push eax
mov edx, dword [ecx + 8]
call edx
mov ecx, dword [ebp - 0x10]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebx
add ebp, 0x50
mov esp, ebp
pop ebp
ret 0x14