Function at 0x476b90
Capabilities:
Persist via contextmenuhandlers registry key
Set registry value

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x604cde
mov eax, dword fs:[0]
push eax
sub esp, 0x6ac
mov eax, dword [0x69def4]
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
push 0x208
lea eax, [ebp - 0x420]
push 0
push eax
call fcn.005d4960
push 0x208
lea eax, [ebp - 0x628]
push 0
push eax
call fcn.005d4960
add esp, 0x18
mov dword [ebp - 0x674], 7
xor eax, eax
mov dword [ebp - 0x678], 0
lea ecx, [ebp - 0x688]
mov word [ebp - 0x688], ax
push 7
push 0x609b1c
call fcn.00407210
mov dword [ebp - 4], 0
call fcn.0048bfd0
test al, al
je 0x476c42
pop eax
pop esi
pop edx
pop ebp
pop eax
push ebx
pop ebx
push eax
push ecx
push esp
pop edi
push edi
push edx
pop edx
push eax
push edi
push ebx
push edx
pop edx
push ebp
pop eax
push edx
pop esi
push esi
pop ebp
push ebx
push eax
push esp
push 0x609b1c
push str._shellexContextMenuHandlers_
lea eax, [ebp - 0x420]
push 0x609b88
push eax
call fcn.0040f920
add esp, 0x10
call fcn.0048c3c0
test al, al
je 0x476c87
push esi
pop esi
pop eax
pop ecx
push ecx
pop esi
pop eax
push esi
push esp
push ebp
pop ebx
push eax
push edi
push esp
pop ebx
pop esp
pop edx
push edi
pop esp
push esi
push edx
push ebx
pop edi
push eax
pop ecx
push esp
pop ecx
push ecx
pop esi
push ebx
call fcn.0048ba20
test al, al
je 0x476ca9
pop esi
push eax
push esi
push edx
push ebx
pop edx
push edx
pop esi
pop esp
push ebx
pop edx
push edx
pop edi
pop edx
pop esp
push ebp
pop esi
push ebx
push ebx
push esp
pop edx
push edi
push ebp
push edi
push esp
call fcn.0048bb70
test al, al
je 0x476ccb
pop eax
push ebp
pop ebp
push ebp
push edi
push eax
pop esp
push ecx
push edi
push esi
push edx
pop ebx
push ebp
pop ebp
pop edx
pop ebp
push esp
pop ebx
push ecx
push eax
pop ecx
pop ebp
push eax
pop esp
push esi
cmp dword [ebp - 0x674], 8
lea eax, [ebp - 0x688]
cmovae eax, dword [ebp - 0x688]
push eax
push str._shellexDragDropHandlers_
lea eax, [ebp - 0x628]
push 0x609b88
push eax
call fcn.0040f920
add esp, 0x10
mov dword [ebp - 0x6b4], 0
mov dword [ebp - 0x6b0], 0
mov dword [ebp - 0x6ac], 0
push 1
xor eax, eax
mov byte [ebp - 4], 1
push 0x60be20
lea ecx, [ebp - 0x640]
mov dword [ebp - 0x62c], 7
mov dword [ebp - 0x630], 0
mov word [ebp - 0x640], ax
call fcn.00407210
lea eax, [ebp - 0x640]
mov byte [ebp - 4], 2
push eax
lea ecx, [ebp - 0x6b4]
call fcn.0041d6c0
mov eax, dword [ebp - 0x62c]
mov byte [ebp - 4], 1
cmp eax, 8
jb 0x476d82
inc eax
lea ecx, [ebp - 0x640]
push eax
push dword [ebp - 0x640]
call fcn.00407310
push 6
xor eax, eax
mov dword [ebp - 0x62c], 7
push str.Folder
lea ecx, [ebp - 0x640]
mov dword [ebp - 0x630], 0
mov word [ebp - 0x640], ax
call fcn.00407210
lea eax, [ebp - 0x640]
mov byte [ebp - 4], 3
push eax
lea ecx, [ebp - 0x6b4]
call fcn.0041d6c0
mov eax, dword [ebp - 0x62c]
mov byte [ebp - 4], 1
cmp eax, 8
jb 0x476de9
inc eax
lea ecx, [ebp - 0x640]
push eax
push dword [ebp - 0x640]
call fcn.00407310
push 9
xor eax, eax
mov dword [ebp - 0x62c], 7
push 0x611440
lea ecx, [ebp - 0x640]
mov dword [ebp - 0x630], 0
mov word [ebp - 0x640], ax
call fcn.00407210
lea eax, [ebp - 0x640]
mov byte [ebp - 4], 4
push eax
lea ecx, [ebp - 0x6b4]
call fcn.0041d6c0
mov eax, dword [ebp - 0x62c]
mov byte [ebp - 4], 1
cmp eax, 8
jb 0x476e50
inc eax
lea ecx, [ebp - 0x640]
push eax
push dword [ebp - 0x640]
call fcn.00407310
push 5
xor eax, eax
mov dword [ebp - 0x62c], 7
push str.Drive
lea ecx, [ebp - 0x640]
mov dword [ebp - 0x630], 0
mov word [ebp - 0x640], ax
call fcn.00407210
lea eax, [ebp - 0x640]
mov byte [ebp - 4], 5
push eax
lea ecx, [ebp - 0x6b4]
call fcn.0041d6c0
mov eax, dword [ebp - 0x62c]
mov byte [ebp - 4], 1
cmp eax, 8
jb 0x476eb7
inc eax
lea ecx, [ebp - 0x640]
push eax
push dword [ebp - 0x640]
call fcn.00407310
push 7
xor eax, eax
mov dword [ebp - 0x62c], 7
push str.lnkfile
lea ecx, [ebp - 0x640]
mov dword [ebp - 0x630], 0
mov word [ebp - 0x640], ax
call fcn.00407210
lea eax, [ebp - 0x640]
mov byte [ebp - 4], 6
push eax
lea ecx, [ebp - 0x6b4]
call fcn.0041d6c0
mov eax, dword [ebp - 0x62c]
cmp eax, 8
jb 0x476f1a
inc eax
lea ecx, [ebp - 0x640]
push eax
push dword [ebp - 0x640]
call fcn.00407310
xor eax, eax
mov dword [ebp - 0x68c], 7
mov dword [ebp - 0x690], 0
mov word [ebp - 0x6a0], ax
push 0x208
push eax
lea eax, [ebp - 0x218]
mov byte [ebp - 4], 7
push eax
call fcn.005d4960
mov ebx, dword [ebp - 0x6b4]
add esp, 0xc
mov edi, dword [ebp - 0x6b0]
mov dword [ebp - 0x6b8], ebx
cmp ebx, edi
je 0x4772d7
mov esi, dword [sym.imp.ADVAPI32.dll_RegCreateKeyExW]
cmp dword [ebx + 0x14], 8
jb 0x476f7a
mov edx, dword [ebx]
jmp 0x476f7c
mov edx, ebx
xor eax, eax
mov dword [ebp - 0x62c], 7
mov dword [ebp - 0x630], 0
mov word [ebp - 0x640], ax
cmp word [edx], ax
jne 0x476fa2
xor ecx, ecx
jmp 0x476fbc
mov ecx, edx
lea esi, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x476fa7
sub ecx, esi
mov esi, dword [sym.imp.ADVAPI32.dll_RegCreateKeyExW]
sar ecx, 1
push ecx
push edx
lea ecx, [ebp - 0x640]
call fcn.00407210
cmp word [ebp - 0x420], 0
mov byte [ebp - 4], 8
jne 0x476fdb
xor ecx, ecx
jmp 0x476ff3
lea ecx, [ebp - 0x420]
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x476fe4
sub ecx, edx
sar ecx, 1
push ecx
lea eax, [ebp - 0x420]
push eax
lea ecx, [ebp - 0x640]
call fcn.0040f7f0
cmp dword [ebx + 0x14], 8
jb 0x477010
mov eax, dword [ebx]
jmp 0x477012
mov eax, ebx
push eax
lea ecx, [ebp - 0x670]
call fcn.00405c70
cmp word [ebp - 0x628], 0
mov byte [ebp - 4], 9
jne 0x477030
xor ecx, ecx
jmp 0x47704f
lea ecx, [ebp - 0x628]
lea edx, [ecx + 2]
nop dword [eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x477040
sub ecx, edx
sar ecx, 1
push ecx
lea eax, [ebp - 0x628]
push eax
lea ecx, [ebp - 0x670]
call fcn.0040f7f0
cmp dword [ebp - 0x62c], 8
lea ecx, [ebp - 0x6a4]
push 0
push ecx
push 0
push 0xf013f
push 0
push 0
lea eax, [ebp - 0x640]
mov dword [ebp - 0x6a4], 0
cmovae eax, dword [ebp - 0x640]
push 0
push eax
push accept
call esi
test eax, eax
jne 0x477149
push str.99DBFBB4_9D93_4F50_94F7_74A39CBBEE52
lea ecx, [ebp - 0x658]
call fcn.00405c70
cmp dword [ebp - 0x644], 8
lea ecx, [ebp - 0x658]
lea edx, [ebp - 0x218]
cmovae ecx, dword [ebp - 0x658]
movzx eax, word [ecx]
lea ecx, [ecx + 2]
mov word [edx], ax
lea edx, [edx + 2]
test ax, ax
jne 0x4770d0
lea ecx, [ebp - 0x218]
lea edx, [ecx + 2]
nop word [eax + eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x4770f0
sub ecx, edx
sar ecx, 1
lea eax, [ecx + ecx]
push eax
lea eax, [ebp - 0x218]
push eax
push 1
push 0
push 0x6097e8
push dword [ebp - 0x6a4]
call dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
push dword [ebp - 0x6a4]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov eax, dword [ebp - 0x644]
cmp eax, 8
jb 0x477149
inc eax
lea ecx, [ebp - 0x658]
push eax
push dword [ebp - 0x658]
call fcn.00407310
mov dword [ebp - 0x6a8], 0
call fcn.0048c120
test al, al
je 0x477189
push esi
push esp
push ecx
pop ebp
push ecx
pop ecx
pop edi
push edx
pop edx
push ecx
pop esi
push ecx
push esp
push ecx
push esp
pop ebx
push esp
push ebp
pop ebx
push esi
pop esi
pop eax
push eax
push ebp
push ebp
push edx
push edx
mov ebx, dword [ebp - 0x6b8]
mov edi, dword [ebp - 0x6b0]
mov esi, dword [sym.imp.ADVAPI32.dll_RegCreateKeyExW]
cmp dword [ebp - 0x65c], 8
lea ecx, [ebp - 0x6a8]
push 0
push ecx
push 0
push 0xf013f
push 0
push 0
lea eax, [ebp - 0x670]
cmovae eax, dword [ebp - 0x670]
push 0
push eax
push accept
call esi
test eax, eax
jne 0x477269
push str.99DBFBB4_9D93_4F50_94F7_74A39CBBEE52
lea ecx, [ebp - 0x658]
call fcn.00405c70
cmp dword [ebp - 0x644], 8
lea ecx, [ebp - 0x658]
lea edx, [ebp - 0x218]
cmovae ecx, dword [ebp - 0x658]
nop dword [eax]
movzx eax, word [ecx]
lea ecx, [ecx + 2]
mov word [edx], ax
lea edx, [edx + 2]
test ax, ax
jne 0x4771f0
lea ecx, [ebp - 0x218]
lea edx, [ecx + 2]
nop word [eax + eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x477210
sub ecx, edx
sar ecx, 1
lea eax, [ecx + ecx]
push eax
lea eax, [ebp - 0x218]
push eax
push 1
push 0
push 0x6097e8
push dword [ebp - 0x6a8]
call dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
push dword [ebp - 0x6a8]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov eax, dword [ebp - 0x644]
cmp eax, 8
jb 0x477269
inc eax
lea ecx, [ebp - 0x658]
push eax
push dword [ebp - 0x658]
call fcn.00407310
mov eax, dword [ebp - 0x65c]
cmp eax, 8
jb 0x477287
inc eax
lea ecx, [ebp - 0x670]
push eax
push dword [ebp - 0x670]
call fcn.00407310
xor eax, eax
mov dword [ebp - 0x65c], 7
mov word [ebp - 0x670], ax
mov eax, dword [ebp - 0x62c]
mov dword [ebp - 0x660], 0
mov byte [ebp - 4], 7
cmp eax, 8
jb 0x4772c6
inc eax
lea ecx, [ebp - 0x640]
push eax
push dword [ebp - 0x640]
call fcn.00407310
add ebx, 0x18
mov dword [ebp - 0x6b8], ebx
cmp ebx, edi
jne 0x476f70
lea ecx, [ebp - 0x6b4]
call fcn.00427030
mov eax, dword [ebp - 0x674]
cmp eax, 8
jb 0x477300
inc eax
lea ecx, [ebp - 0x688]
push eax
push dword [ebp - 0x688]
call fcn.00407310
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.005caa5c
mov esp, ebp
pop ebp
ret