Function at 0x5c9ca0
Capabilities:
Link many functions at runtime

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0x15c
mov eax, dword [0x6ee2dc]
mov dword [ebp - 4], eax
push esi
push edi
mov dword [ebp - 0x15c], ecx
cmp dword [ebp + 8], 0
jne 0x5c9cda
push str.pDevice_pointer_is_invalid
push 0
call fcn.0059d130
add esp, 8
mov eax, 0x8876086c
jmp 0x5cab80
cmp dword [ebp + 0xc], 0
jne 0x5c9cf9
push str.pDesc_pointer_is_invalid
push 0
call fcn.0059d130
add esp, 8
mov eax, 0x8876086c
jmp 0x5cab80
mov eax, dword [ebp - 0x15c]
mov ecx, dword [ebp + 8]
mov dword [eax + 8], ecx
mov edx, dword [ebp - 0x15c]
mov eax, dword [edx + 8]
mov ecx, dword [ebp - 0x15c]
mov edx, dword [ecx + 8]
mov eax, dword [eax]
push edx
call dword [eax + 4]
cmp dword [0xa3d93c], 0
jne 0x5ca03b
mov dword [0xa3d93c], 1
call fcn.0059c050
cmp dword [0xa3d880], 0
je 0x5c9dcf
push 0x67a1f0
call dword [sym.imp.kernel32.dll_GetModuleHandleA]
mov dword [ebp - 0x4c], eax
cmp dword [ebp - 0x4c], 0
jne 0x5c9d6e
push 0x67a1f0
call dword [sym.imp.kernel32.dll_LoadLibraryA]
mov dword [ebp - 0x4c], eax
cmp dword [ebp - 0x4c], 0
je 0x5c9dcf
push str.GetCharABCWidthsI
mov ecx, dword [ebp - 0x4c]
push ecx
call dword [sym.imp.kernel32.dll_GetProcAddress]
mov dword [0xa3d940], eax
cmp dword [0xa3d940], 0
je 0x5c9dc5
push str.GetCharWidthI
mov edx, dword [ebp - 0x4c]
push edx
call dword [sym.imp.kernel32.dll_GetProcAddress]
mov dword [0xa3d944], eax
cmp dword [0xa3d944], 0
je 0x5c9dc5
push str.GetFontUnicodeRanges
mov eax, dword [ebp - 0x4c]
push eax
call dword [sym.imp.kernel32.dll_GetProcAddress]
mov dword [0xa3d948], eax
cmp dword [0xa3d948], 0
jne 0x5c9dcf
mov eax, 0x8007000e
jmp 0x5cab80
mov dword [ebp - 0x50], 0
cmp dword [ebp - 0x50], 0
jne 0x5ca03b
push str.usp10.dll
call dword [sym.imp.kernel32.dll_GetModuleHandleA]
mov dword [ebp - 0x4c], eax
cmp dword [ebp - 0x4c], 0
jne 0x5c9e0c
push str.usp10.dll
call dword [sym.imp.kernel32.dll_LoadLibraryA]
mov dword [ebp - 0x4c], eax
cmp dword [ebp - 0x4c], 0
je 0x5ca03b
mov dword [0xa3d94c], 1
push str.ScriptItemize
mov ecx, dword [ebp - 0x4c]
push ecx
call dword [sym.imp.kernel32.dll_GetProcAddress]
mov dword [0xa3d950], eax
cmp dword [0xa3d950], 0
je 0x5ca012
push str.ScriptShape
mov edx, dword [ebp - 0x4c]
push edx
call dword [sym.imp.kernel32.dll_GetProcAddress]
mov dword [0xa3d954], eax
cmp dword [0xa3d954], 0
je 0x5ca012
push str.ScriptPlace
mov eax, dword [ebp - 0x4c]
push eax
call dword [sym.imp.kernel32.dll_GetProcAddress]
mov dword [0xa3d958], eax
cmp dword [0xa3d958], 0
je 0x5ca012
push str.ScriptBreak
mov ecx, dword [ebp - 0x4c]
push ecx
call dword [sym.imp.kernel32.dll_GetProcAddress]
mov dword [0xa3d95c], eax
cmp dword [0xa3d95c], 0
je 0x5ca012
push str.ScriptJustify
mov edx, dword [ebp - 0x4c]
push edx
call dword [sym.imp.kernel32.dll_GetProcAddress]
mov dword [0xa3d960], eax
cmp dword [0xa3d960], 0
je 0x5ca012
push str.ScriptTextOut
mov eax, dword [ebp - 0x4c]
push eax
call dword [sym.imp.kernel32.dll_GetProcAddress]
mov dword [0xa3d964], eax
cmp dword [0xa3d964], 0
je 0x5ca012
push str.ScriptGetProperties
mov ecx, dword [ebp - 0x4c]
push ecx
call dword [sym.imp.kernel32.dll_GetProcAddress]
mov dword [0xa3d968], eax
cmp dword [0xa3d968], 0
je 0x5ca012
push str.ScriptFreeCache
mov edx, dword [ebp - 0x4c]
push edx
call dword [sym.imp.kernel32.dll_GetProcAddress]
mov dword [0xa3d96c], eax
cmp dword [0xa3d96c], 0
je 0x5ca012
push str.ScriptRecordDigitSubstitution
mov eax, dword [ebp - 0x4c]
push eax
call dword [sym.imp.kernel32.dll_GetProcAddress]
mov dword [0xa3d970], eax
cmp dword [0xa3d970], 0
je 0x5ca012
push str.ScriptApplyDigitSubstitution
mov ecx, dword [ebp - 0x4c]
push ecx
call dword [sym.imp.kernel32.dll_GetProcAddress]
mov dword [0xa3d974], eax
cmp dword [0xa3d974], 0
je 0x5ca012
push str.ScriptGetFontProperties
mov edx, dword [ebp - 0x4c]
push edx
call dword [sym.imp.kernel32.dll_GetProcAddress]
mov dword [0xa3d978], eax
cmp dword [0xa3d978], 0
je 0x5ca012
push str.ScriptStringAnalyse
mov eax, dword [ebp - 0x4c]
push eax
call dword [sym.imp.kernel32.dll_GetProcAddress]
mov dword [0xa3d97c], eax
cmp dword [0xa3d97c], 0
je 0x5ca012
push str.ScriptStringOut
mov ecx, dword [ebp - 0x4c]
push ecx
call dword [sym.imp.kernel32.dll_GetProcAddress]
mov dword [0xa3d980], eax
cmp dword [0xa3d980], 0
je 0x5ca012
push str.ScriptStringFree
mov edx, dword [ebp - 0x4c]
push edx
call dword [sym.imp.kernel32.dll_GetProcAddress]
mov dword [0xa3d984], eax
cmp dword [0xa3d984], 0
je 0x5ca012
push str.ScriptStringCPtoX
mov eax, dword [ebp - 0x4c]
push eax
call dword [sym.imp.kernel32.dll_GetProcAddress]
mov dword [0xa3d988], eax
cmp dword [0xa3d988], 0
je 0x5ca012
push str.ScriptString_pSize
mov ecx, dword [ebp - 0x4c]
push ecx
call dword [sym.imp.kernel32.dll_GetProcAddress]
mov dword [0xa3d98c], eax
cmp dword [0xa3d98c], 0
jne 0x5ca01c
mov eax, 0x8007000e
jmp 0x5cab80
lea edx, [ebp - 0x54]
push edx
push 0xa3d99c
call dword [0xa3d968]
push 0xa3d990
push 0x400
call dword [0xa3d970]
push 0
call dword [sym.imp.gdi32.dll_CreateCompatibleDC]
mov ecx, dword [ebp - 0x15c]
mov dword [ecx + 0x10], eax
mov edx, dword [ebp - 0x15c]
cmp dword [edx + 0x10], 0
jne 0x5ca062
mov eax, 0x8007000e
jmp 0x5cab80
push 1
mov eax, dword [ebp - 0x15c]
mov ecx, dword [eax + 0x10]
push ecx
call dword [sym.imp.gdi32.dll_SetMapMode]
cmp dword [0xa3d880], 0
jne 0x5ca08f
push 1
mov edx, dword [ebp - 0x15c]
mov eax, dword [edx + 0x10]
push eax
call dword [sym.imp.gdi32.dll_SetTextAlign]
cmp dword [ebp + 0x10], 0
je 0x5ca0f2
cmp dword [0xa3d880], 0
jne 0x5ca0f2
mov ecx, dword [ebp + 0xc]
mov edx, dword [ecx]
mov dword [ebp - 0x3c], edx
mov eax, dword [ecx + 4]
mov dword [ebp - 0x38], eax
mov edx, dword [ecx + 8]
mov dword [ebp - 0x34], edx
mov eax, dword [ecx + 0xc]
mov dword [ebp - 0x30], eax
mov edx, dword [ecx + 0x10]
mov dword [ebp - 0x2c], edx
mov eax, dword [ecx + 0x14]
mov dword [ebp - 0x28], eax
push 0
push 0
push 0x20
lea ecx, [ebp - 0x24]
push ecx
push 0xffffffffffffffff
mov edx, dword [ebp + 0xc]
add edx, 0x18
push edx
push 0
push 0
call dword [sym.imp.kernel32.dll_WideCharToMultiByte]
mov byte [ebp - 5], 0
lea eax, [ebp - 0x3c]
mov dword [ebp + 0xc], eax
mov dword [ebp + 0x10], 0
cmp dword [ebp + 0x10], 0
je 0x5ca1e2
mov ecx, 0x17
xor eax, eax
lea edi, [ebp - 0xb8]
rep stosd dword es:[edi], eax
mov ecx, dword [ebp + 0xc]
mov dword [ebp - 0x58], ecx
mov edx, dword [ebp - 0x58]
mov eax, dword [edx]
mov dword [ebp - 0xb8], eax
mov ecx, dword [ebp - 0x58]
mov edx, dword [ecx + 4]
mov dword [ebp - 0xb4], edx
mov eax, dword [ebp - 0x58]
mov ecx, dword [eax + 8]
mov dword [ebp - 0xa8], ecx
mov edx, dword [ebp - 0x58]
mov al, byte [edx + 0x10]
mov byte [ebp - 0xa4], al
mov ecx, dword [ebp - 0x58]
mov dl, byte [ecx + 0x14]
mov byte [ebp - 0xa1], dl
mov eax, dword [ebp - 0x58]
mov cl, byte [eax + 0x15]
mov byte [ebp - 0xa0], cl
mov edx, dword [ebp - 0x58]
mov al, byte [edx + 0x16]
mov byte [ebp - 0x9e], al
mov ecx, dword [ebp - 0x58]
mov dl, byte [ecx + 0x17]
mov byte [ebp - 0x9d], dl
mov esi, dword [ebp - 0x58]
add esi, 0x18
mov ecx, 0x10
lea edi, [ebp - 0x9c]
rep movsd dword es:[edi], dword [esi]
movzx eax, byte [ebp - 0x9e]
and eax, 7
jne 0x5ca19f
movzx ecx, byte [ebp - 0x9e]
or ecx, 4
mov byte [ebp - 0x9e], cl
lea edx, [ebp - 0xb8]
push edx
call dword [sym.imp.gdi32.dll_CreateFontIndirectW]
mov ecx, dword [ebp - 0x15c]
mov dword [ecx + 0x14], eax
mov edx, dword [ebp - 0x15c]
cmp dword [edx + 0x14], 0
jne 0x5ca1cb
mov eax, 0x8007000e
jmp 0x5cab80
mov eax, dword [ebp - 0x15c]
mov ecx, dword [ebp - 0x58]
mov edx, dword [ecx + 0xc]
mov dword [eax + 0x4fc], edx
jmp 0x5ca2e4
mov ecx, 0xf
xor eax, eax
lea edi, [ebp - 0xf8]
rep stosd dword es:[edi], eax
mov eax, dword [ebp + 0xc]
mov dword [ebp - 0xbc], eax
mov ecx, dword [ebp - 0xbc]
mov edx, dword [ecx]
mov dword [ebp - 0xf8], edx
mov eax, dword [ebp - 0xbc]
mov ecx, dword [eax + 4]
mov dword [ebp - 0xf4], ecx
mov edx, dword [ebp - 0xbc]
mov eax, dword [edx + 8]
mov dword [ebp - 0xe8], eax
mov ecx, dword [ebp - 0xbc]
mov dl, byte [ecx + 0x10]
mov byte [ebp - 0xe4], dl
mov eax, dword [ebp - 0xbc]
mov cl, byte [eax + 0x14]
mov byte [ebp - 0xe1], cl
mov edx, dword [ebp - 0xbc]
mov al, byte [edx + 0x15]
mov byte [ebp - 0xe0], al
mov ecx, dword [ebp - 0xbc]
mov dl, byte [ecx + 0x16]
mov byte [ebp - 0xde], dl
mov eax, dword [ebp - 0xbc]
mov cl, byte [eax + 0x17]
mov byte [ebp - 0xdd], cl
mov esi, dword [ebp - 0xbc]
add esi, 0x18
mov ecx, 8
lea edi, [ebp - 0xdc]
rep movsd dword es:[edi], dword [esi]
movzx edx, byte [ebp - 0xde]
and edx, 7
jne 0x5ca2a3
movzx eax, byte [ebp - 0xde]
or eax, 4
mov byte [ebp - 0xde], al
lea ecx, [ebp - 0xf8]
push ecx
call dword [sym.imp.gdi32.dll_CreateFontIndirectA]
mov edx, dword [ebp - 0x15c]
mov dword [edx + 0x14], eax
mov eax, dword [ebp - 0x15c]
cmp dword [eax + 0x14], 0
jne 0x5ca2cf
mov eax, 0x8007000e
jmp 0x5cab80
mov ecx, dword [ebp - 0x15c]
mov edx, dword [ebp - 0xbc]
mov eax, dword [edx + 0xc]
mov dword [ecx + 0x4fc], eax
mov ecx, dword [ebp - 0x15c]
mov edx, dword [ecx + 0x14]
push edx
mov eax, dword [ebp - 0x15c]
mov ecx, dword [eax + 0x10]
push ecx
call dword [sym.imp.gdi32.dll_SelectObject]
mov edx, dword [ebp - 0x15c]
mov dword [edx + 0x18], eax
mov eax, dword [ebp - 0x15c]
mov ecx, dword [eax + 0x10]
push ecx
call dword [sym.imp.gdi32.dll_GetFontLanguageInfo]
mov edx, dword [ebp - 0x15c]
mov dword [edx + 0x6c], eax
cmp dword [0xa3d880], 0
je 0x5ca348
mov eax, dword [ebp - 0x15c]
add eax, 0x30
push eax
mov ecx, dword [ebp - 0x15c]
mov edx, dword [ecx + 0x10]
push edx
call dword [sym.imp.gdi32.dll_GetTextMetricsW]
jmp 0x5ca3d7
lea eax, [ebp - 0x130]
push eax
mov ecx, dword [ebp - 0x15c]
mov edx, dword [ecx + 0x10]
push edx
call dword [sym.imp.gdi32.dll_GetTextMetricsA]
mov edi, dword [ebp - 0x15c]
add edi, 0x30
mov ecx, 0xb
lea esi, [ebp - 0x130]
rep movsd dword es:[edi], dword [esi]
mov eax, dword [ebp - 0x15c]
add eax, 0x64
mov ecx, dword [ebp - 0x100]
mov dword [eax], ecx
mov dl, byte [ebp - 0xfc]
mov byte [eax + 4], dl
movzx ax, byte [ebp - 0x104]
mov ecx, dword [ebp - 0x15c]
mov word [ecx + 0x5c], ax
movzx dx, byte [ebp - 0x103]
mov eax, dword [ebp - 0x15c]
mov word [eax + 0x5e], dx
movzx cx, byte [ebp - 0x102]
mov edx, dword [ebp - 0x15c]
mov word [edx + 0x60], cx
movzx ax, byte [ebp - 0x101]
mov ecx, dword [ebp - 0x15c]
mov word [ecx + 0x62], ax
mov edx, dword [ebp - 0x15c]
mov eax, dword [ebp - 0x15c]
mov ecx, dword [eax + 0x48]
mov dword [edx + 0x24], ecx
mov edx, dword [ebp - 0x15c]
mov eax, dword [ebp - 0x15c]
mov ecx, dword [eax + 0x30]
mov dword [edx + 0x28], ecx
mov edx, dword [ebp - 0x15c]
add edx, 0x2c
push edx
mov eax, dword [ebp - 0x15c]
add eax, 0x24
push eax
mov ecx, dword [ebp - 0x15c]
call fcn.005cb500
mov ecx, dword [ebp - 0x15c]
mov dword [ecx + 0x1c], eax
mov edx, dword [ebp - 0x15c]
cmp dword [edx + 0x1c], 0
jne 0x5ca439
mov eax, 0x8007000e
jmp 0x5cab80
push 2
mov eax, dword [ebp - 0x15c]
mov ecx, dword [eax + 0x10]
push ecx
call dword [sym.imp.gdi32.dll_SetBkMode]
push 0
mov edx, dword [ebp - 0x15c]
mov eax, dword [edx + 0x10]
push eax
call dword [sym.imp.gdi32.dll_SetBkColor]
push 0xffffff
mov ecx, dword [ebp - 0x15c]
mov edx, dword [ecx + 0x10]
push edx
call dword [sym.imp.gdi32.dll_SetTextColor]
mov eax, dword [ebp - 0x15c]
mov ecx, dword [eax + 0x1c]
push ecx
mov edx, dword [ebp - 0x15c]
mov eax, dword [edx + 0x10]
push eax
call dword [sym.imp.gdi32.dll_SelectObject]
mov ecx, dword [ebp - 0x15c]
mov dword [ecx + 0x20], eax
mov edx, dword [ebp - 0x15c]
mov dword [edx + 0x8c], 0
mov ecx, 0x100
xor eax, eax
mov edi, dword [ebp - 0x15c]
add edi, 0x90
rep stosd dword es:[edi], eax
mov eax, dword [ebp - 0x15c]
mov dword [eax + 0x494], 0x15
mov ecx, dword [ebp - 0x15c]
mov dword [ecx + 0x498], 0
mov edx, dword [ebp - 0x15c]
mov dword [edx + 0x4a4], 0
mov eax, dword [ebp - 0x15c]
mov dword [eax + 0x4c0], 0
mov ecx, dword [ebp - 0x15c]
mov dword [ecx + 0x4ac], 1
mov edx, dword [ebp - 0x15c]
mov dword [edx + 0x4b4], 1
mov eax, dword [ebp - 0x15c]
mov ecx, dword [ebp - 0x15c]
mov edx, dword [eax + 0x4ac]
cmp edx, dword [ecx + 0x30]
jae 0x5ca568
mov eax, dword [ebp - 0x15c]
mov ecx, dword [eax + 0x4ac]
shl ecx, 1
mov edx, dword [ebp - 0x15c]
mov dword [edx + 0x4ac], ecx
mov eax, dword [ebp - 0x15c]
mov ecx, dword [eax + 0x4b4]
add ecx, 1
mov edx, dword [ebp - 0x15c]
mov dword [edx + 0x4b4], ecx
jmp 0x5ca51a
mov eax, dword [ebp - 0x15c]
mov ecx, dword [ebp - 0x15c]
mov edx, dword [ecx + 0x4ac]
mov dword [eax + 0x4c8], edx
mov eax, dword [ebp - 0x15c]
mov ecx, dword [ebp - 0x15c]
mov edx, dword [ecx + 0x4b4]
mov dword [eax + 0x4d0], edx
mov eax, dword [ebp - 0x15c]
mov ecx, dword [ebp - 0x15c]
mov edx, dword [eax + 0x4ac]
cmp edx, dword [ecx + 0x44]
jae 0x5ca5e6
mov eax, dword [ebp - 0x15c]
mov ecx, dword [eax + 0x4ac]
shl ecx, 1
mov edx, dword [ebp - 0x15c]
mov dword [edx + 0x4ac], ecx
mov eax, dword [ebp - 0x15c]
mov ecx, dword [eax + 0x4b4]
add ecx, 1
mov edx, dword [ebp - 0x15c]
mov dword [edx + 0x4b4], ecx
jmp 0x5ca598
mov eax, dword [ebp - 0x15c]
mov ecx, dword [ebp - 0x15c]
mov edx, dword [eax + 0x4c8]
cmp edx, dword [ecx + 0x48]
jae 0x5ca634
mov eax, dword [ebp - 0x15c]
mov ecx, dword [eax + 0x4c8]
shl ecx, 1
mov edx, dword [ebp - 0x15c]
mov dword [edx + 0x4c8], ecx
mov eax, dword [ebp - 0x15c]
mov ecx, dword [eax + 0x4d0]
add ecx, 1
mov edx, dword [ebp - 0x15c]
mov dword [edx + 0x4d0], ecx
jmp 0x5ca5e6
mov eax, dword [ebp - 0x15c]
mov ecx, dword [ebp - 0x15c]
mov edx, dword [eax + 0x4ac]
imul edx, dword [ecx + 0x4ac]
mov eax, dword [ebp - 0x15c]
mov dword [eax + 0x4b0], edx
mov ecx, dword [ebp - 0x15c]
mov edx, dword [ebp - 0x15c]
mov eax, dword [ecx + 0x4c8]
imul eax, dword [edx + 0x4c8]
mov ecx, dword [ebp - 0x15c]
mov dword [ecx + 0x4cc], eax
mov edx, dword [ebp - 0x15c]
cmp dword [edx + 0x4fc], 0
je 0x5ca6f1
mov eax, dword [ebp - 0x15c]
mov ecx, dword [ebp - 0x15c]
mov edx, dword [eax + 0x4b4]
cmp edx, dword [ecx + 0x4fc]
jbe 0x5ca6bf
mov eax, dword [ebp - 0x15c]
mov ecx, dword [ebp - 0x15c]
mov edx, dword [ecx + 0x4fc]
mov dword [eax + 0x4b4], edx
mov eax, dword [ebp - 0x15c]
mov ecx, dword [ebp - 0x15c]
mov edx, dword [eax + 0x4d0]
cmp edx, dword [ecx + 0x4fc]
jbe 0x5ca6f1
mov eax, dword [ebp - 0x15c]
mov ecx, dword [ebp - 0x15c]
mov edx, dword [ecx + 0x4fc]
mov dword [eax + 0x4d0], edx
mov eax, dword [ebp - 0x15c]
movzx ecx, word [eax + 0x5e]
mov edx, dword [ebp - 0x15c]
movzx eax, word [edx + 0x5c]
sub ecx, eax
add ecx, 1
mov dword [ebp - 0x40], ecx
cmp dword [ebp - 0x40], 0x80
jbe 0x5ca71d
mov dword [ebp - 0x40], 0x80
mov ecx, dword [ebp - 0x15c]
mov edx, dword [ebp - 0x15c]
mov eax, dword [edx + 0x4ac]
mov dword [ecx + 0x4b8], eax
mov ecx, dword [ebp - 0x15c]
mov edx, dword [ebp - 0x15c]
mov eax, dword [edx + 0x4c8]
mov dword [ecx + 0x4d4], eax
mov ecx, dword [ebp - 0x15c]
mov edx, dword [ecx + 0x4b0]
imul edx, dword [ebp - 0x40]
mov eax, dword [ebp - 0x15c]
mov ecx, dword [ebp - 0x15c]
mov eax, dword [eax + 0x4b8]
imul eax, dword [ecx + 0x4b8]
cmp edx, eax
jbe 0x5ca7a8
mov ecx, dword [ebp - 0x15c]
cmp dword [ecx + 0x4b8], 0x100
jae 0x5ca7a8
mov edx, dword [ebp - 0x15c]
mov eax, dword [edx + 0x4b8]
shl eax, 1
mov ecx, dword [ebp - 0x15c]
mov dword [ecx + 0x4b8], eax
jmp 0x5ca74d
mov edx, dword [ebp - 0x15c]
mov eax, dword [ebp - 0x15c]
mov ecx, dword [edx + 0x4d4]
cmp ecx, dword [eax + 0x4b8]
jae 0x5ca7da
mov edx, dword [ebp - 0x15c]
mov eax, dword [ebp - 0x15c]
mov ecx, dword [eax + 0x4b8]
mov dword [edx + 0x4d4], ecx
mov edx, dword [ebp - 0x15c]
mov eax, dword [ebp - 0x15c]
mov ecx, dword [edx + 0x4b8]
imul ecx, dword [eax + 0x4b8]
mov edx, dword [ebp - 0x15c]
mov dword [edx + 0x4bc], ecx
mov eax, dword [ebp - 0x15c]
mov ecx, dword [ebp - 0x15c]
mov edx, dword [eax + 0x4d4]
imul edx, dword [ecx + 0x4d4]
mov eax, dword [ebp - 0x15c]
mov dword [eax + 0x4d8], edx
mov ecx, dword [ebp - 0x15c]
mov edx, dword [ebp - 0x15c]
mov eax, dword [edx + 0x4bc]
mov dword [ecx + 0x4a8], eax
mov ecx, dword [ebp - 0x15c]
mov edx, dword [ebp - 0x15c]
mov eax, dword [edx + 0x4d8]
mov dword [ecx + 0x4c4], eax
push 1
mov ecx, dword [ebp - 0x15c]
add ecx, 0x494
push ecx
push 0
mov edx, dword [ebp - 0x15c]
add edx, 0x4b4
push edx
mov eax, dword [ebp - 0x15c]
add eax, 0x4b8
push eax
mov ecx, dword [ebp - 0x15c]
add ecx, 0x4b8
push ecx
mov edx, dword [ebp - 0x15c]
mov eax, dword [edx + 8]
push eax
call fcn.005995c0
mov dword [ebp - 0x44], eax
cmp dword [ebp - 0x44], 0
jge 0x5ca8ab
mov eax, dword [ebp - 0x44]
jmp 0x5cab80
push 1
mov ecx, dword [ebp - 0x15c]
add ecx, 0x494
push ecx
push 0
mov edx, dword [ebp - 0x15c]
add edx, 0x4d0
push edx
mov eax, dword [ebp - 0x15c]
add eax, 0x4d4
push eax
mov ecx, dword [ebp - 0x15c]
add ecx, 0x4d4
push ecx
mov edx, dword [ebp - 0x15c]
mov eax, dword [edx + 8]
push eax
call fcn.005995c0
mov dword [ebp - 0x44], eax
cmp dword [ebp - 0x44], 0
jge 0x5ca902
mov eax, dword [ebp - 0x44]
jmp 0x5cab80
mov ecx, dword [ebp - 0x15c]
cmp dword [ecx + 0x494], 0x15
je 0x5ca92a
push str.Device_does_not_support_A8R8G8B8_textures
push 0
call fcn.0059d130
add esp, 8
mov eax, 0x88760b59
jmp 0x5cab80
mov edx, dword [ebp - 0x15c]
mov eax, dword [ebp - 0x15c]
mov ecx, dword [edx + 0x4b8]
cmp ecx, dword [eax + 0x4ac]
jb 0x5ca95e
mov edx, dword [ebp - 0x15c]
mov eax, dword [ebp - 0x15c]
mov ecx, dword [edx + 0x4d4]
cmp ecx, dword [eax + 0x4c8]
jae 0x5ca977
push str.Font_exceeds_maximum_texture_size
push 0
call fcn.0059d130
add esp, 8
mov eax, 0x88760b59
jmp 0x5cab80
mov esi, dword [ebp - 0x15c]
add esi, 0x4a4
mov edi, dword [ebp - 0x15c]
add edi, 0x4dc
mov ecx, 7
rep movsd dword es:[edi], dword [esi]
mov edx, dword [ebp - 0x15c]
cmp dword [edx + 0x4d0], 1
jbe 0x5ca9e8
mov eax, dword [ebp - 0x15c]
mov ecx, dword [eax + 0x4cc]
shl ecx, 3
push ecx
call fcn.0062fffc
add esp, 4
mov dword [ebp - 0x158], eax
mov edx, dword [ebp - 0x15c]
mov eax, dword [ebp - 0x158]
mov dword [edx + 0x4f8], eax
cmp dword [ebp - 0x158], 0
jne 0x5ca9e8
mov eax, 0x8007000e
jmp 0x5cab80
cmp dword [0xa3d94c], 0
je 0x5caa4e
xor ecx, ecx
mov edx, dword [ebp - 0x15c]
add edx, 0x74
mov dword [edx], ecx
mov dword [edx + 4], ecx
mov dword [edx + 8], ecx
mov dword [edx + 0xc], ecx
mov eax, dword [ebp - 0x15c]
mov dword [eax + 0x74], 0x10
mov ecx, dword [ebp - 0x15c]
add ecx, 0x74
push ecx
mov edx, dword [ebp - 0x15c]
add edx, 0x70
push edx
mov eax, dword [ebp - 0x15c]
mov ecx, dword [eax + 0x10]
push ecx
call dword [0xa3d978]
mov dword [ebp - 0x44], eax
cmp dword [ebp - 0x44], 0
jge 0x5caa49
mov eax, dword [ebp - 0x44]
jmp 0x5cab80
jmp 0x5cab7e
xor edx, edx
mov dword [ebp - 0x154], edx
mov dword [ebp - 0x150], edx
mov dword [ebp - 0x14c], edx
mov dword [ebp - 0x148], edx
mov dword [ebp - 0x144], edx
mov dword [ebp - 0x140], edx
mov dword [ebp - 0x13c], edx
mov dword [ebp - 0x138], edx
mov dword [ebp - 0x134], edx
mov dword [ebp - 0x154], 0x24
mov eax, dword [ebp - 0x15c]
add eax, 0x7a
mov dword [ebp - 0x13c], eax
mov dword [ebp - 0x138], 1
cmp dword [0xa3d880], 0
je 0x5caadb
push 0
lea ecx, [ebp - 0x154]
push ecx
push 0
push 1
mov edx, dword [ebp - 0x15c]
add edx, 0x60
push edx
mov eax, dword [ebp - 0x15c]
mov ecx, dword [eax + 0x10]
push ecx
call dword [sym.imp.gdi32.dll_GetCharacterPlacementW]
jmp 0x5cab02
push 0
lea edx, [ebp - 0x154]
push edx
push 0
push 1
mov eax, dword [ebp - 0x15c]
add eax, 0x60
push eax
mov ecx, dword [ebp - 0x15c]
mov edx, dword [ecx + 0x10]
push edx
call dword [sym.imp.gdi32.dll_GetCharacterPlacementA]
mov dword [ebp - 0x154], 0x24
mov eax, dword [ebp - 0x15c]
add eax, 0x78
mov dword [ebp - 0x13c], eax
mov dword [ebp - 0x138], 1
cmp dword [0xa3d880], 0
je 0x5cab57
push 0
lea ecx, [ebp - 0x154]
push ecx
push 0
push 1
mov edx, dword [ebp - 0x15c]
add edx, 0x62
push edx
mov eax, dword [ebp - 0x15c]
mov ecx, dword [eax + 0x10]
push ecx
call dword [sym.imp.gdi32.dll_GetCharacterPlacementW]
jmp 0x5cab7e
push 0
lea edx, [ebp - 0x154]
push edx
push 0
push 1
mov eax, dword [ebp - 0x15c]
add eax, 0x62
push eax
mov ecx, dword [ebp - 0x15c]
mov edx, dword [ecx + 0x10]
push edx
call dword [sym.imp.gdi32.dll_GetCharacterPlacementA]
xor eax, eax
mov ecx, dword [ebp - 4]
call fcn.0062fcdf
pop edi
pop esi
mov esp, ebp
pop ebp
ret 0xc