Function at 0x661ef73d
Capabilities:
Inspect section memory permissions

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x662314bd
mov eax, dword fs:[0]
push eax
sub esp, 0x138
mov eax, dword [0x66274018]
xor eax, esp
mov dword [esp + 0x130], eax
push ebx
push esi
push edi
mov eax, dword [0x66274018]
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 0x661efa90
lea eax, [esp + 0xdc]
push eax
call fcn.6620fd34
and dword [ebx + 0x51c], 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 0x661ef7e3
mov dword [esp + 0x3c], 0x880141
jmp 0x661ef7f4
lea eax, [esi + 0x1a]
push 0x20
lea edx, [esp + 0xfc]
call fcn.661c100a
test dword [esi + 4], 0x80000000
jne 0x661ef80a
or dword [esp + 0x3c], 0x200000
jmp 0x661ef8a5
lea eax, [esp + 0x10]
push eax
call fcn.66210f39
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.66210efb
mov edi, 0x40000000
test dword [esi + 4], edi
je 0x661ef8c2
test dword [esi + 8], edi
jne 0x661ef8c2
or dword [ebx + 0x51c], 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 0x661ef8d9
or dword [esp + 0x3c], 0x100000
jmp 0x661ef914
mov ecx, dword [esi + 8]
test cl, 1
jne 0x661ef8ee
mov dword [esp + 0xec], 0x190
jmp 0x661ef900
or word [esp + 0x58], 0x100
mov dword [esp + 0xec], 0x2bc
test cl, 2
je 0x661ef914
or word [esp + 0x58], 0x200
mov byte [esp + 0xf0], 1
test al, 4
je 0x661ef92d
or dword [ebx + 0x51c], 1
test byte [esi + 8], 4
je 0x661ef92d
mov byte [esp + 0xf1], 1
test byte [esi + 4], 8
je 0x661ef948
or dword [ebx + 0x51c], 2
test byte [esi + 8], 8
je 0x661ef948
mov byte [esp + 0xf2], 1
mov eax, dword [ebx + 0x520]
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.6620fc95
test eax, eax
je 0x661efa90
lea esi, [esp + 0x10]
call fcn.661e1883
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 0x661ef9d4
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.661c822c
test dword [esp + 0x3c], 0x200000
jne 0x661ef9f7
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 + 0x51c]
test cl, 4
je 0x661efa0e
mov eax, dword [esp + 0x40]
or dword [esp + 0x68], edi
mov dword [esp + 0x78], eax
test dword [esp + 0x3c], 0x100000
jne 0x661efa3e
or dword [esp + 0x68], 1
test word [esp + 0x58], 0x100
je 0x661efa2b
or dword [esp + 0x6c], 1
or dword [esp + 0x68], 2
test word [esp + 0x58], 0x200
je 0x661efa3e
or dword [esp + 0x6c], 2
test cl, 1
mov eax, dword [esp + 0x34]
je 0x661efa57
or dword [esp + 0x68], 4
cmp byte [eax + 0x15], 0
je 0x661efa57
or dword [esp + 0x6c], 4
test cl, 2
je 0x661efa6c
or dword [esp + 0x68], 8
cmp byte [eax + 0x16], 0
je 0x661efa6c
or dword [esp + 0x6c], 8
mov ebx, dword [ebx + 0x14c]
lea eax, [esp + 0x64]
push eax
mov eax, ebx
call fcn.661f6368
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.66229806
mov esp, ebp
pop ebp
ret