Function at 0x409850
Capabilities:
Authenticate hmac

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x7fc
mov eax, dword [0x41ff40]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
mov ecx, 6
mov esi, str.__This__a_sample_string.
lea edi, [ebp - 0x7f4]
rep movsd dword es:[edi], dword [esi]
movsb byte es:[edi], byte [esi]
lea eax, [ebp - 0x7f4]
push eax
push str.Splitting_string___s__into_tokens:_n
call fcn.0040cd78
add esp, 8
push 0x41a4e0
lea ecx, [ebp - 0x7f4]
push ecx
call fcn.0040ccb7
add esp, 8
mov dword [ebp - 0x1d8], eax
cmp dword [ebp - 0x1d8], 0
je 0x4098db
mov edx, dword [ebp - 0x1d8]
push edx
push 0x41a4e8
call fcn.0040cd78
add esp, 8
push str.__._
push 0
call fcn.0040ccb7
add esp, 8
mov dword [ebp - 0x1d8], eax
jmp 0x4098a7
push str.Enter_a_sentence:
call fcn.0040cd78
add esp, 4
lea eax, [ebp - 0x110]
push eax
call fcn.0040cca1
add esp, 4
lea ecx, [ebp - 0x110]
push ecx
call fcn.0040ca00
add esp, 4
push eax
push str.The_sentence_entered_is__u_characters_long._n
call fcn.0040cd78
add esp, 8
push str.How_long_do_you_want_the_string_
call fcn.0040cd78
add esp, 4
lea edx, [ebp - 0x1c0]
push edx
push 0x41a55c
call fcn.0040c9e2
add esp, 8
mov eax, dword [ebp - 0x1c0]
add eax, 1
push eax
call fcn.0040c892
add esp, 4
mov dword [ebp - 0x6c0], eax
cmp dword [ebp - 0x6c0], 0
jne 0x40995d
push 1
call fcn.0040c7ab
mov dword [ebp - 0x1bc], 0
jmp 0x409978
mov ecx, dword [ebp - 0x1bc]
add ecx, 1
mov dword [ebp - 0x1bc], ecx
mov edx, dword [ebp - 0x1bc]
cmp edx, dword [ebp - 0x1c0]
jge 0x4099a6
call fcn.0040c4e9
cdq
mov ecx, 0x1a
idiv ecx
add edx, 0x61
mov eax, dword [ebp - 0x6c0]
add eax, dword [ebp - 0x1bc]
mov byte [eax], dl
jmp 0x409969
mov ecx, dword [ebp - 0x6c0]
add ecx, dword [ebp - 0x1c0]
mov byte [ecx], 0
mov edx, dword [ebp - 0x6c0]
push edx
push str.Random_string:__s_n
call fcn.0040cd78
add esp, 8
mov eax, dword [ebp - 0x6c0]
push eax
call fcn.0040c45b
add esp, 4
mov ecx, 0xfffffff8
sub ecx, dword [0x41e01c]
mov word [ebp - 0x630], cx
mov dword [0x41e058], 0xfffffffe
movzx edx, byte [str._0T_GJ5FQB_r_V_O_]
mov dword [0x41e028], edx
mov eax, dword [0x41e01c]
mov dword [0x41e020], eax
mov ecx, 0xf
sub ecx, dword [0x41e02c]
movzx edx, word [ebp - 0x204]
add ecx, dword [0x41e02c]
lea eax, [edx + ecx + 0x4b]
mov byte [ebp - 5], al
mov dword [0x41e030], 0x27
movzx ecx, word [ebp - 0x1d0]
add ecx, dword [ebp - 0x220]
mov edx, dword [ebp - 0x634]
lea eax, [ecx + edx + 0x4b]
mov word [ebp - 0x1a8], ax
movzx ecx, byte [ebp - 0x3c9]
mov dword [ebp - 0x130], ecx
mov edx, dword [ebp - 0x130]
add edx, 0x61
mov eax, 0x26
sub eax, dword [ebp - 0x12c]
and eax, dword [ebp - 0x628]
xor edx, eax
mov byte [ebp - 0x619], dl
movzx ecx, byte [ebp - 0x30e]
mov dword [ebp - 0x3d0], ecx
mov edx, dword [ebp - 0x224]
sub edx, dword [ebp - 0x618]
add edx, 0x42
xor edx, dword [ebp - 4]
mov word [ebp - 0x60c], dx
movzx eax, word [ebp - 0x30c]
add eax, dword [ebp - 0x634]
mov ecx, dword [ebp - 0x618]
lea edx, [eax + ecx - 0x29]
or edx, dword [ebp - 0x608]
mov byte [ebp - 0x1e9], dl
movzx eax, word [ebp - 0x6a4]
movzx ecx, word [ebp - 0x300]
sub eax, ecx
mov word [ebp - 0x5fc], ax
movzx edx, word [ebp - 0x1a8]
mov dword [ebp - 0x220], edx
mov eax, dword [0x41e04c]
sub eax, 0x17
mov dword [0x41e04c], eax
mov dword [ebp - 0x620], 4
mov dword [ebp - 0x19c], 0x3f
movzx ecx, byte [ebp - 0x215]
add ecx, dword [ebp - 0x1b8]
mov edx, dword [ebp - 0x1f0]
lea eax, [ecx + edx + 0x38]
sub eax, dword [ebp - 0x620]
mov byte [ebp - 0x30e], al
movzx ecx, word [ebp - 0x614]
movzx edx, byte [ebp - 0x3c9]
sub ecx, edx
and ecx, dword [ebp - 0x12c]
movzx eax, byte [ebp - 7]
sub eax, ecx
mov byte [ebp - 7], al
movzx ecx, word [ebp - 0x60c]
mov dword [ebp - 0x224], ecx
mov edx, dword [ebp - 0x7d4]
add edx, 0x20
mov word [ebp - 0x3c8], dx
mov eax, dword [ebp - 0x624]
xor eax, 0x44
or eax, dword [ebp - 0x224]
mov dword [ebp - 0x1e4], eax
mov ecx, dword [ebp - 0x1b0]
sub ecx, dword [ebp - 0x634]
add ecx, dword [ebp - 0x1d4]
mov dword [ebp - 0x1cc], ecx
mov edx, dword [ebp - 0x130]
mov dword [ebp - 0x66c], edx
mov eax, dword [ebp - 0x1b8]
xor eax, dword [ebp - 0x224]
mov dword [ebp - 0x1d4], eax
mov byte [ebp - 0x3d0], 0x36
mov dword [ebp - 0x68c], 3
movzx ecx, word [ebp - 0x1e8]
movzx edx, word [ebp - 0x308]
lea eax, [ecx + edx + 0x85]
mov word [ebp - 0x308], ax
mov ecx, dword [ebp - 0x21c]
mov dword [ebp - 0x1d4], ecx
mov edx, dword [ebp - 0x1b0]
mov dword [ebp - 0x224], edx
mov eax, dword [ebp - 0x628]
mov dword [ebp - 0x168], eax
mov ecx, dword [ebp - 0x1d4]
and ecx, 0x63
mov dword [ebp - 0x220], ecx
movzx edx, word [ebp - 0x124]
movzx eax, word [ebp - 0x20c]
lea ecx, [eax + edx + 0x52]
mov word [ebp - 0x20c], cx
mov edx, dword [ebp - 0x220]
add edx, 0x50
sub edx, dword [ebp - 0x3d0]
add edx, 0x21
mov word [ebp - 0x1e8], dx
mov eax, dword [ebp - 0x21c]
sub eax, dword [ebp - 0x634]
xor eax, 0x80
xor eax, 0x4d
mov byte [ebp - 0x3ca], al
lea ecx, [ebp - 0x130]
sub ecx, 0x40
movzx edx, byte [ecx]
mov dword [ebp - 0x1d4], edx
mov dword [ebp - 0x168], 0x13
mov eax, dword [ebp - 0x130]
sub eax, 0x12
mov ecx, dword [ebp - 0xc]
add ecx, dword [ebp - 0x7d4]
xor eax, ecx
mov word [ebp - 0x630], ax
mov edx, dword [ebp - 0x3d0]
mov dword [ebp - 0x130], edx
mov eax, dword [ebp - 0x624]
sub eax, dword [ebp - 0x634]
mov ecx, dword [ebp - 0x624]
add ecx, 0x12
or eax, ecx
mov word [ebp - 0x20c], ax
mov edx, dword [ebp - 0x1d4]
add edx, dword [ebp - 0x1b0]
mov dword [ebp - 0x3d0], edx
mov eax, dword [0x41e028]
push eax
mov ecx, dword [0x41e01c]
push ecx
mov edx, dword [0x41e020]
push edx
mov eax, dword [0x41e020]
push eax
call fcn.00409290
add esp, 0x10
add eax, dword [0x41e01c]
mov dword [0x41e02c], eax
mov ecx, 0x1c
sub ecx, dword [ebp - 0x618]
mov dword [0x41e01c], ecx
mov dword [ebp - 0x5b4], 0x58
movzx edx, word [ebp - 0x6bc]
sub edx, 0x41
mov dword [0x41e01c], edx
mov eax, dword [0x41e05c]
xor eax, 0x41
mov dword [0x41e05c], eax
movzx ecx, byte [ebp - 6]
mov edx, 0x51
sub edx, dword [0x41e030]
movzx eax, word [ebp - 0x600]
lea edx, [edx + eax - 0x40]
xor ecx, edx
mov byte [ebp - 7], cl
mov dword [ebp - 0x114], 0x81
push 0x2af8
mov edx, dword [0x421260]
push edx
call fcn.0040c174
mov esi, dword [ebp - 0x114]
mov ebx, 0x7d
xchg ebx, eax
mov esi, ebx
xor eax, eax
mov ecx, esi
add eax, esi
sub ebx, eax
xchg ecx, ebx
or eax, eax
or ecx, ecx
push ebx
pop ebx
mov edx, ebx
mov dword [0x421260], edx
mov eax, dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
mov dword [ebp - 0x588], eax
mov ecx, dword [sym.imp.KERNEL32.dll_SetFileAttributesW]
mov dword [ebp - 0x584], ecx
mov edx, dword [sym.imp.KERNEL32.dll_MoveFileW]
mov dword [ebp - 0x580], edx
mov eax, dword [sym.imp.KERNEL32.dll_DeleteFileW]
mov dword [ebp - 0x57c], eax
mov ecx, dword [sym.imp.KERNEL32.dll_CreateDirectoryW]
mov dword [ebp - 0x578], ecx
mov edx, dword [sym.imp.KERNEL32.dll_FindClose]
mov dword [ebp - 0x574], edx
mov eax, dword [sym.imp.KERNEL32.dll_FindNextFileW]
mov dword [ebp - 0x570], eax
mov ecx, dword [sym.imp.KERNEL32.dll_FindFirstFileW]
mov dword [ebp - 0x56c], ecx
mov edx, dword [sym.imp.KERNEL32.dll_GetFullPathNameW]
mov dword [ebp - 0x568], edx
mov eax, dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
mov dword [ebp - 0x564], eax
mov ecx, dword [sym.imp.KERNEL32.dll_FindResourceW]
mov dword [ebp - 0x560], ecx
mov edx, dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
mov dword [ebp - 0x55c], edx
mov eax, dword [sym.imp.KERNEL32.dll_FreeLibrary]
mov dword [ebp - 0x558], eax
mov ecx, dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [ebp - 0x554], ecx
mov edx, dword [sym.imp.KERNEL32.dll_LoadLibraryW]
mov dword [ebp - 0x550], edx
mov eax, dword [sym.imp.KERNEL32.dll_GetCurrentProcessId]
mov dword [ebp - 0x54c], eax
mov ecx, dword [sym.imp.KERNEL32.dll_GetLocaleInfoW]
mov dword [ebp - 0x548], ecx
mov edx, dword [sym.imp.KERNEL32.dll_GetNumberFormatW]
mov dword [ebp - 0x544], edx
mov eax, dword [sym.imp.KERNEL32.dll_ExpandEnvironmentStringsW]
mov dword [ebp - 0x540], eax
mov ecx, dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
mov dword [ebp - 0x53c], ecx
mov edx, dword [sym.imp.KERNEL32.dll_GetDateFormatW]
mov dword [ebp - 0x538], edx
mov eax, dword [sym.imp.KERNEL32.dll_GetTimeFormatW]
mov dword [ebp - 0x534], eax
mov ecx, dword [sym.imp.KERNEL32.dll_FileTimeToSystemTime]
mov dword [ebp - 0x530], ecx
mov edx, dword [sym.imp.KERNEL32.dll_FileTimeToLocalFileTime]
mov dword [ebp - 0x52c], edx
mov eax, dword [sym.imp.KERNEL32.dll_GetExitCodeProcess]
mov dword [ebp - 0x528], eax
mov ecx, dword [sym.imp.KERNEL32.dll_GetTempPathW]
mov dword [ebp - 0x524], ecx
mov edx, dword [sym.imp.KERNEL32.dll_MoveFileExW]
mov dword [ebp - 0x520], edx
mov eax, dword [sym.imp.KERNEL32.dll_Sleep]
mov dword [ebp - 0x51c], eax
mov ecx, dword [sym.imp.KERNEL32.dll_UnmapViewOfFile]
mov dword [ebp - 0x518], ecx
mov edx, dword [sym.imp.KERNEL32.dll_MapViewOfFile]
mov dword [ebp - 0x514], edx
mov eax, dword [sym.imp.KERNEL32.dll_GetCommandLineW]
mov dword [ebp - 0x510], eax
mov ecx, dword [sym.imp.KERNEL32.dll_CreateFileMappingW]
mov dword [ebp - 0x50c], ecx
mov edx, dword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [ebp - 0x508], edx
mov eax, dword [sym.imp.KERNEL32.dll_SetEnvironmentVariableW]
mov dword [ebp - 0x504], eax
mov ecx, dword [sym.imp.KERNEL32.dll_OpenFileMappingW]
mov dword [ebp - 0x500], ecx
mov edx, dword [sym.imp.KERNEL32.dll_WideCharToMultiByte]
mov dword [ebp - 0x4fc], edx
mov eax, dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
mov dword [ebp - 0x4f8], eax
mov ecx, dword [sym.imp.KERNEL32.dll_CompareStringW]
mov dword [ebp - 0x4f4], ecx
mov edx, dword [sym.imp.KERNEL32.dll_IsDBCSLeadByte]
mov dword [ebp - 0x4f0], edx
mov eax, dword [sym.imp.KERNEL32.dll_GetCPInfo]
mov dword [ebp - 0x4ec], eax
mov ecx, dword [sym.imp.KERNEL32.dll_GlobalAlloc]
mov dword [ebp - 0x4e8], ecx
mov edx, dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryW]
mov dword [ebp - 0x4e4], edx
mov eax, dword [sym.imp.KERNEL32.dll_WriteConsoleW]
mov dword [ebp - 0x4e0], eax
mov ecx, dword [sym.imp.KERNEL32.dll_GetConsoleOutputCP]
mov dword [ebp - 0x4dc], ecx
mov edx, dword [sym.imp.KERNEL32.dll_SetStdHandle]
mov dword [ebp - 0x4d8], edx
mov eax, dword [sym.imp.KERNEL32.dll_GetLocaleInfoA]
mov dword [ebp - 0x4d4], eax
mov ecx, dword [sym.imp.KERNEL32.dll_GetStringTypeW]
mov dword [ebp - 0x4d0], ecx
mov edx, dword [sym.imp.KERNEL32.dll_GetStringTypeA]
mov dword [ebp - 0x4cc], edx
mov eax, dword [sym.imp.KERNEL32.dll_LoadLibraryA]
mov dword [ebp - 0x4c8], eax
mov ecx, dword [sym.imp.KERNEL32.dll_GetConsoleMode]
mov dword [ebp - 0x4c4], ecx
mov edx, dword [sym.imp.KERNEL32.dll_GetConsoleCP]
mov dword [ebp - 0x4c0], edx
mov eax, dword [sym.imp.KERNEL32.dll_InitializeCriticalSectionAndSpinCount]
mov dword [ebp - 0x4bc], eax
mov ecx, dword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
mov dword [ebp - 0x4b8], ecx
mov edx, dword [sym.imp.KERNEL32.dll_SetHandleCount]
mov dword [ebp - 0x4b4], edx
mov eax, dword [sym.imp.KERNEL32.dll_GetEnvironmentStringsW]
mov dword [ebp - 0x4b0], eax
mov ecx, dword [sym.imp.KERNEL32.dll_FreeEnvironmentStringsW]
mov dword [ebp - 0x4ac], ecx
mov edx, dword [sym.imp.KERNEL32.dll_GetEnvironmentStrings]
mov dword [ebp - 0x4a8], edx
mov eax, dword [sym.imp.KERNEL32.dll_FreeEnvironmentStringsA]
mov dword [ebp - 0x4a4], eax
mov ecx, dword [sym.imp.KERNEL32.dll_HeapSize]
mov dword [ebp - 0x4a0], ecx
mov edx, dword [sym.imp.KERNEL32.dll_LCMapStringW]
mov dword [ebp - 0x49c], edx
mov eax, dword [sym.imp.KERNEL32.dll_LCMapStringA]
mov dword [ebp - 0x498], eax
mov ecx, dword [sym.imp.KERNEL32.dll_IsValidCodePage]
mov dword [ebp - 0x494], ecx
mov edx, dword [sym.imp.KERNEL32.dll_GetOEMCP]
mov dword [ebp - 0x490], edx
mov eax, dword [sym.imp.KERNEL32.dll_GetACP]
mov dword [ebp - 0x48c], eax
mov ecx, dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
mov dword [ebp - 0x488], ecx
mov edx, dword [sym.imp.KERNEL32.dll_ExitProcess]
mov dword [ebp - 0x484], edx
mov eax, dword [sym.imp.KERNEL32.dll_IsDebuggerPresent]
mov dword [ebp - 0x480], eax
mov ecx, dword [sym.imp.KERNEL32.dll_SetUnhandledExceptionFilter]
mov dword [ebp - 0x47c], ecx
mov edx, dword [sym.imp.KERNEL32.dll_UnhandledExceptionFilter]
mov dword [ebp - 0x478], edx
mov eax, dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
mov dword [ebp - 0x474], eax
mov ecx, dword [sym.imp.KERNEL32.dll_TerminateProcess]
mov dword [ebp - 0x470], ecx
mov edx, dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
mov dword [ebp - 0x46c], edx
mov eax, dword [sym.imp.KERNEL32.dll_TlsFree]
mov dword [ebp - 0x468], eax
mov ecx, dword [sym.imp.KERNEL32.dll_TlsSetValue]
mov dword [ebp - 0x464], ecx
mov edx, dword [sym.imp.KERNEL32.dll_TlsAlloc]
mov dword [ebp - 0x460], edx
mov eax, dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov dword [ebp - 0x45c], eax
mov ecx, dword [sym.imp.KERNEL32.dll_VirtualAlloc]
mov dword [ebp - 0x458], ecx
mov edx, dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov dword [ebp - 0x454], edx
mov eax, dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov dword [ebp - 0x450], eax
mov ecx, dword [sym.imp.KERNEL32.dll_DeleteCriticalSection]
mov dword [ebp - 0x44c], ecx
mov edx, dword [sym.imp.KERNEL32.dll_VirtualFree]
mov dword [ebp - 0x448], edx
mov eax, dword [sym.imp.KERNEL32.dll_HeapCreate]
mov dword [ebp - 0x444], eax
mov ecx, dword [sym.imp.KERNEL32.dll_GetStartupInfoA]
mov dword [ebp - 0x440], ecx
mov edx, dword [sym.imp.KERNEL32.dll_GetCommandLineA]
mov dword [ebp - 0x43c], edx
mov eax, dword [sym.imp.KERNEL32.dll_SetFileTime]
mov dword [ebp - 0x438], eax
mov ecx, dword [sym.imp.KERNEL32.dll_ReadFile]
mov dword [ebp - 0x434], ecx
mov edx, dword [sym.imp.KERNEL32.dll_GetFileType]
mov dword [ebp - 0x430], edx
mov eax, dword [sym.imp.KERNEL32.dll_SetEndOfFile]
mov dword [ebp - 0x42c], eax
mov ecx, dword [sym.imp.KERNEL32.dll_SetFilePointer]
mov dword [ebp - 0x428], ecx
mov edx, dword [sym.imp.KERNEL32.dll_GetStdHandle]
mov dword [ebp - 0x424], edx
mov eax, dword [sym.imp.KERNEL32.dll_FlushFileBuffers]
mov dword [ebp - 0x420], eax
mov ecx, dword [sym.imp.KERNEL32.dll_WriteFile]
mov dword [ebp - 0x41c], ecx
mov edx, dword [sym.imp.KERNEL32.dll_CloseHandle]
mov dword [ebp - 0x418], edx
mov eax, dword [sym.imp.KERNEL32.dll_CreateFileW]
mov dword [ebp - 0x414], eax
mov ecx, dword [sym.imp.KERNEL32.dll_LocalFileTimeToFileTime]
mov dword [ebp - 0x410], ecx
mov edx, dword [sym.imp.KERNEL32.dll_DosDateTimeToFileTime]
mov dword [ebp - 0x40c], edx
mov eax, dword [sym.imp.KERNEL32.dll_SetLastError]
mov dword [ebp - 0x408], eax
mov ecx, dword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [ebp - 0x404], ecx
mov edx, dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryW]
mov dword [ebp - 0x400], edx
mov eax, dword [sym.imp.KERNEL32.dll_CreateFileA]
mov dword [ebp - 0x3fc], eax
mov ecx, dword [sym.imp.KERNEL32.dll_WriteConsoleA]
mov dword [ebp - 0x3f8], ecx
mov edx, dword [sym.imp.KERNEL32.dll_GetSystemTimeAsFileTime]
mov dword [ebp - 0x3f4], edx
mov eax, dword [sym.imp.KERNEL32.dll_HeapAlloc]
mov dword [ebp - 0x3f0], eax
mov ecx, dword [sym.imp.KERNEL32.dll_HeapReAlloc]
mov dword [ebp - 0x3ec], ecx
mov edx, dword [sym.imp.KERNEL32.dll_RaiseException]
mov dword [ebp - 0x3e8], edx
mov eax, dword [sym.imp.KERNEL32.dll_RtlUnwind]
mov dword [ebp - 0x3e4], eax
mov ecx, dword [sym.imp.KERNEL32.dll_HeapFree]
mov dword [ebp - 0x3e0], ecx
mov edx, dword [sym.imp.USER32.dll_EnableWindow]
mov dword [ebp - 0x2f8], edx
mov eax, dword [sym.imp.USER32.dll_GetDlgItem]
mov dword [ebp - 0x2f4], eax
mov ecx, dword [sym.imp.USER32.dll_MessageBoxW]
mov dword [ebp - 0x2f0], ecx
mov edx, dword [sym.imp.USER32.dll_ShowWindow]
mov dword [ebp - 0x2ec], edx
mov eax, dword [sym.imp.USER32.dll_FindWindowExW]
mov dword [ebp - 0x2e8], eax
mov ecx, dword [sym.imp.USER32.dll_GetParent]
mov dword [ebp - 0x2e4], ecx
mov edx, dword [sym.imp.USER32.dll_MapWindowPoints]
mov dword [ebp - 0x2e0], edx
mov eax, dword [sym.imp.USER32.dll_CreateWindowExW]
mov dword [ebp - 0x2dc], eax
mov ecx, dword [sym.imp.USER32.dll_UpdateWindow]
mov dword [ebp - 0x2d8], ecx
mov edx, dword [sym.imp.USER32.dll_LoadCursorW]
mov dword [ebp - 0x2d4], edx
mov eax, dword [sym.imp.USER32.dll_RegisterClassExW]
mov dword [ebp - 0x2d0], eax
mov ecx, dword [sym.imp.USER32.dll_DefWindowProcW]
mov dword [ebp - 0x2cc], ecx
mov edx, dword [sym.imp.USER32.dll_DestroyWindow]
mov dword [ebp - 0x2c8], edx
mov eax, dword [sym.imp.USER32.dll_CopyRect]
mov dword [ebp - 0x2c4], eax
mov ecx, dword [sym.imp.USER32.dll_CharUpperW]
mov dword [ebp - 0x2c0], ecx
mov edx, dword [sym.imp.USER32.dll_CharToOemA]
mov dword [ebp - 0x2bc], edx
mov eax, dword [sym.imp.USER32.dll_OemToCharA]
mov dword [ebp - 0x2b8], eax
mov ecx, dword [sym.imp.USER32.dll_OemToCharBuffA]
mov dword [ebp - 0x2b4], ecx
mov edx, dword [sym.imp.USER32.dll_LoadIconW]
mov dword [ebp - 0x2b0], edx
mov eax, dword [sym.imp.USER32.dll_LoadBitmapW]
mov dword [ebp - 0x2ac], eax
mov ecx, dword [sym.imp.USER32.dll_PostMessageW]
mov dword [ebp - 0x2a8], ecx
mov edx, dword [sym.imp.USER32.dll_GetSysColor]
mov dword [ebp - 0x2a4], edx
mov eax, dword [sym.imp.USER32.dll_SetForegroundWindow]
mov dword [ebp - 0x2a0], eax
mov ecx, dword [sym.imp.USER32.dll_WaitForInputIdle]
mov dword [ebp - 0x29c], ecx
mov edx, dword [sym.imp.USER32.dll_IsWindowVisible]
mov dword [ebp - 0x298], edx
mov eax, dword [sym.imp.USER32.dll_DialogBoxParamW]
mov dword [ebp - 0x294], eax
mov ecx, dword [sym.imp.USER32.dll_DestroyIcon]
mov dword [ebp - 0x290], ecx
mov edx, dword [sym.imp.USER32.dll_SetFocus]
mov dword [ebp - 0x28c], edx
mov eax, dword [sym.imp.USER32.dll_GetClassNameW]
mov dword [ebp - 0x288], eax
mov ecx, dword [sym.imp.USER32.dll_SendDlgItemMessageW]
mov dword [ebp - 0x284], ecx
mov edx, dword [sym.imp.USER32.dll_EndDialog]
mov dword [ebp - 0x280], edx
mov eax, dword [sym.imp.USER32.dll_GetDlgItemTextW]
mov dword [ebp - 0x27c], eax
mov ecx, dword [sym.imp.USER32.dll_SetDlgItemTextW]
mov dword [ebp - 0x278], ecx
mov edx, dword [sym.imp.USER32.dll_wvsprintfW]
mov dword [ebp - 0x274], edx
mov eax, dword [sym.imp.USER32.dll_SendMessageW]
mov dword [ebp - 0x270], eax
mov ecx, dword [sym.imp.USER32.dll_GetDC]
mov dword [ebp - 0x26c], ecx
mov edx, dword [sym.imp.USER32.dll_ReleaseDC]
mov dword [ebp - 0x268], edx
mov eax, dword [sym.imp.USER32.dll_PeekMessageW]
mov dword [ebp - 0x264], eax
mov ecx, dword [sym.imp.USER32.dll_GetMessageW]
mov dword [ebp - 0x260], ecx
mov edx, dword [sym.imp.USER32.dll_TranslateMessage]
mov dword [ebp - 0x25c], edx
mov eax, dword [sym.imp.USER32.dll_DispatchMessageW]
mov dword [ebp - 0x258], eax
mov ecx, dword [sym.imp.USER32.dll_LoadStringW]
mov dword [ebp - 0x254], ecx
mov edx, dword [sym.imp.USER32.dll_GetWindowRect]
mov dword [ebp - 0x250], edx
mov eax, dword [sym.imp.USER32.dll_GetClientRect]
mov dword [ebp - 0x24c], eax
mov ecx, dword [sym.imp.USER32.dll_SetWindowPos]
mov dword [ebp - 0x248], ecx
mov edx, dword [sym.imp.USER32.dll_GetWindowTextW]
mov dword [ebp - 0x244], edx
mov eax, dword [sym.imp.USER32.dll_SetWindowTextW]
mov dword [ebp - 0x240], eax
mov ecx, dword [sym.imp.USER32.dll_GetSystemMetrics]
mov dword [ebp - 0x23c], ecx
mov edx, dword [sym.imp.USER32.dll_GetWindow]
mov dword [ebp - 0x238], edx
mov eax, dword [sym.imp.USER32.dll_GetWindowLongW]
mov dword [ebp - 0x234], eax
mov ecx, dword [sym.imp.USER32.dll_SetWindowLongW]
mov dword [ebp - 0x230], ecx
mov edx, dword [sym.imp.USER32.dll_IsWindow]
mov dword [ebp - 0x22c], edx
mov eax, dword [sym.imp.KERNEL32.dll_Sleep]
mov dword [ebp - 0x7d0], eax
mov ecx, dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
mov dword [ebp - 0x7cc], ecx
mov edx, dword [sym.imp.KERNEL32.dll_WideCharToMultiByte]
mov dword [ebp - 0x7c8], edx
mov eax, dword [sym.imp.KERNEL32.dll_CompareFileTime]
mov dword [ebp - 0x7c4], eax
mov ecx, dword [sym.imp.KERNEL32.dll_FindClose]
mov dword [ebp - 0x7c0], ecx
mov edx, dword [sym.imp.KERNEL32.dll_FindFirstFileW]
mov dword [ebp - 0x7bc], edx
mov eax, dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
mov dword [ebp - 0x7b8], eax
mov ecx, dword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [ebp - 0x7b4], ecx
mov edx, dword [sym.imp.KERNEL32.dll_CreateDirectoryW]
mov dword [ebp - 0x7b0], edx
mov eax, dword [sym.imp.KERNEL32.dll_ExpandEnvironmentStringsW]
mov dword [ebp - 0x7ac], eax
mov ecx, dword [sym.imp.KERNEL32.dll_lstrlenA]
mov dword [ebp - 0x7a8], ecx
mov edx, dword [sym.imp.KERNEL32.dll_WriteFile]
mov dword [ebp - 0x7a4], edx
mov eax, dword [sym.imp.KERNEL32.dll_GetStdHandle]
mov dword [ebp - 0x7a0], eax
mov ecx, dword [sym.imp.KERNEL32.dll_lstrcmpW]
mov dword [ebp - 0x79c], ecx
mov edx, dword [sym.imp.KERNEL32.dll_GetSystemTimeAsFileTime]
mov dword [ebp - 0x798], edx
mov eax, dword [sym.imp.KERNEL32.dll_lstrlenW]
mov dword [ebp - 0x794], eax
mov ecx, dword [sym.imp.KERNEL32.dll_RemoveDirectoryW]
mov dword [ebp - 0x790], ecx
mov edx, dword [sym.imp.KERNEL32.dll_FindNextFileW]
mov dword [ebp - 0x78c], edx
mov eax, dword [sym.imp.KERNEL32.dll_DeleteFileW]
mov dword [ebp - 0x788], eax
mov ecx, dword [sym.imp.KERNEL32.dll_VirtualAlloc]
mov dword [ebp - 0x784], ecx
mov edx, dword [sym.imp.KERNEL32.dll_VirtualFree]
mov dword [ebp - 0x780], edx
mov eax, dword [sym.imp.KERNEL32.dll_GetACP]
mov dword [ebp - 0x77c], eax
mov ecx, dword [sym.imp.KERNEL32.dll_GetOEMCP]
mov dword [ebp - 0x778], ecx
mov edx, dword [sym.imp.KERNEL32.dll_GetUserDefaultUILanguage]
mov dword [ebp - 0x774], edx
mov eax, dword [sym.imp.KERNEL32.dll_GetUserDefaultLCID]
mov dword [ebp - 0x770], eax
mov ecx, dword [sym.imp.KERNEL32.dll_GetTempPathW]
mov dword [ebp - 0x76c], ecx
mov edx, dword [sym.imp.KERNEL32.dll_SetEnvironmentVariableW]
mov dword [ebp - 0x768], edx
mov eax, dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryW]
mov dword [ebp - 0x764], eax
mov ecx, dword [sym.imp.KERNEL32.dll_CloseHandle]
mov dword [ebp - 0x760], ecx
mov edx, dword [sym.imp.KERNEL32.dll_lstrcmpiW]
mov dword [ebp - 0x75c], edx
mov eax, dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
mov dword [ebp - 0x758], eax
mov ecx, dword [sym.imp.KERNEL32.dll_CreateThread]
mov dword [ebp - 0x754], ecx
mov edx, dword [sym.imp.KERNEL32.dll_GetVersionExW]
mov dword [ebp - 0x750], edx
mov eax, dword [sym.imp.KERNEL32.dll_CreateFileW]
mov dword [ebp - 0x74c], eax
mov ecx, dword [sym.imp.KERNEL32.dll_GetDriveTypeW]
mov dword [ebp - 0x748], ecx
mov edx, dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
mov dword [ebp - 0x744], edx
mov eax, dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [ebp - 0x740], eax
mov ecx, dword [sym.imp.KERNEL32.dll_LoadLibraryA]
mov dword [ebp - 0x73c], ecx
mov edx, dword [sym.imp.KERNEL32.dll_MulDiv]
mov dword [ebp - 0x738], edx
mov eax, dword [sym.imp.KERNEL32.dll_GetSystemDirectoryW]
mov dword [ebp - 0x734], eax
mov ecx, dword [sym.imp.KERNEL32.dll_TerminateThread]
mov dword [ebp - 0x730], ecx
mov edx, dword [sym.imp.KERNEL32.dll_ResumeThread]
mov dword [ebp - 0x72c], edx
mov eax, dword [sym.imp.KERNEL32.dll_SuspendThread]
mov dword [ebp - 0x728], eax
mov ecx, dword [sym.imp.KERNEL32.dll_LocalFree]
mov dword [ebp - 0x724], ecx
mov edx, dword [sym.imp.KERNEL32.dll_lstrcpyW]
mov dword [ebp - 0x720], edx
mov eax, dword [sym.imp.KERNEL32.dll_FormatMessageW]
mov dword [ebp - 0x71c], eax
mov ecx, dword [sym.imp.KERNEL32.dll_DeleteCriticalSection]
mov dword [ebp - 0x718], ecx
mov edx, dword [sym.imp.KERNEL32.dll_GetFileSize]
mov dword [ebp - 0x714], edx
mov eax, dword [sym.imp.KERNEL32.dll_SetFilePointer]
mov dword [ebp - 0x710], eax
mov ecx, dword [sym.imp.KERNEL32.dll_ReadFile]
mov dword [ebp - 0x70c], ecx
mov edx, dword [sym.imp.KERNEL32.dll_SetFileTime]
mov dword [ebp - 0x708], edx
mov eax, dword [sym.imp.KERNEL32.dll_SetEndOfFile]
mov dword [ebp - 0x704], eax
mov ecx, dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov dword [ebp - 0x700], ecx
mov edx, dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov dword [ebp - 0x6fc], edx
mov eax, dword [sym.imp.KERNEL32.dll_WaitForMultipleObjects]
mov dword [ebp - 0x6f8], eax
mov ecx, dword [sym.imp.KERNEL32.dll_CreateEventW]
mov dword [ebp - 0x6f4], ecx
mov edx, dword [sym.imp.KERNEL32.dll_SetEvent]
mov dword [ebp - 0x6f0], edx
mov eax, dword [sym.imp.KERNEL32.dll_ResetEvent]
mov dword [ebp - 0x6ec], eax
mov ecx, dword [sym.imp.KERNEL32.dll_InitializeCriticalSection]
mov dword [ebp - 0x6e8], ecx
mov edx, dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
mov dword [ebp - 0x6e4], edx
mov eax, dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
mov dword [ebp - 0x6e0], eax
mov ecx, dword [sym.imp.KERNEL32.dll_GetExitCodeThread]
mov dword [ebp - 0x6dc], ecx
mov edx, dword [sym.imp.KERNEL32.dll_GetLocalTime]
mov dword [ebp - 0x6d8], edx
mov eax, dword [sym.imp.KERNEL32.dll_SystemTimeToFileTime]
mov dword [ebp - 0x6d4], eax
mov ecx, dword [sym.imp.KERNEL32.dll_GetCommandLineW]
mov dword [ebp - 0x6d0], ecx
mov edx, dword [sym.imp.KERNEL32.dll_SetFileAttributesW]
mov dword [ebp - 0x6cc], edx
mov eax, dword [sym.imp.KERNEL32.dll_GetStartupInfoA]
mov dword [ebp - 0x6c8], eax
mov ecx, dword [sym.imp.USER32.dll_CharUpperW]
mov dword [ebp - 0x3b8], ecx
mov edx, dword [sym.imp.USER32.dll_GetWindowLongW]
mov dword [ebp - 0x3b4], edx
mov eax, dword [sym.imp.USER32.dll_wsprintfW]
mov dword [ebp - 0x3b0], eax
mov ecx, dword [sym.imp.USER32.dll_wsprintfA]
mov dword [ebp - 0x3ac], ecx
mov edx, dword [sym.imp.USER32.dll_MessageBoxA]
mov dword [ebp - 0x3a8], edx
mov eax, dword [sym.imp.USER32.dll_GetKeyState]
mov dword [ebp - 0x3a4], eax
mov ecx, dword [sym.imp.USER32.dll_SendMessageW]
mov dword [ebp - 0x3a0], ecx
mov edx, dword [sym.imp.USER32.dll_wvsprintfW]
mov dword [ebp - 0x39c], edx
mov eax, dword [sym.imp.USER32.dll_KillTimer]
mov dword [ebp - 0x398], eax
mov ecx, dword [sym.imp.USER32.dll_GetSystemMenu]
mov dword [ebp - 0x394], ecx
mov edx, dword [sym.imp.USER32.dll_EnableMenuItem]
mov dword [ebp - 0x390], edx
mov eax, dword [sym.imp.USER32.dll_SetTimer]
mov dword [ebp - 0x38c], eax
mov ecx, dword [sym.imp.USER32.dll_GetWindowTextW]
mov dword [ebp - 0x388], ecx
mov edx, dword [sym.imp.USER32.dll_DefWindowProcW]
mov dword [ebp - 0x384], edx
mov eax, dword [sym.imp.USER32.dll_CallWindowProcW]
mov dword [ebp - 0x380], eax
mov ecx, dword [sym.imp.USER32.dll_GetWindowDC]
mov dword [ebp - 0x37c], ecx
mov edx, dword [sym.imp.USER32.dll_DrawIconEx]
mov dword [ebp - 0x378], edx
mov eax, dword [sym.imp.USER32.dll_MessageBeep]
mov dword [ebp - 0x374], eax
mov ecx, dword [sym.imp.USER32.dll_SetWindowTextW]
mov dword [ebp - 0x370], ecx
mov edx, dword [sym.imp.USER32.dll_DialogBoxIndirectParamW]
mov dword [ebp - 0x36c], edx
mov eax, dword [sym.imp.USER32.dll_GetWindow]
mov dword [ebp - 0x368], eax
mov ecx, dword [sym.imp.USER32.dll_GetParent]
mov dword [ebp - 0x364], ecx
mov edx, dword [sym.imp.USER32.dll_GetClientRect]
mov dword [ebp - 0x360], edx
mov eax, dword [sym.imp.USER32.dll_ClientToScreen]
mov dword [ebp - 0x35c], eax
mov ecx, dword [sym.imp.USER32.dll_GetWindowTextLengthW]
mov dword [ebp - 0x358], ecx
mov edx, dword [sym.imp.USER32.dll_SetWindowPos]
mov dword [ebp - 0x354], edx
mov eax, dword [sym.imp.USER32.dll_GetDC]
mov dword [ebp - 0x350], eax
mov ecx, dword [sym.imp.USER32.dll_DrawTextW]
mov dword [ebp - 0x34c], ecx
mov edx, dword [sym.imp.USER32.dll_ReleaseDC]
mov dword [ebp - 0x348], edx
mov eax, dword [sym.imp.USER32.dll_ShowWindow]
mov dword [ebp - 0x344], eax
mov ecx, dword [sym.imp.USER32.dll_GetWindowRect]
mov dword [ebp - 0x340], ecx
mov edx, dword [sym.imp.USER32.dll_ScreenToClient]
mov dword [ebp - 0x33c], edx
mov eax, dword [sym.imp.USER32.dll_LoadIconW]
mov dword [ebp - 0x338], eax
mov ecx, dword [sym.imp.USER32.dll_SetWindowLongW]
mov dword [ebp - 0x334], ecx
mov edx, dword [sym.imp.USER32.dll_SetDlgItemTextW]
mov dword [ebp - 0x330], edx
mov eax, dword [sym.imp.USER32.dll_SystemParametersInfoW]
mov dword [ebp - 0x32c], eax
mov ecx, dword [sym.imp.USER32.dll_GetSystemMetrics]
mov dword [ebp - 0x328], ecx
mov edx, dword [sym.imp.USER32.dll_GetDlgItem]
mov dword [ebp - 0x324], edx
mov eax, dword [sym.imp.USER32.dll_SetFocus]
mov dword [ebp - 0x320], eax
mov ecx, dword [sym.imp.USER32.dll_EndDialog]
mov dword [ebp - 0x31c], ecx
mov edx, dword [sym.imp.USER32.dll_LoadImageW]
mov dword [ebp - 0x318], edx
mov eax, dword [0x421260]
mov dword [0x421264], eax
mov ecx, dword [ebp - 0xc]
mov dword [ebp - 0x5a8], ecx
movzx edx, word [ebp - 0x60c]
movzx eax, word [ebp - 0x308]
lea ecx, [eax + edx - 0x4c]
mov word [ebp - 0x308], cx
movzx edx, word [ebp - 0x185]
mov dword [ebp - 0x21c], edx
mov eax, dword [ebp - 0x130]
mov dword [ebp - 0x158], eax
mov dword [ebp - 0x130], 0x37
mov dword [ebp - 0x19c], 0x47
mov ecx, dword [ebp - 0x6b0]
and ecx, 0x13
or ecx, dword [ebp - 0x12c]
or ecx, 0x49
mov word [ebp - 0x124], cx
mov edx, dword [ebp - 0x618]
sub edx, dword [ebp - 0x3d0]
add edx, 0x57
mov dword [ebp - 0x1e4], edx
movzx eax, word [ebp - 0x6bc]
add eax, 0x4d
mov dword [ebp - 0x130], eax
mov ecx, dword [ebp - 0x1b8]
sub ecx, 5
mov dword [ebp - 0x200], ecx
mov dword [ebp - 0x7f8], 0
jmp 0x40aa89
mov edx, dword [ebp - 0x7f8]
add edx, 1
mov dword [ebp - 0x7f8], edx
cmp dword [ebp - 0x7f8], 6
jge 0x40ab36
mov eax, dword [ebp - 4]
sub eax, dword [ebp - 0x224]
or eax, dword [ebp - 0x634]
mov dword [ebp - 0x1cc], eax
mov dword [ebp - 0x1d4], 0x33
mov ecx, dword [ebp - 0x1b0]
push ecx
mov edx, dword [ebp - 0x12c]
push edx
mov eax, dword [ebp - 0x624]
push eax
mov ecx, dword [ebp - 0x620]
push ecx
mov edx, dword [ebp - 0x130]
push edx
mov eax, dword [ebp - 0x1f0]
push eax
call fcn.00401000
add esp, 0x18
mov ecx, dword [ebp - 0x214]
lea edx, [ecx + eax + 0x29]
mov dword [ebp - 0x1cc], edx
movzx eax, byte [ebp - 0x215]
add eax, 0x26
mov dword [ebp - 0x1a4], eax
movzx ecx, word [ebp - 0x204]
add ecx, 0x1d
mov dword [ebp - 0x130], ecx
mov dword [ebp - 0x14c], 0x15
movzx edx, word [ebp - 0x600]
add edx, 0x4b
mov dword [ebp - 0x3d0], edx
jmp 0x40aa7a
movzx eax, word [ebp - 0x208]
movzx ecx, byte [ebp - 0x20d]
xor eax, ecx
movzx edx, word [ebp - 0x3c8]
or edx, eax
mov word [ebp - 0x3c8], dx
movzx eax, word [ebp - 0x20c]
add eax, 0x14
mov dword [ebp - 0x220], eax
mov ecx, dword [ebp - 0x628]
mov dword [ebp - 0x144], ecx
movzx edx, word [ebp - 0x30c]
mov dword [ebp - 0x634], edx
mov eax, dword [ebp - 0x628]
and eax, 0x37
mov ecx, 0x19
sub ecx, dword [ebp - 0x1b8]
or eax, ecx
mov word [ebp - 0x6b8], ax
mov byte [ebp - 0x220], 0x31
mov edx, dword [ebp - 0x21c]
mov dword [ebp - 0x17c], edx
mov dword [ebp - 0x1f0], 0x60
mov eax, dword [ebp - 0x3d0]
add eax, dword [ebp - 0x3d0]
and eax, dword [ebp - 0x1cc]
mov ecx, dword [ebp - 0x11c]
add ecx, 3
and eax, ecx
mov byte [ebp - 0x30e], al
movzx edx, word [ebp - 0x118]
mov dword [0x41e058], edx
movzx eax, byte [ebp - 0x1b8]
mov dword [ebp - 0x1d4], eax
mov ecx, dword [ebp - 0x1d4]
mov dword [ebp - 0x17c], ecx
mov dword [ebp - 0x1d4], 0x39
mov edx, dword [ebp - 0x1c8]
sub edx, dword [ebp - 0x3d0]
sub edx, 0x30
movzx eax, byte [ebp - 0x30e]
sub edx, eax
mov word [ebp - 0x1a8], dx
mov ecx, 0x4a
sub ecx, dword [ebp - 0x214]
add ecx, 0x56
xor ecx, dword [ebp - 0x1b0]
mov word [ebp - 0x6b8], cx
mov edx, 1
sub edx, dword [ebp - 0x634]
add edx, 0x37
xor edx, dword [ebp - 0x224]
mov byte [ebp - 0x7d5], dl
movzx eax, word [ebp - 0x120]
sub eax, 7
movzx ecx, word [ebp - 0x1d0]
and ecx, eax
mov word [ebp - 0x1d0], cx
mov edx, dword [0x41e01c]
mov dword [ebp - 0x68c], edx
mov dword [0x41e01c], 0xffffffaf
movzx eax, byte [ebp - 0x60d]
mov ecx, 0x29
sub ecx, eax
movzx edx, word [ebp - 0x6a4]
sub edx, ecx
mov word [ebp - 0x6a4], dx
mov eax, dword [0x41e030]
push eax
call dword [sym.imp.GDI32.dll_BeginPath]
movzx ecx, byte [ebp - 0x619]
sub ecx, dword [0x41e030]
add ecx, dword [0x41e028]
and eax, ecx
mov word [ebp - 0x1e8], ax
jmp 0x4a6062