Function at 0x54fa98
Capabilities:
Get number of processors

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffed8
push ebx
push esi
push edi
xor ebx, ebx
mov dword [ebp - 0x70], ebx
mov dword [ebp - 0x2c], ecx
mov dword [ebp - 0xc], edx
mov dword [ebp - 8], eax
lea edi, [ebp - 8]
xor eax, eax
push ebp
push 0x550fea
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [edi]
or dword [eax + 0x3a], 2
mov eax, dword [edi]
call fcn.0054b274
mov dword [ebp - 0x44], eax
mov eax, dword [edi]
mov eax, dword [eax + 0x30]
mov esi, dword [eax + 0x50]
sub esi, dword [eax + 0x48]
mov eax, dword [edi]
mov eax, dword [eax + 8]
mov ebx, dword [eax + 4]
cmp byte [ebx + 0x3f8], 0
jne 0x54fb35
cmp dword [ebx + 0x4a4], 0
je 0x54fb35
mov eax, dword [ebp - 0x44]
add eax, 0xa
push eax
lea eax, [ebp - 0x100]
push eax
lea ecx, [esi + 0xa]
mov edx, dword [ebp + 0xc]
sub edx, 5
mov eax, dword [ebp - 0x2c]
sub eax, 5
call fcn.0064d580
lea eax, [ebp - 0x100]
push eax
mov eax, dword [ebx + 0x4a4]
push eax
call sub.gdi32.dll_RectInRegion
test eax, eax
je 0x550f99
mov eax, ebx
call fcn.00562e24
test al, al
je 0x54fb54
mov al, byte [0x550ffc]
cmp al, byte [ebp + 8]
je 0x54fb58
mov al, byte [0x551000]
cmp al, byte [ebp + 8]
je 0x54fb58
xor eax, eax
jmp 0x54fb5a
mov al, 1
mov byte [ebp - 0xd], al
mov eax, dword [edi]
mov eax, dword [eax + 0x30]
mov eax, dword [eax + 0x6c]
mov dword [ebp - 0x30], eax
lea edx, [ebp - 0xc0]
mov eax, dword [edi]
call fcn.0055100c
mov eax, dword [0x66fc50]
mov eax, dword [eax]
mov dword [ebp - 0x74], eax
cmp byte [ebx + 0x14d], 0
je 0x54fb90
mov eax, dword [0x66fc50]
and dword [eax], 0xffffffbf
mov eax, dword [edi]
mov eax, dword [eax + 8]
mov eax, dword [eax + 0x48]
mov eax, dword [eax + 4]
mov edx, dword [edi]
add eax, dword [edx + 0x18]
mov dword [ebp - 0x48], eax
mov eax, dword [edi]
mov eax, dword [eax + 8]
call fcn.00551af8
mov edx, dword [edi]
mov edx, dword [edx + 0x28]
add edx, edx
add eax, edx
mov dword [ebp - 0x28], eax
mov eax, dword [ebp - 0x28]
mov dword [ebp - 0x4c], eax
mov eax, dword [edi]
call fcn.0054b3c0
xor eax, eax
mov dword [ebp - 0x34], eax
mov byte [ebp - 0x35], 0
mov eax, dword [edi]
mov eax, dword [eax + 8]
mov edx, dword [eax + 0x18]
mov eax, ebx
call fcn.00563b24
test al, al
jne 0x54fc13
mov eax, ebx
call fcn.00562870
test al, al
je 0x54fc0f
mov eax, dword [0x670050]
test byte [eax + 2], 8
jne 0x54fc0f
lea ecx, [ebx + 0x3d0]
lea edx, [ebp - 0xc0]
xor eax, eax
call fcn.00543a74
test al, al
je 0x54fc13
xor eax, eax
jmp 0x54fc15
mov al, 1
mov byte [ebp - 0xe], al
mov eax, dword [0x66fc50]
test byte [eax], 0x40
je 0x54fc4f
mov eax, dword [0x66eb44]
mov eax, dword [eax]
mov eax, dword [eax + 0xc]
mov edx, dword [0x66eb44]
mov edx, dword [edx]
cmp eax, dword [edx + 8]
jne 0x54fc4f
mov eax, dword [0x66f290]
mov eax, dword [eax]
mov eax, dword [eax + 8]
cmp dword [eax + 0xc], 0xffffffff
je 0x54fc4f
cmp byte [ebp - 0xe], 0
je 0x54fc53
xor eax, eax
jmp 0x54fc55
mov al, 1
mov byte [ebp - 0x15], al
mov dword [ebp - 0x5c], 0x80000000
mov eax, dword [edi]
mov eax, dword [eax + 8]
cmp dword [eax + 0x40], 0
jl 0x54fc95
test byte [ebp + 8], 1
je 0x54fc95
test byte [eax + 0xc], 8
jne 0x54fc95
mov eax, dword [edi]
test byte [eax + 0x3c], 1
jne 0x54fc95
mov eax, dword [edi]
test byte [eax + 0x3a], 0x80
je 0x54fc8e
mov eax, dword [edi]
test byte [eax + 0x3b], 1
je 0x54fc95
push ebp
call fcn.0054f704
pop ecx
mov eax, dword [edi]
call fcn.00551204
test al, al
je 0x54fca7
push ebp
call fcn.0054ef68
pop ecx
mov eax, dword [edi]
cmp dword [eax + 0x44], 0
jle 0x54fcbc
test byte [ebp + 8], 2
je 0x54fcbc
push ebp
call fcn.0054f118
pop ecx
mov eax, dword [edi]
mov eax, dword [eax + 8]
mov eax, dword [eax + 0x40]
mov dword [ebp - 0x14], eax
cmp dword [ebp - 0x14], 0
jge 0x54fce5
mov eax, dword [edi]
mov eax, dword [eax + 8]
cmp byte [eax + 0x3c], 0
je 0x54fce5
mov eax, dword [edi]
mov eax, dword [eax + 0x30]
call fcn.00559398
mov dword [ebp - 0x14], eax
mov eax, dword [edi]
movzx ecx, word [eax + 0x10]
mov edx, 0x673224
mov eax, ebx
call fcn.005bd3c8
mov eax, dword [edi]
test byte [eax + 0x3a], 0x40
je 0x54fd0c
test byte [ebp + 8], 1
je 0x54fd0c
push ebp
call fcn.0054dd4c
pop ecx
mov eax, dword [ebx + 0x598]
cmp dword [eax + 0x18], 0
jle 0x54fd79
test byte [ebp + 8], 1
je 0x54fd79
mov eax, dword [edi]
test byte [eax + 0x3a], 0x10
je 0x54fd79
mov eax, dword [edi]
mov eax, dword [eax + 8]
test byte [eax + 0xc], 8
jne 0x54fd79
cmp byte [ebx + 0x3f8], 0
je 0x54fd43
cmp byte [ebx + 0x452], 0
je 0x54fd79
mov eax, dword [0x66fc50]
cmp byte [eax + 4], 2
jne 0x54fd57
cmp byte [ebx + 0x14d], 0
je 0x54fd6c
mov eax, dword [0x66fc50]
cmp byte [eax + 4], 1
jne 0x54fd79
mov eax, dword [0x66fc50]
test byte [eax], 0x40
je 0x54fd79
push ebp
lea eax, [ebp - 0xc0]
call fcn.0054ee28
pop ecx
cmp byte [ebx + 0x3f8], 0
jne 0x55048a
test byte [ebp + 8], 1
je 0x54ffd6
mov byte [ebp - 0x69], 0
mov al, byte [ebp - 0x69]
dec al
je 0x54fda5
dec al
je 0x54fdbd
dec al
je 0x54fdd5
jmp 0x54fdeb
mov eax, ebx
call fcn.005c4e98
test al, al
je 0x54ffc9
mov eax, ebx
call fcn.005c4ebc
jmp 0x54fdeb
mov eax, ebx
call fcn.005faff8
test al, al
je 0x54ffc9
mov eax, ebx
call fcn.005fb03c
jmp 0x54fdeb
mov eax, ebx
call fcn.005fbefc
test al, al
je 0x54ffc9
mov eax, ebx
call fcn.005fbf84
mov eax, ebx
call fcn.005c208c
test al, al
je 0x54ff9f
mov eax, dword [edi]
mov eax, dword [eax + 8]
test byte [eax + 0xc], 8
jne 0x54ff9f
cmp byte [ebx + 0x477], 0
je 0x54fe1c
cmp byte [ebp - 0x69], 0
je 0x54ff9f
mov eax, dword [edi]
call fcn.0054afa0
test al, al
je 0x54fe31
cmp byte [ebp - 0x69], 0
je 0x54ff9f
mov eax, dword [edi]
mov eax, dword [eax + 0x30]
cmp byte [eax + 0x29], 3
jne 0x54fe9e
cmp dword [ebx + 0x81c], 0
je 0x54ff9f
mov eax, dword [edi]
mov eax, dword [eax + 0x30]
mov eax, dword [eax + 0x30]
mov eax, dword [eax + 0x8c]
cmp eax, dword [ebx + 0x820]
jne 0x54ff9f
lea edx, [ebp - 0x120]
mov eax, ebx
call fcn.005c5b58
lea eax, [ebp - 0x120]
push eax
lea edx, [ebp - 0x100]
mov eax, dword [edi]
mov eax, dword [eax + 8]
mov eax, dword [eax + 0x18]
call fcn.005439f4
lea eax, [ebp - 0x100]
pop edx
call fcn.00543d30
test al, al
je 0x54ff9f
mov eax, dword [edi]
mov eax, dword [eax + 0x30]
call fcn.00558b58
test al, al
jne 0x54ff9f
lea ecx, [ebp - 0x7c]
lea edx, [ebp - 0x78]
mov eax, dword [edi]
call fcn.00551030
test al, al
je 0x54ff9f
mov dl, 0x59
mov eax, ebx
call fcn.00564f50
mov eax, dword [ebp - 0x78]
mov esi, dword [ebp - 0x7c]
sub esi, eax
jl 0x54ff98
inc esi
mov dword [ebp - 0x90], eax
mov edx, dword [ebp - 0x90]
mov eax, dword [ebx + 0x300]
call fcn.00547d14
mov ecx, eax
lea edx, [ebp - 0xc0]
lea eax, [ebp - 0xe0]
call fcn.00543a74
mov eax, dword [edi]
mov edx, dword [ebp - 0xdc]
sub edx, dword [eax + 0x28]
mov eax, dword [edi]
call fcn.0054824c
mov edx, eax
mov eax, ebx
call fcn.005654c8
mov edx, dword [ebp - 0x2c]
add edx, dword [ebp - 0x30]
add eax, edx
mov dword [ebp - 0xf0], eax
mov eax, dword [edi]
mov edx, dword [ebp - 0xcc]
sub edx, dword [eax + 0x28]
mov eax, dword [edi]
call fcn.0054824c
mov edx, eax
mov eax, ebx
call fcn.005654c8
mov edx, eax
mov eax, dword [ebp - 0x2c]
add eax, dword [ebp - 0x30]
add edx, eax
mov eax, dword [ebp - 0xf0]
add eax, 2
call fcn.00653540
mov dword [ebp - 0xe8], eax
mov eax, dword [ebp + 0xc]
mov dword [ebp - 0xec], eax
mov eax, dword [ebp + 0xc]
add eax, dword [ebp - 0x44]
mov dword [ebp - 0xe4], eax
lea edx, [ebp - 0xf0]
mov eax, ebx
call fcn.005bd814
inc dword [ebp - 0x90]
dec esi
jne 0x54fee3
mov eax, ebx
call fcn.00565004
mov al, byte [ebp - 0x69]
dec al
je 0x54ffb0
dec al
je 0x54ffb9
dec al
je 0x54ffc2
jmp 0x54ffc9
mov eax, ebx
call fcn.005c4ebc
jmp 0x54ffc9
mov eax, ebx
call fcn.005fb03c
jmp 0x54ffc9
mov eax, ebx
call fcn.005fbf84
inc byte [ebp - 0x69]
cmp byte [ebp - 0x69], 4
jne 0x54fd94
mov eax, dword [0x66fc50]
test byte [eax], 0x40
je 0x55023d
mov eax, dword [edi]
mov esi, dword [eax + 8]
mov eax, dword [edi]
cmp dword [eax + 0x34], 0
jne 0x55015a
mov eax, dword [0x66e8a8]
test byte [eax + 8], 8
je 0x55015a
test byte [ebp + 8], 1
je 0x55015a
test byte [esi + 0xc], 8
jne 0x55015a
cmp byte [esi + 0x27], 0
jg 0x550034
cmp byte [esi + 0x28], 0
jg 0x550034
cmp byte [esi + 0x29], 0
jg 0x550034
cmp byte [esi + 0x31], 0
jle 0x55015a
mov edx, 0x3c
mov eax, ebx
call fcn.005652ec
call fcn.00653554
mov dword [ebp - 0x8c], eax
mov eax, dword [edi]
call fcn.00551204
test al, al
je 0x55006d
mov eax, dword [esi + 0x50]
mov eax, dword [eax + 0x10]
mov eax, dword [eax + 0x1c]
mov eax, dword [eax]
xor edx, edx
call fcn.0054824c
mov dword [ebp - 0x60], eax
jmp 0x550079
xor edx, edx
mov eax, dword [edi]
call fcn.0054824c
mov dword [ebp - 0x60], eax
cmp byte [ebp - 0xe], 0
je 0x550098
mov eax, dword [0x66eb44]
mov eax, dword [eax]
mov edx, 0xc0c0c0
call fcn.00624af8
mov dword [ebp - 0x84], eax
jmp 0x5500ae
mov eax, dword [0x66eb44]
mov eax, dword [eax]
mov eax, dword [eax + 0xc]
mov eax, dword [eax + 0xc]
mov eax, dword [eax + 8]
mov dword [ebp - 0x84], eax
mov eax, dword [ebp - 0x8c]
push eax
mov eax, dword [ebp - 0x8c]
push eax
mov eax, dword [ebp - 0x84]
push eax
mov eax, dword [edi]
call fcn.0054b154
mov edx, eax
mov eax, ebx
call fcn.005652ec
add eax, dword [ebp + 0xc]
push eax
mov eax, dword [edi]
movsx eax, word [eax + 0x12]
mov edx, dword [edi]
movsx edx, word [edx + 0x16]
add eax, edx
mov edx, dword [esi + 4]
call fcn.0062a078
mov edx, eax
mov eax, ebx
call fcn.005654c8
sub eax, dword [ebp - 0x8c]
sar eax, 1
jns 0x550103
adc eax, 0
pop edx
add edx, eax
push edx
mov edx, dword [ebp - 0x60]
xor eax, eax
call fcn.00653538
mov edx, eax
mov eax, ebx
call fcn.005654c8
add eax, dword [ebp - 0x30]
mov edx, dword [ebp - 0x8c]
add edx, edx
sub eax, edx
push eax
mov eax, dword [ebp - 0x8c]
mov ecx, 3
cdq
idiv ecx
mov edx, eax
mov eax, 2
call fcn.00653540
pop edx
call fcn.00653540
mov edx, eax
add edx, dword [ebp - 0x2c]
mov eax, dword [0x66fdd4]
mov eax, dword [eax]
pop ecx
call fcn.006230e0
mov eax, dword [edi]
mov edx, dword [eax + 0x2c]
add edx, edx
mov eax, dword [0x67345c]
call fcn.0064e298
mov eax, dword [edi]
mov ecx, dword [eax + 0x2c]
add ecx, ecx
mov eax, dword [0x67345c]
mov edx, dword [eax + 4]
mov eax, dword [ebp - 0x28]
call fcn.004023c8
mov eax, dword [0x67345c]
mov eax, dword [eax + 4]
mov dword [ebp - 0x28], eax
mov eax, dword [0x66e8a8]
test byte [eax + 8], 4
je 0x5501b3
mov eax, dword [0x670038]
mov eax, dword [eax]
mov edx, 0x20
call fcn.0064eb1c
mov edx, dword [0x66f658]
mov byte [edx + eax], 0xb7
mov eax, dword [edi]
mov eax, dword [eax + 0x2c]
dec eax
cmp eax, 0
jl 0x550217
mov dword [ebp - 0x90], eax
mov eax, dword [ebp - 0x28]
mov edx, dword [ebp - 0x90]
movzx edx, word [eax + edx*2]
mov eax, dword [0x670038]
mov eax, dword [eax]
call fcn.0064eb1c
mov dword [ebp - 0x94], eax
cmp dword [ebp - 0x94], 0
jl 0x550208
mov eax, dword [0x66f658]
mov edx, dword [ebp - 0x94]
movzx eax, byte [eax + edx]
mov edx, dword [ebp - 0x28]
mov ecx, dword [ebp - 0x90]
mov word [edx + ecx*2], ax
dec dword [ebp - 0x90]
cmp dword [ebp - 0x90], 0xffffffff
jne 0x5501c4
mov eax, dword [0x66e8a8]
test byte [eax + 8], 4
je 0x55023d
mov eax, dword [0x670038]
mov eax, dword [eax]
mov edx, 0x20
call fcn.0064eb1c
mov edx, dword [0x66f658]
mov byte [edx + eax], 0x20
test byte [ebp + 8], 1
je 0x550455
mov eax, dword [edi]
mov eax, dword [eax + 8]
test byte [eax + 0xc], 8
jne 0x550455
cmp dword [ebx + 0x81c], 0
jne 0x550455
mov eax, dword [edi]
call fcn.005511c4
test al, al
je 0x550455
mov eax, dword [edi]
mov eax, dword [eax + 8]
mov edx, dword [eax + 0x18]
mov eax, ebx
call fcn.005fb958
test al, al
je 0x550455
mov eax, dword [edi]
mov esi, dword [eax + 8]
cmp esi, dword [ebx + 0xb4]
je 0x5502a0
cmp byte [esi + 0x3d], 0
je 0x550455
xor edx, edx
mov eax, dword [edi]
call fcn.0054824c
mov edx, eax
mov eax, ebx
call fcn.005654c8
mov edx, dword [ebp - 0x2c]
add edx, dword [ebp - 0x30]
add eax, edx
mov edx, dword [0x66f568]
mov edx, dword [edx]
add edx, edx
sub eax, edx
mov dword [ebp - 0xf0], eax
mov eax, dword [edi]
call fcn.00551204
test al, al
je 0x55030b
mov eax, dword [edi]
mov eax, dword [eax + 8]
mov eax, dword [eax + 0x50]
mov eax, dword [eax + 0x10]
mov eax, dword [eax + 0x1c]
mov esi, dword [eax]
mov edx, dword [esi + 0x2c]
mov eax, esi
call fcn.0054824c
push eax
xor edx, edx
mov eax, esi
call fcn.0054824c
pop edx
sub edx, eax
mov eax, ebx
call fcn.005654c8
sub dword [ebp - 0xf0], eax
mov eax, dword [0x66f568]
mov eax, dword [eax]
add eax, dword [ebp - 0xf0]
mov dword [ebp - 0xe8], eax
mov eax, dword [edi]
call fcn.0054b154
mov edx, eax
mov eax, ebx
call fcn.005652ec
mov esi, eax
add esi, dword [ebp + 0xc]
mov eax, dword [edi]
movsx eax, word [eax + 0x12]
mov edx, dword [edi]
movsx edx, word [edx + 0x16]
add eax, edx
mov edx, dword [edi]
mov edx, dword [edx + 8]
mov edx, dword [edx + 4]
call fcn.0062a078
mov edx, eax
mov eax, ebx
call fcn.005654c8
mov edx, dword [0x66f568]
sub eax, dword [edx]
sar eax, 1
jns 0x550366
adc eax, 0
add esi, eax
mov dword [ebp - 0xec], esi
mov eax, dword [0x66f568]
mov eax, dword [eax]
add eax, esi
mov dword [ebp - 0xe4], eax
mov eax, dword [0x66eb44]
mov eax, dword [eax]
mov edx, 0xff
call fcn.00624af8
mov dword [ebp - 0x84], eax
mov eax, dword [0x66eb44]
mov eax, dword [eax]
mov eax, dword [eax + 0xc]
mov eax, dword [eax + 0x10]
mov ecx, dword [eax + 8]
lea edx, [ebp - 0xf0]
mov eax, dword [0x66fdd4]
mov eax, dword [eax]
call fcn.00623100
mov eax, dword [0x66f568]
mov eax, dword [eax]
sub eax, 4
push eax
push 1
mov eax, dword [ebp - 0x84]
push eax
mov ecx, dword [0x66f568]
mov ecx, dword [ecx]
sar ecx, 1
jns 0x5503d9
adc ecx, 0
add ecx, dword [ebp - 0xec]
mov edx, dword [ebp - 0xf0]
add edx, 2
mov eax, dword [0x66fdd4]
mov eax, dword [eax]
call fcn.006230e0
mov eax, dword [edi]
mov eax, dword [eax + 8]
cmp byte [eax + 0x3d], 0
je 0x55043d
push 1
mov eax, dword [0x66f568]
mov eax, dword [eax]
sub eax, 4
push eax
mov eax, dword [ebp - 0x84]
push eax
mov ecx, dword [ebp - 0xec]
add ecx, 2
mov edx, dword [0x66f568]
mov edx, dword [edx]
sar edx, 1
jns 0x55042b
adc edx, 0
add edx, dword [ebp - 0xf0]
mov eax, dword [0x66fdd4]
mov eax, dword [eax]
call fcn.006230e0
lea edx, [ebp - 0xf0]
mov eax, dword [0x66fdd4]
mov eax, dword [eax]
mov ecx, dword [ebp - 0x84]
call fcn.006231f4
mov al, byte [0x551004]
cmp al, byte [ebp + 8]
jne 0x55048a
mov edx, dword [ebp + 0xc]
mov eax, dword [ebx + 0xa4]
call fcn.00653538
mov dword [ebx + 0xa4], eax
mov edx, dword [ebp + 0xc]
add edx, dword [ebp - 0x44]
mov eax, dword [ebx + 0xa8]
call fcn.00653540
mov dword [ebx + 0xa8], eax
push ebp
push ebp
call fcn.0054bb8c
pop ecx
call fcn.0054bc10
pop ecx
mov byte [ebp - 1], 1
xor eax, eax
mov dword [ebp - 0x88], eax
xor eax, eax
mov dword [ebp - 0x1c], eax
xor eax, eax
mov dword [ebp - 0x20], eax
xor eax, eax
mov dword [ebp - 0x24], eax
xor eax, eax
mov dword [ebp - 0x40], eax
xor esi, esi
mov byte [ebp - 0x36], 0
xor eax, eax
mov dword [ebp - 0x3c], eax
jmp 0x550ec1
mov eax, dword [ebp - 0x48]
add eax, esi
cmp word [eax], 0
jne 0x550d6a
add eax, 2
mov dword [ebp - 0x9c], eax
mov eax, dword [ebp - 0x9c]
mov al, byte [eax]
xor edx, edx
mov dl, al
cmp edx, 0x1d
ja case.0x5504fb.0
mov dl, byte [edx + 0x550502]
jmp dword [edx*4 + 0x550520]
push ebp
call fcn.0054c644
pop ecx
cmp byte [ebp - 0x36], 0
je 0x550562
mov eax, dword [ebp - 0x9c]
mov eax, dword [eax + 1]
mov dword [ebp - 0x3c], eax
jmp case.0x5504fb.0
mov eax, dword [ebp - 0x9c]
mov eax, dword [eax + 1]
mov dword [0x673224], eax
mov byte [ebp - 1], 1
jmp case.0x5504fb.0
push ebp
call fcn.0054c644
pop ecx
mov eax, dword [ebp - 0x9c]
mov eax, dword [eax + 1]
mov edx, dword [ebp - 0x9c]
movzx edx, byte [edx]
mov dword [edx*4 + 0x673224], eax
mov byte [ebp - 1], 1
jmp case.0x5504fb.0
push ebp
call fcn.0054c644
pop ecx
mov eax, dword [ebp - 0x9c]
mov eax, dword [eax + 1]
mov edx, dword [ebp - 0x9c]
movzx edx, byte [edx]
mov dword [edx*4 + 0x673224], eax
jmp case.0x5504fb.0
push ebp
call fcn.0054c644
pop ecx
mov eax, dword [ebp - 0x9c]
mov eax, dword [eax + 1]
mov dword [0x673260], eax
push ebp
push ebp
call fcn.0054bb8c
pop ecx
call fcn.0054bc10
pop ecx
jmp case.0x5504fb.0
cmp byte [ebp - 0xe], 0
je case.0x5504fb.0
push ebp
call fcn.0054c644
pop ecx
mov eax, dword [ebp - 0x9c]
mov eax, dword [eax + 1]
mov dword [0x673264], eax
push ebp
push ebp
call fcn.0054bb8c
pop ecx
call fcn.0054bc10
pop ecx
jmp case.0x5504fb.0
sub al, 0x18
je 0x55062f
dec al
je 0x550635
dec al
je 0x55063b
jmp 0x550641
mov byte [ebp - 0x61], 3
jmp 0x55064d
mov byte [ebp - 0x61], 4
jmp 0x55064d
mov byte [ebp - 0x61], 5
jmp 0x55064d
mov eax, dword [ebp - 0x9c]
mov al, byte [eax + 1]
mov byte [ebp - 0x61], al
xor eax, eax
mov al, byte [ebp - 0x61]
cmp eax, 0x10
ja case.0x550661.0
mov al, byte [eax + 0x550668]
jmp dword [eax*4 + 0x550679]
mov eax, dword [0x66fc50]
test byte [eax], 0x40
je case.0x550661.0
cmp byte [ebx + 0x3f8], 0
jne case.0x550661.0
mov al, byte [ebp - 0x15]
or al, byte [ebp - 0x36]
je 0x5506c3
push ebp
call fcn.0054c644
pop ecx
push ebp
xor eax, eax
mov al, byte [ebp - 0x61]
call fcn.0054f35c
pop ecx
inc dword [ebp - 0x20]
cmp byte [ebp - 0x15], 0
je case.0x550661.0
push ebp
mov eax, dword [0x66eb44]
mov eax, dword [eax]
mov eax, dword [eax + 0xc]
mov eax, dword [eax + 0xc]
mov eax, dword [eax + 8]
call fcn.0054bc10
pop ecx
push ebp
call fcn.0054c644
pop ecx
push ebp
push ebp
call fcn.0054bb8c
pop ecx
call fcn.0054bc10
pop ecx
jmp case.0x550661.0
mov eax, dword [0x66fc50]
test byte [eax], 0x40
je case.0x550661.0
cmp byte [ebx + 0x3f8], 0
jne case.0x550661.0
test byte [ebp + 8], 1
je case.0x550661.0
push ebp
call fcn.0054c644
pop ecx
mov al, byte [ebp - 0x61]
sub al, 3
je 0x550746
sub al, 3
je 0x55075f
jmp 0x55076d
push ebp
mov eax, dword [ebp - 0x9c]
mov eax, dword [eax + 1]
movzx eax, byte [eax + 0x14]
add eax, 2
call fcn.0054cbb4
pop ecx
jmp 0x550776
push ebp
mov eax, 1
call fcn.0054cbb4
pop ecx
jmp 0x550776
push ebp
xor eax, eax
call fcn.0054cbb4
pop ecx
inc dword [ebp - 0x1c]
jmp case.0x550661.0
mov eax, dword [0x66fc50]
test byte [eax], 0x40
je case.0x550661.0
cmp byte [ebx + 0x3f8], 0
jne case.0x550661.0
push ebp
call fcn.0054c644
pop ecx
test byte [ebp + 8], 1
je 0x5507ad
push ebp
call fcn.0054ce38
pop ecx
inc dword [ebp - 0x1c]
jmp case.0x550661.0
push ebp
call fcn.0054c644
pop ecx
test byte [ebp + 8], 1
je 0x5507e9
push ebp
mov eax, dword [ebp - 0x9c]
mov dl, byte [eax + 2]
and dl, 0xf0
and edx, 0xff
shr edx, 4
mov eax, dword [ebp - 0x9c]
mov al, byte [eax + 2]
and al, 0xf
call fcn.0054d814
pop ecx
mov dword [ebp - 0x20], 1
cmp dword [0x67323c], 0
je 0x550800
push ebp
call fcn.0054be60
pop ecx
xor eax, eax
mov dword [ebp - 0x20], eax
inc dword [ebp - 0x1c]
jmp case.0x550661.0
push ebp
call fcn.0054c644
pop ecx
inc dword [ebp - 0x20]
mov eax, dword [0x66fc50]
test byte [eax], 0x40
je 0x550881
cmp byte [ebx + 0x3f8], 0
jne 0x550881
mov eax, dword [0x673224]
mov dword [ebp - 0x80], eax
push ebp
xor eax, eax
mov al, byte [ebp - 0x61]
call fcn.0054f35c
pop ecx
cmp byte [ebp - 0x15], 0
je 0x55085b
push ebp
mov eax, dword [0x66eb44]
mov eax, dword [eax]
mov eax, dword [eax + 0xc]
mov eax, dword [eax + 0xc]
mov eax, dword [eax + 8]
call fcn.0054bc10
pop ecx
push ebp
call fcn.0054c644
pop ecx
push ebp
push ebp
call fcn.0054bb8c
pop ecx
call fcn.0054bc10
pop ecx
mov eax, dword [ebp - 0x80]
mov dword [0x673224], eax
mov byte [ebp - 1], 1
jmp case.0x550661.0
mov eax, dword [ebp - 0x28]
mov edx, dword [ebp - 0x40]
mov ecx, dword [ebp - 0x9c]
movzx ecx, byte [ecx + 1]
cmp cx, 0xc
sete cl
and ecx, 0x7f
imul cx, cx, 0xd
add cx, 0x20
mov word [eax + edx*2], cx
push ebp
call fcn.0054c644
pop ecx
mov eax, dword [ebp - 0x28]
mov edx, dword [ebp - 0x40]
mov ecx, dword [ebp - 0x9c]
movzx ecx, byte [ecx + 1]
mov word [eax + edx*2], cx
jmp case.0x550661.0
push ebp
call fcn.0054c644
pop ecx
mov eax, dword [0x66fc50]
test byte [eax], 0x40
je 0x5508e1
cmp byte [ebx + 0x3f8], 0
je 0x5508e5
xor eax, eax
jmp 0x5508e7
mov al, 1
mov byte [ebp - 0x95], al
mov eax, dword [edi]
mov eax, dword [eax + 0x50]
mov edx, dword [ebp - 0x40]
mov eax, dword [eax + edx*4 + 8]
mov edx, dword [edi]
mov edx, dword [edx + 0x50]
mov ecx, dword [ebp - 0x40]
sub eax, dword [edx + ecx*4 + 4]
je 0x55094a
inc dword [ebp - 0x20]
cmp byte [ebp - 0x95], 0
je 0x550929
test byte [ebp + 8], 4
je case.0x550661.0
push ebp
call fcn.0054cfb0
pop ecx
jmp case.0x550661.0
mov eax, dword [ebp - 0x28]
mov edx, dword [ebp - 0x40]
mov word [eax + edx*2], 0x2d
push ebp
call fcn.0054c644
pop ecx
mov eax, dword [ebp - 0x28]
mov edx, dword [ebp - 0x40]
mov word [eax + edx*2], 0xf
jmp case.0x550661.0
cmp byte [ebp - 0x95], 0
je 0x550960
test byte [ebp + 8], 4
je 0x550960
push ebp
call fcn.0054cfb0
pop ecx
inc dword [ebp - 0x1c]
jmp case.0x550661.0
push ebp
call fcn.0054c644
pop ecx
push ebp
lea ecx, [ebp - 0x100]
mov eax, dword [edi]
mov edx, dword [eax + 0x28]
add edx, dword [ebp - 0x40]
mov eax, dword [edi]
mov eax, dword [eax + 8]
mov eax, dword [eax + 0x18]
call fcn.005439ec
lea eax, [ebp - 0x100]
call fcn.0054d0c4
pop ecx
mov dword [ebp - 0x20], 1
cmp dword [0x67323c], 0
je 0x5509ab
push ebp
call fcn.0054be60
pop ecx
xor eax, eax
mov dword [ebp - 0x20], eax
inc dword [ebp - 0x1c]
inc dword [ebp - 0x40]
jmp case.0x5504fb.0
mov eax, dword [edi]
mov eax, dword [eax + 8]
mov dword [ebp - 0xa0], eax
push ebp
call fcn.0054c644
pop ecx
test byte [ebp + 8], 1
je 0x550c46
mov eax, dword [ebp - 0x9c]
mov eax, dword [eax + 1]
mov dword [ebp - 0x68], eax
mov eax, dword [ebp - 0xa0]
test byte [eax + 0xc], 8
je 0x550a19
mov eax, dword [ebp - 0xa0]
mov eax, dword [eax + 0x84]
mov edx, dword [ebp - 0x68]
mov edx, dword [edx + 0x24]
mov dword [edx + 0x34], eax
mov eax, dword [ebp - 0xa0]
mov eax, dword [eax + 0x84]
mov edx, dword [ebp - 0x68]
mov edx, dword [edx + 0x24]
mov dword [edx + 0x38], eax
cmp dword [0x673274], 0
jne 0x550a2c
xor eax, eax
mov dword [ebp - 0x90], eax
jmp 0x550a4e
mov edx, dword [0x673274]
shl edx, 2
lea edx, [edx + edx*4]
mov eax, dword [ebp - 0xa0]
mov eax, dword [eax + 4]
call fcn.005652ec
neg eax
mov dword [ebp - 0x90], eax
lea edx, [ebp - 0x128]
mov eax, dword [ebp - 0x68]
call fcn.00561464
mov ecx, dword [ebp - 0x124]
mov eax, dword [ebp - 0x68]
mov eax, dword [eax + 0x24]
mov edx, dword [eax + 0x30]
mov eax, ebx
call fcn.00565364
push eax
lea eax, [ebp - 0x100]
push eax
lea edx, [ebp - 0x128]
mov eax, dword [ebp - 0x68]
call fcn.00561464
mov ecx, dword [ebp - 0x128]
mov eax, dword [ebp - 0x68]
mov eax, dword [eax + 0x24]
mov edx, dword [eax + 0x2c]
mov eax, ebx
call fcn.00565380
push eax
mov eax, dword [ebp - 0xa0]
mov edx, dword [eax + 4]
mov eax, dword [edi]
movsx eax, word [eax + 0x12]
call fcn.0062a078
push eax
mov eax, dword [edi]
call fcn.0054b154
call fcn.00622bb0
pop edx
add edx, eax
push edx
lea edx, [ebp - 0x128]
mov eax, dword [ebp - 0x68]
call fcn.00561464
mov edx, dword [ebp - 0x124]
mov eax, dword [ebp - 0x68]
mov eax, dword [eax + 0x24]
mov eax, dword [eax + 0x30]
call fcn.00622bc8
pop edx
sub edx, eax
mov eax, ebx
call fcn.005654c8
add eax, dword [ebp - 0x90]
push eax
mov edx, dword [ebp - 0x40]
mov eax, dword [edi]
call fcn.0054824c
mov edx, eax
mov eax, ebx
call fcn.005654c8
add eax, dword [ebp - 0x30]
pop edx
pop ecx
call fcn.0064d580
push esi
push edi
lea esi, [ebp - 0x100]
mov edi, 0x673510
mov ecx, 4
rep movsd dword es:[edi], dword [esi]
pop edi
pop esi
mov eax, dword [ebp + 0xc]
push eax
mov eax, dword [ebp - 0x2c]
push eax
push 0x673510
call sub.user32.dll_OffsetRect
mov al, byte [0x551008]
mov byte [0x673524], al
mov eax, dword [ebp - 0x14]
mov dword [0x673520], eax
mov eax, dword [edi]
call fcn.0054afa0
test al, al
je 0x550bea
cmp byte [ebx + 0x3f8], 0
jne 0x550bea
mov eax, dword [ebx + 0x300]
mov eax, dword [eax + 4]
mov eax, dword [eax + 4]
mov edx, dword [edi]
mov edx, dword [edx + 0x28]
add edx, dword [ebp - 0x40]
cmp eax, edx
jne 0x550bea
mov eax, dword [edi]
mov eax, dword [eax + 0x30]
cmp byte [eax + 0x29], 3
jne 0x550be3
cmp dword [ebx + 0x81c], 0
je 0x550bea
mov eax, dword [edi]
mov eax, dword [eax + 0x30]
mov eax, dword [eax + 0x30]
mov eax, dword [eax + 0x8c]
cmp eax, dword [ebx + 0x820]
jne 0x550bea
lea edx, [ebp - 0x120]
mov eax, ebx
call fcn.005c5b58
lea eax, [ebp - 0x120]
push eax
lea edx, [ebp - 0x100]
mov eax, dword [edi]
mov eax, dword [eax + 8]
mov eax, dword [eax + 0x18]
call fcn.005439f4
lea eax, [ebp - 0x100]
pop edx
call fcn.00543d30
test al, al
je 0x550bea
or byte [0x673524], 1
cmp byte [ebp - 0xe], 0
je 0x550bf7
or byte [0x673524], 2
mov eax, dword [ebp - 0xc]
mov dword [0x67350c], eax
mov edx, 0x67350c
mov eax, dword [ebp - 0x68]
call fcn.005614ec
mov eax, dword [ebp - 0xa0]
test byte [eax + 0xc], 8
je 0x550c32
mov eax, dword [ebp - 0x68]
mov eax, dword [eax + 0x24]
mov dword [eax + 0x34], 0x64
mov eax, dword [ebp - 0x68]
mov eax, dword [eax + 0x24]
mov dword [eax + 0x38], 0x64
inc dword [ebp - 0x20]
mov byte [ebp - 0x35], 1
push ebp
call fcn.0054c644
pop ecx
mov byte [ebp - 0x35], 0
jmp 0x550c49
inc dword [ebp - 0x1c]
inc dword [ebp - 0x40]
inc dword [ebp - 0x88]
jmp case.0x5504fb.0
mov eax, dword [ebp - 0x9c]
mov eax, dword [eax + 1]
mov dl, byte [eax + 4]
sub dl, 1
jb 0x550cd9
jne case.0x5504fb.0
cmp byte [ebx + 0x3f8], 0
jne case.0x5504fb.0
test byte [eax + 7], 4
je 0x550c95
cmp byte [ebx + 0x425], 0
je 0x550c95
mov edx, dword [ebp - 0x9c]
cmp byte [edx], 0x1c
je 0x550cb8
test byte [eax + 7], 2
jne case.0x5504fb.0
mov edx, dword [0x66fc50]
test byte [edx], 0x40
je case.0x5504fb.0
test byte [ebp + 8], 1
je case.0x5504fb.0
push ebp
mov al, byte [eax + 7]
push eax
mov eax, dword [ebp - 0x9c]
cmp byte [eax], 0x1c
sete dl
xor ecx, ecx
mov eax, dword [ebp - 0x40]
call fcn.0054d43c
pop ecx
jmp case.0x5504fb.0
mov edx, dword [ebp - 0x9c]
cmp byte [edx], 0x1c
jne case.0x5504fb.0
mov dl, byte [eax + 5]
sub dl, 4
je 0x550cf3
sub dl, 0x35
je 0x550d21
jmp case.0x5504fb.0
mov edx, dword [0x66fc50]
test byte [edx], 0x40
je case.0x5504fb.0
test byte [ebp + 8], 1
je case.0x5504fb.0
cmp byte [ebx + 0x3f8], 0
jne case.0x5504fb.0
push ebp
mov al, byte [eax + 7]
push eax
mov cl, 1
xor edx, edx
mov eax, dword [ebp - 0x40]
call fcn.0054d43c
pop ecx
jmp case.0x5504fb.0
lea edx, [ebp - 0x70]
mov eax, dword [eax + 0x3c]
call fcn.00546404
cmp dword [ebp - 0x70], 0
je case.0x5504fb.0
push ebp
call fcn.0054c644
pop ecx
mov eax, dword [0x673224]
mov dword [ebp - 0x3c], eax
mov eax, dword [0x66f734]
mov eax, dword [eax]
mov ecx, 1
mov edx, dword [ebp - 0x70]
call fcn.0062407c
mov dword [0x673224], eax
mov byte [ebp - 1], 1
mov byte [ebp - 0x36], 1
add esi, 9
jmp 0x550ec1
mov eax, dword [ebp - 0x48]
add eax, esi
mov dx, word [eax]
mov eax, dword [0x66fcb0]
mov eax, dword [eax]
call fcn.0064eea0
test al, al
je 0x550de1
mov eax, dword [ebp - 0x48]
add eax, esi
cmp word [eax], 0x20
je 0x550de1
mov eax, dword [ebp - 0x1c]
add eax, eax
add eax, dword [ebp - 0x28]
mov edx, dword [ebp - 0x20]
add edx, edx
add eax, edx
mov dword [ebp - 0x90], eax
mov eax, dword [ebp - 0x90]
movzx eax, word [eax]
mov dword [ebp - 0x94], eax
mov eax, dword [ebp - 0x90]
mov word [eax], 0x20
inc dword [ebp - 0x20]
push ebp
call fcn.0054c644
pop ecx
mov eax, dword [ebp - 0x90]
mov dx, word [ebp - 0x94]
mov word [eax], dx
inc dword [ebp - 0x40]
add esi, 2
jmp 0x550ec1
mov eax, dword [ebp - 0x48]
add eax, esi
cmp word [eax], 0x20
jne 0x550e5c
mov eax, dword [0x673224]
mov al, byte [eax + 0x12]
or al, byte [ebp - 0x15]
je 0x550e5c
push ebp
call fcn.0054c644
pop ecx
mov eax, dword [0x673224]
mov dword [ebp - 0x80], eax
push ebp
mov ax, 0x20
call fcn.0054f35c
pop ecx
inc dword [ebp - 0x20]
cmp byte [ebp - 0x15], 0
je 0x550e33
push ebp
mov eax, dword [0x66eb44]
mov eax, dword [eax]
mov eax, dword [eax + 0xc]
mov eax, dword [eax + 0xc]
mov eax, dword [eax + 8]
call fcn.0054bc10
pop ecx
push ebp
call fcn.0054c644
pop ecx
push ebp
push ebp
call fcn.0054bb8c
pop ecx
call fcn.0054bc10
pop ecx
mov eax, dword [ebp - 0x80]
mov dword [0x673224], eax
mov byte [ebp - 1], 1
inc dword [ebp - 0x40]
add esi, 2
jmp 0x550ec1
cmp byte [ebp - 0x36], 0
je 0x550eba
push ebp
call fcn.0054c644
pop ecx
jmp 0x550eba
mov eax, dword [ebp - 0x48]
add eax, esi
cmp word [eax], 0
je 0x550ec1
mov eax, dword [ebp - 0x48]
add eax, esi
cmp word [eax], 0x20
jne 0x550e8e
mov eax, dword [0x673224]
mov al, byte [eax + 0x12]
or al, byte [ebp - 0x15]
jne 0x550ec1
mov eax, dword [ebp - 0x48]
add eax, esi
mov dx, word [eax]
mov eax, dword [0x66fcb0]
mov eax, dword [eax]
call fcn.0064eea0
test al, al
je 0x550eb1
mov eax, dword [ebp - 0x48]
add eax, esi
cmp word [eax], 0x20
jne 0x550ec1
inc dword [ebp - 0x20]
inc dword [ebp - 0x40]
add esi, 2
mov eax, dword [edi]
cmp esi, dword [eax + 0x1c]
jl 0x550e6b
mov eax, dword [edi]
cmp esi, dword [eax + 0x1c]
jl 0x5504c8
cmp dword [ebp - 0x20], 0
jg 0x550ee5
cmp dword [ebp - 0x1c], 0
je 0x550ee5
mov eax, dword [edi]
mov eax, dword [eax + 0x2c]
cmp eax, dword [ebp - 0x88]
jne 0x550eec
push ebp
call fcn.0054c644
pop ecx
mov eax, dword [edi]
mov eax, dword [eax + 8]
cmp word [eax + 0x35], 0
je 0x550f23
test byte [eax + 0xc], 8
jne 0x550f23
test byte [ebp + 8], 4
je 0x550f23
mov eax, dword [edi]
test byte [eax + 0x3c], 1
jne 0x550f23
mov eax, dword [edi]
test byte [eax + 0x3a], 0x80
je 0x550f1c
mov eax, dword [edi]
test byte [eax + 0x3b], 1
je 0x550f23
push ebp
call fcn.0054de18
pop ecx
cmp dword [ebp - 0x24], 0
jle 0x550f36
test byte [ebp + 8], 4
je 0x550f36
push ebp
call fcn.0054e90c
pop ecx
cmp byte [ebx + 0x3f8], 0
jne 0x550f62
test byte [ebp + 8], 4
je 0x550f62
mov eax, dword [edi]
mov eax, dword [eax + 8]
test byte [eax + 0xc], 8
jne 0x550f62
push ebp
call fcn.0054e938
pop ecx
test al, al
je 0x550f62
push ebp
call fcn.0054ed24
pop ecx
mov eax, dword [0x66fc50]
mov edx, dword [ebp - 0x74]
mov dword [eax], edx
mov eax, dword [edi]
mov eax, dword [eax + 8]
cmp word [eax + 0x3e], 0
jle 0x550f93
test byte [ebp + 8], 4
je 0x550f93
test byte [eax + 0xc], 8
jne 0x550f93
mov eax, dword [edi]
test byte [eax + 0x3c], 1
jne 0x550f93
push ebp
call fcn.0054f81c
pop ecx
dec dword [0x6733d0]
mov eax, dword [edi]
and dword [eax + 0x3a], 0xfffffffd
mov eax, dword [0x6700bc]
cmp dword [eax], 0x40000000
jle 0x550fd4
mov eax, dword [edi]
mov eax, dword [eax + 8]
mov eax, dword [eax + 0x10]
call fcn.0064ea3c
cmp eax, dword [edi]
jne 0x550fd4
mov eax, dword [edi]
mov eax, dword [eax + 8]
mov eax, dword [eax + 0x14]
call fcn.00401fac
mov eax, dword [edi]
mov eax, dword [eax + 8]
xor edx, edx
mov dword [eax + 0x14], edx
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x550ff1
lea eax, [ebp - 0x70]
call fcn.00403880
ret