Function at 0x661ff7fb
Capabilities:
Inspect section memory permissions

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x66242548
mov eax, dword fs:[0]
push eax
sub esp, 0x138
mov eax, dword [0x66286018]
xor eax, esp
mov dword [esp + 0x130], eax
push ebx
push esi
push edi
mov eax, dword [0x66286018]
xor eax, esp
push eax
lea eax, [esp + 0x148]
mov dword fs:[0], eax
mov ebx, ecx
push dword [ebx + 0x1c]
mov esi, edx
call dword [sym.imp.USER32.dll_IsWindow]
test eax, eax
je 0x661ffb4e
lea eax, [esp + 0xdc]
push eax
call fcn.66220bda
and dword [ebx + 0x50c], 0
push 0x3c
pop edi
push edi
lea eax, [esp + 0x2c]
push 0
push eax
call sub.MSVCR80.dll_memset
add esp, 0xc
test dword [esi + 4], 0x20000000
lea eax, [esp + 0xdc]
mov dword [esp + 0x28], edi
mov dword [esp + 0x3c], 0x800141
mov dword [esp + 0x34], eax
jne 0x661ff8a1
mov dword [esp + 0x3c], 0x880141
jmp 0x661ff8b2
lea eax, [esi + 0x1a]
push 0x20
lea edx, [esp + 0xfc]
call fcn.661d100a
test dword [esi + 4], 0x80000000
jne 0x661ff8c8
or dword [esp + 0x3c], 0x200000
jmp 0x661ff963
lea eax, [esp + 0x10]
push eax
call fcn.66221e28
and dword [esp + 0x150], 0
push 0x5a
push dword [esp + 0x14]
call dword [sym.imp.GDI32.dll_GetDeviceCaps]
mov ecx, eax
mov eax, dword [esi + 0xc]
imul eax, ecx
cdq
mov ecx, 0x5a0
idiv ecx
mov edi, dword [sym.imp.GDI32.dll_DPtoLP]
and dword [esp + 0x20], 0
push 1
mov dword [esp + 0x28], eax
lea eax, [esp + 0x24]
push eax
push dword [esp + 0x18]
call edi
and dword [esp + 0x18], 0
and dword [esp + 0x1c], 0
push 1
lea eax, [esp + 0x1c]
push eax
push dword [esp + 0x18]
call edi
mov eax, dword [esp + 0x24]
sub eax, dword [esp + 0x1c]
push eax
call sub.MSVCR80.dll_labs
neg eax
mov dword [esp + 0xe0], eax
mov eax, dword [esi + 0xc]
imul eax, eax, 0xa
pop ecx
push 0x14
cdq
pop ecx
idiv ecx
mov dword [esp + 0x38], eax
or dword [esp + 0x150], 0xffffffff
lea eax, [esp + 0x10]
push eax
call fcn.66221dea
mov edi, 0x40000000
test dword [esi + 4], edi
je 0x661ff980
test dword [esi + 8], edi
jne 0x661ff980
or dword [ebx + 0x50c], 4
mov eax, dword [esi + 0x14]
mov dword [esp + 0x40], eax
mov eax, dword [esi + 4]
mov ecx, eax
and ecx, 3
cmp cl, 3
je 0x661ff997
or dword [esp + 0x3c], 0x100000
jmp 0x661ff9d2
mov ecx, dword [esi + 8]
test cl, 1
jne 0x661ff9ac
mov dword [esp + 0xec], 0x190
jmp 0x661ff9be
or word [esp + 0x58], 0x100
mov dword [esp + 0xec], 0x2bc
test cl, 2
je 0x661ff9d2
or word [esp + 0x58], 0x200
mov byte [esp + 0xf0], 1
test al, 4
je 0x661ff9eb
or dword [ebx + 0x50c], 1
test byte [esi + 8], 4
je 0x661ff9eb
mov byte [esp + 0xf1], 1
test byte [esi + 4], 8
je 0x661ffa06
or dword [ebx + 0x50c], 2
test byte [esi + 8], 8
je 0x661ffa06
mov byte [esp + 0xf2], 1
mov eax, dword [ebx + 0x510]
or dword [esp + 0x3c], 8
mov dword [esp + 0x48], eax
mov eax, dword [ebx + 0x1c]
mov dword [esp + 0x2c], eax
lea eax, [esp + 0x28]
push eax
call fcn.66220b3b
test eax, eax
je 0x661ffb4e
lea esi, [esp + 0x10]
call fcn.661f1a4f
mov dword [esp + 0x150], 1
push 0x74
pop esi
push esi
lea eax, [esp + 0x68]
push 0
push eax
call sub.MSVCR80.dll_memset
add esp, 0xc
test dword [esp + 0x3c], 0x80000
mov dword [esp + 0x64], esi
jne 0x661ffa92
or dword [esp + 0x68], 0x28000000
lea eax, [esp + 0xf8]
push eax
call dword [sym.imp.GrooveUtil.DLL_public:_static_unsigned_char___stdcall_GCIntlFontUtil::GetCharSet_wchar_t_const__]
mov byte [esp + 0x7c], al
push 0x20
lea eax, [esp + 0xfc]
lea edx, [esp + 0x82]
call fcn.661d7e32
test dword [esp + 0x3c], 0x200000
jne 0x661ffab5
mov eax, dword [esp + 0x38]
or dword [esp + 0x68], 0x80000000
imul eax, eax, 0x14
push 0xa
cdq
pop ecx
idiv ecx
mov dword [esp + 0x70], eax
mov ecx, dword [ebx + 0x50c]
test cl, 4
je 0x661ffacc
mov eax, dword [esp + 0x40]
or dword [esp + 0x68], edi
mov dword [esp + 0x78], eax
test dword [esp + 0x3c], 0x100000
jne 0x661ffafc
or dword [esp + 0x68], 1
test word [esp + 0x58], 0x100
je 0x661ffae9
or dword [esp + 0x6c], 1
or dword [esp + 0x68], 2
test word [esp + 0x58], 0x200
je 0x661ffafc
or dword [esp + 0x6c], 2
test cl, 1
mov eax, dword [esp + 0x34]
je 0x661ffb15
or dword [esp + 0x68], 4
cmp byte [eax + 0x15], 0
je 0x661ffb15
or dword [esp + 0x6c], 4
test cl, 2
je 0x661ffb2a
or dword [esp + 0x68], 8
cmp byte [eax + 0x16], 0
je 0x661ffb2a
or dword [esp + 0x6c], 8
mov ebx, dword [ebx + 0x14c]
lea eax, [esp + 0x64]
push eax
mov eax, ebx
call fcn.662064a9
or dword [esp + 0x150], 0xffffffff
push dword [esp + 0x10]
call dword [sym.imp.USER32.dll_SetCursor]
mov ecx, dword [esp + 0x148]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x130]
xor ecx, esp
call fcn.6623a9c1
mov esp, ebp
pop ebp
ret