Function at 0x10012da0
Capabilities:
Access peb ldr_data
Get kernel32 base address
Get number of processors
Get process heap flags
Get process heap force flags

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
sub esp, 0x68
test byte [0x100258c8], 8
jne 0x100133f0
mov eax, dword [ebp + 0xc]
mov esi, dword [eax]
test esi, esi
jne 0x10013427
mov eax, dword [ebp + 0xc]
mov esi, dword [ebp + 0x10]
mov eax, dword [eax + 4]
mov dword [ebp - 0x58], eax
mov edx, dword [eax + 4]
cmp dword [eax], esi
jbe 0x100133a8
mov ebx, dword [edx + esi*4]
mov eax, 1
test ebx, ebx
jne 0x10012e2b
lea eax, [ebp - 0xe]
xor ecx, ecx
mov edx, dword [ebp + 0x10]
mov dword [ebp - 0x18], 0
mov dword [esp], eax
mov eax, dword [ebp + 8]
mov word [ebp - 0x20], cx
lea ecx, [ebp - 0x10]
mov eax, dword [eax]
mov dword [ebp - 0x1c], 0
mov dword [ebp - 0x14], 0
call sym._get_hmetrics.isra.0
mov eax, dword [ebp + 8]
mov edx, dword [ebp + 0x10]
lea ecx, [ebp - 0x20]
mov eax, dword [eax]
call sym._append_glyph_outline
test eax, eax
jne 0x10012e38
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret
mov ebx, dword fs:[0x18]
mov dword [esp + 8], 0xc
mov edi, dword [sym.imp.kernel32.dll_HeapAlloc]
mov dword [esp + 4], 0
mov eax, dword [ebx + 0x30]
mov dword [ebp - 0x5c], edi
mov eax, dword [eax + 0x18]
mov dword [esp], eax
call edi
sub esp, 0xc
mov esi, eax
mov dword [eax + 8], 0x64
mov dword [esp + 8], 0x64
mov dword [esp + 4], 0
mov eax, dword [ebx + 0x30]
xor ebx, ebx
mov eax, dword [eax + 0x18]
mov dword [esp], eax
call edi
mov dword [esi + 4], 0
mov dword [esi], eax
movsx eax, word [ebp - 0x10]
sub esp, 0xc
mov edx, eax
mov dword [ebp - 0x34], eax
mov eax, esi
call sym._str_add_num
movzx edx, word [ebp - 0xe]
mov eax, esi
call sym._str_add_num
mov edx, 0xd
mov eax, esi
call sym._str_add_byte
xor edx, edx
cmp word [ebp - 0x20], 0
mov dword [ebp - 0x38], 0
mov word [ebp - 0x44], dx
je 0x1001315f
mov word [ebp - 0x24], bx
lea esi, cs:[esi]
movzx edx, word [ebp - 0x24]
mov eax, dword [ebp - 0x14]
lea eax, [eax + edx*8]
lea ebx, [edx + 1]
mov edx, dword [ebp - 0x1c]
mov edi, dword [eax]
mov eax, dword [eax + 4]
mov dword [ebp - 0x50], eax
movzx eax, word [ebp - 0x44]
mov dword [ebp - 0x54], edi
movzx ecx, word [edx + eax*2]
mov eax, esi
mov edx, edi
sub edx, dword [ebp - 0x34]
mov word [ebp - 0x42], cx
call sym._str_add_num
mov edx, dword [ebp - 0x50]
mov eax, esi
sub edx, dword [ebp - 0x38]
call sym._str_add_num
mov edx, 0x15
mov eax, esi
call sym._str_add_byte
cmp bx, word [ebp - 0x42]
ja 0x10013390
mov edx, dword [ebp - 0x50]
mov dword [ebp - 0x34], edi
mov word [ebp - 0x24], bx
mov dword [ebp - 0x38], edx
mov dword [ebp - 0x30], 0
mov dword [ebp - 0x2c], 0
mov dword [ebp - 0x28], esi
jmp 0x100130b4
lea eax, [edi + ebx - 8]
movzx esi, word [ebp - 0x24]
mov ecx, dword [eax]
mov eax, dword [eax + 4]
mov dword [ebp - 0x4c], eax
cmp word [ebp - 0x42], si
je 0x10013106
lea eax, [edi + ebx + 8]
mov dword [ebp - 0x48], 1
mov ebx, dword [eax]
mov edi, dword [eax + 4]
lea eax, [esi + 1]
movzx eax, ax
mov dword [ebp - 0x2c], ebx
mov dword [ebp - 0x30], edi
test byte [edx + eax], 1
jne 0x10012fc9
mov eax, dword [ebp - 0x3c]
mov dword [ebp - 0x48], 0
lea edx, [ebx + eax + 1]
mov eax, edx
shr eax, 0x1f
add eax, edx
sar eax, 1
mov dword [ebp - 0x2c], eax
mov eax, dword [ebp - 0x40]
lea edx, [edi + eax + 1]
mov eax, edx
shr eax, 0x1f
add eax, edx
sar eax, 1
mov dword [ebp - 0x30], eax
mov eax, dword [ebp - 0x3c]
lea ebx, [eax + eax + 1]
mov eax, 0x55555556
lea edi, [ecx + ebx]
add ebx, dword [ebp - 0x2c]
imul edi
mov eax, dword [ebp - 0x40]
sar edi, 0x1f
lea ecx, [eax + eax + 1]
mov eax, 0x55555556
sub edx, edi
mov edi, dword [ebp - 0x4c]
mov esi, edx
add edi, ecx
add ecx, dword [ebp - 0x30]
imul edi
mov eax, edi
sar eax, 0x1f
mov edi, edx
sub edi, eax
mov eax, 0x55555556
imul ebx
mov eax, ebx
sar eax, 0x1f
mov ebx, edx
sub ebx, eax
mov eax, 0x55555556
imul ecx
sar ecx, 0x1f
mov eax, edx
mov edx, esi
sub edx, dword [ebp - 0x34]
sub eax, ecx
mov dword [ebp - 0x3c], eax
mov eax, dword [ebp - 0x28]
call sym._str_add_num
mov eax, dword [ebp - 0x28]
mov ecx, edi
sub ecx, dword [ebp - 0x38]
mov edx, ecx
call sym._str_add_num
mov ecx, ebx
mov eax, dword [ebp - 0x28]
sub ecx, esi
mov edx, ecx
call sym._str_add_num
mov esi, dword [ebp - 0x3c]
mov eax, dword [ebp - 0x28]
mov edx, esi
sub edx, edi
call sym._str_add_num
mov edi, dword [ebp - 0x2c]
mov eax, dword [ebp - 0x28]
mov ecx, edi
sub ecx, ebx
mov edx, ecx
call sym._str_add_num
mov ebx, dword [ebp - 0x30]
mov ecx, ebx
sub ecx, esi
mov esi, dword [ebp - 0x28]
mov edx, ecx
mov eax, esi
call sym._str_add_num
mov eax, esi
mov edx, 8
call sym._str_add_byte
mov eax, dword [ebp - 0x48]
test eax, eax
je 0x10013120
inc word [ebp - 0x24]
mov dword [ebp - 0x38], ebx
mov dword [ebp - 0x34], edi
inc word [ebp - 0x24]
movzx eax, word [ebp - 0x24]
cmp word [ebp - 0x42], ax
jb 0x1001313e
movzx eax, word [ebp - 0x24]
mov edi, dword [ebp - 0x14]
mov edx, dword [ebp - 0x18]
lea ebx, [eax*8]
lea ecx, [edi + ebx]
mov esi, dword [ecx]
mov dword [ebp - 0x3c], esi
mov esi, dword [ecx + 4]
mov dword [ebp - 0x40], esi
test byte [edx + eax], 1
jne 0x10013350
movzx eax, word [ebp - 0x24]
dec eax
movzx eax, ax
test byte [edx + eax], 1
jne 0x10012f60
mov eax, dword [ebp - 0x30]
mov ecx, dword [ebp - 0x2c]
movzx esi, word [ebp - 0x24]
mov dword [ebp - 0x4c], eax
cmp word [ebp - 0x42], si
jne 0x10012f7a
mov eax, dword [ebp - 0x50]
mov dword [ebp - 0x48], 0
mov dword [ebp - 0x30], eax
mov eax, dword [ebp - 0x54]
mov dword [ebp - 0x2c], eax
jmp 0x10012fc9
mov eax, dword [ebp - 0x30]
inc word [ebp - 0x24]
mov dword [ebp - 0x38], eax
mov eax, dword [ebp - 0x2c]
mov dword [ebp - 0x34], eax
movzx eax, word [ebp - 0x24]
cmp word [ebp - 0x42], ax
jae 0x100130b4
mov esi, dword [ebp - 0x28]
mov eax, esi
mov edx, 9
call sym._str_add_byte
inc word [ebp - 0x44]
movzx eax, word [ebp - 0x44]
cmp word [ebp - 0x20], ax
ja 0x10012ee0
mov edx, 0xe
mov eax, esi
call sym._str_add_byte
mov eax, dword [ebp - 0x14]
mov dword [esp + 4], 0
mov edi, dword fs:[0x18]
mov dword [esp + 8], eax
mov eax, dword [edi + 0x30]
mov ebx, dword [sym.imp.kernel32.dll_HeapFree]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
call ebx
mov eax, dword [ebp - 0x1c]
sub esp, 0xc
mov dword [esp + 8], eax
mov dword [esp + 4], 0
mov eax, dword [edi + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
call ebx
mov eax, dword [ebp - 0x18]
mov dword [ebp - 0x28], ebx
sub esp, 0xc
mov dword [esp + 8], eax
mov dword [esp + 4], 0
mov eax, dword [edi + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
call ebx
mov eax, dword [ebp + 0xc]
sub esp, 0xc
mov eax, dword [eax + 8]
mov dword [esp], eax
mov eax, dword [sym.imp.ucrtbase.dll_strlen]
mov dword [ebp - 0x24], eax
call eax
mov ecx, dword [ebp + 0x14]
mov ebx, eax
mov eax, dword [ebp - 0x24]
mov dword [esp], ecx
call eax
mov dword [esp + 4], 0
mov ecx, dword [ebp - 0x5c]
lea eax, [ebx + eax + 0xab]
mov dword [esp + 8], eax
mov eax, dword [edi + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
call ecx
mov ecx, dword [ebp + 0x10]
sub esp, 0xc
mov ebx, eax
mov dword [esp + 8], ecx
mov dword [esp + 4], str.____glyph__04lx_n
mov dword [esp], eax
call sym._sprintf_1
mov dword [esp], ebx
mov eax, dword [ebp - 0x24]
call eax
mov ecx, dword [ebp + 8]
mov dword [esp + 4], ebx
mov dword [esp + 8], eax
mov dword [esp], ecx
call sym._PSDRV_WriteSpool
mov ecx, dword [esi]
mov edx, dword [esi + 4]
mov dword [ebp - 0x30], ecx
mov ecx, dword [ebp + 0x14]
mov dword [esp + 0x10], edx
mov dword [esp + 0xc], ecx
mov ecx, dword [ebp + 0xc]
mov dword [ebp - 0x2c], edx
mov eax, dword [ecx + 8]
mov dword [esp], ebx
mov dword [esp + 4], str.__s_findfont_dup_n_Private_get_begin_n_CharStrings_get_begin_n__s__ld_RD_n
mov dword [esp + 8], eax
call sym._sprintf_1
mov dword [esp], ebx
mov eax, dword [ebp - 0x24]
call eax
mov ecx, dword [ebp + 8]
mov dword [esp + 4], ebx
mov dword [esp + 8], eax
mov dword [esp], ecx
call sym._PSDRV_WriteSpool
mov ecx, dword [ebp - 0x30]
mov edx, dword [ebp - 0x2c]
mov dword [esp + 4], ecx
mov ecx, dword [ebp + 8]
mov dword [esp + 8], edx
mov dword [esp], ecx
call sym._PSDRV_WriteBytes
mov dword [esp], ebx
mov dword [esp + 4], str.ND_nend_end_n
call sym._sprintf_1
mov dword [esp], ebx
mov eax, dword [ebp - 0x24]
call eax
mov dword [esp + 4], ebx
mov dword [esp + 8], eax
mov eax, dword [ebp + 8]
mov dword [esp], eax
call sym._PSDRV_WriteSpool
mov eax, dword [esi]
mov dword [esp + 4], 0
mov dword [esp + 8], eax
mov eax, dword [edi + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
mov eax, dword [ebp - 0x28]
call eax
sub esp, 0xc
mov dword [esp + 8], esi
mov esi, dword [ebp - 0x28]
mov dword [esp + 4], 0
mov eax, dword [edi + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
call esi
mov eax, dword [ebp - 0x58]
mov ecx, dword [ebp + 0x10]
sub esp, 0xc
mov eax, dword [eax + 4]
mov dword [eax + ecx*4], 1
mov dword [esp + 8], ebx
mov dword [esp + 4], 0
mov eax, dword [edi + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
call esi
mov eax, 1
sub esp, 0xc
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret
mov edi, dword [ebp - 0x28]
mov esi, dword [ebp - 0x3c]
mov eax, edi
mov edx, esi
sub edx, dword [ebp - 0x34]
call sym._str_add_num
mov ebx, dword [ebp - 0x40]
mov eax, edi
mov edx, ebx
sub edx, dword [ebp - 0x38]
call sym._str_add_num
mov edx, 5
mov eax, edi
call sym._str_add_byte
mov dword [ebp - 0x38], ebx
mov dword [ebp - 0x34], esi
jmp 0x100130a2
mov eax, dword [ebp - 0x50]
mov word [ebp - 0x24], bx
mov dword [ebp - 0x38], eax
mov eax, dword [ebp - 0x54]
mov dword [ebp - 0x34], eax
jmp 0x10013141
mov eax, dword [ebp + 0x10]
mov esi, dword [ebp - 0x58]
shr eax, 7
inc eax
mov ecx, eax
shl eax, 9
shl ecx, 7
mov dword [esi], ecx
mov dword [esp + 0xc], eax
mov dword [esp + 8], edx
mov dword [esp + 4], 8
mov ecx, dword fs:[0x18]
mov eax, dword [ecx + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_HeapReAlloc]
mov dword [esi + 4], eax
sub esp, 0x10
jmp 0x10012de6
mov eax, dword [ebp + 0x14]
mov dword [esp + 0xc], 0x1002d1d7
mov dword [esp + 8], str.T1_download_glyph
mov dword [esp + 0x14], eax
mov eax, dword [ebp + 0x10]
mov dword [esp + 4], 0x100258c8
mov dword [esp + 0x10], eax
mov dword [esp], 3
call sym._wine_dbg_log.constprop.0_18
jmp 0x10012db6
mov dword [esp + 8], 0x22a
mov dword [esp + 4], str..._src_wine_dlls_wineps.drv_type1.c
mov dword [esp], str.pdl__type__Type1
call dword [sym.imp.ucrtbase.dll__assert]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop