Function at 0x4e2150
Capabilities:
Inspect section memory permissions

Disassembly:
push ebp
lea ebp, [esp - 0x328]
sub esp, 0x328
push 0xfffffffffffffffe
push 0x587c20
push 0x549ea0
mov eax, dword fs:[0]
push eax
sub esp, 0x148
mov eax, dword [0x596fb8]
xor dword [ebp - 8], eax
xor eax, ebp
mov dword [ebp + 0x324], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0x10]
mov dword fs:[0], eax
mov dword [ebp - 0x18], esp
mov esi, dword [ebp + 0x330]
mov dword [ebp - 0x40], esi
mov eax, dword [ebp + 0x33c]
mov dword [ebp - 0x2c], eax
xor edi, edi
mov dword [ebp - 0x54], edi
cmp byte [0x58a69e], 0
je 0x4e26bb
mov ecx, dword [esi + 0x180]
push ecx
call fcn.004b8200
push esi
call fcn.004cadf0
mov dword [ebp - 0x24], edi
cmp dword [0x598230], edi
je 0x4e21e0
cmp dword [0x598234], edi
jne 0x4e21ea
mov ebx, 1
mov dword [ebp - 0x24], ebx
jmp 0x4e21ef
mov ebx, 1
cmp byte [0x597ee4], 0
je 0x4e21fb
mov dword [ebp - 0x24], ebx
push esi
call fcn.00510930
mov dword [ebp - 0x20], eax
cmp eax, ebx
jne 0x4e220b
mov dword [ebp - 0x24], ebx
mov dword [esi + 0x404], edi
mov dword [esi + 0x408], edi
mov dword [esi + 0x40c], edi
mov dword [esi + 0x410], edi
mov dword [esi + 0x3f0], edi
mov dword [esi + 0x3e8], edi
mov dword [esi + 0x3ec], edi
mov dword [esi + 0x3e4], edi
mov dword [esi + 0x3f4], edi
mov dword [esi + 0x3f8], edi
mov dword [esi + 0x3fc], edi
mov dword [esi + 0x414], edi
mov dword [esi + 0x400], edi
lea edx, [ebp - 0x3c]
push edx
push esi
call fcn.0051a340
cmp eax, edi
jl 0x4e26bb
lea eax, [ebp + 0x214]
push eax
call fcn.00401210
push 2
push esi
call fcn.00510c30
mov edi, eax
push edi
push esi
call fcn.005109f0
test eax, eax
je 0x4e22ac
lea ecx, [ebp + 0x214]
push ecx
push edi
push esi
call fcn.00510ad0
push edi
push esi
call fcn.00510a90
mov ebx, eax
push edi
push esi
call fcn.00510ab0
jmp 0x4e22cd
lea edx, [ebp + 0x214]
push edx
push 0
push esi
call fcn.00510c10
push 0
push esi
call fcn.00510a30
mov ebx, eax
push 0
push esi
call fcn.00510a50
test eax, eax
je 0x4e22da
mov dword [ebp - 0x24], 1
jmp 0x4e2331
cmp dword [ebp - 0x24], 0
jne 0x4e2331
mov eax, dword [ebp + 0x214]
push eax
mov ecx, dword [ebp + 0x21c]
push ecx
push ebx
lea edx, [ebp - 0x64]
push edx
lea eax, [ebp - 0x68]
push eax
call fcn.004e1f70
mov edi, dword [sym.imp.ADVAPI32.dll_RegOpenKeyA]
test ebx, ebx
je 0x4e2311
lea ecx, [ebp - 0x60]
push ecx
push str.Folder
jmp 0x4e231a
lea edx, [ebp - 0x60]
push edx
push 0x5547b8
push closesocket
call edi
lea eax, [ebp - 0x5c]
push eax
push str.AllFilesystemObjects
push closesocket
call edi
cmp byte [0x58a658], 0
je 0x4e2405
lea ecx, [ebp]
push ecx
call fcn.00401210
mov edx, dword [ebp + 0x21c]
push edx
lea eax, [ebp]
push eax
call fcn.00527430
mov ecx, dword [ebp + 8]
push ecx
push str.ParseDisplayName__S_n
call fcn.0048f080
add esp, 8
mov dword [ebp - 4], 0
mov eax, dword [ebp - 0x3c]
mov edx, dword [eax]
push 0
lea ecx, [ebp - 0x50]
push ecx
push 0
mov ecx, dword [ebp + 8]
push ecx
push 0
push 0
push eax
mov edx, dword [edx + 0xc]
call edx
mov edi, eax
mov dword [ebp - 0x1c], edi
mov dword [ebp - 4], 0xfffffffe
jmp 0x4e23c0
lea eax, [ebp]
push eax
call fcn.00523250
test edi, edi
jl 0x4e240a
mov dword [ebp - 4], 1
cmp dword [ebp - 0x24], 0
je 0x4e26e2
push 0
lea ecx, [ebp - 0x58]
push ecx
push 0x5868c8
mov edx, dword [ebp - 0x50]
push edx
call dword [0x58df18]
test eax, eax
jge 0x4e26e2
push str.os_sh_bind_to_parent_on_desktop_failed_n
jmp 0x4e3286
mov edi, 0x80004001
push edi
push str.no_menu__d_n
call fcn.0048f080
add esp, 8
cmp dword [ebp + 0x340], 0
jne 0x4e2670
cmp dword [ebp - 0x2c], 0
jne 0x4e2670
call dword [sym.imp.USER32.dll_CreatePopupMenu]
mov edi, eax
mov dword [ebp - 0x2c], 1
push esi
call fcn.00510930
mov dword [ebp - 0x30], eax
xor ebx, ebx
test eax, eax
jle 0x4e2466
lea ecx, [ecx]
push ebx
push esi
call fcn.00510a30
test eax, eax
jne 0x4e245e
mov dword [ebp - 0x2c], eax
add ebx, 1
cmp ebx, dword [ebp - 0x30]
jl 0x4e2450
cmp byte [0x58a69d], 0
je 0x4e2530
mov edx, dword [0x58deec]
mov eax, dword [edx + 0x2a0]
push eax
push 0xa028
push 0
push edi
call fcn.004aa480
push 1
movsx ecx, byte [0x58a700]
push ecx
call fcn.004c3910
test eax, eax
je 0x4e24ba
mov edx, dword [0x58deec]
mov eax, dword [edx + 0x29c]
push eax
push 0xa02b
push 0
push edi
call fcn.004aa480
mov ebx, 6
cmp dword [0x5981a4], ebx
sbb ecx, ecx
neg ecx
push ecx
movsx edx, byte [0x58a701]
push edx
call fcn.004c3910
test eax, eax
je 0x4e24fa
cmp dword [ebp - 0x2c], 0
je 0x4e24fa
mov eax, dword [0x58deec]
mov ecx, dword [eax + 0x298]
push ecx
push 0xa029
push 0
push edi
call fcn.004aa480
cmp dword [0x5981a4], ebx
sbb edx, edx
neg edx
push edx
movsx eax, byte [0x58a702]
push eax
call fcn.004c3910
test eax, eax
je 0x4e2530
mov ecx, dword [0x58deec]
mov edx, dword [ecx + 0x294]
push edx
push 0xa02a
push 0
push edi
call fcn.004aa480
push 0
movsx eax, byte [0x58a6fd]
push eax
call fcn.004c3910
test eax, eax
je 0x4e255d
mov ecx, dword [0x58deec]
mov edx, dword [ecx + 0x17cc]
push edx
push 0xa033
push 0
push edi
call fcn.004aa480
push 0
movsx eax, byte [0x58a6fe]
push eax
call fcn.004c3910
test eax, eax
je 0x4e258a
mov ecx, dword [0x58deec]
mov edx, dword [ecx + 0x28c]
push edx
push 0xa030
push 0
push edi
call fcn.004aa480
push 1
movsx eax, byte [0x58a6ff]
push eax
call fcn.004c3910
test eax, eax
je 0x4e25b7
mov ecx, dword [0x58deec]
mov edx, dword [ecx + 0x290]
push edx
push 0xa02f
push 0
push edi
call fcn.004aa480
push edi
call fcn.004aa510
cmp byte [0x58a711], 0
je 0x4e25e5
mov eax, dword [0x58deec]
mov ecx, dword [eax + 0x1280]
push ecx
push 0xa06c
push 0
push edi
call fcn.004aa480
push edi
call fcn.004aa510
cmp byte [0x58a69f], 0
je 0x4e2608
mov edx, dword [0x58deec]
mov eax, dword [edx + 0x9c0]
push eax
push 0xa02c
push 0
push edi
call fcn.004aa480
cmp byte [0x58a6a0], 0
je 0x4e262b
mov ecx, dword [0x58deec]
mov edx, dword [ecx + 0x9c8]
push edx
push 0xa02e
push 0
push edi
call fcn.004aa480
push edi
call fcn.004aa510
mov eax, dword [0x58deec]
mov ecx, dword [eax + 0x9b4]
push ecx
push 0xa068
push 0
push edi
call fcn.004aa480
push 0
mov edx, dword [esi + 0x60]
push edx
push 0
mov eax, dword [ebp + 0x338]
push eax
mov ecx, dword [ebp + 0x334]
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 - 0x24], 0
jne 0x4e26a4
mov eax, dword [ebp - 0x68]
mov esi, dword [sym.imp.ADVAPI32.dll_RegCloseKey]
test eax, eax
je 0x4e2686
push eax
call esi
mov eax, dword [ebp - 0x64]
test eax, eax
je 0x4e2690
push eax
call esi
mov eax, dword [ebp - 0x60]
test eax, eax
je 0x4e269a
push eax
call esi
mov eax, dword [ebp - 0x5c]
test eax, eax
je 0x4e26a4
push eax
call esi
lea edx, [ebp + 0x214]
push edx
call fcn.00523250
mov eax, dword [ebp - 0x3c]
mov ecx, dword [eax]
push eax
mov edx, dword [ecx + 8]
call edx
mov ecx, dword [ebp - 0x10]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp + 0x324]
xor ecx, ebp
call fcn.0054962d
add ebp, 0x328
mov esp, ebp
pop ebp
ret 0x14
mov edi, dword [ebp - 0x20]
add edi, edi
add edi, edi
push edi
call fcn.004a48f0
mov dword [ebp - 0x4c], eax
push edi
call fcn.004a48f0
mov dword [ebp - 0x38], eax
xor ebx, ebx
mov dword [ebp - 0x34], ebx
mov dword [ebp - 0x44], ebx
mov dword [ebp - 0x48], ebx
jmp 0x4e2710
mov edi, dword [ebp - 0x48]
cmp edi, dword [ebp - 0x20]
jge 0x4e28a4
push edi
push esi
call fcn.00510a30
test eax, eax
jne 0x4e272e
mov dword [ebp - 0x54], 1
lea eax, [ebp + 0x214]
push eax
push edi
push esi
call fcn.00510c10
lea ecx, [ebp]
push ecx
call fcn.00401210
mov edx, dword [ebp + 0x21c]
push edx
lea eax, [ebp]
push eax
call fcn.00527430
mov ecx, dword [ebp + 8]
push ecx
push str.parse_display_name__S_n
call fcn.0048f080
add esp, 8
mov dword [ebp - 4], 2
mov edx, dword [ebp - 0x4c]
mov eax, dword [ebp - 0x34]
lea edi, [edx + eax*4]
mov eax, dword [ebp - 0x3c]
mov ecx, dword [eax]
push 0
push edi
push 0
mov edx, dword [ebp + 8]
push edx
push 0
push 0
push eax
mov eax, dword [ecx + 0xc]
call eax
test eax, eax
jl 0x4e2849
push str.parse_display_name_OK_n
call fcn.0048f080
add esp, 4
mov dword [ebp - 4], 3
push str.bind_to_parent_n
call fcn.0048f080
add esp, 4
mov ecx, dword [ebp - 0x38]
lea edx, [ecx + ebx*4]
push edx
lea eax, [ebp - 0x30]
push eax
push 0x5868c8
mov ecx, dword [edi]
push ecx
call dword [0x58df18]
test eax, eax
jl 0x4e27e5
add ebx, 1
mov dword [ebp - 0x44], ebx
mov eax, dword [ebp - 0x30]
mov edx, dword [eax]
push eax
mov eax, dword [edx + 8]
call eax
mov dword [ebp - 4], 2
add dword [ebp - 0x34], 1
mov dword [ebp - 4], 1
lea ecx, [ebp]
push ecx
call fcn.00523250
add dword [ebp - 0x48], 1
jmp 0x4e2710
push str.ParseDisplayName_failed_n
call fcn.0048f080
add esp, 4
mov dword [ebp - 4], 1
lea ecx, [ebp]
push ecx
call fcn.00523250
add dword [ebp - 0x48], 1
jmp 0x4e2710
push ebx
mov edx, dword [ebp - 0x34]
push edx
push str.get_menu__d__d_n
call fcn.0048f080
add esp, 0xc
mov dword [ebp - 4], 4
cmp dword [ebp - 0x24], 0
je 0x4e28e2
mov eax, dword [ebp - 0x58]
mov ecx, dword [eax]
lea edx, [ebp - 0x20]
push edx
push 0
push 0x5868d8
mov edx, dword [ebp - 0x38]
push edx
push ebx
push 0
push eax
mov eax, dword [ecx + 0x28]
call eax
jmp 0x4e2909
lea ecx, [ebp - 0x20]
push ecx
lea edx, [ebp - 0x68]
push edx
push 4
push 0x4e1f10
mov eax, dword [ebp - 0x3c]
push eax
mov ecx, dword [ebp - 0x38]
push ecx
push ebx
mov edx, dword [esi + 0x2e4]
push edx
push 0
call dword [0x598230]
mov dword [ebp - 0x1c], eax
test eax, eax
jl 0x4e3233
mov eax, dword [ebp - 0x20]
push eax
push str.got_menu__d_n
call fcn.0048f080
add esp, 8
cmp dword [ebp - 0x20], 0
je 0x4e3233
push str.got_menu_1_n
call fcn.0048f080
add esp, 4
mov al, byte [0x597ea3]
test al, al
je 0x4e2949
cmp al, 3
jl 0x4e296f
mov eax, dword [ebp - 0x20]
mov ecx, dword [eax]
lea edx, [esi + 0x420]
push edx
push 0x586878
push eax
mov eax, dword [ecx]
call eax
test eax, eax
jne 0x4e296a
push str.menu_type_3_n
jmp 0x4e2996
mov al, byte [0x597ea3]
test al, al
je 0x4e2977
cmp al, 2
jl 0x4e299e
mov eax, dword [ebp - 0x20]
mov ecx, dword [eax]
lea edx, [esi + 0x41c]
push edx
push 0x5868a8
push eax
mov eax, dword [ecx]
call eax
test eax, eax
jne 0x4e299e
push str.menu_type_2_n
call fcn.0048f080
add esp, 4
call dword [sym.imp.USER32.dll_CreatePopupMenu]
mov ebx, eax
mov dword [ebp - 0x30], ebx
test ebx, ebx
je 0x4e31d1
mov dword [ebp - 4], 5
mov edi, 0x10
mov dword [ebp - 0x70], edi
push edi
call fcn.004addf0
test eax, eax
je 0x4e29d2
mov edi, 0x110
mov dword [ebp - 0x70], edi
push str.QueryContextMenu..._n
call fcn.0048f080
add esp, 4
mov eax, dword [esi + 0x420]
test eax, eax
jne 0x4e29f6
mov eax, dword [esi + 0x41c]
test eax, eax
jne 0x4e29f6
mov eax, dword [ebp - 0x20]
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 - 0x1c], eax
mov dword [ebp - 4], 4
jmp 0x4e2a4e
test eax, eax
jl 0x4e31ca
push eax
push str.QueryContextMenu__08x_n
call fcn.0048f080
add esp, 8
mov edi, 0x8000
mov dword [ebp - 0x28], edi
cmp byte [0x58a711], 0
je 0x4e2ab4
push 0
push 0
push 0xc00
push 0
push ebx
call dword [0x597dfc]
mov dword [esi + 0x400], edi
mov edi, 0x8001
mov dword [ebp - 0x28], edi
mov ecx, dword [0x58deec]
mov edx, dword [ecx + 0x1280]
push edx
push 0x8000
push 0x400
push 0
push ebx
call fcn.004abe40
push 0
push 0
push 0xc00
push 0
push ebx
call dword [0x597dfc]
push 0
movsx eax, byte [0x58a6fd]
push eax
call fcn.004c3910
test eax, eax
je 0x4e2b06
mov dword [esi + 0x3f8], edi
add edi, 1
mov dword [ebp - 0x28], edi
mov ecx, dword [0x58deec]
mov edx, dword [ecx + 0x17cc]
push edx
mov eax, dword [esi + 0x3f8]
push eax
push 0x400
push 0
push ebx
call fcn.004abe40
push 0
movsx ecx, byte [0x58a6fe]
push ecx
call fcn.004c3910
test eax, eax
je 0x4e2b46
mov dword [esi + 0x3fc], edi
add edi, 1
mov dword [ebp - 0x28], edi
mov edx, dword [0x58deec]
mov eax, dword [edx + 0x28c]
push eax
mov ecx, dword [esi + 0x3fc]
push ecx
push 0x400
push 0
push ebx
call fcn.004abe40
push 1
movsx edx, byte [0x58a6ff]
push edx
call fcn.004c3910
test eax, eax
je 0x4e2b85
mov dword [esi + 0x3f4], edi
add edi, 1
mov dword [ebp - 0x28], edi
mov eax, dword [0x58deec]
mov ecx, dword [eax + 0x290]
push ecx
mov edx, dword [esi + 0x3f4]
push edx
push 0x400
push 0
push ebx
call fcn.004abe40
cmp byte [0x58a69d], 0
je 0x4e2c99
cmp dword [0x5981a4], 6
sbb eax, eax
neg eax
push eax
movsx ecx, byte [0x58a702]
push ecx
call fcn.004c3910
test eax, eax
je 0x4e2bdc
mov dword [esi + 0x3f0], edi
add edi, 1
mov dword [ebp - 0x28], edi
mov edx, dword [0x58deec]
mov eax, dword [edx + 0x294]
push eax
mov ecx, dword [esi + 0x3f0]
push ecx
push 0x400
push 0
push ebx
call fcn.004abe40
cmp dword [0x5981a4], 6
sbb edx, edx
neg edx
push edx
movsx eax, byte [0x58a701]
push eax
call fcn.004c3910
test eax, eax
je 0x4e2c2c
cmp dword [ebp - 0x54], 0
jne 0x4e2c2c
mov dword [esi + 0x3ec], edi
add edi, 1
mov dword [ebp - 0x28], edi
mov ecx, dword [0x58deec]
mov edx, dword [ecx + 0x298]
push edx
mov eax, dword [esi + 0x3ec]
push eax
push 0x400
push 0
push ebx
call fcn.004abe40
push 1
movsx ecx, byte [0x58a700]
push ecx
call fcn.004c3910
test eax, eax
je 0x4e2c6c
mov dword [esi + 0x3e8], edi
add edi, 1
mov dword [ebp - 0x28], edi
mov edx, dword [0x58deec]
mov eax, dword [edx + 0x29c]
push eax
mov ecx, dword [esi + 0x3e8]
push ecx
push 0x400
push 0
push ebx
call fcn.004abe40
mov dword [esi + 0x3e4], edi
add edi, 1
mov dword [ebp - 0x28], edi
mov edx, dword [0x58deec]
mov eax, dword [edx + 0x2a0]
push eax
mov ecx, dword [esi + 0x3e4]
push ecx
push 0x400
push 0
push ebx
call fcn.004abe40
cmp dword [ebp + 0x340], 0
je 0x4e2d97
push 0
push 0
push ebx
call dword [sym.imp.USER32.dll_GetMenuDefaultItem]
mov edi, eax
mov dword [ebp - 0x30], edi
push edi
push str.default__08x_n
call fcn.0048f080
push 0x40
push 0
lea edx, [ebp - 0x118]
push edx
call fcn.00549d20
add esp, 0x14
mov dword [ebp - 0x118], 0x40
mov dword [ebp - 0x114], 0x20000000
mov eax, dword [esi + 0x60]
mov dword [ebp - 0x110], eax
add edi, 0xffffffff
movzx ecx, di
mov dword [ebp - 0x10c], ecx
mov dword [ebp - 0x100], 1
mov edx, dword [ebp + 0x334]
mov dword [ebp - 0xe0], edx
mov eax, dword [ebp + 0x338]
mov dword [ebp - 0xdc], eax
push 0x10
call fcn.004addf0
test eax, eax
je 0x4e2d34
or dword [ebp - 0x114], 0x10000000
push 0x11
call fcn.004addf0
test eax, eax
je 0x4e2d49
or dword [ebp - 0x114], 0x40000000
mov eax, dword [esi + 0x420]
lea edx, [ebp - 0x118]
push edx
test eax, eax
je 0x4e2d6a
mov ecx, dword [eax]
push eax
mov eax, dword [ecx + 0x10]
call eax
mov dword [ebp - 0x1c], eax
jmp 0x4e31ca
mov eax, dword [esi + 0x41c]
test eax, eax
je 0x4e2d84
mov ecx, dword [eax]
push eax
mov eax, dword [ecx + 0x10]
call eax
mov dword [ebp - 0x1c], eax
jmp 0x4e31ca
mov eax, dword [ebp - 0x20]
mov ecx, dword [eax]
push eax
mov eax, dword [ecx + 0x10]
call eax
mov dword [ebp - 0x1c], eax
jmp 0x4e31ca
cmp dword [ebp - 0x2c], 0
je 0x4e2ea0
lea ecx, [ebp]
push ecx
call fcn.00401210
mov edi, dword [ebp - 0x2c]
push edi
lea edx, [ebp]
push edx
call fcn.00527430
push 0x40
push 0
lea eax, [ebp - 0xd8]
push eax
call fcn.00549d20
add esp, 0xc
mov dword [ebp - 0xd8], 0x40
mov dword [ebp - 0xd4], 0x20004000
mov ecx, dword [esi + 0x60]
mov dword [ebp - 0xd0], ecx
mov dword [ebp - 0xcc], edi
mov edx, dword [ebp + 8]
mov dword [ebp - 0xb0], edx
mov dword [ebp - 0xc0], 1
mov eax, dword [ebp + 0x334]
mov dword [ebp - 0xa0], eax
mov ecx, dword [ebp + 0x338]
mov dword [ebp - 0x9c], ecx
push 0x10
call fcn.004addf0
test eax, eax
je 0x4e2e2d
or dword [ebp - 0xd4], 0x10000000
push 0x11
call fcn.004addf0
test eax, eax
je 0x4e2e42
or dword [ebp - 0xd4], 0x40000000
push edi
push str.invoke__s_n
call fcn.0048f080
add esp, 8
mov eax, dword [esi + 0x420]
test eax, eax
je 0x4e2e6b
mov edx, dword [eax]
lea ecx, [ebp - 0xd8]
push ecx
push eax
mov edx, dword [edx + 0x10]
call edx
jmp 0x4e2e87
mov eax, dword [esi + 0x41c]
lea edx, [ebp - 0xd8]
push edx
test eax, eax
jne 0x4e2e7f
mov eax, dword [ebp - 0x20]
push eax
mov ecx, dword [eax]
mov eax, dword [ecx + 0x10]
call eax
mov edi, eax
mov dword [ebp - 0x1c], edi
lea ecx, [ebp]
push ecx
call fcn.00523250
push edi
push str._08x_n
jmp 0x4e31c2
cmp byte [0x58a69d], 0
je 0x4e2eb9
push 0
mov edx, dword [esi + 0x3e4]
push edx
push ebx
call dword [sym.imp.USER32.dll_SetMenuDefaultItem]
push ebx
push str.track_menu__p_n
push 0xff00ffff
call fcn.0048f0a0
add esp, 0xc
mov dword [esi + 0x418], ebx
push 0
mov eax, dword [esi + 0x60]
push eax
push 0
mov ecx, dword [ebp + 0x338]
push ecx
mov edx, dword [ebp + 0x334]
push edx
push 0x102
push ebx
call dword [sym.imp.USER32.dll_TrackPopupMenu]
mov edi, eax
mov dword [ebp - 0x2c], edi
mov dword [esi + 0x418], 0
push edi
push str.idCommand__d_n
push 0xff00ffff
call fcn.0048f0a0
add esp, 0xc
test edi, edi
jbe 0x4e31ca
cmp edi, dword [esi + 0x3e4]
jne 0x4e2f3f
movsx eax, byte [0x597f01]
push eax
push 0
push 0
push 0
push esi
call fcn.004ccdf0
jmp 0x4e31ca
cmp edi, dword [esi + 0x3ec]
jne 0x4e2f58
mov eax, dword [0x597eb8]
cmp byte [eax], 0
jne 0x4e2f9e
mov eax, str._exec___SystemRoot_explorer.exe___n__e___1__
jmp 0x4e2f9e
cmp edi, dword [esi + 0x3f0]
jne 0x4e2f87
mov eax, dword [0x597ec0]
cmp byte [eax], 0
jne 0x4e2f6f
mov eax, str._exec___SystemRoot_explorer.exe___n__e__select___1__
movsx edx, byte [0x597f01]
push edx
push 0
push 0
push eax
push esi
call fcn.004ccdf0
jmp 0x4e31ca
cmp edi, dword [esi + 0x3e8]
jne 0x4e2fb6
mov eax, dword [0x597ebc]
cmp byte [eax], 0
jne 0x4e2f9e
mov eax, str._openpath___1__
movsx ecx, byte [0x597f01]
push ecx
push 0
push 0
push eax
push esi
call fcn.004ccdf0
jmp 0x4e31ca
cmp edi, dword [esi + 0x3f8]
jne 0x4e2fcb
push 0
push esi
call fcn.004cb220
jmp 0x4e31ca
cmp edi, dword [esi + 0x3f4]
jne 0x4e2fe0
push 2
push esi
call fcn.004cb220
jmp 0x4e31ca
cmp edi, dword [esi + 0x3fc]
jne 0x4e2ff5
push 1
push esi
call fcn.004cb220
jmp 0x4e31ca
cmp edi, dword [esi + 0x414]
jne 0x4e3022
push 0x10
call fcn.004addf0
test eax, eax
je 0x4e3015
push 0
push esi
call fcn.004cb3b0
jmp 0x4e31ca
push 1
push esi
call fcn.004cb3b0
jmp 0x4e31ca
cmp edi, dword [esi + 0x404]
jne 0x4e3035
push esi
call fcn.004f7630
jmp 0x4e31ca
cmp edi, dword [esi + 0x408]
jne 0x4e3048
push esi
call fcn.004ccc20
jmp 0x4e31ca
cmp edi, dword [esi + 0x40c]
jne 0x4e305b
push esi
call fcn.004ccae0
jmp 0x4e31ca
cmp edi, dword [esi + 0x410]
jne 0x4e306e
push esi
call fcn.004c22c0
jmp 0x4e31ca
cmp edi, dword [esi + 0x400]
jne 0x4e3081
push esi
call fcn.00516950
jmp 0x4e31ca
lea edx, [edi - 1]
cmp edx, 0x7ffe
ja 0x4e31ca
push str.using_shell_implementation_n
call fcn.0048f080
push 0x40
push 0
lea eax, [ebp - 0x158]
push eax
call fcn.00549d20
add esp, 0x10
mov dword [ebp - 0x158], 0x40
mov dword [ebp - 0x154], 0x20000000
mov ecx, dword [esi + 0x60]
mov dword [ebp - 0x150], ecx
add edi, 0xffffffff
movzx edi, di
mov dword [ebp - 0x14c], edi
mov dword [ebp - 0x140], 1
mov edx, dword [ebp + 0x334]
mov dword [ebp - 0x120], edx
mov eax, dword [ebp + 0x338]
mov dword [ebp - 0x11c], eax
mov eax, dword [esi + 0x420]
test eax, eax
jne 0x4e310f
mov eax, dword [esi + 0x41c]
test eax, eax
jne 0x4e310f
mov eax, dword [ebp - 0x20]
lea edx, [ebp - 0x158]
push edx
push eax
mov ecx, dword [eax]
mov eax, dword [ecx + 0x10]
call eax
mov dword [ebp - 0x1c], eax
mov ecx, eax
push ecx
push str.invoke_hres__08x_n
call fcn.0048f080
add esp, 8
cmp dword [ebp - 0x1c], 0x80070057
jne 0x4e31ca
xor eax, eax
mov dword [ebp - 0x98], eax
mov dword [ebp - 0x94], eax
mov dword [ebp - 0x90], eax
mov dword [ebp - 0x8c], eax
mov dword [ebp - 0x88], eax
mov dword [ebp - 0x84], eax
mov dword [ebp - 0x80], eax
mov dword [ebp - 0x7c], eax
mov dword [ebp - 0x78], eax
mov dword [ebp - 0x98], 0x24
mov dword [ebp - 0x94], eax
mov edx, dword [esi + 0x60]
mov dword [ebp - 0x90], edx
mov dword [ebp - 0x8c], edi
mov dword [ebp - 0x80], 1
mov eax, dword [esi + 0x420]
test eax, eax
jne 0x4e31aa
mov eax, dword [esi + 0x41c]
test eax, eax
jne 0x4e31aa
mov eax, dword [ebp - 0x20]
lea edx, [ebp - 0x98]
push edx
push eax
mov ecx, dword [eax]
mov eax, dword [ecx + 0x10]
call eax
mov dword [ebp - 0x1c], eax
push eax
push str.invoke_hres_non_ex__08x_n
call fcn.0048f080
add esp, 8
push ebx
call dword [sym.imp.USER32.dll_DestroyMenu]
mov eax, dword [esi + 0x420]
xor edi, edi
cmp eax, edi
je 0x4e31f8
mov ecx, dword [eax]
push eax
mov edx, dword [ecx + 8]
call edx
mov dword [esi + 0x420], edi
mov eax, dword [ebp - 0x20]
mov ecx, dword [eax]
push eax
mov edx, dword [ecx + 8]
call edx
jmp 0x4e3233
mov eax, dword [esi + 0x41c]
cmp eax, edi
je 0x4e3210
mov ecx, dword [eax]
push eax
mov edx, dword [ecx + 8]
call edx
mov dword [esi + 0x41c], edi
mov eax, dword [ebp - 0x20]
mov ecx, dword [eax]
push eax
mov edx, dword [ecx + 8]
call edx
jmp 0x4e3233
mov dword [ebp - 4], 1
xor esi, esi
mov edi, dword [ebp - 0x4c]
mov dword [ebp - 0x6c], esi
cmp esi, dword [ebp - 0x34]
jge 0x4e3256
mov eax, dword [edi + esi*4]
push eax
call dword [sym.imp.ole32.dll_CoTaskMemFree]
add esi, 1
jmp 0x4e323f
push edi
call fcn.004a4950
mov ecx, dword [ebp - 0x38]
push ecx
call fcn.004a4950
cmp dword [ebp - 0x24], 0
je 0x4e328e
mov eax, dword [ebp - 0x58]
mov edx, dword [eax]
push eax
mov eax, dword [edx + 8]
call eax
jmp 0x4e328e
call fcn.0048f080
add esp, 4
mov dword [ebp - 4], 0xfffffffe
mov ecx, dword [ebp - 0x50]
push ecx
call dword [sym.imp.ole32.dll_CoTaskMemFree]
jmp 0x4e2670