Function at 0x552a50
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 0x553fa2
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [edi]
or dword [eax + 0x3a], 2
mov eax, dword [edi]
call fcn.0054e22c
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 0x552aed
cmp dword [ebx + 0x4a4], 0
je 0x552aed
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.00650bf0
lea eax, [ebp - 0x100]
push eax
mov eax, dword [ebx + 0x4a4]
push eax
call sub.gdi32.dll_RectInRegion
test eax, eax
je 0x553f51
mov eax, ebx
call fcn.00565ddc
test al, al
je 0x552b0c
mov al, byte [0x553fb4]
cmp al, byte [ebp + 8]
je 0x552b10
mov al, byte [0x553fb8]
cmp al, byte [ebp + 8]
je 0x552b10
xor eax, eax
jmp 0x552b12
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.00553fc4
mov eax, dword [0x672cb4]
mov eax, dword [eax]
mov dword [ebp - 0x74], eax
cmp byte [ebx + 0x14d], 0
je 0x552b48
mov eax, dword [0x672cb4]
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.00554ab0
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.0054e378
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.00566adc
test al, al
jne 0x552bcb
mov eax, ebx
call fcn.00565828
test al, al
je 0x552bc7
mov eax, dword [0x6730b4]
test byte [eax + 2], 8
jne 0x552bc7
lea ecx, [ebx + 0x3d0]
lea edx, [ebp - 0xc0]
xor eax, eax
call fcn.00546a2c
test al, al
je 0x552bcb
xor eax, eax
jmp 0x552bcd
mov al, 1
mov byte [ebp - 0xe], al
mov eax, dword [0x672cb4]
test byte [eax], 0x40
je 0x552c07
mov eax, dword [0x671bac]
mov eax, dword [eax]
mov eax, dword [eax + 0xc]
mov edx, dword [0x671bac]
mov edx, dword [edx]
cmp eax, dword [edx + 8]
jne 0x552c07
mov eax, dword [0x6722f8]
mov eax, dword [eax]
mov eax, dword [eax + 8]
cmp dword [eax + 0xc], 0xffffffff
je 0x552c07
cmp byte [ebp - 0xe], 0
je 0x552c0b
xor eax, eax
jmp 0x552c0d
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 0x552c4d
test byte [ebp + 8], 1
je 0x552c4d
test byte [eax + 0xc], 8
jne 0x552c4d
mov eax, dword [edi]
test byte [eax + 0x3c], 1
jne 0x552c4d
mov eax, dword [edi]
test byte [eax + 0x3a], 0x80
je 0x552c46
mov eax, dword [edi]
test byte [eax + 0x3b], 1
je 0x552c4d
push ebp
call fcn.005526bc
pop ecx
mov eax, dword [edi]
call fcn.005541bc
test al, al
je 0x552c5f
push ebp
call fcn.00551f20
pop ecx
mov eax, dword [edi]
cmp dword [eax + 0x44], 0
jle 0x552c74
test byte [ebp + 8], 2
je 0x552c74
push ebp
call fcn.005520d0
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 0x552c9d
mov eax, dword [edi]
mov eax, dword [eax + 8]
cmp byte [eax + 0x3c], 0
je 0x552c9d
mov eax, dword [edi]
mov eax, dword [eax + 0x30]
call fcn.0055c350
mov dword [ebp - 0x14], eax
mov eax, dword [edi]
movzx ecx, word [eax + 0x10]
mov edx, 0x676224
mov eax, ebx
call fcn.005c0380
mov eax, dword [edi]
test byte [eax + 0x3a], 0x40
je 0x552cc4
test byte [ebp + 8], 1
je 0x552cc4
push ebp
call fcn.00550d04
pop ecx
mov eax, dword [ebx + 0x598]
cmp dword [eax + 0x18], 0
jle 0x552d31
test byte [ebp + 8], 1
je 0x552d31
mov eax, dword [edi]
test byte [eax + 0x3a], 0x10
je 0x552d31
mov eax, dword [edi]
mov eax, dword [eax + 8]
test byte [eax + 0xc], 8
jne 0x552d31
cmp byte [ebx + 0x3f8], 0
je 0x552cfb
cmp byte [ebx + 0x452], 0
je 0x552d31
mov eax, dword [0x672cb4]
cmp byte [eax + 4], 2
jne 0x552d0f
cmp byte [ebx + 0x14d], 0
je 0x552d24
mov eax, dword [0x672cb4]
cmp byte [eax + 4], 1
jne 0x552d31
mov eax, dword [0x672cb4]
test byte [eax], 0x40
je 0x552d31
push ebp
lea eax, [ebp - 0xc0]
call fcn.00551de0
pop ecx
cmp byte [ebx + 0x3f8], 0
jne 0x553442
test byte [ebp + 8], 1
je 0x552f8e
mov byte [ebp - 0x69], 0
mov al, byte [ebp - 0x69]
dec al
je 0x552d5d
dec al
je 0x552d75
dec al
je 0x552d8d
jmp 0x552da3
mov eax, ebx
call fcn.005c7e58
test al, al
je 0x552f81
mov eax, ebx
call fcn.005c7e7c
jmp 0x552da3
mov eax, ebx
call fcn.005fdfc4
test al, al
je 0x552f81
mov eax, ebx
call fcn.005fe008
jmp 0x552da3
mov eax, ebx
call fcn.005feec0
test al, al
je 0x552f81
mov eax, ebx
call fcn.005fef48
mov eax, ebx
call fcn.005c504c
test al, al
je 0x552f57
mov eax, dword [edi]
mov eax, dword [eax + 8]
test byte [eax + 0xc], 8
jne 0x552f57
cmp byte [ebx + 0x477], 0
je 0x552dd4
cmp byte [ebp - 0x69], 0
je 0x552f57
mov eax, dword [edi]
call fcn.0054df58
test al, al
je 0x552de9
cmp byte [ebp - 0x69], 0
je 0x552f57
mov eax, dword [edi]
mov eax, dword [eax + 0x30]
cmp byte [eax + 0x29], 3
jne 0x552e56
cmp dword [ebx + 0x81c], 0
je 0x552f57
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 0x552f57
lea edx, [ebp - 0x120]
mov eax, ebx
call fcn.005c8b18
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.005469ac
lea eax, [ebp - 0x100]
pop edx
call fcn.00546ce8
test al, al
je 0x552f57
mov eax, dword [edi]
mov eax, dword [eax + 0x30]
call fcn.0055bb10
test al, al
jne 0x552f57
lea ecx, [ebp - 0x7c]
lea edx, [ebp - 0x78]
mov eax, dword [edi]
call fcn.00553fe8
test al, al
je 0x552f57
mov dl, 0x59
mov eax, ebx
call fcn.00567f08
mov eax, dword [ebp - 0x78]
mov esi, dword [ebp - 0x7c]
sub esi, eax
jl 0x552f50
inc esi
mov dword [ebp - 0x90], eax
mov edx, dword [ebp - 0x90]
mov eax, dword [ebx + 0x300]
call fcn.0054accc
mov ecx, eax
lea edx, [ebp - 0xc0]
lea eax, [ebp - 0xe0]
call fcn.00546a2c
mov eax, dword [edi]
mov edx, dword [ebp - 0xdc]
sub edx, dword [eax + 0x28]
mov eax, dword [edi]
call fcn.0054b204
mov edx, eax
mov eax, ebx
call fcn.00568480
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.0054b204
mov edx, eax
mov eax, ebx
call fcn.00568480
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.00656b78
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.005c07cc
inc dword [ebp - 0x90]
dec esi
jne 0x552e9b
mov eax, ebx
call fcn.00567fbc
mov al, byte [ebp - 0x69]
dec al
je 0x552f68
dec al
je 0x552f71
dec al
je 0x552f7a
jmp 0x552f81
mov eax, ebx
call fcn.005c7e7c
jmp 0x552f81
mov eax, ebx
call fcn.005fe008
jmp 0x552f81
mov eax, ebx
call fcn.005fef48
inc byte [ebp - 0x69]
cmp byte [ebp - 0x69], 4
jne 0x552d4c
mov eax, dword [0x672cb4]
test byte [eax], 0x40
je 0x5531f5
mov eax, dword [edi]
mov esi, dword [eax + 8]
mov eax, dword [edi]
cmp dword [eax + 0x34], 0
jne 0x553112
mov eax, dword [0x671910]
test byte [eax + 8], 8
je 0x553112
test byte [ebp + 8], 1
je 0x553112
test byte [esi + 0xc], 8
jne 0x553112
cmp byte [esi + 0x27], 0
jg 0x552fec
cmp byte [esi + 0x28], 0
jg 0x552fec
cmp byte [esi + 0x29], 0
jg 0x552fec
cmp byte [esi + 0x31], 0
jle 0x553112
mov edx, 0x3c
mov eax, ebx
call fcn.005682a4
call fcn.00656b8c
mov dword [ebp - 0x8c], eax
mov eax, dword [edi]
call fcn.005541bc
test al, al
je 0x553025
mov eax, dword [esi + 0x50]
mov eax, dword [eax + 0x10]
mov eax, dword [eax + 0x1c]
mov eax, dword [eax]
xor edx, edx
call fcn.0054b204
mov dword [ebp - 0x60], eax
jmp 0x553031
xor edx, edx
mov eax, dword [edi]
call fcn.0054b204
mov dword [ebp - 0x60], eax
cmp byte [ebp - 0xe], 0
je 0x553050
mov eax, dword [0x671bac]
mov eax, dword [eax]
mov edx, 0xc0c0c0
call fcn.00627fd4
mov dword [ebp - 0x84], eax
jmp 0x553066
mov eax, dword [0x671bac]
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.0054e10c
mov edx, eax
mov eax, ebx
call fcn.005682a4
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.0062d554
mov edx, eax
mov eax, ebx
call fcn.00568480
sub eax, dword [ebp - 0x8c]
sar eax, 1
jns 0x5530bb
adc eax, 0
pop edx
add edx, eax
push edx
mov edx, dword [ebp - 0x60]
xor eax, eax
call fcn.00656b70
mov edx, eax
mov eax, ebx
call fcn.00568480
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.00656b78
pop edx
call fcn.00656b78
mov edx, eax
add edx, dword [ebp - 0x2c]
mov eax, dword [0x672e38]
mov eax, dword [eax]
pop ecx
call fcn.00626620
mov eax, dword [edi]
mov edx, dword [eax + 0x2c]
add edx, edx
mov eax, dword [0x67645c]
call fcn.006518f4
mov eax, dword [edi]
mov ecx, dword [eax + 0x2c]
add ecx, ecx
mov eax, dword [0x67645c]
mov edx, dword [eax + 4]
mov eax, dword [ebp - 0x28]
call fcn.004023c8
mov eax, dword [0x67645c]
mov eax, dword [eax + 4]
mov dword [ebp - 0x28], eax
mov eax, dword [0x671910]
test byte [eax + 8], 4
je 0x55316b
mov eax, dword [0x67309c]
mov eax, dword [eax]
mov edx, 0x20
call fcn.00652178
mov edx, dword [0x6726c0]
mov byte [edx + eax], 0xb7
mov eax, dword [edi]
mov eax, dword [eax + 0x2c]
dec eax
cmp eax, 0
jl 0x5531cf
mov dword [ebp - 0x90], eax
mov eax, dword [ebp - 0x28]
mov edx, dword [ebp - 0x90]
movzx edx, word [eax + edx*2]
mov eax, dword [0x67309c]
mov eax, dword [eax]
call fcn.00652178
mov dword [ebp - 0x94], eax
cmp dword [ebp - 0x94], 0
jl 0x5531c0
mov eax, dword [0x6726c0]
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 0x55317c
mov eax, dword [0x671910]
test byte [eax + 8], 4
je 0x5531f5
mov eax, dword [0x67309c]
mov eax, dword [eax]
mov edx, 0x20
call fcn.00652178
mov edx, dword [0x6726c0]
mov byte [edx + eax], 0x20
test byte [ebp + 8], 1
je 0x55340d
mov eax, dword [edi]
mov eax, dword [eax + 8]
test byte [eax + 0xc], 8
jne 0x55340d
cmp dword [ebx + 0x81c], 0
jne 0x55340d
mov eax, dword [edi]
call fcn.0055417c
test al, al
je 0x55340d
mov eax, dword [edi]
mov eax, dword [eax + 8]
mov edx, dword [eax + 0x18]
mov eax, ebx
call fcn.005fe91c
test al, al
je 0x55340d
mov eax, dword [edi]
mov esi, dword [eax + 8]
cmp esi, dword [ebx + 0xb4]
je 0x553258
cmp byte [esi + 0x3d], 0
je 0x55340d
xor edx, edx
mov eax, dword [edi]
call fcn.0054b204
mov edx, eax
mov eax, ebx
call fcn.00568480
mov edx, dword [ebp - 0x2c]
add edx, dword [ebp - 0x30]
add eax, edx
mov edx, dword [0x6725d0]
mov edx, dword [edx]
add edx, edx
sub eax, edx
mov dword [ebp - 0xf0], eax
mov eax, dword [edi]
call fcn.005541bc
test al, al
je 0x5532c3
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.0054b204
push eax
xor edx, edx
mov eax, esi
call fcn.0054b204
pop edx
sub edx, eax
mov eax, ebx
call fcn.00568480
sub dword [ebp - 0xf0], eax
mov eax, dword [0x6725d0]
mov eax, dword [eax]
add eax, dword [ebp - 0xf0]
mov dword [ebp - 0xe8], eax
mov eax, dword [edi]
call fcn.0054e10c
mov edx, eax
mov eax, ebx
call fcn.005682a4
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.0062d554
mov edx, eax
mov eax, ebx
call fcn.00568480
mov edx, dword [0x6725d0]
sub eax, dword [edx]
sar eax, 1
jns 0x55331e
adc eax, 0
add esi, eax
mov dword [ebp - 0xec], esi
mov eax, dword [0x6725d0]
mov eax, dword [eax]
add eax, esi
mov dword [ebp - 0xe4], eax
mov eax, dword [0x671bac]
mov eax, dword [eax]
mov edx, 0xff
call fcn.00627fd4
mov dword [ebp - 0x84], eax
mov eax, dword [0x671bac]
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 [0x672e38]
mov eax, dword [eax]
call fcn.00626640
mov eax, dword [0x6725d0]
mov eax, dword [eax]
sub eax, 4
push eax
push 1
mov eax, dword [ebp - 0x84]
push eax
mov ecx, dword [0x6725d0]
mov ecx, dword [ecx]
sar ecx, 1
jns 0x553391
adc ecx, 0
add ecx, dword [ebp - 0xec]
mov edx, dword [ebp - 0xf0]
add edx, 2
mov eax, dword [0x672e38]
mov eax, dword [eax]
call fcn.00626620
mov eax, dword [edi]
mov eax, dword [eax + 8]
cmp byte [eax + 0x3d], 0
je 0x5533f5
push 1
mov eax, dword [0x6725d0]
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 [0x6725d0]
mov edx, dword [edx]
sar edx, 1
jns 0x5533e3
adc edx, 0
add edx, dword [ebp - 0xf0]
mov eax, dword [0x672e38]
mov eax, dword [eax]
call fcn.00626620
lea edx, [ebp - 0xf0]
mov eax, dword [0x672e38]
mov eax, dword [eax]
mov ecx, dword [ebp - 0x84]
call fcn.00626734
mov al, byte [0x553fbc]
cmp al, byte [ebp + 8]
jne 0x553442
mov edx, dword [ebp + 0xc]
mov eax, dword [ebx + 0xa4]
call fcn.00656b70
mov dword [ebx + 0xa4], eax
mov edx, dword [ebp + 0xc]
add edx, dword [ebp - 0x44]
mov eax, dword [ebx + 0xa8]
call fcn.00656b78
mov dword [ebx + 0xa8], eax
push ebp
push ebp
call fcn.0054eb44
pop ecx
call fcn.0054ebc8
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 0x553e79
mov eax, dword [ebp - 0x48]
add eax, esi
cmp word [eax], 0
jne 0x553d22
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.0x5534b3.0
mov dl, byte [edx + 0x5534ba]
jmp dword [edx*4 + 0x5534d8]
push ebp
call fcn.0054f5fc
pop ecx
cmp byte [ebp - 0x36], 0
je 0x55351a
mov eax, dword [ebp - 0x9c]
mov eax, dword [eax + 1]
mov dword [ebp - 0x3c], eax
jmp case.0x5534b3.0
mov eax, dword [ebp - 0x9c]
mov eax, dword [eax + 1]
mov dword [0x676224], eax
mov byte [ebp - 1], 1
jmp case.0x5534b3.0
push ebp
call fcn.0054f5fc
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 + 0x676224], eax
mov byte [ebp - 1], 1
jmp case.0x5534b3.0
push ebp
call fcn.0054f5fc
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 + 0x676224], eax
jmp case.0x5534b3.0
push ebp
call fcn.0054f5fc
pop ecx
mov eax, dword [ebp - 0x9c]
mov eax, dword [eax + 1]
mov dword [0x676260], eax
push ebp
push ebp
call fcn.0054eb44
pop ecx
call fcn.0054ebc8
pop ecx
jmp case.0x5534b3.0
cmp byte [ebp - 0xe], 0
je case.0x5534b3.0
push ebp
call fcn.0054f5fc
pop ecx
mov eax, dword [ebp - 0x9c]
mov eax, dword [eax + 1]
mov dword [0x676264], eax
push ebp
push ebp
call fcn.0054eb44
pop ecx
call fcn.0054ebc8
pop ecx
jmp case.0x5534b3.0
sub al, 0x18
je 0x5535e7
dec al
je 0x5535ed
dec al
je 0x5535f3
jmp 0x5535f9
mov byte [ebp - 0x61], 3
jmp 0x553605
mov byte [ebp - 0x61], 4
jmp 0x553605
mov byte [ebp - 0x61], 5
jmp 0x553605
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.0x553619.0
mov al, byte [eax + 0x553620]
jmp dword [eax*4 + 0x553631]
mov eax, dword [0x672cb4]
test byte [eax], 0x40
je case.0x553619.0
cmp byte [ebx + 0x3f8], 0
jne case.0x553619.0
mov al, byte [ebp - 0x15]
or al, byte [ebp - 0x36]
je 0x55367b
push ebp
call fcn.0054f5fc
pop ecx
push ebp
xor eax, eax
mov al, byte [ebp - 0x61]
call fcn.00552314
pop ecx
inc dword [ebp - 0x20]
cmp byte [ebp - 0x15], 0
je case.0x553619.0
push ebp
mov eax, dword [0x671bac]
mov eax, dword [eax]
mov eax, dword [eax + 0xc]
mov eax, dword [eax + 0xc]
mov eax, dword [eax + 8]
call fcn.0054ebc8
pop ecx
push ebp
call fcn.0054f5fc
pop ecx
push ebp
push ebp
call fcn.0054eb44
pop ecx
call fcn.0054ebc8
pop ecx
jmp case.0x553619.0
mov eax, dword [0x672cb4]
test byte [eax], 0x40
je case.0x553619.0
cmp byte [ebx + 0x3f8], 0
jne case.0x553619.0
test byte [ebp + 8], 1
je case.0x553619.0
push ebp
call fcn.0054f5fc
pop ecx
mov al, byte [ebp - 0x61]
sub al, 3
je 0x5536fe
sub al, 3
je 0x553717
jmp 0x553725
push ebp
mov eax, dword [ebp - 0x9c]
mov eax, dword [eax + 1]
movzx eax, byte [eax + 0x14]
add eax, 2
call fcn.0054fb6c
pop ecx
jmp 0x55372e
push ebp
mov eax, 1
call fcn.0054fb6c
pop ecx
jmp 0x55372e
push ebp
xor eax, eax
call fcn.0054fb6c
pop ecx
inc dword [ebp - 0x1c]
jmp case.0x553619.0
mov eax, dword [0x672cb4]
test byte [eax], 0x40
je case.0x553619.0
cmp byte [ebx + 0x3f8], 0
jne case.0x553619.0
push ebp
call fcn.0054f5fc
pop ecx
test byte [ebp + 8], 1
je 0x553765
push ebp
call fcn.0054fdf0
pop ecx
inc dword [ebp - 0x1c]
jmp case.0x553619.0
push ebp
call fcn.0054f5fc
pop ecx
test byte [ebp + 8], 1
je 0x5537a1
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.005507cc
pop ecx
mov dword [ebp - 0x20], 1
cmp dword [0x67623c], 0
je 0x5537b8
push ebp
call fcn.0054ee18
pop ecx
xor eax, eax
mov dword [ebp - 0x20], eax
inc dword [ebp - 0x1c]
jmp case.0x553619.0
push ebp
call fcn.0054f5fc
pop ecx
inc dword [ebp - 0x20]
mov eax, dword [0x672cb4]
test byte [eax], 0x40
je 0x553839
cmp byte [ebx + 0x3f8], 0
jne 0x553839
mov eax, dword [0x676224]
mov dword [ebp - 0x80], eax
push ebp
xor eax, eax
mov al, byte [ebp - 0x61]
call fcn.00552314
pop ecx
cmp byte [ebp - 0x15], 0
je 0x553813
push ebp
mov eax, dword [0x671bac]
mov eax, dword [eax]
mov eax, dword [eax + 0xc]
mov eax, dword [eax + 0xc]
mov eax, dword [eax + 8]
call fcn.0054ebc8
pop ecx
push ebp
call fcn.0054f5fc
pop ecx
push ebp
push ebp
call fcn.0054eb44
pop ecx
call fcn.0054ebc8
pop ecx
mov eax, dword [ebp - 0x80]
mov dword [0x676224], eax
mov byte [ebp - 1], 1
jmp case.0x553619.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.0054f5fc
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.0x553619.0
push ebp
call fcn.0054f5fc
pop ecx
mov eax, dword [0x672cb4]
test byte [eax], 0x40
je 0x553899
cmp byte [ebx + 0x3f8], 0
je 0x55389d
xor eax, eax
jmp 0x55389f
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 0x553902
inc dword [ebp - 0x20]
cmp byte [ebp - 0x95], 0
je 0x5538e1
test byte [ebp + 8], 4
je case.0x553619.0
push ebp
call fcn.0054ff68
pop ecx
jmp case.0x553619.0
mov eax, dword [ebp - 0x28]
mov edx, dword [ebp - 0x40]
mov word [eax + edx*2], 0x2d
push ebp
call fcn.0054f5fc
pop ecx
mov eax, dword [ebp - 0x28]
mov edx, dword [ebp - 0x40]
mov word [eax + edx*2], 0xf
jmp case.0x553619.0
cmp byte [ebp - 0x95], 0
je 0x553918
test byte [ebp + 8], 4
je 0x553918
push ebp
call fcn.0054ff68
pop ecx
inc dword [ebp - 0x1c]
jmp case.0x553619.0
push ebp
call fcn.0054f5fc
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.005469a4
lea eax, [ebp - 0x100]
call fcn.0055007c
pop ecx
mov dword [ebp - 0x20], 1
cmp dword [0x67623c], 0
je 0x553963
push ebp
call fcn.0054ee18
pop ecx
xor eax, eax
mov dword [ebp - 0x20], eax
inc dword [ebp - 0x1c]
inc dword [ebp - 0x40]
jmp case.0x5534b3.0
mov eax, dword [edi]
mov eax, dword [eax + 8]
mov dword [ebp - 0xa0], eax
push ebp
call fcn.0054f5fc
pop ecx
test byte [ebp + 8], 1
je 0x553bfe
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 0x5539d1
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 [0x676274], 0
jne 0x5539e4
xor eax, eax
mov dword [ebp - 0x90], eax
jmp 0x553a06
mov edx, dword [0x676274]
shl edx, 2
lea edx, [edx + edx*4]
mov eax, dword [ebp - 0xa0]
mov eax, dword [eax + 4]
call fcn.005682a4
neg eax
mov dword [ebp - 0x90], eax
lea edx, [ebp - 0x128]
mov eax, dword [ebp - 0x68]
call fcn.0056441c
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.0056831c
push eax
lea eax, [ebp - 0x100]
push eax
lea edx, [ebp - 0x128]
mov eax, dword [ebp - 0x68]
call fcn.0056441c
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.00568338
push eax
mov eax, dword [ebp - 0xa0]
mov edx, dword [eax + 4]
mov eax, dword [edi]
movsx eax, word [eax + 0x12]
call fcn.0062d554
push eax
mov eax, dword [edi]
call fcn.0054e10c
call fcn.006260e8
pop edx
add edx, eax
push edx
lea edx, [ebp - 0x128]
mov eax, dword [ebp - 0x68]
call fcn.0056441c
mov edx, dword [ebp - 0x124]
mov eax, dword [ebp - 0x68]
mov eax, dword [eax + 0x24]
mov eax, dword [eax + 0x30]
call fcn.00626100
pop edx
sub edx, eax
mov eax, ebx
call fcn.00568480
add eax, dword [ebp - 0x90]
push eax
mov edx, dword [ebp - 0x40]
mov eax, dword [edi]
call fcn.0054b204
mov edx, eax
mov eax, ebx
call fcn.00568480
add eax, dword [ebp - 0x30]
pop edx
pop ecx
call fcn.00650bf0
push esi
push edi
lea esi, [ebp - 0x100]
mov edi, 0x676510
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 0x676510
call sub.user32.dll_OffsetRect
mov al, byte [0x553fc0]
mov byte [0x676524], al
mov eax, dword [ebp - 0x14]
mov dword [0x676520], eax
mov eax, dword [edi]
call fcn.0054df58
test al, al
je 0x553ba2
cmp byte [ebx + 0x3f8], 0
jne 0x553ba2
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 0x553ba2
mov eax, dword [edi]
mov eax, dword [eax + 0x30]
cmp byte [eax + 0x29], 3
jne 0x553b9b
cmp dword [ebx + 0x81c], 0
je 0x553ba2
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 0x553ba2
lea edx, [ebp - 0x120]
mov eax, ebx
call fcn.005c8b18
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.005469ac
lea eax, [ebp - 0x100]
pop edx
call fcn.00546ce8
test al, al
je 0x553ba2
or byte [0x676524], 1
cmp byte [ebp - 0xe], 0
je 0x553baf
or byte [0x676524], 2
mov eax, dword [ebp - 0xc]
mov dword [0x67650c], eax
mov edx, 0x67650c
mov eax, dword [ebp - 0x68]
call fcn.005644a4
mov eax, dword [ebp - 0xa0]
test byte [eax + 0xc], 8
je 0x553bea
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.0054f5fc
pop ecx
mov byte [ebp - 0x35], 0
jmp 0x553c01
inc dword [ebp - 0x1c]
inc dword [ebp - 0x40]
inc dword [ebp - 0x88]
jmp case.0x5534b3.0
mov eax, dword [ebp - 0x9c]
mov eax, dword [eax + 1]
mov dl, byte [eax + 4]
sub dl, 1
jb 0x553c91
jne case.0x5534b3.0
cmp byte [ebx + 0x3f8], 0
jne case.0x5534b3.0
test byte [eax + 7], 4
je 0x553c4d
cmp byte [ebx + 0x425], 0
je 0x553c4d
mov edx, dword [ebp - 0x9c]
cmp byte [edx], 0x1c
je 0x553c70
test byte [eax + 7], 2
jne case.0x5534b3.0
mov edx, dword [0x672cb4]
test byte [edx], 0x40
je case.0x5534b3.0
test byte [ebp + 8], 1
je case.0x5534b3.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.005503f4
pop ecx
jmp case.0x5534b3.0
mov edx, dword [ebp - 0x9c]
cmp byte [edx], 0x1c
jne case.0x5534b3.0
mov dl, byte [eax + 5]
sub dl, 4
je 0x553cab
sub dl, 0x35
je 0x553cd9
jmp case.0x5534b3.0
mov edx, dword [0x672cb4]
test byte [edx], 0x40
je case.0x5534b3.0
test byte [ebp + 8], 1
je case.0x5534b3.0
cmp byte [ebx + 0x3f8], 0
jne case.0x5534b3.0
push ebp
mov al, byte [eax + 7]
push eax
mov cl, 1
xor edx, edx
mov eax, dword [ebp - 0x40]
call fcn.005503f4
pop ecx
jmp case.0x5534b3.0
lea edx, [ebp - 0x70]
mov eax, dword [eax + 0x3c]
call fcn.005493bc
cmp dword [ebp - 0x70], 0
je case.0x5534b3.0
push ebp
call fcn.0054f5fc
pop ecx
mov eax, dword [0x676224]
mov dword [ebp - 0x3c], eax
mov eax, dword [0x67279c]
mov eax, dword [eax]
mov ecx, 1
mov edx, dword [ebp - 0x70]
call fcn.00627574
mov dword [0x676224], eax
mov byte [ebp - 1], 1
mov byte [ebp - 0x36], 1
add esi, 9
jmp 0x553e79
mov eax, dword [ebp - 0x48]
add eax, esi
mov dx, word [eax]
mov eax, dword [0x672d14]
mov eax, dword [eax]
call fcn.006524fc
test al, al
je 0x553d99
mov eax, dword [ebp - 0x48]
add eax, esi
cmp word [eax], 0x20
je 0x553d99
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.0054f5fc
pop ecx
mov eax, dword [ebp - 0x90]
mov dx, word [ebp - 0x94]
mov word [eax], dx
inc dword [ebp - 0x40]
add esi, 2
jmp 0x553e79
mov eax, dword [ebp - 0x48]
add eax, esi
cmp word [eax], 0x20
jne 0x553e14
mov eax, dword [0x676224]
mov al, byte [eax + 0x11]
or al, byte [ebp - 0x15]
je 0x553e14
push ebp
call fcn.0054f5fc
pop ecx
mov eax, dword [0x676224]
mov dword [ebp - 0x80], eax
push ebp
mov ax, 0x20
call fcn.00552314
pop ecx
inc dword [ebp - 0x20]
cmp byte [ebp - 0x15], 0
je 0x553deb
push ebp
mov eax, dword [0x671bac]
mov eax, dword [eax]
mov eax, dword [eax + 0xc]
mov eax, dword [eax + 0xc]
mov eax, dword [eax + 8]
call fcn.0054ebc8
pop ecx
push ebp
call fcn.0054f5fc
pop ecx
push ebp
push ebp
call fcn.0054eb44
pop ecx
call fcn.0054ebc8
pop ecx
mov eax, dword [ebp - 0x80]
mov dword [0x676224], eax
mov byte [ebp - 1], 1
inc dword [ebp - 0x40]
add esi, 2
jmp 0x553e79
cmp byte [ebp - 0x36], 0
je 0x553e72
push ebp
call fcn.0054f5fc
pop ecx
jmp 0x553e72
mov eax, dword [ebp - 0x48]
add eax, esi
cmp word [eax], 0
je 0x553e79
mov eax, dword [ebp - 0x48]
add eax, esi
cmp word [eax], 0x20
jne 0x553e46
mov eax, dword [0x676224]
mov al, byte [eax + 0x11]
or al, byte [ebp - 0x15]
jne 0x553e79
mov eax, dword [ebp - 0x48]
add eax, esi
mov dx, word [eax]
mov eax, dword [0x672d14]
mov eax, dword [eax]
call fcn.006524fc
test al, al
je 0x553e69
mov eax, dword [ebp - 0x48]
add eax, esi
cmp word [eax], 0x20
jne 0x553e79
inc dword [ebp - 0x20]
inc dword [ebp - 0x40]
add esi, 2
mov eax, dword [edi]
cmp esi, dword [eax + 0x1c]
jl 0x553e23
mov eax, dword [edi]
cmp esi, dword [eax + 0x1c]
jl 0x553480
cmp dword [ebp - 0x20], 0
jg 0x553e9d
cmp dword [ebp - 0x1c], 0
je 0x553e9d
mov eax, dword [edi]
mov eax, dword [eax + 0x2c]
cmp eax, dword [ebp - 0x88]
jne 0x553ea4
push ebp
call fcn.0054f5fc
pop ecx
mov eax, dword [edi]
mov eax, dword [eax + 8]
cmp word [eax + 0x35], 0
je 0x553edb
test byte [eax + 0xc], 8
jne 0x553edb
test byte [ebp + 8], 4
je 0x553edb
mov eax, dword [edi]
test byte [eax + 0x3c], 1
jne 0x553edb
mov eax, dword [edi]
test byte [eax + 0x3a], 0x80
je 0x553ed4
mov eax, dword [edi]
test byte [eax + 0x3b], 1
je 0x553edb
push ebp
call fcn.00550dd0
pop ecx
cmp dword [ebp - 0x24], 0
jle 0x553eee
test byte [ebp + 8], 4
je 0x553eee
push ebp
call fcn.005518c4
pop ecx
cmp byte [ebx + 0x3f8], 0
jne 0x553f1a
test byte [ebp + 8], 4
je 0x553f1a
mov eax, dword [edi]
mov eax, dword [eax + 8]
test byte [eax + 0xc], 8
jne 0x553f1a
push ebp
call fcn.005518f0
pop ecx
test al, al
je 0x553f1a
push ebp
call fcn.00551cdc
pop ecx
mov eax, dword [0x672cb4]
mov edx, dword [ebp - 0x74]
mov dword [eax], edx
mov eax, dword [edi]
mov eax, dword [eax + 8]
cmp word [eax + 0x3e], 0
jle 0x553f4b
test byte [ebp + 8], 4
je 0x553f4b
test byte [eax + 0xc], 8
jne 0x553f4b
mov eax, dword [edi]
test byte [eax + 0x3c], 1
jne 0x553f4b
push ebp
call fcn.005527d4
pop ecx
dec dword [0x6763d0]
mov eax, dword [edi]
and dword [eax + 0x3a], 0xfffffffd
mov eax, dword [0x673120]
cmp dword [eax], 0x40000000
jle 0x553f8c
mov eax, dword [edi]
mov eax, dword [eax + 8]
mov eax, dword [eax + 0x10]
call fcn.00652098
cmp eax, dword [edi]
jne 0x553f8c
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 0x553fa9
lea eax, [ebp - 0x70]
call fcn.00403880
ret