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

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0xac
mov eax, ecx
mov ecx, dword [0x4b6074]
mov esi, dword [esp + 0xcc]
mov ebp, dword [esp + 0xc8]
xor ebx, ebx
xor ecx, esp
mov dword [esp + 0xa8], ecx
mov ecx, esi
mov esi, esi
and ecx, 3
mov ecx, ebp
setne bl
shr ecx, 0x16
inc ebx
and cl, 1
imul ebx, dword [0x4b7c6c]
mov edi, ebx
shl ebx, cl
and esi, 3
mov dword [esp + 0x10], ebx
mov dword [esp + 8], esi
je 0x462b89
mov esi, dword [0x4b8660]
lea ecx, [eax + eax]
cmp ecx, dword [esi + 0x12c]
jge 0x4638fd
imul edi, eax
mov eax, dword [0x4b7c70]
mov ebx, ebp
xor ebp, ebp
add edi, dword [0x4b7c80]
mov dword [esp + 4], ebx
imul edx, eax
add edx, dword [0x4b7c7c]
bt ebx, 0x1e
mov dword [esp + 0x1c], edi
mov dword [esp + 0x34], edx
jb 0x462bba
xor ecx, ecx
jmp 0x462bfd
cmp dword [0x4b8688], 0
je 0x462bd2
mov ecx, dword [0x4b8660]
cmp byte [ecx + 0x142], 0
je 0x462bb6
mov ecx, dword [0x49563c]
lea edx, [esp + 0xd0]
mov dword [edx + 4], ecx
mov dword [edx], ecx
mov ecx, dword [esp + 0xc8]
and ecx, 0xfecc0000
or ecx, 0x20b04
mov dword [esp + 4], ecx
mov cl, 1
mov edx, dword [esp + 0xcc]
cmp dword [esp + 8], 0
mov dword [esp], ecx
je 0x462c20
cmp dword [0x4b868c], 3
jne 0x462c20
xor ecx, ecx
inc ecx
mov dword [esp + 8], ecx
jmp 0x462c36
and dl, 3
je 0x462c36
cmp dl, 1
jne 0x462c31
mov ebp, 4
jmp 0x462c36
mov ebp, 0xc
mov ecx, dword [esp + 0xc0]
mov ebx, dword [esp + 4]
movzx ecx, word [ecx]
shr ebx, 0x13
mov esi, ebx
and esi, 0x10
mov edx, ecx
add edx, 0xffffdc46
movzx edx, dx
cmp edx, 3
ja 0x462c74
add cl, 0x46
cmp cl, 3
ja case.default.0x462c67
movzx ecx, cl
jmp dword [ecx*4 + 0x497a60]
add eax, eax
neg eax
jmp case.0x462c67.68
xor edx, edx
xor ebx, ebx
jmp 0x462cc2
xor edx, edx
jmp 0x462c97
mov ecx, 0x99999999
jmp 0x462c8c
add eax, eax
mov ecx, 0x66666667
imul ecx
mov eax, edx
sar edx, 1
shr eax, 0x1f
add edx, eax
mov eax, dword [esp + 8]
or eax, 1
cmp eax, 3
mov eax, dword [esp + 0xc0]
sete cl
and dword [esp + 4], 0xfff7ffff
and bl, 1
shl edx, cl
movzx ecx, word [0x4b784e]
mov word [eax], cx
mov edi, dword [esp + 0xc4]
mov eax, ecx
or ebp, esi
and eax, 0xfc00
cmp eax, 0xd800
jne 0x462d1a
cmp edi, 2
jl 0x462cf7
mov eax, dword [esp + 0xc0]
movzx eax, word [eax + 2]
and eax, 0xfc00
cmp eax, 0xdc00
jne 0x462cfc
jmp 0x462d1a
cmp edi, 1
jne 0x462d1a
mov ecx, dword [esp + 0xc0]
mov esi, dword [esp + 0xc4]
xor eax, eax
mov word [ecx + eax*2], 0xfffd
inc eax
cmp eax, esi
jl 0x462d0c
movzx ecx, word [ecx]
mov edi, dword [esp + 4]
and ecx, 0xff00
lea eax, [ebp + 0x20]
mov dword [esp + 0x30], edx
mov dword [esp + 0x48], ebx
cmp ecx, 0xf000
cmovne eax, ebp
mov esi, edi
mov edx, edi
mov dword [esp + 4], edi
shr esi, 9
cmp dword [0x4b7cf4], 2
sete cl
shr edx, 0x12
and dl, cl
movzx ecx, dl
or ecx, eax
mov ebx, ecx
or ebx, 2
cmp byte [0x4b7cf8], 0
cmove ebx, ecx
bt edi, 0x13
cmovae ebx, ecx
mov ecx, ebx
call fcn.00463916
cmp dword [ebx*4 + 0x4b7cfc], 0
jne 0x462d8c
test bl, 2
je 0x462d89
mov al, 1
mov dword [esp + 0x48], eax
and ebx, 0xfffffffc
mov ebp, dword [esp + 4]
mov ecx, ebx
and esi, 0x1ff
mov edi, ebp
and edi, 0x1ff
call fcn.00463916
mov eax, dword [ebx*4 + 0x4b7cfc]
test eax, eax
cmove ebx, eax
bt ebp, 0x14
jb 0x462dc4
mov eax, edi
mov edi, esi
lea ebp, [esp + 0xd0]
jmp 0x462dd9
lea ebp, [esp + 0xd0]
mov eax, dword [ebp]
mov ecx, dword [ebp + 4]
mov dword [ebp], ecx
mov dword [ebp + 4], eax
mov eax, esi
bt dword [esp + 4], 0x12
mov cl, byte [0x4b7dfc]
setae dl
test cl, cl
sete ch
or ch, dl
mov edx, dword [esp]
or dl, ch
jne 0x462e0c
cmp eax, 0xf
ja 0x462e00
or eax, 8
jmp 0x462e0c
xor edx, edx
cmp eax, 0xff
seta dl
or eax, edx
bt dword [esp + 4], 0x15
mov edx, edi
jae 0x462e31
test cl, cl
je 0x462e31
cmp edx, 0xf
ja 0x462e24
or edx, 8
jmp 0x462e31
xor ecx, ecx
cmp edx, 0xff
seta cl
or edx, ecx
mov ecx, dword [0x4b7cac]
test ecx, ecx
je 0x462e4b
mov edi, dword [eax*4 + 0x4b7e00]
mov esi, dword [edx*4 + 0x4b7e00]
jmp 0x462e90
cmp byte [ebp], 0
je 0x462e6d
mov esi, edx
movzx edx, byte [ebp + 2]
movzx edi, byte [ebp + 3]
movzx eax, byte [ebp + 1]
shl edx, 8
shl edi, 0x10
or edx, eax
or edi, edx
mov edx, esi
jmp 0x462e74
mov edi, dword [eax*4 + 0x4b7e00]
cmp byte [ebp + 4], 0
je 0x462e42
movzx edx, byte [ebp + 6]
movzx esi, byte [ebp + 7]
movzx eax, byte [ebp + 5]
shl edx, 8
shl esi, 0x10
or edx, eax
or esi, edx
bt dword [esp + 4], 0x18
jae 0x462ee2
test ecx, ecx
jne 0x462ee2
mov ecx, edi
lea eax, [edi + edi]
shr edi, 0xf
shr ecx, 7
and eax, 0x1fe
and edi, 0x1fe
and ecx, 0x1fe
imul eax, eax, 0xaaab
imul edi, edi, 0xaaab
imul ecx, ecx, 0xaaab
shr edi, 1
shr eax, 0x11
shr ecx, 9
and edi, 0xff0000
and ecx, 0xff00
or ecx, eax
or edi, ecx
push dword [ebx*4 + 0x4b7cfc]
push dword [0x4b7ce8]
call dword [sym.imp.GDI32.dll_SelectObject]
push edi
push dword [0x4b7ce8]
call dword [sym.imp.GDI32.dll_SetTextColor]
push esi
push dword [0x4b7ce8]
call dword [sym.imp.GDI32.dll_SetBkColor]
cmp dword [esp + 4], 0
mov eax, dword [0x4b7ce8]
js 0x462f1f
push 2
jmp 0x462f21
push 1
push eax
call dword [sym.imp.GDI32.dll_SetBkMode]
mov ebp, dword [esp + 0x10]
mov esi, dword [esp + 0xc4]
mov edx, dword [esp + 0x1c]
mov eax, dword [esp + 0x34]
mov ebx, dword [esp + 0xc0]
mov dword [esp + 0x5c], edi
imul ebp, esi
mov dword [esp + 0x74], edx
mov ecx, eax
mov dword [esp + 0x78], eax
add ebp, edx
mov edx, dword [0x4b7c70]
mov dword [esp + 0x7c], ebp
add edx, ecx
test esi, esi
mov dword [esp + 0x80], edx
jle 0x46302c
mov edx, esi
xor ecx, ecx
xor eax, eax
mov edi, esi
xor edx, edx
lea esi, [edx + 1]
cmp esi, edi
movzx edi, word [ebx + edx*2]
jge 0x462ff1
movzx ebx, di
cmp ebx, 0xdb40
jne 0x462fb3
mov ebx, dword [esp + 0xc0]
mov ebp, ebx
movzx ebx, word [ebx + edx*2 + 2]
add ebx, 0x2300
movzx ebx, bx
cmp ebx, 0xf0
jae 0x462fca
mov ebx, ebp
jmp 0x463016
mov ebx, edi
and ebx, 0xfc00
cmp ebx, 0xd800
mov ebx, dword [esp + 0xc0]
jne 0x462ff1
mov ebx, dword [esp + 0xc0]
movzx ebx, word [ebx + edx*2 + 2]
and ebx, 0xfc00
cmp ebx, 0xdc00
mov ebx, dword [esp + 0xc0]
jne 0x462ff1
add eax, dword [esp + 0x10]
jmp 0x463016
lea esi, [edi - 0x180b]
movzx esi, si
cmp esi, 3
jb 0x463014
mov esi, dword [esp + 0x10]
and edi, 0xfff0
cmp edi, 0xfe00
cmove esi, ecx
add eax, esi
mov esi, edx
mov edx, dword [esp + 0xc4]
inc esi
cmp esi, edx
mov edi, edx
mov edx, esi
jl 0x462f7a
jmp 0x46302e
xor eax, eax
add eax, dword [esp + 0x1c]
mov ecx, dword [0x4b8660]
mov dword [esp + 0x7c], eax
mov ecx, dword [ecx + 0x12c]
imul ecx, dword [0x4b7c6c]
add ecx, dword [0x4b7c80]
cmp eax, ecx
jle 0x463057
mov dword [esp + 0x7c], ecx
cmp byte [0x4b8218], 1
jne 0x46309b
mov eax, dword [esp + 0x10]
mov ecx, eax
shr ecx, 0x1f
add ecx, eax
sar ecx, 1
mov dword [esp + 0x28], ecx
push 6
push dword [0x4b7ce8]
call dword [sym.imp.GDI32.dll_SetTextAlign]
mov ecx, dword [esp + 0x30]
mov edx, dword [esp + 0xc4]
xor eax, eax
mov dword [esp + 0xc], 0
inc eax
mov dword [esp + 0x4c], eax
jmp 0x4630c9
push 0
push dword [0x4b7ce8]
call dword [sym.imp.GDI32.dll_SetTextAlign]
mov eax, dword [0x4b7cec]
mov edx, dword [esp + 0xc4]
mov ecx, dword [esp + 0x30]
mov dword [esp + 0x28], 0
mov dword [esp + 0xc], eax
mov dword [esp + 0x4c], edx
test edx, edx
jle 0x463864
mov eax, dword [esp + 0x34]
cmp dword [esp + 4], 0
lea eax, [ecx + eax]
setns byte [esp + 0x1b]
mov dword [esp + 0x24], eax
mov al, 1
mov esi, dword [esp + 0x4c]
mov ecx, edx
mov dword [esp + 0x20], eax
mov dword [esp + 0x68], edx
cmp esi, edx
cmovle ecx, esi
cmp esi, 1
mov esi, ecx
mov dword [esp + 0x64], ecx
jne 0x46318a
movzx eax, word [ebx]
and eax, 0xfc00
cmp eax, 0xd800
mov eax, ecx
jne 0x463132
movzx esi, word [ebx + 2]
xor eax, eax
and esi, 0xfc00
cmp esi, 0xdc00
sete al
add eax, ecx
mov edi, edx
sub edi, eax
jle 0x463185
movzx ecx, word [ebx + eax*2]
mov esi, eax
lea edx, [ecx - 0x180b]
movzx edx, dx
cmp edx, 3
jb 0x463189
mov edx, ecx
and edx, 0xfffffff0
movzx edx, dx
cmp edx, 0xfe00
je 0x463189
cmp edi, 2
jl 0x46318a
movzx eax, cx
cmp eax, 0xdb40
jne 0x46318a
movzx eax, word [ebx + esi*2 + 2]
lea ecx, [esi + 2]
add eax, 0x2300
movzx eax, ax
cmp eax, 0xf0
cmovb esi, ecx
jmp 0x46318a
mov esi, eax
jmp 0x46318a
inc esi
cmp esi, dword [0x4b7cf0]
mov eax, 0
mov edx, esi
mov dword [esp], esi
jbe 0x4631cb
push eax
push 1
push edx
push 4
push 0x4b7cf0
push dword [0x4b7cec]
call fcn.00410df3
mov edx, dword [esp + 0x18]
add esp, 0x18
mov ecx, dword [esp + 0xc]
mov dword [0x4b7cec], eax
test ecx, ecx
cmovne ecx, eax
mov dword [esp + 0xc], ecx
test edx, edx
mov dword [esp + 0x14], ebx
jle 0x4632a4
mov eax, dword [0x4b7cec]
xor ecx, ecx
mov esi, dword [esp + 0x10]
mov edi, edx
lea edx, [eax + ecx*4]
mov dword [edx], esi
lea esi, [ecx + 1]
cmp esi, edi
movzx edi, word [ebx + ecx*2]
jge 0x463263
movzx ebx, di
cmp ebx, 0xdb40
jne 0x463229
mov ebp, dword [esp + 0x14]
movzx ebx, word [ebp + ecx*2 + 2]
add ebx, 0x2300
movzx ebx, bx
cmp ebx, 0xef
ja 0x46323d
mov ebx, ebp
test ecx, ecx
jle 0x463258
mov dword [eax + ecx*4 - 4], 0
jmp 0x463258
mov ebx, edi
and ebx, 0xfc00
cmp ebx, 0xd800
mov ebx, dword [esp + 0x14]
jne 0x463263
mov ebx, dword [esp + 0x14]
movzx ebx, word [ebx + ecx*2 + 2]
and ebx, 0xfc00
cmp ebx, 0xdc00
mov ebx, dword [esp + 0x14]
jne 0x463263
mov dword [edx], 0
lea edx, [eax + esi*4]
jmp 0x463290
lea esi, [edi - 0x180b]
movzx esi, si
cmp esi, 3
jb 0x463282
and edi, 0xfff0
movzx esi, di
cmp esi, 0xfe00
jne 0x463298
test ecx, ecx
jle 0x46328e
mov dword [eax + ecx*4 - 4], 0
mov esi, ecx
mov ecx, dword [esp + 0x10]
mov dword [edx], ecx
mov ecx, esi
mov edx, dword [esp]
inc ecx
cmp ecx, edx
jl 0x4631de
movzx eax, word [ebx]
cmp byte [0x4b7160], 0
je 0x463466
mov ecx, eax
and ecx, 0xff00
movzx ecx, cx
cmp ecx, 0xf100
jne 0x463466
cmp edx, dword [0x4b8220]
jle 0x463300
push dword [0x4b821c]
call fcn.00410de6
add esp, 4
mov eax, dword [esp]
mov dword [0x4b8220], eax
push 2
push dword [esp + 4]
call fcn.00410d70
mov edx, dword [esp + 8]
add esp, 8
mov dword [0x4b821c], eax
test edx, edx
jle 0x4638fd
xor edi, edi
xor ebx, ebx
xor esi, esi
mov eax, dword [0x4b821c]
mov ebp, dword [esp + 0x14]
mov word [eax + edi], 0xfffd
movzx eax, byte [ebp + ebx*2]
push eax
push dword [0x4b7164]
call dword [sym.imp.KERNEL32.dll_IsDBCSLeadByteEx]
test eax, eax
je 0x463366
mov al, byte [ebp + ebx*2]
mov ecx, dword [esp + 0x10]
mov byte [esp + 0x84], al
mov al, byte [ebp + ebx*2 + 2]
inc ebx
mov byte [esp + 0x85], al
mov eax, dword [0x4b7cec]
add dword [eax + edi*2], ecx
mov eax, dword [0x4b821c]
add eax, edi
xor ecx, ecx
inc ecx
push ecx
push eax
push 2
jmp 0x46337e
mov al, byte [ebp + ebx*2]
mov byte [esp + 0x84], al
mov eax, dword [0x4b821c]
add eax, edi
xor ecx, ecx
inc ecx
push ecx
push eax
push ecx
lea eax, [esp + 0x90]
push eax
push 4
push dword [0x4b7164]
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
mov eax, dword [esp]
inc ebx
inc esi
add edi, 2
cmp ebx, eax
jl 0x46330e
movzx eax, byte [esp + 0x20]
xor ecx, ecx
mov edx, 0
mov edi, dword [esp + 0x28]
sub ecx, dword [0x4b7c70]
and eax, 1
cmp dword [esp + 8], 3
lea eax, [eax + eax + 4]
cmovne ecx, edx
mov edx, dword [esp + 0x1c]
add ecx, dword [esp + 0x24]
lea edi, [edx + edi]
push dword [esp + 0xc]
push esi
push dword [0x4b821c]
lea edx, [esp + 0x80]
push edx
push eax
push ecx
push edi
push dword [0x4b7ce8]
call dword [sym.imp.GDI32.dll_ExtTextOutW]
bt dword [esp + 4], 0x12
jae 0x463452
cmp dword [0x4b7cf4], 1
jne 0x463452
push 1
push dword [0x4b7ce8]
call dword [sym.imp.GDI32.dll_SetBkMode]
xor eax, eax
mov ecx, 0
sub eax, dword [0x4b7c70]
cmp dword [esp + 8], 3
cmovne eax, ecx
dec edi
add eax, dword [esp + 0x24]
push dword [esp + 0xc]
push esi
push dword [0x4b821c]
lea ecx, [esp + 0x80]
push ecx
push 4
push eax
push edi
push dword [0x4b7ce8]
call dword [sym.imp.GDI32.dll_ExtTextOutW]
mov eax, dword [0x4b7cec]
mov ebx, dword [esp + 0x14]
mov dword [eax], 0xffffffff
jmp 0x463835
and eax, 0xfe00
cmp eax, 0xf000
jne 0x463563
xor eax, eax
push eax
xor eax, eax
inc eax
push eax
push edx
push eax
push 0x4b8228
push dword [0x4b8224]
mov ebp, edx
call fcn.00410df3
add esp, 0x18
test ebp, ebp
mov dword [0x4b8224], eax
je 0x4634aa
xor ecx, ecx
mov dl, byte [ebx + ecx*2]
mov byte [eax + ecx], dl
inc ecx
cmp ebp, ecx
jne 0x46349f
movzx ecx, byte [esp + 0x20]
xor edx, edx
mov esi, 0
mov edi, dword [esp + 0x28]
sub edx, dword [0x4b7c70]
and ecx, 1
cmp dword [esp + 8], 3
lea ecx, [ecx + ecx + 4]
cmovne edx, esi
mov esi, dword [esp + 0x1c]
add edx, dword [esp + 0x24]
lea esi, [esi + edi]
push dword [esp + 0xc]
push ebp
push eax
lea eax, [esp + 0x80]
push eax
push ecx
push edx
push esi
push dword [0x4b7ce8]
call dword [sym.imp.GDI32.dll_ExtTextOutA]
bt dword [esp + 4], 0x12
jae 0x463835
cmp dword [0x4b7cf4], 1
jne 0x463835
push 1
push dword [0x4b7ce8]
call dword [sym.imp.GDI32.dll_SetBkMode]
xor eax, eax
mov ecx, 0
sub eax, dword [0x4b7c70]
cmp dword [esp + 8], 3
cmovne eax, ecx
dec esi
add eax, dword [esp + 0x24]
push dword [esp + 0xc]
push dword [esp + 4]
push dword [0x4b8224]
lea ecx, [esp + 0x80]
push ecx
push 4
push eax
push esi
push dword [0x4b7ce8]
call dword [sym.imp.GDI32.dll_ExtTextOutA]
jmp 0x463835
cmp dword [0x4b8230], edx
jge 0x463598
push dword [0x4b822c]
call fcn.00410de6
add esp, 4
mov eax, dword [esp]
mov dword [0x4b8230], eax
push 2
push dword [esp + 4]
call fcn.00410d70
mov edx, dword [esp + 8]
add esp, 8
mov dword [0x4b822c], eax
mov edi, dword [0x4b822c]
test edx, edx
jle 0x4635b1
xor eax, eax
movzx ecx, word [ebx + eax*2]
mov word [edi + eax*2], cx
inc eax
cmp edx, eax
jne 0x4635a4
xor eax, eax
cmp dword [esp + 8], 3
jne 0x4635bf
mov eax, dword [0x4b7c70]
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x28]
cmp dword [esp], 0
lea ebp, [ecx + edx]
jle 0x4637d6
mov ecx, dword [esp + 0x34]
mov dword [esp + 0x3c], edi
mov edi, dword [esp]
xor esi, esi
mov dword [esp + 0x60], ebp
sub ecx, eax
mov eax, dword [0x4b7cec]
add ecx, dword [esp + 0x30]
mov dword [esp + 0x58], eax
mov eax, dword [0x4b7ce8]
mov dword [esp + 0x50], ecx
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x20]
and al, byte [esp + 0x1b]
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x3c]
mov dword [esp + 0x44], ebp
movzx eax, word [eax + esi*2]
push eax
call fcn.00410f18
add esp, 4
mov ebx, eax
mov eax, dword [esp + 0x58]
mov dword [esp + 0x2c], esi
lea eax, [eax + esi*4]
inc esi
mov ebp, dword [eax]
mov dword [esp + 0x40], eax
add ebp, dword [esp + 0x44]
cmp esi, edi
jge 0x463662
mov edi, dword [esp + 0x3c]
movzx eax, word [edi + esi*2]
push eax
call fcn.00410f18
add esp, 4
cmp bl, al
jne 0x463666
mov eax, dword [esp + 0x58]
add ebp, dword [eax + esi*4]
inc esi
cmp esi, dword [esp]
jl 0x463642
jmp 0x463666
mov edi, dword [esp + 0x3c]
xor eax, eax
mov ecx, dword [esp + 0x40]
mov edx, esi
cmp byte [0x4b8218], al
cmovne ecx, eax
mov eax, dword [esp + 0x2c]
sub edx, eax
test bl, bl
lea edi, [edi + eax*2]
je 0x463779
xor eax, eax
mov dword [esp + 0x70], edi
lea ebx, [edx + edx + 2]
inc eax
push eax
push ebx
mov dword [esp + 0x48], ecx
mov edi, edx
mov dword [esp + 0x5c], edx
call fcn.00410d70
add esp, 8
mov dword [esp + 0x2c], eax
xor eax, eax
inc eax
push eax
push edi
call fcn.00410d70
add esp, 8
mov dword [esp + 0x6c], eax
lea eax, [esp + 0x88]
xor ecx, ecx
mov dword [eax + 4], ecx
mov dword [eax], ecx
mov dword [eax + 0xc], ecx
mov dword [eax + 8], ecx
mov dword [eax + 0x14], ecx
mov dword [eax + 0x10], ecx
mov dword [eax + 0x1c], ecx
mov dword [eax + 0x18], ecx
push ebx
push ecx
mov edi, dword [esp + 0x34]
push edi
call fcn.00472060
add esp, 0xc
push dword [esp + 0x54]
push 3
mov ebx, dword [esp + 0x74]
push ebx
call fcn.00472060
add esp, 0xc
mov ecx, dword [esp + 0x54]
mov dword [esp + 0x84], 0x24
mov dword [esp + 0x9c], edi
mov dword [esp + 0x98], ebx
mov dword [esp + 0xa0], ecx
push 0x8113b
lea eax, [esp + 0x88]
push eax
mov eax, 0
push eax
push ecx
mov ebx, ecx
push dword [esp + 0x80]
mov edi, dword [esp + 0x4c]
push edi
call dword [sym.imp.GDI32.dll_GetCharacterPlacementW]
movzx eax, byte [esp + 0x20]
and eax, 1
lea eax, [eax + eax + 0x14]
push dword [esp + 0x40]
push ebx
push dword [esp + 0x34]
lea ecx, [esp + 0x80]
push ecx
push eax
push dword [esp + 0x64]
push dword [esp + 0x5c]
push edi
call dword [sym.imp.GDI32.dll_ExtTextOutA]
jmp 0x4637a4
movzx eax, byte [esp + 0x20]
and eax, 1
lea eax, [eax + eax + 4]
push ecx
push edx
push edi
lea ecx, [esp + 0x80]
push ecx
push eax
push dword [esp + 0x64]
push dword [esp + 0x5c]
mov edi, dword [esp + 0x54]
push edi
call dword [sym.imp.GDI32.dll_ExtTextOutW]
push edi
call dword [sym.imp.GDI32.dll_GetBkMode]
mov ebx, eax
push 1
push edi
call dword [sym.imp.GDI32.dll_SetBkMode]
mov edi, dword [esp]
xor eax, eax
cmp esi, edi
jl 0x463609
push ebx
push dword [esp + 0x3c]
call dword [sym.imp.GDI32.dll_SetBkMode]
mov ebx, dword [esp + 0x14]
mov ebp, dword [esp + 0x60]
bt dword [esp + 4], 0x12
jae 0x463835
cmp dword [0x4b7cf4], 1
jne 0x463835
push 1
push dword [0x4b7ce8]
call dword [sym.imp.GDI32.dll_SetBkMode]
xor eax, eax
mov ecx, 0
sub eax, dword [0x4b7c70]
cmp dword [esp + 8], 3
cmovne eax, ecx
dec ebp
add eax, dword [esp + 0x24]
push dword [esp + 0xc]
push dword [esp + 4]
push dword [0x4b822c]
lea ecx, [esp + 0x80]
push ecx
push 4
push eax
push ebp
push dword [0x4b7ce8]
call dword [sym.imp.GDI32.dll_ExtTextOutW]
push 1
push dword [0x4b7ce8]
call dword [sym.imp.GDI32.dll_SetBkMode]
mov eax, dword [esp + 0x64]
mov ecx, dword [esp]
mov edx, dword [esp + 0x68]
imul eax, dword [esp + 0x10]
lea ebx, [ebx + ecx*2]
add dword [esp + 0x1c], eax
xor eax, eax
sub edx, ecx
jg 0x4630e8
cmp dword [esp + 8], 2
je 0x4638fd
bt dword [esp + 4], 0x13
setae al
cmp byte [esp + 0x48], 0
jne 0x463889
or al, byte [0x4b7cf8]
test al, 1
jne 0x4638fd
mov edi, dword [0x4b8234]
cmp dword [esp + 8], 3
jne 0x46389e
add edi, edi
sub edi, dword [0x4b7c70]
xor ebp, ebp
push dword [esp + 0x5c]
push ebp
push ebp
call dword [sym.imp.GDI32.dll_CreatePen]
mov ebx, dword [sym.imp.GDI32.dll_SelectObject]
push eax
push dword [0x4b7ce8]
call ebx
mov esi, eax
mov eax, dword [esp + 0x78]
add eax, edi
push ebp
push eax
push dword [esp + 0x7c]
push dword [0x4b7ce8]
call dword [sym.imp.GDI32.dll_MoveToEx]
add edi, dword [esp + 0x78]
push edi
push dword [esp + 0x80]
push dword [0x4b7ce8]
call dword [sym.imp.GDI32.dll_LineTo]
push esi
push dword [0x4b7ce8]
call ebx
push eax
call dword [sym.imp.GDI32.dll_DeleteObject]
mov ecx, dword [esp + 0xa8]
xor ecx, esp
call fcn.0046ef41
add esp, 0xac
pop esi
pop edi
pop ebx
pop ebp
ret