Function at 0x403c20
Capabilities:
Read .ini file
Terminate process

Disassembly:
mov eax, 0x20b0
call fcn.0040ab40
push ebx
push ebp
push esi
push edi
mov edi, dword [esp + 0x20c4]
or ecx, 0xffffffff
xor eax, eax
lea edx, [esp + 0x14c0]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov dword [esp + 0x14], 0
mov eax, ecx
mov esi, edi
mov edi, edx
mov dword [esp + 0x2c], 0x94
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea ecx, [esp + 0x2c]
push ecx
call dword [sym.imp.KERNEL32.dll_GetVersionExA]
mov ebp, dword [esp + 0x20d0]
cmp ebp, 1
jne 0x404019
lea edx, [esp + 0x14c0]
lea eax, [esp + 0x8c0]
push edx
push 0x400
push eax
push 0x41df70
push str.Windows
push str.Certified_Versions
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
mov ecx, dword [esp + 0x34]
mov edx, dword [esp + 0x30]
push ecx
push edx
lea eax, [esp + 0x18c8]
push str._d._d
push eax
call fcn.0040aaee
add esp, 0x10
mov esi, 0x41df70
lea eax, [esp + 0x8c0]
mov dl, byte [eax]
mov bl, byte [esi]
mov cl, dl
cmp dl, bl
jne 0x403d01
test cl, cl
je 0x403cfd
mov dl, byte [eax + 1]
mov bl, byte [esi + 1]
mov cl, dl
cmp dl, bl
jne 0x403d01
add eax, 2
add esi, 2
test cl, cl
jne 0x403cd9
xor eax, eax
jmp 0x403d06
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x404043
push str.S_CHECKING_REQ_PREREQ
call fcn.00401b60
push eax
call fcn.00401ba0
push str.S_CHECKING_REQ_PREREQ
call fcn.00401b80
push eax
call fcn.004034e0
lea eax, [esp + 0x14d0]
lea ecx, [esp + 0xcd0]
push eax
push 0x400
push ecx
push 0x41df70
push str.CERTIFIED_VERSION_FAILURE_MESSAGE
push str.Certified_Versions
call fcn.00405730
push str.S_CHECKING_FOR_OS_VERSION
call fcn.00401b60
push eax
call fcn.00401ba0
push str.S_CHECKING_FOR_OS_VERSION
call fcn.00401b80
push eax
call fcn.004034e0
lea edi, [esp + 0x8f8]
or ecx, 0xffffffff
xor eax, eax
lea edx, [esp + 0xf8]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
lea edx, [esp + 0xf8]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea ecx, [esp + 0x4f8]
push ecx
push edx
call fcn.00403520
add esp, 0x40
lea eax, [esp + 0x4c0]
push eax
call fcn.004034d0
add esp, 4
lea ecx, [esp + 0x18c0]
push ecx
push str.S_ACTUAL
call fcn.00401b60
add esp, 4
lea edx, [esp + 0x4c4]
push eax
push edx
call fcn.0040aaee
lea eax, [esp + 0x4cc]
push eax
call fcn.00401ba0
add esp, 0x10
lea ecx, [esp + 0x18c0]
push ecx
push str.S_ACTUAL
call fcn.00401b80
add esp, 4
lea edx, [esp + 0x4c4]
push eax
push edx
call fcn.0040aaee
lea eax, [esp + 0x4cc]
push eax
call fcn.004034e0
lea ecx, [esp + 0x18d0]
lea edx, [esp + 0x8d0]
push ecx
push edx
call fcn.00403740
add esp, 0x18
cmp eax, 1
je 0x403fae
push str.S_SFAILED_ON_NEWLINE
call fcn.00401b60
push eax
call fcn.00401ba0
push str.S_SFAILED_ON_NEWLINE
call fcn.00401b80
push eax
call fcn.004034e0
add esp, 0x10
mov esi, 0x41df70
lea eax, [esp + 0xcc0]
mov dl, byte [eax]
mov bl, byte [esi]
mov cl, dl
cmp dl, bl
jne 0x403ea5
test cl, cl
je 0x403ea1
mov dl, byte [eax + 1]
mov bl, byte [esi + 1]
mov cl, dl
cmp dl, bl
jne 0x403ea5
add eax, 2
add esi, 2
test cl, cl
jne 0x403e7d
xor eax, eax
jmp 0x403eaa
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x403ec8
push 0x419658
call fcn.004034d0
lea eax, [esp + 0xcc4]
push eax
call fcn.004034d0
add esp, 8
mov eax, dword [esp + 0x20cc]
test eax, eax
jne 0x403f9e
push 0x41eae0
push str.S_EXIT_MSG
call fcn.00401b60
add esp, 4
lea ecx, [esp + 0x4c4]
push eax
push ecx
call fcn.0040aaee
lea edx, [esp + 0x4cc]
push edx
call fcn.00401ba0
add esp, 0x10
push 0x41eae0
push str.S_EXIT_MSG
call fcn.00401b80
add esp, 4
push eax
lea eax, [esp + 0x4c8]
push eax
call fcn.0040aaee
lea ecx, [esp + 0x4cc]
push ecx
call fcn.004034e0
mov eax, dword [esp + 0x20d8]
add esp, 0x10
test eax, eax
jne 0x403f92
mov eax, dword [esp + 0x20e0]
test eax, eax
jne 0x403f92
push str.S_EXIT_CONTINUE
call fcn.00401b60
push eax
call fcn.00401ba0
push str.S_EXIT_CONTINUE
call fcn.00401b80
push eax
call fcn.004034e0
mov eax, dword [0x41a4c4]
add esp, 0x10
dec eax
mov dword [0x41a4c4], eax
js 0x403f85
inc dword [0x41a4c0]
jmp 0x403f92
push 0x41a4c0
call fcn.0040b192
add esp, 4
call fcn.00403220
push 0xffffffffffffffff
call fcn.0040b0bd
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x20b0
ret
push str.S_SPASSED_ON_NEWLINE
call fcn.00401b60
push eax
call fcn.00401ba0
push str.S_SPASSED_ON_NEWLINE
call fcn.00401b80
push eax
call fcn.004034e0
mov eax, dword [esp + 0x20e4]
lea edx, [esp + 0x18d0]
push str.required
push edx
push str.Windows
push str._s__s__s
push eax
call fcn.0040aaee
mov edx, dword [esp + 0x20fc]
lea ecx, [esp + 0x18e4]
push str.optional
push ecx
push str.Windows
push str._s__s__s
push edx
call fcn.0040aaee
add esp, 0x38
lea eax, [esp + 0x14c0]
push 0x4195fc
push eax
call fcn.0040a6cd
mov ebx, eax
add esp, 8
test ebx, ebx
mov dword [esp + 0x18], ebx
jne 0x404076
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x20b0
ret
push str.S_NO_PREQ_RUN
call fcn.00401b60
push eax
call fcn.00401ba0
push str.S_NO_PREQ_RUN
call fcn.00401b80
push eax
call fcn.004034e0
add esp, 0x10
mov eax, 3
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x20b0
ret
mov edi, dword [esp + 0x20d4]
cmp ebp, 1
lea edx, [esp + 0x1cc0]
je 0x404090
mov edi, dword [esp + 0x20d8]
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
push ebx
mov eax, ecx
mov esi, edi
mov edi, edx
lea edx, [esp + 0x10c4]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
mov al, byte [0x41df70]
and ecx, 3
mov byte [esp + 0x8c4], al
rep movsb byte es:[edi], byte [esi]
lea ecx, [esp + 0x8c4]
mov byte [esp + 0xcc4], al
mov byte [esp + 0x10c4], al
push ecx
lea eax, [esp + 0x1cc8]
push edx
push eax
mov dword [esp + 0x20], 0
call fcn.00405510
add esp, 0x10
test eax, eax
jne 0x404e12
mov al, byte [0x41df70]
lea ecx, [esp + 0x8c0]
push ebx
lea edx, [esp + 0x10c4]
push ecx
push edx
push 0
mov byte [esp + 0x8d0], al
mov byte [esp + 0xcd0], al
mov byte [esp + 0x10d0], al
call fcn.00405510
add esp, 0x10
test eax, eax
jne 0x404e12
mov ebp, dword [esp + 0x20dc]
mov esi, str.SERVICE_PACK
lea eax, [esp + 0x10c0]
mov dl, byte [eax]
mov bl, byte [esi]
mov cl, dl
cmp dl, bl
jne 0x404170
test cl, cl
je 0x40416c
mov dl, byte [eax + 1]
mov bl, byte [esi + 1]
mov cl, dl
cmp dl, bl
jne 0x404170
add eax, 2
add esi, 2
test cl, cl
jne 0x404148
xor eax, eax
jmp 0x404175
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x4045d2
mov esi, 0x41df70
lea eax, [esp + 0x8c0]
mov dl, byte [eax]
mov bl, byte [esi]
mov cl, dl
cmp dl, bl
jne 0x4041b1
test cl, cl
je 0x4041ad
mov dl, byte [eax + 1]
mov bl, byte [esi + 1]
mov cl, dl
cmp dl, bl
jne 0x4041b1
add eax, 2
add esi, 2
test cl, cl
jne 0x404189
xor eax, eax
jmp 0x4041b6
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x4045d2
mov edx, dword [esp + 0x20d8]
lea eax, [esp + 0x14c0]
push eax
mov eax, dword [esp + 0x20d8]
lea ecx, [esp + 0xcc4]
push 0x400
push ecx
push 0x41df70
push str.SERVICE_PACK_FAILURE_MESSAGE
push edx
push eax
call fcn.004036b0
push str.S_CHECKING_FOR_SERVICE_PACK
call fcn.00401b60
push eax
call fcn.00401ba0
push str.S_CHECKING_FOR_SERVICE_PACK
call fcn.00401b80
push eax
call fcn.004034e0
lea edi, [esp + 0x8ec]
or ecx, 0xffffffff
xor eax, eax
lea edx, [esp + 0xec]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
lea edx, [esp + 0xec]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea ecx, [esp + 0x4ec]
push ecx
push edx
call fcn.00403520
lea eax, [esp + 0x4f4]
push eax
call fcn.004034d0
lea ecx, [esp + 0x78]
lea edx, [esp + 0xf8]
push ecx
push 0x41959c
push edx
call fcn.0040aaee
mov eax, dword [esp + 0x74]
add esp, 0x44
cmp eax, 4
jne 0x404317
mov esi, str.Service_Pack_6
lea eax, [esp + 0x40]
mov dl, byte [eax]
mov bl, byte [esi]
mov cl, dl
cmp dl, bl
jne 0x4042b7
test cl, cl
je 0x4042b3
mov dl, byte [eax + 1]
mov bl, byte [esi + 1]
mov cl, dl
cmp dl, bl
jne 0x4042b7
add eax, 2
add esi, 2
test cl, cl
jne 0x40428f
xor eax, eax
jmp 0x4042bc
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x404317
lea eax, [esp + 0x20]
push eax
push 1
push 0
push str.SOFTWAREMicrosoftWindows_NTCurrentVersionHotfixQ246009
push 0x80000002
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
test eax, eax
jne 0x40430c
mov edi, 0x41928c
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
lea edx, [esp + 0xc0]
mov esi, edi
mov ebx, ecx
mov edi, edx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, ebx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, ebx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov eax, dword [esp + 0x20]
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
lea ecx, [esp + 0xc0]
push ecx
push str.S_ACTUAL
call fcn.00401b60
add esp, 4
lea edx, [esp + 0x4c4]
push eax
push edx
call fcn.0040aaee
lea eax, [esp + 0x4cc]
push eax
call fcn.00401ba0
add esp, 0x10
lea ecx, [esp + 0xc0]
push ecx
push str.S_ACTUAL
call fcn.00401b80
add esp, 4
lea edx, [esp + 0x4c4]
push eax
push edx
call fcn.0040aaee
add esp, 0xc
mov esi, 0x41df70
lea eax, [esp + 0x40]
mov dl, byte [eax]
mov bl, byte [esi]
mov cl, dl
cmp dl, bl
jne 0x4043a1
test cl, cl
je 0x40439d
mov dl, byte [eax + 1]
mov bl, byte [esi + 1]
mov cl, dl
cmp dl, bl
jne 0x4043a1
add eax, 2
add esi, 2
test cl, cl
jne 0x404379
xor eax, eax
jmp 0x4043a6
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x40448f
lea eax, [esp + 0xc0]
push 0x41954c
push eax
call fcn.0040add9
push 0x41954c
push 0
call fcn.0040add9
push 0x41954c
push 0
call fcn.0040add9
mov ebx, eax
add esp, 0x18
test ebx, ebx
je 0x4044e2
lea edi, [esp + 0x8c0]
or ecx, 0xffffffff
xor eax, eax
lea edx, [esp + 0xc0]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
push ebx
mov eax, ecx
mov esi, edi
mov edi, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea ecx, [esp + 0x8c4]
push ecx
call fcn.00403740
add esp, 8
cmp eax, 1
mov dword [esp + 0x14], eax
je 0x4044e2
lea edx, [esp + 0xc0]
push 0x4192d0
push edx
call fcn.0040b010
add esp, 8
test eax, eax
jne 0x4044e2
lea esi, [esp + 0xc0]
mov eax, ebx
mov dl, byte [eax]
mov bl, byte [esi]
mov cl, dl
cmp dl, bl
jne 0x40447c
test cl, cl
je 0x404478
mov dl, byte [eax + 1]
mov bl, byte [esi + 1]
mov cl, dl
cmp dl, bl
jne 0x40447c
add eax, 2
add esi, 2
test cl, cl
jne 0x404454
xor eax, eax
jmp 0x404481
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jl 0x4044e2
mov dword [esp + 0x14], 1
jmp 0x4044e2
push str.none
push str.S_ACTUAL
call fcn.00401b60
add esp, 4
push eax
lea eax, [esp + 0x4c8]
push eax
call fcn.0040aaee
lea ecx, [esp + 0x4cc]
push ecx
call fcn.00401ba0
add esp, 0x10
push str.none
push str.S_ACTUAL
call fcn.00401b80
add esp, 4
lea edx, [esp + 0x4c4]
push eax
push edx
call fcn.0040aaee
add esp, 0xc
lea eax, [esp + 0x4c0]
push eax
call fcn.004034e0
mov ecx, dword [esp + 0x18]
mov eax, 1
add esp, 4
cmp ecx, eax
je 0x4045af
mov dword [esp + 0x10], eax
mov esi, 0x41df70
lea eax, [esp + 0xcc0]
mov dl, byte [eax]
mov bl, byte [esi]
mov cl, dl
cmp dl, bl
jne 0x40453b
test cl, cl
je 0x404537
mov dl, byte [eax + 1]
mov bl, byte [esi + 1]
mov cl, dl
cmp dl, bl
jne 0x40453b
add eax, 2
add esi, 2
test cl, cl
jne 0x404513
xor eax, eax
jmp 0x404540
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x404598
mov edi, 0x419658
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov edx, ecx
mov edi, ebp
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, edx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea edi, [esp + 0xcc0]
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov edx, ecx
mov edi, ebp
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, edx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
push str.S_SFAILED
call fcn.00401b60
push eax
call fcn.00401ba0
push str.S_SFAILED
jmp 0x4045c4
push str.S_SPASSED
call fcn.00401b60
push eax
call fcn.00401ba0
push str.S_SPASSED
call fcn.00401b80
push eax
call fcn.004034e0
add esp, 0x10
mov eax, dword [esp + 0x20c8]
test eax, eax
jne 0x404a78
mov esi, str.MIN_DISPLAY_COLORS
lea eax, [esp + 0x10c0]
mov dl, byte [eax]
mov bl, byte [esi]
mov cl, dl
cmp dl, bl
jne 0x404615
test cl, cl
je 0x404611
mov dl, byte [eax + 1]
mov bl, byte [esi + 1]
mov cl, dl
cmp dl, bl
jne 0x404615
add eax, 2
add esi, 2
test cl, cl
jne 0x4045ed
xor eax, eax
jmp 0x40461a
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x404a78
mov esi, 0x41df70
lea eax, [esp + 0x8c0]
mov dl, byte [eax]
mov bl, byte [esi]
mov cl, dl
cmp dl, bl
jne 0x404656
test cl, cl
je 0x404652
mov dl, byte [eax + 1]
mov bl, byte [esi + 1]
mov cl, dl
cmp dl, bl
jne 0x404656
add eax, 2
add esi, 2
test cl, cl
jne 0x40462e
xor eax, eax
jmp 0x40465b
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x404a78
mov edx, dword [esp + 0x20d8]
lea eax, [esp + 0x14c0]
push eax
mov eax, dword [esp + 0x20d8]
lea ecx, [esp + 0xcc4]
push 0x400
push ecx
push 0x41df70
push str.MIN_DISPLAY_COLORS_FAILURE_MESSAGE
push edx
push eax
call fcn.004036b0
add esp, 0x1c
lea ecx, [esp + 0x8c0]
push ecx
push str.S_CHECKING_FOR_DISP_COL
call fcn.00401b60
add esp, 4
lea edx, [esp + 0x4c4]
push eax
push edx
call fcn.0040aaee
lea eax, [esp + 0x4cc]
push eax
call fcn.00401ba0
add esp, 0x10
lea ecx, [esp + 0x8c0]
push ecx
push str.S_CHECKING_FOR_DISP_COL
call fcn.00401b80
add esp, 4
lea edx, [esp + 0x4c4]
push eax
push edx
call fcn.0040aaee
lea eax, [esp + 0x4cc]
push eax
call fcn.004034e0
add esp, 0x10
call fcn.004037c0
lea ecx, [esp + 0x8c0]
mov ebx, eax
push ecx
push str.S_HIGHER_THAN
mov dword [esp + 0x24], ebx
call fcn.00401b60
add esp, 4
lea edx, [esp + 0xc4]
push eax
push edx
call fcn.0040aaee
lea eax, [esp + 0xcc]
push eax
call fcn.00401ba0
add esp, 0x10
lea ecx, [esp + 0x8c0]
push ecx
push str.S_HIGHER_THAN
call fcn.00401b80
add esp, 4
lea edx, [esp + 0xc4]
push eax
push edx
call fcn.0040aaee
add esp, 0xc
cmp ebx, 4
jne 0x404789
mov ax, word [0x4194d4]
mov cl, byte [0x4194d6]
mov word [esp + 0xc0], ax
mov byte [esp + 0xc2], cl
jmp 0x4048dd
cmp ebx, 8
jne 0x4047a0
mov edx, dword [0x4194d0]
mov dword [esp + 0xc0], edx
jmp 0x4048dd
cmp ebx, 0xf
jne 0x4047c5
mov eax, dword [str.32768]
mov cx, word [0x4194cc]
mov dword [esp + 0xc0], eax
mov word [esp + 0xc4], cx
jmp 0x4048dd
cmp ebx, 0x10
jne 0x4047ea
mov edx, dword [str.65536]
mov ax, word [0x4194c4]
mov dword [esp + 0xc0], edx
mov word [esp + 0xc4], ax
jmp 0x4048dd
cmp ebx, 0x18
jne 0x40481a
mov ecx, dword [str.16777216]
mov edx, dword [0x4194b8]
mov al, byte [0x4194bc]
mov dword [esp + 0xc0], ecx
mov dword [esp + 0xc4], edx
mov byte [esp + 0xc8], al
jmp 0x4048dd
cmp ebx, 0x20
jne 0x404859
mov ecx, dword [str.4294967296]
mov edx, dword [0x4194ac]
mov ax, word [0x4194b0]
mov dword [esp + 0xc0], ecx
mov cl, byte [0x4194b2]
mov dword [esp + 0xc4], edx
mov word [esp + 0xc8], ax
mov byte [esp + 0xca], cl
jmp 0x4048dd
cmp ebx, 0x30
jne 0x404893
mov edx, dword [str.281474976710656]
mov eax, dword [0x41949c]
mov ecx, dword [0x4194a0]
mov dword [esp + 0xc0], edx
mov edx, dword [0x4194a4]
mov dword [esp + 0xc4], eax
mov dword [esp + 0xc8], ecx
mov dword [esp + 0xcc], edx
jmp 0x4048dd
cmp ebx, 0x40
jne 0x4048ae
mov ecx, 5
mov esi, str.18446744073709551616
lea edi, [esp + 0xc0]
rep movsd dword es:[edi], dword [esi]
movsb byte es:[edi], byte [esi]
jmp 0x4048dd
cmp ebx, 0x20
jge 0x4048dd
fld qword [0x4171a0]
fild dword [esp + 0x1c]
call fcn.0040b270
sub esp, 8
lea eax, [esp + 0xc8]
fstp qword [esp]
push 0x41947c
push eax
call fcn.0040aaee
add esp, 0x10
lea ecx, [esp + 0xc0]
push ecx
push str.S_ACTUAL
call fcn.00401b60
add esp, 4
lea edx, [esp + 0x4c4]
push eax
push edx
call fcn.0040aaee
lea eax, [esp + 0x4cc]
push eax
call fcn.00401ba0
add esp, 0x10
lea ecx, [esp + 0xc0]
push ecx
push str.S_ACTUAL
call fcn.00401b80
add esp, 4
lea edx, [esp + 0x4c4]
push eax
push edx
call fcn.0040aaee
lea eax, [esp + 0x4cc]
push eax
call fcn.004034e0
lea ecx, [esp + 0x8d0]
push ecx
call fcn.0040aea9
fst qword [esp + 0x38]
fcomp qword [0x417190]
add esp, 0x14
fnstsw ax
test ah, 0x41
jne 0x404a78
cmp ebx, 0x20
jge 0x404a52
fld qword [0x4171a0]
fild dword [esp + 0x1c]
call fcn.0040b270
fld qword [esp + 0x24]
fsub qword [0x417198]
fcompp
fnstsw ax
test ah, 0x41
jne 0x404a52
mov dword [esp + 0x10], 1
mov esi, 0x41df70
lea eax, [esp + 0xcc0]
mov dl, byte [eax]
mov bl, byte [esi]
mov cl, dl
cmp dl, bl
jne 0x4049d0
test cl, cl
je 0x4049cc
mov dl, byte [eax + 1]
mov bl, byte [esi + 1]
mov cl, dl
cmp dl, bl
jne 0x4049d0
add eax, 2
add esi, 2
test cl, cl
jne 0x4049a8
xor eax, eax
jmp 0x4049d5
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x404a2d
mov edi, 0x419658
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov edx, ecx
mov edi, ebp
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, edx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea edi, [esp + 0xcc0]
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov edx, ecx
mov edi, ebp
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, edx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
push str.S_SFAILED
call fcn.00401b60
push eax
call fcn.00401ba0
push str.S_SFAILED
call fcn.00401b80
push eax
call fcn.004034e0
add esp, 0x10
jmp 0x404a65
push str.S_SPASSED
call fcn.00401b60
push eax
call fcn.00401ba0
add esp, 8
push str.S_SPASSED
call fcn.00401b80
push eax
call fcn.004034e0
add esp, 8
mov esi, 0x419478
lea eax, [esp + 0x10c0]
mov dl, byte [eax]
mov bl, byte [esi]
mov cl, dl
cmp dl, bl
jne 0x404aac
test cl, cl
je 0x404aa8
mov dl, byte [eax + 1]
mov bl, byte [esi + 1]
mov cl, dl
cmp dl, bl
jne 0x404aac
add eax, 2
add esi, 2
test cl, cl
jne 0x404a84
xor eax, eax
jmp 0x404ab1
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x404cff
mov esi, 0x41df70
lea eax, [esp + 0x8c0]
mov dl, byte [eax]
mov bl, byte [esi]
mov cl, dl
cmp dl, bl
jne 0x404aed
test cl, cl
je 0x404ae9
mov dl, byte [eax + 1]
mov bl, byte [esi + 1]
mov cl, dl
cmp dl, bl
jne 0x404aed
add eax, 2
add esi, 2
test cl, cl
jne 0x404ac5
xor eax, eax
jmp 0x404af2
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x404cff
mov edx, dword [esp + 0x20d8]
lea eax, [esp + 0x14c0]
push eax
mov eax, dword [esp + 0x20d8]
lea ecx, [esp + 0xcc4]
push 0x400
push ecx
push 0x41df70
push str.CPU_FAILURE_MESSAGE
push edx
push eax
call fcn.004036b0
add esp, 0x1c
lea ecx, [esp + 0x8c0]
push ecx
push str.S_CHECKING_FOR_CPU
call fcn.00401b60
add esp, 4
lea edx, [esp + 0x4c4]
push eax
push edx
call fcn.0040aaee
lea eax, [esp + 0x4cc]
push eax
call fcn.00401ba0
add esp, 0x10
lea ecx, [esp + 0x8c0]
push ecx
push str.S_CHECKING_FOR_CPU
call fcn.00401b80
add esp, 4
lea edx, [esp + 0x4c4]
push eax
push edx
call fcn.0040aaee
lea eax, [esp + 0x4cc]
push eax
call fcn.004034e0
lea ecx, [esp + 0x8d0]
push ecx
call fcn.004037f0
add esp, 0x14
mov esi, eax
push esi
push str.S_ACTUAL_CPU
call fcn.00401b60
add esp, 4
lea edx, [esp + 0x4c4]
push eax
push edx
call fcn.0040aaee
lea eax, [esp + 0x4cc]
push eax
call fcn.00401ba0
add esp, 0x10
push esi
push str.S_ACTUAL_CPU
call fcn.00401b80
add esp, 4
lea ecx, [esp + 0x4c4]
push eax
push ecx
call fcn.0040aaee
lea edx, [esp + 0x4cc]
push edx
call fcn.004034e0
lea eax, [esp + 0x8d0]
push eax
call fcn.0040affa
add esp, 0x14
test eax, eax
jle 0x404cff
cmp esi, eax
jge 0x404cd9
mov dword [esp + 0x10], 1
mov esi, 0x41df70
lea eax, [esp + 0xcc0]
mov dl, byte [eax]
mov bl, byte [esi]
mov cl, dl
cmp dl, bl
jne 0x404c57
test cl, cl
je 0x404c53
mov dl, byte [eax + 1]
mov bl, byte [esi + 1]
mov cl, dl
cmp dl, bl
jne 0x404c57
add eax, 2
add esi, 2
test cl, cl
jne 0x404c2f
xor eax, eax
jmp 0x404c5c
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x404cb4
mov edi, 0x419658
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov edx, ecx
mov edi, ebp
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, edx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea edi, [esp + 0xcc0]
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov edx, ecx
mov edi, ebp
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, edx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
push str.S_SFAILED
call fcn.00401b60
push eax
call fcn.00401ba0
push str.S_SFAILED
call fcn.00401b80
push eax
call fcn.004034e0
add esp, 0x10
jmp 0x404cec
push str.S_SPASSED
call fcn.00401b60
push eax
call fcn.00401ba0
add esp, 8
push str.S_SPASSED
call fcn.00401b80
push eax
call fcn.004034e0
add esp, 8
mov esi, str.SWAP_SPACE
lea eax, [esp + 0x10c0]
mov dl, byte [eax]
mov bl, byte [esi]
mov cl, dl
cmp dl, bl
jne 0x404d33
test cl, cl
je 0x404d2f
mov dl, byte [eax + 1]
mov bl, byte [esi + 1]
mov cl, dl
cmp dl, bl
jne 0x404d33
add eax, 2
add esi, 2
test cl, cl
jne 0x404d0b
xor eax, eax
jmp 0x404d38
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x404dcd
mov esi, 0x41df70
lea eax, [esp + 0x8c0]
mov dl, byte [eax]
mov bl, byte [esi]
mov cl, dl
cmp dl, bl
jne 0x404d74
test cl, cl
je 0x404d70
mov dl, byte [eax + 1]
mov bl, byte [esi + 1]
mov cl, dl
cmp dl, bl
jne 0x404d74
add eax, 2
add esi, 2
test cl, cl
jne 0x404d4c
xor eax, eax
jmp 0x404d79
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x404dcd
mov edx, dword [esp + 0x20d8]
lea eax, [esp + 0x14c0]
push eax
mov eax, dword [esp + 0x20d8]
lea ecx, [esp + 0xcc4]
push 0x400
push ecx
push 0x41df70
push str.TEMP_SPACE_FAILURE_MESSAGE
push edx
push eax
call fcn.004036b0
lea ecx, [esp + 0x18dc]
lea edx, [esp + 0x8dc]
push ecx
push edx
call fcn.00403850
add esp, 0x24
mov dword [esp + 0x10], eax
mov al, byte [0x41df70]
lea ecx, [esp + 0x8c0]
mov byte [esp + 0x8c0], al
mov byte [esp + 0xcc0], al
mov byte [esp + 0x10c0], al
mov eax, dword [esp + 0x18]
push eax
lea edx, [esp + 0x10c4]
push ecx
push edx
push 0
call fcn.00405510
add esp, 0x10
test eax, eax
je 0x40413c
mov ebx, dword [esp + 0x18]
push ebx
call fcn.0040a657
mov eax, dword [esp + 0x14]
add esp, 4
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x20b0
ret