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

Disassembly:
push ebp
mov ebp, esp
mov eax, 0x12c4
call fcn.004593f0
mov eax, dword [0x490540]
xor eax, ebp
mov dword [ebp - 4], eax
mov ecx, dword [0x491b20]
mov eax, dword [ebp + 8]
mov edx, dword [ebp + 0xc]
push ebx
push esi
mov esi, dword [ebp + 0x10]
xor ebx, ebx
mov dword [ebp - 0x12a4], ecx
mov ecx, dword [ebp + 0x14]
mov dword [ebp - 0x1264], eax
mov dword [ebp - 0x1278], edx
push edi
mov edi, dword [ebp + 0x1c]
mov dword [ebp - 0x1260], edi
cmp ecx, 0x80000000
jne 0x43f24b
mov ebx, 1
jmp 0x43f30b
mov eax, dword [eax + 0x44]
test eax, eax
jns 0x43f27b
push 0
push str.Error
push str.Not_User_Font_ID__font_set_
push 0
call fcn.00439f60
add esp, 0x10
xor eax, eax
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00456922
mov esp, ebp
pop ebp
ret
mov dword [edx + 0x14], eax
mov eax, dword [ebp + 0x18]
mov dword [edx + 0x1c], eax
mov eax, dword [ebp - 0x12a4]
mov dword [edx + 0x18], ecx
movdqu xmm0, xmmword [esi]
movdqu xmmword [edx + 4], xmm0
test byte [eax + 0xd8d0ec], 8
je 0x43f2a6
mov ebx, 1
jmp 0x43f2fb
mov eax, dword [edx]
test eax, eax
jne 0x43f2b1
lea ebx, [eax + 1]
jmp 0x43f2fb
mov ecx, dword [ebp - 0x1264]
add ecx, 0xb8
lea ecx, [ecx]
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x43f2e6
test dx, dx
je 0x43f2e2
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x43f2e6
add eax, 4
add ecx, 4
test dx, dx
jne 0x43f2c0
xor eax, eax
jmp 0x43f2eb
sbb eax, eax
or eax, 1
mov edx, dword [ebp - 0x1278]
test eax, eax
mov eax, 1
cmovne ebx, eax
mov eax, dword [ebp - 0x1264]
add eax, 0xb8
mov dword [edx + 0x20], edi
mov dword [edx], eax
mov eax, dword [esi]
cmp eax, dword [edi + 0x78]
jne 0x43f330
mov eax, dword [esi + 4]
cmp eax, dword [edi + 0x7c]
jne 0x43f330
mov eax, dword [esi + 8]
cmp eax, dword [edi + 0x80]
jne 0x43f330
mov eax, dword [esi + 0xc]
cmp eax, dword [edi + 0x84]
je 0x43f3a5
movdqu xmm0, xmmword [esi]
lea eax, [edi + 8]
mov ecx, 0x1c
movd xmm1, dword [edi + 0x88]
mov esi, 0x487da0
movd xmm3, dword [edi + 0x8c]
movdqu xmmword [edi + 0x78], xmm0
movd xmm0, dword [edi + 0x78]
movd xmm2, dword [edi + 0x7c]
mov edi, eax
cvtdq2ps xmm0, xmm0
cvtdq2ps xmm2, xmm2
cvtdq2ps xmm1, xmm1
cvtdq2ps xmm3, xmm3
rep movsd dword es:[edi], dword [esi]
mov edi, dword [ebp - 0x1260]
addss xmm1, xmm0
addss xmm3, xmm2
movss dword [eax + 0x1c], xmm0
movss dword [eax], xmm0
movss dword [eax + 0x58], xmm2
movss dword [eax + 4], xmm2
movss dword [eax + 0x54], xmm1
movss dword [eax + 0x38], xmm1
movss dword [eax + 0x3c], xmm3
movss dword [eax + 0x20], xmm3
xor ecx, ecx
test ebx, ebx
mov ebx, dword [ebp + 0x18]
jne 0x43f3cb
cmp ebx, dword [edi + 0x90]
jne 0x43f3cb
mov eax, dword [ebp - 0x1264]
mov eax, dword [eax + 0x44]
cmp eax, dword [edi + 0x94]
je 0x43fbc6
mov esi, dword [sym.imp.GDI32.dll_GetTextExtentPoint32W]
lea eax, [ebp - 0x12ac]
push eax
push 1
lea eax, [ebp - 0x204]
mov dword [ebp - 0x204], 0x20
push eax
mov eax, dword [0x491b20]
mov dword [ebp - 0x1298], 1
push dword [eax + 0x15bdfc8]
call esi
lea eax, [ebp - 0x12ac]
mov dword [ebp - 0x204], 0x3000
push eax
push 1
lea eax, [ebp - 0x204]
push eax
mov eax, dword [0x491b20]
push dword [eax + 0x15bdfc8]
call esi
mov esi, dword [ebp - 0x1298]
mov dword [ebp - 0x1274], 1
lea esp, [esp]
mov dword [edi + 0x90], ebx
mov ebx, dword [ebp - 0x1264]
push 0x487cd0
mov dword [0x494528], 0
mov dword [0x49452c], 0
mov eax, dword [ebx + 0x44]
mov dword [edi + 0x94], eax
mov eax, dword [0x491b20]
mov dword [0x494530], 0
mov eax, dword [eax + 0x15bec6c]
lea eax, [eax + eax*8]
add eax, dword [ebx + 0x44]
mov eax, dword [eax*4 + 0x487d30]
mov dword [0x487cd0], eax
call dword [sym.imp.GDI32.dll_CreateFontIndirectW]
mov dword [ebp - 0x128c], eax
test eax, eax
jne 0x43f521
mov eax, dword [0x491b20]
mov eax, dword [eax + 0x15bdfc8]
test eax, eax
je 0x43f4d2
push eax
call dword [sym.imp.GDI32.dll_DeleteDC]
test eax, eax
je 0x43facf
mov eax, dword [0x491b20]
mov dword [eax + 0x15bdfc8], 0
push 0
call dword [sym.imp.GDI32.dll_CreateCompatibleDC]
mov ecx, dword [0x491b20]
mov dword [ecx + 0x15bdfc8], eax
mov eax, dword [0x491b20]
cmp dword [eax + 0x15bdfc8], 0
je 0x43fad4
mov eax, dword [eax + 0x15bec6c]
push 0x487cd0
lea eax, [eax + eax*8]
add eax, dword [ebx + 0x44]
mov eax, dword [eax*4 + 0x487d30]
mov dword [0x487cd0], eax
call dword [sym.imp.GDI32.dll_CreateFontIndirectW]
mov dword [ebp - 0x128c], eax
push eax
mov eax, dword [0x491b20]
push dword [eax + 0x15bdfc8]
call dword [sym.imp.GDI32.dll_SelectObject]
mov dword [ebp - 0x1270], eax
lea eax, [ebp - 0x1254]
push eax
mov eax, dword [0x491b20]
push dword [eax + 0x15bdfc8]
call dword [sym.imp.GDI32.dll_GetTextMetricsW]
mov eax, dword [edi + 0x80]
add ebx, 0xb8
sub eax, dword [edi + 0x78]
mov ecx, dword [edi + 0x88]
mov edx, dword [edi + 0x8c]
mov edi, 5
mov dword [ebp - 0x1288], eax
mov eax, dword [ebp - 0x12a4]
mov dword [ebp - 0x127c], ebx
mov dword [ebp - 0x1294], ecx
mov dword [ebp - 0x12b8], edx
mov eax, dword [eax + 0xd8d0ec]
mov dword [ebp - 0x1268], 0
mov dword [ebp - 0x1258], 0
test al, 1
je 0x43f5b4
mov edi, 4
jmp 0x43f5be
test al, 4
mov eax, 6
cmovne edi, eax
mov eax, edx
mov dword [ebp - 0x1290], edi
imul eax, ecx
shl eax, 2
push eax
mov eax, dword [ebp - 0x1260]
push 0
push dword [eax + 4]
call fcn.00456940
add esp, 0xc
movzx ebx, word [ebx]
test ebx, ebx
je 0x43fb94
push 0x487cbc
push 0
push 0
lea eax, [ebp - 0x1218]
push eax
mov eax, dword [0x491b20]
push edi
push ebx
push dword [eax + 0x15bdfc8]
call dword [sym.imp.GDI32.dll_GetGlyphOutlineW]
cmp eax, 0x1000
ja 0x43f9d5
push 0x487cbc
lea eax, [ebp - 0x1204]
push eax
push 0x1000
lea eax, [ebp - 0x1218]
push eax
mov eax, dword [0x491b20]
push edi
push ebx
push dword [eax + 0x15bdfc8]
call dword [sym.imp.GDI32.dll_GetGlyphOutlineW]
mov ecx, dword [ebp - 0x1218]
mov eax, dword [0x494528]
cmp ecx, eax
mov edx, dword [ebp - 0x1214]
mov edi, dword [ebp - 0x120c]
cmovg eax, ecx
mov dword [ebp - 0x1284], ecx
mov ecx, dword [0x49452c]
cmp edx, ecx
mov dword [0x494528], eax
mov eax, dword [0x494530]
cmovg ecx, edx
mov dword [ebp - 0x1280], edx
movsx edx, word [ebp - 0x1208]
cmp edx, eax
mov dword [0x49452c], ecx
cmovg eax, edx
mov dword [0x494530], eax
mov eax, dword [ebp - 0x1250]
mov dword [ebp - 0x125c], eax
cmp ebx, 0xa
je 0x43f6c9
mov eax, dword [ebp - 0x1258]
add eax, edx
cmp eax, dword [ebp - 0x1288]
jg 0x43f6c9
mov edx, dword [ebp - 0x1258]
test edx, edx
jne 0x43f80e
jmp 0x43f715
lea eax, [ecx + 3]
xor edx, edx
mov ecx, dword [0x491b20]
and eax, 0xfffe
add dword [ebp - 0x1268], eax
mov dword [ebp - 0x1258], edx
cmp dword [ecx + 0x15bec6c], 1
jne 0x43f6f5
add dword [ebp - 0x1268], 2
mov eax, dword [ebp - 0x125c]
sub eax, edi
add eax, dword [ebp - 0x1280]
add eax, dword [ebp - 0x1268]
cmp eax, dword [ebp - 0x12b8]
jg 0x43fa87
test byte [ebp + 0x14], 3
je 0x43f80e
mov ecx, dword [ebp - 0x127c]
cmp ebx, 0xa
jne 0x43f72d
add ecx, 2
movzx eax, word [ecx]
mov edi, 1
mov word [ebp - 0x204], ax
cmp eax, 0xa
je 0x43f75a
test eax, eax
je 0x43f75a
movzx eax, word [ecx + 2]
add ecx, 2
mov word [ebp + edi*2 - 0x204], ax
inc edi
cmp eax, 0xa
jne 0x43f741
lea eax, [edi + edi]
cmp eax, 0x200
jae 0x43fcb1
xor ecx, ecx
mov word [ebp + eax - 0x204], cx
lea ecx, [ebp - 0x204]
lea edx, [ecx + 2]
jmp 0x43f780
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x43f780
sub ecx, edx
lea eax, [ebp - 0x12ac]
push eax
sar ecx, 1
lea eax, [ebp - 0x204]
push ecx
push eax
mov eax, dword [0x491b20]
push dword [eax + 0x15bdfc8]
call dword [sym.imp.GDI32.dll_GetTextExtentPoint32W]
mov ecx, dword [0x491b20]
cmp dword [ecx + 0x15bec6c], 1
jne 0x43f7c6
add edi, dword [ebp - 0x12ac]
jmp 0x43f7cc
mov edi, dword [ebp - 0x12ac]
test byte [ebp + 0x14], 1
je 0x43f7e3
mov eax, dword [ebp - 0x1288]
sub eax, edi
cdq
sub eax, edx
mov edx, eax
sar edx, 1
jmp 0x43f7ee
mov edx, dword [ebp - 0x1288]
sub edx, edi
sub edx, 4
mov dword [ebp - 0x1258], edx
test edx, edx
js 0x43fa74
mov eax, dword [ebp - 0x1250]
mov edi, dword [ebp - 0x120c]
mov dword [ebp - 0x125c], eax
cmp ebx, 0xa
je 0x43f9bb
cmp ebx, 0x20
jne 0x43f85a
mov eax, dword [ebp - 0x1278]
mov dword [ebp - 0x129c], ebx
push dword [eax + 0x14]
lea eax, [ebp - 0x129c]
push eax
call fcn.0043fdf0
mov ebx, dword [ebp - 0x127c]
add esp, 8
add dword [ebp - 0x1258], eax
add ebx, 2
mov edi, dword [ebp - 0x1290]
mov dword [ebp - 0x127c], ebx
jmp 0x43f5e0
mov eax, dword [ebp - 0x1284]
mov ecx, dword [ebp - 0x1210]
add eax, 3
and eax, 0xfffc
add ecx, edx
mov dword [ebp - 0x12b4], eax
mov eax, dword [ebp - 0x125c]
sub eax, edi
mov dword [ebp - 0x12bc], ecx
add eax, dword [ebp - 0x1268]
mov dword [ebp - 0x125c], eax
xor eax, eax
mov dword [ebp - 0x12a0], eax
cmp dword [ebp - 0x1280], eax
jle 0x43f9ac
mov edx, dword [ebp - 0x1294]
lea ebx, [ebp - 0x1204]
shl edx, 2
mov dword [ebp - 0x12b0], edx
mov edx, dword [ebp - 0x125c]
mov edi, edx
imul edi, dword [ebp - 0x1294]
shl edi, 2
mov dword [ebp - 0x126c], edi
add eax, edx
js 0x43f97b
mov eax, dword [ebp - 0x1260]
xor edx, edx
mov eax, dword [eax + 4]
add eax, edi
cmp dword [ebp - 0x1284], edx
jle 0x43f975
lea edi, [eax + ecx*4]
lea eax, [edx + ecx]
test eax, eax
js 0x43f963
movzx eax, byte [ebx + edx]
test eax, eax
je 0x43f963
mov ecx, dword [ebp - 0x1290]
sub ecx, 4
je 0x43f945
dec ecx
je 0x43f92d
dec ecx
jne 0x43f95b
test al, 0x40
je 0x43f920
mov esi, 0xff000000
jmp 0x43f95b
mov esi, eax
shl esi, 0x1a
or esi, 0x3000000
jmp 0x43f95b
test al, 0x10
je 0x43f938
mov esi, 0xff000000
jmp 0x43f95b
mov esi, eax
shl esi, 0x1c
or esi, 0xf000000
jmp 0x43f95b
test al, 4
je 0x43f950
mov esi, 0xff000000
jmp 0x43f95b
mov esi, eax
shl esi, 0x1e
or esi, 0x3f000000
mov ecx, dword [ebp - 0x12bc]
mov dword [edi], esi
inc edx
add edi, 4
cmp edx, dword [ebp - 0x1284]
jl 0x43f8f5
mov edi, dword [ebp - 0x126c]
mov edx, dword [ebp - 0x125c]
mov eax, dword [ebp - 0x12a0]
add edi, dword [ebp - 0x12b0]
inc eax
add ebx, dword [ebp - 0x12b4]
mov dword [ebp - 0x12a0], eax
mov dword [ebp - 0x126c], edi
cmp eax, dword [ebp - 0x1280]
jl 0x43f8d1
mov edx, dword [ebp - 0x1258]
movsx eax, word [ebp - 0x1208]
add edx, eax
mov dword [ebp - 0x1258], edx
mov ebx, dword [ebp - 0x127c]
mov edi, dword [ebp - 0x1290]
add ebx, 2
mov dword [ebp - 0x127c], ebx
jmp 0x43f5e0
cmp eax, 0xffffffff
jne 0x43faf1
push dword [ebp - 0x128c]
call dword [sym.imp.GDI32.dll_DeleteObject]
mov eax, dword [0x491b20]
push dword [ebp - 0x1270]
push dword [eax + 0x15bdfc8]
call dword [sym.imp.GDI32.dll_SelectObject]
mov eax, dword [0x491b20]
mov eax, dword [eax + 0x15bdfc8]
test eax, eax
je 0x43fa2e
push eax
call dword [sym.imp.GDI32.dll_DeleteDC]
test eax, eax
je 0x43facf
mov eax, dword [0x491b20]
mov dword [eax + 0x15bdfc8], 0
push 0
call dword [sym.imp.GDI32.dll_CreateCompatibleDC]
mov ecx, dword [0x491b20]
mov dword [ecx + 0x15bdfc8], eax
mov eax, dword [0x491b20]
cmp dword [eax + 0x15bdfc8], 0
je 0x43fad4
mov ecx, dword [ebp - 0x1274]
inc ecx
mov dword [ebp - 0x1274], ecx
cmp ecx, 0x2c
jge 0x43fad4
mov edi, dword [ebp - 0x1260]
mov ebx, dword [ebp + 0x18]
jmp 0x43f440
mov eax, dword [ebp - 0x1264]
add eax, 0xb8
push eax
push str.Font_W_size_flow_:__s
jmp 0x43fa94
mov eax, dword [ebp - 0x1278]
push dword [eax]
push str.Font_H_size_over_:__s
lea eax, [ecx + 0x15bdffc]
push eax
call fcn.0042fe70
mov eax, dword [0x491b20]
push 0
push str.Error
add eax, 0x15bdffc
push eax
push 0
call fcn.00439f60
add esp, 0x1c
xor eax, eax
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00456922
mov esp, ebp
pop ebp
ret
mov eax, dword [0x491b20]
or dword [eax + 0x15bec5c], fcn.00440010
xor eax, eax
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00456922
mov esp, ebp
pop ebp
ret
push ebx
push eax
push str.Font_one_size_over_:__d__x_
push 0x494328
call fcn.004576b2
push 0x1000
push 0
push 0x492b28
call fcn.00456940
mov ecx, 0x494328
add esp, 0x1c
lea edx, [ecx + 1]
mov edi, edi
mov al, byte [ecx]
inc ecx
test al, al
jne 0x43fb20
push 0x800
push 0x492b28
sub ecx, edx
push ecx
push 0x494328
push 8
push 0
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
mov edx, dword [0x491b20]
mov ecx, 0x492b28
add edx, 0x15bdffc
movzx eax, word [ecx]
lea ecx, [ecx + 2]
mov word [edx], ax
lea edx, [edx + 2]
test ax, ax
jne 0x43fb54
mov eax, dword [0x491b20]
push 0
push str.Error
add eax, 0x15bdffc
push eax
push 0
call fcn.00439f60
add esp, 0x10
xor eax, eax
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00456922
mov esp, ebp
pop ebp
ret
push dword [ebp - 0x128c]
call dword [sym.imp.GDI32.dll_DeleteObject]
mov eax, dword [0x491b20]
push dword [ebp - 0x1270]
push dword [eax + 0x15bdfc8]
call dword [sym.imp.GDI32.dll_SelectObject]
mov ebx, dword [ebp + 0x18]
mov edx, dword [ebp - 0x1278]
mov ecx, dword [ebp - 0x1298]
mov eax, dword [ebp - 0x1264]
mov edi, dword [eax + 0x78]
shl edi, 0x18
cmp edi, dword [edx + 0x24]
jne 0x43fbdf
test ecx, ecx
je 0x43fc9b
mov esi, dword [ebp - 0x1260]
and ebx, 0xffffff
mov dword [edx + 0x24], edi
lea edx, [ebp - 0x12c4]
push 0
push 0
mov eax, dword [esi + 0x88]
mov dword [ebp - 0x1270], eax
mov eax, dword [esi]
push edx
push 0
mov dword [ebp + 0x18], ebx
mov ecx, dword [eax]
mov ebx, dword [esi + 0x8c]
push eax
mov dword [ebp - 0x126c], ebx
call dword [ecx + 0x40]
test ebx, ebx
jle 0x43fc91
mov ecx, dword [ebp - 0x1270]
xor eax, eax
mov dword [ebp - 0x1274], eax
mov edx, dword [esi + 4]
add edx, eax
test ecx, ecx
jle 0x43fc79
mov esi, eax
mov ebx, ecx
lea ecx, [ecx]
mov ecx, dword [edx]
lea edx, [edx + 4]
test ecx, ecx
je 0x43fc52
cmp edi, ecx
ja 0x43fc4f
mov ecx, edi
or ecx, dword [ebp + 0x18]
mov eax, dword [ebp - 0x12c0]
mov dword [esi + eax], ecx
add esi, 4
dec ebx
jne 0x43fc40
mov eax, dword [ebp - 0x1274]
mov ebx, dword [ebp - 0x126c]
mov ecx, dword [ebp - 0x1270]
mov esi, dword [ebp - 0x1260]
lea edx, [ecx*4]
add eax, edx
dec ebx
mov dword [ebp - 0x1274], eax
mov dword [ebp - 0x126c], ebx
jne 0x43fc30
mov ecx, dword [esi]
push 0
push ecx
mov edx, dword [ecx]
call dword [edx + 0x44]
mov ecx, dword [ebp - 4]
mov eax, 1
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.00456922
mov esp, ebp
pop ebp
ret
call fcn.0045882c
int3