Function at 0x40371f
Capabilities:
Check os version
Get number of processors

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x4c03b7
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x370
push ebx
push esi
push edi
mov ebx, ecx
push 1
xor edi, edi
push ebx
lea ecx, [esp + 0x30]
mov dword [esp + 0x2c], edi
call fcn.00416bc0
mov esi, dword [ebp + 0xc]
push str.bexit
mov ecx, esi
mov dword [esp + 0x388], edi
call fcn.00419b40
test al, al
je 0x403829
mov eax, dword [ebx]
push edi
mov ecx, ebx
call dword [eax + 0x104]
mov eax, dword [ebx]
mov ecx, ebx
call dword [eax + 0x50]
cmp byte [eax + 0x120], 0
push edi
push str.FULLSCREEN
je 0x4037c8
lea ecx, [esp + 0x230]
call fcn.00418c20
mov byte [esp + 0x384], 1
mov ecx, dword [ebx + 0x34c]
mov eax, dword [ecx]
push 1
lea edx, [esp + 0x22c]
push edx
call dword [eax + 0x40]
lea ecx, [esp + 0x228]
jmp 0x4037f7
lea ecx, [esp + 0xe0]
call fcn.00418c20
mov byte [esp + 0x384], 2
mov ecx, dword [ebx + 0x34c]
mov eax, dword [ecx]
push edi
lea edx, [esp + 0xdc]
push edx
call dword [eax + 0x40]
lea ecx, [esp + 0xd8]
mov byte [esp + 0x384], 0
call fcn.004190d0
mov eax, dword [ebx]
push 0x509f04
mov ecx, ebx
call dword [eax + 0x90]
mov esi, ebx
call fcn.0040757d
mov eax, dword [ebx]
mov ecx, ebx
call dword [eax + 0xf0]
jmp 0x404ebe
push str.btutorialok
mov ecx, esi
call fcn.00419af0
test al, al
je 0x403857
push str.blackdrop
mov ecx, ebx
call fcn.00403100
mov edx, dword [eax]
push edi
mov ecx, eax
call dword [edx + 0x58]
push str.tutorial
jmp 0x404ea4
push str.runnomoremoves
mov ecx, esi
call fcn.00419af0
test al, al
je 0x4038e0
push edi
push ecx
mov esi, str.nomoremoves
push esi
mov ecx, ebx
call fcn.00403100
pop ecx
mov ecx, eax
call fcn.00431de1
push edi
push 1
push esi
mov ecx, ebx
call fcn.00403100
mov ecx, eax
call fcn.00431ee0
push edi
push 1
push esi
mov ecx, ebx
call fcn.00403100
mov ecx, eax
call fcn.00431dc3
push esi
mov ecx, ebx
call fcn.00403100
push esi
mov ecx, ebx
mov dword [esp + 0x1c], eax
call fcn.00403100
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x20], eax
call fcn.00431ed9
mov ecx, dword [esp + 0x20]
dec eax
push eax
push edi
call fcn.00431d8e
push edi
push edi
push esi
mov ecx, ebx
call fcn.00403100
mov ecx, eax
jmp 0x4046ec
push str.launchfirework
mov ecx, esi
call fcn.004199b0
test al, al
je 0x403a96
mov ecx, dword [ebp + 8]
push edi
push edi
call fcn.00431a51
push esi
lea ecx, [esp + 0x34]
call fcn.00418b70
push edi
mov esi, 0x4d366e
push esi
lea ecx, [esp + 0x150]
mov byte [esp + 0x38c], 3
call fcn.00418c20
push edi
push str.launchfirework
lea ecx, [esp + 0x70]
mov byte [esp + 0x38c], 4
call fcn.00418c20
lea eax, [esp + 0x148]
push eax
lea eax, [esp + 0x6c]
push eax
lea eax, [esp + 0x38]
push eax
mov byte [esp + 0x390], 5
call fcn.00419e30
lea ecx, [esp + 0x68]
mov byte [esp + 0x384], 4
call fcn.004190d0
lea ecx, [esp + 0x148]
mov byte [esp + 0x384], 3
call fcn.004190d0
cmp dword [esp + 0x5c], edi
je 0x403988
mov esi, dword [esp + 0x5c]
push esi
call fcn.00481d12
pop ecx
push 7
push 5
lea esi, [ebx + 0x5c20]
mov dword [esp + 0x18], eax
call fcn.0041d230
mov esi, dword [esp + 0x14]
push eax
push dword [ebx + esi*4 + 0x5ba4]
call fcn.00411780
mov ecx, dword [ebx + esi*4 + 0x5ba4]
mov eax, dword [ecx]
push 1
call dword [eax + 0x58]
inc esi
cmp esi, 5
mov dword [esp + 0x10], esi
jge 0x403a8d
mov ecx, dword [ebp + 8]
mov esi, dword [ecx]
push 8
call dword [esi + 0x70]
mov ecx, dword [ebp + 8]
push eax
mov eax, dword [ecx]
call dword [eax + 0x6c]
mov ecx, dword [ebp + 8]
push eax
call dword [esi + 0xd4]
push 0x38
call fcn.00481acb
pop ecx
mov dword [esp + 0x18], eax
xor esi, esi
cmp eax, edi
mov byte [esp + 0x384], 6
je 0x403a38
inc esi
push esi
push str.launchfirework
lea ecx, [esp + 0x2d8]
call fcn.00418c20
push dword [esp + 0x10]
mov byte [esp + 0x388], 7
push eax
push dword [esp + 0x20]
mov dword [esp + 0x30], esi
call fcn.00402926
add esp, 0xc
mov esi, eax
mov dword [esp + 0x14], esi
mov ecx, dword [ebp + 8]
mov eax, ebx
add ebx, 0x2c
neg eax
sbb eax, eax
push esi
and eax, ebx
push eax
mov dword [esp + 0x38c], 9
call fcn.00431a51
cmp esi, edi
mov byte [esp + 0x384], 8
je 0x403a6f
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 4]
mov dword [esp + 0x384], 3
test byte [esp + 0x24], 1
je 0x403a8d
lea ecx, [esp + 0x2d0]
call fcn.004190d0
lea ecx, [esp + 0x30]
jmp 0x404d47
push str.ShakeStartButtonBig
mov ecx, esi
call fcn.00419af0
test al, al
je 0x403bf6
mov eax, dword [ebx]
push 0x12
mov ecx, ebx
call dword [eax + 0x104]
mov ecx, dword [ebp + 8]
push edi
push edi
call fcn.00431a51
mov ecx, dword [ebx + 0x564]
mov edi, str.BombStartLogo
push edi
call fcn.00402439
mov edx, dword [eax]
mov ecx, eax
call dword [edx + 0x70]
mov ecx, dword [ebx + 0x564]
mov esi, str.buttonstart
push esi
mov dword [esp + 0x28], eax
call fcn.00402439
mov edx, dword [eax]
mov ecx, eax
call dword [edx + 0x70]
mov ecx, dword [ebx + 0x564]
push edi
mov dword [esp + 0x14], eax
call fcn.00402439
mov ecx, dword [ebx + 0x564]
push edi
mov dword [esp + 0x1c], eax
call fcn.00402439
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x20], eax
mov eax, dword [eax]
add eax, 0x4c
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x24]
add eax, 0xf
push eax
mov eax, dword [ecx]
call dword [eax + 0x6c]
mov ecx, dword [esp + 0x24]
push eax
mov eax, dword [esp + 0x24]
call dword [eax]
mov ecx, dword [ebx + 0x564]
push edi
call fcn.00402439
mov ecx, dword [ebx + 0x564]
push edi
mov dword [esp + 0x20], eax
call fcn.00402439
mov ecx, dword [esp + 0x1c]
mov dword [esp + 0x18], eax
mov eax, dword [eax]
mov edi, 0xd4
add eax, edi
push 3
push dword [esp + 0x28]
mov dword [esp + 0x28], eax
mov eax, dword [ecx]
call dword [eax + 0x6c]
mov ecx, dword [esp + 0x20]
push eax
mov eax, dword [esp + 0x2c]
call dword [eax]
mov ecx, dword [ebx + 0x564]
push esi
call fcn.00402439
mov ecx, dword [ebx + 0x564]
push esi
mov dword [esp + 0x20], eax
call fcn.00402439
mov ecx, dword [esp + 0x1c]
mov dword [esp + 0x18], eax
mov eax, dword [eax]
add eax, 0x4c
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x10]
add eax, 0xf
push eax
mov eax, dword [ecx]
call dword [eax + 0x6c]
mov ecx, dword [esp + 0x1c]
push eax
mov eax, dword [esp + 0x28]
call dword [eax]
mov ecx, dword [ebx + 0x564]
push esi
call fcn.00402439
mov ebx, dword [ebx + 0x564]
push esi
mov ecx, ebx
mov dword [esp + 0x20], eax
call fcn.00402439
mov ecx, dword [esp + 0x1c]
push 3
push dword [esp + 0x14]
jmp 0x403df0
push str.ShakeStartButtonSmall
mov ecx, esi
call fcn.00419af0
test al, al
je 0x403e05
mov eax, dword [ebx]
push 0x13
mov ecx, ebx
call dword [eax + 0x104]
mov ecx, dword [ebp + 8]
push edi
push edi
call fcn.00431a51
mov ecx, dword [ebx + 0x564]
mov edi, str.BombStartLogo
push edi
call fcn.00402439
mov edx, dword [eax]
mov ecx, eax
call dword [edx + 0x70]
mov ecx, dword [ebx + 0x564]
mov esi, str.buttonstart
push esi
mov dword [esp + 0x28], eax
call fcn.00402439
mov edx, dword [eax]
mov ecx, eax
call dword [edx + 0x70]
mov ecx, dword [ebx + 0x564]
push str.PuzzleLogoText
mov dword [esp + 0x14], eax
call fcn.00402439
mov edx, dword [eax]
mov ecx, eax
call dword [edx + 0x70]
mov ecx, dword [ebx + 0x564]
push edi
mov dword [esp + 0x24], eax
call fcn.00402439
mov ecx, dword [ebx + 0x564]
push edi
mov dword [esp + 0x20], eax
call fcn.00402439
mov ecx, dword [esp + 0x1c]
mov dword [esp + 0x18], eax
mov eax, dword [eax]
add eax, 0x4c
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x24]
add eax, 0xc
push eax
mov eax, dword [ecx]
call dword [eax + 0x6c]
mov ecx, dword [esp + 0x1c]
push eax
mov eax, dword [esp + 0x1c]
call dword [eax]
mov ecx, dword [ebx + 0x564]
push edi
call fcn.00402439
mov ecx, dword [ebx + 0x564]
push edi
mov dword [esp + 0x18], eax
call fcn.00402439
mov ecx, dword [esp + 0x14]
mov dword [esp + 0x1c], eax
mov eax, dword [eax]
mov edi, 0xd4
add eax, edi
push 2
push dword [esp + 0x28]
mov dword [esp + 0x20], eax
mov eax, dword [ecx]
call dword [eax + 0x6c]
mov ecx, dword [esp + 0x24]
push eax
mov eax, dword [esp + 0x24]
call dword [eax]
mov ecx, dword [ebx + 0x564]
push esi
call fcn.00402439
mov ecx, dword [ebx + 0x564]
push esi
mov dword [esp + 0x18], eax
call fcn.00402439
mov dword [esp + 0x1c], eax
mov eax, dword [eax]
mov ecx, dword [esp + 0x14]
add eax, 0x4c
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x10]
add eax, 0xc
push eax
mov eax, dword [ecx]
call dword [eax + 0x6c]
mov ecx, dword [esp + 0x20]
push eax
mov eax, dword [esp + 0x20]
call dword [eax]
mov ecx, dword [ebx + 0x564]
push esi
call fcn.00402439
mov ecx, dword [ebx + 0x564]
push esi
mov dword [esp + 0x18], eax
call fcn.00402439
mov esi, dword [eax]
mov ecx, dword [esp + 0x14]
push 2
push dword [esp + 0x14]
mov dword [esp + 0x24], eax
mov eax, dword [ecx]
add esi, edi
call dword [eax + 0x6c]
mov ecx, dword [esp + 0x24]
push eax
call dword [esi]
mov ecx, dword [ebx + 0x564]
mov esi, str.PuzzleLogoText
push esi
call fcn.00402439
mov ecx, dword [ebx + 0x564]
push esi
mov dword [esp + 0x18], eax
call fcn.00402439
mov ecx, dword [esp + 0x14]
mov dword [esp + 0x1c], eax
mov eax, dword [eax]
add eax, 0x4c
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x20]
add eax, 0xc
push eax
mov eax, dword [ecx]
call dword [eax + 0x6c]
mov ecx, dword [esp + 0x20]
push eax
mov eax, dword [esp + 0x20]
call dword [eax]
mov ecx, dword [ebx + 0x564]
push esi
call fcn.00402439
mov ebx, dword [ebx + 0x564]
push esi
mov ecx, ebx
mov dword [esp + 0x18], eax
call fcn.00402439
mov ecx, dword [esp + 0x14]
push 2
push dword [esp + 0x24]
mov ebx, eax
mov esi, dword [ebx]
mov eax, dword [ecx]
add esi, edi
call dword [eax + 0x6c]
push eax
mov ecx, ebx
call dword [esi]
jmp 0x404ebe
push str.enablesolutionbutton
mov ecx, esi
call fcn.00419af0
test al, al
je 0x403f86
mov ecx, dword [ebp + 8]
push edi
push edi
call fcn.00431a51
push str.hinttimertext
mov ecx, ebx
call fcn.00403100
mov edx, dword [eax]
push edi
mov ecx, eax
call dword [edx + 0x58]
push str.hinttext
mov ecx, ebx
call fcn.00403100
mov edx, dword [eax]
push 1
mov ecx, eax
call dword [edx + 0x58]
push str.buttonconsolestopsolution
mov ecx, ebx
call fcn.00403100
mov edx, dword [eax]
push edi
mov ecx, eax
call dword [edx + 0x58]
mov esi, str.buttonconsolesolution
push esi
mov ecx, ebx
call fcn.00403100
mov edx, dword [eax]
push 1
mov ecx, eax
call dword [edx + 0x58]
push esi
mov ecx, ebx
call fcn.00403100
mov edx, 0x80
push edx
push edx
push edx
mov ecx, eax
mov eax, dword [eax]
push edi
call dword [eax + 0xa8]
push esi
mov ecx, ebx
call fcn.00403100
mov edx, dword [eax]
push edi
push 5
push 0x80
mov ecx, eax
call dword [edx + 0xd8]
push esi
mov ecx, ebx
call fcn.00403100
mov ecx, dword [eax + 0x1a8]
cmp ecx, 3
je 0x403ecc
cmp ecx, 4
je 0x403ecc
push 1
mov ecx, eax
call fcn.00402f47
mov eax, dword [ebx]
push 0x10
mov ecx, ebx
call dword [eax + 0x104]
push str.PixieDustAnim
mov ecx, ebx
call fcn.00403100
mov esi, eax
push edi
mov ecx, esi
call fcn.00431de1
push edi
push 1
mov ecx, esi
call fcn.00431dc3
push edi
push 1
mov ecx, esi
call fcn.00431ee0
mov ecx, esi
call fcn.00431ed9
dec eax
push eax
push edi
mov ecx, esi
call fcn.00431d8e
mov eax, dword [esi]
push 1
mov ecx, esi
call dword [eax + 0x58]
push 0x38
call fcn.00481acb
pop ecx
mov dword [esp + 0x14], eax
cmp eax, edi
mov byte [esp + 0x384], 0xa
je 0x403f47
push edi
push str.showfalse
mov ecx, eax
call fcn.00418c20
mov dword [esp + 0x10], eax
jmp 0x403f4b
mov dword [esp + 0x10], edi
mov eax, dword [esp + 0x10]
mov dword [esp + 0x1c], eax
push eax
lea eax, [ebx + 0x2c]
push eax
mov ecx, esi
mov byte [esp + 0x38c], 0xb
call fcn.00431a51
mov ecx, dword [esp + 0x10]
cmp ecx, edi
mov byte [esp + 0x384], 0
je 0x403f7c
mov eax, dword [ecx]
call dword [eax + 4]
push str.solutiontimer
jmp 0x404ea4
push str.showfalse
mov ecx, esi
call fcn.00419af0
test al, al
je 0x403fac
mov esi, dword [ebp + 8]
push edi
push edi
mov ecx, esi
call fcn.00431a51
mov eax, dword [esi]
push edi
mov ecx, esi
jmp 0x404c79
mov ecx, dword [ebp + 0xc]
mov esi, str.buttonconsolesolution
push esi
call fcn.00419af0
test al, al
je 0x40403b
mov eax, ebx
call fcn.0040a55b
push esi
mov ecx, ebx
call fcn.00403100
push edi
mov ecx, eax
call fcn.00402f47
push esi
mov ecx, ebx
call fcn.00403100
mov edx, dword [eax]
push edi
mov ecx, eax
call dword [edx + 0x58]
mov esi, str.buttonconsolestopsolution
push esi
mov ecx, ebx
call fcn.00403100
mov edx, dword [eax]
push 1
mov ecx, eax
call dword [edx + 0x58]
push esi
mov ecx, ebx
call fcn.00403100
mov ecx, dword [eax + 0x1a8]
cmp ecx, 3
je 0x40401c
cmp ecx, 4
je 0x40401c
push 1
mov ecx, eax
call fcn.00402f47
mov ecx, ebx
call fcn.0040a485
mov eax, dword [ebx]
push 0x16
mov ecx, ebx
mov byte [ebx + 0x5b51], 1
call dword [eax + 0x104]
jmp 0x404ebe
mov esi, dword [ebp + 0xc]
push str.buttonconsolestopsolution
mov ecx, esi
call fcn.00419af0
test al, al
je 0x40419e
mov esi, ebx
call fcn.0040a361
push str.buttonconsolestopsolution
mov ecx, ebx
call fcn.00403100
mov edx, dword [eax]
push edi
mov ecx, eax
call dword [edx + 0x58]
push str.hinttimertext
mov ecx, ebx
call fcn.00403100
mov edx, dword [eax]
push 1
mov ecx, eax
call dword [edx + 0x58]
push str.hinttext
mov ecx, ebx
call fcn.00403100
mov edx, dword [eax]
push edi
mov ecx, eax
call dword [edx + 0x58]
mov esi, str.consolesolutionstrip
push esi
mov ecx, ebx
call fcn.00403100
mov edx, dword [eax]
push 1
mov ecx, eax
call dword [edx + 0x58]
push edi
push ecx
push esi
mov ecx, ebx
call fcn.00403100
pop ecx
mov ecx, eax
call fcn.00431de1
push edi
push 1
push esi
mov ecx, ebx
call fcn.00403100
mov ecx, eax
call fcn.00431ee0
push edi
push 0x1b
push esi
mov ecx, ebx
call fcn.00403100
mov ecx, eax
call fcn.00431dc3
push esi
mov ecx, ebx
call fcn.00403100
push esi
mov ecx, ebx
mov dword [esp + 0x18], eax
call fcn.00403100
mov ecx, dword [esp + 0x14]
mov dword [esp + 0x1c], eax
call fcn.00431ed9
mov ecx, dword [esp + 0x1c]
dec eax
push eax
push edi
call fcn.00431d8e
push 0x38
call fcn.00481acb
pop ecx
mov dword [esp + 0x14], eax
cmp eax, edi
mov byte [esp + 0x384], 0xc
je 0x40413a
push edi
push str.enablesolutionbutton
mov ecx, eax
call fcn.00418c20
mov dword [esp + 0x10], eax
jmp 0x40413e
mov dword [esp + 0x10], edi
mov eax, dword [esp + 0x10]
mov dword [esp + 0x18], eax
push eax
mov eax, ebx
neg eax
lea ecx, [ebx + 0x2c]
sbb eax, eax
and eax, ecx
push eax
push esi
mov ecx, ebx
mov byte [esp + 0x390], 0xd
call fcn.00403100
mov ecx, eax
call fcn.00431a51
cmp dword [esp + 0x10], edi
mov byte [esp + 0x384], 0
je 0x404181
mov ecx, dword [esp + 0x10]
mov eax, dword [ecx]
call dword [eax + 4]
push esi
mov ecx, ebx
call fcn.00403100
mov ecx, eax
call fcn.00431ed9
imul eax, eax, 0x1b
mov dword [ebx + 0x5ba0], eax
jmp 0x404ebe
push str.bmenu
mov ecx, esi
call fcn.00419af0
test al, al
je 0x4041e1
mov eax, dword [ebx]
push edi
mov ecx, ebx
call dword [eax + 0x104]
push str.blackdrop
mov ecx, ebx
call fcn.00403100
mov edx, dword [eax]
push 1
mov ecx, eax
call dword [edx + 0x58]
push str.menu
mov ecx, ebx
call fcn.00403100
push 1
jmp 0x404eac
push str.bContinue
mov ecx, esi
call fcn.00419af0
test al, al
je 0x404201
mov eax, dword [ebx]
push edi
mov ecx, ebx
call dword [eax + 0x104]
jmp 0x4047d3
push str.bmenucancel
mov ecx, esi
call fcn.00419af0
test al, al
je 0x40423a
mov eax, dword [ebx]
push edi
mov ecx, ebx
call dword [eax + 0x104]
push str.blackdrop
mov ecx, ebx
call fcn.00403100
mov edx, dword [eax]
push edi
mov ecx, eax
call dword [edx + 0x58]
push str.menu
jmp 0x404ea4
push str.bmenuquit
mov ecx, esi
call fcn.00419af0
test al, al
je 0x404273
mov eax, dword [ebx]
push edi
mov ecx, ebx
call dword [eax + 0x104]
push str.blackdrop
mov ecx, ebx
call fcn.00403100
mov edx, dword [eax]
push edi
mov ecx, eax
call dword [edx + 0x58]
push str.menu
jmp 0x40475f
push str.bmenuhighscore
mov ecx, esi
call fcn.00419af0
test al, al
je 0x4042cf
mov eax, dword [ebx]
push edi
mov ecx, ebx
call dword [eax + 0x104]
push str.blackdrop
mov ecx, ebx
call fcn.00403100
mov edx, dword [eax]
push 1
mov ecx, eax
call dword [edx + 0x58]
push str.menu
mov ecx, ebx
call fcn.00403100
push edi
mov edx, dword [eax]
mov ecx, eax
call dword [edx + 0x58]
add ebx, 0x5d10
mov ecx, dword [ebx]
push 1
call fcn.0040c785
mov ecx, dword [ebx]
mov eax, dword [ecx]
jmp 0x404c77
push str.bhighscore
mov ecx, esi
call fcn.00419af0
test al, al
je 0x4042fa
mov eax, dword [ebx]
push edi
mov ecx, ebx
call dword [eax + 0x104]
push str.blackdrop
mov ecx, ebx
call fcn.00403100
push 1
jmp 0x4042b0
push str.bmenuinstruct
mov ecx, esi
call fcn.00419af0
test al, al
je 0x404340
mov eax, dword [ebx]
push edi
mov ecx, ebx
call dword [eax + 0x104]
mov ecx, dword [ebx + 0x5cfc]
mov eax, dword [ecx]
push 1
call dword [eax + 0x58]
push str.menu
mov ecx, ebx
call fcn.00403100
mov edx, dword [eax]
push edi
mov ecx, eax
call dword [edx + 0x58]
push str.blackdrop
jmp 0x404ea4
push str.binstruct
mov ecx, esi
call fcn.00419af0
test al, al
je 0x404366
mov eax, dword [ebx]
push edi
mov ecx, ebx
call dword [eax + 0x104]
mov ebx, dword [ebx + 0x5cfc]
jmp 0x404c73
push str.bmenuoptions
mov ecx, esi
call fcn.00419af0
test al, al
je 0x4043b4
mov eax, dword [ebx]
push edi
mov ecx, ebx
call dword [eax + 0x104]
push str.blackdrop
mov ecx, ebx
call fcn.00403100
mov edx, dword [eax]
push 1
mov ecx, eax
call dword [edx + 0x58]
push str.menu
mov ecx, ebx
call fcn.00403100
push edi
mov edx, dword [eax]
mov ecx, eax
call dword [edx + 0x58]
push str.options
jmp 0x4041d3
push str.boptions
mov ecx, esi
call fcn.00419af0
test al, al
je 0x4043df
mov eax, dword [ebx]
push edi
mov ecx, ebx
call dword [eax + 0x104]
push str.blackdrop
mov ecx, ebx
call fcn.00403100
push 1
jmp 0x4043a3
push str.buttonconsoleundo
mov ecx, esi
call fcn.00419af0
test al, al
je 0x4043fb
mov eax, ebx
call fcn.0040835d
jmp 0x404ebe
push str.fadefont
mov ecx, esi
call fcn.00419af0
test al, al
je 0x40447f
mov esi, dword [ebp + 8]
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 0xb0]
cmp eax, edi
jne 0x404462
mov eax, dword [esi]
push edi
mov ecx, esi
call dword [eax + 0x58]
push edi
push str.fadefont
lea ecx, [esp + 0x2a0]
call fcn.00418c20
push edi
push esi
push 0x18
lea ecx, [esp + 0x2a4]
push ecx
mov byte [esp + 0x394], 0xe
mov eax, dword [ebx]
push 1
mov ecx, ebx
call dword [eax + 0x15c]
lea ecx, [esp + 0x298]
jmp 0x404d47
dec eax
jns 0x404467
xor eax, eax
mov edx, dword [esi]
mov ecx, 0x80
push ecx
push ecx
push ecx
push eax
mov ecx, esi
call dword [edx + 0xa8]
jmp 0x404ebe
push str.HighlightBlockLocation
mov ecx, esi
call fcn.00419af0
test al, al
je 0x40454c
mov ecx, dword [ebx + 0x5b58]
mov eax, dword [ecx]
call dword [eax + 0x74]
mov ecx, dword [ebx + 0x1480]
cdq
sub eax, edx
mov esi, eax
mov eax, dword [ecx]
sar esi, 1
call dword [eax + 0x6c]
mov ecx, dword [ebx + 0x5b58]
add eax, esi
mov dword [esp + 0x14], eax
mov eax, dword [ecx]
call dword [eax + 0x6c]
mov ecx, dword [ebx + 0x5b58]
mov esi, eax
mov eax, dword [ecx]
add esi, dword [esp + 0x14]
call dword [eax + 0x78]
mov ecx, dword [ebx + 0x1480]
cdq
sub eax, edx
mov dword [esp + 0x10], eax
mov eax, dword [ecx]
sar dword [esp + 0x10], 1
call dword [eax + 0x70]
mov ecx, dword [esp + 0x10]
add eax, ecx
mov ecx, dword [ebx + 0x5b58]
mov dword [esp + 0x14], eax
mov eax, dword [ecx]
call dword [eax + 0x70]
add eax, dword [esp + 0x14]
push eax
push esi
mov eax, ebx
call fcn.004099f2
push edi
push str.ClickOnBlockLocation
lea ecx, [esp + 0x1c0]
call fcn.00418c20
push edi
mov byte [esp + 0x388], 0xf
push dword [ebx + 0x5b58]
mov eax, dword [ebx]
push edi
lea ecx, [esp + 0x1c4]
push ecx
push 0x14
mov ecx, ebx
call dword [eax + 0x15c]
lea ecx, [esp + 0x1b8]
jmp 0x404d47
push str.ClickOnBlockLocation
mov ecx, esi
call fcn.00419af0
test al, al
je 0x4046f6
mov eax, dword [ebx + 0x568]
cmp eax, 3
jne 0x404ebe
mov ecx, dword [ebx + 0x5b58]
mov eax, dword [ecx]
call dword [eax + 0x74]
mov ecx, dword [ebx + 0x1480]
cdq
sub eax, edx
mov esi, eax
mov eax, dword [ecx]
sar esi, 1
call dword [eax + 0x6c]
mov ecx, dword [ebx + 0x5b58]
add eax, esi
mov dword [esp + 0x14], eax
mov eax, dword [ecx]
call dword [eax + 0x6c]
mov ecx, dword [ebx + 0x5b58]
mov esi, eax
mov eax, dword [ecx]
add esi, dword [esp + 0x14]
call dword [eax + 0x78]
mov ecx, dword [ebx + 0x1480]
cdq
sub eax, edx
mov dword [esp + 0x10], eax
mov eax, dword [ecx]
sar dword [esp + 0x10], 1
call dword [eax + 0x70]
mov ecx, dword [esp + 0x10]
add eax, ecx
mov ecx, dword [ebx + 0x5b58]
mov dword [esp + 0x14], eax
mov eax, dword [ecx]
call dword [eax + 0x70]
add eax, dword [esp + 0x14]
mov ecx, dword [ebx + 0x598]
mov dword [esp + 0x20], eax
mov eax, esi
sub eax, dword [ebx + 0x13f8]
push dword [esp + 0x20]
cdq
idiv ecx
mov dword [esp + 0x28], eax
mov eax, dword [ebx + 0x13f0]
sub eax, dword [esp + 0x24]
dec eax
dec eax
cdq
idiv ecx
mov ecx, ebx
mov dword [esp + 0x1c], eax
mov eax, esi
call fcn.004089cf
cmp eax, 0xc
mov byte [esp + 0x10], 0
jne 0x404665
cmp byte [ebx + 0x5bc9], 0
je 0x40465e
push 5
push dword [esp + 0x28]
mov eax, ebx
push dword [esp + 0x20]
call fcn.00407abc
push 0x64
mov edi, eax
pop eax
call fcn.00401ed4
push dword [esp + 0x24]
mov eax, ebx
push dword [esp + 0x1c]
call fcn.00407abc
mov edx, dword [eax]
push 1
mov ecx, eax
call dword [edx + 0x58]
xor edi, edi
mov byte [esp + 0x10], 1
jmp 0x404689
cmp eax, 6
jl 0x40466f
cmp eax, 0xc
jl 0x40467f
lea ecx, [eax - 0x43]
cmp ecx, 4
jbe 0x40467f
lea ecx, [eax - 0xe]
cmp ecx, 1
ja 0x404684
mov byte [esp + 0x10], 1
cmp eax, 0xffffffff
je 0x4046e0
mov edx, ebx
call fcn.00408c1c
cmp byte [esp + 0x10], 0
jne 0x40469c
cmp eax, 3
jl 0x4046d9
push dword [esp + 0x10]
call fcn.00408c69
cmp byte [esp + 0x10], 0
mov eax, dword [ebx]
mov ecx, ebx
je 0x4046c1
push 4
call dword [eax + 0x104]
mov eax, ebx
call fcn.00408e1c
jmp 0x4046c9
push 7
call dword [eax + 0x104]
mov byte [ebx + 0x147c], 0
mov byte [ebx + 0x147d], 0
xor edi, edi
mov byte [ebx + 0x147c], 1
mov eax, ebx
call fcn.004077ed
mov ecx, dword [ebp + 8]
push edi
push edi
call fcn.00431a51
jmp 0x404ebe
push str.byesreplay
mov ecx, esi
call fcn.00419b40
test al, al
je 0x404738
mov eax, dword [ebx]
push edi
mov ecx, ebx
call dword [eax + 0x104]
push str.blackdrop
mov ecx, ebx
call fcn.00403100
mov edx, dword [eax]
push edi
mov ecx, eax
call dword [edx + 0x58]
mov esi, ebx
mov byte [ebx + 0x5b51], 0
call fcn.0040a361
jmp 0x404ebe
push str.bnoreplay
mov ecx, esi
call fcn.00419b40
test al, al
je 0x404770
mov eax, dword [ebx]
push edi
mov ecx, ebx
call dword [eax + 0x104]
mov byte [ebx + 0x5ca8], 1
push str.replay
mov ecx, ebx
call fcn.00403100
mov edx, dword [eax]
push edi
mov ecx, eax
call dword [edx + 0x58]
jmp 0x4047d3
push str.bnoglobal
mov ecx, esi
call fcn.00419b40
test al, al
je 0x404790
mov eax, dword [ebx]
xor esi, esi
push esi
mov ecx, ebx
call dword [eax + 0x104]
push esi
jmp 0x4047af
push str.byesglobal
mov ecx, esi
call fcn.00419b40
test al, al
je 0x4047da
mov eax, dword [ebx]
xor esi, esi
push esi
mov ecx, ebx
call dword [eax + 0x104]
push 1
mov edi, ebx
call fcn.0040a5ad
push str.hscores
mov ecx, ebx
call fcn.00403100
mov edx, dword [eax]
push esi
mov ecx, eax
call dword [edx + 0x58]
mov ecx, dword [ebp + 8]
mov eax, dword [ecx]
push esi
call dword [eax + 0x58]
push 2
jmp 0x4048a9
push str.bsubmiths
mov ecx, esi
call fcn.00419b40
test al, al
jne 0x404ebe
push str.bPuzzleChooserStart
mov ecx, esi
call fcn.00419af0
test al, al
je 0x40483f
mov eax, dword [ebx]
push 0x14
mov ecx, ebx
call dword [eax + 0x104]
push str.puzzlechooserdlg
mov ecx, ebx
call fcn.00403100
mov ecx, eax
call fcn.004153a2
mov esi, eax
mov eax, dword [ecx]
push edi
call dword [eax + 0x58]
push 1
mov dword [ebx + 0x570], esi
call fcn.00407b21
push esi
mov ecx, ebx
call fcn.004087f2
jmp 0x404ebe
push str.Galleryclosebtn
mov ecx, esi
call fcn.00419af0
test al, al
je 0x404878
mov eax, dword [ebx]
push edi
mov ecx, ebx
call dword [eax + 0x104]
push str.GalleryWelcomeDlg
mov ecx, ebx
call fcn.00403100
mov edx, dword [eax]
push edi
mov ecx, eax
call dword [edx + 0x58]
push str.galleryblackdrop
jmp 0x404ea4
push str.bPuzzleChooserBack
mov ecx, esi
call fcn.00419af0
test al, al
je 0x4048b5
mov eax, dword [ebx]
push edi
mov ecx, ebx
call dword [eax + 0x104]
push str.puzzlechooserdlg
mov ecx, ebx
call fcn.00403100
mov edx, dword [eax]
push edi
mov ecx, eax
call dword [edx + 0x58]
push 1
mov ecx, ebx
call fcn.00406cca
jmp 0x404ebe
push str.buttonstart
mov ecx, esi
call fcn.004199b0
test al, al
je 0x404928
mov eax, dword [ebx]
push edi
mov ecx, ebx
call dword [eax + 0x104]
mov eax, dword [ebx]
push 0x15
mov ecx, ebx
call dword [eax + 0x104]
push 2
mov ecx, ebx
call fcn.00406cca
cmp byte [ebx + 0x5cf6], 0
je 0x404ebe
push str.GalleryWelcomeDlg
mov ecx, ebx
call fcn.00403100
mov edx, dword [eax]
push 1
mov ecx, eax
call dword [edx + 0x58]
push str.galleryblackdrop
mov ecx, ebx
call fcn.00403100
mov edx, dword [eax]
push 1
mov ecx, eax
call dword [edx + 0x58]
mov byte [ebx + 0x5cf6], 0
jmp 0x404ebe
push str.bchangeprofile
mov ecx, esi
call fcn.00419af0
test al, al
je 0x404980
mov eax, dword [ebx]
push edi
mov ecx, ebx
call dword [eax + 0x104]
push str.ProfileList
mov ecx, ebx
call fcn.00403100
mov esi, eax
lea eax, [ebx + 0x5cbc]
push eax
mov eax, esi
call fcn.00412fc0
push str.blackdrop
mov ecx, ebx
call fcn.00403100
mov edx, dword [eax]
push 1
mov ecx, eax
call dword [edx + 0x58]
mov ecx, esi
call fcn.0043460e
jmp 0x404ebe
push str.addfirstprofile
mov ecx, esi
call fcn.00419b40
test al, al
je 0x4049a7
push str.ProfilePrompt
mov ecx, ebx
call fcn.00403100
mov dword [eax + 0x288], edi
jmp 0x4041da
push str.addnewprofile
mov ecx, esi
call fcn.00419b40
test al, al
je 0x4049d2
push str.ProfilePrompt
mov ecx, ebx
call fcn.00403100
xor ecx, ecx
inc ecx
mov dword [eax + 0x288], ecx
push ecx
jmp 0x404eac
push str.bcanceladdprofile
mov ecx, esi
call fcn.00419b40
test al, al
je 0x4049f7
mov eax, dword [ebx]
push edi
mov ecx, ebx
call dword [eax + 0x104]
push str.ProfilePrompt
jmp 0x404ea4
push str.bsubmitprofile
mov ecx, esi
call fcn.00419b40
test al, al
je 0x404b51
mov eax, dword [ebx]
push edi
mov ecx, ebx
mov byte [ebx + 0x5cf6], 1
call dword [eax + 0x104]
push str.ProfilePrompt
mov ecx, ebx
call fcn.00403100
lea edi, [ebx + 0x5cbc]
mov esi, 0x4d366e
push esi
mov ecx, edi
mov dword [esp + 0x1c], eax
call fcn.00419af0
test al, al
je 0x404a4b
mov byte [ebx + 0x5cf5], 1
mov ecx, dword [esp + 0x18]
push 0x4d3ab4
call fcn.00402439
add eax, 0x18c
push eax
mov ecx, edi
call fcn.00419630
push esi
mov ecx, edi
call fcn.00419af0
test al, al
jne 0x404b18
push 1
push str.MRUHSNAME
lea ecx, [esp + 0x310]
call fcn.00418c20
mov byte [esp + 0x384], 0x10
mov ecx, dword [ebx + 0x34c]
mov edx, dword [ecx]
push edi
push eax
call dword [edx + 0x48]
lea ecx, [esp + 0x308]
mov byte [esp + 0x384], 0
call fcn.004190d0
push str.blackdrop
mov ecx, ebx
call fcn.00403100
mov edx, dword [eax]
push 0
mov ecx, eax
call dword [edx + 0x58]
mov ecx, dword [esp + 0x18]
mov eax, dword [ecx]
push 0
call dword [eax + 0x58]
mov esi, ebx
call fcn.00407789
push str.ProfileList
mov ecx, ebx
call fcn.00403100
push edi
mov edi, eax
mov dword [esp + 0x18], eax
call fcn.00413386
call fcn.0040744a
mov edi, ebx
call fcn.00407483
test al, al
jne 0x404b06
call fcn.0040757d
mov ecx, dword [esp + 0x14]
mov eax, dword [ecx]
push 0
call dword [eax + 0x58]
mov byte [ebx + 0x5bd8], 1
push str.puzzlechooserdlg
mov ecx, ebx
call fcn.00403100
lea edx, [ebx + 0x560]
mov ecx, dword [edx]
call fcn.0041375a
mov edx, dword [edx]
mov eax, dword [ebx + 0x5d10]
mov dword [eax + 0x378], edx
cmp byte [ebx + 0x5cf5], 0
je 0x404ebe
jmp 0x4048a7
push str.profilechosen
mov ecx, esi
call fcn.004199b0
test al, al
je 0x404c52
push str.blackdrop
mov ecx, ebx
call fcn.00403100
mov edx, dword [eax]
push edi
mov ecx, eax
call dword [edx + 0x58]
push str.ProfileList
mov ecx, ebx
call fcn.00403100
lea esi, [ebx + 0x5cbc]
call fcn.004125c7
push eax
mov ecx, esi
call fcn.00419ac0
test al, al
jne 0x404ba3
mov byte [ebx + 0x5cf6], 1
mov edi, str.ProfileList
push edi
mov ecx, ebx
call fcn.00403100
call fcn.004125c7
push eax
mov ecx, esi
call fcn.00419630
push 1
push str.MRUHSNAME
lea ecx, [esp + 0x348]
call fcn.00418c20
mov byte [esp + 0x384], 0x11
mov ecx, dword [ebx + 0x34c]
mov edx, dword [ecx]
push esi
push eax
call dword [edx + 0x48]
lea ecx, [esp + 0x340]
mov byte [esp + 0x384], 0
call fcn.004190d0
mov esi, ebx
call fcn.00407789
push edi
mov ecx, ebx
call fcn.00403100
mov edx, dword [eax]
push 0
mov ecx, eax
call dword [edx + 0x58]
call fcn.0040744a
mov edi, ebx
call fcn.00407483
test al, al
jne 0x404c26
call fcn.0040757d
push str.puzzlechooserdlg
mov ecx, ebx
call fcn.00403100
lea edx, [ebx + 0x560]
mov ecx, dword [edx]
call fcn.0041375a
mov edx, dword [edx]
mov ebx, dword [ebx + 0x5d10]
mov dword [ebx + 0x378], edx
jmp 0x404ebe
push str.bMenuOptions
mov ecx, esi
call fcn.00419b40
test al, al
je 0x404c81
mov eax, dword [ebx]
push edi
mov ecx, ebx
call dword [eax + 0x104]
mov ebx, dword [ebx + 0x5cf8]
mov eax, dword [ebx]
mov ecx, ebx
push 1
call dword [eax + 0x58]
jmp 0x404ebe
push str.upsellGH
mov ecx, esi
call fcn.00419b40
test al, al
je 0x404d59
mov eax, dword [ebx]
mov ecx, ebx
call dword [eax + 0x50]
mov edx, dword [eax]
push edi
push edi
mov ecx, eax
call dword [edx + 0xc4]
push edi
push str.http:__www.gamehouse.com
lea ecx, [esp + 0xa8]
call fcn.00418c20
push edi
push str.VISITURL
lea ecx, [esp + 0x268]
mov byte [esp + 0x38c], 0x12
call fcn.00418c20
lea ecx, [esp + 0xa0]
push ecx
lea ecx, [esp + 0x264]
push ecx
mov byte [esp + 0x38c], 0x13
mov ebx, dword [ebx + 0x34c]
mov eax, dword [ebx]
lea ecx, [esp + 0x118]
push ecx
mov ecx, ebx
call dword [eax + 0x44]
lea ecx, [esp + 0x260]
mov byte [esp + 0x384], 0x15
call fcn.004190d0
lea ecx, [esp + 0xa0]
mov byte [esp + 0x384], 0x16
call fcn.004190d0
mov eax, dword [esp + 0x13c]
cmp eax, edi
jne 0x404d39
mov eax, 0x4d366e
push eax
call fcn.00403203
pop ecx
lea ecx, [esp + 0x110]
mov byte [esp + 0x384], 0
call fcn.004190d0
jmp 0x404ebe
push str.crossCursor
mov ecx, esi
call fcn.00419b40
test al, al
je 0x404d7d
mov eax, dword [ebx]
push 0x509e40
mov ecx, ebx
call dword [eax + 0x90]
jmp 0x404ebe
push str.CLOSED
mov ecx, esi
call fcn.00419af0
test al, al
mov ecx, ebx
je 0x404eb5
mov esi, str.blackdrop
push esi
call fcn.00403100
mov edx, dword [eax]
push edi
mov ecx, eax
call dword [edx + 0x58]
push str.options
mov ecx, ebx
call fcn.00403100
cmp dword [ebp + 8], eax
jne 0x404e5f
push edi
push str.hiliteBlocks
lea ecx, [esp + 0x188]
call fcn.00418c20
mov byte [esp + 0x384], 0x17
mov ecx, dword [ebx + 0x34c]
mov eax, dword [ecx]
push 1
lea edx, [esp + 0x184]
push edx
call dword [eax + 0x3c]
test eax, eax
setne al
lea ecx, [esp + 0x180]
mov byte [ebx + 0x5bc8], al
mov byte [esp + 0x384], 0
call fcn.004190d0
push edi
push str.specialFX
lea ecx, [esp + 0x1f8]
call fcn.00418c20
mov byte [esp + 0x384], 0x18
mov ecx, dword [ebx + 0x34c]
mov eax, dword [ecx]
push 1
lea edx, [esp + 0x1f4]
push edx
call dword [eax + 0x3c]
test eax, eax
setne al
lea ecx, [esp + 0x1f0]
mov byte [ebx + 0x5bc9], al
mov byte [esp + 0x384], 0
call fcn.004190d0
mov ecx, dword [ebx + 0x5cf8]
jmp 0x404e76
push str.hscores
mov ecx, ebx
call fcn.00403100
cmp dword [ebp + 8], eax
jne 0x404e7e
mov ecx, dword [ebx + 0x5d10]
mov eax, dword [ecx]
push edi
call dword [eax + 0x58]
jmp 0x404ea3
push str.ProfileList
mov ecx, ebx
call fcn.00403100
cmp dword [ebp + 8], eax
jne 0x404ebe
push str.ProfileList
mov ecx, ebx
call fcn.00403100
mov edx, dword [eax]
push edi
mov ecx, eax
call dword [edx + 0x58]
push esi
mov ecx, ebx
call fcn.00403100
push edi
mov edx, dword [eax]
mov ecx, eax
call dword [edx + 0x58]
jmp 0x404ebe
push esi
push dword [ebp + 8]
call fcn.00436246
or dword [esp + 0x384], 0xffffffff
lea ecx, [esp + 0x28]
call fcn.00416bf0
mov ecx, dword [esp + 0x37c]
pop edi
pop esi
mov dword fs:[0], ecx
pop ebx
mov esp, ebp
pop ebp
ret 8