Function at 0x409850
Capabilities:
Authenticate hmac

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x7fc
mov eax, dword [0x41ff34]
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
call fcn.00408990
movzx edx, word [ebp - 0x120]
add edx, dword [ebp - 0x3d0]
movzx eax, byte [ebp - 5]
sub edx, eax
mov ecx, dword [ebp - 0x11c]
lea edx, [edx + ecx - 3]
mov byte [ebp - 5], dl
mov eax, dword [ebp - 0x1b8]
sub eax, 0x14
mov dword [ebp - 0x21c], eax
movzx ecx, word [ebp - 0x1b0]
mov dword [ebp - 0x12c], ecx
mov edx, dword [ebp - 0x634]
mov dword [ebp - 0x178], edx
push 0x40
push 0x2d
mov eax, dword [0x41e020]
push eax
mov ecx, dword [0x41e02c]
push ecx
call dword [sym.imp.GDI32.dll_SetViewportOrgEx]
mov esi, dword [0x41e030]
sub esi, eax
mov edx, dword [0x41e02c]
push edx
mov eax, dword [0x41e01c]
push eax
call fcn.004095d0
add esp, 8
mov ecx, 0x33
sub ecx, eax
xor esi, ecx
mov word [ebp - 0x204], si
mov edx, 0x50
sub edx, dword [0x41e01c]
add edx, dword [0x41e030]
mov dword [ebp - 0x200], edx
mov eax, dword [str._0T_GJ5FQB_r_V_O_]
add eax, dword [ebp - 0x214]
mov dword [str._0T_GJ5FQB_r_V_O_], eax
mov dword [ebp - 0x5a8], 0x4c
mov ecx, dword [str._0T_GJ5FQB_r_V_O_]
push ecx
mov edx, dword [0x41e01c]
push edx
push 0x45
call dword [sym.imp.GDI32.dll_OffsetRgn]
movzx ecx, byte [ebp - 0x1a9]
add eax, ecx
movzx edx, byte [ebp - 0x20d]
mov ecx, 0x2b
sub ecx, edx
and eax, ecx
mov word [ebp - 0x30c], ax
movzx edx, byte [ebp - 6]
mov eax, dword [ebp - 0x224]
sub eax, edx
xor eax, dword [ebp - 0x21c]
mov dword [ebp - 0x1a4], eax
mov ecx, dword [ebp - 0x624]
sub ecx, dword [ebp - 0x1a4]
sub ecx, dword [ebp - 0xc]
add ecx, 0x18
mov word [ebp - 0x30c], cx
movzx edx, byte [ebp - 5]
movzx eax, byte [ebp - 0x1a9]
or edx, eax
movzx ecx, byte [ebp - 0x126]
add ecx, edx
mov byte [ebp - 0x126], cl
mov dl, byte [ebp - 0x21c]
mov byte [ebp - 0x620], dl
mov dword [ebp - 0x678], 0x5c
movzx eax, word [ebp - 0x604]
add eax, 0x44
mov dword [0x41e04c], eax
mov dword [ebp - 0x224], 0x1e
mov dword [ebp - 0x174], 0x50
movzx ecx, byte [ebp - 0x30d]
sub ecx, dword [ebp - 0x21c]
mov byte [ebp - 0x30d], cl
mov edx, dword [ebp - 0x628]
mov dword [ebp - 0x144], edx
movzx eax, byte [ebp - 0x1e9]
add eax, 0xc
movzx ecx, byte [ebp - 0x30d]
mov edx, 0x5c
sub edx, ecx
or eax, edx
or eax, dword [ebp - 0x1b0]
mov byte [ebp - 0x7d5], al
mov eax, dword [ebp + 8]
push eax
call fcn.00402400
add esp, 4
mov ecx, dword [ebp - 0x1b8]
push ecx
mov edx, dword [ebp - 0x634]
push edx
mov eax, dword [ebp - 0x12c]
push eax
mov ecx, dword [ebp - 0x3d0]
push ecx
call fcn.00402cf0
add esp, 0x10
mov edx, 0x3d
sub edx, dword [ebp - 0x1f0]
and edx, dword [ebp - 0x620]
xor eax, edx
mov word [ebp - 0x630], ax
mov dword [ebp - 0x18c], 0x16
movzx eax, word [ebp - 0x60c]
sub eax, 0x4e
movzx ecx, word [ebp - 0x208]
sub eax, ecx
mov dword [ebp - 0x1e4], eax
mov edx, 0x31
sub edx, dword [ebp - 0x12c]
mov dword [ebp - 0xc], edx
movzx eax, byte [ebp - 0x1e9]
add eax, 0xd
and eax, dword [ebp - 0x624]
mov dword [ebp - 0x1c8], eax
mov ecx, dword [ebp - 0x214]
cmp ecx, dword [ebp - 0x1b0]
jne 0x40af5a
movzx edx, byte [ebp - 0x1e9]
sub edx, 0x5d
movzx eax, byte [ebp - 0x30d]
add eax, dword [ebp - 0x1b8]
or edx, eax
mov word [ebp - 0x30c], dx
jmp 0x40af66
mov ecx, dword [ebp - 0x3d0]
mov dword [ebp - 0x1d4], ecx
mov edx, dword [ebp - 0x12c]
mov dword [ebp - 0x64c], edx
movzx eax, byte [ebp - 6]
add eax, dword [ebp - 0x21c]
mov dword [ebp - 0x1b8], eax
movzx ecx, word [ebp - 0x20c]
mov edx, 0xd
sub edx, ecx
movzx eax, word [ebp - 0x6a4]
add edx, eax
movzx ecx, word [ebp - 0x118]
add ecx, edx
mov word [ebp - 0x118], cx
mov edx, dword [ebp - 0x130]
mov dword [ebp - 0x648], edx
mov eax, dword [ebp - 0xc]
sub eax, 0x20
xor eax, 0x1e
xor eax, 0x61
mov byte [ebp - 0x125], al
mov ecx, 0x50
sub ecx, dword [ebp - 0x130]
xor ecx, 0x36
or ecx, 0x1c
mov word [ebp - 0x208], cx
movzx edx, byte [ebp - 0x3ca]
movzx eax, byte [ebp - 7]
add edx, eax
movzx ecx, word [ebp - 0x204]
add edx, dword [ebp - 0x3d0]
add ecx, edx
xor ecx, 0x2e
mov byte [ebp - 5], cl
mov edx, dword [ebp - 0x3d0]
mov dword [ebp - 0x130], edx
mov eax, dword [ebp - 0x6b4]
add eax, dword [ebp - 0x1d4]
sub eax, dword [ebp - 0x620]
add eax, dword [ebp - 0x624]
sub eax, dword [ebp - 0x634]
mov byte [ebp - 0x60d], al
mov dword [ebp - 0x12c], 0x1c
mov ecx, dword [ebp - 0x1f0]
mov dword [ebp - 0x7fc], ecx
cmp dword [ebp - 0x7fc], 0
je 0x40b05b
cmp dword [ebp - 0x7fc], 1
je 0x40b07b
jmp 0x40b0c5
mov edx, dword [0x41e048]
xor edx, 0x17
mov dword [0x41e048], edx
movzx eax, word [ebp - 0x60c]
add eax, 0x3b
mov dword [0x41e038], eax
jmp 0x40b0cf
mov ecx, 9
mov word [ebp - 0x6ac], cx
mov edx, dword [ebp - 0x1f0]
cmp edx, dword [0x41e008]
jle 0x40b0c3
mov eax, dword [ebp - 0x3d0]
push eax
push 0x31
call dword [sym.imp.KERNEL32.dll_GetThreadIOPendingFlag]
mov dword [ebp - 0x624], eax
movzx ecx, byte [ebp - 0x619]
sub ecx, dword [ebp - 0x620]
sub ecx, dword [ebp - 0x1b0]
mov dword [ebp - 0x618], ecx
jmp 0x40b0cf
mov dword [ebp - 0x220], 0xe
movzx edx, word [ebp - 0x21d]
mov dword [ebp - 0x634], edx
mov dword [ebp - 0x598], 0x24
mov eax, dword [ebp - 0x608]
sub eax, 0x13
sub eax, dword [ebp - 0x1e4]
movzx ecx, word [ebp - 0x208]
add eax, ecx
mov word [ebp - 0x308], ax
mov edx, dword [ebp - 0x628]
sub edx, 0x1c
mov dword [ebp - 0x1c8], edx
mov eax, dword [ebp - 0x634]
add eax, dword [ebp - 0x214]
sub eax, dword [ebp - 0x130]
add eax, dword [ebp - 0x1c8]
xor eax, dword [ebp - 0x220]
mov byte [ebp - 5], al
mov ecx, dword [ebp - 0x224]
sub ecx, dword [ebp - 0x1c8]
sub ecx, 0x4a
mov dword [ebp - 0x7d4], ecx
movzx edx, word [ebp - 0x1d0]
movzx eax, word [ebp - 0x308]
mov ecx, dword [ebp - 0x1b8]
sub ecx, eax
and edx, ecx
mov byte [ebp - 0x30e], dl
mov dx, word [ebp - 0x130]
mov word [ebp - 0x620], dx
mov eax, dword [ebp - 0x1b0]
mov dword [ebp - 0x668], eax
mov ecx, dword [ebp - 0x1b8]
mov dword [ebp - 0x1b0], ecx
mov edx, dword [ebp - 0x1e4]
mov eax, dword [ebp - 0x1b8]
lea ecx, [eax + edx + 0x4a]
movzx edx, word [ebp - 0x204]
sub ecx, edx
or ecx, 0x20
mov byte [ebp - 0x125], cl
movzx eax, byte [ebp - 0x3ca]
sub eax, 0x42
mov byte [ebp - 0x3ca], al
mov dword [ebp - 0x6b4], 0xffffff9a
xor eax, eax
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.0040c413
mov esp, ebp
pop ebp
ret 0x10