Function at 0x475340
Capabilities:
Check os version

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xec
mov dword [ebp - 4], edi
mov dword [ebp - 8], esi
mov eax, dword [0x4caa60]
cmp eax, 1
je 0x475e3a
mov dword [0x4caa60], 1
lea eax, [ebp - 0xec]
push eax
mov dword [ebp - 0xec], 0x94
call dword [sym.imp.KERNEL32.dll_GetVersionExA]
mov eax, dword [ebp - 0xdc]
cmp eax, 2
jne 0x4753c5
mov eax, dword [ebp - 0xe8]
cmp eax, 4
jbe 0x47539e
mov dword [0x440fff4], 1
mov edx, dword [sym.imp.GDI32.dll_SetPixelV]
mov dword [0x440ffa0], 0
mov eax, 1
mov dword [0x440fff0], eax
mov dword [0x440ffec], eax
mov dword [0x440ffa4], edx
jmp 0x475404
mov eax, dword [sym.imp.GDI32.dll_SetPixel]
mov edx, dword [ebp - 0xe4]
mov dword [0x440ffec], 0
cmp edx, 0xa
mov dword [0x440ffa0], 1
mov dword [0x440ffa4], eax
jae 0x4753fa
mov dword [0x440fff8], 1
jmp 0x475404
mov dword [0x440fffc], 1
mov dword [0x4cab88], 0
call dword [sym.imp.KERNEL32.dll_GetACP]
mov edx, dword [0x440fff0]
test edx, edx
je 0x475428
mov edx, dword [0x440fff4]
test edx, edx
je 0x475442
add eax, 0xfffffc5c
cmp eax, 0x20
jae 0x47546c
mov ecx, eax
mov eax, 1
shl eax, cl
test eax, 0x60011
je 0x47546c
push str.user32.dll
call dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
push str.SendIMEMessageExA
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x4caba0], eax
test eax, eax
je 0x47546c
mov dword [0x4cab88], 1
push str.File
call dword [sym.imp.KERNEL32.dll_lstrlenA]
add eax, 1
push eax
call fcn.0048b682
pop ecx
mov esi, eax
push str.File
push esi
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
push str.Edit
mov dword [0x4cabcc], esi
call dword [sym.imp.KERNEL32.dll_lstrlenA]
add eax, 1
push eax
call fcn.0048b682
pop ecx
mov esi, eax
push str.Edit
push esi
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
push str.State
mov dword [0x4cabd0], esi
call dword [sym.imp.KERNEL32.dll_lstrlenA]
add eax, 1
push eax
call fcn.0048b682
pop ecx
mov esi, eax
push str.State
push esi
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
push str.Window
mov dword [0x4cabd4], esi
call dword [sym.imp.KERNEL32.dll_lstrlenA]
add eax, 1
push eax
call fcn.0048b682
pop ecx
mov esi, eax
push str.Window
push esi
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
push str.Help
mov dword [0x4cabd8], esi
call dword [sym.imp.KERNEL32.dll_lstrlenA]
add eax, 1
push eax
call fcn.0048b682
pop ecx
mov esi, eax
push str.Help
push esi
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
push str.Exit
mov dword [0x4cabdc], esi
call dword [sym.imp.KERNEL32.dll_lstrlenA]
add eax, 1
push eax
call fcn.0048b682
pop ecx
mov esi, eax
push str.Exit
push esi
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
mov eax, dword [0x4cab88]
mov dword [0x4cabe8], esi
test eax, eax
je 0x47557b
mov eax, dword [0x4cabb8]
cmp eax, 0x3a4
je 0x475c2b
push str.Finished
call dword [sym.imp.KERNEL32.dll_lstrlenA]
add eax, 1
push eax
call fcn.0048b682
pop ecx
mov esi, eax
push str.Finished
push esi
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
push str.Paused
mov dword [0x4cabfc], esi
call dword [sym.imp.KERNEL32.dll_lstrlenA]
add eax, 1
push eax
call fcn.0048b682
pop ecx
mov esi, eax
push str.Paused
push esi
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
push str.Running
mov dword [0x4cac00], esi
call dword [sym.imp.KERNEL32.dll_lstrlenA]
add eax, 1
push eax
call fcn.0048b682
pop ecx
mov esi, eax
push str.Running
push esi
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
push str.Program_Terminated_with_exit_code
mov dword [0x4cac04], esi
call dword [sym.imp.KERNEL32.dll_lstrlenA]
add eax, 1
push eax
call fcn.0048b682
pop ecx
mov esi, eax
push str.Program_Terminated_with_exit_code
push esi
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
push str._nExit_Window_
mov dword [0x4cabf4], esi
call dword [sym.imp.KERNEL32.dll_lstrlenA]
add eax, 1
push eax
call fcn.0048b682
pop ecx
mov esi, eax
push str._nExit_Window_
push esi
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
mov dword [0x4cabf8], esi
push 0x4b
call fcn.0048b682
mov esi, str.Text_files_.txt_
mov edi, dword [esi]
mov dword [eax], edi
mov edx, dword [esi + 4]
mov dword [eax + 4], edx
mov ecx, dword [esi + 8]
mov dword [eax + 8], ecx
mov edx, dword [esi + 0xc]
mov dword [eax + 0xc], edx
mov edx, dword [esi + 0x10]
mov dword [eax + 0x10], edx
mov edx, dword [esi + 0x14]
mov dword [eax + 0x14], edx
mov edx, dword [esi + 0x18]
mov dword [eax + 0x18], edx
mov edx, dword [esi + 0x1c]
mov dword [eax + 0x1c], edx
mov edx, dword [esi + 0x20]
mov dword [eax + 0x20], edx
mov edx, dword [esi + 0x24]
mov dword [eax + 0x24], edx
mov edx, dword [esi + 0x28]
mov dword [eax + 0x28], edx
mov edx, dword [esi + 0x2c]
mov dword [eax + 0x2c], edx
mov edx, dword [esi + 0x30]
mov dword [eax + 0x30], edx
mov edx, dword [esi + 0x34]
mov dword [eax + 0x34], edx
mov edx, dword [esi + 0x38]
mov dword [eax + 0x38], edx
mov edx, dword [esi + 0x3c]
mov dword [eax + 0x3c], edx
mov edx, dword [esi + 0x40]
mov dword [eax + 0x40], edx
mov edx, dword [esi + 0x44]
mov dword [eax + 0x44], edx
movzx edx, word [esi + 0x48]
mov word [eax + 0x48], dx
movzx edx, byte [esi + 0x4a]
mov byte [eax + 0x4a], dl
mov dword [0x4cabf0], eax
push 0x32
call fcn.0048b682
add esp, 8
mov edx, str.Bitmap_Files_.bmp_
mov ecx, dword [edx]
mov dword [eax], ecx
mov esi, dword [edx + 4]
mov dword [eax + 4], esi
mov edi, dword [edx + 8]
mov dword [eax + 8], edi
mov ecx, dword [edx + 0xc]
mov dword [eax + 0xc], ecx
mov ecx, dword [edx + 0x10]
mov dword [eax + 0x10], ecx
mov ecx, dword [edx + 0x14]
mov dword [eax + 0x14], ecx
mov ecx, dword [edx + 0x18]
mov dword [eax + 0x18], ecx
mov ecx, dword [edx + 0x1c]
mov dword [eax + 0x1c], ecx
mov ecx, dword [edx + 0x20]
mov dword [eax + 0x20], ecx
mov ecx, dword [edx + 0x24]
mov dword [eax + 0x24], ecx
mov ecx, dword [edx + 0x28]
mov dword [eax + 0x28], ecx
mov ecx, dword [edx + 0x2c]
mov dword [eax + 0x2c], ecx
movzx edx, word [edx + 0x30]
mov word [eax + 0x30], dx
mov dword [0x4cabec], eax
push dword [ebp + 8]
call fcn.0048e695
pop ecx
mov dword [0x4caa84], eax
test eax, eax
je 0x475c01
push eax
push eax
call dword [sym.imp.USER32.dll_OemToCharA]
mov eax, dword [ebp + 0x14]
mov edx, dword [ebp + 0xc]
mov esi, dword [ebp + 0x10]
mov ecx, dword [0x4caa84]
mov dword [0x4caa88], eax
mov dword [0x4caa9c], edx
mov dword [0x4caaa0], esi
xor eax, eax
movzx edx, byte [ecx + eax]
test edx, edx
je 0x47578b
movzx edx, byte [ecx + eax + 1]
add eax, 2
test edx, edx
jne 0x475774
add eax, 0xffffffff
mov ecx, dword [str.FRAME]
mov esi, eax
xor eax, eax
movzx edx, byte [ecx + eax]
test edx, edx
je 0x4757ac
movzx edx, byte [ecx + eax + 1]
add eax, 2
test edx, edx
jne 0x475795
add eax, 0xffffffff
lea edx, [esi + eax + 1]
push edx
call fcn.0048b682
pop ecx
mov dword [0x4caa80], eax
test eax, eax
je 0x475879
mov edi, dword [0x4caa84]
mov esi, eax
mov dl, byte [edi]
add edi, 1
mov byte [esi], dl
add esi, 1
test dl, dl
jne 0x4757cc
mov edi, dword [0x4caa80]
mov edx, dword [str.FRAME]
mov ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
add edi, 0xffffffff
mov al, byte [edx]
add edx, 1
mov byte [edi], al
add edi, 1
test al, al
jne 0x4757f2
push dword [0x4cabc8]
push dword [0x4caa88]
call dword [sym.imp.USER32.dll_LoadIconA]
mov edx, dword [0x4caa88]
mov dword [ebp - 0x30], 3
xor ecx, ecx
mov dword [ebp - 0x2c], 0x46c124
mov dword [ebp - 0x28], ecx
mov dword [ebp - 0x24], ecx
mov dword [ebp - 0x20], edx
mov dword [ebp - 0x1c], eax
push 0x7f00
push ecx
call dword [sym.imp.USER32.dll_LoadCursorA]
mov dword [ebp - 0x14], 0xd
mov dword [ebp - 0x18], eax
mov eax, dword [0x4caa80]
mov dword [ebp - 0x10], 0
mov dword [ebp - 0xc], eax
lea edx, [ebp - 0x30]
push edx
call dword [sym.imp.USER32.dll_RegisterClassA]
movzx eax, ax
test eax, eax
jne 0x475879
mov esi, dword [ebp - 8]
mov edi, dword [ebp - 4]
mov eax, 0xffffffff
mov esp, ebp
pop ebp
ret
mov ecx, dword [0x4caa84]
xor eax, eax
movzx edx, byte [ecx + eax]
test edx, edx
je 0x475898
movzx edx, byte [ecx + eax + 1]
add eax, 2
test edx, edx
jne 0x475881
add eax, 0xffffffff
mov ecx, dword [str.STATUSBAR]
mov esi, eax
xor eax, eax
movzx edx, byte [ecx + eax]
test edx, edx
je 0x4758b9
movzx edx, byte [ecx + eax + 1]
add eax, 2
test edx, edx
jne 0x4758a2
add eax, 0xffffffff
lea edx, [esi + eax + 1]
push edx
call fcn.0048b682
pop ecx
mov dword [0x4caa7c], eax
test eax, eax
je 0x475968
mov edi, dword [0x4caa84]
mov esi, eax
mov dl, byte [edi]
add edi, 1
mov byte [esi], dl
add esi, 1
test dl, dl
jne 0x4758d9
mov edi, dword [0x4caa7c]
mov edx, dword [str.STATUSBAR]
mov ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
add edi, 0xffffffff
mov al, byte [edx]
add edx, 1
mov byte [edi], al
add edi, 1
test al, al
jne 0x4758ff
mov eax, dword [0x4caa88]
mov dword [ebp - 0x54], 0x47ee74
xor edx, edx
mov dword [ebp - 0x58], edx
mov dword [ebp - 0x50], edx
mov dword [ebp - 0x4c], edx
mov dword [ebp - 0x48], eax
mov dword [ebp - 0x44], edx
push 0x7f00
push edx
call dword [sym.imp.USER32.dll_LoadCursorA]
mov dword [ebp - 0x40], eax
push 1
call dword [sym.imp.GDI32.dll_GetStockObject]
mov dword [ebp - 0x38], 0
mov dword [ebp - 0x3c], eax
mov eax, dword [0x4caa7c]
mov dword [ebp - 0x34], eax
lea edx, [ebp - 0x58]
push edx
call dword [sym.imp.USER32.dll_RegisterClassA]
movzx eax, ax
test eax, eax
je 0x475c01
mov eax, dword [0x4cdb2c]
test eax, eax
jne 0x475a03
call dword [sym.imp.USER32.dll_CreateMenu]
mov dword [0x4caa68], eax
test eax, eax
je 0x4759f4
push dword [0x4cabe8]
push 0xa
push 0
push eax
call dword [sym.imp.USER32.dll_AppendMenuA]
test eax, eax
je 0x4759f4
call dword [sym.imp.USER32.dll_CreateMenu]
mov dword [0x4caa6c], eax
test eax, eax
je 0x4759f4
call dword [sym.imp.USER32.dll_CreateMenu]
mov dword [0x4caa64], eax
test eax, eax
je 0x4759f4
push dword [0x4cabcc]
push dword [0x4caa68]
push 0x10
push eax
call dword [sym.imp.USER32.dll_AppendMenuA]
test eax, eax
je 0x4759f4
call dword [sym.imp.USER32.dll_CreateMenu]
mov dword [0x4cabb4], eax
test eax, eax
je 0x4759f4
push dword [0x4cac1c]
push 0xb
push 0
push eax
call dword [sym.imp.USER32.dll_AppendMenuA]
test eax, eax
jne 0x475a03
mov esi, dword [ebp - 8]
mov edi, dword [ebp - 4]
mov eax, 0xffffffff
mov esp, ebp
pop ebp
ret
call dword [sym.imp.USER32.dll_CreateMenu]
mov dword [0x4caf68], eax
test eax, eax
je 0x475e21
call fcn.0047f2b0
test eax, eax
je 0x475e08
push dword [0x4caf68]
mov dword [0x4cb424], 0
call dword [sym.imp.USER32.dll_GetMenuItemCount]
test eax, eax
je 0x475a49
mov dword [0x4caff0], 0
jmp 0x475a5f
push dword [0x4caf68]
call dword [sym.imp.USER32.dll_DestroyMenu]
mov dword [0x4caf68], 0
xor eax, eax
push eax
push dword [0x4caa88]
push eax
push eax
push dword [0x4cb420]
push dword [0x4cb41c]
push dword [0x4cb418]
push dword [0x4cb414]
push 0x2cf0000
push dword [0x4caa84]
push dword [0x4caa80]
push eax
call dword [sym.imp.USER32.dll_CreateWindowExA]
mov dword [0x4caa8c], eax
test eax, eax
je 0x475c01
push 5
push eax
call dword [sym.imp.USER32.dll_GetWindow]
mov dword [0x4caa90], eax
test eax, eax
je 0x475c01
xor eax, eax
push eax
push dword [0x4caa88]
push 0x5a
push dword [0x4caa8c]
push eax
push eax
push eax
push eax
push 0x44000000
push eax
push dword [0x4caa7c]
push eax
call dword [sym.imp.USER32.dll_CreateWindowExA]
mov dword [0x4caa94], eax
test eax, eax
je 0x475c01
push 5
push eax
call dword [sym.imp.USER32.dll_ShowWindow]
mov eax, dword [0x4cdb2c]
test eax, eax
jne 0x475b9f
push 0
push dword [0x4cabe0]
push dword [0x4caa84]
call dword [sym.imp.KERNEL32.dll_GetProfileIntA]
test eax, eax
jne 0x475b91
mov eax, dword [0x440fed8]
test eax, eax
je 0x475b80
mov eax, dword [0x440fedc]
cmp eax, 1
je 0x475df5
cmp eax, 2
je 0x475b91
cmp eax, 4
jne 0x475b6b
push 0x40
push dword [0x4cb420]
push dword [0x4cb41c]
push dword [0x4cb418]
push dword [0x4cb414]
push 0
push dword [0x4caa8c]
call dword [sym.imp.USER32.dll_SetWindowPos]
jmp 0x475b9f
cmp eax, 3
jne 0x475b9f
push 1
push dword [0x4caa8c]
call dword [sym.imp.USER32.dll_ShowWindow]
jmp 0x475b9f
push dword [ebp + 0x18]
push dword [0x4caa8c]
call dword [sym.imp.USER32.dll_ShowWindow]
jmp 0x475b9f
push 3
push dword [0x4caa8c]
call dword [sym.imp.USER32.dll_ShowWindow]
push dword [0x4caa8c]
call dword [sym.imp.USER32.dll_UpdateWindow]
push 0
call fcn.0046b950
pop ecx
mov ecx, dword [str.Intel_r__QuickWin_Version_8.00_nCopyright_Intel_nCorporation_1997___2007._nAll_Rights_Reserved]
xor eax, eax
movzx edx, byte [ecx + eax]
test edx, edx
je 0x475bd2
movzx edx, byte [ecx + eax + 1]
add eax, 2
test edx, edx
jne 0x475bbb
add eax, 0xffffffff
add eax, 1
push eax
call fcn.0048b682
pop ecx
mov dword [0x4caa98], eax
test eax, eax
je 0x475c01
mov edi, dword [str.Intel_r__QuickWin_Version_8.00_nCopyright_Intel_nCorporation_1997___2007._nAll_Rights_Reserved]
mov esi, eax
mov eax, esi
mov dl, byte [edi]
add edi, 1
mov byte [esi], dl
add esi, 1
test dl, dl
jne 0x475bef
test eax, eax
jne 0x475c10
mov esi, dword [ebp - 8]
mov edi, dword [ebp - 4]
mov eax, 0xffffffff
mov esp, ebp
pop ebp
ret
call fcn.00478878
mov esi, dword [ebp - 8]
mov edi, dword [ebp - 4]
mov dword [0x4caa60], 1
xor eax, eax
mov esp, ebp
pop ebp
ret
push 0x4be70c
call dword [sym.imp.KERNEL32.dll_lstrlenA]
add eax, 1
push eax
call fcn.0048b682
pop ecx
mov esi, eax
push 0x4be70c
push esi
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
push 0x4be714
mov dword [0x4cabfc], esi
call dword [sym.imp.KERNEL32.dll_lstrlenA]
add eax, 1
push eax
call fcn.0048b682
pop ecx
mov esi, eax
push 0x4be714
call dword [sym.imp.KERNEL32.dll_lstrlenA]
add eax, 1
push eax
push 0x4be714
push esi
call fcn.004a3b10
add esp, 0xc
push 0x4be720
mov dword [0x4cac00], esi
call dword [sym.imp.KERNEL32.dll_lstrlenA]
add eax, 1
push eax
call fcn.0048b682
pop ecx
mov esi, eax
push 0x4be720
push esi
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
push 0x4be728
mov dword [0x4cac04], esi
call dword [sym.imp.KERNEL32.dll_lstrlenA]
add eax, 1
push eax
call fcn.0048b682
pop ecx
mov esi, eax
push 0x4be728
push esi
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
push str._nQuickWin
mov dword [0x4cabf4], esi
call dword [sym.imp.KERNEL32.dll_lstrlenA]
add eax, 1
push eax
call fcn.0048b682
pop ecx
mov esi, eax
push str._nQuickWin
push esi
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
mov dword [0x4cabf8], esi
push 0x4b
call fcn.0048b682
mov esi, str.Text_files_.txt_
mov edi, dword [esi]
mov dword [eax], edi
mov edx, dword [esi + 4]
mov dword [eax + 4], edx
mov ecx, dword [esi + 8]
mov dword [eax + 8], ecx
mov edx, dword [esi + 0xc]
mov dword [eax + 0xc], edx
mov edx, dword [esi + 0x10]
mov dword [eax + 0x10], edx
mov edx, dword [esi + 0x14]
mov dword [eax + 0x14], edx
mov edx, dword [esi + 0x18]
mov dword [eax + 0x18], edx
mov edx, dword [esi + 0x1c]
mov dword [eax + 0x1c], edx
mov edx, dword [esi + 0x20]
mov dword [eax + 0x20], edx
mov edx, dword [esi + 0x24]
mov dword [eax + 0x24], edx
mov edx, dword [esi + 0x28]
mov dword [eax + 0x28], edx
mov edx, dword [esi + 0x2c]
mov dword [eax + 0x2c], edx
mov edx, dword [esi + 0x30]
mov dword [eax + 0x30], edx
mov edx, dword [esi + 0x34]
mov dword [eax + 0x34], edx
mov edx, dword [esi + 0x38]
mov dword [eax + 0x38], edx
mov edx, dword [esi + 0x3c]
mov dword [eax + 0x3c], edx
mov edx, dword [esi + 0x40]
mov dword [eax + 0x40], edx
mov edx, dword [esi + 0x44]
mov dword [eax + 0x44], edx
movzx edx, word [esi + 0x48]
mov word [eax + 0x48], dx
movzx edx, byte [esi + 0x4a]
mov byte [eax + 0x4a], dl
mov dword [0x4cabf0], eax
push 0x32
call fcn.0048b682
add esp, 8
mov edx, str.Bitmap_Files_.bmp_
mov ecx, dword [edx]
mov dword [eax], ecx
mov esi, dword [edx + 4]
mov dword [eax + 4], esi
mov edi, dword [edx + 8]
mov dword [eax + 8], edi
mov ecx, dword [edx + 0xc]
mov dword [eax + 0xc], ecx
mov ecx, dword [edx + 0x10]
mov dword [eax + 0x10], ecx
mov ecx, dword [edx + 0x14]
mov dword [eax + 0x14], ecx
mov ecx, dword [edx + 0x18]
mov dword [eax + 0x18], ecx
mov ecx, dword [edx + 0x1c]
mov dword [eax + 0x1c], ecx
mov ecx, dword [edx + 0x20]
mov dword [eax + 0x20], ecx
mov ecx, dword [edx + 0x24]
mov dword [eax + 0x24], ecx
mov ecx, dword [edx + 0x28]
mov dword [eax + 0x28], ecx
mov ecx, dword [edx + 0x2c]
mov dword [eax + 0x2c], ecx
movzx edx, word [edx + 0x30]
mov word [eax + 0x30], dx
jmp 0x47572f
push 6
push dword [0x4caa8c]
call dword [sym.imp.USER32.dll_ShowWindow]
jmp 0x475b9f
push 0x131
push str.qwkinit.c
push 7
call fcn.004751b8
add esp, 0xc
jmp 0x475a23
push 0x12b
push str.qwkinit.c
push 5
call fcn.004751b8
add esp, 0xc
jmp 0x475a16
push 0x89
push str.qwkinit.c
push 6
call fcn.00475140
add esp, 0xc
mov eax, 0xffffffff
mov esp, ebp
pop ebp
ret