Function at 0x6904c500
Capabilities:
Access peb ldr_data
Check for peb beingdebugged flag
Check if file exists
Get graphical window text
Get kernel32 base address
Get number of processors
Get process heap flags
Query or enumerate registry value
Set registry value

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
sub esp, 0x79c
mov dword [ebp - 0x75c], eax
mov esi, dword [sym.imp.user32.dll_GetPropW]
mov dword [esp + 4], str.FileOpenDlgInfos
mov dword [esp], eax
call esi
mov dword [ebp - 0x74c], 0
mov dword [ebp - 0x760], eax
sub esp, 8
mov dword [ebp - 0x748], 0
test byte [0x6907604c], 8
jne 0x6904c888
mov eax, dword [ebp - 0x75c]
mov dword [esp + 4], str.FileOpenDlgInfos
mov dword [esp], eax
call esi
sub esp, 8
mov ebx, eax
test byte [0x6907604c], 8
jne 0x6904c858
movzx eax, word [0x6908d00c]
mov edi, dword [ebx + 0x3c]
test ax, ax
je 0x6904c838
mov word [ebp - 0x338], ax
mov dword [ebp - 0x334], 0
mov dword [ebp - 0x330], 1
mov dword [ebp - 0x32c], 0xffffffff
mov dword [ebp - 0x328], 1
test byte [0x6907604c], 8
jne 0x6904c808
test edi, edi
je 0x6904c5f4
mov eax, dword [edi]
lea ecx, [ebp - 0x338]
lea edx, [ebp - 0x540]
mov dword [esp], edi
mov dword [esp + 8], edx
mov dword [ebp - 0x764], ecx
mov dword [esp + 4], ecx
call dword [eax + 0xc]
sub esp, 0xc
test eax, eax
jns 0x6904c8c0
mov eax, dword [ebp - 0x75c]
mov dword [esp + 4], str.FileOpenDlgInfos
mov dword [esp], eax
call esi
sub esp, 8
mov edx, eax
test byte [0x6907604c], 8
jne 0x6904c960
mov eax, dword [edx + 0x60]
mov dword [ebp - 0x768], edx
mov dword [esp], eax
call dword [sym.imp.user32.dll_GetWindowTextLengthW]
lea ecx, [eax + 1]
sub esp, 4
mov ebx, eax
lea edi, [ecx + ecx]
mov dword [esp + 4], 0
mov dword [esp + 8], edi
mov eax, dword fs:[0x18]
mov eax, dword [eax + 0x30]
mov dword [ebp - 0x764], ecx
mov eax, dword [eax + 0x18]
mov dword [esp], eax
mov eax, dword [sym.imp.kernel32.dll_HeapAlloc]
mov dword [ebp - 0x76c], eax
call eax
mov ecx, dword [ebp - 0x764]
mov edx, dword [ebp - 0x768]
sub esp, 0xc
mov edi, eax
mov dword [esp + 8], ecx
mov dword [esp + 4], eax
mov eax, dword [edx + 0x60]
mov dword [esp], eax
call dword [sym.imp.user32.dll_GetWindowTextW]
sub esp, 0xc
test byte [0x6907604c], 8
jne 0x6904cc40
lea eax, [ebp - 0x74c]
mov dword [esp + 4], ebx
mov dword [esp + 0xc], eax
lea eax, [ebp - 0x750]
mov dword [esp], edi
mov dword [esp + 8], eax
call fcn.6904b060
mov dword [esp + 8], edi
mov edi, dword [sym.imp.kernel32.dll_HeapFree]
mov dword [esp + 4], 0
mov ebx, eax
mov eax, dword fs:[0x18]
mov eax, dword [eax + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
call edi
sub esp, 0xc
test ebx, ebx
je 0x6904c7fd
mov eax, dword [ebp - 0x750]
mov dword [ebp - 0x764], eax
cmp ebx, 1
jne 0x6904ccb0
test byte [0x6907604c], 8
jne 0x6904c998
lea eax, [ebp - 0x540]
mov esi, dword [ebp - 0x760]
mov dword [esp + 8], eax
mov dword [ebp - 0x768], eax
mov eax, dword [ebp - 0x764]
mov dword [esp + 4], eax
mov eax, dword [esi + 0x50]
mov dword [esp], eax
call fcn.6904a880
mov edx, dword [ebp - 0x750]
mov dword [esp + 4], 0
mov eax, dword fs:[0x18]
mov dword [esp + 8], edx
mov eax, dword [eax + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
call edi
mov eax, dword [esi]
sub esp, 0xc
mov edx, dword [eax + 0x34]
mov eax, 1
test dh, 1
je 0x6904c776
xor eax, eax
test dh, 0x10
sete al
add eax, 1
mov dword [esp + 0x14], eax
mov eax, dword [ebp - 0x760]
mov eax, dword [eax + 0x70]
mov dword [esp + 0xc], edx
mov dword [ebp - 0x764], eax
and eax, 1
mov dword [esp + 0x10], eax
mov eax, dword [ebp - 0x75c]
mov dword [esp + 8], eax
lea eax, [ebp - 0x748]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x768]
mov dword [esp], eax
call fcn.6904b580
mov esi, eax
test eax, eax
je 0x6904c7e8
test byte [0x6907604c], 8
jne 0x6904ca98
cmp eax, 2
je 0x6904d0b4
cmp eax, 3
je 0x6904d4ca
cmp eax, 1
je 0x6904cb0e
lea esi, [esi]
mov eax, dword [ebp - 0x748]
test eax, eax
je 0x6904c7fd
mov edx, dword [eax]
mov dword [esp], eax
call dword [edx + 8]
sub esp, 4
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret
mov dword [esp + 0x10], edi
mov dword [esp + 0xc], str.sv_p_n
mov dword [esp + 8], str.GetNumSelected
mov dword [esp + 4], 0x6907604c
mov dword [esp], 3
call fcn.69044e10
jmp 0x6904c5c3
mov dword [esp], str.Shell_IDList_Array
call dword [sym.imp.user32.dll_RegisterClipboardFormatA]
mov word [0x6908d00c], ax
sub esp, 4
jmp 0x6904c587
mov dword [esp + 0xc], str._nSoftwareMicrosoftWindowsCurrentVersionExplorerComDlg32LastVisitedMRU
mov dword [esp + 8], str.BrowseSelectedFolder
mov dword [esp + 4], 0x6907604c
mov dword [esp], 3
call fcn.69044e10
jmp 0x6904c574
mov eax, dword [ebp - 0x75c]
mov dword [esp + 0xc], str.hwnd_p_n
mov dword [esp + 8], str.FILEDLG95_OnOpen
mov dword [esp + 0x10], eax
mov dword [esp + 4], 0x6907604c
mov dword [esp], 3
call fcn.69044e10
jmp 0x6904c54f
mov eax, dword [ebp - 0x53c]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_GlobalLock]
mov edi, dword [eax]
mov eax, dword [ebp - 0x538]
sub esp, 4
test eax, eax
je 0x6904cf60
mov edx, dword [eax]
mov dword [esp], eax
call dword [edx + 8]
sub esp, 4
cmp edi, 1
jne 0x6904c5f4
mov dword [esp + 4], 1
mov eax, dword [ebx + 0x3c]
mov dword [esp], eax
call fcn.6904c3a0
mov edi, eax
mov eax, dword [ebx + 0x34]
mov edx, edi
call fcn.69045510
test eax, eax
je 0x6904cec8
mov eax, dword [ebx + 0x30]
mov edx, dword [eax]
mov dword [esp + 8], 0x1000
mov dword [esp + 4], edi
mov dword [esp], eax
call dword [edx + 0x2c]
sub esp, 0xc
test eax, eax
js 0x6904d780
mov eax, dword [ebx]
test byte [eax + 0x36], 8
jne 0x6904d748
mov dword [esp], edi
call dword [sym.imp.shell32.dll_ILFree]
sub esp, 4
jmp 0x6904c7fd
mov dword [esp + 0xc], str._nSoftwareMicrosoftWindowsCurrentVersionExplorerComDlg32LastVisitedMRU
mov dword [esp + 8], str.FILEDLG95_FILENAME_GetFileNames
mov dword [esp + 4], 0x6907604c
mov dword [esp], 3
mov dword [ebp - 0x764], eax
call fcn.69044e10
mov edx, dword [ebp - 0x764]
jmp 0x6904c619
mov eax, dword [ebp - 0x764]
test eax, eax
je 0x6904db08
shr eax, 0x10
je 0x6904cf90
mov esi, dword [ebp - 0x764]
mov dword [esp + 4], 0xffffffff
mov dword [esp], esi
call dword [sym.imp.kernel32.dll_IsBadStringPtrW]
mov edx, 0x6907869d
sub esp, 8
test eax, eax
jne 0x6904cfa9
cmp word [esi], 0
je 0x6904dd34
mov ecx, esi
lea esi, [esi]
mov edx, eax
lea eax, [eax + 1]
cmp word [ecx + edx*2 + 2], 0
jne 0x6904c9e8
mov eax, 0x224c
mov dword [ebp - 0x768], edi
lea ecx, [ebp - 0x336]
lea esi, [ebp - 0x216]
mov word [ebp - 0x338], ax
jmp 0x6904ca55
cmp ax, 9
je 0x6904d700
cmp ax, 0xa
jne 0x6904d678
mov eax, 0x6e5c
add ecx, 2
mov word [ecx - 2], ax
lea esi, [esi]
nop
lea eax, [edx - 1]
cmp ecx, esi
ja 0x6904d7d8
test edx, edx
jle 0x6904d7d8
mov edx, eax
add dword [ebp - 0x764], 2
mov eax, dword [ebp - 0x764]
movzx eax, word [eax - 2]
cmp ax, 0xd
je 0x6904d6e8
jbe 0x6904ca18
cmp ax, 0x22
je 0x6904d6d0
cmp ax, 0x5c
jne 0x6904d66b
mov ebx, 0x5c5c
add ecx, 2
mov word [ecx - 2], bx
jmp 0x6904ca40
mov eax, dword [ebp - 0x748]
mov dword [esp + 0xc], str.end_validate_sf_p_n
mov dword [esp + 8], str.FILEDLG95_OnOpen
mov dword [esp + 0x10], eax
mov dword [esp + 4], 0x6907604c
mov dword [esp], 3
call fcn.69044e10
cmp esi, 2
je 0x6904dc30
cmp esi, 3
je 0x6904db38
cmp esi, 1
jne 0x6904c7e8
test byte [0x6907604c], 8
je 0x6904cb0e
mov dword [esp + 0xc], str.ONOPEN_BROWSE_n
mov dword [esp + 8], str.FILEDLG95_OnOpen
mov dword [esp + 4], 0x6907604c
mov dword [esp], 3
call fcn.69044e10
mov eax, dword [ebp - 0x748]
lea ecx, [ebp - 0x66c]
mov edx, dword [eax]
mov dword [esp + 8], ecx
mov dword [esp + 4], 0x690833b8
mov dword [esp], eax
call dword [edx]
sub esp, 0xc
test eax, eax
js 0x6904c7e8
mov eax, dword [ebp - 0x66c]
lea ecx, [ebp - 0x338]
mov edx, dword [eax]
mov dword [esp + 4], ecx
mov dword [esp], eax
call dword [edx + 0x14]
mov eax, dword [ebp - 0x66c]
sub esp, 8
mov edx, dword [eax]
mov dword [esp], eax
call dword [edx + 8]
mov ebx, dword [ebp - 0x760]
sub esp, 4
mov eax, dword [ebx + 0x50]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x338]
mov dword [esp], eax
call dword [sym.imp.shell32.dll_ILIsEqual]
sub esp, 8
test eax, eax
jne 0x6904d818
mov eax, dword [ebx + 0x30]
mov ecx, dword [ebp - 0x338]
mov edx, dword [eax]
mov dword [esp + 8], 0
mov dword [esp + 4], ecx
mov dword [esp], eax
call dword [edx + 0x2c]
sub esp, 0xc
test eax, eax
js 0x6904cbc0
mov eax, dword [ebx]
test byte [eax + 0x36], 8
jne 0x6904e58b
lea esi, [esi]
nop
mov eax, dword [ebp - 0x338]
mov dword [esp], eax
call dword [sym.imp.shell32.dll_ILFree]
mov eax, dword [ebp - 0x760]
sub esp, 4
mov eax, dword [eax]
cmp dword [eax], 0x4c
je 0x6904dac8
mov eax, dword [ebp - 0x760]
mov edx, dword [eax + 0x60]
mov dword [esp], edx
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], 0x407
call dword [sym.imp.user32.dll_SendMessageA]
sub esp, 0x10
mov dword [esp + 0xc], 0xffffffff
mov dword [esp + 8], 0
mov dword [esp + 4], 0xb1
mov dword [esp], eax
call dword [sym.imp.user32.dll_SendMessageW]
sub esp, 0x10
jmp 0x6904c7e8
test edi, edi
je 0x6904d770
mov eax, edi
shr eax, 0x10
je 0x6904d048
mov dword [esp + 4], 0xffffffff
mov dword [esp], edi
call dword [sym.imp.kernel32.dll_IsBadStringPtrW]
mov edx, eax
sub esp, 8
mov eax, 0x6907869d
test edx, edx
jne 0x6904cc79
mov eax, edi
call fcn.69044ac0
mov dword [esp + 0x14], eax
mov dword [esp + 0x10], ebx
mov dword [esp + 0xc], str.nStrLen_u_str_s_n
mov dword [esp + 8], str.FILEDLG95_FILENAME_GetFileNames
mov dword [esp + 4], 0x6907604c
mov dword [esp], 3
call fcn.69044e10
jmp 0x6904c699
mov eax, dword [ebp - 0x74c]
mov dword [esp + 4], str.FileOpenDlgInfos
lea edi, [ebp - 0x540]
mov dword [ebp - 0x760], eax
mov eax, dword [ebp - 0x75c]
mov dword [esp], eax
call esi
mov ecx, 0x82
mov dword [ebp - 0x768], edi
mov esi, eax
xor eax, eax
sub esp, 8
rep stosd dword es:[edi], eax
test byte [0x6907604c], 8
jne 0x6904d718
mov eax, dword [esi]
mov ecx, dword [esi + 4]
mov eax, dword [eax + 0x1c]
test ecx, ecx
je 0x6904cee0
xor edx, edx
mov word [eax], dx
mov edx, dword [ebp - 0x768]
mov eax, dword [esi + 0x50]
call fcn.690449b0
mov edi, dword [esi]
mov edx, dword [edi + 0x34]
test dh, 1
jne 0x6904cda0
test dh, 0x10
je 0x6904cda0
mov eax, dword [esi + 0x70]
and eax, 1
mov dword [ebp - 0x770], eax
jne 0x6904cda0
xor eax, eax
mov edi, dword [ebp - 0x764]
mov dword [ebp - 0x76c], ebx
mov ebx, eax
lea esi, [esi]
lea esi, [esi]
mov eax, dword [esi + 0x34]
mov edx, edi
call fcn.69046520
mov ecx, eax
test eax, eax
je 0x6904e0d9
cmp word [edi], 0
mov eax, edi
je 0x6904db18
add eax, 2
cmp word [eax], 0
jne 0x6904cd70
sub eax, edi
add eax, 2
mov dword [esp], ecx
add edi, eax
add ebx, 1
call dword [sym.imp.shell32.dll_ILFree]
sub esp, 4
cmp dword [ebp - 0x76c], ebx
jne 0x6904cd50
mov edi, dword [esi]
mov edx, dword [edi + 0x34]
lea esi, [esi]
cmp word [ebp - 0x540], 0
je 0x6904dd20
mov eax, dword [ebp - 0x768]
lea esi, [esi]
add eax, 2
cmp word [eax], 0
jne 0x6904cdb8
sub eax, dword [ebp - 0x768]
mov ebx, eax
mov dword [ebp - 0x76c], eax
sar ebx, 1
add ebx, 1
and edx, 0x80000
jne 0x6904ce10
test byte [0x6907604c], 1
je 0x6904ce10
mov dword [esp + 0xc], str.Components_have_to_be_separated_by_blanks_n
mov dword [esp + 8], str.FILEDLG95_OnOpenMultipleFiles
mov dword [esp + 4], 0x6907604c
mov dword [esp], 0
call fcn.69044e10
mov edi, dword [esi]
lea esi, [esi]
nop
mov eax, dword [esi + 4]
mov ecx, dword [edi + 0x1c]
test eax, eax
je 0x6904cef0
mov dword [ebp - 0x770], esi
mov esi, dword [ebp - 0x768]
xor eax, eax
lea esi, [esi]
movzx edx, word [esi + eax]
mov word [ecx + eax], dx
add eax, 2
test dx, dx
jne 0x6904ce30
mov eax, dword [edi + 0x1c]
mov ecx, dword [ebp - 0x76c]
mov edx, dword [ebp - 0x760]
mov esi, dword [ebp - 0x770]
lea eax, [eax + ecx + 2]
mov ecx, dword [ebp - 0x764]
add edx, edx
mov dword [esp], eax
mov dword [esp + 8], edx
mov dword [esp + 4], ecx
call sub.ucrtbase.dll_memcpy
mov edi, dword [esi]
mov word [edi + 0x38], bx
mov eax, dword [esi]
xor edx, edx
mov ebx, dword [ebp - 0x75c]
mov word [eax + 0x3a], dx
mov edx, esi
mov eax, ebx
call fcn.6904b340
test eax, eax
je 0x6904c7e8
mov eax, ebx
call fcn.69045b90
mov eax, ebx
call fcn.69045cd0
mov eax, ebx
call fcn.69044e60
mov dword [esp + 4], 1
mov dword [esp], ebx
call dword [sym.imp.user32.dll_EndDialog]
sub esp, 8
jmp 0x6904c7e8
mov dword [esp], edi
call dword [sym.imp.shell32.dll_ILFree]
sub esp, 4
jmp 0x6904c5f4
mov byte [eax], 0
jmp 0x6904cd0b
test ecx, ecx
je 0x6904ce73
mov dword [esp + 0x1c], 0
mov edx, dword [sym.imp.kernel32.dll_WideCharToMultiByte]
mov dword [esp + 0x18], 0
mov eax, dword [edi + 0x20]
mov dword [esp + 0x10], ecx
mov dword [esp + 0x14], eax
mov eax, dword [ebp - 0x768]
mov dword [esp + 0xc], 0xffffffff
mov dword [ebp - 0x768], edx
mov dword [esp + 8], eax
mov dword [esp + 4], 0
mov dword [esp], 0
call edx
mov edx, dword [ebp - 0x768]
mov ebx, eax
mov eax, dword [edi + 0x20]
sub esp, 0x20
cmp ebx, eax
jb 0x6904cff4
mov edi, dword [esi]
jmp 0x6904ce73
mov edx, dword [ebp - 0x53c]
mov dword [esp], edx
mov dword [ebp - 0x768], edx
call dword [sym.imp.kernel32.dll_GlobalUnlock]
mov edx, dword [ebp - 0x768]
sub esp, 4
mov dword [esp], edx
call dword [sym.imp.kernel32.dll_GlobalFree]
sub esp, 4
jmp 0x6904c8ed
movzx eax, word [ebp - 0x764]
mov dword [esp], 0x690786a7
mov dword [esp + 4], eax
call fcn.69044a60
mov edx, eax
mov eax, dword [ebp - 0x74c]
mov dword [esp + 0x18], edx
mov dword [esp + 0x10], 1
mov dword [esp + 0x14], eax
mov dword [esp + 0xc], str.count_u_len_u_file_s_n
mov dword [esp + 8], str.FILEDLG95_OnOpen
mov dword [esp + 4], 0x6907604c
mov dword [esp], 3
call fcn.69044e10
mov eax, dword [ebp - 0x750]
mov dword [ebp - 0x764], eax
jmp 0x6904c70b
sub eax, ebx
mov dword [esp + 0x1c], 0
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], eax
mov eax, dword [edi + 0x1c]
mov dword [esp + 4], 0
add eax, ebx
mov dword [esp], 0
mov dword [esp + 0x10], eax
mov eax, dword [ebp - 0x760]
mov dword [esp + 0xc], eax
mov eax, dword [ebp - 0x764]
mov dword [esp + 8], eax
call edx
mov edi, dword [esi]
sub esp, 0x20
jmp 0x6904ce73
movzx eax, di
mov dword [esp], 0x690786a7
mov dword [esp + 4], eax
call fcn.69044a60
jmp 0x6904cc79
mov byte [ebx], 0x22
test ecx, ecx
jle 0x6904e6f9
mov esi, 0x2e2e
mov byte [ebx + 3], 0x2e
lea eax, [ebx + 4]
mov word [ebx + 1], si
mov byte [eax], 0
lea eax, [ebp - 0x338]
mov dword [esp], eax
call fcn.69075320
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], str.ONOPEN_OPEN__s_n
mov dword [esp + 8], str.FILEDLG95_OnOpen
mov dword [esp + 4], 0x6907604c
mov dword [esp], 3
call fcn.69044e10
mov eax, dword [ebp - 0x75c]
mov dword [esp + 4], 0x410
mov dword [esp], eax
call dword [sym.imp.user32.dll_GetDlgItem]
sub esp, 8
mov dword [esp], eax
mov eax, dword [sym.imp.user32.dll_SendMessageW]
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], 0xf0
mov dword [ebp - 0x764], eax
call eax
and eax, 3
sub esp, 0x10
cmp eax, 1
mov eax, dword [ebp - 0x760]
mov eax, dword [eax]
je 0x6904db28
and dword [eax + 0x34], 0xfffffffe
mov eax, dword [ebp - 0x768]
mov esi, dword [sym.imp.shlwapi.dll_PathFindExtensionW]
mov dword [esp], eax
mov dword [ebp - 0x774], esi
call esi
sub esp, 4
cmp word [eax], 0
mov dword [ebp - 0x770], eax
jne 0x6904d390
mov ebx, dword [ebp - 0x760]
mov ecx, dword [ebx + 0x14]
test ecx, ecx
je 0x6904d390
cmp word [ebp - 0x540], 0
je 0x6904e826
mov eax, dword [ebp - 0x768]
add eax, 2
cmp word [eax], 0
jne 0x6904d160
sub eax, dword [ebp - 0x768]
sar eax, 1
mov dword [ebp - 0x778], eax
mov ebx, dword [ebp - 0x760]
mov dword [esp + 0xc], 0
mov eax, dword [ebx]
mov eax, dword [eax + 0x18]
mov dword [esp + 4], 0x150
sub eax, 1
mov dword [esp + 8], eax
mov eax, dword [ebx + 0x58]
mov dword [esp], eax
mov eax, dword [ebp - 0x764]
call eax
sub esp, 0x10
mov ecx, eax
cmp eax, 0xffffffff
je 0x6904d29f
cmp word [eax], 0
mov ebx, eax
je 0x6904d1c9
lea esi, [esi]
add eax, 2
cmp word [eax], 0
jne 0x6904d1c0
sub eax, ecx
mov dword [esp + 4], 0
add eax, 2
mov dword [ebp - 0x764], ecx
mov dword [esp + 8], eax
mov edx, dword fs:[0x18]
mov eax, dword [edx + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
mov eax, dword [ebp - 0x76c]
call eax
mov ecx, dword [ebp - 0x764]
mov edx, eax
sub esp, 0xc
mov esi, eax
sub edx, ecx
lea esi, [esi]
nop
mov eax, ebx
add ebx, 2
movzx eax, word [eax]
mov word [ebx + edx - 2], ax
test ax, ax
jne 0x6904d210
mov dword [esp + 4], 0x3b
mov ebx, dword [sym.imp.ucrtbase.dll_wcschr]
mov dword [esp], esi
call ebx
test eax, eax
je 0x6904d23e
xor edx, edx
mov word [eax], dx
mov dword [esp + 4], 0x2e
mov dword [esp], esi
call ebx
test eax, eax
je 0x6904d27f
lea ecx, [eax + 2]
mov dword [ebp - 0x77c], eax
mov dword [esp], ecx
mov dword [ebp - 0x764], ecx
mov dword [esp + 4], 0x2a
call ebx
mov ecx, dword [ebp - 0x764]
mov edx, dword [ebp - 0x77c]
test eax, eax
je 0x6904e87c
mov dword [esp + 8], esi
mov dword [esp + 4], 0
mov eax, dword fs:[0x18]
mov eax, dword [eax + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
call edi
sub esp, 0xc
mov eax, dword [ebp - 0x760]
mov edx, dword [eax + 0x14]
cmp word [edx], 0
je 0x6904e872
mov eax, edx
lea esi, [esi]
add eax, 2
cmp word [eax], 0
jne 0x6904d2b8
sub eax, edx
add eax, 2
mov dword [esp + 8], eax
mov dword [esp + 4], 0
mov edx, dword fs:[0x18]
mov eax, dword [edx + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
mov eax, dword [ebp - 0x76c]
call eax
mov esi, eax
mov eax, dword [ebp - 0x760]
sub esp, 0xc
mov ecx, dword [eax + 0x14]
xor eax, eax
lea esi, [esi]
movzx edx, word [ecx + eax]
mov word [esi + eax], dx
add eax, 2
test dx, dx
jne 0x6904d300
movzx ecx, word [esi]
test cx, cx
jne 0x6904e360
mov dword [esp + 8], esi
mov dword [esp + 4], 0
mov eax, dword fs:[0x18]
mov eax, dword [eax + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
call edi
mov eax, dword [ebp - 0x760]
sub esp, 0xc
test byte [eax + 0x70], 1
je 0x6904e331
mov esi, dword [ebp - 0x770]
cmp word [esi], 0
lea eax, [esi + 2]
cmove eax, esi
mov esi, dword [ebp - 0x760]
mov dword [esp + 4], eax
mov eax, dword [esi + 0x14]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_lstrcmpiW]
sub esp, 8
test eax, eax
jne 0x6904e280
mov eax, dword [esi]
and dword [eax + 0x34], 0xfffffbff
lea esi, [esi]
lea esi, [esi]
mov eax, dword [ebp - 0x760]
mov esi, dword [eax]
mov ebx, dword [esi + 0x34]
mov dword [ebp - 0x764], ebx
test byte [eax + 0x70], 1
je 0x6904d890
and ebx, 2
jne 0x6904d852
mov eax, dword [ebp - 0x764]
mov ecx, dword [esi + 0x20]
movzx edx, word [ebp - 0x540]
shr eax, 9
mov ebx, ecx
and eax, 1
sub ebx, eax
test dx, dx
je 0x6904e615
mov eax, dword [ebp - 0x768]
lea esi, [esi]
add eax, 2
cmp word [eax], 0
jne 0x6904d3e0
sub eax, dword [ebp - 0x768]
sar eax, 1
cmp eax, ebx
jb 0x6904d8d0
mov eax, dword [ebp - 0x768]
nop
add eax, 2
cmp word [eax], 0
jne 0x6904d400
sub eax, dword [ebp - 0x768]
sar eax, 1
mov edx, eax
add eax, 1
add edx, 2
test dword [ebp - 0x764], 0x200
cmovne eax, edx
mov edx, dword [esi + 0x1c]
test edx, edx
je 0x6904d430
mov word [edx], ax
mov esi, dword [ebp - 0x75c]
mov eax, esi
call fcn.69045b90
mov eax, esi
call fcn.69045cd0
mov eax, esi
call fcn.69044e60
mov dword [esp], esi
mov dword [esp + 4], 0
call dword [sym.imp.user32.dll_EndDialog]
sub esp, 8
mov dword [esp], 0x3003
call fcn.69041890
jmp 0x6904c7e8
mov byte [ebx], 0x22
mov esi, dword [ebp - 0x764]
test ecx, ecx
jle 0x6904e717
mov edx, 0x2e2e
mov byte [ebx + 3], 0x2e
lea eax, [ebx + 4]
mov word [ebx + 1], dx
mov byte [eax], 0
lea eax, [ebp - 0x338]
mov dword [esp], eax
call fcn.69075320
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], str.ONOPEN_SEARCH__s_n
mov dword [esp + 8], str.FILEDLG95_OnOpen
mov dword [esp + 4], 0x6907604c
mov dword [esp], 3
call fcn.69044e10
mov eax, dword [ebp - 0x768]
mov dword [esp], eax
call dword [sym.imp.shlwapi.dll_PathFindFileNameW]
mov ecx, dword [ebp - 0x760]
sub esp, 4
mov ebx, eax
mov edx, dword [ecx + 0x54]
mov dword [esp + 4], 0
mov eax, dword fs:[0x18]
mov dword [esp + 8], edx
mov eax, dword [eax + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
call edi
sub esp, 0xc
cmp word [ebx], 0
je 0x6904e60b
mov eax, ebx
lea esi, [esi]
nop
add eax, 2
cmp word [eax], 0
jne 0x6904d518
sub eax, ebx
add eax, 2
mov dword [esp + 8], eax
mov dword [esp + 4], 0
mov edx, dword fs:[0x18]
mov eax, dword [edx + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
mov eax, dword [ebp - 0x76c]
call eax
mov ecx, eax
mov eax, dword [ebp - 0x760]
sub esp, 0xc
mov dword [eax + 0x54], ecx
xor eax, eax
lea esi, [esi]
movzx edx, word [ebx + eax]
mov word [ecx + eax], dx
add eax, 2
test dx, dx
jne 0x6904d560
mov eax, dword [ebp - 0x760]
mov eax, dword [eax + 0x58]
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [ebp - 0x76c], eax
mov dword [esp], eax
mov eax, dword [sym.imp.user32.dll_SendMessageW]
mov dword [esp + 4], 0x146
mov dword [ebp - 0x764], eax
call eax
mov dword [ebp - 0x768], eax
sub esp, 0x10
test byte [0x6907604c], 8
jne 0x6904dd58
cmp dword [ebp - 0x768], 0xffffffff
je 0x6904cb0e
mov edx, dword [ebp - 0x768]
test edx, edx
jle 0x6904cae1
mov dword [ebp - 0x770], esi
xor edi, edi
mov esi, dword [ebp - 0x76c]
jmp 0x6904d5ff
add edi, 1
cmp dword [ebp - 0x768], edi
je 0x6904dab8
mov dword [esp + 0xc], 0
mov eax, dword [ebp - 0x764]
mov dword [esp + 8], edi
mov dword [esp + 4], 0x150
mov dword [esp], esi
call eax
sub esp, 0x10
mov dword [esp + 4], eax
mov dword [esp], ebx
call dword [sym.imp.kernel32.dll_lstrcmpiW]
sub esp, 8
test eax, eax
jne 0x6904d5f0
mov eax, dword [ebp - 0x760]
mov dword [esp + 0xc], 0
mov dword [esp + 8], edi
mov esi, dword [ebp - 0x770]
mov dword [esp + 4], 0x14e
mov eax, dword [eax + 0x58]
mov dword [esp], eax
mov eax, dword [ebp - 0x764]
call eax
sub esp, 0x10
jmp 0x6904cae1
lea edi, [eax - 0x20]
cmp di, 0x5e
jbe 0x6904d848
mov edi, eax
mov byte [ecx], 0x5c
add ecx, 5
shr di, 0xc
movzx edi, di
movzx ebx, byte [edi + str.0123456789abcdefFILEDLG95_Handle_GetFilePath]
mov edi, eax
shr di, 8
and edi, 0xf
mov byte [ecx - 4], bl
movzx ebx, byte [edi + str.0123456789abcdefFILEDLG95_Handle_GetFilePath]
mov edi, eax
and eax, 0xf
shr di, 4
movzx eax, byte [eax + str.0123456789abcdefFILEDLG95_Handle_GetFilePath]
and edi, 0xf
mov byte [ecx - 3], bl
movzx ebx, byte [edi + str.0123456789abcdefFILEDLG95_Handle_GetFilePath]
mov byte [ecx - 1], al
mov byte [ecx - 2], bl
jmp 0x6904ca40
mov edi, 0x225c
add ecx, 2
mov word [ecx - 2], di
jmp 0x6904ca40
mov eax, 0x725c
add ecx, 2
mov word [ecx - 2], ax
jmp 0x6904ca40
mov eax, 0x745c
add ecx, 2
mov word [ecx - 2], ax
jmp 0x6904ca40
mov dword [esp + 0xc], str._nSoftwareMicrosoftWindowsCurrentVersionExplorerComDlg32LastVisitedMRU
mov dword [esp + 8], str.FILEDLG95_OnOpenMultipleFiles
mov dword [esp + 4], 0x6907604c
mov dword [esp], 3
call fcn.69044e10
jmp 0x6904ccf6
mov eax, dword [ebp - 0x75c]
mov dword [esp + 4], 0xfffffda5
mov dword [esp], eax
call fcn.6904b1d0
mov dword [esp], edi
call dword [sym.imp.shell32.dll_ILFree]
sub esp, 4
jmp 0x6904c7fd
mov eax, 0x69078696
jmp 0x6904cc79
mov esi, dword [ebp - 0x764]
mov eax, dword [0x6908d004]
mov dword [esp + 0xc], 0x40
mov dword [esp + 4], 0x7a
mov dword [esp + 8], esi
mov dword [esp], eax
call dword [sym.imp.user32.dll_LoadStringW]
sub esp, 0x10
mov dword [esp + 0xc], 0x30
mov eax, dword [ebx + 0x10]
mov dword [esp + 4], esi
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x75c]
mov dword [esp], eax
call dword [sym.imp.user32.dll_MessageBoxW]
sub esp, 0x10
jmp 0x6904c93f
mov byte [ecx], 0x22
mov edi, dword [ebp - 0x768]
test eax, eax
jle 0x6904dd4d
mov edx, 0x2e2e
mov byte [ecx + 3], 0x2e
lea eax, [ecx + 4]
mov word [ecx + 1], dx
mov byte [eax], 0
lea eax, [ebp - 0x338]
mov dword [esp], eax
call fcn.69075320
mov edx, eax
jmp 0x6904cfa9
cmp esi, 3
jne 0x6904cbc0
mov eax, dword [ebp - 0x760]
mov eax, dword [eax + 0x38]
test eax, eax
je 0x6904cbc0
mov edx, dword [eax]
mov dword [esp], eax
call dword [edx + 0x20]
sub esp, 4
jmp 0x6904cbc0
mov byte [ecx], al
add ecx, 1
jmp 0x6904ca40
mov eax, dword [ebp - 0x768]
mov dword [esp], eax
call dword [sym.imp.shlwapi.dll_PathFileExistsW]
sub esp, 4
test eax, eax
jne 0x6904e71f
mov eax, dword [ebp - 0x760]
mov esi, dword [eax]
mov ebx, dword [esi + 0x34]
mov dword [ebp - 0x764], ebx
test byte [eax + 0x70], 1
jne 0x6904d3b4
lea esi, [esi]
nop
test dword [ebp - 0x764], 0x2000
je 0x6904d3b4
mov eax, dword [ebp - 0x768]
mov dword [esp], eax
call dword [sym.imp.shlwapi.dll_PathFileExistsW]
sub esp, 4
test eax, eax
je 0x6904e78c
mov eax, dword [ebp - 0x760]
mov esi, dword [eax]
mov eax, dword [esi + 0x34]
mov dword [ebp - 0x764], eax
jmp 0x6904d3b4
mov ebx, dword [ebp - 0x760]
mov eax, dword [esi + 0x1c]
mov ebx, dword [ebx + 4]
test eax, eax
je 0x6904d960
test ebx, ebx
je 0x6904deb0
mov ebx, dword [ebp - 0x768]
cmp ecx, 1
ja 0x6904d915
jmp 0x6904e6a1
sub ecx, 1
add eax, 2
add ebx, 2
mov word [eax - 2], dx
cmp ecx, 1
je 0x6904d91a
movzx edx, word [ebx]
test dx, dx
jne 0x6904d900
xor ebx, ebx
mov word [eax], bx
mov eax, dword [esi + 0x34]
mov dword [ebp - 0x764], eax
test dword [ebp - 0x764], 0x200
je 0x6904df09
mov eax, dword [esi + 0x1c]
cmp word [eax], 0
je 0x6904d951
lea esi, [esi]
add eax, 2
cmp word [eax], 0
jne 0x6904d948
xor ecx, ecx
mov word [eax + 2], cx
mov eax, dword [ebp - 0x760]
mov ebx, dword [eax + 4]
test ebx, ebx
je 0x6904df17
mov esi, dword [ebp - 0x768]
mov dword [esp], esi
call dword [sym.imp.shlwapi.dll_PathFindFileNameW]
mov ebx, dword [ebp - 0x760]
sub eax, esi
sub esp, 4
mov edx, dword [ebx]
sar eax, 1
mov word [edx + 0x38], ax
mov eax, dword [ebp - 0x774]
mov dword [esp], esi
call eax
movzx edx, word [eax]
sub esp, 4
test dx, dx
je 0x6904d9a7
sub eax, esi
sar eax, 1
lea edx, [eax + 1]
mov eax, dword [ebp - 0x760]
mov eax, dword [eax]
mov word [eax + 0x3a], dx
mov eax, dword [ebp - 0x760]
mov ebx, dword [eax]
mov edx, dword [ebx + 0x10]
test edx, edx
je 0x6904da3a
mov ecx, dword [sym.imp.kernel32.dll_WideCharToMultiByte]
mov dword [esp + 0x1c], 0
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], 0xffffffff
mov eax, dword [eax + 0x54]
mov dword [ebp - 0x764], ecx
mov dword [esp + 8], eax
mov dword [esp + 4], 0
mov dword [esp], 0
call ecx
mov esi, eax
mov eax, dword [ebx + 0x10]
sub esp, 0x20
mov dword [ebp - 0x770], eax
mov dword [esp], eax
call dword [sym.imp.ucrtbase.dll_strlen]
mov ecx, dword [ebp - 0x764]
add eax, 1
lea edx, [esi + eax]
cmp edx, dword [ebx + 0x14]
jbe 0x6904e655
mov edx, dword [ebp - 0x760]
mov eax, dword [ebp - 0x75c]
call fcn.6904b340
test eax, eax
je 0x6904c7e8
mov dword [ebp - 0x738], 0
lea ebx, [ebp - 0x338]
mov dword [esp], 0
call dword [sym.imp.kernel32.dll_GetModuleHandleW]
sub esp, 4
mov dword [esp + 8], 0x104
mov dword [esp + 4], ebx
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_GetModuleFileNameW]
sub esp, 0xc
test eax, eax
jne 0x6904e3d7
movzx eax, byte [0x6907604c]
test al, 4
jne 0x6904e835
test al, 8
jne 0x6904e6ba
mov ebx, dword [ebp - 0x75c]
jmp 0x6904ce96
mov esi, dword [ebp - 0x770]
jmp 0x6904cae1
mov esi, dword [ebp - 0x760]
mov edx, dword [esi + 0x60]
test byte [eax + 0x34], 0xe0
je 0x6904cbec
mov dword [esp + 0xc], 0xffffffff
mov dword [esp + 8], 0
mov dword [esp + 4], 0xb1
mov dword [esp], edx
call dword [sym.imp.user32.dll_SendMessageW]
sub esp, 0x10
jmp 0x6904c7e8
mov edx, 0x69078696
jmp 0x6904cfa9
mov eax, 2
jmp 0x6904cd7e
or dword [eax + 0x34], 1
jmp 0x6904d111
test byte [0x6907604c], 8
je 0x6904d4ca
mov eax, dword [ebp - 0x768]
shr eax, 0x10
je 0x6904e5ef
mov ebx, dword [ebp - 0x768]
mov dword [esp + 4], 0xffffffff
mov dword [esp], ebx
call dword [sym.imp.kernel32.dll_IsBadStringPtrW]
mov ecx, eax
sub esp, 8
mov eax, 0x6907869d
test ecx, ecx
jne 0x6904d4a2
movzx eax, word [ebp - 0x540]
test ax, ax
je 0x6904e701
lea esi, [esi]
mov edx, ecx
lea ecx, [ecx + 1]
cmp word [ebx + edx*2 + 2], 0
jne 0x6904db90
mov ecx, 0x224c
mov dword [ebp - 0x764], esi
lea ebx, [ebp - 0x336]
mov word [ebp - 0x338], cx
mov ecx, dword [ebp - 0x768]
mov esi, ecx
jmp 0x6904dbfe
cmp ax, 9
je 0x6904e0c8
cmp ax, 0xa
jne 0x6904e046
mov eax, 0x6e5c
add ebx, 2
mov word [ebx - 2], ax
lea ecx, [edx - 1]
test edx, edx
jle 0x6904d470
lea eax, [ebp - 0x216]
cmp ebx, eax
ja 0x6904d470
movzx eax, word [esi]
mov edx, ecx
add esi, 2
cmp ax, 0xd
je 0x6904e0b1
jbe 0x6904dbc0
cmp ax, 0x22
je 0x6904e0a0
cmp ax, 0x5c
jne 0x6904e039
mov ecx, 0x5c5c
add ebx, 2
mov word [ebx - 2], cx
jmp 0x6904dbe0
test byte [0x6907604c], 8
je 0x6904d0b4
mov eax, dword [ebp - 0x768]
shr eax, 0x10
je 0x6904e5d3
mov ebx, dword [ebp - 0x768]
mov dword [esp + 4], 0xffffffff
mov dword [esp], ebx
call dword [sym.imp.kernel32.dll_IsBadStringPtrW]
mov ecx, eax
sub esp, 8
mov eax, 0x6907869d
test ecx, ecx
jne 0x6904d08c
movzx eax, word [ebp - 0x540]
test ax, ax
je 0x6904e6e3
lea esi, [esi]
mov edx, ecx
lea ecx, [ecx + 1]
cmp word [ebx + edx*2 + 2], 0
jne 0x6904dc88
mov ecx, 0x224c
mov esi, dword [ebp - 0x768]
lea ebx, [ebp - 0x336]
mov word [ebp - 0x338], cx
jmp 0x6904dcee
cmp ax, 9
je 0x6904e028
cmp ax, 0xa
jne 0x6904dfbc
mov eax, 0x6e5c
add ebx, 2
mov word [ebx - 2], ax
lea ecx, [edx - 1]
test edx, edx
jle 0x6904d060
lea eax, [ebp - 0x216]
cmp ebx, eax
ja 0x6904d060
movzx eax, word [esi]
mov edx, ecx
add esi, 2
cmp ax, 0xd
je 0x6904df9e
jbe 0x6904dcb0
cmp ax, 0x22
je 0x6904e010
cmp ax, 0x5c
jne 0x6904dfaf
mov eax, 0x5c5c
add ebx, 2
mov word [ebx - 2], ax
jmp 0x6904dcd0
mov dword [ebp - 0x76c], 0
mov ebx, 1
jmp 0x6904cdd4
mov edx, 0x224c
mov byte [ebp - 0x336], 0x22
lea ecx, [ebp - 0x336]
mov word [ebp - 0x338], dx
lea eax, [ecx + 1]
jmp 0x6904d7f9
mov eax, ebx
shr eax, 0x10
je 0x6904e63b
mov dword [esp + 4], 0xffffffff
mov dword [esp], ebx
call dword [sym.imp.kernel32.dll_IsBadStringPtrW]
mov edx, 0x6907869d
sub esp, 8
test eax, eax
jne 0x6904de73
cmp word [ebx], 0
je 0x6904e804
nop
mov edx, eax
lea eax, [eax + 1]
cmp word [ebx + edx*2 + 2], 0
jne 0x6904dd90
mov edi, 0x224c
lea eax, [ebp - 0x336]
mov dword [ebp - 0x770], esi
mov ecx, ebx
mov word [ebp - 0x338], di
mov esi, eax
mov dword [ebp - 0x774], ebx
jmp 0x6904de03
cmp ax, 9
je 0x6904e320
cmp ax, 0xa
jne 0x6904e2b2
mov eax, 0x6e5c
add esi, 2
mov word [esi - 2], ax
lea esi, [esi]
nop
lea eax, [edx - 1]
test edx, edx
jle 0x6904de37
lea ebx, [ebp - 0x216]
cmp esi, ebx
ja 0x6904de37
mov edx, eax
movzx eax, word [ecx]
add ecx, 2
cmp ax, 0xd
je 0x6904e294
jbe 0x6904ddc8
cmp ax, 0x22
je 0x6904e308
cmp ax, 0x5c
jne 0x6904e2a5
mov eax, 0x5c5c
add esi, 2
mov word [esi - 2], ax
jmp 0x6904ddf0
mov ecx, esi
mov ebx, dword [ebp - 0x774]
mov esi, dword [ebp - 0x770]
mov byte [ecx], 0x22
test eax, eax
jle 0x6904e81c
mov edi, 0x2e2e
mov byte [ecx + 3], 0x2e
lea eax, [ecx + 4]
mov word [ecx + 1], di
mov byte [eax], 0
lea eax, [ebp - 0x338]
mov dword [esp], eax
call fcn.69075320
mov edx, eax
mov dword [esp + 0x10], edx
mov dword [esp + 0xc], 0x69078bfa
mov dword [esp + 8], str.FILEDLG95_FILETYPE_SearchExt
mov dword [esp + 4], 0x6907604c
mov dword [esp], 3
call fcn.69044e10
cmp dword [ebp - 0x768], 0xffffffff
jne 0x6904d5ca
jmp 0x6904cae1
mov dword [esp + 0x10], eax
mov eax, dword [ebp - 0x768]
mov dword [esp + 0x1c], 0
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], ecx
mov dword [esp + 0xc], 0xffffffff
mov dword [esp + 8], eax
mov dword [esp + 4], 0
mov dword [esp], 0
call dword [sym.imp.kernel32.dll_WideCharToMultiByte]
sub esp, 0x20
test byte [esi + 0x35], 2
je 0x6904df09
mov ebx, dword [esi + 0x1c]
mov dword [esp], ebx
call dword [sym.imp.ucrtbase.dll_strlen]
mov byte [ebx + eax + 1], 0
mov eax, dword [ebp - 0x760]
mov ebx, dword [eax + 4]
jmp 0x6904d960
mov eax, dword [ebp - 0x768]
lea ebx, [ebp - 0x338]
mov dword [esp + 0x1c], 0
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], 0x104
mov dword [esp + 0x10], ebx
mov dword [esp + 0xc], 0xffffffff
mov dword [esp + 8], eax
mov dword [esp + 4], 0
mov dword [esp], 0
call dword [sym.imp.kernel32.dll_WideCharToMultiByte]
sub esp, 0x20
mov dword [esp], ebx
call dword [sym.imp.shlwapi.dll_PathFindFileNameA]
mov esi, dword [ebp - 0x760]
sub esp, 4
sub eax, ebx
mov edx, dword [esi]
mov word [edx + 0x38], ax
mov dword [esp], ebx
call dword [sym.imp.shlwapi.dll_PathFindExtensionA]
xor edx, edx
sub esp, 4
cmp byte [eax], 0
je 0x6904d9a7
sub eax, ebx
lea edx, [eax + 1]
jmp 0x6904d9a7
mov eax, 0x725c
add ebx, 2
mov word [ebx - 2], ax
jmp 0x6904dcd0
lea ecx, [eax - 0x20]
cmp cx, 0x5e
jbe 0x6904e631
mov ecx, eax
mov byte [ebx], 0x5c
add ebx, 5
shr cx, 0xc
movzx ecx, cx
movzx ecx, byte [ecx + str.0123456789abcdefFILEDLG95_Handle_GetFilePath]
mov byte [ebx - 4], cl
mov ecx, eax
shr cx, 8
and ecx, 0xf
movzx ecx, byte [ecx + str.0123456789abcdefFILEDLG95_Handle_GetFilePath]
mov byte [ebx - 3], cl
mov ecx, eax
and eax, 0xf
shr cx, 4
movzx eax, byte [eax + str.0123456789abcdefFILEDLG95_Handle_GetFilePath]
and ecx, 0xf
movzx ecx, byte [ecx + str.0123456789abcdefFILEDLG95_Handle_GetFilePath]
mov byte [ebx - 1], al
mov byte [ebx - 2], cl
jmp 0x6904dcd0
mov eax, 0x225c
add ebx, 2
mov word [ebx - 2], ax
jmp 0x6904dcd0
mov eax, 0x745c
add ebx, 2
mov word [ebx - 2], ax
jmp 0x6904dcd0
lea ecx, [eax - 0x20]
cmp cx, 0x5e
jbe 0x6904e627
mov ecx, eax
mov byte [ebx], 0x5c
add ebx, 5
shr cx, 0xc
movzx ecx, cx
movzx ecx, byte [ecx + str.0123456789abcdefFILEDLG95_Handle_GetFilePath]
mov byte [ebx - 4], cl
mov ecx, eax
shr cx, 8
and ecx, 0xf
movzx ecx, byte [ecx + str.0123456789abcdefFILEDLG95_Handle_GetFilePath]
mov byte [ebx - 3], cl
mov ecx, eax
and eax, 0xf
shr cx, 4
movzx eax, byte [eax + str.0123456789abcdefFILEDLG95_Handle_GetFilePath]
and ecx, 0xf
movzx ecx, byte [ecx + str.0123456789abcdefFILEDLG95_Handle_GetFilePath]
mov byte [ebx - 1], al
mov byte [ebx - 2], cl
jmp 0x6904dbe0
mov eax, 0x225c
add ebx, 2
mov word [ebx - 2], ax
jmp 0x6904dbe0
mov eax, 0x725c
add ebx, 2
mov word [ebx - 2], ax
jmp 0x6904dbe0
mov eax, 0x745c
add ebx, 2
mov word [ebx - 2], ax
jmp 0x6904dbe0
lea eax, [ebp - 0x734]
mov edx, dword [sym.imp.user32.dll_LoadStringW]
mov dword [esp + 0xc], 0x64
lea ebx, [ebp - 0x66c]
mov dword [esp + 8], eax
mov eax, dword [0x6908d004]
mov dword [ebp - 0x760], edx
mov dword [esp + 4], 0x72
mov dword [esp], eax
call edx
mov eax, dword [0x6908d004]
mov edx, dword [ebp - 0x760]
sub esp, 0x10
mov dword [esp + 0xc], 0x64
mov dword [esp + 8], ebx
mov dword [esp + 4], 0x73
mov dword [esp], eax
call edx
lea ecx, [ebp - 0x338]
xor eax, eax
mov dword [ebp - 0x764], ecx
sub esp, 0x10
lea esi, [esi]
nop
movzx edx, word [edi + eax]
mov word [ecx + eax], dx
add eax, 2
test dx, dx
jne 0x6904e150
cmp word [ebp - 0x338], 0
mov edx, dword [ebp - 0x764]
je 0x6904e179
add edx, 2
cmp word [edx], 0
jne 0x6904e170
xor eax, eax
mov ecx, 0xa
jmp 0x6904e18f
movzx ecx, word [eax + 0x69078b8c]
mov word [edx + eax], cx
add eax, 2
test cx, cx
jne 0x6904e188
cmp word [ebp - 0x338], 0
mov edx, dword [ebp - 0x764]
je 0x6904e1b9
lea esi, [esi]
nop
add edx, 2
cmp word [edx], 0
jne 0x6904e1b0
xor eax, eax
lea esi, [esi]
nop
movzx ecx, word [ebp + eax - 0x734]
mov word [edx + eax], cx
add eax, 2
test cx, cx
jne 0x6904e1c0
cmp word [ebp - 0x338], 0
mov edx, dword [ebp - 0x764]
je 0x6904e1f1
lea esi, [esi]
add edx, 2
cmp word [edx], 0
jne 0x6904e1e8
xor eax, eax
mov ecx, 0xa
jmp 0x6904e207
movzx ecx, word [eax + 0x69078b8c]
mov word [edx + eax], cx
add eax, 2
test cx, cx
jne 0x6904e200
cmp word [ebp - 0x338], 0
mov eax, dword [ebp - 0x764]
je 0x6904e231
lea esi, [esi]
nop
add eax, 2
cmp word [eax], 0
jne 0x6904e228
mov edx, dword [ebp - 0x770]
lea esi, [esi]
nop
movzx ecx, word [ebx + edx]
mov word [eax + edx], cx
add edx, 2
test cx, cx
jne 0x6904e240
mov dword [esp + 0xc], 0x30
mov eax, dword [esi + 0x10]
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x764]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x75c]
mov dword [esp], eax
call dword [sym.imp.user32.dll_MessageBoxW]
sub esp, 0x10
jmp 0x6904c7e8
mov eax, dword [ebp - 0x760]
mov eax, dword [eax]
or dword [eax + 0x34], 0x400
jmp 0x6904d390
mov eax, 0x725c
add esi, 2
mov word [esi - 2], ax
jmp 0x6904ddf0
lea edi, [eax - 0x20]
cmp di, 0x5e
jbe 0x6904e6b0
mov edi, eax
mov byte [esi], 0x5c
add esi, 5
shr di, 0xc
movzx edi, di
movzx ebx, byte [edi + str.0123456789abcdefFILEDLG95_Handle_GetFilePath]
mov edi, eax
shr di, 8
and edi, 0xf
mov byte [esi - 4], bl
movzx ebx, byte [edi + str.0123456789abcdefFILEDLG95_Handle_GetFilePath]
mov edi, eax
and eax, 0xf
shr di, 4
movzx eax, byte [eax + str.0123456789abcdefFILEDLG95_Handle_GetFilePath]
and edi, 0xf
mov byte [esi - 3], bl
movzx ebx, byte [edi + str.0123456789abcdefFILEDLG95_Handle_GetFilePath]
mov byte [esi - 1], al
mov byte [esi - 2], bl
jmp 0x6904ddf0
mov eax, 0x225c
add esi, 2
mov word [esi - 2], ax
jmp 0x6904ddf0
mov eax, 0x745c
add esi, 2
mov word [esi - 2], ax
jmp 0x6904ddf0
mov eax, dword [ebp - 0x768]
mov dword [esp], eax
call dword [sym.imp.shlwapi.dll_PathFileExistsW]
sub esp, 4
test eax, eax
jne 0x6904d34c
mov eax, dword [ebp - 0x778]
xor esi, esi
mov word [ebp + eax*2 - 0x540], si
jmp 0x6904d34c
cmp word [ebp - 0x540], 0
mov edx, dword [ebp - 0x768]
je 0x6904e379
add edx, 2
cmp word [edx], 0
jne 0x6904e370
xor eax, eax
mov ebx, 0x2e
jmp 0x6904e38f
movzx ebx, word [eax + 0x69078c1e]
mov word [edx + eax], bx
add eax, 2
test bx, bx
jne 0x6904e388
cmp word [ebp - 0x540], 0
mov eax, dword [ebp - 0x768]
je 0x6904e3b9
lea esi, [esi]
nop
add eax, 2
cmp word [eax], 0
jne 0x6904e3b0
mov edx, esi
jmp 0x6904e3c3
movzx ecx, word [edx]
add eax, 2
add edx, 2
mov word [eax - 2], cx
test cx, cx
jne 0x6904e3c0
jmp 0x6904d31c
mov dword [esp], ebx
mov esi, dword [sym.imp.ucrtbase.dll_wcsrchr]
mov dword [esp + 4], 0x5c
call esi
lea ecx, [ebp - 0x744]
test eax, eax
lea edx, [eax + 2]
cmovne ebx, edx
xor edx, edx
mov eax, ebx
call fcn.69044f20
mov word [ebp - 0x760], ax
test ax, ax
je 0x6904e57f
movzx eax, word [ebp - 0x760]
mov dword [esp + 4], 0x5c
mov word [ebp - 0x738], ax
mov eax, dword [ebp - 0x768]
mov dword [esp], eax
call esi
sub eax, dword [ebp - 0x768]
mov edx, eax
mov dword [ebp - 0x764], eax
mov eax, ebx
sar edx, 1
cmp word [ebx], 0
je 0x6904e459
lea esi, [esi]
add eax, 2
cmp word [eax], 0
jne 0x6904e450
sub eax, ebx
mov dword [esp + 4], 0
sar eax, 1
lea esi, [edx + eax + 2]
add esi, esi
mov dword [esp + 8], esi
mov eax, dword fs:[0x18]
mov eax, dword [eax + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
mov eax, dword [ebp - 0x76c]
call eax
sub esp, 0xc
mov edx, eax
test eax, eax
je 0x6904e57f
xor eax, eax
lea esi, [esi]
movzx ecx, word [ebx + eax]
mov word [edx + eax], cx
add eax, 2
test cx, cx
jne 0x6904e498
cmp word [edx], 0
mov eax, edx
je 0x6904e4b9
add eax, 2
cmp word [eax], 0
jne 0x6904e4b0
mov ebx, dword [ebp - 0x764]
add eax, 2
mov dword [ebp - 0x76c], edx
mov dword [esp], eax
mov dword [esp + 8], ebx
mov ebx, dword [ebp - 0x768]
mov dword [esp + 4], ebx
call sub.ucrtbase.dll_memcpy
mov edx, dword [ebp - 0x76c]
xor eax, eax
mov word [edx + esi - 2], ax
mov eax, dword [ebp - 0x744]
mov dword [esp + 0x14], esi
lea esi, [ebp - 0x738]
mov dword [esp], eax
mov eax, dword [sym.imp.advapi32.dll_RegSetValueExW]
mov dword [esp + 0x10], edx
mov dword [ebp - 0x764], edx
mov dword [esp + 0xc], 3
mov dword [esp + 8], 0
mov dword [esp + 4], esi
mov dword [ebp - 0x76c], eax
call eax
mov edx, dword [ebp - 0x764]
sub esp, 0x18
test eax, eax
mov dword [ebp - 0x768], eax
je 0x6904e8b5
test byte [0x6907604c], 4
jne 0x6904ea28
mov dword [esp + 8], edx
mov dword [esp + 4], 0
mov eax, dword fs:[0x18]
mov eax, dword [eax + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
call edi
sub esp, 0xc
mov eax, dword [ebp - 0x744]
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_RegCloseKey]
sub esp, 4
movzx eax, byte [0x6907604c]
jmp 0x6904daa2
mov eax, dword [ebp - 0x75c]
mov dword [esp + 4], 0xfffffda5
mov dword [esp], eax
call fcn.6904b1d0
mov eax, dword [ebp - 0x760]
mov dword [esp + 0xc], 0x69078c0d
mov dword [esp + 8], 0
mov dword [esp + 4], 0xc
mov eax, dword [eax + 0x60]
mov dword [esp], eax
call dword [sym.imp.user32.dll_SendMessageA]
sub esp, 0x10
jmp 0x6904cbc0
movzx eax, word [ebp - 0x768]
mov dword [esp], 0x690786a7
mov dword [esp + 4], eax
call fcn.69044a60
jmp 0x6904d08c
movzx eax, word [ebp - 0x768]
mov dword [esp], 0x690786a7
mov dword [esp + 4], eax
call fcn.69044a60
jmp 0x6904d4a2
mov eax, 2
jmp 0x6904d526
cmp ecx, eax
jne 0x6904d8d0
mov eax, 1
jmp 0x6904d416
mov byte [ebx], al
add ebx, 1
jmp 0x6904dbe0
mov byte [ebx], al
add ebx, 1
jmp 0x6904dcd0
movzx eax, bx
mov dword [esp], 0x690786a7
mov dword [esp + 4], eax
call fcn.69044a60
mov edx, eax
jmp 0x6904de73
add eax, dword [ebp - 0x770]
mov dword [esp + 0x1c], 0
mov dword [esp + 0x10], eax
mov eax, dword [ebp - 0x760]
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], esi
mov dword [esp + 0xc], 0xffffffff
mov eax, dword [eax + 0x54]
mov dword [esp + 4], 0
mov dword [esp + 8], eax
mov dword [esp], 0
call ecx
sub esp, 0x20
jmp 0x6904da3a
test ecx, ecx
je 0x6904d928
jmp 0x6904d91a
mov byte [esi], al
add esi, 1
jmp 0x6904ddf0
mov dword [esp + 0xc], str.close_n
mov dword [esp + 8], str.FILEDLG95_OnOpen
mov dword [esp + 4], 0x6907604c
mov dword [esp], 3
call fcn.69044e10
jmp 0x6904daaa
mov word [ebp - 0x338], 0x224c
lea ebx, [ebp - 0x336]
mov byte [ebp - 0x336], 0x22
lea eax, [ebx + 1]
jmp 0x6904d07b
mov word [ebp - 0x338], 0x224c
lea ebx, [ebp - 0x336]
mov byte [ebp - 0x336], 0x22
lea eax, [ebx + 1]
jmp 0x6904d491
mov eax, dword [0x6908d004]
lea ebx, [ebp - 0x338]
mov dword [esp + 0xc], 0x64
mov dword [esp + 8], ebx
mov dword [esp + 4], 0x77
mov dword [esp], eax
call dword [sym.imp.user32.dll_LoadStringW]
mov eax, dword [ebp - 0x760]
sub esp, 0x10
mov dword [esp + 0xc], 0x34
mov eax, dword [eax + 0x10]
mov dword [esp + 4], ebx
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x75c]
mov dword [esp], eax
call dword [sym.imp.user32.dll_MessageBoxW]
sub esp, 0x10
cmp eax, 7
je 0x6904c7e8
cmp eax, 2
jne 0x6904d86c
jmp 0x6904c7e8
mov eax, dword [0x6908d004]
lea ebx, [ebp - 0x338]
mov dword [esp + 0xc], 0x64
mov dword [esp + 8], ebx
mov dword [esp + 4], 0x74
mov dword [esp], eax
call dword [sym.imp.user32.dll_LoadStringW]
mov esi, dword [ebp - 0x760]
sub esp, 0x10
mov dword [esp + 0xc], 0x34
mov eax, dword [esi + 0x10]
mov dword [esp + 4], ebx
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x75c]
mov dword [esp], eax
call dword [sym.imp.user32.dll_MessageBoxW]
sub esp, 0x10
cmp eax, 7
je 0x6904c7e8
cmp eax, 2
je 0x6904c7e8
mov esi, dword [esi]
mov eax, dword [esi + 0x34]
mov dword [ebp - 0x764], eax
jmp 0x6904d3b4
mov word [ebp - 0x338], 0x224c
lea eax, [ebp - 0x336]
mov byte [ebp - 0x336], 0x22
mov ecx, eax
mov eax, ecx
add eax, 1
jmp 0x6904de60
mov dword [ebp - 0x778], 0
jmp 0x6904d177
mov eax, dword fs:[0x18]
mov eax, dword [eax + 0x34]
mov dword [esp + 0xc], str.GotModuleFileName_failed:__ld_n
mov dword [esp + 8], str.FILEDLG95_MRU_save_filename
mov dword [esp + 0x10], eax
mov dword [esp + 4], 0x6907604c
mov dword [esp], 2
call fcn.69044e10
movzx eax, byte [0x6907604c]
jmp 0x6904daa2
mov eax, 2
jmp 0x6904d2c6
mov dword [ebp - 0x764], edx
mov dword [esp + 4], 0x3f
mov dword [esp], ecx
call ebx
mov edx, dword [ebp - 0x764]
test eax, eax
jne 0x6904d27f
xor ecx, ecx
movzx eax, word [edx + ecx + 2]
mov word [esi + ecx], ax
add ecx, 2
test ax, ax
jne 0x6904e89f
jmp 0x6904d310
mov dword [esp + 8], edx
lea esi, [ebp - 0x734]
mov dword [esp + 4], 0
mov eax, dword fs:[0x18]
mov eax, dword [eax + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
call edi
lea eax, [ebp - 0x740]
mov dword [ebp - 0x740], 0x40
sub esp, 0xc
mov dword [esp + 0x18], eax
lea eax, [ebp - 0x73c]
mov dword [esp + 0x10], eax
mov eax, dword [ebp - 0x744]
mov dword [esp + 0x14], esi
mov dword [esp + 0xc], 0xffff
mov dword [esp + 8], str.MRUList
mov dword [esp + 4], 0
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_RegGetValueW]
sub esp, 0x1c
test eax, eax
jne 0x6904e97c
cmp dword [ebp - 0x73c], 1
je 0x6904eb03
test byte [0x6907604c], 4
je 0x6904e56d
mov dword [esp + 0x14], eax
mov eax, dword [ebp - 0x73c]
mov dword [esp + 0xc], str.Error_getting_MRUList_data:_type:__ld__ret:__ld_n
mov dword [esp + 0x10], eax
mov dword [esp + 8], str.FILEDLG95_MRU_save_filename
mov dword [esp + 4], 0x6907604c
mov dword [esp], 2
call fcn.69044e10
jmp 0x6904e56d
cmp eax, 2
jne 0x6904e938
mov word [ebp - 0x66a], 0
movzx eax, word [ebp - 0x760]
mov word [ebp - 0x66c], ax
lea ebx, [ebp - 0x66c]
mov eax, ebx
add eax, 2
cmp word [eax], 0
jne 0x6904e9a0
sub eax, ebx
mov dword [esp + 0x10], ebx
add eax, 2
mov dword [esp + 0xc], 1
mov dword [esp + 0x14], eax
mov eax, dword [ebp - 0x744]
mov dword [esp + 8], 0
mov dword [esp], eax
mov eax, dword [ebp - 0x76c]
mov dword [esp + 4], str.MRUList
call eax
mov edx, eax
sub esp, 0x18
movzx eax, byte [0x6907604c]
test edx, edx
je 0x6904daa2
test al, 4
je 0x6904e56d
mov dword [esp + 0x10], edx
mov dword [esp + 0xc], str.Error_saving_MRUList_data:__ld_n
mov dword [esp + 8], str.FILEDLG95_MRU_save_filename
mov dword [esp + 4], 0x6907604c
mov dword [esp], 2
call fcn.69044e10
jmp 0x6904e56d
mov eax, esi
mov dword [ebp - 0x760], edx
shr eax, 0x10
je 0x6904ec5a
mov dword [esp + 4], 0xffffffff
mov dword [esp], esi
call dword [sym.imp.kernel32.dll_IsBadStringPtrW]
mov edx, dword [ebp - 0x760]
test eax, eax
push ebx
push ebx
jne 0x6904ec75
cmp word [ebp - 0x738], 0
je 0x6904ec7c
mov ecx, eax
lea eax, [eax + 1]
cmp word [esi + ecx*2 + 2], 0
jne 0x6904ea68
mov dword [ebp - 0x760], ecx
lea eax, [ebp - 0x66a]
mov word [ebp - 0x66c], 0x224c
jmp 0x6904eacd
cmp cx, 9
je 0x6904eb64
cmp cx, 0xa
jne 0x6904eb7a
mov word [eax], 0x6e5c
add eax, 2
mov ebx, dword [ebp - 0x760]
lea ecx, [ebx - 1]
test ebx, ebx
jle 0x6904ebe2
lea ebx, [ebp - 0x54a]
cmp eax, ebx
ja 0x6904ebe2
mov dword [ebp - 0x760], ecx
movzx ecx, word [esi]
add esi, 2
cmp cx, 0xd
je 0x6904eaf9
jbe 0x6904ea8c
cmp cx, 0x22
je 0x6904ebcb
cmp cx, 0x5c
jne 0x6904eb71
mov word [eax], 0x5c5c
add eax, 2
jmp 0x6904eaa8
mov word [eax], 0x725c
add eax, 2
jmp 0x6904eaa8
movzx eax, word [ebp - 0x760]
movzx edx, word [ebp - 0x734]
mov word [ebp - 0x66c], ax
test dx, dx
je 0x6904ec9a
mov eax, esi
lea ecx, [ebp - 0x66a]
cmp word [ebp - 0x760], dx
je 0x6904eb38
mov word [ecx], dx
add ecx, 2
movzx edx, word [eax + 2]
add eax, 2
test dx, dx
jne 0x6904eb29
mov word [ecx], 0
cmp word [ebp - 0x66c], 0
jne 0x6904e998
lea ebx, [ebp - 0x66c]
mov eax, ebx
jmp 0x6904e9a9
mov word [eax], 0x745c
add eax, 2
jmp 0x6904eaa8
lea ebx, [ecx - 0x20]
cmp bx, 0x5e
jbe 0x6904ebd8
mov ebx, ecx
mov byte [eax], 0x5c
add eax, 5
shr bx, 0xc
movzx ebx, bx
movzx ebx, byte [ebx + str.0123456789abcdefFILEDLG95_Handle_GetFilePath]
mov byte [eax - 4], bl
mov ebx, ecx
shr bx, 8
and ebx, 0xf
movzx ebx, byte [ebx + str.0123456789abcdefFILEDLG95_Handle_GetFilePath]
mov byte [eax - 3], bl
mov ebx, ecx
and ecx, 0xf
shr bx, 4
movzx ecx, byte [ecx + str.0123456789abcdefFILEDLG95_Handle_GetFilePath]
and ebx, 0xf
movzx ebx, byte [ebx + str.0123456789abcdefFILEDLG95_Handle_GetFilePath]
mov byte [eax - 1], cl
mov byte [eax - 2], bl
jmp 0x6904eaa8
mov word [eax], 0x225c
add eax, 2
jmp 0x6904eaa8
mov byte [eax], cl
add eax, 1
jmp 0x6904eaa8
mov byte [eax], 0x22
test ecx, ecx
jle 0x6904ec92
mov word [eax + 1], 0x2e2e
lea ecx, [eax + 4]
mov byte [eax + 3], 0x2e
lea eax, [ebp - 0x66c]
mov byte [ecx], 0
mov dword [esp], eax
mov dword [ebp - 0x760], edx
call fcn.69075320
mov edx, dword [ebp - 0x760]
mov esi, dword [ebp - 0x768]
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], str.Error_saving_MRU_data_to_slot__s:__ld_n
mov dword [esp + 0x14], esi
mov dword [esp + 8], str.FILEDLG95_MRU_save_filename
mov dword [esp + 4], 0x6907604c
mov dword [esp], 2
mov dword [ebp - 0x760], edx
call fcn.69044e10
mov edx, dword [ebp - 0x760]
jmp 0x6904e54d
movzx esi, si
mov dword [esp], 0x690786a7
mov dword [esp + 4], esi
call fcn.69044a60
mov edx, dword [ebp - 0x760]
jmp 0x6904ec17
mov eax, 0x6907869d
jmp 0x6904ec17
mov word [ebp - 0x66c], 0x224c
lea eax, [ebp - 0x66a]
mov byte [ebp - 0x66a], 0x22
lea ecx, [eax + 1]
jmp 0x6904ebfa
lea ecx, [ebp - 0x66a]
jmp 0x6904eb44