Function at 0x549ffc
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 0x54b54e
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [edi]
or dword [eax + 0x3a], 2
mov eax, dword [edi]
call fcn.005457d8
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 0x54a099
cmp dword [ebx + 0x4a4], 0
je 0x54a099
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.0064d694
lea eax, [ebp - 0x100]
push eax
mov eax, dword [ebx + 0x4a4]
push eax
call sub.gdi32.dll_RectInRegion
test eax, eax
je 0x54b4fd
mov eax, ebx
call fcn.0055d3d0
test al, al
je 0x54a0b8
mov al, byte [0x54b560]
cmp al, byte [ebp + 8]
je 0x54a0bc
mov al, byte [0x54b564]
cmp al, byte [ebp + 8]
je 0x54a0bc
xor eax, eax
jmp 0x54a0be
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.0054b570
mov eax, dword [0x6698c8]
mov eax, dword [eax]
mov dword [ebp - 0x74], eax
cmp byte [ebx + 0x14d], 0
je 0x54a0f4
mov eax, dword [0x6698c8]
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.0054c05c
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.00545924
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.0055e0d0
test al, al
jne 0x54a177
mov eax, ebx
call fcn.0055ce1c
test al, al
je 0x54a173
mov eax, dword [0x669a50]
test byte [eax + 2], 8
jne 0x54a173
lea ecx, [ebx + 0x3d0]
lea edx, [ebp - 0xc0]
xor eax, eax
call fcn.0053df3c
test al, al
je 0x54a177
xor eax, eax
jmp 0x54a179
mov al, 1
mov byte [ebp - 0xe], al
mov eax, dword [0x6698c8]
test byte [eax], 0x40
je 0x54a1b3
mov eax, dword [0x6691b4]
mov eax, dword [eax]
mov eax, dword [eax + 0xc]
mov edx, dword [0x6691b4]
mov edx, dword [edx]
cmp eax, dword [edx + 8]
jne 0x54a1b3
mov eax, dword [0x6694b8]
mov eax, dword [eax]
mov eax, dword [eax + 8]
cmp dword [eax + 0xc], 0xffffffff
je 0x54a1b3
cmp byte [ebp - 0xe], 0
je 0x54a1b7
xor eax, eax
jmp 0x54a1b9
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 0x54a1f9
test byte [ebp + 8], 1
je 0x54a1f9
test byte [eax + 0xc], 8
jne 0x54a1f9
mov eax, dword [edi]
test byte [eax + 0x3c], 1
jne 0x54a1f9
mov eax, dword [edi]
test byte [eax + 0x3a], 0x80
je 0x54a1f2
mov eax, dword [edi]
test byte [eax + 0x3b], 1
je 0x54a1f9
push ebp
call fcn.00549c68
pop ecx
mov eax, dword [edi]
call fcn.0054b768
test al, al
je 0x54a20b
push ebp
call fcn.005494cc
pop ecx
mov eax, dword [edi]
cmp dword [eax + 0x44], 0
jle 0x54a220
test byte [ebp + 8], 2
je 0x54a220
push ebp
call fcn.0054967c
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 0x54a249
mov eax, dword [edi]
mov eax, dword [eax + 8]
cmp byte [eax + 0x3c], 0
je 0x54a249
mov eax, dword [edi]
mov eax, dword [eax + 0x30]
call fcn.005538fc
mov dword [ebp - 0x14], eax
mov eax, dword [edi]
movzx ecx, word [eax + 0x10]
mov edx, 0x66c208
mov eax, ebx
call fcn.005b8628
mov eax, dword [edi]
test byte [eax + 0x3a], 0x40
je 0x54a270
test byte [ebp + 8], 1
je 0x54a270
push ebp
call fcn.005482b0
pop ecx
mov eax, dword [ebx + 0x598]
cmp dword [eax + 0x18], 0
jle 0x54a2dd
test byte [ebp + 8], 1
je 0x54a2dd
mov eax, dword [edi]
test byte [eax + 0x3a], 0x10
je 0x54a2dd
mov eax, dword [edi]
mov eax, dword [eax + 8]
test byte [eax + 0xc], 8
jne 0x54a2dd
cmp byte [ebx + 0x3f8], 0
je 0x54a2a7
cmp byte [ebx + 0x452], 0
je 0x54a2dd
mov eax, dword [0x6698c8]
cmp byte [eax + 4], 2
jne 0x54a2bb
cmp byte [ebx + 0x14d], 0
je 0x54a2d0
mov eax, dword [0x6698c8]
cmp byte [eax + 4], 1
jne 0x54a2dd
mov eax, dword [0x6698c8]
test byte [eax], 0x40
je 0x54a2dd
push ebp
lea eax, [ebp - 0xc0]
call fcn.0054938c
pop ecx
cmp byte [ebx + 0x3f8], 0
jne 0x54a9ee
test byte [ebp + 8], 1
je 0x54a53a
mov byte [ebp - 0x69], 0
mov al, byte [ebp - 0x69]
dec al
je 0x54a309
dec al
je 0x54a321
dec al
je 0x54a339
jmp 0x54a34f
mov eax, ebx
call fcn.005c0168
test al, al
je 0x54a52d
mov eax, ebx
call fcn.005c018c
jmp 0x54a34f
mov eax, ebx
call fcn.005f7370
test al, al
je 0x54a52d
mov eax, ebx
call fcn.005f73b4
jmp 0x54a34f
mov eax, ebx
call fcn.005f826c
test al, al
je 0x54a52d
mov eax, ebx
call fcn.005f82f4
mov eax, ebx
call fcn.005bd35c
test al, al
je 0x54a503
mov eax, dword [edi]
mov eax, dword [eax + 8]
test byte [eax + 0xc], 8
jne 0x54a503
cmp byte [ebx + 0x477], 0
je 0x54a380
cmp byte [ebp - 0x69], 0
je 0x54a503
mov eax, dword [edi]
call fcn.00545504
test al, al
je 0x54a395
cmp byte [ebp - 0x69], 0
je 0x54a503
mov eax, dword [edi]
mov eax, dword [eax + 0x30]
cmp byte [eax + 0x29], 3
jne 0x54a402
cmp dword [ebx + 0x81c], 0
je 0x54a503
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 0x54a503
lea edx, [ebp - 0x120]
mov eax, ebx
call fcn.005c0e28
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.0053debc
lea eax, [ebp - 0x100]
pop edx
call fcn.0053e1f8
test al, al
je 0x54a503
mov eax, dword [edi]
mov eax, dword [eax + 0x30]
call fcn.005530bc
test al, al
jne 0x54a503
lea ecx, [ebp - 0x7c]
lea edx, [ebp - 0x78]
mov eax, dword [edi]
call fcn.0054b594
test al, al
je 0x54a503
mov dl, 0x59
mov eax, ebx
call fcn.0055f6b0
mov eax, dword [ebp - 0x78]
mov esi, dword [ebp - 0x7c]
sub esi, eax
jl 0x54a4fc
inc esi
mov dword [ebp - 0x90], eax
mov edx, dword [ebp - 0x90]
mov eax, dword [ebx + 0x300]
call fcn.00542278
mov ecx, eax
lea edx, [ebp - 0xc0]
lea eax, [ebp - 0xe0]
call fcn.0053df3c
mov eax, dword [edi]
mov edx, dword [ebp - 0xdc]
sub edx, dword [eax + 0x28]
mov eax, dword [edi]
call fcn.005427b0
mov edx, eax
mov eax, ebx
call fcn.0055fc28
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.005427b0
mov edx, eax
mov eax, ebx
call fcn.0055fc28
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.00652c5c
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.005b8a74
inc dword [ebp - 0x90]
dec esi
jne 0x54a447
mov eax, ebx
call fcn.0055f764
mov al, byte [ebp - 0x69]
dec al
je 0x54a514
dec al
je 0x54a51d
dec al
je 0x54a526
jmp 0x54a52d
mov eax, ebx
call fcn.005c018c
jmp 0x54a52d
mov eax, ebx
call fcn.005f73b4
jmp 0x54a52d
mov eax, ebx
call fcn.005f82f4
inc byte [ebp - 0x69]
cmp byte [ebp - 0x69], 4
jne 0x54a2f8
mov eax, dword [0x6698c8]
test byte [eax], 0x40
je 0x54a7a1
mov eax, dword [edi]
mov esi, dword [eax + 8]
mov eax, dword [edi]
cmp dword [eax + 0x34], 0
jne 0x54a6be
mov eax, dword [0x6690d8]
test byte [eax + 8], 8
je 0x54a6be
test byte [ebp + 8], 1
je 0x54a6be
test byte [esi + 0xc], 8
jne 0x54a6be
cmp byte [esi + 0x27], 0
jg 0x54a598
cmp byte [esi + 0x28], 0
jg 0x54a598
cmp byte [esi + 0x29], 0
jg 0x54a598
cmp byte [esi + 0x31], 0
jle 0x54a6be
mov edx, 0x3c
mov eax, ebx
call fcn.0055fa4c
call fcn.00652c70
mov dword [ebp - 0x8c], eax
mov eax, dword [edi]
call fcn.0054b768
test al, al
je 0x54a5d1
mov eax, dword [esi + 0x50]
mov eax, dword [eax + 0x10]
mov eax, dword [eax + 0x1c]
mov eax, dword [eax]
xor edx, edx
call fcn.005427b0
mov dword [ebp - 0x60], eax
jmp 0x54a5dd
xor edx, edx
mov eax, dword [edi]
call fcn.005427b0
mov dword [ebp - 0x60], eax
cmp byte [ebp - 0xe], 0
je 0x54a5fc
mov eax, dword [0x6691b4]
mov eax, dword [eax]
mov edx, 0xc0c0c0
call fcn.006247ec
mov dword [ebp - 0x84], eax
jmp 0x54a612
mov eax, dword [0x6691b4]
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.005456b8
mov edx, eax
mov eax, ebx
call fcn.0055fa4c
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.0062a2e4
mov edx, eax
mov eax, ebx
call fcn.0055fc28
sub eax, dword [ebp - 0x8c]
sar eax, 1
jns 0x54a667
adc eax, 0
pop edx
add edx, eax
push edx
mov edx, dword [ebp - 0x60]
xor eax, eax
call fcn.00652c54
mov edx, eax
mov eax, ebx
call fcn.0055fc28
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.00652c5c
pop edx
call fcn.00652c5c
mov edx, eax
add edx, dword [ebp - 0x2c]
mov eax, dword [0x669964]
mov eax, dword [eax]
pop ecx
call fcn.00622dc0
mov eax, dword [edi]
mov edx, dword [eax + 0x2c]
add edx, edx
mov eax, dword [0x66c440]
call fcn.0064dac8
mov eax, dword [edi]
mov ecx, dword [eax + 0x2c]
add ecx, ecx
mov eax, dword [0x66c440]
mov edx, dword [eax + 4]
mov eax, dword [ebp - 0x28]
call fcn.004023c8
mov eax, dword [0x66c440]
mov eax, dword [eax + 4]
mov dword [ebp - 0x28], eax
mov eax, dword [0x6690d8]
test byte [eax + 8], 4
je 0x54a717
mov eax, dword [0x669a48]
mov eax, dword [eax]
mov edx, 0x20
call fcn.0064e330
mov edx, dword [0x66964c]
mov byte [edx + eax], 0xb7
mov eax, dword [edi]
mov eax, dword [eax + 0x2c]
dec eax
cmp eax, 0
jl 0x54a77b
mov dword [ebp - 0x90], eax
mov eax, dword [ebp - 0x28]
mov edx, dword [ebp - 0x90]
movzx edx, word [eax + edx*2]
mov eax, dword [0x669a48]
mov eax, dword [eax]
call fcn.0064e330
mov dword [ebp - 0x94], eax
cmp dword [ebp - 0x94], 0
jl 0x54a76c
mov eax, dword [0x66964c]
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 0x54a728
mov eax, dword [0x6690d8]
test byte [eax + 8], 4
je 0x54a7a1
mov eax, dword [0x669a48]
mov eax, dword [eax]
mov edx, 0x20
call fcn.0064e330
mov edx, dword [0x66964c]
mov byte [edx + eax], 0x20
test byte [ebp + 8], 1
je 0x54a9b9
mov eax, dword [edi]
mov eax, dword [eax + 8]
test byte [eax + 0xc], 8
jne 0x54a9b9
cmp dword [ebx + 0x81c], 0
jne 0x54a9b9
mov eax, dword [edi]
call fcn.0054b728
test al, al
je 0x54a9b9
mov eax, dword [edi]
mov eax, dword [eax + 8]
mov edx, dword [eax + 0x18]
mov eax, ebx
call fcn.005f7cc8
test al, al
je 0x54a9b9
mov eax, dword [edi]
mov esi, dword [eax + 8]
cmp esi, dword [ebx + 0xb4]
je 0x54a804
cmp byte [esi + 0x3d], 0
je 0x54a9b9
xor edx, edx
mov eax, dword [edi]
call fcn.005427b0
mov edx, eax
mov eax, ebx
call fcn.0055fc28
mov edx, dword [ebp - 0x2c]
add edx, dword [ebp - 0x30]
add eax, edx
mov edx, dword [0x6695e4]
mov edx, dword [edx]
add edx, edx
sub eax, edx
mov dword [ebp - 0xf0], eax
mov eax, dword [edi]
call fcn.0054b768
test al, al
je 0x54a86f
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.005427b0
push eax
xor edx, edx
mov eax, esi
call fcn.005427b0
pop edx
sub edx, eax
mov eax, ebx
call fcn.0055fc28
sub dword [ebp - 0xf0], eax
mov eax, dword [0x6695e4]
mov eax, dword [eax]
add eax, dword [ebp - 0xf0]
mov dword [ebp - 0xe8], eax
mov eax, dword [edi]
call fcn.005456b8
mov edx, eax
mov eax, ebx
call fcn.0055fa4c
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.0062a2e4
mov edx, eax
mov eax, ebx
call fcn.0055fc28
mov edx, dword [0x6695e4]
sub eax, dword [edx]
sar eax, 1
jns 0x54a8ca
adc eax, 0
add esi, eax
mov dword [ebp - 0xec], esi
mov eax, dword [0x6695e4]
mov eax, dword [eax]
add eax, esi
mov dword [ebp - 0xe4], eax
mov eax, dword [0x6691b4]
mov eax, dword [eax]
mov edx, 0xff
call fcn.006247ec
mov dword [ebp - 0x84], eax
mov eax, dword [0x6691b4]
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 [0x669964]
mov eax, dword [eax]
call fcn.00622de0
mov eax, dword [0x6695e4]
mov eax, dword [eax]
sub eax, 4
push eax
push 1
mov eax, dword [ebp - 0x84]
push eax
mov ecx, dword [0x6695e4]
mov ecx, dword [ecx]
sar ecx, 1
jns 0x54a93d
adc ecx, 0
add ecx, dword [ebp - 0xec]
mov edx, dword [ebp - 0xf0]
add edx, 2
mov eax, dword [0x669964]
mov eax, dword [eax]
call fcn.00622dc0
mov eax, dword [edi]
mov eax, dword [eax + 8]
cmp byte [eax + 0x3d], 0
je 0x54a9a1
push 1
mov eax, dword [0x6695e4]
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 [0x6695e4]
mov edx, dword [edx]
sar edx, 1
jns 0x54a98f
adc edx, 0
add edx, dword [ebp - 0xf0]
mov eax, dword [0x669964]
mov eax, dword [eax]
call fcn.00622dc0
lea edx, [ebp - 0xf0]
mov eax, dword [0x669964]
mov eax, dword [eax]
mov ecx, dword [ebp - 0x84]
call fcn.00622ed4
mov al, byte [0x54b568]
cmp al, byte [ebp + 8]
jne 0x54a9ee
mov edx, dword [ebp + 0xc]
mov eax, dword [ebx + 0xa4]
call fcn.00652c54
mov dword [ebx + 0xa4], eax
mov edx, dword [ebp + 0xc]
add edx, dword [ebp - 0x44]
mov eax, dword [ebx + 0xa8]
call fcn.00652c5c
mov dword [ebx + 0xa8], eax
push ebp
push ebp
call fcn.005460f0
pop ecx
call fcn.00546174
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 0x54b425
mov eax, dword [ebp - 0x48]
add eax, esi
cmp word [eax], 0
jne 0x54b2ce
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.0x54aa5f.0
mov dl, byte [edx + 0x54aa66]
jmp dword [edx*4 + 0x54aa84]
push ebp
call fcn.00546ba8
pop ecx
cmp byte [ebp - 0x36], 0
je 0x54aac6
mov eax, dword [ebp - 0x9c]
mov eax, dword [eax + 1]
mov dword [ebp - 0x3c], eax
jmp case.0x54aa5f.0
mov eax, dword [ebp - 0x9c]
mov eax, dword [eax + 1]
mov dword [0x66c208], eax
mov byte [ebp - 1], 1
jmp case.0x54aa5f.0
push ebp
call fcn.00546ba8
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 + 0x66c208], eax
mov byte [ebp - 1], 1
jmp case.0x54aa5f.0
push ebp
call fcn.00546ba8
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 + 0x66c208], eax
jmp case.0x54aa5f.0
push ebp
call fcn.00546ba8
pop ecx
mov eax, dword [ebp - 0x9c]
mov eax, dword [eax + 1]
mov dword [0x66c244], eax
push ebp
push ebp
call fcn.005460f0
pop ecx
call fcn.00546174
pop ecx
jmp case.0x54aa5f.0
cmp byte [ebp - 0xe], 0
je case.0x54aa5f.0
push ebp
call fcn.00546ba8
pop ecx
mov eax, dword [ebp - 0x9c]
mov eax, dword [eax + 1]
mov dword [0x66c248], eax
push ebp
push ebp
call fcn.005460f0
pop ecx
call fcn.00546174
pop ecx
jmp case.0x54aa5f.0
sub al, 0x18
je 0x54ab93
dec al
je 0x54ab99
dec al
je 0x54ab9f
jmp 0x54aba5
mov byte [ebp - 0x61], 3
jmp 0x54abb1
mov byte [ebp - 0x61], 4
jmp 0x54abb1
mov byte [ebp - 0x61], 5
jmp 0x54abb1
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.0x54abc5.0
mov al, byte [eax + 0x54abcc]
jmp dword [eax*4 + 0x54abdd]
mov eax, dword [0x6698c8]
test byte [eax], 0x40
je case.0x54abc5.0
cmp byte [ebx + 0x3f8], 0
jne case.0x54abc5.0
mov al, byte [ebp - 0x15]
or al, byte [ebp - 0x36]
je 0x54ac27
push ebp
call fcn.00546ba8
pop ecx
push ebp
xor eax, eax
mov al, byte [ebp - 0x61]
call fcn.005498c0
pop ecx
inc dword [ebp - 0x20]
cmp byte [ebp - 0x15], 0
je case.0x54abc5.0
push ebp
mov eax, dword [0x6691b4]
mov eax, dword [eax]
mov eax, dword [eax + 0xc]
mov eax, dword [eax + 0xc]
mov eax, dword [eax + 8]
call fcn.00546174
pop ecx
push ebp
call fcn.00546ba8
pop ecx
push ebp
push ebp
call fcn.005460f0
pop ecx
call fcn.00546174
pop ecx
jmp case.0x54abc5.0
mov eax, dword [0x6698c8]
test byte [eax], 0x40
je case.0x54abc5.0
cmp byte [ebx + 0x3f8], 0
jne case.0x54abc5.0
test byte [ebp + 8], 1
je case.0x54abc5.0
push ebp
call fcn.00546ba8
pop ecx
mov al, byte [ebp - 0x61]
sub al, 3
je 0x54acaa
sub al, 3
je 0x54acc3
jmp 0x54acd1
push ebp
mov eax, dword [ebp - 0x9c]
mov eax, dword [eax + 1]
movzx eax, byte [eax + 0x14]
add eax, 2
call fcn.00547118
pop ecx
jmp 0x54acda
push ebp
mov eax, 1
call fcn.00547118
pop ecx
jmp 0x54acda
push ebp
xor eax, eax
call fcn.00547118
pop ecx
inc dword [ebp - 0x1c]
jmp case.0x54abc5.0
mov eax, dword [0x6698c8]
test byte [eax], 0x40
je case.0x54abc5.0
cmp byte [ebx + 0x3f8], 0
jne case.0x54abc5.0
push ebp
call fcn.00546ba8
pop ecx
test byte [ebp + 8], 1
je 0x54ad11
push ebp
call fcn.0054739c
pop ecx
inc dword [ebp - 0x1c]
jmp case.0x54abc5.0
push ebp
call fcn.00546ba8
pop ecx
test byte [ebp + 8], 1
je 0x54ad4d
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.00547d78
pop ecx
mov dword [ebp - 0x20], 1
cmp dword [0x66c220], 0
je 0x54ad64
push ebp
call fcn.005463c4
pop ecx
xor eax, eax
mov dword [ebp - 0x20], eax
inc dword [ebp - 0x1c]
jmp case.0x54abc5.0
push ebp
call fcn.00546ba8
pop ecx
inc dword [ebp - 0x20]
mov eax, dword [0x6698c8]
test byte [eax], 0x40
je 0x54ade5
cmp byte [ebx + 0x3f8], 0
jne 0x54ade5
mov eax, dword [0x66c208]
mov dword [ebp - 0x80], eax
push ebp
xor eax, eax
mov al, byte [ebp - 0x61]
call fcn.005498c0
pop ecx
cmp byte [ebp - 0x15], 0
je 0x54adbf
push ebp
mov eax, dword [0x6691b4]
mov eax, dword [eax]
mov eax, dword [eax + 0xc]
mov eax, dword [eax + 0xc]
mov eax, dword [eax + 8]
call fcn.00546174
pop ecx
push ebp
call fcn.00546ba8
pop ecx
push ebp
push ebp
call fcn.005460f0
pop ecx
call fcn.00546174
pop ecx
mov eax, dword [ebp - 0x80]
mov dword [0x66c208], eax
mov byte [ebp - 1], 1
jmp case.0x54abc5.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.00546ba8
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.0x54abc5.0
push ebp
call fcn.00546ba8
pop ecx
mov eax, dword [0x6698c8]
test byte [eax], 0x40
je 0x54ae45
cmp byte [ebx + 0x3f8], 0
je 0x54ae49
xor eax, eax
jmp 0x54ae4b
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 0x54aeae
inc dword [ebp - 0x20]
cmp byte [ebp - 0x95], 0
je 0x54ae8d
test byte [ebp + 8], 4
je case.0x54abc5.0
push ebp
call fcn.00547514
pop ecx
jmp case.0x54abc5.0
mov eax, dword [ebp - 0x28]
mov edx, dword [ebp - 0x40]
mov word [eax + edx*2], 0x2d
push ebp
call fcn.00546ba8
pop ecx
mov eax, dword [ebp - 0x28]
mov edx, dword [ebp - 0x40]
mov word [eax + edx*2], 0xf
jmp case.0x54abc5.0
cmp byte [ebp - 0x95], 0
je 0x54aec4
test byte [ebp + 8], 4
je 0x54aec4
push ebp
call fcn.00547514
pop ecx
inc dword [ebp - 0x1c]
jmp case.0x54abc5.0
push ebp
call fcn.00546ba8
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.0053deb4
lea eax, [ebp - 0x100]
call fcn.00547628
pop ecx
mov dword [ebp - 0x20], 1
cmp dword [0x66c220], 0
je 0x54af0f
push ebp
call fcn.005463c4
pop ecx
xor eax, eax
mov dword [ebp - 0x20], eax
inc dword [ebp - 0x1c]
inc dword [ebp - 0x40]
jmp case.0x54aa5f.0
mov eax, dword [edi]
mov eax, dword [eax + 8]
mov dword [ebp - 0xa0], eax
push ebp
call fcn.00546ba8
pop ecx
test byte [ebp + 8], 1
je 0x54b1aa
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 0x54af7d
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 [0x66c258], 0
jne 0x54af90
xor eax, eax
mov dword [ebp - 0x90], eax
jmp 0x54afb2
mov edx, dword [0x66c258]
shl edx, 2
lea edx, [edx + edx*4]
mov eax, dword [ebp - 0xa0]
mov eax, dword [eax + 4]
call fcn.0055fa4c
neg eax
mov dword [ebp - 0x90], eax
lea edx, [ebp - 0x128]
mov eax, dword [ebp - 0x68]
call fcn.0055ba10
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.0055fac4
push eax
lea eax, [ebp - 0x100]
push eax
lea edx, [ebp - 0x128]
mov eax, dword [ebp - 0x68]
call fcn.0055ba10
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.0055fae0
push eax
mov eax, dword [ebp - 0xa0]
mov edx, dword [eax + 4]
mov eax, dword [edi]
movsx eax, word [eax + 0x12]
call fcn.0062a2e4
push eax
mov eax, dword [edi]
call fcn.005456b8
call fcn.00622888
pop edx
add edx, eax
push edx
lea edx, [ebp - 0x128]
mov eax, dword [ebp - 0x68]
call fcn.0055ba10
mov edx, dword [ebp - 0x124]
mov eax, dword [ebp - 0x68]
mov eax, dword [eax + 0x24]
mov eax, dword [eax + 0x30]
call fcn.006228a0
pop edx
sub edx, eax
mov eax, ebx
call fcn.0055fc28
add eax, dword [ebp - 0x90]
push eax
mov edx, dword [ebp - 0x40]
mov eax, dword [edi]
call fcn.005427b0
mov edx, eax
mov eax, ebx
call fcn.0055fc28
add eax, dword [ebp - 0x30]
pop edx
pop ecx
call fcn.0064d694
push esi
push edi
lea esi, [ebp - 0x100]
mov edi, 0x66c4f4
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 0x66c4f4
call sub.user32.dll_OffsetRect
mov al, byte [0x54b56c]
mov byte [0x66c508], al
mov eax, dword [ebp - 0x14]
mov dword [0x66c504], eax
mov eax, dword [edi]
call fcn.00545504
test al, al
je 0x54b14e
cmp byte [ebx + 0x3f8], 0
jne 0x54b14e
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 0x54b14e
mov eax, dword [edi]
mov eax, dword [eax + 0x30]
cmp byte [eax + 0x29], 3
jne 0x54b147
cmp dword [ebx + 0x81c], 0
je 0x54b14e
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 0x54b14e
lea edx, [ebp - 0x120]
mov eax, ebx
call fcn.005c0e28
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.0053debc
lea eax, [ebp - 0x100]
pop edx
call fcn.0053e1f8
test al, al
je 0x54b14e
or byte [0x66c508], 1
cmp byte [ebp - 0xe], 0
je 0x54b15b
or byte [0x66c508], 2
mov eax, dword [ebp - 0xc]
mov dword [0x66c4f0], eax
mov edx, 0x66c4f0
mov eax, dword [ebp - 0x68]
call fcn.0055ba98
mov eax, dword [ebp - 0xa0]
test byte [eax + 0xc], 8
je 0x54b196
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.00546ba8
pop ecx
mov byte [ebp - 0x35], 0
jmp 0x54b1ad
inc dword [ebp - 0x1c]
inc dword [ebp - 0x40]
inc dword [ebp - 0x88]
jmp case.0x54aa5f.0
mov eax, dword [ebp - 0x9c]
mov eax, dword [eax + 1]
mov dl, byte [eax + 4]
sub dl, 1
jb 0x54b23d
jne case.0x54aa5f.0
cmp byte [ebx + 0x3f8], 0
jne case.0x54aa5f.0
test byte [eax + 7], 4
je 0x54b1f9
cmp byte [ebx + 0x425], 0
je 0x54b1f9
mov edx, dword [ebp - 0x9c]
cmp byte [edx], 0x1c
je 0x54b21c
test byte [eax + 7], 2
jne case.0x54aa5f.0
mov edx, dword [0x6698c8]
test byte [edx], 0x40
je case.0x54aa5f.0
test byte [ebp + 8], 1
je case.0x54aa5f.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.005479a0
pop ecx
jmp case.0x54aa5f.0
mov edx, dword [ebp - 0x9c]
cmp byte [edx], 0x1c
jne case.0x54aa5f.0
mov dl, byte [eax + 5]
sub dl, 4
je 0x54b257
sub dl, 0x35
je 0x54b285
jmp case.0x54aa5f.0
mov edx, dword [0x6698c8]
test byte [edx], 0x40
je case.0x54aa5f.0
test byte [ebp + 8], 1
je case.0x54aa5f.0
cmp byte [ebx + 0x3f8], 0
jne case.0x54aa5f.0
push ebp
mov al, byte [eax + 7]
push eax
mov cl, 1
xor edx, edx
mov eax, dword [ebp - 0x40]
call fcn.005479a0
pop ecx
jmp case.0x54aa5f.0
lea edx, [ebp - 0x70]
mov eax, dword [eax + 0x3c]
call fcn.00540968
cmp dword [ebp - 0x70], 0
je case.0x54aa5f.0
push ebp
call fcn.00546ba8
pop ecx
mov eax, dword [0x66c208]
mov dword [ebp - 0x3c], eax
mov eax, dword [0x6696b4]
mov eax, dword [eax]
mov ecx, 1
mov edx, dword [ebp - 0x70]
call fcn.00623d14
mov dword [0x66c208], eax
mov byte [ebp - 1], 1
mov byte [ebp - 0x36], 1
add esi, 9
jmp 0x54b425
mov eax, dword [ebp - 0x48]
add eax, esi
mov dx, word [eax]
mov eax, dword [0x669904]
mov eax, dword [eax]
call fcn.0064e6b4
test al, al
je 0x54b345
mov eax, dword [ebp - 0x48]
add eax, esi
cmp word [eax], 0x20
je 0x54b345
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.00546ba8
pop ecx
mov eax, dword [ebp - 0x90]
mov dx, word [ebp - 0x94]
mov word [eax], dx
inc dword [ebp - 0x40]
add esi, 2
jmp 0x54b425
mov eax, dword [ebp - 0x48]
add eax, esi
cmp word [eax], 0x20
jne 0x54b3c0
mov eax, dword [0x66c208]
mov al, byte [eax + 0x11]
or al, byte [ebp - 0x15]
je 0x54b3c0
push ebp
call fcn.00546ba8
pop ecx
mov eax, dword [0x66c208]
mov dword [ebp - 0x80], eax
push ebp
mov ax, 0x20
call fcn.005498c0
pop ecx
inc dword [ebp - 0x20]
cmp byte [ebp - 0x15], 0
je 0x54b397
push ebp
mov eax, dword [0x6691b4]
mov eax, dword [eax]
mov eax, dword [eax + 0xc]
mov eax, dword [eax + 0xc]
mov eax, dword [eax + 8]
call fcn.00546174
pop ecx
push ebp
call fcn.00546ba8
pop ecx
push ebp
push ebp
call fcn.005460f0
pop ecx
call fcn.00546174
pop ecx
mov eax, dword [ebp - 0x80]
mov dword [0x66c208], eax
mov byte [ebp - 1], 1
inc dword [ebp - 0x40]
add esi, 2
jmp 0x54b425
cmp byte [ebp - 0x36], 0
je 0x54b41e
push ebp
call fcn.00546ba8
pop ecx
jmp 0x54b41e
mov eax, dword [ebp - 0x48]
add eax, esi
cmp word [eax], 0
je 0x54b425
mov eax, dword [ebp - 0x48]
add eax, esi
cmp word [eax], 0x20
jne 0x54b3f2
mov eax, dword [0x66c208]
mov al, byte [eax + 0x11]
or al, byte [ebp - 0x15]
jne 0x54b425
mov eax, dword [ebp - 0x48]
add eax, esi
mov dx, word [eax]
mov eax, dword [0x669904]
mov eax, dword [eax]
call fcn.0064e6b4
test al, al
je 0x54b415
mov eax, dword [ebp - 0x48]
add eax, esi
cmp word [eax], 0x20
jne 0x54b425
inc dword [ebp - 0x20]
inc dword [ebp - 0x40]
add esi, 2
mov eax, dword [edi]
cmp esi, dword [eax + 0x1c]
jl 0x54b3cf
mov eax, dword [edi]
cmp esi, dword [eax + 0x1c]
jl 0x54aa2c
cmp dword [ebp - 0x20], 0
jg 0x54b449
cmp dword [ebp - 0x1c], 0
je 0x54b449
mov eax, dword [edi]
mov eax, dword [eax + 0x2c]
cmp eax, dword [ebp - 0x88]
jne 0x54b450
push ebp
call fcn.00546ba8
pop ecx
mov eax, dword [edi]
mov eax, dword [eax + 8]
cmp word [eax + 0x35], 0
je 0x54b487
test byte [eax + 0xc], 8
jne 0x54b487
test byte [ebp + 8], 4
je 0x54b487
mov eax, dword [edi]
test byte [eax + 0x3c], 1
jne 0x54b487
mov eax, dword [edi]
test byte [eax + 0x3a], 0x80
je 0x54b480
mov eax, dword [edi]
test byte [eax + 0x3b], 1
je 0x54b487
push ebp
call fcn.0054837c
pop ecx
cmp dword [ebp - 0x24], 0
jle 0x54b49a
test byte [ebp + 8], 4
je 0x54b49a
push ebp
call fcn.00548e70
pop ecx
cmp byte [ebx + 0x3f8], 0
jne 0x54b4c6
test byte [ebp + 8], 4
je 0x54b4c6
mov eax, dword [edi]
mov eax, dword [eax + 8]
test byte [eax + 0xc], 8
jne 0x54b4c6
push ebp
call fcn.00548e9c
pop ecx
test al, al
je 0x54b4c6
push ebp
call fcn.00549288
pop ecx
mov eax, dword [0x6698c8]
mov edx, dword [ebp - 0x74]
mov dword [eax], edx
mov eax, dword [edi]
mov eax, dword [eax + 8]
cmp word [eax + 0x3e], 0
jle 0x54b4f7
test byte [ebp + 8], 4
je 0x54b4f7
test byte [eax + 0xc], 8
jne 0x54b4f7
mov eax, dword [edi]
test byte [eax + 0x3c], 1
jne 0x54b4f7
push ebp
call fcn.00549d80
pop ecx
dec dword [0x66c3b4]
mov eax, dword [edi]
and dword [eax + 0x3a], 0xfffffffd
mov eax, dword [0x669a80]
cmp dword [eax], 0x40000000
jle 0x54b538
mov eax, dword [edi]
mov eax, dword [eax + 8]
mov eax, dword [eax + 0x10]
call fcn.0064e250
cmp eax, dword [edi]
jne 0x54b538
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 0x54b555
lea eax, [ebp - 0x70]
call fcn.00403880
ret