Function at 0x404500
Capabilities:
Accept command line arguments
Enumerate files on windows
Extract resource via kernel32 functions
Get common file path
Get disk information
Get file system object information
Get graphical window text
Get program files directory
Hide graphical window
Identify system language via api
Resolve function by parsing pe exports
Set console window title
Write file on windows

Disassembly:
mov eax, 0x1064
call fcn.0040be60
mov eax, dword [esp + 0x1068]
push ebx
push ebp
push esi
mov esi, dword [esp + 0x1080]
push edi
xor edi, edi
push edi
lea ecx, [esp + 0xe70]
push ecx
push esi
push 0x42dc50
mov edx, ecx
mov dword [0x43d3c8], eax
push edx
lea eax, [esp + 0x5d8]
mov ebp, 0x122
xor ebx, ebx
push eax
mov dword [esp + 0x78], edi
mov dword [esp + 0x64], ebp
mov dword [esp + 0x90], edi
mov dword [esp + 0x74], ebx
mov dword [esp + 0x68], edi
mov dword [esp + 0x7e4], edi
call dword [sym.imp.KERNEL32.dll_SearchPathW]
sub dword [0x43d3c4], 8
je 0x40457b
lea ebx, [esi + 0x122]
mov dword [esp + 0x5c], ebx
cmp eax, edi
jne 0x40458a
mov ebp, 0x2f8
mov dword [esp + 0x4c], ebp
jmp 0x404594
add ebx, 0xf2
mov dword [esp + 0x5c], ebx
mov ecx, dword [0x43d3c4]
mov edx, dword [0x43d3c0]
add ecx, esi
lea eax, [edx + ecx + 1]
mov dword [0x43d3c0], eax
cmp esi, edi
jl 0x4045b9
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [esp + 0x60], eax
mov ecx, dword [0x43d3cc]
mov edx, dword [esp + 0x50]
add ecx, ebp
imul ecx, dword [0x43d3d0]
add edx, esi
cmp edx, ecx
jne 0x4045d8
add dword [0x43d3c4], ebx
push 2
call fcn.0040be30
add esp, 4
mov edi, eax
push 0
lea eax, [edi + 1]
push eax
push 0
call dword [sym.imp.KERNEL32.dll_GlobalReAlloc]
test eax, eax
je 0x40464e
mov ecx, dword [esp + 0x1078]
mov dword [ecx + edi*4], 0
mov eax, dword [esp + 0x1078]
mov dword [esp + 0x48], eax
mov esi, eax
test eax, eax
jne 0x40461f
mov edx, dword [esp + 0x7c]
mov dword [0x43d3d8], edx
call dword [sym.imp.USER32.dll_GetFocus]
mov dword [0x43d3c4], eax
call dword [sym.imp.USER32.dll_GetForegroundWindow]
push eax
call dword [sym.imp.USER32.dll_GetMenu]
push eax
call dword [sym.imp.USER32.dll_GetMenuItemCount]
cmp dword [0x43d3d8], 0
je 0x404670
inc ebx
mov dword [esp + 0x5c], ebx
jmp 0x404673
add esi, 2
push esi
call fcn.0040be30
add esp, 4
test eax, eax
je 0x404604
xor esi, esi
mov ebp, ebx
mov dword [esp + 0x48], esi
mov dword [esp + 0x4c], ebp
mov dword [esp + 0x7c], eax
jmp 0x404615
mov word [esi], bp
test esi, esi
je 0x404681
mov eax, dword [0x43d3c4]
mov dword [0x43d3c0], eax
mov eax, dword [esp + 0x60]
add eax, 0x76e
mov dword [esp + 0x60], eax
mov dword [0x43d3d0], eax
test esi, esi
je 0x404a29
push 8
call sub.gdiplus.dll_GdipAlloc
mov esi, eax
test esi, esi
je 0x4046c9
lea ecx, [esp + 0x44]
push ecx
push 0
mov dword [esp + 0x4c], 0
call sub.gdiplus.dll_GdipCreateFromHDC
mov edx, dword [esp + 0x44]
mov dword [esi + 4], eax
mov dword [esi], edx
mov ebx, esi
jmp 0x4046cb
xor ebx, ebx
push 8
call sub.gdiplus.dll_GdipAlloc
mov esi, eax
test esi, esi
je 0x4046f9
mov eax, dword [0x43d3c0]
fld1
push esi
push 0
push ecx
fstp dword [esp]
push eax
mov dword [esi], 0
call sub.gdiplus.dll_GdipCreatePen1
mov dword [esi + 4], eax
mov ebp, esi
jmp 0x4046fb
xor ebp, ebp
fild dword [esp + 0x4c]
mov ecx, dword [0x43d3c0]
add ecx, dword [0x43d3c4]
push 8
fstp dword [esp + 0x48]
mov dword [esp + 0x14], ecx
fild dword [esp + 0x60]
fstp dword [esp + 0x78]
fild dword [0x43d3c0]
fstp dword [esp + 0x58]
fild dword [0x43d3c4]
fstp dword [esp + 0x70]
fild dword [esp + 0x14]
fstp dword [esp + 0x5c]
call sub.gdiplus.dll_GdipAlloc
mov esi, eax
test esi, esi
je 0x404757
push esi
push 0
mov dword [esi], 0
call sub.gdiplus.dll_GdipCreatePath
mov dword [esi + 4], eax
jmp 0x404759
xor esi, esi
push 0xc
call sub.gdiplus.dll_GdipAlloc
mov edi, eax
test edi, edi
je 0x404796
lea edx, [esp + 0x70]
push edx
push 0xffe9e9e9
mov dword [edi + 8], 6
mov dword [edi], vtable.Gdiplus::SolidBrush.0
mov dword [esp + 0x78], 0
call sub.gdiplus.dll_GdipCreateSolidFill
mov dword [edi + 8], eax
mov eax, dword [esp + 0x70]
mov dword [edi + 4], eax
jmp 0x404798
xor edi, edi
fld dword [esp + 0x54]
mov ecx, dword [esi]
fld dword [esp + 0x44]
sub esp, 0x10
fld st(0)
faddp st(2)
fxch st(1)
fst qword [esp + 0x74]
fld dword [esp + 0x68]
fld st(0)
fadd st(1)
fst qword [esp + 0x44]
fsubp st(2)
fxch st(1)
fstp dword [esp + 0x64]
faddp st(1)
fstp dword [esp + 0x20]
fld dword [esp + 0x84]
fst dword [esp + 0xc]
fld dword [esp + 0x64]
fstp dword [esp + 8]
fstp dword [esp + 4]
fld dword [esp + 0x20]
fstp dword [esp]
push ecx
call sub.gdiplus.dll_GdipAddPathLine
test eax, eax
je 0x4047f4
mov dword [esi + 4], eax
fld qword [esp + 0x34]
mov edx, dword [esi]
fstp dword [esp + 0x70]
sub esp, 0x18
fld dword [0x42dc4c]
fstp dword [esp + 0x14]
fld dword [0x42dc48]
fstp dword [esp + 0x10]
fld dword [esp + 0x88]
fst dword [esp + 0xc]
fstp dword [esp + 8]
fld dword [esp + 0x8c]
fstp dword [esp + 4]
fld dword [esp + 0x6c]
fstp dword [esp]
push edx
call sub.gdiplus.dll_Ordinal_1
test eax, eax
je 0x404843
mov dword [esi + 4], eax
fld dword [esp + 0x6c]
mov eax, dword [esi]
fld dword [esp + 0x74]
sub esp, 0x10
fld st(0)
faddp st(2)
fxch st(1)
fst qword [esp + 0x90]
fsub qword [esp + 0x44]
fstp dword [esp + 0x7c]
fld qword [esp + 0x74]
fstp dword [esp + 0x74]
fadd dword [esp + 0x68]
fstp dword [esp + 0x68]
fld dword [esp + 0x7c]
fstp dword [esp + 0xc]
fld dword [esp + 0x74]
fst dword [esp + 8]
fld dword [esp + 0x68]
fstp dword [esp + 4]
fstp dword [esp]
push eax
call sub.gdiplus.dll_GdipAddPathLine
test eax, eax
je 0x40489d
mov dword [esi + 4], eax
fld dword [0x42dc4c]
mov ecx, dword [esi]
sub esp, 0x18
fstp dword [esp + 0x14]
fldz
fstp dword [esp + 0x10]
fld dword [esp + 0x88]
fst dword [esp + 0xc]
fstp dword [esp + 8]
fld dword [esp + 0x84]
fstp dword [esp + 4]
fld dword [esp + 0x6c]
fstp dword [esp]
push ecx
call sub.gdiplus.dll_Ordinal_1
test eax, eax
je 0x4048e0
mov dword [esi + 4], eax
fld qword [esp + 0x80]
mov edx, dword [esi]
fstp dword [esp + 0x64]
sub esp, 0x10
fld dword [esp + 0x74]
fst dword [esp + 0xc]
fld dword [esp + 0x20]
fstp dword [esp + 8]
fstp dword [esp + 4]
fld dword [esp + 0x64]
fstp dword [esp]
push edx
call sub.gdiplus.dll_GdipAddPathLine
test eax, eax
je 0x404918
mov dword [esi + 4], eax
fld dword [0x42dc4c]
mov eax, dword [esi]
sub esp, 0x18
fst dword [esp + 0x14]
fstp dword [esp + 0x10]
fld dword [esp + 0x88]
fst dword [esp + 0xc]
fstp dword [esp + 8]
fld dword [esp + 0x84]
fstp dword [esp + 4]
fld dword [esp + 0x5c]
fstp dword [esp]
push eax
call sub.gdiplus.dll_Ordinal_1
test eax, eax
je 0x404959
mov dword [esi + 4], eax
fld dword [esp + 0x58]
mov ecx, dword [esi]
sub esp, 0x10
fstp dword [esp + 0xc]
fld dword [esp + 0x54]
fst dword [esp + 8]
fld dword [esp + 0x7c]
fstp dword [esp + 4]
fstp dword [esp]
push ecx
call sub.gdiplus.dll_GdipAddPathLine
test eax, eax
je 0x404986
mov dword [esi + 4], eax
fld dword [0x42dc4c]
mov edx, dword [esi]
sub esp, 0x18
fstp dword [esp + 0x14]
fld dword [0x42dc44]
fstp dword [esp + 0x10]
fld dword [esp + 0x88]
fst dword [esp + 0xc]
fstp dword [esp + 8]
fld dword [esp + 0x8c]
fstp dword [esp + 4]
fld dword [esp + 0x5c]
fstp dword [esp]
push edx
call sub.gdiplus.dll_Ordinal_1
test eax, eax
je 0x4049cd
mov dword [esi + 4], eax
mov eax, dword [esi]
push eax
call sub.gdiplus.dll_GdipClosePathFigure
test eax, eax
je 0x4049dc
mov dword [esi + 4], eax
mov ecx, dword [esi]
push 1
push ecx
call sub.gdiplus.dll_GdipSetPathFillMode
test eax, eax
je 0x4049ed
mov dword [esi + 4], eax
mov edx, dword [esi]
mov eax, dword [edi + 4]
mov ecx, dword [ebx]
push edx
push eax
push ecx
call sub.gdiplus.dll_GdipFillPath
test eax, eax
je 0x404a03
mov dword [ebx + 4], eax
mov ecx, dword [esi]
test ebp, ebp
je 0x404a0e
mov eax, dword [ebp]
jmp 0x404a10
xor eax, eax
mov edx, dword [ebx]
push ecx
push eax
push edx
call sub.gdiplus.dll_GdipDrawPath
test eax, eax
je 0x404a21
mov dword [ebx + 4], eax
mov eax, dword [esi]
push eax
call sub.gdiplus.dll_GdipDeletePath
mov esi, dword [0x43d3d4]
mov edi, dword [0x43d3c0]
mov ebx, dword [0x43d3c4]
xor ebp, ebp
push ebp
lea ecx, [esp + 0x2cc]
push ecx
lea edx, [esp + 0x6c]
push edx
mov dword [esp + 0x2d4], 1
mov dword [esp + 0x2d8], ebp
mov dword [esp + 0x2dc], ebp
mov dword [esp + 0x2e0], ebp
call sub.gdiplus.dll_GdiplusStartup
mov ecx, dword [esp + 0x48]
lea eax, [ecx - 2]
cmp eax, 0xfe
ja case.0x404a85.3
movzx eax, byte [eax + 0x40b09c]
jmp dword [eax*4 + 0x40b088]
lea ecx, [esp + 0x90]
push ecx
push esi
call dword [sym.imp.USER32.dll_BeginPaint]
lea edx, [esp + 0x90]
push edx
push esi
call dword [sym.imp.USER32.dll_EndPaint]
jmp 0x404aea
cmp edi, 0xd
jne 0x404aea
push esi
call dword [sym.imp.USER32.dll_GetDC]
push 1
push ebp
push esi
mov edi, eax
call dword [sym.imp.USER32.dll_InvalidateRgn]
push edi
push esi
call dword [sym.imp.USER32.dll_ReleaseDC]
jmp 0x404aea
push esi
call dword [sym.imp.USER32.dll_DestroyWindow]
jmp 0x404aea
push ebp
call dword [sym.imp.USER32.dll_PostQuitMessage]
jmp 0x404aea
push ebx
push edi
push ecx
push esi
call dword [sym.imp.USER32.dll_DefWindowProcA]
lea eax, [esp + 0x90]
push str.ID_GUID
push eax
call dword [sym.imp.USER32.dll_wsprintfA]
mov ebx, dword [sym.imp.KERNEL32.dll_SetConsoleTitleA]
add esp, 8
lea ecx, [esp + 0x90]
push ecx
call ebx
mov eax, dword [esp + 0x60]
cdq
mov ecx, 0xa
idiv ecx
mov ebp, dword [sym.imp.USER32.dll_FindWindowExA]
xor esi, esi
xor edi, edi
mov dword [esp + 0x64], eax
lea ebx, [ebx]
cmp edi, dword [esp + 0x64]
jg 0x404b4d
lea edx, [esp + 0x90]
push edx
push 0
push 0
push 0
call ebp
mov esi, eax
inc edi
test esi, esi
je 0x404b30
lea eax, [esp + 0x8d0]
push eax
call ebx
push 0
push esi
call dword [sym.imp.USER32.dll_GetSystemMenu]
push 0
push 0xf060
push eax
call dword [sym.imp.USER32.dll_DeleteMenu]
push str.ntdll.dll
call dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
push str.LdrLoadDll
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
lea ecx, [esp + 0x2f4]
push ecx
mov ebx, eax
call dword [sym.imp.KERNEL32.dll_lstrlenA]
mov esi, eax
push esi
push 0
call dword [sym.imp.OLEAUT32.dll_SysReAllocStringLen]
push esi
mov edi, eax
push edi
push esi
lea edx, [esp + 0x300]
push edx
push 0
push 0
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
push edi
call dword [sym.imp.OLEAUT32.dll_SysStringLen]
cmp dword [esp + 0x48], 0
je 0x404bd5
push 0
lea eax, [esp + 0x84]
push eax
push 8
push 0
call ebx
call dword [sym.imp.USER32.dll_CreatePopupMenu]
mov esi, eax
mov ebx, 0x30
test esi, esi
je 0x404d21
push ebx
lea ecx, [esp + 0x29c]
push 0
push ecx
call fcn.0040b3c0
mov edx, dword [esp + 0x68]
mov ebp, dword [sym.imp.USER32.dll_InsertMenuItemA]
add esp, 0xc
lea eax, [esp + 0x298]
push eax
push 1
push 0
push esi
mov dword [esp + 0x2a8], ebx
mov dword [esp + 0x2ac], 0x12
mov dword [esp + 0x2b0], 0
mov dword [esp + 0x2b8], edx
mov dword [esp + 0x2cc], 0x42dc20
call ebp
push ebx
lea ecx, [esp + 0x29c]
push 0
push ecx
call fcn.0040b3c0
add esp, 0xc
lea edx, [esp + 0x298]
push edx
push 1
push 1
push esi
mov dword [esp + 0x2a8], ebx
mov dword [esp + 0x2ac], 0x10
mov dword [esp + 0x2b0], 0x800
call ebp
cmp dword [esp + 0x48], 0
lea edi, [ebx - 0x2e]
jle 0x404cdb
mov eax, dword [esp + 0x48]
mov dword [esp + 0x10], eax
push ebx
lea ecx, [esp + 0x29c]
push 0
push ecx
call fcn.0040b3c0
add esp, 0xc
lea edx, [esp + 0x298]
push edx
push 1
push edi
push esi
mov dword [esp + 0x2a8], ebx
mov dword [esp + 0x2ac], 0x12
mov dword [esp + 0x2b0], 0x200
call ebp
inc edi
dec dword [esp + 0x10]
jne 0x404c96
push ebx
lea eax, [esp + 0x29c]
push 0
push eax
call fcn.0040b3c0
mov edx, dword [esp + 0x58]
mov eax, dword [esp + 0x54]
add esp, 0xc
lea ecx, [esp + 0x298]
push ecx
push 1
push edx
push eax
mov dword [esp + 0x2a8], ebx
mov dword [esp + 0x2ac], 4
mov dword [esp + 0x2bc], esi
call dword [sym.imp.USER32.dll_SetMenuItemInfoA]
mov ecx, dword [esp + 0x1078]
lea edx, [esp + 0x2f4]
mov dword [esp + 0x2f4], ecx
test edx, edx
je 0x404d7a
mov eax, edx
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenA]
mov esi, eax
test esi, esi
je 0x404d7a
push esi
push 0
call dword [sym.imp.OLEAUT32.dll_SysReAllocStringLen]
push esi
mov edi, eax
push edi
push esi
lea ecx, [esp + 0x300]
push ecx
push 0
push 0
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
test eax, eax
jne 0x404d7a
call dword [sym.imp.KERNEL32.dll_GetLastError]
push edi
call dword [sym.imp.OLEAUT32.dll_SysStringLen]
mov edi, dword [esp + 0x1078]
xor eax, eax
push eax
push eax
mov byte [esp + 0x2d0], 0
mov dword [esp + 0x2d1], eax
mov dword [esp + 0x2d5], eax
mov word [esp + 0x2d9], ax
mov byte [esp + 0x2db], al
call dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
push eax
push 0
push 0
push 0x12c
push 0x12c
push 0x64
push 0x64
push reloc.gdiplus.dll_Ordinal_1
push str.Press
push str.BUTTON
push 0
call dword [sym.imp.USER32.dll_CreateWindowExA]
mov ecx, dword [0x43d3c0]
mov ebp, dword [esp + 0x48]
mov esi, eax
mov eax, edi
sub eax, ecx
add eax, dword [esp + 0x1084]
xor edx, edx
inc ebp
div ebp
lea edx, [ebp + ebp*4]
mov dword [esp + 0x70], ebp
mov ebx, eax
lea eax, [edx*4 - 1]
mov edx, 0x14
sub edx, dword [esp + 0x48]
mov dword [esp + 0x5c], ebx
imul eax, edx
sub eax, dword [esp + 0x7c]
cmp dword [esp + 0x48], 0
lea eax, [ecx + eax + 0x2cd]
mov dword [0x43d3c0], eax
je 0x404e37
push 5
push esi
call dword [sym.imp.USER32.dll_ShowWindow]
push 0
push 0
call sub.POWRPROF.dll_EnumPwrSchemes
mov edx, dword [esp + 0x4c]
lea ecx, [edi + edi + 0xc8]
sub ecx, edx
add ecx, ebx
lea edi, [ecx + ebx]
mov dword [0x43d3c0], ecx
movzx ecx, al
imul edi, ecx
lea eax, [esp + 0x2c8]
lea edx, [edx + edi + 0x38]
push eax
mov dword [esp + 0x58], edi
mov dword [esp + 0x50], edx
call dword [sym.imp.KERNEL32.dll_GetSystemPowerStatus]
test edi, edi
mov edi, dword [sym.imp.USER32.dll_GetMessageA]
je 0x404ed5
push 0
push 0
push 0
lea ecx, [esp + 0x5b4]
push ecx
call edi
cmp eax, 1
jne 0x404f2b
mov ebp, 0x112
mov ebx, 0xf060
cmp dword [esp + 0x5ac], ebp
jne 0x404ebe
cmp dword [esp + 0x5b0], ebx
jne 0x404ebe
push esi
call dword [sym.imp.USER32.dll_DestroyWindow]
push 0
push 0
push 0
lea edx, [esp + 0x5b4]
push edx
call edi
cmp eax, 1
je 0x404ea5
jmp 0x404f2b
push 1
push str.Message
lea eax, [esp + 0xa8c]
push str._s__d
push eax
mov dword [0x43d3d4], 0
call fcn.0040bc30
mov eax, 0x18e
sub eax, dword [esp + 0x58]
add esp, 0x10
imul eax, ebp
imul eax, dword [0x43d3c4]
add eax, dword [0x43d3c0]
lea ecx, [esp + 0xa84]
push ecx
push 0
push 0xc
push esi
mov dword [esp + 0x5c], eax
call dword [sym.imp.USER32.dll_SendMessageA]
lea edx, [esp + 0x5a8]
push edx
call dword [sym.imp.USER32.dll_DispatchMessageA]
lea eax, [esp + 0xa84]
push eax
push 0x3e8
push 0xd
push esi
call dword [sym.imp.USER32.dll_SendMessageA]
lea ecx, [esp + 0xa8b]
push ecx
call fcn.0040bc10
push eax
push str.Total_Messages_:__d_n
call fcn.0040ba90
add esp, 0xc
push esi
call dword [sym.imp.USER32.dll_DestroyWindow]
mov ebx, dword [sym.imp.USER32.dll_GetSystemMetrics]
push 0
call ebx
sub eax, 0x246
cdq
sub eax, edx
mov esi, eax
push 1
sar esi, 1
call ebx
mov ebp, dword [sym.imp.USER32.dll_LoadIconA]
sub eax, 0x166
cdq
sub eax, edx
mov edx, dword [esp + 0x1078]
push 0x7f00
mov edi, eax
push 0
sar edi, 1
mov dword [esp + 0xac], edx
mov dword [esp + 0x9c], 8
mov dword [esp + 0x98], 0x30
call ebp
push 0x7f00
push 0
mov dword [esp + 0xb0], eax
call ebp
push 0x7f00
xor ebp, ebp
push ebp
mov dword [esp + 0xc4], eax
call dword [sym.imp.USER32.dll_LoadCursorA]
mov dword [esp + 0xac], eax
mov dword [esp + 0xb4], ebp
mov dword [esp + 0x9c], ebp
mov dword [esp + 0xa0], ebp
mov dword [esp + 0xb0], 0x10
cmp dword [esp + 0x48], ebp
je 0x405033
lea eax, [esp + 0x90]
push eax
call dword [sym.imp.USER32.dll_RegisterClassExA]
test ax, ax
jne 0x405033
mov dword [esp + 0x4c], ebp
mov ecx, dword [esp + 0x1078]
push 0
push ecx
push 0
push 0
push 0x1e0
push 0x280
push edi
push esi
push 0xcf0000
push str.OpenGL
lea edx, [esp + 0x7f4]
push edx
push 0
call dword [sym.imp.USER32.dll_CreateWindowExA]
mov esi, eax
cmp dword [esp + 0x48], ebp
je 0x40516c
cmp dword [esp + 0x54], ebp
je 0x40516c
push esi
call dword [sym.imp.USER32.dll_GetDC]
mov edi, eax
test edi, edi
jne 0x4050ac
push 0x30
push str.ERROR
push str.Cant_Create_A_GL_Device_Context.
push eax
call dword [sym.imp.USER32.dll_MessageBoxA]
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x1064
ret 0x10
push 0x43c094
push edi
call dword [sym.imp.GDI32.dll_ChoosePixelFormat]
test eax, eax
jne 0x4050de
push 0x30
push str.ERROR
push str.Cant_Find_A_Suitable_PixelFormat.
push eax
call dword [sym.imp.USER32.dll_MessageBoxA]
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x1064
ret 0x10
push 0x43c094
push eax
push edi
call dword [sym.imp.GDI32.dll_SetPixelFormat]
test eax, eax
jne 0x405111
push 0x30
push str.ERROR
push str.Cant_Set_The_PixelFormat.
push eax
call dword [sym.imp.USER32.dll_MessageBoxA]
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x1064
ret 0x10
push edi
call dword [sym.imp.OPENGL32.dll_wglCreateContext]
test eax, eax
jne 0x40513e
push 0x30
push str.ERROR
push str.Cant_Create_A_GL_Rendering_Context.
push eax
call dword [sym.imp.USER32.dll_MessageBoxA]
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x1064
ret 0x10
push eax
push edi
call dword [sym.imp.OPENGL32.dll_wglMakeCurrent]
test eax, eax
jne 0x40516c
push 0x30
push str.ERROR
push str.Cant_Activate_The_GL_Rendering_Context.
push eax
call dword [sym.imp.USER32.dll_MessageBoxA]
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x1064
ret 0x10
mov eax, dword [esp + 0x1084]
push eax
push esi
call dword [sym.imp.USER32.dll_ShowWindow]
push esi
call dword [sym.imp.USER32.dll_SetForegroundWindow]
push esi
call dword [sym.imp.USER32.dll_SetFocus]
cmp dword [esp + 0x48], ebp
mov ebp, dword [sym.imp.USER32.dll_TranslateMessage]
je 0x4051dd
mov esi, dword [sym.imp.USER32.dll_GetMessageA]
push 0
push 0
push 0
lea ecx, [esp + 0x2e4]
push ecx
call esi
test eax, eax
je 0x4051dd
mov edi, dword [sym.imp.USER32.dll_DispatchMessageA]
lea edx, [esp + 0x2d8]
push edx
call ebp
lea eax, [esp + 0x2d8]
push eax
call edi
push 0
push 0
push 0
lea ecx, [esp + 0x2e4]
push ecx
call esi
test eax, eax
jne 0x4051b5
push 0x13
call ebx
test eax, eax
jne 0x4051f4
push str.No_mouse_installed._n
call fcn.0040ba90
add esp, 4
jmp 0x405264
push str.Mouse_installed._n
call fcn.0040ba90
add esp, 4
push 0x17
call ebx
test eax, eax
jne 0x405210
push str.Buttons_not_swapped._n
jmp 0x405215
push str.Buttons_swapped._n
call fcn.0040ba90
add esp, 4
push 0
lea edx, [esp + 0x84]
push edx
push 0
push 3
call dword [sym.imp.USER32.dll_SystemParametersInfoA]
test eax, eax
je 0x405264
mov eax, dword [esp + 0x88]
push eax
push str.Speed:__d_n
call fcn.0040ba90
mov ecx, dword [esp + 0x8c]
mov edx, dword [esp + 0x88]
push ecx
push edx
push str.Threshold__x_y_:__d__d_n
call fcn.0040ba90
add esp, 0x14
lea eax, [esp + 0x64]
push eax
push 0x42dc54
xor esi, esi
push esi
push 0x15
lea ecx, [esp + 0x90]
push ecx
mov dword [esp + 0x78], esi
call dword [sym.imp.ole32.dll_CoGetClassObject]
test eax, eax
jne 0x4052a5
push esi
lea edx, [esp + 0x14]
push edx
push esi
mov dword [esp + 0x1c], esi
call sub.urlmon.dll_CoInternetGetSession
test eax, eax
jne 0x4052a5
xor ebp, ebp
mov dword [esp + 0x4c], ebp
jmp 0x4052a9
mov ebp, dword [esp + 0x4c]
mov ebx, dword [esp + 0x48]
cmp ebx, esi
je 0x4052ed
mov edi, dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
mov esi, dword [esp + 0x50]
jmp 0x4052c0
push 0xffffffffffffffff
push esi
call edi
push ebx
push esi
call edi
test eax, eax
je 0x4052c5
test ebp, ebp
jne 0x4052c0
call dword [sym.imp.ole32.dll_CoSuspendClassObjects]
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov eax, dword [esp + 0x50]
push ebp
push ebp
push 0x12
push eax
call dword [sym.imp.USER32.dll_PostThreadMessageA]
push 0
lea ecx, [esp + 0x68]
push ecx
push 0x14
lea edx, [esp + 0x2e4]
push edx
push ebx
call dword [sym.imp.KERNEL32.dll_WriteFile]
mov eax, dword [esp + 0x2e8]
mov esi, dword [sym.imp.GDI32.dll_DeleteObject]
push eax
call esi
mov ecx, dword [esp + 0x2e4]
push ecx
call esi
mov ebp, dword [0x43d3cc]
mov edi, dword [esp + 0x60]
cmp dword [0x43d3d0], ebp
jbe 0x40540a
mov eax, edi
imul eax, edi
cdq
and edx, 0xf
add eax, edx
sar eax, 4
mov dword [esp + 0x10], 0
mov dword [esp + 0x58], eax
test eax, eax
jle 0x40540a
mov ecx, dword [0x43d3d4]
mov esi, dword [esp + 0x50]
test ebp, ebp
jne 0x40539e
inc dword [0x43d3c0]
push ebp
push 0x26
lea edx, [esp + 0x2fc]
push edx
push ebp
call dword [sym.imp.SHELL32.dll_SHGetSpecialFolderPathA]
mov ebp, dword [0x43d3cc]
mov ecx, dword [0x43d3d4]
mov dword [esp + 0x64], eax
cmp dword [esp + 0x2f4], ebp
je 0x40539a
mov esi, ecx
jmp 0x4053a6
mov esi, edi
jmp 0x4053a6
dec dword [esp + 0x4c]
test ecx, ecx
jne 0x40540a
cmp dword [0x43d3d8], 0
je 0x40540a
mov eax, edi
add ebx, 0x10
cdq
idiv ebx
mov ebx, dword [esp + 0x48]
test eax, eax
jle 0x4053d2
mov edx, dword [esp + 0x5c]
test ebx, ebx
mov ebx, dword [esp + 0x48]
je 0x4053cf
add dword [esp + 0x4c], edx
dec eax
jne 0x4053c3
cmp dword [esp + 0x7c], 0
je 0x40509d
test ecx, ecx
jne 0x40509d
test esi, esi
jne 0x40509d
cmp dword [esp + 0x64], esi
je 0x40509d
mov eax, dword [esp + 0x10]
inc eax
mov dword [esp + 0x10], eax
cmp eax, dword [esp + 0x58]
jl 0x405361
test edi, edi
je 0x40541e
cmp dword [0x43d3d0], 0
je 0x40541e
lea eax, [ebx + 2]
mov dword [esp + 0x78], eax
push 0x103
lea ecx, [esp + 0x199]
push 0
push ecx
mov byte [esp + 0x1a0], bl
call fcn.0040b3c0
add esp, 0xc
xor eax, eax
mov edi, edi
mov cl, byte [esp + eax + 0x194]
mov byte [esp + eax + 0x90], cl
inc eax
test cl, cl
jne 0x405440
lea edi, [esp + 0x90]
dec edi
jmp 0x405460
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x405460
mov dx, word [0x42daa0]
mov word [edi], dx
xor eax, eax
jmp 0x405480
mov cl, byte [esp + eax + 0x90]
mov byte [esp + eax + 0x2f4], cl
inc eax
test cl, cl
jne 0x405480
lea eax, [esp + 0x7cc]
mov esi, eax
lea esp, [esp]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x4054a0
lea edi, [esp + 0x90]
sub eax, esi
dec edi
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x4054b1
mov ecx, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, dword [sym.imp.KERNEL32.dll_FindFirstFileA]
lea eax, [esp + 0x5c4]
push eax
lea ecx, [esp + 0x94]
push ecx
call edi
mov ebp, dword [sym.imp.KERNEL32.dll_FindNextFileA]
mov esi, eax
cmp esi, 0xffffffff
je 0x40562b
test byte [esp + 0x5c4], 0x10
jne 0x405576
mov ecx, 0x42da9c
lea eax, [esp + 0x5f0]
lea ebx, [ebx]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x405530
test dl, dl
je 0x40552c
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x405530
add eax, 2
add ecx, 2
test dl, dl
jne 0x405510
xor eax, eax
jmp 0x405535
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x405576
mov ecx, 0x42da98
lea eax, [esp + 0x5f0]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x405565
test dl, dl
je 0x405561
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x405565
add eax, 2
add ecx, 2
test dl, dl
jne 0x405545
xor eax, eax
jmp 0x40556a
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x405576
mov dword [esp + 0x4c], 0
test ebx, ebx
je 0x40562b
lea edx, [esp + 0x5c4]
push edx
push esi
call ebp
test eax, eax
je 0x40562b
test byte [esp + 0x5c4], 0x10
jne 0x405618
mov ecx, 0x42da9c
lea eax, [esp + 0x5f0]
jmp 0x4055b0
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x4055d0
test dl, dl
je 0x4055cc
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x4055d0
add eax, 2
add ecx, 2
test dl, dl
jne 0x4055b0
xor eax, eax
jmp 0x4055d5
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x405618
mov ecx, 0x42da98
lea eax, [esp + 0x5f0]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x405605
test dl, dl
je 0x405601
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x405605
add eax, 2
add ecx, 2
test dl, dl
jne 0x4055e5
xor eax, eax
jmp 0x40560a
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x405618
mov dword [0x43d3c0], 0
lea eax, [esp + 0x5c4]
push eax
push esi
call ebp
test eax, eax
jne 0x405591
push esi
call dword [sym.imp.KERNEL32.dll_FindClose]
xor eax, eax
jmp 0x405640
mov cl, byte [esp + eax + 0x194]
mov byte [esp + eax + 0x90], cl
inc eax
test cl, cl
jne 0x405640
lea eax, [esp + 0x90]
dec eax
jmp 0x405660
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x405660
mov ecx, dword [str..]
mov dl, byte [0x42da94]
mov dword [eax], ecx
mov byte [eax + 4], dl
lea eax, [esp + 0x5c4]
push eax
lea ecx, [esp + 0x94]
push ecx
call edi
mov ebp, eax
cmp ebp, 0xffffffff
je 0x4058c0
test byte [esp + 0x5c4], 0x10
je 0x405789
mov ecx, 0x42da9c
lea eax, [esp + 0x5f0]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x4056d0
test dl, dl
je 0x4056cc
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x4056d0
add eax, 2
add ecx, 2
test dl, dl
jne 0x4056b0
xor eax, eax
jmp 0x4056d5
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x405789
mov ecx, 0x42da98
lea eax, [esp + 0x5f0]
lea esp, [esp]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x405710
test dl, dl
je 0x40570c
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x405710
add eax, 2
add ecx, 2
test dl, dl
jne 0x4056f0
xor eax, eax
jmp 0x405715
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x405789
xor eax, eax
jmp 0x405720
mov cl, byte [esp + eax + 0x194]
mov byte [esp + eax + 0x2f4], cl
inc eax
test cl, cl
jne 0x405720
lea edi, [esp + 0x2f4]
dec edi
jmp 0x405740
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x405740
mov dx, word [0x42daa0]
lea eax, [esp + 0x5f0]
mov word [edi], dx
mov edx, eax
jmp 0x405760
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x405760
lea edi, [esp + 0x2f4]
sub eax, edx
dec edi
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x405771
mov ecx, eax
shr ecx, 2
mov esi, edx
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
test ebx, ebx
je 0x4058c0
lea eax, [esp + 0x5c4]
push eax
push ebp
call dword [sym.imp.KERNEL32.dll_FindNextFileA]
test eax, eax
je 0x4058c0
jmp 0x4057b0
test byte [esp + 0x5c4], 0x10
je 0x4058a9
mov ecx, 0x42da9c
lea eax, [esp + 0x5f0]
lea ebx, [ebx]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x4057f0
test dl, dl
je 0x4057ec
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x4057f0
add eax, 2
add ecx, 2
test dl, dl
jne 0x4057d0
xor eax, eax
jmp 0x4057f5
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x4058a9
mov ecx, 0x42da98
lea eax, [esp + 0x5f0]
lea esp, [esp]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x405830
test dl, dl
je 0x40582c
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x405830
add eax, 2
add ecx, 2
test dl, dl
jne 0x405810
xor eax, eax
jmp 0x405835
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x4058a9
xor eax, eax
jmp 0x405840
mov cl, byte [esp + eax + 0x194]
mov byte [esp + eax + 0x2f4], cl
inc eax
test cl, cl
jne 0x405840
lea edi, [esp + 0x2f4]
dec edi
jmp 0x405860
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x405860
mov cx, word [0x42daa0]
lea eax, [esp + 0x5f0]
mov word [edi], cx
mov edx, eax
jmp 0x405880
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x405880
lea edi, [esp + 0x2f4]
sub eax, edx
dec edi
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x405891
mov ecx, eax
shr ecx, 2
mov esi, edx
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea edx, [esp + 0x5c4]
push edx
push ebp
call dword [sym.imp.KERNEL32.dll_FindNextFileA]
test eax, eax
jne 0x4057b0
push 0x103
lea eax, [esp + 0x95]
push 0
push eax
mov byte [esp + 0x9c], bl
call fcn.0040b3c0
push 0x103
lea ecx, [esp + 0x305]
push 0
push ecx
mov byte [esp + 0x30c], bl
call fcn.0040b3c0
add esp, 0x18
call dword [sym.imp.KERNEL32.dll_GetCommandLineA]
mov edi, eax
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x405904
sub eax, edx
inc eax
push eax
call fcn.0040b210
mov esi, eax
add esp, 4
mov ecx, edi
sub esi, edi
lea ecx, [ecx]
mov dl, byte [ecx]
mov byte [ecx + esi], dl
inc ecx
test dl, dl
jne 0x405920
mov ecx, eax
lea esi, [ecx + 1]
nop
mov dl, byte [ecx]
inc ecx
test dl, dl
jne 0x405930
sub ecx, esi
lea edx, [esp + 0x2f4]
mov esi, ecx
lea edi, [edx + 1]
mov cl, byte [edx]
inc edx
test cl, cl
jne 0x405945
sub edx, edi
sub esi, edx
mov ecx, esi
mov byte [ecx + eax], 0
mov dl, byte [ecx + eax - 1]
dec ecx
cmp dl, 0x22
je 0x405952
cmp dl, 0x20
je 0x405952
mov esi, ecx
mov cl, dl
test cl, cl
jle 0x405988
lea ecx, [ecx]
cmp dl, 0x5c
je 0x405988
cmp dl, 0x3a
je 0x405988
cmp dl, 0x2f
je 0x405988
mov dl, byte [esi + eax - 1]
dec esi
test dl, dl
jg 0x405970
lea eax, [esi + eax + 1]
lea edx, [esp + 0x90]
sub edx, eax
mov cl, byte [eax]
mov byte [eax + edx], cl
inc eax
test cl, cl
jne 0x405995
lea eax, [esp + 0x90]
lea edx, [eax + 1]
lea esp, [esp]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x4059b0
sub eax, edx
xor dl, dl
xor ecx, ecx
test eax, eax
jle 0x4059ea
mov bl, 0x2e
cmp byte [esp + ecx + 0x90], bl
jne 0x4059ce
mov dl, 1
inc ecx
cmp ecx, eax
jl 0x4059c3
test dl, dl
je 0x4059ea
cmp byte [esp + eax + 0x90], bl
je 0x4059ea
dec eax
cmp byte [esp + eax + 0x90], bl
jne 0x4059e0
mov edx, dword [str..cfg]
mov cl, byte [0x42da8c]
lea eax, [esp + eax + 0x90]
mov dword [eax], edx
mov byte [eax + 4], cl
lea eax, [esp + 0x90]
lea edx, [eax + 1]
lea esp, [esp]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x405a10
sub eax, edx
mov byte [esp + eax + 0x91], cl
call dword [sym.imp.KERNEL32.dll_GetLogicalDrives]
mov dl, byte [esp + 0x48]
push 0x103
mov ebx, eax
lea eax, [esp + 0x2f9]
push 0
push eax
mov byte [esp + 0x300], dl
call fcn.0040b3c0
add esp, 0xc
mov edx, 0x1a
nop
test bl, 1
je 0x405a73
xor eax, eax
jmp 0x405a60
mov cl, byte [esp + eax + 0x2f4]
mov byte [esp + eax + 0x194], cl
inc eax
test cl, cl
jne 0x405a60
inc byte [esp + 0x2f4]
shr ebx, 1
dec edx
jne 0x405a50
mov ecx, dword [esp + 0x4c]
mov ebx, dword [esp + 0x54]
test dword [0x43d3c4], ecx
je 0x405b24
push 5
push ebx
call dword [sym.imp.USER32.dll_GetWindow]
mov esi, eax
test esi, esi
je 0x405b24
mov ebp, dword [sym.imp.USER32.dll_GetClassNameA]
mov edi, dword [sym.imp.KERNEL32.dll_lstrcmpiA]
push 0x31
lea edx, [esp + 0x94]
push edx
push esi
call ebp
push str.Static
lea eax, [esp + 0x94]
push eax
call edi
test eax, eax
je 0x405b0b
push 0x42da78
lea ecx, [esp + 0x94]
push ecx
call edi
test eax, eax
je 0x405b0b
push str.Edit
lea edx, [esp + 0x94]
push edx
call edi
test eax, eax
je 0x405b0b
push str.RichEdit
lea eax, [esp + 0x94]
push eax
call edi
test eax, eax
js 0x405b15
mov dword [0x43d3c0], 1
push 2
push esi
call dword [sym.imp.USER32.dll_GetWindow]
mov esi, eax
test esi, esi
jne 0x405ab2
cmp dword [0x43d3c0], 0
je 0x405b49
push ebx
call dword [sym.imp.USER32.dll_GetMenu]
mov esi, eax
push esi
call dword [sym.imp.USER32.dll_DestroyMenu]
test esi, esi
je 0x405b49
push esi
push ebx
call dword [sym.imp.USER32.dll_SetMenu]
cmp dword [0x43d3c4], 0
je 0x405b82
mov edi, dword [sym.imp.KERNEL32.dll_GetProcessHeap]
push 0x401
push 1
call edi
push eax
call dword [sym.imp.KERNEL32.dll_HeapAlloc]
mov esi, eax
push esi
push 0
push 0xc
push ebx
call dword [sym.imp.USER32.dll_SendMessageA]
push esi
push 0
call edi
push eax
call dword [sym.imp.KERNEL32.dll_HeapFree]
mov eax, dword [esp + 0x48]
mov esi, dword [esp + 0x1078]
movzx edi, ax
test ax, ax
jne 0x405b9e
call dword [sym.imp.KERNEL32.dll_GetUserDefaultLangID]
movzx edi, ax
mov ebx, dword [sym.imp.KERNEL32.dll_FindResourceExW]
push edi
lea ecx, [esp + 0x5c8]
push ecx
lea edx, [esp + 0x2fc]
push edx
push esi
call ebx
test eax, eax
jne 0x405bda
mov ecx, 0x400
cmp di, cx
je 0x405bda
push ecx
lea edx, [esp + 0x5c8]
push edx
lea eax, [esp + 0x2fc]
push eax
push esi
call ebx
push eax
push esi
call dword [sym.imp.KERNEL32.dll_LoadResource]
mov ecx, dword [esp + 0x4c]
mov edi, dword [esp + 0x54]
mov ebx, dword [sym.imp.USER32.dll_SendMessageA]
mov esi, dword [0x43d3c0]
lea edx, [esp + 0x2d8]
push edx
push 0xffffffffffffffff
push 0x100d
push edi
mov dword [esp + 0x2f0], ecx
call ebx
lea edx, [esp + 0x90]
push edx
push eax
push 0x102d
lea ecx, [esp + 0x8c]
mov ebp, 0x10
push edi
mov dword [esp + 0xa8], esi
mov dword [esp + 0xb8], ebp
mov dword [esp + 0xb4], ecx
call ebx
mov eax, dword [esp + 0x5c]
lea ecx, [esp + 0x2d8]
push ecx
push 0xffffffffffffffff
push 0x100d
push edi
mov dword [esp + 0x2f0], eax
call ebx
lea ecx, [esp + 0x90]
push ecx
push eax
push 0x102d
lea edx, [esp + 0x40]
push edi
mov dword [esp + 0xa8], esi
mov dword [esp + 0xb8], ebp
mov dword [esp + 0xb4], edx
call ebx
mov edx, dword [esp + 0x1084]
mov eax, dword [esp + 0x1078]
xor esi, esi
push 0x2b0
lea ecx, [esp + 0x2fc]
push esi
push ecx
mov dword [esp + 0x50], edx
mov dword [esp + 0x1c], eax
xor ebp, ebp
mov dword [esp + 0x80], esi
lea ebx, [esi + 1]
mov dword [esp + 0x300], esi
call fcn.0040b3c0
add esp, 0xc
push 0x4000
push 0x2b4
lea edx, [esp + 0x2fc]
push edx
push 0xffffffffffffffff
lea eax, [esp + 0x5d4]
push eax
call dword [sym.imp.SHELL32.dll_SHGetFileInfoW]
lea ecx, [esp + 0x6c]
push ecx
lea edx, [esp + 0x84]
push edx
push 2
call dword [sym.imp.SHELL32.dll_SHGetImageList]
test eax, eax
je 0x405f0c
test edi, edi
je 0x405d1e
push ebp
push str.Win32
push str.start_getting_HBITMAP
push ebp
call dword [sym.imp.USER32.dll_MessageBoxW]
push 0
call dword [sym.imp.USER32.dll_GetDC]
mov dword [esp + 0x58], eax
cmp eax, 1
jbe 0x405d56
mov eax, dword [0x43d3d8]
sub eax, dword [esp + 0x48]
mov ecx, dword [esp + 0x4c]
add eax, dword [esp + 0x5c]
mov edx, dword [esp + 0x10]
mov dword [0x43d3c0], eax
lea eax, [ecx + edx + 0x10]
mov ebx, 0x100
mov dword [esp + 0x4c], eax
mov ecx, dword [esp + 0x58]
push ecx
call dword [sym.imp.GDI32.dll_CreateCompatibleDC]
mov edi, eax
test edi, edi
je 0x405d88
mov edx, dword [0x43d3c4]
mov eax, dword [esp + 0x10]
lea ecx, [eax + edx - 1]
mov edx, dword [esp + 0x78]
shl ebx, 4
mov esi, ebx
mov dword [esp + 0x44], ecx
mov dword [0x43d3c4], edx
mov eax, dword [esp + 0x58]
push eax
push 0
call dword [sym.imp.USER32.dll_ReleaseDC]
mov edx, dword [esp + 0x64]
lea ecx, [esp + 0x2d8]
push ecx
push edx
call dword [sym.imp.USER32.dll_GetIconInfo]
mov ebx, dword [esp + 0x48]
test eax, eax
mov eax, dword [0x43d3c0]
jne 0x405ddb
mov ecx, eax
sub ecx, dword [esp + 0x5c]
lea ebp, [esi + esi*2]
imul ecx, dword [esp + 0x44]
shl ebp, 4
add ebp, dword [0x43d3d4]
lea edx, [ecx + ebx*2]
add ebp, dword [0x43d3cc]
mov dword [0x43d3c4], edx
mov edx, dword [esp + 0x2e0]
mov ecx, dword [esp + 0x2dc]
add edx, edx
mov dword [esp + 0x64], edx
mov edx, dword [0x43d3c4]
lea eax, [eax + edx - 4]
mov dword [0x43d3c0], eax
shl esi, 4
add ecx, ecx
lea eax, [ebx + esi*4]
add eax, esi
mov dword [esp + 0x58], eax
xor eax, eax
push eax
mov dword [esp + 0x2a0], ecx
mov ecx, dword [esp + 0x68]
push eax
mov dword [esp + 0x2a8], ecx
lea ecx, [esp + 0x3c]
push ecx
push eax
lea edx, [esp + 0x2a8]
push edx
push edi
mov dword [esp + 0x2b0], 0x28
mov dword [esp + 0x2bc], 0x200001
mov dword [esp + 0x2c0], eax
mov dword [esp + 0x2c4], eax
mov dword [esp + 0x2c8], eax
mov dword [esp + 0x2cc], eax
mov dword [esp + 0x2d0], eax
mov dword [esp + 0x2d4], eax
call dword [sym.imp.GDI32.dll_CreateDIBSection]
mov dword [esp + 0x10], eax
cmp eax, edi
je 0x405e9d
mov eax, dword [0x43d3c4]
lea ecx, [eax + eax - 4]
mov eax, dword [esp + 0x54]
sub ecx, eax
sub ecx, ebx
lea edx, [eax + esi*4]
mov dword [0x43d3c4], ecx
mov dword [esp + 0x74], edx
mov eax, dword [esp + 0x10]
push eax
push edi
call dword [sym.imp.GDI32.dll_SelectObject]
mov ecx, dword [esp + 0x64]
push ecx
push 0
push 0
push edi
mov esi, eax
call dword [sym.imp.USER32.dll_DrawIcon]
mov edx, dword [esp + 0x2e4]
push edx
call dword [sym.imp.GDI32.dll_DeleteObject]
mov eax, dword [esp + 0x2e8]
push eax
call dword [sym.imp.GDI32.dll_DeleteObject]
push esi
push edi
call dword [sym.imp.GDI32.dll_SelectObject]
test esi, esi
jne 0x405ef8
mov ecx, dword [esp + 0x58]
mov edx, dword [esp + 0x74]
push ecx
push ebp
push edx
call dword [sym.imp.KERNEL32.dll_HeapCreate]
mov dword [esp + 0x58], eax
mov eax, dword [esp + 0x10]
push eax
call dword [sym.imp.GDI32.dll_DeleteObject]
push edi
call dword [sym.imp.GDI32.dll_DeleteDC]
jmp 0x405f10
mov ebx, dword [esp + 0x48]
cmp dword [0x43d3d8], 0
jne 0x4060b9
xor esi, esi
push 0x2c
lea ecx, [esp + 0x98]
push esi
push ecx
mov dword [esp + 0x50], 0x707041
mov dword [esp + 0x9c], esi
call fcn.0040b3c0
mov ebp, dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
add esp, 0xc
push esi
call ebp
mov edi, dword [sym.imp.USER32.dll_LoadIconA]
push 0x7f00
lea edx, [esp + 0x48]
push esi
mov dword [esp + 0xac], eax
mov dword [esp + 0xc0], edx
mov dword [esp + 0x9c], 0x808
mov dword [esp + 0x98], 0x30
call edi
push 0x7f05
push esi
mov dword [esp + 0xb0], eax
call edi
push 0x7f00
push esi
mov dword [esp + 0xc4], eax
call dword [sym.imp.USER32.dll_LoadCursorA]
push 0xf
mov dword [esp + 0xb0], eax
mov dword [esp + 0xb8], esi
mov dword [esp + 0xa0], esi
mov dword [esp + 0xa4], esi
call dword [sym.imp.USER32.dll_GetSysColorBrush]
mov dword [esp + 0xb0], eax
lea eax, [esp + 0x90]
push eax
call dword [sym.imp.USER32.dll_RegisterClassExA]
push esi
push esi
call ebp
mov ecx, dword [esp + 0x38]
push eax
push esi
push ecx
push 0x190
push 0x190
push 0x15e
push 0x15e
push 0x94c800c4
push 0x42da0c
lea edx, [esp + 0x6c]
push edx
push 0x10101
call dword [sym.imp.USER32.dll_CreateWindowExA]
mov esi, eax
push 5
push esi
call dword [sym.imp.USER32.dll_ShowWindow]
mov edi, dword [sym.imp.USER32.dll_UpdateWindow]
push esi
call edi
push 0
push 0
call ebp
push eax
push 0
push esi
push 0x1e
push 0x5a
push 0x96
push 0x96
push 0x50000000
push 0x42da08
push str.BUTTON
push 0
call dword [sym.imp.USER32.dll_CreateWindowExA]
mov esi, eax
push 5
push esi
call dword [sym.imp.USER32.dll_ShowWindow]
push esi
call edi
test ebx, ebx
je 0x4060a9
mov esi, dword [sym.imp.USER32.dll_GetMessageA]
push 0
push 0
push 0
lea eax, [esp + 0x20]
push eax
call esi
test eax, eax
je 0x4060a9
mov edi, dword [sym.imp.USER32.dll_TranslateMessage]
lea ecx, [esp + 0x14]
push ecx
call edi
lea edx, [esp + 0x14]
push edx
call dword [sym.imp.USER32.dll_DispatchMessageA]
push 0
push 0
push 0
lea eax, [esp + 0x20]
push eax
call esi
test eax, eax
jne 0x406086
push 0
call ebp
push eax
lea ecx, [esp + 0x48]
push ecx
call dword [sym.imp.USER32.dll_UnregisterClassA]
mov ebp, dword [sym.imp.GDI32.dll_GetStockObject]
push 0x43d3dc
push 0x3c
push 0xb
call ebp
push eax
call dword [sym.imp.GDI32.dll_GetObjectA]
movzx edx, byte [0x43d3f7]
mov ecx, dword [esp + 0x34]
mov edi, dword [esp + 0x5c]
push 0x43d3f8
push edx
movzx edx, byte [0x43d3f6]
push edx
movzx edx, byte [0x43d3f5]
push edx
movzx edx, byte [0x43d3f4]
push edx
movzx edx, byte [0x43d3f3]
mov eax, ecx
sub eax, edi
push edx
movzx edx, byte [0x43d3f2]
neg eax
sbb eax, eax
push edx
movzx edx, byte [0x43d3f1]
and eax, 0xfffffed4
add eax, 0x2bc
cmp ecx, dword [esp + 0x68]
push edx
mov edx, dword [0x43d3e8]
sete cl
mov byte [0x43d3f0], cl
movzx ecx, cl
push ecx
mov ecx, dword [0x43d3e0]
push eax
push edx
mov edx, dword [0x43d3dc]
mov dword [0x43d3ec], eax
mov eax, dword [0x43d3e4]
push eax
push ecx
push edx
call dword [sym.imp.GDI32.dll_CreateFontA]
mov eax, dword [0x43d3c0]
mov edx, dword [esp + 0x54]
lea edx, [eax + edx*8]
lea ecx, [edi + edi*8]
imul edi, ebx
lea ecx, [edx + ecx*2]
mov edx, dword [esp + 0x78]
add ecx, edx
add ecx, ebx
add ecx, ecx
mov dword [esp + 0x4c], ecx
mov ecx, dword [esp + 0x7c]
add eax, ebx
lea esi, [ecx + eax*4]
push 5
add esi, edx
call ebp
push eax
push 1
call dword [sym.imp.GDI32.dll_SelectObject]
mov dword [esp + 0x64], eax
xor eax, eax
push eax
push eax
push eax
push eax
push 1
call dword [sym.imp.GDI32.dll_Ellipse]
mov edx, dword [esp + 0x54]
add edx, ebx
je 0x4061c8
mov eax, dword [esp + 0x5c]
sub eax, ebx
add eax, dword [esp + 0x78]
imul eax, dword [0x43d3d4]
add edi, eax
push 4
call ebp
push eax
push 1
call dword [sym.imp.GDI32.dll_SelectObject]
xor eax, eax
mov eax, 0xfffffffe
push eax
xor eax, eax
mov eax, 0xfffffffe
push eax
push 2
push 2
push 1
call dword [sym.imp.GDI32.dll_Ellipse]
lea ecx, [esi + 1]
test ecx, ecx
js 0x40621a
mov edx, dword [0x43d3c0]
sub edx, dword [esp + 0x5c]
mov eax, dword [esp + 0x78]
lea ecx, [edx + eax + 1]
imul ecx, ebx
lea edx, [ecx + esi + 0x100]
mov dword [0x43d3c0], edx
mov eax, dword [esp + 0x64]
push eax
push 1
call dword [sym.imp.GDI32.dll_SelectObject]
mov ecx, dword [0x43d3c0]
mov edx, dword [esp + 0x5c]
xor eax, eax
mov ebp, 0x3b7
sub ebp, edx
sub ebp, dword [esp + 0x4c]
mov edx, dword [0x43d3d8]
lea edx, [edx + ebp*2]
mov ebp, dword [esp + 0x78]
add edx, ebp
imul edx, esi
lea ecx, [ecx + edx - 0xa8]
cmp eax, 1
jle 0x40626b
mov edi, dword [esp + 0x70]
imul edi, dword [esp + 0x54]
add edi, 0x100
inc eax
mov edx, ebx
mov dword [esp + 0x5c], edx
cmp eax, 0x10
jle 0x406233
mov esi, dword [esp + 0x4c]
sub esi, ebp
add esi, ebx
imul esi, dword [0x43d3d4]
add esi, 0x10
push 5
imul esi, edi
mov dword [0x43d3c0], ecx
call dword [sym.imp.GDI32.dll_GetStockObject]
push eax
push 1
call dword [sym.imp.GDI32.dll_SelectObject]
mov edi, eax
test edi, edi
je 0x4062bf
mov eax, dword [esp + 0x60]
mov esi, dword [esp + 0x50]
lea eax, [eax + eax*2 + 0xf]
sub eax, ebx
add eax, ebp
mov dword [esp + 0x4c], eax
jmp 0x4062c5
lea eax, [esi + esi*8]
lea esi, [ebx + eax*2]
xor eax, eax
push eax
push eax
push eax
push eax
push 1
call dword [sym.imp.GDI32.dll_Ellipse]
cmp esi, ebx
jle 0x4062e1
mov ecx, dword [esp + 0x58]
push esi
push 8
push ecx
jmp 0x4062ea
mov edx, dword [esp + 0x58]
push 0
push 8
push edx
call dword [sym.imp.KERNEL32.dll_HeapAlloc]
push edi
push 1
mov dword [esp + 0x60], eax
call dword [sym.imp.GDI32.dll_SelectObject]
mov ecx, dword [0x43d3d4]
lea edx, [esp + 0x2f4]
mov dword [esp + 0x1c], edx
lea edx, [esp + 0x194]
xor eax, eax
mov dword [esp + 0x20], edx
lea edx, [esp + 0x2f4]
mov dword [esp + 0x14], ecx
mov dword [esp + 0x18], eax
mov dword [esp + 0x24], 0x41
mov dword [esp + 0x2c], edx
test ecx, ecx
je 0x406345
lea eax, [esp + 0x14]
push eax
call dword [sym.imp.SHELL32.dll_SHBrowseForFolderA]
lea ecx, [esp + 0x2f4]
push ecx
push eax
call dword [sym.imp.SHELL32.dll_SHGetPathFromIDListA]
mov edx, dword [0x43d3cc]
mov eax, dword [esp + 0x34]
imul eax, dword [esp + 0x34]
add edx, 0xfffffffa
imul edx, dword [0x43d3d0]
cmp eax, edx
jne 0x40637d
mov ecx, dword [0x43d3d8]
sub dword [0x43d3c4], ecx
push 1
call dword [sym.imp.WINMM.dll_timeBeginPeriod]
call dword [sym.imp.WINMM.dll_timeGetTime]
mov ecx, dword [0x43d3c0]
mov edx, dword [0x43d3c4]
mov ebp, dword [esp + 0x34]
lea eax, [edx + ecx*2]
add eax, ecx
cmp eax, dword [0x43d3d8]
jb 0x4063b5
mov edx, dword [esp + 0x34]
imul edx, ebp
sub dword [0x43d3c4], edx
mov esi, dword [0x43d3cc]
mov edi, dword [0x43d3d4]
mov ebx, esi
test esi, esi
je 0x4063f6
mov eax, dword [esi]
test eax, eax
je 0x4063f6
lea ecx, [ecx]
push eax
push 0
push 0x143
push ebx
push edi
call dword [sym.imp.USER32.dll_SendDlgItemMessageA]
mov eax, dword [esi + 4]
add esi, 4
test eax, eax
jne 0x4063d0
mov ecx, dword [0x43d3c0]
mov esi, dword [0x43d3cc]
cmp byte [esp + 0xac], 0x40
je 0x40641c
lea eax, [esp + 0xac]
push eax
push 0
push 0x143
push ecx
call dword [sym.imp.USER32.dll_SendMessageA]
mov esi, dword [0x43d3cc]
mov ecx, dword [esp + 0x34]
add esi, 0xfffffffa
imul ecx, ebp
imul esi, dword [0x43d3d0]
cmp ecx, esi
jne 0x40643d
mov edx, dword [0x43d3d8]
sub dword [0x43d3c4], edx
push 1
call dword [sym.imp.WINMM.dll_timeBeginPeriod]
call dword [sym.imp.WINMM.dll_timeGetTime]
mov ecx, dword [0x43d3d4]
lea edx, [esp + 0x2f4]
mov dword [esp + 0x1c], edx
lea edx, [esp + 0x194]
xor eax, eax
mov dword [esp + 0x20], edx
lea edx, [esp + 0x2f4]
mov dword [esp + 0x14], ecx
mov dword [esp + 0x18], eax
mov dword [esp + 0x24], 0x41
mov dword [esp + 0x2c], edx
test ecx, ecx
je 0x406493
lea eax, [esp + 0x14]
push eax
call dword [sym.imp.SHELL32.dll_SHBrowseForFolderA]
lea ecx, [esp + 0x2f4]
push ecx
push eax
call dword [sym.imp.SHELL32.dll_SHGetPathFromIDListA]
mov esi, dword [0x43d3cc]
mov edi, dword [0x43d3d4]
mov ebx, esi
test esi, esi
je 0x4064de
mov eax, dword [esi]
test eax, eax
je 0x4064de
mov ebp, dword [sym.imp.USER32.dll_SendDlgItemMessageA]
push eax
push 0
push 0x143
push ebx
push edi
call ebp
mov eax, dword [esi + 4]
add esi, 4
test eax, eax
jne 0x4064c0
mov esi, dword [0x43d3cc]
jmp 0x4064e4
mov ebp, dword [sym.imp.USER32.dll_SendDlgItemMessageA]
cmp byte [esp + 0xac], 0x40
je 0x40650f
mov eax, dword [0x43d3c0]
lea edx, [esp + 0xac]
push edx
push 0
push 0x143
push eax
call dword [sym.imp.USER32.dll_SendMessageA]
mov esi, dword [0x43d3cc]
mov edi, dword [0x43d3d4]
mov ebx, esi
test esi, esi
je 0x40653d
mov eax, dword [esi]
test eax, eax
je 0x40653d
push eax
push 0
push 0x143
push ebx
push edi
call ebp
mov eax, dword [esi + 4]
add esi, 4
test eax, eax
jne 0x406521
mov esi, dword [0x43d3cc]
cmp byte [esp + 0xac], 0x40
je 0x406569
mov edx, dword [0x43d3c0]
lea ecx, [esp + 0xac]
push ecx
push 0
push 0x143
push edx
call dword [sym.imp.USER32.dll_SendMessageA]
mov esi, dword [0x43d3cc]
cmp dword [esp + 0x34], 0
jbe 0x406574
sub dword [esp + 0x10], esi
mov edi, dword [esp + 0x34]
add esi, 0xfffffffa
imul esi, dword [0x43d3d0]
mov eax, edi
imul eax, dword [esp + 0x34]
cmp eax, esi
jne 0x406599
mov ecx, dword [0x43d3d8]
sub dword [0x43d3c4], ecx
push 1
call dword [sym.imp.WINMM.dll_timeBeginPeriod]
call dword [sym.imp.WINMM.dll_timeGetTime]
mov bl, byte [0x43d3cc]
push 0x103
lea edx, [esp + 0x199]
push 0
push edx
mov byte [esp + 0x1a0], bl
call fcn.0040b3c0
push 0x103
lea eax, [esp + 0x305]
push 0
push eax
mov byte [esp + 0x30c], bl
call fcn.0040b3c0
mov ebp, dword [sym.imp.KERNEL32.dll_lstrlenA]
add esp, 0x18
lea ecx, [esp + 0x2f4]
push ecx
call ebp
mov esi, eax
cmp esi, 0x7e
jg 0x406643
mov ebx, dword [sym.imp.KERNEL32.dll_lstrcpyA]
lea edx, [esp + 0x2f4]
push edx
lea eax, [esp + 0x94]
push eax
call ebx
push 0x42d9d8
lea esi, [esp + esi + 0x94]
push esi
call ebx
cmp dword [0x43d3cc], 0
je 0x406643
lea ecx, [ecx]
lea ecx, [esp + 0x194]
push ecx
call ebp
cmp dword [0x43d3cc], 0
jne 0x406630
mov eax, dword [0x43d3c0]
mov edx, dword [0x43d3c4]
lea ecx, [edx + eax*2]
add ecx, eax
cmp ecx, dword [0x43d3d8]
jb 0x406666
imul edi, dword [esp + 0x10]
sub dword [0x43d3c4], edi
mov ecx, dword [0x43d3d4]
lea edx, [esp + 0x2f4]
mov dword [esp + 0x1c], edx
lea edx, [esp + 0x194]
xor ebx, ebx
mov dword [esp + 0x20], edx
xor eax, eax
mov edi, 0x41
lea edx, [esp + 0x2f4]
mov dword [esp + 0x14], ecx
mov dword [esp + 0x18], ebx
mov dword [esp + 0x24], edi
mov dword [esp + 0x2c], edx
cmp ecx, ebx
je 0x4066b1
lea eax, [esp + 0x14]
push eax
call dword [sym.imp.SHELL32.dll_SHBrowseForFolderA]
mov esi, dword [sym.imp.SHELL32.dll_SHGetPathFromIDListA]
lea ecx, [esp + 0x2f4]
push ecx
push eax
call esi
mov ecx, dword [0x43d3d4]
lea edx, [esp + 0x2f4]
mov dword [esp + 0x1c], edx
lea edx, [esp + 0x194]
mov dword [esp + 0x20], edx
xor eax, eax
lea edx, [esp + 0x2f4]
mov dword [esp + 0x14], ecx
mov dword [esp + 0x18], ebx
mov dword [esp + 0x24], edi
mov dword [esp + 0x2c], edx
cmp ecx, ebx
je 0x406706
lea eax, [esp + 0x14]
push eax
call dword [sym.imp.SHELL32.dll_SHBrowseForFolderA]
lea ecx, [esp + 0x2f4]
push ecx
push eax
call esi
mov eax, dword [0x43d3c0]
mov ecx, dword [0x43d3c4]
mov edi, dword [esp + 0x34]
lea edx, [ecx + eax*2]
add edx, eax
cmp edx, dword [0x43d3d8]
jb 0x40673c
mov edx, dword [esp + 0x34]
imul edx, edi
sub ecx, edx
mov dword [0x43d3c4], ecx
mov esi, edi
imul esi, ecx
mov ecx, dword [0x43d3d0]
lea edx, [ecx*4]
sub esi, edx
push 1
add esi, eax
call dword [sym.imp.WINMM.dll_timeBeginPeriod]
call dword [sym.imp.WINMM.dll_timeGetTime]
imul esi, edi
mov eax, dword [0x43d3cc]
lea ecx, [eax - 6]
imul ecx, dword [0x43d3d0]
cmp esi, ecx
jne 0x406782
mov edx, dword [0x43d3d8]
sub dword [0x43d3c4], edx
mov edi, dword [0x43d3d4]
mov ebx, eax
mov esi, eax
test eax, eax
je 0x4067b0
mov eax, dword [esi]
test eax, eax
je 0x4067b0
push eax
push 0
push 0x143
push ebx
push edi
call dword [sym.imp.USER32.dll_SendDlgItemMessageA]
mov eax, dword [esi + 4]
add esi, 4
test eax, eax
jne 0x406796
cmp byte [esp + 0xac], 0x40
je 0x4067d6
mov ecx, dword [0x43d3c0]
lea eax, [esp + 0xac]
push eax
push 0
push 0x143
push ecx
call dword [sym.imp.USER32.dll_SendMessageA]
mov ecx, dword [0x43d3d4]
lea edx, [esp + 0x2f4]
mov dword [esp + 0x1c], edx
lea edx, [esp + 0x194]
xor eax, eax
mov dword [esp + 0x20], edx
lea edx, [esp + 0x2f4]
mov dword [esp + 0x14], ecx
mov dword [esp + 0x18], eax
mov dword [esp + 0x24], 0x41
mov dword [esp + 0x2c], edx
cmp ecx, eax
je 0x40681e
lea eax, [esp + 0x14]
push eax
call dword [sym.imp.SHELL32.dll_SHBrowseForFolderA]
lea ecx, [esp + 0x2f4]
push ecx
push eax
call dword [sym.imp.SHELL32.dll_SHGetPathFromIDListA]
mov edx, dword [esp + 0x34]
cmp edx, dword [esp + 0x34]
jne 0x40683b
dec dword [esp + 0x10]
mov ecx, dword [0x43d3c0]
mov eax, dword [0x43d3c4]
lea edx, [eax + ecx*2]
add edx, ecx
cmp edx, dword [0x43d3d8]
jb 0x406862
mov eax, dword [esp + 0x34]
imul eax, dword [esp + 0x10]
sub dword [0x43d3c4], eax
mov esi, dword [0x43d3cc]
mov edi, dword [0x43d3d4]
mov ebx, esi
test esi, esi
je 0x4068a6
mov eax, dword [esi]
test eax, eax
je 0x4068a6
lea ebx, [ebx]
push eax
push 0
push 0x143
push ebx
push edi
call dword [sym.imp.USER32.dll_SendDlgItemMessageA]
mov eax, dword [esi + 4]
add esi, 4
test eax, eax
jne 0x406880
mov ecx, dword [0x43d3c0]
mov esi, dword [0x43d3cc]
cmp byte [esp + 0xac], 0x40
je 0x4068cc
lea edx, [esp + 0xac]
push edx
push 0
push 0x143
push ecx
call dword [sym.imp.USER32.dll_SendMessageA]
mov esi, dword [0x43d3cc]
mov eax, dword [esp + 0x34]
imul eax, dword [esp + 0x34]
add esi, 0xfffffffa
imul esi, dword [0x43d3d0]
cmp eax, esi
jne 0x4068ef
mov ecx, dword [0x43d3d8]
sub dword [0x43d3c4], ecx
push 1
call dword [sym.imp.WINMM.dll_timeBeginPeriod]
call dword [sym.imp.WINMM.dll_timeGetTime]
mov bl, byte [0x43d3cc]
push 0x103
lea edx, [esp + 0x199]
push 0
push edx
mov byte [esp + 0x1a0], bl
call fcn.0040b3c0
push 0x103
lea eax, [esp + 0x305]
push 0
push eax
mov byte [esp + 0x30c], bl
call fcn.0040b3c0
add esp, 0x18
lea ecx, [esp + 0x2f4]
push ecx
call ebp
mov edi, dword [sym.imp.KERNEL32.dll_lstrcpyA]
mov esi, eax
cmp esi, 0x7e
jg 0x406996
lea edx, [esp + 0x2f4]
push edx
lea eax, [esp + 0x94]
push eax
call edi
push 0x42d9d8
lea esi, [esp + esi + 0x94]
push esi
call edi
mov ebx, dword [0x43d3cc]
test ebx, ebx
je 0x40699c
mov edi, edi
lea ecx, [esp + 0x194]
push ecx
call ebp
mov ebx, dword [0x43d3cc]
test ebx, ebx
jne 0x406980
jmp 0x40699c
mov ebx, dword [0x43d3cc]
mov edx, dword [esp + 0x34]
cmp edx, dword [esp + 0x34]
jne 0x4069aa
dec dword [esp + 0x10]
mov eax, dword [0x43d3c0]
mov ecx, dword [0x43d3c4]
lea edx, [ecx + eax*2]
add edx, eax
cmp edx, dword [0x43d3d8]
jb 0x4069d1
mov eax, dword [esp + 0x34]
imul eax, dword [esp + 0x10]
sub dword [0x43d3c4], eax
push 0x103
lea ecx, [esp + 0x199]
push 0
push ecx
mov byte [esp + 0x1a0], bl
call fcn.0040b3c0
push 0x103
lea edx, [esp + 0x305]
push 0
push edx
mov byte [esp + 0x30c], bl
call fcn.0040b3c0
add esp, 0x18
lea eax, [esp + 0x2f4]
push eax
call ebp
mov esi, eax
cmp esi, 0x7e
jg 0x406a58
lea ecx, [esp + 0x2f4]
push ecx
lea edx, [esp + 0x94]
push edx
call edi
push 0x42d9d8
lea esi, [esp + esi + 0x94]
push esi
call edi
cmp dword [0x43d3cc], 0
je 0x406a58
lea eax, [esp + 0x194]
push eax
call ebp
cmp dword [0x43d3cc], 0
jne 0x406a45
push 1
call dword [sym.imp.WINMM.dll_timeBeginPeriod]
call dword [sym.imp.WINMM.dll_timeGetTime]
mov bl, byte [0x43d3cc]
push 0x103
lea ecx, [esp + 0x199]
push 0
push ecx
mov byte [esp + 0x1a0], bl
call fcn.0040b3c0
push 0x103
lea edx, [esp + 0x305]
push 0
push edx
mov byte [esp + 0x30c], bl
call fcn.0040b3c0
add esp, 0x18
lea eax, [esp + 0x2f4]
push eax
call ebp
mov esi, eax
cmp esi, 0x7e
jg 0x406af7
lea ecx, [esp + 0x2f4]
push ecx
lea edx, [esp + 0x94]
push edx
call edi
push 0x42d9d8
lea esi, [esp + esi + 0x94]
push esi
call edi
mov esi, dword [0x43d3cc]
test esi, esi
je 0x406afd
lea eax, [esp + 0x194]
push eax
call ebp
mov esi, dword [0x43d3cc]
test esi, esi
jne 0x406ae1
jmp 0x406afd
mov esi, dword [0x43d3cc]
mov edx, dword [esp + 0x34]
imul edx, dword [esp + 0x34]
lea ecx, [esi - 6]
imul ecx, dword [0x43d3d0]
cmp edx, ecx
jne 0x406b1f
mov eax, dword [0x43d3d8]
sub dword [0x43d3c4], eax
mov edi, dword [0x43d3d4]
mov ebx, esi
test esi, esi
je 0x406b4d
mov eax, dword [esi]
test eax, eax
je 0x406b4d
mov ebp, dword [sym.imp.USER32.dll_SendDlgItemMessageA]
push eax
push 0
push 0x143
push ebx
push edi
call ebp
mov eax, dword [esi + 4]
add esi, 4
test eax, eax
jne 0x406b37
cmp byte [esp + 0xac], 0x40
je 0x406b73
mov edx, dword [0x43d3c0]
lea ecx, [esp + 0xac]
push ecx
push 0
push 0x143
push edx
call dword [sym.imp.USER32.dll_SendMessageA]
push 1
call dword [sym.imp.WINMM.dll_timeBeginPeriod]
call dword [sym.imp.WINMM.dll_timeGetTime]
mov esi, dword [esp + 0x34]
cmp dword [esp + 0x34], esi
jne 0x406b8f
dec dword [esp + 0x10]
mov ecx, dword [0x43d3d4]
lea edx, [esp + 0x2f4]
mov dword [esp + 0x1c], edx
lea edx, [esp + 0x194]
xor eax, eax
mov dword [esp + 0x20], edx
lea edx, [esp + 0x2f4]
mov dword [esp + 0x14], ecx
mov dword [esp + 0x18], eax
mov dword [esp + 0x24], 0x41
mov dword [esp + 0x2c], edx
cmp ecx, eax
je 0x406bd7
lea eax, [esp + 0x14]
push eax
call dword [sym.imp.SHELL32.dll_SHBrowseForFolderA]
lea ecx, [esp + 0x2f4]
push ecx
push eax
call dword [sym.imp.SHELL32.dll_SHGetPathFromIDListA]
mov ebx, dword [0x43d3cc]
mov eax, dword [esp + 0x34]
lea edx, [ebx - 6]
imul edx, dword [0x43d3d0]
mov ecx, eax
imul ecx, esi
cmp ecx, edx
mov edx, dword [0x43d3d8]
jne 0x406c0f
sub dword [0x43d3c4], edx
mov ebp, dword [0x43d3c0]
mov esi, dword [0x43d3c4]
lea ecx, [ebp + ebp*2]
lea edi, [ecx + esi]
cmp edi, edx
jb 0x406c33
imul eax, dword [esp + 0x10]
sub esi, eax
mov dword [0x43d3c4], esi
add ecx, esi
cmp ecx, edx
jb 0x406c4a
mov edx, dword [esp + 0x34]
imul edx, dword [esp + 0x34]
sub esi, edx
mov dword [0x43d3c4], esi
mov edi, dword [0x43d3d4]
mov esi, ebx
test ebx, ebx
je 0x406c84
mov eax, dword [esi]
test eax, eax
je 0x406c84
mov ebp, dword [sym.imp.USER32.dll_SendDlgItemMessageA]
push eax
push 0
push 0x143
push ebx
push edi
call ebp
mov eax, dword [esi + 4]
add esi, 4
test eax, eax
jne 0x406c62
mov ebp, dword [0x43d3c0]
mov ebx, dword [0x43d3cc]
cmp byte [esp + 0xac], 0x40
je 0x406caa
lea eax, [esp + 0xac]
push eax
push 0
push 0x143
push ebp
call dword [sym.imp.USER32.dll_SendMessageA]
mov ebx, dword [0x43d3cc]
push 0x103
lea ecx, [esp + 0x199]
push 0
push ecx
mov byte [esp + 0x1a0], bl
call fcn.0040b3c0
push 0x103
lea edx, [esp + 0x305]
push 0
push edx
mov byte [esp + 0x30c], bl
call fcn.0040b3c0
mov edi, dword [sym.imp.KERNEL32.dll_lstrlenA]
add esp, 0x18
lea eax, [esp + 0x2f4]
push eax
call edi
mov ebp, dword [sym.imp.KERNEL32.dll_lstrcpyA]
mov esi, eax
cmp esi, 0x7e
jg 0x406d46
lea ecx, [esp + 0x2f4]
push ecx
lea edx, [esp + 0x94]
push edx
call ebp
push 0x42d9d8
lea esi, [esp + esi + 0x94]
push esi
call ebp
mov ebx, dword [0x43d3cc]
test ebx, ebx
je 0x406d4c
jmp 0x406d30
lea eax, [esp + 0x194]
push eax
call edi
mov ebx, dword [0x43d3cc]
test ebx, ebx
jne 0x406d30
jmp 0x406d4c
mov ebx, dword [0x43d3cc]
mov edx, dword [esp + 0x34]
cmp dword [esp + 0x34], edx
jne 0x406d5a
dec dword [esp + 0x10]
mov ecx, dword [esp + 0x34]
lea eax, [ebx - 6]
imul eax, dword [0x43d3d0]
mov esi, ecx
imul esi, edx
cmp esi, eax
jne 0x406d7d
mov edx, dword [0x43d3d8]
sub dword [0x43d3c4], edx
mov edx, dword [0x43d3c0]
mov esi, dword [0x43d3c4]
lea esi, [esi + edx*2]
add esi, edx
mov edx, dword [0x43d3d8]
cmp esi, edx
jb 0x406da3
imul ecx, dword [esp + 0x10]
sub dword [0x43d3c4], ecx
mov ecx, dword [esp + 0x50]
imul ecx, dword [esp + 0x34]
cmp ecx, eax
jne 0x406db6
sub dword [0x43d3c4], edx
cmp dword [esp + 0x34], 0
jbe 0x406dc1
sub dword [esp + 0x10], ebx
push 0x103
lea edx, [esp + 0x199]
push 0
push edx
mov byte [esp + 0x1a0], bl
call fcn.0040b3c0
push 0x103
lea eax, [esp + 0x305]
push 0
push eax
mov byte [esp + 0x30c], bl
call fcn.0040b3c0
add esp, 0x18
lea ecx, [esp + 0x2f4]
push ecx
call edi
mov esi, eax
cmp esi, 0x7e
jg 0x406e48
lea edx, [esp + 0x2f4]
push edx
lea eax, [esp + 0x94]
push eax
call ebp
push 0x42d9d8
lea esi, [esp + esi + 0x94]
push esi
call ebp
cmp dword [0x43d3cc], 0
je 0x406e48
lea ecx, [esp + 0x194]
push ecx
call edi
cmp dword [0x43d3cc], 0
jne 0x406e35
push 1
call dword [sym.imp.WINMM.dll_timeBeginPeriod]
call dword [sym.imp.WINMM.dll_timeGetTime]
mov eax, dword [0x43d3c0]
mov edx, dword [0x43d3c4]
lea ecx, [edx + eax*2]
add ecx, eax
cmp ecx, dword [0x43d3d8]
jb 0x406e7d
mov eax, dword [esp + 0x10]
imul eax, dword [esp + 0x50]
sub dword [0x43d3c4], eax
mov bl, byte [0x43d3cc]
push 0x103
lea edx, [esp + 0x199]
push 0
push edx
mov byte [esp + 0x1a0], bl
call fcn.0040b3c0
push 0x103
lea eax, [esp + 0x305]
push 0
push eax
mov byte [esp + 0x30c], bl
call fcn.0040b3c0
add esp, 0x18
lea ecx, [esp + 0x2f4]
push ecx
call edi
mov esi, eax
cmp esi, 0x7e
jg 0x406f13
lea edx, [esp + 0x2f4]
push edx
lea eax, [esp + 0x94]
push eax
call ebp
push 0x42d9d8
lea esi, [esp + esi + 0x94]
push esi
call ebp
cmp dword [0x43d3cc], 0
je 0x406f13
jmp 0x406f00
lea ecx, [esp + 0x194]
push ecx
call edi
cmp dword [0x43d3cc], 0
jne 0x406f00
push 1
call dword [sym.imp.WINMM.dll_timeBeginPeriod]
call dword [sym.imp.WINMM.dll_timeGetTime]
mov esi, dword [0x43d3cc]
mov edi, dword [0x43d3d4]
xor ebp, ebp
mov ebx, esi
cmp esi, ebp
je 0x406f59
mov eax, dword [esi]
cmp eax, ebp
je 0x406f59
jmp 0x406f40
push eax
push ebp
push 0x143
push ebx
push edi
call dword [sym.imp.USER32.dll_SendDlgItemMessageA]
mov eax, dword [esi + 4]
add esi, 4
cmp eax, ebp
jne 0x406f40
cmp byte [esp + 0xac], 0x40
je 0x406f7d
mov eax, dword [0x43d3c0]
lea edx, [esp + 0xac]
push edx
push ebp
push 0x143
push eax
call dword [sym.imp.USER32.dll_SendMessageA]
mov ecx, dword [0x43d3d4]
lea edx, [esp + 0x2f4]
mov dword [esp + 0x1c], edx
lea edx, [esp + 0x194]
mov dword [esp + 0x20], edx
xor eax, eax
lea edx, [esp + 0x2f4]
mov dword [esp + 0x14], ecx
mov dword [esp + 0x18], ebp
mov dword [esp + 0x24], 0x41
mov dword [esp + 0x2c], edx
cmp ecx, ebp
je 0x406fc5
lea eax, [esp + 0x14]
push eax
call dword [sym.imp.SHELL32.dll_SHBrowseForFolderA]
lea ecx, [esp + 0x2f4]
push ecx
push eax
call dword [sym.imp.SHELL32.dll_SHGetPathFromIDListA]
mov edi, dword [sym.imp.WINMM.dll_timeBeginPeriod]
push 1
call edi
call dword [sym.imp.WINMM.dll_timeGetTime]
mov bl, byte [0x43d3cc]
push 0x103
lea edx, [esp + 0x199]
push ebp
push edx
mov byte [esp + 0x1a0], bl
call fcn.0040b3c0
push 0x103
lea eax, [esp + 0x305]
push ebp
push eax
mov byte [esp + 0x30c], bl
call fcn.0040b3c0
mov ebx, dword [sym.imp.KERNEL32.dll_lstrlenA]
add esp, 0x18
lea ecx, [esp + 0x2f4]
push ecx
call ebx
mov esi, eax
cmp esi, 0x7e
jg 0x407082
lea edx, [esp + 0x2f4]
push edx
lea eax, [esp + 0x94]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
push 0x42d9d8
lea esi, [esp + esi + 0x94]
push esi
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
cmp dword [0x43d3cc], ebp
je 0x407082
lea esp, [esp]
lea ecx, [esp + 0x194]
push ecx
call ebx
cmp dword [0x43d3cc], ebp
jne 0x407070
push 1
call edi
call dword [sym.imp.WINMM.dll_timeGetTime]
mov ecx, dword [0x43d3d4]
lea edx, [esp + 0x2f4]
mov dword [esp + 0x1c], edx
lea edx, [esp + 0x194]
mov dword [esp + 0x20], edx
xor eax, eax
lea edx, [esp + 0x2f4]
mov dword [esp + 0x14], ecx
mov dword [esp + 0x18], ebp
mov dword [esp + 0x24], 0x41
mov dword [esp + 0x2c], edx
cmp ecx, ebp
je 0x4070d4
lea eax, [esp + 0x14]
push eax
call dword [sym.imp.SHELL32.dll_SHBrowseForFolderA]
lea ecx, [esp + 0x2f4]
push ecx
push eax
call dword [sym.imp.SHELL32.dll_SHGetPathFromIDListA]
mov esi, dword [0x43d3cc]
mov edi, dword [0x43d3d4]
mov ebx, esi
cmp esi, ebp
je 0x40711f
mov eax, dword [esi]
cmp eax, ebp
je 0x40711f
jmp 0x407100
push eax
push ebp
push 0x143
push ebx
push edi
call dword [sym.imp.USER32.dll_SendDlgItemMessageA]
mov eax, dword [esi + 4]
add esi, 4
cmp eax, ebp
jne 0x407100
mov esi, dword [0x43d3cc]
cmp byte [esp + 0xac], 0x40
je 0x407149
mov eax, dword [0x43d3c0]
lea edx, [esp + 0xac]
push edx
push ebp
push 0x143
push eax
call dword [sym.imp.USER32.dll_SendMessageA]
mov esi, dword [0x43d3cc]
mov edi, dword [0x43d3d4]
mov ebx, esi
cmp esi, ebp
je 0x407179
mov eax, dword [esi]
cmp eax, ebp
je 0x407179
jmp 0x407160
push eax
push ebp
push 0x143
push ebx
push edi
call dword [sym.imp.USER32.dll_SendDlgItemMessageA]
mov eax, dword [esi + 4]
add esi, 4
cmp eax, ebp
jne 0x407160
cmp byte [esp + 0xac], 0x40
je 0x40719e
mov edx, dword [0x43d3c0]
lea ecx, [esp + 0xac]
push ecx
push ebp
push 0x143
push edx
call dword [sym.imp.USER32.dll_SendMessageA]
mov ecx, dword [0x43d3d4]
lea edx, [esp + 0x2f4]
mov dword [esp + 0x1c], edx
lea edx, [esp + 0x194]
mov dword [esp + 0x20], edx
xor eax, eax
lea edx, [esp + 0x2f4]
mov dword [esp + 0x14], ecx
mov dword [esp + 0x18], ebp
mov dword [esp + 0x24], 0x41
mov dword [esp + 0x2c], edx
cmp ecx, ebp
je 0x4071e6
lea eax, [esp + 0x14]
push eax
call dword [sym.imp.SHELL32.dll_SHBrowseForFolderA]
lea ecx, [esp + 0x2f4]
push ecx
push eax
call dword [sym.imp.SHELL32.dll_SHGetPathFromIDListA]
mov bl, byte [0x43d3cc]
push 0x103
lea edx, [esp + 0x199]
push ebp
push edx
mov byte [esp + 0x1a0], bl
call fcn.0040b3c0
push 0x103
lea eax, [esp + 0x305]
push ebp
push eax
mov byte [esp + 0x30c], bl
call fcn.0040b3c0
mov edi, dword [sym.imp.KERNEL32.dll_lstrlenA]
add esp, 0x18
lea ecx, [esp + 0x2f4]
push ecx
call edi
mov esi, eax
cmp esi, 0x7e
jg 0x407292
mov ebx, dword [sym.imp.KERNEL32.dll_lstrcpyA]
lea edx, [esp + 0x2f4]
push edx
lea eax, [esp + 0x94]
push eax
call ebx
push 0x42d9d8
lea esi, [esp + esi + 0x94]
push esi
call ebx
cmp dword [0x43d3cc], ebp
je 0x407292
push 1
call dword [sym.imp.WINMM.dll_timeBeginPeriod]
call dword [sym.imp.WINMM.dll_timeGetTime]
mov ecx, dword [0x43d3d4]
lea edx, [esp + 0x2f4]
mov dword [esp + 0x1c], edx
lea edx, [esp + 0x194]
mov dword [esp + 0x20], edx
xor eax, eax
lea edx, [esp + 0x2f4]
mov dword [esp + 0x14], ecx
mov dword [esp + 0x18], ebp
mov dword [esp + 0x24], 0x41
mov dword [esp + 0x2c], edx
cmp ecx, ebp
je 0x4072e8