Function at 0x401662
Capabilities:
Get common file path
Hide graphical window
Read file on windows
Write file on windows

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0x11c
mov ebx, dword [esp + 0x130]
mov ebp, dword [esp + 0x138]
jmp 0x40168c
mov esi, str.V3DSLicenseClass
lea edi, [esp + 0x5a]
mov ecx, 0x22
mov dword [esp + 0x7c], 0x30
rep movsb byte es:[edi], byte [esi]
lea edi, [esp + 0x88]
mov dword [esp + 0x80], 3
mov dword [esp + 0x84], 0x401450
mov eax, ecx
mov ecx, 9
rep stosd dword es:[edi], eax
mov dword [esp + 0x90], ebx
mov dword [esp + 4], 0x7f00
mov dword [esp], 0
call dword [sym.imp.USER32.dll_LoadCursorW]
mov edi, dword [sym.imp.USER32.dll_LoadIconW]
push edx
push edx
lea esi, [esp + 0x5a]
mov dword [esp], ebx
mov dword [esp + 0x98], eax
mov dword [esp + 0x9c], 6
mov dword [esp + 0xa0], 0
mov dword [esp + 0xa4], esi
mov dword [esp + 4], 0x65
call edi
push ecx
push ecx
mov dword [esp + 0xa8], eax
mov dword [esp + 4], 0x65
mov dword [esp], ebx
call edi
push edi
push edi
mov dword [esp + 0x94], eax
lea eax, [esp + 0x7c]
mov dword [esp], eax
call dword [sym.imp.USER32.dll_RegisterClassExW]
push edx
test ax, ax
jne 0x401772
mov dword [esp + 0xc], 0x30
mov dword [esp + 8], str.Error
mov dword [esp + 4], str.Window_Registration_Failed_
jmp 0x4017f2
mov dword [esp + 0x2c], 0
mov dword [esp + 0x28], ebx
mov dword [esp + 0x24], 0
mov dword [esp + 0x20], 0
mov dword [esp + 0x1c], 0xd4
mov dword [esp + 0x18], 0x219
mov dword [esp + 0x14], 0x32
mov dword [esp + 0x10], 0x46
mov dword [esp + 0xc], 0xca0000
mov dword [esp + 8], 0x404066
mov dword [esp + 4], esi
mov dword [esp], 0x208
call dword [sym.imp.USER32.dll_CreateWindowExW]
sub esp, 0x30
mov dword [esp + 0x48], eax
test eax, eax
jne 0x401807
mov dword [esp + 0xc], 0x30
mov dword [esp + 8], str.Error
mov dword [esp + 4], str.Window_Creation_Failed_
mov dword [esp], 0
call dword [sym.imp.USER32.dll_MessageBoxW]
sub esp, 0x10
jmp 0x401bdf
mov dword [esp + 4], 0x3a7e
mov dword [esp], 0x4034a0
call fcn.0040163c
mov dword [esp + 4], 0x4a1b
mov dword [esp], 0x403460
call fcn.0040163c
mov dword [esp + 4], 0xa26b
mov dword [esp], 0x403440
call fcn.0040163c
mov dword [esp + 4], 0x5b2c
mov dword [esp], 0x403428
call fcn.0040163c
mov dword [esp + 0x10], 0x408320
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], 0x801a
mov dword [esp], 0
call dword [sym.imp.SHELL32.dll_SHGetFolderPathW]
sub esp, 0x14
mov dword [esp + 4], 0x403460
mov dword [esp], 0x408320
call sub.msvcrt.dll_wcscat
mov eax, dword [sym.imp.USER32.dll_wsprintfW]
mov dword [esp + 0x54], 0
mov word [esp + 0x58], 0
mov dword [esp + 0xc], 0x403440
mov dword [esp + 8], 0x408320
mov dword [esp + 4], str._s_s
mov dword [esp], 0x405040
mov dword [esp + 0x4c], eax
call eax
mov dword [esp], 0x405040
mov esi, dword [sym.imp.msvcrt.dll__wfopen]
mov dword [esp + 4], 0x4040e2
call esi
mov ebx, eax
test eax, eax
je 0x401919
mov dword [esp + 0xc], eax
lea eax, [esp + 0x54]
mov dword [esp + 8], 3
mov dword [esp + 4], 2
mov dword [esp], eax
call sub.msvcrt.dll_fread
mov dword [esp], ebx
call sub.msvcrt.dll_fclose
mov dword [esp + 0xc], 0x403428
mov eax, dword [esp + 0x4c]
mov dword [esp + 8], 0x408320
mov dword [esp + 4], str._s_s
mov dword [esp], 0x405040
call eax
mov dword [esp + 4], 0x4040e6
mov dword [esp], 0x405040
call esi
mov ebx, eax
test eax, eax
jne 0x401972
mov dword [esp + 0xc], 0x30
mov dword [esp + 8], 0x4040ec
mov dword [esp + 4], str.File_not_found_
jmp 0x4017f2
mov dword [esp + 0xc], eax
mov dword [esp + 8], 0x10a
mov dword [esp + 4], 4
mov dword [esp], section..data
call sub.msvcrt.dll_fwrite
mov dword [esp], ebx
mov esi, eax
call sub.msvcrt.dll_fflush
mov dword [esp], ebx
call sub.msvcrt.dll_fclose
cmp esi, 0x10a
jne 0x401955
test ebp, ebp
lea ebx, [esp + 0xac]
je 0x401a60
mov esi, str.cough
mov ecx, 3
mov edi, ebx
rep movsd dword es:[edi], dword [esi]
cmp word [ebp], 0
je 0x401a60
cmp word [ebp], 0x20
jne 0x4019e0
add ebp, 2
jmp 0x4019d4
mov dword [esp], ebx
call sub.msvcrt.dll_wcslen
mov dword [esp + 4], ebx
mov dword [esp + 8], eax
mov dword [esp], ebp
call sub.msvcrt.dll_wcsncmp
test eax, eax
jne 0x401a4f
mov dword [esp], ebx
call sub.msvcrt.dll_wcslen
cmp word [ebp + eax*2], 0
jne 0x401a3f
mov eax, dword [0x4034d4]
mov dword [esp + 4], str._010u
mov dword [esp], ebx
mov dword [esp + 8], eax
mov eax, dword [esp + 0x4c]
call eax
mov dword [esp + 0xc], 0x30
mov dword [esp + 8], 0x404126
mov dword [esp + 4], ebx
jmp 0x4017f2
mov dword [esp], ebx
call sub.msvcrt.dll_wcslen
cmp word [ebp + eax*2], 0x20
je 0x401a0c
test word [ebp], 0xffdf
je 0x4019c9
add ebp, 2
jmp 0x401a4f
mov eax, dword [esp + 0x48]
mov dword [esp], eax
call dword [sym.imp.USER32.dll_GetDC]
push edi
mov esi, eax
mov dword [esp], 0x585858
call dword [sym.imp.GDI32.dll_CreateSolidBrush]
push ebp
mov dword [0x405024], eax
mov dword [esp], esi
mov dword [esp + 4], 0x5a
call dword [sym.imp.GDI32.dll_GetDeviceCaps]
push edx
push edx
mov dword [esp + 8], 0x48
mov dword [esp + 4], eax
mov dword [esp], 0x1a
call dword [sym.imp.KERNEL32.dll_MulDiv]
sub esp, 0xc
neg eax
mov dword [esp + 0x34], str.Arial
mov dword [esp + 0x30], 0
mov dword [esp + 0x2c], 0
mov dword [esp + 0x28], 0
mov dword [esp + 0x24], 0
mov dword [esp + 0x20], 1
mov dword [esp + 0x1c], 0
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 0x190
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], eax
call dword [sym.imp.GDI32.dll_CreateFontW]
sub esp, 0x38
mov dword [0x405020], eax
mov eax, dword [esp + 0x48]
mov dword [esp + 4], esi
mov dword [esp], eax
call dword [sym.imp.USER32.dll_ReleaseDC]
push ecx
push ecx
mov eax, dword [esp + 0x13c]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x48]
mov dword [esp], eax
call dword [sym.imp.USER32.dll_ShowWindow]
push esi
push esi
mov eax, dword [esp + 0x48]
mov dword [esp], eax
call dword [sym.imp.USER32.dll_UpdateWindow]
mov ecx, 7
xor eax, eax
push edi
mov edi, ebx
rep stosd dword es:[edi], eax
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], ebx
call dword [sym.imp.USER32.dll_GetMessageW]
sub esp, 0x10
test eax, eax
jle 0x401bb1
mov dword [esp], ebx
call dword [sym.imp.USER32.dll_TranslateMessage]
push ecx
mov dword [esp], ebx
call dword [sym.imp.USER32.dll_DispatchMessageW]
push esi
jmp 0x401b73
mov eax, dword [0x405024]
mov ebx, dword [sym.imp.GDI32.dll_DeleteObject]
mov dword [esp], eax
call ebx
push eax
mov eax, dword [0x405020]
mov dword [esp], eax
call ebx
push edx
jmp 0x401bdf
add esp, 0x11c
xor eax, eax
pop ebx
pop esi
pop edi
pop ebp
ret 0x10