Function at 0x45ec50
Capabilities:
Create thread
Get number of processors

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x47665e
mov eax, dword fs:[0]
push eax
sub esp, 0x190
mov eax, dword [0x4921c0]
xor eax, esp
mov dword [esp + 0x188], eax
push ebx
push esi
push edi
mov eax, dword [0x4921c0]
xor eax, esp
push eax
lea eax, [esp + 0x1a0]
mov dword fs:[0], eax
xor ebx, ebx
mov byte [0x58cab7], bl
mov byte [0x58c979], bl
cmp byte [0x58c978], bl
je 0x45ecb0
mov eax, dword [0x497528]
call fcn.0046c930
mov byte [0x58c978], bl
mov dword [0x58c9cc], ebx
mov dword [0x58c9c8], ebx
mov dword [0x540994], 0xc7
mov dword [0x551438], ebx
mov dword [0x541d98], ebx
mov byte [0x58c9c7], bl
mov dword [0x5479d8], 0x270f
mov dword [0x5490c8], 0xffffd8f1
cmp byte [0x5478d8], bl
je 0x45ed23
mov eax, dword [0x5478cc]
push eax
call fcn.00408fa4
add esp, 4
cmp byte [0x58cab6], bl
je 0x45ed1d
push 0x5478d8
call fcn.0040876d
add esp, 4
mov byte [0x58cab6], bl
cmp dword [0x58caa4], ebx
je 0x45ed30
call fcn.00471cd0
push ebx
push str.00.ns2
call fcn.004084f2
add esp, 8
mov edi, 1
test eax, eax
jne 0x45ed52
mov dword [0x58caa8], edi
call fcn.004211e0
mov ecx, dword [0x58cb1c]
mov esi, dword [0x58cb18]
mov eax, dword [0x497b6c]
push edi
mov byte [0x5478d8], bl
mov byte [0x58c9c5], bl
mov dword [0x547d04], ebx
mov dword [0x58cb98], ebx
mov byte [0x58cca4], bl
mov byte [0x5492e8], bl
mov byte [0x52c168], bl
mov dword [0x5497ec], 0xffffffff
mov dword [0x541d94], ebx
mov dword [0x541b78], ebx
mov dword [0x547ae4], edi
mov dword [0x5497e8], ebx
mov dword [esp + 0x24], ecx
mov dword [0x58cb18], ebx
mov dword [0x58cb1c], ebx
call fcn.0046d1b0
mov dword [0x58cab8], ebx
cmp byte [0x65227c], bl
je 0x45eded
push ebx
push ebx
push 0x424960
mov byte [0x65227c], bl
call fcn.0040b3ad
add esp, 0xc
mov dword [0x652278], eax
call fcn.0046bd60
mov eax, dword [0x497b6c]
mov edx, dword [esp + 0x20]
mov dword [0x541d90], edi
mov dword [0x493800], edi
mov byte [0x4ea978], bl
mov byte [0x4eaa78], bl
mov byte [0x52ac10], bl
mov dword [eax + 0x528], 0xffffffff
mov byte [eax + 0x72c], bl
mov byte [eax + 0x62c], bl
mov byte [eax + 0x52c], bl
mov dword [0x58cb18], esi
mov dword [0x58cb1c], edx
mov dword [0x4eab7c], edi
mov dword [0x4ea54c], edi
mov dword [0x58cafc], ebx
mov dword [0x58caf8], ebx
mov dword [0x58cb0c], ebx
mov dword [0x540998], ebx
mov dword [0x4a859c], ebx
mov dword [0x541430], ebx
mov dword [0x540990], edi
mov dword [0x52b5bc], edi
mov dword [0x58ce40], ebx
mov esi, 0x58e600
mov dword [0x58ce58], ebx
mov dword [0x58fab0], ebx
call fcn.00403740
mov esi, 0x58e610
call fcn.00403740
push 0x58e600
mov byte [0x58e624], bl
mov dword [0x58faac], ebx
mov dword [0x58e620], ebx
mov dword [0x4933a4], ebx
call fcn.00403220
mov byte [0x58f9ac], bl
mov byte [0x541540], bl
mov byte [0x52cf70], bl
xor eax, eax
lea esp, [esp]
mov cl, byte [eax + 0x4a85b8]
mov byte [eax + 0x5370c8], cl
add eax, edi
cmp cl, bl
jne 0x45eee0
mov ecx, dword [0x497b6c]
mov eax, 0xff
push str.:l_3_160_2_cursor0.bmp
push 0x58d510
mov dword [0x52a868], eax
mov dword [0x541c8c], eax
mov dword [0x4ea664], eax
mov dword [0x5478b0], eax
mov dword [0x5492e0], eax
mov dword [0x548124], eax
mov dword [0x58cb08], edi
call fcn.00401f90
mov ecx, dword [0x497b6c]
push str.:l_3_160_2_cursor1.bmp
push 0x58d7a4
call fcn.00401f90
mov ecx, dword [0x4937f0]
mov edx, dword [0x497b6c]
mov eax, 0x10
mov dword [0x4ea550], eax
mov dword [0x4e8fc4], eax
mov eax, 0x1a
mov dword [0x4eab8c], eax
mov dword [0x4ea660], eax
mov dword [0x4a86cc], eax
mov eax, dword [0x4935ec]
mov dword [0x53879c], ebx
mov dword [0x538798], ebx
mov dword [0x5387a0], ebx
mov dword [0x5387a4], ebx
mov dword [0x4e8fc8], 0x15
mov dword [0x4ea870], 0x17
mov dword [0x4eab80], 0x1c
mov dword [0x52c064], 0x999999
mov dword [0x4a86b8], 0x14
mov dword [0x4eaba0], ebx
mov dword [0x541434], ebx
mov dword [0x538594], eax
mov dword [0x539458], ecx
mov dword [0x4a9804], edi
mov dword [0x4a9800], edi
mov dword [0x4ea344], ebx
mov dword [0x4ea340], ebx
mov dword [0x52b2ac], ebx
mov dword [0x52b2a8], ebx
mov eax, dword [edx + 0x10]
push eax
mov dword [0x58cb08], ebx
mov dword [0x541d9c], ebx
mov dword [0x541b7c], ebx
mov dword [0x52ab04], ebx
mov dword [0x538590], ebx
mov dword [0x498484], ebx
mov dword [0x52b4b4], ebx
mov dword [esp + 0x34], eax
mov dword [esp + 0x40], eax
call dword [0x47828c]
mov dword [esp + 0x38], eax
mov dword [esp + 0x1a8], ebx
mov eax, dword [0x4935ec]
mov edi, dword [0x47805c]
mov esi, dword [0x4937f0]
push ebx
mov dword [esp + 0x18], eax
mov byte [0x493938], bl
call edi
mov ecx, dword [esp + 0x14]
push eax
lea edx, [esp + 0x84]
mov dword [esp + 0x1c], eax
mov eax, dword [0x493b50]
push edx
mov dword [esp + 0x94], esi
mov esi, dword [0x4782c0]
push eax
mov dword [esp + 0x90], ebx
mov dword [esp + 0x8c], ebx
mov dword [esp + 0x94], ecx
call esi
mov ecx, dword [esp + 0x18]
push ecx
call dword [0x47806c]
mov edx, dword [0x493b50]
mov eax, dword [0x4937f0]
mov ecx, dword [0x4935ec]
push 0xcc0020
push ebx
push ebx
push edx
mov edx, dword [esp + 0x48]
push eax
push ecx
push ebx
push ebx
push edx
call dword [0x478060]
mov eax, dword [0x4937f0]
mov ecx, dword [0x4935ec]
push ebx
mov dword [esp + 0x1c], eax
mov dword [esp + 0x18], ecx
mov byte [0x494630], bl
call edi
mov edx, dword [esp + 0x18]
mov ecx, dword [esp + 0x14]
push eax
mov dword [esp + 0x50], edx
lea edx, [esp + 0x44]
mov dword [esp + 0x20], eax
mov eax, dword [0x494848]
push edx
push eax
mov dword [esp + 0x50], ebx
mov dword [esp + 0x4c], ebx
mov dword [esp + 0x54], ecx
call esi
mov ecx, dword [esp + 0x1c]
push ecx
call dword [0x47806c]
mov edx, dword [0x4937f0]
mov eax, dword [0x4935ec]
push ebx
mov dword [esp + 0x20], edx
mov dword [esp + 0x1c], eax
mov byte [0x4948c8], bl
call edi
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x18]
push eax
mov dword [esp + 0x18], eax
lea eax, [esp + 0x54]
mov dword [esp + 0x60], ecx
mov ecx, dword [0x494ae0]
push eax
push ecx
mov dword [esp + 0x60], ebx
mov dword [esp + 0x5c], ebx
mov dword [esp + 0x64], edx
call esi
mov edx, dword [esp + 0x14]
push edx
call dword [0x47806c]
mov eax, dword [0x4937f0]
mov ecx, dword [0x4935ec]
push ebx
mov dword [esp + 0x20], eax
mov dword [esp + 0x1c], ecx
mov byte [0x494b60], bl
call edi
mov edx, dword [esp + 0x1c]
mov ecx, dword [esp + 0x18]
push eax
mov dword [esp + 0x70], edx
lea edx, [esp + 0x64]
mov dword [esp + 0x18], eax
mov eax, dword [0x494d78]
push edx
mov dword [esp + 0x6c], ebx
mov dword [esp + 0x68], ebx
mov dword [esp + 0x70], ecx
push eax
call esi
mov ecx, dword [esp + 0x14]
push ecx
call dword [0x47806c]
mov edx, dword [0x4937f0]
mov eax, dword [0x4935ec]
push ebx
mov dword [esp + 0x20], edx
mov dword [esp + 0x1c], eax
mov byte [0x4955c0], bl
call edi
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x18]
mov edi, eax
push edi
lea eax, [esp + 0x74]
mov dword [esp + 0x80], ecx
mov ecx, dword [0x4957d8]
push eax
push ecx
mov dword [esp + 0x80], ebx
mov dword [esp + 0x7c], ebx
mov dword [esp + 0x84], edx
call esi
push edi
call dword [0x47806c]
mov edx, dword [0x4937f0]
imul edx, dword [0x4935ec]
mov eax, dword [0x58cb24]
push edx
push ebx
push eax
mov dword [0x58ca84], ebx
call fcn.00411230
mov ecx, dword [str.black]
mov dx, word [0x4834a8]
mov dword [0x541c90], ecx
add esp, 0xc
xor eax, eax
mov ecx, 0x3e8
mov edi, 0x53f9f0
rep stosd dword es:[edi], eax
mov ecx, 0x3e8
mov edi, 0x4a86d0
mov word [0x541c94], dx
mov byte [0x536cb8], bl
mov byte [0x536db8], bl
mov byte [0x536eb8], bl
mov edx, 0x4aa7c0
rep stosd dword es:[edi], eax
jmp 0x45f290
mov byte [edx], bl
add edx, 0x100
cmp edx, 0x4e8fc0
jl 0x45f290
mov eax, 0x652528
jmp 0x45f2b0
mov byte [eax - 0x104], bl
mov dword [eax], ebx
add eax, 0x3b0
cmp eax, 0x68d528
jl 0x45f2b0
or eax, 0xffffffff
mov ecx, 0x64
mov edi, 0x4eb540
rep stosd dword es:[edi], eax
or eax, eax
mov ecx, 0x64
mov edi, 0x52b6c0
rep stosd dword es:[edi], eax
xor eax, eax
cmp dword [0x4933e0], ebx
mov dword [esp + 0x14], eax
jle 0x45f331
jmp 0x45f304
mov eax, dword [esp + 0x14]
mov edx, dword [0x536fbc]
mov ecx, dword [0x4ea548]
lea esi, [edx + eax*4]
mov edi, 0x47a453
mov dword [ecx + eax*4], ebx
call fcn.004021f0
mov eax, dword [esp + 0x14]
inc eax
cmp eax, dword [0x4933e0]
mov dword [esp + 0x14], eax
jl 0x45f300
push str.start
call fcn.004574d0
add esp, 4
mov dword [0x4a85a4], ebx
mov dword [0x52b858], ebx
mov dword [0x4ea76c], ebx
mov byte [0x4e90a8], bl
cmp dword [0x58c9ec], ebx
je 0x45f50d
cmp byte [0x58c9c6], bl
jne 0x45f50d
push ebx
push 0x4834b4
mov byte [0x58c9c6], 1
call fcn.004084f2
add esp, 8
test eax, eax
je 0x45f486
cmp dword [0x58caa4], ebx
je 0x45f40d
lea eax, [esp + 0x94]
push eax
lea ecx, [esp + 0x94]
push ecx
lea edx, [esp + 0x3c]
push edx
lea eax, [esp + 0x33]
push eax
lea ecx, [esp + 0x3c]
mov edx, 0x4834c0
call fcn.004710a0
add esp, 0x10
cmp eax, 0xffffffff
je 0x45f40d
mov ecx, dword [esp + 0x2c]
lea edx, [ecx + ecx]
push edx
call fcn.0040823c
add esp, 4
mov edi, eax
lea eax, [esp + 0x94]
push 0x4834cc
push eax
call fcn.00408b67
mov ecx, dword [esp + 0x3c]
push ebx
mov esi, eax
push ecx
push esi
call fcn.0040a33f
mov edx, dword [esp + 0x40]
add esp, 0x14
push esi
push edx
push edi
call fcn.0041d990
add esp, 0xc
push esi
jmp 0x45f4e7
cmp dword [0x58caa8], ebx
je 0x45f50d
lea eax, [esp + 0x28]
push eax
lea edi, [esp + 0x98]
lea ecx, [esp + 0x24]
mov edx, 0x4834d0
call fcn.004209a0
add esp, 4
cmp eax, 0xffffffff
je 0x45f50d
mov ecx, dword [esp + 0x20]
lea edx, [ecx + ecx]
push edx
call fcn.0040823c
add esp, 4
mov edi, eax
lea eax, [esp + 0x94]
push 0x4834dc
push eax
call fcn.00408b67
mov ecx, dword [esp + 0x30]
push ebx
mov esi, eax
push ecx
push esi
call fcn.0040a33f
mov edx, dword [esp + 0x34]
add esp, 0x14
push esi
push edx
push edi
call fcn.0041d990
add esp, 0xc
push esi
jmp 0x45f4e7
push ebx
push ebx
push 0x4834e0
call fcn.004081c0
mov esi, eax
add esp, 0xc
cmp esi, 0xffffffff
jne 0x45f4a0
xor esi, esi
jmp 0x45f4b6
push esi
call fcn.00408044
add esp, 4
push esi
mov edi, eax
call fcn.004093f4
add esp, 4
mov esi, edi
lea eax, [esi + esi]
push eax
call fcn.0040823c
add esp, 4
push 0x4834ec
push 0x4834f0
mov edi, eax
call fcn.00408b67
push eax
push esi
push edi
mov dword [esp + 0x3c], eax
call fcn.0041d990
mov ecx, dword [esp + 0x3c]
add esp, 0x14
push ecx
call fcn.00408fa4
add esp, 4
push edi
call dword [0x58c9fc]
add esp, 4
test al, al
jne 0x45f504
push 0xffffffffffffffff
call fcn.004092c0
push edi
call fcn.00407edf
add esp, 4
mov ecx, str.:reset
call fcn.00402c00
cmp eax, ebx
je 0x45f542
push ebx
push eax
mov byte [0x58c97b], bl
call dword [0x58c9f8]
add esp, 8
test al, al
jne 0x45f542
push str.reset_
push 0x483538
call fcn.00456ce0
add esp, 8
mov edx, dword [esp + 0x38]
mov eax, dword [esp + 0x30]
push edx
push eax
call dword [0x4782a0]
mov ecx, dword [esp + 0x1a0]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x188]
xor ecx, esp
call fcn.00407ed0
mov esp, ebp
pop ebp
ret