Function at 0x550108
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 0x551690
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [edi]
or dword [eax + 0x3a], 2
mov eax, dword [edi]
call fcn.0054b864
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 + 0x3ef], 0
jne 0x5501a5
cmp dword [ebx + 0x49c], 0
je 0x5501a5
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.00656220
lea eax, [ebp - 0x100]
push eax
mov eax, dword [ebx + 0x49c]
push eax
call sub.gdi32.dll_RectInRegion
test eax, eax
je 0x55163f
mov eax, ebx
call fcn.005637a8
test al, al
je 0x5501ba
mov eax, dword [0x672704]
cmp byte [eax], 0
jne 0x5501be
xor eax, eax
jmp 0x5501c0
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
mov eax, dword [edi]
mov esi, dword [eax + 8]
mov edx, dword [esi + 0x18]
mov dword [ebp - 0xc0], edx
mov eax, dword [edi]
mov eax, dword [eax + 0x28]
mov dword [ebp - 0xbc], eax
mov dword [ebp - 0xb0], edx
mov edx, dword [edi]
add eax, dword [edx + 0x2c]
mov dword [ebp - 0xac], eax
mov eax, dword [0x672428]
mov eax, dword [eax + 0x144]
mov dword [ebp - 0x74], eax
cmp byte [ebx + 0x145], 0
je 0x55021b
mov eax, dword [0x672428]
and dword [eax + 0x144], 0xffffffbf
mov eax, dword [esi + 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.00552164
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.0054b99c
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.005644ac
test al, al
jne 0x550299
mov eax, ebx
call fcn.005631e4
test al, al
je 0x550295
call fcn.004da2b4
test byte [eax + 0x2e], 8
jne 0x550295
lea ecx, [ebx + 0x3c8]
lea edx, [ebp - 0xc0]
xor eax, eax
call fcn.00543fe0
test al, al
je 0x550299
xor eax, eax
jmp 0x55029b
mov al, 1
mov byte [ebp - 0xe], al
mov eax, dword [0x672428]
test byte [eax + 0x144], 0x40
je 0x5502da
mov eax, dword [0x6720e4]
mov eax, dword [eax]
mov eax, dword [eax + 0xc]
mov edx, dword [0x6720e4]
mov edx, dword [edx]
cmp eax, dword [edx + 8]
jne 0x5502da
mov eax, dword [0x672428]
mov eax, dword [eax + 0x26c]
cmp dword [eax + 0x10], 0xffffffff
je 0x5502da
cmp byte [ebp - 0xe], 0
je 0x5502de
xor eax, eax
jmp 0x5502e0
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 0x550320
test byte [ebp + 8], 1
je 0x550320
test byte [eax + 0xc], 8
jne 0x550320
mov eax, dword [edi]
test byte [eax + 0x3c], 1
jne 0x550320
mov eax, dword [edi]
test byte [eax + 0x3a], 0x80
je 0x550319
mov eax, dword [edi]
test byte [eax + 0x3b], 1
je 0x550320
push ebp
call fcn.0054fd60
pop ecx
mov eax, dword [edi]
call fcn.00551894
test al, al
je 0x550332
push ebp
call fcn.0054f608
pop ecx
mov eax, dword [edi]
cmp dword [eax + 0x44], 0
jle 0x550347
test byte [ebp + 8], 2
je 0x550347
push ebp
call fcn.0054f7c0
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 0x550370
mov eax, dword [edi]
mov eax, dword [eax + 8]
cmp byte [eax + 0x3c], 0
je 0x550370
mov eax, dword [edi]
mov eax, dword [eax + 0x30]
call fcn.005599d4
mov dword [ebp - 0x14], eax
mov eax, dword [edi]
movzx ecx, word [eax + 0x10]
mov edx, 0x675038
mov eax, ebx
call fcn.005c03c8
mov eax, dword [edi]
test byte [eax + 0x3a], 0x40
je 0x550397
test byte [ebp + 8], 1
je 0x550397
push ebp
call fcn.0054e350
pop ecx
mov eax, dword [ebx + 0x590]
cmp dword [eax + 0x18], 0
jle 0x55040e
test byte [ebp + 8], 1
je 0x55040e
mov eax, dword [edi]
test byte [eax + 0x3a], 0x10
je 0x55040e
mov eax, dword [edi]
mov eax, dword [eax + 8]
test byte [eax + 0xc], 8
jne 0x55040e
cmp byte [ebx + 0x3ef], 0
je 0x5503ce
cmp byte [ebx + 0x44a], 0
je 0x55040e
mov eax, dword [0x672428]
cmp byte [eax + 0x148], 2
jne 0x5503e5
cmp byte [ebx + 0x145], 0
je 0x550401
mov eax, dword [0x672428]
cmp byte [eax + 0x148], 1
jne 0x55040e
mov eax, dword [0x672428]
test byte [eax + 0x144], 0x40
je 0x55040e
push ebp
lea eax, [ebp - 0xc0]
call fcn.0054f4b8
pop ecx
cmp byte [ebx + 0x3ef], 0
jne 0x550af2
test byte [ebp + 8], 1
je 0x55066b
mov byte [ebp - 0x69], 0
mov al, byte [ebp - 0x69]
dec al
je 0x55043a
dec al
je 0x550452
dec al
je 0x55046a
jmp 0x550480
mov eax, ebx
call fcn.005c809c
test al, al
je 0x55065e
mov eax, ebx
call fcn.005c80c0
jmp 0x550480
mov eax, ebx
call fcn.00600434
test al, al
je 0x55065e
mov eax, ebx
call fcn.00600478
jmp 0x550480
mov eax, ebx
call fcn.006013f4
test al, al
je 0x55065e
mov eax, ebx
call fcn.0060147c
mov eax, ebx
call fcn.005c514c
test al, al
je 0x550634
mov eax, dword [edi]
mov eax, dword [eax + 8]
test byte [eax + 0xc], 8
jne 0x550634
cmp byte [ebx + 0x46f], 0
je 0x5504b1
cmp byte [ebp - 0x69], 0
je 0x550634
mov eax, dword [edi]
call fcn.0054b53c
test al, al
je 0x5504c6
cmp byte [ebp - 0x69], 0
je 0x550634
mov eax, dword [edi]
mov eax, dword [eax + 0x30]
cmp byte [eax + 0x29], 3
jne 0x550533
cmp dword [ebx + 0x814], 0
je 0x550634
mov eax, dword [edi]
mov eax, dword [eax + 0x30]
mov eax, dword [eax + 0x30]
mov eax, dword [eax + 0x8c]
cmp eax, dword [ebx + 0x818]
jne 0x550634
lea edx, [ebp - 0x120]
mov eax, ebx
call fcn.005c8dac
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.00543f88
lea eax, [ebp - 0x100]
pop edx
call fcn.005442f4
test al, al
je 0x550634
mov eax, dword [edi]
mov eax, dword [eax + 0x30]
call fcn.0055918c
test al, al
jne 0x550634
lea ecx, [ebp - 0x7c]
lea edx, [ebp - 0x78]
mov eax, dword [edi]
call fcn.005516a4
test al, al
je 0x550634
mov dl, 0x59
mov eax, ebx
call fcn.00565be8
mov eax, dword [ebp - 0x78]
mov esi, dword [ebp - 0x7c]
sub esi, eax
jl 0x55062d
inc esi
mov dword [ebp - 0x90], eax
mov edx, dword [ebp - 0x90]
mov eax, dword [ebx + 0x2f8]
call fcn.00548170
mov ecx, eax
lea edx, [ebp - 0xc0]
lea eax, [ebp - 0xe0]
call fcn.00543fe0
mov eax, dword [edi]
mov edx, dword [ebp - 0xdc]
sub edx, dword [eax + 0x28]
mov eax, dword [edi]
call fcn.00548764
mov edx, eax
mov eax, ebx
call fcn.00566144
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.00548764
mov edx, eax
mov eax, ebx
call fcn.00566144
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.0065b294
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.005c0814
inc dword [ebp - 0x90]
dec esi
jne 0x550578
mov eax, ebx
call fcn.00565c80
mov al, byte [ebp - 0x69]
dec al
je 0x550645
dec al
je 0x55064e
dec al
je 0x550657
jmp 0x55065e
mov eax, ebx
call fcn.005c80c0
jmp 0x55065e
mov eax, ebx
call fcn.00600478
jmp 0x55065e
mov eax, ebx
call fcn.0060147c
inc byte [ebp - 0x69]
cmp byte [ebp - 0x69], 4
jne 0x550429
mov eax, dword [0x672428]
test byte [eax + 0x144], 0x40
je 0x5508d6
mov eax, dword [edi]
mov esi, dword [eax + 8]
mov eax, dword [edi]
cmp dword [eax + 0x34], 0
jne 0x5507f3
mov eax, dword [0x672428]
test byte [eax + 0xc], 8
je 0x5507f3
test byte [ebp + 8], 1
je 0x5507f3
test byte [esi + 0xc], 8
jne 0x5507f3
cmp byte [esi + 0x27], 0
jg 0x5506cd
cmp byte [esi + 0x28], 0
jg 0x5506cd
cmp byte [esi + 0x29], 0
jg 0x5506cd
cmp byte [esi + 0x31], 0
jle 0x5507f3
mov edx, 0x3c
mov eax, ebx
call fcn.00565f68
call fcn.0065b2a8
mov dword [ebp - 0x8c], eax
mov eax, dword [edi]
call fcn.00551894
test al, al
je 0x550706
mov eax, dword [esi + 0x50]
mov eax, dword [eax + 0x10]
mov eax, dword [eax + 0x1c]
mov eax, dword [eax]
xor edx, edx
call fcn.00548764
mov dword [ebp - 0x60], eax
jmp 0x550712
xor edx, edx
mov eax, dword [edi]
call fcn.00548764
mov dword [ebp - 0x60], eax
cmp byte [ebp - 0xe], 0
je 0x550731
mov eax, dword [0x6720e4]
mov eax, dword [eax]
mov edx, 0xc0c0c0
call fcn.0062e240
mov dword [ebp - 0x84], eax
jmp 0x550747
mov eax, dword [0x6720e4]
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.0054b734
mov edx, eax
mov eax, ebx
call fcn.00565f68
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.00633cd8
mov edx, eax
mov eax, ebx
call fcn.00566144
sub eax, dword [ebp - 0x8c]
sar eax, 1
jns 0x55079c
adc eax, 0
pop edx
add edx, eax
push edx
mov edx, dword [ebp - 0x60]
xor eax, eax
call fcn.0065b28c
mov edx, eax
mov eax, ebx
call fcn.00566144
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.0065b294
pop edx
call fcn.0065b294
mov edx, eax
add edx, dword [ebp - 0x2c]
mov eax, dword [0x67278c]
mov eax, dword [eax]
pop ecx
call fcn.0062c79c
mov eax, dword [edi]
mov edx, dword [eax + 0x2c]
add edx, edx
mov eax, dword [0x675338]
call fcn.00656594
mov eax, dword [edi]
mov ecx, dword [eax + 0x2c]
add ecx, ecx
mov eax, dword [0x675338]
mov edx, dword [eax + 4]
mov eax, dword [ebp - 0x28]
call fcn.004023c8
mov eax, dword [0x675338]
mov eax, dword [eax + 4]
mov dword [ebp - 0x28], eax
mov eax, dword [0x672428]
test byte [eax + 0xc], 4
je 0x55084c
mov eax, dword [0x672860]
mov eax, dword [eax]
mov edx, 0x20
call fcn.00656d70
mov edx, dword [0x672508]
mov byte [edx + eax], 0xb7
mov eax, dword [edi]
mov eax, dword [eax + 0x2c]
dec eax
cmp eax, 0
jl 0x5508b0
mov dword [ebp - 0x90], eax
mov eax, dword [ebp - 0x28]
mov edx, dword [ebp - 0x90]
movzx edx, word [eax + edx*2]
mov eax, dword [0x672860]
mov eax, dword [eax]
call fcn.00656d70
mov dword [ebp - 0x94], eax
cmp dword [ebp - 0x94], 0
jl 0x5508a1
mov eax, dword [0x672508]
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 0x55085d
mov eax, dword [0x672428]
test byte [eax + 0xc], 4
je 0x5508d6
mov eax, dword [0x672860]
mov eax, dword [eax]
mov edx, 0x20
call fcn.00656d70
mov edx, dword [0x672508]
mov byte [edx + eax], 0x20
test byte [ebp + 8], 1
je 0x550af2
mov eax, dword [edi]
mov eax, dword [eax + 8]
test byte [eax + 0xc], 8
jne 0x550af2
cmp dword [ebx + 0x814], 0
jne 0x550af2
mov eax, dword [edi]
call fcn.00551854
test al, al
je 0x550af2
mov eax, dword [edi]
mov eax, dword [eax + 8]
mov edx, dword [eax + 0x18]
mov eax, ebx
call fcn.00600e04
test al, al
je 0x550af2
mov eax, dword [edi]
mov esi, dword [eax + 8]
cmp esi, dword [ebx + 0xac]
je 0x550939
cmp byte [esi + 0x3d], 0
je 0x550af2
xor edx, edx
mov eax, dword [edi]
call fcn.00548764
mov edx, eax
mov eax, ebx
call fcn.00566144
mov edx, dword [ebp - 0x2c]
add edx, dword [ebp - 0x30]
add eax, edx
mov edx, dword [0x6724a8]
mov edx, dword [edx]
add edx, edx
sub eax, edx
mov dword [ebp - 0xf0], eax
mov eax, dword [edi]
call fcn.00551894
test al, al
je 0x5509a4
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.00548764
push eax
xor edx, edx
mov eax, esi
call fcn.00548764
pop edx
sub edx, eax
mov eax, ebx
call fcn.00566144
sub dword [ebp - 0xf0], eax
mov eax, dword [0x6724a8]
mov eax, dword [eax]
add eax, dword [ebp - 0xf0]
mov dword [ebp - 0xe8], eax
mov eax, dword [edi]
call fcn.0054b734
mov edx, eax
mov eax, ebx
call fcn.00565f68
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.00633cd8
mov edx, eax
mov eax, ebx
call fcn.00566144
mov edx, dword [0x6724a8]
sub eax, dword [edx]
sar eax, 1
jns 0x5509ff
adc eax, 0
add esi, eax
mov dword [ebp - 0xec], esi
mov eax, dword [0x6724a8]
mov eax, dword [eax]
add eax, dword [ebp - 0xec]
mov dword [ebp - 0xe4], eax
mov eax, dword [0x6720e4]
mov eax, dword [eax]
mov edx, 0xff
call fcn.0062e240
mov dword [ebp - 0x84], eax
mov eax, dword [0x6720e4]
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 [0x67278c]
mov eax, dword [eax]
call fcn.0062c7bc
mov eax, dword [0x6724a8]
mov eax, dword [eax]
sub eax, 4
push eax
push 1
mov eax, dword [ebp - 0x84]
push eax
mov ecx, dword [0x6724a8]
mov ecx, dword [ecx]
sar ecx, 1
jns 0x550a76
adc ecx, 0
add ecx, dword [ebp - 0xec]
mov edx, dword [ebp - 0xf0]
add edx, 2
mov eax, dword [0x67278c]
mov eax, dword [eax]
call fcn.0062c79c
mov eax, dword [edi]
mov eax, dword [eax + 8]
cmp byte [eax + 0x3d], 0
je 0x550ada
push 1
mov eax, dword [0x6724a8]
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 [0x6724a8]
mov edx, dword [edx]
sar edx, 1
jns 0x550ac8
adc edx, 0
add edx, dword [ebp - 0xf0]
mov eax, dword [0x67278c]
mov eax, dword [eax]
call fcn.0062c79c
lea edx, [ebp - 0xf0]
mov eax, dword [0x67278c]
mov eax, dword [eax]
mov ecx, dword [ebp - 0x84]
call fcn.0062c8b0
push ebp
push ebp
call fcn.0054c194
pop ecx
call fcn.0054c218
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 0x551563
mov eax, dword [ebp - 0x48]
add eax, esi
cmp word [eax], 0
jne 0x55140c
add eax, 2
mov dword [ebp - 0x9c], eax
mov eax, dword [ebp - 0x9c]
movzx eax, byte [eax]
cmp eax, 0x1d
ja case.0x550b60.0
mov al, byte [eax + 0x550b67]
jmp dword [eax*4 + 0x550b85]
push ebp
call fcn.0054ce10
pop ecx
cmp byte [ebp - 0x36], 0
je 0x550bc7
mov eax, dword [ebp - 0x9c]
mov eax, dword [eax + 1]
mov dword [ebp - 0x3c], eax
jmp case.0x550b60.0
mov eax, dword [ebp - 0x9c]
mov eax, dword [eax + 1]
mov dword [0x675038], eax
mov byte [ebp - 1], 1
jmp case.0x550b60.0
push ebp
call fcn.0054ce10
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 + 0x675038], eax
mov byte [ebp - 1], 1
jmp case.0x550b60.0
push ebp
call fcn.0054ce10
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 + 0x675038], eax
jmp case.0x550b60.0
push ebp
call fcn.0054ce10
pop ecx
mov eax, dword [ebp - 0x9c]
mov eax, dword [eax + 1]
mov dword [0x675074], eax
push ebp
push ebp
call fcn.0054c194
pop ecx
call fcn.0054c218
pop ecx
jmp case.0x550b60.0
cmp byte [ebp - 0xe], 0
je case.0x550b60.0
push ebp
call fcn.0054ce10
pop ecx
mov eax, dword [ebp - 0x9c]
mov eax, dword [eax + 1]
mov dword [0x675078], eax
push ebp
push ebp
call fcn.0054c194
pop ecx
call fcn.0054c218
pop ecx
jmp case.0x550b60.0
mov eax, dword [ebp - 0x9c]
mov al, byte [eax]
sub al, 0x18
je 0x550c9c
dec al
je 0x550ca2
dec al
je 0x550ca8
jmp 0x550cae
mov byte [ebp - 0x61], 3
jmp 0x550cba
mov byte [ebp - 0x61], 4
jmp 0x550cba
mov byte [ebp - 0x61], 5
jmp 0x550cba
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.0x550cce.0
mov al, byte [eax + 0x550cd5]
jmp dword [eax*4 + 0x550ce6]
mov eax, dword [0x672428]
test byte [eax + 0x144], 0x40
je case.0x550cce.0
cmp byte [ebx + 0x3ef], 0
jne case.0x550cce.0
cmp byte [ebp - 0x15], 0
je 0x550d72
push ebp
call fcn.0054ce10
pop ecx
push ebp
xor eax, eax
mov al, byte [ebp - 0x61]
call fcn.0054fa0c
pop ecx
inc dword [ebp - 0x20]
push ebp
mov eax, dword [0x6720e4]
mov eax, dword [eax]
mov eax, dword [eax + 0xc]
mov eax, dword [eax + 0xc]
mov eax, dword [eax + 8]
call fcn.0054c218
pop ecx
push ebp
call fcn.0054ce10
pop ecx
push ebp
push ebp
call fcn.0054c194
pop ecx
call fcn.0054c218
pop ecx
jmp case.0x550cce.0
cmp byte [ebp - 0x36], 0
je 0x550d7f
push ebp
call fcn.0054ce10
pop ecx
push ebp
xor eax, eax
mov al, byte [ebp - 0x61]
call fcn.0054fa0c
pop ecx
inc dword [ebp - 0x20]
jmp case.0x550cce.0
mov eax, dword [0x672428]
test byte [eax + 0x144], 0x40
je case.0x550cce.0
cmp byte [ebx + 0x3ef], 0
jne case.0x550cce.0
test byte [ebp + 8], 1
je case.0x550cce.0
push ebp
call fcn.0054ce10
pop ecx
mov al, byte [ebp - 0x61]
sub al, 3
je 0x550dd0
sub al, 3
je 0x550de9
jmp 0x550df7
push ebp
mov eax, dword [ebp - 0x9c]
mov eax, dword [eax + 1]
movzx eax, byte [eax + 0x14]
add eax, 2
call fcn.0054d19c
pop ecx
jmp 0x550e00
push ebp
mov eax, 1
call fcn.0054d19c
pop ecx
jmp 0x550e00
push ebp
xor eax, eax
call fcn.0054d19c
pop ecx
inc dword [ebp - 0x1c]
jmp case.0x550cce.0
mov eax, dword [0x672428]
test byte [eax + 0x144], 0x40
je case.0x550cce.0
cmp byte [ebx + 0x3ef], 0
jne case.0x550cce.0
push ebp
call fcn.0054ce10
pop ecx
test byte [ebp + 8], 1
je 0x550e3b
push ebp
call fcn.0054d418
pop ecx
inc dword [ebp - 0x1c]
jmp case.0x550cce.0
push ebp
call fcn.0054ce10
pop ecx
test byte [ebp + 8], 1
je 0x550e77
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.0054de08
pop ecx
mov dword [ebp - 0x20], 1
cmp dword [0x675050], 0
je 0x550e8e
push ebp
call fcn.0054c61c
pop ecx
xor eax, eax
mov dword [ebp - 0x20], eax
inc dword [ebp - 0x1c]
jmp case.0x550cce.0
push ebp
call fcn.0054ce10
pop ecx
inc dword [ebp - 0x20]
mov eax, dword [0x672428]
test byte [eax + 0x144], 0x40
je 0x550f13
cmp byte [ebx + 0x3ef], 0
jne 0x550f13
mov eax, dword [0x675038]
mov dword [ebp - 0x80], eax
push ebp
xor eax, eax
mov al, byte [ebp - 0x61]
call fcn.0054fa0c
pop ecx
cmp byte [ebp - 0x15], 0
je 0x550eed
push ebp
mov eax, dword [0x6720e4]
mov eax, dword [eax]
mov eax, dword [eax + 0xc]
mov eax, dword [eax + 0xc]
mov eax, dword [eax + 8]
call fcn.0054c218
pop ecx
push ebp
call fcn.0054ce10
pop ecx
push ebp
push ebp
call fcn.0054c194
pop ecx
call fcn.0054c218
pop ecx
mov eax, dword [ebp - 0x80]
mov dword [0x675038], eax
mov byte [ebp - 1], 1
jmp case.0x550cce.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.0054ce10
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.0x550cce.0
push ebp
call fcn.0054ce10
pop ecx
mov eax, dword [0x672428]
test byte [eax + 0x144], 0x40
je 0x550f77
cmp byte [ebx + 0x3ef], 0
je 0x550f7b
xor eax, eax
jmp 0x550f7d
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 0x550fe0
inc dword [ebp - 0x20]
cmp byte [ebp - 0x95], 0
je 0x550fbf
test byte [ebp + 8], 4
je case.0x550cce.0
push ebp
call fcn.0054d58c
pop ecx
jmp case.0x550cce.0
mov eax, dword [ebp - 0x28]
mov edx, dword [ebp - 0x40]
mov word [eax + edx*2], 0x2d
push ebp
call fcn.0054ce10
pop ecx
mov eax, dword [ebp - 0x28]
mov edx, dword [ebp - 0x40]
mov word [eax + edx*2], 0xf
jmp case.0x550cce.0
cmp byte [ebp - 0x95], 0
je 0x550ff6
test byte [ebp + 8], 4
je 0x550ff6
push ebp
call fcn.0054d58c
pop ecx
inc dword [ebp - 0x1c]
jmp case.0x550cce.0
push ebp
call fcn.0054ce10
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.00543f80
lea eax, [ebp - 0x100]
call fcn.0054d69c
pop ecx
mov dword [ebp - 0x20], 1
cmp dword [0x675050], 0
je 0x551041
push ebp
call fcn.0054c61c
pop ecx
xor eax, eax
mov dword [ebp - 0x20], eax
inc dword [ebp - 0x1c]
inc dword [ebp - 0x40]
jmp case.0x550b60.0
mov eax, dword [edi]
mov eax, dword [eax + 8]
mov dword [ebp - 0xa0], eax
push ebp
call fcn.0054ce10
pop ecx
test byte [ebp + 8], 1
je 0x5512dc
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 0x5510af
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 [0x675088], 0
jne 0x5510c2
xor eax, eax
mov dword [ebp - 0x90], eax
jmp 0x5510e4
mov edx, dword [0x675088]
shl edx, 2
lea edx, [edx + edx*4]
mov eax, dword [ebp - 0xa0]
mov eax, dword [eax + 4]
call fcn.00565f68
neg eax
mov dword [ebp - 0x90], eax
lea edx, [ebp - 0x128]
mov eax, dword [ebp - 0x68]
call fcn.00561c90
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.00565fe0
push eax
lea eax, [ebp - 0x100]
push eax
lea edx, [ebp - 0x128]
mov eax, dword [ebp - 0x68]
call fcn.00561c90
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.00565ffc
push eax
mov eax, dword [ebp - 0xa0]
mov edx, dword [eax + 4]
mov eax, dword [edi]
movsx eax, word [eax + 0x12]
call fcn.00633cd8
push eax
mov eax, dword [edi]
call fcn.0054b734
call fcn.0062c1c0
pop edx
add edx, eax
push edx
lea edx, [ebp - 0x128]
mov eax, dword [ebp - 0x68]
call fcn.00561c90
mov edx, dword [ebp - 0x124]
mov eax, dword [ebp - 0x68]
mov eax, dword [eax + 0x24]
mov eax, dword [eax + 0x30]
call fcn.0062c1d8
pop edx
sub edx, eax
mov eax, ebx
call fcn.00566144
add eax, dword [ebp - 0x90]
push eax
mov edx, dword [ebp - 0x40]
mov eax, dword [edi]
call fcn.00548764
mov edx, eax
mov eax, ebx
call fcn.00566144
add eax, dword [ebp - 0x30]
pop edx
pop ecx
call fcn.00656220
push esi
push edi
lea esi, [ebp - 0x100]
mov edi, 0x6753e4
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 0x6753e4
call sub.user32.dll_OffsetRect
mov al, byte [0x5516a0]
mov byte [0x6753f8], al
mov eax, dword [ebp - 0x14]
mov dword [0x6753f4], eax
mov eax, dword [edi]
call fcn.0054b53c
test al, al
je 0x551280
cmp byte [ebx + 0x3ef], 0
jne 0x551280
mov eax, dword [ebx + 0x2f8]
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 0x551280
mov eax, dword [edi]
mov eax, dword [eax + 0x30]
cmp byte [eax + 0x29], 3
jne 0x551279
cmp dword [ebx + 0x814], 0
je 0x551280
mov eax, dword [edi]
mov eax, dword [eax + 0x30]
mov eax, dword [eax + 0x30]
mov eax, dword [eax + 0x8c]
cmp eax, dword [ebx + 0x818]
jne 0x551280
lea edx, [ebp - 0x120]
mov eax, ebx
call fcn.005c8dac
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.00543f88
lea eax, [ebp - 0x100]
pop edx
call fcn.005442f4
test al, al
je 0x551280
or byte [0x6753f8], 1
cmp byte [ebp - 0xe], 0
je 0x55128d
or byte [0x6753f8], 2
mov eax, dword [ebp - 0xc]
mov dword [0x6753e0], eax
mov edx, 0x6753e0
mov eax, dword [ebp - 0x68]
call fcn.00561d18
mov eax, dword [ebp - 0xa0]
test byte [eax + 0xc], 8
je 0x5512c8
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.0054ce10
pop ecx
mov byte [ebp - 0x35], 0
jmp 0x5512df
inc dword [ebp - 0x1c]
inc dword [ebp - 0x40]
inc dword [ebp - 0x88]
jmp case.0x550b60.0
mov eax, dword [ebp - 0x9c]
mov eax, dword [eax + 1]
mov dl, byte [eax + 4]
sub dl, 1
jb 0x551373
jne case.0x550b60.0
cmp byte [ebx + 0x3ef], 0
jne case.0x550b60.0
test byte [eax + 7], 4
je 0x55132b
cmp byte [ebx + 0x41c], 0
je 0x55132b
mov edx, dword [ebp - 0x9c]
cmp byte [edx], 0x1c
je 0x551352
test byte [eax + 7], 2
jne case.0x550b60.0
mov edx, dword [0x672428]
test byte [edx + 0x144], 0x40
je case.0x550b60.0
test byte [ebp + 8], 1
je case.0x550b60.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.0054da30
pop ecx
jmp case.0x550b60.0
mov edx, dword [ebp - 0x9c]
cmp byte [edx], 0x1c
jne case.0x550b60.0
mov dl, byte [eax + 5]
sub dl, 4
je 0x551391
sub dl, 0x35
je 0x5513c3
jmp case.0x550b60.0
mov edx, dword [0x672428]
test byte [edx + 0x144], 0x40
je case.0x550b60.0
test byte [ebp + 8], 1
je case.0x550b60.0
cmp byte [ebx + 0x3ef], 0
jne case.0x550b60.0
push ebp
mov al, byte [eax + 7]
push eax
mov cl, 1
xor edx, edx
mov eax, dword [ebp - 0x40]
call fcn.0054da30
pop ecx
jmp case.0x550b60.0
lea edx, [ebp - 0x70]
mov eax, dword [eax + 0x3c]
call fcn.00546950
cmp dword [ebp - 0x70], 0
je case.0x550b60.0
push ebp
call fcn.0054ce10
pop ecx
mov eax, dword [0x675038]
mov dword [ebp - 0x3c], eax
mov eax, dword [0x67256c]
mov eax, dword [eax]
mov ecx, 1
mov edx, dword [ebp - 0x70]
call fcn.0062d6a4
mov dword [0x675038], eax
mov byte [ebp - 1], 1
mov byte [ebp - 0x36], 1
add esi, 9
jmp 0x551563
mov eax, dword [ebp - 0x48]
add eax, esi
mov dx, word [eax]
mov eax, dword [0x672730]
mov eax, dword [eax]
call fcn.006570e4
test al, al
je 0x551483
mov eax, dword [ebp - 0x48]
add eax, esi
cmp word [eax], 0x20
je 0x551483
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.0054ce10
pop ecx
mov eax, dword [ebp - 0x90]
mov dx, word [ebp - 0x94]
mov word [eax], dx
inc dword [ebp - 0x40]
add esi, 2
jmp 0x551563
mov eax, dword [ebp - 0x48]
add eax, esi
cmp word [eax], 0x20
jne 0x5514fe
mov eax, dword [0x675038]
mov al, byte [eax + 0x11]
or al, byte [ebp - 0x15]
je 0x5514fe
push ebp
call fcn.0054ce10
pop ecx
mov eax, dword [0x675038]
mov dword [ebp - 0x80], eax
push ebp
mov ax, 0x20
call fcn.0054fa0c
pop ecx
inc dword [ebp - 0x20]
cmp byte [ebp - 0x15], 0
je 0x5514d5
push ebp
mov eax, dword [0x6720e4]
mov eax, dword [eax]
mov eax, dword [eax + 0xc]
mov eax, dword [eax + 0xc]
mov eax, dword [eax + 8]
call fcn.0054c218
pop ecx
push ebp
call fcn.0054ce10
pop ecx
push ebp
push ebp
call fcn.0054c194
pop ecx
call fcn.0054c218
pop ecx
mov eax, dword [ebp - 0x80]
mov dword [0x675038], eax
mov byte [ebp - 1], 1
inc dword [ebp - 0x40]
add esi, 2
jmp 0x551563
cmp byte [ebp - 0x36], 0
je 0x55155c
push ebp
call fcn.0054ce10
pop ecx
jmp 0x55155c
mov eax, dword [ebp - 0x48]
add eax, esi
cmp word [eax], 0
je 0x551563
mov eax, dword [ebp - 0x48]
add eax, esi
cmp word [eax], 0x20
jne 0x551530
mov eax, dword [0x675038]
mov al, byte [eax + 0x11]
or al, byte [ebp - 0x15]
jne 0x551563
mov eax, dword [ebp - 0x48]
add eax, esi
mov dx, word [eax]
mov eax, dword [0x672730]
mov eax, dword [eax]
call fcn.006570e4
test al, al
je 0x551553
mov eax, dword [ebp - 0x48]
add eax, esi
cmp word [eax], 0x20
jne 0x551563
inc dword [ebp - 0x20]
inc dword [ebp - 0x40]
add esi, 2
mov eax, dword [edi]
cmp esi, dword [eax + 0x1c]
jl 0x55150d
mov eax, dword [edi]
cmp esi, dword [eax + 0x1c]
jl 0x550b30
cmp dword [ebp - 0x20], 0
jg 0x551587
cmp dword [ebp - 0x1c], 0
je 0x551587
mov eax, dword [edi]
mov eax, dword [eax + 0x2c]
cmp eax, dword [ebp - 0x88]
jne 0x55158e
push ebp
call fcn.0054ce10
pop ecx
mov eax, dword [edi]
mov eax, dword [eax + 8]
cmp word [eax + 0x35], 0
je 0x5515c5
test byte [eax + 0xc], 8
jne 0x5515c5
test byte [ebp + 8], 4
je 0x5515c5
mov eax, dword [edi]
test byte [eax + 0x3c], 1
jne 0x5515c5
mov eax, dword [edi]
test byte [eax + 0x3a], 0x80
je 0x5515be
mov eax, dword [edi]
test byte [eax + 0x3b], 1
je 0x5515c5
push ebp
call fcn.0054e41c
pop ecx
cmp dword [ebp - 0x24], 0
jle 0x5515d8
test byte [ebp + 8], 4
je 0x5515d8
push ebp
call fcn.0054ef80
pop ecx
cmp byte [ebx + 0x3ef], 0
jne 0x551604
test byte [ebp + 8], 4
je 0x551604
mov eax, dword [edi]
mov eax, dword [eax + 8]
test byte [eax + 0xc], 8
jne 0x551604
push ebp
call fcn.0054efac
pop ecx
test al, al
je 0x551604
push ebp
call fcn.0054f3b4
pop ecx
mov eax, dword [0x672428]
mov edx, dword [ebp - 0x74]
mov dword [eax + 0x144], edx
mov eax, dword [edi]
mov eax, dword [eax + 8]
cmp word [eax + 0x3e], 0
jle 0x551639
test byte [ebp + 8], 4
je 0x551639
test byte [eax + 0xc], 8
jne 0x551639
mov eax, dword [edi]
test byte [eax + 0x3c], 1
jne 0x551639
push ebp
call fcn.0054fe88
pop ecx
dec dword [0x6752ac]
mov eax, dword [edi]
and dword [eax + 0x3a], 0xfffffffd
mov eax, dword [0x672890]
cmp dword [eax], 0x40000000
jle 0x55167a
mov eax, dword [edi]
mov eax, dword [eax + 8]
mov eax, dword [eax + 0x10]
call fcn.00656c90
cmp eax, dword [edi]
jne 0x55167a
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 0x551697
lea eax, [ebp - 0x70]
call fcn.00403880
ret