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

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0xac
mov dword [esp + 0x14], edx
mov ebp, ecx
mov edi, dword [esp + 0xcc]
mov eax, dword [0x4c1074]
xor eax, esp
xor edx, edx
mov ecx, edi
and ecx, 3
setne dl
inc edx
imul edx, dword [0x4c2d3c]
mov ebx, dword [esp + 0xc8]
mov ecx, ebx
shr ecx, 0x16
and cl, 1
mov dword [esp + 0xa8], eax
mov esi, edx
shl edx, cl
mov dword [esp + 0x1c], edx
and edi, 3
je 0x468b59
mov eax, ebp
add eax, ebp
mov ecx, dword [0x4c2d68]
cmp eax, dword [ecx + 0x12c]
jge 0x4699c5
mov eax, dword [0x4c2d40]
mov dword [esp + 4], ebx
bt ebx, 0x1e
jb 0x468b72
mov dword [esp + 0x20], 0
jmp 0x468bb9
cmp dword [0x4c2dec], 0
je 0x468b8a
mov ecx, dword [0x4c2d68]
cmp byte [ecx + 0x143], 0
je 0x468b68
mov ecx, dword [0x49f8f8]
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 dword [esp + 0x20], ecx
imul esi, ebp
mov edx, esi
mov ecx, dword [esp + 0x14]
imul ecx, eax
mov dword [esp + 0x14], ecx
xor ecx, ecx
inc ecx
mov dword [esp + 8], ecx
cmp dword [0x4c2df0], 3
jne 0x468be1
test edi, edi
je 0x468be1
xor ebp, ebp
jmp 0x468bfe
test edi, edi
je 0x468bf1
cmp edi, 1
jne 0x468bf5
mov ebp, 4
jmp 0x468bfe
mov ebp, edi
jmp 0x468bfa
mov ebp, 0xc
mov dword [esp + 8], edi
add edx, dword [0x4c2d74]
mov dword [esp + 0x24], edx
mov ecx, dword [esp + 0x14]
add ecx, dword [0x4c2d70]
mov dword [esp + 0x14], ecx
mov ebx, dword [esp + 4]
shr ebx, 0x13
mov edi, ebx
and edi, 0x10
mov ecx, dword [esp + 0xc0]
movzx ecx, word [ecx]
mov edx, ecx
add edx, 0xffffdc46
mov dword [esp], 0
cmp dx, 3
ja 0x468c59
add cl, 0x46
cmp cl, 3
ja case.default.0x468c4c
movzx ecx, cl
jmp dword [ecx*4 + 0x4a1a08]
add eax, eax
neg eax
jmp case.0x468c4c.68
mov dword [esp + 0x34], 0
jmp 0x468cab
xor edx, edx
jmp 0x468c80
mov ecx, 0x99999999
jmp 0x468c75
add eax, eax
mov ecx, 0x66666667
imul ecx
mov eax, edx
shr eax, 0x1f
sar edx, 1
add edx, eax
mov ecx, dword [esp + 8]
shr ecx, 1
shl edx, cl
mov dword [esp + 0x34], edx
movzx ecx, word [0x4c291e]
mov eax, dword [esp + 0xc0]
mov word [eax], cx
and dword [esp + 4], 0xfff7ffff
and bl, 1
mov dword [esp], ebx
mov edx, dword [esp + 0xc4]
or ebp, edi
mov eax, ecx
and eax, 0xfc00
cmp eax, 0xd800
jne 0x468e0a
cmp edx, 2
mov eax, dword [esp + 0xc0]
jl 0x468ce7
movzx eax, word [eax + 2]
and eax, 0xfc00
cmp eax, 0xdc00
jne 0x468cf0
jmp 0x468e0a
cmp edx, 1
jne 0x468e0a
mov ecx, dword [esp + 0xc4]
lea eax, [ecx + 7]
and eax, 0xfffffff8
dec ecx
movd xmm0, ecx
pshufd xmm0, xmm0, 0
movdqa xmm1, xmmword [0x4a1680]
movdqa xmm2, xmmword [0x4a1690]
xor ecx, ecx
movdqa xmm3, xmmword [0x4a16a0]
pxor xmm0, xmm3
pcmpeqd xmm4, xmm4
movdqa xmm5, xmmword [str._b_b_b_b]
mov esi, dword [esp + 0xc0]
movdqa xmm6, xmm2
pxor xmm6, xmm3
pcmpgtd xmm6, xmm0
movd edx, xmm6
not edx
test dl, 1
je 0x468d55
mov word [esi + ecx*2], 0xfffd
pxor xmm6, xmm4
movdqa xmm7, xmm6
psrlq xmm7, 0x10
movd edx, xmm7
shr edx, 0x10
test dl, 1
je 0x468d75
mov word [esi + ecx*2 + 2], 0xfffd
pextrw edx, xmm6, 4
test dl, 1
je 0x468d86
mov word [esi + ecx*2 + 4], 0xfffd
pextrw edx, xmm6, 6
test dl, 1
je 0x468d97
mov word [esi + ecx*2 + 6], 0xfffd
movdqa xmm6, xmm1
pxor xmm6, xmm3
pcmpgtd xmm6, xmm0
pshufd xmm7, xmm6, 0x44
pxor xmm7, xmm4
pextrw edx, xmm7, 4
test dl, 1
je 0x468dbd
mov word [esi + ecx*2 + 8], 0xfffd
pxor xmm6, xmm4
pextrw edx, xmm6, 2
test dl, 1
je 0x468dd2
mov word [esi + ecx*2 + 0xa], 0xfffd
pextrw edx, xmm6, 4
test dl, 1
je 0x468de3
mov word [esi + ecx*2 + 0xc], 0xfffd
pextrw edx, xmm6, 7
test dl, 1
je 0x468df4
mov word [esi + ecx*2 + 0xe], 0xfffd
add ecx, 8
paddd xmm2, xmm5
paddd xmm1, xmm5
cmp eax, ecx
jne 0x468d38
movzx ecx, word [esi]
and ecx, 0xff00
mov eax, ebp
or eax, 0x20
cmp ecx, 0xdc00
cmovne eax, ebp
mov ecx, 0x1ff
mov edi, dword [esp + 4]
mov edx, edi
and edx, ecx
mov dword [esp + 0x10], edx
mov esi, edi
shr esi, 9
and esi, ecx
cmp dword [0x4c2df4], 2
sete cl
mov edx, edi
shr edx, 0x12
and edx, 1
and dl, cl
movzx ecx, dl
or ecx, eax
mov ebx, ecx
or ebx, 2
bt edi, 0x13
cmovae ebx, ecx
cmp byte [0x4c2df8], 0
cmove ebx, ecx
mov ecx, ebx
call fcn.004699de
xor ecx, ecx
inc ecx
test bl, 2
movzx eax, byte [esp]
cmove ecx, eax
mov ebp, ebx
and ebp, 0xfffffffc
cmp dword [ebx*4 + 0x4c2dfc], 0
cmovne ebp, ebx
cmovne ecx, eax
mov dword [esp + 0x50], ecx
mov ecx, ebp
call fcn.004699de
mov eax, dword [ebp*4 + 0x4c2dfc]
test eax, eax
cmove ebp, eax
mov dword [esp], ebp
bt edi, 0x14
jb 0x468ebb
mov eax, dword [esp + 0x10]
mov ebp, esi
lea edi, [esp + 0xd0]
jmp 0x468ed2
mov ebp, dword [esp + 0x10]
lea edi, [esp + 0xd0]
mov eax, dword [edi]
mov ecx, dword [edi + 4]
mov dword [edi], ecx
mov dword [edi + 4], eax
mov eax, esi
bt dword [esp + 4], 0x12
setae dl
mov cl, byte [0x4c2efc]
test cl, cl
sete ch
or ch, dl
mov edx, dword [esp + 0x20]
or dl, ch
mov ebx, dword [esp + 0xc0]
jne 0x468f0d
cmp eax, 0xf
ja 0x468f01
or eax, 8
jmp 0x468f0d
xor edx, edx
cmp eax, 0xff
seta dl
or eax, edx
test cl, cl
je 0x468f34
mov ecx, dword [esp + 4]
and ecx, 0x200000
je 0x468f34
cmp ebp, 0xf
ja 0x468f27
or ebp, 8
jmp 0x468f34
xor ecx, ecx
cmp ebp, 0xff
seta cl
or ebp, ecx
mov ecx, dword [0x4c2da4]
test ecx, ecx
je 0x468f4e
mov edx, dword [eax*4 + 0x4c2f00]
mov esi, dword [ebp*4 + 0x4c2f00]
jmp 0x468f7c
cmp byte [edi], 0
je 0x468f62
movzx eax, word [edi + 1]
movzx edx, byte [edi + 3]
shl edx, 0x10
or edx, eax
jmp 0x468f69
mov edx, dword [eax*4 + 0x4c2f00]
cmp byte [edi + 4], 0
je 0x468f45
movzx eax, word [edi + 5]
movzx esi, byte [edi + 7]
shl esi, 0x10
or esi, eax
mov ebp, dword [esp]
test ecx, ecx
jne 0x468fd2
mov eax, dword [esp + 4]
and eax, 0x1000000
je 0x468fd2
movzx eax, dl
add eax, eax
imul eax, eax, 0xaaab
shr eax, 0x11
mov ecx, edx
shr ecx, 7
mov edi, edx
mov edx, 0x1fe
and ecx, edx
imul ecx, ecx, 0xaaab
shr ecx, 9
and ecx, 0xff00
or ecx, eax
shr edi, 0xf
and edi, edx
imul edi, edi, 0xaaab
shr edi, 1
and edi, 0xff0000
or edi, ecx
jmp 0x468fd4
mov edi, edx
push dword [ebp*4 + 0x4c2dfc]
push dword [0x4c2de0]
call dword [sym.imp.GDI32.dll_SelectObject]
mov dword [esp + 0x44], edi
push edi
push dword [0x4c2de0]
call dword [sym.imp.GDI32.dll_SetTextColor]
push esi
push dword [0x4c2de0]
call dword [sym.imp.GDI32.dll_SetBkColor]
mov eax, dword [esp + 4]
sar eax, 0x1f
add eax, 2
push eax
push dword [0x4c2de0]
call dword [sym.imp.GDI32.dll_SetBkMode]
mov eax, dword [esp + 0x24]
mov dword [esp + 0x74], eax
mov ecx, dword [esp + 0x14]
mov dword [esp + 0x78], ecx
mov eax, dword [0x4c2d40]
add eax, ecx
mov dword [esp + 0x80], eax
mov esi, dword [esp + 0xc4]
test esi, esi
jle 0x4690ff
xor ecx, ecx
xor eax, eax
xor edx, edx
mov ebp, esi
lea esi, [edx + 1]
movzx edi, word [ebx + edx*2]
cmp esi, ebp
jge 0x4690c6
movzx ebx, di
cmp ebx, 0xdb40
jne 0x469088
mov ebp, dword [esp + 0xc0]
movzx ebx, word [ebp + edx*2 + 2]
add ebx, 0x2300
movzx ebx, bx
cmp ebx, 0xf0
jae 0x46909f
mov ebx, ebp
jmp 0x4690e9
mov ebx, edi
and ebx, 0xfc00
cmp ebx, 0xd800
mov ebx, dword [esp + 0xc0]
jne 0x4690c6
mov ebx, dword [esp + 0xc0]
movzx ebx, word [ebx + edx*2 + 2]
and ebx, 0xfc00
cmp ebx, 0xdc00
mov ebx, dword [esp + 0xc0]
jne 0x4690c6
add eax, dword [esp + 0x1c]
jmp 0x4690e9
lea esi, [edi - 0x180b]
cmp si, 3
jb 0x4690e7
and edi, 0xfff0
cmp edi, 0xfe00
mov esi, dword [esp + 0x1c]
cmove esi, ecx
add eax, esi
mov esi, edx
inc esi
mov edx, esi
mov edi, dword [esp + 0xc4]
cmp esi, edi
mov esi, edi
jl 0x46904f
jmp 0x469101
xor eax, eax
add eax, dword [esp + 0x24]
mov dword [esp + 0x7c], eax
mov ecx, dword [0x4c2d68]
mov ecx, dword [ecx + 0x12c]
imul ecx, dword [0x4c2d3c]
add ecx, dword [0x4c2d74]
cmp eax, ecx
jle 0x46912a
mov dword [esp + 0x7c], ecx
cmp byte [0x4c3318], 1
jne 0x469163
mov eax, dword [esp + 0x1c]
mov ecx, eax
shr ecx, 0x1f
add ecx, eax
sar ecx, 1
mov dword [esp + 0x30], ecx
push 6
push dword [0x4c2de0]
call dword [sym.imp.GDI32.dll_SetTextAlign]
mov dword [esp + 0xc], 0
xor eax, eax
inc eax
mov dword [esp + 0x48], eax
jmp 0x469186
push 0
push dword [0x4c2de0]
call dword [sym.imp.GDI32.dll_SetTextAlign]
mov dword [esp + 0x30], 0
mov eax, dword [0x4c2de4]
mov dword [esp + 0xc], eax
mov dword [esp + 0x48], esi
test esi, esi
jle 0x469945
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x34]
add eax, ecx
mov dword [esp + 0x2c], eax
mov al, 1
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x48]
cmp eax, esi
mov ecx, esi
cmovl ecx, eax
mov edx, ecx
cmp eax, 1
jne 0x46923c
movzx eax, word [ebx]
and eax, 0xfc00
mov edx, ecx
cmp eax, 0xd800
jne 0x4691de
movzx eax, word [ebx + 2]
and eax, 0xfc00
xor edx, edx
cmp eax, 0xdc00
sete dl
add edx, ecx
mov eax, esi
sub eax, edx
jle 0x46923c
mov edi, ecx
mov ebp, edx
movzx ecx, word [ebx + edx*2]
lea edx, [ecx - 0x180b]
cmp dx, 3
jb 0x469237
mov edx, ecx
and edx, 0xfffffff0
movzx edx, dx
cmp edx, 0xfe00
je 0x469237
cmp eax, 2
jl 0x46993c
movzx eax, cx
cmp eax, 0xdb40
mov edx, ebp
jne 0x46923a
movzx eax, word [ebx + edx*2 + 2]
add eax, 0x2300
movzx eax, ax
lea ecx, [edx + 2]
cmp eax, 0xf0
cmovb edx, ecx
jmp 0x46923a
mov edx, ebp
inc edx
mov ecx, edi
cmp edx, dword [0x4c2de8]
mov dword [esp], edx
mov dword [esp + 0x5c], esi
mov dword [esp + 0x58], ecx
jbe 0x469281
push 0
push 1
push edx
push 4
push 0x4c2de8
push dword [0x4c2de4]
call fcn.00411745
mov edx, dword [esp + 0x18]
add esp, 0x18
mov dword [0x4c2de4], eax
mov ecx, dword [esp + 0xc]
test ecx, ecx
cmovne ecx, eax
mov dword [esp + 0xc], ecx
jmp 0x469286
mov eax, dword [0x4c2de4]
test edx, edx
mov dword [esp + 0x18], ebx
jle 0x469358
mov ebp, edx
xor edx, edx
lea ecx, [eax + edx*4]
mov esi, dword [esp + 0x1c]
mov dword [ecx], esi
lea esi, [edx + 1]
movzx edi, word [ebx + edx*2]
cmp esi, ebp
jge 0x469319
movzx ebx, di
cmp ebx, 0xdb40
jne 0x4692df
mov ebp, dword [esp + 0x18]
movzx ebx, word [ebp + edx*2 + 2]
add ebx, 0x2300
movzx ebx, bx
cmp ebx, 0xef
ja 0x4692f3
mov ebx, ebp
test edx, edx
jle 0x46930e
mov dword [eax + edx*4 - 4], 0
jmp 0x46930e
mov ebx, edi
and ebx, 0xfc00
cmp ebx, 0xd800
mov ebx, dword [esp + 0x18]
jne 0x469319
mov ebx, dword [esp + 0x18]
movzx ebx, word [ebx + edx*2 + 2]
and ebx, 0xfc00
cmp ebx, 0xdc00
mov ebx, dword [esp + 0x18]
jne 0x469319
mov dword [ecx], 0
lea ecx, [eax + esi*4]
jmp 0x469344
lea esi, [edi - 0x180b]
cmp si, 3
jb 0x469336
and edi, 0xfff0
movzx esi, di
cmp esi, 0xfe00
jne 0x46934c
test edx, edx
jle 0x469342
mov dword [eax + edx*4 - 4], 0
mov esi, edx
mov edx, dword [esp + 0x1c]
mov dword [ecx], edx
mov edx, esi
inc edx
mov ebp, dword [esp]
cmp edx, ebp
jl 0x469296
movzx eax, word [ebx]
cmp byte [0x4c2230], 0
je 0x46947c
mov ecx, eax
and ecx, 0xff00
movzx ecx, cx
cmp ecx, 0xdd00
jne 0x46947c
mov ecx, dword [esp]
cmp ecx, dword [0x4c3320]
jle 0x4693b9
push dword [0x4c331c]
call fcn.00411739
add esp, 4
mov eax, dword [esp]
mov dword [0x4c3320], eax
push 0
push 2
push dword [esp + 8]
call fcn.004116c4
mov ecx, dword [esp + 0xc]
add esp, 0xc
mov dword [0x4c331c], eax
test ecx, ecx
jle 0x4699c5
xor edi, edi
xor ebx, ebx
xor esi, esi
mov eax, dword [0x4c331c]
mov word [eax + esi*2], 0xfffd
mov ebp, dword [esp + 0x18]
movzx eax, byte [ebp + ebx*2]
push eax
push dword [0x4c2234]
call dword [sym.imp.KERNEL32.dll_IsDBCSLeadByteEx]
test eax, eax
je 0x46941d
mov al, byte [ebp + ebx*2]
mov byte [esp + 0x84], al
mov al, byte [ebp + ebx*2 + 2]
mov byte [esp + 0x85], al
mov eax, dword [0x4c2de4]
mov ecx, dword [esp + 0x1c]
add dword [eax + esi*4], ecx
inc ebx
mov eax, dword [0x4c331c]
add eax, edi
push 1
push eax
push 2
jmp 0x469435
mov al, byte [ebp + ebx*2]
mov byte [esp + 0x84], al
mov eax, dword [0x4c331c]
add eax, edi
xor ecx, ecx
inc ecx
push ecx
push eax
push ecx
lea eax, [esp + 0x90]
push eax
push 4
push dword [0x4c2234]
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
inc esi
inc ebx
add edi, 2
cmp ebx, dword [esp]
jl 0x4693c7
movzx ecx, byte [esp + 0x28]
and ecx, 1
mov eax, dword [0x4c331c]
cmp dword [esp + 8], 3
jne 0x4695ba
mov edx, dword [0x4c2d40]
jmp 0x4695bc
and eax, 0xfe00
cmp eax, 0xdc00
jne 0x469577
push 0
xor eax, eax
inc eax
push eax
mov esi, dword [esp + 8]
push esi
push eax
push 0x4c3328
push dword [0x4c3324]
call fcn.00411745
add esp, 0x18
mov dword [0x4c3324], eax
test esi, esi
je 0x4694c1
xor ecx, ecx
mov dl, byte [ebx + ecx*2]
mov byte [eax + ecx], dl
inc ecx
cmp esi, ecx
jne 0x4694b6
movzx ecx, byte [esp + 0x28]
and ecx, 1
xor edx, edx
cmp dword [esp + 8], 3
jne 0x4694d8
mov edx, dword [0x4c2d40]
add ecx, ecx
add ecx, 4
mov edi, dword [esp + 0x2c]
sub edi, edx
mov edx, dword [esp + 0x24]
mov esi, dword [esp + 0x30]
add esi, edx
push dword [esp + 0xc]
push dword [esp + 4]
push eax
lea eax, [esp + 0x80]
push eax
push ecx
push edi
push esi
push dword [0x4c2de0]
call dword [sym.imp.GDI32.dll_ExtTextOutA]
cmp dword [0x4c2df4], 1
jne 0x46990b
mov eax, dword [esp + 4]
and eax, 0x40000
je 0x46990b
push 1
push dword [0x4c2de0]
call dword [sym.imp.GDI32.dll_SetBkMode]
xor eax, eax
cmp dword [esp + 8], 3
jne 0x469545
mov eax, dword [0x4c2d40]
mov ecx, dword [esp + 0x2c]
sub ecx, eax
dec esi
push dword [esp + 0xc]
push dword [esp + 4]
push dword [0x4c3324]
lea eax, [esp + 0x80]
push eax
push 4
push ecx
push esi
push dword [0x4c2de0]
call dword [sym.imp.GDI32.dll_ExtTextOutA]
jmp 0x46990b
mov edx, dword [esp]
cmp dword [0x4c3330], edx
jge 0x46965c
push dword [0x4c332c]
call fcn.00411739
add esp, 4
mov eax, dword [esp]
mov dword [0x4c3330], eax
push 0
push 2
push dword [esp + 8]
call fcn.004116c4
mov edx, dword [esp + 0xc]
add esp, 0xc
mov dword [0x4c332c], eax
jmp 0x469661
xor edx, edx
add ecx, ecx
add ecx, 4
mov ebx, dword [esp + 0x2c]
sub ebx, edx
mov edx, dword [esp + 0x24]
mov edi, dword [esp + 0x30]
add edi, edx
push dword [esp + 0xc]
push esi
push eax
lea eax, [esp + 0x80]
push eax
push ecx
push ebx
push edi
push dword [0x4c2de0]
call dword [sym.imp.GDI32.dll_ExtTextOutW]
cmp dword [0x4c2df4], 1
mov ebx, dword [esp + 0x18]
jne 0x46964c
mov eax, dword [esp + 4]
and eax, 0x40000
je 0x46964c
push 1
push dword [0x4c2de0]
call dword [sym.imp.GDI32.dll_SetBkMode]
xor eax, eax
cmp dword [esp + 8], 3
jne 0x469622
mov eax, dword [0x4c2d40]
mov ecx, dword [esp + 0x2c]
sub ecx, eax
dec edi
push dword [esp + 0xc]
push esi
push dword [0x4c331c]
lea eax, [esp + 0x80]
push eax
push 4
push ecx
push edi
push dword [0x4c2de0]
call dword [sym.imp.GDI32.dll_ExtTextOutW]
mov eax, dword [0x4c2de4]
mov dword [eax], 0xffffffff
jmp 0x46990b
mov eax, dword [0x4c332c]
test edx, edx
jle 0x469674
xor esi, esi
movzx ecx, word [ebx + esi*2]
mov word [eax + esi*2], cx
inc esi
cmp edx, esi
jne 0x469667
xor edi, edi
cmp dword [esp + 8], 3
jne 0x469683
mov edi, dword [0x4c2d40]
mov ecx, dword [esp + 0x24]
mov edx, dword [esp + 0x30]
lea esi, [ecx + edx]
cmp dword [esp], 0
jle 0x4698ae
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x14]
sub eax, edi
add eax, dword [esp + 0x34]
mov dword [esp + 0x4c], eax
mov eax, dword [0x4c2de4]
mov dword [esp + 0x20], eax
mov eax, dword [0x4c2de0]
mov dword [esp + 0x38], eax
cmp dword [esp + 4], 0
setns al
mov ecx, dword [esp + 0x28]
and cl, al
mov eax, ecx
xor ecx, ecx
mov dword [esp + 0x54], esi
mov edi, dword [esp]
mov dword [esp + 0x40], esi
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x3c]
movzx eax, word [eax + ecx*2]
push eax
mov ebx, ecx
call fcn.00411860
mov ecx, dword [esp + 0x44]
add esp, 4
mov byte [esp + 0x10], al
mov eax, dword [esp + 0x20]
mov esi, dword [eax + ebx*4]
add esi, ecx
mov ebp, ebx
inc ebx
cmp ebx, edi
jge 0x469734
mov edi, dword [esp + 0x3c]
movzx eax, word [edi + ebx*2]
push eax
call fcn.00411860
add esp, 4
cmp byte [esp + 0x10], al
jne 0x469730
mov eax, dword [esp + 0x20]
add esi, dword [eax + ebx*4]
inc ebx
mov eax, dword [esp]
cmp eax, ebx
jne 0x46970c
mov ebx, eax
xor eax, eax
jmp 0x46973a
xor eax, eax
mov edi, dword [esp + 0x3c]
mov ecx, dword [esp + 0x20]
mov edx, ebp
lea ecx, [ecx + ebp*4]
cmp byte [0x4c3318], 0
cmovne ecx, eax
mov ebp, ebx
sub ebp, edx
lea edi, [edi + edx*2]
cmp byte [esp + 0x10], 0
je 0x46984e
lea edx, [ebp + 2]
add edx, ebp
mov dword [esp + 0x68], edx
push eax
xor eax, eax
inc eax
push eax
push edx
mov dword [esp + 0x7c], ecx
call fcn.004116c4
add esp, 0xc
mov dword [esp + 0x10], eax
xor eax, eax
push eax
xor eax, eax
inc eax
push eax
push ebp
mov dword [esp + 0x6c], ebp
call fcn.004116c4
add esp, 0xc
mov dword [esp + 0x6c], edi
mov dword [esp + 0x64], eax
lea eax, [esp + 0x88]
pxor xmm0, xmm0
movdqu xmmword [eax], xmm0
movdqu xmmword [eax + 0x10], xmm0
push dword [esp + 0x68]
xor eax, eax
push eax
mov edi, dword [esp + 0x18]
push edi
call fcn.00478e90
add esp, 0xc
push ebp
push 3
mov ebp, dword [esp + 0x6c]
push ebp
call fcn.00478e90
add esp, 0xc
mov dword [esp + 0x84], 0x24
mov dword [esp + 0x9c], edi
mov dword [esp + 0x98], ebp
mov ecx, dword [esp + 0x60]
mov dword [esp + 0xa0], ecx
push 0x8113b
lea eax, [esp + 0x88]
push eax
xor eax, eax
push eax
push ecx
mov ebp, ecx
push dword [esp + 0x7c]
mov edi, dword [esp + 0x4c]
push edi
call dword [sym.imp.GDI32.dll_GetCharacterPlacementW]
movzx eax, byte [esp + 0x28]
xor ecx, ecx
inc ecx
and eax, ecx
add eax, eax
add eax, 0x14
push dword [esp + 0x70]
push ebp
push dword [esp + 0x18]
lea ecx, [esp + 0x80]
push ecx
push eax
push dword [esp + 0x60]
push dword [esp + 0x58]
push edi
call dword [sym.imp.GDI32.dll_ExtTextOutA]
jmp 0x46987a
movzx eax, byte [esp + 0x28]
and eax, 1
add eax, eax
add eax, 4
push ecx
push ebp
push edi
lea ecx, [esp + 0x80]
push ecx
push eax
push dword [esp + 0x60]
push dword [esp + 0x58]
mov edi, dword [esp + 0x54]
push edi
call dword [sym.imp.GDI32.dll_ExtTextOutW]
push edi
call dword [sym.imp.GDI32.dll_GetBkMode]
mov ebp, eax
push 1
push edi
call dword [sym.imp.GDI32.dll_SetBkMode]
xor eax, eax
mov ecx, ebx
mov edi, dword [esp]
cmp ebx, edi
jl 0x4696d5
push ebp
push dword [esp + 0x3c]
call dword [sym.imp.GDI32.dll_SetBkMode]
mov ebx, dword [esp + 0x18]
mov esi, dword [esp + 0x54]
cmp dword [0x4c2df4], 1
jne 0x46990b
mov eax, dword [esp + 4]
and eax, 0x40000
je 0x46990b
push 1
push dword [0x4c2de0]
call dword [sym.imp.GDI32.dll_SetBkMode]
xor eax, eax
cmp dword [esp + 8], 3
jne 0x4698de
mov eax, dword [0x4c2d40]
mov ecx, dword [esp + 0x2c]
sub ecx, eax
dec esi
push dword [esp + 0xc]
push dword [esp + 4]
push dword [0x4c332c]
lea eax, [esp + 0x80]
push eax
push 4
push ecx
push esi
push dword [0x4c2de0]
call dword [sym.imp.GDI32.dll_ExtTextOutW]
push 1
push dword [0x4c2de0]
call dword [sym.imp.GDI32.dll_SetBkMode]
mov ecx, dword [esp]
lea ebx, [ebx + ecx*2]
mov eax, dword [esp + 0x58]
imul eax, dword [esp + 0x1c]
add dword [esp + 0x24], eax
xor eax, eax
mov esi, dword [esp + 0x5c]
sub esi, ecx
jg 0x46919e
jmp 0x469945
mov ecx, edi
mov edx, ebp
jmp 0x46923c
cmp dword [esp + 8], 2
je 0x469992
cmp byte [esp + 0x50], 0
jne 0x469967
cmp byte [0x4c2df8], 0
jne 0x469992
mov eax, dword [esp + 4]
and eax, 0x80000
je 0x469992
mov ecx, dword [0x4c3334]
mov edx, dword [esp + 8]
push dword [esp + 0x44]
push dword [esp + 0x80]
push dword [esp + 0x80]
push dword [esp + 0x80]
call fcn.00469aed
add esp, 0x10
bt dword [esp + 4], 0x19
jae 0x4699c5
mov ecx, dword [0x4c3338]
mov edx, dword [esp + 8]
push dword [esp + 0x44]
push dword [esp + 0x80]
push dword [esp + 0x80]
push dword [esp + 0x80]
call fcn.00469aed
add esp, 0x10
mov ecx, dword [esp + 0xa8]
xor ecx, esp
call fcn.00475893
add esp, 0xac
pop esi
pop edi
pop ebx
pop ebp
ret