Function at 0x4042d0
Capabilities:
Check os version
Read .ini file
Terminate process

Disassembly:
mov eax, 0x24b0
call fcn.0040b8d0
mov eax, dword [esp + 0x24b4]
lea edx, [esp + 0x10b0]
mov dword [esp + 4], 0
sub edx, eax
mov cl, byte [eax]
mov byte [edx + eax], cl
inc eax
test cl, cl
jne 0x4042f2
push ebx
push ebp
push esi
push edi
lea eax, [esp + 0x2c]
push eax
mov dword [esp + 0x30], 0x94
call dword [sym.imp.KERNEL32.dll_GetVersionExA]
mov eax, dword [esp + 0x24e4]
test eax, eax
mov ebx, dword [esp + 0x24d8]
mov ebp, dword [esp + 0x24d0]
jne 0x404861
cmp ebp, 1
jne 0x404861
lea ecx, [esp + 0x10c0]
push ecx
push 0x400
lea edx, [esp + 0x8c8]
push edx
push 0x4193b8
push str.Windows
push str.Certified_Versions
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
mov eax, dword [esp + 0x34]
mov ecx, dword [esp + 0x30]
push eax
push ecx
lea edx, [esp + 0x18c8]
push str._d._d
push edx
call fcn.0040b90d
add esp, 0x10
mov edi, 0x4193b8
lea esi, [esp + 0x8c0]
mov ecx, ebp
xor eax, eax
repe cmpsb byte [esi], byte es:[edi]
je 0x4048bc
push str.S_CHECKING_REQ_PREREQ
call fcn.00401970
push eax
call fcn.004019b0
push str.S_CHECKING_REQ_PREREQ
call fcn.00401990
push eax
call fcn.00403a40
lea ecx, [esp + 0x10d0]
push ecx
push 0x400
lea edx, [esp + 0xcd8]
push edx
push 0x4193b8
push str.CERTIFIED_VERSION_FAILURE_MESSAGE
push str.Certified_Versions
call fcn.004089d0
push str.S_CHECKING_FOR_OS_VERSION
call fcn.00401970
push eax
call fcn.004019b0
push str.S_CHECKING_FOR_OS_VERSION
call fcn.00401990
push eax
call fcn.00403a40
add esp, 0x38
xor eax, eax
jmp 0x404410
mov cl, byte [esp + eax + 0x8c0]
mov byte [esp + eax + 0x4c0], cl
inc eax
test cl, cl
jne 0x404410
lea eax, [esp + 0xc0]
push eax
lea ecx, [esp + 0x4c4]
push ecx
call fcn.00403ac0
lea edx, [esp + 0xc8]
push edx
call fcn.004039f0
add esp, 0xc
lea eax, [esp + 0x18c0]
push eax
push str.S_ACTUAL
call fcn.00401970
add esp, 4
push eax
lea ecx, [esp + 0xc8]
push ecx
call fcn.0040b90d
lea edx, [esp + 0xcc]
push edx
call fcn.004019b0
add esp, 0x10
lea eax, [esp + 0x18c0]
push eax
push str.S_ACTUAL
call fcn.00401990
add esp, 4
push eax
lea ecx, [esp + 0xc8]
push ecx
call fcn.0040b90d
lea edx, [esp + 0xcc]
push edx
call fcn.00403a40
lea eax, [esp + 0x18d0]
push eax
lea ecx, [esp + 0x8d4]
push ecx
call fcn.00403c50
add esp, 0x18
cmp eax, 1
je 0x4047fd
push str.S_SFAILED_ON_NEWLINE
call fcn.00401970
push eax
call fcn.004019b0
push str.S_SFAILED_ON_NEWLINE
call fcn.00401990
push eax
call fcn.00403a40
add esp, 0x10
mov edi, 0x4193b8
lea esi, [esp + 0xcc0]
mov ecx, 1
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
je 0x404520
push 0x419af4
call fcn.004039f0
lea eax, [esp + 0xcc4]
push eax
call fcn.004039f0
add esp, 8
mov eax, dword [esp + 0x24cc]
test eax, eax
jne 0x4047ed
lea ecx, [esp + 0x10c0]
push ecx
push 0x400
lea edx, [esp + 0x20c8]
push edx
push 0x4193b8
push str.CERTIFIED_VERSION_WARN
push str.Certified_Versions
call fcn.004089d0
mov ebx, dword [esp + 0x24f8]
mov ebp, dword [esp + 0x24e0]
add esp, 0x18
mov edi, str.TRUE
lea esi, [esp + 0x20c0]
mov ecx, 5
xor eax, eax
repe cmpsb byte [esi], byte es:[edi]
jne 0x404734
lea ecx, [esp + 0x10c0]
push ecx
push 0x400
lea edx, [esp + 0xcc8]
push edx
push 0x4193b8
push str.CERTIFIED_VERSION_LOCATION
push str.Certified_Versions
call fcn.004089d0
push 0x419af4
call fcn.004019b0
add esp, 0x1c
mov edi, 0x4193b8
lea esi, [esp + 0xcc0]
mov ecx, 1
xor eax, eax
repe cmpsb byte [esi], byte es:[edi]
lea ecx, [esp + 0xcc0]
lea edx, [esp + 0xc0]
push ecx
je 0x4045e7
push str._nThe_version_of_this_operating_system_is_not_certified.Check__s_for_a_list_of_certified_versions._n
jmp 0x4045ec
push str._nThe_version_of_this_operating_system_is_not_certified._n
push edx
call fcn.0040b90d
lea eax, [esp + 0xcc]
push eax
call fcn.004019b0
lea ecx, [esp + 0xd0]
add esp, 0x10
push ecx
call fcn.00403a40
add esp, 4
test ebp, ebp
jne 0x404734
test ebx, ebx
jne 0x404734
push str._nDo_you_want_to_continue___y_n___n_:
call fcn.004019b0
push str._nDo_you_want_to_continue___y_n___n_:
call fcn.00403a40
push 0x421050
lea edx, [esp + 0xcc]
push 0x400
push edx
mov byte [esp + 0xd4], bl
call fcn.0040c13f
mov al, byte [esp + 0xd4]
add esp, 0x14
cmp al, 0x79
je 0x4046bf
cmp al, 0x59
je 0x4046bf
cmp al, 0x4e
je 0x404700
cmp al, 0x6e
je 0x404700
cmp al, 0xa
je 0x404700
push str._nDo_you_want_to_continue___y_n___n_:
call fcn.004019b0
push str._nDo_you_want_to_continue___y_n___n_:
call fcn.00403a40
push 0x421050
lea eax, [esp + 0xcc]
push 0x400
push eax
mov byte [esp + 0xd4], 0
call fcn.0040c13f
mov al, byte [esp + 0xd4]
add esp, 0x14
cmp al, 0x79
jne 0x404662
push str.The_user_has_verified_that_the_product_can_be_installed_on_this_platform._Continuing_with_the_install..._n
lea ecx, [esp + 0xc4]
push 0x419978
push ecx
call fcn.0040b90d
lea edx, [esp + 0xcc]
push edx
call fcn.004019b0
lea eax, [esp + 0xd0]
push eax
call fcn.00403a40
add esp, 0x14
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x24b0
ret
push str.The_user_has_verified_that_the_product_cannot_be_installed_on_this_platform._Quitting_the_install..._n
lea ecx, [esp + 0xc4]
push 0x419978
push ecx
call fcn.0040b90d
lea edx, [esp + 0xcc]
push edx
call fcn.004019b0
lea eax, [esp + 0xd0]
push eax
call fcn.00403a40
add esp, 0x14
push 0x423ce0
push str.S_EXIT_MSG
call fcn.00401970
add esp, 4
push eax
lea ecx, [esp + 0xc8]
push ecx
call fcn.0040b90d
lea edx, [esp + 0xcc]
push edx
call fcn.004019b0
add esp, 0x10
push 0x423ce0
push str.S_EXIT_MSG
call fcn.00401990
add esp, 4
push eax
lea eax, [esp + 0xc8]
push eax
call fcn.0040b90d
lea ecx, [esp + 0xcc]
push ecx
call fcn.00403a40
add esp, 0x10
test ebp, ebp
jne 0x4047e1
test ebx, ebx
jne 0x4047e1
push str.S_EXIT_CONTINUE
call fcn.00401970
push eax
call fcn.004019b0
push str.S_EXIT_CONTINUE
call fcn.00401990
push eax
call fcn.00403a40
mov eax, dword [0x421054]
add esp, 0x10
dec eax
mov dword [0x421054], eax
js 0x4047d4
inc dword [0x421050]
jmp 0x4047e1
push 0x421050
call fcn.0040c061
add esp, 4
call fcn.004037a0
push 0xffffffffffffffff
call fcn.0040c021
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x24b0
ret
push str.S_SPASSED_ON_NEWLINE
call fcn.00401970
push eax
call fcn.004019b0
push str.S_SPASSED_ON_NEWLINE
call fcn.00401990
push eax
call fcn.00403a40
mov eax, dword [esp + 0x24e4]
push str.required
lea edx, [esp + 0x18d4]
push edx
push str.Windows
push str._s__s__s
push eax
call fcn.0040b90d
push str.optional
lea ecx, [esp + 0x18e8]
push ecx
push str.Windows
push str._s__s__s
push ebx
call fcn.0040b90d
add esp, 0x38
mov esi, dword [esp + 0x24e8]
push str.Generic_Prereqs
push 0x419978
push esi
call fcn.0040b90d
lea edx, [esp + 0x10cc]
push 0x4198a0
push edx
call fcn.0040b728
mov edi, eax
add esp, 0x14
test edi, edi
mov dword [esp + 0x18], edi
je 0x4046f3
cmp dword [esp + 0x24e4], 1
lea edx, [esp + 0x1cc0]
jne 0x4048ef
mov eax, esi
sub edx, esi
mov cl, byte [eax]
mov byte [edx + eax], cl
inc eax
test cl, cl
jne 0x4048b0
jmp 0x40491a
push str.S_NO_PREQ_RUN
call fcn.00401970
push eax
call fcn.004019b0
push str.S_NO_PREQ_RUN
call fcn.00401990
push eax
call fcn.00403a40
add esp, 0x10
pop edi
pop esi
pop ebp
mov eax, 3
pop ebx
add esp, 0x24b0
ret
cmp ebp, 1
jne 0x40490c
mov eax, dword [esp + 0x24d4]
sub edx, eax
lea ecx, [ecx]
mov cl, byte [eax]
mov byte [edx + eax], cl
inc eax
test cl, cl
jne 0x404900
jmp 0x40491a
mov eax, ebx
sub edx, ebx
mov cl, byte [eax]
mov byte [eax + edx], cl
inc eax
test cl, cl
jne 0x404910
push edi
lea eax, [esp + 0x8c4]
push eax
lea ecx, [esp + 0x14c8]
push ecx
lea edx, [esp + 0x1ccc]
push edx
mov dword [esp + 0x20], 0
mov byte [esp + 0x8d0], 0
mov byte [esp + 0xcd0], 0
mov byte [esp + 0x14d0], 0
call fcn.004087d0
add esp, 0x10
test eax, eax
jne 0x405543
mov byte [esp + 0x8c0], al
mov byte [esp + 0xcc0], al
mov byte [esp + 0x14c0], al
mov eax, dword [esp + 0x18]
push eax
lea ecx, [esp + 0x8c4]
push ecx
lea edx, [esp + 0x14c8]
push edx
push 0
call fcn.004087d0
add esp, 0x10
test eax, eax
jne 0x405543
mov ebp, dword [esp + 0x24dc]
jmp 0x4049b0
mov edi, str.SERVICE_PACK
lea esi, [esp + 0x14c0]
mov ecx, 0xd
xor eax, eax
repe cmpsb byte [esi], byte es:[edi]
jne 0x404d94
mov edi, 0x4193b8
lea esi, [esp + 0x8c0]
mov ecx, 1
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
je 0x404d94
mov edx, dword [esp + 0x24d4]
lea eax, [esp + 0x10c0]
push eax
push 0x400
lea ecx, [esp + 0xcc8]
push ecx
push 0x4193b8
push str.SERVICE_PACK_FAILURE_MESSAGE
push ebx
push edx
call fcn.00403be0
push str.S_CHECKING_FOR_SERVICE_PACK
call fcn.00401970
push eax
call fcn.004019b0
push str.S_CHECKING_FOR_SERVICE_PACK
call fcn.00401990
mov esi, dword [0x422914]
add esp, 0x28
test esi, esi
je 0x404a61
mov ecx, eax
lea edi, [ecx + 1]
nop
mov dl, byte [ecx]
inc ecx
test dl, dl
jne 0x404a40
push esi
sub ecx, edi
push ecx
push 1
push eax
call fcn.0040bbdb
mov eax, dword [0x422914]
push eax
call fcn.0040b813
add esp, 0x14
xor eax, eax
jmp 0x404a70
mov cl, byte [esp + eax + 0x8c0]
mov byte [esp + eax + 0x4c0], cl
inc eax
test cl, cl
jne 0x404a70
lea ecx, [esp + 0xc0]
push ecx
lea edx, [esp + 0x4c4]
push edx
call fcn.00403ac0
lea eax, [esp + 0xc8]
push eax
call fcn.004039f0
lea ecx, [esp + 0x4c]
push ecx
lea edx, [esp + 0x4d0]
push 0x419978
push edx
call fcn.0040b90d
mov eax, dword [esp + 0x48]
add esp, 0x18
cmp eax, 4
jne 0x404b1d
mov edi, str.Service_Pack_6
lea esi, [esp + 0x40]
mov ecx, 0xf
xor eax, eax
repe cmpsb byte [esi], byte es:[edi]
jne 0x404b1d
lea ecx, [esp + 0x20]
push ecx
push 1
push eax
push str.SOFTWAREMicrosoftWindows_NTCurrentVersionHotfixQ246009
push 0x80000002
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
test eax, eax
jne 0x404b12
lea edi, [esp + 0x4c0]
dec edi
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x404b00
mov dx, word [0x419518]
mov word [edi], dx
mov eax, dword [esp + 0x20]
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
lea ecx, [esp + 0x4c0]
push ecx
push str.S_ACTUAL
call fcn.00401970
add esp, 4
push eax
lea edx, [esp + 0xc8]
push edx
call fcn.0040b90d
lea eax, [esp + 0xcc]
push eax
call fcn.004019b0
add esp, 0x10
lea ecx, [esp + 0x4c0]
push ecx
push str.S_ACTUAL
call fcn.00401990
add esp, 4
push eax
lea edx, [esp + 0xc8]
push edx
call fcn.0040b90d
add esp, 0xc
mov edi, 0x4193b8
lea esi, [esp + 0x40]
mov ecx, 1
xor eax, eax
repe cmpsb byte [esi], byte es:[edi]
je 0x404c5e
lea ecx, [esp + 0x4c0]
push 0x4197f4
push ecx
call fcn.0040b9a6
push 0x4197f4
push 0
call fcn.0040b9a6
push 0x4197f4
push 0
call fcn.0040b9a6
mov edi, eax
add esp, 0x18
test edi, edi
je 0x404cb1
xor eax, eax
jmp 0x404bd0
mov cl, byte [esp + eax + 0x8c0]
mov byte [esp + eax + 0x4c0], cl
inc eax
test cl, cl
jne 0x404bd0
lea edx, [esp + 0x8c0]
push edi
push edx
call fcn.00403c50
add esp, 8
cmp eax, 1
mov dword [esp + 0x14], eax
je 0x404cb1
lea eax, [esp + 0x4c0]
push 0x419564
push eax
call fcn.0040be40
add esp, 8
test eax, eax
jne 0x404cb1
lea esi, [esp + 0x4c0]
mov eax, edi
mov dl, byte [eax]
mov cl, dl
cmp dl, byte [esi]
jne 0x404c4b
test cl, cl
je 0x404c47
mov dl, byte [eax + 1]
mov cl, dl
cmp dl, byte [esi + 1]
jne 0x404c4b
add eax, 2
add esi, 2
test cl, cl
jne 0x404c27
xor eax, eax
jmp 0x404c50
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jl 0x404cb1
mov dword [esp + 0x14], 1
jmp 0x404cb1
push str.none
push str.S_ACTUAL
call fcn.00401970
add esp, 4
push eax
lea eax, [esp + 0xc8]
push eax
call fcn.0040b90d
lea ecx, [esp + 0xcc]
push ecx
call fcn.004019b0
add esp, 0x10
push str.none
push str.S_ACTUAL
call fcn.00401990
add esp, 4
push eax
lea edx, [esp + 0xc8]
push edx
call fcn.0040b90d
add esp, 0xc
mov esi, dword [0x422914]
test esi, esi
je 0x404cee
lea eax, [esp + 0xc0]
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x404cc5
sub eax, edx
push esi
push eax
lea eax, [esp + 0xc8]
push 1
push eax
call fcn.0040bbdb
mov ecx, dword [0x422914]
push ecx
call fcn.0040b813
add esp, 0x14
cmp dword [esp + 0x14], 1
je 0x404d71
mov ecx, 1
mov edi, 0x4193b8
lea esi, [esp + 0xcc0]
xor edx, edx
mov dword [esp + 0x10], ecx
repe cmpsb byte [esi], byte es:[edi]
je 0x404d5a
mov edi, ebp
dec edi
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x404d13
mov ax, word [0x419af4]
mov word [edi], ax
mov cl, byte [0x419af6]
lea eax, [esp + 0xcc0]
mov byte [edi + 2], cl
mov edx, eax
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x404d36
mov edi, ebp
sub eax, edx
dec edi
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x404d42
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]
push str.S_SFAILED
call fcn.00401970
push eax
call fcn.004019b0
push str.S_SFAILED
jmp 0x404d86
push str.S_SPASSED
call fcn.00401970
push eax
call fcn.004019b0
push str.S_SPASSED
call fcn.00401990
push eax
call fcn.00403a40
add esp, 0x10
mov eax, dword [esp + 0x24c8]
test eax, eax
jne 0x405213
cmp dword [esp + 0x24e4], 1
jne 0x405213
mov edi, str.MIN_DISPLAY_COLORS
lea esi, [esp + 0x14c0]
mov ecx, 0x13
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
jne 0x405213
mov edi, 0x4193b8
lea esi, [esp + 0x8c0]
mov ecx, 1
xor eax, eax
repe cmpsb byte [esi], byte es:[edi]
je 0x405213
mov eax, dword [esp + 0x24d4]
lea ecx, [esp + 0x10c0]
push ecx
push 0x400
lea edx, [esp + 0xcc8]
push edx
push 0x4193b8
push str.MIN_DISPLAY_COLORS_FAILURE_MESSAGE
push ebx
push eax
call fcn.00403be0
add esp, 0x1c
lea ecx, [esp + 0x8c0]
push ecx
push str.S_CHECKING_FOR_DISP_COL
call fcn.00401970
add esp, 4
push eax
lea edx, [esp + 0xc8]
push edx
call fcn.0040b90d
lea eax, [esp + 0xcc]
push eax
call fcn.004019b0
add esp, 0x10
lea ecx, [esp + 0x8c0]
push ecx
push str.S_CHECKING_FOR_DISP_COL
call fcn.00401990
add esp, 4
push eax
lea edx, [esp + 0xc8]
push edx
call fcn.0040b90d
lea eax, [esp + 0xcc]
push eax
call fcn.00403a40
add esp, 0x10
push 0
call dword [sym.imp.GDI32.dll_CreateCompatibleDC]
mov edi, eax
push 0xc
push edi
call dword [sym.imp.GDI32.dll_GetDeviceCaps]
mov esi, eax
push edi
mov dword [esp + 0x20], esi
call dword [sym.imp.GDI32.dll_DeleteDC]
lea ecx, [esp + 0x8c0]
push ecx
push str.S_HIGHER_THAN
call fcn.00401970
add esp, 4
push eax
lea edx, [esp + 0x4c8]
push edx
call fcn.0040b90d
lea eax, [esp + 0x4cc]
push eax
call fcn.004019b0
add esp, 0x10
lea ecx, [esp + 0x8c0]
push ecx
push str.S_HIGHER_THAN
call fcn.00401990
add esp, 4
push eax
lea edx, [esp + 0x4c8]
push edx
call fcn.0040b90d
add esp, 0xc
cmp esi, 4
jne 0x404f1b
mov ax, word [0x419788]
mov cl, byte [0x41978a]
mov word [esp + 0x4c0], ax
mov byte [esp + 0x4c2], cl
jmp 0x4050a8
cmp esi, 8
jne 0x404f30
mov dword [esp + 0x4c0], 0x363532
jmp 0x4050a8
cmp esi, 0xf
jne 0x404f55
mov edx, dword [str.32768]
mov ax, word [0x419784]
mov dword [esp + 0x4c0], edx
mov word [esp + 0x4c4], ax
jmp 0x4050a8
cmp esi, 0x10
jne 0x404f7b
mov ecx, dword [str.65536]
mov dx, word [0x41977c]
mov dword [esp + 0x4c0], ecx
mov word [esp + 0x4c4], dx
jmp 0x4050a8
cmp esi, 0x18
jne 0x404fab
mov eax, dword [str.16777216]
mov ecx, dword [0x419770]
mov dl, byte [0x419774]
mov dword [esp + 0x4c0], eax
mov dword [esp + 0x4c4], ecx
mov byte [esp + 0x4c8], dl
jmp 0x4050a8
cmp esi, 0x20
jne 0x404fe9
mov eax, dword [str.4294967296]
mov ecx, dword [0x419764]
mov dx, word [0x419768]
mov dword [esp + 0x4c0], eax
mov al, byte [0x41976a]
mov dword [esp + 0x4c4], ecx
mov word [esp + 0x4c8], dx
mov byte [esp + 0x4ca], al
jmp 0x4050a8
cmp esi, 0x30
jne 0x405026
mov ecx, dword [str.281474976710656]
mov edx, dword [0x419754]
mov eax, dword [0x419758]
mov dword [esp + 0x4c0], ecx
mov ecx, dword [0x41975c]
mov dword [esp + 0x4c4], edx
mov dword [esp + 0x4c8], eax
mov dword [esp + 0x4cc], ecx
jmp 0x4050a8
cmp esi, 0x40
jne 0x405079
mov edx, dword [0x419738]
mov eax, dword [0x41973c]
mov ecx, dword [0x419740]
mov dword [esp + 0x4c0], edx
mov edx, dword [0x419744]
mov dword [esp + 0x4c4], eax
mov eax, dword [0x419748]
mov dword [esp + 0x4c8], ecx
mov cl, byte [0x41974c]
mov dword [esp + 0x4cc], edx
mov dword [esp + 0x4d0], eax
mov byte [esp + 0x4d4], cl
jmp 0x4050a8
cmp esi, 0x20
jge 0x4050a8
fld qword [0x419730]
fild dword [esp + 0x1c]
call fcn.0040c1e0
sub esp, 8
fstp qword [esp]
lea edx, [esp + 0x4c8]
push 0x419728
push edx
call fcn.0040b90d
add esp, 0x10
lea eax, [esp + 0x4c0]
push eax
push str.S_ACTUAL
call fcn.00401970
add esp, 4
push eax
lea ecx, [esp + 0xc8]
push ecx
call fcn.0040b90d
lea edx, [esp + 0xcc]
push edx
call fcn.004019b0
add esp, 0x10
lea eax, [esp + 0x4c0]
push eax
push str.S_ACTUAL
call fcn.00401990
add esp, 4
push eax
lea ecx, [esp + 0xc8]
push ecx
call fcn.0040b90d
lea edx, [esp + 0xcc]
push edx
call fcn.00403a40
lea eax, [esp + 0x8d0]
push eax
call fcn.0040bd16
fst qword [esp + 0x38]
fcomp qword [0x4196b0]
add esp, 0x14
fnstsw ax
test ah, 0x41
jne 0x405213
cmp esi, 0x20
jge 0x4051ed
fld qword [0x419730]
fild dword [esp + 0x1c]
call fcn.0040c1e0
fld qword [esp + 0x24]
fsub qword [0x419720]
fcompp
fnstsw ax
test ah, 0x41
jne 0x4051ed
mov ecx, 1
mov edi, 0x4193b8
lea esi, [esp + 0xcc0]
xor edx, edx
mov dword [esp + 0x10], ecx
repe cmpsb byte [esi], byte es:[edi]
je 0x4051c8
mov edi, ebp
dec edi
lea ecx, [ecx]
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x405180
mov ax, word [0x419af4]
mov word [edi], ax
mov cl, byte [0x419af6]
lea eax, [esp + 0xcc0]
mov byte [edi + 2], cl
mov edx, eax
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x4051a3
mov edi, ebp
sub eax, edx
dec edi
nop
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x4051b0
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]
push str.S_SFAILED
call fcn.00401970
push eax
call fcn.004019b0
push str.S_SFAILED
call fcn.00401990
push eax
call fcn.00403a40
add esp, 0x10
jmp 0x405200
push str.S_SPASSED
call fcn.00401970
push eax
call fcn.004019b0
add esp, 8
push str.S_SPASSED
call fcn.00401990
push eax
call fcn.00403a40
add esp, 8
mov edi, 0x419718
lea esi, [esp + 0x14c0]
mov ecx, 4
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
jne 0x405483
mov edi, 0x4193b8
lea esi, [esp + 0x8c0]
mov ecx, 1
xor eax, eax
repe cmpsb byte [esi], byte es:[edi]
je 0x405483
mov eax, dword [esp + 0x24d4]
lea ecx, [esp + 0x10c0]
push ecx
push 0x400
lea edx, [esp + 0xcc8]
push edx
push 0x4193b8
push str.CPU_FAILURE_MESSAGE
push ebx
push eax
call fcn.00403be0
add esp, 0x1c
lea ecx, [esp + 0x8c0]
push ecx
push str.S_CHECKING_FOR_CPU
call fcn.00401970
add esp, 4
push eax
lea edx, [esp + 0xc8]
push edx
call fcn.0040b90d
lea eax, [esp + 0xcc]
push eax
call fcn.004019b0
add esp, 0x10
lea ecx, [esp + 0x8c0]
push ecx
push str.S_CHECKING_FOR_CPU
call fcn.00401990
add esp, 4
push eax
lea edx, [esp + 0xc8]
push edx
call fcn.0040b90d
mov edx, dword [0x422914]
add esp, 0xc
test edx, edx
je 0x40530f
lea eax, [esp + 0xc0]
lea esi, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x4052e6
push edx
sub eax, esi
push eax
lea eax, [esp + 0xc8]
push 1
push eax
call fcn.0040bbdb
mov ecx, dword [0x422914]
push ecx
call fcn.0040b813
add esp, 0x14
lea edx, [esp + 0x8c0]
push edx
call fcn.00403cd0
add esp, 4
mov esi, eax
push esi
push str.S_ACTUAL_CPU
call fcn.00401970
add esp, 4
push eax
lea eax, [esp + 0xc8]
push eax
call fcn.0040b90d
lea ecx, [esp + 0xcc]
push ecx
call fcn.004019b0
add esp, 0x10
push esi
push str.S_ACTUAL_CPU
call fcn.00401990
add esp, 4
push eax
lea edx, [esp + 0xc8]
push edx
call fcn.0040b90d
mov edx, dword [0x422914]
add esp, 0xc
test edx, edx
je 0x4053a9
lea eax, [esp + 0xc0]
lea edi, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x405380
push edx
sub eax, edi
push eax
lea eax, [esp + 0xc8]
push 1
push eax
call fcn.0040bbdb
mov ecx, dword [0x422914]
push ecx
call fcn.0040b813
add esp, 0x14
lea edx, [esp + 0x8c0]
push edx
call fcn.0040be31
add esp, 4
test eax, eax
jle 0x405483
cmp esi, eax
jge 0x40545d
mov ecx, 1
mov edi, 0x4193b8
lea esi, [esp + 0xcc0]
xor eax, eax
mov dword [esp + 0x10], ecx
repe cmpsb byte [esi], byte es:[edi]
je 0x405438
mov edi, ebp
dec edi
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x4053e7
mov cx, word [0x419af4]
mov word [edi], cx
mov dl, byte [0x419af6]
lea eax, [esp + 0xcc0]
mov byte [edi + 2], dl
mov edx, eax
jmp 0x405410
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x405410
mov edi, ebp
sub eax, edx
dec edi
lea esp, [esp]
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x405420
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]
push str.S_SFAILED
call fcn.00401970
push eax
call fcn.004019b0
push str.S_SFAILED
call fcn.00401990
push eax
call fcn.00403a40
add esp, 0x10
jmp 0x405470
push str.S_SPASSED
call fcn.00401970
push eax
call fcn.004019b0
add esp, 8
push str.S_SPASSED
call fcn.00401990
push eax
call fcn.00403a40
add esp, 8
cmp dword [esp + 0x24e4], 1
jne 0x405504
mov edi, str.SWAP_SPACE
lea esi, [esp + 0x14c0]
mov ecx, 0xb
xor eax, eax
repe cmpsb byte [esi], byte es:[edi]
jne 0x405504
mov edi, 0x4193b8
lea esi, [esp + 0x8c0]
mov ecx, 1
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
je 0x405504
mov edx, dword [esp + 0x24d4]
lea eax, [esp + 0x10c0]
push eax
push 0x400
lea ecx, [esp + 0xcc8]
push ecx
push 0x4193b8
push str.TEMP_SPACE_FAILURE_MESSAGE
push ebx
push edx
call fcn.00403be0
lea eax, [esp + 0x18dc]
push eax
lea ecx, [esp + 0x8e0]
push ecx
call fcn.00403d30
add esp, 0x24
mov dword [esp + 0x10], eax
mov edx, dword [esp + 0x18]
push edx
lea eax, [esp + 0x8c4]
push eax
lea ecx, [esp + 0x14c8]
push ecx
push 0
mov byte [esp + 0x8d0], 0
mov byte [esp + 0xcd0], 0
mov byte [esp + 0x14d0], 0
call fcn.004087d0
add esp, 0x10
test eax, eax
je 0x4049b0
mov edx, dword [esp + 0x18]
push edx
call fcn.0040b6a8
mov eax, dword [esp + 0x14]
add esp, 4
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x24b0
ret