Function at 0x40b950
Capabilities:
Get common file path
Query or enumerate registry value

Disassembly:
lea ecx, [esp + 4]
and esp, 0xfffffff0
mov eax, 0x4214e0
xor edx, edx
push dword [ecx - 4]
movd xmm3, eax
mov eax, 0x421920
push ebp
movd xmm4, eax
mov ebp, esp
push edi
push esi
mov esi, 0x421700
lea eax, [ebp - 0x68c]
movd xmm0, esi
mov esi, 0x421b40
push ebx
movd xmm1, esi
push ecx
punpckldq xmm0, xmm3
punpckldq xmm1, xmm4
movdqa xmm2, xmm1
sub esp, 0x6c0
punpcklqdq xmm2, xmm0
mov ebx, dword [ecx]
mov ecx, str.Recent_file_list
movups xmmword [ebp - 0x6a8], xmm2
call sym._registry_get_handle
test eax, eax
je 0x40b9d0
lea esp, [ebp - 0x10]
pop ecx
pop ebx
pop esi
pop edi
pop ebp
lea esp, [ecx - 4]
ret
movdqu xmm5, xmmword [ebp - 0x6a8]
mov dword [esp], ebx
mov edi, eax
mov dword [ebp - 0x688], 0x208
movups xmmword [ebp - 0x678], xmm5
call dword [sym.imp.user32.dll_GetMenu]
mov edx, 0x162
mov dword [ebp - 0x660], 0
mov esi, eax
mov dword [ebp - 0x6a8], eax
sub esp, 4
mov eax, 0x30
mov dword [ebp - 0x668], eax
lea eax, [ebp - 0x226]
mov dword [ebp - 0x644], eax
mov eax, dword [sym.imp.user32.dll_RemoveMenu]
mov dword [esp], esi
lea esi, [ebp - 0x636]
mov dword [ebp - 0x664], edx
mov dword [ebp - 0x658], 0x3ed
mov dword [esp + 8], 0
mov dword [esp + 4], 0x3f1
mov dword [ebp - 0x694], eax
call eax
sub esp, 0xc
mov ebx, edi
lea eax, [ebp - 0x684]
add edi, 1
mov dword [esp + 4], str.File_d
mov dword [esp + 8], edi
add ebx, 0x3ed
mov dword [esp], eax
call dword [sym.imp.user32.dll_wsprintfW]
mov eax, dword [ebp - 0x6a8]
mov dword [esp + 4], ebx
mov dword [esp + 8], 0
mov dword [esp], eax
mov eax, dword [ebp - 0x694]
call eax
lea eax, [ebp - 0x688]
mov ebx, dword [ebp + edi*4 - 0x67c]
sub esp, 0xc
mov dword [esp + 0x14], eax
lea eax, [ebp - 0x684]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x68c]
mov dword [esp + 0x10], ebx
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_RegQueryValueExW]
sub esp, 0x18
test eax, eax
jne 0x40bc36
lea eax, [ebp - 0x226]
mov dword [ebp - 0x648], ebx
mov dword [esp + 8], edi
mov dword [esp + 4], 0x4116a0
mov dword [esp], eax
call dword [sym.imp.user32.dll_wsprintfW]
xor eax, eax
movzx edx, word [ebx + eax]
mov word [esi + eax], dx
add eax, 2
test dx, dx
jne 0x40bb10
lea eax, [ebp - 0x42e]
mov dword [esp + 0xc], 0
mov dword [esp + 0x10], eax
mov dword [esp + 8], 0
mov dword [esp + 4], 5
mov dword [esp], 0
call dword [sym.imp.shell32.dll_SHGetFolderPathW]
sub esp, 0x14
mov dword [esp], esi
call sym._file_basename
mov ebx, eax
xor eax, eax
mov word [ebx - 2], ax
lea eax, [ebp - 0x42e]
mov dword [esp + 4], eax
mov dword [esp], esi
call dword [sym.imp.kernel32.dll_lstrcmpiW]
sub esp, 8
test eax, eax
je 0x40bbac
movzx eax, word [ebx]
mov word [ebp - 0x68e], ax
test ax, ax
je 0x40bca0
mov eax, ebx
lea esi, [esi]
add eax, 2
cmp word [eax], 0
jne 0x40bb98
sub eax, ebx
cmp eax, 0x42
jle 0x40bca0
mov eax, 0x5c
mov word [ebx - 2], ax
cmp word [ebp - 0x226], 0
lea edx, [ebp - 0x226]
je 0x40bbd1
lea esi, [esi]
add edx, 2
cmp word [edx], 0
jne 0x40bbc8
xor eax, eax
lea esi, [esi]
nop
movzx ecx, word [ebx + eax]
mov word [edx + eax], cx
add eax, 2
test cx, cx
jne 0x40bbd8
lea esi, [esi]
nop
lea eax, [ebp - 0x668]
mov dword [esp + 8], 0
mov dword [esp + 0xc], eax
mov eax, dword [ebp - 0x6a8]
mov dword [esp + 4], 0x3e8
mov dword [esp], eax
call dword [sym.imp.user32.dll_InsertMenuItemW]
add dword [ebp - 0x658], 1
mov dword [ebp - 0x688], 0x208
sub esp, 0x10
cmp edi, 4
jne 0x40ba5e
mov eax, 0x102
mov edx, 0x800
mov dword [esp + 8], 0
mov dword [ebp - 0x664], eax
lea eax, [ebp - 0x668]
mov dword [esp + 0xc], eax
mov eax, dword [ebp - 0x6a8]
mov dword [ebp - 0x660], edx
mov dword [esp + 4], 0x3e8
mov dword [esp], eax
call dword [sym.imp.user32.dll_InsertMenuItemW]
mov eax, dword [ebp - 0x68c]
sub esp, 0x10
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_RegCloseKey]
sub esp, 4
lea esp, [ebp - 0x10]
pop ecx
pop ebx
pop esi
pop edi
pop ebp
lea esp, [ecx - 4]
ret
mov ecx, 0x5c
mov word [ebx - 2], cx
cmp ebx, esi
jbe 0x40bd31
xor ecx, ecx
mov dword [ebp - 0x698], edi
mov eax, esi
mov edi, ecx
jmp 0x40bccd
cmp dx, 0x2f
je 0x40bcd6
add eax, 2
cmp ebx, eax
jbe 0x40bd19
movzx edx, word [eax]
cmp dx, 0x5c
jne 0x40bcc0
mov edx, eax
sub edx, esi
sar edx, 1
mov ecx, edx
test edi, edi
jne 0x40bd6d
cmp word [ebp - 0x68e], 0
je 0x40bd07
mov ecx, ebx
lea esi, [esi]
add ecx, 2
cmp word [ecx], 0
jne 0x40bcf8
sub ecx, ebx
sar ecx, 1
add ecx, edx
cmp ecx, 0x21
jg 0x40bedd
mov edi, eax
add eax, 2
cmp ebx, eax
ja 0x40bccd
mov dword [ebp - 0x6ac], edi
mov edi, dword [ebp - 0x698]
cmp dword [ebp - 0x6ac], ebx
je 0x40bbb5
cmp word [ebp - 0x226], 0
lea edx, [ebp - 0x226]
je 0x40bd51
lea esi, [esi]
add edx, 2
cmp word [edx], 0
jne 0x40bd48
xor eax, eax
lea esi, [esi]
nop
movzx ecx, word [esi + eax]
mov word [edx + eax], cx
add eax, 2
test cx, cx
jne 0x40bd58
jmp 0x40bbf0
cmp word [ebp - 0x68e], 0
mov dword [ebp - 0x6ac], edi
mov edi, dword [ebp - 0x698]
je 0x40bd97
mov ecx, ebx
lea esi, [esi]
add ecx, 2
cmp word [ecx], 0
jne 0x40bd88
sub ecx, ebx
sar ecx, 1
add ecx, edx
cmp ecx, 0x21
jg 0x40bd25
mov dword [ebp - 0x6ac], ebx
xor ecx, ecx
cmp ebx, eax
jb 0x40bd31
mov dword [ebp - 0x698], edi
mov edi, dword [ebp - 0x6ac]
mov dword [ebp - 0x6ac], edx
jmp 0x40bdcd
cmp dx, 0x2f
je 0x40bdd6
sub edi, 2
cmp edi, eax
jb 0x40be11
movzx edx, word [edi]
cmp dx, 0x5c
jne 0x40bdc0
cmp word [ebp - 0x68e], 0
je 0x40bee8
mov edx, ebx
lea esi, [esi]
lea esi, [esi]
add edx, 2
cmp word [edx], 0
jne 0x40bdf0
sub edx, ebx
sar edx, 1
add edx, dword [ebp - 0x6ac]
lea edx, [ebx + edx*2]
sub edx, edi
cmp edx, 0x42
jg 0x40be11
mov ecx, edi
jmp 0x40bdc6
mov edi, dword [ebp - 0x698]
cmp ebx, eax
je 0x40bbb5
test ecx, ecx
je 0x40bd31
cmp eax, ecx
je 0x40bd31
xor edx, edx
cmp word [ebp - 0x226], 0
mov word [eax + 2], dx
lea edx, [ebp - 0x226]
je 0x40be51
lea esi, [esi]
add edx, 2
cmp word [edx], 0
jne 0x40be48
xor eax, eax
lea esi, [esi]
nop
movzx ebx, word [esi + eax]
mov word [edx + eax], bx
add eax, 2
test bx, bx
jne 0x40be58
cmp word [ebp - 0x226], 0
lea edx, [ebp - 0x226]
je 0x40be89
lea esi, [esi]
nop
add edx, 2
cmp word [edx], 0
jne 0x40be80
xor eax, eax
lea esi, [esi]
nop
movzx ebx, word [eax + 0x4116aa]
mov word [edx + eax], bx
add eax, 2
test bx, bx
jne 0x40be90
cmp word [ebp - 0x226], 0
lea edx, [ebp - 0x226]
je 0x40bec1
lea esi, [esi]
nop
add edx, 2
cmp word [edx], 0
jne 0x40beb8
xor eax, eax
lea esi, [esi]
nop
movzx ebx, word [ecx + eax]
mov word [edx + eax], bx
add eax, 2
test bx, bx
jne 0x40bec8
jmp 0x40bbf0
mov edi, dword [ebp - 0x698]
jmp 0x40bd31
mov edx, dword [ebp - 0x6ac]
jmp 0x40be03