Function at 0x468fe0
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0xe8
push esi
push edi
mov edi, dword [ebp + 0xc]
mov esi, ecx
test edi, edi
je 0x468ffd
mov dword [edi], 0xffffffff
movzx eax, word [esi]
mov ecx, eax
test ax, ax
jne 0x469076
cmp word [edx], ax
jne 0x469076
mov eax, dword [0x4dcd04]
test eax, eax
jne 0x469064
mov ecx, dword [0x4dcd00]
test ecx, ecx
jne 0x469041
push 0x4b00
call fcn.00497ab4
mov ecx, eax
add esp, 4
mov dword [0x4dcd00], ecx
test ecx, ecx
je 0x4695b4
mov eax, dword [0x4dcd04]
lea esi, [eax + eax*2]
shl esi, 5
push 0x11
add esi, ecx
call dword [sym.imp.GDI32.dll_GetStockObject]
push esi
push 0x5c
push eax
mov dword [esi + 0x5c], eax
call dword [sym.imp.GDI32.dll_GetObjectW]
inc dword [0x4dcd04]
test edi, edi
je 0x46906e
mov dword [edi], 0xff000000
xor eax, eax
pop edi
pop esi
mov esp, ebp
pop ebp
ret
mov eax, dword [ebp + 8]
test eax, eax
jne 0x469091
cmp dword [0x4dcd04], eax
jle 0x4694f8
mov eax, dword [0x4dcd00]
mov dword [ebp + 8], eax
cmp word [edx], 0
movups xmm0, xmmword [eax]
movups xmmword [esp + 0x30], xmm0
movups xmm0, xmmword [eax + 0x10]
movups xmmword [esp + 0x40], xmm0
movups xmm0, xmmword [eax + 0x20]
movups xmmword [esp + 0x50], xmm0
movups xmm0, xmmword [eax + 0x30]
movups xmmword [esp + 0x60], xmm0
movups xmm0, xmmword [eax + 0x40]
movups xmmword [esp + 0x70], xmm0
movups xmm0, xmmword [eax + 0x50]
mov eax, ecx
movups xmmword [esp + 0x80], xmm0
je 0x4690ee
push 0x1f
push edx
lea eax, [esp + 0x54]
push eax
call fcn.0049fc44
add esp, 0xc
xor eax, eax
mov word [esp + 0x8a], ax
movzx eax, word [esi]
or edx, 0xffffffff
mov dword [esp + 0x14], 0
mov dword [esp + 0xc], edx
test ax, ax
je 0x4693a1
mov dword [esp + 0x10], esi
test esi, esi
je 0x469158
movzx eax, word [esi]
test ax, ax
je 0x469158
mov edi, eax
nop dword [eax + eax]
mov ecx, 0x4c678c
mov edx, 0x20
nop word [eax + eax]
cmp di, dx
je 0x46919d
movzx eax, word [ecx + 2]
add ecx, 2
mov edx, eax
test ax, ax
jne 0x469130
mov eax, dword [esp + 0x10]
add eax, 2
mov dword [esp + 0x10], eax
movzx eax, word [eax]
mov edi, eax
test ax, ax
jne 0x469120
mov ecx, esi
lea edx, [ecx + 2]
nop dword [eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x469160
sub ecx, edx
sar ecx, 1
lea edi, [esi + ecx*2]
movzx eax, word [edi]
mov dword [esp + 0x2c], eax
xor eax, eax
push str.bold
push esi
mov word [edi], ax
call fcn.004979b3
add esp, 8
test eax, eax
jne 0x4691a3
mov dword [esp + 0x40], 0x2bc
jmp 0x46936b
mov edi, dword [esp + 0x10]
jmp 0x469172
push str.italic
push esi
call fcn.004979b3
add esp, 8
test eax, eax
jne 0x4691bf
mov byte [esp + 0x44], 1
jmp 0x46936b
push str.norm
push esi
call fcn.004979b3
add esp, 8
test eax, eax
jne 0x4691e7
mov word [esp + 0x44], ax
mov byte [esp + 0x46], al
mov dword [esp + 0x40], 0x190
jmp 0x46936b
push str.underline
push esi
call fcn.004979b3
add esp, 8
test eax, eax
jne 0x469203
mov byte [esp + 0x45], 1
jmp 0x46936b
push str.strike
push esi
call fcn.004979b3
add esp, 8
test eax, eax
jne 0x46921f
mov byte [esp + 0x46], 1
jmp 0x46936b
movzx eax, word [esi]
mov ecx, eax
mov dword [esp + 0x24], eax
mov dword [esp + 0x18], ecx
movzx ecx, ax
test ecx, 0xffffff80
je 0x469241
mov dword [esp + 0x10], 0
jmp 0x469252
push ecx
call fcn.00498650
mov dword [esp + 0x14], eax
add esp, 4
mov eax, dword [esp + 0x24]
and eax, 0xffdf
cmp dword [esp + 0x10], 0
movzx edx, ax
mov eax, dword [esp + 0x18]
movzx ecx, ax
lea eax, [esi + 2]
cmove edx, ecx
mov dword [esp + 0x10], eax
cmp word [eax], 0
movzx ecx, dx
mov dword [esp + 0x18], ecx
je case.0x4692bf.68
push ecx
push 0x4d03e0
call fcn.0049515e
add esp, 8
test eax, eax
je 0x4692a9
push ecx
push 1
push 0
xor edx, edx
lea ecx, [esi + 2]
call fcn.0047a5e0
add esp, 0xc
test eax, eax
je case.0x4692bf.68
mov eax, dword [esp + 0x18]
movzx eax, ax
add eax, 0xffffffbd
cmp eax, 0x14
ja case.0x4692bf.68
movzx eax, byte [eax + 0x4695d8]
jmp dword [eax*4 + 0x4695c4]
lea ecx, [esi + 2]
call fcn.0047be40
mov edx, eax
mov dword [esp + 0xc], edx
cmp edx, 0xffffffff
jne 0x46936f
push 0x10
lea eax, [esp + 0x2c]
push eax
lea eax, [esi + 2]
push eax
call fcn.0049afeb
movzx edx, al
add esp, 0xc
movzx ecx, ax
shl edx, 8
shr ecx, 8
or edx, ecx
shr eax, 0x10
shl edx, 8
movzx eax, al
or edx, eax
mov eax, dword [esp + 0x28]
mov dword [esp + 0xc], edx
cmp word [eax], 0
je 0x46936b
push esi
push str.Invalid_option.
mov ecx, 0x4dcd68
call fcn.00428f20
pop edi
pop esi
mov esp, ebp
pop ebp
ret
mov ecx, dword [esp + 0x10]
call fcn.0047b060
mov dword [esp + 0x40], eax
jmp 0x46936b
push dword [esp + 0x10]
call fcn.0049ec5f
fadd qword [0x4d1688]
add esp, 4
fstp qword [esp + 0x18]
cvttsd2si eax, qword [esp + 0x18]
mov dword [esp + 0x14], eax
jmp 0x46936b
mov ecx, dword [esp + 0x10]
call fcn.0047b060
mov byte [esp + 0x4a], al
mov edx, dword [esp + 0xc]
mov eax, dword [esp + 0x2c]
mov esi, edi
mov word [edi], ax
movzx eax, ax
nop dword [eax + eax]
cmp ax, 0x20
je 0x46938c
cmp ax, 9
jne 0x469395
movzx eax, word [esi + 2]
add esi, 2
jmp 0x469380
test ax, ax
jne 0x469106
mov edi, dword [ebp + 0xc]
test edi, edi
je 0x4693a7
mov dword [edi], edx
push 0
call dword [sym.imp.USER32.dll_GetDC]
mov esi, eax
push 0x5a
push esi
call dword [sym.imp.GDI32.dll_GetDeviceCaps]
mov ecx, dword [esp + 0x14]
test ecx, ecx
je 0x4693d2
push 0x48
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_MulDiv]
neg eax
mov dword [esp + 0x30], eax
push 0x1f
lea eax, [esp + 0x50]
mov byte [esp + 0xab], 1
push eax
lea eax, [esp + 0xb4]
mov byte [esp + 0xb3], 0
push eax
call fcn.0049fc44
add esp, 0xc
xor eax, eax
mov word [esp + 0xea], ax
mov byte [esp + 0xb], al
push eax
lea eax, [esp + 0xf]
push eax
push 0x47c000
lea eax, [esp + 0x9c]
push eax
push esi
call dword [sym.imp.GDI32.dll_EnumFontFamiliesExW]
cmp byte [esp + 0xb], 0
jne 0x469444
mov ecx, dword [ebp + 8]
lea edx, [esp + 0x4c]
add ecx, 0x1c
sub edx, ecx
movzx eax, word [ecx]
lea ecx, [ecx + 2]
mov word [ecx + edx - 2], ax
test ax, ax
jne 0x469434
push esi
push 0
call dword [sym.imp.USER32.dll_ReleaseDC]
mov eax, dword [0x4dcd04]
xor edi, edi
test eax, eax
jle 0x4694dd
mov ecx, dword [0x4dcd00]
xor esi, esi
lea eax, [esp + 0x4c]
push eax
lea eax, [ecx + 0x1c]
add eax, esi
push eax
call fcn.004979b3
mov ecx, dword [0x4dcd00]
add esp, 8
test eax, eax
jne 0x4694bc
mov eax, dword [esi + ecx]
cmp eax, dword [esp + 0x30]
jne 0x4694bc
mov eax, dword [esi + ecx + 0x10]
cmp eax, dword [esp + 0x40]
jne 0x4694bc
mov al, byte [esi + ecx + 0x14]
cmp al, byte [esp + 0x44]
jne 0x4694bc
mov al, byte [esi + ecx + 0x15]
cmp al, byte [esp + 0x45]
jne 0x4694bc
mov al, byte [esi + ecx + 0x16]
cmp al, byte [esp + 0x46]
jne 0x4694bc
mov al, byte [esi + ecx + 0x1a]
cmp al, byte [esp + 0x4a]
je 0x4694cb
mov eax, dword [0x4dcd04]
inc edi
add esi, 0x60
cmp edi, eax
jl 0x469464
jmp 0x4694dd
cmp edi, 0xffffffff
je 0x4694d8
mov eax, edi
pop edi
pop esi
mov esp, ebp
pop ebp
ret
mov eax, dword [0x4dcd04]
cmp eax, 0xc8
jl 0x469501
push 0x4b431c
push str.Too_many_fonts.
mov ecx, 0x4dcd68
call fcn.00428f20
or eax, 0xffffffff
pop edi
pop esi
mov esp, ebp
pop ebp
ret
lea eax, [esp + 0x30]
mov dword [esp + 0x34], 0
push eax
mov dword [esp + 0x3c], 0
mov dword [esp + 0x40], 0
mov word [esp + 0x4b], 0x401
mov byte [esp + 0x4d], 0
mov byte [esp + 0x4f], 0
call dword [sym.imp.GDI32.dll_CreateFontIndirectW]
mov dword [esp + 0x8c], eax
test eax, eax
jne 0x46955d
push 0x4b431c
push str.Cant_create_font.
mov ecx, 0x4dcd68
call fcn.00428f20
or eax, 0xffffffff
pop edi
pop esi
mov esp, ebp
pop ebp
ret
mov ecx, dword [0x4dcd04]
movups xmm0, xmmword [esp + 0x30]
pop edi
pop esi
lea eax, [ecx + ecx*2]
shl eax, 5
add eax, dword [0x4dcd00]
inc ecx
mov dword [0x4dcd04], ecx
movups xmmword [eax], xmm0
movups xmm0, xmmword [esp + 0x38]
movups xmmword [eax + 0x10], xmm0
movups xmm0, xmmword [esp + 0x48]
movups xmmword [eax + 0x20], xmm0
movups xmm0, xmmword [esp + 0x58]
movups xmmword [eax + 0x30], xmm0
movups xmm0, xmmword [esp + 0x68]
movups xmmword [eax + 0x40], xmm0
movups xmm0, xmmword [esp + 0x78]
movups xmmword [eax + 0x50], xmm0
lea eax, [ecx - 1]
mov esp, ebp
pop ebp
ret
push 0x4b431c
push str.Out_of_memory.
call fcn.00429410
nop
invalid